From da2d93f602bc2d8b666837145cbfd0a4f9cde181 Mon Sep 17 00:00:00 2001 From: Adam Gospodarczyk Date: Tue, 26 Apr 2022 16:25:19 +0200 Subject: [PATCH] Brain --- assets/styles/base.scss | 8 +- assets/styles/custom.scss | 131 + bin/hugo-obsidian | Bin 0 -> 7067314 bytes config.toml | 4 +- content/Fundamenty/Dziennik.md | 34 + content/Fundamenty/Kierunek.md | 15 + content/Fundamenty/Poznawanie siebie.md | 95 + content/Fundamenty/Proces.md | 149 + .../Fundamenty/System zdobywania wiedzy.md | 39 + content/Fundamenty/Wartości.md | 36 + .../Automatyzacja/Automatyzacja.md | 56 + .../Automatyzacja/Mikroserwisy.md | 20 + .../Optymalizacja/Automatyzacja/Narzędzia.md | 16 + .../Automatyzacja/Scenariusze.md | 27 + content/Optymalizacja/Narzędzia/1Password.md | 9 + content/Optymalizacja/Narzędzia/AirBuddy.md | 7 + content/Optymalizacja/Narzędzia/Airtable.md | 14 + content/Optymalizacja/Narzędzia/Alfred.md | 24 + content/Optymalizacja/Narzędzia/Anki.md | 10 + content/Optymalizacja/Narzędzia/Audible.md | 7 + .../Narzędzia/BetterTouch Tool.md | 1 + content/Optymalizacja/Narzędzia/Buffer.md | 1 + content/Optymalizacja/Narzędzia/ClickUp.md | 1 + content/Optymalizacja/Narzędzia/Dropshare.md | 1 + content/Optymalizacja/Narzędzia/Endel.io.md | 1 + .../Optymalizacja/Narzędzia/Fantastical.md | 1 + content/Optymalizacja/Narzędzia/Fig.md | 1 + content/Optymalizacja/Narzędzia/Figma.md | 1 + content/Optymalizacja/Narzędzia/Hazel.md | 11 + content/Optymalizacja/Narzędzia/Headspace.md | 1 + content/Optymalizacja/Narzędzia/Hyper.is.md | 0 content/Optymalizacja/Narzędzia/Integromat.md | 7 + .../Narzędzia/Keyboard Maestro.md | 79 + content/Optymalizacja/Narzędzia/Kindle.md | 1 + content/Optymalizacja/Narzędzia/Magnet.md | 1 + content/Optymalizacja/Narzędzia/Mentorist.md | 1 + content/Optymalizacja/Narzędzia/MindNode.md | 1 + content/Optymalizacja/Narzędzia/Narzędzia.md | 49 + content/Optymalizacja/Narzędzia/Notability.md | 2 + content/Optymalizacja/Narzędzia/Notion.md | 0 content/Optymalizacja/Narzędzia/Oak.md | 1 + content/Optymalizacja/Narzędzia/Onyx.md | 1 + content/Optymalizacja/Narzędzia/Paste.md | 1 + content/Optymalizacja/Narzędzia/PopClip.md | 1 + content/Optymalizacja/Narzędzia/ProCreate.md | 1 + content/Optymalizacja/Narzędzia/README.md | 0 content/Optymalizacja/Narzędzia/Raycast.md | 8 + content/Optymalizacja/Narzędzia/Reveri.md | 1 + content/Optymalizacja/Narzędzia/Rocket.md | 1 + content/Optymalizacja/Narzędzia/Romwod.md | 0 content/Optymalizacja/Narzędzia/Screenflow.md | 1 + content/Optymalizacja/Narzędzia/Sip.md | 1 + content/Optymalizacja/Narzędzia/Superhuman.md | 1 + content/Optymalizacja/Narzędzia/TabNine.md | 1 + .../Optymalizacja/Narzędzia/TextSnipper.md | 1 + content/Optymalizacja/Narzędzia/Waking Up.md | 1 + content/Optymalizacja/Narzędzia/Webflow.md | 1 + content/Optymalizacja/Narzędzia/Yoink.md | 1 + content/Optymalizacja/Narzędzia/Zapier.md | 0 content/Optymalizacja/Narzędzia/iA Writer.md | 0 content/Optymalizacja/Optymalizacja.md | 4 + content/Optymalizacja/Sprzęt/Macbook.md | 32 + content/Optymalizacja/Sprzęt/Sprzęt.md | 7 + content/Optymalizacja/Sprzęt/StreamDeck.md | 34 + content/Optymalizacja/Sprzęt/iPad.md | 21 + content/Optymalizacja/Sprzęt/iPhone.md | 20 + content/Projekty/Ahoy!.md | 15 + content/Projekty/Design Maestro.md | 12 + content/Projekty/EasyBanner.md | 18 + content/Projekty/EasyCart.md | 31 + content/Projekty/EasyLegal.md | 4 + content/Projekty/EasyLove.md | 7 + content/Projekty/EasyTimer.md | 16 + content/Projekty/Projekty.md | 14 + content/Projekty/eduweb.md | 106 + content/Projekty/overment.md | 21 + content/Projekty/zautomatyzowani.md | 23 + content/Wiedza/Biznes/Biznes.md | 27 + content/Wiedza/Biznes/Leadership.md | 12 + content/Wiedza/Biznes/Marketing.md | 7 + content/Wiedza/Biznes/Produkt.md | 5 + content/Wiedza/Biznes/Sprzedaż.md | 3 + content/Wiedza/Inne/MBTI.md | 18 + content/Wiedza/Inne/Principles You.md | 4 + content/Wiedza/Inne/StrenghtsFinder.md | 35 + content/Wiedza/Inne/The Big Five.md | 0 content/Wiedza/Ksiazki/12 Rules for Life.md | 1 + .../Ksiazki/Alamanck of Naval Ravikant.md | 42 + ...e Im Going to Die So Ill Never Go There.md | 7 + content/Wiedza/Ksiazki/Antifragile.md | 11 + content/Wiedza/Ksiazki/Anything You Want.md | 12 + content/Wiedza/Ksiazki/Atlas Shrugged.md | 1 + content/Wiedza/Ksiazki/Atomic Habits.md | 14 + content/Wiedza/Ksiazki/Black Box Thinking.md | 12 + content/Wiedza/Ksiazki/Blink.md | 9 + content/Wiedza/Ksiazki/Body Mind Mastery.md | 12 + content/Wiedza/Ksiazki/Bult to Last.md | 1 + content/Wiedza/Ksiazki/Cant Hurt Me.md | 12 + .../Wiedza/Ksiazki/Chop Wood Carry Water.md | 1 + content/Wiedza/Ksiazki/Creativity Inc.md | 14 + content/Wiedza/Ksiazki/Daring Greatly.md | 8 + content/Wiedza/Ksiazki/Deep Work.md | 12 + content/Wiedza/Ksiazki/Deviate.md | 7 + content/Wiedza/Ksiazki/Do the Work.md | 1 + content/Wiedza/Ksiazki/Effortless.md | 1 + ...ialism: The Disciplined Pursuit of Less.md | 1 + content/Wiedza/Ksiazki/Extreme Ownership.md | 12 + content/Wiedza/Ksiazki/Find Your Why.md | 1 + .../Wiedza/Ksiazki/Fooled by Randomness.md | 7 + content/Wiedza/Ksiazki/Getting Real.md | 5 + .../Gladiators, Pirates and Games of Trust.md | 1 + content/Wiedza/Ksiazki/Good to Great.md | 1 + content/Wiedza/Ksiazki/Great by Choice.md | 1 + content/Wiedza/Ksiazki/Grit.md | 1 + .../Ksiazki/Hard Things About Hard Things.md | 5 + ...il at Almost Anything and Still Win Big.md | 11 + content/Wiedza/Ksiazki/Insanely Simple.md | 1 + content/Wiedza/Ksiazki/Inspired.md | 1 + content/Wiedza/Ksiazki/Ksiazki.md | 85 + content/Wiedza/Ksiazki/Leaders Eat Last.md | 11 + content/Wiedza/Ksiazki/Letting Go.md | 9 + content/Wiedza/Ksiazki/Lying.md | 1 + content/Wiedza/Ksiazki/MAKE.md | 28 + .../Wiedza/Ksiazki/Mastery (Robert Greene).md | 1 + ...ys to Success and Long-Term Fulfillment.md | 1 + .../Ksiazki/Never Split the Difference.md | 6 + content/Wiedza/Ksiazki/Pale Blue Dot.md | 1 + content/Wiedza/Ksiazki/Peak.md | 1 + content/Wiedza/Ksiazki/Personal MBA.md | 1 + content/Wiedza/Ksiazki/Pound the Stone.md | 1 + content/Wiedza/Ksiazki/Power vs. Force.md | 1 + .../Wiedza/Ksiazki/Predictably Irrational.md | 1 + content/Wiedza/Ksiazki/Principles.md | 22 + content/Wiedza/Ksiazki/Product-Led Growth.md | 1 + content/Wiedza/Ksiazki/Range.md | 14 + content/Wiedza/Ksiazki/Rebel Ideas.md | 13 + content/Wiedza/Ksiazki/Refactoring UI.md | 0 content/Wiedza/Ksiazki/Rework.md | 1 + content/Wiedza/Ksiazki/Seeking Wisdom.md | 20 + content/Wiedza/Ksiazki/Shape Up.md | 1 + content/Wiedza/Ksiazki/Simplify.md | 11 + content/Wiedza/Ksiazki/Skin in the Game.md | 9 + .../Ksiazki/So Good They Cant Ignore You.md | 11 + content/Wiedza/Ksiazki/Sources of Power.md | 1 + content/Wiedza/Ksiazki/Sprint.md | 1 + content/Wiedza/Ksiazki/Steve Jobs.md | 1 + content/Wiedza/Ksiazki/StrenghtsFinder 2.md | 1 + .../Wiedza/Ksiazki/That Will Never Work.md | 1 + content/Wiedza/Ksiazki/The Art of War.md | 1 + .../Ksiazki/The Beginning of Infinity.md | 1 + content/Wiedza/Ksiazki/The Brain Audit.md | 9 + .../Ksiazki/The Changing World Order.md | 1 + content/Wiedza/Ksiazki/The Compound Effect.md | 0 .../Ksiazki/The Dichotomy of Leadership.md | 15 + .../Wiedza/Ksiazki/The Fabric of Reality.md | 1 + .../Wiedza/Ksiazki/The Great Mental Models.md | 1 + .../Wiedza/Ksiazki/The Happiness Advantage.md | 0 content/Wiedza/Ksiazki/The Hidden School.md | 1 + content/Wiedza/Ksiazki/The Infinite Game.md | 9 + content/Wiedza/Ksiazki/The Lean Startup.md | 1 + .../Ksiazki/The Millionaire Fastlane.md | 1 + content/Wiedza/Ksiazki/The Mom Test.md | 13 + content/Wiedza/Ksiazki/The One Thing.md | 1 + .../Ksiazki/The Syntellect Hypothesis.md | 1 + .../Wiedza/Ksiazki/The Underdog Paradox.md | 1 + content/Wiedza/Ksiazki/Think Again.md | 1 + .../Ksiazki/Think Like a Rocket Scientist.md | 20 + content/Wiedza/Ksiazki/Token Economy.md | 1 + content/Wiedza/Ksiazki/Total Recall.md | 10 + content/Wiedza/Ksiazki/Tytul.md | 1 + ...Understanding the INFJ Personality Type.md | 11 + content/Wiedza/Ksiazki/War of Art.md | 12 + .../Ksiazki/Way of The Peaceful Warrior.md | 20 + .../Ksiazki/When Coffee and Kale Compete.md | 0 .../Who Says Elephant's Can't Dance.md | 13 + content/Wiedza/Ksiazki/Win In The Dark.md | 1 + content/Wiedza/Ksiazki/Working Backwards.md | 1 + content/Wiedza/Ludzie/Adam Grant.md | 3 + content/Wiedza/Ludzie/Adam Wathan.md | 4 + content/Wiedza/Ludzie/Andrew Huberman.md | 20 + content/Wiedza/Ludzie/Bruce Lee.md | 1 + content/Wiedza/Ludzie/Charlie Munger.md | 1 + content/Wiedza/Ludzie/Dan Millman.md | 37 + content/Wiedza/Ludzie/David Goggins.md | 1 + content/Wiedza/Ludzie/Elon Musk.md | 0 content/Wiedza/Ludzie/Jim Collins.md | 4 + content/Wiedza/Ludzie/Jocko Willink.md | 1 + content/Wiedza/Ludzie/Kapil Gupta.md | 0 content/Wiedza/Ludzie/Lex Fridman.md | 0 content/Wiedza/Ludzie/Ludzie.md | 15 + content/Wiedza/Ludzie/Naval Ravikant.md | 4 + content/Wiedza/Ludzie/Ray Dalio.md | 14 + content/Wiedza/Ludzie/Warren Buffet.md | 1 + .../ Social comparsion bias.md | 12 + .../Wiedza/Modele Mentalne/20 mile march.md | 11 + .../Modele Mentalne/Absent-mindedness.md | 9 + .../Modele Mentalne/Actor-observer bias.md | 17 + .../Wiedza/Modele Mentalne/Ambiguity bias.md | 8 + content/Wiedza/Modele Mentalne/Anchoring.md | 1 + .../Modele Mentalne/Anecdotal fallacy.md | 8 + .../Modele Mentalne/Anthropomorphism.md | 8 + .../Modele Mentalne/Appeal to Novelty.md | 7 + .../Appeal to probability fallacy.md | 7 + .../Modele Mentalne/Argument from fallacy.md | 10 + .../Modele Mentalne/Attentional bias.md | 1 + .../Wiedza/Modele Mentalne/Authority bias.md | 15 + .../Wiedza/Modele Mentalne/Automation bias.md | 9 + .../Modele Mentalne/Availability heurisitc.md | 1 + .../Wiedza/Modele Mentalne/Backfire effect.md | 1 + .../Bader-Meinhof Phenomenon.md | 1 + .../Modele Mentalne/Bandwagon effect.md | 1 + .../Wiedza/Modele Mentalne/Barnum effect.md | 1 + .../Modele Mentalne/Base rate fallacy.md | 1 + content/Wiedza/Modele Mentalne/Belief bias.md | 1 + .../Wiedza/Modele Mentalne/Bias blind spot.md | 1 + .../Modele Mentalne/Bike-shedding effect.md | 1 + .../Modele Mentalne/Bizarreness effect.md | 1 + .../Bullets and Cannonballs.md | 10 + .../Modele Mentalne/Cheerleader effect.md | 1 + .../Modele Mentalne/Choice-supportive bias.md | 1 + .../Modele Mentalne/Circle of Competence.md | 15 + .../Modele Mentalne/Clustering illusion.md | 1 + .../Wiedza/Modele Mentalne/Confabulation.md | 1 + .../Modele Mentalne/Confirmation bias.md | 1 + .../Wiedza/Modele Mentalne/Congruence bias.md | 1 + .../Modele Mentalne/Conjunction fallacy.md | 1 + .../Wiedza/Modele Mentalne/Conservatism.md | 1 + .../Modele Mentalne/Constrast effect.md | 1 + .../Wiedza/Modele Mentalne/Context effect.md | 1 + .../Continued inflence effect.md | 1 + .../Modele Mentalne/Craftsman Mindset.md | 1 + .../Modele Mentalne/Cross-race effect.md | 1 + .../Wiedza/Modele Mentalne/Cryptomnesia.md | 1 + .../Cue-dependent forgetting.md | 1 + .../Modele Mentalne/Curse of knowledge.md | 1 + content/Wiedza/Modele Mentalne/Declinism.md | 1 + .../Wiedza/Modele Mentalne/Decoy effect.md | 1 + .../Modele Mentalne/Defense attribution.md | 1 + .../Wiedza/Modele Mentalne/Delmore effect.md | 1 + .../Modele Mentalne/Denomination effect.md | 1 + .../Modele Mentalne/Disposition effect.md | 1 + .../Modele Mentalne/Distinction bias.md | 1 + .../Modele Mentalne/Dunning-Kurger effect.md | 10 + .../Modele Mentalne/Duration neglect.md | 1 + .../Modele Mentalne/Effort justification.md | 1 + .../Wiedza/Modele Mentalne/Egocentric bias.md | 1 + content/Wiedza/Modele Mentalne/Empathy gap.md | 1 + .../Modele Mentalne/Endowment effect.md | 1 + content/Wiedza/Modele Mentalne/Ergodicity.md | 23 + .../Escalation of commitment.md | 1 + .../Wiedza/Modele Mentalne/Essentialism.md | 20 + .../Modele Mentalne/Expectation bias.md | 1 + .../Modele Mentalne/Experimenters bias.md | 1 + .../Extrinsic incentive error.md | 1 + .../Wiedza/Modele Mentalne/Fading Affect.md | 1 + .../Modele Mentalne/False consesus effect.md | 1 + .../Wiedza/Modele Mentalne/False memory.md | 1 + .../Wiedza/Modele Mentalne/Falsification.md | 1 + .../Wiedza/Modele Mentalne/Farming effect.md | 1 + .../Modele Mentalne/First Principles.md | 2 + .../Wiedza/Modele Mentalne/Focusing effect.md | 1 + .../Wiedza/Modele Mentalne/Forer effect.md | 1 + .../Modele Mentalne/Frequency illusion.md | 1 + .../Modele Mentalne/Functional fixedness.md | 1 + .../Fundamental attribution error.md | 1 + .../Modele Mentalne/Generation effect.md | 1 + .../Modele Mentalne/Genius of The AND.md | 0 .../Wiedza/Modele Mentalne/Google effect.md | 1 + .../Group attribution error.md | 1 + content/Wiedza/Modele Mentalne/Halo effect.md | 1 + .../Modele Mentalne/Hard-easy effect.md | 1 + .../Modele Mentalne/Hedgehog Concept.md | 2 + .../Wiedza/Modele Mentalne/Hindsight bias.md | 1 + .../Modele Mentalne/Hot-hand fallacy.md | 1 + .../Wiedza/Modele Mentalne/Humor effect.md | 8 + .../Modele Mentalne/Hyperbolic discounting.md | 1 + content/Wiedza/Modele Mentalne/IKEA effect.md | 1 + .../Identifable victim effect.md | 1 + .../Illusion of asymmetric insight.md | 1 + .../Modele Mentalne/Illusion of control.md | 1 + .../Illusion of external agency.md | 1 + .../Illusion of transparency.md | 1 + .../Modele Mentalne/Illusion of validity.md | 1 + .../Modele Mentalne/Illusory correlation.md | 1 + .../Modele Mentalne/Illusory superiority.md | 1 + .../Modele Mentalne/Illusory truth effect.md | 1 + content/Wiedza/Modele Mentalne/Impact.md | 1 + .../Modele Mentalne/Implicit associations.md | 1 + .../Modele Mentalne/Implicit stereotypes.md | 1 + .../Modele Mentalne/Imposter Syndrome.md | 1 + .../Wiedza/Modele Mentalne/In-group bias.md | 1 + .../Modele Mentalne/Information bias.md | 1 + .../Insentivity to sample size.md | 1 + content/Wiedza/Modele Mentalne/Inversion.md | 24 + .../Modele Mentalne/Irration escalation.md | 1 + .../Modele Mentalne/Just-world hypothesis.md | 1 + .../Modele Mentalne/Lake Wobegone effect.md | 1 + .../Modele Mentalne/Law of Triviality.md | 1 + .../Modele Mentalne/Less-is-better effect.md | 1 + .../Leveling and sharpening .md | 1 + content/Wiedza/Modele Mentalne/Leverage.md | 19 + .../Levers of processing effect.md | 1 + .../Modele Mentalne/List-length effect.md | 1 + .../Wiedza/Modele Mentalne/Loss aversion.md | 1 + .../Modele Mentalne/Magic number 7+-2.md | 1 + .../Modele Mentalne/Masked man fallacy.md | 1 + .../Modele Mentalne/Memory inhibition.md | 1 + .../Modele Mentalne/Mental accounting.md | 1 + .../Modele Mentalne/Merge exposure effect.md | 1 + .../Misattribution of memory.md | 1 + .../Modele Mentalne/Misinformation effect.md | 1 + .../Wiedza/Modele Mentalne/Modality effect.md | 1 + .../Wiedza/Modele Mentalne/Modele mentalne.md | 213 + .../Wiedza/Modele Mentalne/Money illusion.md | 1 + .../Mood-congruent memory bias.md | 1 + .../Moral credential effect.md | 1 + content/Wiedza/Modele Mentalne/Moral luck.md | 1 + content/Wiedza/Modele Mentalne/Murphys Law.md | 1 + .../Wiedza/Modele Mentalne/Naive cynicism.md | 1 + .../Wiedza/Modele Mentalne/Naive realism.md | 1 + .../Wiedza/Modele Mentalne/Negativity bias.md | 1 + content/Wiedza/Modele Mentalne/Negativity.md | 1 + .../Modele Mentalne/Neglect of probability.md | 1 + .../Modele Mentalne/Next in line effect.md | 1 + .../Wiedza/Modele Mentalne/Normalcy bias.md | 1 + .../Modele Mentalne/Not invented here.md | 1 + .../Wiedza/Modele Mentalne/Observer effect.md | 1 + .../Observer-expectancy effect.md | 1 + .../Wiedza/Modele Mentalne/Occams Razor.md | 12 + .../Wiedza/Modele Mentalne/Omission bias.md | 1 + content/Wiedza/Modele Mentalne/Optimism.md | 1 + .../Wiedza/Modele Mentalne/Ostrich effect.md | 1 + .../Out-group-homogeneity bias.md | 1 + .../Wiedza/Modele Mentalne/Outcome bias.md | 1 + .../Modele Mentalne/Overcofidence effect.md | 1 + .../Part-list cueing effect.md | 1 + .../Wiedza/Modele Mentalne/Peak-en rule.md | 1 + .../Wiedza/Modele Mentalne/Peltzman effect.md | 1 + content/Wiedza/Modele Mentalne/Pessimism.md | 1 + .../Picture superiority effect.md | 1 + .../Wiedza/Modele Mentalne/Placebo effect.md | 1 + .../Modele Mentalne/Planning fallacy.md | 1 + .../Modele Mentalne/Positivity effect.md | 1 + .../Post-purchase rationalization.md | 1 + content/Wiedza/Modele Mentalne/Prejudice.md | 1 + .../Wiedza/Modele Mentalne/Primacy effect.md | 1 + .../Modele Mentalne/Pro-innovation bias.md | 1 + .../Processing difficulity effect.md | 1 + .../Wiedza/Modele Mentalne/Projection bias.md | 1 + .../Modele Mentalne/Pseudocertainty effect.md | 1 + content/Wiedza/Modele Mentalne/Reactance.md | 1 + .../Modele Mentalne/Reactive devaluation.md | 1 + .../Wiedza/Modele Mentalne/Recency effect.md | 1 + .../Modele Mentalne/Recency illusion.md | 1 + .../Wiedza/Modele Mentalne/Restraint bias.md | 1 + .../Modele Mentalne/Reverse psychology.md | 1 + .../Modele Mentalne/Rhyme as reason effect.md | 1 + .../Modele Mentalne/Risk compensation.md | 1 + .../Modele Mentalne/Rosy retrospection.md | 1 + .../Modele Mentalne/Second Order Thinking.md | 0 .../Modele Mentalne/Selective perception.md | 1 + .../Modele Mentalne/Self-consistency bias.md | 1 + .../Modele Mentalne/Self-relevance effect.md | 1 + .../Modele Mentalne/Self-serving bias.md | 1 + .../Modele Mentalne/Semmelweis reflex.md | 1 + .../Modele Mentalne/Serial position effect.md | 1 + .../Modele Mentalne/Serial recall effect.md | 1 + .../Social desirability bias.md | 1 + .../Modele Mentalne/Source confusion.md | 1 + .../Wiedza/Modele Mentalne/Spacing effect.md | 1 + .../Modele Mentalne/Spotlight effect.md | 1 + .../Wiedza/Modele Mentalne/Status quo bias.md | 1 + .../Modele Mentalne/Stereotypical bias.md | 1 + .../Wiedza/Modele Mentalne/Stereotyping.md | 1 + .../Modele Mentalne/Subaddivity effect.md | 1 + .../Modele Mentalne/Subjective validation.md | 1 + .../Wiedza/Modele Mentalne/Suffix effect.md | 1 + .../Wiedza/Modele Mentalne/Suggestibility.md | 1 + .../Modele Mentalne/Sunc cost fallacy.md | 1 + .../Modele Mentalne/Survivorship bias.md | 1 + .../Modele Mentalne/System justification.md | 1 + .../Modele Mentalne/Telescopint effect.md | 1 + .../Wiedza/Modele Mentalne/Testing effect.md | 1 + .../The Map Is Not the Territory.md | 4 + .../Modele Mentalne/Third-person effect.md | 1 + .../Modele Mentalne/Time-saving bias.md | 1 + .../Tip of the tongue effect.md | 1 + .../Modele Mentalne/Trait ascription bias.md | 1 + .../Ultimate attribution error.md | 1 + content/Wiedza/Modele Mentalne/Unit bias.md | 1 + .../Wiedza/Modele Mentalne/Via Negativa.md | 18 + .../Modele Mentalne/Von Restorff effect.md | 1 + .../Modele Mentalne/Weber-Fechner law.md | 1 + .../Well-traveled road effect.md | 1 + .../Wiedza/Modele Mentalne/Zero sum bias.md | 1 + .../Wiedza/Modele Mentalne/Zero-risk bias.md | 1 + content/Wiedza/Podcasty/Bruce Lee Podcast.md | 47 + content/Wiedza/Podcasty/Huberman Lab.md | 19 + .../Wiedza/Podcasty/Lex Fridman Podcast.md | 1 + content/Wiedza/Podcasty/Made You Think.md | 3 + content/Wiedza/Podcasty/My First Million.md | 1 + content/Wiedza/Podcasty/Podcast.md | 11 + content/Wiedza/Podcasty/SyntaxFM.md | 1 + content/Wiedza/Podcasty/TokKast.md | 1 + .../Fundamenty/Constructor Functions.md | 25 + .../JavaScript/Fundamenty/Prototype chain.md | 7 + .../Programowanie/JavaScript/JavaScript.md | 1 + .../Composition over Inheritance.md | 1 + .../Programowanie funkcyjne/Currying.md | 1 + .../Factory Functions.md | 6 + .../Function Composition.md | 0 .../Programowanie funkcyjne/Funktory.md | 1 + .../Higher-Order Function.md | 5 + .../Programowanie funkcyjne/Monady.md | 1 + .../Programowanie funkcyjne.md | 13 + .../Programowanie funkcyjne/Pure Functions.md | 1 + .../Programowanie funkcyjne/Shared State.md | 1 + .../JavaScript/Promise/Async Await.md | 1 + .../JavaScript/Promise/Generatory.md | 1 + .../JavaScript/Promise/Promise API.md | 1 + .../JavaScript/Promise/Promise Chaining.md | 1 + .../JavaScript/Promise/Promise Constructor.md | 1 + .../JavaScript/Promise/Promise.md | 1 + .../JavaScript/Promise/Pętle Async Await.md | 1 + .../JavaScript/Promise/_Promise.md | 11 + .../Programowanie/JavaScript/RxJS/RxJS.md | 2 + .../JavaScript/Zakres/Closures.md | 10 + .../JavaScript/Zakres/Execution Context.md | 10 + .../JavaScript/Zakres/Lexical Scope.md | 5 + .../Programowanie/JavaScript/Zakres/Scope.md | 17 + .../Programowanie/JavaScript/Zakres/Zakres.md | 8 + .../Programowanie/JavaScript/_JavaScript.md | 40 + .../Wiedza/Programowanie/NestJS/Podstawy.md | 136 + .../Programowanie/NestJS/Upload plików.md | 4 + content/Wiedza/Programowanie/No-Code.md | 0 content/Wiedza/Programowanie/Node.js.md | 0 .../Optymalizacja/Optymalizacja front-endu.md | 3 + .../Wiedza/Programowanie/REST/Adresy URL.md | 1 + .../Autoryzacja i uwierzytelnienie REST.md | 1 + .../Wiedza/Programowanie/REST/Metody HTTP.md | 1 + .../Programowanie/REST/Paginacja REST.md | 1 + .../Programowanie/REST/Przykład REST.md | 1 + content/Wiedza/Programowanie/REST/REST.md | 1 + .../Wiedza/Programowanie/REST/Resources.md | 1 + .../REST/Sortowanie i filtrowanie REST.md | 1 + .../Wiedza/Programowanie/REST/Statusy HTTP.md | 1 + .../Programowanie/REST/Wyszukiwanie REST.md | 1 + content/Wiedza/Programowanie/REST/_REST.md | 14 + content/Wiedza/Programowanie/Web3/Źródła.md | 14 + .../Wiedza/Programowanie/git/Branche w git.md | 1 + .../Programowanie/git/Cofanie zmian w git.md | 1 + content/Wiedza/Programowanie/git/Git Hooks.md | 1 + .../Programowanie/git/Komentarze w git.md | 1 + .../git/Polecenie stash w git.md | 1 + .../git/Przeglądanie historii w git.md | 1 + .../git/Przestrzeń robocza i stage w git.md | 1 + .../git/Przywracanie zmian w git.md | 1 + .../Wiedza/Programowanie/git/Rebase w git.md | 1 + .../git/Rozwiązywanie konfliktów w git.md | 1 + .../Wiedza/Programowanie/git/Tagi w git.md | 1 + .../git/Zapisywanie zmian w git.md | 1 + .../git/Zdalne repozytorium w git.md | 1 + content/Wiedza/Programowanie/git/_git.md | 18 + content/Wiedza/Programowanie/git/git.md | 1 + content/Wiedza/Projektowanie/Design System.md | 7 + content/Wiedza/Projektowanie/UI.md | 11 + content/Wiedza/Projektowanie/UX.md | 0 content/Wiedza/Przemyślenia/Dyscyplina.md | 1 + content/Wiedza/Przemyślenia/Emocje.md | 4 + content/Wiedza/Przemyślenia/Intuicja.md | 1 + content/Wiedza/Przemyślenia/Negocjacje.md | 0 content/Wiedza/Przemyślenia/Niemyślenie.md | 0 content/Wiedza/Przemyślenia/Nuda.md | 4 + content/Wiedza/Przemyślenia/Oczekiwania.md | 18 + content/Wiedza/Przemyślenia/Odpuszczanie.md | 0 content/Wiedza/Przemyślenia/Odwrócenie.md | 15 + .../Przemyślenia/Podejmowanie decyzji.md | 0 content/Wiedza/Przemyślenia/Przemyślenia.md | 13 + content/Wiedza/Przemyślenia/Rozczarowanie.md | 8 + content/Wiedza/Przemyślenia/Rzeczywistość.md | 25 + content/Wiedza/Słownik/Balans.md | 13 + content/Wiedza/Słownik/Cel.md | 16 + content/Wiedza/Słownik/Indie Hackers.md | 12 + content/Wiedza/Słownik/Kierunek.md | 0 content/Wiedza/Słownik/Otoczenie.md | 0 content/Wiedza/Słownik/Perspektywa.md | 0 content/Wiedza/Słownik/Priorytet.md | 0 content/Wiedza/Słownik/Proces.md | 0 content/Wiedza/Słownik/Słownik.md | 11 + content/_index.md | 43 +- content/notes/CJK + Latex Support (测试).md | 40 - content/notes/config.md | 67 - content/notes/custom Domain.md | 17 - content/notes/editing.md | 69 - content/notes/hosting.md | 84 - content/notes/ignore notes.md | 31 - content/notes/images/github-actions.png | Bin 118756 -> 0 bytes content/notes/images/github-pages.png | Bin 231282 -> 0 bytes content/notes/images/google-domains.png | Bin 73570 -> 0 bytes content/notes/images/obsidian-settings.png | Bin 26089 -> 0 bytes content/notes/obsidian.md | 29 - content/notes/philosophy.md | 17 - content/notes/preview changes.md | 38 - content/notes/setup.md | 58 - content/notes/showcase.md | 17 - content/notes/troubleshooting.md | 81 - content/private/private-note.md | 5 - content/publish.css | 121 + content/templates/post.md | 3 - data/config.yaml | 2 +- layouts/_default/single.html | 4 +- layouts/index.html | 1 - layouts/partials/footer.html | 20 +- layouts/partials/head.html | 17 +- layouts/partials/toc.html | 6 +- .../github.com/!burnt!sushi/toml/@v/list | 1 + .../!burnt!sushi/toml/@v/v0.4.1.info | 1 + .../!burnt!sushi/toml/@v/v0.4.1.lock | 0 .../!burnt!sushi/toml/@v/v0.4.1.mod | 3 + .../!burnt!sushi/toml/@v/v0.4.1.zip | Bin 0 -> 207306 bytes .../!burnt!sushi/toml/@v/v0.4.1.ziphash | 1 + .../github.com/!puerkito!bio/goquery/@v/list | 1 + .../!puerkito!bio/goquery/@v/v1.8.0.info | 1 + .../!puerkito!bio/goquery/@v/v1.8.0.lock | 0 .../!puerkito!bio/goquery/@v/v1.8.0.mod | 8 + .../!puerkito!bio/goquery/@v/v1.8.0.zip | Bin 0 -> 132585 bytes .../!puerkito!bio/goquery/@v/v1.8.0.ziphash | 1 + .../abhinav/goldmark-wikilink/@v/list | 1 + .../abhinav/goldmark-wikilink/@v/v0.3.0.info | 1 + .../abhinav/goldmark-wikilink/@v/v0.3.0.lock | 0 .../abhinav/goldmark-wikilink/@v/v0.3.0.mod | 8 + .../abhinav/goldmark-wikilink/@v/v0.3.0.zip | Bin 0 -> 14702 bytes .../goldmark-wikilink/@v/v0.3.0.ziphash | 1 + .../github.com/andybalholm/cascadia/@v/list | 1 + .../andybalholm/cascadia/@v/v1.3.1.info | 1 + .../andybalholm/cascadia/@v/v1.3.1.lock | 0 .../andybalholm/cascadia/@v/v1.3.1.mod | 5 + .../andybalholm/cascadia/@v/v1.3.1.zip | Bin 0 -> 51646 bytes .../andybalholm/cascadia/@v/v1.3.1.ziphash | 1 + .../github.com/davecgh/go-spew/@v/list | 1 + .../github.com/davecgh/go-spew/@v/v1.1.0.mod | 1 + .../download/github.com/gernest/front/@v/list | 1 + .../v0.0.0-20210301115436-8a0b0a782d0a.info | 1 + .../v0.0.0-20210301115436-8a0b0a782d0a.lock | 0 .../@v/v0.0.0-20210301115436-8a0b0a782d0a.mod | 1 + .../@v/v0.0.0-20210301115436-8a0b0a782d0a.zip | Bin 0 -> 5849 bytes ...v0.0.0-20210301115436-8a0b0a782d0a.ziphash | 1 + .../jackyzha0/hugo-obsidian/@v/list | 1 + .../v0.0.0-20220403030921-3ce308411ee3.info | 1 + .../v0.0.0-20220403030921-3ce308411ee3.lock | 0 .../@v/v0.0.0-20220403030921-3ce308411ee3.mod | 13 + .../@v/v0.0.0-20220403030921-3ce308411ee3.zip | Bin 0 -> 10437 bytes ...v0.0.0-20220403030921-3ce308411ee3.ziphash | 1 + .../github.com/pmezard/go-difflib/@v/list | 1 + .../pmezard/go-difflib/@v/v1.0.0.mod | 1 + .../download/github.com/stretchr/objx/@v/list | 1 + .../github.com/stretchr/objx/@v/v0.1.0.mod | 1 + .../github.com/stretchr/testify/@v/list | 1 + .../github.com/stretchr/testify/@v/v1.7.0.mod | 10 + .../download/github.com/yuin/goldmark/@v/list | 2 + .../github.com/yuin/goldmark/@v/v1.1.32.mod | 3 + .../github.com/yuin/goldmark/@v/v1.4.4.info | 1 + .../github.com/yuin/goldmark/@v/v1.4.4.lock | 0 .../github.com/yuin/goldmark/@v/v1.4.4.mod | 3 + .../github.com/yuin/goldmark/@v/v1.4.4.zip | Bin 0 -> 273588 bytes .../yuin/goldmark/@v/v1.4.4.ziphash | 1 + .../cache/download/golang.org/x/net/@v/list | 1 + .../v0.0.0-20210916014120-12bc252f5db8.info | 1 + .../v0.0.0-20210916014120-12bc252f5db8.lock | 0 .../@v/v0.0.0-20210916014120-12bc252f5db8.mod | 9 + .../@v/v0.0.0-20210916014120-12bc252f5db8.zip | Bin 0 -> 1571361 bytes ...v0.0.0-20210916014120-12bc252f5db8.ziphash | 1 + .../cache/download/golang.org/x/sys/@v/list | 2 + .../@v/v0.0.0-20201119102817-f84b799fce68.mod | 3 + .../@v/v0.0.0-20210423082822-04245dca01da.mod | 3 + .../cache/download/golang.org/x/term/@v/list | 1 + .../@v/v0.0.0-20201126162022-7de9c90e9dd1.mod | 5 + .../cache/download/golang.org/x/text/@v/list | 1 + .../download/golang.org/x/text/@v/v0.3.6.mod | 5 + .../cache/download/golang.org/x/tools/@v/list | 1 + .../@v/v0.0.0-20180917221912-90fa682c2a6e.mod | 1 + .../cache/download/gopkg.in/check.v1/@v/list | 1 + .../@v/v0.0.0-20161208181325-20d25e280405.mod | 1 + .../cache/download/gopkg.in/yaml.v2/@v/list | 1 + .../download/gopkg.in/yaml.v2/@v/v2.4.0.info | 1 + .../download/gopkg.in/yaml.v2/@v/v2.4.0.lock | 0 .../download/gopkg.in/yaml.v2/@v/v2.4.0.mod | 5 + .../download/gopkg.in/yaml.v2/@v/v2.4.0.zip | Bin 0 -> 81183 bytes .../gopkg.in/yaml.v2/@v/v2.4.0.ziphash | 1 + .../cache/download/gopkg.in/yaml.v3/@v/list | 2 + .../@v/v3.0.0-20200313102051-9f266ea9e77c.mod | 5 + .../@v/v3.0.0-20210107192922-496545a6307b.mod | 5 + .../github.com/!burnt!sushi/toml@v0.4.1 | 9 + .../github.com/!puerkito!bio/goquery@v1.8.0 | 9 + .../abhinav/goldmark-wikilink@v0.3.0 | 9 + .../github.com/andybalholm/cascadia@v1.3.1 | 9 + .../lookup/github.com/davecgh/go-spew@v1.1.0 | 9 + .../front@v0.0.0-20210301115436-8a0b0a782d0a | 9 + ...bsidian@v0.0.0-20220403030921-3ce308411ee3 | 9 + .../github.com/pmezard/go-difflib@v1.0.0 | 9 + .../lookup/github.com/stretchr/objx@v0.1.0 | 9 + .../lookup/github.com/stretchr/testify@v1.7.0 | 9 + .../lookup/github.com/yuin/goldmark@v1.1.32 | 9 + .../lookup/github.com/yuin/goldmark@v1.4.4 | 9 + .../x/net@v0.0.0-20210916014120-12bc252f5db8 | 9 + .../x/sys@v0.0.0-20201119102817-f84b799fce68 | 9 + .../x/sys@v0.0.0-20210423082822-04245dca01da | 9 + .../x/term@v0.0.0-20201126162022-7de9c90e9dd1 | 9 + .../lookup/golang.org/x/text@v0.3.6 | 9 + .../tools@v0.0.0-20180917221912-90fa682c2a6e | 9 + ...heck.v1@v0.0.0-20161208181325-20d25e280405 | 9 + .../lookup/gopkg.in/yaml.v2@v2.4.0 | 9 + ...yaml.v3@v3.0.0-20200313102051-9f266ea9e77c | 9 + ...yaml.v3@v3.0.0-20210107192922-496545a6307b | 9 + .../sumdb/sum.golang.org/tile/8/0/000 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/001 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/002 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/004 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x003/390 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x004/982 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x007/249 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x007/453 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x007/534 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x009/466 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x009/732 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x012/163 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x013/543 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x013/920 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x015/500 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x024/946 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x027/107 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x027/434 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x029/017 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x030/831 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x038/918 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x040/494 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x040/496 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x040/497 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/0/x040/498 | Bin 0 -> 8192 bytes .../sum.golang.org/tile/8/0/x040/498.p/98 | Bin 0 -> 3136 bytes .../sum.golang.org/tile/8/0/x040/500.p/238 | Bin 0 -> 7616 bytes .../sumdb/sum.golang.org/tile/8/1/000 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/013 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/019 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/028 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/029 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/036 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/038 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/047 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/052 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/054 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/060 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/097 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/105 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/107 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/113 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/120 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/152 | Bin 0 -> 8192 bytes .../sumdb/sum.golang.org/tile/8/1/158.p/50 | Bin 0 -> 1600 bytes .../sumdb/sum.golang.org/tile/8/1/158.p/52 | Bin 0 -> 1664 bytes .../sumdb/sum.golang.org/tile/8/2/000.p/158 | Bin 0 -> 5056 bytes .../toml@v0.4.1/.github/workflows/test.yml | 31 + .../!burnt!sushi/toml@v0.4.1/.gitignore | 2 + .../!burnt!sushi/toml@v0.4.1/COMPATIBLE | 1 + .../!burnt!sushi/toml@v0.4.1/COPYING | 21 + .../!burnt!sushi/toml@v0.4.1/README.md | 220 + .../toml@v0.4.1/_examples/example.go | 61 + .../toml@v0.4.1/_examples/example.toml | 35 + .../toml@v0.4.1/_examples/hard.toml | 22 + .../toml@v0.4.1/_examples/implicit.toml | 4 + .../toml@v0.4.1/_examples/invalid-apples.toml | 6 + .../toml@v0.4.1/_examples/invalid.toml | 35 + .../toml@v0.4.1/_examples/readme1.toml | 5 + .../toml@v0.4.1/_examples/readme2.toml | 1 + .../toml@v0.4.1/cmd/toml-test-decoder/COPYING | 21 + .../cmd/toml-test-decoder/README.md | 6 + .../toml@v0.4.1/cmd/toml-test-decoder/main.go | 43 + .../toml@v0.4.1/cmd/toml-test-encoder/COPYING | 21 + .../cmd/toml-test-encoder/README.md | 6 + .../toml@v0.4.1/cmd/toml-test-encoder/main.go | 41 + .../toml@v0.4.1/cmd/tomlv/COPYING | 21 + .../toml@v0.4.1/cmd/tomlv/README.md | 14 + .../toml@v0.4.1/cmd/tomlv/main.go | 56 + .../!burnt!sushi/toml@v0.4.1/decode.go | 511 + .../!burnt!sushi/toml@v0.4.1/decode_go116.go | 18 + .../toml@v0.4.1/decode_go116_test.go | 28 + .../!burnt!sushi/toml@v0.4.1/decode_meta.go | 123 + .../!burnt!sushi/toml@v0.4.1/decode_test.go | 759 + .../!burnt!sushi/toml@v0.4.1/deprecated.go | 33 + .../!burnt!sushi/toml@v0.4.1/doc.go | 13 + .../!burnt!sushi/toml@v0.4.1/encode.go | 650 + .../!burnt!sushi/toml@v0.4.1/encode_test.go | 427 + .../!burnt!sushi/toml@v0.4.1/example_test.go | 516 + .../!burnt!sushi/toml@v0.4.1/fuzz_test.go | 50 + .../!burnt!sushi/toml@v0.4.1/go.mod | 3 + .../!burnt!sushi/toml@v0.4.1/go.sum | 0 .../toml@v0.4.1/internal/tag/add.go | 76 + .../toml@v0.4.1/internal/tag/rm.go | 101 + .../toml@v0.4.1/internal/toml-test/.gitignore | 2 + .../internal/toml-test/.gogo-release | 1 + .../toml@v0.4.1/internal/toml-test/COPYING | 21 + .../toml@v0.4.1/internal/toml-test/README.md | 258 + .../internal/toml-test/gen-multi.py | 14 + .../toml@v0.4.1/internal/toml-test/json.go | 265 + .../toml@v0.4.1/internal/toml-test/runner.go | 393 + .../internal/toml-test/tests/.gitattributes | 1 + .../invalid/array/missing-separator.toml | 1 + .../tests/invalid/array/no-close-2.toml | 1 + .../tests/invalid/array/no-close-table-2.toml | 1 + .../tests/invalid/array/no-close-table.toml | 1 + .../tests/invalid/array/no-close.toml | 1 + .../tests/invalid/array/tables-1.toml | 4 + .../tests/invalid/array/tables-2.toml | 10 + .../array/text-after-array-entries.toml | 4 + .../array/text-before-array-separator.toml | 4 + .../tests/invalid/array/text-in-array.toml | 5 + .../tests/invalid/bool/mixed-case.toml | 1 + .../tests/invalid/bool/wrong-case-false.toml | 1 + .../tests/invalid/bool/wrong-case-true.toml | 1 + .../tests/invalid/control/comment-del.toml | 1 + .../tests/invalid/control/comment-lf.toml | 1 + .../tests/invalid/control/comment-null.toml | Bin 0 -> 26 bytes .../tests/invalid/control/comment-us.toml | 1 + .../tests/invalid/control/control.multi | Bin 0 -> 568 bytes .../tests/invalid/control/multi-del.toml | 1 + .../tests/invalid/control/multi-lf.toml | 1 + .../tests/invalid/control/multi-null.toml | Bin 0 -> 25 bytes .../tests/invalid/control/multi-us.toml | 1 + .../tests/invalid/control/rawmulti-del.toml | 1 + .../tests/invalid/control/rawmulti-lf.toml | 1 + .../tests/invalid/control/rawmulti-null.toml | Bin 0 -> 28 bytes .../tests/invalid/control/rawmulti-us.toml | 1 + .../tests/invalid/control/rawstring-del.toml | 1 + .../tests/invalid/control/rawstring-lf.toml | 1 + .../tests/invalid/control/rawstring-null.toml | Bin 0 -> 25 bytes .../tests/invalid/control/rawstring-us.toml | 1 + .../tests/invalid/control/string-bs.toml | 1 + .../tests/invalid/control/string-del.toml | 1 + .../tests/invalid/control/string-lf.toml | 1 + .../tests/invalid/control/string-null.toml | Bin 0 -> 22 bytes .../tests/invalid/control/string-us.toml | 1 + .../invalid/datetime/impossible-date.toml | 1 + .../invalid/datetime/no-leads-with-milli.toml | 1 + .../tests/invalid/datetime/no-leads.toml | 1 + .../tests/invalid/datetime/no-secs.toml | 1 + .../tests/invalid/datetime/no-t.toml | 1 + .../tests/invalid/datetime/trailing-t.toml | 1 + .../invalid/encoding/bad-utf8-at-end.toml | 5 + .../invalid/encoding/bad-utf8-in-comment.toml | 1 + .../invalid/encoding/bad-utf8-in-string.toml | 2 + .../invalid/encoding/bom-not-at-start-1.toml | 1 + .../invalid/encoding/bom-not-at-start-2.toml | 1 + .../tests/invalid/encoding/utf16-bom.toml | Bin 0 -> 38 bytes .../tests/invalid/encoding/utf16.toml | Bin 0 -> 42 bytes .../tests/invalid/float/double-point-1.toml | 1 + .../tests/invalid/float/double-point-2.toml | 1 + .../tests/invalid/float/exp-double-e-1.toml | 1 + .../tests/invalid/float/exp-double-e-2.toml | 1 + .../tests/invalid/float/exp-double-us.toml | 1 + .../tests/invalid/float/exp-leading-us.toml | 1 + .../tests/invalid/float/exp-point-1.toml | 1 + .../tests/invalid/float/exp-point-2.toml | 1 + .../tests/invalid/float/exp-trailing-us.toml | 1 + .../toml-test/tests/invalid/float/float.multi | 40 + .../tests/invalid/float/inf-incomplete-1.toml | 1 + .../tests/invalid/float/inf-incomplete-2.toml | 1 + .../tests/invalid/float/inf-incomplete-3.toml | 1 + .../tests/invalid/float/inf_underscore.toml | 1 + .../invalid/float/leading-point-neg.toml | 1 + .../invalid/float/leading-point-plus.toml | 1 + .../tests/invalid/float/leading-point.toml | 1 + .../tests/invalid/float/leading-us.toml | 1 + .../tests/invalid/float/leading-zero-neg.toml | 1 + .../invalid/float/leading-zero-plus.toml | 1 + .../tests/invalid/float/leading-zero.toml | 1 + .../tests/invalid/float/nan-incomplete-1.toml | 1 + .../tests/invalid/float/nan-incomplete-2.toml | 1 + .../tests/invalid/float/nan-incomplete-3.toml | 1 + .../tests/invalid/float/nan_underscore.toml | 1 + .../invalid/float/trailing-point-min.toml | 1 + .../invalid/float/trailing-point-plus.toml | 1 + .../tests/invalid/float/trailing-point.toml | 1 + .../tests/invalid/float/trailing-us.toml | 1 + .../tests/invalid/float/us-after-point.toml | 1 + .../tests/invalid/float/us-before-point.toml | 1 + .../invalid/inline-table/double-comma.toml | 1 + .../tests/invalid/inline-table/empty.toml | 1 + .../invalid/inline-table/linebreak-1.toml | 4 + .../invalid/inline-table/linebreak-2.toml | 2 + .../invalid/inline-table/linebreak-3.toml | 2 + .../invalid/inline-table/linebreak-4.toml | 4 + .../tests/invalid/inline-table/no-comma.toml | 1 + .../invalid/inline-table/trailing-comma.toml | 3 + .../tests/invalid/integer/capital-bin.toml | 1 + .../tests/invalid/integer/capital-hex.toml | 1 + .../tests/invalid/integer/capital-oct.toml | 1 + .../invalid/integer/double-sign-nex.toml | 1 + .../invalid/integer/double-sign-plus.toml | 1 + .../tests/invalid/integer/double-us.toml | 1 + .../tests/invalid/integer/integer.multi | 39 + .../tests/invalid/integer/invalid-bin.toml | 1 + .../tests/invalid/integer/invalid-hex.toml | 1 + .../tests/invalid/integer/invalid-oct.toml | 1 + .../tests/invalid/integer/leading-us-bin.toml | 1 + .../tests/invalid/integer/leading-us-hex.toml | 1 + .../tests/invalid/integer/leading-us-oct.toml | 1 + .../tests/invalid/integer/leading-us.toml | 1 + .../tests/invalid/integer/leading-zero-1.toml | 1 + .../tests/invalid/integer/leading-zero-2.toml | 1 + .../invalid/integer/leading-zero-sign-1.toml | 1 + .../invalid/integer/leading-zero-sign-2.toml | 1 + .../tests/invalid/integer/negative-bin.toml | 1 + .../tests/invalid/integer/negative-hex.toml | 1 + .../tests/invalid/integer/negative-oct.toml | 1 + .../tests/invalid/integer/positive-bin.toml | 1 + .../tests/invalid/integer/positive-hex.toml | 1 + .../tests/invalid/integer/positive-oct.toml | 1 + .../invalid/integer/text-after-integer.toml | 1 + .../invalid/integer/trailing-us-bin.toml | 1 + .../invalid/integer/trailing-us-hex.toml | 1 + .../invalid/integer/trailing-us-oct.toml | 1 + .../tests/invalid/integer/trailing-us.toml | 1 + .../tests/invalid/integer/us-after-bin.toml | 1 + .../tests/invalid/integer/us-after-hex.toml | 1 + .../tests/invalid/integer/us-after-oct.toml | 1 + .../tests/invalid/key/after-array.toml | 1 + .../tests/invalid/key/after-table.toml | 1 + .../tests/invalid/key/after-value.toml | 1 + .../invalid/key/bare-invalid-character.toml | 1 + .../invalid/key/dotted-redefine-table.toml | 4 + .../tests/invalid/key/duplicate-keys.toml | 2 + .../tests/invalid/key/duplicate.toml | 3 + .../toml-test/tests/invalid/key/empty.toml | 1 + .../toml-test/tests/invalid/key/escape.toml | 1 + .../toml-test/tests/invalid/key/hash.toml | 1 + .../tests/invalid/key/multiline.toml | 2 + .../toml-test/tests/invalid/key/newline.toml | 2 + .../toml-test/tests/invalid/key/no-eol.toml | 1 + .../tests/invalid/key/open-bracket.toml | 1 + .../tests/invalid/key/partial-quoted.toml | 1 + .../invalid/key/single-open-bracket.toml | 1 + .../toml-test/tests/invalid/key/space.toml | 1 + .../tests/invalid/key/special-character.toml | 1 + .../tests/invalid/key/start-bracket.toml | 3 + .../tests/invalid/key/two-equals.toml | 1 + .../tests/invalid/key/two-equals2.toml | 1 + .../tests/invalid/key/two-equals3.toml | 1 + .../tests/invalid/key/without-value-1.toml | 1 + .../tests/invalid/key/without-value-2.toml | 1 + .../tests/invalid/string/bad-byte-escape.toml | 1 + .../tests/invalid/string/bad-codepoint.toml | 1 + .../tests/invalid/string/bad-concat.toml | 1 + .../tests/invalid/string/bad-escape.toml | 1 + .../tests/invalid/string/bad-multiline.toml | 2 + .../invalid/string/bad-slash-escape.toml | 1 + .../tests/invalid/string/bad-uni-esc.toml | 1 + .../invalid/string/basic-byte-escapes.toml | 1 + ...ltiline-out-of-range-unicode-escape-1.toml | 1 + ...ltiline-out-of-range-unicode-escape-2.toml | 1 + .../string/basic-multiline-quotes.toml | 1 + .../basic-multiline-unknown-escape.toml | 1 + .../basic-out-of-range-unicode-escape-1.toml | 1 + .../basic-out-of-range-unicode-escape-2.toml | 1 + .../invalid/string/basic-unknown-escape.toml | 1 + .../string/literal-multiline-quotes-1.toml | 2 + .../string/literal-multiline-quotes-2.toml | 1 + .../tests/invalid/string/missing-quotes.toml | 1 + .../string/multiline-escape-space.toml | 3 + .../invalid/string/multiline-no-close-2.toml | 1 + .../invalid/string/multiline-no-close.toml | 2 + .../invalid/string/multiline-quotes-1.toml | 1 + .../invalid/string/multiline-quotes-2.toml | 1 + .../tests/invalid/string/no-close.toml | 1 + .../invalid/string/text-after-string.toml | 1 + .../tests/invalid/string/wrong-close.toml | 1 + .../tests/invalid/table/array-empty.toml | 2 + .../tests/invalid/table/array-implicit.toml | 14 + .../invalid/table/array-missing-bracket.toml | 2 + .../invalid/table/duplicate-key-table.toml | 5 + .../invalid/table/duplicate-table-array.toml | 2 + .../invalid/table/duplicate-table-array2.toml | 2 + .../tests/invalid/table/duplicate.toml | 5 + .../invalid/table/empty-implicit-table.toml | 1 + .../toml-test/tests/invalid/table/empty.toml | 1 + .../tests/invalid/table/equals-sign.toml | 1 + .../tests/invalid/table/llbrace.toml | 1 + .../invalid/table/nested-brackets-close.toml | 2 + .../invalid/table/nested-brackets-open.toml | 2 + .../tests/invalid/table/quoted-no-close.toml | 2 + .../tests/invalid/table/redefine.toml | 6 + .../tests/invalid/table/rrbrace.toml | 1 + .../tests/invalid/table/text-after-table.toml | 1 + .../tests/invalid/table/whitespace.toml | 1 + .../tests/invalid/table/with-pound.toml | 2 + .../toml-test/tests/valid/array/array.json | 68 + .../toml-test/tests/valid/array/array.toml | 12 + .../toml-test/tests/valid/array/bool.json | 12 + .../toml-test/tests/valid/array/bool.toml | 1 + .../toml-test/tests/valid/array/empty.json | 11 + .../toml-test/tests/valid/array/empty.toml | 1 + .../tests/valid/array/hetergeneous.json | 34 + .../tests/valid/array/hetergeneous.toml | 1 + .../tests/valid/array/mixed-int-array.json | 14 + .../tests/valid/array/mixed-int-array.toml | 1 + .../tests/valid/array/mixed-int-float.json | 12 + .../tests/valid/array/mixed-int-float.toml | 1 + .../tests/valid/array/mixed-int-string.json | 12 + .../tests/valid/array/mixed-int-string.toml | 1 + .../tests/valid/array/mixed-string-table.json | 22 + .../tests/valid/array/mixed-string-table.toml | 4 + .../tests/valid/array/nested-double.json | 28 + .../tests/valid/array/nested-double.toml | 6 + .../valid/array/nested-inline-table.json | 7 + .../valid/array/nested-inline-table.toml | 1 + .../toml-test/tests/valid/array/nested.json | 16 + .../toml-test/tests/valid/array/nested.toml | 1 + .../toml-test/tests/valid/array/nospaces.json | 16 + .../toml-test/tests/valid/array/nospaces.toml | 1 + .../valid/array/string-quote-comma-2.json | 8 + .../valid/array/string-quote-comma-2.toml | 1 + .../tests/valid/array/string-quote-comma.json | 12 + .../tests/valid/array/string-quote-comma.toml | 4 + .../tests/valid/array/string-with-comma.json | 12 + .../tests/valid/array/string-with-comma.toml | 4 + .../toml-test/tests/valid/array/strings.json | 20 + .../toml-test/tests/valid/array/strings.toml | 1 + .../array/table-array-string-backslash.json | 10 + .../array/table-array-string-backslash.toml | 1 + .../toml-test/tests/valid/bool/bool.json | 10 + .../toml-test/tests/valid/bool/bool.toml | 2 + .../toml-test/tests/valid/comment/at-eof.json | 6 + .../toml-test/tests/valid/comment/at-eof.toml | 2 + .../tests/valid/comment/at-eof2.json | 6 + .../tests/valid/comment/at-eof2.toml | 2 + .../tests/valid/comment/everywhere.json | 22 + .../tests/valid/comment/everywhere.toml | 27 + .../toml-test/tests/valid/comment/tricky.json | 98 + .../toml-test/tests/valid/comment/tricky.toml | 31 + .../tests/valid/datetime/datetime.json | 10 + .../tests/valid/datetime/datetime.toml | 2 + .../tests/valid/datetime/local-date.json | 6 + .../tests/valid/datetime/local-date.toml | 1 + .../tests/valid/datetime/local-time.json | 10 + .../tests/valid/datetime/local-time.toml | 2 + .../toml-test/tests/valid/datetime/local.json | 14 + .../toml-test/tests/valid/datetime/local.toml | 3 + .../tests/valid/datetime/milliseconds.json | 18 + .../tests/valid/datetime/milliseconds.toml | 4 + .../tests/valid/datetime/timezone.json | 18 + .../tests/valid/datetime/timezone.toml | 4 + .../toml-test/tests/valid/empty-file.json | 1 + .../toml-test/tests/valid/empty-file.toml | 0 .../toml-test/tests/valid/example.json | 26 + .../toml-test/tests/valid/example.toml | 5 + .../toml-test/tests/valid/float/exponent.json | 34 + .../toml-test/tests/valid/float/exponent.toml | 8 + .../toml-test/tests/valid/float/float.json | 18 + .../toml-test/tests/valid/float/float.toml | 4 + .../tests/valid/float/inf-and-nan.json | 26 + .../tests/valid/float/inf-and-nan.toml | 8 + .../toml-test/tests/valid/float/long.json | 10 + .../toml-test/tests/valid/float/long.toml | 2 + .../tests/valid/float/underscore.json | 14 + .../tests/valid/float/underscore.toml | 3 + .../toml-test/tests/valid/float/zero.json | 30 + .../toml-test/tests/valid/float/zero.toml | 7 + .../valid/implicit-and-explicit-after.json | 16 + .../valid/implicit-and-explicit-after.toml | 5 + .../valid/implicit-and-explicit-before.json | 16 + .../valid/implicit-and-explicit-before.toml | 5 + .../tests/valid/implicit-groups.json | 12 + .../tests/valid/implicit-groups.toml | 2 + .../tests/valid/inline-table/array.json | 34 + .../tests/valid/inline-table/array.toml | 3 + .../tests/valid/inline-table/bool.json | 12 + .../tests/valid/inline-table/bool.toml | 1 + .../tests/valid/inline-table/empty.json | 30 + .../tests/valid/inline-table/empty.toml | 6 + .../tests/valid/inline-table/end-in-bool.json | 16 + .../tests/valid/inline-table/end-in-bool.toml | 1 + .../valid/inline-table/inline-table.json | 48 + .../valid/inline-table/inline-table.toml | 5 + .../tests/valid/inline-table/key-dotted.json | 140 + .../tests/valid/inline-table/key-dotted.toml | 23 + .../tests/valid/inline-table/multiline.json | 20 + .../tests/valid/inline-table/multiline.toml | 4 + .../tests/valid/inline-table/nest.json | 64 + .../tests/valid/inline-table/nest.toml | 10 + .../tests/valid/integer/integer.json | 18 + .../tests/valid/integer/integer.toml | 4 + .../tests/valid/integer/literals.json | 38 + .../tests/valid/integer/literals.toml | 11 + .../toml-test/tests/valid/integer/long.json | 10 + .../toml-test/tests/valid/integer/long.toml | 2 + .../tests/valid/integer/underscore.json | 10 + .../tests/valid/integer/underscore.toml | 2 + .../toml-test/tests/valid/integer/zero.json | 50 + .../toml-test/tests/valid/integer/zero.toml | 15 + .../toml-test/tests/valid/key/alphanum.json | 46 + .../toml-test/tests/valid/key/alphanum.toml | 14 + .../tests/valid/key/case-sensitive.json | 38 + .../tests/valid/key/case-sensitive.toml | 13 + .../toml-test/tests/valid/key/dotted.json | 132 + .../toml-test/tests/valid/key/dotted.toml | 35 + .../toml-test/tests/valid/key/empty.json | 6 + .../toml-test/tests/valid/key/empty.toml | 1 + .../tests/valid/key/equals-nospace.json | 6 + .../tests/valid/key/equals-nospace.toml | 1 + .../toml-test/tests/valid/key/escapes.json | 24 + .../toml-test/tests/valid/key/escapes.toml | 10 + .../tests/valid/key/numeric-dotted.json | 8 + .../tests/valid/key/numeric-dotted.toml | 1 + .../toml-test/tests/valid/key/numeric.json | 6 + .../toml-test/tests/valid/key/numeric.toml | 1 + .../tests/valid/key/quoted-dots.json | 32 + .../tests/valid/key/quoted-dots.toml | 10 + .../toml-test/tests/valid/key/space.json | 6 + .../toml-test/tests/valid/key/space.toml | 1 + .../tests/valid/key/special-chars.json | 6 + .../tests/valid/key/special-chars.toml | 1 + .../tests/valid/key/special-word.json | 18 + .../tests/valid/key/special-word.toml | 5 + .../toml-test/tests/valid/newline-crlf.json | 10 + .../toml-test/tests/valid/newline-crlf.toml | 2 + .../toml-test/tests/valid/newline-lf.json | 10 + .../toml-test/tests/valid/newline-lf.toml | 2 + .../tests/valid/spec-example-1-compact.json | 100 + .../tests/valid/spec-example-1-compact.toml | 23 + .../toml-test/tests/valid/spec-example-1.json | 100 + .../toml-test/tests/valid/spec-example-1.toml | 33 + .../valid/string/double-quote-escape.json | 6 + .../valid/string/double-quote-escape.toml | 1 + .../toml-test/tests/valid/string/empty.json | 6 + .../toml-test/tests/valid/string/empty.toml | 1 + .../tests/valid/string/escape-tricky.json | 30 + .../tests/valid/string/escape-tricky.toml | 15 + .../tests/valid/string/escaped-escape.json | 6 + .../tests/valid/string/escaped-escape.toml | 1 + .../toml-test/tests/valid/string/escapes.json | 54 + .../toml-test/tests/valid/string/escapes.toml | 13 + .../tests/valid/string/multiline-json | 54 + .../tests/valid/string/multiline-quotes.json | 42 + .../tests/valid/string/multiline-quotes.toml | 15 + .../tests/valid/string/multiline-toml | 46 + .../toml-test/tests/valid/string/nl.json | 22 + .../toml-test/tests/valid/string/nl.toml | 6 + .../tests/valid/string/raw-multiline.json | 14 + .../tests/valid/string/raw-multiline.toml | 9 + .../toml-test/tests/valid/string/raw.json | 30 + .../toml-test/tests/valid/string/raw.toml | 7 + .../toml-test/tests/valid/string/simple.json | 6 + .../toml-test/tests/valid/string/simple.toml | 1 + .../tests/valid/string/unicode-escape.json | 10 + .../tests/valid/string/unicode-escape.toml | 2 + .../tests/valid/string/unicode-literal.json | 6 + .../tests/valid/string/unicode-literal.toml | 1 + .../tests/valid/string/with-pound.json | 10 + .../tests/valid/string/with-pound.toml | 2 + .../tests/valid/table/array-implicit.json | 12 + .../tests/valid/table/array-implicit.toml | 2 + .../tests/valid/table/array-many.json | 34 + .../tests/valid/table/array-many.toml | 11 + .../tests/valid/table/array-nest.json | 44 + .../tests/valid/table/array-nest.toml | 17 + .../tests/valid/table/array-one.json | 14 + .../tests/valid/table/array-one.toml | 3 + .../tests/valid/table/array-table-array.json | 24 + .../tests/valid/table/array-table-array.toml | 7 + .../toml-test/tests/valid/table/empty.json | 3 + .../toml-test/tests/valid/table/empty.toml | 1 + .../toml-test/tests/valid/table/keyword.json | 6 + .../toml-test/tests/valid/table/keyword.toml | 9 + .../toml-test/tests/valid/table/names.json | 30 + .../toml-test/tests/valid/table/names.toml | 9 + .../toml-test/tests/valid/table/no-eol.json | 3 + .../toml-test/tests/valid/table/no-eol.toml | 1 + .../tests/valid/table/sub-empty.json | 5 + .../tests/valid/table/sub-empty.toml | 2 + .../tests/valid/table/whitespace.json | 3 + .../tests/valid/table/whitespace.toml | 1 + .../valid/table/with-literal-string.json | 12 + .../valid/table/with-literal-string.toml | 4 + .../tests/valid/table/with-pound.json | 8 + .../tests/valid/table/with-pound.toml | 2 + .../tests/valid/table/with-single-quotes.json | 12 + .../tests/valid/table/with-single-quotes.toml | 4 + .../tests/valid/table/without-super.json | 9 + .../tests/valid/table/without-super.toml | 5 + .../toml@v0.4.1/internal/toml-test/toml.go | 133 + .../!burnt!sushi/toml@v0.4.1/internal/tz.go | 36 + .../!burnt!sushi/toml@v0.4.1/lex.go | 1225 + .../!burnt!sushi/toml@v0.4.1/move_test.go | 374 + .../!burnt!sushi/toml@v0.4.1/parse.go | 739 + .../!burnt!sushi/toml@v0.4.1/toml_test.go | 191 + .../!burnt!sushi/toml@v0.4.1/type_check.go | 70 + .../!burnt!sushi/toml@v0.4.1/type_fields.go | 242 + .../goquery@v1.8.0/.gitattributes | 1 + .../goquery@v1.8.0/.github/FUNDING.yml | 2 + .../goquery@v1.8.0/.github/dependabot.yml | 7 + .../goquery@v1.8.0/.github/workflows/test.yml | 25 + .../!puerkito!bio/goquery@v1.8.0/.gitignore | 16 + .../!puerkito!bio/goquery@v1.8.0/LICENSE | 12 + .../!puerkito!bio/goquery@v1.8.0/README.md | 195 + .../!puerkito!bio/goquery@v1.8.0/array.go | 124 + .../goquery@v1.8.0/array_test.go | 234 + .../!puerkito!bio/goquery@v1.8.0/bench/v0.1.0 | 436 + .../!puerkito!bio/goquery@v1.8.0/bench/v0.1.1 | 438 + .../bench/v0.1.1-v0.2.1-go1.1rc1.svg | 405 + .../!puerkito!bio/goquery@v1.8.0/bench/v0.2.0 | 459 + .../bench/v0.2.0-v0.2.1-go1.1rc1.svg | 420 + .../goquery@v1.8.0/bench/v0.2.1-go1.1rc1 | 470 + .../!puerkito!bio/goquery@v1.8.0/bench/v0.3.0 | 476 + .../goquery@v1.8.0/bench/v0.3.2-go1.2 | 478 + .../goquery@v1.8.0/bench/v0.3.2-go1.2-take2 | 477 + .../goquery@v1.8.0/bench/v0.3.2-go1.2rc1 | 477 + .../goquery@v1.8.0/bench/v1.0.0-go1.7 | 85 + .../goquery@v1.8.0/bench/v1.0.1a-go1.7 | 85 + .../goquery@v1.8.0/bench/v1.0.1b-go1.7 | 85 + .../goquery@v1.8.0/bench/v1.0.1c-go1.7 | 86 + .../goquery@v1.8.0/bench_array_test.go | 120 + .../goquery@v1.8.0/bench_example_test.go | 40 + .../goquery@v1.8.0/bench_expand_test.go | 104 + .../goquery@v1.8.0/bench_filter_test.go | 236 + .../goquery@v1.8.0/bench_iteration_test.go | 69 + .../goquery@v1.8.0/bench_property_test.go | 51 + .../goquery@v1.8.0/bench_query_test.go | 111 + .../goquery@v1.8.0/bench_traversal_test.go | 822 + .../!puerkito!bio/goquery@v1.8.0/doc.go | 123 + .../!puerkito!bio/goquery@v1.8.0/doc/tips.md | 68 + .../goquery@v1.8.0/example_test.go | 110 + .../!puerkito!bio/goquery@v1.8.0/expand.go | 70 + .../goquery@v1.8.0/expand_test.go | 118 + .../!puerkito!bio/goquery@v1.8.0/filter.go | 163 + .../goquery@v1.8.0/filter_test.go | 206 + .../!puerkito!bio/goquery@v1.8.0/go.mod | 8 + .../!puerkito!bio/goquery@v1.8.0/go.sum | 9 + .../!puerkito!bio/goquery@v1.8.0/iteration.go | 39 + .../goquery@v1.8.0/iteration_test.go | 88 + .../goquery@v1.8.0/manipulation.go | 679 + .../goquery@v1.8.0/manipulation_test.go | 739 + .../goquery@v1.8.0/misc/git/pre-commit | 37 + .../!puerkito!bio/goquery@v1.8.0/property.go | 275 + .../goquery@v1.8.0/property_test.go | 252 + .../!puerkito!bio/goquery@v1.8.0/query.go | 49 + .../goquery@v1.8.0/query_test.go | 103 + .../goquery@v1.8.0/testdata/gotesting.html | 855 + .../goquery@v1.8.0/testdata/gowiki.html | 1214 + .../goquery@v1.8.0/testdata/metalreview.html | 413 + .../goquery@v1.8.0/testdata/page.html | 102 + .../goquery@v1.8.0/testdata/page2.html | 24 + .../goquery@v1.8.0/testdata/page3.html | 24 + .../!puerkito!bio/goquery@v1.8.0/traversal.go | 698 + .../goquery@v1.8.0/traversal_test.go | 793 + .../!puerkito!bio/goquery@v1.8.0/type.go | 203 + .../!puerkito!bio/goquery@v1.8.0/type_test.go | 255 + .../!puerkito!bio/goquery@v1.8.0/utilities.go | 178 + .../goquery@v1.8.0/utilities_test.go | 128 + .../.github/workflows/go.yml | 40 + .../goldmark-wikilink@v0.3.0/.gitignore | 3 + .../goldmark-wikilink@v0.3.0/CHANGELOG.md | 27 + .../abhinav/goldmark-wikilink@v0.3.0/LICENSE | 21 + .../abhinav/goldmark-wikilink@v0.3.0/Makefile | 53 + .../goldmark-wikilink@v0.3.0/README.md | 42 + .../abhinav/goldmark-wikilink@v0.3.0/ast.go | 52 + .../goldmark-wikilink@v0.3.0/ast_test.go | 41 + .../goldmark-wikilink@v0.3.0/extender.go | 38 + .../abhinav/goldmark-wikilink@v0.3.0/go.mod | 8 + .../abhinav/goldmark-wikilink@v0.3.0/go.sum | 13 + .../integration_test.go | 39 + .../goldmark-wikilink@v0.3.0/parser.go | 83 + .../goldmark-wikilink@v0.3.0/parser_test.go | 112 + .../goldmark-wikilink@v0.3.0/renderer.go | 106 + .../goldmark-wikilink@v0.3.0/renderer_test.go | 119 + .../goldmark-wikilink@v0.3.0/resolver.go | 44 + .../goldmark-wikilink@v0.3.0/resolver_test.go | 67 + .../testdata/tests.txt | 106 + .../andybalholm/cascadia@v1.3.1/.travis.yml | 14 + .../andybalholm/cascadia@v1.3.1/LICENSE | 24 + .../andybalholm/cascadia@v1.3.1/README.md | 9 + .../cascadia@v1.3.1/benchmark_test.go | 53 + .../cascadia@v1.3.1/fuzz/corpus/test0 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test1 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test10 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test11 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test12 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test13 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test14 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test15 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test16 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test17 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test18 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test19 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test2 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test20 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test21 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test22 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test23 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test24 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test25 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test26 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test27 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test28 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test29 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test3 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test30 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test31 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test32 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test33 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test34 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test35 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test36 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test37 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test38 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test39 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test4 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test40 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test41 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test42 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test43 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test44 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test45 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test46 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test47 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test48 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test49 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test5 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test50 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test51 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test52 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test53 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test54 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test55 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test56 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test57 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test58 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test59 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test6 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test60 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test61 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test7 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test8 | 1 + .../cascadia@v1.3.1/fuzz/corpus/test9 | 1 + .../andybalholm/cascadia@v1.3.1/fuzz/fuzz.go | 15 + .../andybalholm/cascadia@v1.3.1/go.mod | 5 + .../andybalholm/cascadia@v1.3.1/go.sum | 7 + .../andybalholm/cascadia@v1.3.1/parser.go | 887 + .../cascadia@v1.3.1/parser_test.go | 88 + .../cascadia@v1.3.1/pseudo_classes.go | 474 + .../andybalholm/cascadia@v1.3.1/selector.go | 586 + .../cascadia@v1.3.1/selector_test.go | 1003 + .../andybalholm/cascadia@v1.3.1/serialize.go | 176 + .../cascadia@v1.3.1/serialize_test.go | 39 + .../cascadia@v1.3.1/specificity.go | 26 + .../cascadia@v1.3.1/specificity_test.go | 127 + .../test_resources/content.xhtml | 530 + .../test_resources/invalid_selectors.json | 37 + .../test_resources/shakespeare.html | 307 + .../test_resources/valid_selectors.json | 1642 ++ .../andybalholm/cascadia@v1.3.1/w3_test.go | 102 + .../.travis.yml | 9 + .../LICENCE | 19 + .../README.md | 55 + .../front.go | 146 + .../front_test.go | 64 + .../testdata/front/body.md | 2 + .../testdata/front/empty.md | 0 .../testdata/front/json.md | 8 + .../testdata/sample.yml | 12 + .../.gitignore | 1 + .../Dockerfile | 11 + .../LICENSE.txt | 21 + .../README.md | 40 + .../action.yml | 30 + .../go.mod | 13 + .../go.sum | 34 + .../main.go | 83 + .../parse.go | 51 + .../util.go | 94 + .../walk.go | 92 + .../write.go | 68 + .../goldmark@v1.4.4/.github/ISSUE_TEMPLATE.md | 17 + .../yuin/goldmark@v1.4.4/.github/stale.yml | 17 + .../.github/workflows/test.yaml | 26 + .../yuin/goldmark@v1.4.4/.gitignore | 19 + .../github.com/yuin/goldmark@v1.4.4/LICENSE | 21 + .../github.com/yuin/goldmark@v1.4.4/Makefile | 16 + .../github.com/yuin/goldmark@v1.4.4/README.md | 494 + .../_benchmark/cmark/.gitignore | 2 + .../goldmark@v1.4.4/_benchmark/cmark/Makefile | 42 + .../goldmark@v1.4.4/_benchmark/cmark/_data.md | 9702 ++++++++ .../_benchmark/cmark/cmark_benchmark.c | 91 + .../_benchmark/cmark/goldmark_benchmark.go | 45 + .../goldmark@v1.4.4/_benchmark/go/_data.md | 9702 ++++++++ .../_benchmark/go/benchmark_test.go | 95 + .../yuin/goldmark@v1.4.4/_test/extra.txt | 686 + .../yuin/goldmark@v1.4.4/_test/options.txt | 78 + .../yuin/goldmark@v1.4.4/_test/spec.json | 5218 +++++ .../_tools/gen-unicode-case-folding-map.go | 73 + .../yuin/goldmark@v1.4.4/ast/ast.go | 508 + .../yuin/goldmark@v1.4.4/ast/ast_test.go | 75 + .../yuin/goldmark@v1.4.4/ast/block.go | 495 + .../yuin/goldmark@v1.4.4/ast/inline.go | 548 + .../yuin/goldmark@v1.4.4/commonmark_test.go | 57 + .../extension/_test/definition_list.txt | 156 + .../extension/_test/footnote.txt | 68 + .../extension/_test/linkify.txt | 193 + .../extension/_test/strikethrough.txt | 18 + .../goldmark@v1.4.4/extension/_test/table.txt | 255 + .../extension/_test/tasklist.txt | 30 + .../extension/_test/typographer.txt | 66 + .../extension/ast/definition_list.go | 83 + .../goldmark@v1.4.4/extension/ast/footnote.go | 132 + .../extension/ast/strikethrough.go | 29 + .../goldmark@v1.4.4/extension/ast/table.go | 157 + .../goldmark@v1.4.4/extension/ast/tasklist.go | 35 + .../extension/definition_list.go | 270 + .../extension/definition_list_test.go | 21 + .../goldmark@v1.4.4/extension/footnote.go | 670 + .../extension/footnote_test.go | 143 + .../yuin/goldmark@v1.4.4/extension/gfm.go | 18 + .../yuin/goldmark@v1.4.4/extension/linkify.go | 318 + .../goldmark@v1.4.4/extension/linkify_test.go | 100 + .../extension/strikethrough.go | 116 + .../extension/strikethrough_test.go | 21 + .../yuin/goldmark@v1.4.4/extension/table.go | 552 + .../goldmark@v1.4.4/extension/table_test.go | 357 + .../goldmark@v1.4.4/extension/tasklist.go | 115 + .../extension/tasklist_test.go | 21 + .../goldmark@v1.4.4/extension/typographer.go | 323 + .../extension/typographer_test.go | 21 + .../yuin/goldmark@v1.4.4/extra_test.go | 87 + .../yuin/goldmark@v1.4.4/fuzz/fuzz.go | 39 + .../yuin/goldmark@v1.4.4/fuzz/fuzz_test.go | 50 + .../github.com/yuin/goldmark@v1.4.4/go.mod | 3 + .../github.com/yuin/goldmark@v1.4.4/go.sum | 0 .../yuin/goldmark@v1.4.4/markdown.go | 140 + .../yuin/goldmark@v1.4.4/options_test.go | 19 + .../yuin/goldmark@v1.4.4/parser/attribute.go | 328 + .../goldmark@v1.4.4/parser/atx_heading.go | 246 + .../yuin/goldmark@v1.4.4/parser/auto_link.go | 42 + .../yuin/goldmark@v1.4.4/parser/blockquote.go | 69 + .../yuin/goldmark@v1.4.4/parser/code_block.go | 100 + .../yuin/goldmark@v1.4.4/parser/code_span.go | 84 + .../yuin/goldmark@v1.4.4/parser/delimiter.go | 238 + .../yuin/goldmark@v1.4.4/parser/emphasis.go | 50 + .../goldmark@v1.4.4/parser/fcode_block.go | 121 + .../yuin/goldmark@v1.4.4/parser/html_block.go | 228 + .../yuin/goldmark@v1.4.4/parser/link.go | 382 + .../yuin/goldmark@v1.4.4/parser/link_ref.go | 152 + .../yuin/goldmark@v1.4.4/parser/list.go | 283 + .../yuin/goldmark@v1.4.4/parser/list_item.go | 90 + .../yuin/goldmark@v1.4.4/parser/paragraph.go | 71 + .../yuin/goldmark@v1.4.4/parser/parser.go | 1236 ++ .../yuin/goldmark@v1.4.4/parser/raw_html.go | 104 + .../goldmark@v1.4.4/parser/setext_headings.go | 126 + .../goldmark@v1.4.4/parser/thematic_break.go | 75 + .../goldmark@v1.4.4/renderer/html/html.go | 831 + .../yuin/goldmark@v1.4.4/renderer/renderer.go | 174 + .../yuin/goldmark@v1.4.4/testutil/testutil.go | 397 + .../goldmark@v1.4.4/testutil/testutil_test.go | 7 + .../yuin/goldmark@v1.4.4/text/reader.go | 653 + .../yuin/goldmark@v1.4.4/text/segment.go | 209 + .../goldmark@v1.4.4/util/html5entities.go | 2142 ++ .../util/unicode_case_folding.go | 1491 ++ .../yuin/goldmark@v1.4.4/util/util.go | 980 + .../yuin/goldmark@v1.4.4/util/util_safe.go | 13 + .../yuin/goldmark@v1.4.4/util/util_unsafe.go | 23 + .../.gitattributes | 10 + .../.gitignore | 2 + .../AUTHORS | 3 + .../CONTRIBUTING.md | 26 + .../CONTRIBUTORS | 3 + .../LICENSE | 27 + .../PATENTS | 22 + .../README.md | 18 + .../bpf/asm.go | 41 + .../bpf/constants.go | 222 + .../bpf/doc.go | 82 + .../bpf/instructions.go | 726 + .../bpf/instructions_test.go | 593 + .../bpf/setter.go | 10 + .../bpf/testdata/all_instructions.bpf | 1 + .../bpf/testdata/all_instructions.txt | 88 + .../bpf/vm.go | 150 + .../bpf/vm_aluop_test.go | 512 + .../bpf/vm_bpf_test.go | 199 + .../bpf/vm_extension_test.go | 49 + .../bpf/vm_instructions.go | 182 + .../bpf/vm_jump_test.go | 726 + .../bpf/vm_load_test.go | 258 + .../bpf/vm_ret_test.go | 115 + .../bpf/vm_scratch_test.go | 247 + .../bpf/vm_test.go | 144 + .../codereview.cfg | 1 + .../context/context.go | 56 + .../context/context_test.go | 584 + .../context/ctxhttp/ctxhttp.go | 71 + .../context/ctxhttp/ctxhttp_test.go | 118 + .../context/go17.go | 73 + .../context/go19.go | 21 + .../context/pre_go17.go | 301 + .../context/pre_go19.go | 110 + .../context/withtimeout_test.go | 31 + .../dict/dict.go | 210 + .../dns/dnsmessage/example_test.go | 132 + .../dns/dnsmessage/message.go | 2664 +++ .../dns/dnsmessage/message_test.go | 1601 ++ .../go.mod | 9 + .../go.sum | 8 + .../html/atom/atom.go | 78 + .../html/atom/atom_test.go | 109 + .../html/atom/gen.go | 713 + .../html/atom/table.go | 783 + .../html/atom/table_test.go | 376 + .../html/charset/charset.go | 257 + .../html/charset/charset_test.go | 236 + .../html/charset/testdata/HTTP-charset.html | 48 + .../charset/testdata/HTTP-vs-UTF-8-BOM.html | 48 + .../testdata/HTTP-vs-meta-charset.html | 49 + .../testdata/HTTP-vs-meta-content.html | 49 + .../testdata/No-encoding-declaration.html | 47 + .../html/charset/testdata/README | 9 + .../html/charset/testdata/UTF-16BE-BOM.html | Bin 0 -> 2670 bytes .../html/charset/testdata/UTF-16LE-BOM.html | Bin 0 -> 2682 bytes .../testdata/UTF-8-BOM-vs-meta-charset.html | 49 + .../testdata/UTF-8-BOM-vs-meta-content.html | 48 + .../testdata/meta-charset-attribute.html | 48 + .../testdata/meta-content-attribute.html | 48 + .../html/const.go | 111 + .../html/doc.go | 106 + .../html/doctype.go | 156 + .../html/entity.go | 2253 ++ .../html/entity_test.go | 29 + .../html/escape.go | 258 + .../html/escape_test.go | 97 + .../html/example_test.go | 40 + .../html/foreign.go | 222 + .../html/node.go | 225 + .../html/node_test.go | 146 + .../html/parse.go | 2460 ++ .../html/parse_test.go | 491 + .../html/render.go | 273 + .../html/render_test.go | 166 + .../issue_30600_parse_panics_in_cell_mode.dat | 12 + ...e_30961_error_nested_unknown_tag_types.dat | 11 + .../testdata/go/raw_tags_to_be_ignored.dat | 97 + .../html/testdata/go/select.dat | 12 + .../html/testdata/go/template.dat | 64 + .../html/testdata/go1.html | 2237 ++ .../html/testdata/webkit/README | 28 + .../html/testdata/webkit/adoption01.dat | 354 + .../html/testdata/webkit/adoption02.dat | 39 + .../html/testdata/webkit/blocks.dat | 719 + .../html/testdata/webkit/comments01.dat | 224 + .../html/testdata/webkit/doctype01.dat | 470 + .../html/testdata/webkit/domjs-unsafe.dat | Bin 0 -> 10356 bytes .../html/testdata/webkit/entities01.dat | 943 + .../html/testdata/webkit/entities02.dat | 309 + .../html/testdata/webkit/foreign-fragment.dat | 559 + .../html/testdata/webkit/html5test-com.dat | 302 + .../html/testdata/webkit/inbody01.dat | 54 + .../html/testdata/webkit/isindex.dat | 49 + .../html/testdata/webkit/main-element.dat | 46 + .../html/testdata/webkit/math.dat | 81 + .../html/testdata/webkit/menuitem-element.dat | 257 + .../testdata/webkit/namespace-sensitivity.dat | 16 + .../html/testdata/webkit/noscript01.dat | 237 + ...pending-spec-changes-plain-text-unsafe.dat | Bin 0 -> 927 bytes .../testdata/webkit/pending-spec-changes.dat | 46 + .../testdata/webkit/plain-text-unsafe.dat | Bin 0 -> 9388 bytes .../html/testdata/webkit/ruby.dat | 301 + .../html/testdata/webkit/scriptdata01.dat | 385 + .../testdata/webkit/scripted/adoption01.dat | 16 + .../html/testdata/webkit/scripted/ark.dat | 27 + .../testdata/webkit/scripted/webkit01.dat | 30 + .../html/testdata/webkit/svg.dat | 81 + .../html/testdata/webkit/tables01.dat | 286 + .../html/testdata/webkit/template.dat | 1604 ++ .../html/testdata/webkit/tests1.dat | 1988 ++ .../html/testdata/webkit/tests10.dat | 849 + .../html/testdata/webkit/tests11.dat | 523 + .../html/testdata/webkit/tests12.dat | 62 + .../html/testdata/webkit/tests14.dat | 75 + .../html/testdata/webkit/tests15.dat | 216 + .../html/testdata/webkit/tests16.dat | 2604 +++ .../html/testdata/webkit/tests17.dat | 179 + .../html/testdata/webkit/tests18.dat | 534 + .../html/testdata/webkit/tests19.dat | 1454 ++ .../html/testdata/webkit/tests2.dat | 821 + .../html/testdata/webkit/tests20.dat | 582 + .../html/testdata/webkit/tests21.dat | 325 + .../html/testdata/webkit/tests22.dat | 190 + .../html/testdata/webkit/tests23.dat | 168 + .../html/testdata/webkit/tests24.dat | 79 + .../html/testdata/webkit/tests25.dat | 288 + .../html/testdata/webkit/tests26.dat | 393 + .../html/testdata/webkit/tests3.dat | 305 + .../html/testdata/webkit/tests4.dat | 58 + .../html/testdata/webkit/tests5.dat | 210 + .../html/testdata/webkit/tests6.dat | 663 + .../html/testdata/webkit/tests7.dat | 418 + .../html/testdata/webkit/tests8.dat | 162 + .../html/testdata/webkit/tests9.dat | 472 + .../testdata/webkit/tests_innerHTML_1.dat | 887 + .../html/testdata/webkit/tricky01.dat | 336 + .../html/testdata/webkit/webkit01.dat | 755 + .../html/testdata/webkit/webkit02.dat | 303 + .../html/token.go | 1224 + .../html/token_test.go | 753 + .../http/httpguts/guts.go | 50 + .../http/httpguts/httplex.go | 348 + .../http/httpguts/httplex_test.go | 119 + .../http/httpproxy/export_test.go | 13 + .../http/httpproxy/go19_test.go | 14 + .../http/httpproxy/proxy.go | 368 + .../http/httpproxy/proxy_test.go | 363 + .../http2/.gitignore | 2 + .../http2/Dockerfile | 51 + .../http2/Makefile | 3 + .../http2/ascii.go | 53 + .../http2/ascii_test.go | 95 + .../http2/ciphers.go | 641 + .../http2/ciphers_test.go | 309 + .../http2/client_conn_pool.go | 313 + .../http2/databuffer.go | 146 + .../http2/databuffer_test.go | 155 + .../http2/errors.go | 138 + .../http2/errors_test.go | 24 + .../http2/flow.go | 52 + .../http2/flow_test.go | 87 + .../http2/frame.go | 1614 ++ .../http2/frame_test.go | 1260 ++ .../http2/go111.go | 30 + .../http2/go115.go | 27 + .../http2/gotrack.go | 170 + .../http2/gotrack_test.go | 33 + .../http2/h2c/h2c.go | 501 + .../http2/h2c/h2c_test.go | 106 + .../http2/h2i/README.md | 97 + .../http2/h2i/h2i.go | 523 + .../http2/headermap.go | 87 + .../http2/hpack/encode.go | 240 + .../http2/hpack/encode_test.go | 386 + .../http2/hpack/hpack.go | 504 + .../http2/hpack/hpack_test.go | 770 + .../http2/hpack/huffman.go | 229 + .../http2/hpack/tables.go | 479 + .../http2/hpack/tables_test.go | 214 + .../http2/http2.go | 385 + .../http2/http2_test.go | 348 + .../http2/not_go111.go | 21 + .../http2/not_go115.go | 31 + .../http2/pipe.go | 168 + .../http2/pipe_test.go | 142 + .../http2/server.go | 2987 +++ .../http2/server_push_test.go | 519 + .../http2/server_test.go | 4343 ++++ .../testdata/draft-ietf-httpbis-http2.xml | 5021 +++++ .../http2/transport.go | 2806 +++ .../http2/transport_go117_test.go | 169 + .../http2/transport_test.go | 5129 +++++ .../http2/write.go | 370 + .../http2/writesched.go | 248 + .../http2/writesched_priority.go | 452 + .../http2/writesched_priority_test.go | 541 + .../http2/writesched_random.go | 77 + .../http2/writesched_random_test.go | 60 + .../http2/writesched_test.go | 130 + .../http2/z_spec_test.go | 356 + .../icmp/diag_test.go | 299 + .../icmp/dstunreach.go | 59 + .../icmp/echo.go | 173 + .../icmp/endpoint.go | 113 + .../icmp/example_test.go | 63 + .../icmp/extension.go | 170 + .../icmp/extension_test.go | 332 + .../icmp/helper_posix.go | 76 + .../icmp/interface.go | 322 + .../icmp/ipv4.go | 69 + .../icmp/ipv4_test.go | 75 + .../icmp/ipv6.go | 23 + .../icmp/listen_posix.go | 104 + .../icmp/listen_stub.go | 34 + .../icmp/message.go | 162 + .../icmp/message_test.go | 343 + .../icmp/messagebody.go | 52 + .../icmp/mpls.go | 77 + .../icmp/multipart.go | 129 + .../icmp/multipart_test.go | 567 + .../icmp/packettoobig.go | 43 + .../icmp/paramprob.go | 72 + .../icmp/sys_freebsd.go | 11 + .../icmp/timeexceeded.go | 57 + .../idna/example_test.go | 70 + .../idna/idna10.0.0.go | 770 + .../idna/idna9.0.0.go | 718 + .../idna/idna_test.go | 108 + .../idna/punycode.go | 203 + .../idna/punycode_test.go | 198 + .../idna/tables10.0.0.go | 4560 ++++ .../idna/tables11.0.0.go | 4654 ++++ .../idna/tables12.0.0.go | 4734 ++++ .../idna/tables13.0.0.go | 4840 ++++ .../idna/tables9.0.0.go | 4487 ++++ .../idna/trie.go | 72 + .../idna/trieval.go | 119 + .../internal/iana/const.go | 223 + .../internal/iana/gen.go | 384 + .../internal/socket/cmsghdr.go | 12 + .../internal/socket/cmsghdr_bsd.go | 14 + .../internal/socket/cmsghdr_linux_32bit.go | 15 + .../internal/socket/cmsghdr_linux_64bit.go | 15 + .../internal/socket/cmsghdr_solaris_64bit.go | 14 + .../internal/socket/cmsghdr_stub.go | 28 + .../internal/socket/cmsghdr_unix.go | 22 + .../internal/socket/cmsghdr_zos_s390x.go | 25 + .../internal/socket/complete_dontwait.go | 26 + .../internal/socket/complete_nodontwait.go | 22 + .../internal/socket/defs_aix.go | 28 + .../internal/socket/defs_darwin.go | 26 + .../internal/socket/defs_dragonfly.go | 26 + .../internal/socket/defs_freebsd.go | 26 + .../internal/socket/defs_linux.go | 30 + .../internal/socket/defs_netbsd.go | 28 + .../internal/socket/defs_openbsd.go | 26 + .../internal/socket/defs_solaris.go | 26 + .../internal/socket/empty.s | 7 + .../internal/socket/error_unix.go | 32 + .../internal/socket/error_windows.go | 26 + .../internal/socket/iovec_32bit.go | 20 + .../internal/socket/iovec_64bit.go | 20 + .../internal/socket/iovec_solaris_64bit.go | 19 + .../internal/socket/iovec_stub.go | 12 + .../internal/socket/mmsghdr_stub.go | 22 + .../internal/socket/mmsghdr_unix.go | 114 + .../internal/socket/msghdr_bsd.go | 40 + .../internal/socket/msghdr_bsdvar.go | 17 + .../internal/socket/msghdr_linux.go | 39 + .../internal/socket/msghdr_linux_32bit.go | 25 + .../internal/socket/msghdr_linux_64bit.go | 25 + .../internal/socket/msghdr_openbsd.go | 14 + .../internal/socket/msghdr_solaris_64bit.go | 36 + .../internal/socket/msghdr_stub.go | 15 + .../internal/socket/msghdr_zos_s390x.go | 36 + .../internal/socket/norace.go | 13 + .../internal/socket/race.go | 38 + .../internal/socket/rawconn.go | 91 + .../internal/socket/rawconn_mmsg.go | 71 + .../internal/socket/rawconn_msg.go | 74 + .../internal/socket/rawconn_nommsg.go | 16 + .../internal/socket/rawconn_nomsg.go | 16 + .../internal/socket/socket.go | 280 + .../internal/socket/socket_dontwait_test.go | 125 + .../internal/socket/socket_test.go | 499 + .../internal/socket/sys.go | 23 + .../internal/socket/sys_bsd.go | 16 + .../internal/socket/sys_const_unix.go | 21 + .../internal/socket/sys_linkname.go | 43 + .../internal/socket/sys_linux.go | 23 + .../internal/socket/sys_linux_386.go | 53 + .../internal/socket/sys_linux_386.s | 11 + .../internal/socket/sys_linux_amd64.go | 10 + .../internal/socket/sys_linux_arm.go | 10 + .../internal/socket/sys_linux_arm64.go | 10 + .../internal/socket/sys_linux_mips.go | 10 + .../internal/socket/sys_linux_mips64.go | 10 + .../internal/socket/sys_linux_mips64le.go | 10 + .../internal/socket/sys_linux_mipsle.go | 10 + .../internal/socket/sys_linux_ppc.go | 10 + .../internal/socket/sys_linux_ppc64.go | 10 + .../internal/socket/sys_linux_ppc64le.go | 10 + .../internal/socket/sys_linux_riscv64.go | 13 + .../internal/socket/sys_linux_s390x.go | 53 + .../internal/socket/sys_linux_s390x.s | 11 + .../internal/socket/sys_netbsd.go | 25 + .../internal/socket/sys_posix.go | 185 + .../internal/socket/sys_solaris.go | 59 + .../internal/socket/sys_solaris_amd64.s | 11 + .../internal/socket/sys_stub.go | 53 + .../internal/socket/sys_unix.go | 34 + .../internal/socket/sys_windows.go | 54 + .../internal/socket/sys_zos_s390x.go | 38 + .../internal/socket/sys_zos_s390x.s | 11 + .../internal/socket/zsys_aix_ppc64.go | 40 + .../internal/socket/zsys_darwin_386.go | 30 + .../internal/socket/zsys_darwin_amd64.go | 32 + .../internal/socket/zsys_darwin_arm.go | 30 + .../internal/socket/zsys_darwin_arm64.go | 32 + .../internal/socket/zsys_dragonfly_amd64.go | 32 + .../internal/socket/zsys_freebsd_386.go | 30 + .../internal/socket/zsys_freebsd_amd64.go | 32 + .../internal/socket/zsys_freebsd_arm.go | 30 + .../internal/socket/zsys_freebsd_arm64.go | 32 + .../internal/socket/zsys_linux_386.go | 35 + .../internal/socket/zsys_linux_amd64.go | 38 + .../internal/socket/zsys_linux_arm.go | 35 + .../internal/socket/zsys_linux_arm64.go | 38 + .../internal/socket/zsys_linux_mips.go | 35 + .../internal/socket/zsys_linux_mips64.go | 38 + .../internal/socket/zsys_linux_mips64le.go | 38 + .../internal/socket/zsys_linux_mipsle.go | 35 + .../internal/socket/zsys_linux_ppc.go | 35 + .../internal/socket/zsys_linux_ppc64.go | 38 + .../internal/socket/zsys_linux_ppc64le.go | 38 + .../internal/socket/zsys_linux_riscv64.go | 40 + .../internal/socket/zsys_linux_s390x.go | 38 + .../internal/socket/zsys_netbsd_386.go | 35 + .../internal/socket/zsys_netbsd_amd64.go | 38 + .../internal/socket/zsys_netbsd_arm.go | 35 + .../internal/socket/zsys_netbsd_arm64.go | 38 + .../internal/socket/zsys_openbsd_386.go | 30 + .../internal/socket/zsys_openbsd_amd64.go | 32 + .../internal/socket/zsys_openbsd_arm.go | 30 + .../internal/socket/zsys_openbsd_arm64.go | 32 + .../internal/socket/zsys_openbsd_mips64.go | 30 + .../internal/socket/zsys_solaris_amd64.go | 32 + .../internal/socket/zsys_zos_s390x.go | 28 + .../internal/socks/client.go | 168 + .../internal/socks/dial_test.go | 170 + .../internal/socks/socks.go | 317 + .../internal/sockstest/server.go | 241 + .../internal/sockstest/server_test.go | 103 + .../internal/timeseries/timeseries.go | 525 + .../internal/timeseries/timeseries_test.go | 170 + .../ipv4/batch.go | 194 + .../ipv4/bpf_test.go | 93 + .../ipv4/control.go | 144 + .../ipv4/control_bsd.go | 44 + .../ipv4/control_pktinfo.go | 42 + .../ipv4/control_stub.go | 14 + .../ipv4/control_test.go | 21 + .../ipv4/control_unix.go | 76 + .../ipv4/control_windows.go | 12 + .../ipv4/control_zos.go | 88 + .../ipv4/defs_aix.go | 21 + .../ipv4/defs_darwin.go | 42 + .../ipv4/defs_dragonfly.go | 21 + .../ipv4/defs_freebsd.go | 39 + .../ipv4/defs_linux.go | 53 + .../ipv4/defs_netbsd.go | 21 + .../ipv4/defs_openbsd.go | 21 + .../ipv4/defs_solaris.go | 42 + .../ipv4/dgramopt.go | 264 + .../ipv4/doc.go | 244 + .../ipv4/endpoint.go | 186 + .../ipv4/example_test.go | 224 + .../ipv4/gen.go | 200 + .../ipv4/genericopt.go | 55 + .../ipv4/header.go | 172 + .../ipv4/header_test.go | 259 + .../ipv4/helper.go | 77 + .../ipv4/helper_posix_test.go | 32 + .../ipv4/helper_stub_test.go | 12 + .../ipv4/iana.go | 38 + .../ipv4/icmp.go | 57 + .../ipv4/icmp_linux.go | 25 + .../ipv4/icmp_stub.go | 26 + .../ipv4/icmp_test.go | 95 + .../ipv4/multicast_test.go | 372 + .../ipv4/multicastlistener_test.go | 265 + .../ipv4/multicastsockopt_test.go | 199 + .../ipv4/packet.go | 117 + .../ipv4/payload.go | 23 + .../ipv4/payload_cmsg.go | 85 + .../ipv4/payload_nocmsg.go | 40 + .../ipv4/readwrite_test.go | 517 + .../ipv4/sockopt.go | 44 + .../ipv4/sockopt_posix.go | 72 + .../ipv4/sockopt_stub.go | 43 + .../ipv4/sys_aix.go | 44 + .../ipv4/sys_asmreq.go | 123 + .../ipv4/sys_asmreq_stub.go | 26 + .../ipv4/sys_asmreqn.go | 45 + .../ipv4/sys_asmreqn_stub.go | 22 + .../ipv4/sys_bpf.go | 25 + .../ipv4/sys_bpf_stub.go | 17 + .../ipv4/sys_bsd.go | 42 + .../ipv4/sys_darwin.go | 69 + .../ipv4/sys_dragonfly.go | 39 + .../ipv4/sys_freebsd.go | 80 + .../ipv4/sys_linux.go | 61 + .../ipv4/sys_solaris.go | 61 + .../ipv4/sys_ssmreq.go | 53 + .../ipv4/sys_ssmreq_stub.go | 22 + .../ipv4/sys_stub.go | 14 + .../ipv4/sys_windows.go | 44 + .../ipv4/sys_zos.go | 57 + .../ipv4/unicast_test.go | 248 + .../ipv4/unicastsockopt_test.go | 147 + .../ipv4/zsys_aix_ppc64.go | 17 + .../ipv4/zsys_darwin.go | 59 + .../ipv4/zsys_dragonfly.go | 13 + .../ipv4/zsys_freebsd_386.go | 52 + .../ipv4/zsys_freebsd_amd64.go | 54 + .../ipv4/zsys_freebsd_arm.go | 54 + .../ipv4/zsys_freebsd_arm64.go | 52 + .../ipv4/zsys_linux_386.go | 72 + .../ipv4/zsys_linux_amd64.go | 74 + .../ipv4/zsys_linux_arm.go | 72 + .../ipv4/zsys_linux_arm64.go | 74 + .../ipv4/zsys_linux_mips.go | 72 + .../ipv4/zsys_linux_mips64.go | 74 + .../ipv4/zsys_linux_mips64le.go | 74 + .../ipv4/zsys_linux_mipsle.go | 72 + .../ipv4/zsys_linux_ppc.go | 72 + .../ipv4/zsys_linux_ppc64.go | 74 + .../ipv4/zsys_linux_ppc64le.go | 74 + .../ipv4/zsys_linux_riscv64.go | 77 + .../ipv4/zsys_linux_s390x.go | 74 + .../ipv4/zsys_netbsd.go | 13 + .../ipv4/zsys_openbsd.go | 13 + .../ipv4/zsys_solaris.go | 57 + .../ipv4/zsys_zos_s390x.go | 56 + .../ipv6/batch.go | 116 + .../ipv6/bpf_test.go | 97 + .../ipv6/control.go | 187 + .../ipv6/control_rfc2292_unix.go | 51 + .../ipv6/control_rfc3542_unix.go | 97 + .../ipv6/control_stub.go | 14 + .../ipv6/control_test.go | 21 + .../ipv6/control_unix.go | 56 + .../ipv6/control_windows.go | 12 + .../ipv6/defs_aix.go | 48 + .../ipv6/defs_darwin.go | 46 + .../ipv6/defs_dragonfly.go | 39 + .../ipv6/defs_freebsd.go | 48 + .../ipv6/defs_linux.go | 52 + .../ipv6/defs_netbsd.go | 39 + .../ipv6/defs_openbsd.go | 39 + .../ipv6/defs_solaris.go | 47 + .../ipv6/dgramopt.go | 301 + .../ipv6/doc.go | 243 + .../ipv6/endpoint.go | 127 + .../ipv6/example_test.go | 216 + .../ipv6/gen.go | 200 + .../ipv6/genericopt.go | 56 + .../ipv6/header.go | 55 + .../ipv6/header_test.go | 55 + .../ipv6/helper.go | 58 + .../ipv6/helper_posix_test.go | 32 + .../ipv6/helper_stub_test.go | 21 + .../ipv6/helper_unix_test.go | 26 + .../ipv6/helper_windows_test.go | 9 + .../ipv6/iana.go | 86 + .../ipv6/icmp.go | 60 + .../ipv6/icmp_bsd.go | 30 + .../ipv6/icmp_linux.go | 27 + .../ipv6/icmp_solaris.go | 27 + .../ipv6/icmp_stub.go | 24 + .../ipv6/icmp_test.go | 96 + .../ipv6/icmp_windows.go | 22 + .../ipv6/icmp_zos.go | 29 + .../ipv6/mocktransponder_test.go | 34 + .../ipv6/multicast_test.go | 274 + .../ipv6/multicastlistener_test.go | 261 + .../ipv6/multicastsockopt_test.go | 161 + .../ipv6/payload.go | 23 + .../ipv6/payload_cmsg.go | 71 + .../ipv6/payload_nocmsg.go | 39 + .../ipv6/readwrite_test.go | 509 + .../ipv6/sockopt.go | 43 + .../ipv6/sockopt_posix.go | 90 + .../ipv6/sockopt_stub.go | 47 + .../ipv6/sockopt_test.go | 121 + .../ipv6/sys_aix.go | 80 + .../ipv6/sys_asmreq.go | 25 + .../ipv6/sys_asmreq_stub.go | 18 + .../ipv6/sys_bpf.go | 25 + .../ipv6/sys_bpf_stub.go | 17 + .../ipv6/sys_bsd.go | 60 + .../ipv6/sys_darwin.go | 80 + .../ipv6/sys_freebsd.go | 94 + .../ipv6/sys_linux.go | 76 + .../ipv6/sys_solaris.go | 76 + .../ipv6/sys_ssmreq.go | 55 + .../ipv6/sys_ssmreq_stub.go | 22 + .../ipv6/sys_stub.go | 14 + .../ipv6/sys_windows.go | 68 + .../ipv6/sys_zos.go | 72 + .../ipv6/unicast_test.go | 186 + .../ipv6/unicastsockopt_test.go | 116 + .../ipv6/zsys_aix_ppc64.go | 69 + .../ipv6/zsys_darwin.go | 64 + .../ipv6/zsys_dragonfly.go | 42 + .../ipv6/zsys_freebsd_386.go | 64 + .../ipv6/zsys_freebsd_amd64.go | 66 + .../ipv6/zsys_freebsd_arm.go | 66 + .../ipv6/zsys_freebsd_arm64.go | 64 + .../ipv6/zsys_linux_386.go | 72 + .../ipv6/zsys_linux_amd64.go | 74 + .../ipv6/zsys_linux_arm.go | 72 + .../ipv6/zsys_linux_arm64.go | 74 + .../ipv6/zsys_linux_mips.go | 72 + .../ipv6/zsys_linux_mips64.go | 74 + .../ipv6/zsys_linux_mips64le.go | 74 + .../ipv6/zsys_linux_mipsle.go | 72 + .../ipv6/zsys_linux_ppc.go | 72 + .../ipv6/zsys_linux_ppc64.go | 74 + .../ipv6/zsys_linux_ppc64le.go | 74 + .../ipv6/zsys_linux_riscv64.go | 77 + .../ipv6/zsys_linux_s390x.go | 74 + .../ipv6/zsys_netbsd.go | 42 + .../ipv6/zsys_openbsd.go | 42 + .../ipv6/zsys_solaris.go | 63 + .../ipv6/zsys_zos_s390x.go | 62 + .../lif/address.go | 105 + .../lif/address_test.go | 123 + .../lif/binary.go | 115 + .../lif/defs_solaris.go | 90 + .../lif/lif.go | 43 + .../lif/link.go | 126 + .../lif/link_test.go | 63 + .../lif/sys.go | 21 + .../lif/sys_solaris_amd64.s | 8 + .../lif/syscall.go | 28 + .../lif/zsys_solaris_amd64.go | 103 + .../nettest/conntest.go | 464 + .../nettest/conntest_test.go | 75 + .../nettest/nettest.go | 347 + .../nettest/nettest_stub.go | 12 + .../nettest/nettest_unix.go | 22 + .../nettest/nettest_windows.go | 26 + .../netutil/helper_stub_test.go | 12 + .../netutil/helper_unix_test.go | 18 + .../netutil/helper_windows_test.go | 9 + .../netutil/listen.go | 74 + .../netutil/listen_test.go | 158 + .../proxy/dial.go | 54 + .../proxy/dial_test.go | 119 + .../proxy/direct.go | 31 + .../proxy/per_host.go | 155 + .../proxy/per_host_test.go | 76 + .../proxy/proxy.go | 149 + .../proxy/proxy_test.go | 159 + .../proxy/socks5.go | 42 + .../publicsuffix/example_test.go | 93 + .../publicsuffix/gen.go | 718 + .../publicsuffix/list.go | 181 + .../publicsuffix/list_test.go | 509 + .../publicsuffix/table.go | 10520 +++++++++ .../publicsuffix/table_test.go | 18473 ++++++++++++++++ .../route/address.go | 430 + .../route/address_darwin_test.go | 63 + .../route/address_test.go | 104 + .../route/binary.go | 91 + .../route/defs_darwin.go | 115 + .../route/defs_dragonfly.go | 135 + .../route/defs_freebsd.go | 338 + .../route/defs_netbsd.go | 113 + .../route/defs_openbsd.go | 117 + .../route/empty.s | 8 + .../route/interface.go | 65 + .../route/interface_announce.go | 33 + .../route/interface_classic.go | 67 + .../route/interface_freebsd.go | 78 + .../route/interface_multicast.go | 31 + .../route/interface_openbsd.go | 90 + .../route/message.go | 73 + .../route/message_darwin_test.go | 34 + .../route/message_freebsd_test.go | 88 + .../route/message_test.go | 239 + .../route/route.go | 135 + .../route/route_classic.go | 76 + .../route/route_openbsd.go | 65 + .../route/route_test.go | 382 + .../route/sys.go | 43 + .../route/sys_darwin.go | 87 + .../route/sys_dragonfly.go | 88 + .../route/sys_freebsd.go | 160 + .../route/sys_netbsd.go | 71 + .../route/sys_openbsd.go | 80 + .../route/syscall.go | 29 + .../route/syscall_go1_12_darwin.go | 13 + .../route/zsys_darwin.go | 99 + .../route/zsys_dragonfly.go | 98 + .../route/zsys_freebsd_386.go | 126 + .../route/zsys_freebsd_amd64.go | 123 + .../route/zsys_freebsd_arm.go | 123 + .../route/zsys_freebsd_arm64.go | 123 + .../route/zsys_netbsd.go | 97 + .../route/zsys_openbsd.go | 101 + .../trace/events.go | 532 + .../trace/histogram.go | 365 + .../trace/histogram_test.go | 325 + .../trace/trace.go | 1130 + .../trace/trace_test.go | 178 + .../webdav/file.go | 802 + .../webdav/file_test.go | 1183 + .../webdav/if.go | 173 + .../webdav/if_test.go | 322 + .../webdav/internal/xml/README | 11 + .../webdav/internal/xml/atom_test.go | 56 + .../webdav/internal/xml/example_test.go | 151 + .../webdav/internal/xml/marshal.go | 1223 + .../webdav/internal/xml/marshal_test.go | 1939 ++ .../webdav/internal/xml/read.go | 692 + .../webdav/internal/xml/read_test.go | 744 + .../webdav/internal/xml/typeinfo.go | 371 + .../webdav/internal/xml/xml.go | 1998 ++ .../webdav/internal/xml/xml_test.go | 752 + .../webdav/litmus_test_server.go | 95 + .../webdav/lock.go | 445 + .../webdav/lock_test.go | 735 + .../webdav/prop.go | 469 + .../webdav/prop_test.go | 716 + .../webdav/webdav.go | 706 + .../webdav/webdav_test.go | 349 + .../webdav/xml.go | 519 + .../webdav/xml_test.go | 906 + .../websocket/client.go | 106 + .../websocket/dial.go | 24 + .../websocket/dial_test.go | 43 + .../websocket/exampledial_test.go | 31 + .../websocket/examplehandler_test.go | 26 + .../websocket/hybi.go | 583 + .../websocket/hybi_test.go | 608 + .../websocket/server.go | 113 + .../websocket/websocket.go | 451 + .../websocket/websocket_test.go | 665 + .../xsrftoken/xsrf.go | 101 + .../xsrftoken/xsrf_test.go | 116 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/.travis.yml | 17 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/LICENSE | 201 + .../gopkg.in/yaml.v2@v2.4.0/LICENSE.libyaml | 31 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/NOTICE | 13 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/README.md | 133 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/apic.go | 744 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/decode.go | 815 + .../gopkg.in/yaml.v2@v2.4.0/decode_test.go | 1367 ++ pkg/mod/gopkg.in/yaml.v2@v2.4.0/emitterc.go | 1685 ++ pkg/mod/gopkg.in/yaml.v2@v2.4.0/encode.go | 390 + .../gopkg.in/yaml.v2@v2.4.0/encode_test.go | 646 + .../yaml.v2@v2.4.0/example_embedded_test.go | 41 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/go.mod | 5 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/limit_test.go | 128 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/parserc.go | 1095 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/readerc.go | 412 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/resolve.go | 258 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/scannerc.go | 2711 +++ pkg/mod/gopkg.in/yaml.v2@v2.4.0/sorter.go | 113 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/suite_test.go | 12 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/writerc.go | 26 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/yaml.go | 478 + pkg/mod/gopkg.in/yaml.v2@v2.4.0/yamlh.go | 739 + .../gopkg.in/yaml.v2@v2.4.0/yamlprivateh.go | 173 + pkg/sumdb/sum.golang.org/latest | 5 + 2046 files changed, 285714 insertions(+), 593 deletions(-) create mode 100755 bin/hugo-obsidian create mode 100644 content/Fundamenty/Dziennik.md create mode 100644 content/Fundamenty/Kierunek.md create mode 100644 content/Fundamenty/Poznawanie siebie.md create mode 100644 content/Fundamenty/Proces.md create mode 100644 content/Fundamenty/System zdobywania wiedzy.md create mode 100644 content/Fundamenty/Wartości.md create mode 100644 content/Optymalizacja/Automatyzacja/Automatyzacja.md create mode 100644 content/Optymalizacja/Automatyzacja/Mikroserwisy.md create mode 100644 content/Optymalizacja/Automatyzacja/Narzędzia.md create mode 100644 content/Optymalizacja/Automatyzacja/Scenariusze.md create mode 100644 content/Optymalizacja/Narzędzia/1Password.md create mode 100644 content/Optymalizacja/Narzędzia/AirBuddy.md create mode 100644 content/Optymalizacja/Narzędzia/Airtable.md create mode 100644 content/Optymalizacja/Narzędzia/Alfred.md create mode 100644 content/Optymalizacja/Narzędzia/Anki.md create mode 100644 content/Optymalizacja/Narzędzia/Audible.md create mode 100644 content/Optymalizacja/Narzędzia/BetterTouch Tool.md create mode 100644 content/Optymalizacja/Narzędzia/Buffer.md create mode 100644 content/Optymalizacja/Narzędzia/ClickUp.md create mode 100644 content/Optymalizacja/Narzędzia/Dropshare.md create mode 100644 content/Optymalizacja/Narzędzia/Endel.io.md create mode 100644 content/Optymalizacja/Narzędzia/Fantastical.md create mode 100644 content/Optymalizacja/Narzędzia/Fig.md create mode 100644 content/Optymalizacja/Narzędzia/Figma.md create mode 100644 content/Optymalizacja/Narzędzia/Hazel.md create mode 100644 content/Optymalizacja/Narzędzia/Headspace.md create mode 100644 content/Optymalizacja/Narzędzia/Hyper.is.md create mode 100644 content/Optymalizacja/Narzędzia/Integromat.md create mode 100644 content/Optymalizacja/Narzędzia/Keyboard Maestro.md create mode 100644 content/Optymalizacja/Narzędzia/Kindle.md create mode 100644 content/Optymalizacja/Narzędzia/Magnet.md create mode 100644 content/Optymalizacja/Narzędzia/Mentorist.md create mode 100644 content/Optymalizacja/Narzędzia/MindNode.md create mode 100644 content/Optymalizacja/Narzędzia/Narzędzia.md create mode 100644 content/Optymalizacja/Narzędzia/Notability.md create mode 100644 content/Optymalizacja/Narzędzia/Notion.md create mode 100644 content/Optymalizacja/Narzędzia/Oak.md create mode 100644 content/Optymalizacja/Narzędzia/Onyx.md create mode 100644 content/Optymalizacja/Narzędzia/Paste.md create mode 100644 content/Optymalizacja/Narzędzia/PopClip.md create mode 100644 content/Optymalizacja/Narzędzia/ProCreate.md create mode 100644 content/Optymalizacja/Narzędzia/README.md create mode 100644 content/Optymalizacja/Narzędzia/Raycast.md create mode 100644 content/Optymalizacja/Narzędzia/Reveri.md create mode 100644 content/Optymalizacja/Narzędzia/Rocket.md create mode 100644 content/Optymalizacja/Narzędzia/Romwod.md create mode 100644 content/Optymalizacja/Narzędzia/Screenflow.md create mode 100644 content/Optymalizacja/Narzędzia/Sip.md create mode 100644 content/Optymalizacja/Narzędzia/Superhuman.md create mode 100644 content/Optymalizacja/Narzędzia/TabNine.md create mode 100644 content/Optymalizacja/Narzędzia/TextSnipper.md create mode 100644 content/Optymalizacja/Narzędzia/Waking Up.md create mode 100644 content/Optymalizacja/Narzędzia/Webflow.md create mode 100644 content/Optymalizacja/Narzędzia/Yoink.md create mode 100644 content/Optymalizacja/Narzędzia/Zapier.md create mode 100644 content/Optymalizacja/Narzędzia/iA Writer.md create mode 100644 content/Optymalizacja/Optymalizacja.md create mode 100644 content/Optymalizacja/Sprzęt/Macbook.md create mode 100644 content/Optymalizacja/Sprzęt/Sprzęt.md create mode 100644 content/Optymalizacja/Sprzęt/StreamDeck.md create mode 100644 content/Optymalizacja/Sprzęt/iPad.md create mode 100644 content/Optymalizacja/Sprzęt/iPhone.md create mode 100644 content/Projekty/Ahoy!.md create mode 100644 content/Projekty/Design Maestro.md create mode 100644 content/Projekty/EasyBanner.md create mode 100644 content/Projekty/EasyCart.md create mode 100644 content/Projekty/EasyLegal.md create mode 100644 content/Projekty/EasyLove.md create mode 100644 content/Projekty/EasyTimer.md create mode 100644 content/Projekty/Projekty.md create mode 100644 content/Projekty/eduweb.md create mode 100644 content/Projekty/overment.md create mode 100644 content/Projekty/zautomatyzowani.md create mode 100644 content/Wiedza/Biznes/Biznes.md create mode 100644 content/Wiedza/Biznes/Leadership.md create mode 100644 content/Wiedza/Biznes/Marketing.md create mode 100644 content/Wiedza/Biznes/Produkt.md create mode 100644 content/Wiedza/Biznes/Sprzedaż.md create mode 100644 content/Wiedza/Inne/MBTI.md create mode 100644 content/Wiedza/Inne/Principles You.md create mode 100644 content/Wiedza/Inne/StrenghtsFinder.md create mode 100644 content/Wiedza/Inne/The Big Five.md create mode 100644 content/Wiedza/Ksiazki/12 Rules for Life.md create mode 100644 content/Wiedza/Ksiazki/Alamanck of Naval Ravikant.md create mode 100644 content/Wiedza/Ksiazki/All I Want to Know is Where Im Going to Die So Ill Never Go There.md create mode 100644 content/Wiedza/Ksiazki/Antifragile.md create mode 100644 content/Wiedza/Ksiazki/Anything You Want.md create mode 100644 content/Wiedza/Ksiazki/Atlas Shrugged.md create mode 100644 content/Wiedza/Ksiazki/Atomic Habits.md create mode 100644 content/Wiedza/Ksiazki/Black Box Thinking.md create mode 100644 content/Wiedza/Ksiazki/Blink.md create mode 100644 content/Wiedza/Ksiazki/Body Mind Mastery.md create mode 100644 content/Wiedza/Ksiazki/Bult to Last.md create mode 100644 content/Wiedza/Ksiazki/Cant Hurt Me.md create mode 100644 content/Wiedza/Ksiazki/Chop Wood Carry Water.md create mode 100644 content/Wiedza/Ksiazki/Creativity Inc.md create mode 100644 content/Wiedza/Ksiazki/Daring Greatly.md create mode 100644 content/Wiedza/Ksiazki/Deep Work.md create mode 100644 content/Wiedza/Ksiazki/Deviate.md create mode 100644 content/Wiedza/Ksiazki/Do the Work.md create mode 100644 content/Wiedza/Ksiazki/Effortless.md create mode 100644 content/Wiedza/Ksiazki/Essentialism: The Disciplined Pursuit of Less.md create mode 100644 content/Wiedza/Ksiazki/Extreme Ownership.md create mode 100644 content/Wiedza/Ksiazki/Find Your Why.md create mode 100644 content/Wiedza/Ksiazki/Fooled by Randomness.md create mode 100644 content/Wiedza/Ksiazki/Getting Real.md create mode 100644 content/Wiedza/Ksiazki/Gladiators, Pirates and Games of Trust.md create mode 100644 content/Wiedza/Ksiazki/Good to Great.md create mode 100644 content/Wiedza/Ksiazki/Great by Choice.md create mode 100644 content/Wiedza/Ksiazki/Grit.md create mode 100644 content/Wiedza/Ksiazki/Hard Things About Hard Things.md create mode 100644 content/Wiedza/Ksiazki/How to Fail at Almost Anything and Still Win Big.md create mode 100644 content/Wiedza/Ksiazki/Insanely Simple.md create mode 100644 content/Wiedza/Ksiazki/Inspired.md create mode 100644 content/Wiedza/Ksiazki/Ksiazki.md create mode 100644 content/Wiedza/Ksiazki/Leaders Eat Last.md create mode 100644 content/Wiedza/Ksiazki/Letting Go.md create mode 100644 content/Wiedza/Ksiazki/Lying.md create mode 100644 content/Wiedza/Ksiazki/MAKE.md create mode 100644 content/Wiedza/Ksiazki/Mastery (Robert Greene).md create mode 100644 content/Wiedza/Ksiazki/Mastery: The Keys to Success and Long-Term Fulfillment.md create mode 100644 content/Wiedza/Ksiazki/Never Split the Difference.md create mode 100644 content/Wiedza/Ksiazki/Pale Blue Dot.md create mode 100644 content/Wiedza/Ksiazki/Peak.md create mode 100644 content/Wiedza/Ksiazki/Personal MBA.md create mode 100644 content/Wiedza/Ksiazki/Pound the Stone.md create mode 100644 content/Wiedza/Ksiazki/Power vs. Force.md create mode 100644 content/Wiedza/Ksiazki/Predictably Irrational.md create mode 100644 content/Wiedza/Ksiazki/Principles.md create mode 100644 content/Wiedza/Ksiazki/Product-Led Growth.md create mode 100644 content/Wiedza/Ksiazki/Range.md create mode 100644 content/Wiedza/Ksiazki/Rebel Ideas.md create mode 100644 content/Wiedza/Ksiazki/Refactoring UI.md create mode 100644 content/Wiedza/Ksiazki/Rework.md create mode 100644 content/Wiedza/Ksiazki/Seeking Wisdom.md create mode 100644 content/Wiedza/Ksiazki/Shape Up.md create mode 100644 content/Wiedza/Ksiazki/Simplify.md create mode 100644 content/Wiedza/Ksiazki/Skin in the Game.md create mode 100644 content/Wiedza/Ksiazki/So Good They Cant Ignore You.md create mode 100644 content/Wiedza/Ksiazki/Sources of Power.md create mode 100644 content/Wiedza/Ksiazki/Sprint.md create mode 100644 content/Wiedza/Ksiazki/Steve Jobs.md create mode 100644 content/Wiedza/Ksiazki/StrenghtsFinder 2.md create mode 100644 content/Wiedza/Ksiazki/That Will Never Work.md create mode 100644 content/Wiedza/Ksiazki/The Art of War.md create mode 100644 content/Wiedza/Ksiazki/The Beginning of Infinity.md create mode 100644 content/Wiedza/Ksiazki/The Brain Audit.md create mode 100644 content/Wiedza/Ksiazki/The Changing World Order.md create mode 100644 content/Wiedza/Ksiazki/The Compound Effect.md create mode 100644 content/Wiedza/Ksiazki/The Dichotomy of Leadership.md create mode 100644 content/Wiedza/Ksiazki/The Fabric of Reality.md create mode 100644 content/Wiedza/Ksiazki/The Great Mental Models.md create mode 100644 content/Wiedza/Ksiazki/The Happiness Advantage.md create mode 100644 content/Wiedza/Ksiazki/The Hidden School.md create mode 100644 content/Wiedza/Ksiazki/The Infinite Game.md create mode 100644 content/Wiedza/Ksiazki/The Lean Startup.md create mode 100644 content/Wiedza/Ksiazki/The Millionaire Fastlane.md create mode 100644 content/Wiedza/Ksiazki/The Mom Test.md create mode 100644 content/Wiedza/Ksiazki/The One Thing.md create mode 100644 content/Wiedza/Ksiazki/The Syntellect Hypothesis.md create mode 100644 content/Wiedza/Ksiazki/The Underdog Paradox.md create mode 100644 content/Wiedza/Ksiazki/Think Again.md create mode 100644 content/Wiedza/Ksiazki/Think Like a Rocket Scientist.md create mode 100644 content/Wiedza/Ksiazki/Token Economy.md create mode 100644 content/Wiedza/Ksiazki/Total Recall.md create mode 100644 content/Wiedza/Ksiazki/Tytul.md create mode 100644 content/Wiedza/Ksiazki/Understanding the INFJ Personality Type.md create mode 100644 content/Wiedza/Ksiazki/War of Art.md create mode 100644 content/Wiedza/Ksiazki/Way of The Peaceful Warrior.md create mode 100644 content/Wiedza/Ksiazki/When Coffee and Kale Compete.md create mode 100644 content/Wiedza/Ksiazki/Who Says Elephant's Can't Dance.md create mode 100644 content/Wiedza/Ksiazki/Win In The Dark.md create mode 100644 content/Wiedza/Ksiazki/Working Backwards.md create mode 100644 content/Wiedza/Ludzie/Adam Grant.md create mode 100644 content/Wiedza/Ludzie/Adam Wathan.md create mode 100644 content/Wiedza/Ludzie/Andrew Huberman.md create mode 100644 content/Wiedza/Ludzie/Bruce Lee.md create mode 100644 content/Wiedza/Ludzie/Charlie Munger.md create mode 100644 content/Wiedza/Ludzie/Dan Millman.md create mode 100644 content/Wiedza/Ludzie/David Goggins.md create mode 100644 content/Wiedza/Ludzie/Elon Musk.md create mode 100644 content/Wiedza/Ludzie/Jim Collins.md create mode 100644 content/Wiedza/Ludzie/Jocko Willink.md create mode 100644 content/Wiedza/Ludzie/Kapil Gupta.md create mode 100644 content/Wiedza/Ludzie/Lex Fridman.md create mode 100644 content/Wiedza/Ludzie/Ludzie.md create mode 100644 content/Wiedza/Ludzie/Naval Ravikant.md create mode 100644 content/Wiedza/Ludzie/Ray Dalio.md create mode 100644 content/Wiedza/Ludzie/Warren Buffet.md create mode 100644 content/Wiedza/Modele Mentalne/ Social comparsion bias.md create mode 100644 content/Wiedza/Modele Mentalne/20 mile march.md create mode 100644 content/Wiedza/Modele Mentalne/Absent-mindedness.md create mode 100644 content/Wiedza/Modele Mentalne/Actor-observer bias.md create mode 100644 content/Wiedza/Modele Mentalne/Ambiguity bias.md create mode 100644 content/Wiedza/Modele Mentalne/Anchoring.md create mode 100644 content/Wiedza/Modele Mentalne/Anecdotal fallacy.md create mode 100644 content/Wiedza/Modele Mentalne/Anthropomorphism.md create mode 100644 content/Wiedza/Modele Mentalne/Appeal to Novelty.md create mode 100644 content/Wiedza/Modele Mentalne/Appeal to probability fallacy.md create mode 100644 content/Wiedza/Modele Mentalne/Argument from fallacy.md create mode 100644 content/Wiedza/Modele Mentalne/Attentional bias.md create mode 100644 content/Wiedza/Modele Mentalne/Authority bias.md create mode 100644 content/Wiedza/Modele Mentalne/Automation bias.md create mode 100644 content/Wiedza/Modele Mentalne/Availability heurisitc.md create mode 100644 content/Wiedza/Modele Mentalne/Backfire effect.md create mode 100644 content/Wiedza/Modele Mentalne/Bader-Meinhof Phenomenon.md create mode 100644 content/Wiedza/Modele Mentalne/Bandwagon effect.md create mode 100644 content/Wiedza/Modele Mentalne/Barnum effect.md create mode 100644 content/Wiedza/Modele Mentalne/Base rate fallacy.md create mode 100644 content/Wiedza/Modele Mentalne/Belief bias.md create mode 100644 content/Wiedza/Modele Mentalne/Bias blind spot.md create mode 100644 content/Wiedza/Modele Mentalne/Bike-shedding effect.md create mode 100644 content/Wiedza/Modele Mentalne/Bizarreness effect.md create mode 100644 content/Wiedza/Modele Mentalne/Bullets and Cannonballs.md create mode 100644 content/Wiedza/Modele Mentalne/Cheerleader effect.md create mode 100644 content/Wiedza/Modele Mentalne/Choice-supportive bias.md create mode 100644 content/Wiedza/Modele Mentalne/Circle of Competence.md create mode 100644 content/Wiedza/Modele Mentalne/Clustering illusion.md create mode 100644 content/Wiedza/Modele Mentalne/Confabulation.md create mode 100644 content/Wiedza/Modele Mentalne/Confirmation bias.md create mode 100644 content/Wiedza/Modele Mentalne/Congruence bias.md create mode 100644 content/Wiedza/Modele Mentalne/Conjunction fallacy.md create mode 100644 content/Wiedza/Modele Mentalne/Conservatism.md create mode 100644 content/Wiedza/Modele Mentalne/Constrast effect.md create mode 100644 content/Wiedza/Modele Mentalne/Context effect.md create mode 100644 content/Wiedza/Modele Mentalne/Continued inflence effect.md create mode 100644 content/Wiedza/Modele Mentalne/Craftsman Mindset.md create mode 100644 content/Wiedza/Modele Mentalne/Cross-race effect.md create mode 100644 content/Wiedza/Modele Mentalne/Cryptomnesia.md create mode 100644 content/Wiedza/Modele Mentalne/Cue-dependent forgetting.md create mode 100644 content/Wiedza/Modele Mentalne/Curse of knowledge.md create mode 100644 content/Wiedza/Modele Mentalne/Declinism.md create mode 100644 content/Wiedza/Modele Mentalne/Decoy effect.md create mode 100644 content/Wiedza/Modele Mentalne/Defense attribution.md create mode 100644 content/Wiedza/Modele Mentalne/Delmore effect.md create mode 100644 content/Wiedza/Modele Mentalne/Denomination effect.md create mode 100644 content/Wiedza/Modele Mentalne/Disposition effect.md create mode 100644 content/Wiedza/Modele Mentalne/Distinction bias.md create mode 100644 content/Wiedza/Modele Mentalne/Dunning-Kurger effect.md create mode 100644 content/Wiedza/Modele Mentalne/Duration neglect.md create mode 100644 content/Wiedza/Modele Mentalne/Effort justification.md create mode 100644 content/Wiedza/Modele Mentalne/Egocentric bias.md create mode 100644 content/Wiedza/Modele Mentalne/Empathy gap.md create mode 100644 content/Wiedza/Modele Mentalne/Endowment effect.md create mode 100644 content/Wiedza/Modele Mentalne/Ergodicity.md create mode 100644 content/Wiedza/Modele Mentalne/Escalation of commitment.md create mode 100644 content/Wiedza/Modele Mentalne/Essentialism.md create mode 100644 content/Wiedza/Modele Mentalne/Expectation bias.md create mode 100644 content/Wiedza/Modele Mentalne/Experimenters bias.md create mode 100644 content/Wiedza/Modele Mentalne/Extrinsic incentive error.md create mode 100644 content/Wiedza/Modele Mentalne/Fading Affect.md create mode 100644 content/Wiedza/Modele Mentalne/False consesus effect.md create mode 100644 content/Wiedza/Modele Mentalne/False memory.md create mode 100644 content/Wiedza/Modele Mentalne/Falsification.md create mode 100644 content/Wiedza/Modele Mentalne/Farming effect.md create mode 100644 content/Wiedza/Modele Mentalne/First Principles.md create mode 100644 content/Wiedza/Modele Mentalne/Focusing effect.md create mode 100644 content/Wiedza/Modele Mentalne/Forer effect.md create mode 100644 content/Wiedza/Modele Mentalne/Frequency illusion.md create mode 100644 content/Wiedza/Modele Mentalne/Functional fixedness.md create mode 100644 content/Wiedza/Modele Mentalne/Fundamental attribution error.md create mode 100644 content/Wiedza/Modele Mentalne/Generation effect.md create mode 100644 content/Wiedza/Modele Mentalne/Genius of The AND.md create mode 100644 content/Wiedza/Modele Mentalne/Google effect.md create mode 100644 content/Wiedza/Modele Mentalne/Group attribution error.md create mode 100644 content/Wiedza/Modele Mentalne/Halo effect.md create mode 100644 content/Wiedza/Modele Mentalne/Hard-easy effect.md create mode 100644 content/Wiedza/Modele Mentalne/Hedgehog Concept.md create mode 100644 content/Wiedza/Modele Mentalne/Hindsight bias.md create mode 100644 content/Wiedza/Modele Mentalne/Hot-hand fallacy.md create mode 100644 content/Wiedza/Modele Mentalne/Humor effect.md create mode 100644 content/Wiedza/Modele Mentalne/Hyperbolic discounting.md create mode 100644 content/Wiedza/Modele Mentalne/IKEA effect.md create mode 100644 content/Wiedza/Modele Mentalne/Identifable victim effect.md create mode 100644 content/Wiedza/Modele Mentalne/Illusion of asymmetric insight.md create mode 100644 content/Wiedza/Modele Mentalne/Illusion of control.md create mode 100644 content/Wiedza/Modele Mentalne/Illusion of external agency.md create mode 100644 content/Wiedza/Modele Mentalne/Illusion of transparency.md create mode 100644 content/Wiedza/Modele Mentalne/Illusion of validity.md create mode 100644 content/Wiedza/Modele Mentalne/Illusory correlation.md create mode 100644 content/Wiedza/Modele Mentalne/Illusory superiority.md create mode 100644 content/Wiedza/Modele Mentalne/Illusory truth effect.md create mode 100644 content/Wiedza/Modele Mentalne/Impact.md create mode 100644 content/Wiedza/Modele Mentalne/Implicit associations.md create mode 100644 content/Wiedza/Modele Mentalne/Implicit stereotypes.md create mode 100644 content/Wiedza/Modele Mentalne/Imposter Syndrome.md create mode 100644 content/Wiedza/Modele Mentalne/In-group bias.md create mode 100644 content/Wiedza/Modele Mentalne/Information bias.md create mode 100644 content/Wiedza/Modele Mentalne/Insentivity to sample size.md create mode 100644 content/Wiedza/Modele Mentalne/Inversion.md create mode 100644 content/Wiedza/Modele Mentalne/Irration escalation.md create mode 100644 content/Wiedza/Modele Mentalne/Just-world hypothesis.md create mode 100644 content/Wiedza/Modele Mentalne/Lake Wobegone effect.md create mode 100644 content/Wiedza/Modele Mentalne/Law of Triviality.md create mode 100644 content/Wiedza/Modele Mentalne/Less-is-better effect.md create mode 100644 content/Wiedza/Modele Mentalne/Leveling and sharpening .md create mode 100644 content/Wiedza/Modele Mentalne/Leverage.md create mode 100644 content/Wiedza/Modele Mentalne/Levers of processing effect.md create mode 100644 content/Wiedza/Modele Mentalne/List-length effect.md create mode 100644 content/Wiedza/Modele Mentalne/Loss aversion.md create mode 100644 content/Wiedza/Modele Mentalne/Magic number 7+-2.md create mode 100644 content/Wiedza/Modele Mentalne/Masked man fallacy.md create mode 100644 content/Wiedza/Modele Mentalne/Memory inhibition.md create mode 100644 content/Wiedza/Modele Mentalne/Mental accounting.md create mode 100644 content/Wiedza/Modele Mentalne/Merge exposure effect.md create mode 100644 content/Wiedza/Modele Mentalne/Misattribution of memory.md create mode 100644 content/Wiedza/Modele Mentalne/Misinformation effect.md create mode 100644 content/Wiedza/Modele Mentalne/Modality effect.md create mode 100644 content/Wiedza/Modele Mentalne/Modele mentalne.md create mode 100644 content/Wiedza/Modele Mentalne/Money illusion.md create mode 100644 content/Wiedza/Modele Mentalne/Mood-congruent memory bias.md create mode 100644 content/Wiedza/Modele Mentalne/Moral credential effect.md create mode 100644 content/Wiedza/Modele Mentalne/Moral luck.md create mode 100644 content/Wiedza/Modele Mentalne/Murphys Law.md create mode 100644 content/Wiedza/Modele Mentalne/Naive cynicism.md create mode 100644 content/Wiedza/Modele Mentalne/Naive realism.md create mode 100644 content/Wiedza/Modele Mentalne/Negativity bias.md create mode 100644 content/Wiedza/Modele Mentalne/Negativity.md create mode 100644 content/Wiedza/Modele Mentalne/Neglect of probability.md create mode 100644 content/Wiedza/Modele Mentalne/Next in line effect.md create mode 100644 content/Wiedza/Modele Mentalne/Normalcy bias.md create mode 100644 content/Wiedza/Modele Mentalne/Not invented here.md create mode 100644 content/Wiedza/Modele Mentalne/Observer effect.md create mode 100644 content/Wiedza/Modele Mentalne/Observer-expectancy effect.md create mode 100644 content/Wiedza/Modele Mentalne/Occams Razor.md create mode 100644 content/Wiedza/Modele Mentalne/Omission bias.md create mode 100644 content/Wiedza/Modele Mentalne/Optimism.md create mode 100644 content/Wiedza/Modele Mentalne/Ostrich effect.md create mode 100644 content/Wiedza/Modele Mentalne/Out-group-homogeneity bias.md create mode 100644 content/Wiedza/Modele Mentalne/Outcome bias.md create mode 100644 content/Wiedza/Modele Mentalne/Overcofidence effect.md create mode 100644 content/Wiedza/Modele Mentalne/Part-list cueing effect.md create mode 100644 content/Wiedza/Modele Mentalne/Peak-en rule.md create mode 100644 content/Wiedza/Modele Mentalne/Peltzman effect.md create mode 100644 content/Wiedza/Modele Mentalne/Pessimism.md create mode 100644 content/Wiedza/Modele Mentalne/Picture superiority effect.md create mode 100644 content/Wiedza/Modele Mentalne/Placebo effect.md create mode 100644 content/Wiedza/Modele Mentalne/Planning fallacy.md create mode 100644 content/Wiedza/Modele Mentalne/Positivity effect.md create mode 100644 content/Wiedza/Modele Mentalne/Post-purchase rationalization.md create mode 100644 content/Wiedza/Modele Mentalne/Prejudice.md create mode 100644 content/Wiedza/Modele Mentalne/Primacy effect.md create mode 100644 content/Wiedza/Modele Mentalne/Pro-innovation bias.md create mode 100644 content/Wiedza/Modele Mentalne/Processing difficulity effect.md create mode 100644 content/Wiedza/Modele Mentalne/Projection bias.md create mode 100644 content/Wiedza/Modele Mentalne/Pseudocertainty effect.md create mode 100644 content/Wiedza/Modele Mentalne/Reactance.md create mode 100644 content/Wiedza/Modele Mentalne/Reactive devaluation.md create mode 100644 content/Wiedza/Modele Mentalne/Recency effect.md create mode 100644 content/Wiedza/Modele Mentalne/Recency illusion.md create mode 100644 content/Wiedza/Modele Mentalne/Restraint bias.md create mode 100644 content/Wiedza/Modele Mentalne/Reverse psychology.md create mode 100644 content/Wiedza/Modele Mentalne/Rhyme as reason effect.md create mode 100644 content/Wiedza/Modele Mentalne/Risk compensation.md create mode 100644 content/Wiedza/Modele Mentalne/Rosy retrospection.md create mode 100644 content/Wiedza/Modele Mentalne/Second Order Thinking.md create mode 100644 content/Wiedza/Modele Mentalne/Selective perception.md create mode 100644 content/Wiedza/Modele Mentalne/Self-consistency bias.md create mode 100644 content/Wiedza/Modele Mentalne/Self-relevance effect.md create mode 100644 content/Wiedza/Modele Mentalne/Self-serving bias.md create mode 100644 content/Wiedza/Modele Mentalne/Semmelweis reflex.md create mode 100644 content/Wiedza/Modele Mentalne/Serial position effect.md create mode 100644 content/Wiedza/Modele Mentalne/Serial recall effect.md create mode 100644 content/Wiedza/Modele Mentalne/Social desirability bias.md create mode 100644 content/Wiedza/Modele Mentalne/Source confusion.md create mode 100644 content/Wiedza/Modele Mentalne/Spacing effect.md create mode 100644 content/Wiedza/Modele Mentalne/Spotlight effect.md create mode 100644 content/Wiedza/Modele Mentalne/Status quo bias.md create mode 100644 content/Wiedza/Modele Mentalne/Stereotypical bias.md create mode 100644 content/Wiedza/Modele Mentalne/Stereotyping.md create mode 100644 content/Wiedza/Modele Mentalne/Subaddivity effect.md create mode 100644 content/Wiedza/Modele Mentalne/Subjective validation.md create mode 100644 content/Wiedza/Modele Mentalne/Suffix effect.md create mode 100644 content/Wiedza/Modele Mentalne/Suggestibility.md create mode 100644 content/Wiedza/Modele Mentalne/Sunc cost fallacy.md create mode 100644 content/Wiedza/Modele Mentalne/Survivorship bias.md create mode 100644 content/Wiedza/Modele Mentalne/System justification.md create mode 100644 content/Wiedza/Modele Mentalne/Telescopint effect.md create mode 100644 content/Wiedza/Modele Mentalne/Testing effect.md create mode 100644 content/Wiedza/Modele Mentalne/The Map Is Not the Territory.md create mode 100644 content/Wiedza/Modele Mentalne/Third-person effect.md create mode 100644 content/Wiedza/Modele Mentalne/Time-saving bias.md create mode 100644 content/Wiedza/Modele Mentalne/Tip of the tongue effect.md create mode 100644 content/Wiedza/Modele Mentalne/Trait ascription bias.md create mode 100644 content/Wiedza/Modele Mentalne/Ultimate attribution error.md create mode 100644 content/Wiedza/Modele Mentalne/Unit bias.md create mode 100644 content/Wiedza/Modele Mentalne/Via Negativa.md create mode 100644 content/Wiedza/Modele Mentalne/Von Restorff effect.md create mode 100644 content/Wiedza/Modele Mentalne/Weber-Fechner law.md create mode 100644 content/Wiedza/Modele Mentalne/Well-traveled road effect.md create mode 100644 content/Wiedza/Modele Mentalne/Zero sum bias.md create mode 100644 content/Wiedza/Modele Mentalne/Zero-risk bias.md create mode 100644 content/Wiedza/Podcasty/Bruce Lee Podcast.md create mode 100644 content/Wiedza/Podcasty/Huberman Lab.md create mode 100644 content/Wiedza/Podcasty/Lex Fridman Podcast.md create mode 100644 content/Wiedza/Podcasty/Made You Think.md create mode 100644 content/Wiedza/Podcasty/My First Million.md create mode 100644 content/Wiedza/Podcasty/Podcast.md create mode 100644 content/Wiedza/Podcasty/SyntaxFM.md create mode 100644 content/Wiedza/Podcasty/TokKast.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Fundamenty/Constructor Functions.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Fundamenty/Prototype chain.md create mode 100644 content/Wiedza/Programowanie/JavaScript/JavaScript.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Programowanie funkcyjne/Composition over Inheritance.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Programowanie funkcyjne/Currying.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Programowanie funkcyjne/Factory Functions.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Programowanie funkcyjne/Function Composition.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Programowanie funkcyjne/Funktory.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Programowanie funkcyjne/Higher-Order Function.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Programowanie funkcyjne/Monady.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Programowanie funkcyjne/Programowanie funkcyjne.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Programowanie funkcyjne/Pure Functions.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Programowanie funkcyjne/Shared State.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Promise/Async Await.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Promise/Generatory.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Promise/Promise API.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Promise/Promise Chaining.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Promise/Promise Constructor.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Promise/Promise.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Promise/Pętle Async Await.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Promise/_Promise.md create mode 100644 content/Wiedza/Programowanie/JavaScript/RxJS/RxJS.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Zakres/Closures.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Zakres/Execution Context.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Zakres/Lexical Scope.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Zakres/Scope.md create mode 100644 content/Wiedza/Programowanie/JavaScript/Zakres/Zakres.md create mode 100644 content/Wiedza/Programowanie/JavaScript/_JavaScript.md create mode 100644 content/Wiedza/Programowanie/NestJS/Podstawy.md create mode 100644 content/Wiedza/Programowanie/NestJS/Upload plików.md create mode 100644 content/Wiedza/Programowanie/No-Code.md create mode 100644 content/Wiedza/Programowanie/Node.js.md create mode 100644 content/Wiedza/Programowanie/Optymalizacja/Optymalizacja front-endu.md create mode 100644 content/Wiedza/Programowanie/REST/Adresy URL.md create mode 100644 content/Wiedza/Programowanie/REST/Autoryzacja i uwierzytelnienie REST.md create mode 100644 content/Wiedza/Programowanie/REST/Metody HTTP.md create mode 100644 content/Wiedza/Programowanie/REST/Paginacja REST.md create mode 100644 content/Wiedza/Programowanie/REST/Przykład REST.md create mode 100644 content/Wiedza/Programowanie/REST/REST.md create mode 100644 content/Wiedza/Programowanie/REST/Resources.md create mode 100644 content/Wiedza/Programowanie/REST/Sortowanie i filtrowanie REST.md create mode 100644 content/Wiedza/Programowanie/REST/Statusy HTTP.md create mode 100644 content/Wiedza/Programowanie/REST/Wyszukiwanie REST.md create mode 100644 content/Wiedza/Programowanie/REST/_REST.md create mode 100644 content/Wiedza/Programowanie/Web3/Źródła.md create mode 100644 content/Wiedza/Programowanie/git/Branche w git.md create mode 100644 content/Wiedza/Programowanie/git/Cofanie zmian w git.md create mode 100644 content/Wiedza/Programowanie/git/Git Hooks.md create mode 100644 content/Wiedza/Programowanie/git/Komentarze w git.md create mode 100644 content/Wiedza/Programowanie/git/Polecenie stash w git.md create mode 100644 content/Wiedza/Programowanie/git/Przeglądanie historii w git.md create mode 100644 content/Wiedza/Programowanie/git/Przestrzeń robocza i stage w git.md create mode 100644 content/Wiedza/Programowanie/git/Przywracanie zmian w git.md create mode 100644 content/Wiedza/Programowanie/git/Rebase w git.md create mode 100644 content/Wiedza/Programowanie/git/Rozwiązywanie konfliktów w git.md create mode 100644 content/Wiedza/Programowanie/git/Tagi w git.md create mode 100644 content/Wiedza/Programowanie/git/Zapisywanie zmian w git.md create mode 100644 content/Wiedza/Programowanie/git/Zdalne repozytorium w git.md create mode 100644 content/Wiedza/Programowanie/git/_git.md create mode 100644 content/Wiedza/Programowanie/git/git.md create mode 100644 content/Wiedza/Projektowanie/Design System.md create mode 100644 content/Wiedza/Projektowanie/UI.md create mode 100644 content/Wiedza/Projektowanie/UX.md create mode 100644 content/Wiedza/Przemyślenia/Dyscyplina.md create mode 100644 content/Wiedza/Przemyślenia/Emocje.md create mode 100644 content/Wiedza/Przemyślenia/Intuicja.md create mode 100644 content/Wiedza/Przemyślenia/Negocjacje.md create mode 100644 content/Wiedza/Przemyślenia/Niemyślenie.md create mode 100644 content/Wiedza/Przemyślenia/Nuda.md create mode 100644 content/Wiedza/Przemyślenia/Oczekiwania.md create mode 100644 content/Wiedza/Przemyślenia/Odpuszczanie.md create mode 100644 content/Wiedza/Przemyślenia/Odwrócenie.md create mode 100644 content/Wiedza/Przemyślenia/Podejmowanie decyzji.md create mode 100644 content/Wiedza/Przemyślenia/Przemyślenia.md create mode 100644 content/Wiedza/Przemyślenia/Rozczarowanie.md create mode 100644 content/Wiedza/Przemyślenia/Rzeczywistość.md create mode 100644 content/Wiedza/Słownik/Balans.md create mode 100644 content/Wiedza/Słownik/Cel.md create mode 100644 content/Wiedza/Słownik/Indie Hackers.md create mode 100644 content/Wiedza/Słownik/Kierunek.md create mode 100644 content/Wiedza/Słownik/Otoczenie.md create mode 100644 content/Wiedza/Słownik/Perspektywa.md create mode 100644 content/Wiedza/Słownik/Priorytet.md create mode 100644 content/Wiedza/Słownik/Proces.md create mode 100644 content/Wiedza/Słownik/Słownik.md delete mode 100644 content/notes/CJK + Latex Support (测试).md delete mode 100644 content/notes/config.md delete mode 100644 content/notes/custom Domain.md delete mode 100644 content/notes/editing.md delete mode 100644 content/notes/hosting.md delete mode 100644 content/notes/ignore notes.md delete mode 100644 content/notes/images/github-actions.png delete mode 100644 content/notes/images/github-pages.png delete mode 100644 content/notes/images/google-domains.png delete mode 100644 content/notes/images/obsidian-settings.png delete mode 100644 content/notes/obsidian.md delete mode 100644 content/notes/philosophy.md delete mode 100644 content/notes/preview changes.md delete mode 100644 content/notes/setup.md delete mode 100644 content/notes/showcase.md delete mode 100644 content/notes/troubleshooting.md delete mode 100644 content/private/private-note.md create mode 100644 content/publish.css delete mode 100644 content/templates/post.md create mode 100644 pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/list create mode 100644 pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.info create mode 100644 pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.lock create mode 100644 pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.mod create mode 100644 pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.zip create mode 100644 pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.ziphash create mode 100644 pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/list create mode 100644 pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.info create mode 100644 pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.lock create mode 100644 pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.mod create mode 100644 pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.zip create mode 100644 pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.ziphash create mode 100644 pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/list create mode 100644 pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.info create mode 100644 pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.lock create mode 100644 pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.mod create mode 100644 pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.zip create mode 100644 pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.ziphash create mode 100644 pkg/mod/cache/download/github.com/andybalholm/cascadia/@v/list create mode 100644 pkg/mod/cache/download/github.com/andybalholm/cascadia/@v/v1.3.1.info create mode 100644 pkg/mod/cache/download/github.com/andybalholm/cascadia/@v/v1.3.1.lock create mode 100644 pkg/mod/cache/download/github.com/andybalholm/cascadia/@v/v1.3.1.mod create mode 100644 pkg/mod/cache/download/github.com/andybalholm/cascadia/@v/v1.3.1.zip create mode 100644 pkg/mod/cache/download/github.com/andybalholm/cascadia/@v/v1.3.1.ziphash create mode 100644 pkg/mod/cache/download/github.com/davecgh/go-spew/@v/list create mode 100644 pkg/mod/cache/download/github.com/davecgh/go-spew/@v/v1.1.0.mod create mode 100644 pkg/mod/cache/download/github.com/gernest/front/@v/list create mode 100644 pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.info create mode 100644 pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.lock create mode 100644 pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.mod create mode 100644 pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.zip create mode 100644 pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.ziphash create mode 100644 pkg/mod/cache/download/github.com/jackyzha0/hugo-obsidian/@v/list create mode 100644 pkg/mod/cache/download/github.com/jackyzha0/hugo-obsidian/@v/v0.0.0-20220403030921-3ce308411ee3.info create mode 100644 pkg/mod/cache/download/github.com/jackyzha0/hugo-obsidian/@v/v0.0.0-20220403030921-3ce308411ee3.lock create mode 100644 pkg/mod/cache/download/github.com/jackyzha0/hugo-obsidian/@v/v0.0.0-20220403030921-3ce308411ee3.mod create mode 100644 pkg/mod/cache/download/github.com/jackyzha0/hugo-obsidian/@v/v0.0.0-20220403030921-3ce308411ee3.zip create mode 100644 pkg/mod/cache/download/github.com/jackyzha0/hugo-obsidian/@v/v0.0.0-20220403030921-3ce308411ee3.ziphash create mode 100644 pkg/mod/cache/download/github.com/pmezard/go-difflib/@v/list create mode 100644 pkg/mod/cache/download/github.com/pmezard/go-difflib/@v/v1.0.0.mod create mode 100644 pkg/mod/cache/download/github.com/stretchr/objx/@v/list create mode 100644 pkg/mod/cache/download/github.com/stretchr/objx/@v/v0.1.0.mod create mode 100644 pkg/mod/cache/download/github.com/stretchr/testify/@v/list create mode 100644 pkg/mod/cache/download/github.com/stretchr/testify/@v/v1.7.0.mod create mode 100644 pkg/mod/cache/download/github.com/yuin/goldmark/@v/list create mode 100644 pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.1.32.mod create mode 100644 pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.info create mode 100644 pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.lock create mode 100644 pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.mod create mode 100644 pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.zip create mode 100644 pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.ziphash create mode 100644 pkg/mod/cache/download/golang.org/x/net/@v/list create mode 100644 pkg/mod/cache/download/golang.org/x/net/@v/v0.0.0-20210916014120-12bc252f5db8.info create mode 100644 pkg/mod/cache/download/golang.org/x/net/@v/v0.0.0-20210916014120-12bc252f5db8.lock create mode 100644 pkg/mod/cache/download/golang.org/x/net/@v/v0.0.0-20210916014120-12bc252f5db8.mod create mode 100644 pkg/mod/cache/download/golang.org/x/net/@v/v0.0.0-20210916014120-12bc252f5db8.zip create mode 100644 pkg/mod/cache/download/golang.org/x/net/@v/v0.0.0-20210916014120-12bc252f5db8.ziphash create mode 100644 pkg/mod/cache/download/golang.org/x/sys/@v/list create mode 100644 pkg/mod/cache/download/golang.org/x/sys/@v/v0.0.0-20201119102817-f84b799fce68.mod create mode 100644 pkg/mod/cache/download/golang.org/x/sys/@v/v0.0.0-20210423082822-04245dca01da.mod create mode 100644 pkg/mod/cache/download/golang.org/x/term/@v/list create mode 100644 pkg/mod/cache/download/golang.org/x/term/@v/v0.0.0-20201126162022-7de9c90e9dd1.mod create mode 100644 pkg/mod/cache/download/golang.org/x/text/@v/list create mode 100644 pkg/mod/cache/download/golang.org/x/text/@v/v0.3.6.mod create mode 100644 pkg/mod/cache/download/golang.org/x/tools/@v/list create mode 100644 pkg/mod/cache/download/golang.org/x/tools/@v/v0.0.0-20180917221912-90fa682c2a6e.mod create mode 100644 pkg/mod/cache/download/gopkg.in/check.v1/@v/list create mode 100644 pkg/mod/cache/download/gopkg.in/check.v1/@v/v0.0.0-20161208181325-20d25e280405.mod create mode 100644 pkg/mod/cache/download/gopkg.in/yaml.v2/@v/list create mode 100644 pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.info create mode 100644 pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.lock create mode 100644 pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.mod create mode 100644 pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.zip create mode 100644 pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.ziphash create mode 100644 pkg/mod/cache/download/gopkg.in/yaml.v3/@v/list create mode 100644 pkg/mod/cache/download/gopkg.in/yaml.v3/@v/v3.0.0-20200313102051-9f266ea9e77c.mod create mode 100644 pkg/mod/cache/download/gopkg.in/yaml.v3/@v/v3.0.0-20210107192922-496545a6307b.mod create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/!burnt!sushi/toml@v0.4.1 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/!puerkito!bio/goquery@v1.8.0 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/abhinav/goldmark-wikilink@v0.3.0 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/andybalholm/cascadia@v1.3.1 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/davecgh/go-spew@v1.1.0 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/pmezard/go-difflib@v1.0.0 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/stretchr/objx@v0.1.0 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/stretchr/testify@v1.7.0 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/yuin/goldmark@v1.1.32 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/yuin/goldmark@v1.4.4 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/sys@v0.0.0-20201119102817-f84b799fce68 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/sys@v0.0.0-20210423082822-04245dca01da create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/text@v0.3.6 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v2@v2.4.0 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/000 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/001 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/002 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/004 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x003/390 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x004/982 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x007/249 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x007/453 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x007/534 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x009/466 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x009/732 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x012/163 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x013/543 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x013/920 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x015/500 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x024/946 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x027/107 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x027/434 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x029/017 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x030/831 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x038/918 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/494 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/496 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/497 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/498 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/498.p/98 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/500.p/238 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/000 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/013 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/019 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/028 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/029 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/036 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/038 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/047 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/052 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/054 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/060 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/097 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/105 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/107 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/113 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/120 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/152 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/158.p/50 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/158.p/52 create mode 100644 pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/2/000.p/158 create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/.github/workflows/test.yml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/.gitignore create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/COMPATIBLE create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/COPYING create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/README.md create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/_examples/example.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/_examples/example.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/_examples/hard.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/_examples/implicit.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/_examples/invalid-apples.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/_examples/invalid.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/_examples/readme1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/_examples/readme2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/cmd/toml-test-decoder/COPYING create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/cmd/toml-test-decoder/README.md create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/cmd/toml-test-decoder/main.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/cmd/toml-test-encoder/COPYING create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/cmd/toml-test-encoder/README.md create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/cmd/toml-test-encoder/main.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/cmd/tomlv/COPYING create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/cmd/tomlv/README.md create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/cmd/tomlv/main.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/decode.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/decode_go116.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/decode_go116_test.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/decode_meta.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/decode_test.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/deprecated.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/doc.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/encode.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/encode_test.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/example_test.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/fuzz_test.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/go.mod create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/go.sum create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/tag/add.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/tag/rm.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/.gitignore create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/.gogo-release create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/COPYING create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/README.md create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/gen-multi.py create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/json.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/runner.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/.gitattributes create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/array/missing-separator.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/array/no-close-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/array/no-close-table-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/array/no-close-table.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/array/no-close.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/array/tables-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/array/tables-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/array/text-after-array-entries.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/array/text-before-array-separator.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/array/text-in-array.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/bool/mixed-case.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/bool/wrong-case-false.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/bool/wrong-case-true.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/comment-del.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/comment-lf.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/comment-null.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/comment-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/control.multi create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/multi-del.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/multi-lf.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/multi-null.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/multi-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/rawmulti-del.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/rawmulti-lf.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/rawmulti-null.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/rawmulti-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/rawstring-del.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/rawstring-lf.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/rawstring-null.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/rawstring-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/string-bs.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/string-del.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/string-lf.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/string-null.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/control/string-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/datetime/impossible-date.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/datetime/no-leads-with-milli.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/datetime/no-leads.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/datetime/no-secs.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/datetime/no-t.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/datetime/trailing-t.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/encoding/bad-utf8-at-end.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/encoding/bad-utf8-in-comment.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/encoding/bad-utf8-in-string.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/encoding/bom-not-at-start-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/encoding/bom-not-at-start-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/encoding/utf16-bom.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/encoding/utf16.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/double-point-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/double-point-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/exp-double-e-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/exp-double-e-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/exp-double-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/exp-leading-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/exp-point-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/exp-point-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/exp-trailing-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/float.multi create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/inf-incomplete-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/inf-incomplete-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/inf-incomplete-3.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/inf_underscore.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/leading-point-neg.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/leading-point-plus.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/leading-point.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/leading-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/leading-zero-neg.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/leading-zero-plus.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/leading-zero.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/nan-incomplete-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/nan-incomplete-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/nan-incomplete-3.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/nan_underscore.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/trailing-point-min.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/trailing-point-plus.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/trailing-point.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/trailing-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/us-after-point.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/float/us-before-point.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/inline-table/double-comma.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/inline-table/empty.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/inline-table/linebreak-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/inline-table/linebreak-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/inline-table/linebreak-3.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/inline-table/linebreak-4.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/inline-table/no-comma.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/inline-table/trailing-comma.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/capital-bin.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/capital-hex.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/capital-oct.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/double-sign-nex.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/double-sign-plus.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/double-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/integer.multi create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/invalid-bin.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/invalid-hex.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/invalid-oct.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/leading-us-bin.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/leading-us-hex.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/leading-us-oct.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/leading-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/leading-zero-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/leading-zero-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/leading-zero-sign-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/leading-zero-sign-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/negative-bin.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/negative-hex.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/negative-oct.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/positive-bin.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/positive-hex.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/positive-oct.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/text-after-integer.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/trailing-us-bin.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/trailing-us-hex.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/trailing-us-oct.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/trailing-us.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/us-after-bin.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/us-after-hex.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/integer/us-after-oct.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/after-array.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/after-table.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/after-value.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/bare-invalid-character.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/dotted-redefine-table.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/duplicate-keys.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/duplicate.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/empty.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/escape.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/hash.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/multiline.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/newline.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/no-eol.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/open-bracket.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/partial-quoted.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/single-open-bracket.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/space.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/special-character.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/start-bracket.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/two-equals.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/two-equals2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/two-equals3.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/without-value-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/key/without-value-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/bad-byte-escape.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/bad-codepoint.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/bad-concat.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/bad-escape.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/bad-multiline.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/bad-slash-escape.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/bad-uni-esc.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/basic-byte-escapes.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/basic-multiline-quotes.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/basic-multiline-unknown-escape.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/basic-out-of-range-unicode-escape-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/basic-out-of-range-unicode-escape-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/basic-unknown-escape.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/literal-multiline-quotes-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/literal-multiline-quotes-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/missing-quotes.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/multiline-escape-space.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/multiline-no-close-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/multiline-no-close.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/multiline-quotes-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/multiline-quotes-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/no-close.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/text-after-string.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/string/wrong-close.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/array-empty.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/array-implicit.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/array-missing-bracket.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/duplicate-key-table.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/duplicate-table-array.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/duplicate-table-array2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/duplicate.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/empty-implicit-table.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/empty.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/equals-sign.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/llbrace.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/nested-brackets-close.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/nested-brackets-open.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/quoted-no-close.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/redefine.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/rrbrace.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/text-after-table.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/whitespace.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/invalid/table/with-pound.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/array.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/array.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/bool.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/bool.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/empty.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/empty.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/hetergeneous.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/hetergeneous.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/mixed-int-array.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/mixed-int-array.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/mixed-int-float.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/mixed-int-float.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/mixed-int-string.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/mixed-int-string.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/mixed-string-table.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/mixed-string-table.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/nested-double.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/nested-double.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/nested-inline-table.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/nested-inline-table.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/nested.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/nested.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/nospaces.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/nospaces.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/string-quote-comma-2.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/string-quote-comma-2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/string-quote-comma.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/string-quote-comma.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/string-with-comma.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/string-with-comma.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/strings.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/strings.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/table-array-string-backslash.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/array/table-array-string-backslash.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/bool/bool.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/bool/bool.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/comment/at-eof.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/comment/at-eof.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/comment/at-eof2.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/comment/at-eof2.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/comment/everywhere.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/comment/everywhere.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/comment/tricky.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/comment/tricky.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/datetime.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/datetime.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/local-date.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/local-date.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/local-time.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/local-time.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/local.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/local.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/milliseconds.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/milliseconds.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/timezone.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/datetime/timezone.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/empty-file.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/empty-file.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/example.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/example.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/exponent.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/exponent.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/float.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/float.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/inf-and-nan.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/inf-and-nan.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/long.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/long.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/underscore.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/underscore.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/zero.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/float/zero.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/implicit-and-explicit-after.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/implicit-and-explicit-after.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/implicit-and-explicit-before.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/implicit-and-explicit-before.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/implicit-groups.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/implicit-groups.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/array.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/array.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/bool.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/bool.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/empty.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/empty.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/end-in-bool.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/end-in-bool.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/inline-table.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/inline-table.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/key-dotted.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/key-dotted.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/multiline.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/multiline.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/nest.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/inline-table/nest.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/integer/integer.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/integer/integer.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/integer/literals.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/integer/literals.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/integer/long.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/integer/long.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/integer/underscore.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/integer/underscore.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/integer/zero.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/integer/zero.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/alphanum.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/alphanum.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/case-sensitive.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/case-sensitive.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/dotted.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/dotted.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/empty.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/empty.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/equals-nospace.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/equals-nospace.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/escapes.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/escapes.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/numeric-dotted.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/numeric-dotted.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/numeric.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/numeric.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/quoted-dots.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/quoted-dots.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/space.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/space.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/special-chars.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/special-chars.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/special-word.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/key/special-word.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/newline-crlf.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/newline-crlf.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/newline-lf.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/newline-lf.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/spec-example-1-compact.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/spec-example-1-compact.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/spec-example-1.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/spec-example-1.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/double-quote-escape.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/double-quote-escape.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/empty.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/empty.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/escape-tricky.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/escape-tricky.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/escaped-escape.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/escaped-escape.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/escapes.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/escapes.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/multiline-json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/multiline-quotes.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/multiline-quotes.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/multiline-toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/nl.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/nl.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/raw-multiline.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/raw-multiline.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/raw.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/raw.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/simple.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/simple.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/unicode-escape.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/unicode-escape.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/unicode-literal.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/unicode-literal.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/with-pound.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/string/with-pound.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/array-implicit.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/array-implicit.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/array-many.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/array-many.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/array-nest.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/array-nest.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/array-one.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/array-one.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/array-table-array.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/array-table-array.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/empty.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/empty.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/keyword.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/keyword.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/names.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/names.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/no-eol.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/no-eol.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/sub-empty.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/sub-empty.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/whitespace.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/whitespace.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/with-literal-string.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/with-literal-string.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/with-pound.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/with-pound.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/with-single-quotes.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/with-single-quotes.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/without-super.json create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/tests/valid/table/without-super.toml create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/toml-test/toml.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/internal/tz.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/lex.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/move_test.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/parse.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/toml_test.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/type_check.go create mode 100644 pkg/mod/github.com/!burnt!sushi/toml@v0.4.1/type_fields.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/.gitattributes create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/.github/FUNDING.yml create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/.github/dependabot.yml create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/.github/workflows/test.yml create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/.gitignore create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/LICENSE create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/README.md create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/array.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/array_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.0 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.1 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.1-v0.2.1-go1.1rc1.svg create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.0 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.0-v0.2.1-go1.1rc1.svg create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.1-go1.1rc1 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.0 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2-take2 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2rc1 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.0-go1.7 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1a-go1.7 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1b-go1.7 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1c-go1.7 create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_array_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_example_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_expand_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_filter_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_iteration_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_property_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_query_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_traversal_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/doc.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/doc/tips.md create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/example_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/expand.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/expand_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/filter.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/filter_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/go.mod create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/go.sum create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/iteration.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/iteration_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/manipulation.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/manipulation_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/misc/git/pre-commit create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/property.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/property_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/query.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/query_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/gotesting.html create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/gowiki.html create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/metalreview.html create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page.html create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page2.html create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page3.html create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/traversal.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/traversal_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/type.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/type_test.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/utilities.go create mode 100644 pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/utilities_test.go create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/.github/workflows/go.yml create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/.gitignore create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/CHANGELOG.md create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/LICENSE create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/Makefile create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/README.md create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/ast.go create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/ast_test.go create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/extender.go create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/go.mod create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/go.sum create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/integration_test.go create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/parser.go create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/parser_test.go create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/renderer.go create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/renderer_test.go create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/resolver.go create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/resolver_test.go create mode 100644 pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/testdata/tests.txt create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/.travis.yml create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/LICENSE create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/README.md create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/benchmark_test.go create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test0 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test1 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test10 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test11 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test12 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test13 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test14 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test15 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test16 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test17 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test18 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test19 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test2 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test20 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test21 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test22 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test23 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test24 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test25 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test26 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test27 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test28 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test29 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test3 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test30 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test31 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test32 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test33 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test34 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test35 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test36 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test37 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test38 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test39 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test4 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test40 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test41 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test42 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test43 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test44 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test45 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test46 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test47 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test48 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test49 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test5 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test50 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test51 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test52 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test53 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test54 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test55 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test56 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test57 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test58 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test59 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test6 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test60 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test61 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test7 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test8 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test9 create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/fuzz.go create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/go.mod create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/go.sum create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/parser.go create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/parser_test.go create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/pseudo_classes.go create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/selector.go create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/selector_test.go create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/serialize.go create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/serialize_test.go create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/specificity.go create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/specificity_test.go create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/content.xhtml create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/invalid_selectors.json create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/shakespeare.html create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/valid_selectors.json create mode 100644 pkg/mod/github.com/andybalholm/cascadia@v1.3.1/w3_test.go create mode 100644 pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/.travis.yml create mode 100644 pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/LICENCE create mode 100644 pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/README.md create mode 100644 pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/front.go create mode 100644 pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/front_test.go create mode 100644 pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/front/body.md create mode 100644 pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/front/empty.md create mode 100644 pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/front/json.md create mode 100644 pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/sample.yml create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/.gitignore create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/Dockerfile create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/LICENSE.txt create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/README.md create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/action.yml create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/go.mod create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/go.sum create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/main.go create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/parse.go create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/util.go create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/walk.go create mode 100644 pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/write.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/ISSUE_TEMPLATE.md create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/stale.yml create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/workflows/test.yaml create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/.gitignore create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/LICENSE create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/Makefile create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/README.md create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/.gitignore create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/Makefile create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/_data.md create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/cmark_benchmark.c create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/goldmark_benchmark.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/go/_data.md create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/go/benchmark_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/extra.txt create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/options.txt create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/spec.json create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/_tools/gen-unicode-case-folding-map.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/ast.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/ast_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/block.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/inline.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/commonmark_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/definition_list.txt create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/footnote.txt create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/linkify.txt create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/strikethrough.txt create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/table.txt create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/tasklist.txt create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/typographer.txt create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/definition_list.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/footnote.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/strikethrough.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/table.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/tasklist.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/definition_list.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/definition_list_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/footnote.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/footnote_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/gfm.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/linkify.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/linkify_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/strikethrough.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/strikethrough_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/table.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/table_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/tasklist.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/tasklist_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/typographer.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/typographer_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/extra_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/fuzz/fuzz.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/fuzz/fuzz_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/go.mod create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/go.sum create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/markdown.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/options_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/attribute.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/atx_heading.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/auto_link.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/blockquote.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/code_block.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/code_span.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/delimiter.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/emphasis.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/fcode_block.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/html_block.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/link.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/link_ref.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/list.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/list_item.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/paragraph.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/parser.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/raw_html.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/setext_headings.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/thematic_break.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/renderer/html/html.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/renderer/renderer.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/testutil/testutil.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/testutil/testutil_test.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/text/reader.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/text/segment.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/util/html5entities.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/util/unicode_case_folding.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util_safe.go create mode 100644 pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util_unsafe.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/.gitattributes create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/.gitignore create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/AUTHORS create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/CONTRIBUTING.md create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/CONTRIBUTORS create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/LICENSE create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/PATENTS create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/README.md create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/asm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/constants.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/doc.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/instructions.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/instructions_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/setter.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/testdata/all_instructions.bpf create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/testdata/all_instructions.txt create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_aluop_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_bpf_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_extension_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_instructions.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_jump_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_load_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_ret_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_scratch_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/codereview.cfg create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/context.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/context_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/ctxhttp/ctxhttp.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/ctxhttp/ctxhttp_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/go17.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/go19.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/pre_go17.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/pre_go19.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/withtimeout_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dict/dict.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/example_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/message.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/message_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/go.mod create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/go.sum create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/atom.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/atom_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/gen.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/table.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/table_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/charset.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/charset_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-charset.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-UTF-8-BOM.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-meta-charset.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-meta-content.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/No-encoding-declaration.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/README create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-16BE-BOM.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-16LE-BOM.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-8-BOM-vs-meta-content.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/meta-charset-attribute.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/meta-content-attribute.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/const.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/doc.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/doctype.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/entity.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/entity_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/escape.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/escape_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/example_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/foreign.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/node.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/node_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/parse.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/parse_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/render.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/render_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/go/issue_30600_parse_panics_in_cell_mode.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/go/issue_30961_error_nested_unknown_tag_types.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/go/raw_tags_to_be_ignored.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/go/select.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/go/template.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/go1.html create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/README create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/adoption01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/adoption02.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/blocks.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/comments01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/doctype01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/domjs-unsafe.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/entities01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/entities02.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/foreign-fragment.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/html5test-com.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/inbody01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/isindex.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/main-element.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/math.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/menuitem-element.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/namespace-sensitivity.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/noscript01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/pending-spec-changes.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/plain-text-unsafe.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/ruby.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/scriptdata01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/scripted/adoption01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/scripted/ark.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/scripted/webkit01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/svg.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tables01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/template.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests1.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests10.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests11.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests12.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests14.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests15.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests16.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests17.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests18.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests19.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests2.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests20.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests21.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests22.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests23.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests24.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests25.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests26.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests3.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests4.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests5.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests6.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests7.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests8.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests9.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests_innerHTML_1.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tricky01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/webkit01.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/webkit02.dat create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/token.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/token_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http/httpguts/guts.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http/httpguts/httplex.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http/httpguts/httplex_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http/httpproxy/export_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http/httpproxy/go19_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http/httpproxy/proxy.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http/httpproxy/proxy_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/.gitignore create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/Dockerfile create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/Makefile create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/ascii.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/ascii_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/ciphers.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/ciphers_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/client_conn_pool.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/databuffer.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/databuffer_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/errors.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/errors_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/flow.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/flow_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/frame.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/frame_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/go111.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/go115.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/gotrack.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/gotrack_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/h2c/h2c.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/h2c/h2c_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/h2i/README.md create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/h2i/h2i.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/headermap.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/hpack/encode.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/hpack/encode_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/hpack/hpack.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/hpack/hpack_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/hpack/huffman.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/hpack/tables.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/hpack/tables_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/http2.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/http2_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/not_go111.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/not_go115.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/pipe.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/pipe_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/server.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/server_push_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/server_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/testdata/draft-ietf-httpbis-http2.xml create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/transport.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/transport_go117_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/transport_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/write.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/writesched.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/writesched_priority.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/writesched_priority_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/writesched_random.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/writesched_random_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/writesched_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/http2/z_spec_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/diag_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/dstunreach.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/echo.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/endpoint.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/example_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/extension.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/extension_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/helper_posix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/interface.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/ipv4.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/ipv4_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/ipv6.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/listen_posix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/listen_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/message.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/message_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/messagebody.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/mpls.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/multipart.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/multipart_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/packettoobig.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/paramprob.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/sys_freebsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/icmp/timeexceeded.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/example_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/idna10.0.0.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/idna9.0.0.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/idna_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/punycode.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/punycode_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/tables10.0.0.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/tables11.0.0.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/tables12.0.0.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/tables13.0.0.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/tables9.0.0.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/trie.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/idna/trieval.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/iana/const.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/iana/gen.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/cmsghdr.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/cmsghdr_bsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/cmsghdr_linux_32bit.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/cmsghdr_linux_64bit.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/cmsghdr_solaris_64bit.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/cmsghdr_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/cmsghdr_unix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/cmsghdr_zos_s390x.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/complete_dontwait.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/complete_nodontwait.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/defs_aix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/defs_darwin.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/defs_dragonfly.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/defs_freebsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/defs_linux.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/defs_netbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/defs_openbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/defs_solaris.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/empty.s create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/error_unix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/error_windows.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/iovec_32bit.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/iovec_64bit.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/iovec_solaris_64bit.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/iovec_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/mmsghdr_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/mmsghdr_unix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/msghdr_bsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/msghdr_bsdvar.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/msghdr_linux.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/msghdr_linux_32bit.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/msghdr_linux_64bit.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/msghdr_openbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/msghdr_solaris_64bit.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/msghdr_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/msghdr_zos_s390x.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/norace.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/race.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/rawconn.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/rawconn_mmsg.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/rawconn_msg.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/rawconn_nommsg.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/rawconn_nomsg.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/socket.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/socket_dontwait_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/socket_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_bsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_const_unix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linkname.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_386.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_386.s create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_arm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_arm64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_mips.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_mips64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_mips64le.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_mipsle.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_ppc.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_ppc64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_ppc64le.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_riscv64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_s390x.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_linux_s390x.s create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_netbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_posix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_solaris.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_solaris_amd64.s create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_unix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_windows.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_zos_s390x.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/sys_zos_s390x.s create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_aix_ppc64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_darwin_386.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_darwin_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_darwin_arm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_darwin_arm64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_dragonfly_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_freebsd_386.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_freebsd_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_freebsd_arm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_freebsd_arm64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_386.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_arm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_arm64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_mips.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_mips64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_mips64le.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_mipsle.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_ppc.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_ppc64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_ppc64le.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_riscv64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_linux_s390x.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_netbsd_386.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_netbsd_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_netbsd_arm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_netbsd_arm64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_openbsd_386.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_openbsd_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_openbsd_arm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_openbsd_arm64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_openbsd_mips64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_solaris_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socket/zsys_zos_s390x.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socks/client.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socks/dial_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/socks/socks.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/sockstest/server.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/sockstest/server_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/timeseries/timeseries.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/internal/timeseries/timeseries_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/batch.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/bpf_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/control.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/control_bsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/control_pktinfo.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/control_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/control_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/control_unix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/control_windows.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/control_zos.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/defs_aix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/defs_darwin.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/defs_dragonfly.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/defs_freebsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/defs_linux.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/defs_netbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/defs_openbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/defs_solaris.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/dgramopt.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/doc.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/endpoint.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/example_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/gen.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/genericopt.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/header.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/header_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/helper.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/helper_posix_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/helper_stub_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/iana.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/icmp.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/icmp_linux.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/icmp_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/icmp_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/multicast_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/multicastlistener_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/multicastsockopt_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/packet.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/payload.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/payload_cmsg.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/payload_nocmsg.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/readwrite_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sockopt.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sockopt_posix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sockopt_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_aix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_asmreq.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_asmreq_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_asmreqn.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_asmreqn_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_bpf.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_bpf_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_bsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_darwin.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_dragonfly.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_freebsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_linux.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_solaris.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_ssmreq.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_ssmreq_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_windows.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/sys_zos.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/unicast_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/unicastsockopt_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_aix_ppc64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_darwin.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_dragonfly.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_freebsd_386.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_freebsd_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_freebsd_arm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_freebsd_arm64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_386.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_arm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_arm64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_mips.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_mips64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_mips64le.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_mipsle.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_ppc.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_ppc64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_ppc64le.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_riscv64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_linux_s390x.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_netbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_openbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_solaris.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv4/zsys_zos_s390x.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/batch.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/bpf_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/control.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/control_rfc2292_unix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/control_rfc3542_unix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/control_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/control_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/control_unix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/control_windows.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/defs_aix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/defs_darwin.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/defs_dragonfly.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/defs_freebsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/defs_linux.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/defs_netbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/defs_openbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/defs_solaris.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/dgramopt.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/doc.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/endpoint.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/example_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/gen.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/genericopt.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/header.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/header_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/helper.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/helper_posix_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/helper_stub_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/helper_unix_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/helper_windows_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/iana.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/icmp.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/icmp_bsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/icmp_linux.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/icmp_solaris.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/icmp_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/icmp_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/icmp_windows.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/icmp_zos.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/mocktransponder_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/multicast_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/multicastlistener_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/multicastsockopt_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/payload.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/payload_cmsg.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/payload_nocmsg.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/readwrite_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sockopt.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sockopt_posix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sockopt_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sockopt_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_aix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_asmreq.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_asmreq_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_bpf.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_bpf_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_bsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_darwin.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_freebsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_linux.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_solaris.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_ssmreq.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_ssmreq_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_windows.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/sys_zos.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/unicast_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/unicastsockopt_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_aix_ppc64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_darwin.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_dragonfly.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_freebsd_386.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_freebsd_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_freebsd_arm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_freebsd_arm64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_386.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_arm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_arm64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_mips.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_mips64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_mips64le.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_mipsle.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_ppc.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_ppc64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_ppc64le.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_riscv64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_linux_s390x.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_netbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_openbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_solaris.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/ipv6/zsys_zos_s390x.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/lif/address.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/lif/address_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/lif/binary.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/lif/defs_solaris.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/lif/lif.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/lif/link.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/lif/link_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/lif/sys.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/lif/sys_solaris_amd64.s create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/lif/syscall.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/lif/zsys_solaris_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/nettest/conntest.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/nettest/conntest_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/nettest/nettest.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/nettest/nettest_stub.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/nettest/nettest_unix.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/nettest/nettest_windows.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/netutil/helper_stub_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/netutil/helper_unix_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/netutil/helper_windows_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/netutil/listen.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/netutil/listen_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/proxy/dial.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/proxy/dial_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/proxy/direct.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/proxy/per_host.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/proxy/per_host_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/proxy/proxy.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/proxy/proxy_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/proxy/socks5.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/publicsuffix/example_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/publicsuffix/gen.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/publicsuffix/list.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/publicsuffix/list_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/publicsuffix/table.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/publicsuffix/table_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/address.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/address_darwin_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/address_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/binary.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/defs_darwin.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/defs_dragonfly.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/defs_freebsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/defs_netbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/defs_openbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/empty.s create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/interface.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/interface_announce.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/interface_classic.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/interface_freebsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/interface_multicast.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/interface_openbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/message.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/message_darwin_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/message_freebsd_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/message_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/route.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/route_classic.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/route_openbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/route_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/sys.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/sys_darwin.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/sys_dragonfly.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/sys_freebsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/sys_netbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/sys_openbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/syscall.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/syscall_go1_12_darwin.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/zsys_darwin.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/zsys_dragonfly.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/zsys_freebsd_386.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/zsys_freebsd_amd64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/zsys_freebsd_arm.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/zsys_freebsd_arm64.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/zsys_netbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/route/zsys_openbsd.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/trace/events.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/trace/histogram.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/trace/histogram_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/trace/trace.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/trace/trace_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/file.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/file_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/if.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/if_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/internal/xml/README create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/internal/xml/atom_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/internal/xml/example_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/internal/xml/marshal.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/internal/xml/marshal_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/internal/xml/read.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/internal/xml/read_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/internal/xml/typeinfo.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/internal/xml/xml.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/internal/xml/xml_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/litmus_test_server.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/lock.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/lock_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/prop.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/prop_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/webdav.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/webdav_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/xml.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/webdav/xml_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/websocket/client.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/websocket/dial.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/websocket/dial_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/websocket/exampledial_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/websocket/examplehandler_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/websocket/hybi.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/websocket/hybi_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/websocket/server.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/websocket/websocket.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/websocket/websocket_test.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/xsrftoken/xsrf.go create mode 100644 pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/xsrftoken/xsrf_test.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/.travis.yml create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/LICENSE create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/LICENSE.libyaml create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/NOTICE create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/README.md create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/apic.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/decode.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/decode_test.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/emitterc.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/encode.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/encode_test.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/example_embedded_test.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/go.mod create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/limit_test.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/parserc.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/readerc.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/resolve.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/scannerc.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/sorter.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/suite_test.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/writerc.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/yaml.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/yamlh.go create mode 100644 pkg/mod/gopkg.in/yaml.v2@v2.4.0/yamlprivateh.go create mode 100644 pkg/sumdb/sum.golang.org/latest diff --git a/assets/styles/base.scss b/assets/styles/base.scss index 1be022933..f2430c580 100644 --- a/assets/styles/base.scss +++ b/assets/styles/base.scss @@ -6,6 +6,9 @@ --lt-colours-gray: var(--outlinegray) !important; } + +img[alt="overment"] { width: 200px; display: block; margin-inline: auto; } + h1, h2, h3, h4, h5, h6, ol, ul, thead { font-family: Inter; color: var(--dark); @@ -15,7 +18,6 @@ h1, h2, h3, h4, h5, h6, ol, ul, thead { } p, ul, text { - font-family: 'Source Sans Pro', sans-serif; color: var(--gray); fill: var(--gray); font-weight: revert; @@ -154,7 +156,7 @@ td, th { article { & > .meta { - margin: -1.5em 0 1em 0; + margin: 1.5em 0 1em 0; opacity: 0.7; } @@ -569,3 +571,5 @@ header { padding: 0 1em; } } + + diff --git a/assets/styles/custom.scss b/assets/styles/custom.scss index 612b80a61..da1afd96a 100644 --- a/assets/styles/custom.scss +++ b/assets/styles/custom.scss @@ -21,4 +21,135 @@ --gray: #d4d4d4 !important; --lightgray: #292633 !important; --outlinegray: #343434 !important; +} + +:root { + --text-accent: rgb(238, 27, 231); + --background-primary-alt: #000; +} +.theme-dark { + --text-accent: rgb(238, 27, 231); + --background-primary-alt: #000; +} + +html { + font-size: 24px; + font-family: "Poppins", sans-serif; +} + +body, body.theme-dark { + color: #fff; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + font-size: .75rem; + background: #111; + box-sizing: border-box; + font-family: "Poppins", sans-serif; + font-weight: 500; + line-height: 1em; + font-smoothing: antialiased; + text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +#page-title a { display: flex; align-items: center; color: #fff; font-size: .75rem; } +#page-title img { margin-right: 15px; } + +.mainTOC { background: #222; } + +article a { + color: rgb(238, 27, 231); background: none; +} +article a.internal-link { background: none; } + +body.theme-dark h1, +body.theme-dark h2, +body.theme-dark h3, +body.theme-dark h4, +body.theme-dark h5, +body.theme-dark h6, +body.theme-dark .page-header { + font-family: 'Playfair Display', serif; + margin-top: 45px; + margin-bottom: 25px; +} + +.page-header { + font-size: 2.5rem; +} + +.markdown-preview-view h1 { + font-size: 32px; + font-family: 'Playfair Display', sans-serif; + font-weight: 500; + line-height: 1.5; +} + +.markdown-preview-view { + font-size: 16px; + line-height: 26px; + font-family: 'Poppins', sans-serif; +} + +.markdown-preview-view .internal-link.is-unresolved { + opacity: .75; +} +.published-container.is-readable-line-width .site-body { + justify-content: initial; +} + +.site-body-left-column-site-name { + padding-left: 60px; + position: relative; +} + +.site-body-left-column { + flex: 0 0 330px; +} + +.published-container.is-readable-line-width .site-body-center-column { + flex: 0 1 940px; +} + +.site-body-left-column-site-name:before { + content: ''; + display: block; + width: 30px; + height: 30px; + background: url(https://overment.com/images/logo-icon.svg); + background-size: cover; + position: absolute; + left: 20px; + top: 11px; +} + +.has-navigation .site-body-left-column { + background: #000; +} + +img[alt="overment"] { width: 200px; margin: 0 auto; display: block; } +.logo { width: 50px; margin: 0; } + + +@media (max-width: 1024px) { + .site-body-left-column-site-name:before { + top: 0; + } + body.theme-dark { + font-size: 1.2rem; + } + + h1, h2, h3, h4, h5, h6, { + margin-top: 25px; + } + + .markdown-preview-view { + font-size: 1.3rem; + line-height: 1.7rem; + } } \ No newline at end of file diff --git a/bin/hugo-obsidian b/bin/hugo-obsidian new file mode 100755 index 0000000000000000000000000000000000000000..cf1432c61fad7e762bb504e80ba512b25db30c5f GIT binary patch literal 7067314 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𝔜QS-Zt^JX6?&$#DszE-&O4aXYzR@)2i7;fTtin68rqI%x``K#^wi@)!~Rd~*I z@%%MB_uH>zd6CWeG2aexa4GKa;wi!Sj0>aZw^e%j!#39X{PElp_)@}mQkM4XxZxB$ zoQf#h){VTti8Ez0<2);%d%w{>AYxD1ct7rA8T%7_ALxZqfrQRCg7g0r z*C&WyH1_GI({6Z~e#ZPQjqO&^6(gXnpFZ9=G_LPa4_V!6DnDW0x79yM7JquHW5XVz zUb6kqNU~p7eTXc+?81dJuAA$wS5lUV7u&FvhDNW zNp6lXr>D&h4@VC-JwK&6(B;rvF@xUYFddyzZf!ccWZ&z+^`Jn<4I7AYBCi#9eS;`M zyyLek@P&6~j&|A4bKKnT`u$>!8cE&_#B^05=Die%oO7uQ+H1tUWOrcs6dKFXd|mw~-j5ley2Y*ejxO zYrGylW8m}P4?4HM18t+$5Alsf*8ML|;=wO&adf-q^T6HomJblk_5Nb{fJXXBmLHFn z!Cq+T$d6-JgGsb}otS$a&%DU~i)YfG62?#78=b!(Hij{ZrmyvPX!`y$?0#R(A??Lp@{mE3S0P7jd0M`MoHRn16Zfk=b*RKV41MZ3y^Z3E{?F}xU9)M4Zd+hfD z8Ru^XxcJk5t}*+xPvB{uyA>ZLv$8#+O&)j^QeVEsFB{_V49bq+OZ6OMfLIrMw%oI4 zN9bG6wVxyxGtTGlq}#ghm-BH+K5rvd1@$w%?){2kxFd_HqybSDzGL z>O0!W_-wKBk?!?hKR&slE%TE&`3T{23HV(1IyjMMP%gy7X`tS{&3jh9S%Um@y*I^K z2LivX=2sWR^3e5<^n%~7Z+2x4{Cb)em%el`1$Gd;O>?pMQGkFN4_ zFSeHY|0hmAP-sH$>|))8IDL6u`Bm0WlyJYw1mD@E zJwJRKVj^~n`3vuoVg3~|JL>Jb4GLm|X0iuzn2o=e=b0z)7jkWB@?KwSFV5#$dMEk* z`NY7=oBjH>)OlWE;t0ui&-YmOF$NsCoSBC(URBHM=WU9fd4XRgrtKrp)YAacIH zA`;~LYvJ0jr_wKR^O3u-YuJ8bNbBe9I_PL}2KZ!sdralhlhzwpr=LHh3bqyd!IQpP!TWUYG)3 z&f&dDwA~a*jqRacJ!{s2+d_YWY1b0yV>RQ`chK1TQTjyRl$vVRw+3gL9j)V8*Dg3m>KoZ-O+OTyLjTcpVsH9cP5T)qo#V{E z>3v%%?d!0^@&g;NtxKVm_3Oy$24uBKKEkfCbi?D_AS^T&U@2kbY>R5tZ* zE=>B~$^DWOou$g%J2t?3$3{wRUtnhQLr<2Q?L%Wl=*h#+S-m-Co@P%CIik5-Bdg0z z^~bCZ&*9qphMIBOqDy>BfVR^q(>DX(28YVS#^$~3`JW%L_wIZ9kwki+&pzkgwNAa( zM-oS|MY=bu^;+neQESf+^BuNSzV&$x>-x~TEjLoohvzs8137ad=RLV2>YA6QvLd?sHY z9gw`WUcvz9rXk3i!@nng2{P+w(xC-;$G>c`k!x*9rlNM`quz1x%JFm?~cUcB|L9F zlD>c+0A2(3I*@A$ijd6wvsd3jIB!lk5H^X_z#7?`cBdY%7(&o%8sQkE{tVR z_5wQJ>V8M5mG?HZ=B`;~%YQc{mY%m})f?zw;f%i(Ob zu=}Yt>3$)!8Oc12^Z&=*n}A1k-uM1zW;9w@4A?lv2BR5CECM^mi7_ZntkFn-4NjcK zv~J_H2qboAagwHX43>l>HrWY-xz~x*gjE+xx!%PJ3l`o0qLsAC4V|?!QmJq8G2- z^5}hoHru!CwE*L{F`3K!b@A84-{0zUwa+@l-x>bA|Axd{sLk-!N3|d$o1yiomcOb4 zdE=!~?d>dD8w;&!-xB<4&SBNHUl`;2NlR->N;a z%Pgxw?WlI^R?#hVj&0GG2`{OZUUIvg_ISRE8nFiG_K2H9HvRLCp4WS}EOBa{Xs;Q$ zC9u1Csg0OlWTe4r3pK$3EF5b z&&zpes=aqlEAuPFww90b5!#Xet@<;`3~Vn`x07YsP3qo*&d9opnhV;kMK({RMsmtA z>xt3{R?WVTMjEH`+)iw(Gw={LVYkk3_QI~6^>ZDJ>xabu3KcWhHv`+e0kTvR7bEXIf;+VL_Ts{{-$FK3;F3Ieqh)&1$x%RPY>xF zrP8`&_J3<8E|i`cd2=bSZAH(I0ypVN?(e4#%a;#Wk?ke$Q7h{YWcLS-4T+!&g@w;O$JtGDLT7yC`q&kB5o`jGkEx9LIEqa}AAr(bhDGFNeK&Vsi1 zwE9{yIg5RTr@P29-9Ra*n(?_=Nw%BwZGWKJ{iny1Je~B*c z*1mm$-9_Hjx!hgw9A_oxbTE(f5H*49ACirImmaZtTHw!;Ao*7#CtuQmQfjD1aC$@Y<)`B#!>^_+okN2Nvjp2jDRupisV(c}cj zIW>;sh{Z7nz1PgVGmwETo^$5QIA?w-;}3JreA!4h#%tquL^k_5GUrEq$A0$oxMM%t z>GSn0M5ccHX3p@YpHJM1P3Rllt=gBrVod!vM&1M#i!b=bbQkhD5}3H+1=@?m=rrh}WW9B8l;F(%A4QByu=*~v^*Z}+j7+oo zEa0U+^}CyMioV46^rkUA)6vT#CINr;A6XLg_iVV`TD)kAb!cr_W^B#sHFL!~Ba*H= zxA3h6jZ4}CJsG!|`)AksK5XtUx;4^RGS1iI$2VDYYf0k+y!*6oCVO(MeO&ms_#G?f z_3uP-wgyMUAK=-YVSi6FoAK?oVjsVi{qHaYW{yo4k_X9Tk)BWQN{6{2p8@_c;QtKpe}Q|?0RLxz|JQ)g z8#$v5{Pixe#3PC|jc17Z>7DKl|lujpgOM z3a@u(T77TKMF0I2urPXQG_@AhLO*RSmYyGRp)qI_Z^Gx<7ftTNysk1b-hf9FI zN5?h(+Zn&?N}V61Iovx1c@KXE*hkiUqKka!rvQ4%j1N9a+Lo7d%4glx0zE~s)1>EA zL(s}tWdq!)@zJ03yq;;LU#;&8&{rG3MYr!pr2~0zGjc9M>+_LI*e?wgR&vz^WPHU~ zTRs(VU4EBp*mVx)Y4Y;6A4C7ZyY&Z=oBnJ_$oL0*@4as$Kb*O_a#Q+Z1isWIP*ZW;+)p#Lt8kbO83`W+QVb`Q|6;5pn}-TC1==TPT-1pjF~8Bp{O+rKQ1lQmy4YMVoEuxt_2s@`)pB(4 ze&%r!{fca?DzZj4oJ7Yiv&VC`XjhVHGXPJRcO#klt?|t+=QCfQ8h6tq(^m!GD+(vZ zlponipRJp0dJ`X>q#xG~7JnSN-P$1<(mZW@&(=GI%*C?qV9&uNy>F-3*N(|v`|fqd zzWUn#02aI>`zl?vb-=tVweV6+vdj1x^oA-NfkChSIe~R}@WiP(| z5feZAD!&WWzOydjEBrRk|9G;=4SbQ`>Bwu>_i1s~o7^^!zEh9^Bas2@FSPBgYuoGi zx!7}q`Q!{>t=b*s;_@wDLy48w(-!#LVVyxNe^_?c1jemAZ64=c%OA+aHbxdLR?R^< z^p{T_Ei{pF?;08VRsp#-p4D?&&tt>RsoQk?4EY%SJm-%2ryko=eumfn+(JLz@dm)B zEkh$_{p%kN#GeQIQ2U)u`-%HIzmiaIoJ-E85SXalV(0wJozD4}<>=;2)Jz1TLOlx~?XSMECQ2TI?)pWjuccx>1`24*;@Q&~Hgz+VgpM1NMKe5MO=&Vf+ z1J7{iL$N#AN8XEb&Fzo}cCP?CFTAqN{08$m0c=LS4^JH_3fXp}kpaZ8;hVky{AGTJ zvSX$EP6r;?VFNLE)nCgOQ=F1L0CxD+MV@tiEJGj2U~DXS$Bt8c>#MG9Zs!x5DMaUM0qwWTv-yH*ulDd*Xe3af{A7U%VTxiNfY%(>{_ zKGL}R@uDjkyzigBY;tIB;p9B4=-Z*x!pXnA$vXRF;3n!8B5zr#dFj4SuAFSmT{<~6 zR5E|Le?Dgk$9#(&epL4DQ2m7%D0ql1LhB`(ide_M z{ibq0;q#aB;cswhk7-`7TX*G+GrX;5T)D-w!{q}nCh&hAGA_!q`N$ZJA;SCkk~`${ ziw?c=M)Q4{J|u@ESKNQz^OWs;)L_2Rx{-V|ypoB3LeAxqk9<^aYNQ9dXYn_oEybwQ zSxdEybtZ}pDYl_HzH<0LaCYigVya`&HLVS4rM+VKa37yF#78FHyWu?RqpOS$%sYC| z)-`v>mi`;L%R7*9%u(xdv>wFf&%0xamuOwy6ia(zTIV>IyP*RZyle%xR;tFD>qn8_ zs~9W(d0)HiMPxbou0vt`<~53$Fs2A_%IAJ7cEX3voc!@3?s;*g_jOit3ijG2r&e+$ z_D2`}u3~O`x!zCx*>3fP4nTh&nSu>cDH{ZOSdQ+j4c#46-aQNsHAn9}PdoE8bHx5b zUmvPqj7yNM5$P7}O2saIQp%VGkAS~{yw)L$XU=j>_0Xbm@0c|w8&pa=3j8Axy z-L3hkUJM)MY!UNUt?Vvfv`c#4BA3g$(NagIJMcKm602A_@c0ey@!VzWqyE@Zc=szj zhyF)?=EU-deSVSOrMf?UY%Gtun9n8X23MYzerhOR6(rI>Jk;aVb6zy-r3Upy5^yVU z@x9GiXX6n<+Bz49)t$hRPHHLxV#Lad}u>+OL>RV{m!bOe$cM34PEi+{B^xiFHm zADgX-7=-9o`%=p$-fg9Dwss)?YxzL<%*C{!{S>sXNgJ@Nw1N%nug|shhubGwb^knq zIq{tKt!U?d(D(^S4*qRjGbjTc-Q(CB1}^Z4W)y z3*a~Q1(-)JWIwP;=5yM<$P-<}g6gf5s(SV?xCg|&0(|aA#|qc*#96I3d>(rhn|<~L z;3&I7HmRW<-o2liFRe*RrtN>`{efr631F*@ua9`oze$dN%z0ildjVfcm5rCd^M&{F zp8BZeJ-d%!e3tW$J08iQ%#h?KG6$beHeWyIXEf*YdjWjpjJr!biBFfD70Kyjto`Kc z_dwf>^@)1)QSx}}iCbw)v8;>3=-zDK)w*|vZ{n*n*S}hG+xihT)W-GIf7CixPyATt zQFMmtt1poE?jY|?`{y?KM!rfcZ%tW3pHmroJ@mslOD}dIj|FSN54wBNGV9sr#@1qI zEoC0=diD*#U;gPX_Bnx`$Lsr^U94qej$Nuzp=Ri+`NQXGS2W*2+s7uri`JOfV%l!z z{S59s0?rKYgXd!KT&(&<@T@-6_Bq;i?;D#b5ynm*ict#x9n9+@-&>)vQ?fCTk5Twa z`L|NDXY3T}MzpUlboUF+GWsy{0OyHxfDCfh2?giO&#KE4fr(ZQt|0;@`m#1L=TU8?UmID{>-jhkeA@(Us;n<1|4P$Lx<5}Y(VXI zQNX?@^RVeNpu^qlli?f1`5wmivu$&Y>zu~r8H>d~?|5D@`H(?*8h|#7z+aXXh~Hx! zJMa1y(C~{z?Ad`&;qfhwQ|Dp(7P?o#Gp=uOKQyo0WQKG)vQ)m8JJ%!3)%aZCKr&Kx zNAWQ8#^z`!W^Rf0Z#i?XWbPZ8`$=ryeC92gBwM-&8psV96!rx@PN3KFkE)=Q4azrG9m%%yqp1oN70>=5WQl|CfX zHz1!xmuZHUlH%_3$I%_CL38=|3FhkZahSG_)0T2QA^2E+iQj2c*D@S_{uQ-Ieznj2 z9=vz4+e3o~B;^G*k2Uz^R0ND9h2YqJydI?^DmcTI3q~ zjTi?q3YcFY9=``VzCf(^3~)Y;ebGrBLVuFq)KuKZy2(^xy(z0#&h4k($xl6#xkd~( z<%yM#W898EP5ig>%7VuJwm{Dw>VCO@D3$oH`wlW;$UBPdpH7X$E?6lhS1)-k86}?m zZGZXsGuWpouY75{awof>J?3zv9p6_pAw8{pW*aov4!@ot&ZG5#n&S%Qv>TczLT;5~ z6AI2Bz0uks-q-h_cpn;7Uw)p~ep9!^$dn3X|0yd8en_s` z;E^q-tYD2Rt7@Tz z`3~O&8zZO4pSiZy-$!^ig?W%elkfTjbmFCt)rLL><-u-pW0}CHNS~od&dJeZ=NNt_ z&MKa{B@5psfV>zLsS{i@?n2g5Y3+VKdba>QP~_0pUh2Z&&vVRsYX>kr4XoP625WTg zf$FfMv>&x5%qfCbm+?%?cz;bkak(Pwv?A!VguO=d!L959|CPrZ^SL%}JUWKGJ@?Go zP~F15(5ll2ERNKjv_f~gW7D`Ki!?6dx3G@Y%S$I2hxX(z0$1=mHOkc8h=+M6h4zMf z$3o7eBWE&@BjxOAKTqScf@=#IUuJ**>|X-cCg|;CBrhkxxskLTJH@yPFrJI(;{ySExS^1YNxGcJ~L=5N)1nDL0(Q9bhjZjP$L<^z8+Ok z+7Huyo|Srcl=d}e?;LljZh#zOigCXe`VhT%;rC87BAwvUNaA}go%pXoCt3seA4w;wHP44milCDM=tS~q@2I32 z(UL>su_$yBg-%3=c3p;BuWRcTFRl2lK`Sq5FXI&Ch(jxX;n0f3KQFypOsKb5>d2E! zK20nFyRZd+*X7l#HT{h>C!b4|2y z?@hq@#$n_`c9!gm2?P88G-ud)BQs;{oaRON()gj;1L#`#Hu=Iu$U377o;sgFZCVC8 zWCQ+7>jL&e3}HJ#xAOZo{HFgo>@Ks%fNQ6zt}TR3C0yuxhU_SCxRV+o_gTqXwI#k4 z{ZH3En>^dZHQ9NRow}ce{;KfUM$+qk;tSAdUzThL@UHiF@xGDav|;u{;a%CCN$9AJ z=!H$_s0-+*wpkU`ZP3RjcPVP~-PBb6nyZwKjweM1JwH1K5Ncu=^iH4n4zpcb`KJ-9G!e z8u@%r-<(#nDNNlB?VmwsbpUJS8fU!KKl=oIT!atg6RQTK1sh`xZOrGLdY)Z_+**kK zH2y3yW0_Zn-Xr==HafJ_(%b3PvQxdzh^G}**4Qu2lIzFXopEgo> zwu?Q{G%k%vKB(rZc`m2_V8FV&a}H~C8G}pXuMlTbjP4QIa_M(CKfROMDEGeF*Bsrs zcQH?$38g;f`BU!}Y?o3y=Js(&eejI84|GFakz=0*n4fs)HTqDSsu?kG!Uk1M=mEh= z@`palIS;gz{*4`ly-|!Gt#{OZ8`mr0>v_Jhckk|9zr76JUdouRwps4$Rs6kFvBaN_ zjqRqUY{}P5EOFrXBm6FO&b$v#Bwk$jq1g7Phqr6S-aAxR{dm~@m!WO{*zVPwljMz` z9e4CqxoiL4iX0=Jrnp)Qd~+>1rdZ4n83qqWktMCr;j++)YVt0~693jrcs+nDk$)mR zsCd=W)QdGCr`1LavOa(uk)OI8IkFQuvUgT_b?Z?pCkr{EIM9B0_QY6!jp#_SOSMDq zWaHQ}-p&v2<6RR!#rE9*uW!KiZGk4`gN&vf&EbSK_U;Jy3V|>0yI%bK<{4`T@-em( zn|K*}qt0JdJa;8y#$Q`oh)p~dn^?I`#Z>ph3ma0CYs5S9!}dc1E8y$-^e-7EnXt#p z+whvp+m`qYIy10=rdp3ecgSqPL2-^YJ}YStf8uW0LZWGWE^7VmQmvoaBaIsDKFv)r zgPWmg>H13g+m8>ppZOC5>TBZN{{>yEJ@@^MjJqDYY7=sxi$0TYPO0f+3>V=8#ZZqi zpN;fA-2uR>wR-X-U%^`|akLETv4P_`+5CR_Q20wHEbA`mKR@z1WA(DR;B>a0Z3k|O zyS6}A`8;0?4dRdVm5@WtLw3JY940XaQ%MYFmYQJ?hQ5T<2 zO8%iQP7o_7Sv7s`0el;Lq;8Az85OS-4jAJ(J+}n9*#n)dShZ~K1@bf&I!5cmM9<1$ z{RWs3-;ZnFS|7Q`mc3@)s(lS}zF|A?ZAJFBu>MTv8QXPN>koJFu9sFHfL7C8-*_Z^ zM@&GmvSjVynF4K%1m0uV8^nFjlKIJQsk*dOyEw(Vi-xM2J# z#v$FXl$_lZ;6H^=_nkcUoD*gCTMp&{kzCYXgug;xo;83Nhd1cAWW;RXR6z4jYR2l-Z*vgYk=2+K@S=PMlfa zH|(nM&WROCe?|4 z>j&nNTPb6Sm);tbJ-=Okh3Hdo*7eQ2o6J46sr%%@V;V;%_JI0O?r}G5Xbve^zMLTQ z^YgBLOJ9&rG&L=<)1^mTehowK%yD-5I_seNa`j8`JmQGZz%o9)`kL5VY&B!XhJP&j zYukoT3*}KGnN~F;Ewa5~)tb2_*zd0(drQVykCpP7&Gjnu-s{M%&tiwafbIS@blfM< z*DrvJR{R;&p{~Ww|2ldx`}Q$4j_(lD`jaI|*7tW2-^~WTtJ5aTxrCkbIqV75dE+dP z-{95r)H}-GRvb)gYE0dZ>`LTKJABrGOmXpiDV=&P>;l!TUgRCwO$V_J(ts;|%DHUn zf){1IQk_ff?rLgxtEf9(>x*p9_%@`>knsQ*DDUu3?H|^&$2O82c$OT8%XEt{^$DGFBg6*hL@Lf zuLF8l9mVo2E2r{TPi;s4Zr^W}9M*cpQ)4Tui)r^Nnt*qfW9t-RBME-X3ayxd8`tj! zZhIoOt?^;L3w|ZoIK=m#SPl;GkB?x(_tleQdmep%8o9p7p@aS4Q!;Q5_*6_rc+4^Y)-DzRl$Cq@pBT9&!7&A&D_lA*}~8wofJ*hqYL zZKNP=DVL|SGTgZr(&j|^ckL4&b5EjwznQBq-ka~rX*>Q}sG6DSv&1nW92JeNs7{n`Pm#}s4sz2&ZoaWAS%a1|zX@4KzJ?T2?5&$*YO=^(ya z`#nxA2xEI*;~bUDT3dWnwapj#>vU^PXn(kaf4}J!G%Q4_2&NcFIL$iPqT8VBBkntBqhD zb9kofB`ZfUlW4%u7CJYLu{t`Japv=Uk>9$znQ>>)eldDZFc5qdBgydE3-Fz5FZiv< zc@s0?J+l^swgSAPcJzKG@Krpv5_;K49OWo+lrxIQzC?@{xh2`5y0xlyMz8O!RLbOqBJY^9pGfvE~OCzAy2mO)+ZagIdADv--xQ$ ziR(QR#BRVJ_Cc$c;L9#zILlVA>GjgdGsNOr;k!28D_xb@t97(TCEK8f{m2c?XPQI1 z`?XKG=!?0!`1Ovji`a-g#z0)-c%8O12i9QqKH@9QsbV~9vG4BV{O43)O+EPCo70e0 z+;j20$QP+&J=yFupVcQi>^6EfHU5T?v1##Fs83V;Ryx<@UcpZpZAkZu4tH|~hL;A_ zzp>{$aCH09_%x1GVw9Ul+v9iz+IqJ!97r4kag{ROm#?icl)ld~Yz8h`=eRj&^$8wn zz&n+5t2d|dn|8%F=J#l;?{;I`Y3)kM;a3?)M0wU#_r!Lib3a7RUa~7uM!r6GsNeLr z?-Y+T^^WNS`IIDN4DvD-L@!n(jWzYB1<iqGcpj1L|T z_paOS8;BR?^(vm52#0tA92Ebz_~(tctfqFvyPqn#qq;I;u^G@sRG;*Y6d&wH&O5q?w)s5q<(eg%E>L2HLWD2-?&cW4H{AA*ngY`Wvk63lS57>MZy^-7odRz59L-?l1 zH^4Vd_yyXZPka}(2J^E~<`Ro-L; zxIIPAM1GCpNyO;cA2XHp&;Gb#MfIG!H5GiTPFV4x3-H?Q$kQ}pLkB~zRA-Za{SGpI z_4>4$Twii`Ip?MMX+zgKXy*cFrgo5jJyW{5I-C4!D*4yf>3ehdOm!;x*IZxf+7|M! zS-g`<|H?shL652#tAO4l2e3=}vYgzj^id0WT@z17X4gQETUM=_>)L5cuvr#j&v&v< z%)z(&Xa58Ezo_<7Q`Mf<71mvPBvQA;m$bGNyH5MFXs+5%Qr|ln^CZTwa7Z3ADZctw zHVy>4OW3o5m0&9SK{Z(OkbCnTd+G!=Snb3nqpPRPZDXv_G|tbVZ_TBhzUQ$AnvvVU zGy@-O88qJl4kFOJ=t+5|D0wF2pOa@A@Q2R2dB8v2WY!!G{QeVuN1QciKCM9`54f#z zczJeR0*`!T7zwkF7jKb1ym7!D$b>eB^XtS5L1%Sz-&5&XHtGV5++*Jl~ODarAhH^s6OFg#w|Ik?nyjKjaDu6e%-B%24RRHs1^hPms-AsQ|zys&dRTaBFkOx;+ z!37^S1}?O&UUqsDbxaY(-yA#rzKsd;Vhps2{o_yI#mU3Si>vHYeANGj_9=0$-`PIB z>Rn@>!iOIFw67hS#6C57+F|X}kZ;KP&{D;~z`yL%rbKz};HP@_P+9q&?9*ZJ^WVTe zH8B1??9*Z2H})xb%0-Sj_URBj4Qro*r$qbIi>p7s2CnW%z}0)UPmxpqS@!7{-{^mi z{ORTQVxN9pHAL7wUiU>A& zU$#R#ePf^Y4Qro5^Y7I@eX(MwefoWVC)%f78-~|6EAAR9&xW&4FPif;J^mZ~QFfE< zzn%EN@9w{C7{-5#zdpzx#pvq_kN=i}&EoanPE$MM@{;&OF+SUmJWF zbz=H2hhDBGesyjSewZMEykBi=`M17IbD-q)Q>OMi7(gX@#Ws2{{tRh z?gYNvRQi@LrUTF|&txovKArNq!T7K6%Y_fYQ9hma z40CtB={Hq zCdTAn{?JgKnN9!Rc>MqC_{g^s#y5~(cH$#jCJ&8|{72=Nhl`I4$uA=}I^dtv@Ka~5 zMV{Fg>mWX&-13Uya?1;Neu4A+gU<5_@sT!o=iTzke~xao<%1m`QM~4=ys{@gqWI18 zj7_|%_(&$>d%t<*FDDO;kF>#0qSGRHP4SU>!NAEWD?Z}QDZB9z<&@p{2z9KBl{Z#= zq?7na$GgTylv{Cf#`Jy7_z3s3zkt?IcB1dx*o1PBijTw@gBu??K_25;@sTok_aZVZ zF+P&It#TZ%BR5nh>E>-8(b?S8 zDk*O(nX5MRzMdb9$)uS4>8#*2Vlv?QJ;h|0(^c~(Ci7(@+w7RklZ+>#oRkxjX)POG zK7H%Xq4LR>AfFE2D*hkb|F;D`Yh6SQ8gR;ztk)+re`=y#e=7OFwb|0WZSYA+snrul z21_=UGe7y<2Y`=$SMpnWwgXvA{%?Fl`|SHf|jss9A0ejoo5z5znWV3EOQsw%bZ49^dM$6A3cbmyrv#)N<82ann=i z-8SqQcU~6rlD-^nPKv|SM(p*@$~UU^s%4RCT~dslu!;50tLV4iN?ogSKAs28&B(S~ z?l+;URkxv-r`D`zpJKl#bf9WA%-RifvWXos_YTp6_(^)2-^Y<9;jvatDC8fqr=jc? zjmPL!YAH0H68a*4YVsnR(4YP2Pw+PIdnGos);?%#I(LHl-|mp&p4hA-;FTr5w6%H6 zZ58z}spG73E3w@>+5e!E`|w$v>V@;r*%#2|&6oSBAN9wz|Cf(3=8g4THAX$B{Cfv- ztzxXn=@>t=)Parm66!eF|J*TPF&xaBnSYqJWur(Ygvkvi!okFEfI}{Q?EwzU2k>Io z6W3sSRFY#PW;*~2{hkLbRLcP!866~hM0gt9r&aOif8$0}dK}{~q{#(jdQAybHg7 z57@YT;qrU2hc_e>Y@PexpXZgocJY)rFE8IKKKT3a{Y+@-z4HAD=!yCU{6xu4Hy3Wh z+ROVb?}PW1+f3yBH2C@w{CzFn7vGEjCD&Zu-|gXj$$=j-PRS{k=if;VM3IHVjqzG@^vZ*dl55L@ zop)R<58fW8KKlM^$b;jPY+v4w9FUII+LLSPY3VDiFC5~}V;`6p894FQI5c;f7};6H zkc**}3dP8HS2YePz}B>bj8;zbZR%-=k(pcN8PzJ+;x23BB;HVq}WvJdbWZfKAX(&13M+%IbFP>}kwL>rzr~9gLk#W-Oh= zjiwVbJHXy#)6ox#Rb^u%DNd!B*$nC*UJbE^+^K(9!#-$Bh!?av>(5pH&_x^RtUvD} zW|mgArFsVS57|!r!(Hk*Y40*o5?NUy7#&LgUc- z^WUP|E)p+`Gq+sUvRjNzwGf-p`OBbHxAuQEx=#DEnl{IpHjN&>gs$wyhS46_g}kGA zD{h87=zAUeU?mDf$)NdSiHsL28|ZVtM{4iskvQ5gWJVb)jbs_b;9@vAlsb+?V)GEN`1-rNyY- zIHcN*@cL`ZfNy{BY8jAd|8Ft-AKo%hAJGDzx5DqcotnXAZq4A$$boynBYyi3Ine5f z>D`kc1KuH~7a;DWy(`R~5Q+n+_6VFe(}wstvG(|sYL9nXIf`MMxB+zE&VEPjhM$9R z$pzcSnBS|q2h}374$bgHJ2d(-^wSPK3a8J9-Yx!Tx8cP_6|k2s?R4yDzv6%J#6{@I zjsG3Mj@}A?rNdvc>lMT6qVG%4ws>Crp*Vu#j@nbeJ?B8@1>E8C1hUA$Ksf={i)an9 z=Bqsf0$2K9EPw{JW~c(X$HtoNjV0RqKc>VFQMaR7y_3WbPeFGDxmzJ zf_z#MV{zk$AAo)b;)nD*B!0*k-go?vcNANbFKgn5;PyW=e)tUX$c+mQjUOgC@xvsu zh8jE$i66cU-emJ9#t-)cN5NF_L+y#S!Lx?ijUVcaJgu)zj2}M7yI%VF?K|-4k=w84 z)0-UI-QwSWrFi0&gs~>Z6JMG1UnQRCf1mM0o_`2=w9+#1chy^|?&{s*iA%9V-hVvN z|9iy~3uU`3K~5AQD_0^Xke5T^iO8t;6HhGX9M#`Bo=D%%;XDuNyu`f4bGHqZIb%HX=It?q z`Es2FQHYPE8fV#Ys&~dFKUB2M)F|iVqsIfl#OU*Z^{IjQU#M0Cou#~~>^tl|^qsqY z6?=(sns#>B?O?wh(ep_>H~3EJ`F}d&@>fBx^t#P!_IJrf{qye6sTiHH4H+M{VNQ_v zC9#?#LFqm|ONjjxVf$)-hr#&G;JEH*+=|n*Fc$f3-ZB3TV;24t`}2cq`TOY+t7iuA zc@i5k=}P{yJ5#A0luv0T$7+rNEK^uD#>|?Kj3T%Zo&R=2Q zg4l*pR@L&y3wsv;+fMX5c0=7N^n2ywpoXTk$Up48e_HI7POa@NdSz`L*E0 z#jWdWvzLB%h`4_c{B2;56Jslb1FfG?4pg>KffZ~J9+ZEy;TkY&3SLK^8JuJDs6F@I zr-8R@LNCrWFYj;RV(9Oo^pHrae){)oKJr}dw zOMA{L9#rSHL;UT;Fz@Ppe->x0tXkUJ902<@o}hZ(+RJ8`G=> z<2-Kp5LI?GD_jH6aF;@#hab|H}*m6NzAc;YdgnB z-c*~~16gBNPQQ&Yl`$sv(=cOFUSE4JCYgSQj(@nmBa(HySQpNoS9_iuly!=U{@G0E zCxtWEJhDwN9s*x#jlJh#sAfSm4MsMA*PJqI$6WsC=aBW|iRPT>FOv&yf=)*8`3Kx< zLMAj(`;ZQw`JVR0!dEV&HWM?*fWMbuSMCBw)9g0RS|6Qe&H^e@J%RJCZ*Ii&XAwt` zPc(_^$Z*bvpKjL0{jvH3F2A5|!(87+oG<06!=G}-q53Fu{g{3I0bR$J-p=)G+Dheb zCx27ZwT7}e=hp9QTeJ}KE{ z_6Op+m!Gb6U2`kHi**WCa>J(2MCxkSrPS=XQrK9?zKCka+s2bKD$YMLW8a&P%s9ng z+nb!B^PQ#e+`Ek}=UvAp`8s$$kJdNoJdh;dTLFCWOZ)brbLA@|e`ciX+;CtsZ{7OF zQsCPJ%zyik_Gy_|H5fmS_S!PgK9g9oRB;r0KJR|7Ik4vNJ=6jUKH~4;#>ZY6GtjwJ z+Vd(owV05fZ6&a;HAaoY- zO3P}{I*YDfJ=M4~HKjYLj5rCjtMz*7`|lildTGP(*9}%3`k=0L40P`B*!3=t-4Nkk zgnP(h`0VEi^3$6yo?=phO-^ZtDVXjIaYdX|CI}8Hqy^&=Bk=7 z(TLlo-cw)R_lm&h1@=Ywd-%2M@uJ?e)siu3-TACl9r0OxAJMItZoo=wNO~*MH^Jxb zmEiPCf0gvNpZ;o{{zQ}NQ~gQCsgI*hAE)V~>kDc()%0=k%XWWuAE^y(NqL;HJG74> z;|-BprmcgV;oOQ%B|aoioO3adHe*1PT}UY6D!hW0r>zE1lhm~}w8R-I&{;J$YyIwu#snIAD{ zn6#pg%{rFcNS#^VgHGlw`MPxW0wTV>SaEsnk9PrCUCM9qjBtBS`UZY%#&1)tr}jbN ztb^xFTi8!s$f6E-P5Xf+_NVpNUO0pe9DLoY!BaDQIvgBU1BYzju+@RV{mg&KHRkVQ z{@%F@7Vi9u-1+0Dv@Ce{xhqbSIQJh9Gk0oduRV9CuX^*Ia^7nW{|ohHrLq+s7$5U- zhEd)VwhbmZ?EdrGS6Rr50xK!L6M4a22aAbkZmU3Epf_^%v7d~WZ@n^DI$Q8eMwVQF zf0q$2sC|4zZ@a_4iuJnuD>*El61@w@qJ8miGkh!CPIY2};~?MJ^`4f&pVghMv&hkF z*TP>KH0;MS_Am|o)lTC#PQ(NExmd}q!kc;`5^_Xpq~lj{Qh>A?Sa{fGcYfS4Au zU}KN*Gvl!Jk)O@*%|8)0H}d7_Ta0|U5g)vT!ZORvk0$=%`#}nFri=4XK{=f5`_77QSZ;34>Py27W2dqEJXGGWk zG8D_h@4T$*`RvEV=RER6KS~(GmA`Q2@bm0g7#Z2iZ^;%{K6>rFSKtq?eWkp6D>g?Z zIITVNmByo-*Y0DFlchmx_C|aG)qW}u?8uD1b}O|(^_%iZsfDU*o`W4n9IFzWyd8Kp zAp=zly^?jp@^zc%UMF$p5DU4+poAk5O zpoJ7@C&4EDYuX(OKWD$JMS|bpep$K9B|?rf4c^H@=$ly8#=4VaV4%-Y1|HgfKz*W;3A%~=jDYEPMq=zG=p zpC%sC-)8k3kew2^j@+i*-&;QRdgkmP-3QiYoy-Bgr;JW%=;FEh(etZ-{W-OD342E4 zyNy>?RG!0)5f9dsc- zM{}lgDewRGy3*~IHE}CvKgKPdFZEeD`LwNj_rPD~UQ#fw>mTEKd#*3%D0@8~mz~cu zPjc2WXJ2jACwsFdSMcm^Y`$F9>MP!>`h-H@`83y3Xv049TKh1Kh(Ex-8SS~+ zv(usv)2A8F?n%)`^&h6q5O$0D*Pe<;u_>22eKU5`x1KY7kFxt#f2H&%IxF?`>B3U| ze$eUHhwNqS+ttq=;G}tQhS^rmS|g_D?(JajgH{Nv(}8svb7KF^8B2LK96DB=PP{He ztgVdkyJNL^)Oip5TF^>!VBKNw^NeT4GW8ca&bi0Fo+xdcq>Uo{V+&fcMy=Zp+~OAZ zEvNmkl`#MhZy(<8A@~6MZJRgd(y;&;hRqg~KfMy!0y<=`(OTbmx?5Bpzh zZ{#n(!XBO%(NUKe-&Ho$Ba9&pm>}Q6yziZF=Yv+?Mf7&oub8$>(p+}o8pze?ljd>Fg%VfHS1 zh-V&()HN-#`f|sSZ=lXLmpu!Z_u@8(mc$Qfe6O(5;%&f0ZMnWs67U(902A41s(Viy zdnNEt-)$aSQgCTvTsyUY6Li>*yzv=&lpm#98++bg;axqa_XRWU$Ktd64a!yhmin|q z$ne*&-_JpB8sBS-tCL!B*&sbUBOPRF79``iw){rx$U~_wSAQwlI`?Jh`L92DL(THH z^Bb36Zymu`o_+guk?k*xUU&HDSgU6h@BWh9*b?4*2EJAMx4&J`*h!7DWIzk|Wb;Xm zG_&{I?a5Cy{|~FS7UHVvN3{G*aIo*Ep~aTK4e{?&+jZx4>kdD}9t}sW8@kzycrk_Z zW{lr|tDx}$wIaxx#r^O(xr)V&jN?lg+V|Mk^Q8~%tbXkJkH-Zo_Kx}p4ZsJ_wUDjoVu`)X5S69a}IjA(`n~U+Ihh@F8&&Lk$zV@zW{F|_^y6W zFt>-Cw%k6|mY#bfFfQJMPH^G<5H_Xeae(?X!AAJgGbR3DH~#J7TIN}6-OwQ0zMgff zN14aV$dX#*OYPWT`~_cdYsqza-Dl|2g)umdZKSR1X=@7juT5ot1lkjwRoZyjj-R)+ z)`yM}?9j8V)Hmw0na>N*y!sX1Wse*km1q3&U&3eFn^`#1UOt7gAIJO6z6sk+-YgLR z;dR&?;#chJ9OB^-J(D#q){Kn*b8NdN_)xa&7y14Q_dm&Bsquj`V!N^LN@-`w=d2w) z^rQ1>E}?sWfj;g6Cci}1bfQbUp@Tg7Z(uHKSr?nmzRPRDSt|QQFGP;H{E$9+zUH-f zKQK5mYF<@(yG`3VhgNu#u9r^l=C}OaUzq;vKALEMQMkTZ?W)asE4k_duvdIy|MYy$ zceL)BnNoUwZCd>;YuWcCnX_@az|lzF(Q|rlEp`m=ZdE_ZLuNCtCdMz{|Nl^5rg0kE zZ6v!o$hB2kvySuHN zh0LXyechh`Zpw|`#;5#~8O|qhLv#T9oq#LoXNS&TLB@3-hvxjFY+5q;PViqmzM!fw zHCm;2kW;AH}BX<|;PSJapG#~cnTeCVmm)vtqKHhDe@j^N+|0PVaD2vrV>^1T1K;Ts`zn=!E9K-A zckls|`+%GFHP!cdp6^lf9i74TT+jE9n(x>~T+iYABIf=&{Z;{wh0H$;OqMwF7t8{R zn`-=g-vdls*y*|Nm~q%`P4%>!$@kBF*5K}tRh$xQ#+Td*4hHBw!B;VUFECK7hnSDy zfqPvZNbp^Z-wP~UpY5ZJ!Sej``h%;@ewKsrfu@=4O$_{s@B6ZZ zVdF4zxM^mjkF@|hbia8T>xHRl*jeF!OuE^obx*D2+Vx&~fT36?j~nzr+0`I@+0rEX+mL9)P|}um_Ga zU$wgso)KInZ*Sn8#B1N--E3d5LGOft^Nd@qnD&5;j#}8D{o}G(pO}WOet>blfvxjB zUs}V{Q(mjSfc$?NdHZzO){pvLZ;di~V2UqTMLkzT6rQtn>-xhN!Mo(xjL}Z}sZRSr z;_XiRPh)4ift~Za_3;#aL>oUvAD#FDn~BI7{{-&Dp3WT&Sv{?9a$bT1)A^2VT7TufM&%3@13W#7+}x;jhZk_~ z^dxLHeNVFOBl8@#fX+rz8$R%(J@NCcq=vnt0{H5|2JM@r8k08}$H2W*=N@y>y=Kh| z9+EC&JzLJAnG`o*BvK6kl4^(Kg#Q(Ow!k=3ZJnNpQA;#^&$ly8N)|;OrI0XU(Rc)xNYij(?T# zSxQXOtUH9>+M%I?A=~cNbAl`T$Zf56-mQn`*7}lpHO0`Jo^MAVi|#rcy6eRjoXOnR zf}2GSt!0Ckg{)Z=ZkFIb`GJAzC+{D)e_!Lmuya3*&gH)LhkTX2PlWUN^qI|k%~=`T zTh3T#0FwvOUasD1<@dA)f(2cs z@XRIT*TS&v+pAyES+;M4p~+5Y(wxi297Lna5BiZeqGd0A);sihEq=SKdBJZBfzLwb z|0?`uz9;aTY(LQeR2V1I(PqwsGAZCBtEX%6*Q z3XG1{UY&!rME0J?Q}rBj!hY^P^IS2{{TuxcXJ;xx0kUrcQOAo9vv zZxZ3TCg%GPIeEeEW9Mv}(L47-=C0oc4~3K1+m*fjwayJ#6!D!iB^uzDK6Br)@3+#{ zGOlIvmk5v7Y0n<_AUsMKv+~`E<4wC>;~m_;XCky>>eQf(J?twHfNruTt#4eusfokxtsL_x~}uOK{f-?#Rv6b>cJe?%HPZ zyvnuYr}`VH6WUf$>W`I92sG%-g*sx&s`<;~o}YVB?nNf}8XAD#t`XJ|KVwk6qv{KG zQ41-bs+m5*^Z~8Zh3Uih$5tKdB@bD$k|9tYQEJ*JxY?vBhSCGZZwY(NyWl;^k{sL`@?uY|0dSkbz?M!s(^!j6q#=c@fre+Ivd&kfQ?HQ(PoNXg%R_vIM0*acz4V2lwD$vk56~0xvZctTsmDSdeO?sF`7Cth zmFM>(qZ0F@K6pjv;-Sli=nmE^)T!RdtwB(&fzHh<0p@XJNf24LpW3Hs@EJC$WL0+) zu{O!Kc4$+3Q5;7`$VNB;pSC<~J>lZ`pa0a6GY@lprq;Fj8rq<#N@NcE!99CHGKbu~ zY9o_F)Q}=~UdBEOTmA<0vZ2NKj;z^lH6v?$MrQ0cvc^}nKY^wKE=?h0kq>pnvR$pD zwa3ui8ORUiZ9CwDf*r{Nx%2_8XECn|c&vhXRX|%Ve@PZ*CGeJ4 z7XFB~26)8oudjUS(0Vh`Tv=-A`M=8^ltYq1?ddkX{KYloj~zd`bzps~t2@xSb%6r~ zb=0k!bGQqL+f#3`HmrCEI4e>;I`I7XKftSehId`Bvv&vWk}Eqmdu;{p_ZDh?;NQA9 zabS30n{}6czDWnU?k4ITZnJaX+pJKgsjqI*b?SYl@;Un})IhuM?Ye=S`BR5q|NJ1Y zXwCxV z#c1SiBPa90;mv*4j(+L``WvkrFYH>ud2tASf={BzCSX%H5BXG^8m!Vf+tN|Nsy&aO zUo7jzF!(oivgpxiAK8?%f%dUIUwnW*fJ>hrUJJlyT1y~%BEVV)ecy$yUB(&&tzGy& zdu*F$Lp;lU?a?01I$7-x4LvU|BH42`+teKVr31gcQ$_z z)Nt%H<2lWEYSu-bU4G@an@a*oYddcu9?#gHyt2gnW~_^sUzxbM1{8XBRRW(g#|1gyTjUH<0jJg4d_X+Y4xi$^5WZp@$g&MBf+c3 zlYwm|yQ~a7B{{r@afL?tt1=kZF>3m}<0{j*;4k(LI?_bUR`JRt#wA{hf?M%g26T`P z-j4%s*;n$lr1QT0X={gSkwdHvNt{QnXC5nfCh`6p?l&{%FtiQt=d^s?%87#S7kcTN zxjjsbvyk7-UytPck>M+MU6B*ZNAD?T@U7`SY$E%6wfXKha_Kp~yZTH#dUP_+r9}E} zrY*1jQm)VIkI4R87PRhyf6lr-PbP58Le9^FK6hHdwPnDe0GcR9=18_LTvp+%5C5F zTX(v0*!KSlm9zN9t){lBo?MVSXZd)VcbPM9`E#m|O_WdM&xiOQesGbGd@4jfr6ZqC zKuc{|TH`)BR>nSA&Cqbsq>^X3cDcfusl6#5Z~eUW1h(H6bP3vjzE6-p#BdLpRy`X9VMICjOKfui{)X(X`htmrdpUZRgt893BPjNVg>? z(9j1RSSn90IJ*D5^t76Mkk_9>o}kmQ7qR_h#}osn3gA=|iNuP3gG~VMX&i>Pu^o{$ zF~#;}|E60>-D`kBBAixWE2`#p1HP{8Yt?YP1n^&q+!tFBn9n&D))C2&n~l7Hb^?zc z)^8JkXd(~sPyNr4&pslb>q*`z3?%ny4Nw!jkB@sO{Hw5X**RX=Kxdb&pU#ctk>j}y zI=iqcJU7f(bFG3NayE(*G5n)yAfi!#4M=_dAI^u?@nV}r|1AXl(hW0s5;48@E3-GmOqemP_@kMx0g z*uHp3^C%3)mXbUEck)T@IDf!6RU0RqdhwYyTKF7Xf7^u`{OG&?*q=6Hdsbzzej@ONPdBzPZk^Gq^DD6p8vX3? z1-=f+M?!8G-JHSs*W4%H!alj2eXZ{q&e_+4v|P}uwL5}?jX(Fd&Qx4;_zzXTC%q5d zG@~Pyf63ZW%wMVG$alxZ!o*E?DesQ{znjlrb8j7gkMI|f4nL&zW9tt;r)Qv_+xgse z6E>Bz1}&!R(D5`rk6jO}oi%7x{9Z#F=342;&@)dRHvTftTItU90<|4EthK)Q3ETgD zGUMXDRklmEXl;*Rto-cdHfzUjcx({n^K6*I%T4gDe8F<$ z_to-7)HQTHY?I_WeX@qw3!z97@hZ`S04Q17ad#r z(HSOReuMDN^F8DmZ5(4OgSXMTPJa(^-4czBpKNM(Q*@oVwI@99({F~GyjEo7*jD7MS`kym$Gcwb}4mUs>1!E(1J9qdV^TGf4 zVTYtEE71WjQ!C#T`0@~WyzZy{&*A$WD&mPe`?@GVli~B7^pJJu+rL z<5o@3CadFbsrNT=74sW=TfaA9Yb)MnkKwM^MqosLv!&;!K0c*4z&ND0el>+NgyG>l z_7E%M8N|LhH!Y8|ZWJ%eBkm>|%wvqIam!;&vMEKQT5H(G`~Fg{iB|PJ#CM+mKWdlp z8M*lLa4Zkmo`{QQz=fAjc4NnnpX%G;;>X1W1uHkz<8##?OOL(0YWZCJYu5SS8*5(` znrorg(k)-l8e$LozWL4b72m9Tv*Mfo#9!Z=mFprkwU$*?dnNj;e5)X_%A@10p1suC z%MRTQK6)7^G>X47)yT@iM~B*F1F{PFD>*eGfmT(U(}rxd?cSmEny4?mbojm396J1I z*x1y|(D5#;^1*K__{{}oOZeM8m6-dn$%@&szTWl+y?FtbwsU~zV9sGMp4~lhczwA# zL7yAAe<4HTsmllq)oFglr}$edIDG^^FVpyW{|lnq__u+yb58|`Lj`okB()8h z)RZzVAAh20<&zZm)Ve~+#zdO?qziY4|ABGeo`ChD;bHcUfQRegt=ap5c|9=yIrpW* zv2C_R`P~|r6rTpoC{JnpU-0*`L)-S;#>5O9Lo>;Jtvg(f?IL^O60%bK){<}UHzPT9 z9GVXAnquTo3$n{gAN7p089vkVdQY(=*@!KRphN7MGB<9QAm1jq^Fuy?NBNz7%i!Hi z=HY<_@spXc7u-G;@f<#L8$6u!Z~aFU`>I6Vv_EY1ZA2cW(QgN91KS@)Zs9*^EZS$T zBP6McP~ zkRzQBu@@imjkS4w7ddO<;sVZaPQzbiEu(N(Vp-iMlq&$YEx>ShqYV@Fud!%Moe!C{ zihUOsFc!hr_z;2kjM1!-94j75@21ve@g>F~`dG5gI;dKbmIp1yZuODh?tAo4$?>z+ za_1jVn~vPo8i(7)vHq3M+lec`z#iA%V}H)iK^G7Bw11#A{uf66jfnp%^wvtv{~qd< zTBucQ4UCC@Fc|6kE1v&6&wnCl@6GriwTUg%Cci|doz)J(6{myHa+{|yV=vd6u+tENfS@rR%G2lTsmOZK3G$j zLupp*7vRa(k)P<5ub^iYW0tKKfj63fO%k!ZQxn;50hv%a(c)Mj;1^-99_aq3ysu~4 zN{DZd;2FkN%h--SU_DmGc_eMnU1c%n9Nzf&oXSF-aS@DPV14*;a-ADL$$0{nb+<3g z_Sc$6u0MPfe%eA_ioKnC+w(2f!dczB&?Eb4x1M${Fy~{8>%u2#AAf9r2$?|~s~Olx z=V~9E{s!{bV+0Sz1s%8NNBVFIk=?=g*?>>6q!&e3qIEsfz_oPxZRSiubl`d4XzPgN zVm|YB=f4xU`N$cV_JGd@#=b0J>>HS8bZ%sOIrCJ$r^518<$W}Q@8|38g73ptprHl- zTRG&GfWM*W^7_VQS2k?jz_X$?{0rl!_xGpSH3g-au_ok5(_Z{^WLZ-Y^bPHwyxGl# z+c@*$Z$AEI5jM-|#lQ6nwYmcucVSLh=uVwmn zd>lAyT|_hTSaH4k`5mQpvlac&b`LR4{PEf&BVrxY+;$>^v_@9CcPTc0_%kzNf8S{B z7z=-?Kh>D&v)kx%`C`HNx9H=pgg$1y&pwXO$8T0!J2Dd5nfxBw$;QshZV$y4qLaPj zZlui?+SHyCqi83CxQS$})@@8-Znd8o7wbTmJMWwg@0cE2!833>4eB_#(yUS#vsY{Zae-Uic>P1M_m+Wp-R zJiYZLdGr^e?Z2jNyWK(C(@z^cwBhwPx0rbIU_DOm*htTP_}sbFVYX9$x_eexwGX=r z+i{!r)0OSG5&h-I-U{GP$u3StUv(ONl?=bwd)+=q4Uj*ApF|F12jA1L_ztE|x9al9 zLv#ebc(^|Gc=hphz8c?cR$V&r`rWjPZk?SpNo$+2wVU*AQoNFPB`3+XJMlkzK4X>{ zop;&#%q;x+ClAlO2JYH!LXQEz)(KbRPd*L%pA3bEi9Zj<*8<3|@)YYx60zU{#=e2y z;%%j}Uxe?G2@&t7Hh>OU1E5qzs0_`Z+; z&&2wtrt+nS@%0Xc$t{JjvwMiODGrE@cPJW~C?C4-PQKr{XJTv{dr6JmkQL)RKI(a< z#3pWx^xm`4>P`3iy6I(KKMkwl@A_~ zAFX)8*|2X%{|;o2Y3IgR0qwwJ_`i2iFKFtzjI9`^oiccW_@ZgY@P*UPQQG(gZ8Yf~ zbhGk*X>9iQV!n%K7|-SCt|Sweu;*{b>V&U!=09BiWp#o)*+!eQu-_ucmFm#dGUbh% zd^=PlI?hj=WiRPu^$y7Zd#bbmaMcO_pr& zLl(ZR1s@R8RV`tI?5*#jcSJW{`q18IQFPZM#KrT+-rpCUa6fg2{)VO4QXy;Ew|)Fs z6P8Z4V>s!GS-e#PjXqg^b8J~4@>X8z(#fGv;pC==cUF7b72J1a+daxQCM>GlfzA5-%; z6Mq3eSoW=+FQpym{#+UFq|440jPHRqPepT<@@|-SedrDwHuv|+=HCb3R(vuwwh5Z= zWSpDeUt(jIE1+M-m{W@kHaaMhX>`zv6l*rI3E~$S%FWkxCTp#@^`eQJHBC}|Vc&G_ zr!JkSbDhk7ADx?aR-eh@TG^D?ERFU5lK1BERaN)?_c}uc21_icSS&e77#&(#QAx4Q zNx~ow)m!OkdpXGoAf{Ta-c}2m6A}=KwmHbHz0gWfgOciPnqq5ee>DsOn%YKaYwxwa zo|A!qu~(o|QlWX?pSAZ+b|T*AKF{;#lh-S+v-jG2ui?AC^ZKsuBDOWadKTZ*_rgPZ zS@(a^^k441qqV#lyvOs7-q=(OY?0s#xKk_?z-}Zu!vcEGJeP2?A3$4 zRk$w`IjA|IPu#aI0Ot0dzA;CwFOqXYbw-&7J6Fs@BlBSADK^FC^3oo?9_C@DU<3TO zgLn2_;7=aC4alE$z-;_L7YVoaL?jB`M1QI)n{)Us$)60raI))bLw#XUlx`rZw9nPdtm@OssEZ z0{;K+)cuW2)?Pk9yJnoV881JVICSvGbmR*zt=8X&FSZz3XDyZ3#(eo#T0^`OKb~)W z4%ms6R|Dr#%HiSQ=mkjwJ|Nrc^I`>(^8>d3kplTy2BZVoXVE|AEdmnMedFq_N z<|$)Yhg7}bA24st1BL;{kS+lJE)19hXH4M!jpth#Rc{&?A9G~;*XH(*F(u%evR@wB z&Um=jyh+BR&mAvm1BU2QCA6~)ek;7}TT z4Gw1Q1P0VW%rZWiwBn9R`PCT__!RyfxT)PX(T$En=+O8EXwP zDbAP*kSjHkNx-Lpds~!d+mI? zPI#L2z0~|f>uUXKJ^A=$$zt&1Z@MR!&d2%X{brLh-NsO#P&vHk3Vs){?(z!tMfCjl z^KG8j)60kTXsvg!4&Evm{}cK;QPL&fMU}LAXx4H=b-S^@D`Q#Vw3Vovm zd!@ZJhd8FU)*Rjz9e1KebBis{S~)osIIm@ra@Pb-U{ke}aNbA$tUX&6oT_?w!SMxk zwWk(5T#^%R7tTv|NzaaQPD?KJtfdWfwc~lQbCVJBXj^=x|LARn;Lk2gN5t5Y%h;|l z+I!pIKwZ%7uY)6w{v7y1;?PWDEQMd1tBaW{V*ZA7I{*Ca9Hoyc4(_QNnGftj#a&EU zy!KFp{X|b*;+BP@$@2J;Li)VxOmMdJ-ki_;rJe)l>!c?L&O_y_O{u)pT^pTGeO2)> zBW!2+H`MQ`E{?hS=%mlR-`GEY{~rK$etSr{#9}e%861;Mq&yi{5tHih`LW4Ad;@$3 z*K9lm&x?8Hhn?CrwA=e$@WQ|8_h)Eqi9>5qxTUX=Hck$lLDJ}xG?w6@3C_Q@8SL9mOo-MBkzXvz+FEiUo&`S=Qujn z%DhtQI}@+|*A}zc)1}}mR!`cFpS=-Y(}?V7q|EA6(Oj!9pbu7V$JcJ36K5q|uMz#x z-bZ}z6K5s;LhrvQ+}Vll*cJQNSu(q^}bUKq1El+=fJOUp{Jvu(+u)Iq@N&9J$>*`$42TXuT8|~ z@P;W=P7H_~|HZtd{7~sPh_S_fOBXmY_!Ztuy+QmhZCF`O|1G~nFPH{wD(HVM{k|7C z1nIY6`(65bkHszYB%dzuh4(qKZ8T1e2aclaFKk0r^1k#z=|Yaalt-Q9sFJRSUZl8; z@#q=P6MyUQkwyKo7c~c?>-{Tp?0-kRribw?aPi*ZZVVoO>n8Kgf)(b8OI@a9RB`0@m0g} z-{PaOJ_$$GHxyW(nw^*CB4l2owFn#N68ibIzYw31Wo%5F!QU~(l}Et6PW)Xw;4eAD z&;R~U4sSnok=gtszSSI9KEWJ%I%qLCBE3vHsN|^RaS=Lb8XeTiD0I+b#>aCjccp{c zzM+Fk9@}?-yWX*5v3fjf0oW3w<;ZQoWVHWwHa5y=`LTw56VA5|ZxlS2@vVGQ!U;b- zM}Kc3(Sf^&JNJL@$!OvBjZL}Z%3PW9_z ztI8D*lJ%~5kQA~NxOL>Aqe<^ZF21Mk&pO#@cu9wHgO&qV{{8xYhfn|Skc}AR9ZQ$8 zwZQ*sXdy4**dm(qyIyy2Lf2{OoA8k!dU*--Aidn``|Za1n8e3|;(_pruGi)FR=n|C z>n~_@cww`6VFo-!wz$?#;e*ZMgX@VyI(69C{H5KDx8jL#;gJ6ED|nWxf6TgzxD)bh zb^i)qeOnM7H=b?A*pqE@lU*y(b!I}tmHZaa2l)Nw_XjrbWggw<66=AKl ziZ)WzfT$Y0ioJ@5kdz)|dh#yK0d)XsWw%R20Vb;lPH54Ygq+MJAbaG9Jhi9?B; zENcq{7u)#9j#_MiT5JJ3PxSps`u-$+m+x(Z>7~zE))uh$wy#-r8{EEn#*uf>{0A+UWqv7OC-UT1{ z&$2qLrM=tpE#J2D2EHuj`3B}DdwYIT{zv70>18cV=V^`s?z4-h+B~M?xUMXln*1{F zYz&O88_)fN)l(JwGSI~Rt<>{P>iK0lKlv-lo(W87-+pgkYZ_bqYQ}$|8C&-d&!4Hz zOA_ld@Fw37*fH=7y4*9g{S0M4;QH7_LCxFv$zpDF0>;AbDwnhWxkM4H; z03`I$SyYQL47sr<5D2;b3v zf;vnjKe?GR(1BlbUMwv8!1AGdbUgb!nxFj6I)@JY-^_e*@R8dVJLMLxtVfmN%j#m^ zR|R~`!wYKll^t@!0V)4(0R>t^8o zmGE@Iv%&hSSTlq-nGcCKS-XGFHjBWnBg|xkFDL!cGIRIZdaP#ze3)$x>+f?_;W32D;iEk?4yKcVI znU@8?Fb=LE4_dqM74@+HUoPGX*s4ecr5pgkAzu@q+zSHiE>VpETYlmFry?@8tLcE|By`tm;dqSz(r z&0YB1bH|$#W0|`YzQFFiq2xO4IsY*JyHo6$ya^u`-zONSx0hoob)2TG>n7r<`2G*f z&wr>5`QbKPVEuFF@Xntp8yq~BSfcZG4j!Psi||+cgfYPXgp1N?QqQ~h@NC^%xtVa{ zk0ba`QZKmA8{GHzQqL89M}2|?u98W9I1Gk;a3}~TFZIEpS$%Zj@JHt87u+k>NN~s{ zR(m6BQ1}`Lx*yL-)&K+e!hqHvpo67?Q64(vHomd2NPQ4Ih_<{=JwK&PF|EpL((umU zu5WwqApiBwA>R2RWhvUSv9HvxyeyW^V+9TzK1-Y}bT9o*dPn+3*Y;^Bu(YojQj0%r z1r~q0uCY2CeC&e`ZY;LC&hf?swmaV|UT!`0?N4akCDD2WAL{MugU)~Y&bVYAzS5`Z zSL(A-@(nLNe8QuN4bJ|IMm@XHdG_Y0XOHUH_0BW&I?+Y5d1^{>JM-~~o?YWS`#sNW zdj}ogY`vZ>cAou)XGZ?q8?fEjJNoa4vZaekHe{)w_V{2$=|ll%|)$G=!xm@hx}7sG`S_E+V?|I)u1Ti^#UiK5^Co_qkKZI!ntoY{UFGs@q2Hgsa;R%%Rg&x0<^ zOrHEpn}Wz-^~>TPWku+j&|ybjz2fr|Lvq}f;UiF)W5?v<`%APczrn@CijD5uQTp~e zcy8Q3zkPQMe&e?f^NH&zcXj$wa__HrJx zd>H<=fv?SFBp4r{53&u@c*(KnoqnEG`4xZczj@F

WHo%NV?Tb$1Hgzpbd@pul3F($tjgLs2w&6GnYQss@#;?ctg|(=e$}-XzZ-M^ zkM{*OKjZZcTPlbzx^t!@Hv){o;tqCP;vD)<-&KZh~t`y;tF z&Oz_5LWYS>r2k58${y2w7BSAcmTi{x-|Y1V7Xr{?K6p|J4GQ0uxinY}4a#4X2Mtz3 zgBC~mPI!3T-^tBSect%L1g#xKr#^;WW`Hj-`2!slcFpa$`SS-XKO8UlfKIRxevF*J zhL~;F>M~W1?tHCR{+4sTqER_|+9Jw7&3fJMo%)*1T>O*Z`uJt6y(8y(Y4cgU32 z+xL`o$@^MfQ+^;}|Rt&s`54LoUXe@~EDuVz4bSQegZp0#{0;;gS&T4t?9^gc)|$5rIt#ujdF#CN=dHs7F4?DD1G z3YpDbUEXuq3JWH(H$&|;M6}N0wAbcb+rA-#c(3&dWDs_DM@b^0*b?je^X}o(hwdlF zjr-=31{<4T_q?KqHoNO61Kr3;@e}!hyfxI%%)rmZTttvp+OzGw-wm(!`Y0d$Sn1o~ zS+#uh$UJXc7M5B!zSeBcpx*iNhhMw)kk)5kzlOTuQ7V%UzZ@GyKKv5))#c;E*YzHB z@N@aD95}>TFYx%Ck)CfteJ=yI1+-Zk0sjUEcR@1)1Vx-@$8B=)_3@4LK4iqNCVIHD zxL2{?fBU8G$zL)L z-tc{|KE|>;jJ-|&Q^=}yPF>CBx$#zq-K}qcWf8xRy5AVa8`b)>`_0|nH@|nj+2wxo zQGQW4Hs8*F7Hxi$UrPhyuS}+~uYXQnr&Z3k$IT70Der4(U4Z2OeY7w5HjcWntW4^EP<6)Dds9xf}2c zyLg()b!?hk;K28dCgRvM@V_G3wQbII_Lr~L7~!{P^V=pn zo%Y;TwR}b8==u^g87oW|w2f##Ju9;=SMCy#FPY!((3e%6HAQ zbNgA9!y|t~`P20EQvQiuMi(qf?q)w~Uc*O|kCJZ(_;;8#<&?j-<)49@c$xH8$%PM` z<>;&_M>Y({156lRFVns#e>?zwqGr#B9n}6XVCV73sGEc3=@$kc+0C_bGUhWMCFExo zKlR=Nrw`fr!FQ!NCY1*%+silc)F+bV_*A*Z7ag!RsN+Wq*tvR<^2P}H)1aOGT<=c= zk}twfY&kH4&p15M$9L@au|TrMLc%Ulr$8nkG4$Z z-WVsg4X=mUu_T)kxfoai>)`7Jt9`^8&mm? zxY9gg?cavCil1FJ6TD{6eQpWyO#J)nh{_hd3qOKx7hSy`UEt*YgZ1PEL32zJ@%+Gb;cRbGoMCUd~M2Y5zd^R_c z&!+ru=m6*oqrZEK@2q|Ry=Y9zdz6w+!I{rD!QZ3o-8SS#Nr%4H@_BGVdPGz*1)V}V zkM>?`ohsJ^ICk1BwRqZAWN~vf-;2j@BiBkC+w?5zcIGVC#wS|-u5~qZXFGold92%b zvCz(Xul9>*PsICZTYVR8)&ajCi|uW=4?Y6k9xuVBlN^$6E?;XJyqbnAv+@%f!XMtsdeCJ>$gY0+ zlgEAp$!qxlw-DFk)uDAv?Dpn7zL~~1=v$Xb&dXNO``_YSZ(h7UlrS$N$|8Bm?|J=- zo}pip&d{$(Zoe9a`*oMsFY563OR@pGVnn}IjqVqHxL}A@hS!gOHI5h!XFf*gYcJXS zxx?@mUQOxPbZE-NhLcrhN?$4XvJYQ+Exz<8@TGU-ORvFK9mkhG4ZEiYn12=+#ZPe_ zTJP3F-8+AHvis00Cl{0-KN(-MkN2)R9A_T8(UGNV6tRb46?Jxziv-vfE<+E096ciq z-TQqLx?j)Ogzth!BmVMr_{-PfFJFhhe8rjH{|C`E;(QvBsw|&6~~& z)!EclvmD?13ntt*4qa*ob*-na_0+YVx>l~)zqOaTj%H`o#lzX{MJA)~CEknULl5C& ze_UR!@M()q8s!cfc3WCpz}G1(JKIGfW??{O3MKyjU%3 z(%4PS`%}5eeLTnJsjrP#+hzb8iv1+S9?%xo&AkngWH;~F>o(^aeWkULHsF`dvVlt7 zHoW`Av|+DJ1bfx`;G5%-++-DcQ;2%usRQKvs@v!OE^vS2=vMTlxfb2GhIe&dk-d*Z z?7h}HLPPI3Ws;r71nL5mTbn5wNx~OfcaJW=!6}z~h(LRW_bm>^B9dXP4lWPxQ(8YZ zuvz$MfSq4v`SEk-sQ4>eALA5nw&Q0UtU==I4OBh_zA69U;9ziP0JR~njWf64ujv}a zVc}wA2`*U#QW@-y4Sfd@$|f7V;r7DUZ#=$j2dTun)2KHW5T&Z`_s}tVtx(>3$@pO z5Pt-AS92q{Dm|mfWLCzJ4VKR4L|9L9%Ju-e74WP5@T>jslJ)SC1Hg5^%S$rhBl0Wi z?Au;^wbD0Ef`hhh>Ume);QRmMy0IDMk5=73qwej{vgIG-$dWCxg)(%cJ7Vaw9!)X# zj44zZr~j5Fp{H6~7OvcbEX+5`c^|y+y8%bnE~F0oE$>yh@9kxOvK{@WMddb)3D}AWq%*Hgo z1xwijV9c|&-k4)27c3R+;R_$kMr51%lEkc}=L1hIhW<(eN##~Zb@7Y5`WU!?zKj0; z!DJ?5L6@&LG5qH|yHwABT?{{h_N?W(`<;UDV1JImpc|K;!S}&YG5M*(POO0J@Jqws zDZdWgT-`6*LOG$8ziu9Jb=TvgwXzRb!UJ3JnaM{$%t*xX5#YaF#5p^gy@@5k|$NFa1s2tzz9?Ba;E9?c9|LyecGHIP2I~B}G`{{W;DgU= za}RJs7TLVaJ^0Gd&&a)jox|AGhDSF?@JIAsq4OR>eNU5@!OpFjn*5f(ZS;Vb&O6acJ-o(^#8_aq3h2;3^{*( z`LkqHzFEZ=F2EjLI1ZZ+-W`vLUmL6M$+lYoy=cDPz_+S6An8NmH`4Q!=dl~UpuCSq zzHSO$L3!7)f?>jlmKE2u$ z+VAPpU$XU4o2$Zg;zcEM!ga#+hAjHenEl_|Irizl-N0LN z_*QSOnJ-TV?q*D{(a$r@_iXE57+&8{yYPh$10M)J@A_2Wos!wowWS;D9shgZ;k`6C z5@3D@t3o@~E;@#7UuRS3UOojsOgq7gV&qeldVltuGncHv+VupjPw2by8}K1>p4aI1 zey{!f$a0;7B7cT-o=)Z#{Rn@QbVqV4v6dm9M)4W?`(^s;?~CA;3*3I{!pP32w;p|- z=5u&G8sA2tLjZzP_o(PY+X-&X;? z$1eDEH++uuHsp;N$RGdp!^F^8Uzcbx58hS8yYkD-;5-FrHTwYZ6^jQ4=gQZA~|ai-X8&Obf&kHNW1$fthHaJJW&=!p{c z-fc8jC70Z@s((KD#V&j(ki7cz8`;pZ{p1#3s?n9n_ z4S#Z*eBqNnW_{i*$UMo(e%8AF#52jpzi=Jqzm9wOOuhLcvX;C<&wtizev|zv%k`eE zW0Kuhxm|UzAElRX{>rm^`H#xaI49GtqdmiSIvX?{y0fK(n8-A7!`CV{5+Es zp#hvzT!UgAv`+R5=C?6{KE|AD|Ev75T7!4+Zc)E<6#uni0@93C{j$0w`mOdu>0bY= zao6w1HUg&)X0_Q^iTdoksmU>?-#GXtxwRB)yWOmORPlfr!~?c*z4|=UvAWcW6U@(! zOBjP0Wx78GoR5UYw7-e({p#Hgj@QAP#s!Y_gVgrSl5wY(9n|%>)6U+{M&gwP6L{4m z@4Nlj%=?M4M-MOD0bi{quAm2=sBy>e1*O4f`5&Zj%a`-K_Fn<79{8f3v5%>6u!{43 zp*Q#dy6O0&@LFqHTIVF6v5nFA*G%S^?*a?JU;6CjA4H~Jmb<{oW0(<99!2>yGn$qY zE9JenopF8SB(%r(URegPSQzU6v2t4!({J^+!QFHG1=>=KN+)xw96RzGKLB3M4WKt3 zAKaz2%Yge$f-!<0oBU&3%NR%C2lbf$;r*|TejnTxUO%BRgV&#QaC!tjkKUhB?CL%E zYTUMmeV$*X9{F$l{`zB_7vhf>m;z4^0>5rx>+SPc?!q?2cm>xSVA{p=cmpx1=u%zp zXDy$(N;BVH4ASerWPU}9yqDLOXV*9+^Y~t|J@xMq+hfbm6x)LxQy-7!CRd=3Dn~&K zc_W=oYpR}p_HBFzUEq>(gi1e?E*M9jmEPyYEJzOjUbY7E-qWj8$NhY(xz|6jR`v4L zFt&rLYaKYEvyIz`gD-<7BhXa{y5ejd{G<3>pd$+p#<|>$-$~IA?2~%!x1Y{l-$ryk z@eY6a3>(8_>Sp+2n9ybF4dXO+oThRE`VRW#Qd^FFsC9=1Xv^NyN4;m;ao0-GciuB* zC&72n({b$)(swcDwHBI@Z6{fvd|m%W+?zL+TQrA^-@qfi{bj^<*tiVsB@d2Yg1&;^ zY5bUhDR-T+nt z(Q$Kut^XdL(#jZG+tIs`KOJ72P8RY-{-NtU`Qyg^1XRwt?PAJ5gI@gy=ey%x?9W-B z!GI?%%uh@!|Cc;iH{v;Cc0PR==&!OIdodx~-jilW%>%#OFw-N?yy}G!K`( zZ(rwI2ad!1;F}rnH}L~_#tC;n{hyyUEaBP)(VXV@Q#Beb$H z8`(&%9gA0Xtc-mo&++dLte{TGqfaV_Rr);b>u_|10KDh}(3Hn(@x2!A7Hn*NQ{la-{u20)=x(UY z`eKIjIXJlCjJcaR72OH8l4o}lli;kIhMFuNW)5QX-w=1A^(*NfUSCtR8^#W*V18FA8wQ18yoTT;E%)9Z@*#gJRG(#;rlLp98t<2B)e)oRR2?4u*cWgA6yyo;98~SF(F4u46z@3|_#+W;xpQW-%68xUe zx#U%6n>%JftJ^}RFM>~YEVk)5=H%+Yxb|`Lq63xi`f(j4g_Xc_9I(m;mgBmE$x7^- zO4&E$uj+ICA9|ji7#L7~XLP@3`=EhwzX%oz{%1cAO<*ggCl>RZy|SgjWM65Pn=5;q z&6Pclw#U=sS zl#8gr(f&3DYeo4otxpk#CaebC8uDjP;?Oh;C;Hnle^sq=Zp@DH7DN`oW$DQpn> zdd)fHbp4YVm_`4q&Uf;c4e^2yzL?T%yBDb#_@*meU;JV-a5=tkYrAyh+Ss12!rRry z8~C+$(bJj4-9%fytn$U|r}Oy!&BO%aYgwW4%4qA;ls`{hCHz|(>C`#a7xUGn$eKT4 zZ%jh(rGL6+57Vw4*mCkUHQ+xKe1>2K%muS+ftALk_jmBEeYfGv?-u*sZ48r#ia57a zP1YIfz1)3QvG&DhM>$&oenfkM_xIoL%CIiveINQZW#1;IE%ml!3^>5^2KZM`J8SsZ z`bXZ@I*H>;%Op1LMR4Lp>{ii@?DYf08|b>1xldt-DsMD&JV`Ob=`NlTv;N}`Qa|m* zh)?N!4Z9Z{M)w}TgnL%|ZufwjvY#!l^35YKK5nigzb$dM=L6#-#PPA7K>VYVYhr(P zbl@GvcreU3>?vfHC;q7N&d@aNNmk7Q_!-zw%g zKG45Kt>5D)aKlz=&BU(SPTRfIcR#t)Y>s8V4N#}!|IQ*-C8Md!#Rbkk->mljx9|U- zATTWjrYD`b5S?@)>!RfRLM=`{Fx_l^P%sb-Z;x2N`9bpAi01@)2bWqJSvgE2x8nEq z)5uP6T{Ln(zkV8dT;3JxY+M@op2}CU?+)5HNnQ8wACVsS#kt_<>Xx0fZQK0H zaGN*qj;-UWx%P~f2UQ1c-oh_!)*F{D*Q=a1!~F7oz1LucNCQ||c^>V2`+i1!ilU9k=Rc)AjFDXkge@A2sp?m8fH!t+&3P;O}6lds|} z!Qc1i*B@3{{b4wMI0HV5EwO7yeYEfm)_VLtY?U`s&iNsCDEFQ4R{XN_QfL<5o-Q>5 zGouR%vog%HNAOd>$iHYk_EYw=VPm5QlLI5S@+@@tE_`jQ4Yg*hx%c5C(A)v?+oqs% z#R+v?%KjE`O8AZcX>(^$qO}VCA4}NV>d*g!?be|@5pi_Dz4>OBwSi;M1U#rHeBa3i z=B3)?T;53jgvRIuyRJ9g+`H)obSYaFnUHME*|ueU;seS3u_%5N@$}=Hgh$G`PW?6) zoP07XS;Or`Up)#RTgCNk_KjS~KJR6L?8=vDr+Xs)TJ+dirfQRP_)hX$cCs#_^;YeJ zu|5@eqT+g3<77^QP38Du;QPDE$cx{}Tu5)hPmVtbdlH*NxTShDKbrdzat3M5M(vc- z2Yc3=ab(81Q-Cx6o3z@Xy>4(*Yh_2!orAoymUb2+8&)#+s!R4ce&kmdBZ~(A96C|L zS;QsChzq7y51g#D~RED0avURTQjDL0@X0or4EsriW zNp*K|9W|l$*H2-$@Lc{ZuMLe^e&izU;Q}U4u-3c{Jop9lFE}k{j9MGhT8PdS)EY?x zaQi!SuNXw@8=Ep*Uw5txUyYHrGFca^1&?aMqgrrRb*>ej^UUjm%Cz32KCjj@(Y3FS z%2O}@#F@&~clGxf`YYI3oCjvqeLN1#mb+)Q%kCK}voH(San7stH#C^+%L}L{hCgEy zFjCushePX*k5_BA+jG%>h}Y8dqqhI_xythkW;ba~(8Dc{Ep$w_T$W1CX}A~~+!h#DxwA((w#PNq|Bbl^&N1dw_$qh?>^zcxTl1*-;(6Wxx*}s6 z0e{A&yklN}CUcE!MP8!|qx1eBate)>op%R@`POfcoqm7g5*uGRobSlufyb|MpbuzS z>!;#d;#u9HaCvwE9ZK2PvAU4 zctRt7vqr}IBI7?B8ntV!)X_y<-SAb()OF0y4tT)|-Vv`8FTiL1>JE6p8}Nd)#N{@^ z3v@Q7Cs!Nc1$Uf3k{A3-kyC#qalt+aaoejqVXK& zzl(9k@d3#HX=5oRCurko=F{Ox8BH6}S@hiFNhDwS|ICx7Gbf^_BecJdxv8f;kM;$7 z>7KFy68Hcensap}VjDzrt;A_reCyyWZDKm|&VX-o@ke{Q)N<;tl^!eX?IfbAI`coJj8H4Bp0wv+g(+ z`K~%%B4&KXVAkc#TOGNg2M%HbX$=wjA?E>bSWFICa6vk~beWfa!~R?FD0Mybi9Hoc zK!3=pDs+aU^e0s7TtC3I=5pZ#@QZiFL#$1GDSQWck}iTDeKNIHBa5+tp!E*MHA3HjzPvU04Q3dg(mO1jz@wY^Mrx{sZ>bXx=Hwq7UT;Pw4m<(> z^{*R?KV)!zsn(8l=9bouyTR*B&fr~dGV8M3Gk7-;3!1^WG#`Swc%kIa1FX@GJ$2pT zt3Pt@;n}NhvFpyNbJ}H$>uh+&jqnWSb6X;MVih>6bG35K*uFey_QD5>3&#e`60^4%S)M&%cWzJwCeID%=>KSeF%TamJtVg&qe)uj!a8lGX}ba?|FJy32{@hSsXbKZo1|?2k+H?t5bvLM@oSc zYt~1R*~g$M_)AS_#=Y>hp zlf^u1Oqrzo6i-enJ-mO~fh~*vk#%_w_`HL;!G~baHMt+Y!G2H6Gwz3H=vq9(*^8p{ ztD`NKlh4u9hjlhv7kr=_{?OyX=176ynb|Z4y*Y|KCK%`p?Ox;<=XJJcbMAKUn(VFF ztOw;*FYcSgJY{2J9Xl02oV{w*yki?;hozS+$$N>T)3Y~b<7dp~tj_mpvyCxj&!zoS zvBR0?XOOoFJf|=6|7s4^mxZ#UDVJV7y3fL|_j;z}F(Y(1#UwmIZY6S$)n7kSXR-E{ zkN;ien`=M+TTh*ubpL#7?}OjJFa1h3@{ODU6Jt)-qsQ#Onf-q58st8BoM>G<+j|#( zj=NSn(w{uT?T7YJ3?bX7_FuC3Uw!dV+0m2L#5j2Cuq$Sfn;|>8NjgIoF)^Ccm&Pxw zdz086#k5?FetF9n^Q^u9VG;L<*6*|TV;MT>CE(93%=HV<>|W?|Idk23bLBkpx@~ME zCZ}<{nY)MkP7}0eOz+`50o9MMojrwl$%XLAb?~<7AL*UfXtL}%)6-8c%hvVu(^Ima z$IsV@9@0pRk@U0Yfsww~{|fLC@w4sn#&XLx-xK4 zarB8HIpC~8I(Xz&eQO!V9_GE2`l`?y#n&{?;%nvL z%EFjQHr!p%ujg7jE~Txs%h&W?wK2~+`dGN>+;cs=cy~V(S13MqhvMhxi}sr-zONG+ z);fF*eo*u#)_R?s2`{kDseXQ%Uwmfl8N+|f{?%5M=SByv=Qrj%cl$>whwhi~o6!4i zEbKGfKSEzd+^Cf!67D?siJ`afX+C=Ffc6`v02E z)9igF&%sXaHSZqp_0y)}GsTNz|DbO!FZR=C4{eYN zYXQ26-S5X-X^la9{zl{F6YMRNJzk40vJhRQan8MmYj0j|Z2^5F-Dw7J@${~^2hSVM z#jhD{StfYGYyZO9@RfS+JY?%Q*63KPNh2GA;GujYA#f1=*s*=!NoVtJn|N3D6*ivg zI@L3gcc{mfhn+p!i&YNK{DV`@erzZAMX}1UQ}6f6=dcFDyw6uTytdk_XO>gXWt2~H z`xkhSJp|}A`NZIrLQ`Sl6>H6f_#&KrKiUI^3||_(U=1se%qe1mXoOPVP)6RcT=GW_`=jEd3 z9YfDsMqFb7z~0l#eRk)zn%K)&1NU3RVVfDrc8M- zH21~8CJ)$YzPD0t$Cz+(y}ib}9`5{_YdG>wWj?>SAKqiFMjQS!^5zX@D#j{iB&`YUU)&9kCM?>~eLC@`V+FnULPO?WG3 zt_>_l$2bDqUyQtHWm(OGrFHnjnro3a_rve+r|&E0^vvru8J6F#gx~9WrOWRhw|4LF zUSF>*`3`j5058auox-|ujD5gUkT*IDTKkE&BX2@CmyrS`P`4dEgP)YM!E(MlHJEeD)Z%b7H;=fA0C~0o z+2vCUcviugVHr8MO|6}`d@6C7^{XGBl3Y&y#zbWKRAj?aTUI*RmNi5wrY?tfL?ZF2 z%XyZEFUi)mMsXX&CXmo2GC4NYY%r%o%!~2|=sFE9=cS6+(~@9skdq%KNFTiCW!m#X z{8m1EB#*fj&B`~ifPEudfzAAJX7bk9{JN?tvop?I%a3poYZTH4KZ6{$^`mcj^`C`a z<&3nZ)nByr%SH@w>shtmR1M4;CW%-s92E<#?*uSGaI6(QxnbU3i73= z#Ah$Q((c7;kUW_H-kX(=PIvgqar2$9T}%HrJp-4NOYpzEXKy*rHt89BNzY#6ndNAD7YH{cO$c6Q`7FdiW_2&Uf;~-^;@*hN_ePW`Bayg zEW5`s#k&@-Iv91(Fw>H;+C- zu1t9DKk=kzwyZxQ^U}8d{)I&^*zM3cz}G&+u#A^ z?3>WHe-tmcOYuwen{TJ{TRVBV{iYilm7j@xTBifduk=TBql4l&c|CefjyWAO*c!?+!nI>#6%k{pJc{H7X03{xr-keAkJj?vAbOZrWNEAoe1}#} z+j;cx!Ob~a$TR!yU5-xlEcX%OC@$p}n(8nKVj78&`vLdgq~27iXzq=J@@2^9Xk*pT z5j*D-uR(bye5Q;3R)ELy&nyR*<*Qf$F3Z30CDnmFKZW}IwD}142Wc|1>OtY4gtZX9j7OLf!7pHf$Y+U!tyRm*KEr;odwHky^2S-SMiZn^ez(3kdZ z=Q(?D;bT0H>3MGS^bxO}9OVh-{0zzq)wdT|M`CWz)wOi}Uwk-OjBWHOo_~b09R8o= z|3mysf3P%jhWw+u!QCNVZsR*HOn&L#k;mYS!{;2o=DY5*n9Fg@Aw0jU#@U0H^$vaU z>v1*F!VkDIdxU(p`AUY@bAreM(f=#hy5MMi33)$D!BOp9c?G&m5%U>AR}SG<=t5VD zL#L1Hmv@jUtASsW%?iHTT7eFt`~=$j4DYn@=K3zocb>mo_vlr-cf`p0DZL=IN*%Wl>@ z){#4XE-yekkdV;Z!JjrarBw-8aD7Tbav);KDK5K4#m_Y}#Pk&g@hD zdPi%6TW$N9wtbx|p!VN%pKC4d0s8PDy18_sY|fI6l2=#jnp)rNfzBS@!yKa91dv;u z&>3;`R(4%S`(5y|)%3N3vuhKQL;Oot2B<4ST?<7=z{mi@^n~cZ+@}X0c^8b`I_$X{ z(*RR;SQ8tGr7d&UxLv%7>(gXpKopXNq#Hp#~*A5sKA6aC)QxmRbDvtI-~=8<1{ zy5NF-=^&misJ`y=_4PmKtDpZl>x;wj`bFgLDWlKAwLpyXN<@F)vf?>vf!Q?TIBHo( z5e`lRhjcy7jYTlvW*P5o=RL^>Z}0pJ-nI9Iu*udo}9L;oSh=>pI}Jm!t2MpB$XC-#5JX_v-KH@16N}Y}Sa~Ur#POVEf#X zk@Ick3UK_Y503KNohe>^34Ry9f1sLmG(QaYF(zy8GoS0&Pr@3lT@xQFV~i^EVq&(- zUIHfsk1}vVzM2%W?)$>oanK$#=+z%$jNY|{Bl{et!Q;BI?e~aZQpaA}=bh#_ys^Ta zOW9vTW$v6-xG<*O)?#Dk{*BlYKfFBr@?dk(DA?c|AM*K+z&CqdBORm zAaYG~WBEP#{ItJoifR57xvwhQq#I-BNG8P10{md;&2!dn3DMRx6KYSO+uo#ewD;oM z#a0NQV@@;oJX(PsET7q0-nGvQhHZ&3&ogL~y}t0j4C`athE0O(SW3QwCWAg4$hmc@ z?2bTAx&8IqNSWxBvX!>ew%*C0KCiBYbJlNp!36sjvQJ&PcGTaJM9r3Ev{OP^khRPr zo)^!l-V($vE5`otQ0(^^kzyKm&X z!VUeUS$hQsj_drW5@eR;Nr_7&Lo96~&xqZ0{0cT!2%6syO&Vw*kALY3#V$P<=wUng z-Kxp&R!x4lYVy0~t!dk8#uwKq=E0!rkSDMmyJh2c>{I!U_b|QycI$R@l5*NyM%hc0 zXKNTy|nPt{iAANtOcl`J@hB@-{cflkEk2WSNxv6RJ5$oTIX34)*_!zpO^b6uT zn@bW|Hn*sK9?MEb=vNCml=nXS9t#KI>-Ij9B^n(la`%PFwn?!sZhfUAm;7y>^Zk*0 zS-5xbZ}^9NH0$sGDr^n^epzpw)f+<@V^IB5+T6ameND@jLibaQPCk5D?}X5? z!9OsG{A<`mX>5KQD{bRpGgv3iBsL?fY1uyf0N{~@MHE;tUe&>VwtB;UHal*Ul`O|@ zjPozO@2}X47$}?7cBi$EgKoaMh5eq6qwzk-cxCJDcgO4>?-+3W9}|Z2&piZhacH;L z)}im$@V)Z=I@s&-x4lk$(9S%4f6h?8sML+xbp%Dx|9?82hHBY=Q`s+(#S;;8%uVrs{ zNh&KT-Y-4gd)7tF!GF?LFvfmf-ih%Xv?}xq$dd0sN3y;yso}T!MWKt|QxOSoe>> zpVmRE-gjmC?oxBw-tRr%)>8_f>-sQ$T6}T|e0f(fr}Co|VcW=eh9Bc}zV-11>k3Q| zxg6|^HEi3Wc7Mw}vkq`Nj7{RzDIfTeOQWav@~O4())>CG6fkl6 zbe`1>>i)snIdVW_+)bUDU;i9`Yo~9H>xc2(|IQ5Xz}D%(G5YAChG^r-h-o{ixW>_S ze#2j9bhu7$KD{}FmWJkaI`gSV>XO z_5^re3-6R)7`=?xuwdVw6U6AwWZtn$)Zeq9SJ9&Mjx_llB79>S3YlZd(OoTk(eK3{ z;nTYw<9P||@TKhWj2mZ<=TI5CsLF=+R#X39e(uztMxPO{{{{2C$A?GI!7jyd*JSVA z5<`ZhXS!o7aK;#AT|{=I&c-MP2Z+}>9i3G+)vH6_T9~-+cj1?bBWL!}Ms1t3cHHxq z!Cgy$B{oBcslP0_oAs^llmC8W(XibhzOv%4PG8^pANJpjvGJXghxkkS8t7;-@%zdp z0legozyUEy=d=x0W$YZR%G^1Ke>Mc0ibu~$+PExyfb1tpcH>_i_mAspgYJ`@1Cg`P4rvnPIHK^N$9MTE1~q%;Ircu#|Q6c zo-NG1_of+R-_u%Ft!Tk*<2S-HUAuK_?~3B!KcRYP+u^@g^?N*A@=fsifD5nmxah!7 zsAB{_cK3JBw)*Dq{_X|5t2La3*za1yS%h5{&5E)Y5c>hW{7HWInymIXZ7WV+YyXYl z6g-CS^d3AF{nP1_V>_!auK}}8w-0`KvdY>o!|kW8Ar=ze*BK8K{+1m5_%)gh^nzV; zuv2stbL<*RN6?gP5BZ1>30fW#eTj=Up;QdPfl(Jra@v!SQBr(inY^H z&IAzcnp0OFUch~u{JKjW-*!Lu_{Z(Dk2}wr4RHYS-JZ}h#$An$YOtY{qse6N-f}7B zwykC-Z+tKJYCjb(E==Jsv$6`l6@X6j&||jgnS8so0UP)7I`99KGVi@ye*d>V;5KMZXHfnADNklQ^V9qZm(IokdvK>S?)ZE+3eU$y zDFe^r(ZWsM{DBiET>KfGAAtF?`<4SK)>m0iO*0pw0mWrbrCo5IJ?#cr?5t;A2fyip zUMlc))bhS~;c9+keY6XXi(X~FC=M{nd>ft>n~+mCbNz=o;1$nqqC8&X{8rrW&|meO znk|~g8~pElmc5^!jkd&DvyMM;%cl6LMThOTtBq3!?Z)x#+Oj^=T1vm-)a|V=?*)eO z$i;TO$-Z+xu~qD8jyJCY%4K zxIV6X{`~YZ#`;5s*T1E2%2zW4Z+M&s?>$cfZ}iLg^uL^O;p=FP06W1@{72x`)rJ~0A*jMw%PeEq862X1-r>xxHPt4y$RH}!jPl-%rOEO&m$H%7)48a3yB zerV(yJH;Ms&H*~Hz@0n1;8=}B~7BK{9vmS*uS^f3(| zLG7u}92RZWa=qHl$0s1n~bF_cey8oUbj#fkS{ zCmaLDCFmb3fbWarGdSa!T;;5jbkpw|3+GUs=C2lAqs@p1sUPYC^Dq9v7%U&b4jw^Y z;FN48f0+}@e`m`xibn(X-{;rTxl4C~)4%`8;W?tW5&l-%^yJ-ayS_Ob&)>=1roiv6 zQs!8=1z#0EQQcFR@8v`Doze8q;F#z@hi*3shoKc0 zzn%A;zTMe!6>}l`Y0;=TvA%F{p&K03{QNu^urgtYAA$qYLBHd}<#+Kzd%n%EyiAKH z!G|O_m1k0OH4VN}J2zM-y;nMi{4E6^gs;6%d~GB@dPs9fSp@yYlcSpJ-bSCSt#NQv z{^eE3iuu4LUgOgVfWvCH9z83sSx~q(3;YJJCI3?MiB*CpbV?V~Icrl)>xAdQP09n} z72pH*Rfl5gvGu(*i28VfxHr~7YK^l7f{yHz*)@njowo)74{SCKoNbO?r17VzxATfX zJGzbC1L&0*u-m@e84*)!Jdy?sAax4?bhYx5P_ z91YX&06WEWSbc!LXbrAC!h7&=j~91JPvo6AxE_Z_R%_nCb=i_JLtHZWs+f}#(}2?y z56>KZM7bn?K(`W&Aw4IVd}-uaVZO?(P#Ey1ReFp=|9DZy(cBl%pEaO=67cUJq}x!ZYXtllw!6UDSC+z<6fH%%cYfYqsuX^QtpZ9m25N~i7K zqIb*YY}-uIQPPk@KSYxcTHTUv6X`{P1?{{o!~M@!x#f zMeljD4Bv7wGGFcA%pAyHB6^ZfQ8KWc_hdhdFLeg`f6@uB5j}*!r#NR+g!u=*=x?a$ zer%9j&Q6LdZ^MwhapF;i<+F1?>na!5vYnjz6|8rsXrqaB&{m#Bo#(_0h3r{hw=?D` zqrUm9`_1?G=4qZ?%0GG|=Nx1t^H@`jp8-x&eQiN90xNe{&VT3tRbxtaR|!;VasE{)EN}zv%{ly1^gu5&70j>5KN) z?%=l#+7*BLD?ZMk`Z59B1D1xp!1i0<1N{4HSr1)q!tMLv!~0{GD0k|>8_0RB2_B%V z7yZ1KGVSGi%%#02=Ps&auji{ru2|H5z+`Q#GFg2!@E6S&ZM5%aZ`K>s4WC}R7QH}a ziZReU9YKE&yT8)Ubnom94UZV7Bd70e`GR7=kdNA%@ma2KTRalah2M&kI}WZ6@@&2H zdKoy=zUktdlRUeJe?Ok@E1q|dvrrL;%bDx zzr^}WhxvhMd2leaQ*;^xCW?;;0u$x>5S>Y{7OueClagf{ktJRDM=S0w>z6MO_}jb* zi-P0|0aojYlaL=k^shK4;a3~*u<~9ogLd@2=u$CB8NjuXH8A-Td&pJxIPi#p-wnV+ zuqtN`L@Q}xs~!VpQFH-6O=^A~V}2AXyF+sW4Hi+S=vRIBzblwF0#gsagj25^r*GiY zd-2a>HXr6NK6x=*_$CKJ--Yh6g}cX4C-bkpH<9m{fyj5=IY%GIpKkL$R0yZArEi6{ zGr-B|#5=5KoNt^mCrZ%kS2DJvlQQe}A6)@s32j@jwZUm0lqxI(6nfAQE=cB-pxyC=za;*=>Lo^Jm zzv{x;qhI9}5t5FO@1y)XCHO5AQ(Stgq)xoL;#4uYq{266+c7!R*&x4MA!7a;GcOY|(9WDn9n0+?!?4(>QU zQ`zNd=2Cd&FBjfv%oE;Y%$JQC^NXYS)e`H!8Hrz_#VN8AE-h|_23t$XVG>VdD_(Mg z_zU~BTaiOa=`zTkq37G8;XB0JG>7Yyn}U5wFGPYT9>eF3t=gJt#*m*snrzI@Xn%2X zM*9=wMOegp$em5S=r}r?OXrxp0i8dFUb{UONbcc0lgRjB-OP)fymRmM{vP9Y4eH+&Q?c_NLRGa&ch0 zRhG~m>r@@uO9pQ%e3ABUqOAhkR?xO3-DtjTCs?U=3P!cFoOT@i@aRQn*i^OLulO#} z2iLXsI-@CYHv4_KRzEyH=+3tte)M&RHYUx%c<|GQlV4!iU$YiJUJ2*2max`cBwwX; zB*s*FcXX3J)C6f$5p_j$zYRHb*2 zH!o6-{Xss$%k6$z=^yx%P7l&1<;P8jb8gn1lz)mcKdt+(ti zPUaEsdbe*K6Is~W>7HxzQFm?`6J^oDjc4G04_Ns;JipT0qV{}~k!QPx@a@Px$s?9P z_*0^@M2OcbVeXgRZN9o4J^*fXc(|dp0O7yZLQ}|)YRyT4HJiztSp{FshjweS!T9b*h=T-)8fB$>*KcKQ|1o z6k`G3n!Wgs?ZlVBdphzsQ};@A4C!zdR@^JTeg-;QsGG1&K_oCD0- zobZo0kb1>|eCMH|IFM$=f!O-_u9NjbFNWYe^jz8PqwD@Wb*s#N!+f!S#>Q8YJH0Xu z90j{Y^mjk)!hft^k@$r7Z09t3bj}&td4qOjx7&7ZuxAXnB1?%IaAdr#Gchii2W)T0 z2PjZ@tvDNraO{?%1Wv?E9a_ zk4*9VhXh+Ao=NW2-!=?BVy}tsc(UKY3;*-mm_vu>IQ>++nlGK%;=x+Ket5rR&;J?L z?@yt_SA)CxoM~d`KRaM`JP-dQk2{GUMm8jo4HoAAZ)M*?WFNe|!#i(CG+)boE%K>` zIri!&=AyMUQMRcHdC|pOcKyhZ^RfSO>8yFgz`1>WHJ`pRUz;2lI5xNkyC1O6*s$&s zBu4=}&*mqnV&6>!8VYuC3w_G^=K zA&TAR@R_si`F`{N=;|fVzQvUUF_**_pJ|SUV^W+sQXY#m`li-3%kaBeTI$ZRwDdh> zYKnXmU94YOc^h-`Q9Pn@^uj+l<;|wU$#+2#8Try$U!(j8b=}Ipk(~H0vLD^xdmnfD zDcbk~ef~JK;im^jJ`C&EYnkU#XkjmMq4ap7wT55mA=^U4CS&VqPCQvE-qgjMR6rZ7 zmo_&tCp(yv{mjW~=464LlTf8}%wc{MvU7qT+|G&SOYxhFm=nJ|mcHxJ##(5@`YQ4J zmosn6n72;8>%5cm;6wdaSbU9}WE1`*$!=7_XOYdVop%n;Z?J8Q|~e z_ip7qhn_tBG}=PUdh2{*wDrAgj{tmGatWHSI%NVqm$R~Q&rBAh z2Yt+)3r{}$^)2drFZoatu=()Ed{O-I{X_9vHOx;1^8^3Btb+Ne9%$}u`Rd#f+e4+YM$vBbB{ ziVl3`bm`&BG0{!Oq1kcy?OR@5^_6*d2F~7i=hW!oiD5IBy!?e#XPGFA z>V7Z~teX^cc-}?9aZT;3K0GhQGtq%$vUsC@-OpEreP^DfTHU4q9gQ35?q)JNr6vRq6UVH&>PVsPA6Z{3gjsr(9X! zCkI+LS0;;+mE3dg!rV&cqVKb2;H|yE!og+CMm8L|kDOdp@53JW3jKL|RjfZ1Sox^=T;zRb-kc9j zFe@H?CNQBc6?$J&?)Yo^_QDVTSi~6HqW9buIII1??R;}PG;qu8oUJeaIeVatw#%lOff#+8BfJCO zBC|B+fXzuVvke^`T7*w!r=j(HXnh&9UPiuvBfNV6dKWHQdPgTB2Vg6E50ZmsOl6Fm zX=BcEt_{}*;CDxnZNlGU7Ze}H$2+$(9=%6vAqCJ)8kp^_4-}?sEbi3g(%J4hD(~m> ze(43#hpTb|CrVgP38ls)OD?$gVfp*JsKe8Fq{qU`c6sZj(z6%5d(D(s->Jz2^=k~4 zp6GXq`Hhh0Iz=wS1pVnOLRYymdU!9e(VBAr9aA~LWQ%pa5Bncm%-Yo0cjc3V?Inya zbZ;?hr}zZ2Lv^z6(&)$~GtK5W{qVlsgP-VK-+~8c`u0-3UCOtfKBoFUaTfd@SUK|H zll?Y6mA*&GFLw-Bu(xk6>l*(TbMFFPS5@bKuX9eWz0e{>zyi7UMnOP|5bKzeq_mW( zpwyAEj=A;%1qIQ8+Cq{hrKQ2Kr*y2QqYb?`iq_c9YX_aCE%rhbd(jz3bb4}5ZtW>Z ztB%REnD_Htd+%iDkfQ$I|2)r|=Q-JXuf6uV{MPTjerv5=-RMl+_zU{wFF;>Abtk@F z@URs+*0mi!W)M6q2`-neWcMDQ^nJ5VFrz-=Lkn1sl-8U}eXZEBg4u5;J7W@P&5RsS zOf<5(1ek9I=Hg-b{`qP>yRgr9=c@xvj2rnkkzcfw$6UDPzof(3XY%VAe~;Za+N<|U z#_DZ-cE=*fxVZ2mS|g9~2`7-PdMtCN}r2@@4$~ zI=hGEr>64^-bayVA?6Brcg%c&xdYZF6iN?cpMe$3BcgY)r-7qi6(}7#sV1HL=v8BZ z?Xs5Jln(AKA$=8Pjp2u^KW2W;S?b98Lh2HZYJZnw+5Ex9TK zpX(yZsF82wIs7@yC0*;(*=NAva;M%mO%-#awDU^6TNqw4&->;l&NpL}4i0^S^eWnt zpsuK$8+kuvE^Qf4d+ve0#ZMQ*%SuPjN#y=#|6K9Z#ScDo=Oggb7r8DD++_Lbw>S&* z%xw-2Jt946cpkb-XBztC+8W9EGq-VO1309EYz@yT%C z>jyc52l=u%Fxu8j-rM!fBk=xxfsu(GWO1UBe0e29@=b-#7sC%F;}_pBS} zVviEobW!-LVx_*G3mopiul858ANjRQ@+*P8rGESrdU+A~^&)jV!dg|yfE@5%w3wj% zuT$5)K=85sYAb!R{dMJAh8Utm-s z_M`r}qtS2naYmASVqI@BHt0=L|D}KTBbPgQ4(#cl`&r=mQ*@@!PT~9v@FbiL{RVqqh;2%l==JO1dXtY{KcaN#^?A}Qt-16%OX<+-mr4I;%F1)-W0wg}v~!2|e}MPm2hZWV zBM$Xmp4C6;>g^>?{P&169R4>t$ncS>PRg-<9f9by>b*+`b68Vw=p1BD;-|)8KtT}=>dQT-Z8YfM5y6)8;eXH1p zkSkA@bLNWt00FN*;Ed)&zoR;_Pc+Y`Sh%nWY>4JDUqt&3d+kx*c~7iCq5|Af*|H7W z8TWX+r~n^$K{;zJbI?}`k$>&%`!D?^fKK#P%Bay;-!jqeH*xv4Xhk|TlRvXGS=%97H1IBC2efaoTpSF+uZ1!Z!lE2!%Tj%Wg_ygXp zzeHIz@B`r?tx1677BuwApz_|)|ZbTpN zgqF9|)N4JN){hVm#oQd<3Lj(iMS54Y2|m^i{Ip(Dek;uZ#xzchv22Fo-s+ROS6UqY zXUCPXR~dq{_HRVytH1SNhij zlzkQB2Tpn4d3oeZa&!U5_jjp$>Mu6%u6lzXiusmK=-K*@m~T16^Ge=zXG`B=eWyt$ zKEyPrZTq!On00_@tn)j>oJrS6*@EbTmuQbyM<=l88p%12DwjE)Zt7rv#WuyLoT0D3 z`5z~43LMlt&@Mx}0_2GahRov|VtjrIEbTksq`ioM>svKi0}O10$6;`5AFvtHfAJ~W zs4o+J%Fu+H(D<{dHz90Nat_PpUxc#)t&PUNMeQRM)U+^Q^XLM(LeIIhx z8UY()W*pBVE~kUI!kS$*jfyL(W-k9H!<4VRP0Lsp7vQIL*k1j%kAeqd5x}liy&imm z?po^M@GH~$j|bP^YCi2q0691Ydx&zr9>gzi%$|c@+Q3>YXML{ci+SFK*=gYA_m7=U zikDFwjC@f+@MSq`0ZTHlPua(KKkW#mu+D)xgVa$$da2SG=hzjF9`za8(k>c>{}t7k z0)Vhiyi)Ddyipv@+rNHdb0SgnEETqOr(gI znR3!{;0fi-)#t-o7*F;*$&J8U_ZDIU)-o=w7Wc+SKJofcf7c7_nVe7DoZxR|pNms- zd^q(3AFXRl{P3DG%>M4^`Maf;rO@swd~=d7$UgQgH+@9V zG6v~@(tM#Cn2A#r4?T`R{JF_$&&ZsrQN(;w{x zSjxF|vv;j(Tn&tRIDhUC`zal|xN7xG&X+5MHpPb&?|hoE?UcPt*_w}Dq8LKjC;K|4 zu|eJ{=DQP~ud+`w9?t;pLngD~8Q@)NG7~Y*&SOl+P53jg|L?ON?47=8uJ0GZ3E>EJ z3P-Ngv)}`6<%1{L;Fg7xuRWR*QyWf!2T}M3c)~vZIx{}ld{nVd^h4u%h>lJ9F=$8e9>dMQ9%bItzkilT3)qEw6kjO(%yq|7w6U4Er=X>aFf>C<5balb z96S(Re2@OY3wMidwRYhto>jk7jx!%QX!kijS$$uIuTn8#!u~}5cXfO>Q+*@9?DTobd4UV?8K;;z#k_@~8Ha9jBG9{yX=g5ESEb29K1PWxch)kK zw#KGed)*Agw3h-K*&Z)w9vfRfjE-j9xfnJ}uur}JMlQe73n*n>il$f7n zd1K|j3(xOf0-if9z6^!u3(%_IDZJ2F!khO9wxz^*kA@Bf%TmDyScx}Ehsgz=I@fVX z8^CY&UvTJ!yn^{`*{b>ucshN58{b=F%=pMv1GMMp4@1gDma1=;xqZ`|uK1ky=f{_$ zwAVj>8KfV}fvvwhbV*_q@3c05!5xD%s5<`8<MC{AwuK!xe0$E&&g%{kut2VMLy_nPk(>PPT;@Bv@-t& zpN}%%6UCN_<^}A0+$Ysf@|H1oo?O-p%JSED=P>oX=GGUWucA)}z7Ah@cu{twG&_8b zy&&ec!?)}_DDpzQss!3%%|(N3oq0IlvY@@h*EAQUbl`^E_$}kB>s{cdY$T00c!9l{ zVq@OF|9-PBS9%~cTEc#RmF|9j%zGZ$3Jv?`)-Hhe`F78}V8WYQBj$?z{(^~ec%giD zitX~xt%3$XM5k7tlI6mpaMd7?3A02&baK5kvy;U;A z$oFggj!(Cs%eLTaUMCqs|6RV}@MP6-HFf-@_%59LpyUcPt(XXlGvH?-@b%L`)TP;+ zKZEbd^s4elC6{lmi%hyi`I&#F{0EcxouvcH``;SdH0Djcu?<0Ear8Bf=YMD}6#ah) zj7axCYb<`zY1V1}N#pGO`Nw-Uv9-za{!PlZGy$(u+-Y%2U0W_VUqS3C{@lJi(yNin zG4XP6BL&$!f!}8Q>c!x-6VnuG&QVB)Yl@Y|b0y<3gXj9z>lH7leO&vLUeAv?bF0UfkS0Cfk>l(qdZ(ic&mi5F zRim;DwxQcT%F@03WB7b_nX}^}0oJ>2zTJV7#Iz&`mwQ#&_atsp;r&;A~hv7i@qy{L`-c z;Xca*&W!-)E8(#-ICF6eyx)#LW!2KJ0B3SJZFk~8Ed2q4pZjoGH0W>t6uTeDVEYw+ zFkb5?w-bxNwQ93`MxjIlcB4VlRRHQ&}qEG0u6#G1meO}yJ*Ql7%Fm$+I zcD_l8{PSVp%Qx8>@Q<5Wi|LlzAzKK(+X;-6R=&}BH=jCX+i3mmmRT**{P~-m>w@jr@W8N^vJTKj_6d)Cg*K{8 z@wWEcoW57`{dm5wpls-g{T5Ra=#q1lRz+F%9rag}zDYI$=L-4ZZ_C2wT13p4*17(J zV%8*+%~dvb=GAF~yvOscJj-}lA29g%RcGAB-5m&+Fuyzb=}$Z(z&RO(oRa}A%#}_t z8vMeK!n~Uk*DF1th&3Y8!*e(@C&>Em;#;0NnX{;(SNvSx-*l$|V`9(uJ+`@h=0cG^DB9=9#t*~2l}u;9Pf{yN&2 zYum`21@~V2r0YBF9BkhZ{I}~zeetX4exiX?lM~tcKsXX$?yo|7mNktbUez?e48GK7 zhwz)FHvj3B{`ES$ttmS9n^xlneiK&acR0Z9*k@ox-E~o47?Sb z*PQlLbkgi>))t6XqM^vTk)CgGMz3J&$F64>Oy5e;Ke*XLTv7&eeLch_Dy4;?G3It zH^yz?xd)q{JiCeW=*tXr^-jU>CBKDzrq6oLbYre`rl`Mejn5+1r)V724&Zo9a6E%w zsRKIK7&ZY9wVPdfPVC2D`!aRuc?JFOe{X;lxVw7{IG}XpiGnu)_*uJRZ{cSz(3hIS z#Wr8|mYTIS=mQSle*2zY6I`5@ulu7eUYlUR^umiXxa!a1cb&7};!%5E#=8gN>DuQx z{6y`@(>fx2msi4F!Z&9zUrK5;qOt}{TgwN3vFCu+G6c@o&gMt>s;0MpKC(c>$S##vq(bq2U8(;O_ z*z?T40bc`r$NjEWa#9 zFL`7;_~Gy(yr()aI`QQ{_RsweZU5O@r!saTKgJR#_S?WMtKTFx4BKUz=euK z>F@hq^=q?X4y5M9(|_Q;+R@KF*jz5y%)!S>T$lFrkuO^NM|V~;x6gd(Gh^!-z4}%x zs=V`FGhwyh)jkh+mcmPbYX|h&S?KWH9@=#pKBKX>@eX%5eC7@6coV)Oc*x%$4PAjh z`SF$<#jFzRsB_cbWA8J#|A&^_?7ef&;?)E9!R9Nuw{1@c9?-GpbGGYW>AQ5`X|X|_ zO8yjYtzjp9yWFMeHLh+oK+mo{bK1`T4C=?$?x+s3k6~zMKR6nK{42xnwriN}m{4ad z?%E){*LX=j9&V=%)ICH$^x9nM&j0({Ss5-++(mMGj#u>2l1h*HulfqUbry9J?nZCu&U>*Yt8dW7U}&;=;#o7aD36kUicY0eQIJS zaM?DksNpcYrTb6)d;H~1nwHwoO?l#N2jETh@VPf=lLH%fZkTv8d;VuaxU2mT9%}g< z_ru|(;J8M(z&J^!c=&kOhll?DW+u%S2(IGsDS@=MT6}`V(`K|)pohE@94fHM1qb!N zKKmB-{kz-FRZpx6uVsC6qI>=qM>m^=-Y?CQHI}UJU^j>z_`+a;^la(Q_4K`-zHiY!E@5-70(x698NV{~ zY?8l%kMMfs^T-MKdNy{!eZ&VV#-l8swLFvY)7|KkIpn!^og-5u7izKtk%uqG?}6>9 zwFZ^cRf2r30&Xc>>wz6{Bj+}~kMoY{zxFh%qMwqZqT|jH%=fwX9oS=Cz)QNMr3v0U zv|e*UdV$VS?3gsz=1O6i@HIjAqW`lI+ha!%j;MlrHeiD`wWN*9+uNb?KwHDI&uQ5m0>pPatLX|G^w z`3C8)s=a*I3asKhS4C3?_UvRm%o=YGdg4tu6Uo_wek(e8s!8RX_tZo#__xWVw8_3N zs;Ox#qmP%Lp)Sf240Y9>DT0Y$(TQA8+tki|%goMw_#K;=my6MlO=C$ThJ4?uK*2uF zYTS1*edj)6viA{FzVBknPPKV6zJoaWitMMViyJdEJ{ETPKH88qO~5pUypJ>P6?}{A zWIob)?x2np=wY4cPFTQrbYq}mOoj}H-YQT?ibi!R^PQ>`}FfG^R*8Q@wAJ|e^5?2ilK)GtS!$rHa7mj zH0YQ9C^kNu__e>se`lYe1>w~^=q0a=y|*Q!*iQhstP-r^w5@~o*8wLB1MpZd=$wkp zdNVP^j7O8^g&7;scPF|{l-OPTXnT9M!v}fa9x`p4uphiw>x01eAh?jcFWEpE{8xLG zu{PhvQ2Sx;)jKh0ZufY(Y&u}M`v_%bln1d%@N3uaH0XThFvxvEQtPx9tvr$1(Oq zBBsN}^n2&PXkM+#_AxlvM_?%*)+%&?1MEc~3Y&<&+d{u|#{GQL!P>!;hFkg8KJ&ev zS<`3hno4@8Z1`{TFY(Rwq?d9o@_y(q)HM9JS6<@VG5U5CHmbg@8U9=8GQ+jigYA95 zRy0-)y@>uqzgn*u1s3qNY4WGuOc@o}iGF{f@KQg$*V(_iuR{0PD7y}SOcA_zI%AfD z{!qbLygJLM;)Cpa2rgH!ztd*McF0*vx5Vyb?<0E-FY*2vx@Yb%gSmq}k{wQ2?5_oF zRCwc0TZhE{>)9QDFZO@mheE$_XOqr1C-&dU zNa>K3R~4~GS9+xWmrtynKP{zU8}K>Ao>HtUwf?3>gyHn&aJ}^tNu3xjHM5 zZvB_6#ZEj+9IWh^TJ1rIY(56zV5T{kufve z{SKwi4N13j7Z})o(9%3~{@}Ilx{z!Wp^RM~ui8wxampRCE=13^oY26TTwXaFD5sr1 zXH(8};R}6I{E_79FU5o5lh$4(Pn5Jy^i&Irs{+i64Z_9tjWNJ4VE5acPdQ!K%3G(U zHOyx$unCUGiTzs0K3<~ZCg398W#^5MO<%@mj}QM%bM_iLFLso9b?B;Z4A&Z^|8R<( zZ$GGX_)DgfzRR>a`-%UE=YOUQje~Sa2ajj<%FiNssdVX@PTTQEB9nE$kbbC7?ZkQt z7rgP3KK_N_#*8)%J7)g$ON`mY@oyh9<{usY%=bg+Q_o5C>5bWYePbq>s954hG*(>Y zd&!1>w8K06Fp#YC=0axv7cfi@TRSPw)#E1z1LhWf{y#rGPODnbgJm;iviN zdhA`&mKsitY~`Kho9GDeP3(8Gdpk0_8yPKmza8Au{dQMgSD{bTGY6(Q@C_~;1d9o- zJlpQt^0};|kS(t~vWK@L&+1Kj!&c;(_G0SfeEZJOgl5&bojNaYzjEw_JBhVktvIoj z&bjuhSGw{{{`if^eDKQlG5-p4yVq{@M{{X0^p8&TA(eSp{g9uwEXX;VoxK_8RVrg3 zjeaSu$L*JF6Rnq)Jwt5k-c87H$pw!;z4jifTiNxCqo7}SrH#eC8@bIq-|ZTcKp4FV zJ{h|s*yizg`A6$$i$~Lv4axL8jWqjx*`NP@$}rzcPbvg9v}3LYllJ&EOONoB4}_#<8&gP#|nuh&Aa zIoPeW*sIytt+MrRKwm3H$IO+@uCj=e);ojUp52jV_XSWnvI~Xp<F^)vY&e@#AD9$0?l)5{)Zt})E-0e*h|{Gj!p4f1Ej zfyy2ZFjhf$L?QRJ=uWxZBO|OIA(yz(Jf2H<4st(`hx;ILH7Vd!Ht&^B&xP2^;I}(Q z?wlxeYGcKb1=--0e8b8wAJQ`VYjxB5iFPmf9|#`Eg+FOMn&9v?e59Or-J*1Gu8FHn z#}B6TZz~=DP$SnGja$`qb{*F?rGuO6y!>xYwE6YD?8txQ`UmP({Y|Rp+8b@m=(lei z3UA4tg+5q+JK3LvT=V?D*uU_9AAEs})@tSAFUq68ar`BU*V@cg@Xi%XxmLh)ihvz3 z9~a?!oQ0y^!a?WZE+^gI5)?s zE=z;Z`;A|5_C}JANPQ?lN6up|Rd)3Y&`vFLspX7k4s)rs=vUHV9i7gJLz17PcC1;V zcCBEXtN2wSrz?@u(!-bf54>iIA2V{|}ob^53|s?QT6COh;|uC3zD zpB^1~f&Hs~KK1SN^_ADaNtc&B{0{gvh5ZEl^F0>7Sa&xG{K7Z4I|^RB6MkLi$1iXu z?BbMSisR_P>hm}cr_eJkPLa>zR9(?foI>7tI8~0%e;YW{4ep#W>5JRJn=Oo`##VSJ zKWryFuOy6*i~U0wZ+ruPe!LG1Gv2Xx7;o+2jxMvt+Z#%D-m8C6z>mTp7H|{0jf@g-YCo(NR8Pumc zW})|$z#H%@NVk?As4+wDTVt}bBU{-E&)&CQ8@c`fJO`fX;kB3NgBoA()#@*kO+itZ zSXsdgzh)IN0`>Sy<(r=Y|CL>@Jyo^0p!Aq8(x(`9sh3|q1Nk1b-?F}anQ!AI;0yj? z`IAfV*J@4G40JQ4J7uLbS5i)}i8S(*xn)`(Idy$ozG3DYoN>$*PuRPe_4j&j^)A|S z>bw2x>)?CpoAxJSo*+^M4^mnjK3au7wgEn}A;f&(tmP+a+2>z&(e1wiCdfYRdr+K@ z{~`ani2M%nQUCjYIyA4f$SQLMd~H5u%2pYUuMN_?qlYEKx!B#8@C9J2eF~*hIDNX- z@;RM3mFkYaiy+=DZ&{b*Vn@o8@l(tS4Es75rzfwm$6H zHQn&0Ztk`InK^+z`yTw)`)=y*B5k`{zrVc825`mEsnOZim|y2xovnY$Q25)p4{&Gi ze-5RC7n1S+x}oya!lIS)J(+t>xo9Hw7iXS~Gw$=XE@o6p!}vdKJVES4qLVpt$u+wc zlDOfm3s;&wUGOx;O$$x~uwq?I9XZe=|_kniHKzU%YhmwgUB6?`Ptx;EV(7tI+c->wigY znC13Kd+n+1r`$fNJoTy7*QZ=$TrqtL;{Q7^+Uy}9dfoq@+kVJxyZRJ^e%1B^v^~iB zjwo;m0_S2E#-+;R;z|to!UyeKv-}z3foTP>TyE1kdy9di=5j*7u#$UkeoOKGf}zS1 zUU)F14vQB`FUIZ)(T)n*QGx7~ZDhwCTPmCQ$YlJO4t|KY`E?h?>07urxj3V5lj#uL zx>4UI={>UXlIzG-KIE~#j=`7*M^A=^cNyZPa@cF=GH6)(L4dw)R_qh;p1N=1Ue|BB z*MH`!x;**N`b&q#M+_q$GO=y^>m>ustvl^;V|82^^If+L?K9(-kF%5Fi~KZpPlHQi z<^z_-4ls_EMt~o>P~R48UdG$uuTh;DEI)z^<5p;t=MtVZp1H$}(Fw};w^jS1--Z3l znv*><7#oeR%I~4gl9NxQLM7rR~GX z_tREB4(cZ}@;SHITxR9h#<`rk1l~*Lipln7I$X9QNg8`_1B(ZRB~1_bL3MvOia)+qutaF5E>w zcD_@(BV+K!e~>R7odSQ3^q_A#^fd13K)^f+vW(?w_zj^CYmZ(t5Z@e|h0X+gG#(`; zVE4lGpZ6-=JV$4f%D(~pIb?T0ZxOEuaTedeTxN;p<5~B^`G(?q7WO5y6`Mx)6|-n7 zV^Yf5eelq^xqR!S8`&T0w68;nJGM6Vg!($IzM?bcQkxfOoXIm@WpR}sr4&Di>QY)c z{m>dB>Ew!Uf0_C24fJciJ>xI6p~eKPtd9{J|NTtn*ct0e>=5BeC*|4LKg!hHM)d=C zC1UugtB9B0sIvpn?c{4s!~Q;utT;m18LZcmKVLDvTFYSD@D-KwaLc{_3Ozw<@td)i z;1#M%x|-s9f5kX;0*g(QEg3Fb2AS=~S~_!y;M5xPsQiCVwd|fGoYLI)<1MqnOVMC5 zE-X&Mg*q1(=(AbHPxv6b(4T`3&i=7S^Tlt*4d6p`Avm_!!G{UN6mG?)QXH1*)NdkV z)^#uX9@l=xk#@{Q2icRt-bB)C(r-a0yx;Ww0r&?=3-LUe^B1!+IUn>|=EGNp3cBZj zOTaSzN&JSuQ!(thPcG`6$5Ai~B|BUI!m2Zext?oNyX?-@%J@tIL=tiq8r6 zE#TcD-gU1mDOgA!(iw;E)9yp>V($a;z6V%)^((*XRh_Eq%f9{zpO3OmzT(LRy?OMt z8hk;Yohuou{^dMb**l%S9iVUcXXsm?IZu59*RsIhFfy-$a%+Lt3i{Gz`#Ur7EPJJN z)8D2iC-tUKpTn0w+^abR8~4R}!*=i|$U8$nvN`JuzxeJb_&7^(PwcJVgYWHV{*lJ4 zK;YbzTQ@fD;68)v2w*gaJnX9%d3eb~y=S4(kMR6r;IhbOp5x%P#@nvfnJ)jXbM}G1 z4cf=AXF7YbO@-zrIdS40(5c#{K6q{L>ha2NhrdQy`%oCjNZi9-C^zK%q;VtdyN7nY zml*w@@%&rv$EKKu%g;Y`^41Cyd4ADjy%BSHL+*%hUqAcWErK5V+4uDzKG4(nRNjD( zy$P>rCoa0!jA&~QjNtr)VB1~n)3W7a{pzw{N&{uD>wrgDyn%kVK*zPnQuZZgjby;a z+Z`r7%cLi2;3=(7=J!T{?;&U@N_@5a$fColsOWJ7^f;z@3HQ2wPHBu)xqZhxKeYN8 zd#^J~g3a@|H*Y});6?>}rF|a0I>ttLQ2}0PF8!PEB#UprPxyYCHrSXl@UDrr2uB3h zTD4;ix;$m7o*7&-!`h>5$N9`a^n51x(#`nd4^GU%&le-VVi`ZK{9I$`X|uRjdvDhj zJ4WTakNfWX;a^YY^iJgaDD`P9+o=;+HlKngPNwY#;9FWRs(y6Aa~&M7cpHvCr2fEH z6)T`Qm^|WvL*S}-x%RMfY|&uzINJuDXZLu^<=hMJhVZvK{OKzl|J$wqPJ7d7(@4r4 z1K!nfuFcAD0r82b=+2+zZwHHp=!-{$kv zxv*W}|3a?&pz|PJiT~DFxY~zR^L+mgYl)-KTs!n6KVK9)eIGnRF);%&im~Z}&TayRYJIxbNN6CtsW5AKEKv$3ox>{%bF| zXlc0b^Y~P>=AwytYljca=@l<>*2zBJvgs7~1HTsTS(&Q#@@<^{bx~&Z12YoKp;xuN z3>*?I96)|Zu5N)AHqiD3wEbn;-T_`oUPqBNjt}vPme11WIQ3UzOREg;C;h{~pYmL| zbb!}-&Uc?{B!5&F_`2Dhi|7Ea2jGM}Dx)s(f#oioROiQC7}@$YCUe;PQhEbzkSs5w zooqaEmGHKbzT-1ryMlRRcroiP&AA3>@7KKF=u7(+X*!EV-~27#c(ivv_v+6Oyhq3T z;xC5c`)t1T>vN7jaBx3^@xV~!SRILTat|`%`yb1&4T9Dh0lzOaVptvdE@%j4Y9_2A?Nhi3b$$Ly>l_M$TTM(Oi?@uldG zw5gId+2?AlZy&o8UbCx`wW;xyrZ0Xl6p1%Dwp)m?Mdw<}c-i$4UEn@?KqR`Jah(U= zLz8j%eCHGBm*dR2GuSLMk&TDU=*VHtIPHNZGII_$_8Uj0R%Rb=tVG9mdO)n;_!$Oj#r^$~FQqm=z>U`*s^ODcL_oba>8 zeq`Z`$iL?TA=cWBYWp0z$XV9gEoPnQ*-&QNw*#YASDR6G-up&k51(UiT!DH2W5}nqZIAPfr{69|*HC`(ku6DjbCA4}dk;Ym zS)6lYpkdKvE_@&kUkE=CYKX1G2M-MEIU5>$Y5SkN6l~VQe{Ww3-2m77vEyUVWwHBB zG2b|PK+suJ5kjulr9{L}V&pGE7b-><65o-IRDmzG2-?jxMQcmh=OOpL@Y*GRj!SpobFRKLgln|3<;QYHWRD z=N;(b@WOWbQHahlg|VvOO!h9`3omEVZlxdXV6J*PdOGEI!c!Ed)sub5>Z4hK6uXDN z-s#(z`)x6Om)^Ys+}cWBwRe{Zwh5<%d!5Khk2XE}6MddWex0GNM4k3%PHBD}-tE!Z zZ_#C9(7fcv_khnPlhNRnr?kJQOxl!O=9>%Q9h9r{oMOD!oLq7C%Z(f9Q!(vk{bfQr z+a9_~UB0+d?V_Kl zT!F_Lk1y6L9X+m{dV=_eWS3v0-Q?Nj@yI8YXHvND-<IipD?KmV_k*PLhn1cc z?rZVVT^_lB^t%La>NC)L40=$k7s73BJ9Lo;tgFELjo^G0xG$XE0{^M>@tOtTeH7i> z&a+H1=!%YPI0#Kvg8Tcq((hv)fBpMB>O&@K--I_5GlagXvsyyL?&=!jT`%c=-Aww- zn3Lp92QDMSeaD==zQ@VOqCdZWwi90HkFP4`n-a!1%Y+hn*!?rGKPRBi%Fm)TUv=1g zVSKxH;V;%)K00heJ@2$f%_`oNkYC?E%e|v}Idf~0dy2DC%+=2)+p#@netnyjA!7ya ztKiYVyG(umEB%Ua-*a4rUnlskN%h?#+G0->V4V!dZ=B#87mh8AjfLMBUwoR4rx=V+lYT3@ zt}JxuyJ{A;`vWD3ox};M@3NsPu+=)Su~@ItRtVfCV;{*sm5M&G0Gm$v6_>LGe@zwm z(c$vOdMl?=5<9@RO4pCGTxY)m1KBSr=tgy}jrFo?V+mjKiHVn9l&v`(ehZelb3hF)e&+X>sy& z%l8+!?=O=665kf{v+rG9=<~UJZ|U>#mUK(2@~xyarwl`%)%fl_ymI5SEPcusI%GX9 z@!tOUcMrej1II$>u>u&XPx38${?ItOmC_chlrA%vXZ}iK$F>YShzaJ?87K5D;k^Hs z2M%s=eGA)x#YX%J(y2Y4LNU0hwVd)Tcjp-!A0ymDF7~Z(eG1*+cMQ9Jq3c_4{0OPd zA4|bLg|}A1KZS={7dTyf1bp6z4ZNJT`E`8HH&97Ab@*MKazZ*kcpZFcoY(FNe7}$H zH_=Y{z<$SwH-WarCIAX{I402Vi{J4L-} z&jRW^m1Ns{?@DdE9lzSAxmSCJ*!K9eBu9QB-&Z<)8cCnvd-7*J;P63N)SG>$>nE~jnbjzH?;hsdv3|~DSs7T_csKd9zCYvE6^-)UPN-egD7!g^e@FWLBfu}6 zao$cFdZ_y}Kk24g1JgqrPSb{N+R)DPK6CfEa%fBY0cj4smiL?QTa14^)LeYu-<~Wo z0sLa#dVAL=0sK>kgC+b~u)N`T5-gEL((nE7lbrCcpO4PMHYy23?jyErY;a5jU7Iz2 zVY8?H>4kW@biPY*c2OcmQ&yZzeHO&rtUv z=01-y&x%aAy#)Q@Rp9bj;+=lN)uB6QEoQ5D{7;B$CpP=tIfHmB_?|fC!1tZv$#)`a z{qy%8|FBnJRtzoTtHCcbCQ=Da=I1-OR*!vDjGj}>vuq_N&uE)RF*{pbeBI1DuT0j{ zwKbWP)tWCVVqK5Z4+mFdyMKxPy^ZeZN0ZwRkLHHm-_+d?YPMY;I=CNHtQ5XJ51N}B zKHtvSXQf6JLY}f*HJkc)mS#u@tGML9I2X8zW zuK;(pvffg$UJJ=9|5{Hdtu1r3S$$|!paJ?ne#m63mK}N&AJQaz2?sTQcXJp$H7oHt z4tV}y=T38rE7=# zRG(M(kb02?nxEM{OueepwvBrG(a)CyPr-13NpI8mr7@0O=lXZY(FcZm*L@rK0$)*^ zE51TK$iFvQ(Ccoaf5<%P|K4{sCS=PL--xI4-AH}w>@9G7z3>KEk_4AW2k6|{6YTqn zvt!=pdt4noFunOZ+-q*;hg=U%@N_Rn=ZEjCi-L3i#1%d8n7Px@`TLX(9)5-EM<<$f zzu>#5Y{Rd8z@9afnms%X?)w?}d~(lQAG!wp>}&kIx$0zl>OpjKzda@SS27a32ZugI zc{8Aa8gS)*z>gB{6$fo~UwEU&(y#vxk;m|bFD11}^JZ_WKZ(DUQ0G!;w;uefhfWly zsc|QUpl#cz!0P3k`)>If{3#3i4bpzQM-~x&8MfwSTzyoMiqSr2YzI3;N!<7ie3FY5i5@*w$akM_BLjT=8bbkrtc$ z)j@be(7Q*rY;yT^3Vo@;=TKz4xgm!SUv9j(hCvxVXxlhxUOyyb*m!XOFTD1vjd}14 z%|S{QNDdQk*S3{2i0YWn*ayAEpto)4moxJZH5Qw+)j?veV(hUa-J+8861CHWkQJ@J zDyDy>_)6;d#=(8l+!`wVcj=;)Zp@DS`RJ3!E7=!8dG#z9)SJB3DZn7by9WlFDYwil z95~}M#2KFsJc147*nlcqc;x;0?T^z*`}a-7#=yPK+M-#=cni9MMmlxrzggn)@FiTnmgiQ^q(qqtBNTlOezQRP_0W znDd{i=}fkV4tDY1Sswv+P>E(>RBKgPo_e^q$&0i}f{{yY}|M@x#ZnA^(9GHpln#RLkS` zUUT}7w>-+dpT2~b3H(7Gzgpw)g+YJM7@xm_`QYK~$z*?pWMu%KL<&9$%`+FuCxPsh zy{NsuI#_elPX7z~SVI7Psy+Ipx^`FvHewfY;V>}n^x0zRl+|tRuyi|q>DXcY*kSTx z>|nigPiS)UPR3xwu1D5RVxLFNCFkMGti%r?*)CZl8Kjsw(T4O7@lXeTgX<=$Xou{{ z3iN5kipVB>*_}7qO8xaFwL$i(d@<^W?6hA6fGd8IFt&=*mzgK`(Y6Y3OY_=?h%?LV z_|n=}re*Ri=jPC_p3ubRXK3$X?$uw#X6f7TC+Bho##Mb3Uli_r z*u_20V~{)=@M8?{6Xc(_o-@Gq`4w02Zr{~K zi8ADm#v+%o2;$?)foGz#tlbYkBxb2O;O=4e9_n{wgToh>!xvM?&o~^{H$^soip}r9 z&EfItk5{g~ul1Gd&zDB*Nse^gt7jxOV|Ue3rk=$sie27ZM4dtKf%N0D69Z39Aikrt z_fP4rJaNb1X$w#JbDwHi>Vv62hVmOf9i(g7-`ILX?8W~LcovzQ)qf2(aD1|11)E#6_-{QBeGrZQH zSGIzse`1qLs6UOot-f}pQMS$?Q~YcxcpYc0<#OD!}Uyc&+wHR|)&d z2vUY(#D>-@zt~ePFDoXBvUR_odyjYc@jU*Mp?J>uF9Y#X;_*RfT{1Mq-kWij2I>0< zbOpg875~P3WA;?SQ#Gf&4L#}*dek9oJ;v~R2h4KjInxp^-%@Yw^Ub`|nKpVCrVQCH z<(yer*bBc$?@~SJhT{s8{6NL{fpV-LDA-(qA4t4Mejuwug=b<$z{QGw?7Qg1u9)|<3XSM3L?>shXUO?!G=U855_ z>Ke)ve!KvF-w!({>15x1GJBPhrCzK-W4#e#LU822z`M*gj^Q*-sx|A-~_>^`Ny^ z2IKJy;s3R?Nn=_Jerqq3LUhF)q~#9i>P~$7r;?t9uO2;w!0~t}ueq|H{j2GNYzEHf z<}6a;e!(S&CcHTer#w&3CpOl~wGSoXq^IwzUEtzc4;Q_9D_lO2O5I)T=du8NRGwb? zTn(P7Ux#T+H*Ja2mhJAn_LnI%>50?OaXz%w4b901+Tq#<^}zDw{FfUK;Y)g%Z|eDe zqwE9lY76&K$}jHt(#fz%X_MaS=<_vey?geZY3pWu^8eJoyI*!X9K-%gw zY!UfDYiN`AjVHTxb^Gi2{?-bHUY`%ReHKqSMIVJvqEq#GBhN4J+>MUZ?e?{UI^w`Z zJm4U0@1l>;XxooTPw~eU zPMZI{zkhywoB~XT*zf3$vK8b<6;A$?c{0sq$xdj$%F(~BCGODSd(K>EG9G=qZ76T+ zpskmx--(wSq=$BNMy)ByBgQHV+7NszTZ0kVRM_dqf$_N=v{^9FdR_5Z@yq4fZ>=U2 zd2A)?nzc6G+z^pH--*vzx^EReR{3B<*oSd+%Mk0Tojy3U&?Fy9etx8!^&dYRKa^)n z=X=7}r(yk*#KskJUe9a`&p~}pws|RSZl@oCam=;hqswkp9NnOPgkE~gJbary5AGYj zx>fJrx%G-?c`)>k-?PKjmtoG8Q6Kvr{`q>Zb?U87s&~3uuiY=pr_b)hx9Z0ionx#y z-Z*x#{Gc5ZSYK3jedHNn{|x8Absh{9m@L+y1)I*-;*-f?jLyE;zn<}0Q;ZLsxmNAH zbi4Om4dbNsjWNp6xlHn(?)W)z;%>RDP3r5s99tZmY{w>vVN=Q{*Lkprb1$?u(%GB( zZst7>!5@2=BgvSO(U5-4-LF(54?m0!tG2xcZg-<|cTY}l=)QW^E8U~G-Z<-(yFXrc zVsd5k`Bi^Bc>eB>{PBFoQ-?QXy!Ek@r{n8S%r;HuCx0Vj!v*f=aj$)ygV>FSm;)4# zI7GP%*jx4}W1hviqP5g@l(oKv>_M2L`?2!vW+o&TMB7Kfhr(KOZWU{^s!0z>UVs}T z>B9`lTaivo7C7D`dIZnkN6enS3-VoQjX9U0SY7&FZ8)Q4*Yd^`zSZ6*h48#q#$Ud; z3g}37&TWeKgnqRSD!^U?f?a?;2HJsZ4sgz;?el<%VrdnFN`Kh9!r4<&`z5yn??M-k z8Aswxr#kCm@x5e|SLXz?mz2df=ly$!yti{o`mS}#kaRyEkuB$cjan zRN63{zji0~tbe}&4<6v!-u5iB*YX8$3%<}dQGCGi_+ayPWKN(4yEBV3IMDBh!mQlF ztOU7QxojzZ2>deoeo&dutuS&yd$dmAXWv63 zb|0!`ft{k69KN%@YwEAK;GGNR$PU5$w@1x7txGZdS$sGcvhmY8&*H+t)VIe^?}PRZ zYK;tW1fkSO*3-2+vVtiI{A+V#;I8_pxY%~y-|}6?0J)ev_FrPW+L2|2E-%nH#mKLD zj}FR^Z?^qlxNi-x6OU%zam^uc4?eZGi@nP}PP$}#8gT7qU$LGHd)D#|4}y=g!N{G>MM8l ze;>aT;5pQKU8L(<%$M%NxAy6~~w2P`d4hnTxLnCiqJ)1S{1<0TkG z$s=1zaAy*Azz?{|4}VV{qfhzqy$D$rP6uYceLLNJhO!jH;HT%EN$Y>DegaPVY4B=~ zZh)D|Fy>`P1U#lROEt05PBv-A(1=7N*bS+q7i7racygRfD) z!vluu^@7iAAADqs4B)2=pVLYGW8P#G>1$dUl;(djGG_Pd}G9f5?n)TRMKli4E`GeSZ3{es+Fo^y2x$ zX8bEhmL1-3bXod_ZEJ|%31qy|8A`q3rBN?8&R?IhA&dFW&h5^=5UI$5t?-{*c%byz zI5FPH7zZ!X-`>wLzJ9)Kzkca2Ebo=OMF;FrlS$Zyvcvrh8Q+F<1I==%fT0e8`#lE<@t zDReD44qdN;Uq;*DJ$&bIyB>UaOYy>s$rlihBOkt)h5&dcTXeqrePHZohvYBy@>8CdKe-?0 z>Bn$%jMrcY9eZ+D`1*|_gY<0UZ=fUBzc19ae}4Lu-`*cT61x}Pfc+4i>Z8%t_eO4} zEf?XT+S@AzF6C}XDTv-1?rX)DfA)LS34hd@>Id-)m&s53L-tM#fP>k*o67t=*KFzO zZY(W+4jVIjds6z>l`h?sdcNwtbK_~(^86U(EB^4_qkL=CtpAI-18FUf~o-k0!R_$qvqjjlPrGv6}n#?qE! zNG-Pzxtwle^K&M~*6M*@!!{Q$pMFBxfP9zFyrmE)Vy74_Qg$zS8AY8t@_GZTb0N{HgeP$ry*Ht4^iVp3cAJQ6?D0rZjBTllwrAR-*L@CRqx>#)6rpVHsKYtBQm z@PCH>{D?B<0{hpv>U|FIFB}H`V+P@c9ej{mEhAy?PjUXC}!T zKb&U@&cNRf=M^5Dn;bar2aZjG8!&AKZcjPykC`&o4Y7CXUfzF=v?uso23-D$tJU8w z0hgoH>6e{?$1>V|sr{ys?fWd`U~J{aMtpXOI9KHOE6b5vPMPlfhvN5B*k_4znzmjw zl=rE=G9Ubt?QO?D;m`gyHT6{>j}?zE*&^F1c^+Tyl`juDpli%N8ykl#zext) z>HDC2UC#Sb@)dK{8fkwY!m^vzU2o&mzmU`iKmWeT*B6g}E2hoi+|GYLJ@2G#e*H}C zsi1$7U#n<`zYS{BHaB;Jyd)TZb=wCA+7j|Tlw@RyhK*5$52_xYMm_pYFqa)W0*QiF9^W&b^ zZsEjhhX!f#m+#Qt*_M9|;ztk}9>VsKuHpG>?Y=koO7~@(bJE$iUc9SeMaqf>>03v! zSGN&wwP4YL-i2d1n~U!Y@slVPLq6Jr_L`Q6<3rtoE~fZ3`Q@9q_m53I&l?%DhZsBQ zhMTyqpxpV3=JzU&jrb2_QpymVQXBnc2!EC5QQ+g;r#3&ry?BHlHtT$_`4MgL<5My` z&8<3}WI+#)ep@ zj^7EMzYl*)i2m*)&jH}&_+5vVmjzvoAkT7sA<772ntKLr; z1|Ijl13aG19V*{MSE6&lw8R8#+**ioW0Ei6c^>EWDCS|Id`-aTMcNy`!-Sf3d2ew4R~7|wKHa2PwX2VF^L zbaeBrU=-qerAdcQPvcA(enIvSNul1uV~vZSDTyiUCGzsvl!leirRq@I7PxgxW-oe` zKgF1~L;N`Rw5|K%>eVZ;RSkHGA0-iIAA%c*`6d1)F?;{Bikm*(MZOVyH}kD$R@a&| zJ4X=(R=LDMMwySQ0QO$r)JFBGjJna4kBe{Sv38-H_9!O%Df*FuK1O}uj!8@*4yBd$ zXSnab$os>rxhy7r)KKS-7iIVAyU&p>oXw}5rNDF!^vS-mbF27Ha9l{8_?RMvtj|0` z%*hS(ubW?jdKAArg|<$4t6}v~);DMI{UY?^8QAKjlUfrtE& z+05@QCoPKKO!y_8#NW>%+7uHXgpRt^RSDE zC(#+I$9teb;_};cc3$fDRy5+*ZR;joea)cUbo$y#UuTl8F`h(P*TrX;TS_6$-dJDh zCb$06#Jj0})h!)bcx=a-z6j5Rqq*?V0Qv7)l+zpbjj2ahCXhN152`bRvW;md8{qYh z{&k1yAui%0TxakrvCk>Zv$<*<1dEw&+6TE#<#z)=#p8wf74j3WoWM1oU!HwVZO-9( zC%*g|=^Vdy)--S_$u1c822AvT(NqENo|-&+B49wc(&}0k3lE8 z*Zf74akR5cru6qOK;vzoja&oGQn$~e2?mbWWr?Ve-^ZS3SRkP=1UYOz#bk~ zEu|a_8&~&}4h4Y^;AXW?hw|$SJCp1Y;cY(Sz7biDuV=2O|1tMr{l$6kyh_F|7oO+f z<5MkjYn*Wq&$F@cz$BM4R8}eFNdL~``xIc34^E_zuJY@4)ivhR*8snbj9Cq`rh>9X z*N5qkgEx+^OK|?cFn#=(uaCp|_m0|l*1`R+J$#p6GH7*DeCfmiwln6rj6)2ZvwOFK zryY~b-WAJcpX>zpMgV`o*TR^*OP|0;#nr~OPYUnt6u$-^s-f*g=%fRA;i1R=fxO@j zXCNQZ+_Lm#!DSUXrSNeDa4F@xBJ``x$dzjJjt+F|I#buEJtXp3hh5*A8>t0OWz1(W zN3g3n8jAdPwIge)_`U-=j6x@(+vVhW0$7RXiJr@|O(dH=-^AC;fqxl#y2*ZTJX#@`^l-VZ;Gq4>kUuA)ZT|z8n+2e};aD z_Y1f6Ub3o){D%CxAH-3|XNLSgW*%ja1OI~r9*?!khx(!@3!&XP5hdaXWIMiSv7x8xoVpS z+iP6dipLxG&kx^Z{w?^1z>hd^s=9dp$$G_+P@ZrHTs@YItEox2I^Kt?sY$rXn(^I| zLz1Oi#BZQ2KR$$5KVAu+Du+**&~nA3tP!93$7aX7z*eu z2V8%FHnfA=LCz3FN3yuCXJ`N8z>xiqH|d%N{r2}~x#Y+qWC-}U z;iL5@iaAH2lK%P6*HFyq3={uBJv1)eQO|e5ueS0GzqI^H`#9zY%pKS9UOI{JJkWH9 zrE`tbAHM)?BflK}a)#VetugoWCFVHTM18*q;9utRY=GBke0r3EO+mH>bJY(ox~_wF5Zm_=(|z zyUddr5&YFH`lMvw`nz=r#@l=L5$Lis=*n0&lkSD3PcHPOD=k|Q3)VE4A?EPEL`A!qi z^|rEa;a23^ON_g|*KZ>Fx2{KY##Df_jq&Ylb@#>CYQ{#ka<0@7&YIe}Xc1*+G#vUM zdwA03Bb?8hab5W2-JIjNiu&>Q@7{4s*PZBXw*DQQFQxk(?)g#^RuvU&4Vd?L0-tU9 zv->8qUW>KP4cqcF`>fA(7??HDPx)vSW3q45%)};eT((FyYbrLoV>tk8>{0E{@jTz4 zTb=8HwsiK5a7(@g@tipOd`Rwp_m|iKv_s=w!}~wtKXCBd8F%T8+SmH0iXY=!)$y

oomJUtQh5`H^Ik=w4nGYJ&Cx5fbtb-3uLzgG+*Ng9V z<8p5^dzr`G8@t2owRMc-8UIfE7}CHSD$#;H!BmVacZA<2#@@x3p{jlZz~xf&ROZ_)Xah z^MUPFXnq?s*TuK8k1l}IGp#P1V(m8ZKBYUh8*4>q=gcI1coO>XM&eFt$8K!=Px>bt z;y<{m&b%_tlllwlTrf)Vbgib=Fa*_ImaDqP7ZtyGR={o+Gi1pdU}?!nao- zUqJ_Spg!li^><>As?SQF?yEo7t-p)+o$!ZLWFq=~K|5uLHmqD6n-?iD?LUxyB7I~? zI(nSaOI*E0yr931xwAZT+|z^o^l=)WzCXTNc$f+-3&D#b#vqlk^xHA%$Y;p_#T#9~ zCf;HD!`cekE1!+`?j_r&bUTjlQ)`2tAwXQdrLX|K(gugkD;p|?{crj)~+ln z2pi()?#91`Y^yfGL_0h{zV6%^^1Cs|$9!DwjqsHBFxQ40$(`YpmDd_B$bZz4?GqTg zZFcOQZmCRpx@9BZRqk5ZxYiv5=}y9ZZ>;4T{`}`X9_+}682*Cz!lHso>dvEFbk4*h z_~Y{)K;F?t!}*@j@Y=jbef85umFcfvb;t3Y7PxgsvH$$_&ZS=Q>?Z0_IyAaV_GAg; z9cR2%2YS!0dgyiqc9-ldwS7psYk#e9=~gr?e}!!0<X5HZyg>f0yW!U=I}aY>@n(ZO-U6IDDYKI@Q!O9iEOD1F zitma3mA=%+7w5b5uX?-i&nEijbkCHuUE=(kIkiix{x)GicY#rm{%xPA3>gIFc>ztG_U<^MLQ zBg87f&xPRvq-XNH^%X6e!$;0=Jtj?um1m_J%ZEWcWBSqM}}|DyZ;y3Bfcen z%jS1z&yh>C=lqX+V|NMoOiA+JdA=Lb;p#^npN(`&#%xbCYgvov1%CBru}O*i+Y;tC zumP2Jg=mRh{*E!rT2`3AhE3>$^Z6zRo2PJw zITy0=IH6{(LDaZQKmIqjKku}@ZKs`2x_aRJhMms?#ncLe-3}J>|yeW3eL9;~swf(SJV&G|t-Bnz)S7wgE-jGc~ z+^KYHn|C~A01Ng(-rJAtQ~A;9HG69U)Qy}ghgaq_-Kh5TMN4Y-+UHj1*@2TAhdRsb zeHfp!mEUJmDF5k}9n5t{XJH40Oq<%1&+`THEO+v)F+K0Ie$JNB*l=^q-cLK}$IR}_ zBSq*OU(@$<2EQN2bAmjd=T~O+gb!K0U=!a*?=^cr?0nDp#;LacRr>zk!S7ReevLd8 zPQGL2Nk`9E%l8^*jorPB-B(?{VfjS~aVM-tbo}F24UCs!Og-55_owfaJ|WvNy4ftr zhA&6AGZwd*zH`KzznK?^M2S5eKd|?nv3u`jD}S7^V$2O=&iB@4j4D6lW5+&ee5ShN z(`0(l=S-V32D5t|9oUsWJZ4Oig4_f>p+$iz3zhp&kQh_M)ogzI z;pE$89-bO0VvNT5#{KvY@xKozFG{kV@#lQb3njU4TYu!yRxV?QetT;TaYp^sX*@ujF2Mw*2o_pD14Z{qw=!|M+}xeb4#gW#J9Q7eD=c415WNzkZ_R z@$KhJYC;>dr`q_tSDm;JXgaU66~Bxw6686?v+}CU=)Ea@u@cr=Nt3g8J(5RH`u zdfzYD=Mab0e(wxBSMX)#pNFdlp3)a5kNB>181YPhMm*iI<{uXwhx9+Ug+QW@l$5}VtClxO7s-%PZ%Yi z{4LRg9_=h^A@*bMym}|z&+;wsRz42#1g#5E+f=Vtm*PXWQO6{YLRX42oCz5Ua+;m>;wyK^gfkD&LDcOj`wMEb_Y#evjU8qhCEJMl2Ed2WABj+DGBj0lL*Ee|gdg!v|=0F%(e>RE|6kVL1wQKP z%>O@=Ng!NQtXMBtGLxWy_f`-`sF_?8@!m>TTilWm5EZ*hwOhMlnUJ6$)@G3YsM3{i zRnuxCh3eG)YPbkkY#U&=bz8U0B!L8@Ezlcj(fr?^bH3l?n<2RUb^p9xVP?LUbDr~@ z=YF2^9J`)0T(pe1^`nvWBRop}N%sBvHQpl@I5dmDgX<}w z^bN6Ua2b?G)+R*$gwjJ}A!_1hXit3dOK2)R0yv1bYOTm{4y5|BJmlR=5MK+nRUtgA zJ=4~M{__xTt#If>dsfB~ehc30d@9Kh@s50I-5;v98HeJN$|2O+f%J}I8#%zIoRb#d z_=%pwZwFa-gzhSMI#h6}8B&+GB}bZN%d9kY86Lzv>gYE7Gh52##Fv(?*}lL2RSX1MIsv zfNlIAg0m=*DmcWM(wvtjeh?m?^=A2xjk;hO^81nF72AUzOU_EuyxF{kux*qhjl+M6pHmh7>x%HGA! zO`qmqwYCuR)7_o(!bZU?J!G&=C&$^MQZPqz(}zyr*Who<|35Oz6ju$xclSrZ$JrbI z2z*a?@EL694Ddlab6x~K$-E#;J-TwBqfNp1GB9TEPYA{@g`=8tiHRhr$ALeBT}G}O z^)(rX?q$HQYDly)-;zUz7l12dl=xgUtoVF-0(eD7w!o7uJcA5LJ*DU1!SrSL1rvCl z`y05{3T=pY^}cFDoczC5&Mrvdh+g z4%pKfM zXunx7U%(uRKNv%ZdeYJRM>=0^4e-N-bN{QYjt2hI``qh&?&ecE zOFS+5?n=?`K=K^}G9$>32Q5GL<^yQ`C>@@=q3UwwN4Z+GR(`TC2){iw1N~Yt#@iDV z*WQ1vDVm1+=vR5P(uq-?!+skdKGWq7LHh$=cw0$wf2GvWNJaOulsXb$>Vwsk3=W%C|+s)!uEHN<4~yOiIN zyJj2}A3XN2@K86kCeTsh7x^-+#FR4UqI)A}SzSw9$kxm$hd$OqAJoLDt2JjOYtX~8 zovE1vp3h3YvxQiJ_pJX+LEIcZ3Eevjnt5&LH}|}D@ArY2YzpAM%k{v@1< zCPgb_M1MmhqvKs#vkT&DY!?6c`%F0ZeA$*q*yq5WwITGM1KiVIdUDTiz5#46{_MzW zZ|%3fWj*)O;d7{`PW+ucp77Vk(nE>V0^sYz3!-J_|LQ@&;(agWyU*)_)wdUpy~;Dt zy>Bmk)Oz+H8~^Of|1H3?T5x;>JVjZ33s1id^xJ*{dGms`pL*B-eH~hg|B%KXt0adg zI&(tuIr30sFLhU$ueFYjceRS1q+?Xq2HmLK&F&p0R&f@7OafV5W0D`cn{^{(k$>&- zfqn5K7&irAR1S$aFgTx!|4#VG$3G6f?vH@2^RB+Iozf3%PX=IP4X?+>3&Qv23E(Rv zZYTWV|J6m`x+-~FKk#Ma&;HKB;pQwj_YXK8hcg3kX4`isn%`{rF6jrpApZJ;?U^jt ze$o$YpANv*-~9f)_#4;{e8=N&{)W~p{LRgR@mu}CI6MI3KZ?J7#QU@Pqc8rBhwZv7 z*#4y-*xr||<;jl!4gOx~2fpL*hnHq4n+;zp{%|&YpU;Btk$&Ji_QPHt&W3MF_Ijt&xy{jSrzcmVgWm+MDr)Lg z#i<|T`MYJ<0#$t1ez8igKk3pI`Z<_w4`taCHvY!Gip{j$LfbP`7qMv)>i}*Kd#UUU z+jdUFb%C~b(e}Ij=;yIn?b|rzIp-5UowwnqJ?*n^w4e4r6=?qle`ou^-)O!w-mZ6T z@Y~0}@2~x{1MRQ)JKL{Uob|`2+C3_&hh*`?c|ZNNpA%@m<^=8E-H&|`WxtExPc?nm zbw_-L)%0CT-!0fyg*?-OO=V*g`0o+Rx9o?3C%$v1lY9QPbZ)Oq5gk+ji*!bR>+55) z>gCz}1Qo36b_I!xm_)aapfqa66`PHd)_-G6BLn&QbNWS`ta3Z$; z3UY~At3NTW-*`l|-kLfTpYti`N1t|E3f$5y^mi`(od=xza(H7D&KQQZ+2-x$y^fi@q7#xx$C=YAQ#TYy0^5B0MRTq~b@Ed8ps!D`0YdKtO* zXFyMe+BtTAu+D)W)Nttx^7+8)>PeiZ1`Ik&jd@5h#_{#z;6c^^M9aCr;eY3VJ7R<6 z?0e(zVLw0&u0yz>y*GhjEVvzX(tsuJ(%wDdnXjF9R5eE2cm_4(d2qkVwcuR8!d$lz zZxmdQaZmJq&nB~M7T<&Q$rRtY8kpAsGx@ivJL!XSh*)cIyeRy?CZJl*fr4Aqaz#*?|?3-gOJ<-UFg~YXmkg3+zy?JmOH@vLGWF` zS>+jMCPd#k{9OwyL3(%|I6DOAJo7>U^)L(OeS?6Ga*ls``F9AnY^zB;Ew&gu{UzerVu>q^Y3%uT6C@Y5NdZ|g_DaN zmOeQ5fSi{Wb(-=OcXgo zoLDi>@q$-$WMg*7gFUqKU)cGMzFkc9MBmZ#>`XZ+SxKJCg8@8#5RujU zFKQ0YYaJ}ke7`gk9y){gP@*`gwWSj5kuq>x1&-NQVEHtTtt7juJnm{`IsP^cU$t|Z z*Wf=deWE#}zebZNN@hkQBZ

i+(G>i_YNsPwof%fAW9P|84#BFTEyQ5qS1!VDeF| z8%)aj?XM&J@CVLLtq;tF<|H`ZuD)~Mc&KPUgFF)+S+fU+*hE|_-N_z9Y^f)Rg*JVh zxv%>;b06QZle~iGxTfdyPKf7Z*Dl~%MDk#2G3!F{4L{+zf9IONKSy(_=OrI+z5{v0 z`=%)#OC!r4;JLWoO&~w16Zn1JeUfWm;xBiwS+<1FAT0*J`{VytZ~WUnV*FFG{D&Fz zEm@xnO^7EeBgCkoyYBg+7p(sZ4|9(=eoj(328#X5pAcW${efkyf3UtYgua8kscXTQ z_01k^e$4tr@lOX|uf40|A*ObzC8T}SPAM%lN!I5gC ztg`FR{+hU3X9=UPR1aa+cjB?vhncx|@r>Y+y*cYU?29=E9hN^}$+~iCV8D;Blh>vk zzuIrJPY@li8WMJIBy(~#{m9;tjw9~tt-ZT`$dN*(>U@|14Ob&i*VE@fu60wNXe;_D zMDFZrrA*qUmv?}grT zqj@eH#}&%K8gsVYZ~luM>w7kuLt|{Lgn~hR)^2uVX zT4Qx~vGk_)Z^?gI$h;R|W7T47zHV~nRzVl5haY`q-O-1Zu8VAW24C&)I?j*EqfXQ{ z=a}Ta`_18t$opJQ8>>IYbAe~nj-Kn=kMh|Da@JmNKl{9X77RQ3%69tM?zOREU zOD5A#x7W|V($9jEkG>*Xa5VF;dM!G$vfbqE3clA)`+AqUXy=PZq$BltXa3Pwe0Z+m zTIrCZuN;Iv&yQ|@W*=kIIpz6LH_m*%cbdVE=d%}g4*PkBeAqqi0Q9ZAstf45Bb0H1;I=r0c(kSL(aY9;!YadltNpf^KK#nT@01fm(P#HT@TEGuA%VcOO<{ zkBv_hGZzEt^Sp%9KkZge3~1OQn2}NEp$o5phkBm({F?LNb@814{13h7i-5&{HVi$8 z=fBTA*>0Q2-`x+q#C4h#*Vzqy`tS(0bCCst<1t`+40;moihxi0N8kOvR(O52V7Fw@ zxd*UeMg!+)^m#2lPdzlIc+Em^unrk83m+}Lf>@Yv<;nZUg}W8(7v?$aq2cV!;G#d`_XAHPA>UHaPlwVIkziY9N zew z?C-_``}?c>E+l>)k|u7J8r?3taRSeNoM*Lu`vjk-xwe{3J$dA;O_Tx8@3D~(S|DnC?qfNTKdp7lp(18V|2hyKXkI_TH>E`Kzs zyBU}GnROeFKV3eU-c=#@PX`FWESAfbRhGp55PAyI-s~e=77uyenrBb}9Ij-z^_gxl!6f(1A_w zYIWvx*6=+CA1Z_oRB$P{0KcINp}n-jNB2uU3|?*`co$864%ncvM)U1UZ0-D{2mfe3 z?e!lIvDYd5W#br8eV!`&?=)f|^EWKiZ}2?Azdnp}4!Ay_-(PfXA3|){mdTc%6 z;5v_M^Q^S5)I@hYG2hu`aqV~z1J z@O;$yl2e$sU_9AxYfVpEF7~LlKBO&IAFJ2@>z;06%F7gvlvf%8Pf;_-<}`~=buI`x z-_Et&3xM8EPX|}%8Xsrhq22WKcr3wq9M8|+@ZH7e^3AgZOm& zIeX!=_@qyZPhcqpccSAm@Yo6r<=|JfAtZ0=6&nV}6?~$<8~r+h8Bc$ga;+5o9js*{ z{oQjN{T-}jk|W!qpm)yjIhV=*ufRqN#zKVK#~9zw`{BpMc0X}1|BLo4Z1p1)w`T7T zb~dr#ddUDYA-S3Oa}zwjl56rE3ef{)*ydIE;brJJ`y0EwhJB`12C}Xry{hj~o-G_& zom!nMUo(^n;$Sm4u)pKfBBCY)HQH<~zMgB0UDv1wW9!ew!Id!=CG#q~m-9?>G)^5@ z_9V)edkgt%uU*=E?Mq%f>#Qp{ujORXwC__onKfPeMBx=`j?ArwX3+y1BEWbxHIsJ7X?cBt*?B_LC zlb9>jYY^?}Uy%OZq_%!=J=0%rlFt)9L|xK+>XIhR+!`-7r&yu<6|Do;=I8EONdC&Y z#3jkKL-~%3tVK7iMfSEqt6D!F1Wd@qI`dW`a_*50%3n)QgbtvqQocvIuXs@_dxky? z_kH$CJdYT$cUA!oBS~a~XYN-@}K*&_*V!sOe$- zN_6Jy(1~b5K8i4_o|+zcJ9gpP2ir>ehN`m^s6n|>MCpo2zp4r>nN{JanR zZwX#t%>b)nyshAEbkdEXbt1K$_r+tf$5-=Q47@gZ<11Zu{Cj6*y=VESIjUHuJx_8S zeAdF43y~2&;(fI*nW#UXr`jqkPxUXK;7?yZ$rtO9Ph2mDM{C*dSMKqs;)_-6!Rga} z#req#X+QhgXs%^|1(~z77(A!JtK%aV&rT0Ced6s8yvW#*t+Le=_n2@3emQ8@1A5m( zGRWRA^H)_-9$SNKv$hpJL)HD_W37?+a>41PH0|Hv-RtF5?_Sok$KB6@`I;=4f9b&- z)Q=_fm6krJBQAwZ>aBa^`poXb$_K`O7#mgf1{N3gl@B%0Ulp{ZI*qm_Hx0EltGZ2ij%ol%mZ|2n;tl!~@9I-JMxO)mjb)#engx4W*r$)K z+9=(lF@$&K#KPNhVx!0_;4JH|Jo=K%dyRh9)6aI*{9(^YJ7er-4Y>jsRKH7oa4kh0 z{yF0JcKrSlwNF3qvuC&r{ZmC;pbGs{L=8Rp`)OpVX#AqDcytQ>@R>VrkZzHUf=vCl z&!9um-y`NO*fYx3ILvL(I5IpdcvTDW0CHD8FKhlOt#u3cm+(yRzOHFrG(VcB(cCXM z$;=JY*O~f$mYHi(NeJ#U@z1GoF^%6EyX3BHlKY7DYL52f7x%G8 z?D~JNJ*@S$5@L}p@Q7@1jYsW-851?H7ELq@KD*M4m{ZSuJ`4{n7pXMgm} z(-2)pRxbAO=FL-{!)NMxu73fXWfXf9&-OP@^q2Dc^XBPKyr<{)@)@KH^{@WE#3%3_ zGTuC)uk1Ws!sk`=_l9flka=R1rJFxt^ZWCXDKoK_$*zvo_pv=SKbbOQ!Q^->Xg>z^ z%Q0dJqVwv#IkDT6}Fj=YtLB z{03sJD_M(I{SZC3+yMy=bmadmM@FPwhbFLA&p(1fp5|4z?4HS$AE^W z`-sPS{mvh1=4x)*X-B?=`rD80xyE1nAJ=#7U(a>WpVl<(POlm+ZZZ^Ua9PR`8)`q;qBeR3UG~8;XUiM%UwvQ};Dr8mA9)3HEz5 ze?+p7IOfkjO^q=6ozHWAzZvC&A%j<;OADaA3wmI9V$W}$c=5<<_r7&x#n1O2@nP`$ z-%9`e(MKz_7Rc-UWD_!S#xRqd&b;rG9f2H+W8buZvjWA-;KfpEZA`y~bBpZHv-1g&N7N=TR)^oD7#I6=4Ze#(Z!{4{ZDrnM zLuH^djZyPHljj`1T&!(9^mGkt_HQ1W|J0lBOj$DagDFpKA2n##dSq7|nI?PXOXM1` zmRPs0{vzcWs}|AWMc7{L)ST`x19lw@=kMBnZ1LlIb`3ttSmv!bl;2tS@}g&0mv79k zj!+vtf63ikKNudgYY@*a=1jTb(11?EIWUR|YQKZ(muFZjSplx3PXu?%8OTF#96k){ z*Kb$#Dt*T1R;hC*azDSksCv7f>_YGY-5FS;W) zR(ei+Zw|F@ls6^5(4WOWwJDyvgE?m|BfM*n6%pQbICnZnbN=TSpwBG%eK$N2)Ni(b z*XM5aSwf%1lF#sRcAw|}v!8d@+sA*?M~62~iay&Sv*`R%m;j)M5P8@UvmkNS_p*G-?mW{q#yfNsv7(`wp16lhB* z|ETte0dXeI$83Ag_S4>%{)hI)X3h}X7$*TmFEC2i^)`RJJyBggQ2A+)uY z`)%Bp4$^nYJo%6KWj*&yymDmlzT$tj{|e+aaneay{lmXWb7tkpP~FUt5&Bt7zMk~6 z_}b*t7BHB|jFGimmu}6en=w-Nqr6wjd&TFN!<;uXH4cvS{$0S*(0 zCiz^GNp^hKBnRGo-W7U(m6`Eu=nDE!-}y6KTgc-5KVS|1`zH1VW8D7(6I(Zw&tEW) zd)b3eeXBM;)6_+*$~?2DYWPb>)=b`fr1jtacqBZpYz20~lB#3ZJXJ-lsw(1t&*h;T9!2&{zKmSWc>_jlpLfIF?aGbJ9k8T| zoGRPSZ^$3W&s`GE4ZGjO57UfAI#4~E0)Kl$ed-M=U!#)w@MvJSa_NZycD@h2X5%?`-d5^{ zmF-;!-tuzucCBMR4$$TscSWx#7=taxT#Ht9t++09_%7P0p>67r?IJ&ASJAPW$D1Ty zv27pk8J}185}a4_?6u@6`Z7@XzTJ(rtH1h}gRUeH6nlLf1ebO`ef(K{^Z$lFbF7^6SEwrvY~i8trRBu)Yw!42vgWR;E84(I zjc^q=hgoyAxS0iR$d9Sp9>37;r&H|fEow6k1dqaUQ({Ag)c^hiDwl#qJFt|^6xYv1~4i66Z+Sjw^W!azMhGss4_&@rb(>*`x zhu#O#S5V))d;_1zt_$EH>^|aH^(D!oX|6S`}kGto|w_m=7HWbJBJl`F>&M)`j_3eaj z1YlNNUVA8l@VfIAdiRUqZ*~#K=xUj4y6&Nm?$;%UAKsAWQ|lwFeUbygIV9ND(iJw( z3^*zyhIqomJ@;FS$y<$AQV@&=KR^jBPJ@^;c}^i1H@|_v`GJ zkT1det^Afe(s%AzyG62n4(-ctRBS-Bae?}S9zyg@o%rRP?XkRpzpK6L6Ys%SIm%uc z{Bo_Q{bmk4fz2sj-L4&B@1M;xvO&+(I~vazCx51DeAs@9rGAF*Ru43tV_~_G-!1ej zSmM~DoFDAoy_B2=?8d9PKZ^FKnRLc<%>m!P&0hh3Bl&Z*;P$O#)572^TIlb51?;Up z^qbZm*~qC$YZtKg{jFiX&Dfh;^2haN+3!7BkZmsx8lm=j&!X}#u_@a@a*gdA}QQ%OU z1=!f3drMQYKSKBBr2K0c{D4rS>o@UL@g)7@18i1JDfZMBV6#^e(-}qlLbkQ-$6Rb- ziJWHF!|S5;ZVfxiI$HJ39xX<$u>2sK+R~=6zhj1TTDA9k(dCk(`1!AqJ25}^g^=QJ ziPMv!6|N;S&`5^768S9lIq*~VBy^#@zKM%1?*CBUz1+e>4rrA4z$)l@^|{38(j${` zaFqv5`@dU>85A@s_rTOuQCAF_jHo$>0vhhMQ*wK4IHBRq9NYzdhhpO?|0L% zeKiwx_|2HK|zdIZaO8%hGZ>!gL z{~c{*>v!j`_vW``(=;>#KVP1l1Wn7YfTjh&)5vPW*DMv!`;xX1wwW&h^g4vM?Ls(dvum6*sKmPc#vQCM@k7(z$Lf zFX0=^^K-)_|JE+Cx4~P2`@# zy~CFY{OhBit-aanKP>d*+j`QoCCJ6PY**+Si{Ehq5Trm@b` z%{tF!?32;(hUyfwgPX^YBdg+}uKGzKTc_YT&dl)l-5$jDYehE>1@EiVgO~%;Fo^Hk zi>tZ=TbgoWYa)YVYp)Giepv-fh1j91fk`nQWYlqW7wq`qfxoToJARA9c@u12YrTiV zG%{VbS4$Os;cOFY^J0y+gS#~IFFUNoJ0qkGn{I>013~<`_(Cte*?oqzgAITkQ`B!R z=O24u>uXbqKVpHt`^%?v{MOrF2{6WiRXHBdvUcU>yjOST(Ox#c1=l~6ucG-pVf~GF z%De7FW(MnRG_fz;q$9~6-bM^>B08$+yxw{nZf|?s<$r$LO zZ_SMesXHzfzvLy+KsoCvrgJN{Tm3uKs~^g^yqNmmQ*$G`u0}$96Cal>AqG&yoM)h~ zH|S?0f9C?@dGz;s?lqnFP;cW6)u}M9-bU*{>TQrK<DEBzqj zAig|)D`zn_LCbCo`3)C(@G8b9TF{?A$N%lmG2>WGj( zQREEqcDrw;BCF=apUJ<`9ueW=3m)%E3609lt54@M z!u{cVjv=Odn%T5)GWYpZF3pK#<$mn-^{gWvnCR+$>;OkQ!B02!CaRHHvM;1p#xaLm zxTi5~28UaDW)k7(RvzK_cMOAzYUzJK8H_J z4WHz1G{1fyH52?*9s=I+KD8sHC z1+4xa$8}ym%G)bJ7UVO3QTh|Ur_q=HUMu%+^YG~N(Gd8^pN|8`%mu)bVGT}j*7K}n zmvU;p!FS|VvuPV_Yd`$y57Z}+9D8R(aus&mVSaO;{QR?$)#Pow@9tB_L3tt%Z#d}x zzQg_A?>~S0RmsgfpYiX%^C|oMfAd?o5MTKJ`slYTd(8HIrtACX-n-IUOR#bOp86n+ z1z0b&eg7oz{=+ADKieLRoGD*`d~oZRU6wqEy(;(x!#%VidoUOu!6zXXbYilSxwPNw zCnjg`U27!IKGauV`r|+D{ieYC>E8FBJmLGj_LR|hzlSe^O}D@sZxFvzIHx%1zbelp z2ivL?+iJ@YGcHYDfKRLV2KZ}ZlW%{{+Mmr)!=82ImH4}eF`bLdQY=LJ1^Llv%q8Gi zvNx~c^_$JIb>Lzh`fxS0i|lM(=gCg=+W58HtEIgJ_Y?=Tz8=3NSJsld@81`#>l(JL z?O%P{b|d4GYk60485v{u5=zEAO51Jl!_1&;=Jz*g6Wf_QMSM46m*gQ&t(RS4MxsMq zUPT(()7XoYZwIVZ_!UL)eT(&DiRWI459__-!=p8?oMS6@M!^fda&u|L*klR6vvD{Y zeh>O{^3Q~;7lA9TIg5PK`c0>Mb0%9+G`4%Svkkuqo%!??-Xs<2~#);tAg+{+&IxL-Y}} z1AW+6d$50GedT`OkAlZ2cqB({r{IJ(kdGrpqdNt^Y#y730^EWn#JI{Isyg~t=^*5r z;$(sy8J$#2#D`z&op%9$f3SYlgZ00_a}d7=iSq^b)5z|%^idy$uT4xiRQ%1*mxVJv z(wF1SwU-tq7vghi@Bcc{E%m^w?wWO!v*T<8aE+~wc-CEbEV!f%#JhC)Q3{*C>p4U96 z=B4!C!x#rH@}YUno9O#2@V+)c+oJIx{ukT*2)*$( z?avO8$GJtd(22#M7gG@%ml~B+%qUF^YSIk+X=0I)VI^G&YO!mMRnD__p5-(#msu#ICDd(T?sNO+1NMobbs!FZ~sM_!le9vPYgY%kKY7_wwamfUmu0WCOIY z&PlGgt!W=MId=cimuBDu^WvlA25a8$*@umXzZ-$h6z5lNnPlh^WYAmCe8T#R#Lw^- zmj~>MsjHaJ08a$@AzR+txrPrkmzx#$Z5pX~YM12?Qy^aKf}VEK@0=yfTOZj+?&P_D z@#1>9S6Tg2*(KUdr1l-9K9=Ac#U5kUi>Gn@N}lD~A#(+N5MR0{0P|>I_V*hE;eC^N z59%ii7cfee%>*y^4Wz1{Sv<0;Xz&qGh&3Ov~933K!n)#Qmk z=wj15fKz9+Mffcn#mYNmfb72V2bpWFn-By4cja(+@z>J3u|Z@b@SNtQ6~1hR#xvo< zhIFe*F6CLRm6RFNfQ>Sz6_~0_;+d*>6?Z93tq-r-Jd7MeV3>y7Q&TklJHD>- z_XEsv&!=AIdJ}C;<}Z!@v3!92kFB)`Ug_zt!0*q?GoPmSc|MlapZZsSd;R{rJoB4% zo&6%;;`&w{PsEYkevyJpFzW;(fMeI*d z&huhq^Tg1C&lVHYUWJcV1pSfgJtu?w)EtRcEiYqJ)k4$TMAPW#8TNee(401OwCoqo z@aBBQ&>VF2)EVrPTY>$fylln7YI(=O?09WGG0KE!r<^q!eDxOQO7f+NPiTtsZcnm) z@`8xSXxFFF5qYEMqc5$8Jj7o@@V|O~vYNW!&;P!A`K|6+oq1xA)#u;TJB;Z| ze9}jwkITin4lWD)>mDv^bRArt#pm0!HJ!gcxI~}y;L_hG1TM$(Ttw}Aa$&C8q2HVJ zsk}o^F3izy#&(b~@O;lcp;_+v)OWf5BibrazsRjVxV)ejmuLC?dAR(X-skztvih_A z)8Ehh{ybbx(R1t*`X<+(rLA-Mv$#CUdNH{C9JrJWv~uAzc;yU}lAmx2yp={@;@@yB zo*I1ueefpny5RbhWEwHJ6u#hY@!7S=@*?x#hJJXfvG#w#Tk<=D^57SL^x|kUhbE)& z))0*wdAN#kLl4lL@*f`Akf-bHy<5TcFMx{-@7ei$=Und3+i>a$@UaUYEr^fT1NaEa z8_5~Tn+$TN+Eh%K!C$e-nX?KRsN5mBTgIG$pNu>#16PxgP1qvB|DEasTFOALEzqX? zy#V?qeR~J{E$GPBSs`6OY7_;fnoo?*f*O-f~-G;y0>0MI}6n1;(i@Ym) ztrfWBL;M>sOa4nIe2-`MdC%t#8=d?axGQE|F$zw?e=Lo$fA!0fpR&KghuG7}wJOFM z{v+QHmBzM`OMtI1cQen6R^L)v^c9+kZC2szI&8IF_)JSeGl@}DXb$2jA1~8+*RTdO zojxo1ETE4Z-Yv{I`oqoOECbFm^lkM~dJ?vB=BVm2e3CKrxqfW=POo0WPS#R3jphDy z^6tKi&L|t!^y@axv#lZLX67)ndm(=9>+vCnv4y7A;%|^UwP7gFR}F_ROz80bGq5!; zUHDAtn61y0;p>+jDkCSg{HfAmVM;AhKM5R`4$ECKoi+;Lp;cOI#utqef7=4gvKwU= z6`2-b%~>KEvA->hIZKL;jj%8lfDhdh-oEb78Muppqo8imT2bf=i9H9EF{m3D4zN*ylVn{eTuG+rd}!6XTsB+yjP+7 z_Y+G#Exuud*S}=jtN#u?2KYDVKMk_`-+JvG(dlMjl&vrwTS2y|FRQWR8%yCke5+U( zd%TsH^Qh2*JvtM8l;ywh9N7ZOulDavwDy8K3w@NwhpMS+Yol_8bx@{7q-VaPTK)4j zbiUueoLl^6zl4YVY+8$XOBfbNe*KvRE`3+_cX>*WXFwckI**_Ei<}2FHuX=Wy(#FUxbxZ+1N7O^g3t{88k{ z+E;eGUO(!4E8`8euQ}a7yYFYy3;R%m>qiT~bt$-?PQ2oKAIDF|cNO0BSFik~ijm1{ zZ?^G(#%MG8f;iP`u9tc~m+-wtzIq~>tiL`A73vtoHT$5TQeZxCN zypJy4T|^9&_Zq$0>^5dNi`d|P_)9b;k`^LhcbuNM+AYg89j? z22so$z6iYtcN3Tg+h%<<8TyYpVw&|wP9|<0r=Gsvw{yrn#YO%3ET#QI_TTZlu@sr6 z7+)!KqWO^glMOMNwjDz-Hkyj_lds(5=vLSL zYa6&`$S9k=+x1G3}^-@kZwgv+T-##ONCp;)yiqk{Vu zbxpi)$8U<<`m2}MnZJ*5iDr=P3s32dN!s~4 znKdP`kk?imoe$kC<$1f-q#9G7pG$qMe1{Y4F3zrUIeIxCm7@o)oosWofgRRNl+Nb0 zraIkN(WNoX>sOdp+Knyo=2rG$&>mF%vP75|33*}(=}OioD-7!q;RiP8d%6m{6rB-a z%}Dzb41Rzy!|WP`#hvcK7lv3Z`&qgo#A}J$EK4H?|Ao(>3|8Oz7u2VVt$*7q&#nBW zJ)IX8!d7&({myAfFyFM|2W>t6LQl{8*Y(Vm zcf`AXjckn5mU5THZ^8R|w+VYY!km{zkloyu>@H^B*F(F(@nCZ`oA{|VUwE2_cj5d@ za85kE-}UXqR$unozr>sy{g|`p1U}$AS66>(ft`o=h6w9Pw}o8}^vhTIF!aXhj)8~v zKz~8|MD;7gn-lS6Bhc+;(LH+Aj%ls$qqw#-H~QCSe$atIdQn?GzJ#m9sjQu~lIJg4 zVb0IG+R^e}J~PmZ;`ycURtdZnXI^i--mV$cdGeIHckY~*;xR5CNbih_hpZi=+@8;o z>xn$D&x^O<-)8CH**7u{o=r$6M@FJ2%n1wpsMNT{EcjbC9%V z5JtxHhd*Z;K27`S)_6>7aOd8in^c|Z_2_MzlTqRF8HrD(h&7Hcx+T=Lig)Gj6($BJ zFXmmBcNl88fbW7Y2;*-(7z@A6+C5{aLO#tzk1E!Q%&#+v3xT)gC}(Nd+I>CO@G*5Q z*Yh!t7MNwX4LH92^Jw4VgLSbG-O)XuiX5P6Ah=Jk@2d@j2+cnWeSrsm{-jOyw_aHZ|$vml6)=gLHC~_ z$EdEhew^azUC?ixm!H%{EiT@5He`MtHY7Q;k7F0T$+=(MW{_P!oET!Q_omuCV?!gB zybBMU|G`Sa+TCa9`ycphFSPa(@~%MiV)dqhr_=1)*Lxx2R+dkpr(SQlB(@Yxn(9-5Qjy!@GY@!KYr z>9=3!on>NcURaypI2%0N`7SniIX2ir*Or3tX;m-^Yvx3ALOhx#RUAe^z0!1^7^?p zR{1X2=lii&*I~2cgU9yMuUos#ZFu%UOY>cCeVM%8BI+Puhf8K~9!g5_gsZS&JUiav zz{a59v0&d#;I(CR!um(rZ=3@h6+N_3*kfByfENR{HMtIj*0yF&Y}=NO;fGT3!vHhB z5SkLM;Roy~-`5Fu;>TD#uYk{M!EbqY_qcPppFNkY*IOIXwjG6kkkjMs{KG5Qg1!5% z_$?p#b@Ftw+xRl{plfyyBX(Gs{4(q?#W!j11n2Czy?k-WnzsfgOUN<3{h$}~-Z(y4 zLSDgCepe_~_Ev;*UK4w6;kWup4`f{zdtv7D;2qoRw_XkHp#FU!Yk!I4Pz0GHxtGm% zer!o`N{z9<*ph$mqhd>IslDOj?n>sx=e=xvJqph4bIhaUn#C9VD123eFDw7zg~_7iCBID5pN$JAFotF8;Ne&x)dQzs?AeF+wk2{hScV>u@! z>&YdsdK8}#x=t;SEH6W5-r>h-a+0n59tjQFbqaiEt(Vcx($ML>_6~B?+DEMgtjR;e zS_f{$W@+K~DZK03MY=C~03KW0Jj@wMvTt&lIM0vgxwZYfcotgnY$zC1RR z#u3GSvSY!gdxyLiAE)SKn`@#tjr^zX?mV}q(=?8?8Rl90Fww7>Dn8+#!^?q#cMN@@ z+hv#5FYsq3^kNGw7pGeQwO+@)q%Y+{R|4gY}H1$NKYa zzA$SUsZc^Wq2LM}UJs6yKNP}utmbzp65m}NHeDm0_~st=!|X}`$4%fM@3+{g%$cds zdyD}%p@QX>?$D*!9zC|IlRX8%(brb(xt?XKI$Cvko8s98-n{pjKf6BB>yO&8(l0tC zwi#WD|GvkLv!XCrmdLy+n=E)uHGNCa-@hSFr9C?}#3IOvN~u5Tdih9c^b0&Vb1VibFKBEx$sa`xYwHBU}FD?5bgnSa-^j$JaG3npbBa5I_|DB1* zvzZ>RMk<`#EHtbi(0?<}7T#OxYG&P=W9>TmauN29i;qjlVGAiYmU)BUV{Nj5z&kcE zd(=j<->L2Bc9Y8yimLP7d;K~5u6C|J=lNX+*i&-N4H{QYLo4fDew(6&3~gq37kSfI z8Y#f$&Ah6$OO30~b?Cuc)3kNiHUAaNrQo!2mG7CZ9AGVlpUN0-74usLKiT_=AHfUu zzQ{`~93Dy^}xkdNGOWb&W&Zov7Vf+@Cy)pzI_Qnhx5pdFt zjJS$0iO$INXsif&Xa!H!_Ym%o z4GXEszmD8;;i=Dc=t0*PA|tfMZRG*5@A#s_jn++l{FCEo?RV{s{u{h;^|8P0oF5K% zYCTi5tLxLCSzW6{pI;5#DnCj&38G!?JN4WDzS^Ho{sQg$*BZQQTkN%PpL`FGl#ZjP zyKVj2Uim2dM>M5*(z;SD^g9##L2FgwRTp~>H++-**sbX4@V&?sa8#8plnzUU(GjZq zP(ocs*&rc4C6fy8DoxEmW<)E>W0lm4Q~UZeylWCyCfl#|_|Z(1Y)1hoB+yoZ0l znF-XTAeMhExv+vIon?FEK)>ki9^2y?=1mh6%t2cp{l1m8KFe>%D4LTW>3-HP|Xxz+1F&;8F7s!MU>^hv4)8!+aTn;|FhG$O&N75BmZZ=)19MqVevA^N7 z>F}X`>(9;omC0}Mp8d}Kvpqia@BNOw8-8w0@SP5>2YG!4>y)~$vkBzu2cLa}_S4wv zYDYGz^g{u1;WBWl>lMgL)gu&boe!R*AA3_v_#kc)9z1olu7r!^& zbkf%Xg(P&NLj~CcI4wvt@IXs8VQTE7_AN47I!&{B!p+Xyvy_nzXPh;;~ zW|m10h@TR`qInG6k{fFZPyb~QA9r&$V0J!UrX~~gCw4uyub#)I?sv_t|GnBS7o`QAm)&2h<{AA~ z2raB0Vm1{rPc4Jdzrav|Z6Ke$6dII0bP=D~@9*{CP2l4>{)t+d-NL()0mOJ4tL`sg z{h$T=E63Wd!RxcEU6He7mS(+_awm~=0g2qq?y@@`BU$vb9 ze}BJ@bof);r7S+co~==S%YfuUa`msNI8WzE?5yQGH4x@dS8M9)_&CUrsprApRwpbg zPDY8ZC4dJyM@Klio+tQ3_qVghn|Rwp{I=tk{w#CrpqD}4(i@qwcv)Q*3?n zUVc|xB?nlwpEwMxGx^K|R_Ye*)cH8d$rG%^ROW1^{`tDI%_i#;G|4C6e2cSLZ$hV3 z)jNBqDA$Y&pEIQ^41HJSqkE0n6pl>k()TLQ*8Uju!F<n~_dk;f{^TPwIKAi38L&dl|s715W8{7L?xmMYH zF!vfy=OnDpo!U$sDT944+AGPm>->#T@izz!L)MEjLjF^|~g8>gF4=k(fs;zCI6ugO_ zXTXd0H*yspZ_!rHqJdYNwN4A4*__ibeJe)rFmzvT>ApAT)W3%h2Hm@yQ=R1`AI#4= zT?l`>al1IT%nIeKE3(Gc0=UsXs=2M z_DLnUzw1o$5$I2T-^+YIO03zgabQoB@~-4@DS7U~Ng4Ze@O9^w5XbcG4Z}NnzOTLE z=|X(`ogLoZfVv@euSjkuec_v5$C@j8Khzt;x9OQ=|F3oOPG~ ztNzhh>a(Xm;&Xm~-}3wO_Ji!!`#k@BeFplo{nOtRuG{{+{UC4XIpT9e_&l5bR?!~! zo6S+DyLPu&oHU#KQ|&&ApYdC~pgDhhsacl2KWuDPJ%JqNSkKFcVb4b=_QKRMY>lnx z2=O8Gwe$++tMd#mb^`xJJe~b9cx*~f4NB*409&KUb$YV_SonR&y!WwW33_(D2b<4p zGk`CR4t+boYuWnqg)INe@)xok|1(uM(2TS6ijA}enK&Jr0@>B99B=uj0b8f;1h$U7 z-k+_rEqrvsON?2ugKXLIPC0X;7?E&+4nZf>u?i{w%GN_ePTM`*)yOk@4;`}OYBw)x z%U(mC-NUsm&iM(-F^jJsPsHB-`i3v~_#0ke^XvX8Ft?|HyB~UZ3(6;V-a@avAs<5d z)GMIRJaFT!;oG&7M1_lkF7V=@Pm*WEdPq#P+{V~y;AiDs&mwLTTm!0A4w&*1;D6;i zUx>}DHJ|xYP1k(R_ae^PrMf>7i(jz3%_FX&8;0Kn<0<=-suUzeVL8x+IRhT!ryzYa2i`tLQ-#a!mco(@XbJ|C*eC9E9a4Yy$y|*IX+f2Li(-siJ)tnR} zheGtD^@7pNW4qVK3$!_QZUOn!?XO-J8fas=>bvLq2h$hn`uXHh+gL8`|8ov!!i_PT z+TQElw3T+!^xMSed}BJ7z#Fm&b*+`ysKqaS0dt&MhaI|~Ia-fzAbWdzKKnU=dp*8^ zzTc^~==*fue-wV&j&C4;X+3h^{*DxI{t5LWxz~7UKR8q+IcBthF3#>J$W!y#^z?UUQcc;u(aLG`VaTlB`#+zh1~AjIM1DR zqV_V=^*r}GCY!Fs+#g##LAmH%@7_wi=Dc`U=LM$g!a?z__bxe}{vIf^c0c(W&hAGR zj~C76z<=n4<7j#y^m;OUYGn|#FWYy3n;kPj^kf)>Uy=Ze1vuMhTUVX#LF%G+6d z{?Q5PDtP^RXzym`{5Eh`Mn3%Hc-JqW6V?$nzHmD5dT_KdFJ%FpSPm_=(Z9DwRksdW zXYJ}$tzG?sT#-K4u|aixz32a9@15~Q<&2(53?c}_t-x>rFc5z^a9O--5YMRp*5ZQ=C-vL~Nx~=f8^A{b%yTN1tsr+P2~&lWA%>jA0H3 z-OX8aBh9A#&y>e@e!{NNZ0vv^uT^ao=v(vue{LsV4xJ(X^T*r+H*>xYcza-?ZPi)z zaglHGcL}EaRj$4ed00!G%pm6<9+(a;OlajZH||BgO~jT3PD`7#qxxB2rSA-V+iT!J z*Mje_21hLuS+juW)12pY8}pYJkiWdXw2#v#ygAo*-zh^Q!CG*u^ndrtL-Ll$>qS%=Q=c|>pMIeyO{fG*KbR0 z>-jNUcQ(?^M-@Nx$B}t}IuP_#cnkc14oJ6#lGV_k_}uNqa{4i7FCYgt`nv1us{O;W z!fmkq?BBtA!d2!z)Afttj?QJbWXpWnB^mk=|Jm3IILKbV>$wgNg6ns!*p+SIy=M5J zuJnDq=coi}&TvhM|=j3%5Q0nfubAJ%{6=m!Zm+l?xdXk}&Nw=b-MTmb@FRPL*Fhib+c}u~*Ren9 z`cOQ!i*fypHPScjn(Dw#?Sax-Eo(Zgrw+91sc(Agsqb;GGd#3m2>Gazb$&a_#oW2Q zd!uMz4fAi%ZL%AETK=q~f#yCm;L-0cYUlJv%kl&BziF1;3=WO=FX%5E%+3b{r&07@ z6#WOUjF;`LoHk$2JNj}lhKcwIgwrbBo(i(x{$|cq zU!@q@$#}G*`6lMH5xe0~6!`{Ebya&dUp{ohK6SfpDLzY=ai$9TPj*NUKG`C{-`V$t zo6Xc4`*DBvzMsE6Quh9tJ@)=W@Uaej?Du4H4tpyQi7dyVFgov&y6n%*IC@ zY7Q%|bYQuODF!K=YY&m?Jt_aC7k};y@QVk%b@rRQ}aMj&jE47Yu6HhD_TG zUA1D@$mT94F5=tTx~9A$=~bO!EW1tXMVZma)rt6_=u<<@H^q)Jqn&Qp&-DY#<1v3u z4`N67cnQMf@J@~$wBzGsC}TdEG5;QX9sR+j0MnalaJ(`7_|<9%9f_ zwWid%(!}Jar&+tv8HFwEv0R1i8eyGFF*EhkLhP$`B|19`M!*05;5^9Ok0tN_AoO$) zxZa!1@6gaC??Dgm{jPib$30q7jJ=ii+i2hMp`#C)@99?e{@^AJVYOejm#B{Dx=wevo%M_>;^|4+JOh{I+lK?m*UX zJ-!dh!$IUa2KOfkf7-(*J{OOdipPnG-UyEK9-49Vnt9No8PKUb34Ir@-Dw6a(OKq` zhsBq6FqVPQ9nau9-Ge_gRraiC=4AdjOL7h}cItHOK-C>k`?|l*#P__x8Wnka*2i+V zbMdv;kh$xTxoZD8WbQ#e8<4s9sXJ}`e|%J}AL*3x4yT7^Vw$L5{>^_aDEV+kAeTGbA3+* z@$NvvF(mrS5Y1BvHN&A{#4d6;DJBY8br}U*yYdhid%l0ZF9*V8i z99-wKzwza(@ZW2>SBo!S%lDPuI-hi+Y!JzM(Vu?Dk&D^1v$D8*`JS_o9q44Mv*{C^ zoGL+wM|f`z_p;yl6f~uF#n(Za%6@Ll37+fk-Ttmwc(Bt7na>vBE5lB!I^^s$)>n7> z_N4DS{tX#Jy$|fN9Gm+lJB@WW`@0f;q|Qg5yte_^X~K>4{8nrb@lPu`7TM$YGdLnI zqAQBd7B2Y8@dW1=cyth)f4ASW_k5Qg`-pK83*BUY<0ERFjj^D+ zOy@Tk(*wWgUam3RNba+P%bfw^%f$KgCz+UCA7M~deU+YgJFx~Y-rkrUZ@2b7K2LUT zfq%Wfc>7v&bi#Q(usOa8+ULvPvG#hMspU*G>cc$6Z{c6Kx&_$x26!fjuYE?**m=_Tl1Ey5m7S#cmaFUQY8~GDK4*Ac zrnnFCj(Jy1J3SfwicW2VR%)nctaG3Quksu9*@C@LKrV{bT@*Jq(3QncML}{FyxcuM z?}h#0yz|97m(!=-(Vs8NU%SeUKZAa4L6@%Ped$ilp6*(JEmm4zkR;yIHIs2wb4@%B z{~xMN6eQ6(U1j`PT4_?gdm<%SO--gHg{)opum<}phF0|(+`BkFGT*1&p{)P4Fpd(| zidWH}?VoY529w&tSxG^hs*Mifby2HF^EyH7)B}v+PWV>$^tYZic7V%va5dSOP2Iv3 z*Y`1w_DiUB$^8yw@Bx0m$Go@eJ36`p*{$3w{D{tzpj*XFbOxQ@u8+HWecWNowb0)G z8h6O-Ufku`c~+l(e~0}3cuw&{>2=vfHH<_1PqZ)jHRMAOPs*9}@w<^)NwS%QU)gQK zu}>>A!SPyftodWEcgY5o?r)voXjJr5ekXA%Y);Xq=(32I*c6`ec|Wnl@&2c{maT8@ zE|9+It>0t$pPa1lNHbn*tXl8Qf%a_uOlTlPJS56BjZ=Mp9-bC$Xnmxrf^|Az|8K_s z8`eLp{mFCw+KJYkM&!qn^S2I;F}`NiJdxf)c8(9WlW<)AAHUPXSKXnJ1m~M`V-$+x-k0ck+t)3M?C!alFv?i zwEoL0&4@W;utTk0hmULF$2dY+tRz2(~}4r!)sU*ndZ`_|NZ`e@b6@UY?)ehu7>lzrr|?Yt#W(3?r`f zK%28J`Dfdr?RRL~c=b1whfwTfW^-vIqIEaRm#T?Y$@PJ}r}kAV#P)9@R({G)*7b5H zN1LPZh?S$I$Ti8(Y@Ghy!@u%d*mD}R%`M#R-1o=o;|ChuSgHDl9^Qllt=AVG=-yNV z|2TQ!@+L0RdLsAbH(f~k=*~Jbk8?YTZSDNE&3ULZ=Zv?t$+q!3qWjA@pORQt6TjUU zM>ah2IJj|gV0a?~(Z8TR&8{D9c^2C`j6JQ~GUfKD<{)`@JH_iW`NP(k1kT5lznf6#P2edgWvw0fH8)UvG{;^L>Bz zexBq>NUQhv{r&OF>vi%>dt7_1wbxpE?X@+R6jDZsc!+dw@KpIH%rY=lZ20y-{gzD$ za93%Al&8A1cBi!3doMm9n~lHUS-twLzJ{r%ENyE0UG#Ow=euR^1blI(hfBf->hkwr zJYV{o~g_a5&>)a~EjqVW<8rl=13Y|D1_AYa+-YrD(V9BmNE{pZK0 zQ@!KRtbUlrH(lskc58hAQ$2oiAJKKo)t@M-RTZWA8^^LhLw;cNL z`trH1ep$KlxAOfl{fz8h4Ij7~9%|ujZ2{i=UFE_$?!ws*-#d)H*u8%vfh;AO6->PN z-iqbDMRC8-#Vt%DyPu=(e-)-4%sn1F6ngUBH6xpr!AA}6tTw#f_#Q~6-p+f?DN3tn zmKDN{f)iqQ~j#%6|X+m|7)7w6F;+(_nRmyOZBOpM>s3F-#2#O^9KuS4;KcxxKQS! zIX^y}>P64{p)=2y26*q0U42;zcnVK=pwokCH+_q5{A~^2;TwI$GdyMd%X;El3Us0K zD@PLhZ0Ff%T`RP)Gs-*1*(+PRi93dmU^ToffUiy?e56!$FfK3BJ}>sfO8Bbm?;2a> zTlp})Om zKHBhz+CW>cd6zb9ciYfN8~pKN(usfMm$x-n`uTPUo zv5jTVyodccp~~!;mnYA6mLDxdPCehb`e>Omti6yv8C?;72~WN;Yu`oJAZs*r)L@5^ zoYD0T+oayH$JfM&&ZA82{rAd{Jpns#mF#d+U3sZ1uhUF+!yqA4kZxy-It&vAtG#KBueT`@)4ha!33>qg$Mb#@%zX-(Y9aaamIZeSHrdrSUnBXl zqxSw!+~+MDva36-wR>f|acqC9@9;v_SL(3wPt2Q2`4>L0OY1S&>{C@cUQ>D1DX|7! z>r>3Tm$`2mDVv&nQ;ENVZ(Vl1_0hSW`9e6TpBV$k>;-r^hwnvB@elKz1wYJ8E4nu5 zEd60QFg*ZF&A73qjeWGki`CZkj>TEO*E6zh6EG`S zTu_(IzJpfeXwlv-#b82)bToGXSK}uSu8NO2%(dbtRjZth<(zHprxC?LZT+LmZxd-o zPt1ll!PDv%!kZrXug)jl;k(fzZ_2XqKY!O#7CBA1;!&f0vWQdwzdoV9N$1|ep7UyC zlY-H@54K0Rk1}s8hqrGbW=j-XT?E*Dv)OB>l}V_-*109s_;g(6*58|c8?g<_58Bk_ z+fSIiBf5SC@=g=-!;0g;SMX+Z1<^J!DGcAkC*$olzVof{W_*{`W^~du z$Se`)U;1eQZPs3Bx>)5nm&asB(q6^Hb_?gv0T1P`$M?@cw{gISOva^J`*WkDXDsd! z%&51KcHrM_>Wd-+Ina`WEKB+cCVhRHNk7e(9{Jy-kAMdbyvmI6L&bGnc@l$7o|}Dn z{@s@+K%OjOcm;kCtV;ls$eCcSS5^k`I`S!3x@zV_PEzkV^CekCTo1t~K#W7v&M57K zM!M>(w(T6|t264alkv#HuBo`xe*6=jcz^!+&8|mu&uZ)sesF9)V+$k4QXvED-)L9Rs~;Qh%fc^}y=`9rvH0bDofhvA^lRXTjqcFR#&%UJzhTz0*1Ukd zQ*&Cj2irteY;SJ2Zsq0s4DT%LEKR5l18752AM))Oqi=WDzZ`gEJ!E-{*~{!}&o-|; z?*6#h*cQd_q#Fpgf{cALe9^zZNpbUApq1YHn+CySy>IWeze#h4%9kzhMdl-Hv{jzX zwh8(V%z-}mek1WXbX_j}h4ux(+X8HFL1NEkV+Sn+r*g2vd3*T`tg7)(>;ryjeZcSe zmCnZ9F8uuQ8~frT9{39C(Hshu%l;HrAI%>$>{s{SMXUxJR+|1_>Y<(uU5 z6z*$v&zJ>0I(PZPe5HpkT!7a7e4$A1(Odq`dp}?J9Pe`}3q7LB`N3clCv?&Ovh*sN zOa&&d^pe*v=^yROr;l3yDHu%u=w~7Q?dqS#Li~;Xy<_dTUH$v0+C@K((5^?-C))lR z_e*t8xvzTdb^CXN(gTBoy!ZESwA;U5dFfrgm(BY?ul{}5*S}v^T-v`=m&)%|o<2X% zli%6vB!26c-=DPEe~u7L-=NNxOXQ1geDU~07Cd2?Q~N%h zA6AcEEIMWlU{8Q}n>sTDnSEveerDu6_-_GobCC9Ff0N{`-g|bnPucs1?*RKX`#x8r z1)h~icQ)S3`jh5V+kUGXo3=&FIz=)IUe{UX?7-j2(TKu3+0_ZI)`oTzL0+#!T&_?7FHM^g%dJ9a^6XiI@MNfS916 z(geOtiWjS~oN9~PxW^+S6fE+{2Zb$ ze{u2F5C63W{@vyI<%3^M!oD&@?L__p<_3S>Lsp1SzEoDYi+6%`J!5k%c-f63wr$-w z(%se$VDme-t-=|9d+!*i{&(YxaI}&6UvuI};(`3Db^`U&-`8^bTF%^Fk}$qYX5Co4 zN_^r>DY`1{e->D14MlC1yjR@|Cddny$WQasfAChkM(aCXy}ot8TKP^$Cn=|ncUcFl z_53KjbwHhmFco_>HtgDhdgV8g zA)Y4sz6xJ^_z&yqU)j9~T~6>2&MNlbm==rAKRRx&L1dNUVZ@wq;{nXRighMzY|5i= z1@+Dw@+F@dWWEMTrK&ZND-qmcNK zl6x9&j3hsnOPf3Td8ewx>9)_wKIngs|Dv(S5*x|bPZb+!#Vy2+uZRD`BeM@W z*fp7BX4tFvroL^HU!LoKw1T<Tyf($%{Bx#1ZXm)rS6J^`Y=bL_n{ z^L_asv;Tb;>r>~;2fy)+kdrJ6IWcb^Ja9c*@(Cwa!n{|8o#1}-$nXqw3%^_nzw9g@ z9Mc}Y#DB9k{ylVL;II;WssOJ-z*+0|(*0ZDLnmGjBv%2uGAFgPWKYGW;$@KyO;em? z^eS|^D6s_L5m`6by@`3m(=0(2N&GI5%trUeN2sBOa~g*c{}B9tJcWIR&9CPtTi^}d z`BUP%KGpfe+2%m(M9yWgjBhM|DkGTE&KiWV=^|IG7vBxip636~2k)atPmp%iK)Y{L zdq~pxE!A4dc;IMwbRZtR68$gQFZPe?;lJb2tE&R%l;=?W%1w>r*Iwd!;FCBONWOrd z@<3=faV$TnwC4|87Aq@rcAXCmHrLMfKr-=WAbH|Azve(v?U)N(TiOE2l8x{=z8jo| zPt3*cHk>uqbHB?^o~4||!ojg&t0Em!RyiFR!9e>n^eYt@clDoiO{6KB!sQA9Lx)RK`*F(plsut^Rv3fp-{R@s*^bu4EWo z)1Dp84;rsW-0}K8@BH+7iTsV+Dws$%9C;Ho_#X0i0cBnyfA^PsdUe-+ODlhe4J`&4 z8$*A<0p4TAPkkt+Pydwm!1*3D1$}6(XN71FI*~7n%94Lrk95eUTC*t-?P**|hi&c> z+WXx{z#qzMqMl3W37iujFtq2=lWZrNU$tH#9jQ;+gElXry({0H_C5^`TO7Kz!_2Yn z*rmB+x0AMu-}>zpvXjV$;;?R54S%oxAaiSdKV!pvw#?$LvD@+;*uN2295m;L3RVH$ zZ6!}&VF5ZL=Z4m@R`*CxJxlfZ@nuXeeJ!H+Pz!IuK3lf?+9Tbz(l@Ewo`=^nf4a%v zz5fN`bNg)fvj|rYlUFt))vZ5&{r^h-U;JO@fBOG2{}28z^RMeG|ABr+e!BzR>->TA zOXRoH%=34?aXow4qjdv_ecb|0RT6`V`Oxm)(A<6?-N(~#v_?%OBc6%V!UXt$0QUi=EReAIBx-$0R-i4f9SrkbQKz~~Nu}JbTdQNFBzCTWkc;Z|p_+OY)O*cvc;Kl`HwqpQPbXP{~qit_t&sG_k?7e+4$2nV5G)j71vNbP1seOhRCTF6npRI8|8mmUP zRbAR=m_QDmwj4h=;9$Ss60706_MfY-_FZn*JDt;k-dJ06XE#SOnNSj@o7YtX`=nj%uzZY-N+Ws$6^O^h&#nt2hI{NQhea7YZvvw z*~-6P-~BSaZ5n5d@%@Z1a@DyNDjON+G-Xd46sY_QWgiLz8WQZ~HLx@1#rBk|8$*NQ zTLm{{n*L7zN{wS=e{|D2Xj}7VBW2W3R{=5^^4K|WW9D`259Msiy=$niox1Xz0miSO ziMk7swG-4Mo579plLYpXzcg+wj14qUD;iL~b=ByG0eCYqBl^IVx;BL#-5sMo@xC5< z6Z3-Boy2>d`9`-~wUw9~sM_UBI_4gZ0A`v@_)vbb2Qkt3W513r&S4=$W+Df!I*e%3e2Y zhKxK?%D!poYqB>FR6om&ZLR1ChcaK>v=97v5nEyr z-?9C*%LZP)>>C^8KV|xiuD=TXd=>4w^`;ZVD@utA_ir`!l$7|bZu}Tq_oS}6RaQE9 zP=u`77#a~@K^fa9<9sM99vpK1=LJpxy%3mCj_!kQId%@UcEUlxY9PP7m#}|mz5hd; zPmjOZ!@u^)v{zU=__s;H`2#w_u1Yy;~;yOLhNB;&9}6kJ`_vt z+!&|}6%jl5LysLRURc~AJk+m*{3TKCw?xKs<-->6m2pg(vR!-j0c04ZmmJs(J_gw@ z)dVm0%K4v^g&f&cR$uMUI2=xjcLmv}@B({2jGqDaL+KgP>9h|c6Q4NQ6IJi(o4}*V z_!W5Xk%{zvx%)mla!)dcvWDM&kFn`ldQ_~6aQx*N;68aD9pqd!rD#f}^k;*wuDy@8 zPRxs3ZhXy$eWK#%aO%Y-a#Z{7?!gZ*Z^q?G?GMj(-xm@~NpHDvqu%<2HL=$40nw29aN7#gw-0>RrVB#5jiIj^o92JrgO3hrW<%S}&~_oTUDyY0 z7ed>@jcL%f-5Zh;A4yxKb4Q@-#?aE;uX<(4R|%RggyswR=J5%S_6wnXl@)>ZE!>>= z6{f5JE<<6vCWf9QUq{8lNaV1-kL-BEWAF*u8h|H=M|^jd?N0`@e#J$5pMI}RlQA$I zUil4k)^=Yq=mM36ZtyY72Zyf7HlmsN=aM?}@9;cjh^*<7llnR@ic@@zZ*oc_PCJo-4oDIa9X9 zCiwU4mQ;gp8ski4Ay72dbR*-5oSvB(h-JwRQk@%{_-r>WcRIAuq4e)>sx z*+OIx)zNtyycpZq39ecnYs%p~IL1qBR|&@CH|(!cx-U+%V=xDPkrg%PZ6ymRV;;{n z_%`kYhHdvo>$HzH-3c~~{9xMVoxm;#jPyQ}`x6b(x}D3M*dh4(A^1AHxbhIst;B>` z2=7l@J|UK#B43j9()&4EPxb1TV4R%lF|ls~Q|hlZu>jMUdnr#mZXj~K^itVl7k>*i@j zo_gjJ_`L9LE_o^_U$|lJ$*+5CX|>)NQwQN2E%zZSsV$VLw#XK2=a~tyX1?V!&R!lb zo!3A0t)(Pdw~~2nK4lz=PKv!ipI@SFFEc;Rc2Y`_g=gwJ_w6MUotX*L zdVAlyJ`1DCG2v9duKFgM`p)1d<9+XqKmQK?2nSn%t8mi8ImO_RPsXXciQNbPJ~ca9 zHwv9ZX%nPVdM_=pK1#1=9kdCW34p7ifZ!WwZyN2)Y$HBWQz1NL*<%}8^1!Wyb2|<= z&fche$r+1}v3}e}*^-Z&?*<>i%SP(1gdci%A=yXzexeY$k8*<}k?r&351dkI=o?%@ z_Rp>P2j{EKf@W#+^H;!6XCZrOeEF`m&I|WC$<@q1ZOohWWzQ+D5ES9Ak)P_Fj) zb(LjkGTc6z^UN)6On^4P8}O_Gn)K*to11R?P>-ig>ZT3w$@^XcuQWIh?F^@!-fcMU zw!v%fNaVpb;H|kaL_ZGkoFK+iVmk4@kgs2+-@E8jT<{L0x8tihQ$F>t0J}RDE$T>H zWZ%zWE<6Qn&w_7xDNfyD$|@tK*K%OD7(KW3KIR?D{cAt?2{7>LZ@o|SN34PA@LBSz zz2FToz^;w;ho1T~uS|aiT^}8a_eavUUK<;LZJ{*9d4qR#NbGPceAV1m3Bi$ieXbu;KxgZbw$I@uC9pTlh9x=OHnE@Yc z33HWh%X&BWk~Q`Hb?${*uW>!> zzJHag>;u1dufH|daQru1&D!E;2Ah2X;~HGu$o1bi`E|-25UqQ`jX~&__r@^)`R$Pj z^iqs08>Neiw7n03g`b(@a3 zd&_Ev8=vssvc@X?;X_;_9{|r1*021C-qSy=*Vb!~7yDD>L;kAXkBZa{;hMpk$xg~c z=RE6Nl^fg7n(c32#s88qk?v;R9}bwc+#|eKyS*;^;roh-pWp58q5enU=SAr7O*!<< z)xQiZ=nHh!K8G<0$S)Fl3UIG|v|E{%yfJ`h?0H>sKe~|CkhE@{2fRGKZt>RoII5gR zU~{hr8{z_~uisW*bFdF_t=2gRY3NAU@Yd=*j+l$HlA`e^U<%_i`oc` z43Fh~1RiY0Cz8RsCb3Pl#)+Je&77IV+$sJi9`A311Mikh$NV<45MA_96vYzk5`~>! z+`L;m#IGeEVb@%rjo(FYTsQ*`Woq9Nwu7z2=SaNL`NS;BiDb&|OFSalXy_2$olQG} zv{Pjm7)J$T$*ipDJ#E+YJlIbKo)yReQ^7@jSDrbX)lrn05*yWpf3|&wMwX5@G*VCf zz1w(zHbzX0kdMdqr$&!HN17IRMe~j93xg)wpy@BXZfMQub#tJ#P0(QC#%SGDT%pmk z&OrR`2bAsJsQ1vx`?x~uXPt3FnZqC3{VlzR)*WP(0ruMw=Wq&nh5aM1P5;) ze>QOu3V|m+QA9S>Hd4GxlEm&zXTf0DryQ zgV}^JX3yMR>L+}y!SYAW?6iFCHq-w|-8Xsv1M=kXGkmOqHFf5Kd)@vg`Y|TJ;H{;0 z?%UsspDh}z{&)LRsDB<$ieKmQvR>ygCfKjxPZt3fL<@o!IDJ%lRvYxz182bHNu*2M z$eh4g-CA2Uwj_KUfZ5*Vv^h+^9L`e6c$v7a^~*O6YpVF9{PCS8VzNY+Z)ya$SUav8 zm~Z*#$GIkCH;4$n$luKE;x_}Clb}`nQVj3X+T#T2CDISf`=SgJPuTD&WU0C2m7l84 z8;6$6I?{65WZFr4Kg~P&9roxCyuR3jkLqDRmRFB#0RDPBnN7Se51)0_qw;}8oqRDA zzwO7eQGzex9Z!Qhf~EIeJ_nkI)dxe%@HNSQz1#CA+GBWlbcEqi1s4h`3oqnvXn}@K zP>t;$l&5y|uG2h|S3a4EA4hVd@S`Z> zr?Hm|?zOv#vBhW9@HY>q_EM$?SAEx*cGU@v4C1?#4q z9t~dWY?8a=Gc+DLbJLo(Wx@lAFN95@s_Q%v&fY3VAD-u29jh5WA0D03K8SS$BfkSr z>_O(-0G)dr@tu1t+XMU2i2Z2KJdU`r9~Bo_IDh~1z)o`v{GpL{@oxR!Wc$QM+S<;Q zF*~bgUmLx4(N=W%e)eoIaP%Wlo9@e!Z^4T!GnZtPW;t6nfkS5ts>5dA2|A9QqnNwl z^>sO6{8csQ0zYj0bvr`XrJ#!nVu=xFY0W{WW0HKwRx!UH0yo06`)c|{8vHD;RhpOa z3)`bKJDhNXmri!5PITdxC%0_Uyx+SF;km(W+TqpTI}PKToJ)I|^Q#m~aW(B}V}G;{ zckwHm6#MpA!)vM}L$WSoe8lHyOf!vKZ(?vMkJbm!>to*rw!O=^*5a1z?o|cv(k25J z_(cV@xCLJEXZUs-yeRGVHAhbds^1P@6W+X!J`ecM&Y8#uwOKb2|J~4SMrq=ATQ)5T zI2+r5)64ih`tu#+S$uZyBhJRBxOaSie)-X!XWG3#Rk)*mz{jd&|GW!02$zIgq9^eq z2Rx7uG`58**Y=p4$Gk5bejFXQLN@PruoYpaZh=p&M5aD*rBk;L`5fLlbDz6^X%%te z6bo_9Rmf}TxYc}HbrrUnA+rBRkIL3fn&cs9R&yY`mb`5 zvVUvd@W!+r+!Q=^0gnWA_~*-25gXrlHSvv4f=_FSZ#O{V* zJ%nDNn8?VMwQcZ!#R5L$^s77$4(J>q%{^+b;H~Q+Xn7TSiysyZf3?0-YNOY_<+M*U z|KAsAr{;Us-d_-{!c(BlT*+C@z(h2sJ+H)-WiMFwnSS0kyGP8P=|_Co9%uTcV7J>U zT7Whri*KcEw_&qaeP8*6z54efo#Y&_Mqri=-l#vuj|lt`FM5r3`rH4LF|?a;)VLO! zb;1eY8e__Mc(Q{7PAB@IkGe9HAD{0q`;ofwIp3@uSQ%M!W)^sAbYS`)a^Wj{);xEb z@tF$l3SWh*`N*@v;b!*02;bm28ynf<5^`9lP#eL!Ci*N}lJt%f3Z_w z=TRKW65>$G#`qBDPAGkMo2(8e8n$ih``Lrj_n#ntmzh`&FJ%>L|deLaAU zLE{+&SBt@m0-iPI@Q(F!c$N)9&&=cNH4YjR#q}xy|Jk2g7p^bJJpruuEq0b{haTrL zkDow)u6bxgOmpALGs}*R6#Y0^u@@K4>o_} zy-wd4ul`(3S!n}IS*!FOoCtG$llqJKS$JF9f(PGExbS_p2madiwRF}@{OfCpoKUXd z`Q*p#m?V&6_e0NFksGW`qaW^GMH#_2JeUHePOijTfF~s z1NS+Fxz((17+6QMVh-?20M9wVPj(i~&yB#($W!d~7mYRnKLc<0um|t|pe*`a<@|n_ zu?_v5^3|tXY`czl`si7`r(F+lHGTaI{wlQVwBFOMg*JVybCz{>Y*j6KPyfbp&1FpL z-8Sd@dEqSVxzJ5>p?u@z$K(v13LjM8ymU>o^xeh{IgQ^B`{I(*md@?i3D0_xIZty| z8$LWwG4IKydlEf6f*oT%bbiRCbLOt~t&`d72u~G^wle28f@|BDf1C20y6yM@Hv_93 z*d(-m^%dG072ST>((O;wmnpZGMy}ypOj*rwij{LryvA-p+NyEG+_&=^R zj7u6<(}rKzHdN?+9(<1LALvgJzX-5*u+=ot7x}eL;oYzJeU_j4mw=8ZDV^-DnZyi- ze}9Sm_weo}rRmj{pVF2)mEJ8kz*r)mzoGJHGnZ{Whb@NhQNhyP5B~+q` zPI6=v9szERB3?=x`zc2cTwZr_vQsyP_`0Wv89H|6)ZEj=-A%sgwsD~ykBNdE{6hUR zZBMYL9GDi1t6cBm+i!qL;$CF8ry|KY$N}2ND48Iq z7CSg&#XMf8Ih5;qGsj}9@#a|h4NAvl4EL1qek0?HoU?vC*QoZ*W)6w9V5{-Q_r$24 z|y z(E=y@D)Y|KrW9u{>xH?^=wK#Y#O~3Mj-~m_ymK;Rl6}m4l$mM#VzkFl=W6W3U(BrO zRcEj!h25QgHuFyMvXP~u8L?*OL-~QQr^MyC#Ha^mib*z)dZ>$ibXL#t+Wk}7-8c$c zAmykX{<-vNzDc+2{eEW`?ChQhODFcek-8;sA?F-@h`psvl${TKa@NTNGcOc%$D5bm zxCi$;T)1!No#X!XkhhQp-x=KPPj289m2Dp!c-r)VKl`WlcpW1}1e}Xa6n9iZTIq0h+ z-TG2F|G;108I2DzslSd+eCL!`G9CM8>O?dD`LKm!;}ys&?=pV9&xam{9bIvu1Nib~ zGoLnbw!N{fA&tpzQ<)PucK~13DBq!rcC9CE#g{eT2~;+Pa^eRVUoTz~ z@;JVz+3_5FQA?bl@kPzS7ghH;t}m+EY1)d;_9xovrwRXk2|i}u^}$f^d)$Se_G5Xt zud5&bcNzZE?SCxz1(8JxfJewZ(=7%4TW94+rzn#hm6#k`SbxuAZ80ScJ14lanSB`f zMjo0J%hucp4xsxc=K?$FA2qLnFlv*0d_6G zuA1+&f!!{+}P)>hAxO|>8J{wVNf9p$X^ za?qSH_`rc~92We?y71re9`Ijl_P2GzA6|xSD}%Ku=BEDaYeJ4F!B1okFh$OlZ27M6 zY)S8i=Sdfy;SX=wRAX?FJqC=|i@>vlF@Vn;(HV=fi>?AD^MNOO(+xc58^7vse7@Uv z+lEO!+R)0F9%4-81GtJcy_e0HrZvpP_r#2;Z#)l~`cut$O@YV0v0)Ch&>R{b-$C6w z3=QPOheHDuPRP)}aO&5+>?F_Q%P(0hpYhvD`bN^jgV!54F@A+kBeWAR`@#MkH>&#+*>_Y zv=oMxWTTZYH*28{*dCWKpU#xO#YeDzRKq9zbQ~;7jm^csJAdKu4hQ<1qq(Nb7sQBnPw2}Ap5gdbW8)6DpTv%>{gTfc8+X{8L%G$pai8Lw&cuIW7uVuWU;pw{5I=Lg5Anxj~z<|9;=Zv+JMQSg$p{` zD5rJdh>i*~Cx%K7z>7RM&m-L-V4<^?(W#BSUvZmO8k=0OR5pFVVl%km#cLv_sv3rqRa8+m+eOQr=Q_pMc2k&7;bS=^OJ0{ z+hl8m_spg~ga6f+p7CSs@X_uwehiQS=^v^%N;}L2sL(q)o z8lB;i0{l~fSwHY#4LH!caI_hFWR=)R_~9yGvf2r8HhXx9VDI&36?F9y^2aFn#wg?u zd|8rjQNNwjws2lV%2;60Ah~!uva{KPNgurY-WbgB#(=SsOeh_HJ9SDPP+WWDAbcSt z599j^?rd{qXY0q7VSLD-EjwO}L!o2|XovV2m4%X>*`MCK&KBzQ&o^B(h}wv4={(Ef+lg2Acdk#lYzBg{d1C40~<+oCHInVMN z(RblVGcv8_OFg%OW3ojA`L2Em*XIJiRN(g#^TTTP>j{@{$5#H7%g;9hxA_Kc;Zl#E zGgk1haH+;h^R(dR@$-e|ygK)+GTJ46ZT$vA@y>E$cH}s32!>vJ#1FFg&35{g1{pu? zF`5Q`)-Z-8@G+%RA5T!$O1F>Od6u32L|6Y(;*#r|-=jWn#QgMs3ZCyDKgp7Y7O``X1 zW_S{ORD2g(4doNNhxTe7_2!M2fO#8z)EJ*<%%1ekqoNbNf8IBjKG}ON#iu)ibjO*` zb}=?yxyq+~gt}hGcluEIGPIetKP#5b`O&XX=ktv7YBSC$r5elbxhlns^J;gTPxI|m zsDFGddrAG}%a?5m{8RhGhBJ3{@$r6ruTLm#8e@Hmwv4&vv14iY1)pLL)&1y&V>;Tv ziB2cg%(1_rY|U|f@+I;8hpl{Y|3kg_{=<>n3i5hmud9FjZT!n_eOT+I;`=SwT*OCC zpqrXl8H|P2V&s4N5V{8IIur1%s0-2F5_D3@O!9%)fxmtRYfTBGk765yzJxOcPHKbX zd~p4Z+0a)L-?xHKImlMMbU2}gws}CpSv-ye9*ts6ty`;X^9O%kP*ZJXqoOHkk z1Ka5}O9|SDq7Wm)sPn~@3ZxoAPk4)K#LraDCb zv!I=N@YNxm@;L*cA^3{+L706;lM~~xW9w@fA4#Utu6<5wdo#ZM z=%2Y;(Vx`zaiV+5GKAF$TNwOM@v=k|TX+4!vq{$l4@egkf#nQ%7?`GL4PDy&ZnL>>SikqhHx zZo7BT?h4vnLAxtx_q=5XH`mbaooOlXoYaO4x836Rx-Z7oQ_|J$Ot;-m1N^HYbfNt5 zIcj%FFjnPj_aI-p@1&jJ&sk@IeOik5mf%nNNQXt(n@udfNv1D&yaBt`s{|3jNtie}p?Fd`qQ2 z2WWdLHrv%{hpuj^N*yM<$0)|QjkX_m`n5k!f6z@Tn;mRj@QUGl!}igzjXoA~UxF{m zaVKQb307I8lUzvO-zcCA@#%lo|DW{gf0L^tRQh1hgpRPU_xw}tnE7YzXu;zHUHea) zOORC`Bz7))w$thJ7AL*^F#FdUXTj4K0AKfe+r#kp+3@Q7*b^DyEO>b1SbTIC!-?YY zgXzamVH|A+1c>d66kON_VEYV+xD>CLv$KmbAq`CO&M{!P)iGyYF; zO&^XA0yyx+q0WQ>7mJTAPJi|4%4hlyYb5`f(15X90{z>w*{Aiz#~wST*d*628rzYM zUxs{6^55r7=%2p->f5&lhMf+jjU52&N(22X+noWGrRf^W0qtYqg|h>J_HFFNN~4Ut zMWZ{?$eR}E-_ReJY3$RusyvlDAQKsY^e0&>&T{%UP+kM=Xt?v-W5@2ixbE>8f%M8j z)bnR&P$laE?Te75pP{bnX&3tLxn0;6SEMjLq#4WmGTOg=0BuNz-*VO1R@AQDgwM$v zr$XrsV=k6$7!z2weoSCsWf|Y9p=10M%sh1FHqO^&PS=|C3KK^o9a$_C|2Od)#!T~5 z3;gv&VfVP6WKKSFo8~2F=$5Z#8@)Yfa4Oio4cb`Y;yCAn%)}NZpBCd^TK=`+9nwiU z!T&+P>;STi_{mggro!aGuEl)8JZfZw;B09(B9(8+g7#@7#(<>w z9o^!R=DSt$qhdaL0(}w5fmlTRqy;-@x~Jw@qjH_Eu;}d@ya2 zp6!)05Ez|q>YUJtJc+(D_7v9u@0x&*C!cC;U`_ zIi5WjoGpedQ1;87^N8W2SAg&6qtZcIk!5ur^-1JY%`xNe@1A4CUlpTPabBc@v}VB9 zkOxnWf|vDL?>)u%`So4tw*mMMYgI27I@ zaWtOk;i%RBWJgll!*1I-@5bn5{`v6~H1BVpY0pjBu_(4GbC1tOg?y0V^95$D;@Vg~ za(oKo<~=L+z@zwNef_7s>K|bI`%N2~7X!Zm`1QzM;G3Hq{`~D(1fTN9D>gJtdy286 zMa9JJcILyy>D~*HVuD^n#_qY+L<)>5qt0T0ecwh*UrRz`4~A9@ri;@+CJ14 z@GQONPWs?|_sSOCif%HYmEPaHvemW>Cs-OsZjkQ)>G18eYsw+^-xe$^>5!kEc*QHo zf{OQVY{B3d>(6xU_{3zUbjB%-ckMYo);@?jrcxc{o zfCu$(4vFICGUw8!8pdfSut-IYI>h%w^t}R`Am^3uO>C6K=Zm#`-?^>&AC5<<3gBiE)y5rV^evnuE z^jttZTnmdEpdlw|aJJ|M~$ky449eC#e{CO#7 z_EXNe{j66P>mK=Lj_%=`x?hgYm@Qn)tbbecncidHIy#K!+0L-`0BfJysQ(4(_tJUi zuc?0T9c!O2A3|oprs~FaPL0n}Ig$Few@^+#`jE=@-l=TnO;h$Z%7*rj28-(7o*QlI z=tsHUvtmXUQzm1)SMj2~{3>%RGLFi8RP~ToWiCfPvSV&}cfITii_?wo-EUZ{^gkc* zo^Q6_5BGYeBR2iGab`c>LGSrY(3DrtbG7u&v+T>mck36uo`2r!c~7tBTAn>TykBQC zya)d{g}uwqKbYI=5}{Go!Vi9#2rc*_=L%iybbWoa&oBGX_m4Jxao5`g3--Sq1fIb9 zjjUkDbD_xhj}|`s`mKG%!(%Hc*?3xpCoN*KF^$Q0Do4T9j6Xj zs`6yYuvr%({vI~=S@5clz_p!f-cB3zUIExtJ8biVQ#0Do9yI<}Jd=pRLr#Ro`0j+`P`nD&W*vXq(Z%zxO z#ziY#?=H+v)4P)whNV3Zy|iwKd;g`dEy<={_n92JDyd%P|iMcQ0 zjJnpz%)B-N?}&1bU-vIF^^AO2g$%2CO8D+D&j{BFGwU~HfafLPbD5L5WI8(29B};_ z*S`($7AfIpmdZXRXg2E6)-(&ANe!e?+E|LvBD%tHDyQ{tD zhwSqYyyqhO{5|ja6ZUzd_Z+d$Ro?SW_IVx8rhm8GVA{WiXOBNk_7K6|&^T=^Mg}%>r-RPKeN=t8Wsvb{Eg91Jg!Ek5VH4=U`l)(lE zd!q6dv8EwAdqR4;bQ5HJ*}-=7gHKS`sf)I*<G5hv@0?Z_T zm*T7TIexld$n`#c9?dLW-I<%a^;1J+<2(N@FBns4^#`y|~)$yOV81n(>^rXqBgys ze%csbDe?EYefH?pvjIpinhXpQw5t())zkNX<-#QRp~$h>?*6KJ@dWl(&B3N1ya;}1 z*|Cs(_?)a*5q>`4VP!rzqHle{Q$COW^R$*T-Wmu0SvoF@5`nlqpEZ2jqim7YJHVrJ$9IwmQ$dO&eBqQqDk%(yWoi4xWc;UPappYg*~ z?*xbc&3nN?x@2GNU(~Dp5z;0oTW$WYsiiKh*ie5XMq{ zmS0p5IAyy&*a6p%Q|UfLx<X@_-JDukFDNgj0 z!|dbYAQZvBTW>z>3q#>;2PvS-8|%$t;n{~mkM%=l#jiRQRW6auC7f;a=_zKWz73cGExW_DRF1;d$Z%;?Y_U2+~jHF7(V``!}Kg`AdtJ z=CM}0mit5OK}^Liu#e{ic3sh(&aZxxv8XQ!#2ob>9$bvoR|xL5pKoM`I-Z+r`WS9s z1P>FxtDv7@{1cdW+OKCWoJRV2OXmTH6ceYohVLo(+w4P+Nw9{!nf^!Vf04ic^jZCH zyQJU5?Ur8{w4LDk&-x#FkNzKgul^hQ?)F!1guet5!Q5brJwLth!j`n)4y_r>e}I^+ znXKQlrXrj!Mn5X#J_EiUfd^+2Gp7lBbm-$K`lzy+;IE3^Uk$$Mz50>qe$yIf58QQS z9gXMf3%dEUd{so}-k+iO@}Tv%i0S;I@Fo5hqWcxhF|#9)bEB&a?dG%_^q|DC-7+?Z#qB8ma?JA???6D$-Mh2 z_%dKfYGwb0U+j1lKaR(t|LL(y&;Ke7TzdZ3;=r(1?|R_T7s(veHYE&U^KewDu7NzB(7frw%U zPAp5YcGS`=Cw2x|LhBxXX6(_Cj{Y5=7}@TdSvxq5-|=DctIUPv&P?@FeeD0WkxS>( zmgB5HJr0eGT{?g1Y|=C>cV^!C=Viy#*LG-}vv-D$U0S+S=}O=k=XoAUY(ZPbxTV1A zjYENs=lXwb{?c|}Rz?}YN1d6alrdmoX~(#Q3ziO~F0C(O0q)_6 z=|j>g`@8KwUBVeYlE2{1vjWlF*MrW`>DNT+rhnGPpPRw+Gwc(22Dm=URck7PspBm4 zF@WoUPdR(12O`NCDXh;12DIOCp>yUc@-%`!`Ow(vCu!HM&fW{Nh##7h5^H-jK_-pN&b59|fdbFe}5`ICQ#PT{>x=Oek+ zA1i2SGK61rdD!?MX)U*aG3@Vf76foQ1H4qfN&ld5djRkp7;goxZH$fVHgRkbp|2G$ zm5jD60>6Y-nyI_(UMD#RJP#1>vk|!M-QW3yXtfd8E4EI~kYMEwU{rxkST_BY;NXc_ z_z9s?$ZlcQfT1P%Wj6EvQw9f97+2Je-M$Qr9%TWn~c;$_I^82g05;ePSk zOun>u#!%V?Jj&ru`0}mq$Fs&>_iM=iGWDMP<^7PLS z#0HFk2jH8!j`YMCnmB;i21U@MGsa17g5H7=^-1*&h`*0~#gwDE2b;S4#|N3R(&FDH zZ6#&=NOe+%Gs2d!)-9vmtvf*aV3s{E;vM`+nrO!bt}6c4@1IOrY4M`oZNG-LQ^x0dwf!jRgN?TTue)WuX37{4znipe;KzAz zttk^hccOP@6_=nlg4{s42il>OrJViVqlV)k4Zs%0?;!>}FePR)!KUW zXf<^|#hjY}w}gvn!0~1HK*k&B|BT^Ujo~2X9&mv3a;^-{abn81o_s-YM)%+5Ui&7! zHKcvW(xwjRRo_?hy>$UNO`FwLj|ZLxPc8p5=di37e}bp3A4WSKhgKWm1>%cMZoU?H z!HEUX9er&huY3efbw+YeL(A>6;T6-xAD~UrwUW;3yJ$ysX>D9{%1Nas-x>0Y=k_1w z%)B3-yAPgQaIG`*hRX+4W*|=nm_yR=3&;p$v=7|BZqtC@aL!}sviM2npyvg{*-r9V z`0@>l9_W}I7}Wkv)*Ii1-UdMzgW(B7(B*H!7v}73#BPIjz}Mtp=GwmiSNusP4o<}n zIvvTkLVuw-elfg0Zk5# zf0r`;Oxe$9%qaWF7|MqJs(3$$vfnag4~qZQrN1olzQ7o&>}%cfRQ51a=3vUaB96{5 z^vCc75VEdTcuRX~-F4+w{5k*-fz7yfft&meDKu>LQ~ zH?S_mAJf!j+x|P<1MB}~-dR{rp^P4|&a$wc$osxveTcj-1b{VVA8^Z4-|9`77S&waa+BFu|`@!dKScllY$v5)*Vf_P@ zNjo>0@+_=`? zb58+qSd2{cG`QX+Kf$X-r(3}J8H|JE(+>i(Z-MjbpM~3H@w+`(!Cz)@Uz}yX-@(0X zvQNW<*TMV0NqNHa*%w2*kTDGJkC3JScz>L$SMTCCBDphw+2TMXxfy=4t}&%cmXm+X zU|{FTbmt$7Y^b`ZxKV>k&#~sIG4;M}zNodL!KHJ6chyC^&*QJ8IR_1n3r5UZc5fL` zGVS93?%exT;2yc0xKHoLjsje!rsJ>q;mFtK3`yDiSK`=92AK3CS!v`I;tPditq)Vq zBTn+fqx{Oy@!D*f!mq3PZO&mVL*RJh-A+lX;wZ@-A#$d4bE?7a`LR{@MdeJCX0VVNZGs z`D5_H2RrhRKV<(M^0oVyW(3h!b^n)T$A&C?i1T{~x8DIg{z4spM*caDzPgR_RL)uE zQ>A}_xuHA#fc8ae*{4ss9Bkf_<*Z*}di*oA*Sr6exgSD5g7Ht9`^&gbkKgTkKf~OM z7pKSXF!zH^`dfYJ3(fri^FG48bnDZ!tCjX1N1uFVMd!@J=;Vhl%&6q7z&E~mF@Hl| z%DVPf=)*wz`xj{Mxb%Gb@N3|4*}?}p-jZ$zyk3cR&NO;HHZj`|`M;#cN18hAeNIcEkgA zzte|VACf)%5T7>hoaL4DWW_KRr96-DraP`JI3Sm>%h%zmze z_@1r=pLVi`=TLoCO#Aj;f=6v;T`a}jE9vbq9p>9Bnd16ec>6k^#9z|3_tp-r$r!r> z@@M05WEy0h@6#VIhNpa-#m6$1v2Xe&r!I@VAkCxK91Sge_U-L&z5aI2_QcyI%l2;` z?u1xFomyFP;kILQGonYASA;ejn|K~$9CRjOuQ*bHeXs&}9R#-OlYT)LuCl{ueKsH1 z8k;xuHj~%b1bHtVPd3E^fwW26DXXMt9BZ7EO<7^q6TR~O!agFcr6tJYl@lJqe4F9e zSdh+?*qo~ZmD)3=GBv*|uf{Xy{q&pX0D8+d?UMq=__Z1T3F)yT+_ezdBFr-|*4oGj zZ!Ls2OWqwx{1r2&(1zyYkzD+_H?|bAkCeR+=*Y-`oEbqq1+16l5JOzPQNQ?wU{0)y zn<8}wStrtYX*IN=hBh=)x7J_uZW34TJ?o97&8+1%Cp%eNafa>$M@C-gobVDjay#wD zF0A=DMmV3xseyN7zJ+Xv5|XeWJ8jE00{=7S$H=W$Qn-M!A!Sm@;X*EuiFacQ&= zJsF-Pzvioav?`MI)9WdGef<8pvL%I~ixbdA3UpBeU5tP(YS=rq%1LRc3Ex^-16|CA zE)G_uZ1(qWC;gNCWP#KA^EM~dtc{sx`lo070?j(xt;Cr*1n$;f6|M|}pR0h^d}1Xv zmIrd1pxH!@#c}xxXgnSoip&A*vq^_tazY{pdVsHd9bD8Jo7Nf~bOt}3AD}Jh2kW)Y zywYiA-7jR;{kq;6d=FJBeuUQkym43Af1^IF&1EA02a%VWC`)iG!iFlm)z}aIwCV;w z!13&U&`5cHZh$s4(JsXk@t2pNJjw-^OGL-@4bIW?`S3n(4%*fd^(Tzz)n@P=_sM;^&bUfpu~=wwWQo zw9VLKJ{12AK0vn@$?g}3dp6nEd8e2x(g_cn`;_>r<|=z^zj#0DNJB2wT1+ZsVFNVw z^fu&)Q^vPY%2JIwQKl%IzW$RcPz9eq>lTIuMO@ z>98G1PnEB^{4c&^(l~Jk`Fub1qgPIhV4IM>V9N<(o45Ap$KCR@CsK2ZS7xzWcM)~l zHaqb$x6Kh?6d|owcF;}h_|ksaP3x6+d!{`DE`r@b>n&b?zUbB;$;3v9p68WWINbKh zOIPHkL*LlzrMaCn#(oK0ROWr8QGM0)H{%-k!bRe4jBt|U=(lXZ8u$N)G(pB`hOUg$ zo#q;d-Og2WibETU{C%U{!YlU2cERCeq}5udba=0Slx4=s33R6$@1|3lC~XSTmf4i2 zad5J_(~Th=dtXiaMsjay->%(DHd3Uy{bLo2DQ_iqg*_ zDzp-2-7h6R7dl4KCX&-)bqUnl=6Z;!&uAmIr&Nbh(FqcSPTnXQw=Qw+1 z8y`TqO~A?H>1#&Ywu(m^e=p{SM(|Yf!pcmWPyRTiV;{X*Do@ zk})g??&5n&vz>8Nnr)2X_eoO@?7P0f56m~(zMgN;%pULCJo1TVipi()A6H&r<9*)_ zpD=mpZ}~sT`zYU^q%Wf=zkIl_4Cqqu*al61i8R7@ul#*3&FY)z@r!)l3g3H?egVsg zTb6~{e&P&W;nG7f-&c^fh^u%Z`u|bE+v1Sbo0PXkdFk60=7KHE1*Q!8s5tB+N zvD&Y6nKs>(r28e$M&4qMM4qgh4_suIwtUjAB@QB;SC)JOJ>6IO+gE3I)7W)JU;L!*>4$Lg z1owI;_tM6aQvv7W(RWDO4=tH7f7pW`M#I$ejZmXxhRok z`~|=84$+g?Ysouw8Oxgei?Yv9uMB%rd=Mq*Xf=<3*KwF z|5xD6S)ZhPZ+L&zP4ln7yOgy53cTl#?!DmsS-xKa?+bQ~A=n4JfBA)O9Pa_|1J-}& zl?eVr2QKv=N^EhG0bs7P@Wkh{7>C9UPVzf@+?XI|Zb43aZ1)@5-@Ac0yIe=IcJU0~ z6I;-;{dt*h8oy1PRxj_skD0tLDDSr;$RqM0Wt^YL^-aDN_m!79rjhl8DPG=jHt!?K`zZeO zTo3c@-oEkp$C zeU@(%`^r0xybn6b%e=hnY~DMS_d)D6S-TN+8e zLEb9zUD;RO3FKYCdbO8#hRr)pc^6>sC+~9drS+BfX7ZLe$wn{lVw?9Gc`sAm*~DxjZwYx%_mww7-dRrafS31ao41oZiCK~4ceu_Z z@0)$)ol4&Ooa7!a?_rzwtn%JR>_D#5$a}c2ytkA0UME@On#>Cz1D; zedV1&-n*UTcfGs=Ee#%3-n%2ognooK1{xU@ck0nkCGR?=$Myx+(g6M2P-dfa}9atlDECDycOg{Z#ro6);fnd zCzpA_QC@VX?~?aZgbr96YN7jn%dPd(p_Oc4T44up-*qvT}CYtMY%$`5~Kom#S*{`~UV9jyKN z*H^Tz(!`jC!o&n+4xLM%(JSBZbj7(9-QV=C1bCK92XxctSJ{4g->jV{6wg4mL0@Iv zrl)MtMBlTc*52>`ru7Duk-ZfBqHKq@1RU*A&ow^Sfi>Q~0lT-t=mo@SH##`|e$eeV z`!IM1KKb+mudV;nzIiYxroCR9ymxAkw}-}Wf38LcYsBuj4PB$)OqOC(3yy0(U?AR`f*HiE1loH|q>Xb&f(4bXq{2+nk%UhSc><{z2X| z_KVya`h%WVTSFhUZjcHdG&xsI&Y0jV0X{R?Z?&X|tIAbBWv49;J9~@qu`Ndbq&?@d z&~F5511rukpN77ex@_99<9y3z%{st+>X68K#QZf1gW|69|fmRR=UT?r60Ig_KTn zat;?29c^XCPPIcwf<{8CwswjGH3t$d654XmDHiMta#J$3MG8|=J3|CT6zw2%I&JNg zbIA>Y7Hp@JD4O^CTYK-Eofy=1-ueIee8N6^@3q(Exv%GW)>_n)<{jmaun#zUz!mK^ zv}lcpk8@VY2yhWS{y`u3J(O>Ac&)R;$xs@?1 z#ys7LF>C({(YpK2j>Xyg@=os;i#rI8%AK(%s0Vnii7@skW3Ob4n#cBe&e-)l>WMKG zj6_GFYZ9!NOdx+>DzYAR`+p<-_tL1VlR^$`-1UlOo^!yTLsqzRPmSB9nM7bjV@AGS z+PfY)(SV%8wv~;#ANps1LAIUE-jT#Ml`WRSzD;4zCARqDZK5G;EcIhf75KrfY9{X} z)j(W|^^#$9;T&X9A?qc8_0Gz2du{F(zjdt{Q?oe>?0-lr*LP_g8rPg*#KMrXS}R)x zU5YQZ4Ygid#JD#&W8Z?D8@_nk=W1EA7ehv-u_N_uZAd;q_RC>hclPqVUAOWa-Fd&t z7Etdk`1EXC*k!~=g=2vcuowX>wC7I`=a_46E5SwYQ)$*-0-MkCt@tC&bM>>H?^wqW zUlz9Yww@=*PpAsvC%pcmXQV6i-N)!xf*8Brs~;^q+vtqBl|F8#t{3TBJ7a#9@xJbi zxz!o7)+uVtteJwhECCzcpIJYsd!J1e}{Ot zo;(7bUsIrSyDa8tTa?ROyG#E3zwdd^;Ro9nth)8jdmgstJgJ%BV3E~S%otkIzIY3E z<2>xajrjQj&`TxqlsJajvre{w-QSsAqN|?TtQ|ejcn>g1M165|fA=rpNn^`b#+v44 z51ounL@tD{b1d|pV*HY4rIwxhC77M1|C*nbBOgqhmVRKXkT;)!qx)QbCBd`z9-CEg z?Y$3kkIy^_PKv;Hgu1j|FbY20`xg2j89fdBxX&tM=f$JcD>@dP7E`BWk$0>bM=Gki zpiBOgcVCP=6?{s8&wj>d=z0usSKb%%ypXH*ywu!7&vdW3gc&#Z`+q)elqT@G-eIG4&PGK+kWCFlG*&eBw#)I&zy(QpFTuyM*keJ_m>z~ zBK!a1UU}NnleT{99U@7pRB)huvkS zokko@xJ&7Gz6(2>wRqEwL`WuIe|Dl4<HZ`#s4%x$ZZwxYyK6O8d&&}hHin+>Ix35ueE&hHz9xfx3Sa;U3Xl$D(XM&%n4rcm2&cKlBG7S z%kGN)!Dy6AX;U0gR3=>a1r(e`DATH+s*(ui#fG9|v}X3;zi4Pff54uF^BDrsw!BtolRw>{W$)k_|f{-2Dhw^V~Uy z^1t;QJ@z%OG5JYvvd=R;qvtbYO_RCKpdYV#`cYIqtppg5KW4+R78(5Im6>ig0Z8&rH+5`d|ymC^xiPxfWCH%-b&eLsT`b^7Qn~I$0TEwjCIGSYawGa zc!*u4eH^+gE`j!up;JTq*H^9ZZ_xf#*hy!QWz0ht?@D1a)Y9%I_2mzokx1^`v-D-X z`hvbqpwpyh{phL<{p5g`wx-h$$DQh9|DUb$H;lBDTE(OxqgW~780e{66m=9;@sW-Fp#~Zc8i>L3u!k^ zS?w$D=A^tnl~^$JTnIfELC>mR`P3>Ydh$)0tNZ-}$nY~N5AnOPRX_6ebzuLH{n*NO z+w3>Kg!+A}=|?bpCQbXkpGTA%xX0p|{F5=@Nc%gjQ@(g1`E)-8F9~4sIj$D~=f`*- zR$TekPsg8NoQLS2>Jy%_1aHRj2JN1tef^fdV$PN5gD%d5VEj*TuE+9t7$d5I5{EQBzU4n&!oUz0lMADa4QfGW8eE}!;h~6 zI&M02g?P>8$-mCe{APo}-siXIH+8CS3%&g41 z?7n1R(XQW=_w|8!{UImNNnU@nY|sS$J=yEB5rDVx6G~qC@n0JIMZQaNp5?35z9tFI z>X|9~WGeg#J$;(~FJZl$e6Gl|66U9SV%%H!BQ5Tc&+r|x5?PzTCg)kVg)J6?M{WJ& z_;;vJFjxo-tZ&4Q>US1nP4@JhF2on8_6ljs`;GUv%DZb1UR1uVBR`ry2*1e2di)l4 zJvI!z@X~sf{`BxTwrII*l9f5e=J};$B>1~RSJ7}D``$sr%3phivdt=cCwp;%nBA58n7|G43yT|AFd*18bcb!ce3kUip_>(~A_ z{*3nT?AQKdPW!*5{Y@I{rYp=oglltg(ey-U;xqePy0Gcf#g8}sAfDOG9+ZhYEbRYp95en4 z_@$2dHnzwi)^Lok4+RgmvcKInbj8-Z;9>bTvXCF->#RA5{CL62B1iuC%27K1mvL<) zj>I845xhDI{+SN{Y-P@qnSeCiYZQLIJsXzWMmhl@L1 zz4TQs+2q(yVQ9=Mzry%*dZ_zvkVAdsi?`f;nQ}MvE9b4>>}^ZTCjlKu?-V-wdKR#+ zr;!6=fU9GdB_6@X!VXf~ll#@_?Y~z(JZ$ze%jCD7KmTn&i1>4qY_Gb06mZ z(;45CY$$BqUSCxjUriLgD8>(E<`1+L!4FmB@o#aKm5D{>e?C|uKYNnCX`UOVtn5tI zVn3>9vcDC_Dx#c?qs+Rw>#=Wtd=7bS)#gV6IS@P-X| zW!Yw+wiWVy|<W|%;o)P(%9CEb{+paTjxusgc$z;&-lIm zRrzjxpPyFpocIiwiU$4U7zM5b-|`uP8$WqN!inr9gAej~3c~jOIxcM`@WJ5gZ%T;1 z;77$jzth{d{{GhteY)TKpf5jkR%o%$5Pm_~1d=J<`j(!fJ}>>>@UedO4DvXIyfpfO zcmjS)6H^nd7}%bk3Z7D|@9~@XOP}XvjgP-~jZYT-oPEfv%@^v7*XhT$A+wi*>w`O| z5@%(Pdt`PF{+tf#&MACxeUFtre+l*iI!JPLH*#$4QqC)8A6FAEGxsLGX0A5NB#LZ{2*HIVP9xN8}}8*%i-VTMk~H}obA^=&V1oH;A?DIXs3|2lP(^?dj#6) zfBy7R_qmDPWzL`O4=-%MHP+ZGjSW=372QTWR{G$~7c+BU@$O~V^RioKdid8%@AsH^ za)zIfA)Wi_a}fSnX89VYTFpm^>vTrZvGt67)Z*X<1jr=6p)H!l-_6D7~lE#+Meu~-f?F{U%R`DuhkgoRgcUzvl z22JzyIn22$z#V(L6AR!hGnoA0~b+$l6kWDPxVCkUa{CE(2&6odE>J6 z0@Baaqd1fus}45)d_3@@9+lTKy-)J~I%J@pd-Z{E&RqP66${48wD-uSiSbX9Q=sRP zTmAhGP1uLXU7k}ndPd{fna zXzcIe4-mdpUi;#*R`AE~FLzD+_mtZLFXGc$TTfpV`$<4Es$V{gKCpvsYx=?MT>AHh zt0k}hqBkBQ|MEuYp{asHV@z;M|J_6KI2>ORipj*LOBU;`bD6?1;! zyea#J`p!f~JI|~M@fX;mlgSvl|L47?wX6GD0%uYq&3pDWnb`XccDP-S^NnQOGV(YS zN7Q;D@s0dpg6}&$bw`(5!y8^W^wqV3zwj&`CZ68E20(&UVJxPMtmA$$yD8yBa)&mK4Wx?zwwP4|wvU@69vcgm}(_cQ4d9 z+Zks&c8_d7$riM`)!W-oQ`HyURLv_gLfkyUfzrgm8 z>dfhEr%t`=PowpWUFT$OWbB*qS-N8n-cvPYBV*S*(;Y|f!74NMdd6PQ*f%ov2z!~i zV|Txapf9}NXzVKujrJY;O2!^!?91q52A>+QaH{c!8fSQP1vyf)lf-Fso{#p=Yx}i?GfjYIvT-#)`=8W^-a}FOwN2RclwASi|acUQNZtADMiZM|BpOn9-=lG+f zk8GV`%MkPhaSo#|jua-YiSLx(lDd|J*xOj&@w<@q?Agw5J?~M@jh+u>Z-4VV$CPK& zGoI&|@^3r8RsQ$xbISk0{LV7v-*A4b{x?0(+ui4s@9;b)SDyN_O#La(^Vi+yl>ZIC zB|Ejx-d=p@cUgIykzD)8U0pL84)VJ)w4C$*>^+Jli}TP6x_=rPHv4Eg-)e58dUUqA zVvh1@_lMOyU?sWHM?XLdvK?gKBtJ`k`{~yf;Qw{Ux8GmC-eArH%h)>s_Fk_YN{kh{ z4vhGRW5%YpE;9a>D%Lkug8MDdV4~PpqBfhACqhoEV#~5MlK0}H%CUC)o5K&L*sDVO zH56qN&n+%1Ne8~RtJ0a5RWL8}GuM@UQ^2^(DaTx}u>cyBo|?yA9rLJT8*{~Z&DMkS zc>e-=Ui@HkXn@a~4`36C?vRaMo5c9Y$~k+7INpDvXZ_5hHAhemOOSe|F%Jt+zvf}e zuPjAIrdiXk`H}cSxzJaCt!JI!Ci~=9!h`((r>-%v!9&!^{Z8wrm*bzT-SxbCzdC52 z|HHit*XWG-s;)(pRr!k5KKbiI5$&mu{ViP~*--%; z{NS-j&%w9mbjg6PME<}c58jtzTZX~A_Vzysyp8`Z04{-x@Kr@U*s|2eANZPvPO1W5 z(9Mzh<|6IM(p1I#We)R=LhPpk+RLZCB7UE%orSa`A7LqVy7VR58vWJ2wwY+I`wQYv z#lIff^+$d;%Rjn?I1cgTzw5=r{9V82oxy`_QugQ&uYAnq753)ngAeS|GXeG<_7CkG zXY9`me|X^~*_e#_N;D2*Q^P0hNzovC`N@EtyCV8NUotmZR#Jq|)5u-u3SRHlGr>@N zQRVQ(QusphTX5I73{Apk`9q;md>k5s83%O#arSacB4ek5=fX`F#8cE4;d})7fr>e= zp1FU6@e$#3@bZTXuf_pjGLG1WksrXs&2L=efk&?KhYjzwFNf2%3zN;#S?n3&S6|Rs z#p(;Nn1;QnJ#waVPG2kjv*pMT?MFWbxUGb~L%xgRmM^Cv!8rdGxFs0Bd{72%=#wJk zfnt~1)8ksfkgN2}KyZsOAJVsin_w1#ujR+=g&VL*(1!GtnSY?4ls7JVQ=VN}FRZ3_ zDch6J79qp1yPFpa|HfsiO+mPe=c^0{;l|KrwbN4MYS}Bkux@34Fl%Uf;C} zF2F+LCg!*2Kb*OU_+_&*-uLb2?-}n7<1fnOx5~E}rLB#DKxg5_=oI7wG2{8{#Uvln zk;+Y_%tMJc>U@RqLi4iehOHIVafhTM@*mu6y6fllhf$dwa zaCFUn=8cjOE{)EBJ~fvf7(Tu3>!`bN2W zvj5W1Sd=p#HzQlvQ)9f&N#6`F+j7Ec+$%cfJL!o9z(CjeTn+xMtBl|1=td`&SWheu zSpAH9GbSgNn3DfvF#B+LbT{hTGV(F%oOfmDKXcwy8+5F5$j3mRJ(lmJ&WKw9{kB8* z?a+NrmUXS{kIm5hS;nmxxcog|1a47aUWx9nWNeF&v+9ffo=5j@ME9rA{gn%=x~kCq zFQEIkq5GF`-o;ePs(dlJpBP!F61dl*`KdYL+#@S9938mf44>?oT(h~Dty zl#u@z-Zks~o^_%@wWt0>{Y#a9vlidV(Y#AsAGv*2lTCB>?+E;3L0{;5!#~PRP4wj- z+87%@?t^9={#lCu!0Hoe8h9D@J36NxnQa2L^(eG#>?Oj z@mx!kvBM{Aw5c;MwCBoFXkkBg#uCo2O;Q*8>NF(a36kaE1)U-F(5@YfU)LwO!VBc! zTxVj-=ex9@10NE5ko+$a{pV2kV0g{L177=e9A~S0^<5fRwt%PU(C`fUFf$bH9t+){ zfG;AeIUgQ+!WJ5KBl`nsA7t^t1j^m?ZuD5qJqxDDPwLfM3oZ{I`#x*L7WkUKu=;}L zFMNr;FKc{5R;}i2_^XEGHAt_%iY;-~gI9K~f!2raFEsl^xxY`-?~gyYpi6$wf8*Pp zcS{ZLeH$A4osWH=eX*u{1MIuazUMjzp8l51lQN8ufnbKsZW?X*Z!Xmo?G7dR~h`fzFWV{9?Ka%R# znSJw-KW&R*O~?7}W_`yuo8ZYLYZg>q_69QV==GlRY0BJ1y>~%BlAGs&=S(cZmVqC3 zFZsC7vN~@@_hw@^tU%^fQ|I#P?R#ffU6ZTnL$)uwp_;i>KJ+JFXFL5d=LwLPu+r+f zjy=*2k0V|q-qC((k}W6EgL8}V!N*3%NAX;CrtHlzkFr*MNVusCx~-;u$@3w+Z$mbp zfWEYs_}3?p(*|xdzFycMhfhG4nxn`bRUblpD<4vd72U4Bu>HifyZ)8Azsh;*&^OOR zAB989x|cxn6CMk9_gI5F>lpilnEji1(d=JPCWH*gXMf!y_-xR-Gmed~ogsJ36OjC46}b8q)7^`i*R9@C~MnW%BV{ABkkwhMP0A`}uzK zDj!8Lbt*r(16UVRr+z=I-_)txEI)Hmc8AlvZJ4ex_Q)2@ST6V58BOLgd36*!YV(%$UwHs^-fzfV9z(-~Ji zy0;3PX@9}!YU}{Z&Y961Y8qvU10J41xlQ;$E77SH_*(6`R954clvk_1T%g^o!hYs^`AyXa*@RxWxO8pud7Fb-gjP?auM*Y?eR0d0I&%R2S@EzcWRbpa_^Pbo(1i+B5P-`@2G5~ z`fB#wVf^jPxv#eZhdZ!Krm;@s;n|;MpR$~W6|*nsR$S%;zVCN>Rvaz$4eu-_&*NeA z^0?;;QrnU|I*HSV#xTH zN}i_<<8LazJpQoN-ZjptqxTtSh3nbF&Kcy%PRTr9yg z1*|&t4EcQWb)HSdKEXEaoJ?*YGVjJE=f&rf6LS(fc0RUTCore%;rYm-`C(+f`8Ka% zei%8-JVgEh=`qO;%}LrgYkcNq*3R}=PP~J@YG2W|G4KUA)OyQx?pmV&unpwcdrWA4 z`~bd9a!GF^AI`t?Qs-H1Qi7>}{1!A**` zn}JiBaRib5t+c%r`H*CsX1_J?wT5qEvb9Ir{^Cir-7Nbpkrz)gx4DLUgG-O?-8n16 zUVrUnxEs z){CVlSbL%gD}F1!-!p+=eE9Nk*VN?}`{oBap9U7H4}Y?;TXm*@xd)Ht3a$FXtZ7p| z^Bq?AoR!0#S%MF%j&G{SIUk9yr;1$j7S_8}#RMN~PbIRXG8k^E#ZO#-E#|YxT_Sf) zYcqZHBMB@%B^cBK<2!5_#r$}85Sb+3qG)|Hx+V>O`jBC=AyX?H{;dP{$g!4nl%2_5 zrvARn-SZsl68=U1`@i~UP>>$&KW zYk}|Z*b9n4CZux|5r*GDC=wpiee3SkBaXp7_KgpGP z)>xZzO4D| z^Mi-D|Dt^64vbrhv9olrSgS{hj@GTMsx_gE#Q!r`{C!3xFrhg|0czdQ@^tvPpiO zC}&5OBRkVm!7(<(r5CWjEPDtj*HL{BfPc|N>s09{_EU#mHr^C`CTi8KA4%-GK0I2v zgp4bzvzmCzXvOUdMr)sAp5=5tr7>ccs4mT$Qs8_hdDiCsYT&Oqw|Vys-qr33^A6u> zcO`V1hECVq==et@YYt=^S<_72`Lvgd-=GCwT(j`8V2JTE2|oq&!J=Qv)2rHS=TVy-eGJ*;8DB#S!cK*=9Y#^LjoRTHxcRlxKDS#-3m{U&%8s= zfqN;}_xNU+{oN6(dbrs;eh*`zo;B9#De*#l(9dvR1|1o>oA%0GpOL%CjnDu&!O1OL z$p!Wmh(~;lcMoAr$NAQt0`^gvOMQjVmh_{svn%0~VoUyg{Jh9O`aci)X@!2;sHY7Z zr=5D+k&zugV*L^_@*e6vfvqYaKH%-(X#JGA;YdJe6g z;yG=vapmi+dX9W;bIUt&@kTvIz9!t~j$E9k=g8Mz^SoT`I`Z{1dL9jT|J*I_)H6lT z>F3Yf=T1GJ)N^Ev;=%O4SH51U=g8MVTnj`;j(i=>eHL&_%z=)WTS>O~xw39^1p_0b&kX3*4RhH{f-^hSx0M)hwNR=r7D#;^W_S z`0A&29>D9|%chbq;ISL5M}OqmPfYW(eD<|+=dj-S>j`WT?|K92EzOAo=oS9fRE96d zKc#iGfySQ!pcUR;qpDa77 zvRwKk&^ebFfMRO}TovC>5}(yvu7X&K|45{yg8oVlXnw6TrLoEETmXDtDg2b0i|GAk z*22hkiezt~G*!(FCWy7~d#X@+f80j&NnEUSf{pRWJPS#2t555<98Fk0`%s1#vPa z2)%uB>nWmdHoRsUoXF=81s~Y@-F7^Hc)|i~lTm7yoE~r{-|M0I@FsFyzEkPw2yx-x zN|r$Lk*=QIs$&|tAFT7cR{1%0efC=OEb3FN-O1%J^{UPvsZPe7ELQvW`dPvKnd_}b zw+_f3J~O|$VS@N$STFp0&|y72gLdRFw|Vhmd=|*EcHpQzK*T%pU&tOz&qUTqPSWT5 z1|cJ9Hy^tLex40%*X9DRC^0(4dZjax=m+&v^V=h`KPfLAnjf@2ku#Lsch+cjAir`i zN6udi&U}Lo*OpmlILL0czR!D{oRTc-{*~0Px^#x1e6D$qTk#(nr}oO>0CT`cn$ty&A%lJG(T4CMe%8O zyzaBXqtNxNTgn@Ut&5$#f;MZ2$KbcEx%;^l>l?Dr!OVTzIX7(#-w$T2HO%Ggvubs3 z#q$_rO>SO84d=GiFveQOsPz$7F+QDFM$D$6#+SG1pU%^njY^;8h*Syum(b34WIUT5WVve<$^~V#BoE0pHvv8L6`$1`)5;dF?rlKkue4$ws{w zf6HGlU%SqPFg^|ZJ2t=C<ryEHJ< z*;s}8=3@Hb*y77{KZbk^uD_=Kx%`=W9Js~lk7(JoT~d{HuH3Ad8T%zw87|rIzI;;K zzq|vU9mv0Y`T%jfy1xF^p4Tn*AyO{Sq(s~qs z1$A$u?k(&WV%ixxiS^A^(_Eex7EFqdTT*^-^-cR+F2J9oSZOQy5XwtP4yRspp86=eL+$TC zUN5En0&I~Y+ApJhTb9{*SFXJCK67o5`deK)+Ae!AtQc^p@ep;?vSuLnxw`c)gV#CM zAfvzaOzkR`)Q+As`5V|=%A4_pyd>Kt%2?X5yXvjb;Y$8a1cHY{?>@ZhdVItCfLk8tf&Lua+UJ)B8W+%icPyXf zcOm_^bN;0>?KKW#8OtHd+S6h5sGU2mwGYx|ZPY9O|4p>Jjdt7d8LRy{wDo;rqnc~j zzU1u2TH4(t*)!#G<4<_vJN@|geDDo#i3Yy_4Z3p>H-7&`zW37OJ6i?Z7v=MYyr|2fVSz&ChjmCv%{U!IXFU;O3}L8K57^BalsL@z2|z6Q)0X z*E6NjfvwP@+b8Y&s5P$MekoU`O|+^0;fGPa9J0Z&f9-V$y)w?zKjlj*E-rYTcaDB4 zN3snXQp~!4fA1lOr~iJ4@;%Gf!Wx4Z^M`U*yum!FZHqCKdAq* zfjfYK#_^l!@5j5~?T(`z+V6noe>T8)$kTbBd{Qi|m9ex}l0Q&G>mMmj@Kj|Hx&G#Q=d?NnoXMZvKelJON*y#LhW5z<3|Ve)r}t ziN=b8_8!hLXi;l&Bx~oeW?eR^WRB#EY&XrLPrS?gkNPE7G(Q$icHH8uzX9g9ytCJD z7ZJPMf?lhP1+@QlgLGdK`&9B&^2u9P{pc$*?K=9v2pG)m2ZNUwqnDpvGWg8w*BeHU zmNJ$+#& z3E^pqr;oqt*S{V36}<2lyrt^}?^m$V^OZBb*tbLUqCRRaLsBfW za_3UkR}!aSjLN5y95VI>a&!s(Qy!IU4)KJY%i^wi92mwSPyZ!Hk2rKBS)hMjc-!l1 zGWqh#50p%mzuML1vRCSjd=GS91?)#vS5Dby`R^w_%3h#W9HDWE`YasS{R=cMx|V)3 z*3@LX-@;WA`|nN4#(>vG;3fSLX!gZVgEN~q1BN&CE~MOE;HOx-bk%LZPW!_NuBu1% zCXgXU&I2>q8?r+*zsgxSdhbEg->lA8>F*fUc=kB`mA+C=R9m0^W;NbIe^qB1x!EH5 z39Q@cS1WDGR#uzGu^WofZ=yHFwdG&1>B`Y3=uSOfOdgv3e$lQa{Pxn9n-j5dT3?yB z!Gojs<0oT(xpt270@zEq$;FY@A}A&_a^aS}i62Slv6m*W(t54O8Jm0~b&Or{t$NF9 zkY8AF=hQ8X7k#4mdmb_4C3#kS1bQeT*$#X~2WjNA$!nvm?5K9?&|FmW@yltqgLajt zwam&rJeR+=K-S^W?=D{zwz3<ccJ*RbX7aBKZ%U*L^ip8 z7p*7Nw=K-$jqT&Ky$^fp4QTJ>g-`8ePlQfl_r$()JNIMf45B|ej}x02J0#b^k1ell zKWJ{_2ykN0cLR;%2Exxpw!FTsAC9!9=)2&_i=UVJ$%AHN=d#Bs@D~mwgCqkaC$wiq zA^VqPLj#je`kv+?M`p-a}=c9eZK;RMkqG%24Db{S(s&H+cS4A!$& z^2ogOCV3Y0j6-oQZ~t?RyzR^X?j9Yor(C^p2fn!ka1jm-uhU=AO^axRek6d6XkL8Y zhbOSH)CX)L+qUc1zMX&7uYKxP+pM)PYq;|h_8RVh=1HuNtz~^|1@pLR=%#wsaMvM^ zYFQs!!CENuj5W}83oFeU?f~m!buM>pOW=$jnZo-c^{nA`zwx6_z2As_0<4df@A@9# z%=(Q!Yq*2t3e~ZOTQ;kFbuN4^l3x|rh(=2J7QJQs&#ccs9JI)51~%fyZQw_`(=97` zuN?HW;E0^b;MA2V=m6G>-mULwuaI@2)y{7{pX)wnoo5BVUEB-i%N>{x?60)fk3DSG z^JU;~_6-8|!>vQa9ENvx;J24f2>jupW3>)GY8`x3dhih$03Q(>A8YCzd}!`h>A^>; z7xo!^q~Is;(ff^fr%LOULsp+P=~d^z!!!7zg#*F2Hss6TfqjXCp$s0Pg4+Ois5~1v z_F=dPx-bV9S!p8OTTA{q>0q5*D!RKFe$Ij)wl`a^9VD;o_(<#i z>(PNzCq8m?>ck(tHFe@K{?c!0|ADd4D0`DNYzy*7`F+7)=VtVqx9)TORzHz-?EQIq zt?D{NU3yl?m1jrwteW?F7VOvG*s%Iv%Z{|;S+-x%{*7_MKkxn!3FN8dn*Yl1+H~N7 zUF3$b<&AyDs;;)IvFA%^_(!^hwdD=c|E(HGZ#aj$$ynb-zXm^o4 ze@p0N(Hho8{=*|j@95b1)}q^f^VZZeoo_`3IL9~2Ilj{tAJ{N`abQEy8jGCH;LBcE zsXimm>jEbJ@bESGx9YOqmtU3mG4r6bKi-)R^qB|Awv)X)l=#G8{7(LIY==9n?%G`I z%&G!wb{=CH65?zv`~iPO&gBvx`O^58gXB_e)s_6G7W@tM&}qH(jkR^YU_%x8lJ)q^ z$YC+(xMGu;c%*FgGvr9wy3p5Hkwr{2WbNr>Z@ii%SHu@k_xJHRq<(CCUq`l4$FIa6 z*aWiw^gK!*tH4Q1DQh;!E1p5W_hFY6LF37($mH9>D>h5)Qh3k05Z|M{221{k-@Zw# zXDT?K44sr>cSv6{_QdVsZq;2&J)zO$*;7y3ZLE>C0*9+Zfrj=#&f#{(*FH3~>P0ID znvxxAVVC$DGwtLwUidNA|4^^$noeF}D{W0DFB?Ce8OwIyv79(W=WXHcS>&K?W^8GG zoB7He;qFFYBN#o-^W-gzWtP?bEA|^VwivdO;vh}glmQ-5C7TtaFZMFxVCS+L*;((T|4G+nAnSA9>hxa2rk5&hjm8b8{~gt zCU7-2jMk_P!S=1)<@*0VA0iikoPYH}ayKzk@g!sv_DsGt?M%^d?EDb+UKAS?cvj@$ z`&U`oPBI?NOXU~Vcw`T%Pp6B6@y_C`KD3%%0k1aDmv7UjN1(ec!1zgW>Hmr6z_8}R#pfN?c^Do99 zPCwi_TpGC?+;`%)Bp!8UE`1+dd@Qx()YO5$Irh3IBliN~?w-0V zlOr}4eSNO}3iHG9Z6mmztDowl`kDuQsILbY(^c@&5b9OjFAsR0 z3gjJL{ci0e!w1EVuJ#RIRVTg}0KSr)|3Z6`o60RIM~8PJmy*CR1q`LHzYBdQ?&aB6 z$vuZ3TD}h6N})|(e&@*?VyYhzAN_HW02Xi4wyp`T$-shLzcu$-cNc8@J-@xSV4#e$ zIqZ*5T*T;$sC~Ze4q}?`L<4)!mDM-$Kcr|&^Ka!cq$g@GR$s#fL$exO9+sTXmOP-J;KIYZc7Bj# zV;_2_++fi=ZK-bcN%JhXzU1w|`j4D|>cIbT!H%-(Pl~edgKrM~lKmgHaZcWY@dL|N z&_D0|Z(P6i@Xa41W@lXxuT|a$aG#4UuJu}?b*+&qBOX4g{Ccyt;BI)L9Uc9)^cC<> zZpbv?l!eW}9Lm6TDKe~F`>$E#_M(H|J%#)QH=D5=-Y0*t6O8;dJ_D<Fu_SlX;(rv#3cw=i``^3VcF8ljzGY|a*-;X-Iq-pxwJ=cyp%leSFd-fD9 zAl_DOVvvVZ;IE*bdco=75sI-AlRWKHtj+8(L@r`e74?>#B?p`FPfO&)jjnd)x&LbV zXEjD2VBGf^yYsMoXW^CM?*AU{)MxpdjL#1|Rbr3!w~fkzzHaG<=>;LD?kx7#QT)W$ zxZSBgjSXXHf%PQNR>?v54cMJN7`vRD;B;3za|89S_ZjO+^z21vJ&A!GV|3y5E%4hXk7z;$$0{i>)HYslD805!siCuXCNrJIOEeUVh6!V-aOi zyo)lPX^g8Cn`|HBh>**pbwkUm@7miQ6<_Cc-oQGoHei^POuCIfcqdj}zL$7wQ`sxv z?iQ;%dIVWUKX3gpaKli1I>YT; ztB+|;!TU1C8)dwjJBkNRpc6G`tOs{oh-^7gIi|AAfkDad_`~ zmMmlMwbo##-Hn}wz3>z~_XKo&99nupekNe77@qc-&>nTcqwo(rC0%HI1He}OT);UC z$Kes--P?)(^dgq<2iM$vGT~3Wv#y|ID%l}c&iQ$Ko zZ?pdwG$KB&qTlZCx#qX#WLb@W$M2Z`6(~*O%k60xUWT0XK*~mfVG33DO?V=-iU3B!< zHq4J$H(d}fW4%D!f!!Fc;P$lDVdq^p==nzWCIEisdC*?_uuRW4u&*)C!@~JZHqLAH zd|kNY1^f9GIGBj)bmG}_wt;vud#*(%-X20>Nzx(%hlBXX}kU}={d9$;7a}E zCy@(7J$LK5gV!p4Kg&2G_E=6^uUu$y7rp{KrMnW2ef9Cr*!ESGC)Y^!RiF4^z&G9x ztfKfVf}7AE6P^ZtwIYPu@e0NG-`#Mj+`^E=$2|Ruga}fNI<)W35 zpD}yJ2|tO8!rlJ@9C^ORT5RXH73w*1@y9&31h3V$Y#y%XmxQ~Y;rV^Q>A$IOlX$o5 zJhNtKi~}pd!=7(g_WEA-wS4dV%zg{9`xC@Ong_GTGyaR?_%Gx)6l`QCXXCrb!FO>m zl+$oO&O0Rttu;T~gm_K{h10-xeHfPpZpJ)b;26osOWzN12nj89| zYaen%dev?_(&hC9d!Ly(2Xz)BLq{S@nak|1MYd`kvh3-6WMc}Nm)#{>R&}06S9|Ml z`8DE<HHPydO4}^Us!__IxIHl<S&1B-LtG!bGQ9{H z*U5SU<_vAfR^^F#>1`VHhTShad##a$GqI(yZ{g3wt;m~gT$$4zUVe7@s&?$mHY>ZK z5ZrCUMr9tjGZHS=JW%J0P8z7c-nQ6B#mLpEYaRRa71bS= zM}6^@-&^sM=!jz0B^lrKBHPAJp=ad_YzD?!uM}PL{y0zN0CApq#Ch&o{KAI2*%w;8 zq`&AI)~kcdi1pwx?V-=Q_@-)n=egvp0>hUNF8<=N;|1)?#o3@QlFNEe^_Z@^hGsXs zz&Xx`@~oy-cYJ*Hj8Wvdgw$ zFNBS~zHmk(4$XV{H~sL%2Q0zZjyc_hEo^q zr;JRnbJuLXuC*JG1^oaD4SBJWKU*l+I-@0hU<9NW)c-TS zu_l|Q?ROveohxI`N5wmoPIUhM%$N9AmjeFs94}J2kmzJMTc_C?V^#l50_aWM) z`H0K&ZqDW>`?cZP&))h^nEEsOal7=GJyiR`28d(bSGJJalbZ= z%=GYXFaOrr^J}eddhh&?W$eS-86P^Z2t8Sho*apu%%U&*kR^xUo#ZU!AiA<;D(yih zt&@@66Z_hCuW){##sU7;rlMAp;v|}r8oder`sht`s`Msy+)??UTcfe2wwW>f*;zH) zb}r`}4Lf&2{ww*06@!san?5wPqJxdDLy!NEHdELsz4jNnU-Mow4==|43i#ryutfr# zua=;G8;&>Hcr$)7f8#E4tn&NG?&nG}@?_Tl^kJ{(7yy6xAm&)vHIl!wQN4JRk76eB zMEhXL#@~;=7M?FW7k)juQ8<3w(}!O44mN21T*x1JNr!`H>sKXsCb?$Qsymm>YCILO z9u2WhIYDkU{to7TS)KSUW)FgP2VW3gd!qWDDOX+=UfWQ3c>O_ZaN~~mN++vq0$kg9 z(^-uNs6%~}-?^FJvM+zZwVj;M4l~wJ=Q!$AzWoW#$O~0hPZ>m=Hx#}^ow<#NsB^ce zFVwixsp|(^z5HtAE^^RoL%ud8!@nuXd2Bh?hFm@XKi^~MF@x`*Yy!@eQ0y~^56y=k zj`fqoxF^L6;oG_R)3hI^)}34UVQsxgjF-N7;TY50CGR}r<36=A;}i_*h41uO&=?N6j6un@qg8h4U`ak4-(;4Ai^R zYQ8p}thC~nQf~sBC5zp8wVk`Iy7kYC@0h*|6ZcA6@j-m&;@S(R_m#J%nDXx_Ug^-r z2bOQP%fEHb@*a5F^v77(#|Id-D$dzUcec#vBj1hw$>hKG03S1^=85rSofZFgwOK45 zL#!!n=2cpY<;FK`Iu>snpKLwq+D~45^#EfVM(p!Lf1Xo+c;=-GZ+Xfdv0~)eQ1+iG z>n&$F{{|{AeV5>y1asA`(anAA?_!u}c#^}&k(-v#!by4Jar9~cE;Qn1vWI63qALp_I`%h{N1M*9T z{wYs<20o^JbpJW}n`ytN#-UFuVA{CM(?)`K1Hq^dyer-B**lLu=6b*9-N4^x`r9+r z`94NGlRlGNpg5HCoz1UaeDol@3{0AXkYeoU8!FE;FJAhTzr!gX#;;2KNtNeW-|`-K z%yR2ThBKajr@RYu(fz>V@q7U_V<`#tYIGW?qD@4x2#{v(W^d0i7SuqjFI zQ1X1_z(rP5m138}Z5fU|)1-aX^v<##+J!%)>CS%h`Op>v;lb>bk zl%AArL%D&*X7O*p`eGONsW0l(H&8v^@7?*m^i--&YweMD^auZ!8Dp53!%tNgGS29P z@!vig+xvsJV!!;^Td_+MZ>jIU@sxc=WzqBECHd*TeU{K#M9%Ve#W;=2Bvt{;;V*A(GwJ(JVR{KFTvn$Ds}mJH`Tf3 z;ES1V_I@djZ(~k^Ot`l50q7N*!{n7t(q6MoW=%x+0y7sH zerx^F&B6!mS3p7ll4z2&Gr;aN6{@lXiu7KL-n={bd zR{Hn^ecenyZ5uJzxFMJI!HjPS&zJFDb8^kyHZfM!ul4c5)$p>VM`QG(5IXXa7drg5 zdUIb!n}yDq-IUuc->ctq_PV)u&R+LBXRq6Mw%3knE_)v1iYb2c{VUAAu7B^rr{;CS z=_eeVDuyv&J_LD@UVfGQG5bYYzIYM)!Oj_G-5+9JEZS3^OA0=j4{WqIVwiOktlbzk zXM}Zs2fhI9Q@9CVbse-Uy3*d%^}x9b+SM}yXU4n?zeOu!ZY5{#4t(>Y%o*wanl|E= z$~)BaspdR*f6ZLl9Oaymt{fWe5kAAArMc8!1aDMOe<}SdBj;=hyy1JhXLljIu>=^f z?>s&Ld=cn{E95Iip1J){J1_8l4*9ZA{D08z(SvOs=-=-pf3W*q_J>TrH>zJF?e&Rn z|KG%~)W84#sPRFI{hxoE=c19m^0Du|A6i`wF519F8~XHFa5388BCGejdOf#sk!5f( z+QCH!xM(MDI0qS?2F{X^|4Kh(d#9l_7sjFkjdv7yn&;q2d?7r6+g?1~fjrm%Z@RJRxC1dw39BpK*?19Jl&W~)xU)@=WUd~1?s}JIR`7?)6ryG|DQm4vFHcKbSk2fU* zT%>pLze^TNCNEVPWWD_MYxJIXibW@pLn+7Z@KZKG*#nlfM{?Q^?HT(7IW2mN03$sQ z@H~S2u5jeH%0-dimB=!35K6W{t9-Y1nw8#5Y{Af~xrbJDKdqNm-Mt2EAF}%YwDOy{ zCXs9F&2Nn>*to9uIr+c*E;o6`!{T$3%<@ubc)Z=LVl<6vZR|_{0mRQ{bj-} zGF>q6(MLaR?04|#15b+K6*>6CUuy6v{7D~|Iry}=M;{;Y>SOHXwO)N}?g!MzwvT8k z{kCzE-8h!t;A@R_c2ax^_*w(LB#Vo9?&3=Pe4~S>$3B3cZ}@m$`&H|RTZwxKSFc{l znZH+d{Wy*NrM#BpL~Lc^Q*ATtGA-Dq!fy_`yaQdHKLi~POxb(W=<=0W)}-6OmGz(M$;p~0dX>>)XM*EOTZ|nIx zMsJ6VuIO}hh4x}S#TwjKhT8gX4E1+FM`NkK2fdv{Z?8ZfJc-^OgWg_&J~;|Z@-N1& zKriQCK>wh_|Ly+eop+A@{g>0f|H|~QQT@Bjy1yK`mS1Sy{}lcF-|pXn+;jBrw9~)S znf@(R|3(2@@r`5u{Pu0+2J?>OL}VbgtMYDJn3E{yt!-uo&%)zZ`2OV_X!;|Tzl-v2 zJJ0_K?da^VkoeMP>;I5%c*9N5+4rF{_MKfj#CK}%)4n`+PujIZ-kq~j_e0(tzEbBG zDc+?0X(g{a7^i+q?&$d`?)~H?-wgde&6?gH_`*$JM)xR(S!MjhOE?to(IC0VTX`p0 zltqjssCSzbOUY_H!+Xx$>ppd_Rgz6^@=A1vk27>MFI0X@ioB^b`ALzTb?XC+L$+`d z9VR}nq@H$UmJdIla_b_@7s(UpmaU`tB6}q?q&;)QH(QwhQBHHiE!cXh!^jKffh$_y zTj!Ngh0LL~=0rA88u>RB+pWUzqpzj~ej7~N-uH_PU-}GRRycgAJVEWlF%5Zn3%FKW znp+Pv=j?BxvormN_Oq0jtq(+T==iu#L@7tGgQ8;QKAmAt?%s6$=|)>~++2$``InIZpzp3P-n zCCTD1&_8{zGnW?$=8>gGwGYcO&e562cl*#q4alAu^!Xt7?*NM>XWuzg8_4R^Ttt1| zz}iIJ%NAL}`b74<+9TUndrRK+ZqIIfA(zCIKjX}?FJ9{G|LV-KFW}zb5F1YVxlfD` zT5$J9eDM<*o!uu+2t8=OsYU0=Hyg(p(Ea1rXQ8PSG$Yv`aP)S|h1TwAoD(zcLTe8; z3wu&XzXv;)uwN?sQ?SPs`(dFYv>yYx{Ijudj>x{b%bg$KQ`7uldH?wV&w#q?_igvy4?fUJxV4YLH@Y9Oj z^a6CVDVudbj{bJPlf9?;g!VrgMVs5eFEQ}7%dOVE2d%7z>uJN>(|6sg-;yU0o^Kz) zdKKtwC2+vMaO5Cxz`sz^P90;&{S+KlIB?K7rTg^U3x^d>KTq(!gMGc8qMt5I+Zg+I zp&R+O=90rT7x}PGb5r^({@Y3}i8~$_UPaWe*!a2N<$eEQ@FH=b7hdjn#y)m%BDjct zy#4(W{k8erwq4KlJ1l?1>`$6CI-gsTp?%pq=Q%WfD|KaNFMa1P<1Xt<&&szkd5;q$ zvuz({B|e2Yc(y*vi-z zfy1o^hXLbv5Y2htKWk_@U}$=)gG<-{fUMXP0ETY;?srCZGsiGFKg<_r(tbPbKSjTl zzo@=xKeMIad?`40`#Sc2xv#&>`qTRQR6ksAK#p)mW4sl)vK<+rHBa*Qh(`|LN5&sB z$sH?e+e6;%UqX-e zuUD`fs9rt)pnAvsp=XcUmOtn?KCN-sYsc|dmE*G`C;k4X7)SrM{@gJ<{KuZ%E7Z4W&p%>SHxyAvbCUzvP6=?LjX$w{LZ;S=e_D`hv{uDM+7=rZO>%zv04%eHdQ2z1v6 z+c|87@MIQquWU1q%<4RO3I26>`32^P+l{Wt?qqG(Z0(JaW}ag5=$NN$hpt|Prh1^M zvGB9z1J%G}#k)P%lCU$ZM|6OW!oPfEo8cv!zB-Uq??7LN41MMF(wCmUZg@Ax(AS}U z^z{;RjJ8=;_m2kPIqiYCjq$b3LU&O23#RU%@r6k~c;DM?1Wg++IBmE(Pd+i_vA!)| ze<^mKBZqpwzuneNF9P%H;TLqn?hrEfgw?TkoG)Z-U31Skbbo^SrJJxLUz4xE$QSG{ ztpRZ1qH)V-*aJ;JjNT$Q{{9a5=X%->F?Y+w#yLSd`8(T zUO7ryf3NRHv98$YSo}%y;jh33*L-9Ydt-=4?0s>`_vP7n&T9KAZj&mZLPJJBzn zyuZH8Vf<~#5aoIHkuA`XbSUGUEjy$L9hySED_6h18{A%kU50Fkz@OLwJ7o)EGnNpu z+dUF^D}PWtGTq@3*<+G%?z=k-58C`O-JvB{e=cXe$3)=l*6V(w{lC3-g&X&CZDzsc z-H&JB;@ZhS<-0!i1iJT3z*+Cf8nOQNaS~g?*v7~!`IBlDyCDuz=dp|DA}9OX#nj-!C1*_(uCstcs z{~Tg}QT>*Dk!_VLG<_(l;tr+!4S=L)Gag1l3F zLwO4k#$@6fJpTjoKS>`8=_9twPR*exTjHmW+M_^q+(93UO&|Tn-=sde@1`2LV9(bT zr<2db>ucIgAEkq*%J#$$RzUmOdqDkuHSylMw?)SRVmJ6bSYKerdZ4LttMnHtV{l%~ z_$X`Bi5(N~qc6}EFMm2i3(^%2IeNky54q+$N5Y+J6T9}W{3yyt5I&R8hj5yr z&p}`TFPigYu-UMY?Y-xazT&8P7tymB3JR&(yv5NB<0PUF|f%QJg9 z2xh>>tnmeo>VMl0@m&DNj;mu$S~vMi;85zbx|d@UwjqDFQ|4Lxbu-?52S3h`URzqv z@4(-xXPT$Xz~?Gl$|gL4P52UaZW*{dSG)S&ZTBX|wi-M14fIP0o@v8=(D^;1FK3^b zEOMNHLq!4SoHIAL%L9uqJ3d<%7H=9@WH>^|w`Hbc8vHL}@duX^9V zDSL>r`mH&X%5KEpeLc2MkeHmG+#91qJnIkw103O#rN6|Xg1fW#0SRveDPWD9$#6jI2Qe2&rvg1Je+4ux(XPu zXXyPg>;jk8*u%4g{L$T_Ir*b+HuOEX=1p*}Igg&(^lkg3Z+7VWcf5ZSdipZHi0f1@ zaj1up`?bV-3h;Z>67P}UqklVBL1P28qvs#g&YSH$d(@W~)fO?Ea%}RNkI2s_n8UdJ zP#xkaSJzkk0bS4hGx;Ghp?@9Q)DL2AKE`;%pV<$cIsK_W^V?-+3^|RzQ0@}=|2bD9 z^YNi;4sdn?&(ZPUa`ij9-nI8{F!P~Id|Tgz;RkEexcGN|``)_ev_~H_i_O+8x|1yu zKxa#iizh93G9R8?#n`7WEbpQ(yG6U(q0@uJ4P>t#XWj&F&elGMil0bVxbL&y>oMw7mIok)5`DBH^DLF|SD*bJ|5PKxqje@>Ac`1y9QKaFB-6kqWQuzM5hGmGzQLcQ$w z^8Fm5&hmK1W|{H^^InILi3s)K-&auoy?`tDH&XvSz(IBU3OZW#ivM!4_Fcs{Z1+8t zEbR1T;a`YplHODPo@ug>@5(~TS~tmp%9g$R5Z?ydjOzat#Yk~|$zFS|f6-ohtl#cE zZ}YBO>@{osukAIm{yDDQ$w&M=V4`n=@-e3y`4|Sy!SxB&=QEkJr93 zpV67eW@N1Re?DB24%5N_CNL7)(_ohKoDSnJX#2e?={F+1+J>F+;L?WcSYwDy+I)3saSQsT z6+7cVIb)1*=uqp|B<>p7_>6ShbJyS{Jv z-kUgkx+2uG?G0#_KUDlt-5kVs-8jifIMmg_A#QzrN$rdFYL1WH*D!=Sr9af3V(K$Z z|9MOE@dY$r>-M+tsZJuiDZ2DB&N+KZ6bnwi5!4`qBalya-B zjl|h%=(?BbyTzMfl=&?WR!JzgZ9eNqzRk1jj9TPLd$C9!zDU}ud?z1^&MsuFYGN>P zIEp7}jNDBujk`DKqsUDQ{9MC#2e5G!11cERCUaLawvFZ+WWP+K-iX24L!A`6^5u>n zDixFA^t1b5Zn(RBNf=%t z^DrU!c!6U0y!-RG&!C*DX~pVtJwPk@>`q3zm4U`qcPKYu@#J5Bt4)AF=l?&L(hw;&bMS z@t&NNdAzCUf;W8vym=m+#mkq$S@O_`pSC){lY_wYdD3F+cVgZgM-M33FtoAY{CAmr|sX8 z=S4{eC|*)Fvq7K9ZeAYYEJJLMO5{}SN3y29*E9xgwd3wgY$*9&WbbFKUwEo(UpJu} z8?~kcnb15-6nGCC~J)Q*6Jvbrk2} zWvu^Dx-(+VbLHAy-y@u~K6!aMFBw}{UV1w7mqP=*V|?N7JHW!(lz3ow|D@!4&92sN zMB(?c2(d&nfkS(%V&90|FU;FJjWJP5pA_gDqw4?ji(|#FyM1s7pYA-_5>9a}_>Jm$ zA-KLCsKb={!-fp@$9e4Cvkjg}j`Z`(*+MzOGvuua2?y31biH26wO6z*L^#Y4zk0K_ zER8=8+ViB7`>R-cD1W5m_7z6{Hfc;_^U=R#z^hv92mDuw>ygX(q)89kbnFMkXe-Ts*1g+@ zkJ3C{0-wt!`J27(6FvAg9=UxZW2@clxe7k+g1u+@HFim#E}gL@*6_ADG8IPCUo zA^J7>V9V*(YI2;m{QmQoI`nDEQ;I&ex(7X0hX1OZK57u>icOzcFnTQSkn7l3;I%-b za9@L-xnbs@(W}ujdbcH@XO?@q@dEM*rk)!aOI%NWACAftoJ`;-UAkQFg1X#?b4Cyj z?W&UebIDr@KHA55EBvv%2Bu#p7fM#KD_r^X=O!|&?)s%-m*A)L>W0AmGlBc{_C93u ztmPitf46zF#KwU4{a!K_iuI&c=5`M8+GxLMz4WJam;QqCeGKt3$cpSYf9+j4 z>ohf&OdDe!JhHx)Sdb?C>vOPOr?XZ)^WyvV-9PjCqYn`0c5n>)XJV^K9@HPZw7NFg z4&(-#Y|~DS>DjM&F8#?i=0!?Ep|%2dKer?3z9~C_DS4R*43&wW=<|{x?Te)I!qvC? zyj5Q|8d#>!`1>GvKd{u^w&kWcxYTOA3SD&$8yHJ!ea(_?B`y1v?Dj# zGjS$(h=yX17Usb|uX%aab=H?r*TnwTYmLR%(W8>#FmkK7=W^aha(GAiA!31rYY8wH zB5x63YJNt3^HYFJJbir!EquFL?UudOgM7RHd)FVm;d_IRuBJ@+FxVe#ism!4u3Y|< zY3zTgw$-4%LjBd250kOIz+4Q>M*1>`eXfFVWe=T$92qO)S#3Mfdp+;2Jh~pglHixGR zH%J$5=*d2q%*Cj_%7GJ+9)uqb*9v4t`x9zio61m|%AgFvl&)b;Y|3293z4rX-^B9S z!^o{e*NL&Un?dkTtwEd}6)>_JvPfk1!^7|Ed7F<6q*urxS{jA0b zYv^Z{)`GmtMp%Q5AUjTZ>Sn?_V$@Z>^hJc9%Ktj$%Z_eE=3gX_^1cYXwel|lPcarN zklU{NZPyO+$G>-bJnD9T$Ta(59=IwFe=7AjHN%NjSC1<$$LAoQxt=Slvx;-WX28_S zF^g(y%sRI&U0JohoW%v4^>E+DW&bbf%lSGuG`YO%|KFz>6XzHF3-a?pi%-&?uyqAK z&w`n0^AQXDJb42H1*-iE+i^OfLgc`KZQ_#R5bSL>hhZceVZ2;Z*u z8(RMWV|evZTWw6*S+Vz+JJwpj0{ovLPdCeM)A$p6V6njl|15hd>s(*0$0)#F*Ss$} z{5*{v>TG?m{-R0kDr95NRzhEpCSRY5|GyiYY|Fd7cGeaDC(y42=cBEBR5A`G4q*rN zu=Zw0X9&dBLgNAYw%3uHm-|mhJVl+f*JQ3^Kcd81a6Ld@yqdh)GkPoU^K#6QFutG# z(6+j6bZj+!NDF!MIp4=rH(ROdroj~25xu#3qG$DeOehBJyQGO#*0G5QIGCm z8ypP$cu{GwWXTM0QuN$s)5^vsu>LLKFiG;@`LyCEk%#WuV-M<9`nLyi(8JafYk5^q z;Ht5ubVeL}gL+@_UK+<|s*aFrn~(a;1eV%y9sG0U*{z?q$={tk=LY2Y_b0)BowWy& z`Yz7i=jnCy`;Kywb;MZa3C(M(jRf2KgX!&^K0i}39UZAS8tm50wu$r|vI{%fj>oGt z@XBvTYpk3`*0n>ol~wpUfWpLfop0%^oK!i`|h;gZyLVBN%H-% z`_I0e`_F~o@M-m*>pZ->>pv%?wFk);aZ8I=#|K(|OV09reGsrQDmwU-tkWM*)*Es9N} zvme-d_91M=O?vOf{f5^Uw)*YMvlX#1-S*bav)7k@(W^79k?p{LelL4o&AMeePq|O0 z^OWUxx)QvzmYU7S^FsK%B6fe0hmgmKRjyyZ?nlh;6`I8pIoo(5aTaZPrHNUe;mp_7 zV~gKp9&qA)W&4(g@@Cz1+Cxk8sGDuH?GmnYxmJzVUbvi(@J06=U#-Jby-dqzeG@U` zv)IS?=An*_4{4*1)qDBQ4o7+u6V%5$H}{k_)@MvfJS-@|Wms(#py2IMM8cPlW=Q!U~ zQf9+Gr?^UGP+lB-H{qYQV}oyf+4>3&&!JBN?)_XZyNB~3cps;%5aSL5zMKmjlP&$t z-sl`)ZUv_Fot2%4!}+&;?75}+T7y2|GjmYu^~uz~(o4DjE#JmVXph(z2k*lE{DUbL&l`SciVx2zO&n$&^Wo>XX6B6i3UscaVpx$^Q=W+P02!m!EMGDvOxX z{`rLt^%qLqP5t?Gr~1*pQ`MEM9eBbiu0{@cy#2Z>%@&7Ndj z*gOXrD?#4)UbvmCT$TCu>#W%*p?=1=a^=dGE5m-dKVyXBY%%L$HtGGr#ZGbF1mcRQSJ~OJ zqvZe5JI37oeK>j-pNhO(7fJ~JSa6!h+^ans4qiNoK8|0@du+Z&@M*ja8Nf7soZU2^Lo*~ zrUK(S>MD)a={K9r+7rFII`r#JbtXA_>uSf!(c8$;I{`Ve?V%==I6_^Ngmc=aQ4cwV zX3t^L-Wi2l4G$&mf!BvAUp&(FV%og|$3&R?7#vT*>H^u#A`He6E@&Yg9HcCI=* z4gOwA`g;$c-xh@uv+2VsB6)31=*>7fqybq~Txm10q{}m)m3$54`#3Thq))WHJsepY zMSB51$?lu9g*R^l9%a5+U7CoU;?&P34yc{9v%#$aofD_r@3z2u-g8c0eHr7|GHlvL z@_ZUNe1MKELmygND@v)`lGmbn$kE4WgC9xX)1`@@a(>$p=!_zt?>$$VcrTJYN_^M- z+=$tH4eW*2C=i zYxs;so5N>5^xdn?roZNf5|@OTN2WhGoQ3Y#Z;IozU-9n zTtxE-X#PAjKhf)qMNdHU6VSXIn*R#TUxVh&eE0is|3y!P&v&%XPXquIy~vb*`M8Iqqq^d~vA z)64Vxez>2tv*yZHn}sbzpJLPR%(G|y&QW>|`#KXg7H`krO`U*d5>(LK2P@bVric{urw;c9xFS2LK&hX%!pd8>WHvP3nqO-BegZFno zJ?D$06X&dSc=1O!eS>Mvjjcegzp8X>pM9jSr;JPZ(T^TBKkgB$V!Tx~oA=1wFBxmJ zOr^iQ8XjfS?vUX)dRuxtLv54vGWIw=jj@j3_S84FOvSgrcgnAJ?zd;H70ICdCgl1G z>f8yOb2+V$7{Y9`=)hUn7TG-(wO$=cyv#Xb2eU%;FHm;#;~B+q^n?>KqgsK#AKjtx z7QXga!x+~tZ=vj+J@C2HSNiGyj1G61t=G4;FgKgNgX z9p|%&KRMVHFAuS2{PyJeAn#w|S9b>WxL9ZIIvXR(cPZaY!bW$$S!~Y|=G}34+gK8< z*F3`A+)swbf8hH@aK8*au-@{P^Z2+*uSwQrkEXY4*?}E$p4R93x=cJj0&PCu#q&F` z5rw1d*GPczh1O#>nHxZHt|UDzX(2$ zO6C7p@&6*y$B{mUxl!iCYQAWW6rdNIi%RWYWK)0kgT1dm^0RlxJoD?hICsB(!6Vn`xj@gO>AxNh&E7^EUxmyyQ=hfJ zIgL3?)^r2E34EHt>l)QN&sv-GDD_1BvX|;vwtg4!e3R;IK6Z;IH=5hie%kU^+ctPR zd;BBUQSw%h_GNxS8M%k__(i}U=OpgZz1pqLo2G8=(DRsR{Sjnivfz1TT+qb04c(}i z^g?Sl@I7)cg!DLeuk>c)btX~d<8WB;YBp8?ukku;+1q5(Ms~di+%G84D#nr6q}UF${NHe@j1{-Ins^9{JG^_%Q?z^dAGag0eShcsZ+m}4V^)$gn?lNf?Cu<8I)eee~ z@4>7O(D|@05J%KFiLu08=pXuDUw^e!LzA^bGuQ89Pua#vNgXD8DyYYV%fY+!Gl}=% zhu}!3X{;w*)=b|eIhQ^gfIK^y$#Z+3CtjPmX!Zs!O-#!UFCsRgc=;6iUu3hH_PU%k zoQ8Y#d5o*3EFW$A$0;hanKHF!h_1_NyKnKHdCWa6=!XOJcQ%jW7o|f;)AJVkGsSb~ znXyM!64TvEy(n+%_wtWwF8SBw)iY~)&hp2i>EmCY_K)JT^o`1VpEATBYtwwq9plX= zKC$Fn)~AAV$wb?qPbv9=OLrbIrMHmITChEeo$~u&;ru-5Pu%U|s(J+HJ>Q`(S6zOE zy43Y*?|LOy#&(Cz_`FyF{_D-RAwQnJIa_vz#);I~ROBlvf5;}*k~);#TF0 z)I69U&vpnsEWiJid5p8NXn(z(j`?)OvbN-+YxAh5BKU}1bO_zj>sY|QSMHvdH6d5? z6M^%nucmF%9y9Sx>P#Z7jn-IReXHUbHAj?f&!f&>v|~#0JZi0b8}=h7A^vl|&7vJ9 z`=Ms?YJc77oDr&64(S!Gu@*e}uoSnL39J{hGZ(F%Zsh;fT|Mn>?d#M05^;p^O};Ss-XvG9Kh-@; zTJMxkeuTWAhL6l+eP+Wh!<=>H=q%cW_G&u_5Au#g+CV~M9?r%$NLTqmn3DwauaVh?dBeO!WcIc+e1GD@@L>ND7|)WngrDu-E_Usg zeWY(BEiV4R$6y&7(Gz(mBC{QI$-z;kK3>Fl4Y@xAPkJ&=X~nNMKdqcC!24IhL!L#u z;EDIDgI30E;>p2LPJKJ|fFF3us+luJH(!KJ2LBa5{y{Zoaxh02Wz6n=%UN{f-(oUm zH3M(%h}xyiz+c0U8W#l4g3&)j(XX?N#jsK?@lA^0taQ{U*O9->ckl0$$u z9QzsC41ZlhS!pjdL~L538&8(zPZKD}hJIg$^5OTJ}}%;hTCDn-W^+)OKlTMOUrxR});fjYpJFPf6H8lr`+bjlF^QYYve{F|#xrTZp&oXvuVAVz zxOI2=QOi4EYoCQGXjFS_Kt5LD<9F1@Jv+dzH~I_xnQec_%*WZHQZjgJ~gZ;Z^baTpsJiySNO8B-k2vH9M0yL)Xf$7foU z8511VV8(LqcaDy^-yF>gvlfv#q~`e(i(9V7=BdC=ni`ysao2b%hC+RFUep}vg>a{wdaBb8h%1#g8>?F~!WAE*{1_*?IUo-e6359zO1E zCTo}0k~D(zJDJ1;p`RkOg&FjV@*f>UMvMJA+I^9Y`}(fx2s!J`btmt>!cR6p6XVYs z>^=Evo3}7uWHM}=x$q3q#(ddXD}?9pP$EvbrSMGOORrgZK|i#Y_pO9z9d#25AEB+?*1hNUOYKLdU@h8xh z)NW)yD0ari;Gyf)wqzf0e*60U+7kl2tsbMDG(uAod8+ZV)DR~Rj46uYq^)}KgQ@fH ze;??|=^w!{h@aL<2IFbuyJ;v#SD-T*upfl);s)wKx&z$ye8<{=yUi6BTffaIsvp{! zaO=f=74>tFJo4q1YA*Lu&dc}<&*+Ep9J5FM$?A*eE$!Ghmv$>1Sgv-8ZfZb&8i^_W zcVO85*Yh8|N8606O+))(Uw3} zY=7X55C0&T;M}A>gz@1lp4s$wNsQl6X#6=>SKqj?IaXHu{*b<6na6M6j$M_m4 z-HDBl9+mv5Y~sQ_`Eko`X6%-emX<=RhY$1qo$U71_<>AU|FK@+SR|{H{%d-VdPnYd z7P6Oi!8x&sA*c8zbj?lRdmh(G#dGUxm|K69_B3m>lUT%j*Q6CrViMO`A@qahzYf5s zHu}52n?&i64D_V4k-g0qRsrMUI(I*nP-7%^q$nKFhasyEm8a0lQ$f6&p2rY7R&Y22 zKZxBUePNvM?$bQb0pzfaHdu~)yhq#ryBqgYC%I?JA=M8I#0C`O?4N%6EB-Lq{6GrvZOurTW108Kd>X=Y?D!mk$#<_7cz6z_s8< zzy!a+^u_1W2lvo?CAvW4hEvc{9eOj8W%XwI^MRKbr_tx@YytVqq(fR>B917^d|Y{t z*kRI>{ZS9g|JGfU`8(*?2T%V1PhXdg?y+9-*n%!uO@E{_toIYY)JJ;<(4Nxe(AUrZ zk=t1orJujug?@g;>c8ar&nEPbzivQwRTDBP`{{9bgzd1~+&ePXK#bP!&;eT4bR}1- zH@>I1S7+lZJU=CVQb$&2Qa94|k|C|lXabLE&|-Bax}^f25{++4Blbz?d()2Ev$W_J z9+h4iViMB1jeLVmX??h=U#(%#p3o2BTZ^*Cvek>~8~Wj2fL{loQ!-KF)%ot&4l zFK1l78ejS95vk*H&*H!#8o- zTmyB{$e2=Nx#gbESN;C=w9W2(zSno*^F{Bc_r|1v*?4O;TsyDjQ7p^^*Tt6*asl6}18qSy{&Rem) zew?xEkLeq0rjKN7Z_hik{uuPZap@U&Z0i?U6R+dd=mqK=zm7c{@5{ocuOIW)g`ELh zjZ33xc*_>(E?&`%CrsjBnoE3JZ`uy!jODw_&Z1AHuAMCO2Ri2!#)NI)Bz@3|UdrN{ z&95gv`F4l>t$oQG)U^{bUTmI=r}~NuJw6M^QQ(+r4|w(uzK!5`RytR9{UOTLex)tg zbgk&SV7ZDp6+T)IC>uH(9D=$>WotZmYFG8FxkR)eXhN7lJ=Ju z;~3PV8h1W`4{wp{j|ivZud(L?%qcE%io30UyT4!3-n4xT^7mq)*|0kLS;dtu6fHZR z99t~k=<0jR_KBt!a~3S!!n%|5*`p=Oy2!@rkmAMm)!?U>-(bG(@zdvXUxS}Mjt;KD zPhZDX_2JU%+LZUw=ait!O5tU=3q4k0a@(rt6SYpwpSvP$);3^=Jw2x9Qaz)`Dww;H zZ9|-l&c(88Rf6Sd>@OSNZ|~0&)8ANaiXVFh{{}K&nQ`>rwP$5XzB$6aQg$3AKSa8I ztpP91qbi^DxyD=SBa86)Xw5#ls?#?md?VaS^O;l62+f|)eaTGlePH=g#dgULtN4Nj zWFqW6OQwVPr}Hl{mwQqTs{ShCU{^q^=u4nJ4)zOmJlQX9u zU6m7ARE_N@+O%%s1cxdgrW$*2Ociyl=@0Q(Lx~%N@w8u-2&)p>-nCe10#@c0!u{AC|o%swS-_Vcx z*jR?EWJA&KsQ>yx&MUe0$j3%=zb>sd6Fdr|4T~Gj}?PI5ztszReeo|50Gi z7#K{R4DvMjFg-gpkMs{obLA}6SMcTlS8ndVE}3Ujf(u<|@8^lXFxh zd&vJ|4d{BS^GTQeHA`!|O5icJg#3o>?ex3ILVLBTr)@5--a0(igzY379DhQhfpq-L zvCrV=b!krar|JuS?$P`rGzZ(mFuUF;sV~daSLR0Rv z`AsX~?_79YV%Wb7nYo^Fq`OzsKD9TpbmI+t6V+I+wm7zp`M8zH&s-1Ab;sJ5X#OXi zzv69wcpJn)`b9jt+~d)+C($47cq(aMjO|Yw0M{3xk-3SsdC=F&*hPJv+L-QJ;f2n~Hjeg8Uo9Ww7W&Nz_PfmWt?2TLp~1@dhI8zk=FMss@FeWE!^36}`$<8^ z4N6BAkHbIO?PBxf=k2^@rP7g^zmbmJy4xIdV;H`vba;B0blaZ2c!epXUrL$2T_=@k zwvJ>B2hQVYce33kam7xG)1MfVu}8LVp~>HaFQLteMwe;~SH@b}0+SyrK~4(rfvNw{ z_^--G>fv3(<1mTUwRZ- zD4-r>S0ii8d%JR)&pfYeV)ZZ9XWsYwc8((6kNvN0I+XGkY!7bxPwt1&u-z1!A3KSr zKT#+6X~M)XSB!P%vei$lpuA-NRd!TxD;zU>8#u+cJH>U>Z~FTJ*3T6Dz5rga?}KqX z+rj@2Up#IL(OAmc&$Z?yZRB;{NB zYrggzL;qESPZRW{j|0@s3z2nQ`*M{%(nuYCpScC(_^|PO-M>QaBtMh6_C?p5N|gdVKj$k0(KX48tA__6HgdsqKm{4t_M*NAi0#lslxuAKC1p z1-abCetb>Hv&OwsDO+(r`F;4&Kg7`o-}$}hN2fEt-Jt$d?Tj|oK!2zH_(JiAb|c$u z7Cd{N=L!6z*M@MV%^x;@zR=F&RP(-!v;uy%&3j|je*P62Dql9 z{0z5z^px7X@GN8=N_8k*EZd{EV9=h0%Xna-KQ{Pd-myHZULT@P7mzQXU;E8oo|lJO zztI@wfiHW=vzYg12_9oIL*3c(XupkrZD*c5Bv&<>7>$Fx9U#k9GefIK5*p6ei4PXwiE{pXwroX+f%(i>s(FS(= zZQuiVr~X=aI;P|`7gx9a`7*W7!%^$4Q}AJ4Dd?}(Sp*h#-DhK(Lwu6@${SGUsFa zjmb{&G}f$?U?0wxF2`4ejk>Gsc+KNw#(B(`aLPVIDg4GZnI6DZdhSjSKYu(P0)9h= z85#PPQ(TbaJjR^x?4j_gWIR{OD?y*vp?CD$K)Nv@>-RPJ?zQ9!H&)ujjhpUx>0jrJ z6@8~zF7*SI-gjO;=A388^?thBUzn|_-*>=+=iT;4c783Df4{*-iW7Gs-jzdBH8j;g zQysL_P}Vlebm$v*;MWZDN_89J7fe&W|47S6o_gtJY`!Npr@iy#JJ;iJ`g+%O#MA`+ z9rTYQ8tyRl;Ucr4EIKGAyD`~ExxUo0oYKVejAP0lcKh@B%-@b(?Ao7&+!x;KJYIq%-L! zqPl8~^&5@H?%UX`XZneIxE4$A>bv3SR`}}BhgQn3KYnCv8-9VeuE)NnjAr_me@>%o zui!w}Os?S1TtF|%t=ae+rBm)Su2%0q3_gr`cPO25zr{6|a#sS+QJ-|@sj&iVuf3Ed zo=RpK`nh`^J#vPpyZc4!ztdHJo3`H(vOEI4a7h%I{wNs=r^!&cm7z$RWJvvr##fTX zLUgQRMar{@3pfi~H+niT1k&jdeBc@DxBglCjlyTmMZw2H>ZJ+3XsqY3j;{c?8kdx( z$zn=;5E{J z$TtJ^9rB(ckGHe$4e~ev8L{JI;JuZos`#ADQ zY{}+0{i??A!MgYB{KoF&r8-)FW>@k;efi&hz_+R&$;&dIx8HK*%c^&fN`BtzQZhg%k(|Kvgu9YF`*2)lV;%;CBWoWa?Lsll~ z8qjG!*E4c^8P^Qza*@76_ETi&*-=)8o}J!V&)gBHSN7xTuuWv61nse5*58xtU)$Tw zI&{sZ5V}J8LOwdBb=7wkXxxHMkjsgOiV0(ztAq#<&Hj~MXlkZ|Gt)eK@Q~a zSi0YYjs;15eiH5%6Cb^}}A&nLFA3EinZj^kPA0(k7UQPH_FZ=UDelDMW)kXiKJ=BBy>u*ICT>j)({%E|H4c@8p;Lc^Z@*v-j zS)U0_n$zz@Pmj*>AbKPZ)qHb3JP6jsX_7zuzm`_^?`wM8?&I55Nq;zR=Jn5FztlGj z!Cs@^`d7}7oq%oV%19EY>w%lex2wD0?+u~O_((p*U)7ajIWL39`{C6Z__#Wam;d7N z^5+4W3(6b&)WXlaj`{6qplwNaCT+peqq2cr9wysVSMqfkGSQuURWOFY=A2T+8jF&9 znTP1oSK^lSoiti*@M!6Bf2Q)DZhX%$#W(iu6yFmm!Y6Akus)Ji_=)T@wqDgw<-2A5 zXZz{=`mK|1rw?}e;p(hdQ&TT5{xM?XADfi6gtjhQHTuO^V|7OCyL&!d!uW7QwaJTB zvnR?b_@{B=^^E1K8KZ0dL2&@`Yf3h^Fb;gB$V`b}&72+isu@c)MIyVZ8B0~0`yQK5 zeKy^}dFP}zPeMQQjq1V5OaxrZd)qON>Ou1tCHORVV&^oBBgVGEB(BG&(sCR76tgGC zfmtT;GV~oRN52E-o4{FvO?56lmldSDbewMEi^^R(c2}EGv1#Bw7Wh@70~)N~lyPGG zTA%jQ*&`}*{l9L(pTM|#wKFQlSUr)cGe9{O6l-+-K9?xYwOCKwK z%zqF6Y`L2Eu;cb?-SRE${82H+*qr|rUX%_$pED?%Z^I7E_SUG<#svFjU@Lu|lO4N} zdmsM&@T3)?9_HdM=WF@_FyBPwKh8H+xL>gx`XFXsSsR zp61kBUU;$=;eD8TkHZP;UJc(hZ+sc`M$C8HG-SB(QuYEnOR`#` z7~J)rqrL|7Uf&9~_Hk&ul>2J@-(%3xqc~R$K4$?hcpk(c_$)cL`zgTV{_u1j`&0Vu zKrs_P2fwB<;Kn|SO{0V(zBdmq+CzOU^3Ysu+e6}K;Mu71c@6=~&nKQAgvSOR`*o&z z^y|G9{vLq8dCY0w^e%gN!r$%Rt9!Po!qhK-w^}Eu^(`$kh_wbk;pOA_%Rhcd3=DM) ztr_r9YgoiTt+|X}=g>a5&LIDF;7^%V)LCN%dfW2<^w?d{C%>nUYX?ny3vUwI>&Mc> z^KXbT^7G*fII9JI)WLVr+YFC1Z?pb5_`~liVwxK$v%URP^iN-YIqMD+L)=)D<>{WV z)jf?$t6@Ikci35fH}%4`fwCG`MPexFC*qui^jpd@lq3K8&Uf0U35H{n^KLFl?iiHW9Py^1-c_@k6fTaNSHM4lUwj}qutA7k6kqfX-YPky*$EA3D8 zceLq9rq!b=vr=%73&Hp&?i;A5D)L7ehnAwxyZsh@TOeNyFxK+jH98|6-Q6$*zMv1v z^bVNf$8z3JS=-D*AJ z!PDF|i0klqFPG1YzFWMVKHa&yg>u$#U2b~J3gMHQUg_MexvjNa4-z|;7wR#q6df)* zv2o^kt3I zrTDut6tEd0^j99Am*fAM3tkQ2n~zT`OT6;xt`XeJNt3M}5|6w(tispl*I_k0isL_M z5n1VHzt7s_2KCAR(Mg6YLqkW0UQ^i$z zM*B8gkUq^hfv?txZo|iB>xKNbUbyb3%>#Fe@X&mO%3a}=Ij9SGUEy{%`3yV|4-24O zd@JLsIlM0Is33m$Iu8mze4f5f;R^H&P|Jg8_vr=m|{$-~4;1nC$d=dAbo5A`YKhKXoW6#Do zRLNd~!@d5aoI0oOMZ0ulFVU(KzS@!TWBELz*A$D)O#&-K!$VIQ_EqRrA@ z9(({jH{2u+U?bLXmegRsF6a*%>3f?VpuUI$)_CQ!st=wucQ=-EqFU&?N@#B@7?U?o zMGw%2>-=wMNX$_kVOOi~tW^JsjWL(2+RM$zOC|B~4Zvw!M64b*YIzssPP65P*MCvv z+OooS9hNT#(rZYp9R; z&`3GreKR&f3;Zjcxtcr~>w7ED9AMNqiB0Oi?xH?`5ud|)7oJs@>IVyGla_yX5kCw6 zz5JE8@xO`LQn5+K3HB*zHFvpQ~F5tv$dn0$8MlceF1++HGQAzYwj1FeJU?o zYkc{3kTJVjiSvDl>w!qtu59Wz>%;>ORb!j31@4SAxNCuX0Ju*9H;eN;S6jH*>l-|{ zoa-~CIoBkbCdu9~yBf|ii5<3#9=o!D-Fp1~hlm?r)H2TP12w+TT7|8$^>ZCNC#-hZ zG7kPs5^oqY!kZf`Z`@dC&1wXf9Vp#7_lqfbk!!NP$#qa-Na98c_wphg#NE_ z6+i6!LT_ZIFEnWWudnCR?M>bFMc=S@fC>Bs{S)qaeo22=9NHzgDJfUovHMvxK{VMbKmOz_w3`Wr1dH*Y9f@CH~UrUIoB-1PmsH- zhUW=9m*U&8IxVa0sQfQm;*r_&=wD0vm?Kwm4VJwfoK(g_uJ=>6;%D1MAJ6Tg5Bh8S zC_Tfbm-DRjY_8SWw}R817N-}}aEmz3p4<<&oKF1dtf#PHO4*Y;h*K$YR>vOtAC)F~ zdPOlq=#2ebyONE!IG@M*Qa#zYk8w*-9@bG;!Sf3w4>i@eu25H z)h!?{t%z~7_=%rraT(7a5cgA{^I)A4-dW#AGJk$rexBd<^W*R6l;26q&oi;LF8r-u z?wr3aFBKo2U-R=vyT~6+%g^)9j{G?`mJIov)eyO5V}V(|Gy@*g<`0X_g=R~mabX&G zQU_0>@W42EigQWwgy+q`bWXG%Hd_b9Lcl0+&Wq)fr}9KQF@a~hY58uND_5>BReJYK z>NG|j2L0#6+c57xLh&}m&tqe2Y^T_iwX3n`(9P;&nHx_0vcQj3aQ)T+b!~$2GWb0< z$QM-&ydsTNur(F`s`z(}gJXiLK500*AKONKStIZjw=}P#3_sSzEu|8?;7h`d!AOn8 zP>zrF9$U1#?}PfqjfY9DuMj`*H6)ru2Y7y!vtihK!JbbMptXJ#b>>hHnwxX*fhmrn z3Hx{g^;MRSok;rS+`Dz+@-U@e1h(qvnNw2rpT0ZkdJuG4us+qkT)SNBxfoCH@Xx4B zmZ@?c_sY?kzd`yR{0Mk&z1TH8&iuA|I~`t63oqG!$Cx7z>N}qY!s*rk?eBQHM)jM5 zpVc?X`iU@}oZiR5KkWM5mz(erm6tw=bRkcw`y#P@CnKt;NsudiD!TuV0q2Y&CPi zEyRpGN1o~>k!7ohad?h*)k`v#ZO1PWMsI(8m(N4DPV*JhQG13RFaFa%**SV*^x2<< zb)w(k*-@-WHt{9Qv45545nuDte$+oUm$b>GT|}BuzVk1&ar=`i2JblCr(1oBExQCV%UG^WhTd zO_Q^HX}4_$*!u&pWm9%{e#DJw@YS|QFi-!HWq9rL#k6wNJ`Vr29YGlr~SKz39Vhy6C{$A0_k*O=Q)vDL&2tzU}=a7o9<)d$J;d*g5YvXc5K z7)yF%S{dp3Wmp&W`9jCJyj{TbczA6ZT;bl;{srmyUiQ0_j!t{@T z`KI>G&!Sy;V}Lh5Ql0|*?0}u*r{qaIeJubt*uMy;(D84w_tE4d)#&yRI#%nppC8P8 z<<=6}Mz+5%#c#C@UKg10vGDOL_my3I-@XF(?705=riypE%5Oa9yxP4}&wKLSspq}G zule0Pllyc7d&OvNook19b;%{jf7$-Q`FLyNVNVqVZRN^5YxBvEY;9$pWoukW?4H|h zU7OFBr5|~8w|aaGmiG!{m7spIc4_7Lv0CP`^B7N=y5;sv)C(9x>THxX#MX_u=kdK$ z4{msO&b5Djcg&HtcXu!*nv=U=@3J#Dy*uVlzk7F1{P?>sncST(-}}PxiKgSkI7C{0gvMC*F4L@nZ{XB0XjuB7P#9@18qeVV{w~ zDQl1CE@VH0&2RAT5No8*^GT`Bz;@6}F&Y1l{`%+@bi8>!D!&pvvJJ@~PYvUyhdetUXB=MJEsZtb=` zCG}AlKF!0v)AwQIgtd4tPlE>)$U`Y@-KHZa!SoP)nrs4}oixm)` z+3-yd*P&mCmGb;Q?(+t7bB5g?`j0#ZasQ!*dvJZWI}@Eh6497zr`Q}S|X zb}2Ho(&UUP`EzLY3htFQ&kP_>%|_`uJ46iF6IN*F$zaWYT`{agTsIZEYcKtrPA~rr}=O1@6<+ za9?SNEoST|TTM2b#&g2Ql^L%u#C{XbmDEoiw!G-jPqu_`sRb8}pX2aSabmjn`Pmgt z@;wFlDV*fL5kJL~D0BS5@{@9%+BZvQ=6dz4K6FDs_o>&h{45XI`TbW$NdNWgi2sV; zW)cl|FxI`x)q9aT#;#-BHZS}1ng1X*|2A}<U6+kZrL8Omx?yA{qo z!TBKL=0jsb#c$lfJSBU|YMr{ymA`H;x>bEV>G}A()z^f~;l~PgN0;h6`GbtH4~;1; z)|oCUuk9`;QS(a3?lV@iI%3b|J`X)r^FL{6=qS~}dEhr3+|CC#Jzs!){ERb`t`4E6 zz~hZyJhXID=)R51xxa~f?R}b<@X zdii1W@}uar-$}3C=RE%O3F+liXT9U=wG-0Ir_QQ^H&35%_3~lfy~CLSx1rb014r@Y z8Qu>E*P2kTwlBY}IK$SXx*aid}HN`~5BK z30nd0RnCl1&z&#zGMk2=-?fk45cIq1$<`4%r@g(`x*4p!IDkLtAhylH>r7&3T_kpJ zDsxOzvEi>%orGdT`9^(&WW0enlQQCmu}2mcV2>Q2PWr;L#&ToxUdviF|6L)r$~^ob z%F}*6abY$eF+sq|B!*AvIt$mY;I2{A~E6@&B!uxd4KK5dhc#Cg|@A~}U5v~uduuf+iX0C4r zhUhwXw2QlVQ#h3Ms_;^HWkaWAt}FZsw}xXwzV0N3!0#be?z201egK|p9&ZSJr{z0+ zr<;fRh3|{dhwbgz9lSpP?+=V454azg1n!f-eH^^6qzqu63mox&J9S>|urD&WHT;*0 zoAwS?zQ68E@?AFKT<8_eu>_hX0y+8WTO5l;Ji$^ z*`=q(h5}1{x{t>bwhnr(n@JsHQwQ19!NIFN8M+oau7!@Pse^AZ&kU>?s)I_e4ot+> z!F<&L^qo7MI`HT%oI)MIThY1JqtnN?kUAZ8t$w{cU{^Uu6(GCz@^R}!#B9N8o1L<%E^G{W9a0u$B(^S!+CKn=ncigD}Czm3Y#WGqO|1gjWY*)`IrIgtI%_^Ih5R$9_dWh7GBHjCJgs73FL!#3nC9FO;D(Ik!4d zhSIWG5P!>=Rd_v^^N7wtvJMbGIqT!w?~_A-_Nn~*u(0|>%B64dLE$6{mA2X!gpUwRhXA-%6rTwMiygyc$Ntaecw(+0OsKUuEICn-;x3^LVv@4XY->z&h8jX-}!$*|A^M3mva_+H9Df4v(V>Z zD>kurK@BkpPcb)fyst?t$DW!?zI^mVobiLk&9mm=m)Cm5zR1)}lXzZpoX$u)?^ed1 z*{bKSAiLX1uO{8jpCRv>gR^rSGo3^Wc@)pP0-jX=xU8Pof%@epGRt67*Rkf@RGwz{ zZQIQr!}?Bb$p5~Y@28W$7QCnTXH5#@3XR{cR16w<^RR_%InYL)J=38r@s3k+4PLng0JNZI4DmUxR!&fN&jRqtCzjWj zqbTpy_Cw?;fL9^%`0pe$pY;1Y&H~?wPHh;>`sl-j`2M2xB^hS6_H?&tyWKR)dwhTB zgZlYegK|4-P`KBcAmLs@ytKw-!bdcypOx(-T*olxFLZj?@qW?d9(L?Jxbj?kt}p9Y z7S@=ISq<=QIWXn|<9g~-e0S+gor6tjPsBBo>2*rd%EU zd~9WgW7k+CQ=8-P!I+DP7jXTu(KEFsxFlwIL3)JrX6bkOyTr!!B|Z$R^BJSty{?N) zVimIcByd~st#rU(JTRKr{y1av2J$w-D;IBfjikoXPulV=_$Fsg(Tm$BI#T7@bo^yyrINIME4rk9qi!Ybp$T;^~># zqlyiz?V@huSv4DFpO+xhA-*AR{p)W%a?R_{{Pa7@zm2h;Wby*#>5on7<(YHE53U(= z^UrLa71*EQ9AMVri{ieLvtJ67e}Fl%jW!{eb1nqtTQ1B7%Y%8X8j7zZ`NLA`RofFY#+Y8D|!1Vd(+3I zr|{iqKP6iq+g*Rnx-(TDr*-&is#rT!VDhy0*~{RtsSp`2LdFZSv2&n9Z6nN2ZKsib zNqg8RmI3+SZK4BW|FRW37+*^XHtUV7?brGRjsLMD6RRGktz2aHKHh`xe%ET&sI6v= z+5(fgNNdbmX_q?~qrU|IXE4S?zgQikbuhhY|CB*2(3fISl>tobszlLK=+>Wdzk&V< zKR9#h371DBw2w>uv@|#zocly8_~EDC)5_RVzJr5zxZ~m`^pQQYgzF)GqE~vai8C2n z@Y7Tf_qiVVmH(=d@#!1H7eCGWD;|N~Q17;B$Wk-o^*H{6H}D<2Ig7C?V@Mb8Y}y}Z z1)v|A@If~Nukjb{ONR5kkFVA{H8Z|$xs*86YZ=Rf+Z*^F-kb%F@Zb#c=kwEW_HjKp6(8FuaGr#J ztsFnf49=q*2Tj5YoNvpH?CRU6@2nefz>A%P-jyE*p4}fS=`WXk zE}rXGNnfkISVsT*hfB~ShqV`r^at&C^Rnk@v$8*E-)fii!=Ild`~%F>H!+`tj;m*1$9kWKK|bCOALHb4gr#7eI9Y+CvUX!ova_L zr_p85x_9CVUp7-=4f0^U-9>vj8N89*z{@!aJh%NN@jGp0XPg?!y)#On^8~hpZG-G# z*Vq@Gl1A@@GF5KHsRF`t!F_Jf8lk3x1@_ z`)0m%VJ6#PFg^);w8K{O<=u||7I%)5DC;6lqMSI1vG;CYcG3J=RQ@3ytU6+cI~s`krjh%eSy%ay|G%58|~Zb z?}@s|FF%?aYXHVel>eB@ht7tJpcfm>rPtpdUYvFRg8N7Qqvg-)DE}N={#wfa&c`l4 zdH%=8t>3Ht^0uXeSN-Kh$r2K$dQ&tdo_KBCp-PI-W z8zo~|pgwZjd-D5lq9PO#k~)-F&~!>hGjJWIURP^kM9l<0LZKbF&A&tmfbPFui@7 zvS<&zY47Ou0uQdnie1JpqDO=N%OCEf?x4f!4eaEGJX3!sX~b>V*!70IRQp9`us-OC zV1IiY|NhT&%oBCkS?n_v`!zWJC%D#u^RK{t3w9Ofk|ws~@axa75A8IP*S3an=~k2X zS}@+~0JLatpcdMAGj05RblGo!?efs|PyZ$F%eQ`cVD?qt9ys8tX6(3H<^ZC%@4sT} zq@h=tnM1FtaLf_b8ceCAZ>gYvzEM{bI`Sa?hYAxuvX0p9#n`Kb^f6@v3vVqW{v%ww z|CBP5Gcp|Ae`OhQ7U9Xdnvv}9e`R?5(5uRT8@xJS%)ZL%N$(oI-MQj#$iiH%+rXoM z{1Y9sCw%+PD{HP_3z?%+Cu>jADG=e@qwclxGw;JLT19ysLI+JS>_je7LW&EJ2;f|KC$ z0(c3B7r6?D9bAROOI(G+L=)PRoxk&nKKafS+2e;^m3`yTtA=qM#&sgsiCkxKoyGNG zt`Bp4hU+t2f6Mi^T;JjP4%biPdzGznRi?^QSt>_mWS?{Xt;5c_;MR%fTzKoOb1u3y z`<(N59?o^xt>#N!y_+cOsXr-C%%X{*@SgDn`>(j7z`3G~aZB0par?{!SB?v~N{-67 zs_v_~s_tvKir1^TT3&M%uMcn)ud~7HqhRzQ&qu)#J}Zy0?i09bSN|wJpT_qpTYL}? zgtutl!A~^j56r)H8twSWfrD;sMRpyYU*O*8=eJX@Z}%?PL6^i#zKKP#8{!eJ*bqM% z#azv${4T=hgPq{uKf98+sm}ILvVSo)vb$IzKUUGEnejNj$#n^l=q-iR-A!C4n zA!3h!Q)33Ul`l4253yp(4?aPQ^&*LfeLVL9@-9Qh3LO5c2#ReJP95i&$SYKh@L z@gxJDEC+`waJU%WETimth^iRQ%otIUboYs`rSUo$7}|E4+d zz_-l_0#r{tc!N3d&`svVqFc?0hreS^Jo5j{i67i!PCWX3b0S^-qG9%;=s`?CFV03g zmGv&CQrs`z{lx?&*9;mE5zBpdEwl)hpDezV>Zm$o*Ao*rHjY^yK07tN{30*?_F($rIprg~^xM+Xi@o$))6&1}rQZ@v z-!P{<;-%l5mY(gU&q_-_#Y?{_E&X&a{l>I(m!G-$b$e6maiGng>!hX6FL2YNY3bWt zzU7(~sc<6b7V0I}tV~TWzr;&_GBthvNH6`V)b#E6WPwAQWxO;bW&-*oIKI&y1VR7K z;(ksdhgd=ROPkA`ddA_g``^6xu^sfCYuJNgM*g;^*5=QBYQN$X*mvyyKI}8mBwh3HH4j zr~HNQv_9lC+WY&fOl*1hw6<*@v`={-9Q&h_{5jmt^dzH2`refS)hLtpYi zQGhB9$f()y!s*ZIY+e4f=YAKF3Rb(Hg6;4WpU#NG-lQ3JPd(9k>;(Qs zzb#g0SXx&E+M@PL^z8-P9?N?K=*{k)-m^-fx9pSATU445ejoHJP0B54dr3Rcw=~h@ zmC-uNEhk9t9(++&?^t@XJLuh#LT~oRp!d`Oy*VeLw+wp6enNW762k9;eq{lA%M$-= z=`Dj^w~W?NZaG1Ef0#mVP6xg7Q|Qh481#NNKyUs@=p75a<3Az2V-v#fgMMQJ^o~t@ z)6zQ@dfhTwN4ez$>HS6uz4;yVj!U68|6|bmMA-3a$CK5L&l(TilRqKd;}gVoL-+Uq-QyDjE#2dx+byGYlv_@a?%V*~!nM76 z%p%#*YRlPtzsqaOxsiE$-{+llb5)={?@nvax$n;3d!%|yTPhD~KY|C7;X&mm=DZ zpYO@Q1g^Q^h27G>!OB2o;#fZ?HvQ61*l!h8Cbom`2mLAoJg7`8wLGYV2g!0&-VLKV z_g_m=c(E{r7q!6Ac|x+Yaw7{nco7Q7!>g`5^uO5QfDnGcKbJp`TK<%?7n9mZPp-M) z#ohAfcGj95D{^AhXE_O7KPis{)_ks4!)Hpk~XS$PE-G(QDZLV=kUwtH-O&=e)@Cyx4aYoj$sqcDR;Wm zt(Je~9{;$0V*UX`{2L}7ai79J@7;&!6uqJHfEfkNqPvM{UPWw6Qo#h`_%RjD`e_Xrb z-`CUmM?Rl_m!~AEQp?siUCH0GN7Hm5`F#0X z-HCr=Pr|<(_?H9!a^PPM{L6uVIZ6ISy5ryYlkji6$G`EP0{_Na{{6`EXnY#~+;_Kl z?_B<+mVGQTzDxei?8LwE9sK)hC;p8;3IFopUq1ZHxBmw4{|J7*{yUb{9seeugnyGg z{!RWA_&3?|Z@lHv{1MYo0`Z>Bhy}Orp%eX(l{p%68?B}?u z>|TGzG_`)xgww!0s5teeaJ;LjikQ=c!}!^&e_X=wf~jzkGfJ z_>JIa`0J3zl5Y6v{NMBQ+LQ2e=s&>EqI7;jQ;?s1)A`B!kKkt*euf=>`TXE#7=DHg ze;xd+>4u-t|9gJ6qtm*R&)@Uze=DEA`&+V&Tls{hAU~f2W{Q0B{v-IA0Y5X~X9oPt zfS(!gGb4qc?cMOxtoT1~?@ynEpV5DSpL5dr2~9zM&PeAc?>~Z{+3+(PerChZZ1|ZC zKUsDYkk9rNcKp{#f0~v5=ls0xB>X)8AK>SZPW)V%!q0x4__^|<_?ZJgbKqwV{LF!$ zIq)+lm7lA+;pdb8=lqPEgrEP7F8trN_kDj&YwzaC6n<_2W=ebK{YS`WKK#swpZV}J zAAaV;Pi}+qxwadAKJ|aj&!0nIclxvTAK+(ACw@Ma!p~Wq`1#aF@za5yj>8WoI`Gqh zpFA4#Ix(Yj-YbaR6p0pd?!hM30xjk&$CyzZ8L^sXv2#lPz>KS$@owB(%GHY}TlD0I z9rINm39r_3>;){P<0<%`@r#B9}AJx-Tq%No=I!p;i+P%4iaP63tLfpIKYMtX6w+H0gm2@M#WB5vMo3qV=s)IQA=n7 z3D;Dh4ePPOzt-VDp+k&iTS=i`+1(^Ifro3_V>r{ z_4?-ZI(csUvi4eQueJ8tYw!Keg!c{4-)k){>oHKLk=Po`_Y6s(Mf;mVqT(KJOu4~q4QDb+&7oCz*n#a?kd*R!UwNi$2s3w#HQqiDLYKr zVag6uc9^n>GrTQ4pm~!eA0L?;7tZd9dp3JruqLX?dG9{|SKM=3+;ie5>~b%6t}Z=3 z6ZdS^ThV|2#d+^Oe=F|!C+>4x{w(70E!G{(;+JIkD%TKi55Er#K`+sK4RQB8?;YBg z@~r*L{#=~Hkxd-_P)o`^dY4jS)#^$gXynY2lae!fmu3YUF^emSU7eI=`A!@l?ms

O8oo+{3 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�mbtfD?5O zrzLPwLr#7;Ij2u$ob%n7QBJ->ommAqnLx=RY z3(nP(u^#v5#(f3iz6NpMeE5XccDQbPTvy6+?Y_np_-Wyf!|xzzzA*7#$GyhiZ2WP= zM_KsoiGQi^$M$NiBz_g~Z?o~o5+7yZf4NNM2IZ$x_!YfcXA!@e__J*M3gV+I{I`gI zu<%FqYF$M9TH>E!9_}dD9c(2w* zYJU@5V}y-AocJgU|9avV3xAJZt;L&V;}h?G+}M%!m)iJy5FcgXPb2>4CxJg0@vr&V z1LWg(vGE5JA7$a6MEuu3V%Dqzvj!|w3e=MpN+pA@lh83&-Z)% z_fNv_gZS6{dSc79(l&k{;-f75^~673_`MMS)cz*A#-%oXFXE#t{58Zc7k+o}H&wrl zwo=+$vWXX?l{S8N;-f75M~T0)@Vg=YH_!Gj;g=ErU>m<1@lh830^)Be{7n)6#CM3l zyN$mo@lh83Y~r_`2!1ETzvfpFTkd6B8^06rQ5OE$#BUUSJH)@{R|ojTHhw$eqb&UK z#D7uv8@Fyxf@Z{MT*#pNNmL@COk8 zHsOE2b!(&MHxXO>ue9;MCqBx;?@Ihx!v7ZhZkNkieK!6#_2Pe#jsGq2Q5ODp_j&o@ z4B>yZb!%xiJ^vxLw12LR{}u637XDh|A1VAVwr(xgd|^6tjX&A=Ul1Q<;Xg(*J>Z@gC4Ztb~|YaMUne@c9mg}uTKE~1NbMtL;Njm{11qavhYtO{=bC(?$)i9 z#IGWLt9-xE*7*J|@lh83p~SBf{+syw62F@GjW+(9#79~9!-#*M@Lxmz(fnFwBYs}A z@n0i8%EIqU{Iu|2M*gAp*V8rrX5+t1e3XUXp7@sv|9QkG@tcT$TP{B%&+YE>%k#uX zS@>VxtMUWh?{`U83V-$1t;N6d;8HvS6Yqb&UEiC--I zM-czSuO@z}jsFPoQ5OC*;(vZT_zxleiC;_nE;jx{#79~9ClUX3;V(n{6ThDLU*o%n zKz{JY=Q84>Ec`LVUn%^15dXw)BL2T@{CkLxvhW8If06JP%lJ$4&)#1A*V*`siI1}I zdk}xF@b5zW|K96gWyHVF#=ndBC=37Rd%XVpC*jXW{1e|HzI>n5rvLfGM_KsmiGRHC z=OO-yUq$>&ZTxw}M_Kr5h+i)Jn-KrRuO@z_jeisIQ5OEA#NS!?Hz59rUrYRhZTuUE zkFxL=5PwVIUx)Z7em(JbxACtdKFY$MP5jp5z@LNo>`wE;K3;roYva!$KFY#BoA`~w zuR(lf_cyEgXBqK}ZTuSIqb&UK#D7uvS0X-%?-2iUd|%OKd|pX>l!d<^@&6|L>4;C_ zR}uep8-F_SQ5OCH;@>9xi{ZbQ`b`t%r<(ZkeNvn4znJ(a3%@JzX9<5Q;*;86OZ-JP z{#4?lEd1~8_VU9S!aon~?}I%d`uU=s_;YRi^N5eK@YlNhLFprfe-`}f=Oe76u52Q{ z%+b$R*U0WkDbB93`p1B?=o%=?HCDUV=#t)Bt}z8M+Rw|OP3#PsHDt z`1Qo!!p1+5_$Uj1GV$LN{sj0h_57EhZ2bIyZyMU{0~3gkvhc?df0gi$hJWHa#9wFQ zA5DCeg}(>!?-l;x@K5||;=f?yA5MIfh2MwxDdCTUf8y5@KV##MBRVR}=qq8-En> zQ5OD_#2+I3ec_+@^~68I#^0CtC<}iv@wXBFaQN>}{!upm_qOqe6CY*aUq}2R;qL+e z#CM3_&&J<__$Uj1D)B!%7W~2RPyA})cee2d6CY*apGf=$;qMCn#IGlQ3%-YFGe7J~ ze3XS>LHx&sza#t)Apa;E|L@uOI}#sd;qOZPg~IO-|HOBQzskn%PkfYx-<|l^2!A{H zCw?{Y@3rx_BRFqb&SKh`*EYyTL#4tBHS* zjo*#6RwYrXPp5^~LccSZ{EY~^1y-t_(hjN{E_&b1W=86to<5&5f!oSw%=eHw1%ECXA z`2Q6C#-6QCh>xe*UH z{958)ZR3AMe3XU%FXI0}_+RvFE#ArV(?opvKB>+4`GWW;3%`!|dkOzj_$PiD%Ete( zHvXr?M_Ksy5&!qXZ-#&3R}o*nPinLM&BRAp_-W#I6#hr>PyAZq?_lG9M0}Kme<|_* zGamd8;D2ZGPyEeo{11qavhXWi{-E?b!haWjCS>{Qoip-~x^};(yuO|L; zHvVhGM_Ks2h=0BCUq&7xem(J*+xRaNA7$Zhto8cwG~qwrv$b>=@9$iKvhjbjjsHCH zQ5OEE#6L;+tKpyc4)JH$_^XMJvhZIc{utpu3;)EgCjO~5{Y% z{ELZ?vhX_*e}?df5+7yZf3;BMhX#3`KUMhWVID{P zDwNl$=l$K&vu*tIh>x=H-zEN`!aoc1T;kUf|7;uoEaIaq{AY7yd->!E~Rqi9f)`pGbU^ zg?};ezdREB6VbnjUrqe3HvWmkM_Kq2iT{@HCm?>vPd)L!lkZI^Kjg&c1mdGC{ISG; zO87_PIc9gyPZROi+W1EkA7$YWCjJuPACCB>_Lt#WCjRC7q&C}sIPp;yelOx*FZ^-H z55#wfzud+jM|_lpzws`w|4tMBSokMDRm8v9#ve<3l!gB(@lO(d1>$F4&woAf)%Qtl z{e3HlkFxMzBmNlSkHYvh&f_-`|5RK1M-d-o;jbY6K;iF;{zd$fq2Ay3P#b?=;-f75 zyNKUI_`{K(!8HB1jQH|>Qk(HJocJgUe-80~J_7tb5dVjI{3_!2wej~LKFY#BkNE3_ zKNx<9Urqe>HvVAZqb&Rh#9t%)UGeul%xix=@xR134{iF{mG~$Ne-!Z_75C1ymDK(+T+94@*W36T$J2X&@rpm3_{)X=Q;*g~)c$JXud(reB0kE}{_Ti= zv+%#~(OP_@=ck_dkJ|X(6CY*acOw1_;eQMMULL=R_zP_OZ;6kx@V~ml%MYgt|EnIY z<<$N%T+8^MZR3AMe3XU%F7Xc){ulWB65k>I**5+c#79~9&k}!_@IUR*I*a^N5r4dm z|0(fN7XCfN?<@S~9<6o6uOhB0kE(pFsRI!e0je#IGg(m-yx(kRSZx z9~J&R@K4XDO~il8#=nR7C<}i_;x7>XV)!S18Op~0Q#Sr$;-f75Zp5E0{JY?v_*KMT zV&mUMe3XU%{d|=lRR29&`15zuWYOjh|^Y z{ygHNEd1w*zn}1L!u)~w4$6jql8t{8@lh83L&P5-{2MTS5x<)FV{H5zh>x=H=MlfF z@UMe^;@1;@ppAbW@lh83mBjz_{)Vq9sY@5Py97D{&eD_Ed1?U z{-E^D!oL{#VY96NS(W&w-UrdteTLf)9#+@!_G4ik)Su@rrt6?A*XiJ1r%U=Wxz1Gl z9Y$uaQ-*(CiQ*ZT$0ykFxOJCjKG9KMQ|n z-G1R$6aP#b|19F8Ec~a5KUDZrz{lE;S%<49{!upm6yl>S{H4V2E&R!dBbw(n5q}>W ze=_k=7XF`!Un2a8=*OeH_BZvq+>M_y8-F74Q5OD%#NRLu{1fr_CBB2QiJ?tw{1b_f zvhYtP{u{!d0RO~q>T`wL{%`QzLz{VG0`XB6{sF{)Lik6+e}C-t(ci8#ZFi;1f8WMG zn)oOSe-QC&g?~8wk0$@^E_V6#HvZwnM_KqiiGQu|$H71G9h8m#`)&Mj#79~9zue~a z-wT947XFD}P5c{e{ISGGS@<6l{{-Pzz(4WpiGP`mUqO77h5rii9pR6H|8mcN3ChM# zm5o1&_$UkiG2-tc{C(k{_zv+8vGMmMKFY$sgZNtse>nUTznb_%ZT#WHM_Kq+5&y?S zz~2M@iC<6r-ZuUo#79~9=McY1_=Dl!A^#{F|0Op5VB(`J{9}m!lJIwhf8smD-+=EP z+RP8T5+7yZ?@#=Pg})>G6Th1HZ`k-d5+7yZZ%_Q&h2J0kiC<6rCv5!w#79~9n-RZS z_}jsM1^GwW_^-9`wcNb=S zDH)^uD?g5n-;MYv3;!14ZzB9n;U7%HcZk1>jlU`JQ5OE?#Q)}C@H@dj@vDiym5twt z_$UkikHmjp`0e1I`1Qp95#K!o`maBJ+7TaR;U7l)df{*E-dcKq=cfc^#J}?2WaDo< zn%)B(t@wKq|9;{B)V;Nm_zv-3vhjZ+KFZSm-x2>t;eX$~brJEaiT|*T|2^?h7Jdif zUncx-ySFwHzn=KF+xXuSA7$bH-#jlrR0;np_&<>Rqipj3_ULgGE z;Rj3;pY_DQ(Z+wC_$UkiW8$A6{MGPtu*WY!+5CMkv+-9GA7$acLVQQ~&mun%-ywdL zjsGn1Q5ODV#NS2uPa;1Mznb`m*!WKpA7$a+LHw^M zPuTd2iI1}IHzR(v@b5x?xG>AFKi^}^-?!Grzl-=N3;(~jc=_Q>;m=3>YrZf`{^VWb zS{r{p@lh83zlnd8@aJKC(fl%E%e5}B@#hgAW#RvW`1=U|Cj5P={SIB@1RMV*;-f75 z2Z&!L{2So^Qt$6uO?=13zk&ED3;!14ZzBBb;Gg*Q#NWlnzmE7Q3;%NBe{&%CbKqa| zn}{v`x3cl)5FcgX|IzS^_D#Pp{2DL+lvHNFJMKSe<{Rxg7p*jTLdDeuGvD|hzI%}K z!OdCPSnu{f57f~0P?qZ*Y_5mr)o0{-SK@jXW&a*!VDdFS6uy7osh@u(@lh83?!>=a z_|q|8(R?Ss|EG;Vo%kpVe_P`JMfevZUueE~siJEO#F+4KNayx{OT+p z&-=Tl|C-BB`JU&e5+7yZe}3~%^JePr{7(`7d5BlduO+tJ%M~{MdBjIq_^%WHK;fT- zc%}B&(=|@B@y{YY%EDhs{N02<1^Ghrn}{v#|AUP`h4?57e-ZJw7XIY!t;KpgE}5$0 zQ@I!ZUN-(@;-f75xy1kV0PrVz{jDs(|GkYrk@zSJ|4+pKMEEBn{&oAE0KcP+eoIre(gCw?7XHq} zzf<^!BmRkBOZ;bS{KJWlvhcSg{?)=ChxjLcJ@N0h@y8J#W#PBp zQ5OE+h`)pI_eFeaepP^fppCyT@lh83ZN%SP_`?yOn*aX@yZ`X2>-5h5n2ZyIaiUNs z7HXr1+E^)#Behsqi+-pR3w5wi8!KNIJ#>l-YjI$mI8Y~es1pZj!;f*|LT&W07Atka z!ew#fa-)Z}aiJCp>tf|=qlY@NP#X(tY~zFvo%e4Yfq@AqHx>ecId+@Euw`~4<4 z$sIlaIn?;2m_H4^vi*nQ|J$$2pQ`yB^7F7=>nkyTDtu-8{|Wv-*l*N)4*7)<{!g^` z5Inz)@RjZV7W}`qKUwpG{uEK;$1#60d}aH;3jc@p8+1S8>#Zt%?WnII%6IhN#{35O z%J#2-{{#DzG@nC$2DbbES22GQd}aF=!2gc@dfm@>{scAtEaun4SGNDJ8`JyY_w7&A z{KL<}|8C5m2w&O$-&cHnz4&$eb?JP5&ew~>|5jG%-{>W-clOtdXa9RphkDAc_j0A4 zzFxf6^~R^?+3!K3*{ZzX^J1@OJbY#Q&%mExzgF|QGX4IbsNPll=`p_+zOwzt;8)on zn|?j&=dV(&il2%3W8o{?e*pgRS@LVruU9g#U29CtuYs>@|1S84>{qAvh0Q!_oYWpf z@V=;quWbKj_%GQX95?*$jr{`rw`2a`Jp6oMUfG`lKX3o^xY8A?()YJYxzhha%s&lZ z+0TCo{I&K6#+B}YpTK`E<`2MEw*T3N^gJ)Oe`;LmY4|z#8)N<{_{#R*hkvL2e)S)I z0shLE-w$8e{u}TU`zO@@KTP{y9AExD!tyLM1HUO55E9^Ld@@luWbK5_(l6i)&Gam{#Pki z`coD2kHS~Be>?nr_K&Fl@DupQwFeQrACACRwtoZso%Ro_|L}A055@e$@RjXf34gQw z1L{Bg0{oX^{sH*P_Ai8=v%i1b@b_cB-->nR-ybZ`e?I2#hp%k^vr-pBLoe-x>3};VavJ9)8CD9=*R4)4#1R_|62Q-G(Yfj@aM(+P4JcNKLdY){dUa{{5<^W zF~1$Yvi-;4SJ_`TuJkJW0{l$OUk6{={sZuj-zdLL_Z$2o{4p`V4ZgDdyWk(Pzee-F zE}j3Xhtv5ysXd6`{jdhUvi+Okzhu8v^AA4*|LvIH3SZg&6!>}jt2F=c6ZnOgzY4yx z{Y&7lwcn!oho6Q2T+DBQuWbLbKS|H;a{DVZ|L}A0H^%%G@RjYq5C2a4%QXM+^YB;3 z{AKW!?Y{v(vAt zu|G}o4?he4>X<(bzOwy?;Gg_8`BOFj@N@9T#r&!8mF<56{@eB&HUIGQ@ITf5L-71I z!dJF`EBu1}$(sKmzX03kw;1y$!&kO{9sK9)H)#Ix{6*B*7xNq7E8D*e{zm(gH2;rc z{{JYQ|D7>^5`1O*=fhuVzh3h{JKbz0>51#e&{(AVz_CNgN^8K*GpATg1Pt^Pm z`Ng8{zUl7_TPj*+kTzqAN|Rq#*&y{2VdF#%kZzYKVI_>KL>wa%pVV5 z+5R)|C)lsm{KL<~pC0pT;VavJ41SgUv6_GQ1^AhmKNh~S{RiM5zd?SD<{y3${+O6w z17F$xUGNXtuh#s35A**>dH%~YbW-~dBkqT@=d&8Vvi+Okzhr;#;?foHGw|Pz`GdcO z&;Ng`>`#H8w}1NL(oI8t0^8@S5c5yNSN8K?0)MUjfs0G`;Q6zt@m$OwfUj)-vvukD zU2gx>#ifVg=iqOQ`KRD3+kYSao%Z`LErk z9D%QF{|5Lw?H^YEA4C6@EB!wd^AE#Uwtpr3&Grwd|L_y|FU9-=@RjXf2tQ|kzxoe9 z2R|S4_rq7V|MA-Nepq6^NBxIifWJ28_rO=S{|@|l_V=p)e}euiSNgv^=I@2CZ2vX* z)9rVw|L_y|cgFl~_{#R5ho7;(NBxJNgP+9wJ@A$7KMsG4{oU$6`~v)|WBzXV%Jv_E ze{zQWUFv^3`mbE+|G1dH3%;`bZ@_=sewX?WKY{~B~9;pgBN zWBzvd%J#2=|D648>OcGf{CzQh8+>K^m%-m?f2;bx9{pFY^nYi}-wI#Z{`v4%+V52V zH>7@|T=6%@{7(4F_CNeydOu|CZ&Cl@=iujJ{ucPk_TPj*+kS`o55E9^NzCtnuWbKi z_}ALsr2cPA`%|S{>Ce2FzX`sw{b%4$u-~r!!%yH(kNNHJmF+(UzsmkP^&fr?ekSIx zgRgA=0ri;J6U%Ar%liGg>-VbZwE8D*r{!8{- z)qnU2{I_F%D|}`9Q{d-SO0&2{wr7de<v;d3-H&*{3iIy_TPa&&;Bg+zXSbOuJnI- z%%25c+5T(rr`w;Y{=-k;-x>2~!dJHcJp7FP8R|d$9Q-8a&w#IN|8e+Z>`znw;TPav z9rLHbSGNBU{FB$qpDO>qqW@2%{T~SGIpX{FV0W)qnUI<;wZm9P{hpE8G9@yXpOqwLek)ho6O?i}@4bE8Bk){%reo z>OcHE{3S8J4!*Mem*HP)f4uIW&FOqrDOdV4FXoSjuWbJr_!I2c>i&VBz@HxTYvC)~ ze++(={js`#;OF3HV*Xh8%Jv_Ce|(z!8r=`@3-HIp{2KVm_V0p!$bPl@zXknQuJr$; z_8WrtLp6M5`!~aX$^PI)rF-Bf@ZXO4gSX-H|J%y`6!>}jr!Oi!4L=9J5c5yNSN8K? z0)MUjfs0D-!7spnF6IxwSGNDzBkB2FZvWIpr7Qjv{a3E^e`Cx)1z*|z`|$6y->?3| zPvEbN`Tg*f?Y{v(v42ASho6I=jrk|wE8Bko{?+#T)PMK|__JevAADu|Pr@H(|Csv! zB>Jyh>A&}rg7be2zOwyC;D7on@_W^P_z8UPCk6dp_{#S0gI~0NRQ-pagYW&Mpnnv; zvi;lP@3VhI{fA$G@BO5pe+0g={Ttx#w0~Ir|1PT{fD1}@BO5pzaPG`{g40XbjRI8`}|An_o)By3uk&|{&%yV8QqbQHU)lb3 z@Sn54P5p;ofbadJpuY{ivi-~8Z?wNv{eK$$SFZHm`$<86D|}`9=fhuVzf=8(pTPHi zQqb>&uWbLrHR=73wZBFEho6J*{iLA31-`QVH{s8=-=Y4)FTh_C^E==x+kYAUwe~lu z|9SLZxzc~{Ck3B>6MSX+&%mExzg_)@pTPHiQqXUQuWbJ@_*M4TssHeE@V%cD^w+^x zw*LV9Uw@ zPvCn$Dd@MtSGGR|e%}5n^&fr?zW0-Y{wny&_Ai0I)_#ln55EB4`$<8+1-`QV&vNPc zU2cDc`v2e1f8|R5y`L2HSHM@c|33UX?JraR;V1CDpA__$!B@8b2K>bSQuQBx4!-x3 zg8owY%JyG?f3^L^>OcGfeD5a({l)N=?LP^Boc%@W|1;>na;5*?PYU{r;49mI1pcQ} zI1?oTi9DMI51^or^mF?dSf1mwk^&fr#zW0-YelvV! z`!~SfX@9=@|Cee1Gk>1;-}^~He?EL=`&Yu>Y=7=WrJLX<@V%cD^yk7?wtpe~oc%d^ zf8l50dp{}Y&w;OO|Ko?#`(cUwri)4s!_UF@ep1kHg0F1<9r*L?&(i!1`FYs>{WR|< z1^rp@mF>RR`><`lQsWCeipXp$NNb^e=>Y!``5vL&VGaDAJ3md4euuf{Ra5T_Ai6K z(f%aO|B#=D?dSJ?QqZ3SU)lco@K@Te*Zkx83#j4!B>IJs`}_6qmF<7Hx_mzzEdTz$ z{fU}?_(l0o4gHM(?AAGroQ)+f_@!*W&1C~zt;YE%|HAM zeD5a({qgXX?LPy5g8f>}Kl}u~_mhHtEqrDBkHN39KUVV(KMUXcNkM-sd}aF&z(4*~ z`8AsVAwLJ(^XdJhpkD)D+5TPd581EQ{NwrasNwyjpkEDN+5XM&U$Q?~TY7cKFTnQm zdp{}Y56;Es|8vX!6!>}jr)x{^;rWZG;r*nbe;U5BpZ^m0YwZuzmd@+K{QpHd|K3ju z`UCKl?SIyqp5Nv6Pt}&LfS-Zy{iL9O3cj-a_u=1ZzrVJ06Z{0e_mhHtKYV5TZ@^FN zpQtU}13wGj`$<9n1bk)tFTlUreqU|rVfZ=t-cJhpeejj-KM8-F{bRMIr{U+}dp{}Y zAA_%K{}K3~UL(I(^FQPlV0-?(pA__a;Vav}4}Q`9QO!S|zla*%PYU`+;Vav}9sWN1 zM>PLCF#pe`^Y8tnpnn9uvi%$2@3end^AA4*-}^~H|1f-I`&Yu>Z2y4ff5=Z@yZ_!# z3i=1&E8D*ie$M`W%|D($iyGcf3i|uuE8GA0JL&zf#D0(FAASzL_mhHt4}4|&@4%mD zf3M~rejdK}lY;(U_{#QQgFoGVx8@&y0lxQ>f_^uAW&6($`%^Y#?C;U@4}JZgs7{ss zJB~&DZ{=$szt1<8>!kl3$8)~U+JidEuCr;l&IKDryUuQ%gQwE}PD#~I<%Vlq6?+}K z;Vau;1^=T)`MY!u;Ah}p6!Uk%SGKL-2j*g0F0U4*XZ_Z`V11 zpN0Q!%-;@Q+5S}c&)VOna{xaF|Mi%^4ZgDdiSXCk->Nx+pNGFA=5K|sY`+@*gZ4Xh z4&WEyKN0gg;Vaue@lbkC+--l0{vCi{gugoGZ-K9D|1kVp?00DXpT_)OlFt9VF~0-8 zvi&{qud%;L^AA4*|F)RF3BI!Zt?)0k->&(GpTNI9=C{LFw!aSkDEsR)|M0W$FOT`_ z;49l-0sn(vlHaEJho6H#I_9^*SGKP%?`F}R%x4>7nfBFy8 z^LxMj6`FtenKQn=&;RO%_2>Er&-yw43i!(QkDc*%_;Z3g>@U;&!%yHp81t9GSGK<& z{*CsRYX0G8;olwem%>-JzYG3V_7`jZ;pgDr67v_sSGKK>-L*9|64Ktb>;al z&*ul)qZn~NoIRh-@RjY)fWO23e9b@n4E%#Je?EL=`;*{5VSldXAASP=#h5=AzOwzX z@K@WPqxpxQh5uB{p95dn{;5^v`=NY(@3r5g`G=o_|7gr_g0F1+R3f{KGH6za!?)gs*IWJN(P-&(QqCFT%eu=FfnyY=0B{(e|fl{{I{1 z|I&2+uZsE8;49l-1^=U8ls{GT4?hF{qL@DwzOwyA@ZYlEsQHJV!2d*h4#D%=2w&O$ z9Qd!;pRDltbemDYO+5Qap zJM16U`wKsTe=z1BhOcaY68tCZA5j0{XW_pX^AEsRwm%mBYWw?j|G>||e=6qhhp%k^ z)Pv>wVZFb9zt?`xmrGB>&!6%2{lQl^JbJFb%l)}A=I?>8Y=0B{(e`(1 z{^4ifUlsFr!&kPy3jRmGAb*$UAASP=qL{x6zOwyA@ZYlErTK@Sh5w2697deqv*)J^ zzOwx}@L#dNUGon=2mjreza74^{i*PuwZBdC4?hq8^_ag6zOwy^@Ymbls`-asfWIT= zZ-uXHzZ(97_B%EI@Qd)Di20rHmF=HsN$-cd?QhZi{|x5;`|13zj`>^QE89N|{}%fl znt%8i`1i*A4*1IU_rSl#{wB>o`~?1OF@F<$W&2y8t=e)}sl|L_y|>tp^3_{#Q=!N0@)GR;5yEc^#!{xbN=_V>fT(f(4+ zKl~j0yJP-R_{#Qo!N1D>V$DDNJp5Z?{$lvb_P4;l$o?YDKl}pxYhwN)_{#Rz!2hH{ z{zA<^{385IWBx+;%J!GSf7kv3&HvA0{(q3p|EQS10KT&Q`S4%2->mtEpMn2@_9%k) zLoh(4?lr_Fy_yPuWWx3{3qQ|Hha<1HQ8TP4GwCpQibTpMif>%%28d+5Rf{ zAN{=ishWTI3H*y<{#5wN_7}l_%YLKg2Yw#@C)#rep5I3J%J%2Lf5rY}%@6zn{C8vi zWcbSVr^0{MeuL%*ei8obF~0%6vi*th*V~_@_xF`G>F3+Z`h2qd{o{_9KMB6F{c89R z+OOCB13!WP#JT?Zv%Y_?hp%k^#D6*6apTb63Ao$-M7_W8b7y>ge(==|t7HB|_{#PV z!@tFTo%#>I0RP^YUk6{={vP<(*dMR{zl#1VtN-Qazb)pEhp%jZEBs6C*Q)>U6ZqH1 z{95?R_SeB5Wq+*t4?hS0@|ZsszOwxl@ISaxevSGMzW{%9%&&p3Y<~g#gZ8V{{{s52 zT59GRzjCGj>tp^Y_{#Q= z!N0?Pzxoe9f&XC4?}x8!e?R;i?VnKp;pgDr9rI7XSGK}&mHuB7^N+z-w!a4cCqE~@SN(^dz`r!+_rh1UzZCwv_K&Ln@N@7- z#r&i2mF>@m|GNDn>OcGf{13E85xgIcz*n|E1O5*Cht>br(0}Dh{}0Ce!|;{uPlEr1 z{R8Sh`~?1sG5-L3W&2~{ueQHm{fD1}|5VK14`12-spaYYaIgIy^&fr#{-ZI!2fniX zqwsIDzgPYLYxG~a(*OHo{$BXX_V>cS-hQ|G4?lr_N6hbruWWxi{LAg{QUBrR;NKYY z_rO=SzX|?m`@7YD_yzb^#r)mymF=&B|IsA*yVU<4^k2Es|BGV&F8Ip!7r}qaewX?W zKY{;=_8Wrdw+p_q{WIOd-S)Sr|L}A0SI7J< z@RjW!hJTCw4)q^?0sg%)zXQIq{XOunvA;?E|6l08a;5*b#r#e1mF;hZf2sX;^&fr$ z|N5BU4qw^+I{2gPuT%fw=ipx+^Vh*ww!Z@Y2O0To>OcGfeD5a(&u<%iW%~=@AGE(l z{ojZFD_8pO{iLA32EMZWS@2)9->Uw@PvCn$Dd@MtSGGSH{!{i>ssHeE@V%cD^jE=G zwm%;JqxM_WfA|IX-cJhpE%24?pT0jmzxUf;q5khj|CLt{?eTj*iGF_M-w9X&U)lb# zGycKy@BiChrvAfE;CnwQ=r4n>Y=1xe8|^Pu|KaE0dp{}YFNLpce;53#>@QaT;TPb0 zKPl)hhOcaY3;c`hFH-;i=1l*q^uLwf`}cFapA_^L!B@7w2L2~k$X}@b5BW9|)bM^% z&|e5&+5S@a@7iCW{=?6~_kL2)UjSd({(Sha+izC?;TPb0KPl)p!&kOH1O5*C^VR=1 zF#pPx_rUu}L4Q7cW&4xhKVg5a`VT*W@BO5pKNr5T{ju;@+n=NU!_UF@ep1k%17F$x zsb%H+p?rStwcn)v!!N-1ep1kHg0F1`zwz;pgCc zKPl)>hOcaYD*R{dH>m&c3-G<46!aV5E8Cw4f4%)l>is(9+5T4em)fsY|KTU_y`L2HYvC)~Uk87b{jusl z{2YAmCk6en@RjYafd4_g{2KKiegVGslY)K?d}aF!;2*SKt^OZE|CKBK_kL2)uZFK| ze-``~?GJvbbPxOlzW0-Y{@`!o^Z(y0`;*~6W&iY-N>9Vj!S{Yr&_4}d+0Q?I*q^fD zQTqd5DxG)XncqLZ;`jBx`a2W;I<9~^e_pPW{+)?)zD^%N9c9-k-B&rsQ#Sm8>zw*h z>ESP*sZ({&nZIXIc^_P_sCs`Kt8)rY{qs^iyFbvS*`U2A!) zPCx1>yUuHU`-;omZRBydKv{ zQ0LcTb^1_8*>yGy*STQB7hUI=>fr0(Ec~A@`#0`XFH7f*9#uN${XYg@+5WeO{V5y% zYNO{FMdx7@cnu&jJ<|l)KGSfyN7FBu;ESDII7q1zj4-;D>L@7b|HdimNMpcLDapSGNDbe=gr4JN&)=UG{s_fA|Uf zhhlyYd}aFw;ooe3ulf%^2mc!}e=mGx`!B+uV!vDchhKnyYs~M4uWbJ*_?OtMD%e@6Z~_5bhDf8|R5FNyi<;49m|7ydi;+th#f3H;Br zs}MZDZSa-t-v<9R`)kyH_&NCR$NV+$mF-^-|9ShZ>OcGf{5N8LD|}`9m&1SD{wnqV zZS-Hc(*GA?{wny&_D92i$bO6Z4?ltbWXx}YuWbLLCF%X}4f`w9fA~50kHq{H@RjYq z1^-t2%hZ4P1^D;H{AKW!?Y{#5I{Qo2|D))?a;5*b$NZ)6mF+(Z|1$fF)qnU2{2OBa zV))AT*TX;G{v!1seh&VXF@F(!W&01p|8S!Gh3Y^20{jbO{zCZ5_V0%Oru_x#|No2r zD_8pev34PX_rn7C%Jy%8|FZpN^&fr$|DBlM3}4y)HSnLYKVSWapM(Ee%%2Zm+5V;Q zAG1GK{fA$G|9s4!3t!p(DEJT9pQHZ2gZ?X5`u}*$p95dn{s;dly&vwf-=zM-PvAck z^PAu++dl~ZX8W_$fA~50--!9M;49mI5&jhWGu40i1^Bnd{F(5T?LP(o68kgM|9?RL zl`H+fF6PgGuWbKO_@7OXKTZ9IpTNH?=1+sKZ2x}v@7tfM{=?6~KR@PAg|BS?4)|}_ zZ&d%`7vO)WU5McQ&P-??wNWEB${n=1+#NZ2v0wPug!#|KTU_Uyk_= z@RjXf1pg8Hlhl9sIrz`S{7LYY?SFD_`TVZ;_wV=FuUG%!7tZ+l{{E{Q9y{0Han|Pp z_3)MLzYG6%`xEt9=DTP5U-e$O_hs9kFFg?RC&E{@|2q5|?APi29r80H{JUa)9eic` zJK$ewfBct9Hx2p82><4oKOVla{U_jGXunqTGvsGS_)}tjEqrDBtKonA)AGmaGu|OT zH^RRp=8uK1Z2w;P@7S-=d=B~f5&mb|RTy!8&z_$e_{#Qgga4ZS>MxaE9r6n!{P$yi zHGF0J*Ta9_{@~csdqaM4g#Sj&ADn}q70fC7m&1SD{^_x$^NP5Cj-_Ydg_wUDzOtWx zH2jC`4~#8c0Y3x($(TO?U)lagi_`nz8}?6)E!_k^f&WO%KLuae{#)>GwckIsbPxP2 z{QF{lKYV5TufV^~{)w@rhvDbo-yZW%z*n~aEd0yt_l+$*4L=Y6hM3<6U)lb8_~+X{ zruq5Dq5Jdwbas4yUK#U`!B@8bAp8$6mEWuR8S*nD{0n1#FMMVDcf)_v{!z`(ke`h3 zKh`cp@P0T7U)laG@L#rnMDsJ`XGi$&#QY=hmF-^x{~7y-H9tdsZiN3@%s&iY+5V;Q zAG3cz^E2e>0fc^brORo<3g%SSaF@HaNW&0oeetJLLWxq%F=a63< z;Xf4fd*CbEKM4P3`+GJ2KgRvpm!5%d#QeSRmF>R>e~SHX%|HAM{99vwH+*ILPr<*$ z{vORg`~?1WF@FzyW&4l9|Ex~_Zp}aZEd0x2{%-in_V0)PzWrUAfA~50=g0hA@RjY~ z0sjsAU7CORdH5e{7b18+bir4)e~Gin!!N*pGv;rHuWbJ+_)ps3rum0og#U8P z-v(dV{zdQ~vA_{#R*g@3#K zEt-G$3H%3Q{ucPk_Fsp8gZ&Q8Km08GyJCI^d}aGP;9qHflja|O4*tzCe-nIV`%l2X z(0;q-AATPGl$hTRU)lcZVSmbokG~>+o%{#S{H{VaJN!Ey!{38d9ba>3e7Vk9ze{rV z*Xip}N7;3Lzfxz^j15O!r|sN2$7&wjSv`8xkM#ZaaJ@wJ2DHQQUd@gC-G#I3wV|G} z>&-^JZr59LZoNr&uRb)gUQYFn#_Fv>J!RMXCDhyMdadWyn|1HG^$M!j9jn)hddjXh zu2N6mm$$jzDxFJN=Z!k^yFZx|>ABx#zdF#rRq&PVfBJjrxnE|#Mdt>7_Kd&Y-}kql z>#slS`~DXA%Jz%$FCY3F0nPSTs9*5&@LOX33i!(Q_rafOf0^!G_(k{&WBxMu%Jz4{ zZ?L~q_wGNR>3`LS<=&Tjo}Y#AmF>@i-(!D)?%g3jH^T3W z`3vAH+n)}<%YL)wbI8w+@DIfNX86kXGw?g?&)3%-Lw;d|zdPp7hp%jZ4E$F6b2a}% zesP4~8T04DSGIq0QRVzj*|6CD9L@jG=OUSw;eR)V&p_2jYYsh9u5;GE8)v`Ib5KXw zb>2dqTV1C~=O9ogqdH4tb(&B|*>(O0>P&T=Svn7aI*IE1R;yUtqF8T={LnW6I$sFPEj%VKqAppLTZ+>bi%yUsM7lR%xk>Qu+- zOhX-I*ZCdP+3z}2bzTB>3aax@+KqUxIxufjQAgQz{sZd#ch_muxe3%Ms?LE}okrAA zcAX6Bbhyss^!!|*^Hctv*MB|x-;oz$bta>Zvg?dSorhefAw55pI++o5w#4c*ppLTZ z{7W{y4;H!3r1bn$>LerTJRGYt33ZfR=YONlZ@5l zXJUGODs^%r>f9QuGZA%^UFRv(xx{tq((_ZPlOIuMYOGEj>L|O;cTwl`c-0x7o}Wsc z!iYLQ9jh}Qb(CG_Kcmiju2Y+ypGuwLh&qGXQ3#&XTGUZ?oq4F!<2qw?euh3*`rLni zPOdrheyq+|)KPYw>rv-<*QwF@3Dn7`&i+`P8q`sCou5UWO|Da|^Ao6(sLp?n)u~1u zW!L!v>U`UE2FDD49{PEG%c@RCtj^$U{9I#pxz6!>()(bc>zp1l{JH4o)yb*OL$Nxi zQAgRY=OF6b>^cKuhCd(uygGT+Srn@?fI7;q^H-=d*>z5h8UCE~^Xe2-=Qm-;I|T%9*U6#Iz&O=8F=qJuRL*JDsk8t6xg=KS1nMZe z&b_Gfj_dS|89qOiI++o5PHUGTcpvnkjeeI=$)nsnp4isM8ax(~COFt}_93+Fj>pdVVT(awFl|zox6wj{r&yyrV({=BX|CfppLTZ{P^zjeQM0u*xX$79{8Z``M%4Lstj=N7 zQFfibL7kgi=RkUXDs_q@>MV@aIeISCwl$dHHU7F)!C0a z%C7SS>RjkLJvu*uIvLfO9IMlVI?Ar|9n?8>vFhyA`3clXROjMYoxP}|>^i@PI)Cpv z-8w&kI$6~j&|U=ZgLCGs8+DXjXEy3|yUre+pFo|Q>bw)Hvj=sQUFRCqdB$~i>-+@j zC*WL)G4Y?d#p|u z>L|NT5p|kfXM1{nD(AH7m+JY4&Wrsl{G%~{DST!7zclPm*|63A;`IFj>wNCLqIy@lUg%z#i+akg_h6--?v)R} zta@|wbq&rFXKz8TcP-KO%VUo8T+kzXkrw_GhK@ zT)tP}zZ3Ik!B@6_4g6>9&(zm1c>XN>*JA!m_{#P#9rmYec+CEc^!*;bS5U*RX?wX& z;9i-5I?Ar|lmBPv+-t5@xX!fnUa9=8kIL_7=&b1b_^)m#_wQ4kf7d&Et`45{^Z#k6 zr|f#gGxc_iQoUx^n|f}&%I{~eURL#1#Oh5&J!RMX>qpTn=KpgO;M zZXeHnU5%)t>^gs0siW6*h3iaC>s0z!`8^Q6uA=JQ5PMydQBT?R)>rE3e4g)m4f=Oe z*6_dkr_1NF{JO3zzn-(s=h?5P0lu>R2jPEsq5MgDJ@7N|FO2z<;49m|8~&U2>vccl z{3P%{*8anY^MCg9*TYw~e+&GV?N8MCfuDu{PRySOU)laO6<_c7GxqCr{)c{ls`7q+ z?z#E*HHThxz0kR-Lp^2J`zh4>p6iW2x8CQT8`XOzR&PA&DZAb$3(EJx4u5WUpX=4? z{U3UL_vrV-{Bug*13CGXd0toU<5~C5+3!;=>L|O;KcLQh*BP6>uFpN6s`t%Uow2B+ z>^lFmQb+ICuewf6TIal>zcqA|z7Npf$oWwbugR~``$@s~s|NLyUGLdSJ)O_XT(4T^ zQ||Ej{4DL8_mhJ2T@7E^{(AW5+aJ83bOrnjeD5a({lVYB&vAaE>^}(q!!OA{eL?A_ z{`C11_})(n`lsP5`}yyN|EB$c3rhFE&%*b9QqUiOuWbJo_%GW(bwTNA^d|@3`$<9n z6ntg-*9`kpHaug$|ANxPL(h-zkB9$VNq(Zw|H^d&=c6BWlwId5sI$&>PUwC9_L;By zKd(+!b^an&=LG5~yUxGgnV$D=x=!B(rB{dQ41c{LyK>fjF4|*t`cOyNb&9Cd>^jHN z*YmmOT{Rzw)j5Vb%C7TzrH;<~4X)FBZk=-f&U_y}{5};`?{{40Z z`xUNt^n%iPnCGg&w0Ad^Ur*rQAE?SCKs1@@2V^}x@-|Am-;1irHUKZO6UW91)C z=ehj#9{h`A{$cpa_J0rl-`hW+^N8oq!Y^qbB6uDTz*n~ao5TK;4X@hYpT6IfbCN?1 zzoy=DoxpkAk2=b(bM0`Q3pQ+Xou0Ig&BD+9(eN4RiM@^<_{#Ptz;Cy|SNG!3-}o!P z4_BssSIplFU)g>Y{1*G&dLMq~%za`%3%?`gcf(hZ$(`!B(7w7*O5FZ>MrxiNnid}aH2 z_;vQX^zSPC1pc&`-vwXU{#y8hW8`nw{J_t`uaEiL;Vau;4!_U-Hr*5ObMR|o{x@0k@C)$kVty-pW&2Cu_u5~j z`G;SGKdAkN5$E^p`B?>D+5SBEJ@#AF|7+6u&noL{)bf1x#rzid%J!$j@3Ox_=WBE7 z7k-fX2V(vT_{#P(@H^};)A@p5gugrHFN3dae+>Lq`%87c;8%5|&)*sIm%>-Jf3mrJ zKa|h!V*87AzTjuzdp{}o{w{{EZ2xWebL}tE`wKsT@BO5pzX-mv{Q~@H_801W!Oz0? zep1k12w&O$bMWi!FVOjdpM&rHq@ce5zOwy|@N4Wh>wLk_!}oqt&~JvXY=0&E{?YR1 zYyP)j{^5H+Dd^9KuWUaH|A_s$nt%93_})(n`g7qc+n)`;+x{HQKm4jE()ss(QqZ3R zU)lb(@VD7-()`2E!1sPq&~JjTY<~j$cKfq5|L_y|-cJhpv*0V+uY%uVf2QUieipv> zlY;(C_{#Q=|4w>8EVMsE^AA4<-}^~He+GPI`-k8+*`KEQho6V<{iL8j4ZgDdm*6+r zpQ`!)Q_Mg7xiNn#d}aH2_;vOhHUIF7@TbN6M)=D1*TNsHkw01U55MZart@DP^C!bs zw!a*HpZx~SKl}{*nwZ}JU)lbh@DJFZr1^)R!0*@IMDYEc1Yg;H0)Mytdd)xlEc_!e zzaGA_{j1@3+MlTTho6Jr9rGu`SGGS6ew+O|%|HA+{B1G64!*MePj64p?=t)2HUCdy z{^7UB{PFOW?HA!U+ppF9!!N>biTSngmF@3?KhyqLJ^yzf8UFmCYV{+-Umq@v`D5WL z+usSl!G4XNAASaYQ_Qb{uWWxa{960fI=}D}_})(n&VMz0W&1h!17DOsIJ$HX{4D&s zm_K+6er|9}*KQOxVH2ggLzL-A%U)lb2 z_+9o-jV`?kzX1P0%s&NR*?tCohyDK1rT5?$;qQ+5{qU9TkAdH6|HSChd2N{ghtv7* zjQJ}GuVa-4M0{q&Te;B^9{Ve<=_77lg@vA%-;@Q+5U3)efGC${^4if*Tnp7@RjY~3IBlot(t%M3H*NTK?LuIt?-rY zC-8UM@6`Om&%!?v^E=@y+rJuqr~NIOfA~50-cJfX{}%Yl_Q%0*v)`flho6VPE#`N? zSGND@y!8Aov%g9655EAvJ?3wMuWY{vzuA7f<{y3$eoM@6hp%jZAN-m2*J=LOV*dXq zo&SX~e;s^f`#a$`*l*MP!_UBPiurBumF;haUu%Dj<{y3nzcJ>ofv;>o2Y;Yieyipm zeinXR%x{ISY<~&-Ui+&w|L}A02eq#doc~qumF>@i-($Z;^AA4{zc1#uz*n|E9e$Vn z6`Fte1^5SI{tEcY_A~H1>@U;&!!N?$9rKsLSGGR}eyjbZn*Vi}|3}jK?~M6N;Vaue z`CIAzu-N`$%|HAMeD5a(-`~aXmF>R`f3E#Snt%8S{ADqJ5qxF)1^CnKFVy_Q&%$qx z`3vDI+kXyzz5NB6fA~50Gh_Y&_{#P-!mqL4toetZhu;wMo8c?lUkSgzO8$J!Kl}px z+L%8dzOwx+{3G_~YJUD0^Qo+#-<7{UAJCpdaDL{(SGGSJez*NOdVgS z+W#W_juC!#O)`GucRzH#Vp3be-j8Ss_uAA;Xxf11u0 z{4D&%F@G9-W&1C|Z?r#E^Eo^1e;)qam_HT1vi&^#I{S_Czn=O9_|sy3BYb81YvB)` zCx5cuUp#*ietpcJ3}4y)a`=7r8}$Cdulkep{jG`l4e*ui-wFSK{Yg5%GAq9~oxtzc z-UIK4bLMjrd}aFy{N48Jb-%&S!#@)9>)|WgzZ!n0{fYYby$SDcd)lAwm_HG|vi))J z+w9lr{kxrDdyL}SGK zzOtWx9{e8r12v`h;1}Tc#ry&I%J!$j@3McYrgX(d^k2Es{{u1q6ntg-8TcLc`_+H= z3H;qLzaPG`{W0)c?VnKp;pgCY#{3iTmF=JWdU`)Bw%@1z!!N*Zi}`)R`f3E#w z>i;J6U%Ar%WikI4d}aFu_|xq7s{im4_{}lD7rwIn=it}dKdS!2&%vJ=^N+$;w!aa6 zjr}9)Kl}pxhM0c@zOwz5@cRc#`ut!0|33P!Ti z?}r2MmF>@l-)(=t`VT(`zc=RZhp%k^TKL=S_o)By3-Ehleh++Q`xD@|+uy7HKaTz@ zSNh)-^Y_A6wqFIm#eTQ?4?lt55%as@E89PQYkEH{w7*CFho6Jr8uRzSSGIo$ev|#( z>OcGf{KYYUH+*ILFTroLzf1l90s608>HplAzYD&y{XG0S`(5fk`~?2AnBN6o+5TGi zgFlhKUHyljgI^!>x5HPqzZ`y_{cY+$`~v)%n7<9avi&>ZAF#hw{qI2kl`H-4*ZxHC ze%K0M*?t0lxBX7_AASP=NX+kquWbKn_?`B*sQ>VD@VjIF7Wm5c$H8y2-=Y4)FTnSH zQm{WA@RjX<`kU$bU1ooi`u_y_udM#-`+NQV|GECbvwpt63BI!Z;u(KO`S<_rx2yl~ z6Zqaw8u9#R`|a?R?eBv>)BZa3AASzL_mhJDI{3==cfxP5-=_YXQUBo=;CnwQ=(oUEwm%(ym;Dv$|7P@Gxzc~{Ck6c#@RjXn;CI+x zrvAfE;CnwQ=r4n>Y<~>=R{KlUfA~50-cJhpOW`ZqKRKs-Ka|h!V*88LfA|IX-cJhp zi{UHVe;fW>`-{~7E$F{;rT^Yf3i^xSE88!?pJsod`VT*W@BO5pzYxB%{paA<+h3sm z!_UF@ep1k10AJbuM))=Mo7I2#1^C`i3i{3PmF=&D-~aFO=d1sJivBBC`tSXupg$kJ zvi&UlBlhR2|L_y|-cJhpbKxu7pAEm;{+yc9!%wEqpH;3rzxR`Z{v7zq_OFG%&3;o& z=~ei7_})(n`c3ea?N5N;Zhw~g^JnSvC(4!Q_kL2)p9Nppeii%{`!n_azW)8;&sVFI zE57%Wg8oeS%Jz@XPVa|>_Gjq%;V1CDpA__Gz*n|^2!50OX*yrN6!fRTSGNBW z{6_mzb-v&i;CnwQ=ud^OY(Edb&VHl%|G&_GmHvA_Dd-P=4WIvit?Vy>-)sN$7fbiRPvCn$Dd?Yuuk7ca2fxSuz!ytT z!_UF@ep1jMfUj(SI{YsCr@mNv4}Jl@_mhJDDfr6vGw?g?_pASJp#RF1{(C=6)PMN7Grqn*(C`1B>+d-0^MOA2 z%J$!eKiB>-_2(e^qpbdveeWlYc>c5fWAK&j7vN8`->d$>PvCn$Dd_jYSGNBg{CfLG z)gSmd_})(n`bXg_+usPk#{Ln_C;S3@?dfG!1sPq&_4iQ+5T+!-S+pZ|L}A0y`L2H_rq7Ve=YoN_IuQS_yzdh zPYU`y@RjXPfZuL^ulj!o{a3E^-}^~He=mGx`&IB;?02jG@DupnPYU|o@RjW!Z%Xfn zh4%NT|L}A0y`L2H_rO=Se+Yh){oU$6`~rOMCk6f8@RjYq1i#V#F7^K~`mbE+zxR`Z z{x0~+_Ve)T?02dE@DupnPYU{7@RjYag+KU-{O$7pF@63-x$^wpPYU|m;Vau;4!_U- zHod>_bMU>N6!f>jSGIpA`~&v4>ivaZfbadJpuZKqvi$`9Zu^~jf8S60Q>9$#kN1;; zekXio`&Yy7w7*6Dho8Xrep1li0${&Vo_?JrRO;pgCcKPl)hfUj(SBm5fs&FVk=0(|c$1^s6D%Jx^n z@BcUX^VR?3=)ZEM|K3ju`t#u{+t0#3Vt=ms4?ltL{iL8j7rwIn+3>sV&r$#3=iqxk zDd^9EuWbKX_}lC^ssHc`@V%cD^qb%-+n)fx-To}~{{;H4Tjk@tiYetQ_?$}KD%Jz@{`st2$zclKj^6&rKpP~N4&zOX!1sPq&~JpVY=15M!H?xnR{!DW;CnwQ=ud{PY=1fYKKl*oKl}oG z?)|WgzZ!n0 z{fX*7{2YAmCk6e9@RjY4gWqPqPW^{pfbadJpkD`H+5V@q((}8_{`fEI@4lz~&nQ>= z@BO5pKOVla{UZEk`?X)x-%U^bEPU@L1^rt1%J%ocpJ{)r<_G&(dHCK>3i@N=E8E`* zzrlWu`j6)?!1sPq(6527Y=1NSTKm;{{*TiBR4G^b@BO5pUkzW`eh&V?|CK*@e(4_g z34HG-1^vOB@%jJFWq%3$Ui+udFFg%E2jBZiLH{&-Wk3Hs_&xRq&M&-q zYX8Lfr7KRR&tIind4BIF1^pB7mF=HQ()(et{XWeP`~<%DlY)L9d}aG@!=G#anBHIb z1^C`i3i`+3E88!?pJu;T{W*pHC|CO9{iLAZ3t!p(bMWi!A60+gC-A+W6!ee6SGKOcGfeD5a({loB;?PuX1v424Q|G((Ja;5*? zPYU`6;49mo4Zqv|e)S)I0^j>dL4QAdW&78{-)6r@{fD1}@BO5p-veLS{sj2#_V=p) z@C)$0pA_`>!dJFm1;539xBCAv`mbE+zxR`Zem8t&`^Rre?}vr<_ncpP757^L-}^~H ze-C_R`-k8++25`Ec}{wNX5o83Dd_KpuWbJ%_>J~=sXuuB9DMI51^r#{mF?%@*V*sV z^J70f58wMqLB9*Wvi-I22T#i1etzjD_yzdhPYU|m;Vau;4!_U-Hod>|)BaceTRK19 zPYU|m;49m|6aE4FTQ&c;rG5s!_mhJDR`|;H6ZpIBck2A&`4jlwPYU{-@RjXf4ZqX= z7TrHf9v}Ywx-5L}Ck6d2@RjY4gWqPqL(ea>vLBs;@BO5p-vM9Q{--yl=XaU?P3k}V zg7W1<`}^KcqMwZX`v9BZE88!g@eh`N|KEPQ&euTt{8h>o-}^~Hza74^{eAFf+Fz&s z!%yIQKPl+1gRg9VC;SHcZR$V#9DMI51^qVo%Jw(IueHBM{fA$G@BO5pzXrat{T%#( zf0f^={(O@5KT)pq-}^~HzZJf+{Uz{w?XS}PhOggp@V%cD^jE=Gwm%PkkNpLq`%87c;Ah}_KPl)hg|BS?XW@H4Dd;bPuWY{nf13S;nosyS_{}kYA$(=~&%v*^zd-i`{5*W`Ck3B> z0eofq8{ya3Z`ORmFTnSHQqXUPuWWxM{Qi&R&)59}zX;#^NkM-;d}aGt_($x|)%-tz z`CpdKzxR`Z{#^LV_GiQIwm(Pn4?hFn`$<864t!<%*TUasze)2CKY{Q4q@dpfU)lZy z`0e&*Y5w77;d?(R=+A<$Y`+SAi~X6JfA~50-cJhpGvO=SKmKd!{jkvf49!3MJbdpb z1^pTDmF*vb-(-K9<{y3mzW0-Y{xtZ?_FsbEXn(5aAAS+O_mhJDRQSsF^YH8JH){UB zh55ffoqz8q1^q_&%J$d7AMBSuS@RD+1K;~eL4PuQW&6wF_t|gI{KHS+dp{}YH^5i6 ze<%C{_9ton;b-A{KPl)>g0E~pfxp{+z2+Z&4!-x3f_^=GW&2md@3cQr^AA4{-}^~H zeR`f3E#wUnt!JKMUXcNh6;BZ2uU1 zW%~vA)9m+Z{^94~dp{}Y_rh1U{~Y{!`$skZ@bmD!pA__u!dJGx5q^#RBbtBs1^C`i z3i?OjE8AZQzyCw|hc*B3i}1al6!Z_nSGJ#pf5iR)&HuO4`K($|p8xXvct0uVAAqlH ze>VJX`};Nj@H6nepA_`>!&kO{E&Ofvdo=&>6Zqaw3i>_pmF-V}-)?`e<{y3*zW0-Y z{$BXX_N(Bx*zeZ-!_UF@ep1lyhOcb@_>A;^SZIHb<{y3@zW0-Y{vP* z_SeE6{Ac;wHUIE4@V%cD^tZ!Tw!a*HpZ#r`fA|S}?`G;SG@BO5pzX`sw{UZEk`|XdL4PrPW&3Z#pKE`S<{y3* zzW0-Y{v!Cw_6zW**AHUIF7@V%cD^ykA@wx5N6#Qt2(|3jGnmURBTpA_`x z!dJFG8-BO_Ihud?8Tj5$3i@;4E8D*o{xg3mtNpg$G9viNKE^vg_Pl zsWWQEhJCIxDXrt4m0#27Q9sI#=v|-oE8eTQ@&CVflTb_9wWgz1muuCZUF%`JF1-&w z@_Um*y}ubz>n6QVS7=uzqg|Ptc4dn7zh0^uHLCQ5QKNp!b&l!(uCLTuJ!Ql9U2CGw z`j^klLQelX@_ovy-cHx44$Q+uye4JWIv;gbx=vkM=V8}V5B+)ycs)eQi*vg@3f zRyq4qHr(wx<8`--(+e9d)g(>nRTJX0qpn=}4< zu{yP=qwG4nQRf$3XKY$0`}~rCHXb^j{w4{BW# zt5btI%C55pbw2q(b*j_X^R!-1rA`rbzA~cDIdfe-Vy^Xn|EJ+P7i{_CF@0}-q8*3e9XdD*KVz6xejUFB|F7+zt}fjKKY{<_n133+vitO_@PBB3pjtb+ z>GNmd|82}4fUj)-3iv;;f2z9lF#H_+zl!;%;49m|0RDIE_g8BNIDP&+{6CBN{qU9T z|Ld<*&iMr!e&7Cy>e8$53-G@i^H0E6w*U9=ziz*;T06$+^B3X&LCo)iuWbKS_`hQR zSas>Ve@gwT_tW|OotS?NzOwzlfd8}hdo};?Gw^>c=J&!^w!Z=X7wsR_{KHS+|9s3p z3SZg&x8eUwpZp`5fB0GWUyk`l;49m|2mb%De^~PmKL`KcwBr!G9}dG;w*MRO|A+kp znt%9t`2P^|55QNp|5f;ZZhyb#AASM;U&s9Y@RjZVH2goY-=q15Uxfd|nBN0m+5UO( zzh!@~=Knb6|HtY4{~+e?g|BS?pRP;qhyQ55Tk{V;1OGcQzZ<@?{lA0%HT!!s|L_y| zzaR7Wz*n~aBly2$f4Alzeir`MWBzXV%J!dz{}ubYH2?5(@P8%d?}D#v|9kL%@?-g3 znt%9t_&*!-yWlI^|0et&+uyGFhhKpI#hAYxzOwz_h5xtqw`u<27vcYlb|`}P!#4QJ z_HTm!SN6AR{!d{3`_lRUKQVtRd}aH;0RPYIcWVCOXW;*jnBNIs+5W}wziWSs<{y3n z|IcIo7Wm5cOTT=&K_xfMm@WV z>^j>~=W^Fsr+Z^Wo$QD@zZR>r4t11WX9Mbd(RJE%e~hS;8&T)yVs+Y3N7;2+Q0JfD zSDiJwM@H27|9E>BIIGHf|9|bh=f*`*QBhInhN5C&sR>cdW(Gw?qZ1T$s0JAnlsZJz zkIu20VFpASOSX2Rv;qbZ88yjEW}f0^qKzqPX(uaY?>#eI#=DhlLFfPethLw7cRviX zHBWzEFPvxX^{nUpJm1@MSQC{Kw(6IGhjXq<| zI8kwG@gIk?)!~%ok@A&h8F4Gw~mXlX5sk`8YEThqO4KHJm5JnSuW-cl@U@ z*MDB%S%?AS!3@J8El!o;+$YX7{Kw%`IGm^Rai$p#X>m?5oSVg&ivKvAYKQZSe4MF< zLt306hSMO<6#U2G%yu|G$;X*uIHbjS^@Dx!;0kdj<3A3k(cvu3$C+$6q{Vs8a4r$2 z2LEw5Ee_|Ze4HA?AuZ0Y4CjO5RN+4kXRE{cL_SWH;gA+*t>GLe&IJ6&;iMeShw^bI z7!GN1t}~ps({Rqif39`>rzzKePRz$S&u~bKv%qjV#5o)PaX1wYCz_9Qw&9Q#=TnCB zTXDwXKMtqb;q2zwiUH%nSi>PL&IH5RD9#xC$KlL&I8Wr`j4>S2;*=ZC_r)2F|2UjR zhjU*(&S=9SEl#oFd_$Z{{Kw(6IGmgFaViamv^Xz*pf4WG7N->daX4EYPD4IUso{_o z=NZGfP@IwYkHbkhoGbEiMj8%jaUL|B_lq+E|GCcbpQX9}b4fnV2*V*Q&MLz>TAbnd zkHe{OI3LW%8E!bF#aU)JZ>Hc3!+#u3wZl0sA7_~1kQQgY;k1i01pje3vmMUcJmWB+ zpAIn`(&GG^;XEQvG5+Il8XZnYK2EXWkQV1W!?{zO82;mMS{%-A^KoK^Lt31Z4Ch91 zdZL*v4ri;w*_e;hQ*G{>RQsHm;e1`3{n1R);iR%0FZ+!D_Z?1!`;7m7!y&Eq>^aMi z2RpO};0xls5zRzyas21|f&YY@Z{*{=VK}74dD3tuiSv4tZ-wP@Djd%2e4N(}hqO5N z8_pTxyd2F;bU4)x=fZrPmko!sIJX$i5#n@5`8HW@duBVF_vhnu8xCo4mKe@Il5loK zGfNy!qr*8mA7_{0kQQgI;rv;gbd+zQ<+i8A;k?N+4K^MeWN&H1AuZ0OhO4ry`DHk{kVc^?09I4OtoNIuT1?l2tE;v@~{)8eehe;iJu!})4H z&U(WkEzWks`G`1c@gIlN;&A>wA7`!MkQV1I!>JHw75?LJwmO`6KF%t`AuY~LhEpQW zE%=YaNjaQT^Kou59MaQ;{4m#lhUVj}G#t|6)Edt3#kmRpaX1wY z=QW;*7%(2(WH_Y7Ip1)8Db5Y}kHe{UIDgE?xxsKqi!;V>R*Tb&|2Ul44(HeTIL(Gb zTAU*d=NfUA<3A3k(c#>hkF(rxNQ?8v`}*R+7sYA9e;iJW!})eTPLtt~7UwU9^GR{) z@gIk?)!}?OAE(}MNQ<-0aK?#qHU8spQV!?S`8Zb_4ry^V7|zM!EXIFUIsS8VuK#=_ zA7`=QkQV0#!zmDF5&q+FDjZHlKF%V;AuZ0=3}^3O;Vi&^98R^vDaprKU^t}3nQ1sX z#F>x(IGouI=Ovzj7%(2pHyqO9Of;OIi!&Gf{9sA${p}S?{QKMC{Pg$vICBk$v^b*; z=SSkyp&y4+;c$MLk5gwjq{TVRa2my_ML!Ow+TpCu$Eh_O(&D^+rXLU3n?5KpPn?

G}(t$@tF?9sf!6`j2l11^GCW4TrQiGYsc(acb}%hg0Ej_VP@H6AyCjt;TRj zi}O*#xksET{Kw%`JDeT)I8}y2TAWJ5`GGhS@E?aW+u{5?A7_H$kQQf<;e1P+^P-t0 z4yV!K{3sviJi{R^&dX!^;=vqo&c=TnPK(27%*Q#~a7c^u2gA8ooU!3xiQy&&dJ9aZ8)UGS#CH7 z{tTxQ|8Y1K4(Eh?oJzwXEzXw=CnZiP{^M|}9gdfeQ))P*#hGR}kBT!A|8Y389Zna| zQw$gnMj8%jamE|YPsJG#%`9;^jSlDWe4G)6Lt30t!}*>#!|@-7)8cUM$;TOPIHbiX zG@SnuXBhtDaJD*}ALQcD*oY@ZN*nFJ*hC^EIxzcd{D$W}b?l0tW8Xe97o?{r$ zPv0;c(&9`toQK7EJ;MEkTuzI_N#*0bZaAdHIoEJn#d$fx{e@i4R)_OwKF-UALt31X zhOTx!9MaD*oC=5YU->v`!yzrs?+m9}oSpcO!>M*Sv+{9v8V+f3?lqj##Cab7aX7Ob z&IS26&l?VDaeinxhl}$Z{^M{O9nP8gIL{dlX>sZe=Wl<4^9=sua9SMBQTaH}7!GN1 zE;pP%iSs1><8Zb*oP9hOF`!*PX*i_CnPNDb#c9KT98SvN{52n^&2UJI^8v%TO`Prc z&yREMI{M$a{_}7?&UV8gEzStTxn7)Y_>aS>a5$~`INJ<|v^Z~_*5{{R5oZ(r<8Z3` zIL!Y)kXUgrXJgL1ev{#l7AGBWR%rd;GvYji|2Ul44oA-?Id+iCdB|``i}RS_d`z4N z@E?cM=x{!lkMn@xkQV1|!x<&cz4(vAX>mB!`8f9)4ry`z+i(Vpb2t9uaJD*})ADid zHXPF8Tx~e7{4bn4@E?bhayWp#A|{f*}w2DF3q zhC^DM$%gYk;;hAg98QJ9`BOg5TEihN&if3fMVwXmkHe{UIGgivRv8XyafTbtwc^}@ z+>UF?UAH{CDO|Vo<#t;>&Mk&RTAa*iKOXpg`XAz~L~ahJ!r@$>kF(NnNQ<-6aHflM z6LNDn)eh$?`8YQj4ry_IV>llc=LX`A!AlX5t(@SMYd@u1#tNQ+ZrIKL3*YW(MT$A6B=^`B?+ajrHT(&C(MI6o0*G5+Il zDjd%LrPPM~n$;Vk_IHbk-`>B2L;3{zz;6Dy$w!^tLA7_E# zkQV28!})|b^YI^t)97&iBOhnJ;gA+*i{X4ooVoaq!)b9i)AMoW8V+f3)*H@=;?&_k z4ri;w`EWi?o#Buc=R1ZI6{i;eaX2Z5QaSBbT~iB$C+X{q{Vsll)iXyg*cP(ABWT8 zaF*udOg0?S;yhkML=WP7P z;Z!@EXgXi_8V+f3CK%2}amL_34yV!KJduwx z#&AfBQ*Jol7iTp7<8WFW&VBhfqYa0&IK_tZ4RI>*ABVHm;oN*MXGPAuzS3|=i}T{B z{VP{z-xn}joKpP9;iURF%qu>SXvoJYH5}67JYzT)iZc@bdHg%M^Pfk*6V88p&K3DM zBMpbNI1d`m`^6c7|2UiqhjU3j&IrRHEzT;#Ia-|I_>aS>b~qo*#~E%oq{UfgIB)&| z&M^GP;mme8$K~S;GaS<5%r~5NafaYO4yV!Kyv=hCj-Te*+YrMcEzZ9g&LiR!<3A3k z#o=`1;}jbXX>raooIAyd;Xe*%tHb$iK2FSVNQ-ll;oK-rkC#b0oRq`an2*yFH}`+y zJ||{4Ul(UT@09$V<3Eq(`p@_CarPSyX|-ohWnVn_f;ew@nR16y;c&i@kMoA%kQV1j z!t1G}!>M*Sv-5FYHyqO9+;2E%i1V_Sxy<3rb~qR2G)4uuK)al=Ntx%2M-wzX>l$xoL`Ic0RH1}Djd$A^Kl+99Ma;9HJn?;xflO&IMohk zYd+4shC^DMV+`lp;@pk@IGouI=k|P@yA6l5IQz@{;=z~2xdZ=kIE@bHyZJbG7!GN1 zl7{nXan|EM4yVQ8d^I0uz2T4+XS?BiM4YwwkHgvOaQ;0XXRYCo7UwR*sSsxs{^M{` z4kwQXQ=WB+u_bE6F@E?aW+u@Yt<18>7(&EfCoE_rK$A277qr-WL=NxQ2ILO}S z8xCo4CK}Gq#hHu$IGh%T^ZR_9xrRepoY98!BXR2RpHm(GaX7!s$EhndJ?TZKV#F>fzIGkujuK!$#r^4ZU zF&}4!;gA+*li{2r&NTeT;Z!@EPv+xHGaS<5tTUVw#F>i!IGouIXIwtcRKp=HPP5^7 z;!MGR98ROdIXNF^is6tJXQAPA?SL~G|8Y1i4yPa=XR_gt7H5XxJT6WR{xjO~ABVG- z=P3q^2Q`L6TAYs>&OPE(;Xe*1<#2Z7<5U?AX>lqI=Lh0Uz<(T0v@+L!ex8pr!Ei{6 zGstkhCC+*HkHe{OI6unAInQuNi}Uiyeeqz9IA`NO4yW4TH0I-+Z8)UG`GetHEY4W` z$KlL&IP>yx#u^T3aUL?9v&0#L|2UjRhx74#oH2$&TAVe8bF4U{@gIlN;&9H%#~E!n zq{UfoI0v4DQ;Gka=J=1pIUygX(r`$N^CiPciBpRIIGmKj@$zv>4TrQi(+uZPaYo`l z4kyYuSns6{$8TLcPcdLT7-=}9#TjonKNV*L{^M{e9M0noC&IWl{Qgfg!uNkh#QpF8 zr1;KG(+S>=y0Q_8*?bSEB>Wx_=SRYA%MY@wCR^80^kB*Lb z4Nr3)rPZ%jam_x}r@feRhIkp(>tgEFUL5B*o_W5fr{DUW9?h-au2@lP7yQmxL2Czf zNynnCDHus)(0;hL!<$u{@QS_f9mK5h#-}EGPqi<@>H@Ce zT&)-Dz8Kv^(3A8g+0W*fJPx%!Bf!Hfm6toNebcVSPl)8d&rY`6LZ zZ$-6tRAM4^!pAaIUTOE0oR53)@mAiUe5<(rblNuy`P%ayI=9D?>s;i@?@wRu$oD(h z_B>L~sCU17vcQWZa^+gkdMEbZfnP2; z4m&y#`@#0sVSDSaz00w^hOF&1Vta}m`%XmX_>; zuzuHhwNE}S|Fh>qTl!?St&f_vy861(x0gQu$@=j|`SG)bp?w5)AC~)(Y`HIG%eC^m zsL;{>S#kN&&!cD3HtJeTT=MwM>P!BV#IDs=`P3P*5p1FWo6vCu$4&C7QQpD`^{qTm ze^ceYn&!F#)i+g^#G328NL$?zUPAS$q%8SX6d9F!(Y6RNK=vw|5F?4Kt-lS*w&lre zTU_}J>c<}HvC}Vk_<4c%)KJA)SZh4*zV_JF_gFo|BMnd6W96@m?0Z1=thUt?FIs5Z z(s^~`mKOZijjO!q!ggXtc)qYC$a5iWZt-Gm<^1c6Mce8QEcAtUzUxlF=V2cT1_3So|PY8*dbrIjr>Z7xuVcmkkgxdfmqB^O z#D71XjsNn=_E<4CSJg^LlMd}O?5AgCb*C7daP$}S&wc)@@l%Spw7jQhrN%)u z$V;(k6@Da}RoRn}n{AK$S}Z^A(+5p5JjMKh;(ZV=`}m>#Wc%D51NFJT9Ql9K=e8j8 zchcwPw3&GDSNNf<)%O-<+wI270(2L_1~ooV-=$b>``|+QpF-?ReY?gF8Z#6i<1kOe zq}}*3Q2b?loE=By#@|058TfL4@pqu|ZahSJj}B1Yb;#C^C(KyS?;{2kgmpZ4e0fi{ zT-j|mcB{7QKO2AE<@j==x4IxPuRrDh~Ht23<$#ze^7kY|uC{N*~WW zAybOpqu5C;G3zd5rt#qN2K+SC+uHYK^;{W z)xZ3RRX59)e@zU@@fkCBm=MYo-L^aRc}L^bn&?xS|D1k;H+_Fi!BgLgd6|0VMBzM0 z_l;6>iA#0(6LL-0dYMV|^Gk`n9W`EtJ&^1UX2Zdei5Y#M&MiTHL1JR?)xQLA>soOPsC=#wzN^xIUqn zb~|;bC%&IC#G8IQWeqB%pNQzULEY8Ez3Ep{R>@(5+6E1ZX9n|o3Fr6D_cFT|c$q!i zE11N5VlVYfPxdlZ5ylVnyQ5BEPQv*2TI$tI9V)(Aa?3?SAG^6UGN>E*Pv6CwZ?ekE z=-x?+^`70+yi9k!m)Sd|ul-5l*lDy~_lwe617#gY`Z0HwF39Q{$O2w6U`)p1IYFHg~Xgm7b~V3%cv*E0R~oGebBZ%38-M=6;`nr)xA; z)cmivJl5Efi#_JAh0UFs57J)ERZoPOo*d{z^4&XyYgyOYH38dM9M6=&*u6mG>yqwo z|E*_wihj|zyBK|JO+i9&v~FMhGiq1sn?2JXr9I~}7OH1#a>d4FH+RMg+b(BJwBGZY zfAeb4Lq@tLIRo1@ zZQor#ar|EDunW2Eq#o_D!TuOvg6gR8DZhV$bc277uPU*HIknatp8ouD^ZSXsb4s35{vlkul)@eXX!9ZM_56rdxG zk&DRp2!1{oJ96{6V{+x&Ntt^ovxvAbcit7_b}{zuVeDPj(=%P?F2Gm&W43rj{`mVh z*xD>?duI@j`~uDway~}heDnOzWZUp`KlZi9 zosVn$qHzo5tL$pxXcc-G%-AFfZ>#6s&pfj^!nnrToaPmFUiLfMsr-%1#jwYxH15s7 zmwscEJ%`_F@ue}8TYzjd|M;Ey6y_P{c;5HgnVTp!X|67N);MYp=^Q5UCY%G6X4|N1 z-0^u%JfmKA{G+*$>i$qTAEM6TeCRIfqu7IdZ;T_8NwlFqemF0B`|#YDn(9a1*SX_G z*+1pSD8Ghw#{YW0~qpk(S#bq9AMZ~fye$#l^j1dzp^Df)B#)~vpa$f7aQRWts zRg5ubg!*c|D8g?!^`@U#e_U=1dNN!0KTv1I*KnOl@!6fvSb1LOuYdH-@BFzAZHds1 z+5+!qm&p!jk8DWu^C<19p{~`mN$rUukMfd8+r*)fwhDebR6C9!c8BdM$d08|rq)*v zDwE&BGFf-%r~O)wjfV?(&KgUGr`m_sEIy zXLc5N{(72QPDd=BU8n1tSBG(?(6srHe*F6}e|&R7@BM}(V_x0!Rh>0o&|0m=yeaI; zwku5>>ZtTGouj>sf8T~R_VzIxGY0ND4>=$w;>6P@xb5cmzII=*Pxhy^`4n>Aim$c9 z(mglHHpSY!VoVCTN;VzC7;}#yPnHqnEoc=}zIhj8>0;I%cO$owNO7Y0%Jt)RA-5jM z4ViY*S6$9HXEkLdD=BNV#&S{mtN1@2k>umjz1Od=ou-UV_C-VJ`_xHf zoZ@`VBw{@EZRdOvS)`D`Zel>1`g@V8XWPeeE_?5+iZSRQVwkS0MxHTZm)2%4^9tH@ zz2w^7YcG?1`Kvz;+8!M1{FD)W@wPX+No@cZWz`{aRrsNGsGmn_7e z74z;J!uv=b>RI*4Qg7t^iTLzV?wu^%JR#9YU7M)0>ZG}FP_IdTJ-K)Pp!_jKyVbUK z4>}_AFvS56AbisJ-J4`lt znO(J!@f|ZG<2z?W#&=DNj4#RBfUhTPLi7JrEirl~{U&woMAk+8)x1=;9xL#;?-^|? z9~x~t#q%M)l&F%R#WPratlcIKPACTp!3`($l>wf}wRU`?Yj+VJ!TAAECV ziZbbEGff=V&@R?;Hfl|kF@t|EDNfm1%h7$LD~{d2Qu%bRqjRblDxdmeACr)k#-qCT zr#V%{KYFHzyg6_>;j~bG5#>KZ`P;MW<*T#h`!N{Cr7&#Sz5NN-|H#*W!_!I9soII- zS(m*(NxOLle|#r$Ux!~xR>`wDUq>vdMZPoRnbq>KsT0TRI^@TF6!qC*jGo%-bA9$5 z{FaIhYE}Hd^!1+UkFlOJh(4f;>mTOdUe47ni7e!v#B|ws3o@F-Jkv9PUdi5MRr)I`d}juAG3dDcwV+BuJ4P) zU9I`(en|mqFV-GY=p*E&XzwPNu1&H|=if7OZSr<_E@QWEL##m|j~Fb)iP)f$w#uQg zw#%vO6&%mS-qYCS9Ae`{WGLHg$i{ow;#6bLmzeZLq}9JJ<)7?N^9b2q74{Zq4S{pM z?rtWZ)^{Wi<*yqc|0??9rL2iapP~JH+rK{AdLP#-ri6WLs*ZgVbJ<5RpM4Yy*hjI* z8^3FDu$STwL;Ct&e2jeTrI^oNiUsVYSQIB;eEbjI?purZ_|NZ;nz-Ml{U{?8uaE7G z*Ga`)Vn%`P{SiNcJt>9V+m69ji6fQ#olRf4mVdf8xs*wc~914#p0<=ubQGjj(*Ju{{q%dnwcO ziOEXEMD}iMTyk?7TP;Nw?SmK-j3&m@ju()BJ8@L`)R$g}ovXg7ZH$XXdYNUuUJJW5 z)=tsSL^+pceAJP(!H_!`n^wPzoLW=#E$#SRXDM~?^JyPVto12aYWpnOru8z#$y(}G z$vC0P^SZY&pQ4{@>!O^8@n5xZGRM1O#cjn0mVbLU@iY=CZcdj5abD}V8vp4&btk^A zu@?2=IfJ4^lHavP+JP*RHPj3LRJj`CrODe)USespV!!5yt&#)z{P;~?tKUk_oxs0p z)@fB=-7|iaf2VlSwpy>S`-1E`?fGV%Hjr=MI_-@r-^f|(wC(g^l1Inc)Rl9$W__ZV zytHGZ*Wj;_uFx9kjh}rp_qWx@CceXO;X3r2>@)Jm=E(VF(xuj?hM|Yy(#6TG1=fd# z!5<#aoCjCFqW>c3C5nEuUZy=cWnQ#-bF6Pqjve1U*3bON`cVyfl^?A|uead~@`rRR z*4A{O>D!g~$aZ3h;ym|`pIXm)<-B=w$L%@JTX8z$_0z7reOw8BQz?CuN8DM@x@D7B z+`QI{wGnIl>(c1A9-m0c4*d0auT}OL=q{N5tRcVJq4W0lP;Pe`xvd#MZa*K4{)(}W zA?PYAH+Q^C|Cuwt)%uLaB>wctysZ&Odt{affm3z2mZGG9eIwjr;b*pvKW zJMlm6e1!Lu=I_ck`_?6Y3g%Yf8eVo@>CerIT0iH@ zuZVgSwEo*68^l~q{~K_#bC_ac){ww2Pd2hi8+jbeXD?-TKV=f1)?7SN#=jH2 z6?U&mbW|{A@ya6H2UYy#{h#ay3iuQENuIrZuHpmjerr&!jcXkEj`*zE9mLn(Fl^Op z*L~Q4|Ft~)zx2b`I&5TApflB3Yp@a4U?oo-+xne;nCxL>pM2;)w8uM5U(`V#>F*b$ z54+sgSAnk&?JX^3oU;UdeXp#+ZSe&iCb%q(7)Q&0lwTs^T+yf9Ho(QAY+LKmobh_b8XX5FQfIR zM%^Fh_y|}U##b@OR~>{qFB|)YJa1a;z+KY!11F zvEd7j?$s|THe73bf$qsu-xS2YK>v#E5zYUz_TZtX&9T1zO6#`~&13tqmmq%h<4^1l zILMw^6ZY+Sb)P+NVNcCK{&c$2CfA?#Fb;crSZ+Mged-i8t96pJ?3ehi`?!C7n>|m& z6UDX~<}n&GOmb}M8g$%#9&>-}N;igRNLs?DeC)Am*W6GH$U6L>ST{<4d z^)<*gja|njU+i!W*ZSil@+wc-T$>yLhw)YK@3I^6C5eA2-~NOA9kihdn`92PLUXJ- zY_lm_Z^k_SeBZZCuDy~vH=s}TX$|;YAnV-N8Sdu|?db86+!z+xQA^g2Y`oau_aA-n zqLVRU7vpA)bCZ%i-}~XWyO3uFD?_pWJ%uA?nwO?7Hyd zf%dt^br(`M>_$3PT+`fDWA;wQxLuPumu<^&y=&w_tn1G|ZT-KR zr~bcp{ME|)B7Z+-U;QOx)je!SSa;oT^!F2@^YkFb0r*3x7v)tPS6;>RaBOm{`~#iT zD7K>)zuno`ei`eslEK$j@mxVM&lQlbA{)Qs$frRu8o6kWa4SB=I?)QP6KPKF`xNq8 zjZew{TjWz5Z`B?l`4heq`i+=}lgD4*Mc*;}MdNxuu2R0vr}^vq8^8N88=W_Vzbkg? zcj~7(zyCYwI{7EZn#ZWTu$(&inDSThJMGi&))s?#T2X8IUE1jW;{JUow9#gxW2;~7 zaj@&(Y38XZ{7Lh&p8A3fJ@thfdeC_|M>rZ;X^z-|e_V5|b;DfaqeuQjo5Aa zYUHsPc`U-l&f;GCtVm)P_Fux9?d^8n$;ls*_p^D?ys|+>aQPEv){V&Ue*p4 zF!yCY<|K~ioP#W})o{&p9dUFP_b)ZCmp#Z{^;gI8|6^!lPyJx@Fl0kd9rap-%}?X+ zV*bwH@74UB$zN=)vzEV2{3YKh)b&*ASb0u7vz}O7&%7c^EDGzFq<_&ox`Q!G$$hMC zQO6eQ7Wz@|dMkA+$ks{qd6m63=>8SeUu)UHdaItliMBFlOjOd&wIzkkPYsPVH{pvh zo_~6!DVo6V5+kpP@0)Oqx34tnb>GGOQ2ibCVeWq_bDtwyQ{;P)ciaa$zI5N_SnabK zhihCFGBtlIS>q)JFYywurXz`0m^1a2JJ>IGFLu?9@71z?I*T#lV05E(%{}zbyRqf= z*bvGb+O&wg*4xsV~})mOqo$ zT2>lg@&6+CByugFt%bC;kU3XDlzsvmPE#k{D^vY6Uey@d<8K(F?Rr$u?qChi=6QoU zuVb92ano(c>D6trjY4A^MZRrxVHaBS-N~AoY(w{M4uh8(j%+Gr8^zd0QR~_tVjILQ z%?HvWv5gVf1~E!D-#&vqHrT=i*t^yMF5%wfU*JoRy2q;ZrW9pQDv37N4J~M%H8h@? zeS~~Ee$Vg7r*Umve>y@h*ExDwLw=R1vZMI2`Y-u~^b-DOInmT?4rW{I2XUt@jN{jM@_1 zQ$q&+bD!nJJ!E>W?5FG_!5Bp8igwNG*^{ZgL-@W&SwVaH_BzNnOS0|wYqtJ=xwB45 zl%YS>+duY3=N=P7bI!Lr`OEt9OTM=KetBhm`EC1y{WiJdzk*4u^=dz4oc>+<$Jdw9 zmTPo84qw3*G)Cx>Kd~k~^v#}?G4!l^M=`FAU_a4IumNm2Xn!z{Wvz|-7qRZ|U;_p0 z16b9-+7|spEx)CSi<&1lUC1+Rm-un)m7HhTCIvCFu`KG#c(N~J_Oc;E^`$F0?k^@v z-gg!r91Az~+K%V-E3egk@(T3f9LF7f%<4Ptx4g}L*DJ1B{aAfmgdFVp8S}3dT611= zIJQ@IQsVE^-t^n4cKtuv^(yUnH`jNX>#z7HuK$C%{?pm(BW2a&%e`;i$lB!m_Tp7H z+qTIcZT*7%OMU*Pd4rxA@HR&h|CI^nZGHaIySIV(tu~MEN0+;eF2(cp)!wHM%OB*A zhx_bZw(ZY(sE5C22HP&g&gH+WiGN#>d-dkBgw~_t*sbE!M08Y%KWNX#Dr|QPzgHpy z=FI15EUcI?9A9YgwXJz=%Q^}BVU7DPC*WrN4)d259k!N^F023j&kUewce@wU7FXaUB?(1wQVvo z;#yxu^dY{CD5GKy{dD%)-yo}X$ja}lDK}W7qu=h8Rqh@kyB=ZZ&9@ywX5pObo~&Kv z*pIUxOY)P-VFyrHp!|Xmhwep>_E*$G!6;+AxZ-(j&C%5!$6O2jk-D z(urd2t;F2hkn?)%vLhRJccG*9w3oPRU(ZVQu^MYD?gX|Hw7=Sqx7;sgEF0r~@x#aI z`H$j6)4a9g>ezQxpWUyfcx12B8pV>sS-bW|CMtLypqh7j&%BR5@DOvc>HWy@UgML# zKgRpwpMTuo9GCU^YY=byj;;JRIP#ax(oYj3M<+fk8^Ts9kyi!s8il-~*kA#EmZI<0 zyUr)kch8~kj^T@vSpjiJ`nZ>UMPZ&w`mj;-VW-fC70@3Q(jWC+M?Vzfx+wk7ZQ6^3 z9xA+GpXmwwp2lw|Co@rFD11k{*I2^eTSnddu_peaG2#~VUB0<6aSr{b#!LQjT=l_E zuph;j|IMCLyHdmsjkQw;da`TbeRi(c_*yK80rwf%_r=3ez2gU8p4svK2KI=!|RHEYN`KB+D)70Alu71Ux#dq_;)M!4|Q+7&MRu3J(Te|`cRCd-(u`klsIW) zaBqD!dF3mYacu`}(OzxczfMk}Y_%61uny1~UMHLWcdkuNA-~47@_qbF_t{6WXHv(L z;K`@7zo<^*O7fPVgRl%;dl6-fQod{%x(DCETt)Mi^NSmvE}T~}uF#7%cNI1~eOrMy z{co^ zeht*`PU>UNxqXCeV}8~)?7h-&W$gri+flx{e}5bFec4A}e?k1*u`WJ3aT_-O2=Rq^ zQl^OKC?4S+-_`n~M`IT<4dCPg2%{lyh!a z&SuUP%g6M52IXo@-8PhaB3VvYhfr3NVU}>NWDR>tBkadJBHFws_RV|tus+EAd`CDx zZ-X(J`;Kiz?6vyR@rg0>M(^|2W0(_e^>!pX;et zG!nG27~U@0k>;G*EBzC1d)s=4)7CD^3-`HE&bj{ew5`3LwyvNK;rXzwVcSD)*j}|W zY-1>oDb#fc^&W#9&SXvMi-lh1Qq~%N2X_kX|6P%{1}s5|lS#NXI| zA|1bk&Ywu0l4yGeI&U;Of90pSe*JE2UHixW8C#dm)z1F({!`BVhtvL-)c#jLl+*q+ zztz3+p~QW*{pF+Ib^ABIhxY&Xzo7lHdq?*>p4f0iPTPHdzx{~B*K*qa?sdQLJ+%GP z|AMx^G%S8kKf2%e#NW@!X+OH(SogPc66f0XuX*?F|G;}_|FQpq_J6z|+sF5JJn`U! zoc8-&*+-~Lzc`saQBS=j&AzW-9}TfY9M68oOa#=g7p^OwudO^h|M zZ>@a4?A*lt+4jFo?0b3Qsfq4)5c^t8?EBe!X#e-$WBb+C{^H-2_`hxcli2#pzdJFf z{pf#V-Qy=FzGmBh*}HH5!uQbrPydVBulRQf`hPsD|HrZa>%Vza;!LA|-~PXGRN~xh z`(Hr+*Kau`(fkhdZ~MLvyodH5`%kuC{obK;uh?hXekXQ*{gLBy+V0!_5#tm8U@we( z-*0>J)OX$X*Y5o1eg8Sw|BUYs)b+f-OPy2UVA34`;|BgEE+{Djq`?tLN_TTd! z+Q0H&(0=*7)jf8<@%l@T%W1ps_m>=(SZv!q@!i|~qW94D&;0+@_QOs%xa~tvNQ|>> zU-ItTe$IPn`|vOP ztl#_mR(4*yV^{9Hmi5D64*w_E_`H9fdF@86BQURJUd+5*zi%$qJbs7f@!5IpM$O$1 zHO{}2HKKm}eZ}>k8kM7WKi*9rmH4G?d*t1>{patY?YI0Nw_Uz|5q;ca^l=vjYZ@!& zA2xzDjnnO%ens8T5s7cW-awpZO=IKyE`INt!wy}n_F<8S2_ap{uqgwmA^X)fRPT3#cE9U;t5Rc~t zShvgGKN-n7TK(U1&+E5ez7hPU^oV_Z=XE^A*FYFLIs!PBr;; zJk}|1nsa{b-*W3S#>v0ZoOk&uf1vZWem|sKT_5f((Y3e#qmQliW&JkV)Gy@e_fJs| zdt8_;Px9CK_hrv3{mE>(cD+B?U)lFQh!yPDIE%fuW!x|E(0gcW+WRn(^+!FkbUN$G z`JOM(e!5?8=)0#OJE_1<*o)x5U+l<=J#7uZK*2<-OY+yX9MbT!#FVf4#}C<5K6?JwM!>cgxrH1D&`0WBRd& zQI0)?<*VF3yxu1-9WSFE_WWJh^E&r5WlKKcc`IMnUj6)8uF_*2`PP~C>ii7nc(KXv z@@#u$ueyG&$*<$dPI>d4^AFK3wMG9ae~pv>Zgbw{EB`>}ZT)^mxw_u^=jN;&1A4%( zGW832;(W=`&q>+xLjOG9=;x{d^fT79PvxuZtBiiO8ynHN{igjoe%U!5)=zyyd$8^Q zFuneSIF1(1D&_^yQm-ie5N1$JZI`3^28~m9`^Wt z=lCzL1?QDFI)Hw*JMHoF8~xN8zRulb^6PlHbG+W<59=4o$F~36tbSIS{3>s;Q{FAk z`EJ@}?RSxrf2TR`@>Tvo=WYFxl&kBl|GZ*sIrQHJrhXw$oF8Z9ANmXL2FTIZ*NlE{ z&XyZqAIeMR)SC9`yneemt52ohFgBy(F($u`OP%AYe(D?YZ2N!5b-I46$*<#KPI+fL z=bMcDm4Aqnf3Z2=Uwa2SZ|nD;l&kBley;6DKgFhgAy4%>*U?X>b9`9#Sb0A5E&MWUx1IYI|r~ZC^ zBi{v%eAk-%%F9O49DA%Y_8Qi&KY5>@m3Omqz4aHB-$OgBy)Ae0zi!UEJY7G~c`N_F zQ?9PJ_Fmw~U*%2cr+xbUXIXiN_I+8lyzuxsb3T-Zu3K!{BffsSC(BiOm?QrhlV9i0 zbB^tN#Fd9_ZztF3dUw7t+9_{}!@tGITh~`Q`EM}iUB2=Ubl%o4LAkCzR-0H5j-TxO zG~|hMsgbvi-*S#m$sX(6#o2Ph>#crKF3F>3lgie*HJ~vgd!5 zJ+Hi}tPaBSRzK^V_W1d;^-#LX@O8Y%Whr zt;w&vE1l!Ie(D>_$F~3ctbW|}lI2c$3ru<9?WbMVew&>9FPrnBd_umiALzWT->a0X z>#csge)Mymsb9zw=dP^$Lx1^vw!H9onbA*c*50(De6HI=c zAL|_NH~C$jZU0}mPS?BZC8bVz#isqrf0L2Fjz>EAmz(o0U-<_*Z|ip*!t~{8RQ4+JkNX z*Wl`UcfI5Rr@U3B{mMVaIe)KnTxyQ{)6YQXZT-so(a%}^=x45}U&vEE|MFsPeESad zvghy5o>$&KWpxmq59OtEtDN@u`Lp#<+8sa7H~DqG);S*2Pklq4ZU13e{fspERo+ym zyz`v%+h~`y-ziT12h92Y+B?vBTfYY>SJzwrc{D3W%kMGv8}ihSuQ~cTC0kw?-!3)! z`N{zLInT6D<*V$k82z~8=a|W_yl)tJ=y+Q{_3ckT>nKP0?=|^#yvr%?N$31b=X}~Z zo@$Omd4+tHKhSxrpMT5B)9PndKl-ur?~o_XVbsGO|H?V;d?7fmyn_eO&y!Aj{QO2g z?)do@lV5pnaE@mhd4}~1V@uk$w;dFyzDlfTKFcX`S`(0N;*Wt6My ztv`$~I{J9kIX*snth^t~mTUJDTtH_Lg>y=yAZZ0Q*@ ze(T_QEd8G1*`q@C8R=O;_c=+A_fd4RhosnlABD&JC_M8%iemqL6uU}!&j`=*t>XPG zvv@|Wn6mu$5siSuJ3{>T!tnf2&$T?e$g^yE&dYx`bTZG0vDcw%s-AD<+13#}|H=Ct z^d8A7p0z!bJqh|w@mBUdgzs8-llNN0^{gq^@s9FlJ(o6nXtX)byGFM0{A2iTFP@b< zcVhOPBh}Ph@84L|qxY8PK0oR{M;7WVd~epXe-HLc*k{W8_h`^wy*DfO{a!KueZL#Z z`2Jd~@Zj&Stw;8E@O%~T!O*kUYDfDRenTgzDd&G9l`U%NscQ{3yzgP z!ZWQ^FYpd-_J5=}SHpAF%A2HJvp6sP>Dk1sdKT0hn?RvQcaqP4Pq^}pLH@`)JtdC* z14ej__F3y42mW(*F}}SMEA+n;ruP~7?;o4SwbMNR-G+LeJWaWCvUO_+>-M+ELXY}~wv6ky$A-g@^S&(N~h z>)b?=;{$7gZ;6H1`p-^s?fKZ$kwXice}nwOcP19;{Xf(6Y=Z%Davi1Nt^Ja zG|x%)GW0GWuKD?+e1Dy1D|?^o&XyZ;&*%D{o+CE&^c=~*qj>b!TT!y*jKuEc$cXQ> ziMuCAX(_W6UuiwyhF(dc8-kh z&C2MXm5m<*W*{5ljh_E>WwSuCnSpHZVZFDgufAL}7CXb%eEZM(gY3Uwf7s|POz!0y zci5ck5B_i2>*XJp5>MW%Kd8)V<9Di;)j>LpG1iBQX$yUV_F!%KTVG6hE&JYZKYrI_ z-xuybuRNmneO~Q~*~p@XcTCsup6*h;k3ru$ME~*O*er2Vzpddrif>|v%Da|xy!W`7 zeXR+-*NEp+{b!XG8(v+_^UB!5Z21*>xeQyH7A7&eCV2BXpZ#Pnlx+L4Jo$Wm91piv1^Bo8p>IzVEE(ll6YU+jzgwx}(|SMmx)C z=T6>1w1nqSTBzp*w55x>>iy(;_wrW7KlpkFxok!C)idrL^ba8~21|CY?<)Fr#t-yu z6xF+c^7P(ny$9ei?TI6g|NJ?5KDv&6it^%mr#JNoo;$v1-{x2?-z_O>ZRAC=BL?W@y!sY-Z<+Mo?R z=r?%xOwflUiHm+8L5!3ws*gyH_8zRd-dm_xS@nzHI}3Wg+xHLhh5d#9+nLCP-{c>P z|Gz+Iewo?dRpt`j317rF@@S z0k-aXCR}zH_BREjHU0?XJjIvuyUicIcSqk)(|dQ8QO|YMbCc>xpR$a4hQ}Ltr_-{{ zUT{2$^Bk|D-tBMkmwK<(Ut~5*fA8}amho4)+W>CyCKrPw{TDA`R?9Ps5CYi&SI zzC17Klc#^IJ~AucD0Qm+8{g699c2Ew-s^+@+r3_WUXp7!^1jSe5jvn>e1v|HciZu7 zI{rIaep}@CiITPYIX#mvJNMs%%D8LIHQ1^82lDDUbJ=<&drL3Cz8~@9Nm2J|bop*& zZu9GVOI^gC6k`~Ti}Wp)Fm6fT`Yx*f9#CSVz7?SNlf4&xTlPD#C;92*x87VC+R0t) z{g$0{;{UfDCpi=+w$EGF`>m!pcC?<~cX_cyC%^l)!@EQxSzFnhwT%Y-#b)CAi_Lia zr7zcec6Ramu7;9CC%<>`dk4R# ziQ#%rO4kTt9`Q?d;`c#W+mnx`DzOzmj`M8;+Gk~?F+dvqq(|@<9qHX0Y3YcV93f88 zw`^43lBTawzblz0Cu1{=6Mfy$Uv!53T5;f`uOA5B(-e-O72gKG-q*LanQvm)`N?Dc z`&e`5Cz_Mw#5C;5k7?9TZS%*yUyLl|TPoA5uEj^O*D8+7Iri5yiAN8*IiQauun_E6(&moBuO+Ci)Em+=zOKgl0*LhDVI%bSS zKg}4GcaC+p1pScu-thOpXM%nIAvbxTXQkSGgW+xV-$yZC@1VFZ)vLGQx^TR&a&yWv zW0W7f)~Ck={gfS_T*S9P-X3=F_#~=W#vDR@i*#l=%*`0Pj7|9QiC9pf7>P|OpZeW0 z#wmV`lARKt)VC{+X-w_URk>!F;waaw&R(-c?_Wd@s~G=XCOz=os}%YCK8}20AJ@)z zll;D&dPR}9+U;NWRr)I4m6der)6TKx2-A2EU}FLD8+-8BMq>)S1F0RKlI=G5V}&aJ zTWXy@$$qC8o6LC+3gv|3l{D?Ufag9|&pUPBZ9EUM9r^6yd6V6|CuAOT*DX9BqHo)7 zEeqzZ5AT0-W$>=1V15_&oq_&>u}Ktpgfj2%ykz6YjI3-Vdw<+Ry)<`7_u5HztYhrq zXk!oG4DBJtJe}{`Y~Wkn_Wir+dy>e-wFkY=rshm^NNkxUHvOo+C1Bst>+1%&CWn)+ zlzI`j^*x{$850lU``szxpWgG-!SAcS%r~d#M^E8968atr-x`}<r?}NFC@{**nVgDP}-IEWjOc5{nMp#1Y5Gvy` z#-lpFglA66=N-lTHGa>(kxy~8j(qxF?51Bt7T!+(vFQic7j~)RH5~U|_vPTa8gt#l zT-SU4i^2H`=KTMt+(#n|J(as7;@92JKcwO5Ey_1Cp3(cL^xMQCJSVi`Sif#(m@@9L zjIRca3Uhuf=T{*Y#X6OvKC_kcz6_A-Eu5Ec*5T(9IS%!hWL%-XM{|hq-NzSFPu@Z0 zzx$XzwyltF)Wp3)-u=US!Fug1cn5O-HXEFqjos@VQy2PwqpcV4*Bw)T>D9hi_3zZt z<3HQq>_PALeSG? z9mJ=fimP9wpVBzOe{a9)k6wD~kL-)pUUcTiNplW8+^F}U&hpfpqTutoMyR(-uez}G^Y+{V+(eEErmg>#8DM`J3*>lZd zvblch*B|E^IQ^FSyKIVm+kYUQ`#uq`{Q)vISV<~BF}PDzs^IH z(O><(K>cJt?ZoB?vWPLJD_}h5ArrkL{C4VAfuAhppT4=HcZBnu%x3vSCC?;kjcX0* z2A*^FR-c^E`?&8qX8+2~{&#BT{zUl#dkfx8o5ViLz1cr0E17k2d#|4b=h|Zj=kM>g zWp5trW8ZtF&&NKCk6Hh^i0}Kk-;?m|^UOXU(KmfI5Wi{v_&LnYma5;L6U-s!FgFX2 zHHWOv&LQg=S6{}l<~1eAA&e7!9A7LmyHXKT+Sw7+-L_ z-t`_!Ea83Vei;pC`hCkm`5R7p$NAN_q%&`>6#psyx-os<%YF8CIrf$u;$;|bzq$oK z)Vl~LT>IUpZ~6F7Uz>308{sCZg~8)3D>{iUwfI#Er~xk;dkHpKWMPO!C!}=W6oC zCT5nhrq*6O(f_W)YQATdUP*s2L-y#k4l;g~ihU!nff#H5HO2ngzvqvqJpX;hbNHT@ z=C!j}Pbu*94LYy80hzBl&U^I|{&v)Q{4y_xaMcK(Ln(qlf|EdMrTk~6tA#Nc{KOXHzPC$kiFCX6>9(aw7Dva!kVoa}dkku)(z=ItC4IwVaQyGJekX|Mo4n%g!7w%< zbNaFAC0B0f{pMbrW4#x+1zmPxJIa%0zFEsPHT>nfsW? zMP+t2u~t*hu~*c*`)d6yY1=hH--j(~X8o?Mi}~N}#IX|MdobSW`$qAgTUbwTVqK3p zU{m%R#mt`%`EA&b!Vk~4Q!mM{i}{?s5umkmt;?^0wU%**`j|%IV95M1tWH?^PVpl! z!tc*qL3>vt1L;2ePH`oiuw2D5e@q2WbFQ`2wT5p->szpMx$X*%>nZc|#5P?&k88`x zw#zbG_ynJ|=&d*nT=bkEK!}cCxG%{#lT+z;N zNsj089_030h!YFQcQtDr{9dj2&pChmarMOUvxyTbkNd9vc*!HawJ(m0PcDdOmXMa+ zcHP4Kg**#spZWpCl`y8LPmm3Dvv!x{? zUx`OcCSZ9 zYnX5Qax89@4z+&X#ome(a_d^}WwvX7Mol66Gl~w{pOL;Jo=M;2Wp>?-+^2e(-S^Ue zO!G2(9-{3xAomAoKkGGj%!(ws*Ls;dv8hY270}$1K5j$LlfiFyv2Wo^d@Jb1MUrj9 z)1SwF{64Iq?^{8C`XN3`{i^tej^-*Ae2*uLO>>YF^PF?b&SZ?TmU)n33xB1fp~$MI z{sh)RM{ejzdzsFg(9<*goyy0auZw5)vLyevf_xA+6v@M=_c@yuc=Q}=%JBOnqjk7xHyvz%$G?p1gTxDKBIVUzy z511+VX=L3|hdilQ7q+$wneRs4dyujJ9U^q}!YbaEyNLIvX6^Q;j5)qby*EV;?>>`v zum6EM-htiRiH)rChIVgdUVD8>LGzam8``|SkiKpZHcFfA8fV>qp6S2qW;byz6+5i8 z8M*5_<+oFY%34Jnub{7*M;U_;!%nfEtFWIzM+WasE9YALuvcevihB%A>v@Jm0>3)y=KM zN4;C9DiZDfEwc9GK7YH2`#TvUm(iD{sM~V#>6=DB@Y#b}zwiGY-1`|2pOcrHm~v(^@QLB`Hf|uQX-peexgW{*LB+$x>{d_UIky%nLk>6YTj&*ef>5?gZ*cf%paQy4w^qE89SsD z2Ueorwdk3CLu1uK`dIz0^I<<x1#|ZOC*zvZbHAZ#OcPKk07~?O@#W6yvF%T}og35PKR+BZImJo#aj5R#4Pj z_sTb)shj0J)iJMbUz)k&<&;y0Ze*jfOWm(5|AcfE_2li0MrLsusop$)UpH~Z%{R=1y`Zz=TM$CyEzCSWJBeQbF(`O?R8 zUyFOS^lh0A`c&0V--K5k(`VCa0FB@&oqoP+mQKQusYSJN{WmjO_g$UoG;d4BapG z*Iban2hded{V@7k_MJ7;c4EEO3OZqS*7Nsl{x&fl!AI8NBO0@H*6|y8ZGWqNG5jW9 zSjVux)i?Pnsb?qk9I(%&UVi^iox(P#-woy$dA`ZFEyg_vyMM6nn|xmO8-_{k!z17C zf1Uj%UyOdXslZ>`fVVsG5Tq3_W+sxn6ZYQMWy;`gt+=hG+7W!*O0ziJGm z@73xaW#>$Mhd8hMhU&v6eT)8;woC51XQH`mR}FnDGS)Xy+L7n2^r7>Rq2?h?5x)YVLJGFi%?%zGr_qy50qI`PWbJ`%>K()84LMu+K=} zn;1n|qbXD4B4X(DBxUif2=*NumEdpYVfxfL8k4bC_7}*Zg7!-vw{yJ)fV%gh?*Q-C zz9m16PW-gK)5rLe^r7OM*0+kf`|q=UZ}tW#zS;P-r?mh0rMRUSrP!r-RWM2Z8u8<^ z*4Cr=U^Oz8pHyfqqIll}N%}C~$K`*@Pi%_gw-Na@*J%HP*0J`C4DOdy7et$@i8!B#uQc-&i!jBm%5yC@@~dob*ESj~55s<;Ol=bpIsK(sTS zX)k4tg8lma`66tWzSG~sz_mC0k@gYmlEl3faX3AN``~=<#hX=}NOGR{zpZRvzvOX_9{FRK-K$ z=PUTx$lhs>)|$`ujT3|kQILB#|L6!J9XzC%w|4QyU$y=ncrlOiV?vWHn^{@`@GtF5%>4Re>ia~vhc^sqluH08Rgqiy8kU( zE9Y3>Dl3h14Zd1FlsLlM&XwIpFAQQ? zG|u-8IUa`2b&pCcttI-gWAky@{kFM#19IxFF(!Rc4cBX2{MkIV(}k>MKXn7xkLFLy zu}3fapPetA&c083e^d81Q^Y-u<23G^g?;Z?2ULq~ka?uY1#qpYq2Pa;b*NJ-uMB zf|&6@ZnEwEnA_Qdq*(DA?M3p(BGJ~Zqz{T4=z90=+*onF(XCW$^?RuJu#^3C$>H?_ z#)l{1xbfj4<}vnupucw$dkNNF3RFOc3YdC0M@V)dw{`b<4?u*}x zs2hEqjo*5vCwVq?KaaXIUg;plcM{{%i&&qRe=k=5jDHiCHGb2WS!1tGWY9j7@24F& zfQ-1;%J~kCqns|wp%8$|5l5g|A{ZuB- z#eUjnP+#g+aYRrzt+V*^RQz|f>Zx;zSJXSsv2D|D&}BPwW#!R&pkmc-)@$^QxZ7AC zC<@m9{r#&az$#@-8pikDdt>D7y*EZWyf^lJ_ByGIu4&9^Co^7REVz3LV+O{dd+0y* zOz<+lWvp@rYY_BBujqSv>Z=-Aub=!q`iE(`>-^yunfbOqZ;4YEjdvygt6_!bRrfAp z#V*DhyQ{>BXSOmPnuMIUz}v=H-k%d;>mheBJk5o(Yy18j>k&9t(0^g?!5T4RC9!6~ z>LP8+5ATW9z}Uw4isuvCDuzbeCUfnD9ACtED}{^|Tm7{vM= zQ2&{nk3Gtd76kU_uM1+UIevsL-rj#;W&AMwi2QS~?NG+LPX6cruKIq z?b__~r~TRH@7X^Up7+ zYs3Yu%canP=7`9&Up;(Gdf@y!)x%e;9*{%wJoJDL#L(KELQ!Jp6Ls~z+!{u~n>Nng^7yVjB%Nq&5_T5BQ1E7^wb6KMTC#e7HmL5UGhbXZToaAxwU#{~YZmXhS(-MeJ>AGOTo)_ldcR-Jqo;{^^z=htPr2h6cf4cur?I}hpCj3) ziP7PGol#}T7@0IkFN(d?yW%WG=!W1ZEM=a;4Ovt=a}KgZzXUbI>JTel$RPJB%FvTs9wtN}cA8#dkv!+$1SWtVad z@|2zE{*B5F^pd^b;>c5TxmP+5w)KY&Vc-3X?}_Ei|5r2aF1~ue@%^)KddK(Mg7M=; zqb2Vnd;KNdjLdGx9Y5;6gzg9EzJkVn>L)|n`VKPDGYs_&>`~TzLTo(UOpIe((0+qt z9q1~>Z#B{rzs-{Fuy@}#CkOiVZH+a0kMB(1M_bw#dH&j52R@p{2IxOFdJP{=+@*G+ z1OMCX$ld?$IC77~gK^~lN8Gu);H6>NDNV%k zLY>Ze?ZC7axvaVCBF+B+lW51>OaD6e@oM^AOTX6=3&gHeuABP*aq&IhnlV=&XEWxD z7<2SW0-Dj7o4Ni)@HH}|8#;C2zZdwW^RkH(bVDaQtelo?;t|PNJfjbTv4aA~Z(3~l zc>v#k=wG_Fs8PJ5z{*fRP2S$#8!nb|aN#|`R;HApt7J+~dnIN9>vXY!Yd z;fra=?E}D3$lfNAeye08SX!tz#5{oPJshq{g2~t%;GjS-RidkqLxQV@Shouo{a+df z24e1$1Ydk|+hdV_))9JO^s^2+LO)#`2{&7@)m(V0!40{O;Z@M;YG||?`V{;Hz;DVD z`&a=USAxe?lwCo&MqpV%*;SOq?mue5f42Oy>A1`}r#?okPIJpY{C27}{n__%3cQzRl{mgR7A(x$xE)bohA2c_Oqt8J4G~lz|rf` z1s4Cj`trymwKruzeoL+8WRhfwa!$IjSKy!8ATmj73J*Y&ufuCv zmn8ZWO-8jx0(BYQMUI!?6G`S_AMcOcRlonAvfgWrbdh7u?@}vpC%Icoi}1Ueuw6p< zVJp^bn^Vp`Hu9ZzeZf7N2iM%$WuJQ2uIm}ABywH-{tngkGIjC$Tw=XHJ^;;^MOd>&B(q{``%1 z9Qw7#Kb;`$2SQ^T%fme`wr{zfQff+2fQCT?A~D zcb``QqxT!Z9RyDQ)N+$2FMr;@6n~L6mE&<9_4scMrv3~3cTNngfBB1L(F0{SzLA!}K;*E+9uQ&pOqmGS2T> zekX|Eiw_g*zJO7S8iJ+IcU$iT}GPue}*mhiJsbuijruJW}I1 z_pN?|ivU;IUNLB;0yvDEfL=7d1GvRTbL;pT?W~|&xs~0u0{&i!K5oQrlMWUiW;yT7 ze3kPqi+3v+!~_uT#zM+ZgBBL^4jCeUK(Ub?=sb>YiKt)HBRfXy2u8G=LJMyu*DKicFU4N#3?~~B*OlWwfZ$el(R#EacMax^c&WHb%AJvT{ww_JNpjB*+i6YIpLmv7iho$@13 z(w83aR}H`STci7;*wV$|LNdF^sYkf=wpGFN3i1HU|AKlKVOI^bH`=u4Ejuvo{?Q$$ zu|tx}@Xz3H;aTym_%iB1#vrGTO0FsHsQ7_m_xe`0tYVsyb)v-!7_;OO%lK82FRssj z-#1gOek*t^0xsM(-8vOZ?$(&0v&9dh-JE~z-@Ab}4};S>>}K>EYpt_8{so#ezP90q z+zzb=j^tWH>@V3mpNysHfQk6(^sf;8Ui##qewVH*ML$Mm!_u!#|6net#lOP(@{)4? zh=tTfD3ku)YcGvTn-7wGW*OgdR`?@-i{30o?_tM^@33EYTfx~w=C9m-2>vV&{5|wh zu;|}N?J-}!+p<0xewSRjvTV(Tp}Sf4?qhAA<_Z-P_S%SQr#Jdet70>D?L+IIY2qbk z&);|70#7o=%dZg~2W+04Z|xVa6en3Qs8B-alq|F7Tz6Elp@M;}8gtI(A@ zBG-pQ@AbD9$X|fZ72oh9t7W@rzPsFF9UL+xfXy#ISn*aL@7*>`JPjW~@if_!YS;D+ zt_uEPLf61NKTB`I@K(-?iB2Ylp^JBJ-g;#zJ!oW^Mu*n#6AJt|d1G*{gYh z2)Ju!y<2ov5SyB_Gl>PrHe1R3vvkY>`TX$Vfz$RnPsu&$AlWRk8wclKZai)H#KZ{g zHIb{SoTA7Z2myevi4Lzv#{TEtGr(0H6FSIbq zXLYeQu50v}O`Ag2=$6s67j)Xr9RUW(AmRwbem)VtRyn5FD%hjsAP=rr6J2FNU(%mh z7C9H(?>YHSYrWy!Y2oP_ujAOY;wNZ|@gfe$l~`Q^d|cRhby#_3+o-pkddry$Yh*4= z`XxZVps82+g4};4uo)_1I_o%2x5 zQ*)l;n*)3kWPDnz(@)p>td?2Un67Hd^;uTS<@~PnjqSS)neYa>^G#&+Q@-=M##!T9 zp7M=uc@rJ_yf3$_4Sm^5tUzTKaD4+A*n^L@kovTKsfMzJ)+p8@=5;N6?*YbgREy{; zNT>xVBHdI4vQh2mR1`K+}-ruJLojD8RuHp7qh zcz-&)e~U-vQr6AQQ4Gkf;~R#5hoN8U`wH(P=*B4PNFHG9bk%x=`}n<{zuWl}UR~Ke zTnyk_k&)#H>pYDdG4j2__D5<8#orSL`FkC_fASKME7kj#M{Jq*nqhUR*j_`}zTYz(4{a?E!w{mDo1G0z!AmPFC}X6_N& zL~>Q@ZnfT4zN+gph?W$`sbn7F|5=XC1nbl$*~cOE%inQ7ZJY%Q@1|j=#h^RcBw8a8 z0lp~kJ@cO?r{Kq$lS}eUbb+s7_IuMh3zI{J>{Bk9$>Cl?U(sn%Y%I0eM7@y^^ZfK* zcG+)J#B=W=Ha3^%ciXm+$$MB#d*E0)C=%6_A#WNR5TzPOV^h*yizqRbFIXLp- zuL)jizj{)W9jVFmMLH(36z?(30RT(#ytbY|nGVr&i3ifM~_^Z7>dwHny& zN51AEUvoX{)+JxHk4}(&R?-jU0~JxW61Zd7iUudxE26n_V%?%qa|K5Y=s@8{cp01z zw(%lA=FgRb2kq;3t>^dW_^oFv*hfoiY8E_vZtG{he0*g26LVsaUi)$vcuLRbOCndg zC10>3qEncUW&KA8xuSXJC#H&DbAZ{FMaUFjECP>NeZ)wX7J!RFXhic@b>M3&xD{>O z{q0bmp z)zGSa%l|{?8@>3-Fn@;KabbA!W9Xp|$e+ytu7UY8zr8>917(@_$BzF9+4VHC>lw!4 zK$@NRDC2@GlHV6!Mmh9B5?LO920Kpn`hlRy2Z?N<9M1}6`|+#*+*-2zpi#|7uJ}{r z@1yuk(DQ+}tUE2nN_`(<=lRjS&feG4*l%-3=Y`>R=szLvpUbmeGuN8i zAzQGI->>uc>$>FFny_G~KUqGyY zIM~9=m`g$?*J0D$!P=cte1V#o#Kw>hvc)Tjr){4>&Ma{SKi6qvpsmOy;T_2J6t~>EJ)_wWG&o8_3sjnWlrqpib{m#7LH>Z5-Tc6i` z0dl-;l69&O9yVope*MFCS?O2ylP)>VUO*A%=ae7qquk>b-+%U7pC|5Ft1^%0F^@o* zPULuE3vvO!XGd^ixD6dyz_ZA&%Szg1KP>^T*g<-}oO)cof9+^H3cvchpu}sZCXIr7ONU_hlUE+f4pDjhnZ4>;>_>L|BVLItT!y`6L0{Ob138gTJ9awX6cH0C zBL3Uy>__o++R3+!?>ls_7RnCfqw?F$M}3>z8^vy?QBM+Iqnq{=_vxYS9%#Imc6+g( zchTpWcHSSlZqU}<_5gO|#V^^7X!971W@9Orv#I=h*>BS|1(X zj(zb2F?+2w2PdWQeA$)wjxEq?8#agY{sw4hm4_BzZOu%JS_?g}W}4sbn(4*#&+Lb} z9lC!aX!6fhr`F;Q#2=fmXRfDRWNI8bOeZ)YrwU0!8-w)1jd#pbj z*@+KwfcstOi-Wv>miLE7p$pdn+g-qOH*nIAqR(M>(U%~0*N|M3kU#v)(SBQ|wA*?? zV=I0TT*KKtT8s9EbQ!YdO=uZeaxBhX5!wqQ^s4+}WKR=tTpu((e2!#`n}_Phj&s)f z8hdE#h2f`wUF{m*n)*Jd{RnNTO~Emr_RvxLgnQvI2A^pjAyLVg@oXD%d^>XdapZUm zT$mhMy{DX!X_RY1&Mue#=-?<5teR7cGKPnVEg!BQZT5P90XcCP`Jn!3%nKPS;Vh3o z;qQ6iIzsuGzA@qH^l=8`b1CC9@VsG|=f1H+%4;v2%lLjK-&Zo;vlxG3Zl|KMXSiR8 z9_g(>UT#Eo&bLx!lr5)hg=ir}zpJ5z+7F-wzdt+&T8Jal6iZCb52k)G=S-_&Vbamw z@$BYZ59N9(H{969v5z%>m}HEeb?QMUE!8*?eEJ_7rzkdxiJc$=~>MUTW7 zcauZQm@8i8iJc75C+FRd45&MIeNs+7qN`6#>;yd$LyyQW86kG!=#s%a@;{;7B<-Gy zPMJoVZW}{lC$v3M?BrZ|U?6_t;aBM#>Ao9j+x|VSV?Mvj(P7GqxdJ+I@^g1*%Fk5} zZ6@B*T$qpfw?g(ln-^=%O9K%H8TU8 z>G@F16>KhyWX{K$Y4X7b_p^-TL)XR7^mG#!*&HgEVeES4bqJr*-|f(UJNvf;%zWy2 zlQURGOucw1b{K70*gx>V{$|Y|OlRJ8sbzA(i`t1t!avHVZXu7$>|a2g>&X8i&uTw> zeCM5(W16!0QMmgm2wN1$0k5R6X^`+n7y?9^ssxD$M_;1&Qn;jTJ zpR-aSU{LPTiu$bZ?UY{uEVpqrW$B}t$H;f$HO0hh=v%op9v{$+*Vs8}>OXO-&5GAN zwkZQGF(3J}e;Z0WkEg|Byz!Qq=MRlfMZmi|#|7^Xi~p+g*!#_aQL(8q^2p+|u@e?x zV=@m}Mcioz-@AKPtp;cH4sIL4t&MxDW2V7vphM-cz4q#R`By3*0LPyOXIjH6+fP2g zC8oU9aShK`@=aoj#eTNd-t@Mbz`4e81NfFc9nW_zysM!T_J`TOkv29kE^V|knz9=i z6YVbeHACS1!!a zDday9yAuwutM*la1AIrb=Bxnt)Ql{E}~U7ki?w~s(yisyRsEeqsJS)U0P ze}{dHoc(H-JM-&Xbc@9Z{6g~qZ4({+$DIMVfJJ;??j)nCwX6_y_(4VFgY5~N~gYuCZuB`)E%YXIQ1r| zQ@QDPY3&%_8eggNlTMCZuT?5+5U0PuM!NPj8UCzttLO9F#TV^q z-bD3u^R4=Gq3CKhV?<0YQsMYc^T7u)a0T+&=xTIV5wc|kvZV??Lvg(o1GSv1+&-Dpow|ec5QTY1l^JAJ9gLd{t(Cv!zsr?~3Y9jQ9 zj#N&A=x=~O(4#(V51VGPvEBWB_1Ny(dn7iQII*!IvrPV;_Z!YzX{~y%f3KZeK6LMi z2r}8*b~-FW@PX~MDy{#|x%$f8&jlIh)rYckW$()FjaQJri)_>xgY9Ool;^#1YAUsv9TrS5`5>+vuBj@Ue_ZFn=cNs4urf*XfDB+Y!!X+ zo#-pV_(U0#81k+H*(9IhtXx@e5fLpS%a-8-NOsw}G285!qi_E4=l!io#v#GjJa?vl zpN)SzuWktb8E+T=?)sOPe>E~+wRvnX!(SE7`a!eaelY(dgp0AA%^{V$h< zr@6m>aY=Y8zoXP)^bU2%=F?uR+qkNYGWa&Y_-Vbb^0=o>XnX7cc34m`8t5g#H;N(1 z?s3PKd>r_ne7P*)>$HRaI{zU^deq=#I(vT<+c3P|T_o*)D- z)iEcfdB=vOjt@3lGBCm`*kPe65g0vNf zrd=K0p!H89=7sjFJ}ypFVH7_o=>0QQ|*1$dp&)H9%WAn*V^|`u{idM z<=j`|ti%gXKr`AKmj%O1g;UKdJ}cWD86n$04i8I~h(4z0`MPq)<#tK_#Hb@KIsp#J zAkm8S32p?c5H8^~pV z@4Ktv{aX5gEpFn7jLrSB>%gGGS)vjONp>ty}}9x}ORlzk9eq?mYu$%kRABH%VkT}4j2s>j?r?dsmA9CX?( zJBM~9*WI=*!Tznlel|K6S}^+e9NWS-&Dh5Xyc7lZ%8Ast%jYxs{m_DJWzm4qA5Pz- zUy>SA+Sk})zZ>5F-(h$kdW*u#Cf-jyCT3j?AJl@^Qu6ii!KA|?@PqWe>Q^3t%d@iE z8?n0+v>m`cFnP1s-f`}KPJT=RI2BisJ_=y(i^m%%FMaBBZ2c_R`rJQDd7FprGx{`^ zALjmCX!@h)K+`ut)0XF-*M3}>VSS}|JWI5Ld@-~Gj*2elo<8Z`=<|t;{bZZB&AIZt zt9R*&T%E1(x^NYpsCt5X7C=M#9pjns;OY#?j8gKj?jUZkix}iwa(zsmH+x$yC-!kE zx*?yn7fkFd%|W)6@_QyW?>x?tsAkP1XViqd*X*2g7HeM=SCENG_Jiz$r{uRIP^pCYpZdHbTB&sMA;2X2nV+wr-C*sv8H0I(ZHktb= zc3wuD^3tjCT-J2ZXM5c3b%mRi|Aj2OkL$hWcecU7&GhR5aA5MCKA`^_M(BSw{nvU5 zx6ecR&mME?OE!IpQAReP+ZP|t+`h=}RUD^@F_5j=2!6bKAj%GFC#MAa`4z=oy!~@! zmh_Xx+51kkaI4e*&v5-y{=~yBtxHa?{N9xkt>)`$;#$R8QMz83-BFVZ% z4!yEQR`L#=vtQ@Y)t%k9Z&X*lE#C`+rc3>VHC%a!G^;z#;`wwgiqo40AB(mUREE(u3dFc=|e#_K{2Odg>=UIJf0Rmf2swW}5O>&)#1@_Aq^V zl>W3>spJ;gYqe6BMttG!b*upbUr&%LqW3C?eSwWSCOl91z2xDf+X}H3<}&N$9lGvjm?XB^L`ZQ0>AABd0H`wKf)G?uJ2u!57q@N(keg$1L-W7Y#R?ZjH? z>lWp@Ti?znN8l-BQh)#GU6ETXvz}|(q=v^t^NKUiMc>3r2l+Kp8%+H>;|QM~6&|A8 z-&=2=&un7Ae512VWV?wk;`Aj+8CM=&OJDSCIX=lsd=kmT27H<*b3@|SdT^k*P0c~p zW3xpVAJMk-qsHye!JpwPzjBHLX5V>zXWN%ogb#nqrd2&l@NGk9S&6UHSJD6<6~Pl) zKWz9RIL+Y)hZo3E>=7NvR$$E2+t6Old1dHcGk2!_)i|FF{!ijd?W8YH&=>h%JxkzS z{H$u8t>IZe{mUcg<9^n?pID+?kgTqJUryfw_Q1{ejqclyKi{`Fn5yM@o-fO+eR>JM z@d4IA-IzVPW^Kj=oy+{6+%4rOvi^MBg9ZCAH^>rtZSu5yQ09X~* zcKdo9-?0%L7^`q)l=j)P=NW%b`|h_|lWX=9t3a;Zg@(s*7V{xs{j@;WB-+un0Kr(-O?gyhe=@zq| zOYaoZa^4AE=@{&w0eK?7RPjb^heu==+d9hLD?+%c1V_q$^X{RH-5qY`&)q}0ka1qk z{>iIP&uck+ru@;>c{+p7-*t%nlU43b@L5Mr)%Ve(703WRtAsul-mG;mE9Yn)uMitr zaUsQjWVba?MsQcrry^|oa_q8s*k8rka|OF>6~CwQyBWJ|Bfn?xJMWcC!lQh_l9SZ2 z=%aSO6?0R(%|6E{x1$Q1t#Blp4LPScm+0G-QIfr~+0M(dZMGwy!Di#V?3^Js8{c&T z?}TCSnF+_4o~b==Y>osz6Pv@wIhrXp7eg1x*N&j03_Zw>cE;Sq40<{LnH+5ww|WNoyudO`O-?|-IlCIM{X%ya0r?o1^QZWw7O^Q(8f4AQe?TbVEUYd;{ z56m+MM$x$Dt~2%%KcN6RlAl0cxA7C&xkj+{JIUb|{oD4EKOB4r-G}`0Axn(jw)ORp z^}PvX4Y33hPcZtL`+p?&N9#!ftk0EgADBe$xFdU{&;4WV@>x~rN$&ri^7&`{yYerB zf9uFogtpPYn+ti5*3>ClUTp#&PxfI_&i$ zU&rtce6%`^kIZxU2pMYgm*WrhFc!wwfga@RY#oMgqVT`;_7QSdN8$^YuVi;Bj*7gV z6d8fvKCkzTU68o3ckEty@Q)k2MIUnPO3!udz*7i2!sVe4GnSdgH;&yPdoA66`vdUA zuXp@6#w0El>S08R0>*Zbl&CFR{{~>)iY@8uJ+%0yzI6@zy z^aa~+vxyh;{J-u+hXUt7ycpQ!!zo@Y|55D=maUhoFZNuND`!3fJ&5lM9i3Jnd4+uN z(#DN{ByA{vY&gD7z{i0!zWxW52kyYd$bn+61s*v-KmG8#9fw2?aQ}VE|1tbuj!aNK z=FO)$SDF3HR-yx%t=w?an(cE!#7F9gpG8x$YKN1g(9}*8=|B!gN?E~;& z;>yTEuN{(!M_j-DG3w*}vA^azfGgzDNVpO{Y=ht%hW{pu|4RP{ z_)qgS=y1)|bW4Zhv&pvj!1)^Vmx-Z>|E?bN$&#UA_>bow$;5xuBmQ$^C=u3kxcDsx zANCwkR!1qn#cSy{uZjO1J=@k@L_M-?_0Jm*9Q85Tx1Rk0u`T-hvpK6Rhre9@eEenc z=ilYEg_PUykYc(zccY$|DC@LkSH6U86Q2kUCd*&-8+-Ku_7OGZ_S)xjv^{CZP}{z5 z$GK(0#;3r$*ezE>3;OO3>Q?OQBiwu8(VT_m??h)dUD`3>Q~2U1oIKf`RH3I&w@OY z4j2i)qDk*qV5>h8MSp0H>%)Afn9c+LDjLt~*vPeqagtwn8F*c=rg~0(gFW|fnCB4b z9C2bmg3Hh2Nr#`Xl>Y*PPS+`$mE%9j}6Cm4Syi zgmYc)Tr0U6{&V`Nc|7sn`j>$pT@*zR#jqcz0fWtN&VC@+!0(SAJdZ=`DB=}?lKy_@ ze8m3qc3s5$`l;fq@LR?3#UaZ>&zyGyZJIvtK7J_ctalbUY|)CjCCtf~bG%AfD|H(* zcdD3kt>6)2TApug{;%bNTb#@O_o+#&Vm5ljg$k z(=x7^(DwoUq&icpxjeF71>*OzGqLp`kK9p8;_OVdp#SiC&f}g?l36{xUo*w=kIY?Wb z{lS*&8n8;rbT#?Q_v~RWqmsfL?kDhE*GX2%a$PU7N*Z*%*ecnoYk^gAP}iyWFS^d) zI_BOzzRUSOm;0+I$JsZUi?Z=-=WA)KUj%-|6Aio-cD(oj*5SQdadx~o`Y3kvc690! z&`T?_p$U1`##nD57wa0?mpLZ3w}M!Gd2lpinAKMWzQrGkw>0XE(x9DJ9N&&lJe6;r zu;)w*pm}0uyPJ96Kx{9;dz16dd-=rDTlLtd8gpdR;2u|g;!d2YDY}Vn!IqVs+ZHtW zD3QBq7g-xC6<-JUaAtk$Dfmr186CotHV>VGuioN)G~_>vzdA=*W?!^?*1AI9K)8;dh`nPk#c}u;CvCSkJmc+fi?2j+giKaM0xc^ak5{sw&^FFCr(Vk z%%dvaB-?f+cx)zaDjik`O)n>QE}uwtdaNmE_AzY-7GtXbm+CX|_f~MXiunuKFj|{; zo#Ip0B*CsSLDo8yF)o_hw7BZoa5#0cO6+>!jeT3-6XTD-^U*qAiTJI`tSc@G&wy7VcQKxI z#G5U06d6xnfGd5YA3wZVV=~uD85*j0_VgNthN{4;1${>EqEDP*Wq86%N9eA9Ay;lB z*exTY{Cy|!6*d5GH8QFPKf*f?FF)dWcuVsKzo9-|k0}R_tLj%io{=fJ^lJ=sI-YT# z2v1Fh&!)g<`J&s8cSQf0Z*qf_0p9V!v*vxyclq~_t)Gr?9;tV~fAMK-BXzY<_ruf; zA9usQ)!?BAJSfMhOnXg%U%gjZy;nJXv)to5iVxjbnq>PG*jBO&hm+Bo(}`Yfk(i!1l~4l8Vh*# zu+0~WJ;l}z#$!K5U20eLs$KDpw~l(&%6Mt!@sGlDo!5mME#@+a!zUhf!L7ydc`t9#L(wG2my#;MT*F!ec3R z8w-M#c7xC7IrFa<{N?$|OZu(6+6Huf{(f7(_P~oqzU;8>>|wtp$(dfRoGtodj}<&N z9Y4AUKJCQ@pUNL|++p%IyLOzpe^aN$9=_m7bY<41UBVg=;$l(oUMQUc-Zf_86XJZk z3z3Ji4SceLfwgJ?R;#ZVJ41U#Bx#F%NV-;-vB~Q4pK02Zqz~=LUF38)`cdoKK4P&Z zmWw~L6?~_U>%dyfTzj0)x@TOFy?fK28y$!IDT97u^r2ijjy?qGL#FcS?H*Gu6ZG^C zT%*i067geP=?sM#=ji2cca9i zV(_!!T_ZpIeaqq9=rW$)l9nTXOVF&{h(c$D3%~_qX7m@&3(%<*f%1}g9(bG$FE1j8 zMfh^~yUMc9M35h)?~C+~?}f|A63Q>8J)T#Hw?zv)k1etFBHu2R&bRGLXYI`5VCttK zd;eSX*1iZZjLT5B_EUCYxK}(#xqNhuoY-s7}Wg|DLb zozA|OW*(e(uiVRe2t*XxcPZ`clg{9`&hsq;KL_=WHVX}IvP?dC9 zm8^#UDv|p-V?=S42(n$Y*RJ{M`YXbp*_digz#GbIE+c%K-M@x!+&Swk@)dSbPW_+05}u>~ zE}YCmvp0@A4^8f@=mxnK#ZGg}{6x5(<=}3@t4$>iAUdBcWyk|-8C|gevJAp{zahePCvfVz`qgpLmS5bcy+`7fB&O{ z{toybe%t@pMXV`PzKYq;W@1l3(Blr=;yyJbe$*Xs5AES!($ELt%q#Zg%a~Eso8BALI3XPT{w_Mcs)*UjN_L=kg0=3(J=ND07X<$4(#%6Ucy0 z!+%$WZ(+QR&WHZBcYYuUevmUwfzwY*zUW)|FS74t+sVF{&rUu;*XlDHHuca3=lHfv z=b7XLyqwv-ck)Iu+Rx|kPW+~QeX!FvTiAvJ_PO(IAv#<(>x;)wylsBB{aCks`6NU91P2b;@!iVF z;+o+4YyQyLyQQHPtd|9tj->s~)qF?QwZB}K2` z)zB+=6}>7SQ}a%;V-7j7nqsaiEg$^=*blh4?XCSJ1B_V-zP zc(%VEu$=WiwB1kJvW-MDcfbdZowVDkpB4U3ay}#2yFP3iVmte6`)N%0P33~xHWD`e z;NIxUwQ6^4B>moo-J`L+O*v8c3)$48{iVC>h9KS`#!n-2QN%r9Jn(Y;Mt0H+0wo?I{OsTfoj~+)8`f^K5=;gb&?z zZ=^ltNNXRT4O)9g9}i>G;TvDuPQS%x_F0%#$JMmut=qN5Dj19HjKxAf;WulqY{fJ?EQO0F8y z^!dB=_|2V1Mwaah;g2Em9Gk?u-pZBdlHro+tDJa@cv$mjT3@Df3ypkGj1Yb|bk4Xa zzd>~FXRb>zN$g%j=jG73=C6vJ`KwHHegkyA8r_=dTyGzAE`1!)p-&V7AvD0gxR zG(Fdr?*+hUbOx{}4kURMgB~?L$~y``CxHxf`L(}H5H>$LD}U^!NAzv$4%7-u0Dl+#o}F7kHbLDKnU=vLXcv3$`rIrYvrReYnhH$~`qzvzQ+ z+brfeu}3wJSs3uO6q3hUSVf!)8d|Yt`RNe!sC?%TGDq~4fY!ttiU(A9>Wx6J;*&y$ zPeh+4uiEkRBFwLa|A{pNj1Bo)oCA!EE0!F~?puhRuCcCPQ+(Rl7tfq~EM4#IV;Oxc zgr*H1)Xpt7KPn$nKDmL(d9J={jrBh;>Z*cz7%Gc(FLK zVfGkTUUVLc)ufmQqe^_D1^R6W&8M;*W#R;$Xf7FM@~Gpi{!cMpJr3m=yTT6E0z@F ze2zG|`|>AmBW_(p3~_qRiaBaa`-R_zUb)dXF}$ee$vLl+8~z~q?zPT&DOJGU3(kHE zPF}~R5g+$8`(82cS6O$?#0KjN4Bqded>^?V<~{iYz1Zcwyw9V)KF)i|=bP&A#>dvs zj{{a--!|-#9_E)U6SGnty}hPdaeVE|SopPfT4zvJIwX#KPSj!FFz<8%Tfv3Lo=)dco z*6C?*2!skMi zK|%PljhtDPgAaT86=wgQV)m~tyeO#H=YD^l^-aw^GY_>#YeWs))+fVdd{d}zPES^y z-}G75H+9aH;)ynn{02v6{XAotLIt;h7uruw|jWcR(E3Sq0u?cWB*BfB%?WZaIB(>TbjT>|q7}qsJoX zFv;6Co|A8k?R#-JUdgkNl`6;~uKC4_!&{;6*mmtXr+x)GzVe%Q?L8KdHF02-u82Vo zF1+s9?xLwLsBf(QI;&5}d)YyM=IN8I;l1b0D<{B-OK)bIm2kKLUkv%)itlB3!{c|w(Dy;tFX1=* z(=iTQwwoN>PlOx!woLOe1($`P`&9b(vKRc=fhJa5fIi^ac?zB<>Z0heK7CIhE`2pNvZOKIv)Qj zeSI^&V`=d*Gbgx*a*YMP@NTYcXR>#x+z#qmLI2CqHH|ZD7#f4Vu;~xac2G9Rnmo%I z2QJ*aws`}3H#!CzY`jfFqtj^UtC{G>(C=V=Qx^U5(?7*Xvyh#|tQich37syV;A<)4 zxlOlrE|Y7c{|uO<`&_;f{q{XK$V&;QUD2-odF`7A&==nPD%s0%hljL>uJ}I&90kD9 zxTfHAJ#e@*gFH5SsEG!J`z&biOTcnAjM*Jq(qMG+5d>?e2iDkl_+Vl%^(zm|S&ls? z8D(re>?E(vhu#=^&zO7PTT_RYw+e>dd+||Y^6&Bo^34L2Wxov0(?t%at-JG0wfBz8 zf`(*gN+(@HKSitSVE%gWQw2ROzt!Di&ffb{3?3sHCnf|zXn+1^h@I&>&yxtr|s#Kc|v9RW}uAIrx<;DjWX)f6#A_Cs;O_t zyc>NpbVR?pDC@STdZ&|1VZNj8T-vXueLr}x>CP8EK>1w8DwnxWx9xt~Hu8qH{ph|Q zs|@2fqzrv9W$1&-Jf$*D{iU35EqPJoyxYk;jm_g+r!N36v^8}OIh@4DE)6ojhkZXC z`@Wp@+2x#Rs? z9x9P}g=bhFfxd|%hfKSCb1S)Z5p;|EcDJnLgBNC3_PMh6dmemArabMznU~&=;CFlX z_cMMp`dWT|G2^9isshfgUvr*|bSbdOr>Ie#^di4a8ox zk4*z*-EuMdBR$#2UYH5=HMBP%S6m*Cf;%5FRdkspz0Q3uG-vnMJ{K#!ziZR_tK6_m z{QW>Cd&vWz*IxQ5eF#`~j7#Hd$4Ik>Y&>X>_wVvN0zQR1(Qa}v_5te% z&00&1Cvh%28T#X!x!5?uv0~{V(KO#nPKkFS*mIV#$FO~P{==`>>*eLY zDV8F9DUV9FT#_~tv=xVTcCyC*AY7a$nAKUGc}WA z{0Q{J@^yU08LE@sFb+ z<{7vzXaD_j#xPcCNxtn46@1dz-tlEdM(=L6K4JEb)Y(%vDDR~G3Z0XcN-klZ;2s49lRi%=OgaKSU;e1F{0;(XL5f6ny5Fv`E}uH z!G~-!{zla-8$Rd;_%@e!UTMPz?ExP??BzCm&^tP0b8}?24Igv~e4BR!ueRZX4}kCJ z;i?O4_}~rTJKEEEz75}W1K-iS1_!=k2R>pq20nCv&3hjWmjYij1YIF78^$sQ_!#ik z&^5rwR>j2!Z{ZlHxjOW;t&C@84 zO)^k^5znzLP5B7rx!z?HSMdBA z>XF=UhsL>oK;=t$&iq_p5#{H4%1`Eb&?#>rH@Ux8<>7Pfq1Jp0;$IrggI=EiO_Wu`}{eC_+ zV6V&nE`nbb*T2CEv?QUSVtDsb?sMS@#oDuwISF{N2l|UabDd^C6mn{ivD(LZ&RXU? zz+nRVk-ynPzZGjTx{*FrQb!(nPqKr$q3KmtR@Z_+R*UlRcd*uI$Jo402bte>>$Poy z+>S33t5JR3)cqXvo235dpvzUzvCbiYr}wW%&Pk7TI&}Q3^gs8x;Ki18j<1PskWKa_ zp693eez$|CNG`H|OfaQE5PV$(zOa4H6<@D^`F{pqMP7Wtw+3JEWk!5C zeEh8V7<@fL?pG#!ou2_;1s@h)1!?%23ciTjpDVuF|A+AP8fO*^&=+#c;0w8w5nqlR zdscD`e61Y@U(fM8oxXl?a0L1y7s2a48XF2dP-XVM@`wLfdB*U~t92$Gc9#6Ex9pgU zv6JDsg|yGUcpYu`_y*!L#A1lA&JH)hBiYEBMtH=1_NSC@JCkL~u7a1maiLG?9WkJ3 z@R@lB4*dEa9LzS~*)bsV4!LdKVQb9bopL*YjXgk-S=gS%d}rcc)~CXMtv(@V{?5}U z#YPU&zI>Jf`lS98U2{>&#N>D;yYB+(oic92vANci7Wqc9_arOE@;u7>0{k-zU2M~_ z?Gws3+Yz+Fl1;X)p4|~gZ%dBdfP4!g=XN0P6q{<7e}zscmwgNTitmjjzIP0nkZ!kE zdd5`#Qj5n%^2(2yY5AUtw{8P3>c7_c2{(iJ!*+Z%F%cgKm=$jn%<=Kqu-JJ;z$>4A zDlnG=bM`g2f&=Ywo81urykj&v(w;L3`zaO+_de@CddEy zDE>!NhV^G#fWHk}xD^{7yDGYvd+aAklk!cK)*F=a4LqQ{&3JKOh;I`#^F&vMOYw7v(c*-qe*DSJAHKT^54lsmx>CNS%wYA?kdAKIUDPMzM2a*v>9~ zqRfTF*yk$F{Kyr;)qMG0?5CBEE83DRJoe|EgK}TI zDIQBq=6pSe&%|r`XXM2po8L}|-wtKqx9#Bc3HSn@O8{pSm}Bsr%|9jK-vL{v_zk=p zelxKchu`2QJ;W z$|tLBeycLR)AeR9S9xw<70kpOl5Gy3O}dphz^$q67u`C*XEFFpYf&^uH1Iuk=a$={ zBfi^q(M4y|(S(a^o(pUk;JGI9zQl7THwao$uGxHe<%vlbrRKwXool9_J`CRxV?FAP zu_`7Z`TQ(Ar1+%r$3&xQ+b!D-ZN}+OFZ_F=G-&n{(EPte{l_hZkhW_SNmqVTR2R-E!qNJABGM$ za)n={qm=6hO&*mjm%w)PyCepq9J;y z;38WOp*KBx$gB?<&_nRf5Iw~G_o-)KO#SwlDxd!>eGDBLeGH!%`9L54l|Gu-Bl`F- z<|2TS>@!z0_FPsBCpremk34gduu~!d0y!q<8t)EDvhf`xmmJN5DD?Kzh`&XKL z_rd)u6Uc*j6EdL=zFr6K-)$Kiy}y4Hsc?!J6Hi7SN6^(%&fCDA08?6aoH>5~bI3;B zXK^2e59G`I{it_a>y13QHoW+o_(>qjkcYh$4l5$n(73N8Id-p_Lj-Hd9w*o!q&dvUqd^p*w zy7y6^<_45ID*2aB45d@HJL_wv3RYyHiG_Av7RCnbh_A!ese^x!CEf6G`tIQlm7rrS`X;NE{Dh=6XP4O7ikZfu?cwH93$=j zf}Um_*Oaj0z}invc9V&>7K{!{*F?}Wf-hNZ85p~3d4^p(&=2Hre0x^-KeMfG>-+Wa zS~EP?jQy;=gM?en1(M&u+NjHn+_rsBdw;{;MfhlDA6@cAk@=Ek?%cy+`J9sT;3Ez$ z6!TMlkYt`@qikL6%cHg0{Z>xj_wnVrkx}WsoSWY+d-EUvDYI--Tx0QB^35{&n)ZCc z;QXg_m-N&8G5C_>i3v_*+$OUZb1rZ)u9|y|kf)?Mlm7rOc7M;Ff4$oSOU8VPCVTzJ z5%L({A3wN$q(bcg!#eDxmH4;y&|3q(MI-q7>Tj6O0Z)FOujIM%i~abE%3T+az;Ba! zzA+3r}h9_9=>B8xm?oKz3`6w z{zS1Q|7f#(WgCv%j_w-b82P|o3{AqPJ;0(hBW^5J@Mtbod13dnE}=j#F9iGiXTblD(-S0eY5G; zUTdO#lh2|Z;(1gD>&#S#=^iMym6RBh;xi(pukhR-N$dNOe|^K;wTy zozg$z>F@we4oMj1GAqGG@XFvCEupNw>j9Tx!9`Hv3KLV z({q*6T!ZEiR93Q6bH=*bV_?VWd!f-hWTtX1<@amf%H$%AyXJHAIwJ5*H#|jrC8cxi zdyor~M-gPE>4)r96swh<2)JrL+3-}EvDxs&o*P9V2NpIG;*Z_RC|qu@0LK4Tgqa60os!Io>z@9P1V3z$dE zE1Ssvae004li3r+__&N;!@I~zXgc~izF`as7>jz#+UI`r3*ntHR6alqc;oafLEp3w zNDa9vZn+mJN3QoPrM|pAVqQxn=e9v_74%uZYn_y=NhN+y~ z#r;Y6t)Dv9;9qNeBGB{=!n}^t?(k0~%Bu zTKXWspJ4eF?Z@E*ol#N=ybqGk8T$d>E#vzir)(t4~>S6EA#6D#RwpU8IdA{2{O47V5i;RN=?NqDQ&8r}C0@YHZl zb{}@g=ry;^Q7q{;Vo8g#kqf?H>P2|3k9g}zXva@q+}}4&w)WP3#M;}p7~Fx=6Y%5f zz!JS1oZbZrCO!5AdLRX6w(o%Ha#S2EGL$L4xPyc;iO z{+V~{;T!Rc8?#WkcHxmaOAh3$vdADUQ+Gk zT~$&qGD>z`&YEebvnTmldX|v?gzZO6Z?hZgd;uFty!Irv;fZye;mSO_e48hsu{h6_ z$F8*wpCDgt8}@aaGFS3jV`1Q9YzAZ+c$WMVteOXGkLF+Zx74-6z|ENp$^Ic{E;REz z#Gm$sJg$8q6YS$=4c(t>qq9HP&)64IW#6Ez_M?eb(AIp$7#dF86*T7yXL_DP`0M#`yVs%+dnuL zb0c<4!auGFdi((Kd<6JJ_c3VR#qsO-Y@(-n z=)8qlWIMpd^l{Vr@6{j-N!XQUFUkvSC-E0DWl-}wKInrF!`Yo|2OwUd9HHO!x3;C z-8e60)>nz_{@c{yDVj2+c=8!%kvvr+}wR;sAXDzTtD`6i{B z>v@NLaJWB!joL^YE&|90ZY-`bzasf5=-QZC3W?9(l zk#&s8BKilPdEb|kqwo~ILkt<%-3o2rW#JPLM?_!wSVu0~!#^p@tR+u8nv+_EzoJ-O z2t65p7=B=EpO=lt_(g!JO8dgr(WlZ3G+GBul-hRQ=YeaXvrm!ymfpLtd4TieTH!I! zM=Sx~!`~NeotIK9!T4+L`0>m>dt!9QUom#l#hS0^4iO*0&s1G*-O`6A(IH0ffJ5Q@ zBskSv{EV@AT^2Odw}iPN=;(F!=^qO%Nw!E2-$YFDLHwrvC~0o@8vgp>5%yJv;AHoz_L4>ZRTj^MjnDJgP7HyZ)v5^uv9owWo$pcyDAy zT0J)rE9l`_kHZ_PH=Ty0gN37i{(V1dn?rNlKF{#1wT(c3Ptum`Owq4wzssyV&ib-m z>4QGR$E$$L#t(hry<5*oXh^tm@sJ0NJ!FmPdWvuLo$Olu7Ee5tb^7T8jN3N$B>4ML z)dR10PuZh&9bi ztzB$v?7i|;1;65+@jP&2+F)G;xJ##x*VrpfyeT}3Ki}8dQs9wH>L(va<05=^fX_IFJp?|#1wJ37FUO%N!6DidKA&>%spl>}-*E6b&cWv!u55<34eiP< zg2ueEd4*zB9{64}@Qv>H7hpR}=T1b1O-5c!L3ZR@M&G{kbeg`MNM9!-Gp5krd}2e+ zx>#>KYm~{)8jOEO(QjJ&pg5C!z^NuynPq%9}txw2SJyYa)-vuUEf`H!wVVuq4f{)&GpZYH~EdduyBF=^X#+i zh3GTD`80hv1fHG;-UGF{5XUnX0{M-I8-Jl^xRCFdh?@>N=bj6Z#2+`jsK z)={C4q=#bFrk>rZXASiv&=tx>myf1gbH(cdLCegGMS*9lmG`Oag7OmP8TMosWR*x> znETWBJ)(Qj^H$4p%G6~n69w<`31i^BSZm)p3-BjouiE>&B*EoQ$!PG_2_APsBT2r| z9J{{J_}KF`cJ8yvXe=VLeI*9x(wz>@>&YF0-(QhVUU)6|tDwIRqtiLdqLO$-DSlEP zcr8Z8lp^;}T&;6xLUZak7rIc-$2!kHIrzK^*`RObN0wr9ZS{O#^NGQ7QKuaESXxB= z^1HS(o`0$D*bBK9ndsJEGkfs6<@jwbJT+H3&#z%0WVJKFhNp&@iVLR;kM@dJf8-PD zsPHcHuw#pMA7c0)6~nYM3mbHxU(*NAevv;q z&EPq^ujW#nC$h?%pHN1>)XqWLQN4CM@@0a1E>j!e%JhY+=?m8``ZCSnBHNr{mP1{~ zIg8;SZJ2Q^vX-`S@AKet6wgeb!KKe>Gs<%>1a~y379@%-i3ZJ?P23-Y%t~L(Z z9uvIrSlS|f&yh+fO$_mDGxuh83`k>~!vC-i1^C0`0T*3WQK7Y7_`y07$W1o{s{u-bY{l>=Hr!mp*PM&SZv-Z_rFc>U#WYy`gB>C`Wo z=A|1qUKguod_vF;Z6y~m&h*oznKE$E{ixO-)E|>9;N9LNW1@S_g_YjvGq}?;#doxR z*nJ=7cVvv_ZA-&GWO8BECE;5G#KE>R*3gp9d+lLtdn(aO+pW~IqNgQR>Jau^e2X7Ed@)>Jglik# zwQpqG@O#6Y=XC_R=iM)bzGF*V7_L?h;`saa_}Kd<3XRAfH1Z|a&f%9G_vf^!IOPy~ zll_$6A3wN1RvcbRAaA-grqGGGy2%kI20~O#F(qnftp-t^Lwxx6v=bH3~kB z{*HNJ|9yMT%xBM_Vq_}MtLPv6w-`K{-h2r*Fi z8=VI(+#YYHzxqvoj|Y5r#`*U68s8uu8S~-rcoS!f+hcFzv6y|wLc#I&n$O<_PMiBG zb6=u)veK#6sqfLRXsIt;#M-?VfUVObpS*RMF)SFq?IUSzoARB*k9lFH@>Rpv|HHKM zAH-*Wvv*`Z`%{-64q>0MU)(76dVPQVg#+smWoO6H#oE_!uHgfF{>;qBp+~fbtarX6 z0xeJY$(h#nap)6xCju`?9@Lv$+A-mK$p@5eLHt8|-ygNCtHa;mSs8n24B68aS(uGI zpADU5b+VR}`~M<`N&7H#;|uh_KmG9HD9+%Bz_VswS9qxxx&DHc*U~!+eON)v1v>74 z-!`$gm+f~9?(e#-3Ozx+-hDJHfMdA*U0EcEQcpfwmjr~M@DD+hcY?T)nH>(jJt=Eyv4NXDJSr>LNv?aUKt&)4#CSzYtM z?E>yuD~X@v=riDn)Y`tJS(nv0+3fFX)Apj%oqnxxw{1A@vk0xC z8lKjwp)_*oM zuTjQ4#@K6bzBqKJ`BV8>nQ&_Al%MF-Y3{{a&b#g;VX}^SS;K|2!RgQyl)_Se`AM2&gh0tS723|N`2`@lfUS60BO?q=u zgV2@mBRhK{xM^Zdj)|iHkKk}&P}^?1T9b5{)+5mFP4EHxuk{goApXf-DbzK{4`YbK zYfTb!1n@?#cmsGG-WXWJW!5{W&&0N>8Mk&|l8kWID7`_Bklxw%#J3&1cwy2yr9S!~ zJPNiO;gup{_$%O@1=M!~_m%L@!MBNpGtOGuNBp469Uu7TsFi_#hLgqOjq66>jX&}5 zhFHXFpVXNA=E3vvBKcOTzs)L%;~&Ji`r%pmbs=Pc{KtpDt=;|z)NzSX8BrnV%xL#af^EvVWYGEv20Dv-wmZ@+pg-N z-G1ndw#*rpqbU1D%D%u}$32$6rN_$QFT0Ca)4u*zt3-P)_Hxam+|`uRbr&#PW?~(q z`)bIGQVs?7?osXEc$?!x$v0X~8!u8$K7!_Y)z?NVw?#3MPJZY6^82o!e_6hOd3KOz znoE>DXv;Jk=1l!ito26U>8Ed^?b~aV>30-5FU?-xZCRfTue)RLe3h*_hcO_#ow?x* zcKaIIA)Y%_e>nMlGmZYpoZqM1K9gfq3A~}9=P>Y)Cl0G>!9{(`JcarVM5%~}C z>yYcnaK%A$h*3w8^$~2)cG*YPmEmi_i}BCNYbj-4R2wJ3J%v`|W4<7E6Z*|ZthW%~ z6FrCDJ0?7XZ)8uQ(~b_Yq0k2d`{MK4-539H<)7gbXH$>tH`S?p>BH2CJSL_(Xe0f_ z|3)vMKfHPY8|dh8Hqt}X?Y@`qFWbnqg|>QZp>o?6GHpFb8%f&m%6j=6#6paGm(FqJ z`(IMO#wUvWR{gTE9!Fl!#rByxHek*-BYt4ckXg@jttVKIERQlKjPYKr)t0l zv7>4R`!SH7h0kw4t?A$&Cv z`j`ydQ_$hadhywlKOD+u@rlskWMG~WH1jCw`a^r6clrnSEVAt_XTRi6i674&u}q1}gR_fgtyCFh2I_t5WB=C}%p^+)Q!;azsQ*jl@c%Ice9>>$PLs=${ITxNk| zf% z&G}yq#G0eape@QbQ@(-n3Cgb*olstLwW?EeqPW(2+9zjefG^93>j!1se(1YK@F1J& zr@+=k9jj@l8k`*mhu!R#o`bz69@Sik*6PIR?@H#L6SG(^a4~&fY%w=r+xAiTNVHpt zjH;MspKGvv>hR|pXzpEgyEqfyZ2)KD1Dzvgcn{pR0-K(xto}B1694VA&mq;G;MyBJ z3V%)eBDjGTT-hqz=)3MZ_JPK)pU)hwcsE90;=n9?Cc$Oou3+lz=QO`#mu0PDNd@+N zoab7<;A4L;?V+sLf#__Ta>Jmhr/_72k?#=^sLWK970lE~tn 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 )5`YXX zji=*UBAXpRZV~VYS)@A^`uZuJ-#$ z^M+k*Rws8+>*0N^8%&c?#PzGe3Ij9h4X&efaTna+p)bx}`iB=kP_Vl>H0Mpi37WBU z^rzrp=+{qylDYK6=fmf{K6Ob~J|=3%h0T-S5H|U4Ex)_yF@Gpd@6pgld@-)JD|-Ug zIJPZFY+?8Z$k^@?<}@h4CGWBsvH*k>g?yAGq<4jqsJSvh=5cY7-*H@U3i<j*IWV|&|N@yMaadxKY&!JD2mxHHa`qNtAd9y*SJ9jD+9?QU9+CTYibWqZE zW5a&dyh{SKzH|^BCj~8&X}%J2^iuxv;iIU4P`?5oB!Yf?&C3C9{%8Ykw0o5xqMFtw zEqFELD3z(M8_X$8i0Z1evc25wJCx7PXEmuXBj|!A^L~`@55ln6gXIs2LQ5S4zA&Kk zx*Wm}tzTp}85tK|`*;Lkl6L$!_Wud#)y z$IS)kUSwla$ZUR)gfV&a=�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⪙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

  • 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�m2XTeGI9$jTkS!}yd9ta@&KI;fiVo_k~E}3d` z{oY1Q-ve{A*-iqZ%!MK~u8(3i^sJz;pn8{o=2mJ@&;28zBjs2xV47iroUvRh%=z}M zFxPgn1P#n`ceF+~rS-se*b9G?*28gAm?&b=`i=FVCG*#nb!-okK5F!pORj4U5mDt; zJU4uSv7Y!rPTAKRp+!$hBr>nn`CR|QVCcd7IKUL^J=mrr`RynK>XPQ*hG&mxB zv15}aDjN#5x^g{%QR~8M+ztp8Rh)_Fb2O~-WTNDTgX}!+{a&-c{{>TP$2<^x>pDdT zy>)LN)kg_(TF4P2as^B|f#yjQM@R|D+aD_vq3k4^w!irB={&Xp2HzsL+s^C)P~{u? z8EAn30pn%t@d4y=n-$%iBL;^4?@P_Zj(s4w@I0J&#BFE8Aw>wD2xi5P-~`T*ynhw* z07qAOp%^|}2krJCm5g2kWI<;CX8LeZ3{oxha!po+{3jjXQk1{ehf_+@4&}BPaEgw& zg*RzHQkwL^V&*=|n1OfE^~#KZvg>P;;YWU6MiWMG)7m8BF@4Ai=~!sb=tZM~`_RzZ zAhQbjuzG4=`A!Bma(V0V2ACv#=o^8DRk_DXp+Ci%|52{I?by_&BIS_SMf{VZ*$z; znZDl6jE91R>Ao=Q8)e<`P#`8T;f$_h7oD&tTge~xl{2!BWv6kzmlMt@>}bn_!R}+V zyl_EX)s#di0-vZq$zg=Gd2MBA{cY~Zm%g`i{4;$0(M&|*$??a$avr`9JTqWBg0$y#@?>`*$7ylJdiQ qO%?~B|9nMm!GA0!pRo{#z0M%vbN%X#(?83s13%~VMYa8vZ~g?FiSKv- diff --git a/content/notes/images/google-domains.png b/content/notes/images/google-domains.png deleted file mode 100644 index a43826999d4f9dce45a0b4ac1de9a84f2ad9cfd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73570 zcmeFZXHZjJ`!{OG2B?5YR{^Plbm=NmLY3Y@3B}NR3C)foMM5WpD1_dm*MN$EfPj!t zLzNOjl}pFh1Jp>@^zikbiQ%MZ?;JNN3<&6|cP z^!Fc;nomg5W6r*Pwqthh(q&~q-p&Vf4Bub8cyJG+uA6f98tgdf#wGZP(&yK<_Bm}! zV@I_lQPtz!J|6P=T|ZM%sImaL?bKa=lR~3>@V@{2jJ$OSG5+_-vFpW`uOI*SnQPdw zbN@bempuhO@jpM$2siGX`1i>O&G9S$KA!MB`{Ccm$EuW`o%;7lHQNcUe;URo+_p=OzeM*ionOf)ViUcN5P#FC$rvo8}cA6ImX zi1m~Y*vFn{ptCBI&^JNp35ze`}G;JouQ+rD}0jrJU4+-+!yiMU;R z80BF1b&B*7CwX_5sJkR8xq@`72-!aa#Xe~|Gmp!6Q0PDV?*X=Tub<=!bskT9;{M%8 zQ!_#(0QM5k||=6U8PQ>7%IF7*s(0?>{YPemSjHWQEO>YQefxVSN^i z9DC}M_x3yHc2=Ku?ym{3MMp_)sj8?rc8vtg_pQIHFA)0of2+?iR3B?=?{lK3qk|6j z*ZB!k&kYQiG-g=ISGbL9%csp{a;io%6B3I}V5ig&2!!|6h%^)(CTCDtAbonEFW=Zl zM5xO|Sg-oCdOZKkXRDHIorUl3=)$EL^7R@T_!&*KZ_IS$tHs>R^7QcVP_Kp?CJI|i zx-@#ugxlz#6S(46w-Xb?!bT;uTUzD^OQvMJwhHz-;&e@(HhbgVSk?xa8W&lJ^lMOd za{Nnd)HOBnUzNhV=l)!NZItuTu`jQ^qoc!nF}cj4BCy-aw9v@#d|}S{8#j{KgQpfL zJWwbD*#V=TAegHX$ubn&kHK&)DZ1a|(P^F^|Nii`@p=8%;Wzjff6Iv`3R(7!Q_+&X zx5b|4XZ-jp{1dus*SJNkPeztMN87kBbZaunHT zlv$r@{dcA!3A;Te)&KIvi;bxlMoU~5X261m1*YYec@yiKnx;2n%zX=$Y z%JwIh4}{u32JhxnCF#7=H&}U)Xt-AE;f5$M3YJ)53Eu3Kl5wD`SMR|Rl$hn7ehj~Q zd;SkRaBHzIsl+Yig$*CLKbe!ljXCX4q88Bl+jld%uQ4)a>lR~+Zkt!8bkVV2&5}im z`W&if}|e3yprvY9?w*kV3^jz-c&)>qD~YKI~t=vHBd zv(!;n7cD$2b;Vk-AB5v5W`b9PH&(@6hU=9%w32P5)SDPoqu31(pLe(0l-wQRU}4E; zv}P^>hn(B&A$50%di=J{-o2%hmKQ4`5^k~<+vLP1=dE_~%tgKL>96?{n!C266_Z`7 zZqKAyVBvMiPAH~kX#FX309{M1b zNBb8lvh(@d)cRIZaLXVryDxO2%=aq~ANhb?&YO4Ci`e{MOK17_Y*NXHvWFz8NDq^k z!h83w$%Tg9mW|^6B?(WAknxo(ni=|fcT=2$cemJ5q<70StvRQK#nSR;S76_hmkj<$5x!*`2BJuI^mTt8-6-L_|$WA#wBl5_jdeVEWbZ}4pT+t9i%p*M=_hX9L|OZkGq zq2rjvZSzt!Md8Rtk<3-e9fy^=2yu^Zb!N3YR28nH?d6S-SlJ5iRobH$UKsc9 zET=0Ur~s>SBcemI0z-^XpFZ8z-K~?BmL?M-XSO~Y>@v)8>C(rqFR5UQNj;9e)7rR( zOpQ=I1AGW{|0P6Ua~F%nN_bA6)k@oWK3w4h9cEiS~O7j=qEkObmPNPNhhI#Wn zJU{P8j92Y{+H&c<|D4`up}z;|R`05LZ8@;xwl5!&vbm5Ef<+^^BwPpYh0(ByW=hEV ztYMnG>gH>RZ|1%hS!%Ao6|}BsFB)mp=MmuIl9o3kNN(pYyd2fa5SDZqO9y2)kI&Wj z-G*)C#5j)TWpa_aTBv;{zbU(n)i)0|h8`Y=)Obasf?GBhqz2=6=bGADEW{$2@dJHM z@65`7te!>v?@RFPdlN21`}M*=ENk4)V4r!sWTCm>)y-vsHLA{AZy)Z{SFNigp(VC< zL+mD-=Jdg@eM_x{$@nJx$NRzi2fLEUsRPg901kS3+f%AsxmGFN*CEskQg;f+b&J#Z z?s-n82d9V`S2zznh?XB2bqyST*VEMW%^>H|4U}9!`=C+d0h?L^Wi9keR<4ZW9X~KeUZ3h5Ld;2Z{>t5SkGJ^ z3mQi&FEEylJwda5Vi3qPDl`j^h!C%2lZG4UX9e-{)nqh)1-$uX-?DEa3ZATRNGfyC zTnGsXS@XG569js{CTcryTcsw5+Re?4u|0{$_HcVV)KVeT45r$Nx$DEfG_JEHHA)>Ix>8N@wb|UEyX;5YQbN zxe>ZF-=}HWI=1P|jt*cHviPwfvg)x)6Mb8^6w^Wc(Gi&X;lpFIZ6Twd5D3w8J>cYj zs@+fjqsj;W0DpjuOj=!f`IXsr2rzQ6t}eXPm;+ZyLI+`LY4kMgluK-ykIH?Rks)(N zz?eit8xLyj+=i6dcN(q!ZtmmM%FEt3b^1(7|81DepuR=*Q<_Vs;x4$8nWf%8E4A~P zp3}ui0{G$`z1k>}!uzGM02XMGy1*H}w#J^w@ADoef8)aagpr_sr@@y|`kZ6$xLzC6 zNS#(QDzeCAd_!$0LghAnSOU!+t!$5PLZuN9A0DTe$jUSjB%hAe7u%JXM65Xt6m=Vf`Mf^Qpt(>|QX&(&nyx->v;1_tt~+%(*XDJ& zkoA=PWh?0s`s?S;pYQ#)(h!sF&~h@B-{7oBVe9wrbD)#(>tWuOEX|cbho6c;0v|p8 zXeREKkiA`PQRA7l`I3s(ZhmJZ_Kmy(l4d04J z+*qV?-3}e-IXK*$FF@$7$6y%pjgbA>ok^MR=y+HTLGKXcb6fFnC$D8~VgtA5i%07s zee(PAI?b!HRA}%(rCs3MkQDJ5B{oHm2L~Z`8w)LwSxy)RGd{fd{F5!B7d<^7Y*%774})R zNoAID{TRz*BjL2=jFaBm+w&gB7NYve_IbpyO zVtO43`+^YWt#29>|9M-6+hzuK>WM}j3Af9Amum6Q@oU+G`X&7OSrL`4gsi^&fuy2= zdYC>0QC#enHaeAXd%5@3HcyJeRM|_k{$ciRTWdB3z&~vk$-ViFoyGqeARkzYENX5- z_^s;w6$ZH0&s#iuh&V&NSX^ixD&-@|0q_PDt+bB0_X>7rNb8_I;5D!{ z`oyU2<^Mu4(o5~}0x5Sr(z#%RpP!r-Qq!BzbB5?WZ4OV_ZFV*+)EmlND>NG|j48fY zMNrrnx^G&f)X6NdF^O*z@<|vd2&g-=wc;?`Pgzb_+gycgSLj>Pljczr_ zH!2ilLyi*vrAnT9>h4^(ZmEcfh#Y-Xkrd2F-VevGK=LkKNgqOY8FZ)V+`Sm*5BQxG zwl+n2ABvS-#oUUPYqBd& zoH()Ab(x+XWBjHOqoa`G$S5sfRbQQ@d2nwMHaq@-tN20g01W@Jp#gnZ0UF8FXSzoF zPJ+ZPj*0nKar9`zgV#S#zLJxZi?e?@Dx!RzQKT>sp2QJTPSn(SGoS;V!0m5rjz~NH z`q*H3{mVeBY9~?($HSqeTNTD$E?c<-)(|qls}IwL@@+kH`gAU|m4>p2V>*9P(815S zXbj52tr7Q&heNynB&~NvJ~Z~0pX1~UGAT_~_P+{ynw~JB7XIQI*Xrll)`F3m>wJ6= zRT_@IJ||I?$5u!A?Crj9CG`TbSH$M>G8k0f1E zkT=RVbm&U$1M}0M`q7iu24_94{e*ZN?452-mB~eLtMlIFdT7OTitT(Uz{ft6pG@(a z+s5~XN`*KaD$E!FS{EaB@quv!0KffwEr6*&-HBqC&B{M#%)o5cBc9i6Xd3Wuo4qc} zdRo;PU_^!_Z}Y?C|JHYY$TOW*)uWHQ4tcIsa{6D6vG%5HLhbS6k0(x^)FPZ$uf6?0 zWSrcM7o6RShxKWp2jmk>T>nE7Vr}QWs|S!BgRoWoy)%&ip$W+rodR$2{rb88){Gt_ zl8>(B)&F^bi>BwIFuZE_ul$d<`|eng(r*b~cfZO73GCWa`EPaUTJM>=qI9fnZC=xo zv;Iv`g?d1?e2)BjM1Wm( zX&`#;?g579XuFBb$A4&*2ONv~o~BSJAGi%cxE7ijK7T&5R`ZW^a$O223y=p7UKkaU zm0#D_?Uu2Re}fX2p}**mNKyEKZ#|*+S3Kt-7V5^MW~_V7whN8kCPJQ zy=Eh9v|H2>c?LB409vf4hyUPq=td8O$LAYJ%UMt_jK^>iF`eUk7B1_FLe~97mUZ51 z(|ne1-|M?S`oM2g07yK8VS$NAb}LH8N4+GwTOH9(MU|^b>SgNZ<9BSlQe+itd_!k6 zgy13+O!K}ueV>X3{7Jk(K0qpBa<=os?1>a`Q4kW+#yN!KtuP9D`_lk)O3fyx zW?AbSb0n`E=qREyKzV8)zBPT@m`UxPo|%bv#ip^XrT+ds#SKA*SSCIRfSCQ6x~Y}C z_K7Q3H{(r;4C&>?XtK-t)kt>v7L&&9u|RRx#U$^jI|MQj4TpcZ4#lcO5;lekm`GMl z3@54N3bWw~$+^&xA#_YkxJj+1fN>F`*`_D`^|;v0zqR)asrelF^1ElVjbLkY^9)q$ zgYi{WL5T!Hl@ro+NX(&|`Rio}#Y6XDQC|n@;qq|dVIZvfU?p?Xtb&p#huu<46lUpQ z6mB7sDq<8x9oJQ(+4Q@|_EXQOVy0tQ+!|%?zf5CG$6zqt#eM*V2TMA*_6wv&HA^<$ zH?MRy1TtZ=LTh_`zPAWn=t@ZS<(>Ou@8yHd(7__AmK=*kA^Yf_-_4gxO$3=Z{?X*t zl%KQQUsKx-i*uK_|N25e?yeH;te?+^jw0*EqPK6k5g4EZ{Akon_U^?@%5&S{cjuwxq3Owl0TB^&8q|K@Uz8W zxeVQCqGv&-s&o?w<|nDPj7QBX3_d-0YXj9;AjaoM#JnL?t^C?BE!)&Q3?W(hwM3ZK z*4bUCGcXt`aq4DglXldGGL&raYzF5UXLVOhXWI!yCPhR?50u(m|1$HOB-0Hi{380Gn{#`JAd!zwsc%_+)_XdP1R$-*PHfEAi5cT_5hS%3eEf>s+w4^d1ow7M5q2YcrjqQ={69#Tu5{ zLNbDEY|^{NtBn=7HQEUT!g4CaD8DOBdg{+kx#;dlb8|D_t*x!$M6WE!>a;L&arTWy9F*1Kc>^Pg710qJ6H zZf?@A7*3g;?fdb9rg}3SRJjk--pa|dIUJVncd7@dfRf+^pj|snCUauqu^~-9=6CaZ zhai`H!y_epoQmehcwB<;Z`pR_(d66&F ziJN3&k-DY4WE^CX>Y5*t|KjD6>W&3O?H3puJ_jSxr^8MO2#Vt~ccB$#J`*dAJ~wAE zMOJlL{P9f;W}hC^t}h?`aVCq`MqKU8RR%u2hdm-9!&s-P@PNR4<#l`CRxZ;*O5ovf zwrGVL#Sg6VuCQmV%~h59!umr`du`2P|M?KF65;+NFs<)kjR+Ys7y^@lVxg1Gu~-@+T#F=K1=U z%PUG@n_s^}hAWq7>w+VhCGc}GoYN~S=&{z)_4%ZM&D|9O7o^a&GRmUe~>B>tTUeb zvmpxRK>qNlUI7=fzW|c9k`4q(ChfPZCEm#;BcCkI0s4Z0mW05>=Nsi~w9*I-2#9Sh z4&^6WGuhSmrQPJ^RdZ_)QNixY-G(?0mA)QhQ|uaSge@3h|9tB}VA$o^aUbq?52AK| zd~Jenyqku^umy+e^`q;+0Wy~eergB>^3(7)(bw$c){jo~m0wFfG;wz+3VAqsqVv%8 zIoA;?@B4hfCQZR+Z}!WsFrh})8}=R;erw|HnMJj!BRMuSLvh$W_%bU{6v||`d(jE7 zJ;I7QB1OtAYkNFcR)?@R+i4y#lV`}E--e3BVU6C;c1Acj07-r0>9#9PM;~A+2Y@kg z!Fs3pY8Q&^&(oauTskRTV!tE_O*BElgz?t48B3wUF~bwO|(8(pnnBwi>j6Df99S%_G1b+?ikP*p0%2 zcP3j~E>Kn0`UR>fr3I@fhtro3q*n5aCA?;{5tyFhDEuCI9A*t9*28|S*_FV3w?^0+ zCf9dhb!)4CPM5Q<)=MziF#;QMY3sz-UVHP>FAlV_rCeS*=csu;pdtvIT1>Sgs z?4VW9svXWpf3Ny!N!nsx>l4-7xRH{9GCylnjR^Dg!q}1$=DY46nxgdh0zAjV*h4hU zt6aRcVpy3)_PC(|pb7c5cB8iAdvuw>^f}nyRYxq>5!o|-h8yOyr3E&LnCXWqGNUu-y26|yp!H@3@4YSSmPucufQ_tkoy)m5pGJM|W>3Wo1 zW+x+`g^A1Xh(nwyxq~^3c+i|BR_l{L9q@Fmv@_fLl7?PKo!GJ*w#5;SLKo}ai_BA#J%wNA0nbuRh1<1=qiyUDiOa#!D- zt8n~qu!zyhe`wN2@alV&2>r^N0A~D?1z^pL&gxX#X8wyire6Ui={wUnf?HyBe>-&< zy}c==qKW~Mg;~YZm}PRUH>n`OPa=`4&}{vEg3vw$QGWPk+^lNS7>eeytaiWeHtL^m zhF}krv{Ri_@>@w&L1N{AOPUu^8HcavVy-hv>;0vuj6kR6N8GYS>N^60=Q z8_6m|A{na8upF}r$6TPLBycIKsLcNyD)WuyF1ADuOZRQ55FN3#o2enRkp2buW}k>k ztHI`c9|ODnVFEn-Eem-USc7Sk-`kw}_iR$DpsibLYkwX+ek=|8t40if&JhuKAQ~H# zJb3Nh9m`}~Y}IG(hIJ_j3wsUwG2uXe^=g(+R67<8}E*i?*V(%8g*u zky!kJtI(oE{Ul{m0ySV$lBD83GWuHx5wY<_R-2`Qm_E^J+^nL==fc^?1m6D?r=9?nF>jmir%njey zyzYl>eBZERQ-qm@jG_G(b?ZcdGu*OGT$qZToJ-jg4cU`zVHE?~hJGu}l20ID7(fC9 z2EezcWf|5i`RGuqd2u##plSjtgD=si>MJtTmpzQY|5m=-ayEs8b4VF3;9`>tG6ABr zWWRZNwFa&CQl4IBP=(lq8oNSElV>*N)j032HDy!Kw-oWhWz>S1pDWAM+@c4ah-)Uqr&OQnOs8w ztYzs7Ry2<^JjtXarvL;NT$7JiF40`5;`yhJa;9>&O@tFdXoChEDVW z(5R^52C|VndhXLXIvyrFcK?t0d_Ee$dcf!PjjB)`4p%JTmpoysde1>`sJy~N>F%hP$LgnXglB9r=?wtEh!)tCt%_8v&^h*}DCF$FB-KfHk zAFp@r+f=G2@IDz%yYfipv6y-~AX&a_M$(&Dhchl?H3j8l73zf!pqzQEuF9~p6*khc z8O?mgUvG9pN-=c+lq5R)v#moi^k6RlT4V8S!K=RdCKs29(i^#aK7EBaF0B+fL#>s1 zT+#|~x)Lx^CQjoGmh+wjNtI`|y5FxPp5Qun?%e!vX4&QIrk^LMHvKm)*KMd(#+HFK zuaVXA)Mca^(xlpu;+pJ0Mg7xvxFlzvDq^MjNNxPnEU5VY5VvPqrm+9hWck-8tV%TN z6N|%s$3A>%fS7z=RpaF^HKwCpI!=)+vMnaGg(kXHMumAov~sr2>tJZ(Asjj1BX{Yp zTq*E?D)nUrdlJImM-L>6IYbg=+Z_AWg)wJtzoBMvREK~dhIC)9rG}0|pE0oug#$pT z+ygi3ebNJ`NPbjhly6_PpP8s~t?>fTV|59E`lFEwon-3M&amVf^}&_1kK zHp5E}dRlSfp!O89&tov+(Y zV1R#4>(rJToEWz#=Ld`Akm?t@i=Y$T#S%{q2lWrvXJ=<0SW-hMl3;mf{4{L>A zO7hKUBX!iO9R+uH#t=`~L>EfJ>hj^6^9aOvFUMig`epSlKrUJ=I1%3HPPa#|KV0g| z@jzmx&rL?NN~cVci!3z^$Y1VB)UL|40HTF_S)+V4sPUJ{GFXULin(hoh=YSBg{JEo zwTD6$)e~#v)K%dHw{qm9aKmH9X+GWbSIZUTW!h}7&@txiH=}L|pv!xNawn_21Y$Y! zdXHM~v+Uhr%SK>u!RK?+l6N1GA18IXDTROe;+fSwh7FYByo)$0wLH^xU+BL7h6j`k z%!BQ>siw748yvImsfq^;L) zj0^xy$EOE~#W&1cwFGgE)+mkv4noyJRV1=J0B6t8xLR4krOy+LZ{UU2+V7+m_zvP2v0C9D z7iD}ml1hT2wRoOdwRL$V8ZjvT6G#$`T^_e#s+@QSpTF(<9?;CBH>h-MG5eVvgkqDsv&E?l2hIJ z<%2G+TUN1gaysha93d9A{AExgS|!_SswL7u;m#vtH&)_#aNtq1LdV)e^#kGEz?xl^K!bI z3*(=jl}4#vXK24Z7%IkV@MCqtI`k0Vqg}Y-o2vK67kRy1QF8tB-V?D#oy0CSRKv!v zud`(Npq;lk8Hy|!xz@UcU%(d`ngayjdnjaCi~0O#+8_vY=UT*vi4B>*bI^7m^j32M z=XwLV-yb>*NQ+x^C~jHH#aJ5h(p9b0tOBI+Qg&zLI5*=2Y+P=+)6mdpS2?SxeU2G8 z@ZVU~%nkwFW!bE3mQjBnC|Vd5>Umi~>uUEWfLy6uU_9XElj!URe86QSDb)Oh|@C_6CnbW5|AO!XTy$7C4UewL2>3dg*#zn|Cn&72JWH?rxpCh)C*}_ko}tN+BE~>R(rKO%@KAhu_&^*mu4v?Jfxt??zwkzmNacD z8!WTwmm4ILi$4OwVA29@hZi_$@7}#jR!{b){DeWt9RcebGxY&X>~wTqy>ZL5M>p?T z>IRzn15k2ZrV)u4sj+JrU!IMS=xe|=REcJC8W=hvr@-oK12MiIb!q+a9f^^49B2f| zs&z|i+638k(HJN>Il%~)1TSQ2^3KNhoTc-Dd6JhW> z^suA9rj%c{+tRh8eLKyvJRr~%wtl42@!;&$5JrVo8SPJk%R~0z&`=ht`)cMjL$gZG zC)D|lCyo39o!_hi9!bM4!v%Q6xfLC682c+At0kwsdz-0I5j3NoJu~%ts$#M#k`z@0 zsTE28*3qG1S?Al6jlQKL+OUyr2mf87suf$dOD5+A;BFzfoP;7ix1C#O6cmrNMgckrp70ir;#^Jq zEhZG#0`zh_%C)~$WU-09_~CnVGihcr7p4c_@YnQ{a7l3*FsCp1K1aX4x!Q9mf0(-L z=#d!CC}1B)A{;V7(=M9Nv}evv9}?FTeRo|@B?0Sl+=_no;4rY^jpQsBx-m4S+g{5r zMLWZ&levYE4vY!>&^ocAE32%0Nxn-~qpbG{8yg+8USvF1pQ?^^6{d_yJ{G(*?4zxo zMS%@@0^xA`Vn=4ScP_qMGa*R*Fa|{wlA5vmc=NQ&SP1}ZzAnpRC%6QR3-HfEg3IBZ zW*Icp%Q?h9clovnLF9?GmbKM6I_-|kw?N0|2$8!@9$dQ*&$#SLw=z4NZ#k?CbC0W()%^a^laV!{ zc6hLluYppL6ZxRdNJ*~*k(glZwQU`&O31$b_)pRGI&X^iJnsiY@}6bsK3m}2S1SCM zwx^QjPo6wUuKgz%n!Jj>@Bzfqv65R_P=ouODOFCto*mS{wFq(ibYp?$6;6GgaLR7To&A7~=V zZD#ljEs?C(&w)WU8PDctG3aBWcu=ju)_+-&R4S91tn@Au41=CfzVnp;}n5YQ`! zwrT@H-H$*gFl}#*1+I8dQi;mQ;%f+*7hE@O-ch!fP_A`HHdxDCxTH%j$5KK+Xm_MG zp1`LdrNIpW!>6h)5vDAtjY^dVDN`$}E@IhW=!6@j_YHO9{2uv&Ht|~t!=uWABPouW zCB*P3wsHuqyE>>D7aU5|W=i8!yluHvRx;8Us<=st_oGXv8pcG1H;7nY&@;@rWFyES z?Td#=zi+nLV+V>E^2N8J90NWHLnFYDYU`RUlMDF%7J~G`EILv=wjp&pa<#t*2n}O! zFXy60U6x?Ein2_gK#v}L|NhYOZs^!#$$d#Tmje)BW0Rh*hT4Eu2?R9(J~H*s_Q~YH z3{N1Yn3dd=?t2gDcSGuWa>+_YbT;Y7Wg^?nC70f(S}EeqYN5SFmMmd2Y`!M6K{8D; zR*fN+?-_ag&q6AIO|EO8~!z+h>jSN35;nw08&DVZOjonQdhv@=0Ryc+cG z7xI#f@j|SNOWCQ%OC~^F#(q?6Mr+Arm6xuM%)BWGSs7AB`U%RqG@!KZJXvI!ikOky zmZlM%HblA&etg~&brc-|s%*A-$m`AnSr)1G&k8X4(d??2eu0dMAJ1P>RR}vaVx|M$ zHBi>xdxypX)y0{07q>RkrR_xg%HkEF*83x-m^rpg%56*#=Y^lHNJ_#7+EgtkzYil2R1aKR`Iu5?wK9t9%}>EVG5;3wS}_d;bzM(|kXilra$yig z0Q$6uObHh$MJwzXK-2J{dga}*UAp)WxAwyTr~lrjAGrz8*Ranqo?Ex(F|nyYc=Z6% zNPWpc@B71Skdw|iiepv|v^3-{NO_KCA8i8w{!tYnq&PNC%yjAVSgC}MLJXj!A$0Jb z==YH`zBIR#wDX~@_$nNua#CZq7P86_+A+X^Lu77UyI?Ui$ej+qWPaYF(W+MceP#OQ1_JK-EQ!w z>ovGp^Qu~ct2rPjj(r7_pM$I_0)&NyshLt`CU$X~@9tkr|H1q~jIZ(t=uH;aI~Gu#IyLtb;1pZjkWELnZ5yk`(xWO@wyDm^ z=xi-x{PUAXQn@xNyzk8>%i`FjM%K_F{5t{|x#4e3(m^_kv^`#xyMjBpF$j&$3wrc1 z3jMaH9wfDUmHG3@xYzkgh$-SX2*7EvX&#vkvxSYaSidLn4-CsxJhKvUuKW2JrE0SemL>eaFYnrw^t`^jJP>slqKt{b zLr|YOiB?Eq(^8CCrSp>%99YAFY`zqtAyTI&&+fv1bVuNOGs{g&`;dAeU@#$~i=%~7 z>pp^*Cm1=35m1$A=3H~pB>&-Lkkrc!tO`3)eo+Y!O-=DkODEz3nPTud6O0nYDxcTr zyCS))0k4;n+nCt5+*~auwN!$EBhmitY%+b|_F@mCSL4sm78O9I*lEdmK7{TTNsCri z6mo~9eUhngasqixZf>gAR2P{GfWgj78V{`q=rH2^82@{Xo5(p=nogvX2X8+;z70l2 z-!pJkYM`n|PVZ=)FS0?&Z{yp#Qe=SNk@d``7-Hc<7|BL(A7tm840ReVXKKlb;z2Kd zy4s1fqcB@pSsghFn;c23b9-KblGLM{NOKUfxz2jonRBq0d67giIOGZlNhGO6tqU zG)X3R{dYdVmZN?*hm){=txn$siuolajdnpqRiwD_i608&RU{@+t6)>nXV`8RDwLUM zRq0%#(kP>DB_$*3f?HJU?GTo869l8zOw(W z1x~1pl09}9vDZ=F0OE|^JlZQGHL;HUIiEmK3kU)4xpFm#QT(a1Vp$9&;uUoDmW0X{ zqL$9%$MYlSL7_Me6dEIUQ*}hqmvwY>um_Z<)GS*sKv3i;mL)Y7B%n{cCTjaRjZMx# zZ!PsyalPp9476-_#7KQeoSdfJ=mJ|*Hd=UJDZjs2{-cdI;$WYW=aZixgeJr|q%nQ; zS&-uGZ+nZPZgdfEhz43fzRm0NG#x{0fBrlQqgje1qd=0xgYVu=2ujvR{InW-ePh0c zOG|RF?r!8WYq*T>;^R|lrRl(`bp*Cqk5Q%D_!CBYkt$@9X+r`h5J8#Ohx1j;cNdB+ zDd1Nc9{FMssA%F~2f>sdzGo#RP7bZ(I~#DMm8P-CJdC}?6a9Il)Goi$dC1YY2(*k8 zQI8W}FCSrydqtG)J>%?b)meq`#LiInKzNp~ptQz?sTso`u;eS;>QDQB!saKgk3Ix~ zroHx|iOyzF@8H%z(Wvjtk-`@&vF!!OsS#-MzPqx3vPNfV>$M@cm$v$H_02)f0fE4& zWqQW}2R&IPf=XWO-i-6C;s*>II9Zl;_zi=VhQsHhWNy+`YirO5TTL1VAPzA5#;^yk z5i2vjXnn6gexxLiJk(5wzU(vEavwRyaLy$cJ&(+vIv;=r;{9VN3+vguR5hAaWBt?j z?u$&In55j9M0rQMfxM#@O0-Qa8Jh1grINC%JYRnqCi|{*cVtMRwX(a46VwxYJyK+C zech{CF@L;ndXLl1#Pf;8RSLRfWdIYdBVQG77 z%V>SJQ~VGaFpsNCZ1Nfm$!7BTa#h$!GeafHy>{GJD2`@HRD0VYu7bQ|R$>z$yccMFfyx_s>)GBj`<9KCcR_Iy`Oz0vXIXPf&Rdur`EEjh9 zLV$g!5GT%SHh%N4!)_NzS`4TdT{itOv|={ztBNiLzBh%EUqf@4MFs-6+xQr>yyvT? z9^1-+?m4%1XtejhfEV#@y*9Y^Gj> zCEW`m2&M`;G2dR7^#xdGd6NYFuFT@S5-$TZ_u4owPJrmMwU;I5hnSv;Sx0#dZCbmm zgIz>DCJifNfu0*9(xbET^739YHLsu=2|{8C3l6JNI2=y@#*MG%b=|cM1#rOQ_(X84 zyFFeMTDHEiQO*L>|4{so?ap~x=$?)2YEhZD;tx}YuC%@*4MSa9sh1x~-ox>mroXy{ zJ+z8S!x@6zaeZqu0$kk0fnxnS-v<22D9}(~z-()&MJu`}2s@9LC;_h0P0|IJ?DeZ@ zXCB{>$^hHwKF7XtCNXaA><9C!bDU%g&cE02S%JWvMGOa-eE^gqm!wf<7fvHVM#{=RBq^&qDYvS%G1sO!e8w;S@8>vH zTJYtR8rTc>rF^VDKuj-h`X<=I@LH13mn#=Y&3)UsX=Hqu`BIN+ZT^#e3fX{jq`<7oF}Gh@4sq%4`&?I~PdWwx z3b&1o4L#V&Xy1v}W*pUbj zOz#XT()xPYpeXfdzrsvA!|OM1=08!b7-!Qgt=E|y!nif|x~qu{0MaS>w#2a&Hz!pV zva#o=#D~w?G914r+|~Gz*0>dduv#%w7p_?EBr=bts{Ol}z_ur`aevBlNSeh$_yWe~ zKpk;)xjOx|Y|+zB1&t76svUr;|Fi$(gE9;4t+{*7>3OH<4??$=Wo5$WSEhCxa4eWh z4`O~Hy&vAI&3Sg-=KiI{bl%4+k*#RU%NJ}IFZAZ$Py%AYNElK=-$=!6O}Am=fyL!iwbm$A^i;KEucQ7_6Q!RGc%v&HpK;T;SApF<~`I% z<(ybkrTx$MT70~Ct3br+PA6Jc)Q4Yw`{wkSV~;HU-9+$AG^yt6+#TU}0(9>$KRkZS z!s6n;XB_vaQ{5{3>=u42iM1JHR_<<`}(&w{TkD(+`*7h2mn zr}Dm^t*xg8Dm}~yHR^jz+gChaxKOlVTqmO-v<+$diBnYdfE2P{NXfGr;{QM)qfM!Ji|}0H7vX%?BhI_AzOSN;m2ey87q1_rB*?y z4yqZh(W&qLF>L--AgRmuxTDAGbqRZ9p;^iJRvpzs(;Me_#0!$ptYK2+Rp) zv(6R|v*|P|Q8cf!(Nx#$&?nR?%;SF@P-kFr(4skehVSN}Qe^(_T$=XtyyctNX^KMoj}ph3=YoZU ziG`;!l;x3>d_S+yzKd;&DhX|Q6{@8bp4OE#X(gjhmdv|(Zu#je62@1TyAXZ+N)M#=ht9+o&CN$yd;!i#Apd!at@LVTO z>rLnR?7Von8JN3A`g(zMY6f+yXZb=k@j_}deV*AzMYz{=Q(e&8*jnKOJ0O-$#y|auTMMpi zS&A>lKWc?XQO`lIX3lrkw6%NnI66qG`B}5&^qg!m;2bP@9@zKQd6PUH!9`k*x({F9 zy0p2^r5*NLOS`qEB;Z-dH8W+y7pW|58i5C1{TyvQABCqF&?Gs`pu}d7#KOC?qkE77 zUsUPL!iGZy!lxj%)||SVs?;v5#BN zDa+5@v%l!*cEy*$pNtJ3xN42A!3vDnx@h^0E^O%Gv&rM30VBdrG{m{*Zc`W7&KE0F zbL{V^RhuzfnM>M<)-C?2X5i^Nxs8u&&1)ZTB?t17HnZ%Aq{?n+#q!fAT*(V8HO0>M zRV8ajkL%3@g3sB{wkZYhAkXwHH}}!9LZi=BEs9sNoLCOGi8W8&-u`D1e0WlmAT_hYJ7whq@`=yg6QD=fZvVH`-@I_0KT12udMB1f!MeJVcM(e2air>9C zw48g~x`nUq?QYTC0i;W%%5}qnQ_`Fam45~RPq zGRdIKm4zi6CGwhMs`15*%71Revn%bLu|e32^L~aOv)u0Rx7zf5-(-R}7~6$;=hNB| zUeZVAQRaqQ4&X!6wYtNp0(MB}$m~9W08(t=H}9tSki13Wrx7_4QGx`A8X@#FjrP5` z%&m*naIpi%z5xYZk=dgx6xh?~>po74#hk15SSexUP>ynm25rJ){Cla>`MMG-p3;Y_ z7>m(^fP&v*w;hTH%$wYD3apGNZ8q@w?4;ad3-9bxz2Gc=V*Yi&LWTKy;HmQ4cOnLkYIcg>{MrA* z-Frthxdm^dU;!%}MM1hs2O%mTgeuacNR{4Hdhfj|DoRy)@4fdZN?&bADA+afs-t14pPx(z- zwz2e8_ciltGh?Ay7W9B2Toi z$}97drY%Obi~^QF>OH(2vTU=L{DJgj%Cb z>=L4wJAp>*K`TROV`%}L#O=!K2v$F#*f(RrEt98jr4!ZqG;yx?72JI($|jkZ^vO*g9r$ zNT8V*Lq_T=+{(&>ZK&;VIU_~Qwp4hb*1_=miJ2GPy=PkgX=uqm7~s6QO=;p!;XNfT zlSkAAxy)(~uTw~8?$Yhl!@Y-*yrMSLSkgKv(7NuAxY=XhczE#bvuhc%GWo{7T&9E{N~^$w z>+n9X#)p!Jw3$hon6WVKGnb`!?G#04TrPf7a`M#4vk;d|5dacH<|nTm z_3F`J%lIW|iZO6_zK2?V_F)x)KaYO7p1@U2^5aPK@1~O=nz!0uExZtE+;n}ayL6s5jRm|2U>+im1#jZFSF24m5_1cXvWxy9V)K7hiKb4;oLVg&BJTLqV&s_QQZ})L-p1my2Rg;T=@ptg zi<>4DUpwMwA2C6UP%Le?ekb0(fa)nPL@&s-I6w@>M~%k$4@Z7LmcTn%b)_o$)^YYN zx^wKHcqS4GPJ|BvZH!5@hB~begN(iFtyyMAp1iCJ3#lP}F@PC|J@TerADb|0xz<}U z-26Gh&tK?;0>;ep4L1EYX*G|mox|7vK^X8XJtlGf0z2!@8Rzcon;i#1Eph|>BaC`B zVF_ZX!xs&bX{!yW$66vq1;5+Yaz5+JbgsHWZb8Ll5_c<2+Bsv*w$d zvrpj?M;6J>>6v_Mb=o-%Nr!7)_q^@nB^{QN0XFsW|903+wWg?>#Hiv`Zp{*BUq*Xl z_`1L>O z`?72lh{b?)cDB0YUFi8<1~198Q}f58S=k|@HK}qA0#GX2@F@d{Wq;Hy^ukMtS(+0| zlr?`fp-tC|5Uz6hbjq)TIw=&L%64w&*JKMDlV{EvbMXK{onigDr*5oC{jQ(eKptS4 zz%~Z=Oebz1xGJLB_x4N0hifDS_^GsluY`N1JbzV}=ys{QySqdze3AMux=`HNzLQVD z_B{(7`^dk6mK)Er?N!;FBsme|z7QgMV{}olY7Wb!;jI)8pfYfhwL}Ung<_l2-A3;j zBD>xtX=OZaog=9UJ92H<4!-a{WckM0&Z8VCq2Nvkj@t)9Uf_HY{sNR^IxbGvO05id zmM^{xFQxTu9IQ4Av{i~;`kfqPqUYkbSEy$!9(Qwct-8Pf-*(N@`=#iF~pn06I$SW#uWxhO9*Ek!r`=uRCrN^VN@S(tL4@+MrYA9>6-hHIM4GP z4h~0jm1L!><@%{1m&X9Db8tLg-W8ngk}jT=SKF~Zkcz~Puf8iy+AxPFH%1Ot2rVKNq4?+d8cejLtlWG_J%Zp^|z{c<{s-7 z*vxEE2W+wMLc6Zruj*YVSa&=9Bm1%Z#5ya@gW-ZBeZ6$nC*!7j1^LJ@{;`f1C23 zQ@<`*E=bb5yk2KZE#KWevc*l^SXdhIEY+6_ZkJ!@MYUgxfd(!0HXb$!V$X;Ir${$T z!zBvuZWd%KhM-fs5ydE(63DVG;e&|$6A>kyexpfo_=7V=`P5=fJ;`D&))0+-nei5* z<`xl_DBJ0(mJcgBy<-YSyVnJNd3&$q$#roW*nj@h`S|YBu27p6>r_}qCBufMTpC0H z@qu1v>TVR%$fO%Oti#D=ge?!%cX5$t?OwxQMrmie5RMTwlZY>OjPdRZdM`U-{>;gK z>X7Khi+X$C!B5Ac{5U-3?^P+JYNcJk=9y5oz@f_ByCerO6yGtbPk?#G? zZ`zEu)Z&09%PqOn{x#h&w7hdMx&Oph55L@nF{H@eCx`ZbceFL$h#e!gI_v)G)Z^}% z0$0kf^SzSwt5<(p)R?pSt?Sa0s7hx8fw{3Ohbm{2adY-o+hulP!F~!bW~)yt0<88T zkxNea&zT;S76bi{b*|mKU>gG4`(^|n0f1IgWvH8~R+_1~_Pv9UqOd8qhq3^GD~#Mm zz+VN7G&4}C@s6rjmMEngBya)Td^*q))vyq;YqTXXfDK(25$T zLG^690AeIMIwsFNm)UaTIzl0Npyz9nV$J{Xv}fL4MjK^bZ)?Z*;uyQeq7fUBHlid9 zo0`q3ME=`7_T@VUog$Zdu4i-Dn?n85%Opf;R|S;(EBN|Mg+eq=3%}V$E|sf95jcGQ zIDkOus&!a5-(5lp0hzS2W{<$zq{vm(E1Fkoqx_wtYEbpYfu2$<%9oS3pL|QPMpRr{ zGkm-%VrhB{u39@8yQ|J|vPOo+3>u4aTH<+cp}*EdRh3M6&4AYR*3UB^UB+8pmvTFV z!R`9LHGH$Qssu<7#xI^W&fnxfo)?^7j8VX_!VZL|tJpawi(^Qy6SiU6sktY@PffWU zzRYnS4#3U)!`pVfU>{D9L(J*g5+jGM9Dfldws5q)bwYtShtG0)|K~-q{S8WhX&Rlb zZy5>nDrDJR9jd#0AuB0j<&IZ4;oAQ`oYXglXHzb+OnRv%d#g8_j}S?JrnLVn?)361 z)3I~Y;S90tk~3;?w_xSlwEx;!o7Xa2l+dG_Wtg1sD2fHn5A88Qbbh^>*d&@YXe=@+ zIwyA zT8Ae~`j#F+m0Q^3oj2-lliY9cq4hqZAd*1udu$#&0#jB}Vt3&Q-7gwO9K}S@Jb5A! z2n$!Qovf%3do-wykUZFp;rc+oo0NFji!1r%6KgF+yk|fEJMo#4NS}e)<}%Uf5^q?9 zyTzqAo7N8!M!%;op8LYt`JCl8PmN0e-v7KH;;Jxx_GUrUsKdJB>e{^hS)oe{AFtf` z`}C-?xr%gAdT#pWz-csUW+^JD8yYvFv{RH^$s(J1#ihkd0aI0Ot$^{JA7^>FTJ=7r z2JG}f^8LzWDkc#+^D$fFrEA+cs9(`i{C+Gl1Fw`vLwF;TYXyonjKyU=(&L)D#ljRn zwg08}&*^^-y*E`7DFb=wXz|UjJU*&Qp_YMciBO9wJ+=)|t!Wc=m7RWm`IM&G#J(1$ z8<}fCMUfO2SDEUsf_=U%YCE=G^*#_1muK~}kguj}mo4OXVVEiuEu#k^hw{%Ts8wx( z>Q=nNO#+LAr>5odFDYCtRKa)p7@%q864B_a81JfTY<0=4>5iUsyH~*i#gTDAd`n*o zHwl)>?|7YRc-ymU?UU68xNxHx@5|6BeAbBfHrrf}Z~4~c!pQ7TF-_e@Sjvf7WnJ^p zgi(>%i76vTOG@t9n3YjvR{GSUA$qZ_R%$IDOPYr$dlfJ>jzQpg&A2DO7qpm{6|LMA zvwGd<`0krfhT*kCjLPt2x>6lRxky&s-!%S!Z#nU~=uAx{&1=-~$F~}&AIE|TkA{Iy zv^w->MOkd-jk)?%146S1y|O+r*)@Y}zLCiH^aX;;C{@x1Faig^MKxUbc(n8~ozLxw zSe9~;Glf6OW;M?vOWGQ3Zms?rzdMx<9AO%LV$Yjze!iS91j4@}x~lc*LwO5E^zslj z1!awV2kI{GN;Mff-RdERa2Bb$YPVTQUdESY|bmJM&PRHBbeDq)YG|FQA3XKqYdRfkV=FYjk`7M67xR7|GRrve= zkO-O8XOGR#Tojt>J!RHpA)IWPTyJ@a!`IFIu5XiwL6cI$j-{hf-hI=A5*jGK z>YS$K#+)MeEOI6*NB3LYswizn0VkNXDhO_7?W;Or&}%W^;4qhvz(a?kOr^ zv$4Q*QKG_q_X+|-{<+BUBeJVz8nKV)R^>;)!;r=zb5)UIG2@vhrHYeWP*HL1}5_!A%RQe13vfTLIOG|Mym_8cKiGe{$qRM1)40 zDvhK}r|R8mof0PB(bDiTbz|I$gCFqYQpTxPm(~P0*H+~;Qon#0$l5~;TI-g9)hikP zoKHs|&d+hDD3PK&wX z6os*7?PTH3E1djj)NiYpXVPozoMKx0?IM7t$*FbqxkIVaoKae=$-((V3)-N`U$|;u z;^&_F*pfh9^=Fv7ka8<07tuUg8H@bUwNfgw6L;(q@=QA6PE33ek$s?**8b}bFTZO? z+=g!sJk&}7=d|GwDgEG|1Oh*bkaCdp-58O`G$}-xR>bu}1kqBF_5l~-p9vB-+tLG)-tnN$5m&;9+d<#9=a%$K{ zm@djHEF?jisN9(BUzv7O^z8hGm#54*5&P-*-soNpjg?_rMcxaaM(MJC#ahU`&YPVZ zMD-Kv690q4(t9%_oe*e(5~uL^*o-#+4~6l%qmftKxV!7fjFczPQ@aM$3YqCkYulU0 zR*TMv*If~ok;M8m|0c3W{*PmP3BCL*3E|AHH$?pY8OyZws48)HGM#`W}<`Ya8$ zK&E_+rJtH;;y-HaJW1+j^FP3w=>KTld4^+E-G6HVnE!uqNBiQXFEPjZQGSLsc1@&5+#ccIx8Mwyy;WvW(`6GykqJO(D`45g8`5J8E^r|f~ zIHK5Mjl%3C{hZDGvrW`EpTj~*j@UB? z=tQM!(PuK>U%x2>Ikif&&kHtHm)aXKI}fbJwz@-7#lffjn(op|d3GjV^{%ciw5f4p zMdy)@jt<#|y7~ydra7j))^-|bN_%0QuxPC!Uu+TNZMe$!Vm-KAM`qStdis*k-bZq3 zQXcg`i#``gSD9HMDkoX`9|ZVIj(PecnmFV&lVwzRvIcZkz z5)tWJU3xh)Ghd{+F`_J91tIs}dV+7;Sq*Jh?87?0r-bMf7FWeYe;{KJWS2`6c27OK zc!tPxhoE-7t3G_Vz~iP#O!TMW=F8}d(Q~nVNv_WGu+vo}1aaQZDlUfNHjf5%F)H7| zIe$}Ub0YsLQK-*Unx$Ai{wZ%&bV>}In~PTg6uplCO(}k#38qb#SJ;pQ10q7CwfE7t zG&p?Z)Rj;?V&soAHL{zjuh?;U@>&`7<%>VRe`kkt)4K-3d#sD?fOX24a@sRV*$9RT z$hRYz(iUSIRlxZqAj209D=G zQ&;5V{KQilURS=&c(>ijB8{SPPL3yXIte z%a-5K$iMD?1tJ=IvOxyD#d4fDXT3-#C#Pj3Qm-G{$me0FB_c5Ik=28;)+}?pV&l@B zo5eu8YUTIwKr~!9oi1GvD0wF14Q;1u4VYv^O4aj}Et{6O%0}9mvExCmTdEvU%7Nv299uoZ4W9%;T zy}gRQD3k#BVTDqvNKS9>4UJN|;zWMyd?UCY4Z2h1gvx`~<7oYfZlg~_WE5S;Y6`!1 zt!A-4hn(*5+S&DI&vWwfkZ9tI+dcHcZiC*t%_a75oYHkF?lC-$G&(7%2#5pE@_T%f z5kXsIbO5omq4VQB2hVPD+y-2S1C3>*kn7 zQf&#UJzw?Ob*{6?q=bZmuTgmx{l(B=F@}=lWIBx^%~zl|X>_4!M-BA-b?9ZrZ|&_M+>ce%+M4L8bLBK1bhdPfW4T9)9f1cwJl z#?{4Hjpi4S(F?EtUQ5#eO%C0M*7X+bWkf{jnGc_FGdp+nIH>NRhdWVj70J59@?BE(N#8~L5Y92^{MAuB7Z zs_o~+Kt-`~Pb|+!e1t6WGIeAB8`&`1CT1Og1bPdrP2&7b!n1Xfm6@|jM#NK3uW!3r<5zj*NioarKP3?|08 z_3KrbWNx^>6!0FS!zMLF9xX31u|UPAfe3#Ax!65!T zy6=|43HWK4-R7vJ7m~ZfOUH7PlcmI-IxN8pJ!xL!(RDlMD3&fHGc%lnb2EOGAf{~O z2UTkEnpLU24)6SXBRph!u14IOgbAASI^2FZVq#*l?hke>S84qVAiZ5#CP2fB8XT0R z`@ke7CRPaKI5V@dwvo3fC{PQMWz(Zr~~zT478Ylp5EoNo1yx&!zKqb4rri%nCz?dVx-(ByvCD^)#D$?Et^N6kT*DH$?MCToXAL<&f? zORqZ5ot<2}dL7YZ57#hh4F2%X2LfD0l4QWSS|!1r>8e2EUO z?jaM?_VoFw2)%oU-K_#xn-qrDVoJEv;+Pus}(j8FN( z?uqHgaFI^efj3PQCy)mnRhbPq<~z(dV`isdwpF!ulR#9~xBbC(GzS#}MLlRq0-&Mn z=ulaFBi1imGB3I4*NpePZ=#TC<(wDt6~Eoq#3#SG<`c4>C!lirsH%btDdfJHZ4blA zFg6olQ`MHnMrkoI1@7~Ny$_zn?70KU#%cE}w91h5oLm(Zj;G62j!H3i<<5)i?cvz> z0Nr34mBy<TBv`@o83CzgIc25W;x6@1iSy$1J zWZLD;qG{yeK!;WTmX6o*cUii2V{vfw@cQc>&2@90;|~OH10k!$2+>?ibv7i-dlz^b ze9wiET&3{}}JQWgg00xtB3VD5tR+W+Y+@>eW!f!cjlAy?nJxFib z8D1x!tAk*+CME0U+=6i2Gao-*!im|#T7ueAMZM|6$4jgQu#X>rKAf>7Wsy=(Xa73; zf!_XD6IwhoGxM(k0l7DC-h6jX(SP~;dAiv^as~~*jXj_1rc2oH@GzgLm7nS2udnxl ze0_X;5lvctW$|%_UJ|XXwdvjJ%Ay5nY-gFvCesrw)YR0$;o+JoLg7mjY3g-K24M2Z z&|Ih6tn0W{-&746$6~pV;=YMi(rayIbF+Uj1M{xvKF_a0G^6g}Q7`1O z4!W^y2NGuVt73WdN`>vX5uuT%L=Sp|R6%=9WHx%cES5z;OI$hr zjWVz2unDTA>sf`Xl2SNc5OR-z&@#$bSnEHRf^N*WLO6KuP1`)P9M10YS_)G&ZCLiF zAFvH@3OLXzGJ6%Y@=L1YZHR)N7KfZKa-xDA)%d`FqL{~^Dc@FaT0vXO0HJx2^yVn( zuK$~Pm^s{-zC1It`2tZu53%S=o{E^ujm`?g#%&C4+UUK#!8S=oC+#{yW`%Z(vZeFYskO@D}vp1sFSId1)n~8q08OtDp7-4k; zVS%BBE)z9yJDXJZ!WEpz%I~}`@!}8q@v-%d%5<$Q{ozQ7_4l6r{e7|?g*YhL^uZ5b zj1Um|IbJ_S9EbF)&tyjD_)K)E?FCW66tctay)TSj}sn8qmC$sl*ZOm)?AZ{$E+tvp7SGUejyk@kR0g=VY#ih`f_{{aC|LQ2UR#1V%xhq?6dQKks z)Cxo#c8&Y(FY0!uTJ*Ryiya#Jz}zJlHZ&Tonk5sKJPZcB{Cw*P+Dp&_z!Ro7x*|C^ zyT|UQB_|h~r}`?TrW&5BKY_a~2GH$XvXpbkH6~B~y#!g0CuK;F3lPm4`e?+u+4(&y zI3mLNUT{wOA4LWul?6|V-BfrT91aK4`CA5S+>{;iLmMOEcfVDn`DZ|2XWefNTA^>4 zH^Atj#sm3|U`6RF^Ib9QniuFGvf%~6#k6hR%SaG!tXA72zBtHLy2nBC4RL34q9D$U z7rEtNTsJeUY=5@<3cL5&dc0V}&@eUjkhoxSPIBvhVc% z5*ytxE9gHzrA?+ayC&rLN9y}D*M)!V+3r!7I$6(Kjlz0Gj6Fi*8i+i{l*L~S8gXfz zw}W22`n6KqDP?#Cim>2h?dBpPs;B$wJ_lGqnhhYk&FzBCmW#T6^BXf;o)F((pFV!9 zSEOQK*eOp=Otd1a`9O zT5ISJg-*)9dZppuQ2yu7AG+b3++0D?o&hSxG?is^aKJyFJS1Ff2ebqi8qXr%Av9L| zu#%AG`%h2$#@by(!4=g`d&&l?^E>F6dFNGTPu}DBJh!c(t-~ed(pY7+3 z;j8+^7(X+wtgKjej~0NV5{TEW7=8Qld+` z1^w^|mX!VR|0Ryj13nO!~E| ze7$khrIot5DWmhhpv713nLXm{vcJ{TD9F7mL@Thy*t&Ru`}EdWw-5L z)l*GOO#E7#=w&33U5NN_A<(4vv3#VNQd&Xr)*00WJJ?39+U1?4rKRnga*?mOAHHB< zs4YO0HXq0bRiC@tVV3I(QMewOzn3KQJlN`q6-HapJr(rtZx7MXN`QKYx6N1k`C>PV z%3$RXQc`=DnrVNszbTq)ioL{t=!VeH*~7Z0lB#FBOmOYZJdpCmy@F9T3G&ui?LCqqU5-RTjTx zHy^HEYM7u&6M*zi42XeZuH*eBT{!-rp!pKXgjYkdw=nXB-`NS3x9Q4|?B`A3Meig& z%e@n&e&N{u0EI%hj-#p}R5w6vasY9i(cZn%cF!~%(w?k`zpVZzzTw2vIDt{H-01qX z6D$U4?`+CpVpkme`Jcl9^*PE1(#IPrRF-4K2~&Ws^F5i*FRCxJ2dW0sZ%;CSh_807 zb}x&NthB^A#ErXnfjMqsPnOZu!`W>n&d36AeNPh+@z*D_{ zbo6$6t_hR5T2_6AJ7g=12n*wSm}85b@*k6n1lY8MwiI4FSS{?nTj39+x!tIpuP(qB z(8Q%{_X^Yjl~QBn+KK}cl8VL+X>&&M20Fn|tjWq18qA4c5Z}d}PV(xHK|#oNF<*dh zcEbc}EQa0zzz6==PBv;p++-{;PxaIs5W&3QDBb+C)DU)1Za&X|Yj9BgPUuI8m40C- zWe?lhqQl~Fv&W1_qr3wEWaC_yU*cyz;QjEY?`E`vaNSv@YRRXXIqCO<_`oGZpKR3{ zcVr%Q7nKRy)EO?Hs#vNT5)=Jc33yP;Q$a>QU1T&5OC)qKMrLnq*@$A!u6u2)XvM^t zJD!rGJHIo%Zt+5$t=x*R{MFg9-2;IiRl*26VB*ZIJQlM(-g=RAds;-a#ib234y7xz zjLIeJIgit7L~Si8&!9%!y4CDy*SV#tDEl-ToXUrXZ72rTmX`s%uu}nE$#u2YGA`;4 zD+?Q;$WzED#H)`__MGUizoBhJ1(MQ8P0ROX-gK%J^x?m(&vC4CVL|W>OpTB`T;7?_&tb%23 zK$-tz*x(GvK?B%W`X}w+jj^m5`hd z|1p=Zw~2ezSsz`8>F(g76~FD~aT+?LYkEYTF@kz~Fr*z|B@p?y{B*?Y zX|Z)rr8ItY{`PX%c|bhxeIN<+vS>efxD=SkdWM250hUE673|jco`ex8LLbQzLQ)dk zvq=kTEGf9yKrfZyBur#(PRwe!{;S{F+h#HRx};~?I1#g)`;23gAJ(-NpuOC^J%=FM zREE?|&+VF1*ZxO0sh>_*8j+Ke`(m~QtlUuuC8VfG@&L-de!pETQN%Kn=9$fUxtO4! zRF?SJ^Ih0sc-v`=e@Qd@31=r*>9kPl5=-^GeA6Dy15_XROHVJ4LO&b{4WC2$`N04L z9c=xCE6fVxk4BFyqg+91rDuA&Bei{`O+7`}eXKGkgudUNFV`BVaIrM)DFmDc zwLGLGMKyQIMwX0XQc_9)U)0qxpapK&k@^mYJUCfojAF&$*l|9sj0K!Lq&X`4d_oh{ z>2+&s>-qR7A75YKVV}yqd^wmQ8KhBVb`uCotYxOb>p^#MIDLrP3!e|V)i$L80X>J} ztAG^nI-s7Oz~YJVr|UR(eK+6v2JeVDU;Aoi%TXkxC?-Up1}x-oQCZ6axr0N@cs#j2 z`ZO>t9?m50LY3| z`gN%Qd;45^?PL{14xR>Sg09e&hgpm9MSOVi zN6Y2x*io*w&J46GhH`2YED~aIKAhf)jJR&_K^`GnmVY zldt+6A&leN-&jZ?ulR2Z2W$XfmFum>9?i}-27msS<{%oxW{FoQr>`?El!2gJ1EfY8 zw6RJlPtLPOb&&Jztt_r{%p6ZN(*Y=sYCzSO=+@|l#67AggP(4q!I|uRf#E77y=wFK zhFx&_hb+4brdoj<4F67%{Z+xh zn7c%mMW6X(Q}XDqm-mm4gF#1qDnN+;+GGfkoa5dM2|MYJm5+a4Gbc!VZ?zMSLSlIg zcB<#Ze;5Jv^GF-Xc@tAJXikH9=bPCnxQG3FVh8fl3(P<(L*^psoK7dhvr8|7BhGOV z5f9tH2`J))h0Y50SI4H2WORbBi;rxls>j;M=Q=KZB}xuu5S8II?~9F#%M)_l$xb>w zQcV+Ufz;1~gvrs4_wICDl7MxtmJxtdy_=?C|JPSO&&GjCb~edl_7laTSTqM0m-|4{@y&vElS`!C`De|Gl% z|Jhvk=->;_e`^8$DFvuoaxLIh(f39(HjL{0^CR#t%V@J@phC*!xc}-nK<9ioU?+4T zuB`w477we}xBtGWll*^GXuyG3POeMH_cXLv6PeR5-@u!o7%b+e4|3T#Q{oVaG62A; zYHCiZnYv*_T_htWp+ahbXPkr%> zx|jhWZk;3Z3iMZ~tGux|;RT?#)jtoh%YjLWszBZCXq18pk?V?l2r>Z#w*#1wo zb@QYA^ixz^%AcTqe?G3_@j;XjgF?(4e*W?ys~l3mZkSvgUknmtV2}{tP3{1D2s{je zg6T8J^RK&eDkpy#8lU$q14eS1cC1K7Dqo|A(re?y92imETx-sJzH#%XN&M(TNVVe< z>+fWdg63wCbIqG`r??b8?Sd`Ah0KTp!f4)4+)yF*k@`EeNan7#5%n6tVESU_i}bK4 z?l|kH?9tKJ0DxCeKGM$L5pCQU0?Hl^X>o?W2Ge!6@HdUZBr~OpZ48dO_Ixy`KKG@X zcPsKNtgMr}@2wC;8~w!Y>#42o275p=f5A!ipO1Mj%|+;$CVT)3W-(hEPQ+DAFRbvawh|7bVx^zB`n~lsZ^0``Kz@Fi3wVEjBi{{`mM^N{@c% z{a~(ygalnMq6Dv9{t`&+$H)%~zZ;1y@xp(K+j@Uf8KSJ?#2p+iR=U1kFjZw^KK<2Bc>oWJo-Meu>enmyoELSN_s00E#mJgxi8ID+jN2R41?L)2s67|ME z_Uwm$cVUe+Kj67-f%d(pCkvw*2M3GvE)4q~Q~-dC+|i%Ifz2s~*_FkW9D1O@-GY%t zN&zj;Gs_QCbxqx-_May%w0@VkNXq^&Q#WI+Xg=NV>w!Da3&I_bTq*(MNT5(C%M@k? z4}l*f_L@~$NgHOUmccS(xpmpWnu7GucxXZukT7;@LG55qU3x9@aJ*Gjs9xRy4#1z` ziHW`TKdrgg)|FPu>(=^w5<77z{_}3>sMi^?j+r;>>F8L?G)!X-J2_U@bNKaUkcnJ8 z8x$rQynUM?L~}Q1pu@KS%;dJlpNWs=x^m49W6Xkl!RX03k3)JER_5-J9(74ZFBQxU zm;zuq&XXjJz6S~Cbt52uZ1wY(oY(q$tU`31OP1<<1VI(V7Cq!D(J$Ura(j$4II|fb zYHc$%bot=JZ=t-xdS&4>IoZo5fG3kv7TvEuJ%UL9)*Mh}h+iBd=R;QMg?yxp;m7A{ z5v7|4xTWLk-xAm*pF1ow6tKLu+M$EeTIq&YKkezBneKh670XqWwtA)+tJ{F-FNsOK zewUQ}gUw$i^yFuFL647u?Ckj)*b|Q<4<8YXudf(}+Xwfvq2JeF{;^Nzg0NxMmoJ@x zN>^{+`upLT|Hudy3DQj$Rep8^QR(ur-CuYF4ojED*(SpJOIX+pS!Myl(aTN(d_=W8l=MT(f=$+{SARI;P;O3Sq7u7CE#q(1+ zgmQ(`Z|bNF;L!A!s^*maDUv{Fif9jg@NO``kLZ!kDOVF_i)CR3${7nuW5LJ$RuH6c zpbRK5Qu<>lE`F#DMnnDV>k9*8<|yvc_u2Po4X)HEVO;#b4-IWiwOkJh3g8;g*xDg zu~_cg7O&NcOzDt=A<~ws*RLCoJzztm-!CIA4QNV zIQAQ>dqnW%*o9AD7Z9k^??@AMX9&oY4mObspHTrb;H<`qul_g*Z6Hum+R1;@o}O4( zS^PfEJrh|{!VNOHrawPc*l0HetF{HHHmH39&lmE&77$+M#>Xc6)EfvAIJ&reJaVDL z?{?TMu_-5ZYl6Vm47~PWzJza~hWCX4X>mwDs?n}~8po{%`+y{28XMDWMq35hEIoVn ztU3O>%K73G)blDs)1b~{KDc*CP0A&`8XMy0Ha1)I{CQ=%HJo5xwu9u=YdGNuB{W9Fd}v8a%ZSdM97yfA~#$a!^q;+&k40%)RVU{2yfZvyXRyKm-(nfZik=J*bo11H!Slau{N7s}^RQWp^9zJ|XFcp#j z|D8V~uCR-kTl@!wMu7{DRuSGb#JA|y?RXe?p@Q(zQxtl!}*pbY~LkW51FhJ z+D$R74jQtAg(R zKA>QxOIY{Z0QkSZ&HT^hK1|@V8zc&d9(@hN!F49v>+GiAS`m@)727vR4TW8jd!VOh z<|h!MROX(e8ns$&F&m4)9<2nW`L)NVVn`0$xttryXun=kuwxbnif~`TLU`eZzb2`% zp}EMRp&_U^oBCwlLeB&D<~iY8^rpJwB}%RnQ&WG|moLpc3UZS?sWk0lQ#R|vGX%DN zGZo=Gy2hnhav@zQW$L7Mr}+xGfG@}@Kr3ukIK7%@L(I7KhVnPAH&0ek8NEu8@$osc z-Fc^@uTLj#5)CFuw9v$GYWCK-p6@k_*Y6bm*=x)c_Pc*VY4|@tSd~}7iHG_>05kEB zOK|!K)~WW-d|9^$Bj$UDs2V{C&yH0tGKrxNW*Uh6x#%#)`&Ij4z(}aoN9|y!&3fQ>g z)S4C*pA*SseUFdV2ICZe59h#d(b6h_%B1+S-@h(Q2cBF0=l@#%@BW?*wzMKMv($nf zS4hd|7Jj_HsM9X)K@gqW!pns3t5WCP1Gkf}0=ocSAyaK7_!0?8r5Q^1C(}bgucLcW ztp2~FyP~eSKoTaWr`2;^IQosQm~0Hsug?@1*D`Q)C?zlCrBNmjwpJ5S%rY^YG5Z*d zIS?7XWYFBXl%rry4fjHEriIb^^UkqgaL@zE#QpXzx*}niEP_)*`|+;#oKF+gdkKl& zGxYSMB@}XesYi~YyrQBZBxbJROJ`D^KVUsPK_$-KVTqiS)TQZK!h1Me931^nI@Hx3 zKfMnvExzHH(}gV9DvVEn&w4C+KpeLW+g6s6S~gVu%KeXN{_YP-tKQCi_>`TKFlXcL z?D~78hoV@~z7ZI@#HuyO@;z~6ll?srkNfk!yisX>+Rx|3c1OV29WRVmkP#*BIifH( zcO2Bot%4zq*Zd?CTy}=30|p0GPH)oL*vY5G$9HblAnys;WH(@fqq3O#`}=kN2-nz0 zfUhkrEstm)#~;4W&0PmyZ_U=F`CSb9i{`df>h6+lgX(EuuLa*zg1`7}dWwqySy2=$ zK0f6fCi3^_PO*PYyW<__#{_IT@3)8JqLpPL-mO#`op}6utXpRz5h2j{#D5Oce0C5* zBqb$t{u(m}hC4gI_t-UWkdl%fT4OPcZ*c9eE;o|iy7is(z0$WY|2#~bcD6jhwM%(O zT~Zd)2^`9jiC2~bvppYscJl$%KA8dcInyn3V~f#rzgq8TPK`*loJRt6Zf#!3vU@xHUq11g}zGq#zdUX-iKf8zCXMG^nI)lm7EHQ_A>?!|vUAcwtG>C}v zPfG`y#M!$65_F=1`G8D0j94voK$$k21J`Q5OwYD_b zWG_x3MtC$o4teGwn1k*^E2-#5$;JQc9S>>ZWg zBlu)}zCkZ?g^G%b=!N8quMrU)BW;1o9ih2$OEN?glaq^^UiJz$P^u>>9&+;Xu$AW5 zfg8xxO*OtAWC$f>5hQQ`XxKwgQS^4*dd%;>i$d!it^ zx_G7l(0Go=@ZyAQ0ERsMV(TKvTjM0_BZCCW4@1IY?lOHQTMfi`Ij(L&BO{~ob+Smn zs7d05nUg~zFz{@}BLcl`m|>eVmMlc^+{A<#j7WP1?8VWF77?bJ7# z8G3F9wm$dy$xjsAU~aG!TQW_QZ&*U3QS`dv-h7rG6^JRH>*@+2pV_24t;nBLpPm5; zMslLBa&l4~?SEpw_jZTbr5G85q4Y#s)9wL6)LoQd%Lj%1=K`r;@C3z|Idgu$tWtZl zBw+lal2!1+MPM$2Gxv;@ps-f5Z-3cu;uf7El(kJXfof=~uaLE8+2Q;5`pq7<0^+7> z8%Qs|X6%VJk*K%|S_7T~Y3AF7lVD}Cl}m+bfTYd=)tHZ}F-jojP%zeOrpUq1ZF zM8vN8Q@Fze9LAa1nXg|$nUCZrW_h5>53{lw99l;)E7amf#l?>VvLfJCr+7{i>p%sW zKi3xq;N)-lXuyD=bO3lMjjvPjD1OiE*AEL}6JixgbH5Khx&@VgaTar6#6X|G@3x;# zeoMl9TfrxdAKk|UhU;wR`!VwazlXZMg7r5xHjd(+v*5e!1HD%dM&cSOC@ZfWI#N6_ z6!?SGqY$4@^n`U3L!GbQy!v~x;qj~xT$8A%xn`J}Wr&A_l!ET|3pvI#8)x+PygiJ^ zsMIF*3Ar-)?c2A3J?Y)2KKDn0>KAhBqK`T zh9U}SF%Wq2i#IBN4Tv1_&G#k0eew(nO(>$i8Vg3WudE$NOGz=XZ~lj}S|=x|2SNp! z>ulzNTi=um+9Nh=R*{?P?hHa$mm|>om>1I~$&lyOrknVYwhLwGrvM76dA4 zW&DL=DcF>V_6*BXJ%a`A-RRXj76*m>7oK;7m#Nh|EczI&ZC875NMDBemAmFY9iXDEN7wcBV0whfoWA7-RfB$t6`ck-(64BY| z^e*MvrDWlb)<9BXuw}hsD}rMSv>w;VAe0vz)9k^z~TLXG{y!^>}`j;M=uo5GJm1(L!x zHXi9!MDD_pF2~QM+fV1Z#vXt9a)pGPR)QcQS?|(yKs#~rfQKhMt3$cm2|)u(6iPv- z2vvbs1#W(0u7%bQ2CEBIR#aLAD1!Ex{oAqRhUT#bt}63^#m3f`DMB?Hb2TBq>p#q; z<>irv(Ih7Rf}DCj0Y>KmKhsdmw{Jhzl{=gOCLsdVz&(`nEqYX2TU#&XR$T)L8 z0yiSMgcJa|a3YVh{b4?Dm}9NC;;GX$(fRGZIbUp5*eo|N%tG+Fs{vuO0#BBb?Bx_; zli%=r-~I1Bwzy(xxgjVdG`xnJ)A=*MK1HpkrxzI&#fx_5>%nW57<7!!;~9zgtzPFD z&NiOF{`P90McFdgGoOeE+PiT4cx2B2?>F zeM`a3O%UN@hW9<+k`fMgQS*yTjaZ-l$!q-qA`GJK%! zeo^w-s_Cy$OX}3)%|@!PsB%&|M~~#$F-PwNS*8mGx$Kd{eV@_*l6o zrOMn-XzDQ-8Ea~4oE9RZmk*6X$>#*@U-c<-zh*OU9f9LWk3wBs40{E8#7fM@-V(Uh z%PQh&*B2Rf&aBPJsjBh+wnxu^%icJNjprW_M0H^Em(J@>tu&h(kMSvG zTDBILTOG}iA?dH586S-xtq$6+{hYI;eUU)n8WgQ-^*6}ztQXOmWzT<=1(<={@d;MB>%hbPX8y2|NSIF$!Vni z0~bL5HvjRO!;&>Gu?s|xtHdU`t|Gd z9-n@jhfLzjzQxyae3ecsgp4opbmw4^Iijq=VM+m9^!m)kL#=I%?`o&*G&5^R_FWKY#8)VrjM1I+cpMR@I%2o7dyQ(>PoG zbILyYD!o!AVN}W0oqHdwapfXL!|?C}l|q62-@5bd-xn|V%H1V1%Q2UdmRmSL5!D=f zP`cD^Kd7Dd=+Zj@2Yo2&+lPwrE2TcGhC%yvbeT-8*aC}AKIxrcLde1PhB*E$!NHT( zdiX9uBf%H2HL2;BjpY+~JLdi87+{M_%R&3{E8&9-N?7uRP*qpQcp>r5w-^SgA+XFo zf|XXW(k4w{d}3;ym4iR-p||hs#)hRw&-8Q>++_J=K6DgUwb|u) z2_-$MPj^3cCmb@94O{9=CyYTDnDd;d{e zD~H9T1RPLUi=^A0g281mcy(3G=U@qTT`C;Bm2GV7j<5ea26NN%FvK^1@e-!$)NY&GQCF`;=0usw7YY;gbq}XubR^{EFFFRWO5cIuXT9`SUm4 zYLzEEP#dhToFVE?US~1z=^3^N2qAwCIjmXP+Ag^1+~KS{d+&a{SM0KT>$UJMHEWrP zyTU$k@`r|f+eKJV7ZraoK;Y^PB5cvAs=nE!)%dxZUqe|&hqih)9QTCJVwPh_03=+Q zSQ39((~s_V;gBBaerG*77@)%JP0~N=wj>cY*u0&u2=V4&`k#0s_zdJ!9YB`Apr4&< z!efpjx@r|QRlPrd-vc($H@CK8vKj5r{~B`d6e zu3LXKpLpOVvZ@|+UKg>CT=R*KSI?X4OA;Uu{Z93$h+5KuUag24)RGrw+*&6+@$h(P zq;ky7Hn%q0S8rN$3=cvi57GFt;7}*eK;y(4Q z9wf3vdtYx|E$m*b5HjPM&V4Kg7T*nPbUXPkg3>O&P^|D6`P@zHvA6@VN;LUWMP=+Q zJJ?kAlAIva??S`S5Dk({vwj-&Tx;Xt*Xvq(=)-)^l&YYl}ER@Gm^76EWJMT zGYX<4hRBy7H=RT?{K?IK1KCB!eOh_%wC-|q59x*aH#FQqBzY{F1n&F&L9;7-rr-Qe zqS?+ecP4W)=#?$6@a!j?uTM?c(VjW|;Q~zcjLeb-kIvQ?ig@{v30dUiY$e>ujBMIB zGs0Nvjm<|d+f4tDW7Zt?&oPst4JPA4+@ax)v^=+bQHIK$aEQ6(g>`vVokh{^-b1DK z;iy<-&*yFhqLL)>|d8^-<(W!YOJq5rfLi$>v)rzN)1I)cRsPT zL#yyT-Rrk+CvMwvM7m$9Be!W=ttI-d_|@J}7#n3-R#wK#&xgU&^{LTQ-xHAguN$m% zbaYX<8jnKDUBBlTGT!2Lf5YRt_cJ?lz%Mkk{)=l{OAAW;u}LY^yNa;G!cDy#Y5?!Y zbbpE-4%8k?Z-(N%1HCN+54D*=cBfXiFo5=cyh=%s7eaVk0}q1kBP2P z^tLM|7yK@#8J(C|a>^$V{$;u@Yb#!CBnK;36abiJC=f!ItAG7Fd6?IRtsybxI(JP> zzVb{=X=tK$wk|LZ#IFN!b@BHh9$#zU(K;Cp0Y$qbvU@(A@@9W|-*JiAbkKC|^lbDa zk*B3unJc?6T|GSR|MV95ls2*24(ARRSA+)^ZhZU?h$uxaYy9u8kV(IWwp2bO1QLz0 z|HfdQ5d0acweOY;^Sa}=t%I;;4&y#9<$>u)OV`Tx5co3A!WC@e)sO(n(0ciY2j(=X1bVT zt--8aCa7XB#>hlXQC6;^wl;{k;BZ%7XO`(&>|qKSQ&nSk67}3$n^FKwR{(}8#~XW{ zC@tBWr?2X+T*lLf*7?Bw(5BTx7#8^Lan5e{ZMmO99Y$~|@lR*eVbB>w`c6_}W_G2c zdquf8Le<9J-tcEdA?yqci->3jMNdyU^VVmZw1CBM+-O$q-ty9=7w2d0CL`-N&`1gA zt&8}VzP+lEPYbvab9~BV8}0x=S|F;A=XHC3qqmi{HO3t->WG5_C*V^b03`zY?h9~Z zZ|CLhmtBaoy*A(va73WQtmF34nISL`m~l7KE-G< z#Z)y`0Z?l9jH%JM6UF2I9ADlQzWb*B?1;>3IQQkx<>gn_TG1@|w#)sxpFe*YJ6}rX z%28qM>)YBx-GxqAWor}1!K1LSNUyoS(QQ+UwKqXXQptu8mTRY=%bElMPYRe$=96!H zubW~lF&~IiHpcV|3QB#w(78BpJ-qJZ(oE8Wl=?=%xcfgmh3jIIpwC9)r%-_-%I?@@ z>h^R$TAfDb0P!IvLc-3B$%3>aX>xh^kbALD8_`hbj++tw(F}T0=h1&#%CNihHhzcv z>4a(sLs=0IPFiZyxA)lC{QNTLFNrKlz--B;MpCRMbKkeiUGNQh2h{&XG}lJnM$qp# zFeqg48@94`gz<@6VNua!knma7%5nCG+{-Ma{;Xai=fdy4ziJ*B@U}7RR1E?hJKLiG zen|UC%Q4Gt({IojLHtjb{1IPRczSWQprC+!$>+T$yLR;EUN1+P;ju&Axd#iB)n*eV z6l7%aW+-U+XSy02a*5dYU%I&PCx^!Sp{lNFBjXMZhr73hjCx{aUrEvT_WG<0AC_XO zF62h`()&BG^P+o9nWF=P_+ra*k8S%y8^dk8^W)n34&I`?>{gTxE8WmDqyU#cUB3bFKUxR6 z>@an^7IR7PaRRqty|!sxo>H1kR3U7B#DMhD9#^``+{$|DPKqL>lS*>=m07Lj=-~&m zxSe!;KI@+s5F5L{V$+?x8yjkT&h=4YGzh!j2loN(>fN`WmamT1N`;4;n!bHpv@q5R zo3qqPTX%M0Ch(0};m}|&!s;&Dhr3OZgf}THC}f|=8~xfL zHG>6{UN3TA8mx*d=DvOoRVPNw19zP4;k{| zQN3+!dfe~Xf0aeE=mf5fUtr+eGKwfiqx60LSNU}J^j`FLg-#u;2i_;=Z!pghg@^MI zU2S;ZqaMR;%#v@v-uZjXw!(rsZO<&?VfzFR;<>f;QOW^1v&m{;L>Ki^<8WF%K0D#lTZJXJ@ zgNN(~B@`T3IG67-Gv5Y)?x+SSAbUclDWGp^Dr;lIfrUe`ko-lmM<3|hXxKTw{!|13 zCK&RyRrcHN1b>Ia$kG2`7ImbGA3KoqZxO`vSn6&}yVo4Zz@TFaCgAs&m=a)k?zOeh z$!@m%!3_1{#fv8gZa{N(i{JG7t2H>jA%bCmesNvi$%&UCGZRr!RmEm=z-D$fB(8Vb z+5>Vaf9y9ATrx=3_B{5?(W<5GG6g=k+k?fq30g^n!&zatg7EG51#W2mj&=^c zE#X{EN)AyNGG;dnS(hUF1n{W+FkR8 zm5@=R_ahkx>OHl;K8bz&wEvMy?LG#ixQeQZt2Y5embrvjUtbS8{ykuZOh!L8A{wc6 zQ9V7X;o)I)i{Ewn`HTLmvBgIS;pI~b%RQ%i+UtL#h6K@9Zfh?oS+M~+X|%Y*u;7fFNN+udzUa}KYE-e7rB^*tu{jf;mZ!^;Q`!>*@!8hrPk)A!-^ z#4lu;MSS^k&ya#uF1E-pQ?(E?m~0Rh`l|0gt0X?&hB;zm4d0Ulu2?`htRb|0_;9tL z=o`4_fRxcc$#Sn^&3)a#)37U|aiT50pup<&NM540dgr&!&Vbl~^dhsvON%V3QqK&o z!x#~vth{$WGMi2B;3?3;EZOVyj~xV`f8igfKYQOK8FH1RMW3BeKd-ZT95=ULb|@>;F?DV0>kh7V-afaOL;tk!0e+k4VpL#v z1du8}?4Az)#d-DZOo4#X!op8aV%r#$7g26nk?3cva4}5q^+Xm;v^T4A#s_9rE_0ju z=zCODHhmE7!B0T%%oZkjlA*~n9lwUw=dvUy1Vv7ZVqnBeL~`A(J{rzE`c%f+?h!7BF;l*&<9hs67!4&vTP6WE60J)4)57#HWFf`SUwO0Cx6HUcJGFxI0% zl$j$R%E)w{YDBeTwY5$7g5}ZnahSF$o8yB-{*t!dG98iVh@_;D@2_gUsCqYgp@hq6 zxF#3+a{u|U9mUX}$*4aOO!-N@KyIzHof*$9jC4O2&!eH9|0V2=v)9%)GV)Uuf+q3| zX$DH2Z-))r*NY0%>@vf4md|i{;<SjfRhWE-jc0WZmeA6Hd;qH7t9DA{;iX`7~U- zG{I#uNk5Umw@qB2e|!Zoy?V-Wd38vCmO!M)xi~YZ3o3o3Iy1Gvea{VVVd~~KSRdqJYE5PJ%o{9q0o(?jW$oW5&;M3~i;_f4lE5JW0H0gSwWj1gm zod0yb5jA(dh%7cftubIg)A61(r~&G@$*?ZBO&s@qb*QPw=&lXM{ksXB?KrHZRdvl6wWo^GOk)N)vHSjYHTw-o|0oNub?frSmr>086 zTQZ4DNng~LMq+jruAlL35y1U%V>iKsHljYT{_;O#i5kVX)S-ErveYxb`4D+$jHEW} zlYGj2J{lEqO*LJgKGhuV2_)2CedV!M)z}{ERUC9n=>1Grv~#xPzL_=ns01Ax5M8;= zpRmhkjY{wnX!KL09QfRV=XSP2$CqdFGqoe*sy>-hT0L-netlEbt zFtjWt-X{~Eib)tyD}U`tu}Bi(eTy>uM%?hm&f+E26OR5gMSSjte+cU73j{< z3jaRUDs!b2@^}k!C&Z>3k@6NTA79JKZbxuQNr^_^jcd*kxvI5jt{LRxIBsVONM}%N z9IocqtJNCiqC=Fbj0}gkWRPB4h)7Y52Lo@+;Wn|&&t_?mV!vkJ11z<6dM$BbX&Aui z6NSWY=YtGqqm|)(t!`q#5bV84Mo1{r098eG^-@JyLBS@uCk0;3)%LU*9r8p9{Uu7z zt9Ga`XQt=r-~Ya4^AyT&sVRd=IpbE}uik8fN#)#XET^=rY#YRM;}fQ23bjg`8&IQy zEmX)78PDer!Q7xjFzOmMr`D=&{YL5Wa{*04_Nl8WsVGiC9hWeGfZgo8TwCgkw(apQ~6oNs1n^s1BiQp1U8P`@Hb8=(k^5frYzezY+rCRl79PO4!h{=i)85A$Q#e^t9%zV|PSA0^7QI zSsn!z=`?D{IJw5R$wuDy&rfC*a@}2gDTb;1)x8Ir`%7l0mUgS1l9bEHe_~Ii=V0n7 zMa+XaQ@CT8Ghaf5Q(q3<=j&Y?{p21s-+mcnbllq7Rc?G;F}2}XM6K?<@2ryta-{c! z@6y!NIu|{@jOfKl=y_1LQ;vjjow2boC_Xd;SAXq)_Z56m!3N|9DDUXnc9#s6Q!wDN z!W1d7LtBpK?%g+*Mjm(#L<-N+Ohqo5@#T^|TUk~M(drWmSzB$^Jqr9S8uS>MDU)fRI{v}mr zLFQ&SIHW~!B`<=lUk`@^%(rbzw4%C4B`x!SM&d_MRQyL@ zjY>U>XIe$gxu$K=EGGBg+#n*71^!f$f)1C(sFzVs9GI}Yur2z$G-0Xq^+|7Ou6j-X zTTTq);>fY_N>c(Tcet(Xdk!ySvPE7!-YrLBIGr7~s(GvsU;C&&QJ{NInzUn=c*4lC zSu5MYd@`^Sf=x^3kZIAbz}1hg8;^g^B1Jf~F5+P|tQ59Ec;ae1(6g}M<>L>FiD+&~ z3B)dw|0nMr%Uuk^)MFzdVb{A3ybB=Ju$z42O-M+%^xGL~K%M3OS&6o0gpP9id#c{v zgX{aPo#O!+8LxmNcHsD$hM&LHO>?qqHLA~wbxz4>Yg>$O)9$4or1~Y35CUx>sQWXofF!b&ofm8>a{*9$>Ztb?Vw(ae( zw3_cUuIC@g0xBzEjM)XYt}OuX9~A6Yn;}uSz@&wT`8~%ZoLpZ{IxDnCI?JD^mH1Vd zjKsVyL`kYP&LaX)?sIyaG^_V2$jKS*R_)q3=ML1WCi%^O^!3F>`1?zj$6jP7?TAR| zEQbLP8llFAD~SMkp)q)BAh^uO--WDA+*sZo&YJ*@2h#%|vzXJVa;NKzQLCyOgfs=E zr7b#aR)-Iguj1G0-S6^>yrGqpRGwhk0YYiDdXIaEP!X-Tl$1cX^HU9&DJekvViROK zm4)qjx=Z}LujHx7Dny*yiZmF+?-NXbueq{V+WjVK9iXxwX@YiXKfkiW*f_Q!J9Wh;UdN zPn;9{^1U721xCipN}D7RIT9E!!|+}X^*oEsbA7*}y7D7XInwpp77jGnxI^o$^$fvr zkzCl0#EV#~y^^n*LAn$ZeGz|r@(O(KLY`H4EVO`2DgM+(|xn z+8GZPO$nQ)bvc>Q>cCf>DBEbao_-%3-#t=lDim+n&HQCwUE^d({p^JH@3^t04egPz z3^xghunpG;Az?vzvHp)#l%qz#eb(P=YZz#bbcxUS=J6h-!9>{_B313+QJJiYvVS&w z7&&U?(?2<3=J`;^s7Fd7(Co0}o6NoJ!;k@B z=8Czwy3qyHik6P=AD74;6!40G_{N&lT@q%D9c}w}q-m(O3dX99^D9gAvZI(S1nTAD zU#P0bd*rCr*%-dblap9~623&HTm&54?L}58bgOaRbH7jj=B(|N@p9o6rwr{dW{2Ib|Lq`0`bk;WfnSX5M)j4xt4P5F3v`*&`hCRw1__aY+N2xyUkwMyT=>n}AuHagm$ zudR*1^nSa%JAJHCW7i=_K|&&tueEXQ79mx^32-mdeuidt6dx%+_!~m8i2$*U z{&8=j+n}XrRGt0bM}~@kWA{!69i*@vRqJh{VkAg+EbHSV=T4xG1|r*_o3jHfpC7An z#%l|?z0~YagirQ>(3FhqN6=#gRK^+43aN}SF`;UtqhbpB*%BB(mz$GAvVUldPbM5- zyVM7>X}h{4J|b2E*1UJVx-}M6p+I=oZwu<(I{~~b-Zif~mM6KYZ-_nAkR^9PF^9xm zcsY^A0mcJ%>%)oAg9snH32xUV`$P`at9OX6@t0cL+SBmU;&{PXEjVy2G)4;dUP!=x z(h)ID>1NkeU%l^I-=!{8g|rFrYyU#~fF;Bo^34Vu)SnSuMFF|$rStjqXN#{j1l1i+ z9>O%|l1(g?4K4(tKG)i5-QE-IgJk}m>_q;##a}WnUHA)0gU8G-jj`#TEIk8nNp&|L z8$*-tpZQitEa#zp9d}%QS8S^b1$nnEu;>2jkV^PFX!;4Z+r6buR-J0Q)eR^eaQ-7l z`0W9LW>|_e;?jeX0#q`p6;>2e$mQ2b_2&(ZX8ZJ-S=Z0ic|$>-*D%!+3=H9DaWOV6 zo-H6c+Wi`Rlc{ZVe*LcK7>6NLvaKK~8ZRx5(nU+tK2ymhQ<3-AYnO%Tr^!U7s`Ctt zTReZ=)!G@*+Q);F^6DeipyxVYmnZ3cA7(0>kr(+|#=?aoU!Qkrv~inm3Cfe6_vWh= zmx&J3QaR>BeZX;C9Sd*QU#!f>FT|gnP7<_$Z}aP7A{MY%&-Z}RQv)Nv?Y=~wuzMh) zc0;vX;D5<$&a}nm7ZP%pYo}9u%#)6rI}(onM#YbZFJIpJ^hpK2)UgyP#0&hF3Ofc~ z^+)f09|4B>keKz?^#U|+FXsnkYx4S~{xfgSALU2{qVDJy-mT$m$7Gd=$VQzz%Svn` zgn5c-Hje@gGXx*)xcuP)*xcjie~?D1- zxbmg4Jd0LUb3ml&XoWN9Tw6%x+IYjx@!F&_9sO}t*WW=Sd9$tHW@YD$KeYgf2N5U2sc@>olYrbP| zpMZ6dWbt_e2IA$?Q?0+XbX%?P(qqV-Y>i@d-4}5TxSk4XnHPC4o4_`@GC}c(nTPTW zQ<=5p<2}iEB627s3JS~a0zCsD^Ud{R_vPK*i5-_?=0Frs4rm0as8sqmCUq@ATO6y4}Z=lw=qSQHRroq`&(9`R3fcFJBI4 zzIZ^TfT3e^!G$P(oL)kD2nC5 z!9gKL{WH2S){oaNE-wcjh0lO-FPrrbgOFt2j*MCH4PJjMo>i>BF5y!>U|BEQCd}9D z+8c-Tva>4EuhDvok&!$xK}zNc8lQ~itT${ry4)SlN#?5&rG5h~{8a)V3Vh!U>%fGx zB9zg&q&rq1832HLb; zHV6dn|5wlRH}FJ(eAxV<5zAyUMR=tF1UE4p_WU6A-l61;iR|)h>g`=mT4#kpF;uep z+l$ORL5D<`wWU)_H*|QR`J77zf$F-W7dAPU6$&I)E zy|%iAcKx4B$@9M_eDAJxZVjS%R9nU4dgtiyh(mu|1=5!{q_3N&Ma_C|sRfxP-KI)S ziECH-c+J53>K&(74MFy(Bc8H@hf7;gKS%SF z`%^H$MsM+@%+xV94h^mpQ*Mq`-@*_sC|*p)im<^8<*Rx2Fi?DpdrV!UCbTPJYBP;N?>-mWTula=ur6}@k`pDXu_;SZB0OTZ4_}f{+V`a=*S`#36oCjBi z!K~*4WZ^g_lZ)2R&{t?fGsctGuAWsX3hcJzeVyoV+x~dZ$?`1TYqRtpqd$9MKO0KEi9)Nd0AT zDxY+Bbev&4%YPBM5zXSUyf>16jCfl1gcPXghGp`rFPIPA_B0TAhX+QCqG1E5H!JvQ zN@EF$JCntI{blyqOz!mN7cvBruR-dP)*55>LSEt5SpW+MI3|>A@ z(JZXhe5}bU6>@HFHDlzrgoW!6Toyk@%_#5Q?Z6-`C#2c3NFkWb*%xulVmB7jbSK#;3$V}9AsT&97ZiHT`$Emdu=Vz%q7&ghJc4BuY@92{Ykb?4Wl zl4zdgz8=ybLsJvKJm&mEP5iOBN#FAB;@qLxFcUh@m#)^8m<$AbE-Opmbq+vdGySmo zhQGvf+>BC}q0yJqxYuT}TW#(b3~@k1pP=6sf@YW)J&70Va7!>$$~L+TS5S(JWV6o6 z|M6wAxLjgVXS$wMmIl9E)Vg-$0|S6e()vtHYfgt0LMGd zTx0DL`a*Vg+P3@k7ksI44fW2>;=v<5HX>1EqvvpY`uB8o@`|$XCl8@*+03*myF(6O zt#5Arh1OWbao5A>^dZ=_#qN#;2~MCTVv=t#{}>_cJLkFb$lPS@T`t_PKG@WSp`DqM z@XlIe4gcl>{)F$>Zn1)rk`$SR`yeF`0$ZY=b8}5!gX1q=y0Qq)cHIfP*kFRzJ>V|g z1&I5lg-)BbDgx8t6B*=m?T-a1KHGJ2k<*fI2m5+?UpX0oHW5-@&f|G%k3f>~&}-)< zNFRci!-3r|c$n1&f<$wQ5wD~Y$Mh9b=GvcFwTl#c0#D)9c*(`!TMzC)N3L1D|8s3k z&g$t^O8JAB()zqs&`31Zy}v@K+btWO<$jzVyVcRAs;0IuCX5DsE?xgaRI5|~UImg_ zU0zRbt7l6uFYkI`p?q)0$B5?lm&r_qvS7IIoNK~kmPgxqv;A7uvn+`(?=L^;JgOh` z)x9S4j?i4aTxLWP@;SZwu$zr3{Mf=LI^_8^dpO_}V1}#|(8i*MI1k@v8&cKB-RyJysu!^A{#yiO0BrX-$PvB3g_ zJ}%KBmzL1h5sWu)z-=ZBIh?D%6=6co>*NQAzGoMOcD}eDk*fK3l$W3m9@}0bf_E#; z!vpF#{i1gf+1ZSoU**4oYa*x_IBXZ0=F9?rgETeE+NdR0z1+t9w;GsN{-xzK>uhFb zhQ6q%-4>k+Nf4Z>Zq@s=Qm@fW$;6qT8%#V1A``$ttJE=1u>1l7zU3N73&(POOdl`B zZfI@AQ5o?ZAyf~M@8C4j)1TwW1?|R3Wpx$r(qT*y`hI-viNm~l_3EbA`1z)lqw()$ z#TpK)I|x`(H2+j41=@}IdZ~ZIkdnkB$!*VbM||-5;n#=ZNEsMZvs#}VToh~i#%s4j zZ~n5Zd#_ATPzY7M(6?qb+0e`U;^xgDN}i}s-niB)ozL~=^h}l8onuUmvP^{-vl)N~Z0FgEsAGLGNHx(A1tgy!N zGOl*)Dya<)zP$Tu@PRX{uyB&MZ&>)aYh0B@hOYXyfAG7^$+}*(^iZn-CC$7u~LQ+^#=oZtR^-($rE1 z!lTT{v<};hV;4cY;MH&>SiwNcfb-rJ2i#phur#{8VA800hd4)&-@Z-KU#>tA#9?{Jc^F(E7=975q2pSMBFMMbtx}K5NwrA?0F8iz#KkR6Cb;)V6@~)s@f`9Up#mP!r z1U|*i8&T_0>*wt)o)^lQU%UC6^Lk;~+f-@~^=cMPXYh<6dqCrP zHk9?E!!GKnRt7K`9QO7QCtItQMynciE|K>nLl95X9d3sgWesIvT7hFXY*FhjLl*54 z%;Cp^NMNC}0xfobbm`x>ff{d!#;91IYjUM@lhS$mp^%A|C4_H#ac-gXwik;ge_B_u zVzrSRn8E(lFzLKKR^W^$&A=0X8HS&y?m|en;;T}1jnlR2D&c$J4IAX{Dfp$ermZJ_ z(NbsWJuDKFPZnxBx*UI?*DL6z&OdOz0WLnY!Zc5B-oD+_tUzmf zR>Ol3a;ecN3yn?gTMRCL4?Wr4;srikL*0kSXcw#k^LXOz`lGm*3Qxk$WGF2h+iE2B z^ax>+hwtj@Cw&}!yx#)a1u(dszAX>}NF!MnoUu`OquL&)%n0yu`(zk+v$76NLJYmc zT=>sCoGR>b9|fz`$vi`uC9?4i7OwN+VG_6v;Dh!D3?3l7AwX6{xDo2gs_BY{hxb(> zw!1+^n~t701`MV+UH3F(uCvNNeR>s&I1G?Q&Z50Wf7Ou_f-kx;>;XeO%X;?l+6I14 z_$m7H9jmYo?{EcXpBw+m7hD`k1n|k*+LE6Z3cq} zwg970B!%+yXy-w^_JtHxc9r3rmyJL;J#asL3iTz(F%-z*t-RWp; z>!0(|pFf{n%o!EgBk2R(A3A*r@v78r-UB^}`uybrv@B}0nls|^!`ZE?cFprc4N z8{;Ukmv2A?ca(ZVj{?WNU1ejK`Rhp^E43+XLbFDRj+1aKcdkne0WA!Dl zg>0AF6^@x(k1Cvf6!A+-@LP%SuJ%wkWmJ&j6dEm`r(>@9@ z@unao#=g>e&1f<1srIk!h7B($Rq7M}l*n7j*RPU*UOIksukC@w;V~8ftBJ6D{Ol-@ zKqTQ6zLn~Y!f%~F0;*A{1R>Xu@@b0J6drBk{?+_gbI+yT+i%}`7nkI|W4fT&jW*R< zrJNWoSs>_56d@RknX=g#wQdc%ZH#Y*{w`L1UillB-P}DP#cp@Uv0sL&u6RxS+cy$^ zH|jTU-XH)hL7>r~Lfa)4P?dE3?lV%Vbt&~7FHcyfr0z2t+h5W~vjDt(uUNCrQXtI7 z%X*{toTuvZLs{W65#$hW?;}^HtDROj?nwsIG6@bGOKt+B^QwZf=48J`NoTrM4ip}X5 zN0X7V%TbR4tbWZ)f0a8AiudqvE4Sl=6)PM9@pswetWq8GlfeDLxT01jlF`uAO(kD@ zsXDD|to~d9;%|IzS>_t@d`28j_yg*F|BH6o=$X|wr z*I{kJR#QME=%p{QXjgXDU~8iqUG*tlg3$Su|4#^-7crcw+Jyl!rq_?8B)i{(Z@QxM zHi``h;W)^;(=PCvo4s z_d%^zAy-Dy9qZPU>pcjf?W&`}Hz_eD6&x9DgWmik<=`ZE;8 z!)K(j%5v2es~wnO*HB+TvWlSq;BBW^8EVC}U<&!!G(CiukMG*eYaeqF67myE_U8{9 z8(V4G1Z50a4;I%FfxXMBI7tovOgK0cE|ez1#3m0+d|~fV&oB|(n{ws-)7uy#x^XpgGs(+sLuU#tET^H1+@uR~-YdVfgUO2m}vAJ{0%Tn8mp~bHI z6tF8UBJbpb;q@#G3AB@h=vm>18f|fS$srkq2+A-ckfS5U(@8mW4U6(`RSf zqy3G*NS{a3>)q}@SoXoETjtPap?g^NvIlhZaoq@O8@p!6Oc0`Bjsv!2TwTJ4Q(Nis zxi2f(-K4Kwk2pCkDla!)JGyK(RTZp$=0QzOlA-!Z5UlR?HdA<@MC^7zf-rk~(%x8z-`5S0hP{^6L@otB#S0R^fDa%`_sW2A4BslAQC}Pg)x)B|ulGi0uO!ox<1-0 zPV#vinfRbKpqiHJH2p6a;Ex`$O53F?5b*aDT!{zv!fYGwerg?|prAlgv;Zsxv08WD zlq)<6T3&iT0y?+uacvclX2t7j19--^m?k|`cRKLoa9$two^P2^LMEfY{u6}!Ch4H1 z-H2kQV`sl8b%pT%9?XwribL*y67h@ZEO%#Qn)bBBH^*>Q9Qnfq0Qs+$80J*913Lp5 zTZ#y$NPNrDF4@H^7j;+mMK<@;y*YkoJD~_iUrrF-xGe`(un6BPw~baGhafF1=1s_7&V75v$5b4N_rD2a0r|F)C!}??knPpweyaL^K7(CdyM=-0u zM_bdDJJ{LHHxaa=I!!GyUVz^8Yy3-$L^GC}%FM0!4Z;pFtxIdcO6FqL0O0PX$z&a`4Mw*am<{f8QZ z*m)LWV`F~DSC(bno!{OTZiM`tc_V%S8@JeUQ5*R8iq_Ew>moZ z6@*f-3M%YdXjWRSaDXU$Fh^^OSKVN7NgFY5is`}*yh1tzdtu?bM-oq&XksF7U>)u0 zuKX}WkPAA+EHX5rjUvx){Tm;Y4vp2_*Oe&*HTmgFcHI!+-r3LO!K==F zODDo79!jPSd@_uNu$I6d*cnQi`;}KjGnLW`N=}S@cK=U6bA0Em|BIlx;)3k|BhZ_a z3}%YU?(0ep3p9lI@lQuYWm5BC(-4t&e6Trs&|yB>=$8L#gh-P1Q$I_GPedSZ{wl zBpa=~3-h-DHF(Y6U4;6(7FBNFD_yNtwT(TFSRJ+=;hF zVys|})d43bh^BBdCnf@F2wo~H-$T6o8N_PW#0pUOw_ka$YxyC7Rqtq{^5kqv@9#`1 zbRlzVb4X88r|qd5DWIN|y*!9;n3hML3U~i|Dr|8;wJrEBp8|{M$)DpaDnOiCieapF zK=n7w!`&smn*~+jXDpMsN}gWd9Q{R|2Q5rTCuG%o+Q0`G(h^v$HcYh=5(i2xfie~b z-YaieGh|Yd#^KL?C={VaJ${p>5!KPAW;c4xMxtoEA^k z(3~iyc+2VBR;!fNV(mXkRWgkFlp zZ`(0>kTram!vC(}|8r~Hrl2?bAFl9!0IvUs!LGo22Z-XeiO;z=gwX#BumNp3YmDnL z(ZQXrer$Nl|9w4jUSbSFKv>sxLAM;lONc9gc~Ojr~X&D49A? zGAzUCns&cYBIMCZs=r|WT>=8&V=%Ai$DY8sJb&1>TC#lGg*VP+(8C;CN@}8JRRTK7 zXLvUdU|jtcw@x=AyE|o+AkXwz*-wl7&Cp`&GVIMH6J&|HkVSJt2!U_!ap6o4@{cD; zl$j?+htg2O-*%A%YKw+~0xQ$-&)G1MnwvN{Ty?rNYHT^f-+Ok-r?X(POj71qXJQRB z2r^7Y%xD(%;D`vNtZ@O4IdrPv>ziI|=@NZE=6$Rmz>adMA54ZB0V$VNQ&tG{RekVb_VgoVxL^iX{Y6X5t9Ss- zX06-=qg7O3)|c@zXbIcXN} zgMF`1=O?_D`v*4g)w5?J0^UA^I};ME(Ek3CBIt;I5@9_q{C6d(RCb`>r*9>#K=|d zd4esHwt^n(^JeloGClK+NrMbFnju78ovE^?8fu+nx&m5Hp{wkqKX(q`OgQg4c-ie8})E?3(UQ zw6jbmmbUd33Gd8IdMb|-l=I{3_WfQV&A*Ls@H#<{8Cshv@l+n((+yyq`66oNuS zmrB%i;oVdLX=4VG#ZLdT`mfTP8cT-x6lgRhVo+q)b zV|i$oqQXt6MPd%Kb%{_0mWVf57G@V#QwHnNB9xCs?SNzo6@2l*i#2QWVWV7Yz_Y*c zn19=3Yp?GFonAm-AO;rJyWyOdF;5fKiVWzXF}fkd`BiNGpEnC!7j&2~$2`3TO~E@3 z`xefhiqUn<;E%YCO(NSh&4!#Vg6&DrS6biKUCs2VFpWA@Js4AMpyIro&@#Kc0!7#9jJ>$Szi{yb;=)Vo^bseBhF(0^jPHCdH( zKLoz1SAY*{Aj5x-b?m}>VZ`caF&(F$41a}ujI61D2BW6UAEAb+r^zd}s`j17;+=2U*~U}qsp6=QFFEs9yQ z*dHdKdWMPRz4Y+XXCayknbYND4h)I@wSOg;U)-LQ+RkS=EaGvL`PEW(S@PA^bp?Fn#|6&wnWrc$^kCyJ zf^<-X%hYMMfc<)<%i?1-HL%gX0oYGxE}E|K#`%0D#U0UdtI3sPMQg+A@p5a9C9rAv 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 BCmjF) diff --git a/content/notes/obsidian.md b/content/notes/obsidian.md deleted file mode 100644 index 8e5fedd82..000000000 --- a/content/notes/obsidian.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Obsidian Vault Integration" -tags: -- setup ---- - -## Setup -Obsidian is the preferred way to use Quartz. You can either create a new Obsidian Vault or link one that your already have. - -### New Vault -If you don't have an existing Vault, [download Obsidian](https://obsidian.md/) and create a new Vault in the `/content` folder that you created and cloned during the [setup](notes/setup.md) step. - -### Linking an existing Vault -The easiest way to use an existing Vault is to copy all of your files (directory and hierarchies intact) into the `/content` folder. - -## Settings -Great, now that you have your Obsidian linked to your Quartz, let's fix some settings so that they play well. - -1. Under Options > Files and Links, set the New link format to always use Absolute Path in Vault. -2. Go to Settings > Files & Links > Turn "on" automatically update internal links. - -![Obsidian Settings](/notes/images/obsidian-settings.png)*Obsidian Settings* - -## Templates -Inserting front matter everytime you want to create a new Note gets annoying really quickly. Luckily, Obsidian supports templates which makes inserting new content really easily. - -**If you decide to overwrite the `/content` folder completely, don't remove the `/content/templates` folder!** - -Head over to Options > Core Plugins and enable the Templates plugin. Then go to Options > Hotkeys and set a hotkey for 'Insert Template' (I recommend `[cmd]+T`). That way, when you create a new note, you can just press the hotkey for a new template and be ready to go! diff --git a/content/notes/philosophy.md b/content/notes/philosophy.md deleted file mode 100644 index bf04da3b1..000000000 --- a/content/notes/philosophy.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Quartz Philosophy" ---- - -> “[One] who works with the door open gets all kinds of interruptions, but [they] also occasionally gets clues as to what the world is and what might be important.” — Richard Hamming - -## Why Quartz? -Hosting a public digital garden isn't easy. There are an overwhelming number of tutorials, resources, and guides for tools like [Notion](https://www.notion.so/), [Roam](https://roamresearch.com/), and [Obsidian](https://obsidian.md/), yet none of them have super easy to use *free* tools to publish that garden to the world. - -I've personally found that -1. It's nice to access notes from anywhere -2. Having a public digital garden invites open conversations -3. It makes keeping personal notes and knowledge *playful and fun* - -I was really inspired by [Bianca](https://garden.bianca.digital/) and [Joel](https://joelhooks.com/digital-garden)'s digital gardens and wanted to try making my own. - -**The goal of Quartz is to make hosting your own public digital garden free and simple.** You don't even need your own website. Quartz does all of that for you and gives your own little corner of the internet. diff --git a/content/notes/preview changes.md b/content/notes/preview changes.md deleted file mode 100644 index 7f12f3055..000000000 --- a/content/notes/preview changes.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "Preview Changes" ---- - -If you'd like to preview what your Quartz site looks like before deploying it to the internet, here's exactly how to do that! - -Note that both of these steps need to be completed. - -## Install `hugo-obsidian` -This step will generate the list of backlinks for Hugo to parse. Ensure you have [Go](https://golang.org/doc/install) (>= 1.16) installed. - -```shell -# Install and link `hugo-obsidian` locally -$ go install github.com/jackyzha0/hugo-obsidian@latest - -# Navigate to your local Quartz folder -$ cd - -# Scrape all links in your Quartz folder and generate info for Quartz -$ hugo-obsidian -input=content -output=assets/indices -index -root=. -``` - -If you are running into an error saying that `command not found: hugo-obsidian`, make sure you set your `GOPATH` correctly! This will allow your terminal to correctly recognize hugo-obsidian as an executable. - -Afterwards, start the Hugo server as shown above and your local backlinks and interactive graph should be populated! - -## Installing Hugo -Hugo is the static site generator that powers Quartz. [Install Hugo with "extended" Sass/SCSS version](https://gohugo.io/getting-started/installing/) first. Then, - -``` -# Navigate to your local Quartz folder -$ cd - -# Start local server -$ hugo server - -# View your site in a browser at http://localhost:1313/ -``` diff --git a/content/notes/setup.md b/content/notes/setup.md deleted file mode 100644 index 495a43b68..000000000 --- a/content/notes/setup.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Setup" -tags: -- setup ---- - -## Making your own Quartz -Setting up Quartz requires a basic understanding of `git`. If you are unfamiliar, [this resource](https://resources.nwplus.io/2-beginner/how-to-git-github.html) is a great place to start! - -### Forking -> A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project. - -Navigate to the GitHub repository for the Quartz project: - -📁 [Quartz Repository](https://github.com/jackyzha0/quartz) - -Then, Fork the repository into your own GitHub account. If you don't have an account, you can make on for free [here](https://github.com/join). More details about forking a repo can be found on [GitHub's documentation](https://docs.github.com/en/get-started/quickstart/fork-a-repo). - -### Cloning -After you've made a fork of the repository, you need to download the files locally onto your machine. Ensure you have `git`, then type the following command replacing `YOUR-USERNAME` with your GitHub username. - -```shell -$ git clone https://github.com/YOUR-USERNAME/quartz -``` - -## Editing -Great! Now you have everything you need to start editing and growing your digital garden. If you're ready to start writing content already, check out the recommended flow for editing notes in Quartz. - -✏️ [Editing Notes in Quartz](notes/editing.md) - -Having problems? Checkout our [FAQ and Troubleshooting guide](notes/troubleshooting.md). - -## Updating -Haven't updated Quartz in a while and want all the cool new optimizations? On Unix/Mac systems you can run the following command for a one-line update! This command will show you a log summary of all commits since you last updated, press `q` to acknowledge this. Then, it will show you each change in turn and press `y` to accept the patch or `n` to reject it. Usually you should press `y` for most of these unless it conflicts with existing changes you've made! - -```shell -make update - -# or, if you don't want the interactive parts and just want the update -make update-force -``` - -Or, manually checkout the changes yourself. - -> ⚠️ **WARNING** ⚠️ -> -> If you customized the files in `data/`, or anything inside `layouts/`, your customization may be overwritten! -> Make sure you have a copy of these changes if you don't want to lose them. - - -```shell -# add Quartz as a remote host -git remote add upstream git@github.com:jackyzha0/quartz.git - -# index and fetch changes -git fetch upstream -git checkout -p upstream/hugo -- layouts .github Makefile assets/js assets/styles/base.scss assets/styles/darkmode.scss config.toml data -``` diff --git a/content/notes/showcase.md b/content/notes/showcase.md deleted file mode 100644 index 5c16a0d39..000000000 --- a/content/notes/showcase.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Showcase" ---- - -Want to see what Quartz can do? Here are some cool community gardens :) - -- [Quartz Documentation (this site!)](https://quartz.jzhao.xyz/) -- [Jacky Zhao's Garden](https://garden.jzhao.xyz/) -- [AWAGMI Intern Notes](https://notes.awagmi.xyz/) -- [Shihyu's PKM](https://shihyuho.github.io/pkm/) -- [Chloe's Garden](https://garden.chloeabrasada.online/) -- [SlRvb's Site](https://slrvb.github.io/Site/) -- [Course notes for Information Technology Advanced Theory](https://a2itnotes.github.io/quartz/) -- [Brandon Boswell's Garden](https://brandonkboswell.com) -- [Siyang's Courtyard](https://siyangsun.github.io/courtyard/) - -If you want to see your own on here, submit a [Pull Request adding yourself to this file](https://github.com/jackyzha0/quartz/blob/hugo/content/notes/showcase.md)! diff --git a/content/notes/troubleshooting.md b/content/notes/troubleshooting.md deleted file mode 100644 index 66eb87929..000000000 --- a/content/notes/troubleshooting.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: "Troubleshooting and FAQ" ---- - -Still having trouble? Here are a list of common questions and problems people encounter when installing Quartz. - -While you're here, join our [Discord](https://discord.gg/cRFFHYye7t) :) - -### Does Quartz have Latex support? -Yes! See [CJK + Latex Support (测试)](notes/CJK%20+%20Latex%20Support%20(测试).md) for a brief demo. - -### Can I use \ in Quartz? -Unless it produces direct Markdown output in the file, no. There currently is no way to bundle plugin code with Quartz. - -The easiest way would be to add your own HTML partial that supports the functionality you are looking for. - -### My GitHub pages is just showing the README and not Quartz -Make sure you set the source to deploy from `master` (and not `hugo`) using `/ (root)`! See more in the [hosting](/notes/hosting) guide - -### Some of my pages have 'January 1, 0001' as the last modified date -This is a problem caused by `git` treating files as case-insensitive by default and some of your posts probably have capitalized file names. You can turn this off in your Quartz by running this command. - -```shell -# in the root of your Quartz (same folder as config.toml) -git config core.ignorecase true - -# or globally (not recommended) -git config --global core.ignorecase true -``` - -### Can I publish only a subset of my pages? -Yes! Quartz makes selective publishing really easy. Heres a guide on [excluding pages from being published](notes/ignore%20notes.md). - -### Can I host this myself and not on GitHub Pages? -Yes! All built files can be found under `/public` in the `master` branch. More details under [hosting](notes/hosting.md). - -### `command not found: hugo-obsidian` -Make sure you set your `GOPATH` correctly! This will allow your terminal to correctly recognize `hugo-obsidian` as an executable. - -```shell -# Add the following 2 lines to your ~/.bash_profile -export GOPATH=/Users/$USER/go -export PATH=$GOPATH/bin:$PATH - -# In your current terminal, to reload the session -source ~/.bash_profile -``` - -### How come my notes aren't being rendered? -You probably forgot to include front matter in your Markdown files. You can either setup [Obsidian](notes/obsidian.md) to do this for you or you need to manually define it. More details in [the 'how to edit' guide](notes/editing.md). - -### My custom domain isn't working! -Walk through the steps in [the hosting guide](notes/hosting.md) again. Make sure you wait 30 min to 1 hour for changes to take effect. - -### How do I setup Google Analytics? -You can edit it in `config.toml` and either use a V3 (UA-) or V4 (G-) tag. - -### How do I change the content on the home page? -To edit the main home page, open `/content/_index.md`. - -### How do I change the colours? -You can change the theme by editing `assets/custom.scss`. More details on customization and themeing can be found in the [customization guide](notes/config.md). - -### How do I add images? -You can put images anywhere in the `/content` folder. - -```markdown -Example image (source is in content/notes/images/example.png) -![Example Image](/content/notes/images/example.png) -``` - -### My Interactive Graph and Backlinks aren't up to date -By default, the `linkIndex.json` (which Quartz needs to generate the Interactive Graph and Backlinks) are not regenerated locally. To set that up, see the guide on [local editing](notes/editing.md) - -### Can I use React/Vue/some other framework? -Not out of the box. You could probably make it work by editing `/layouts/_default/single.html` but that's not what Quartz is designed to work with. 99% of things you are trying to do with those frameworks you can accomplish perfectly fine using just vanilla HTML/CSS/JS. - -## Still Stuck? -Quartz isn't perfect! If you're still having troubles, file an issue in the GitHub repo with as much information as you can reasonably provide. Alternatively, you can message me on [Twitter](https://twitter.com/_jzhao) and I'll try to get back to you as soon as I can. - -🐛 [Submit an Issue](https://github.com/jackyzha0/quartz/issues) \ No newline at end of file diff --git a/content/private/private-note.md b/content/private/private-note.md deleted file mode 100644 index 6930c102c..000000000 --- a/content/private/private-note.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Private Stuff" ---- - -This page doesn't get published! \ No newline at end of file diff --git a/content/publish.css b/content/publish.css new file mode 100644 index 000000000..a2976236c --- /dev/null +++ b/content/publish.css @@ -0,0 +1,121 @@ +@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,900;1,900&family=Poppins:ital,wght@0,300;0,700;1,300;1,500;1,700&display=swap'); + +:root { + --text-accent: rgb(238, 27, 231); + --background-primary-alt: #000; +} +.theme-dark { + --text-accent: rgb(238, 27, 231); + --background-primary-alt: #000; +} + +html { + font-size: 16px; +} + +body.theme-dark { + color: #fff; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + font-size: .75rem; + background: #000; + box-sizing: border-box; + font-family: "Poppins", sans-serif; + font-weight: 500; + line-height: 1em; + font-smoothing: antialiased; + text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +body.theme-dark h1, +body.theme-dark h2, +body.theme-dark h3, +body.theme-dark h4, +body.theme-dark h5, +body.theme-dark h6, +body.theme-dark .page-header { + font-family: 'Playfair Display', serif; + margin-top: 45px; + margin-bottom: 25px; +} + +.page-header { + font-size: 2.5rem; +} + +.markdown-preview-view h1 { + font-size: 32px; + font-family: 'Playfair Display', sans-serif; + font-weight: 500; + line-height: 1.5; +} + +.markdown-preview-view { + font-size: 16px; + line-height: 26px; + font-family: 'Poppins', sans-serif; +} + +.markdown-preview-view .internal-link.is-unresolved { + opacity: .75; +} +.published-container.is-readable-line-width .site-body { + justify-content: initial; +} + +.site-body-left-column-site-name { + padding-left: 60px; + position: relative; +} + +.site-body-left-column { + flex: 0 0 330px; +} + +.published-container.is-readable-line-width .site-body-center-column { + flex: 0 1 940px; +} + +.site-body-left-column-site-name:before { + content: ''; + display: block; + width: 30px; + height: 30px; + background: url(https://overment.com/images/logo-icon.svg); + background-size: cover; + position: absolute; + left: 20px; + top: 11px; +} + +.has-navigation .site-body-left-column { + background: #000; +} + +img[alt="overment"] { width: 200px; margin: 0 auto; display: block; } + + + +@media (max-width: 1024px) { + .site-body-left-column-site-name:before { + top: 0; + } + body.theme-dark { + font-size: 1.2rem; + } + + h1, h2, h3, h4, h5, h6, { + margin-top: 25px; + } + + .markdown-preview-view { + font-size: 1.3rem; + line-height: 1.7rem; + } +} \ No newline at end of file diff --git a/content/templates/post.md b/content/templates/post.md deleted file mode 100644 index c2a9b3376..000000000 --- a/content/templates/post.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: "{{title}}" ---- diff --git a/data/config.yaml b/data/config.yaml index e33c32939..a7866ed79 100644 --- a/data/config.yaml +++ b/data/config.yaml @@ -7,7 +7,7 @@ description: Host your second brain and digital garden for free. Quartz features extremely fast full-text search, Wikilink support, backlinks, local graph, tags, and link previews. page_title: - "🪴 Quartz 3.2" + "brain.overment.com" links: - link_name: Twitter link: https://twitter.com/_jzhao diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 88a859c3b..70293826d 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -7,7 +7,7 @@ -{{partial "contact.html" .}} \ No newline at end of file + + + + \ No newline at end of file diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 195cade44..a48420c73 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -7,7 +7,7 @@ - + {{$sass := resources.Match "styles/[!_]*.scss" }} {{$css := slice }} {{range $sass}} @@ -24,6 +24,7 @@ {{$linkIndex := resources.Get "indices/linkIndex.json" | resources.Fingerprint "md5" | resources.Minify | }} {{$contentIndex := resources.Get "indices/contentIndex.json" | resources.Fingerprint "md5" | resources.Minify }} + -{{ template "_internal/google_analytics.html" . }} +{{ template "_internal/google_analytics.html" . }} \ No newline at end of file diff --git a/layouts/partials/toc.html b/layouts/partials/toc.html index acda23d6d..2bfb810e5 100644 --- a/layouts/partials/toc.html +++ b/layouts/partials/toc.html @@ -1,7 +1,7 @@ -{{ if (and $.Site.Data.config.enableToc (ne .Params.enableToc false) (gt .WordCount 250)) }} +{{ if (and $.Site.Data.config.enableToc (ne .Params.enableToc false) (gt .WordCount 150)) }} diff --git a/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/list b/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/list new file mode 100644 index 000000000..5aff472dd --- /dev/null +++ b/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/list @@ -0,0 +1 @@ +v0.4.1 diff --git a/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.info b/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.info new file mode 100644 index 000000000..b383e9f58 --- /dev/null +++ b/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.info @@ -0,0 +1 @@ +{"Version":"v0.4.1","Time":"2021-08-05T08:14:45Z"} \ No newline at end of file diff --git a/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.lock b/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.lock new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.mod b/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.mod new file mode 100644 index 000000000..82989481d --- /dev/null +++ b/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.mod @@ -0,0 +1,3 @@ +module github.com/BurntSushi/toml + +go 1.16 diff --git a/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.zip b/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..efe126b98031bf08b3500d1eeaf0e5d31fea7603 GIT binary patch literal 207306 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�?7#y`x!r(Oo-o>rT=jJ#;4BWJrqDd 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 M9el)K2HZUV58~HA0RR91 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.ziphash b/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.ziphash new file mode 100644 index 000000000..dfb9adf0b --- /dev/null +++ b/pkg/mod/cache/download/github.com/!burnt!sushi/toml/@v/v0.4.1.ziphash @@ -0,0 +1 @@ +h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw= \ No newline at end of file diff --git a/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/list b/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/list new file mode 100644 index 000000000..804a616da --- /dev/null +++ b/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/list @@ -0,0 +1 @@ +v1.8.0 diff --git a/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.info b/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.info new file mode 100644 index 000000000..0d556ce78 --- /dev/null +++ b/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.info @@ -0,0 +1 @@ +{"Version":"v1.8.0","Time":"2021-10-26T00:24:24Z"} \ No newline at end of file diff --git a/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.lock b/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.lock new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.mod b/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.mod new file mode 100644 index 000000000..4b5a30963 --- /dev/null +++ b/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.mod @@ -0,0 +1,8 @@ +module github.com/PuerkitoBio/goquery + +require ( + github.com/andybalholm/cascadia v1.3.1 + golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 +) + +go 1.13 diff --git a/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.zip b/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..dd51c43b5f6d966d66cd9362f0fd26277317f448 GIT binary patch literal 132585 zcmb@s1#Bcikfv*9X7-r5&CJZq_L!NOna9k`%*@R8n37BELAJtaLxFD1JN z0tN*1{jDGk3H98qgiG@C7x+I-;eRWF^S>qHM=QOUs+@?VoH)S4##(BIc8pTCLFv!* zlyuaQ6o3veHq)&1M{S&vii)yjeubW%enpzPdQw(aW?EiaT6Rf#dS+>6N?Il2=>OH( zeidaS_@jdRztqX|-_~htVsBz=Y+z{T{2x+D|1w4lG9ZD^>XyEmTQ$ZhVM-(m!(|Yf z{i$ZeS$f&51LqMhoqy^dG+e zXYlrDoriq3rlLw{!DB9;4X>;GINTC_DpIb#Ztr@y`3bHct~N^ufYCQ2YdI(a;z0&cGPK6l_nM8?%9mW4?epFX|?aa~59vD^uzyQ1)M7(r{BZ10U3rBO#6 zJS(c1syiu{fKG*Mhox<~&=+LpVQc`tC@StlFD&YLe6)MzmA}-su*LP+Iz#<<_PVwQ z{kEI!Rz$IH8YW!5=1N@Kxr}{_OQb2$?^}3-$)l-eO#)4dfrvW)@q+*963~j6as2m?w47qaIghip%=sQd`wM`z0qEb475~#Nj%(38&mYyPKka{S7v2A{ zT{4owqH@ZjRZ0`K2W)6tA2bN2iZU>)*<%fj1!U{QzY?h>hYyO0=NN&dStPgw|MmRB zXU}o)zV-1FgJ^PTYL4_Q|RFI{BVw$ z4g=>Th%W`{f*$EjyYsD&Gi}0$Z^{$6ftMSRXA@)IKirDMpZeo|O0wUte-k7AVtHZ)XG>s%1LI-NbQe3k zum1U$vhS)^1%e$%<^*X^_VOz0 zP~6NgC5LN@#4_XQ6L))p#t%x9N*lQF^PT$s#ooQKB88|w2&M$th~!(}hg*jQ{lgJh z3^;arlYhG17DT=6KVCCpyr!f$(uqRADeRPky(7lFp=F>j=Q~Vcq^cfMBw$KrrSASx zYZ!GD!|l`X}fAkgvg5ol*_jZydpe$(UdD8p;#}lMX9Z# zP(iOmRe(gL%BnN=0O~GT+GfpHLoKufBZ-6ldBGWmz$cr?wvkIOGjvb5)0B7&XhA~< zrbtYU*ASuDP-y2Z+n*%|gBL!_$s!CJanfF?wN|81CtxVOa#@v6S z5J~4#ghF;D|C(8onGMfE1`U`4^XGw5Omsb=v*i_H}ODTFWN)83RC219RBR(M3ZEA!#S3c z{M5Pi64?v#pN^*AoN`ORXHB zm}woVcPs7aT-tmzArIzZ-;`HG&~661_<-4h={gdHEes2Tc|7%i4NS@ehQaPee*Rdp zHm2sOy1D|b0Vl&{WXCNE^1Be1XznGrZ%tx96O=(xixyAYVgMeLJ?_;oK2-Jss3!xg zM&50+D5PA95;W{~-&ELlUid;L74I7v2$d$Z&SF8|nXEwxRoC+`{K=3(JUGp963Cwp zFg}w8PyTD`LCY(fPBzEc+Yv~klICF~IM$Bt3d){tpZ>QvZCggUErCmzV3WiYU#sra zsuJHku@IM0)`ka4V^J#lK*-Vk?it=ak|VG#N*o~zlK`_hP{~|#Nh2m~5a=s@PVy-zd;0-8MAszq0K?6wGMY2dvCoz+x8IfDQP=)(dlTp2VJyqVh z`ExOIexx$T;W|gN=L8ztphU}1hCIiEM%FN`kF~4J+nG}+bgql37w7i_ez9xn6g(?v zHYU8WaZm1rU9j_)*oO#?WHxstH#Nf=8IV=6G=nOGi@GPkekygaNYFC0 zXAr-M_c1U?VzP?c?q55yDkwQ?ei-mX!dYR6>(FkfEK1H<97JH$PV!ym7_v(|pM6&C=<~K_G~b zx?h;!R#b!8a=t}6koWyYNWM)QEM_HSczE0jRX?Ea*>_NPQN_L}4GIH%?zi%f!!-~7 z{2okiXjf9ttfXVP0taboEMV3>N7I^HF9!V_&!q*s`K;z?2-Yc!;5&XQ8V@1cZhyt$ z{V~=e0SM?57zPyF^VPdZHbKxHFF(}Yrf(U?l8!ggr4+uJHjMvwS2s`RKZAYi=aAE_ zI|||tj!8wc38htS$e`vrt@FTxuVM|D}bb< z`>S#%iNk&2E=_{aQ^xP&reBXi_k~$TqcMU zDdB1mON$s>*jb9TxcunoDDB3=Bgfz8p79WIN*S$;E@tjNow3CCD{j1-jIS+g^Skc&JmA&s4n;-UFXIlBzPE+_V# z6GO5GM5}V!V%LSt&p|F@%U%(SfI1c`GUL;KTCs8?;{AY}%QQ2Kd#$|`kLMBsKXyJo z0z&?9<-!br3^QHm*)pK#o1PIB$QZi*@hU00rK(YZ_jxe4wIt-!Ck7v!FvENrd1f?ebrz!NCx;G`#_92J~VXoO{*TF4W2!0EVQRKTSMDBoy3F8H9McHbkGo_-)yYq{mDt-Op4%%B~V1! z6y9q~-0l?k>d1`@bU^P&74^COEizwYucvpfhh-;^+Z(N}5Yj5>>C$-v=3!`4L%}a< z(^j#uzZI|n-Ar%KL=IQhjB4zi?ys3`&K=`K9=Ja0KR7 zmm#brY+p2^FZEK7%q_@8$+N(8oIY`m4nM7`t4>I>~MW+>`)f3ZMEYd-dtD%WH&p{8x^Y9pCaO z+(Q}k1@t;E5rE24pzWW3(_|UhJji42&#rttpENK5H>+i2K;=B$W>?3^y0FK-dcGSU zX&m(Ik%Ig5WWdNwL#o<0kik^r33gFDnNo-5ak?~lQIN-IGUS*CM`ozG&k#~$X;3=u zO^5a>E86qhK+GiHdBdRFLVQT}a&fJx$uoba_%>xw8|uxKf@&7UO4Jdg{Gx}-ccKLA zoHj!ms|v*zd*4X;+!HiJQ3$iVe)!OK-gno1O~}>ie7rb>F+@o08rJB-@%}b|J$aHm zU`S(STlRL??d?AEg5QSCY!Gexk9MGcit=y#+ryDXG_Z%;nk(<>52ZkMa{te|QK{z8 zzeG-ALM2HdraI%g_{BR#6ncFzK?Y$&d{v6;2AeKI1XhsgqR863@S`pKBQ3-%5{VFo z8&$FVgIs~*1WtQd_Q98YpQtFa(=70On<)jU@VXJ!lKI!1=o3R;k+JOg5fI8w;KCs{ z(%0(K0@%v&FJVpnzQjp`r-wGCzhT8ysnb1AesBJ>K(b0*!I=+sp}Yn=ehkl2eO)cR zq(3IDNUAPlH~=xC5y*70&(9nvs-7C3&E~{m2Sb0!V0}Nsu%-=Zy_ef=P*xYSBrHmf zQDNLn$x}8{9-F0&4%r>aSZtq+JHQY6>SqWU96Y(v&H4Jc$OY_vhBf8_bO{Issu;r_ zvl)FM@TjF52fP=3GFjucA;!XvC_2Vq;7a@C>Wh06+b@B)sIU3N4 zEiOE_&LlgWe(GZ(3+sW8@^)S~#}wQ|%nqn4g<)AZ5K$(C&@S-w%e$W}u;2&R`C2%j z=VbI8$&sEC0`oZL74;0`B{}zS+hHM1LC1F_I1TIEsRv`tq$(W^q5-1DS`%hAu}%zb zUr%H8n5mh`O5vObuZ{>rUjdv%C>>~rMq`6v_O5Ro+!+0x5ls-jHk7r?>2BIy*p&sQ zxZ+ntBRNrV171^J%WMN{%Eh22U~j4R3edQpN%E8#akFv7&N&|9e-u4enu!0_b;j#( z2$m9hw2^7UWi*t& z6>DNjA?{szQqg1^c4CE-eZy>gNF6Z7&_WnnmxW@ef2DfxOB7%9*FtV8Rzy&n{bzFu zO}=?NyaH;3K2Bt7vBa4N^0mnAEIB1CeXXKW1`>7xIJ3cN$qbxKY+ujD zzXJv4jo)3JUS!GQk(?Ck1XtT1dzk9p?yJrph=^3<&ln%&s!}Vb8_yZs*=L-q-FYCDTuI z9AWWhD6vnxc1?mEZ^m?06E-bQ5`(3z8H5434cS8ZXdbe$d@|qnL?pV2Y)d<7_iaz+ zM8UtYkvW#W_dIO9fb;#vh{MK3GT3fyQ^+5>>dkc@5EQn{cW`kq-ig)iygp)(+`eg& zEEp1z&g{WCX|@BIFHqZ4gX%S>$>?+KlzR5EVJi|;ED-0$bJ0+Glv*YKOSP9`16nM8 zsOa{atL}8Rrr-d=W3*d>VYFC7QhCE5gLGv=p@#YqiXAx{X$V?fd_4-IV!F)RRTp)8MSMGbPtt^&SL+g`LzQg@KJi*?s%8_Uw%H1>7}?-1e#a*N#(u+}Q6j zf8v$NSpO(g2&;L9$$!&O8S*_Z0HeQew$JTy=8*Ltn9QzZR!AzH`aLfq9FDFjJB3qe zEhLlkZuXRisMks(JeF0oMHm%3H`Yb*1di#bcJU|Oe7C&NgLyW<*k{v#5HhH_d%78Q8B)>es4JDo!%R@nxRyZDRT-SGcOXPB#}*8AI~TOgn&`ZpVvE% z_Q|eN*~2AqdiD@@3OU9g`BxQZtd@y}8V_#I4!X}6m|qRf>KiyX+YzmSjzlnz}PQlUgb51M`vsJd9NmrTGS zQ2QF-V|y<<9&+$YDX(=eW`{HVFv!f_(YZ<5nvuhvhrG$ZjnfTA@8q_b8|y0Wlphj! zpuvxY_-1)?NGD<1_^Kf@(&M93U<&46z%b-C8n+O75KXvM9Dy{Z#wcov%HBY1qrDeI z@Dr0Vl!Zwaq1PEY0i3dJ=Crwi2ZuG7Ei<~!gSsBFyb&qV4Mgc)Z3H|>*u(c(#O-H_&Kt_zw_7I${UsU)jw^*D1jJ|bc6dPyTQX& zb7$kpxn2Tpn3fhQoM*QGntMSc_Pj^Ni~s>q$;{ zXrRzBguL1;7vCa~=GRxXO$)4wZ^%Q+X93U5XR-R^R$1I|!74=5+64f!~)$-ganu8IwtM`JF8z9#*6>%aK*C=~#}Osy)s?g ze^OO4@aS@nR4cA{a(mlh@^C^9a1*R1Ce&Prnn^641k*> zxeQb85T{arIO|Nu*I#H^C+VRM4HQ=81yQUil|~ zeqS`6x`w(?$6EfVO-OVvN7TAv2==+%b+_v|2c_Ar-&y1wgJuvgb&wuh?=A4zwcXX< z=+vn3D;HI1tzeQ%@*l0fg~Q!t-rdcUXZG}kY&fx%xV#h{LLaPlo}cUO#BXRHuiI4q zi3T9EM*2zkb~EA$!-S>j%zI2t7#Q3U7@b}E2HJTkOvqnJKbLoH_u&RJLp2ciKj4PU zAPk`YQ+D_Mz11J&e-QHg?MLU-%M)@?8r!-vGqtr!Cu+M~YOk`@&%T78rQ-Ivf#Jl+ z@o!-cs>3g4o?`Id=N-;T>wN6DDi`FB0{J05j-=s<*?a?shtG3xZ)QIA--^QIPqYb;l-6#L!{cbT&be}fMcB^@6EKtCVR4AYTwJe(3T2b>8#DW)aE zHslO$qSrq(=+}hIy-KeFJAyGcVFdO_gOxFeYsO`B^t!RwJEZpCUnIW{E*?_(b-HCT zmcDK0D4a}=6K`{qxv1OE5?{BzT`0rVU$mh`$rf_v-)Jgz3wP*^G*ENjDfaxlY6JS-u$VaNF4kAU#U`B)8kH0bRZy7_WvrZ3-~_{>l!#Z8h8NA?1t22 zV>j54c(r>CGlYM!>UzB3EW-Y*Z80PkKr(Y8=maE5(sd$|B*%3N$NcC+2@@_=Utp;` z8;AD}y4aaxFEun$c%`Qz&AbJ235_L+pd)EO0s z*WsGx8>7GkZ|j3k0?k8U4w5lYrXwMYQ@0^^i7<@c7zqKvSSxCQ%8+28X=qjDrKZ5v z;X3PAxboX=QmZq$*{`I`57^AO$>cQ!?=Tv*S^xTSfSSISr^M})Y~;~&XS2F(lFVL$ z;j_1)HLrR{iRK>5D;Cx^oq$&}icxDnTDRF{8aWP^7cabOCM_qu9(5K(_cO3a?K1|K z0cpwR<P-xp0h94HMYur&pQ-Y5V9v?*2P&B1AI zo@LY_qD5q~d$?oqQAzC*rWY~evn zEbnJ3gc8Xj?Z!x-@7>XRe0hPPi{smRiD3rA%g1O`pH%|=Inn0U0%x4g=Cz%AT7zuE5xH?*>2jm%C?0@S*+#?VyZ_rrc58!!>9b?n}l|o-CTWV|L@$Zu16ab%yKPzk){! z0tPIgv*D9)lq|8mhk6)}Xf}GVWa5_3E-XMe3kem-7fDVkBHT;pgxKz)18?(#wq;7c z&%+MOwJ!!S{*IWk;549w*qxp1H^j*1WEZ>MU$=b#WemtjXkIem@~?LPRy!ZBp$5LXY7d*x z*R}I+)c;Id)xTmn2LH@<(1`!l{Kov>o8R>QN8N#$-K4srU7;9~FI%r+Oa)4fKQo8Y zQqFb$3Q4I%>EWWt`QVu`vc{$A-D?HKt|Fm=pj+wY^PT8DLMu{9gx=n; zSRRLwe`F@*MjsPTL8O6Mh|CO4(ws@zW*t0sMqNfLgh0?$2Zy>;=WK1R54^Xhcok(_ugJ zb)Wf>LW~v`33`>SSWkYI}!y^bt=yR9F&Q(A^P;WQ*?Rkn})P- zdPNo5Sy1#7uw-E{1F$;g?QtL^=;UjQe1c1>fYCn?fF^iZ=1$V|mWlG{07)^zHev=+ zGQ0P}qs2Wf?qrptcx4Y+?Q6Z{xlsEzFNcU%g%|uOawwf!U*6r9#^}-P%*u_pPZ7B8 zUdU;8DYji|F$IKJ8>b$Ko!u#~*$vlY(c{&*g#=QGdB>|0)?Z;>PqB8L@9El+^J%|w zp%C07EtpZ3aSJqel^xv_zYfI@{Q}>o(nYo%S_OhzBrk(W%#Vm*q&R z+A)#wkR(v)T;$BadVj4~qE;6yRk^DnZyK+#d?R8pXXN%aY`hstxxNHm|BBTi_0dFJ zc3||T2 z_HAYY5HCl$GNie8P$rtFA{u5yv3m$*LT!qx)3;B4vPgUq#|7JV?4q66^l4T)kvMZv z7Gf$Pe~-J)Vr!{y(#j(A=~dBNaP6))&;r+BM>Ys^ZwLcOT%eleSn@ z5ADhP_}?^y@2NtyP$PV3bF6!O&pO$dJL*u-xHMQX5WB;};GRA%564`BHB*sGC)Y1K z4J}juUS%=0yL+rqhEbY6PLl9JcctDnREDc<*Qa3_+ezGM&-mQLHcX}^;Ic?)k4nKh z=KbCr7Y>J$91`t?mc4U#y6>1=@DLYyDT~eEAHL2HRN0=Cj88KzW1~C<8o-49%<1P5 zb(cL-=^7s^LZQ#Wy#h<~yt2EgxxE5trtrh4+-q&mwq>h^yLU(vt z_h7Jg2&8sQ&3=?@6{Ozz!+1)du*8Z>-G2K>EMKs`n?2;+5VFi)3HxN85r3~VO#&V^ zYv);xK{V7;J@`bg_$r-HSt3xK(@&_(MuAoXkI77{7|?F+Ow_b_#7bPF76{-ix%rE( z%+#}5VfPH|-Ca$ArHEXUxFs}J&lD5+T`+U$X+*Lp6~+uHVY*fQW#Yl$|0F#a1y!ZA z&4=vRGs+N`?VU%9mC$$YWK}PNDhRD~N-msafGkMAG)F5^T!63IEBwdZG>vXh)2Ib9mXC!`A= z5OcJMR;%ezM##h>4qi($TjPk&#wKQU%k-deAeX>WT&rcEqHb^awVnd8q4jsFSdiI zKuqdm{Fe{mxeiU=R#}%11w2swv$t9630rQ{y1R+O`hA5h zuaoB@K>h%}!H!U<2|k+1OO9QI^+hx!4610pQ|_E~I-sDl#W4&>U)Jpr-=$(3pLWF3q>x zfgndvsOAdRuT(=)_JHFP@E7m<+7v?+MRPT*Dxl>*QB}9x=eGiSP1)WXCW3u#xn}UU zqvN;o=))Df}(S5@HBbB*x=me)c#seaHpa^{Tm4Vxd~n`*#5sl zbp+Me!(**mP6zk1lmDzK8`YJj7V|iw!^2Y^4mo86KUZmPUzg|l1JF|mfXx%UTjt)$ zpsRNp89;au@CzAf`>cd+HT~r(gXuQ{b#ppdv2uzFxkJ%IaV zgZGWz+Nm$NYder>(L-Yh#2V|s#6$wcG^C93K;MW?WfHb(H3*Q23{Tq@*dbXMm@Lvf zMf4Ya#b66xN_tnFzPm!4%-7t=fymUM&wo)t&NLweJF2X6HsMEsy|&lcz|2Z5FJ!a{ zg>z7^-W@hnbmeGMVF&3kJ*feeMtDt6R7g>Qj^q{o^4W7;ze0QgGgV-`uL1_HX8@5| z#8$DDGiB(mT;HGDfk+6_D|99|5R>arx7Fqe^m@>z6gSb&m6jpp5Y{XKqKo#@LREJG z=#M5Emc0nYE-}=xS{u5AREkZML>`+OC3^g0+=#Bl|imYEbTo>_YKC zMFgtd$_%vS6AGq@7zCMd^G4>fQP^Lg0Fv#xl1Z^`!4Xr%=R8PO7zHhA1>W6bF>)q zUDr_GETLumEq=`RQ}hfd{2NBxP_#PgTL$~&6Hpg4jDpw~843INeEz)U67hSwa`*?J z>^wG({XR>UwCD*lRA$j^zBvm=f!b28Rf?}&7F-o?8Sx0jldfRRcBie#y-PX!m|Ugu ztiDp|TV?Y{kl8_F>eFre+q~|(nv%HB2$JF(L*E>p-l#J@0nEnjZh_kJX|4W@Yy@yD zhcA=;ukHZ6%57 z@Kv#N2;5{Kl%kJcfcRKC>*iajs-C(u9QtYXXwkaTW)|F8U|JQwVhW*obtDz;@lXZh}KJ_xs81nHE)%$H?LEF=a7Ncu6 z(--NFNF2P{S^^0V)rS};Y_6V*Sn^v(Cy{z4@mRFdu2ueNeN^j2Od~Py4O073G`+h8 z9EP)xHPX zXcS5UjWcAB#+}$VAk0x??fzGD(8huc$l|wc*OCGH89Bag!L`bhq=$Jg7)x|iji_{fL_^1`ddh&=1@2h7s9wHQ4nwp1QmDoZw zos)~(kNaNX)dW)$LuR4iJuF&KNG%B|Qtfiz5dD7x3>%@$qnA+TQ7wX@jnSarsEn<5jBpTV<00x3`OyJrauvm5DC z9DqK7bza!S);(gh!Be58ePZAc!6ooqY`yZXbtJ0E|Jh`Y`atod^8rdvb&zNUqso7p z+^$;Z7G$0-KxQ}t_g+XW%1b(UNg*D+(f&`34#|xfog$GY8_~C0)&ni*Wa>Z2Nv!#r z(oe&zW2?*vh?bu)(`AirwCi4&h&bRGF_WuSB03uQ^Hxr(YdML^e)l)G{r>AUwN>^O9BR2eJ@8=zVvG~~jI=sFp)sAz`>KR0! z0_U2@|92k)o?P*=VzGO4@r7~^-7 zOXMM+1EFFuAlxBr2q;LR=Bmdl%$JIYhoDzw5LpDUBhldN?yw%w`ogWO$nCk!0oWX0 zyj;8f^K$``KQ9bpFx0KlF4bl~-oJ(*zNia{K&s@*i$P4&@}Uo(S_e011ZfUsxAtTH z?vs!XiRP}l_Vnc6mXb=)+b}m8{+5A|s;~Gi?s<0W1m4`n$OmS@pHXwE1E;avwvI7i z{B8fiPM=b&lB6o->x*@uf#nW$A*Oh%mAXK@7xeBMLU6z|bOaB({1VMw@C!@+|wJK@#ITx1%>wY*P0Cta9GtPffM#<WJ%;CnBnc1Af9}X0z5bi$#5-ZMPKldrVPh^m#z8;@Z)#R6f z!6ENMe1Xtf1sUcM1*IiHDHDhR&u(j##=Sr%P?XG5JzoGuM2jUDaYQ*C*NZdw+^V_$DiS9^l29QP~4Ozd)%;_=wmm-*AicUO&7a$we>jyY#5<2lq7Tx$B0A9S0x z&V$XO5fYqcBEWN!*dt#x0DocOew|nkQVeisrk;&esj(2_{RRz%l!)B=XtuLM(YN|X zbh?Ub; z)8v#T7Ck1m8Cn-L8;?K+>6g$Z>j&EEkS`K0njJb?$ne__#VSB84$XYx}p3QGvU3NX)Z*7WKD@yEk6US4+jbF3&0jTv+oSMDw z^8X8(f_k(|mwupW<-dd`vHw3&Cq}xT;1d&okqZ_550Lq ze@EM^gpL@mVum1p#p6R_9OPQ|YFo}@bB;3iDAw)!xL_~3P8kn6l__yNF^mGGbmNbI zQ!`cT=K6R$^JVlXQ@ik7%aRv7JDb52H~V(;=6Ta#U9wzOdl<9Zq0swx=fKIy*Tcc3 z&A%x}aN*(Q#s?nl%GF+ZzR~&YjpLm~Aj|g6yG5Vz^!8X|)0>@>#ly!}AzqkLxq-T< zm0Lw+efRlQPk(b^_#oDdyH@v)OH2(PiNTT2ZhMjASeNS z@09KN^GCVb@zry<`qF3E$rG3J1$N`d)YMCi+0@jQql*^n!`ZOBR)BA#*LC6sC_NlG z!EgPoX|=1z{qM@-<7?lR_b=gYtyU(esxM_ITXof?PbgqdC_r@gAR}Z@D=l2_q!g9; z##fL5Vf7t4+CMBPK(TH2sTc^b>LXe}ktW#oxAgH>BBqZY7?zJ8;hz`r+p3rEhBCVf zCNLl3U;79F{pt)HanLQL`UB?V{%XinNEn*G_|!tu8T9MCB!h(z40d-BC-(dLwTjDw z1!j~-Dou5H$Ks&8Ou$YiB)}G`u}7Qd@`Vya_QMZShEgpRx0)uBp^yt-sKfK2{{(Vh`Xb->VF#Np0G(bG+Mobkj+o2> zCcT_Roi)Qw+yNM501HV}Q^ci2cM*t(;z94WW)r+qg%H_{JTWDtB-%4CX)%@%Igl*4ogsHZ+2<6J?C! z6d)2nIWfK&V~3JJ4qtGg^YRTNP@$!{xu#Z}V^C~X8#+W0zLM-UIda$)jIcSSIX@@T z;T-Z~O?%Z99x{kV8b_)K-$OWDsloE13N=J>ynF17xt^|)1XY*{$;lGOqoH`ly!kuZ zQS*@$y*IJpS+7Y;+2-zp?^o8?v0+^4lWO9GPN`lU@`H=~rNU1=q&(JIm~<@QD6>)H zv23WD&_ae#$9h%enPe?wG(E5Q_gc>0 z$)?(*K*~g1@W<|r@0GoJE^$dpBjN?M(}IFL?M};RARg@8lZ~U~5+o|e_vhjCX|-P0+>+R1 z@CednTZHZD&4)-apKFd-v;ke^gAW=F(<);Iw}1O8V#0^F)nGwFl`D-iMRphJFu0rP z=&r=Y7Ig8kgGPD@JlAs)xVN@92*r{Ndur+(38PkY;mkW8I}43qKm?rXU-rr-Egf}@7m+*ND2#8xO0&#%` zWwNBjvGeOiee z3S?oe&_{@*XCxJ_YcqsWRDmL{aWJxRi&0Ax+PyzA+IHzbjV~zfd)&W!v{c}v$75mT zs#cm%F>m5QqJ~?lE+qb9h^MH=huZ^^q};mFl6C&3j+3ChU2GO6ZdzNNG*#gcyt!!$ z@aeZ`vbs(pa>JQm!F{4NJ{UCZA*nObME#x1no>uwmdCSpuT}C^HhTY3QXL{@%64e> zU{Zk-n*PV9KcZ>Fx{Jwp$12^mC@WlswKptLGf5z|SP^UfZ}+b9dcOm8yglARWzrxr z?Ujz{ZxC(Q4=VQsdMS-mYn6DeERfMhz?Yyt81uM^ZHbCTx1e4(=fIS)0(b+Rs|@!7 z5z9dM5mT-*H5&e@=qNHDg%MhuSF;gLHUcBcBz)4y9kY zpZ4NZHCoK%v&!nP(0swi;JYz%bV=-InTrK~;g+1c^cQH@Zu$Bbz5t3zc|PjAc7`qa z6(u*YzLU^WA<6KdBKLv2!)`|w*pefQK_NCiAyZ!|6LFl4%7hKp(JT2;2&{+JJ{AF+ zxZi-_=cBmvT%|P+bu2zFqOM)PagkuYFIX8w6?tI}F(&$?v{0}Cgd-B4M0}71q$dwm zUa0!NmkNeBC{V&lFXM^D+QwW3Y(G6ta{g)Shn=YJMIK)#ra7`C^GC*RF*H2w&(P*C zve2M93C)peouLCf2aJgne9K~6x5(rtuD>SOS&4IG|lhsNgZePNF zD}*QpDNKT7j*CfYuI2bhd&~5|<7NuPS<0Dk#3!%e7uh&}q1e2sS{2p?Bohhw^uw4G z$wDW|OQJ0cX#$~>ynUh6T-zBR)l?*s!l@}`m&w8{3fF<-P+h65 z&g39j7v!5sNKysLoa|I7ixNUHi8oaNWdh0u@0Iue0vdq7aZniK9JD&b*$O;)_1Bv~5zU*G;n28T?#78SW-`dsZf$nT8xEs_5L zJM=OCaQ`!q)(Od(kOvI}WTN_iIgrNmlZn*cu>A?7`Q&(q5G+8-4`ou~%myWLx%iJz za7Zemi8|!DW5ptg-p3oWpWMK1Q6|i9AF#EU&UayJN?Y0Jva!=Y?Cl?nV%EAiG=8V3 z>Ft=RZdseJes6#c@(;JtQl6_HZGnAR!TkEkLw@=Ij~=(hdbk#z%xc&qBYs8NvXR31 zmoq+ar@ zI)7)^u>#c;$8xQ(%W5_&{-MI_Px^xx!t992YQ$(6Qx{B#daCt(H1YqC_Kx9^u| zY}>Y-bZk2v+g5jMTOHdS+qRvKt&VLcySl$`y)$c$z1N;u^DmVndH$p-b=Gy?=k++Z z&Z)#^AW-fk<3+SnGD_33OF!lYWwTAhmfKfX&?Re&9@ONUhFo(@d8R(rF2HDawBalaZ5tP1c=d{n)%)IavnKWGR1e8wi* zirnHGaz|8Co?PBx@BO=6)f~-Jy?loEm6W=wW@G+qLq(vzvy1k8ugoz`?d|qW-dkDZ zHeHKF8JnBFn)8)1dhRr z-Ql4niD^(&MdZd*!>X><&iaL zl5?)LI~_(g#3r`r22&|wk5L2=93J3#G=!ZtbdSZlR2!9XKS?fqTod#` z_k#EM$Y5zBbQ1-f#4ab_7L`g!vY^Tc=8vlJp;$?#2zt*Y(|Wqz{9A+Xx*X66Cged& z6ZV&p{9>)hVkEnvuNGvC<1VC|;1oeKD!^-~@&VocE!J;$p$fB!kBtG52}H&lD?yyoFQ z_~xUO7rAC;e}R5xgJd_mmzoXzd>RApAu0T%5R?AP{g!?Utk1TTD#EOp#;0=a-#&*771$*eC$-?-vu@a-CY9YI(g(kv71x9x#lQ zbo!DS7TMO(-o}Epye%y_&e@TYs}v@Fmcm(8btJL$HP{bfNkr=)rFlpxD(kM}yOpxK zVn~*OzHmTOHm2!Pw*5`RLlfkWLTRQBlXHv6Z_MZ8V+g?QFI$E~Lm71zzbZ;n>@G(z zU=2(dq|00+qo9^oN&%6YeZ7&3exFIyxof{L*3sAV8 z7=@9|si9l0Lm|Wt{|+&RFW7M*iZ0u|jkY9~OCQTG!O;uV;V@}{BD+1|?7Ldzsy7o< z_oTSmce%6L@9a0MPL|Vm$Tn4JxwEw61x0jR5CD0s(k^=@Br(Mswd6bnhc7^ z!v7M;i~G!vdEDR9W#Hx-ilPnC@+a)4N8D|yfwiMTfU0{&pob#Kz^p^Ie)(sXfpIti zQ@e=s(PL&dhAOcDElcrCXG$^vB_OC zzh;^bo_FMiliK9Qu+4yw+TyeKp_FaIn6MvB@O@pC9IXA0nSOoNmct8k4j*n2%MiX^ z@xdPw@xVx#(6teK00h{BO>I?%H@zvx`?NuZoP#dZ2MY^F9_XXd%HKZ+?ce#QV zD>_I}HkjW2mFwnZaohGrysZBy4M~w-o5h4_hswIP9)f-}O^hi3f)fR$&%%|d)$5;y zWADgX%SH?%HCA>rHU;MKtJMW&_1f`oDTmbC#G{)P21ZR!)`%VkS zMT+D|iRg3<;3V9rf%sm-0TO>c)aik13Px*P&X2ixNhTXTI6954b`31W5vk|zdtUvE zU#~V1@!g~jW(`4Uvf+3SU=G5-1lkO7CU79UZOxQ~AnV#;Yx2T2l6v=-h?dvQCO}0t3z~iJMCtI%RvxAQ@Ipg$LWzMU$ zqs7hJ8@*b(Vlftz>SxC?;I}A85%s$0Pxc8#1Q3XWA~&|=?Wd{;C^HUD^V_n0^yo8g z<=(eWQ1(-r30*&*-5+!qyY%eL#wVYPw3c$3yKAcm(nr_szsghUyMFS&tiS)dH*$P_ z`O3L)w|j6_R=Vi|>t~a~^v&Z5$>2BQTt<21IU*td!NYWlGpqJIqQHgka2nw+$cA4R zi;!3EBCGGH`ELin)9U(Wh|ah7$}snP7vW0_ZyAS;D6990C%)fbT@UN``{%5@HR%uM zG6V{M-tv4eB8UAkA@(6Lm)Yu_Sv#L)8ok^+vMWEI6stMqioo*TMJqj_zb1pV=}reB zLkmjENExup1n8Tsz!<#xGepnBLCZRv2W&=3<_4)If(g};xqV*B0`Gp-8F&JFExtAr z2Llyo8sJ}lKqcRQV2= zQns)P?CB}klMh!|$oH^NJEaqoWolPYW9cpA5sDL$ZK%#SfJ+bule5T+3mwhE@O}5{ zPCxAJb0ZXRogQzf`JxM5y$XJh#l$xW{nNcCO1i;OsXAHnn^S52M0VCr;=3`C3eiwH zzIm~*xDyuvk8frA%C7x_jBaO_Zw8;Q=5KJR>IfOd6M1S{2$O4D!@NE&>1g!qMDi;| z51t(JV*_E_H7yDvc*+rnR65%SODtL@dR<-1-^6z={EP`yL(R^~YMueR)ZyQVf~{rX zDu1M8ZTQwU1(pgmKVF+u&S(2Tqt`6A7=%s^yX$XCRAP<*D4wyYX2- zizDv)Mf0h9&D0|uRc#2R1|yaCtr?g((ZV=iR&HT9cp-SNFWOOsb^eOiZnHXFSlOu- z`C%TeShha&r6xH;9^pIdasSAVCQt%yfhiUh(U&K8Pm_Z)d^K_Sc`g>YTrfpm6Q4|5 z7{7cKA!AMS2`mO7EGy9+I>5fDc?OH6VMR1y=6p(V;UF-vk@NA}GBF~SVF|&yI|0)c z*0ayURbsKANx|?X?;iFlm$p(T$ubq4 zs;bAN$X<0lqv_WfXdH#KLAXXOTNig8+2Jm)8evaqh;h*0wsR&;nYCpP2;Joo+-j>1+N zZM}nb*7{y*_wj5#O*`zoj|Az8jYKhv^6aBWac|G&){c1%EgsYaWR{nmsSH?B@T*2V zmLG3emo|NdW+xqah%`hBx4q2D{Y<;qJ(o~pafTvLKj~2@cQgEXBh&GHzRJ``NEK#U zO9|-(Cb4%nRL?b1+rqBC^X*s0@!WX>Uu5T4<(z)yz#l)6#5GTj8SoWv4BAuyjfK}R z7oesOIS79 zNFN)b7PfWd&j+V691Z=j;@vx8@gPv<;af%hQHG>9OX+s+ev7}g;3gfjw?G5@6%|tY z=IZ65RBvKQl|aOU4~@)Rgffd1aUlG}?rG1>zPdw@#XfP@zj3a>CX-6n3kzl}ZcdTK zGjV_CzImlhD>*IDzm8h_wm}iOatzhNG)~l=KvSE3Y(U~LR1vtFkv|59qyY~%j>d2_ zYPN^ex?JKw9Cdm|kn$l{<;w943I47`04k`+*#IXfAHfu)Kn5erE!ahkvWWy#kbMIe zpBe7{z8xdt?3`_m4bAj{j=Jkjm1@u7aX8i{r3PJVH)y0ZEat*Czl7B8*r0Nk9LWRevoI%EW*eU7-A^t_L z5!`j4JF&!{OcZafA8mmOk2E|5+LS<>Pqe9xG^8kq_|9UHSx&CIvOGmt%Z+XtNg_3! zu9)XeR((z_vhI4v)MGaZlThASpHXNzgRMC8UeEEaIwuDIoVLGz)=Or%K$uC<$l=dOvoZUX`h! zGZGg;=a=Ln3O;AG1ap6{YlaSbz1HZ*VnV$$S_51}ekz#S=MLWH1s)}s z+Sr87gwHM8yy!0sjtYwcs(t{@gv;nhjK}Qgyqk-Wyu{}luOsi6JeYvlb$iTIzV((5{a)jqCY{H{LWvF?Z$VO#k? z_?aD39)8i3sV21=bQqw6lPv%_LW16t_0uPhF`{t5YT9hQvO>Xl;?WKOiaw9`-RDjQ?S-d%nXI|%WgC0toIM= z0>sIODrqt~#m8L&I*d5Wa5<|R(njk~V7ECj7n@NGu zr7$&+hZcNi%~Tu=lqT>$}*KJaNLuM*g#MqfmyKwX>#C z``ZK8J7pWv3}FSntW`Ji11b?p*I}XcNh9|9PR7pZ!~gL zdp%uk>*qx!8|M2{V9}z`fCtLr3cxkslQI(;hLT{Ng0@yYBuQC=)DnTKi=hqgHj%eG zv7yBU;IiK~)6R$t4G$&cJ`!!c_+ND~c0gzfL1_(ScmKE%wJLwy2#Y)6{@}c?7g7a3 zr#I~7%kKTq<`Rsex-!Zv@plp=*dn+Z)Hqd9nS{gw?8+#9qU1pB1V5jPtfWvakrGp( zN-SBBK~6OBY=ReIB{ce-FF=b5p#Y2b8bR2|EQ)PnQIIr<7YlpHEMpqjUw=`#JKE)8 zUuLZs!Mf>M4^BRKc6`vn)(>wShzKW@f%_8SI3L`?DIw;>k=e|xa>=Z(?c!u>ejaL{ zJ;FQ#%R1QF`>^}P(P1%bXy(pZMPyMkM=!zBpi@4AT~Eh+!{?Gi@R5)WL&vD+@|3P+ zK`b%%^bE;I|ARTm_LoT!yVNg9D2w8lhB#_$*P<7=-ZzDi6_!lC12-bllG)l);`Rtv zm*RVPnK${8AI_>599}LI0n2KFxQAuy;1$SGs7|UE$~1vli(149o-5}*tY71psUlF1 zwrhSyaomV6Y2qG_!bvGcO15&dk5GA~Y#c&AO%`6rHHWxYO3NjPH+l#xDEhYPMb8n|{sRTpl?Kw6NR14F@#_T7MKh#s zd->ZOvF!<@H;muULvQDiHKz%fEp!|esx_OFIx&=H3`#Vji$uloKue7~1RJbiitz9j zo0Qqbsy}js0zi&{G=~l+UEb65+*{q>xcKWvBmmrq$b#B1EMQ$159OuYD6K$mSnTBc z3aa);FBKC=d*1B;6^LjtQri_B*|w%S5umaU>(n3DMKl?7jELi|t^hZJB}I1Ey@W1doe|BeBaeDYd*Y7DA2(t;!&@)pB$iA=aJ1zr zs0L!p1D=5Rr_}=9uqLIViW)1jAqe41;w^4*D_o2xc7mT}mhFM*deJN^nwo8`L`O$P zPXD(WWIRhlXtZ0f=$b^TT>UTTPDT7P;4*lqN5PkK!0>1aI7J7jSP#=j=5iYmq`!1VzSW^y`t!CcgT?1-y1oguJ5 zoOFNi<;1dPcTF_vydF^(ltM<{xHDNPxU6`08$rKaaldfxV3_$8sJY0R#aLK(gu#NJ zLG&!^UDMX@PzML~d3Z^^yykd#-|1-#l1nx#!pn7Fm#+(_zZVClkbpp@WP>l8bTqG+ zrGtfB974Y2SCYHxsKLFRj2VMIfO9r_JPh-?;qM_D@Je)TTDE7qN? z2m_Si=ijM4kiSV0ndEl)&0oD`s1z@|PA`xl_FD-Wj9x+ZBLA2-u`w15+DQUT&*^{Jc%0HslPn zCkpTF?t%i?48;Qh{HJ8_H@2PY4zd%i9pAr^Lp?R;MK0u4_|SWr9Q%&o z{@4!)9T!-kt^LIx%7-h&>y}iicN(1DO2dC(or=ptuF=Th9z1VSck_&p-`2jox_VRK z=tXApYxV8Pg6@L%mo8$mRcSFq#*cr5bOjaU4GKUcSt9>m;n;t}P-Xoy7nT7~*rKjF zK(Khms0w2YN68INn8t=oZ3&cz2<$bOQPhc&sUc}qrBis>LcGhDle@FG6N%%8;l4OO$<%fFr zG(Yn|^5)g$B8wvZMw98!Q%&tw{iR3Q zMLyRSAXsoN$j6XYLE=GbJJMXl@G{~LcRE2zkCqwQ>F9Rdlx2=jXs`>K-Ju@P8$>li z!rwpZe$fd1&?~EWQsqCm*;3!Ct40i7&+W=wJwuiiLjr2e;5Tp}X%}e3#2_mH%_kDN zywy$HI!FJ5U=YP*V`KO)UrQ?lm+GiyWNP<6o4spS?&vae^$AR)Ka}vT?=1Dl`@3jd z{u-*PJ{jc#Gvf}psc7-J8GE+G^*Ha{6Y~V#@y@yn(SHd{J?#&HvD78~B`{CTd|0Q_ z6S&Um6HpKAM=JXuE}=QELawJAg;AGwvCoQ_lbw>dvemTBhc(T|~$d0}>%V6t*7~rHgrRMb`@y&S{rQKmj{1C6))hN)jKNU%L*qbhwUF zBC3mFqw===tdp(;Elg#InEkM$0eBR*OkgB!rHK*&A<%85U!_Sqkou%<*Nj&hse+IQ zNnu2g>l2LG;`r(&aqU4>qDHlP4vyUFkdWzeITs8(8b}w-^k5TaIK^d%vxv`dYFM8# zjgOo;QVDia;ixZHv+OOh3C&}YVv?{#=z{zf%Rwhe!yIRdS`rEj9XK*sx%XE4@wJ8X zMi&fUe@n5Ed6+3U+SPn~b}ovK7ii?re&~BSpd$x;gKEkPsnCyPyhn;L9@6VAyG_2F4b&_)M`- zjC-r*il^T_NEl?Lt-f#9PiamPW-DUBRW+6+5p9r}TmCKO*GT&>Em{*efTn8yg1|yX zegMZUXiXI;US*QSo$AXG;B_CHwRqsR@AUFZSGLg-BW3`sN znK0pUi3EUzAzHwd5AOB@u!rF?F+y+pp1dJNQ}sDM}W$v)3|;`bI!?%F7j$I8=V1(W@1XQ=Wbu z#$w@b==jdTbzu_)G1R$RpGzOuhM(a-nAlT%{nMMA107*czQsB|Zjew=>s%taEIcs7 zJCX&)Rv98)U-_zvhphxH^bky5#})F&w?l|Y=;eGJ?im3PUM;L`>UoDLajb&1!@;WL zeWzidO*;gDf*}EoW3UH(UFM%~3fjYC7cm8_u3RI4+CBuwer5bsXX@_pFVs10}_y2LnZ>NYYF_kg7kVsvC=^ zPp}gExqrRU)^^Y0xjXP2h+ZG1N;k@8DSNKyRyOA z`dPP&6sA~k|EUJ^9AK<`f7=m_LI~J7Gvm}&@&TQmEpYiKKT--CiT5@PnBD2ZCmJs* zh*LZs5@07k=0~U=l@SWlmCpE?*LD~btXfU3hvC9R5l+|bdY~Nf{yz#vRTg}ad5Ik5 z4^-8Tf>IwYD~|AS^hW`!9b87a65_2dBgbx*Zk z9mfnzld%X6L||-N>}Z1VV$fDZ)S%Nl+0dq~Y~mX* zaSp)j@Ch&@Aq@!&?!gd7N;T-CraKJZu@Om*qAJXR)0NgO^)SSwscJ~I!H#hr(RdKC ze1(@4u%1(`LAg)StQ5^jqfia$2`QZswiMaXx=H#cz4XQOn%5DN-oojI)oKIqHs(6?AAisF^!}0dH^IN*c=lCePiE4Ow^6<&r*6u=`c$ zY(7~PX|WoG>S;XV7!-(9B*8_W+Wg}4y8-KHV4%8uX(h7WKLkzg+aT83A`fp7>t<1J%EFNH!)<#e99@|{}yW1zpBA{ z^J_B)z5$^uk@$;e-{Ap{s@F8Szd9cSJ`)nG?Y5Mwx&U&ooP@r8f^2~P5cb#ZK&bEM z+rQZtB6=72gfrT8&SP_$n-`YU31jNIrd98`tMxWi&r|krg_k*?j&=rp{|U=vmgYwJ z0dy7%kURdr`$M??&%-iS2A01H2g|w^phbiO!#f+$B4S3!i`*>+?BP&1#Vxo8A%_t; zXrx3%Fi0x;LkIp`?(JWTJK=t{6S{X%SV@u zr;|kK(>^%F*RjK_WVN&8lJZDF6G#f6z}mxdefb=GG?%i!8(a=End<{_6l;jGQKJezsg5N z?hBqu=##UQU!~@jEQFUP4US^rW4Hpy$lL%K*%m8g#?00MH?8j|fFpg?_3IfQO}m6e zR-9M*rID%q*C%}qoZ=sSaTw_UA6P||0yZ%+%39W}oc#3`=;aTo$~lfiD(g{n4^6|f zhpj)F@9P(={)S|!oJU*tB7yui8D7nmjQmk4XOC zaw?paM;zs@M=2dGYblN?bVdkeD%UzQl;F~y#y-=_V}r6`Pgbc%nL z65hQBinqC!*s*5WfAGlFk53Mr9&m*mF6^7JngTjRI4CU1q-XZc5?DOo{A?{YjfN0J z@}Xi(7qxlCXm|!o|HFdiINYG)<5F|*;Qph*%GU)3MQ0JP52`diKR4hUyrzQpfu{y% zqa!7734xNBo-Gqu+v=WpH8JgJI1<%mv(b2;e0-Cxge*)YKsSEdm|u;R6hj6FK$^2) zKm^#vJoir&Lg<~J&-Wq=%>YQtAwl_}s2KTe6nMpDsJ#cx_#1p(Ral6#kjW&n8KfA7n=Np zosQYGMS_pzZ%lfz`0f>4i~dWu5kHTCrp0C*-bm`+tyZ`bAO z@A@ee9Mz-pA=I@FVbc1>?V4%X zGD{Go!ofpAntw*&1W#pDOx}@+pv;pfSH-}yAZ(dE>dB@ehv)5Oobgx8W|^Bj=EhR? za6x~n=QT5C@V=he7c;5MJp1>X#8s z1ogiVgTEnc(reC}0s^!MR2U{#*%I{L2Fi!2pWAa8;Vl*87UkAWg@%E{z*=1*+Th5B zS1k{dUg(D>H+C*^k(D+5fOe7FaY`U*KlQMSUu)=zO0>(>iTzF4Xr_#{`bjHOTi}DW zaWhNb3hBoO3$^)Np?Vew0gi0-iL|*`qjp>VfVG8u%!H{FISLyIkhwVst57Ec&8Jov z5;TH|47RgV0^h+T18s2=A!UhJAsiv@Z!R0mY%%mR0kZrn$MrMJJ^-NcxdkPb)gN&6 za)+mvr8DO-c{Qm{GAAs0We2!GAraP)B!sF-*%Dx4WV$( z=SKR{%sP}SfWwfKo(}uAi>ILkEm8%R`1P^qmwi`9sbYhCeh3 zqHeQQvPef2C8=o!`Y?(!eg^1ya$_{063ie`f-urnZF+5cq?&Sua zPLO@5faZW8fDEbyp7dGd}|>Jg1pN z(9V;iqd^OhN14>xFue31po^VB;#I`fKXCBVny~u&=!wmQcR_Im1|acjmz~)vtn-LI zWTi{`hK(GuMZS4SE>9@{WrJlTnF^5SJ$qu1F&VWxtPdADzQNN!Y=hL{e6V0f-K?(| zcnqyN%~kYpV)SkSN6|Fe%zI+q0U|V-O-#b^{I=U^LvV7i^b$Zc>2H*si=2!CUZD=~ zWLps{0)hhs?D_Gp1h0P^YI%WVyeF{8265iP$`&%YVJ#~INl~EA3oAop_wyl-Ia)@y zeHXzEhf2TUK#xOjNMQ#c+HQ#fW&HRr{R0*p|LQGBj9hBfYIn_KK!6r=MkTrBmb;u5 z1>UfKzw8G*7!91@48vZMfLw%Vm>@89ipL9LMQtb+vUcg7AP~^_Y(h0`S~K;c# z)6DnKOi*`c0G!@6)rsx}w^4xj2hsHEE7_oJ+HwGnY*WZOw5HM3m(F2`J8+Jd(1sn< zovZ`)i`~ou0=&W3^v&!_+=Twe#w|dAX3dY`WGCQMKk5$0U!DF5v@OCsKHOk$*z@uR z$91cb;-Va61f%=d{<{V_CfwA-Z2}HU0D1Ems>q=tWdRu#h4%vs0BPZ`>F0-kAx-{l zU9E)3q;Q}swl5F7cbMW_fqR?Q2O`tGVq5|ikDttS#P5fT|3!cb+`4NvRCmiObFd*} zffN`6uDMswSWCR?6}A7^^FX3QYF+@UhCd^1p8(jCicxQlb3DYLOV_%CJRm^3wSZ2r zPY-+DtTt#eaNq(E8V~E{?t@utoN;Y+FTTb|e!J!MH8n5;wY(g3C^nr*-xKHlsh=>0 zEW=ZM1W3fWSL;qD9cCTS($Tm82o{=G@3tb5qQT)H>vcEHsczR?y@Wmqg#OhXogn`Z zG>+m7dOs>)pHJ=C{jwFzpCIbhsmCuO+CT83%7-W*Cnj(6P1fkDHCGItCoUBi(zCjB z3QNaV+`?J?=)8aU-u8WeusyWnS?B1*RH?hAygg-)Hej!j%;xdz^Phq@(#k`29sr;% z|CfNq|9=5!^iGD>rYwKT-ZCXIyf5A&JSO;CM7))WuD4CHoD0J#(@h$+D%D7Lt6F|Q zyZJqseZ0e1M3e=zoo_^0viRUwPwixSmS6njci`9Yd3)Mzq_KO{pF8=mRa=-00Rzl4 z@qG)|mA}qckA)(?sGJCiGu)gsV`nahFkBdCZ?xq1BEw2-GWTjdm!zDluaFVhRncc&s%92>GYb)lvM zUlQAoK_Mv1K2<#pg`zx&V2tkg*U(osx`Z%~{_!gctdkCpey-ni+vwYH zNMOXwPREuBf6^hMzcf^T?PR>g2gGi3YZUF1>07fhweYeq;j@!F9O{3?%q$xrG{VOn^@?5d zk^X+3I~Q9?DZ-%bYRN|Tuq7ZzlWTJd!)B^xaBXL{MzpM*lOh$00z3$sB?l_Xvy8;% zhJyy-N|v&BM6+C`j$uE!Z{jb+Hebs;mGYam zqZtB6FUYO9k(Gqa%B_&G4Zsp-vUT&Jc}EIET{Dv)2PJ0X75Jb1ur=?1mt~@`2F@th z8xQCK^Ek$mjddAmo3J({@iJ~e`-R=t1-xc>8#X!zZgp=U!9@b7Epa)-O+Oq?GiJxM zmIU{wcoDpXGQxABzSu8;nhNmB`qaV`HhO}qS)rVai(O#{DU=%8^SU=MJNs*2DR z7P*wRt^`z<+__xZNc~8}!r4q_u`r1)`^7O=02i(lDe2b0CduQK!_P&lIZ^6|0KQd> z=o1a-d-DeJ<^>&+eiEoN`)pG_?rhKM!#nfDSYo8TVvgP;o>b0tJX~T+Vo=o0L9@?$ z)Re(-A}G5NQjK;zqcoZaiD%SQ5hiE2GKU$@(Y{>elCUvOzbY z(OhRA-%Ipk-N%8|6XLOVHKtcTLpbuNWXjdORAryVV}mo|-Ic#J2bP^F`KVLMIV=86 z(#E*0Pnjn-6eUH;vBo5`)XC~p@s#{p$@9d)_Oh41r1YT>h`GwxoU*K*oY0qUZLgMv6Tp`;?5*s4wF zz)F=MHzx`em;RDaU9jYD^2RQ}_`%e{Hu7zmfw#VI$(M_iGRB5N;mR|&;&B@Z1*bCI z7~GoNs=`YAC*02WaU+jfj>cX`dt)}H3-latTkQGsWjH!AFpop4Y<&&UPKPZr;>a!k zhSgY_bdNfhI5=(*EDIm0(btQad=$DV=**T2L=x4t{1$AsJuoXJ27JJcHU#u=S726L zfH-FMyxvQ_)TqrENT3bJ!jA>Pn5}0BbypRXa_6}S?k8NCYYGBjxz;In7_!cbBOvBN zM5{F4Q7?ea2qm3~4_eVwDau2!?|H=`M&I~t(g3>`%VTfNL{R5SNQW}L682(XzVmq` z6?&AZMNyy*NHrYLW@7sACb-n_<;iS>#9$^Zp&#O|K=CxTQnTvEHpJs&{^&PXg|VH% zK&g8kqEstLe6}6IYArlI+~`9eXjWwK;cWCwODKDx^P>eiE08XuZX!L90x1N@jn(DE&%Eh^Lq{#s;hjElFe5Ol<0l=$ptV%X5x-enQ(B`WLGXbwwY zaHmvtOQlHx54C^f+Ssh;36Rc7%mf>IX-1Pm_{0|gXzhphF>nz>_P%Fq&3PcAj_jb z13+vw@y%Dz0Aia!^G)sIj3XirWzc>@1bGuP8p?45AX}4Ol>p_7&Ze{tkk1*+jA#m(#{y4F4ypYbVeWcwZ6Z&y2m)~f60-9-y2&49N9T$DQjT(&pK4tPbSZW=<0qpdkHlbU@1 zvMq_>IXV*FoXJn-DY0RGW?21u_UYHUoMBYlWs6i>8y~~}FJxQ$4`f^2@|6N0+j+_# zWb29ok5+o@Ms0)fJAV!wThLWe!wsrIX3Qfl8s5ck9ZyFlWRv(evE4m4t(RI#A7T3! zyB|aYoLCu|FOmQ!wgTs1XyK5SHuC3$EIYi3xWJ!aO~Z3WF=s0&(D~@{Yr=s*`LOK! z3P+~7}0cCNC^i@h!^e#un zD}`U$)ZAnA#I-+C{2shz3|Gil?Qvr(P>@RUhxdy3D@i|MaM2fRWd7MNIQ$A%a^SG)t_O;RORQ9uI9qgPdvp< zD90#3tmbf4{IAI;1L9=_cZo_VDRYdE|>6au@ z!T1J);T;;#+>BQ^wmMe6{$RF-nRR4=q*yW6LdnwFOPpEe`L53NuR!v7zbLj?vcoJB z$ZK340jr2&i`!dw)`>@ESh9ibpi4~xW`AQgB9tL{covU?4yF1K8Hbug&tD~Xt*?_b zjRbK99?DS7L|zeL@kCJmVRqv~q(c2z8_9CQ;QYvcCZHm-j7lz|#6?O@PEq1@ z5=~jx98A5b72q~8F^sTzP`Ma@584gjr!3XMQb)K2Du2eGm=~NpxA}cPAMVWjv#vg6Dvo zPJtAHe)3>1<#%380SK{COH#Gm5vL6qm%7^k^@&qIdzt1!*oP~igy9y_rS6ZVH;?7_PMe>y6m3t-mTjK^ z9lf>mp&@%^%kF@tIp#JR7ijcNc>u0acih=^3-wDK$0ddZ@+r$;v)75MT4o$eg$$I4 zk?CaP6ykTu5N4(_8N;on1HO90*>D$s0eW$Rh)TNh1sGk!K&LhQrsQpH zcFWUayfXe)R3&ix&Lss!b^?oM_@);qg%wilU=UtXC=_IDhD`3c%5 z;I`ib0(bzmWz}sh*5^-Pyvk)SUNBG@{Rj$i0_1CAg{Rp(fDXFP5KCP9v3#lee7&yx zAP}sy@pzV~*)X8YO0c3pj|}vSMx?wnKJThF5(?Lx6y7#D(pyQ4z_PY*2m2m{}u7 zkR=m}PBQ?90Ba3Zrk8iE-J5Yf#!~ejx zIt2i>wI9|HN0T{yvi*9)pgLg2F@*jh*!_*>Xri+i76X`6F{#a|2XrtYwDcK_8= z)XVdLC{kra@0Mj6RoEYYMJle!QK7azY|psgt_B!1{_hY}D;MzB(+f)S$Xxgmlbh82 zzapD`mc%w>Dg}BRd0onaJGwQn_K!Q~3#Y5?+N&NAHtb9GHEGnIqSt5tDof*$$~bV- z;gB~e_9@|t`$A(%kQ_n~b!=6usRU zX?#Fe#A!RmtIbTg0)Wva!Rasg2t~&RYLBspaAPAZY<@F{D8ONrP;CxTjOBr0J}ns&gASkQow zZA$Js^qAg+M)-8VNkdT?+sEnnGggE?m3`0PcXM`Z3+6XB{e(l5RVK~ zl-1Qg&vE}&7l*ratHJFXSmBJTPx!ZwdL5kyc=e7M@ z+kMNUQKNOP-TTjmWZHIX4h=FtZ$y8Ut1G{Dln`d?-Avx9wyrdNvKqZn&VBn#!1p!Y zAB*&OZGCosN`l^fyYmGR)l;1md4%Ne4D9-iibsHk8OY%KlbLSBhbaHG%!}$*X?>jn ziiatk5VVwHyvTcZ>PXf|B3_-rexK2zTqnckFGFZKsYRe6s&qcA;dM;a>lqGQj1=fR zB#1&z4fruG5hfqB+w)=DdIH)7>hHw^tx4B}GV9HRuc>221UFoX`lb6N)nXayzG&U! zyE)^{Z~Nx#Pz-CPXMhh*QQs)xs7#r}MSe4xpWY{)y|4$AgrSky76L8>u;hWeyMf@K zyI88fZ%gQP;U$CEOEx}XNGA**Fa?2vu<4ogJ0qX`mReqC1>5Dg$qYGFixxs7$5YnO zV`!Hlb$D#pkW|Q#yRmLjrFW`?Y|`$26*CLL+ed}YH{>>MWS7A)Xut&AA)X2)jRI%Q z{c53Xgeyu)UZ+S-S}JD_xJF$i;Ns%~bx6{70f^{F{-J%0JvY>Se z_1RXe)M}0Q_y32scM6XD;nsy?+qNgkq+?@Z+crB+Cbn%G6JuiA zwlT4-iBI0z-~T;TU)A1q-l}sheiz-o;`JgVjlt1m_DJD2TmAB~I1l_9MU%<=DRPK)5f0@c7M$WS&`wM+ zT?CE6O`EF>;41D9el%6F3oR~l02IhV)VntiKr+-irXbRvdWsxl{TGMw2Ri{j)yrW2 zk=a;PXj=7qs!{dbg=n&!xjbaCY8(tW6<$_@?TH~1w(RDiX?9<2YS>bw=TUhU9%4UB zOqj;B9bdQJy*ye7n3FfjdL!Xv$@jYP5xRHk6M!r z{jD;eaSjPaFPUMG>^e|Xa6*kJF~>Rx;u*eikXayyG?$at&fj}sNx>!NVh}saXU3aC zIwTfaBU0#r(`5IUM*Aw#{u&c@KJPh~BUEqZ)I-sCV$3SRivZT?9w;Yzr@oo8hn|FF zRj2?IRD!jrC}HY2IscfXma$jN@A?hmhT{k6ierFa$L$@}>=wY-Phj0oQPbU|Ev-kL zJh$*QQ)F=qbw|Zr*Mxt23+WIum$r`xK*2V?9KZTfVr6XklMRu?S}SH0l~5^6{AGY& z7nTllJ?UZV%Antl*9S}dW8sLyv_Sa~SAH)UD#Z-xkO(D!&)ze=jjP`*<*1hRlblr% zkdR|JN14PzZP_5D!OD}{iB1(h25mW!erXDB0wcB~t;w;MfA!N>%0hIuuoIfqu{ZF6 zKc5>ll;CXTKczVXuSq~C+2k^Q^C5iRs&+Jn8}=KJiDa>!jcO>zux0+7I1b@a&{7zg zCrR@IEJZb$8?7+S;uw#DgLXP#eD*9YnlW3tRdSV(Jwu?;S4XG!P$Y&Bu1Q6!BYh24 zIr%5|@K7bQl3CQcVWY$_HcQ2DI~)CQ3Wy1T%kap^4aKFXscAsLbhHQ)ga8trS%OcH zxPwQj8Umm^*EWhE6IjKkXs+KxXNF~{7`Tx+GbD(XY|^kNP38(<%>ai5R!yR}k)MBP z7WM})nU3xjKoegMxq0DEGM$TZOa4M9^HDj}BLmo{1~;-dw|%X0f=7tPA5R`$PxIZM zy`Hpea>kpuzGqIyPSz|N-Pu9O)$j&gl>F~CvUMRc%<34WIfU%@G9EfT-fzbZ6_F(hl1}ubgIKn&5 zGV|hhEb%R(zXb$ew;iBbYiDV~VF44Sou}o0d%286fB|1;)n?V`CWo0gfJ^QaQ1MxN zI5TPn7Tg)*%VtUtkw*Gi@5D9WsUSx71bZ|Qt(NT= ztAbKOdm-h8`RcLBs5Sf0N42{mP&e{|@Qg{-)-Rd}Aw~QnH>AV5Du$9PfRVGY&N%j3 zGLhGk+UsvpiBr~q^#O~*)?{~3qay*H`6#im5=P({#i2a=)_s{XwXFKg3phk5p`{FA zPhjVpEo*07g^w@-EqozC8am@Tc(!{;$=nNdhwmBRlVF7in}*P@IQ%VrN>a|*xZvz4 zp}sjzhm9tgfMmpNI~pEuq$qDWn*_F(c?#1|7idYei$xkufPzdQ z1D7*ps2Q+c4Ui6c z7*KQsc`bo^5hne$U*FECg2Qde`nC_Vv&XrY@x-hNNQi}xsvP)!HP5!CC-hgtUE!Qz zGAV+iL{t+}iDgsON7!_K@Do^Ejj%K-+HW~HMJ|^N7d@~KKj5c;KqYrmEpL zTY>Dgco+QavzJ*|MoQbv(h%Ke>I);+%7aBik3B5Y{0t4_^L!-5~`-wt9`(*n`( zH4HO2AZw0-sEL_Y!o^w?i<9Rzy_42*62*j-G%#Z`kEX!ngAD5Ws?L)0};QUk7pChJp$CM^@{s zG!HqgsKg;k-GXZOc;gA6 zWHDsGg_OHkr;DABN*_PuM$OtseILec?n}qvh$yiPahOvaY!50;5|$!kawWeCDT8*> zjhRG;guA@kn2LHMxWjm3$1@m9JycWlvbLY-de6ES zZR&)F!(1S#ot7lXZ)t=DViFC~*{lO5Ckyw|P=rfuW+A=nW<=0m#gfx8XfTNwu`T8g zC)6SswqzEBOKBI!YMs2Z&Z*>nn(JU>T`%86{{Yj1yD;Kv@^{e79E=SzRJo;uxJv-r|_xpvp~{&LCnS3dOUyp zppB{9sbsgij8{x4wfUR+Rr@Gj@g;NlCC%l>4=-<8SNL^R)^(pUM@xK}RqO;-cQ~-v zN$p&T*X>^Q)8lf9K2wDC7F;}+KLe4k^5h2*#KFoCE1|M|<&CMxm@9;uU0l?EDVs0G zCG8Dag^Xbe)51P@awWF&&Rb0cMAuhns!w`9vk;0%F0F5vpfq}FJQiW=T>g4DvK;77!?$3O z-txF*E+DAY);v4ZxS?rC5g|_-Z*owYg*M>ag{Z@LhR%vxOI#kX6_Iw!>4JWUF6f|t;vGp%IHd-#wohgDbe91!=&?_T) zC%?#-V>`ZUX*7vzqbvmYY}oikP35voX%3nW9DcD_X<0mYu6W~W9!9>y@-OevW=9d! zLl#J$6i!|6FXe0$s^=~mziiEchvgcjY0_{y8g=>|UVRv4&MVb;7^?Os(!aE&VpF!g z!b6ybs$i@|*VMK;SK zo!Ap#gVnG7IK)(N;bF^|6yt!E0zRs$W+87CR%eItD)6QYC`G7$y+cZ6!H!W0&JufK zs=%(R1@ubrkgmc*cw);^(T;UrN0$~t5{_a^X=BysQp8mRGmlmE?q;CA5VNyCb)uT(?T<#|p> zW^*GzNjlNhCM$T#SE27eh4GmMmxvx%0-5Zi&_nMho8Ercu|vI`uHC04Hv*tEft+T2 zHcbbyt83TFQnaUFM2I{;4k|oiC6_}C73!D0>{i>5v?^u4`w!H{A4VfC*aZAs;BL%R z(K1?r;c0+#Rt?1=*tDsX6lZDOiJ?GQeG&(aqmmsjQPIzQF1q=RWx1_UV>uU<)$ns- zu1FImr%NhBFx0ubi4qW*_>0_A+i4{67Zo8lARkf&Atsh>aBY5?yCJJ1f37m$yD+)2 zfqf|wyBCHi$K!dz{ z4xh^A-gxSy?(5slVetmPs;;M2BQf#X)%SzPZiK8YnwfUwPw0OtRN$;i$z%VI2*ddQ zBaDnM!jM85s-c$O!CsM+-aHjZ73}@7$VFhaTGi>=1BxA(J&|Vfcp;yTD_D2%nAR%w ztEW5R{(-t|(sFTwk3V(2B+{e(>|-b5WO^*)-TdJZv6mZT^3wWs?>aeh@MQQCj%IA~ zSLd1UpK+e!SjUjUz&WFt=V@Ls$n-`{gtpCvpQ`*WCLu+A)!8z7h7e;GrM_w`t>4rv zhUhh3Thd$>H`KfD3^8dWXE|ep()rScHqqY!^RIp`m!ijBxOQyEtDWK@rbq zuP&Yfs^zg0-V{?cqh5>-zTVrzD$SE=CHZ}8e~cD#Rn=`jRNu?L#3?@+bA4^ZdaELY zAN6vp7Hnyint2r%p6v&Nd;c0Q)CR&$yFKeP6;OxZ(G2y0{w10yV7ioB;6%w0J7?PdifdI~^UN)av7 zB0c6+U!J{&M~pLcP|SxtXpc(`tJgIH6LCbC!N8Y@@&839WsQs09B#uJ;{KX6MsNh^ z5`#L;x-t0%MocM&XnCkOs$j1cju}Lvdt~UW85CCNSsuJK>$aC0_tPIeoJ^zM%o$mz z2!+3iF3bzkSuzb-85wIPP18r0c@EjKmVNV{h}`SN@crO3R6@Jxe~K@Juz~$R_RmBV zp)Tl!oj{e`!?_}79LnOTe-|Tmnz*&~*4yHnnka_GQ;g!G@F7u(@rkHA4YAl3 z!x;H|FCair8PvV7UDMsf|G|a2D7D7sK~~KP(nG!!v?)VP7|TWD)d17y4yO`(vY6E! zof!*X+w!b4+1fbw``vNEw3TN)slBirOv`!13Y?KEr@`k~k;xo5pX`#@UkV?q-*v6C z;8bPUzz~4);IMA=FE+9LwO@;e04*`%8B0lB5Pph!0dVg`JT+FrkP{@5Fi^q0PwUtc z!|88#jdi$7(}Pl-KUk#Vv255V@0HZAPqaD%ymI|k+Gje4*+=_nnMcATm)x^z+}XOV zmgqWfT)DuSe{3h%w+!dP@6~ToNE#!QD$?JC27XHAsBBw7wJxD9+z;@V?x7wAu$RxC z1Ll860k$A=8bD&?+u6(b%wyB*<(srTmt#$@aIC@XvBO@hyn9UgaE&VK=`FD;e-rF6 ze^E-w$tgLHMZt(J9@(u0eOXnsvGcs<=<255Z<`%b^S@K@L9R%JnNujnG;PyHTULb> zcC7OFTSD*%iW}7fI&%c}Xq8!bPi ze?R0F96|>n^6~(meiOcE;{sA2Tc&s%o|$q+d+!M=l7vGA`mm`;QaC{uf1*UE20%z0 ze4Bmz-x~Bw!eVnr&1fQpssRx#BR>*1@ z7;kKJ#dq%ZB3W#j5zQ;CH2slE|1qe85{n0 zNDTCu{o=l;(>O*JFJE?IerB+T@((psDaXXDWdDF&6ue!Py#>q3Ogd7PLBa#YT80}3 zsNqun!#-lNSju))KIyJxVV*4n`2>wSIRaG@jzH{Aj;qOBR!iLdP()@Q6Ya67mS-bRhaMu09an-EUvW)~ zr;M37vGG2GEs~Ryqvva}H(kV{@FriEm-cq!w7#8Q`GxXkV~NY_L;m}-67aJd%x-Dl z^6B8}t7P?Gw-3D@VJj}bNQH{*|6++t-_X&~(EXo_@dJsow)0FFAvG5zoDig|MbTpG z70Hf@zsV?Yun!mCu>t=sPrjPa|5J*6b#48nev5XPlQO#e zk0YoZu*-y3+cJqho_XgY&;G-<`Y3Onl^)T$jy+Dyp1A(;G?7 z(O_PH9NFL6Oi6W)#I4PSD(gsJy5p+{mZIp~W73-mH6Mt7uyDU|-(CDQbsq2)a{Tv; zfdApllD?^%A<*8&^dB@-Dox65Fro0T%LAetl=`5Q=>|Yo;ORCZ6tK%u^*W|Fad%d< zJ?s3+y`RRA;6+b=r>=~7-Mv$41BqN>XF~PShp=faH$p}fq!odBILefwrs7lLyA}c4 z2j7g1ZoMh-X)pE>bqYE9OZWCTOfI_iVy;gPHDk3yAE09NZcf|$x0TMFA&~doyKJf8 zMWuD+myD8>Y!)*5AN|FmT*yVS5p*hhAUC}ce^n3BqeX_{xjCz{)Etl4@vw{Jbv!(y z!BiU*UNZWpjN6c)muuhZ>Xz-7_PY`E&j%mvtRU>Sy)^ju`{4|iD{`zMxWs5FyKemm zC}iVimFZ1YF+wWzUIs(w2^xs^@=c>aCkt>9x_e&Tp#&SkaWo-)b4-s-L~lVvRmcRb z<6L1fog%_@>p_NF`^jRbUA-=mTM-c_>2=cvT_B_lM=kCn$|}iB>(Mt|Io^@yuBySu!PXX36VkJ%852OuV*A6 zv;s4$vpRgzWHDAE>P*QDD6V#vFu%0;mfKsWGug;+G`cqmqoc!^*71|kg zn{P99sKJRLj>GnJq#_-QpBC@rESnV>E_mYwG{rFtrAJs$r z`u`qS-2Yh}{R>$3hPEdE;A$dC(Rx7;WjMD!*GLBi&C|yCyF#rPlSFP&7^W8rG5e~d zZR@1XhRq_~`(>S^Rt>P_jx@sld+J-=UGBEb+^E$z{GcJ9)*nA7(`Q-O^n)j;QBs2TCkx~vPz$c;RACb}hWdazQ*+HOjB$8~S_3Xcjy5zmZschthY`X0vqX!L_nL1@HIV;6XK^AqY*L%k*dllL7z^OMb<69cPJwB{ zVHdrvBlw`;k2ayZY`||VYhje%BovjBrJ^H7L*>zQJ5Z{vItPb7bQJmFa4jpAe`OH_ zG_K?D6-Y1uSQu|H_b>Gt`Qb)b3p6_q5L;)r(inGT3U@R~WKqq18#8*Emf(F>iPk9B zP;mV1P!8^vh+vBT0izHJhnjf?U~E!d)-?M?(&5N7`o)G50{L1qb3SI*Ff`U1Sno|e zr)l1-jGwY3gzT7*xra&Pba34V5hR322KlfbxuM_+zpLDA&@(JwBCl6$k;Eo*#;KfY zabuLRvvxT7WX;c*HcJzN)N%w>A6?GSVYRva@E9)@jP_84^BZmO*d_1_1q&jqK2T|; zj6PyU2ClIZ%tVMsw8_=@!idA#C1qI5G3L)%FVcVc;yvtm4RZ;ox{{can-|q9UP(;f z6Ijc~Stn^8RV~TUotcZOP2m3&kU<`{l;J$$Bio=mMsvO8ll}SYB+6nQTeLm57<;+8 z%@Zva?MRYWN-l8I2l%?lhrB(pe5KXydA3eoTm_a(%f~XhfIUiGl{>Ja>WO#&{5Xp2 zy2oN(mmP6nEZvgxdVAcD^XyRHI(*PX`q8L~X`y#dun{|VMsQxx4!#9 zb_To4^4L`I2y+vd;c3{sPI6Uh<12o`3O4*na8!phTn&83{Rg9ga*Q0jU#s!*$o~^Y z`Tj#!W%-3rLuX4n+kar%kpQqeWkMM?-!5q}Kape)FJNN2CV}@5J)L1xF>(z+r$<|N zK`JlbZC6Js6~%-n)bRfJ^m^j)RJ~9s{OwTVNw@_nbEHdx(c>nc@A%l`?=Z)QyKWx` z^01}WGSjr?N_S4A(uheJGsRICJb-KfjTy(CTOeu->zBM5k>v}>M*0DE<`Ve{_jXm@ z7`HmN68)!P2Tg-;dJnyCz#@V#My+iT6W1J?y>N;ewstSP9L(F$8hb`WkY6~^iN5{_ zH-iG#sMEGSe_adA_}5p7*8f?-7%OsxsWyzSuk5X)XVkegbyX?e%DQ(ui84z@*@j?e z8&Q6CERFL6Zf>c zvC{>c|AKqg9%uKawhUI9{#)l&tE~gqR81?vk-Co0mnZoz-y%0J%P0HgTW0=8isAha z?Pl+2XK(80{O?eUdrhiQ3c`$yB9>+! zlJ~0woN^1Si=p>)&zw7^Xu0M#CYsaDtriYao5h6~)Cj@48=JB?GBmPn<%rgNXJyOg zPE%LIfJpxQL)0zN>qR%k|i9fPs+;Eolk3&Kb?4iTmxF)vQN5!+6@Y{S+ z3qR@^?-aT$jJ%KsXsm`lv!iy}c|voI)en<>WBE)s7oX2$%G$aNlRSkX?LsEe>2Jc< zrlAYB+~w_A<*IIOOh#_q=GrGs5b%f^_RHVCHJ{bw&M!WS5P$vp|78pR;>mHcuUBCI zqb>f!wzc$k4Ka||YxNaHhDki3N|=_RSMPXL;BNXUy3uJeP@BB+Ks(g11_SsL4Gl;2I0z80Z>>tV=-TBE ze?Mt<*4MAf%0}@1X8T?0Z*_z?wgGY@%s17AN2<|FcpxB62@@4}itaDXq`LAN<#Y0^ zOdCM}V-a9g3S?|`-ihQdNMk2IG&lbg;vf-S*vKOt9x#zLDt3fAlJ`gxbD=NOJGbIu zj&fK`fGd|I7%6n*E|(yeQi<#)=933?K3zUD(M-65InohnvF=XxSH|>x!LzQdwG&A* zF4*k}g9vAv&`?*^`O#xLl#K4Rpn~dk*HK!jDTSr^F%C!8m2r!Mh~Ashp!oy5r0^IcHZf$Y1)8t&@+Vqh8R@I3KT z@!$OsVwh1^|4$G7pZIYVJQu~7X6|kCPu-VqujzL3SJWA}mbWv@JkO~A*!)oxgERWe z=1u=2xBsVp)7jC`)zs0+(B>b%xskbTx6b|*{xb6GT7Ki#u5{CQ%qkb{e3c#F{J;@nLX}x zSTUg^hml+$127Q24x3re~*Ooh9G?PLRh<8gWe8>@9)hoIzXCwbu>OEEdWc+sXg;{nEZysp!gsD#03mN%k|A`9 zQZXnt<5Har6rCeUSsy?E~}o0PRx2OFKiP=czQ zGx6McFJMYL<(6P%Bte#}c{xV?%L_Ml<2h^KCig6i9X8#DO`?+py=W_)kiv!+aG-lp z=q3e0)y{ij(jw)heTdham=pd-aysTuBZ9>n!MzBx!mXvzL2>^ssqO?BVc%VcRFU>! zn8f!Y1(nkGa1W`MtSMT7V}nJ#6m8nv4XOS)cjLaVC-xx0L6lsJbnTNNhh98&BN&ws zk-xph=Ut3SS#EFIHh4=DdUgkIRVxqiORT7^8|+Y`-9kdWHJN3+l9fgmJ*k=xqrn5- zb4BJB?#7}=rDNuA#A*4p=-yMjh)QW^nL~&uFkOK*J2_fx=kH3;*OLOSg=u&exENGnCvE*%FCQ#uFQl5~o{qXJYk-Sh=5OYr%JHyhh%Sy<_M^*<4w+Nabd69yoBIPZ%{Z>q{D||b#9>o3$u%OhNsYs1 zBpv6fo0SDA3wRjWz)^=GO?#-uoyoG7-0W%QaHJb7+J3(@P1`-E^-wRpac`dVTX(71 zB2{G zBT0|sC?#^;5|1Hv(Ps16QVp@Hl3z2heEF3VdU*Xgil?4fQlEeVCj^_U0jpj_c&!Z0 zXH2q2!G#hE5;KNHaMNLCI{VRDLZUvP1UVc%6fKR6i3q6!*wmkI(t4e7+>O1diL~Js zAW}b+ve&UJYkz$o3=>7i>$wJPNqUlr@~2TC4c@k`;cpNMrk4wCx2x*pm920!YPL8& zT@hb@t+=OK9;u9>9#Y!~m;Gjoie8^%y?+-}(6lh*EvK7B1!Zn0PT!Xjz$@_6+OQl6 zvpyB-a>0!;SBq$Tq$<4j72zF5cq^GNl#KXYgPC9L6{}{^1}4k(2ke+-6+=*!yGA2y zgcoZEA^BDeD5@a-hQAL=)1uA{nxiH z?#YO~OEP^8jc?F1A40jOVvuKjj0%qq-WWqlA{t4|YiLFf zz2aWSj=Ni6#HT??thPtg+)Ttw)<)lfMzmS2y>)ZR8Rh2kx}3?=pnp>wTB_F!zdMco z7lDn;u+?WK-^|}FCcxo+1dTvZJQ8P|57bvkZ>CesqW7-Od1ZxF0ne4rESISd#{QWQ zCofE8mf5R()gb3v0+{6d^~r=T%kjPe6i&#?k>t7@(r5A$d^rKLMNTWQGTo!U?I*B6 z1rVRiK6CuTB4R|&F6&?UqV?CD^?zR|p#MLP;!Ny}8O`k))a9KDIkCF$X!RZpc}CHA z`9iCza?pQE$|Qpm^<+x|FN8uuXT>BMD6$^CUaF{jsM4J;Eag+;?zgVqxAebb)v9bt z-U%D;ly`*a`##^EUDR}YJ%=L4%4jo^CP6PieLzW5Rvo@>(E&RK!G4hT@UiC2=J6Y0 zx8wTQ9*nsXqFIahqbf+@OSL~wrEd3rszsb(t%kfh^XCXcsYifHIb8ll zG-Py&!%0wGC->Z}NW4l)>hbkT2tLY&Mgl;cw&JH7ovl=_TO{{i9EemWW-63yHC6rH zPjKj{L)G$g?W7c0TP+${=47CP@HoBIR8VW}MaRD06ar3_R9w5cGreYH(6HeZu#i>4 zh0C$S$r|R0>sOvB^$NMD6r@_bLQ?V^6fGlnm6jxZ=R`3Px56mEQCjuGKeT*=d*a+)a0QSIcM-3^^q? zhC|XT3ibG;EhaTG|HcKJ#2gs=jj@i%HyWkwllLTI)XYLIf{szps zDAo?ZBV&Lp!4|MUNb?q}UHWQ|>@#}lXFIR!`Jg1K>8h>vfTbhi**)zGmT4`*Pxl5#){=0R z77cOBM;XU(*drL~cS}OdGa7P7LQ_(Qcx=rMdNU45(|EJN2_=bwP}w&W%JDEc<%C;| zqgl2f&8+$06-!sCK68nmQ?8DyjIkjH^ikeN8evzYI^L16Z*K0Hhwi*RI4#=M;#=U; z+8b`#YF)M9eL~(>in)Hx*@ES0P*x^Q%N9M?De%8~>Hbb%Igdj#O3$jRnA41phd7Kr zg7G;eq`Y6BSdCL$dGwyofI!{I^tHKdWLYczasM6Md3bB!*L%IOX>Ks1+M3&+hgs&U zK$6CLf9?kwz6bRfbsCXyoyU(KXMr6Jgmf-!RBqKd|0H&52yZZ97UVjXXrwA;VwNWV&?{^Hb=i1=}#j|&uo2MM~ z==R-@$6UWUm3;x?r~s+_bh1C+?2Tred`y4jeVl9gloaiFGPbyM6tZ>>NedIbp6)M~ zg?A{1COi53Ip8!{SfTB&avbQm#g=10jgfI$#8=o{X{2O5O-@o9Tm0y`bHt`;uGz>F z0D&^g!x$rB;5J3rhR+H;Z_UKDQfF8bQ#JPW04jLQEM1&_Obf`TGC?yk zoMt5B$mF*S18_U^G$w6%M7ug6k`s^oUaHwl3u|TzgKz4Wrx|Cd!ml!@@y}XK$rRdpq`YUA|v9kIoqT0GO@@g zgGJ*u*jswqKBMkP(LDS>Ne@muEyGgzyLZYB6L3bF-Rduf%R@!deCBfnjxI$6MO|x! zqn+l)kr=g7Pou*pCZz4ohW!^4&zk4X125?8%Snhx_roA#G z`~l^siem)l*PM#3aR-|q&86AU+wtXsG>f33Bl?2vYR(}S8G|-=13;&e_|B|u{yJL) z_Sm%MmoSZ|<#Se-7g~L4>cuMT@91e4>3E@}m|Ux|+yGu;(fNODcoXDuRc2WdNi`LCaP?aYvf+#O?vo+-8bE zdordJ5#1N|^2S7Bgu{t!2Ezqw%U;nk$u2-jQd;?pUUNG{F+kwltJ@T>_&xRcDKi!? z_Rf3iDL`x<{!uv;{2b1j@wsDcESUX5BkMrlbIN-``dCf8KA?QsX|{`a%42UxsbXtSP9+%D+F|2Y zr>LyqmzH72<;6DiRrkNkAh<}<=}s^pAjW9_Q!oSgPlB26&X)F0j6jnpRo{Q5!S9}L z7|qT-S-tTyjoNh}gG-IF>!gSgeZ2}epd!lD;ebKq7!`t=_@l~48#YB7o9BZjaI}vZA54*bv87tgwHP#4H40u5Wzb1?)4m$nhG8?N= zU;HR5n~XZo;+r9vwjNRdf;P@UD}Un3DCV1w$yY#@BO?=81no)(m;(jy?`w;RmU7r> z$0wBh7eFQ z&$?GwU%9WCP{>SeZW4|4J)j+ylts%^`B5Y!Kv6nssb9exDm^y}vP{f~X`BYm-2cpC zVRT-%jAPE%Zfsg{|8c=`z0^w$2@-cSgV009^82MysxrD3hxSQYTraV+Uz^emv^u!bLc~S0@onW4_22lrB%f2s zoxZ27{Z0ma_%0KU!@1Pi^mxo#bR*SG`D5?)T(1vz33(PTb00TOC3)By)nuiTlGPjtg^41B#1C&aI406mF&CyYYX}RlAgPWvq_CTtomA?BzD2SS2kMS2?9l!d z-aa!}alJ7q7CqWyTe04RD#dk4Sdw6o->_;{w@K?SkF72f20s>$H@l1M-j8npH%lb_nAaI8+fvJpB%Wnafp!%aWsV~`hfJ~;3yCO=SGpiF}B zTX1pg6$Nu**EaZA{B9!MqQ4y9JbtJD(J^eP_wcMw>9(F=dYi7q1C>=GjX!nw_9qPbbk$(8 z&H8p$5wXX2G21ejV3|Hu0Gor&(Ce7U$Q6YpAS*YU|Kp~C`(5+%_WouyalWLaA~&b> z2Aowy`ug5-%(v4s#l}kES?D8s-0#QBb6li4zqixk_P-rXpXe4+#py(5uOgox;>Q_k^#8+AAPWUjPNlNajiU2v$n%x`}!U&US;0pI&Jb zm0_GQ2=7P+A2(D{p0nur;rR#$~&v$OWx}iecW{Pg;6z`IU5Jcakn-wPi#xWeU zRQURDr2{63v#n|GD#p1^Y;6=}8^{2tift`un$2JlmULKmWPQ z?@t{1^R~Tkv4&vBd@|oj9!Wk#=-j?0gDu5rTygoX6E0h8#u~1V0zZ z%Ddb~*>a6sd9zrubqEo|?;ovZ>t{6Gf8o`AqhOb}9-3(|UmTTR;|ZyktbvPD1A^#} zr123gDvqcPeXaK;nekHcZ2*`8hm@JQlZ}?caP{4Kn>OZ{-wSyRvLroMnE_Wb2EuEr ztg9mDym>Zl129$il^H!?ca=wTbYZ?lqa@!VFw*n{aVioz(4PMOa1a!gTGL%@uK>#L zwlAlwC2Sv3$uD5Yfo1hc{vE!BJ(e`eGHIicOCD(biGrdmYMXZ;c=Knd<|eDJd>*P7 zdC96>;@hk<3Y09&L0|E-6`0VIbiG^}k>^tu08t9_=>{9g$tGL;FZ-NHzlIkn(^|oZ zoVKNLUc9ixEBeNe*M45|njmeoq-U$Rr5hc|sy!223UiRues8x)IV~>_i$;Q8rc1~Q zkg1tr<&4MmYJ*PjNG+Zx<^D21XsMluqG9b%*XXvaZ`^frvQT21{Bi1QEWGrIs}(m^}^ppJd7qsCRRyk?joMe z=bNIaZO~oB1!=1`oCY~V15p8-xt|t~km@h##1fs71V>C(A3wu1)`=5~ZXmMQ&Qv5T zyz?etxub&fj6@~Up*uJL$lk5U9BNJqQ&S@{iKl;P=p<*1fgp>J33@toH%s;Bv#f{Vh7fxoH4 zrHx96N)$-DJlP%(qbGl;FBUvD#qfRq+@3gZP}&?t%Xi-9xfiIPV6D0Xm6KMN)`mM8 zpX?tpT2aX_ldrd__m{2`vXVuigXqIkwI`x+GahFN5Q9?1)edmMgAE8&;QGPDj#oP6 z+2Bt|sl7)pQPFFB+(8*{?m15Kk6$ z?@w@yY}HyaPU33Er8W;NKrXM}@Hxc+A_ZgP$4G*D@b8y;*hOe6f1ihgGp>1buUClz zc`3IeFkertKu1|?t8<2zICsXNk@}LH*GHd$?IPsi;VwjHuMNHcsHX0izIJyg*C-}e z*T^vps0X=A^9F=;Zy+Txj5~7V&Hy5yJ&POwIUE=XU;FD289wgzeBTn5$Pi2vog|l@ zhaF-rpfZ|*CM%b+A8AfmPLNHDeIy4M`Qm@Uo zbRpNk#2SB#KJbk!3%tp8oUHm?y1Lm3yU0uXwJ6@!w?tks|Jf^R3X^8uP(#tnPyort z8x9HJ<$B@)J_yv0KP`~|*6dsmANBdV4fLtZ^u%g3_uvUmv9kAI6SeY|T?X#4uQ`+5 z7Z`q>7A!UNdEEk@()7WN)eODW!8Ts7%o+TGHcvE0THy`aDB(l3?lIN1z2qCl?_l1& z9vzGM@;);A89jomb@r->Y)f{g|8Gq9lmjPzezonpzK%Zr_n2n=4>A2u*Qp^z-+GsXpWtDA0n}ihM1=I!|() zYW*fF>LX~|YSK0QH^=1kNtNDls>4qsTf7rwvUDjfohL4Q^~EfP4W>>J;hx~T8mI>s z>nr1v%C*n*AnyFGf(7zwKV=_CZ@~|Zhvk0P?BQSteQfN|6f?6C?r{~Y*BmI&_#G*$ z%4Rxj1ZmT2aD#ft$`f*ppj6vjfg}`U*0pH3)S}l-)uJL$OK#wjP-3Hr&*sDnZAssQ z61#KK{d9yUMxVjLh42EVee_aV5(0X2eu`a73&LH{Hl1K#LqcTzF6j~n{)J)bjzM{% zxc)s8-1MO(Y~lvaNXX&Vya>2<2Af?33NzbUL9HShqmeC%+^f&&llP~?Bc=1IjGdcf z)Tqinlkc;T?4-(m7=*x`LP~CGl^Who?ol`R*vsAXY!|@NSDh9k*cHqW-JiFWc!yNp zp@pQt5-uV6l*?9kj-B@QTq8KKBSp8yK4I0dXth_T*!%3JWpSQ1IdTSmgm7_ajpycM z$CaZDqw{@^gOf444Bm$Y?}!G5ItNRH)+3gLE=wK4VLaF$Vd$O1$$tV6o=hhYZfe+W zVSkF>`LY1%pxP`Gc@b9gy^W=Ium6qspCUGg=V~t97ZxGl|0gW|pZnMU8gTko9Xn0d zZjT*(czUTMZF8Lb%27#Ux+hmTD1>*_Tpu?w&OG-R>^`EJIc*In=J&FHtj?c{=R|9+e9|| zC7+iC0KzVZu_b+;^#-DmPn`FgGt9(`o20b%M^c+`&t>gQPSB_^fT-ror-y(`l%_+7i#rNTKQL z97z%Eg_f~e*mtwehv!gr?-hU^7G+{{B`#r-R7w`g9PR7^-MlOzyfUWv^Z^Wv^$b|c zeCMq8{B@WDnwJ4l=H1?Bg$~&Eo6F0yVoGLZ`lA3&VFqkJ0A>8vf>JsR`w)+x3Qwu4 z`$SQb0{~9@qYT!}%|O1u zd)$`}-V3$rl072$_X;xBrW*+@6gUymU>EN7_$lWWVR!+UpCxC6idKYesL~0yYP{qy z60=mLO8FxktyQet+QDb}W_peNU};ni#X~oA`;atc`BCCCqgV|=!`*VkhlYbi$#%=@ z1**EH;|b(yg1{6ygc$5PgNweV?8TlhVh<^y&|V5xs4i`i@Ua(6pjUy)Ev{zJKnt3e z=qhE+is0KF{Hf6s3JW&bZul2Yzbgr|Q|=(n!52EV&j?Nnk>yWFzZ1ApF*9n`gk(Ru z5oEr8GZat>2Knh1d`Cd-ACM&;x%(1ShD=&+2@@xGP+NQ65W&6 z|6=VOgKUkGb=_6AZQHhOuCi_0wrz8jZLhLz+qO>a-qF49{jodxM4TD%#hml!7coYT z9GOqPZ`CBu9Q>37|GLPW&u`aYX?iPoXCn@v+RQA$O$tz|Zs**ZJY+fal!Eqa9ACRS zV6lc~k#Aq`bL4^_Cx{P&@qZh9>($WJtX92V^N9Xn+-)7~+`Hh_+; zz6af(Q}e&Up57)ecJH5yCL!9ti){b-Df|CNHz!gBY%}SRho^Uyxa|Y}*lTh=(wlQt z{ic$^Zr=EVtK~+bf}LrAWS;%DNtT!-;O7S*(}Dl{>Hhop``)ug!n`pbLXc3`al(fK zcD;mgeuo1}wQx?FxO$&!N{W_HEq~56%5s7m#x&Hp{%*IWL4IWS9_@vcXqwDb`frYu zvgF|Jos6DH{8agvbQf<^f#iN^U$OX;rqXEv0rOUcAqu<7ll67@)p6EU zu)4ymL89bg@~^lozIihyX~s?Klz3!J5qq9sZhFtCk-FmpmA^U=PVX5?K06e=0$3B; zw1ksI=m0`7vh-x0&}sA;c27tgs8GDzQlpdckDaA|SVPKUurJ;qM6cZuOz>Ke?!}H=LJJ+) z#ViJyi>1#Gk2a7by=_CMWX$+&xz10To95wM4~v`ct-ZeCGnSH2KN0oemCy zq>1A_X^Z*m5LK$z>o{x>gc_2BtzKc5g+)dy;-9cA_CEPrbquB{M90lR2ZO!>Iv4Gq zYshTIXs&;vca)A@5il#CYnN}jop)Yytt;ofbq^WRmnJV5)A2085*&Q{(t(Uwy`HyF zv0tV-XIzHJt$|cDC*6yRhC*k>e0%W zn2oRc`NUSn_pfvmVCV>D_$LLZ`LV$K-_z0mypL^aOKWXwBt6E37(fsIYbJw7M3QFZ z0@S|o5m<+SPiUwYHlE(W^XGajWk&KRsimCbf$`il@-dsu-Dp-~3H2O6et*p&`V4pz zuStqMizYEi-ShpH)u_T{2mqs2?*V*Ba>MKN(cYS&}IouQPzBz=(A)xodh?X6oPCrH(OHDv5NLo|P@xyYk_K zP?&*&(-*Aps}209LKDJr61Rtql;&fqUJ!flKjo;=Q7R*EN~OMeeXyd2Druaqd&?=) zalst-Fp@f&@l2(+NDe}UQ^%f8z63=EbYIzOZ>7XEud35L>a(8=(Fz8!H<*{*^f4IA&T4Mx;Y(Ollm@NteO>e)0}`AX>*^biVa`yr-tG1pwDGiAZyZFrfVVfM3wRLDIafPOa7>+E}ID9d;?^ zx@yf0A;5Chd@)%YM)?}a^7T^HW+3hHCgHGn-!Vzh>b~0CkP~X+ZI~)X&erMl8fepqSErLNvQ zPg@+TkxkZejQ65qWyPRNu=mKqI2c3F@m#K7cThq@GaTE(>*BvW#HbRdow#8pWYscw zq-JH3NHA!B_&RI(P0F7{+Q%W^Qbh&a)#c{N){4D#|>=$T)S<0aGrW)5-rJ#g^tywu0uibf&id0F3!v7--pP>FNHp zcK%rds7#uTTo;8O%5Cx;6xJgoX@As4e1o^kC+U77peW`!5uz}b!;~1WGR@ws^Kk9^ z_DoMcXh@VIFxP=zvgm$2V#{^0Jj0qNaQga$9mrO6X?XO{msg)cUsX({NGO@Ftx;N5p)MLDlZ;w8VT2e|N8FFbjSkkhRzfUTQW(%Zb8 z!eP_!#+0ibn)AhXN~5JgM(2!}Y%e%@4-!1*GX~bOIVZtM1&PnMx<2ahXC_qSE3nc0 z1{GBZ#-%l5@HieaM%yMpz!ReBy7I|2CoX2AYI$6G+_`4FK0+0JKTM*;W%qnaVU7nB@%UaKfynE-;G+@NiK2 z@FQuAtKk!Qz>r}bmd&(@Ow_=f0UhmltH6GOAjd8Yo7&mjOcLdd>|jqz(NGiL+qp$V zt%|=It;?lVz~DB6@<>lXGGol>;#EB-)<_d?=Nb|e0WO3y$mnWdMK5lHguZa6bZ0xA zCJlZ92RMprxIVxVcyxDu2v*K;k0$%sJQ}t<4z`%Q=R>OiPw8^fPfs{+AJ+?tj>_ya z22%|>;VjT$?fN!@*84?9^!<;vdOc!@yS5T7slyY%`tG^}lZaIIK%3cTcdej)+XYoG z{M`LR$X7aBHTtww=2T9l--TNRbt=ZW)W8r5djHE3?`JdCQV*!qMOiJ%gAzXJ?CQZl zl|8Wg&%HiNfN!QV?JC@)vxHZXb9I*i%$$LUQ~M}C6kBt@$SSJIimBe&X5;ige-@hy zoundBXWrl&=AXOBg=&#w_a|=&`nMCH|9L0LTHnUp&e`f8qc1-}_(E$lcD*^pxA`l= z@pDF_s=$1%g&9eYRi+uBd9@%>1TR3ZFWxK@LdHVGgS0{5>p9XeE+KN0%&oMY+AXR@}tV&@x}eB!{@+RZ^-%rL9_(ELRq} zh0L-e{+?JSArXmPQ$q)+f|8;YpyNod^&ohWh1#+!pR8#KRZ`oEO-o(x4{$zoO_gPj zezV#=V(Y=nR-Uq`;;pqCq@epL>Vre6QchNu-te;2OoU-1!E6;gcEJo}5I`{v@_PHx z*qG%uphz%)DgMPXC_J{|-{1qirrclT+7A0-R92v(fwgudML|%o2E|U3escDSI)xxZ0VjdQ45{`dv^<7KFp4|vY%T|6X-%Ir8YR{VgPkkYbM zzGTQ}BKd5|aoitFBjWQ1QWcWl&4shkzE81&*HZZcWLP)8m&+$u*oOv*O8ZO{Xryq7 z;|gpqyp#8xg{vw$m6i6yIN(_*=QCz%#xMTeOINVzN84sK*~_5-j9Nzzs(2CG7oviL z7W**RKpMkQ!O_%De!*KmR}eKQ?D009lhrb`EX@rvAWd6$&=-FY4aN^YTkyb%%%_g$ z%LZhUDdcaX>A_%R3lKTEa`mqg@01A>DeZx8le`<}$%P0{^%YOjl5nZIl@4nRbBdBD7hgD=OUx|}%UCs!?OXmv~mzjZP_t-H9(h}$ccU&RPf*Kg5 zf;CAK_mh>`6a{T<0bMBr2vHdS4em{Wl`^$hb3EM){2}-1F&%1p6uQ5PH;A;=9UPk$ z%ZkZi4wb)>+H}Fv!Ej+FtDA0H`5yncXZ5eYDD}S(D~Hs$%*oE2BqHmC*srrR^jgGp zTMJE@-6@CdVR^5PDSto~(V|mqMt*P%HX1H>9uZqNB&#SVu))AQxs3QPVjwG0{kYRS zd(Cw=R60L`ijNga_(f7H!x<7wtRR1}*B{6+aiQviT8P z@f$c*?+12!BWg36$4nJ?IuaiWuyvwY5{w69#thMJ4mQudB_f$NF+pK22V(ujIp{>+ z2$YyE!&$)mtCh2^>DC);dEev~AUCKKSZB%0g6^vE4WpNaYp?xoNK}2kD4C^lApKLU z{gbuTS{ky3UX(9?z9mQD#0?B*3DXig$423NRT?L7D}*9lRN#+jQh&Hviiyjaw_O%- zdOU_U(wtw$(ZFs<&QX&$v*@h%!SexrofQFP^o}5 z+nqA`TSARpRKCbxhafM8U4fk*1GPd&#Aa_Kk)1rKcqEL=~?cOmOf+t}x`{BNY? z0UkI}bI*lYnt=E2j%mYBc(QqjZ6C_q6V_ZvVdX6XScMd?5xu3%GyRBNF6?mzuNIXf zdPyPYO?wpwyc29022Ok!d+2SwBqQdNjoQ4(gY6iqjmiQ`A~`iw>%dt8MuExq^2+2D zIdg^u?ZOP5UjKoV>{O%ZCaGG%^DLQ1K!%D&={!rN|GG`+;f zmy5)tOp?~gH9F|^X_ON{FHcY5p6;(QMEkQMf z=kARE0wRpW-M^5* zJAYZVeRyOCTG9k2`yE{qe&mD|#fc-OTUcFn!3Ee10SY^Z>Q@7PHXG#%wob5w#X@-G zY56OhGxcVDef#^|vVg_kWcyHKgU$6KFBdzspxsceWvTT(o;CT$-cru+E}MvD%)Osn z<#;1O3Eig906ra6aAAD`n=(m3T=QPu)--aU;dYx#uVpL23_bV4|B-y#V*1a54V0SIq_nMd+WU)PO0TIJ-HBdVL#6m0N^? z2SasXZ&4uU%BK$!37%5ig^pc>@4{*e6=%qni2eW!bxIr6Q)1Ip{b(CKsF6DNj-vw5 z{r>RL+7Z1o&PTIw%#pRP(O{lyeY_=wJC(pe0m& z%QI?F7}2`{Oo1ZDV4M$76C#OKLSq(is4#b{84Y*tX^xnz?q7eC_H%c~zNCI5zsI-Prn%R!GUE{XwucOp>SaQYB3hSEw zk@eu)pF3|XXI(3t^5$Y!eYM$BuLwnkqr5)($u2GQ@73OauBZ2DVzPJ{mdilX-!WKlp6A^;k_*W_3_lcC)a2H3k;0+Daz-l z1t8Uw@cJA7=d~I5EB3Rp=wt@|9ytp=b`;|L?r4-S!tRP2VX3Qu~FH|RX0p>8cCbyyX~Eu_K$Zo+troU zcQ-e#Y1hdWF1C}i$QKVWgN0))XNF*J)F~x%l7eB@zI2G%KyO@|ycIv&7OIQpy%k^V zh~J{wWVoSaUCJ{?A6qIR#WYSI|5OooNKoUXZBX-dCc;?I^JSl?I*|Lle=l!L0`rj< zHWf!=y_~eDy)Aho6oWmyWSP&SL;X6XpB>)8I@}*WEQC~1IKz!Y>9MeGr&rO)Cw=h5 ze3~N&l5zAP2`8#+T7@ir@3;zJMx?~#_<3n@cw*H_0U9@0J_RE8}NJklbNVsub8g0L$oH*VOr2pf6>qHCyx={}5E&k9>X&6K(tT>fG)mV(QD9 zMp)JYh1mnyd^<%jwI(br>2g=vrl`1@WpQ62gEO$v@V`{TEp9x{h;ZLWY5@86$Pk6N z!!xz512Xop>}i)(hIp~>E&QOIF+~>k63xL>OYqp&L1m7Eq13CS+TW0`bw@N#DZl93 zC%JEs^@1*QM(S3o=*M!A_%D#oGB{@RAsqH`MMl+(3u^u~md{~3-I6)0zBVUGRl!D> zwyJcv0mE}o-ve@rw74rwcrStN&pgNr0@qOx@TFSw)rH^?Y*9Aq+L0l1SXP=zj89piXEx?dL^5qszk zaW$M`9ImR)dqA$YGAzT!%a;TL+1vFMZL5;)$@A(m)Q=?`6>wNOH7`_)IX;fZ?%H5W zAELoMxihPYi(Q%&ZJKTmddSkVujKoTsq)3-Y0hjEWx5TL+o?b%RV|34Ols|9+JKSM zJ+tCgTq+J!A5R#_m1^@kHZRm23k5|XyWH3SOFy9>1^XKUe^nXSY9RCXU0*GO zlYD(XBaAdMQvmA6>!?sD*}D@~1E7qTS3f|#+X@ddcCx!b04!Rmp(Z?7jWr9?H+D8> z@%mh#7}-eA6C*g8a2XAp53uCMd|y|(|e{l=$pbjSQ*jm zvfO0ZGAZ;2-OiJyoqt`kvF&`o#a@AW3{iy?Ctg;O+9CIoo|xo3*IH4wy@g^%7{N4z zi4QiEiD;GQrz*)2PiL-7n|djY89{dLN=+L=Y`!-F1_rPzzSaxbLh> zt;7y62ahy0E{JTqGw9BC3mL;Nk~$v>JL9dQTrNfF+v_a$hEFF}Mah>K>`;z^TVtLh z3z60&9$#Iq7m4TbrV-A!U3TQi&I|Bc?|w8hNn!4M+;hMc0>*PI&^S)MhEI873kVa( z-Fw*?a7u!d7rq_dUJg2M2q41lB|JC?Zb#jhOzdx3?S7o&ht@vEv$kn6iLw`gx$Jjv zkr6GT==+rnPGl^=r%mK=oPq(ESfsrn(7qMBd^sp4k`!|{DdCrN%0)tuNuFKj`~xzH z5aLB}_;Dwz<#t|ET|GKegZ;SZig@`63+@i4bZ7T2tiaochk=#vmHbGyZlk$mSUv@a8!sA0VI&2KD!;n;M|^jkZJ>E1vh%Z4G!%5Bjm|>VEh_$SxP&?&1}HN;QnO`@j;eCOY&b9>mdCmS7)FE+l=`${&y~`y3ks|o&Misp! z6R0WRG~W#yx6jgmGx&xOJQH)9MOpQjegd1c#s4P~2nTqgu}h^*n zEjmX09BBGWo(3m=SRuhae^0*jvP`-ovfhTyjIXg;X$?CIbzv|_doG}-wtl^Js`Y|1 z6wMtnjaI)4@>1VlJF_&**4%dETON+EQvbJlG#Kk1w zK$&O>G{Q85we>avhKJ(%^WuaIM8pu4&y08>%C)S`6Y&P#Jl4>iK2Lcn4}S0WLTQ%6 z*2#Izb(fpErMUT1t@r%HE0+uCR$x736F8b6SK2-)E&sxpWV<9S4b(=Y!I4Bu zuI|)qDO+tpF{^C#AeZP>0FejW;g*^LIEQhZ4VN&d(SZdCWz-oCnDumD^@TMO<11It zrC;6gj^-bk?r2C1qj`e%WEg5L@`xo+LQ<&(qwo)AKxtZHxFuK|scUDgJ50z4b=%Gx#D>Hq^hgiu<%!^`d4f ztYeA7XGDc_WYI5>iMeHg&i6|S0DeRP0)9`aD%3!=YsUz4G}tsKS1stbySK+-)#ogF%bv}XxW>JDR(M^xTr=;WkNxrR2^!(V z=Sx9xrUHAzxfZmexoI2Tu}$R`ky4J=QeWb;_0ePsrKc}q-{1{0Pg^X5TK7lDcb5Zn zjK|jcIZ8SdBA^EkIOs7jt`01|fhA`DfRwHL9u6|2v0Agp8`67NUl-O+5`^^Bh<3r} z1fh)?3^k^KHLY@kN$ybejy3r$jV35{HMUp%T&;&J6Usa7rEYXwRjb7?#tx39hA5MdoYjWAVk+By90 zmlm?)2zyfGxqzZ*9@ZGMiGu#j~D>Y0h+%q4tD|24>3A0W(hK@u($nk!*YA2(J9S zjn!ojX-U6De=%!FcbNB~*4YgCvP3&fHWwK^F3eLc=g+pfkR!vjIIUP<@)z2Rm=;yx zQ75_#Nu&+|SXjk>+BUEo1u5MoX_0A-XeAhr0)CqQ`W_8_coRVt82xPyAAE-3esbK& zI4+;Gn6pmW5DpPW6@s`VB?z+I#*c_dncyA=%hLh9QxUzMI)h$MzhEZ*~~;p3%9{dD_0Mk&UuWEfrdMS zc6S{Afl;m*-@cr4W}n~^ZPdWbGn4NKfs$)8NFq&J>}Z(N16UvAcw%9XB8e5~o1bKq zn@0UquK!!DS<^?h27ci_`GCFnjV_k$H$lY z>+g+&@%QKgswV{%p7v(t*5>{~BIf)Oe7*T8N{I97le@hlO8x30#! zmUVyj*i>@4*5WbcIPIF3=0T4MVK>Ze32Pf{?&)Fn;g{Q{+bv(_8(~&AnfaKqu01j1 zD*>O*PQ2l~h`3E-^R|xgK)8u9-5)qg9#?pA5=t5X*7-K7ToehKM2EX~Ni&kF?7mS5 z@;}y}mB7zgXBKtfA9|1gFaoYw3~j~IdI3_jO9GsJ_f38vNH=j(?V%f3zy6ev&X&^& zJyNxs%OBpCIGEZBg_pM^muL*sH>bhZa!g>L2nZsz`#EZeVgZ{#9zsrYifT((^GzcW2 zb#ax|E~y1Abv8+LTD6d=FQM&`DVeBRCN+@I`4qIuRh_ULLK5lop@^=LDF6p&q{(f7 zF?0BfFrw82KpS43p2(sQ0bGmy0pw>WcmDdsX?zC`&?_4O-X7oR_5JH%A55*h!LAY7 ztX`uOK(_2Jb$FQi2!V1w5fq}V9?Fc-)Gj3{@(4?MjXhbdRDwW0ttyk*wQ4LuKQ=ctg*XXf_R@s8d5@-k$hV+UlKq5 zDE8&aqwXS}(heVk7g`wpWqByl%eClNyTUy?!ex0%hwd9KGKUjUV5_h|4h-U3)QxjQ z3F;>pG-fI>muXgSLNKs8tDM4D+Z5kVcfgXBR2f-zwV!^X$VINx!w+7+A=gAm zxWLut58JTHHy1z1tC{5o7lV;ut_m5;#3fs`_;!27Um79J37tnyo^)+ba|8fIREX}h$&pvoQ{O_#6wyrJF6IOzt7%hFLG~Vm(E4b^ z^fc8Yng!6MjuUaKPGuU%NmSf^%E8Fx7rr8{Ikr3|)$K3)2EzFv@C;~6W!jFY&WD{N zHY+UUwBtJ0hBYRq^};&4QT`^1;dyKs{5=4Xk{!s9=`o)W%#eRIB7P%BPnwG{%&XAp z?ftwPXQ9BVNd1*@3vdMH#L)C3)ANdLc+;Z0wD}(PCf_=N54Da6}X^? ze$)abYoJ;x%nF9*Gv|i=ciBRoM@aVJIPYWPMuD?`M;He}V9w1RN)z|D(8b~h$pcq< z<7Ty-8d8iEw}XY4Ww@uDvs_rmjU*n0J1H&nx<|q(=)8^&>j1Ohec0aDedZs#-E`K< zOF!d7H_Y$cf00W_2N$v-Ka>F7za>om^O4+t>cjo?Hvg(^ILZQO_zRn&5gYZ^&S)1xwL584y+HdLE6d50z zwhFFQ{JxU6ZHQv4nnS&_V%D*t$*^a|wA9+QmXaH?pj9==GA_K8gdkN7o~u~BlrG4w zvL+f@B_3y${%Hr1q%kaKu+f9j<-4t8yi2msprys~`PAn=khwGE7_C}?sxDcm<+JE5 zgO>~@EMrsY{jdoa)L)~$A>pw3Dr;5cZLFyBdVzC*sSgRnH1c}pZ3!S+REVc4aGvqW z=SG@?Y@KIm@aq&#p#J{ye-0f)>Lp2{7q!j%oDMP5{PE0N=5A7&X7aQv{*0W-ro>^n z&EoOcKOGc(a4q4x4a?wf(+npXYOVHnUU7x4ZS}36feAN zoDh9hcO$N-E->VcGyYUi0)OZ8ab+64^4$I^*o~aag#rJ<=xRyL2BDkg4`w+Jg0b0q z+;QCjEvlcfU?#sbxAdJ2M-<4JuWH%)_6;iMS|7c#YSb@yUOD`jh0ROM3ATnCgTrH$ z1}^Oy7PX$?kn9kPl^)GNPL{V^ybu}_LZ>Oi#55UaQMs+)xa!%h6`FuP9|07+u~mvY z0G>R6ENtuR)QQOwL}poKm<0wx+X^l!W3wJ)BS)G~`nZOH3MHP!VB9e;i4Xc5`EDmt zm#v>A=TC(vX|v-JtG5f8@^7LUqkQfu<&XOP(0{eH^MnX$kC)a;Y<(?p!IMXSGB}&C z2ZTiLYKNhqgL`|;vbE+vE4fJB_7{@6i#ECOfZ5@|9WSx*5ns>aTYyJ_)U8B5(5h|6hAWV_;SHFAu9{Z>$%fzQ9#Hi=7icTPPbqkH+$p+h8X18a} zw8;%<9Z0w?aH^T#D5UhbB(sv7MbG#AV(qM12eK(Z)3|nY72w%>i+o8s{u0-D6 z2JS<6ij`vH!TMTbF&GV=pSSQ`6AzU4fANbV-z36F2w=;cip-Gz-hYzf{A^t+lH&E( zD#VFk%v+M=l5U3|L6iW%fh0iIl3ZwX_Rs@l&aSH!o_S$B2%v(OO}cN0^c8#EXZXT3 z4sK^pPkax)o6eVgV#kTtoc|R`FUK;HOV{B6i965t*Uduy534Oqg@%HwTZTgrV zw^TdgmbR%lj3;&;bW-pJ@xImGA;xk{HZ;1MYz4)Iq+*3$Z4*K2dG96?PM2=6+yRaL zjvDhxQewQ7+1+CXeF#mV7bG1kkGax6^40Dyh&B4JlxWeCW%?&ZC3IH2YjYi@{lVX6 z3T)M~Ug|`Lbo6b}&<(LvdYJwg1FF@6?;M2wXAp1Tp&(AeX7YU7fq+LwXj;Ivpj6XA zRP8q{iT;1m>CxA+2gv_^UJ<n3?~;RHQpH(w?MkVTm8HW-Gv zT?97rW8Bd%xxs`lbiL|d2uDA^Z{zC5?j@A@(GKPb*7)oMZKa)LJ+DBbMu$5UNC`;q z`AF{`KIiWi^oWfXm_{h!v};rWlcGqTh6?z)dESWWf0^a-r8&a3ZAZ*}|L)@i8!r{0 z9;v73ccEM~k04f4hpQN!?=_1JV30`EnHk(De;R=#lTBtryHlFC-R`-9RiSec)4EZm zW6X{jKuC!6r+YzO*%_nf1#8zE#M(&k`#Ndt=6;UkyUYBf6asr`eE)q9({KVR04C0* zHP7RAE5;JqhTG2mFmy#T1L2$1;cIwogYNSy#bpS~6{hG%*Qba1hU3wc~+1umgXf z92;3k)`2vi6AO=b7XU(o^~uwLtcL+5pc3EQ3TiN`pBf%?7{o`e8ovLfXrKLxv=RTq zG8O#j`~L4#AnSij1^)BA|7TJ3uiCcbelvp4&!NxLSUnOcylS%sHoP<;vxnt+G&TD7 z$BdUXWTZF@0p#SDcuL}n?=>}qLXq%T!hUA=Mi#)u)wB0IP~H)D#vMezu(x`i&mA{I zCY5#HGpF=Eu&U#cb6TCoNO=CY2D8ct#694&6e?qYC-YNa)0+oL6iavT^Od+8Uazf= z7;)`^I@|&>ZS@Wq%InW0&&Y~t76^g*8}(vZ?GBe)X^GKX-EPy8DPjww@2fxE8$-VZ50!)6T5yZs>wkTZS+lGK zr=TCp7S;PDQ4x?~fvx{(l>d5M{^l|zIi;UEdV+v9L08W|K=^2()};*9G`=6>EvYrE zgKqM;AX^pu%O#>yb6Z3hpzK-E35I0+-1~`PY7y>Ui&G1_+{XRQtAtpgroM9s)*k^R z+RIaOKc0bisp=BuZP~Df%o6aMUUZLm4+abflxE%EC-lce(>KGOKI{3a5lmbs(vtgQ!a8Z|@b72ncgzGE$b|xV z(L2zt1P${r}J;kGZ>kIVK*%q*}AH(R-|pXJs#L=IS+UFdAG0YB-q z%-+`{z5VgHxo>?fDoY`Yb!88NExn&-hMu+%$Qv35>-{ypWZO}^2#g>q5H0ioP|(-& zNR&!Xc8(9b_t*4oLs>$S_2l>I3|f>mP55-ZD)75PR?C-%+mNGG52m9L~0l#k>0 zE0TOqexq)cyzQ{b7X75N@ENz(RH&;(h{&dbls4?q09Xyu^RK27qL!DJzz9^Pq^Cla zhTQn!vd>5Pj=|x_h#0_B%Bu4PK8JB8ye3*5&uTG))YBivr1B1`pW{0;%KlLF$jshj zOm5SfKm~bcoyK@{6lCWJg)aFbmgSD3i}(Hv)J7mq^<_yr$SF87nJTN%NE<}8svoT^ z9K~ut4h~38;0yd^O^Gq4r&Q8=kR)e&x0t8!H~IG{-Cf@=-g}Aw^_d2$!{!r6w*%0m zi5$OShM_#8AP((r&&y*_t9c6U9#B_YmgL!_fkN}#JCb(4Ofr6?XD$XL48F5?vc#TC z%DlZj>#=A7>+DJ%!g-*U)pjwU?emGIxF=Yq7L>2QERs^2?ZNLEyr^5`_O>~Hp5Ve6 z*&gazWD)2DAMbi-Bc4fZWl*~T3}N?G<9)I4(-w-!h; zHVde6F7?|U;}?EKS7$cdb0(afy;E{7EM%wPG@{s+&BGcB`jFnU$NgOH|b?9bV`ome1-qB?>xi=o!nO;HPt*6x-HLysoiRyd8W8) ze_bz}@!g(SkRvB!)s~ymL_vzbf0F}m64<1V95|=@GOsly1e4*jGFqh~Rg$vM7KOvB z;eC%Y{;>c>aQ@+~IiE37&3CR=1^slglAQT<5#%nZBxFceEj5dJwVf4|JqIo*+Vc)C zcOu$&OZwV8w(yQNZ|z}Y(1O%&s3Xbo+dY8b45>5D~9m3F#Yf5(Ru<5JX>d z9tgGt>P^tBpoh^0#w1uRjRU}`xoMa>|g%JuC}Fb*KLyWBQCD?P1#Y^Neq zCi0_Hs$N{*Iw+ZwhIOdIuX(gpiRjCFiLm6Xv4a`*6*&7DyNAN%=L3S+K&(qB^Ej&np$bYtRx_9VV%YBD3ru&{h{1Ue&p`=Q-< z*5*R!5Xiai!=I^*6Jf4vSosx9+Se+D8gu?iQZ%)1ET;OTd`1dZw4i(8l0)Rsd3eL7 z;`BFuF)waWCgTT?ft%SO_x=nri}^)eJh;s!SlmeBq3!zynG%(`vSkRfw+rg&9lLXZ z(|>u)zAA@tK|cj>YNm9&ZBd~7q_b_w+85(6mNy}&1oRGFccHI1+pixy+tem8C9|Yw zEJG+0{E0_Ys)G1&&ctqMN25I?2ZKEP_&-IAaAzHDtRG0b|KCb&GyUH!yMJah8_Cl# zYxMA;(+3nK93&NpC^1xzjlPXqW{Zc-Yk_q#27_*jp8d^#o;In-_yK{zFRX3JO@_9g z$JuGor`0J52DghFeFOPvpc;V{=)om86-i+N*}+kZcj*&jNNEXM)#*qY(7!-{$XGUf zLOl-@vbZUU3h34G6B^|=FvmiEoG^t8*`oseHG0v=oEhyE)PjD0`Xzu_&Wi31BaY_;z(8O%`AXc?rNb+&YB4z zIxjr${Ro$h7aVw4EZQHye^#LrckYyNKGrw=3-gYAYVi@6$H&hXq5o#Mw7pZuyn%(? zZ`eIeyFeM0s1kjRL?Iv29T1p#d}d6=%rJrAEMiTPyyPd9lh!dm(MEn?7DhpIX_qfW zLivZiY#Z-LObdsW1ib0a1Vd9ouXY)%)z(+>4$Xqcl>2+3Ub9x`Ud>#EYClkcM&*^B zCcFrSZR9bCRr96YaDP>Q*6D(1=2<%1P7mv@qBk?~FEsrCQ)BjDCFJ^T7CXwTH|A>* z?Utu+xj(sd+d9(*Z09}y*n8@IvMFZ>Hm!2{MS!& z8&g^{Cu^$(txt!2)`ahMuLzxXT0=6{$4`BA6ASM23)y6*^oZn+F3Dm=c!=;Y3O@k; z^)VBj{jI~Vw$L`RHj7_Hp5w4OBe{k!AW3K$WN-hA0v#rxx$JqdaxRyyO^dqK*iW;vhYgeAsLk zm-UY87$l66USi=!>SKfj={qp-3O3h63(ZCWzK^Zq-t^L1uOV(6L%%verU0Qf$=PIs^I$A3HAC4NU1ycr{hXIXwjf8gonv}jzqbTCFoEIwz>;C|485hU85?9P zq%{E|gYr21K0-62kEz^J!n=~ln5X(~Hflv^c!%5uXV`b-(|WWXZgLcftIeC`4?-|^ zyp&WeVqz>k41+A+0i>oXYD3I=+jZl0=n<&fK25GcC6@8V&w`SvoM^3DC9gom0sPtF z{w%G=JT}BM7gdbdvR9uDaa%8R$H!ZXkjzhOQsK~zDpg@KU-%dhpZ!D`c zZhZ^8$4VIzndbx<|9srIT(*nmqxU54%pyq6h*LKd_~!4>sG~C&CD_Xt;*b5|MFtC~ z6miL!^UMe+iKHgU03_7*ZvzcPy?2-V&Zc0MG57cWeOW{?iX44eRcJq_W9y!6N#j-? zpj%Ac4n)IGvIhXEETB-BuEIX>{k7~HizU$kpKa`3W%-tdfQz@~*l+OWH2tmgshG4OpcDt5@RGupt?ZqFMbmy z2?HlhCaSDkbZgtzngu0v4P{=9j~EHEdyBzMOf5Mkn=FQBoc-WwiP&>f{V)r#b64ieW zk%K3_z+y-?O&L@14@+|GNHQobbFCe}n2>L{cFi4%ly3L_NclF+p#Sd<53y5(4*k-)(w zCik-C4gRaR-Jn54VH&E;Lb^Vpt!BBJvssYG#%T)S;C3+oEfV0NJSU1=os8fqbplxnZZ$HO6Yz*?qBpw8GR>^8L7QH zk;=OL%x<0#7Zo*HFiMvBftrPuCS)Pmzz`X_r6qHo*WM@$$|@DNsP!It=8(_Av~^G; zZ6@UamRP33=7+@r)BXE=LJz&cG{Vh!()i|tHRg=LxzC@QWi1~jT%!3h!&g6$8Tj~#6kLI&7sSj z0-8c!Nv`sMh&bo;B~1kt;X6)YSZdk<2 z#BGG5tRzh;oY|fZuwMe5}3o-zS{{gNqo9J&VO_)Ug&5w79 zEXIY~Yw5~DwR{~w%`;TU97_RTC@_!x>|mmxP+iqo;xyG-AF(Js`6E<_zWNx7!x&6c zub7(VT*kc15MP%mT3kkpg)QD>CeoyFMqc@Y zVg)H+0`|2q+Br0t6^^Jyw6nCBl*l(HJBK7jB?f0Bec)P0@02lRUHT~s4h7W|yEVAz8~>)qiNmKp&@IZaeh z)^OWL`^%?}+2!ti;_~_og;g0WVlLfvpHYoT0)^(eYZQ{DK_wmZn21VwE^2z-AvmQq zCm&LdLIHCI1Bo-g-T`TsS4cD1B_zi`&IBwEVmT*U@vp)zgPrAZ-Tz_ioPtD&qANP{ z#ig5xsMCG>)ZS|=ZY5HHZLL2ye;VlI z6xuW&UigM=rLK4J!TxcH;(D!1*gxuEOHp-IqEgO;=O&}zloMTT8`RmGyu=Mi_|RW~ zP+!t>YhKPwqrshW3wGF%1^)D?$LEx^y~0J1l4H!Dv0pf4jV-ZfL?Pq>qAZFlF_TUC zetf{HE;}S1+S<`DF;i(%S#N1rBGlb-VLEF(7O}y4hU1_sqhR}Psvp4c@ErAmo2XO3 zP*!k!jmzeTkR8O)zv==D4J?Zu*T&^7wAtr%rf-ReTaOw1u%Bi?QTvrGZxyMkq8Dt9I9z9W{<|7fFK&qg>`#6dczW;qG(ehmHNmxtP zH6=S8gun9V4U${CXbCR5@G%@46Pxp*!aXP6i46N&AbG&4fN7Tj4~DQ@INU>eMwV2W z$G$N?VU~0mlUn2EL3EsxScS!qv*h_&N&Ur-(o`)uceD7|LHTn_;VSj?q?oe4sz56# z$4+1Uu?0t_=c$2(quf~oS90~)DKlU6@hjOqHxx2JHN6BYzgI>(cj|fs0@H-QW6NAk zNNXZDT`lo)cD4VTtaz*1RdD}N=`UgH>H=9kJXVJCBF1>$-lX~vp=%S8pwwdioT6&; zuy?3J^-D2ya^Au<3@WGk;!kgdTg49-0aMIiM@;yeikpybkmKz+z*~m(Ja)o%nIJR3 z`^G-NyJombhG(-%=JGow4)sxFx=fI>`|s&zs87AYDp}5YtsE=N$DtF}v&3zzczkgq zaw=;VYEj2!irV1RY}vE*8v9xD+&qR<875nNwFT?+Wy&}>7*cEJy;g7O|7r zi$lr4g_M1YWp+eb9BDQWVGIStG|=-OvSe1r!KKt_I5k`}M!cT9?O%N!wRR?WWe(JJ zf*6|;ln}x0zblCwrQhhjefm~3fT&-^JdTy zwyI`<&fI#en;GA6CH-&ajwPjR9yQ;JHJoR$DpR{~tDk;Z1|c)HmYj=6b2!q95-~5w zRh(y9(XG8)Kko%gn9td`)xOR50A-i_3@&_%X-g0|2o|!b3V>P(HwvKM$n*8j&0$%G z!lsk_m5te6!+&lplo5wTDZ z9CT=R(R0kIAq1X1uv09Km-%!U3ggF;+ADu&>)Zv{*YDzK_Tj3JD%}0<7$|T@`E=MJL3Hcy2N9n|aQ>FR1}^-U`ae@X|EOUNKAr(W$)ObVw*f@Q?$yS*n#H0?W(H8jBOHE&%+hi0jM z{NC7KRGisIZO4gi{q(mr)lb7;pxkpRoL=7^9`o4utElNanTnk|A>s$`hK`M(@BWI(B^znXlTx{o4yLdgUN-8>QgK3HVCdG(cCDg@pysr$2QQ4Ki40 zMX}-QM0hZ3-SNS%8@`B14H6lpwIw`Z#ldk5!Nf0SiZ5ATnnM+oRb)VGW4IRC9zRP9 zvlN^cA60J~%o5Wv#>?O#DKzv2m&apN0Y&SInyXzqCsOnYT697(`AJBUIW^^~B|^ye ze{I`@)3U*GZjk${%_IE4?2DzftXi{%(d2p6cPHa^8b)QwWw40~s2ODG0_C<&>o!=- zqNd2ktR+8qbN#3;tLZ#dDRGX6XRtF(B&Fm%*?wnde6+d z?kUU)xPbnAQ;lWmcWX(|IIwHw3Ra-%G%L8W1gEx`4P;Lv*b=MbF;T2YL5_{w@IYTy zE?qV0{M%93n7Va5YvZ1^TrMqgGi~;s^?)c#;G&Qs}d$>i*s??+_s~trgiA@CuR~8tH53l3ob%tq*MTG zpPZvE`rFIC5M6lbX2=AJly5-c7!LBY-|FO0)&*u*bsdP9B-IWjQuD|BtjG=~_d3S7 zW$W^9dsY;xEuNQeD+{`&+y07`P5a~PNNecQj_iqV{XhyVq#v%995jqD$17lWnmz-!xNVdyI_jaHk8@WpV&1Fve(UutjLQ+p zlCw(HPN?D^h|6c{h25P|lQ`>&AIr1;=#SC??8f6bu76F5-X%tyx!XID6Y+|kL058J z9nu-0NKY)&Vw|h`1{m;V0-#71MOzRonb zbdU*^A0@^y*P;U0zVO_JgedYxC^uD*?O@xlQV~Y?Pdby1al_#a`kzbulo5E{t~1=2 zHF|6ecOe~_7alt{wyis9AH~P#Ug(r}sZc8q`=-5qu}aq0m)!nuVbg5Z@_mGbVv+vz z?1gHMuM$+^;@YNuMhw7Yc-V*GyV$qpWgDmgT_l8IvEJXo?%wR$4=_deuJMs<)}~>) zgAag(VZlmsRua|r#B)IhS+*MZ0l-4Dai{&Heqr>(TtKA!9z?%&FIRY4=JXq70Oo0M z4rmq&HUq6-uQmu*sN^CHq$~@3IYDuSp3>Ie&`EawKID(IMn`X=S5Cm>oKf#oPnBJE z508L0uw2UV{bB=LNwQ0$L>MDI14zyG7r4_exHBSXY~Mi%?q{v%iA*lXODJaT&`Zq7 z23Oc6<1JN!Z&1*JHvwL!$U%tgdj9x%nNLk6a#1VsgF|91^Dll8lMe(O_43##cFf1# zReY2*g9@|tud)60cw|mpEgKa44hU-NEW9+n8#NNecIt3l0o9sm}%k~gQbv& zUE+U9M7GRFuEVs=I|?|NZes0cj8f>v#-p84T2u6g;vQCQQ#;j;)t|Easp{16VduCvyi<%`%px;OhU2SGPBG zS0Tcyru-`G?>3B@}bD4#}A;$!ja21YR!R;=FHe>B!sD65gNzBQJe=FiggypfY*)g?0D z!F$DC1<0`9Krl6A+oiLL&d_0UMXs&&xEJVzqOi4v^L{Oq!gCxo099-y4JK&LkB1E2?0R?%$OyL z&N~OX^n7=&8#cu_wMnPB20k&d93jjO67w*CeD*UuNMVwGV zPWM09Zl+`77Or0W(D9x=M$|@5Z+3LEdV~hH0dycHiB%Gru%AEdcDP2Rp zTd-eRQ=e*hpY52d^S)PkT~+obbaVfV_}pVcLNjFGum^LH=kE7HB-zK|8B)Mu^A!e{ z(H`(gfo%yBB!IyT!Mr>_OH=qK?DqQHYbu~1z9bf0so$pcDhRJZk4xT0bBpLa0(BKL zK#*?>Sjx^S!v}&tsQHcpezx1$b9>+*g#4pzk@A%|-S6etm$vAyR%LLAv)hKn7O_>< zTeyRKbD}0z0Nc^aa@ON4?SYsm(hMm?NTD;?(+VYW+?@m``a?wvnKr}H)y`|aiUpHA z=gdyO6OyPyB+w5uG7`;nelRQGBv1?{>nBlT@ssE^1bSZ&TJHN-NCbEwl3l#Y&~bN{ z9k%SROW3nrJ7!u?ZXaxB3!sYlRGBbC_P@?vUK7B!v!RFA8Pb#W`5zpyJE}{oLonjp za>h}NT zHLG3;4G}Su5U=*Kr7+x4z`pPy=Fqz^k64Qm-$sAm@*CAWr6yZ&kQK@|K&T+DlaH^L zE}IjK048F`NicGy?#m;RLo^Z_++yG1Lqu@nvz4spH~9@uGLx z1O4m@#E1#v&h2q$jrdCE7DhMvcoemzK%WU8*nP(5u@zR{E|=ZOdJZA6=a+r0pk7K$ z`v{-7QXJ(w3}x-eb$!w8;m8!YVqCazMPdS|_nd#Uu#+u3kv+4PIPDo~~fAk`-IAx`{aB94W(wkH;juCdh_h zHeY*=C2;!`F)OG6uSgTS9PVdU$NAw&T7X0+5#1*nMv+i_3MtpP`B|FeFW@C@rfefg zrj!|cj!xy+FA|*8a05ICd7I-@e0&2Vay#ahN}_%`h{TBSjDRk<05iYXIz< z+arB*4oX@_m}~2r3D>=Ue8!_!*lV<(F_JTmtZf;@N;VLuFUe+tCdCSp;V6?=%&wG3 zF@${kFW5LB&9ds57qJW&WGGKY&Fp6+hjQ1c8=vA8(RyEc;oKE_^%D?fP>q-!fjdyq zg+qRDM<3o}!dVaG#PrhP+0V%vH%z;Dzv z>^p9%G>w8#W+{~y&+o!aXajnrO<{q2!p^uUEKjrp@UF8WT*0s|*+XuA12Kc##B17lS zDqk!Mt$=6$W^YcP8)o$I&7FP-$&dav=dT;sVO!4$vS|ftC&D9t{R^= zhQeSx9g;#D3tAsYIH3ihIPa=1an(E@OkI2oGK$m;5npVbdTu<((N#blKsx2DHUWOd zl=!!N?*Bkxr(KUQy)GRH{*fclh?D317{ED60S;5H%KZ9wEkKE4GPs8K^UdWvQ#7B5 zG8MT9T08J{E(!l9eWBYgJSKn3&G(}O>CXRCY2`7e*Q5?#$@4+Z%&(BZaXN)pF7>^n z>Xi>CS>lFo;dpTXY7akwzt~p%Rk9aK{wqFMmjdNBiY76gJ`Cpu5lA+K0 z`PfaGjl0>xtoj^JoD5CahAd&kse{&2mPJ2*c1zATDvj3=vz6?-uP{4NJ0A&s;LOv& zL|<&dhy@RAYF+=_JZF|A6#6}g@;NL+<-eW@V^*SeSD=EJVr+L>u|Lt%ffA=-i#^l# z8eKrq^6n?lrgtHo(Nvr<`GOBwq1i|wgm5k4>zp}fuvEHPwhi~D$DF<=QmBvmSdgLOcUAeFJi@43N=A%3?SN&i$M&~tOm-Vb*x$@xL|Xe3U=V|xwj ziY*ZR9aWboMGGAgNLQ4NaH*b?IK_u~>F+#k0S|v{q=FuI?EU71IOLj&i5X6yEl3wA zSZ^=?yw-pd{P@8VLIE1xJsnG=!l>XRaF`hu%E%&@A8{68#wDBY#Rxpbygt{DIu9~7 zoCD~Ot^v6-S;>qsdxm0KE`9&%?#SsTUW*d@LxKH!af2IBd?*f{H%nl|~{jzCdHO zU_FyDeV$AcPr&Rm27qa*Q6ZW*#!Uc;=8*?|{@&30sLrV#?`*#qUYComjFoz1FeJ^U z+?5j4C`h5NUfT$5tQ-_=6=%jWY72AU3F@H`)LAL;Y#Fzg3tO(lQ<=b1xxiD2#9OJv zi_MJ8VNUKOU*g9;YNfB8ytT*!@nvkl!e+{F_j>Sg9seCEA|EVTAvGBY(c|zO*2CxX zbpDdH^Y~LzvkccEnGrixP%Tj(RDC?ZIC=T`kTX4vM5KnAj0x)T@8z!O3%a^-?=ggL z6(@T1buB8TV9xo~T2L3Z#A~Kxp$}bdmhCI>&B1LY(FXjh;j19w!}E!Ku_2quY^01M z;OQYaP%Ae%)Nhy#HoCD5@5XWZz%5bd#TypMF6$Jj7#KEYY$-#3IDEFjbXK+ht;|@X z$|0ux%TD*_Y^2~|pke^8=Zxy$((GU-2A8U}E$h>T-S53~>Z~o^vgX|Q`S(3J=XtcekFTl|<`9R#CmWix! zdd=oZ?u6Pf!(`Plg*DwVz*O6er@fO|s^EjXViuO)qV})jpO(Mb`E&ZW&@N9iP>BwHNO!kmYnQU0=IB#yI~xW*7!@zLd_%TXa`xLI(R_Ydr% z+9b~BOuCulEA^Ih;NG_9_Bky!t zhNQ(}TCE&!TpYoFnP%)&jM+0{L+j>oR)^k*zPSOtuH1Jxymg$+WH9nfFkM~6j2t*9 z6>kw1-?`h>WRIPMob!bFB}>Px_z0uGmhC(m6!|V#C>1~4?C4}|)c_NQ9U(qHYc}Ek zD_D1fNgK9d_&L3o+^1KzlL`USL1` zx8FFU`=|xoniAA`H+|0SNqqo8=nAjj)_$8_*kR)Qc_cCb%=%uuYOncV6&5FwBZ^_X z01c7Emq39iJv}!g?Ev}`BSljGnj=+uN%WG@H7}&Nz;uj@@H{>DK&XGfnluka@d#7n zR*3yL-1)w8;YSMx1(R*O{BsPEOdREB$c>uVS8mLYw)EMK*>e1&)RIx1QDEB=+#lFb zQ(&UT1~L0&SHp0qfZYy*rJi@2W5PzLDA)_rco&dR4;9@4g89goE5t?x#55ZpZ?q^e zEa>ddF{?0VxwuAC(Kc6asGul{GDPr|WXr+KC99+F8>|o|IxpvV#UH)dLj$c{lo|XTxU%Kez;e;}u*~s|J6k@jCJY}h2 zxj$jN-%1uJMw7o&zs=;VdUxEFE{!i;tebB_PyYDxo%8eI*ZdHI(op@1X$QGH4+B>5 z)bH!s>yFxIlwz#?P{HwN5p#%XGUOL`bV3}7QlnJ8r!&+6O&7VJ*Jt77mmXUKRJ=(P;0?s9d`h|un``@zEDRMdjHl=-@XfVvXp)un)v1 zHy_H#Cz1%5?LV{VGlQatEfc=%zaSjnOWljM`kMv!ZD9j%JZ$5qiS|nyl4HX8i_y=t z)vBoi_U74!PXHLM;fMP&4;gSlgO`d7TiZ_#%V4rAEW)0Ci}kRg9`ejV%zle}f(wjp z>bW+@9`cQ3tnT7^t8+0Z=$C;3vcBX5GU6jsfYDDNti49S8$m!>!aZs>LFUu{z8iie z_pzYxW5chq0tbQ0)0X;_1GArDi(%SNl(z_UveqkLDruYjVY@s+S-N0{&Q(#UFt`M* z1LLw;!I5M^Ke&R}mEDR$I{LWx&0z`w%ftJmFS_GbqQ#=~QVIgUei<&Okd0HcwpDvu z{L7(m4?$N02Rlpwrb4VPzf3LYX0}4YRj$i3&#+DJb(m5F{Yv5&U&8%z@h(ncfFxRh9OABe8Ytz%e2LQ2Jj1(=b-LTxV%h&Y5u;sphAokEff2MjQ4ASs zTzVX<&9F6WS$IORSxj91Y1X_K@e(@(x668#k{BMbgKNb{c|JptZflrz{$ zjH7S!u+}_}FAA(XW*o){okkw-&~7R8fW10nC1c%iHS=J?=|ycq?gI+Q(RKPR`%S+e z%UADP%Z^}c#9b6f+PwBqMvB$@9dp0J!4I%JrbawE+G{UGIw;_ zwO!{;InH4!DBPMAffY-dWp7tgrjAv=GCDt8ncKeAFl$wnd=0^32|n#@(pi>kvoV=~ zsizDmzNyb>pPPZAmzT_fy1%^I`8{kGBg{<*D-rmIQ%4S=ls;}(LQH>0f>HP+cXU2x zrCFXpQoPGM@$kEajt@&H$YmU6=oU^)3BVa1o;%BS|Gk6;=e@wnIeK%VTw%~v$%@3C zW70dz#GHuPaQG-6-QID+`njV{UNUwRHQGiOL0oe^*o*OcJ9%X8Pis9)9WjjiS6}HI zv{$qowAygRR$RSWR~4V;LP5vwr}auNO?WRiPns<;y73w9_|PF?FBisy2JeNt!-G*r zEeoXw-xIrO25nhVKH?72z6MAWs~8hqAj5142hSeX<|W-xzzN0d6c^u3jRYjOEZ}AvcPyZ8;bK~AXWhukB$ZKFZ#Aom!73`&XG>Z!J`Ln+00mh*lSY3g+_sC< zN_g99X6(^QdONu=;RPLTPe(FNF+s3KF$|ZRqY#s#Mvy+5tQTwEn*=UOx=__ZV6H}> zbBa-xvk_l`6dJFF3w_IX@2k^(s?NPqZ_wFx@H zD{dK^#BRQt^h!-@-g$MF^l7j{W*SCHy_XN2{|cy$s1KV~Z;x@Q4VrhQXL94yPOB;g zRCKCT97M{0!%05Lq(Bpg$0jU`KU)-tlVWldx&ld4C{r1Icvf|NmwEAM`le%D{IQD2 zOuNCaI09BwpA3($O}+ieCwPw-HYyO`oNBEKP@My}K1ch3p2NB;K@T1ORI9km98Ftt`kkpIr0ryf(nF>Al$T8gU1=c_xncz*r)At8X5Fhgt*Dhvk z-@RRpwf89ZsNg#yvQmTw7asY*P|icogQbd5r8&hl`p%_O5v# zH$+xzr=RJ!Iha(|MA8OMOsN{r74-%{q^g(Mj=>hh|MtmYlIM@<1KKii#~ueekKY-n zLOsh*%2cESH>J`^@H66&RCHt}odVv@)v`oMQISgf;>|fDum6(PU&^*kWn*WQt;HOG zvNoOSSk&g4VZ(d1_qCRgHE&NmCrrMt(Dw?=6ed4sd)TDf`U32wpKS{#z8N6K`55_b zpREAg3(%?ijUF(NwD-4iFK$c+F*QZL5rvJ5OtB>H=e zd-xk8j%cUqMElwb2srTm%@1B1-RTdrqwy-oK{hOEa3kRNQFVer<$X_{KGwlNLR8nK zGGLki5rcX+kI79Tg?B@KnQxJ40H=Cad$PDWilp#f&_+n}(wAvICJ}sFbRa40Y2HgJ z!B&VM4LrctCXgV)G|WSReRY3rJdW?O3As-Wx$y!1_*W=;_27?B4IUri-z8%u*!dR` zp}I4o*SGJe!eF#NeQ;og$=_=ah0)BA^))qVH;)Y@%;#EunID*cg|1Ve!$iR*ExKT( zopI@?5Q(-k?%}g{8HpAiV3VSyPyTjG_TeQ(s{FGp1?M*Tg@O2xtcRl-SR8_+G?=te zEED9J`b5!=mu8u7Dqx&Lo0A54UTCKwP8Z3!F-TvonIjKe0#P9+EK}lC&j}M2)(t-M zlpX>CG91s)DZXf|0a=-%U!K1tH(SNLF@T%p6ua(Eg&?_Pp&(KqAvV0Q z?S9<5avH0?vBieLFwIs-^FLv#0_1GhCl(EwHgMwf0}ufuL3P(!f&lPyWrp_{DL9_T zZ0b4Uyu5Qo(8c3Q#69)v+#3v#?-WUS)&wqar~ozb&_%L&`0E)4BjUtd9||R5=Oyh8 z8&)-hDEDVj zU~4)sVC`zYdNqGAO)ZN8T-epQ>Mdi?k2mOiB}$WfAg%nShsp(6(JAK;5FnLQvC%sM zgP(x`3JC4ZR~IwI%vr8oRq$oRYLG+|G*Jc)93VDa7Z3q54u_ zI$HdLv)xu7c%M7%I8Z@YHiW`>9_zxWTj${StWD;7SO*suWri!Qk0tJ<3}I^@E9Dw% z7j?%Y?<>h?&T(~gQ;%E9!KOj>BeaPkLx_k>_Gb{P?Wrwf8!PmuwPT<`UV#ssl#)X3S6Kv*YURzA{t@AyY_OsluPh1_{20) zSB7(nF)s#?Wgu9I&XlzP!Wo?x&&=z42B5U7?O2zSv0kI6B61;_a@;qtpWj^DWF?N*UTCsf~{6pOvuI!rtU02qHA9<)X=vk!7^9 zeN%ZtC&E)602{7?wlBk`PC!|~k`gkAcuV(b@#m9%eFmHNwYiqK2qItJS!2X`hKfoC z4m3OI7JA*;>zt`)xEE!3`bhD_rYBX|d1RK;A&a76_=<#+@P8qU-ZdN+XP3Cr0`hIJ z8Kl7bnWWQ{$#1yi&z{pf9QbKHct$sB%~U4NKNIZEG#RCwork=u(;Y>3YT~| z-zJ0kf~giJ($)}W^%F=vGc>ifv6*RWvIeHPK?m+i-g&cRR2^1@~9Az^Z3bNss-3RX7@&(js-Jt_aTszDnn35b2*ST zX<8#k9Fr7OE5fpTCKWFbELCp(7F`YM>Jqa(-4^S?fpfFf8rx#xT zQ7RV7hk(Ey>|082S%QrOH$96>^-;(jH@6wkr{JJK@J#0=V<~J&9jkI#CrcYk?uZew zX0NltZV`vKaVd-%#kYe_t7B!$yaI&NjH?pJbKes9VWU(I6q;#_Hk*c*85$&AHx(kC z(_!YHI=q~W-UTlJfki?Wx{nq2C}XDt^czlvY;c#yM{WnPGzKnIjOxvVsX>w6OAj6g zEpUdOun_;~ne?`Z!YleX5kM1Qt{Ik`#B6&y1#_Nr#|6u*4%^j__0K&A#F2|E(V2Aj zMa`9s6ls3r#utL2IKRI*nw=C^l<|XLGR{d<>DGq9c^Qe$8b{9#s54o}&b0)b!B(r- z9?k>4wcQ|2L(!c{xZW4K0k`VCZA9=2X$;Nxn!$w?LCNbWm zsh39fRJgOkYE+cdJ#>#_z{Fx#U2ia!jPeuA+NFd-nQ7nu25P(Ofx=chpwq5goy}oe zvtlLie&I_UuEnV^Oq(Z8(-}c8nT;v4`#=m0Ss;&Xhy_J8RfGpDV^JE0qI2UYzL&TD6HNYy%Ls)UdWqVg7jBi#T z_z>EheC-PZCq0B3LewlKiQ8zUQt`f2TH(|p)Rs7vnN@N1gHiOcfko7rMD%Jp z)R{)rR%bSYrPRt-z%|Bfa6`7Hox&4{00Jd`vj^oiy{N+*#gfcVR7q0MX1$1t#t}@K zH6-m1)R?Ak2V2QV<;zyT}4_-BYKp`i3Bjc1PIxg#Gq4<}}q1)Aqj$$sJY@mg5CBu7&th78f(^ zTVVy!!wX)Q-!E%O(5|(9OgnSc16rOM6%{Ywkc8)f2IprQ)*^7&WJ z1`1|VUtZIbZrOxR*VtyKbiqC}4@=b~Xe*_-)3*^`T;0j1;HCE`si+4|yS*VKmt=+8ql^ z!Qi(h4q=H`1WZ&%N{P6$_mw3dY?<)oj5X4hi025by@dQokWLEhFIz7eqOHqbFQH9S zUIQ>4FOdHf>pns&JOU(?Y~QlyGHBV6E^#xwC24kBht`)f8-1DhcKD0<5FnJ836B6E z7?IA3ymyWI^aZ6zPJtUW;j)}G?CRrWfl-yM#^vv$)ujY#Y8e##?*QBAg&-D4de@Qw z9g$6_$O@urK~OUL*#9(_yO^dsC{)m(uQsxtK+7~zuEM|3dvCYTSb8mlTCtV*VBmZj z#=uUy!EY+O9pf!O!~3^q{ry>m?ABK5>n{%ETB&QS%Cm6m_s$%;I{MBp&RPSJK1%+(w-KO;j;V&nw0N4o1d#_CaVh@ixXwxFOi_h{??M*z z%@(6fva;%+BnPCOj>C%b@7X2G_cR~p5vW$osJS`2kfj@Xbtn>Ph=?7gyk9ZJqE!bM zKUH9p8kJ5*qlp2C^_CFsH|jTsA)qW9A~RUQR!|WS!fZKs4pq{8((J%FSMi}eoowDy zurVIF5H;abw4e$*0+QYf+A_f90o-3Adyhrf@tm-dN|mrR4tluQJ}F&8IsH;5z4PgN z+`uO2=r$QA*{?BwL#t%WU}gb_CG)McacAtDxncS5GdvfJZ1BxJUbI3KG zjm6^f$QMVLcrthczMGpl{dgbk+|6@S>Djr@TfK|kvfyi&mC@_Z5{spRnh9l%fQ7?Z z<0uQv9rcvj*zQB#!SjcOT7YORL;E^&vT&uEyWC3oN8SOg{X5BELnoOOzfK>c<7Nqefai@Pn4N71T+FT+dHlgYHrXjtBCI9W~ zRsa{Rk+z;NWwRa7ROv7e&3hT3oQBbO-oZDMPKm?y0AEg@_UfoMTKWQ8Qmv>ZtzpEsqWVN{SBN53kqg8$h)TuXBLNJ&bo$IV z3+TQp?S0&GH*41Jy7*Yv@;qEdM>+oO8O3}{i2pvPyUqeDG)tzdt}Ttazaws@0%|_Q zwM!XLj#b*&ceZ$~NCCiV<0l(xJ7yt~Z~Y$wc4eI(RL13vIWSsxU@p_66CsM`K6CFPaL1kS znmRSR$fPiZR4^Gfq4tA0C-~<~f0EZJBZGs*YGqa`NovtpNwk{Cw1Y9)SQ;&ztRVHh z_!dX@6UqDgbGpzvx{%s*>{D9n>y~PE~9b%$Q z=B;xybM`OBN)2qWo8$t7`Ci}?D8gE^Ai^OI>bDJ6g6JZN3axF(v2^_2k;M>D^wi`> z1`oA4p@WuJ5-M;#CMlAKVZs;CsE1l#mpl>#eZw3%^w=_|)O!(^Yc$=87N8_-3qFmNG{)!}?*i!*SUyvT?q{4KAho+<63 zSk&Zm`{~(SEkW!P`7;aVPOAcDYBYx|5VMZ30u{y@>=^)3;c5f|a6VFT_zvPWy$(Pv zh6G)6IMbfPg05muQ@|HOi+mw=GmWZAp048Pk1_kAEBpAPFR~Q2uzbPzF{GsHbLr4z z@%+Mk)}O*u+5GNT(c}#jgOr1D4H%VC(yHPH9fQ(q(uAFZR2}r$6`oG5eAE<@diqB* zQ}6I|csfM&_=X@mFY+}jLVVo}LH(3b)bpjjjQ`}IAgRtbVGI48%T&Bw(}E`-kDIRV z8&%7tkuLT4*$aa)>`IqEDTPu!--z!P~>2z90@a+*d!q{sO&zdV?Zs>pPg^#(kOy93U~Vj(Jgmr&v+W9 zEv35avDbL|e0@34vrPZ-u~+Db=pcwe0A&o(#)JpeCBZL}AWPho4mU(H zT#>nN_a1nh!7*ui%F9=ALZl8ZtFXbPc&{kA8`R7zySk9fSlt)q2EKR=?8lTc_3oYh zGBzFjm=`}2FFJ8-N+2d11AV`>r1dpG+htem!iREf1xFvz-;sdBS>Gabnl?%c>&A8A94cLJYwNl;YwdKhwMH3--~6aSdKCAc z`_~2|*XQDxMj3tElr4@gks3_1AU|e{78+XvQddyE{5g(}vuGPcut0%U9=82Jaw)c) zT8NPg5Y}h@jIi2W56Q7b8-}t7JiUkFY)S@!ysvwSKRz(j4tNHaqgunYTkbu-k#(}X z^l-e4jcsPOhIe@hT~iN^+#gOZ-A2Qnqn-sm=}kG;<`+z6OvZ*eU%9keB-g{)NHGQ; zpZs1dxU>CA5IcDb-f*~&I>!vMmPi`quiS8UpMBlSN&64J(YT-Oi^G)35ZaVC2nvbG z!XIg9S5?TXqkI@Ns>JhDrh$dra=h4EVzi0Pb9viPmhU{)GC-r?DL}&>wkO^Cm6%IQVSNY2>iKHZTbUl7lh> zTr{;xzPW{W$z-1MeCW?61}W)N;=tKj``{jZ7rT^VvCN2Yp)?d02=Ew-CFk6vSKocP z=KUt>83&A!+y#BT0!_5F^8~@IU+cJr+oGyx>OoeLjBl**6}PxNy@j%wi~S-|SZ+Mi zUpcJ5Hg9HHOAv=x_P4b~@(zj}ay?7s5_AV}^&1@2F2tO$ zr2P?-uMxNr2QxdJfJ>q!oJ;FV#h9;Q=I!bky5&6tifcbpW*pmj;S$1Ke6nksZm-Fi zemW3-ni8A;iq^=xNsz86FCke1=ybNt6<4S-tcd~MHE9NZSbL~1FwHZ7g_uH?IsfPf zP&ga91%6pAbPQ!=^o%pF^*a2NAOuEijOu8#9WS3cQmk3qNs#9LT#q6tGKKt#M7@}t zGy-M{z7wN}&;6cC#HXnzoEN;1-o3WU*i8KV{5~)0{bXlG&OQ0n_~>Rl>|ml2!9Oj)&xkZtB;PlEUJA%BPut9@FEZssm1*z zQoi2$o8B~fg>IA2bB^kfM%!eQ&!co@LsNVUl;mh`2`xkFx;@QT?Hj9!qfvzl`k%k@KEt{i{rA@0*I6Etve^$*&)V7Pn;7}W)9Tr%6!T#=92XHS9#lCg1P6A(Xv_w znSx5+0oNDLgcZ$@xqW#nzi;+joE*%b2z)*8=>oCFMk;+q;lO9PomKW}hegZ6{+y%V zpjcBwHE>mwZU_yWoN`SfQcuz_!j+xd<~=M^zo>~9pq&Ow3+q;hl_$<;pQmP@XJUUh zl?UG+k10C)z=h6mHSch?hpOl#Rg_bwYG^smvd1Xvu;T zqa_^xHm9|a0aNT1j-%6lTLLerZHhFgLkh99USHy65nJPh-Fc;>8Or?M)eXzUmx%Lg zy>^)xWnM|AkyrKaMwwgEnGoTy?1!R(!!mA3Crb)8TZ~oMGJmgCkkELAmvtF?L(y?S zN7u0i|9E|Qdi62U5__Tj4-14$Di`^ARw;mmq(-K_r#40xImG5wJw%4hLyXO1Wcigf zs?#Hp%J0+t@L-MS=wK}+87>E`ki8@NgK3*By_yffn?mAe|MvXqqe5!L1vcoC{JsI| z@!#~ZWWG{B+B^0iXSDh2&oMIaO{Yg4#A@89X!e`Z={1oNXJs(X@}^albVn;^#31_L z$1ff9pF_g$U|qn=S-06$qJGUAt%DZcz=PJu`K5cNqqu~nqm9x>&{sZ*}gXZiH#mQ<*Ky`TH94+@oK*tMFrwpbF z45<(9%Lx!c&c6_?RZvhh_fR$G&b^M=Lvg}r`jVS4E-&VGt;wQl7FsnI@oo59KiKDd zK=M{9#jBWE+?+P59ZoORmQ~JkH$axHPWirD0%Gj==3dOB)imG4L#$*JO*}a-@fY30 zt9X~sVw#~m5SdztQdHftV}yV`Pl zG_y3_UCn*gIYK{M9SFDp5&~4bnjy;+&Wpyttxn?=l$KU6Q_I&G6>Zrw8LVsT zJlpF$)s)mzb1XJR7@eh+&c*e`lt%y}ESS#IcQn48!@7T1K*lXMuFaAy7G2;GU;}+ z;#&pHuRF;QT{ zWBpl%3ybqsY{qrYZQPch%4dr_PL9D4E|_H%dEHofGj3qxXL#CLIqSIQfal(xBDlF|e^2dHtX2F%>vG4u zfzNYebzv(nM{y*mRDOCZ(YCXg8*_PG(1w&g$(5?QWdkY6p`XUW8UOy;&R@AV8 zLwK3%;cQv%%Q)tFy@-XO(%XDX5TI~;DPs#A^8qINqOVkh{YnCmF_lyuU$d&2b&;(; zHd;Fkcpjn9w4HYJdo+2~GwNAB!(7C~KZ|N9m4*ejLtvA_eVmVYxO@3KV)_XX_7&IK zS6%7RiPnFW@sk{LX=hHd=Nr937}>u6>maZptJ-Pm2pIzza(NbM-Caw6gX_lj^$?)e zvS;RBY%oiwu)uKXd2;m9`;Gl!yow0X6*O*qJDkqzq6&9nR%qVa#n~ZwWem? z7Shs3`p#51o9pkxnqv&NmPuPqGaL6fK_&k4+tQuS;7Dj3wQaSBU7}NXEgjjWefRpe z(6s0i_QG24kQq5wT1n4IIp2GPtpS_c!vL+s{m+RUJ{((qZ1rYMe7Js2ShIPMj+lXMLulG%2M!#Dbk=$R_7G0`H;% zblXp*QzZf?a>KfZ4aItjc?7PC9Y8Ua8#2zDvk|v8RjKOl_ZAbM5J(7p?qK^LvIKf5 zcD@eUr$={n%dn;dyDup?>u%o%sA$KS(UhG*;dyxfT&%p;s8>7J`7PDOyyCa%wTc{! z?&BniZ*jdjz4Olo{~%fH-cGB7RNJOeee#VrtV#+7W*-kmdHfcM4u%cv#Neo7ro3jQe{(X#9#A8Kg-c62I|xJoyGeYAY|oZI`LD zUEJTJ<0wqyud88m-gO`L5k|lm$F1_p%)QZH!iVGFl(P)`HV1)${QO&Gb;_S7=)kMp zLx^+uy*y`|K}k?mA%B|0?u*v-U;+;yN#2L%-O9ZFF94Cq)uGfn>w}? z8HBxMjI}v9D$SvZJq!D0B62|Mm?h-QDlfR}3?$e{$hXblpU zI|EI#6=)&{7Y((bGq&W{Wu!TCNYKG^(t98CG58Z%c`N;C`p-P&wQfJGqtDup;B<-< z^WqZ%{Q{9tsC?SA;%X-WKUr6_k#EbVoxb3`hWwj6BiNhb6ILpfDXsFgDf-76ZZ2p( z$_!M8>6EVT%ZPYh!}k?(z5mW+(!vx6nNN$uQh z6(^kMrY;6~rVPCF9i6Jg3AlXVP;dZb6s1_hDO0MyZ!icJFDn;o8zrpeqCO8G$%!ds z#$380YOgW%y4`0*3+S>^RR<%g>`a?NuxXbqq>Z?kao=^wiTm(@)In(}VvAGZeLu|; zd~Ytfp2^$N+rIj?GRHlmt5ITzSP;mUv0Wq!9ksL+Y0_2*OSd)wSDXOdFtQ7J7~`=h z0-=6AUO5waHSIO(UMq@om^3-(&+f8}yL!lhTq4Hggm#-7Mfd&d#8@9cv7-S7GHNu? z`4W$*W9hmv8106w;R<`cEhJ#9_1&e^UsUUIY+!)kvKhvM{#5p2nRKG1vj=2+`Imj8 z!ntH&@S<#1?_Quh|MPNS|4mOAJM)kYOT*Q9(^+OS*|n<7W^vwTk@{19#g<`EQhhN+ zvpup?(X8@{f%c@`L|B5EixaIe$?;CpM8hBf07?U(0Vd3prJ=OhO41<6NyOjg$oG62 z2Ca;^lGK}vXix^ZdDXkQ=HJCd%+0uL>IB~vT|;cH{#?y%bB<1caEmA{-94%Ni8y%gFk!h8kH zw)Q5m<3_s}Ujb-&0^#tNSO#CKwII{S&BNg5&1h87EON3lqT=o6G38klpL6;YN(F&S z`CkQBlCXw|s{|w1NFEEs9aAFU9~b|hND2kiHS1;f1_yR`aks?tQt>hz^XrMSt_vv5 zPKyh{rH~8)f)Mvas8#@{f_DG~ATEK(BEHn4w#Jhm0ZARS9@RV;lFG%{!&Aw4>g{2U zkah9RtETW~=Jm9+e&27->dlW8>lXHYZ>X2|P&e;|hx{b=H>NtQH&3E#<;x&)hr#@< zrNw>5QOcL-=!2y^e^zOAR{QTa`bOW_M>b!vwbj!>vR#a>Gi#SKT$eM<)x!I)YjfB2 ziRF22a5L~yc4*cIr6mt`GY<;&@l*nl5Pu>{lTLZ!;;MmGNO zbQ3G@?1srArRt(jG55G$_h7d}!EyV+yemi%1Dt;u5Rmn}P^=j z-Xq8ad#5G;y!LYajB>>EHXgJ<j6o&K!h;Ins5R8GuS zs!fZNm#9P^UYUoslczfkDy)`HK1CyQ+gN!EwUoRL$8_@}KI=L8Z4>%R?l-Zeq2-bZ zO-KChbfeDNelHdJ>`C*{6HIRreBT)p+b-u?aELomX2uJxkCX&$?n%>;`*&VSu0piw zTAz3>j5zsrGJD^DH~iS&)N|@-3xkO)l#H&5(`1dV9LaD3B3)>;P)>;$W*QJ~et`4??J5$&58qrF_tSP0T zkcoa?J!a}M%dp$MdaRC2mF9wtns;EY=jUKyYjlp-c{pGH>G)>&R-Lt*>g^@h_Vj@r z8r}6c&L=MakKtls*tH5OdNxoxgz?u~sYJ$GF{7&lpvhqd-m|Sln{GbHIwfJ+;Y)+Cz zhWq0`@tomBSvB{3-d(8DFi7kY1X_#qH@~~Hdfy+cKi(5$yQ?XeC->Vxo*1gL3x_%2 zDelfJFJi6D%hNcEq)QFa@S)!JsoZ#q!q{wYTNOAiX4{@W$H{ltxF7%9<;NJ-Qt1@c zk;>?~AU63Ym+;m*)s&Yu-}39W3AaDZn52T_ z)!FZ8|1$QoAh3~>vd?6VHjgu=HR`f4&-pV%S^d#sj#O|V%2B{C65{g#_7rLg{^4FonXQHR<=t zXYM>Wa$==Q?Wa~|IBpTDMi;z_JnDpN_~$dt8~BsjSbca4-m`5G z^th*s^09?Ay_u37u^g%#D?W>NdCfu$Vlw8wO3IKUO1RD8JCCvl%D9?!Gfho7fDo1pnfpYvGRjo(`sjnd{%!e(r%u?U*_^W#Aa~=;1J6;=vccrW zMwwGRSmmiODM*OBaX4yzt!upFL7 zm^PGjY;t)!A>oBXO8Wp2g@1TexezP_@dTumKg-dB4k)o+S_nkPfSY4}f|JVI5QK4# zeg3|-52D#VydZd)aahm_kys9@!)}JqWAUay93|6Kp{YURB_yzcu@2>&!ka}4(`T>z zk7BqG{D@RpvZ`=+1Sm^6BkP24pAEuI4d5Rairq%{GLsXH(2i)qlu6MXYTzH zA~p0oB@~+5P8EL=Z22Bsq{s*$-JHleFrBW@ndaMs*jey8b?r1*Ge53xt}3zlvQH?W zzg4QQpXz%)i&_!BCMbZ^AO3r@XgiEch4z`|8$>&gE%a*iDbu+rOBA1@3mc+eGatWY zZ;w|1Iq;WXOAtWgp@HQg=ZXS+>TU`zv`}U8T%neKW-a+=nSlRs{{j?m0H6c^GC$ws zw7o+?cCh~}QN_JW|6`Q;^W>X?KxZas9^g`avJFVz7iS2~EEeCHx_{$c48&=}7d6Rf zosDI$=oeQ?w?f0DGyj^>&vw(kFC31q;su}^=HZ#MUmRI0XXa?d2Bt^G;E-Qhaegsg z+t|dWetbrq!yKxpxTByPCH+cfdZ7lWUj#*eW9!Pi#UzpB*&`#(w_v|Q*6DKL1kL#c zvMNP`)=<8R-^WPqr~~Q2-~}C`P7Bijh;>*8Yj~hGd6NEc#5xmL$d}_8`ahl&?gN27 zB`h`Quv9?tcw_R4RTl+?5tZ%-6W>MY9I_GdytnGYC3_ zQ`4%7`o)1qQWaslQo3E3?lN{}vRI~B>LgGhG?0AC7U-vlprV>;^qanCu}>~#OBGw6 zbjJ>tE@THrUYl&V>^jbo9A*Y$Yvt?g-+9ts=gMuX11pcsD@Pg8e2Yv#mWOwikdWn{ z&?Lzo>hw`$!e7G6@e&RcBd`B)%kb~hoI4uMp+W42HaapnH;}t#P}gcW@&ubftq+wf$|sR?LEZMg&F%S z?Xb@3SNI;2@#)C*tf9W*;Wyi1q9oB%UnMgBZTnBVT8t&tjqg@#04u>!W#qXwtP!jY zWR|db!IA{#wU1gJ=9pUr%AQX?2|%gyr`s|aQ#hgI?19P0}z71Q@r`Y@I!Z~ zF+2S6LZNnaKJBHS{V1lovQgO>m4D0z;sZKD(r~;?FUZ>KxW~oZ6n>r6SOyqL!Q!kq zAO?XWM@og)gW;!Uv3dfX9mLP9`AU>l%v@ib-Xua;A|#^~-0k-s5yR_d;0^ZcU#eK* z0*GH~b(W!GrmS~a42XeCQ{`(apeO}`cFocxW$nMU;pgw8TXc}ZfK2i!%G7do9n@8r z@*X9DD}0^yPg7@$;|@Vc*WFh6w;t}v4I1AXJlw7aN8+xrw9j@=!pV7Z(H~kOH7#f8 z?J8ywwZR(Y2_J7Z!c?CPIJK!SCN;qu!8p9EgYL}bzN~V~X?o#qO8?+C;6ECpBo@Vg ztYVjvOwo5Y6JHKGONrDZVq9eIvb+2KHIT4OX_8<4s%^@&RT4rh3A%E%LQQ+ZYDUsP zdZD(YI$n;4QZZ8o1@K|A_<0A24S+G&Fl6^_KbBy$#*+T>97J0v)D|v9P{}$=*VV*3 zmDcOkIYYQDma(tNfstF&*HExgwtn?u`vqGFf)4;#E+0)T-yifTkx?n5WxCiwvVeta zy2g%xEx8c!#iWmkr+mB{(>NE&?KOX`B90WX%VN}YxvUp~kffQaYukd_cblM7so4}- zb)b`rKAT_NgOQbF<#MC)|NUgl8h`j@U@3Khg}n`6HCtsbil|r64EMB3PI_kOGe~AZivAj*oAP?P znw_voQ^)zR$?9mtH2Uz+X=oG2#c6}{#~jJv`$r-9R?{a|N!$IB7=65cZlS@kjDhW^ z3i#GGbu`mFj1=I`yQYR~#b<|}N{hJ5ltW$JUFO=1*;y{L+}Ur_llK1 zv8#&Z8Sal>!sP_-dMSW6DD!5AmBdf^-$rHAW19*q&QWeopUt8;W^#>rO$PlETc6F? z8^UNhvSc?4#ww+-1r2kB?Z-|hEJJx5`OMsg+Ui$p!7XWq5SfRI1Q@_b90wiU6cc%V zgl1IC{#pDj1&52W8MHHllG}jdQZfy<rc%7C?)dW-Qp^Z)R7+fj`>LuI5Bi0kytX!XewM4WSV>mLp>^dojb>Sb^P2 z+gtDTw)tbfw->BvD^V-lk91JzzA~RJQ4;Sb|cq7^G`eRaUk@OaK} z>}ep~27?W07hUK;)pCmLC^IoaO*|IRy%i)JuF}?dykPXy-E9pXo9%Jn{5s*yc(l z(i-fTg6I+U{mQfdyZ(Mt22ccf>{9-cqTZG!1z$T5eK&se!K=;uA_>q^Nm~Qb(#?r9 z2R`BGF=ur#TO};{yg^!^E!1a@l4XmXUh}_o9zRP)dFwHcz7m2*c;n;ry|2Fg!80C3 zR@NN7qhTy!CIAwKMs|HnJV`w^UT0>u4x4DnW$hSCp*~N}bOVJRou()N>LL7qkuD-N zaC+5G>j2SN;Y#6uK}n2^G8oJbr5^@G4XES&QH;*4bPZ1Q<3{nZUgN$gPyvP!5YtL; zPB~v@?p<_rvJbH`0AXz_{0@YL!Cu58l=?ptn4;|||C{*oFXV-zlvGYHP3@k|XOxX) zS6L4F9is$?1OXM%+IM)td~$Iv=KQlauEIRt^&b-vkeGfTbN97xvp6t)dz)vp7tLc> zKAdUtX7~5qgPD1z#>A&;VYl>wZ9j_pygsndo(8AHWQ^SH6;VxHgy)Nkc(m=TQHKRE60e@O)40=+XOc!TwJx5iHlxi0p*qUy&JRe3Ig%a>oQc+N2)+J<`gj^ zTIJG}1bwQyi>MQs-1Ps8bRK5Nxyx)ZA)O~}@VQRfuRNeKR!6Gejul|U6Q8)`lQ-dZ z3IW!1-{Im+3TR*afTlTP9ksn7bhxlSqu0=OZD<+CT59^K1~F*OiQ%ut>-9oS$+3V- zblwG9oe4s!SZ_tRk>B}r%3EF6Q>wqp-z>y->adkB#L^Ckq5Z8~3pZYp>O5wLyXL>$ z;p6`AuTO)vIxrOnz1Um`Yw5H9Zj6*C1^AiWX0VKADv^+5sPG3Z^vay(R3fr2SS$4@ zX}^KmWd>V_@wo;xwlV1k3kAAqW#n?8l5q@6y<=`niS_|?MY8;V{_&xJAaqWi@@X}D zp0*K~yptToW|M3hAgr~}i0g0jaVUj^v9z`+1n}4~x;;1L%0QCVFxiQ^*or4ErDSrl zv3w-;%$>LdT1y+_6K?M5t9DVm(ha>Gn19L~!^9ZF!S~${c+LK!0{Po!J)BX!^ zwwVi|Nh>0^ruUtI%v8w{$ViSHGvCTSEw+uZt7$OeLJ0p?`@0Q2^k`Mj3X64W*^k4p zKFe|8jbyE3L8aR(c<{hu)D`v*bqBnOIInt{ii=|JOjchrKs)LPAWV#I0!SCaw906$ z^oJkyDiRI=0LdBW@rx7{FBHBOkb=+PCjD(B`1%z+D2Z#9wJ3=s?3+fXp`bAusiELd zq?q)9)}yZm!xnFv418JrAnXAUV%IP1+$GV+dPn=sVv%YW1#cxt|9=_t?yvHsR~RK( zHBUPca!G{kc?mF-43~be62L zkL^0C#16N*|KF8|5R6grLIlBo-gU(?9SSmPxO7>zpptcpvcqN4lh2zEESl&B_%XVy zx8x9)195vO1NYI9^${K3g=js1c@UDmHsdk&us>zq(le;zl-L)M`7yS2!4 zJrp_#`J&;#?FTR1=wFf>Xr_?Z6ArFyb0-OGBmcI*LXSYH{}MqJW85{QD&N_B_O7tW zM#IHk3pHv1H&Y+nsucUpZam$F+!6+r_ynV8I5ael#u*2z?ca!_7(Tnxo&0&iEklL7 z`bm_Rj5#%He4wd`mm`T>pEC|wu#O3!4(YZ@Kfasd$vpf;X03`S$0r=pJhA}8rI|vp z#7%i$Am3rtezyQ|9W0(i!|&f==icnm_LGnw`JpWK9?W<;z)GJt&SeX+72e7m0_Pq~ zt;NG9leBI0I9ECokPk~DL{f6Px^3h^vru8m#^Plc^b;(1QIz>#G60c`i_+l6=Gq5H zvv6n#TE;%lCTZOq!VeHzDiu&2)Q-gO7w{1Eg-zx7xw3Yog?!XDm6H8Sm z^0f3LgdLUoK>%~2o$!)&mrgpY;hsfRx(#=bNudTdPvRb~QI4TEd8pJ#sJJQ9%cCQ! z2pQkCGOGvDv0Go*JB%2^>8d)|k6V-<&t=@0%ov7IzE5r;cE-SN z8yKETzw(1cqSxx5g6UJ@y!(q+Ag5gir>}z=;pk!KDGwx+a~s6h7v0h_i@1H~R~M;q z-@v`3pRc$d6XvdvHXdhJF(8v2^Iv#ds#GTS)M1C2o6NUbGxa)L!c=CDL#{?#MXtxu z`PmBFP@7W_w!p|*v0PGcC)uD1FhaT@@LC$KZSpDPV`ALQt7)I)(= zKrL(?XwgpPYq*b@J?D1{C2F~^hrf80@;GjeCdDtY`wNmVN4&2v`nMK5+u5%w``GXV zb)75WS_{l2Z78GtANXccUGplNMnWy{BXRdB3YrOikQp;}q}}UeZOuaQNj(H+vEla! zpXY?kkdlkM=AK_DZ4X^Zjf~~m#OaaW33fMD;AA~c2h?C^B7yw}HA?Y6?T0S7_l)@W z&?)PiKoLB?{XU~tn{-zRd@K=sYnCcKAu72((!n|f z5ko!l(2Vq?Mu${!fNe(IODR1?NJao+1j?0VKPd?DJtctk280Az+C&%Yjg;6d{)_|u zceM4cjv0PsSKA-8wHX&=!;@mmmqZy!j-{FgPCsr;C<{Az;JqyF zkxl9d`~!QmJT5}s<-9WU$4gGJ~FUVS|%<4=CR9w5lLz}ojH9BFdta8 z#SUGPBF<}UdPQOM3mHC~7FoBp8gD$;%Y6R_o73QOCO)*e;_L;cDhwMy<12zhR=_$w z{Et4tz)q;L+h$jH^6dNP%10{>uPx=L=|o8$-IB)&)(Ykm_?eI+%PRUE>&qI+z9zu64XDJG3=yYxNMq0aXLM@dL1Du9z>bcofmt zF%O-4g=J$`W!LefC8{w&Y1NqUgWK5Ppzs44HYtW72B<5KR3Z3LlYO_Dn>i zv?fbVa2#iuMBu_|C&RD$BK;9;)aw>8KZq_nX1mlnn-5xZxkK31N{57u~6@5S;3cO1E$`dIkPP(CP9bSDoCtnix2(TzNIw z@APo_%!rRqRZ~;Xcn{KQrybfPw>WI3g5 zwK9tBy{%r_LtBi4RKnXo0+Wm%WI-EPx+P^}LD8k6Rk3c_GM_CRS#NCW&lqfY_saB%`PTj6w zoFt=av3_EmNyD5XyrBkU_%4=KEsHH12L}rzNaU5NoUT`EOd8HDqTd1Hl60IH_oGjF z(J70C>?KTw8pRfHIQOxUJ<*1t3Hst2;Bpj9AN)I9Q~Lv2Y9;hCpoE{eRV|)A9vYo0 zK0?^A(5_^CQqJORscO`!H6FiIlO(Dp>iZl>Vz>%u?a}5WEVAwEWT;>bG2cX3-z=iD$cYL5|i3_mq*K*`+WbM3Mm%vaqf=AqtNM`b;k%#DmRo zSP$DPf6=Q;A)TU5U-VsFO5cHU5Y6HJ6A6Rnfg^U_jVF%g5P|o z{eJmvgTF_|0+SWEc#CRFDzxl|p`&QzU;djjM1+!dbXJA{;sfO5QMeLEI=g{B8aE7O zVSy~<^%!rN<*KQPAd>;3HJUIa)KPUOG2LkI9u4-LW7t(-y!e%h9Sc#S6o-yy_w6RD z$;qdhN`{`W(hXm@(jDdLK__&Go@cJ#=RL9pzXvd65AggO;D50*LNv{zw^e#-;Mq0t z8>{=EShlQ@i=g-qP!U`yVoYvQi#*m)`4Ibw8qtj8t$GyeFL=Hs7qtR&*l5dahFkQ|3p4Ih-ivb2Vl zRi>Xy>!0wm{92AmUoWt((g@cC_x@0dYGLUD4#W!xCZ&!>77nzTlR8L8nG>>^K-#O1 zlPm+NCDr0iSX{eTs_Unoa#=k5bT+}^ry#_g)xcgar95IfBOO^}p&8+=gdb80>d^c=U;Va z)#=-5-E6lxm}^s3#qDIJzp3QRZ5GN#FE5Oov`|X@u!Bl2VrF*{>S$=%4_^=5h}f{l zNXr?~z;gvM+X+>wX|Y zjgUBXnru0Khy>L~D&qu?GOLOV5i{k(aq$wOAI_eelA>suke$ZPQCn^%npG9mij7)b z2!0`G;sG)lw22`Fq=v{BL0RcUT1-z}TrOr7ZiV@jYD%ut0KwN%DDiB@K}n8n`=s{dQH zfeUY46q{kYD31Xvjq{01Nn!-Xo1md-ArTviv2IvX{4HT!sMqR z$-8D@18M|XxR(JSs^^qBC40Uwuoyn2|M`7=JH~BJ{A|$%Y?9qt4zk1me(|RUyoax_ zf|)b@O`mKX2z8z~*=! zh|msK3w#P(15?STB~VIBXN)94AQ|zf-X^mx=@H&3khSBNn+=~VEIGE!Gv6C% z^(cTnj0(H}F*M(3W>Tp?@30aCa+RR`yT!`C3=!WDUYUw(WGUxryC&;7XaR+ksq8;( zv$%%AE=X_I=M=srD#-)sltu}rz*G#QBwY(Z%9oX(>x#CkydOO|F_T4-wTdPPBi$3o zj(`NYirTd_WPx=LPVT5ekDR?C`+UnVbz4$6?84uvS?f0+`XE~7Fib`Tgi4Gdblm^G zZ?=A@%d<|WWh^H`8;Qa^Zd4xE(HkvvA#9bcUsR4UeQsN0{ zL%xtnHYxfOZNqx5AmxuWp0l_Hke*yyWJ{=UQjQl7%BM49V(6r%4?F)b59C+*(?wEU zIbeE5)dC_M1SFYLzKR#D=zy~h5rE2RlWF?*_nT34LSW4+(?fBwM9_5QSkArkb$5cEFWnce;@4z3dP zek7CXgs|g{EmexVthm2DeCm0<#gLu*qz z@l$sE)A_aQ9Fw2v$)&cTOSf$G;357`k6mc#r-n7I;m$@S*1?q*oHDEr>!0J>%N;P_ z!<`Urm#3Z2+wJY7|9by>-!9Z{a@Q@iZ_Kh}naN7jp7ZOapCh!7pqH!L&;E0db`Wx~ z&1^N=41Px?4s$vBhNl^k@16Rx)eCe7=gArauJC(RP%0nEb8Cop;(MC|nFG<4Zs1JV zs}jyk9}XE+34uY^={^RTN`#;FK7zT8c)y2hj~JJLCNPbwpLm26qKBbz{&>WSa||Rb zdxTxe(AJk!8*G++wz9lF1e9!P1perQ>Nz5q03)WSL&mz8n)(hIE8(V3lKJnLrA>fA zn7I9qnX}^#M?kxcRi10@OF}sDx%x`$P%3z3<7Vm$l1H9VJfJnfeK8vsaEUlQ6`y7~ zr)#UU6|E5Hjdf~fR7p$Cf}E0h^mHeb#wK;mc-XXNMelX0YpayipGnT=dc()NRlm=T zJin)Jf$xWFfuFtIAMYQnJx0c!@3gd?3H1wwB=Ug!I!520KYi}sfZc3a7D#D-NyU$GUM(kX32j?^#c|AhZ>+Y^W7;zfkRIu1w_-kTrn>(TpJc%&J~?x z|LG@xxCv9 ztHblXy}QACL&f!DmY&>6ed+{4$l7MDy92&^rjFGNq`8Au*Fo3n; zNkX@TO1~C@*NIGmk3~5Z1UJC+oiFhhEJ6rfvr{m+tKy8Y00<#*T|UC(L{;*a)9>GO zp(of(EBf)GG{4Dy?MF1`it-x*H`mV447d&wRNJB9$|G|d z)0c3S5wfSj<5*}fFAFy{w;DOUp3S%sZhL&stKAB8K3){@{JfvdWX1J*{>0U7{X5(y zG|t|s59JN`Lfrj6C+z*%AiVvj&t5d78dEIKCI{E4*sAs@8-~36?~iyZXaia<)%$DP zEy{#DVz%|XZu`&TUd8UNuMPXzSZa2;yrXS$tE!ZhRU1T)^5Z<8#II(--M8&mTX;|X zY@z;WIxZCQ+XeqDH(#{EW)){vY0;uNye5<9+|-{mi`qi50xtX8zV06*ZXufrivW?S z@+7%NKR1MPv(`c*@W>gUl+;POVe$v;e|LK`{c6d?JYUOKjU6`ZcY%`9HO;NrIM-1n zAC93WZ#ny2kZy{+TgK(qQ|K-g$nmzl z?$2WUfGOi{dK{f^dy2eX<8Hpc&UU((-?YSEb-~16Z}5BWV~V`&@VC7ftMb>86BR$N__Hp|^NnR;sX) zv(@1Jt9PS=kR<*6Zeh20-p6}cfN1pDWL0cO8|Yg=LWIwCu1U;rp6rStot0H`!o?9E zH?8Qz<7l*u+9t7T8s+@5OXBa$|MrYa^tRW3i5$NE&ni)>;8trwh^RAC!2OQk-2e0* zvhUx=5yL+)%(hMpz{|<%O-rZAI$_qY@B4#L_oGwer1{v?i~4FU_%P<&lvKF-R*&Tr z`%-DosEFJcU3a8dRy?6JEl*G$fhbP+f(PE7O$%Ww2rt|oNs+LP=>eEr-(vl)Tn|M4 ztCq1&d8RepS$jc+uZAv84D=lHg0;3VYe5+2g&5(8*+|HH=;+^|M)`^?=oRt6eDk8u zRSj`Mh4kh{BgdBb4FPX7E4$CfH)7dzk;5M@nfG;AWuFXj7hxL z;URdz_CWe*;6W1u=)ut}YbGHQby2Ra^fTp!wUI-Gz9{{r-k{C!D8oU{v5yLH4u3_9 zRB>T7rhPLDX0X?_{R{aaufo;i0uxVSgb5wUa$!c`py~@LuEb<*RvDfp<%|} z-&N$|F2cSry@G@b50xhS5+D!h@8Jw3$+IH=a@v~7ebj7$Qj*Z({B1-z6B8>4H5x)= z)<+@HXRhF3F}j)V$_?x&I#U~&?wp^znn6TlZVGKU1GJaHFx{$j!r7EzIRa?;moCg~ z_Az34yGmDIji*hEd~STx`us7r?dqYxGkkImRYs#yc%rY2eMm3<8XRZ|ADON&_6iZ;1Y0vpdenwXkTl zja-oKoUJ4`fb6t_ADS;PSBLIFf;cPG_qCJ}!kAZ6$&3R_9ej|PC%?IXsP4@8F1rmV znbf|1lyZVY-d_A7`|T~vt|aPVScR{P0>`dgpbY^P2_Lk_BB$UZQ|P-Di7G%@$3wcF zgzh>46|d)2{LBG^AP?yoB-K8eBnNrF#&w*ZmkGy;&7X0ksAK5X2yeZR75V|eJyY3+%&x1=R?ympEoRX zU-j|r{eBHy9Ua4Rt}mQBcra|IcsrcSUkLkb7TBLCO`>Ok4|mT#=MT~9x+PAt?~+9} zf9P@*j5ImWSYBNPoR{jaYBd>vJRcS-#y?6Rpr0RkX-KHyAK&>tYak$=Ctx6XX;3gU zASl4||NjsG>@c%%Hg_>(FtW2@ly@<4w6buv6SA;lG_!L6Y8dw*A@8TOT($gS{sQr9#{CgvE;YL94Q-t z5)uQEU|2xSVor{g4_K$Xv#%5$iFH7_B9cqPFYc?7IkFSN31@^|xZ5!!DR#TvK2A?z zi&;rKf7tzuvpuT%bz|;rRkGiX$CE`6e&4G4p>Z z(s0&Sj~gpyD@SU>)$HUvYZ#@lI(SDYhc=$kw9PRya@>AhdC9Ol#Y@GAk%CbDmQJHs zv%!BCF_;TMe%F#9%nT7I`ef(c_w`4=_9_NKFpK=POsDOf`3$07(`E+*w9^}5j{PFp z^owE<8nbo^ZS_yjE72GzIqEyX)a}{o7UDaB7?^;}ZqVKgC$T%CFIB}O!3P21#Otp; zlBZ)Y`}W(g=t_$r$yCTR3Gun#Rpf&s5&4naYf-u=Jy`Xth(3R(z+d}w8aR;w+MD?T zA;0f{6Bf$XwkU-#_EDmUGwy*seM6!0Zv1e{jbZe(~51}3dsY#|lgS--%@7%@`EsomkVymIP#)_=r0^O$rm6hVg zkclgSEOFvZ1ruf`9E<7xO2i8`>F0>RG|3e=gC&R*0Gmk_7Ub8`WhSn$5PhmAo)&Rx zdxIxO2nEtsw@cI)N^wSBK^EI*f>&AjN?fk?g^0)~RH)OZM)8{r>m6@t`3@s;lF&8B zR-e%TH%BM+_&6<{-Z<~m(-IX5ee^-n?O}#}DgqdhQ_s6U2!8LE`_;xD#aO|P&7XRE z$q4!K4Be1r-asK@9R_JtUf^%HZrFv}f@65sboHMI|EydEJX(S&+P9!vz%lU!>q+qA z&h)xM(%0Q?1KigQg$oauAKW(v2d%D>G|v0h{P@5$h8!pG%mYz~xw8H0=%fk=uS>%T z-0Dpmv7l<(2l>p|i#VwfVeWh!Ei@YS{DW8nUtn+dc&N}~RPpGvZ5GryiwXyQs{Ygu z%8D{{=eZ99!4533xk)B4O9pdOfHI8LE;Rzmh<0yXlk%dLXWqW-E)YqJq}sLm)$V$f zEK~bjCZ^jbdR+)Ij|;zR9<7>^8DsrbG5_AzCr=Ns7E3HQtN0{g zU}d}2rgssHXgyiEUHgq%KR^JTWv_hR`N(JAQ92rprt)VKM1*W8e^Qu$HR3);t zMU7@%wZ?Gum2Q(J?X~*FqRz?D_spS8qw!j}LasOzqUz@Q(L5UEfY z=`tPbRrRYu(NZ)?+LW8|6y|$yh=dtQ`Ur+KkfYRe1<`XKCsPBUcRU$&^9{Fvt~0+2 zDMD)GD2#Mdk|R@+iKxRLGgJ(Rii1GIKbj2Kdvi*nbV0KrD;j0nU456;18w#4%9YqW z*IhfJZEcP213te&4-~{;YBr-bXO4$mPRBt+DpU(xT%Fwfp0)YVG)L1o2vwywPYYm7 z3YPhMJ8t`ZO7#_Y^-1icGMB1~g+r+(MHY$^G>yS{5D+sOSwkq!biLa{qpZG5?KJct z!sd7T%>0ZwqbtC%6)TzpzU`eH@SV74jUFzu)!*K*T*(OI}QU%1v%!^4>?sb0=78|m!}3);t%NckP= z$;?UYk&Lx{lw;{gJZg1v8x0E3Pv6B?%Db^JFn*m135(@OJCN7S$&3vv#2Je<)ni`hucJ7@O24xgI3^l3^x z&M+Vcoc~5`AGQR8!nhG}?bOV^jn^ojl?`L(Qaj$mi;RdANQZ?hg6K;fx^266 z+wR@AZQHhO+qSvewr$(CZFir3XL7zwGRc>jlboMbsZ=F*rB*%9TGzT4iGfyYsY(Sw zP!{O?6ovaxv#!lxbC0-m*_tg)YZY}>!)sd$*T^>7nkUTFB>5j)i3%f4Z+K3_DdQAJ zuHR_=6d2T16}8X&D&D3f`E}^i>wWo=4+O#*fY&RHAYtZNOxs!?zS__q1ZUrexX(|H zm?LkkGD!Ihha(c@S}8Acj&3<&W$j?;Md;n<_^I#TFcL@8D!Asr{_>Eum*n`PJB3#6 z3CsBu%tB;!JXtPjhEw^n91x?VV-J2{w zZV+^6FM%g+=_=S-(?=)>TQJ~{sE$OvI%v%b^|{M@v|3ThB902$>iYO{>+i5KY`iqn z3;HBk)*sMuiLr<)gYfy=N7`f7WRI%&_bE|-?pO{GgioQ`IJ?NA-=E;}v4$s#B{uTE zGEzan6sR|h`l)iaq3;IO@GsMB4+T68T{BBZ?E}#CTn=}Lr7PDoW7j?m82sR==N z{Al32mU854l&bQJMT!53@JmF$0*qlinRIpPpp~g6{EeheN`4<#F>Yy|WR@}1dBm1g zAJ{Y0%gIT!9`*&5QCw@dXfOeh6b8XRjfT)lgmmI6S8)}yXevL#LSoGC8wH8S=rg&~ zt+8FS2)8|~Fj{u1bn9$#uCio-d3My&izypH==Lbk{dyeLV5jYNa2A~Y8uDD*aa=i5 zC@|88eCGPohQZ)MvQk67;o!ri9o6D-?jFhhZWMpQcucuMmmmdd!|vQ3l5R~JyG)lb zIboI4tx*#9RPb=|hyd?ZlZ~SGbzBv~uiC?dqrb_8&>`~fY$$ChBpYI{5^GcCep1Zy zp7BDuwewT}Z0Xe9&DtokAuejDjc1jeY@KRZ-OxPv)gm^vY_8{Q*e&v2n5~t}F?f?1 zn|U@a+CXD}J+e~*p{K}g)uF)L zV1Nc~DufrN+$?E4QLS0TJ+UWXK!NZ}y$nsbpJYr0!N%6xyS#1@sUa0~U%S1_@7|@= z0<(qVn|{Qk+yiQ77n|pLN+LXSQ;3cZwL`(WX2_q)?uE)imQ|}=&JkFmI?Xfpbo)fp zWcdpLpT`rX6wEBs_C$>>O1KI*7YOf@ZNjq=NsSqN08&yF8gC4p{v0XPb($)Bs=6l2 zoE<8jTpQl4;I9?k4wT?PB8sI6iEl9#~K2ZG!L^oqL6OWf@W)uj5PrKQC+2Y_k*)sl_)#C1j3(}AK? zq0;2)^RwsGqt(4yV_J!?@34mYZ(Y_Zf8GtYS#H@r38G(%SRT)}PYpknu`rH-m0gg> zJ&0sbj}s{d79F4M$V!x7b|(Z2OjT%PflOV1y(#FB+b-ZMPnPQjB~7TT8aS}a*Tq6N zSB2N8nU>l<6Pc{MhE^uY33x_ps~ql6#ItExJU$3)D<3dFu0A>*Q-Tc<7{#_t#I6(q zkSW)n+2_t0y+0*xEc}lhYy53$>n-J7vAkKIx4F$<2W!%#OlDw?<=yw=<=rO9SSd5< zktJpVOAv2aj2H+rjF8L74nZth7_DXv56VEUdI=#XBoHBMgFqmpP#>$1zOJ05$q~lZ z;HhXQc(gYizC0BsmwLk{G0clPxy+Zg$#hn>aF!3j#M*A<%$Gm9?Y9moa!rR29bN&y zm2d59B7STdt?-aX|6Rx&8(WZEn(7)(S8X$0-JMO{TqhYof>TVVSM>Y=?I1Y3Q{ca- zk+RI;78Xcr(StoL>X*zB&2WgOB}W%s@Ag-%9R?#03k|_7wh46$Cu)74a5Ix0$UxbR zO2syI#UG>GKu493m=L%@*G z@P?e~o5Ma)+4f8@f2)iZc>w%2Lp2X*xIqlip2ZpHJHU;HTc(Hug3F+EdcwTrz0 z**D?2{y{LfQ?6iKgt=|M=jVwqoV%k8^oqk6%1E4GI}m=5GA~vbPe{Q@yOT?0(1>n2&H->na41=$yH%40`m@3d z^~!Smy&*xjOEIAOi(ldvL!;p5Jb#0BRU)Zdu14j=^{=A_qykYv2!bY#v0saj|1{1T zJ(`LHxNZdzE)A0K6a$-Wj?E5jkII}NmUxDk0sn$Y-ZKU#Ndnb<*RUT!1&Am&QaT{j zppP>IW?e$Bb>2wQL4?GCSkinse90|F&4pS6?8x3#EG{-1(fC*?6?Wjg$w`2OAfzJc z)kA$yy$ze5G3f$i%QGe~x!!oXY)%^0p|*efx2Kr3Ocm**OB!O2m_Q4OjylmakACSL z{|SbbI<;z!Nl!~5N@UZG+!&Y;T?en=;z(%lAq{&PmR*bZP%?m&#PLuoPx~fP7Oh34 zMtxIs)w@?o9$b7nB$Lz_$+N31z(opNTd)P&v*w=5KIXKDqQ1Gubgxe?XzmuFUohYm zpe=t#mv+Zzez}>*f)QvI7pWDax2#wvfq^EC=p5)wvZ=C3W9VElMAR&Zo7PDRKu=I8 zJ>3*JfUVuLLBIX4xpoXQQkH4F9|PlF3L!N(iFA_b$b}wmQEak>yO)4U%S4K#8C}0% z46#ZY!6hhBRI6-=n_#QV<|h-FUp1ItGngM1aBX3Bp;b&kN~!K7fduTt9t`85tnWB+~=3v=bY#;CQ-F(q9{m?r!|m zwc6>jBqom)Fpz6PgjT(XOt4!vAa#XauQ%*7Gz1-r__EXrR9u6ZgJ}p@J93mE7(~;- zUw2+%c6F1vn6W)7(oh+pZft=4gto6y_VuUiXwxvu8+A4YSL5Y+aw_6}@_Io>wi!QY zCK3h2z5O#VoK^E_Wc7x53`tc(0Z!bz#k6;VPo@Dal}SQ(oj5JnSB3TRD^;r0Jic50 zQ7wvSO$1)KB*ec{Fi6@vk`-5~^CoyU$k>J}*&yIN!ffnSKT$@)39S(K2HrRK-9tTI z>4Y>NTz{hQF%Y=tDT8^Fc4sqmGt||K=2A zVf&#;)?j|1_6f$~Gv`mD5BupYw31_j5TDBpU6_$1z&*1(Qe%eCIWbW^k|ts7ut)0U zo9Y#SY9L<51XcHGE6l?f1k+lBd6!vP?bxUpX1l|*q9dU_mB`-+5TuU&PAC)^u^d6G7#>vIOD)KaR?Ee3t+>AJp}8!5Z`vri5q}r%==wfpmg>1#H|C1%|tV@Df+Hv~x&m!F-dazBT;QrrI*8aa|Xa zV6w-xz@bdI7>;Sr8k==9^|!l?sXQC{(&o4Pv(Dn__;yp2(h*dfvHcVH^n$ z7SyHzdM9SAcYJb0O1)@t)~Obt7lQo;U}Fj~(Wa)rMk}aG?E9CfbYrQs>kv5T2mu<6 zpzwh70Lzi8Bg2}~7HpOUK#mF(CDbw}Q*SDD3Xxmzi#)%_;99*xwbF+?iq-AYAHOe| zkfRp!XIE_hiLt23gChZ}ub0FZ-_BGouSB2E{&YWUY@SM3r=vdV&Vff?lZXTRjK!D_ zG#u_HNo_Y!cWiG|9Iqbb+5UbZ5q}^tbQnJTl)E8&J z;PM<1YGbE`k@^n86L|53O_%q+smGSKssCgZtGAB8TM3%0K$AE0+X>M!`8OD)KGyZZ zAokGK8fF;?{UaT`ytfz66Txzr8n=374GEM1GQAI*0D+SsY9&!FOkyuri+xfU6R%Qf z`D0?p)CXiu|D;tx0&51}K=0KLRIS>W($1%ok)6<~mdr|#awaHG#$bv8!Nojf)aX1< z)}Nk{mnUg`s;@M!wSh0PoPjUExz6WaggDhq6WE%?eu#Kd%{J=qS*IgbU<3>Df|x=? z7@w!$D(rK#7*0s0-)@a!Z$m)8(YRf_EH*qi1M-qzrN0*=vBgPWJGYDG*cZTwJ!S7g zKcOA)J8gMGUp@BCfJU)Oje}ogRZ%OCAVp&KE+j{inZ6(f-`mVm;x$f=29lRDiO5yp z+2EeJJSA``jGQp;FdtJoOlkCJQxrbQvpu%84<>=@f;hzA1_-z$>*LlCsDapBAf9zG zHTKS6Y*1$a>XmricWmg7e#ouqf-vhzQ>AL34g-~A1wmu91AQ<{;Irw!27JfziTc;I zdG|g293O9hrib~d7F&jmqbb&e=8yAb-$J|`57j>)9Sg~LWACwB*}TWq(VOmQ)cRZ6 zuZ5^EJb1k^P9QIxoLiSyox0@szyh1Vs~CE1pK|iKw{kdsU9Um$Gv@#<-{>n&CSB)9 zV)&zi#bzc;r!vKdmz4U)7T*v2HuqPU*NJ>1Qn~GBgP>pi>HWCx1|iP-*)6iKYKlhY zcLFCxOH;>^a^G@ltv8t@Q#-!qDaWZmBTG4-w8m*?6yw)xT{1j9@yr#CixHr&iDQMU zXs`ZhH8_~XOySBFtIs;tZv!HZmK(6Ip91egCt|688>>0TY}DD#v|g@nXx3L|58^IY zxc8(WVO&Z3@Oc`WOwXr7gJex2XC^Cf>(;yVlmEf0|Bb(+5_~?cFgO1pX=IAbxXYMf z^tN_^!*4B&3IfcEqQgRhv>tXF#jf`fdAg9F-2BlbKJBf-=OH1?DCuDO zV3HEqGdEP2?O@~N4Ep(OhUHaAwQD_6=(6xu))mn0dWf`a?R@?9*4iaX&xoCqHz%zG z(Z4kh3XaJ_lG$*@;j;_i#`{+TDxydk0gX3a=a_>OTt+qp!Sbxr#6U@#KZ$3jSFBD$ z>l0Lwnb~INGAx)c68{g5fL*E&`=9<66d|Odo$zNj%W5W|)Afyw4d+e1_t#$a7w+_i zs%mye!}HM*<+Ax3iPL(QmFo;3zw0>zL-2K&Y@>$ZNz8g6BfmD6H=gyXH6t1gdR8v3 zfUMp*;@!J;$0Jh4huikI@6Q6Lk%|G1;qkCa31dr))%f!C35m`V<9L0lYe!Kp6ov!PNHSkBDk@ z0^pHVi~-OO=06LzI(1MNv8sFGANTvM-qu`DF=Js2Xip*_&N%&HQB2OmZT$mBMA*8q zyRxSwPCNw_(_3S*rZ1^>%h%4kNW}){-RB77I9#<0`AGy9hLmqAd zyt@P1A0u#D`r}@cyCFw79L~si9H0-Ib@MN`MQKd-qorh-mH)$N7&TKe>>Cw z)6)mLxGkelRI=owv;wpl_t}fB$bZymm!7YTyNIH>(56l#25+)!GGoU$0s8*-Rby0s zicRsPkeybygYy{Y$Hcmg=JQ6o+9h{%7il-V6p} z?zq_gIt!Ao1mb?d@jB#iqS01n>JtNYqVD+7iFo^3=}SxeBPEuzp^m~yi{oC`4*z-r zH|;g#3-G=>X`**Z?NP?jff+KezL{oH%}@+Fc$!Dc6M<0b#|AmRs(YSPnCfuZLsP&KT* z0bkse(rXBbT_B)Ujucm(Mv*Tme0q))&fL=8*Ue-XE=I!iKm&O6Ofl_ZITi#iSl%I9 zj$aDmYCrg#niN>58rK`}HvFuri&inc$6H6SZ%kLJ60DOgmxbg|vTrc6UoaCzn%~8F znSgKFl$)p$2h#gv%Jvga?;(>)oWxL`cUA0ic{ARj6lbV-owWH6k*TEyLnFE8d-u<0 zsl%zxd%oo82&IILC`5|&p|0Dt*@yOqce z4z0Ro+R`2VYba0Ta`2MM*ssfSw{*3WYay;>(x@7#a|faUaJ7Q(S+TGc{_HC>ft9u@ z7s(oB3KmKg$pRNtG~Z0nalX)X_z)dy=d4pZcnI%+yt}6m0$VnI#_7IbS^z{A{X^)_ z5+ol0)2F867+Q#_2HNMyXOiWk{7zKHg=XGAsPJQen_Es(@bH|2WK!vzrxZ{wC>tR& za@!61ElLzCn9*OZ?X^S@DubYvaJ$3uau%JT_13IIFun8{{2zq(NcQcU>`)!2OfAmW9zUg42LrZ8ojz*!lw39okxG zEPjRpZ3nQ1pd^;cPQxiY8s=oj=K}3po@FFMx%Ic#mC>X-us`l0UlhS)HIw38D4BWi zw}L7|yfz(R#OYh^^sU4m4tp<~EVHNGKe8z>AzC2@F3%V*48pXRN}w{N+ZZU+;sX6* ztyFe>r7XchF%_OeK=mzvp~59El~m()R9a6QoVDv21@u3A$?fP=~E6*>I{c9$po`Vii%t5%=82$&Bb+=#~BT z`SZ&i{7+87h%*a?6CVJ;D+l1e;S|{Z?>PlKeN*HA0Vpi0{n%_YBmeZs+7on}A@$ZL z_yAi;lE8i;<^isgsI7nT$-^`{CBPMnMHgma>f{*C)UK@RSmhaU)*EtCWdPy)*b&}e zJC1x%3wzSi>U4fR-NQ&|h9Alwe*5j#hha#7)kC;xk3_97OX30o2$9@ZezbU3&N_%m zR>Q8RF|)vT8()kRH97nBurh_O(e`zi_CYHzZO)6~2P%n2&JSOHQVm!3@@rTq>w9g6 z))|3r^K>|uEeS=365E#bGuO+sAEFFf3Ap`2xSl{Ye;bUm_JR~()704hoz7UGb=j138Tp(0aG(l+mPuR~QIFA9N+&IAMXBX|H zn?bVVLKubsnH&O$ds84(SevnJ=7L$9mD)>&v8t)X-AJJqi)V<%V)7T$Mke15nP41A zsxVL`P=MT}P14FKq@v$=PEf+lKe2`L+mv9KBGNE8QOqQSCVFKoqtb_Bm+2peEEh;>!2P4jYduyNv#0_JI{PBIG$XleU?NIh@lO_F>e0;c-*M*BS&a8-yy zV~%_#tJ#8DmIyG*tkwf(%z(;vhX*G?DagV(Mui12fX59|j=!RGP3O)%WI81pWK?B` z`RCLkJ%IByV~<7`Wp50EFr=?Tb4t`o?6a#aJNro^Q?w`vRI~8`cwXE-w&TRJ7>8H>zu4`xmuvcgP&;{@t&}&Q^ud{);8iCWy|e4c-+Xl1PCm zn7tyUG{t00nf(+JA$Uo|4DNmxZomy(-CVp~ggSMSQ3=NEu+x}M&l`RMw76U_PWz_j2$q`8| zo_|WzfFtMud-OW9*%9hGqHmX_T}z+2L|-kAI#XU#mKJN#u>PFA%xN>`OeT><(KjDT#;N2{Zqd&E#s(M8X+|k)cLeUe9H2 zHBiuPvf|zR1K5+q_*DaicrAwfwI}q0@OseMBzwxI)9vN?(t;fOergKI(}*Oh62?Lr zWkoSXOP;|05P^nW+<&<7Ie;Y}x#&c_6Qff|{-u@^58_Zmpoj?wuWVSL>vr!e#|;5F zcOr10qZwol7mOJAfV4+*Bj&)Zb)rJ>)dFM^*6IznXb1h9J$1pm&7$AFsv4oero%Sy?Nuyb1-O5)cX6^fLRFK5T$?=iF z1Iz2o6XGN=h; z-bY!CS`)^!jx}9)c(+`Y+u0(RPX`Cpfz`)qdu4~{i9Zf~hZ#$h;|!a#j|9Tz^0by> z_ZTm6!n^mJCYthG(CffU<3B1--MoAbMa`6exZ#VQ6B^dnHA=x<%ip55d})l01521I z4Rhy0wf<96Ru}bhi<}qB(?MM?5ykrg#J)eEvN18az2hsjzg@w++V?By(_JIvm)$Kw z`X3}OJO34w!3>nFXh8u0)=>Vtpv?aNEhsbmkEooK&?5s(4>RnV(|-s`_$_k{D|gJ` zbmoST*^o4>fTVznmn~3}eA;ImarD`3`#R>FRW*3P*Rf(3ljEo*Mfgdmp>AP-+G zcv1K{Y)i(4_h+$<_pAe%TS!CBmlsrx_n_wso=j^z;C&=q_TIVf%ZqDRjaip&B>KE{ z3Ws&#K*W=)z!pX!E0$SJNRt-Py6f!bzeKa2HY}a~J-Pt;|3Ngy|5dcm|4p>e|A=N# z?d|0R)s-Vel<_y^;Unub@y?~oed~IAM{m~q)TS2uKcW=_0VFfawG>ribP|t#BC`1y z|Ki3G8;ZEPzoOBex`DX-ipHKXujzDXrpayK}blCVRpbs~Y8-^N=2kRzf?0d@TGJz@z(6;(<$zGJruKgZ8{RZv6 z+HPuV#vU}I_~3p;Bzmu|`x~O2ZqR7yWjY0VkD6?V&xPWXvmseC5+y>3PhIM{etY&+ zh-q7Cq;L!Cf~5>juz-ep5_|_a15uQq@!;Y}aP!*7nwsr&8r? zqt!J|_bR7@a8N~R{}TQpRWez#0Bt$OEd_%v1*KUen*2*KLFTrp4<%#}Q)n@WOBd=T zIv!vMB^I!$k6;$NBu3)XOEP&$Yyg+wUuq}AVu77-<5v#^&4&#<;=8COrbX3|B~PHA zvb7qM%jWZnmRuM$stv4<)aQDeTDtd}!mR!he%&SdrYeYh7Ub4meFC1EXqS`4`0@;Y zNt1}5V%E8Vq}Gcpn(ahWJ4{0jlK`{=MnB^0Ee1v?&pc#4Iakmt%eai6bZwOrTnjM( z#8Qx$v;+e_ec6vS&MpW{aDxl;$UEK=&az+jLfT%RdLbNkKZ~<;qp5$%i z;`>%G7kXqG4!26$AMk)pN;(&zbx2BjxIA7Pph&TRi_XE^*=^OL5k!CL3Mcqu6&ual z!4(j~dBBxAanv$iWGSMkWF1?c_XD&@%=pji6No&>@atXEvFJ_}>92T94{Kqhi1e8j zs~vI(chBs}r3mCGcj0&wk7t)k;9nOk_g6Ot{3sEia$fst4B~Gpz&QbS+^ugadu-Ie z0*@4+H`Iw6YFQO}9Gg%gDe!_9nLQDMC6@?NOk^$MV07jHz)JuPJ4v&cFE=1`>Rf;$ zBy`Y;G{mT4vFor|iqbnGAOuh)Bx0rdUA_mamBzt-x@%w*M8B70uljL4#z<^P7$Fyt zMm}8B^2{4GCMMkR##a;A8l7Mr395}lRzx}%wP>2A!L9IUMR867^c+Gf&Q0R_W-dHb zIg2Q3qg_w8D4Znv)|{3C1llEXQSFH_pP>Ziblvn84BT6Sv#8i-V);idrdkY# zow(yl2gGqcphni=?<>%q2Cdt}|}|4$l`g<>PmB5&9R4Jdi-i$#NL+ zG7(b^(aveZ<93mhQKPJs3P44|2arx#Jvr}MY*vDW3PZkvJBcuBq2dHc zDxi;51e!uozU#Qg!e$17BbM5@lHw-0(r2=2$f*%VU!PwocG; zBpnHfCrel-bMJN?kObJv)Qp>SO*A-Km|v0>4mPI>d9tw^Qntk* zokR@`oIMcg#k!bq!^NtR_Jb=;V=ii$(@si8yu4mc^c415Z?pp^^J2W;m)PO;pCe=6+E<&Y6@%4nxe<7(+Y1kV0a|waD-fx>DJm#~+a@=UBR%`uY4; zYpyB>447++XlP@G%}z6FB!eeUrz4=L7u>lWj1zF$r`s`@C{)}HM z4aFs9*u5{hByNIx5V|EZ+!=j3Z zfR|2;Htg21v0HHqOD?L5>#o;cQ*3HPxdcya`9`ySkc!941odA>RF0TmcW^*gv0Wf^ zSe*gQ78g*x zfvS9X%BGwG-l{IH&y&laTrf{wrW6j_yc4i7^n>p(30TK?S7<}EC4mm^v+51-vKnd#5gqkq9|1cp9oHsVWCBYQFv{MOHtVuY5mPP5` zz(OKQ=aHdi+q@SvS(NA_acF|`~Ed*lwHxMk9luP+KgAsH;8ct_b%OrXV4l;Tn zX1Q3B@(pcDF09zQ;&kVjyKKM3qN#e&efth291a$C=JvA?57bsP#(B8%_~dTND;`P; zNojlVdV&)dZfI}Sltc`3-@!&%14VB5c(nRCzevf9vogfR=kO?J1+N;TB3SrT`o+Gm z_wa*IA3Rn2tb=_ayi~shwzxmpiRcxWr8iTABk-X_=j2>Ey&8ftG{)uB2(cSw=XP}e zWc;sDteAHVJp`}vFxAb;{<+{w-rGW+MunP`hgpnZ)-LpgalrlOsgy#CG*RX$9Dn4= z`d%bdJjTM-LoJiOz)oQPxIm_hJzmpA_EdSS9f0QK3Q=>9&3^4hULKQPb^71T%g;sj zW#!c;=4X{R9_Vkw@2*WcxCTS1Ni28WO#VkdCz==?8x)&rrNFr zhy8Xgw=%iSzs`&4TD>13suj}4@ld!ja$KcoxrrR(4hzS?ei$e|(kS;rWFY?V%+6s0 zruc|=WwD?q)xWkf+ke!XU+soM2ltVx^n&0QQ(iK%{?IucMx@gfkflUHtB06RSIn`- ztN>Ma1HV%|xF(y(8XZxtI_bl~rN#Wg-uTEx_HkynH0`r4*=6t0F7V7aIA+|CD@GFv z*V$5b5wd>`WS4c&X26Did_H-3qWBPE=k?6UHhLJR+qVKw#Gw9+EJbfu+a)}3cUe+^ zZ=V&ta(qzhEAH%Dc4=zXviGNkH|tA^AQ`PTtiqIcKq1V#M;=3)JHLErnuocB)hav| z&JKEKQzftt-4bK9Mw(>&CeV(`%_mZl4~QZL527Nt30C_;nrPKv&gqrK&LxgQO_x6ARS|zPr2e&GiqF$RTWmjGZXCA(>nLrza<2(*AG*oUQX&;} z!mH2P{onl%99_ODF}i4Wim z9%1>b7yh`^$5nISVdrh z1seC|b?++Cige9)rZ1I8;J9Gscm#MwsKl70>NH*PFy$3S+fhwt%`l!?IpdtQ7E;1BO;a5t27? zR6+4TmMc{RU(-UQveiCZR+x?Su(>XxDS9TEu20?ZTBWZQD5su^@%l^^>6DKJJh1{r zy&_k+4T!jAk7Y9G?u*w?O!x&D!1#Y#<^J;wB*i=0RWXl&gV=oCHL?51OHoV0 zbaNYGZ-ujq!Via>i25&{YN&ADcs5yS4pj=)3)ECm_1;kS*x8I}KlghOcLGl%J zt7Cq#^0;lQXdxWtp)XBd5nkDLG_A8(y@M%%?uR(Q@$t}6{0sFmS5WrJETk7Zxo87f zx#vdCXGf~vEJlCe(Xzz`7Yo7W2v@QuIeNV*3-u@tAKnVCP#KUESlMq(d};TH1~q!zkXQzMxP&anT@=_(h}{9E{=EGj7Gooc0{v zx2>=sRN{-0etk55JsHkzZ!Qh)x+1&K06vg}L0+~Ud8gYVK`RXreBfLL*NS?w#h#sc zV&O-a4yFxw95H70jYc-#CXa&d*w)$}j=Z|LN%9|{^*^<lJ6MG%%LT(nlC?Ziy;PZaDK$Z3r{2aLQa}|I7X0j1NzQ(J5Y;8MP zwN-Bt9r+B^EN*)2zk^?H4LdJ1V&~=5e@+b4IU?uf+WyrI&ArQBXmnQuU!oI-6#3M- zG`z9sc2uvN1LqST+GkMR|2vhcghuYBlaGDW#~XwUm$PmsQ}^(eFwjv!*lfcpaFybJ z!nY&wSsh^-7XxxQ#hJ;i8DQEYM*JRc`ogt+!j)ID_OM}S3h*yD7qp3i1=vlt{1DWw zdZH>Bis(muM>mSP`+sN8`$qP1>)vbmg*kvostzC{>C*T-lKczZ%R{A zr$6LsT4%U)#^>i1dWQnKOA^t|C#Z4Cv2$W3@kG~OIs(U}Qz;&- z!lFA6MqG#U6!V2UU@WyP)^oCfY)zyy9&Jv4Rk?VuRTpB2J5b$Q2IuUcq)o-Tcxf6g zE0XwBSt+6{aW-^5f>@!vQ&bRp#Nm~*o*-})$pb226}4Dna;lP!(&Dp{y5eVmL|kJd zg~P6@m1uHgF17g)bCUx9caO<}kJ76#*KegMGLz`KLTScTc(8W_`q<;qoAh z#$(i<{|2tu*rc9Gv!!rZEd)(y*s~6zI_o$^ST_w@(0TvBUB}ni>Q1YZA*0nvc^;Id zR4G_WCf`X~Gg}@`jt^kiJgF8`xfhGMkES>#FDs_zGkCGVoA^4-umT~BJ6986M6zuA z+^Fd+dPWqSt=kE0R$XY#;bzDNJHPR3V?mOVrr6G#V1N9Dz~`TReW0==&-7o_yae@1 zfg>7U6Q$I=@wZw!?>ODR<{ii<#DUNu;@7;4B!&?XDfz{b~jVzXS zC{`N+QY-N z(k`oK=-t1K#^gQ8;^P@%_(TqI{9n750^2t^9=DByh_4n#qO$Cp;@L8uM)~(7@RtD; zbvM5G_Is{4fEIji2D}oF*^I^{h8#m%`AS4fjgFAbo9ylBP^1BE8^Hx)%wJxM`k~T5RwX@#OBkSa^N{X zxv=d8doFkBRDA`7#rKT$$rVB&Y<=iC#G&L`Dtt?p9>`Tbu|ASs(|;wxU7}^_0;YCm zVHL10z{6L)$e@SJbPcY5X3je}j+VbDc;OP^d64oq%0-QC mZdkKM?bvQ+84^#LS z_f8H!kN7|)4@59q1@B5?PL!mKNkgi1+&q6TG)4>JAbR%sLV1C}ZCgEo(E6izus2vX zRNluV(Y50n(rf6aiMjSM#Nr*us%1xW6#SX(^e$AlPyBOv%;9Uj*txj!u0Lvq#Y+t9 zm9Qh6zNs`6S5cI?7Kq{euibWr-7#+37i2K}+2cQu`%w9k!u-D#ei3l05fRb|A{5Hp z<@%*&=ur#JF}tb7;1E908QM#YG5P^Jt63{q+hl)rmC#ZT<`>WjG#bU;c9`Z=C^!|q zSE|kBlDF{-PyMb^e^6AuC4tS}b{^#xZRM2?jtK8}o`A>h7Uf|p0VKX{Lw7raK2KOZ zjwN6ce#ZU{B=6U`Jlo&^qmah(mQ*Er4vEKRi4*Fc8Q-BrmReE$`>m~Re2%DmwRbJS zY=gn{Zu$)d`0|z-f~s2ThdpH_q@FyT?- z6r($N9p3~v(#4W8{im%cAfw?nL_H{K{hyd@dXYyP&0k+1W<%;WE1sY?a_(Tf-j}!$JDI8cO-4ULq1V#byX5H6#67q)n_>JIL#_u0jy3 zEZ8_bOHgm}wjbV%$OvrJKJW~N{#VawDqph#nF?{*v)b=sG@ab&cO{ zOis+BJ9=+V4uKs&lM#INH)ksmbVanxj*YX z(fHe;>_3)qz2CvLSHV^Mpbgt|xPouCl)5+rEH}x#5OX8Lewn{u6w0g;SM{-=V>B^q z#Fn>R$$<^9ZBudl`UGM->a3c{1u$gg=~EPCm9%sh`L z&}RqD;%luYBuvjYJI^I{O0cb#etg5q9l`-M14)o+qaWjyN>%0`?VHX-e+`2 zd)HfidzXFo%FYi3>|1jFFFb8y_0+ z#2~AVkeYjmlJ6}I&m~ViRnkrBK|cP4bxAjNtCy{$|hPL=8UoxByBTvWT8mKUo>F zsG|D9gxL^;@c#C-^U(fN@uU+xP+NhuVI3Sll06Gv(P2&GMO28?=w;hP_p#po_58rH ze)ia28ez~8jAza0WCp}`iQ~c47f5&eV0*LUKY0@nj3Yo6bq-DqG>&N#rP2cN^G)X7 z?f(&I0cRxZKC2>@gwOTZ4_ZqN@p^agF}Dd86psKG2tEe_FK7!}x|?4|3SpeImRMx| zCYvG)Xg-%23D7dUJ%XJ3{x_o+%(AsP4+vf8Y)mVPK#lt0jZn+2l{XAv&rgvMle)8n zP2F45L+J1QQ*>-vlxX{PD^qXkvPtr}Nr%W#;W1QO6?STBt+%xe_pgmfN4rkrW}ruE-LQ0^%1Xmm zsN3oUYdS&r@38ot92|lqt$T{lrkNJI%v4W5J8x0>ioy2)Z)u9&<~7~ z%^=K#9ea;m%mWcCyQHr>mzE1QW`XMGIXz3luu6u&Zf5xfFNiN=;t5N~y^`)9Fw3*& zDX_;9qC@8eoPtQ3`GQI`z>*w5=1$gGic6go+ozMcn=L3DOD=T(;uL-4F!1iYeR@`p zL*6Ed84dt$tw8qC!IYT1i72Es4gdJz?Y5L`iOLsgXeREu$B1>W?(fX)lw1j0;k=^oPGV+Fwh5L`K z>2c>t)oNk;q7IBz+4?i&-Yyf!GZ6e!)_73IVAKWppi*e>Kfiu8Cc&(~+^ zaG;UiHGHQ}5mPygJ@)6N(UvAOzm9{q#aal}iI54rJ)-Lh0kZ^%gQWFB9UKcKX_hgv z5YjabYD$aOZ9Vs(v?d9o=`SV&LqTF=8WJM&3(3XJF@6#vXY_6?Y1m9>*MME^Jefbc zJKf(&cx)hm&+ic_p=uFr&gBBNC%BtxdEiMUbE)N-QqT5|<3cM%FRvpPZ#EeyH;^IT z(>J9kMF`n%8T4;`FZ2p(>w&7rSLtdg9=W&5Inli9e;hF~*#d)9pe%TA+&0t5AAG~O zxgK9R_(@EG1j_;|5nu;Pq;<-qTU=#%^2{M@X7mffY?`Xn$gJm4C?m@FL|iq$#GJ!e$5J_OeW+flSw`S|9icU zJdP*4ByqDRmOO%hCDGH6V}Pn#C09#6=$4aR#>_YDFVSY76-yn?5Z{ydP1K`@%kCZ$(N%f~&J&dS1*?|eOQUwOdUMgj2+s&gvILK61}g}D{0q=R zlSmLH@*u_293bKRGhOs*WkRCy-WLMNzib!ZfDyw5q#xVcjWP4(7}W`sTZv)Y(SwBk{>Mv+n&X#{W-i z=N(S<8~^`n^_Lh+l+1VqT5Lv%> zpU=s_-uHc%c|W*l%^Ihz1Z+0r%)VIM%P=?v zKP%MH^;+I{(_{CAa<>i1mK9~&^Em3Hl{IorL|BZFYm7*1m{eK_vh=-bFpK*2L>%Nq&k0>5(*Pdu19D zX&NbynD5^XY|41#jP2@qsMB7wvGG-%O{a2Ce=XMVid@9%GaV>d0@*k1E6#N;_fllQ zai)P8PL~pk5wXFxm|P*i?3t7F2rjadYJ5$uxXNR&h4kWPOlr#A0N*d1n?2pGSU-AH z#cx!WzXE4!wO#(7dQ>O)U$z34ydqXq- z>2We2ArRqq(_wwyWiAS8L*7rd2iFZJsS5t8ZwEWJgUi}ym{q5BZOOFuhU&LVAbUev zdx8f6)Hv17m_|(r#np*1LlVa025p}WLCR{6$G${FoO-U4iHA!QLu&~u5D`z1k2Szy z>lj>VXr5Uqx>u$c`t_^a4c2>>$_||vJ;toCSSHq)1kbR>yQ(aN2+(=O_aa>U%{9IW zS6?2c&DcbryUv%XI6l?ulQ0LObV;$d6GyN_a#Wrs#Itt@z#L(q5|QB@+m)mk#rLE; ztnt6KawA`Vjad9O9;vA(#v+s=Cw;Csc43eD@rSHS7Ha7)3H>ga@}FDn8%NaXcUZ6{U?mBp#GZi6ZhT z)-in%Wa`p#gXFp~<-r zrw$(`$uBg`^nrT>6xKZ^G9nEc{bX=N%sJIlDRXn_R0zB$+iqpOPMhU+WqG)fXSb-@ zUrar#Qzm@-!tepLJcaxMwbl7=qZdCF5$hQDp37el98iqT)v|S*=<;-AH|q^mhHNOk zW$uARO02U~;0wNB_WM{BuB1L6^29y&RK$gpY+}8!*G{baegXsKH3$^M-QB4`+pKUGUkMy}EC7se%+cCc^fe zm%Ur6qzUz-+QRHOALn|-Z?ruGq2rpnAGi!(V=^SFb|)1[V-)!NsQ_-vk1--HWj zA=BJBh_~Q=z4}+)edJ;2RhUuTBwHwxjFkn?S@||s4ht`9pC)M+>F6(LmC=1>U9eyp(}uh|OcfCd zePA;zVrMa8K*gxlE}*a+S!kJ$H}dEO!COO+Hr6ci+L%&Lg$u}&Ff=^EEt_YQ-95h{ zlFCarLSZ#t$I2|m)l+Z7xy&V6ii4nHL?cMA2Tasy8;7J5kms9(w(VdUUn%7u-F3(2 z%H8SZ2`7zQtHv0flbbeqWVVM;vDUpS7_6DyG%yaa^DfyJ6|I&=-i%0m*~LmfY0KO? znK40OO~Wr*&y}#kJ*3&QUpTcG`80WrD1(oDrFD+^YfNe3VR6`D74H_(IK0A!EC(Ey z7j4t>_0*0pgy6rE;j~?hd-i17+tn1iw6>)mYIk4H}__m?28W{Tro<*RWUa-8U%w(kY`L`NoyP$&-qAb$xxEvyI9d+sqijBmjTy zUhXuD>?v0o@Sxm@C~68By9laTzudiI09@0(mQ2m2yVE`?bxXU7qqj3LkSP59{I(Nf zbrAjmawA@C{A+%@uyw|$M0rgTb&l=W1E{{}hfLUZ!t;*~BHr})%3l)2y)Sy}Nr?1O zRlJycTEbd9LHs!u#3Y#MATh$z0X&r3_XHl}ysIsJM%w9mHO~^; zy%!!Tor+J#9s7PKrMzMG>7{E=`=HwN)81HYw(^>eg2{0SbYHj>roIrs6z#j)p3nxp zt>n0Gg*!S*zlDE#fFM5K+q4GxDe2P=FWaL6cR2wquY_8wC{|&k&kXZwpT zE#=_B^*5nG8SbA`1v_df8m=d13QK6o<=?$F&mhK(E9tutX81aL?BnAzEK$*IenyD$ z0k`n^O!a}frPNo0kJ^_Kr5shx_?|OH(B*ommif75p9yFjJhghh{X>6OpO%YTarciZTKY?C+Ju(^uP;URmh#In1|DUW3@u z*x>c_i;sJx`Qv_;t$IX|$->jqvVWCMo6qN*;Eag9#kB3}oHEv)ILnTkCDMkyfIv%D z;GBN8-d!`H({r6AX=xKQ3i{{dJO=d`aD19K7hLsw#z^zguj#Z(abHL9{sA))!WT3lh@V-P` z#e+qAZO6{&S%m1UGfa>>o8n^x8H173qdg=CWcy>ZZXagAe(PhllqU9JepgDo2Svk< zZ+X}j&pIzEEz+_Pzw%6IWAZBB&0Gq*YUSMH|G1ZS=*+$=gJqRwq8(qsl*(h$lqWq& zMsCf{bwe29Ite(WL==fvB;$2TG$4F~Rdw|8hEG_+0%xJaIDyF=3pqv=`@2<)6d`9S zU-x*oM-Vs~%bfZ2OsY_Eo^q0KU%Q_iXDJo$MpWEw)@NCbWnR*sPKkdQAt=-K?pM;h z`C&ABbRb{7U?|w^Rn<3PV&3aR?NrXsb1bZRHv99#YRv zghoYX_%TXrO*UV3qfx23H8wHLrrv8lp}=U#pD^j+AXs7 zX)--LA1hjiiyw2qA7qqb(naQ3F~Jg_#CZiyUQ*)|pDZQ8wbW*ou;)l;v;iYP@36%$ zHth4-IM>EaW7n&ZdN+4=w!CwX&JhT{Rj2txqt=Fm_A}Pg_K2)g7_F*MD?a>dx^0XL z_4N9J(0V6@ZM7Pr$?!?Mkl{S&9*y9^;Iqv0?apk@COC(Na9+AN845cq-utdwa@GfY zycu_%kczS=3lpp>&WYc-BWAXNf6xKV73hlSJl!04X`8*&GW~fqB#fg{e+yCdiSx@_?1nTOx@AeEbLFbZ-8@#JL^1oop2v)P?_aT7)OF8=yvyZgvM^Q*X>V! zo;A∈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 E2e=ex9RL6T literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.ziphash b/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.ziphash new file mode 100644 index 000000000..7080e132d --- /dev/null +++ b/pkg/mod/cache/download/github.com/!puerkito!bio/goquery/@v/v1.8.0.ziphash @@ -0,0 +1 @@ +h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U= \ No newline at end of file diff --git a/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/list b/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/list new file mode 100644 index 000000000..268b0334e --- /dev/null +++ b/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/list @@ -0,0 +1 @@ +v0.3.0 diff --git a/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.info b/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.info new file mode 100644 index 000000000..230ceda42 --- /dev/null +++ b/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.info @@ -0,0 +1 @@ +{"Version":"v0.3.0","Time":"2021-03-26T02:32:41Z"} \ No newline at end of file diff --git a/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.lock b/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.lock new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.mod b/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.mod new file mode 100644 index 000000000..85ed866c5 --- /dev/null +++ b/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.mod @@ -0,0 +1,8 @@ +module github.com/abhinav/goldmark-wikilink + +go 1.16 + +require ( + github.com/stretchr/testify v1.7.0 + github.com/yuin/goldmark v1.1.32 +) diff --git a/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.zip b/pkg/mod/cache/download/github.com/abhinav/goldmark-wikilink/@v/v0.3.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..0371b06d3a679757352ddd0087c33075ad8b6e07 GIT binary patch literal 14702 zcmb_@1yEgC(=F~A+zArg-Q8V-ySqcUxCRd%JXmmdcXti$!QF%YUb!)HM_pIH$c6V=iDNry}AgGt?cN2d3!qnW!%-Mj}(AJtx-@we=M&E_b)Yi(# zTHnEv#?{=?+{)a>lHY}%mWh_0j`oiq)4AF@SejVbx;no6l=g$Ql~c4p*djer;K?1D zBY6%y`8%G=FG}ROEtj*`%97E!0;<-Q%28Y8U?;Y^MgUhs)(H{%6P&$~lrI3~(};jC zU%>c>m*Q}~;5*U7SNg4vTN12|QM)d$0zaE>IbonY=bMm%@uzv3V%YTil7fRbjJ`FV z-wQ}J2|*FnA%{*H(p(^s^QD^lVos4ab*oU^zHtlruD=2^_=nXZrc&gjg1P2pmE3{W zclH=!gu}3m&GlRJ`)k)p^l(;qjdDx|HMm~l)d!31<3|){3si2^$ilhCLb7|Jn%ggH z%ik6KpxJRh>L=$At6M~DZx@|>T0ObGADr-YY`X`Vs%E(h9L=OMv8~5-kY9sxuhe^Q zv-sFRy_0ckgcSrQlss0joJNd6z+9qWJb?#xYXY#odz>w#Vn|G*E@s6NJh8U5$|&-m=G#1|45kQEb=mJ_43Hp+>Sv0Rcy3OKo- zf^l-w6>_;;->PJb)r0cYvx*(6{GuZxm2AdLY@%U#e&SDJYZbiYks5VeSenP=aXjF9 zD41uH>W?T$)@L@m2nPLW<()Lc!67gw@Yv<6%o@&pJku_uK@Z$t-AZ8leqGdFh-p!yfkiiELNg38x&Fn(^@6Na$)i z5F-a5Y#)nyL;9G+@C*|3LQ)>IXn36IvYRF)jj<2{TW5Qaxs*jzjzbT$uOy7;Nzt-h z>P>Cg9hNqwPM@JS+=HsT#LH=pIlx`FKlU?e`VMy-^OR^w&l`?~kOg9}H}KXs)ftEPG<~YQb(}FsXUu!Cavuo34v) z3{;7jtz@E_5+4ED!*W(Ngt2D`8TXs*n6=Xhwi9EZL0%de^?et5ej=zw2aM4nBi9Cf zrk|crxbu)+e5sHA5v@;R(|(Q5L~vE1{&pJC!oE9&J_yuvc7vvM0@@etqtR zOEsYX#vZ0uvPW7%NJLgiL`z}BW|I}E^@4(Ts~Q%{ys2*mGo<$8V2;4V!JW92Q@0>G zc=QUPt#0_?AuA8`#_$anm-$4%sN4XPYVQwE=rW<+#AB+~$EPF2(+i|`H=v7)sd$Ef zHZ38^x3W;s{<;r8@XEqcDo$ZLELAr_G%MPxOr9b*U@Ls2s|1h0d0{je(5HyY_XvYYe?yiJ+GLGT#Sf z`xfymq2e|!aU5C9m)?1^gba~jlR>LX$al^1q1&OG=7+(R`Wp7VU1piC;Yi&D=A`@= zL}AZXV_m|D%>_dN4zDoS7y_}`9*)}pmIFH10|fPqg7JrZ@`<5Eq_T|IfNt74V;J*O zs;^Pv_9_p3u1Pv(k8k=IS{15kWj((L@5%KZuC0%r1?yHVm2vgpHUgFpfVXwudxlT0 z^&*=-lMmlOp)7fCP?Ka-ra0IUZ`T*QKS%u-{#*jC(NZC117;M~GO=n*O38hOUg=3` z7gswA8Ai+&LmPYx1Q)vtIqP9 zA?$#RN2Q5A3ZSqorS^`FsLu1V&Qa-Zn1H|q*c4ME!n4g04C~Z^XsO6+NYpSWTKCA3 z-@_GrVeWR#q+Up7gO_0NDz9PPLd;#s2w$2-ud$)j*Jy@fj%j1wpv{#f$Dwrvr)=HS ztjMY^3DmE4aSb-4*$ug@2cavO4mF6=Q16n`Y_~A<7L2My1Fw&!L91kNe@|biWNRiu z*-2qA<9IX04B24N=JX1?bFY=(~W%3O1C&M#Ecc*<{d^0WBzcHNol?<2B zw=^~}w=xb_lCfRnMB)x>Gf2-sRtFYe2H$F_7T^tUwD-9k&!Pa)(2x)&SNvo~27bN? ztLT!mB|jZp)18zybByrZQ(P(k)m8BTD-T4|*eEZ*uWAxoQ?STb7TjVVs;5-xtDpd2 zvevqvy<<1GCavr0?&2K%IYYm7*K!j3$T2!c(-^Z!hfjy*ec}yfhhh>42qHB|yXKxn zcU}Q|M8~3yDbx~vyBo59lP*mrSmK%}Yrw6tGOK7RSSus#nTqPrqD($=E2#ukQM~=3 z*M)gibA5e7^DUzYfGlnBBKe%GR=w=~4di$c$!EHE=Fo;4$0nZlJpR+k5+zJlu96t1 z;A{D=#Kb_<-QgnfJoF-z0hsD<`+|KpGum&~(uVhl+3EoMY9EzczMR`Fxzs8rk9LNY zbGdSR7moVP2{4jq7C}m!F0i;K8$t5lUQ~E}&O*eZ)MQ2I(ql+l!{MM;`-l~`4Z9!} zQB;=FH*<$Qzw5I-pfKgv^j65@qK!m<;)lFHiW_2Smn_6H$t~hVj{sH20hLxAF?!l_ zJ6}3CP6w8k`-88@gx~psdkSDiky0kGJ?-5*3MZxYH*v`KD3V1rp4U&;Rfknr5WZTR zr{?RiC~=B6anel)LfB806JlNU$iXsBSG9o_%cC3Kq(ocbRLG=|nj+$hW1wJl)5?@kELQ#?dc6Onv zvb>lf#_C(#(+v@zCB|Ss8>9j-?ijVA*>*i&VxIzkw0`r?|HTp=NX79OY$o z3BiOcVHFisN2ZZaQugQX?Igf&AP2MsFcTW@!uETq-YZus^hzA5XyU=OhH1qD?vF;U z`c6*DPTH1ApVYm;?UaR3TqO-vp|kV;ZDazyb$c}t6p%-btN*}_(zs#bn-fl;(KAc=WFUOZCVn@g`!_PN zvvR5zxygn_p&I6IfIg&K25EoeJ({QByP<{$qG2XzZXt3l^9H|JNpsbw6(XR+v4lRAuyh&+IeaOY33e79-#CCdqEc1>*f|%B)jb$RBn@=4 zZ2|ovG8($}$ECGRgmhqnb_Aver1+X%b9#kTd^jXzj4K=~(YE_muF`1MdjjSGLNA=Pp6l64Jl=) zv~bgxnO5?s=IUyeO6MPmaZ&;-gjZ)v)8JyMh-5OQHt%I7?ONJMui)nCll3}OQbTs9 zJ0@qtP7SY^q~lPoAYu@0DkQ40bw=_9`aHSv2Wh+Jha3Hbh1d_GNK#N{P|}5sKAC1e zmQtndoSNg4At7Lrl~ zD#!wcME7c;GRTlc?8_-ygOH@0(1}u%h3P2VkafBb>vC5hs{Q%36DwqZ~$n&0_q zLB(Xxr_E&Na+BkJd>xctLgRDQ9VuYhlhiYmjmZs}sjwTs0eqA9|F;OFA9Z zV-cJ)UWynA(&A8>cyOTwL}e3Cw|TKfjAA(N7Op62&h^`FgpU=g6i&Nbk`~jSGb+0= zUHj|Tvr`Pbr#Mu3QxMRDR?LQol09*7wF3>IxoMKE6z|sYgm&#^Tp+5$pX1;O4ZAy@ zB5r*5{C)e&n~XLBh|3x0&Bno7IIAs>kR~+V3%pq#cUB^) zN0A7%rencwbvFtwx9GAM&WH6MunQK~)YG{~6FIh6q}4MVsWgH3PamfHYE4TeU1qDC z*dJkk^sP0k+eY@aNWOWTsX30lpgDAYXA0zVVae6fi&dWi?6D2Ld-3=<%#IsUiO)E` z`f%W8Lm;*oVxka}=Jc7f944W zs%{J{o2wd*srF zS!Stu>`03V)hrX1=J)IY zAqAA6yRha2O`rscE)&H~5dV09fx5(sNOy10^t$SXmvM1s%^e&abeHe*e#3qt1&Q4P zFao`B2e|;RPO_5W*jypzQY`IetY zkbD#TD}_HkKcdp7ek@ZtgvpLg>m_MKywsUR{D3^gHVVJw?W}E$l!ti`I_cr~ z*Re8)h~e15NZ92TlDh{p?9#H9@GA%#y-(t6FQwm=_wueUgwn-%v>2RH#=Wl2MF|9qRH3^Z?fmD8~K;jb~;SZ!RwVl2Gb0mcAfFvckRXQ z&Ca7?^wtm5V{QxNbIfLB(gp5~#(fVjQGEWe)WPL4WR=LXK`gaTA069%?UCt{=+zFr zde~SX?mrc3xPJ6w*7y0SL(8}oCU?X_^=g8#wt6`BMrM^4eMJpxa3OxSXs4JhJ>kr< z_N}wframRLw{_+rLmTr)byNb4VLx<0X;!-`mr;ADZOi#(UExANR^%h!Tirp)qTo)g z!%z@^kmP9CLcG}Vr`AP~I_8_s-c`d6B`?HQ)bCSaG2vcZZW{7@j(QCPcl9hVrWKvn zXX$qZ*vN+jf*&~1n@k5%6L4jrN4N1(OTo6+@PNq$z)xLpVz1Wfq0v{yW)UxlX-Y+%GI5rKy?7S%UJ=f4X{)}-{)+|^W|9hZ~2d~D!=e?M4uKj6b({(F|Y8 zu`t&{pwjSzZMnphFN9K_WBBAa5bxIZiJgoDFCdduV|}e=ZD?(x*s|IG z&Bcu90WODjSBC#E(bjbo>jargjzEEZjQWI#9HK3C@OPDdG6dc|*GhVpmpXr!bv3iLnvPh0bfrP2`70h9E704{OUlNgZ_(CMv5vCSRrZv+8Sz${6J9qLrY4x=W80%X%_a~gZ^6Z4q`6)YeMR! z8>j~-{?7u}j(nP5a|aD=dSd`nUm!krc&vLS=U#kBuG(sihR2U0SUp_DRddjVeV>uu z3X>Peh#*IZ9>#o<=4SfcA`qQg(Xz%r3tbg;i;ckeXj55=4aroc2(}*^6BChKeWlJv zEJ3(Cdf;KCgNpvM_h~DpYxjC+drd@J0^}IJo{!!J+)Ex8)?2Ix# zuz~LzyDP|Vxi^A}b=QxWpgzlP5+jubggiMI_!F|+L4=rcg$b>!U2~PP=2JM&nF zHM$W%?0es`au|kOhwI!|5S;kkB|g@BL(gQDjUxIcQoD`~SmH~)L!xzlk`ljTKNvvN z|J-qU@}QW|1kQb*BCF2}Im&UUJ{h&1bl1mR&VvAqk=X~{Jmfjgt4xEgpr`ID$TK;p zzg=*61AK_>Je!e91u$qft0b&p1(O0>VxI0nSm|bPCgvo#w-_!O>y&NBQqw@SY)gRu zD5|!x)2IzAX1eer??kJqOf>*Jy^w5Zxu@;ICCJLorendp?<2;a&ZUULy5#OfFP6NN zeE-?GaK19W{NY^w3@vd9tCpMWNPQV4Z3cE6<^ItP-*9h~Z88!RuRB}f%E_<0kt;~w zW7|%(j6AoBSE7*B#4ZcI#foUXm~g!$E+N0p5_F3Ns7uwDO0$-*fOm zNh~mTQbOW@XXl68%2o$#%rPL9&Y;c5GO@aJLivhvT^smD+Yi{1%X(;jbi8}cMqs0{J|E}hho>U_$RfVC!rJJX}SBI8Weorj~O_LS8|eBZcsT`-H%>o zIo4okP3$eXOqWhM%mJyh=2hB-c)__kMNfP4KQ?7&zh@t#lFH`V>B1LAOSWXuE{qIgE~^&o|0#1!@4 z9}vfd3B#%=WGdSg-TNT9Z4UHW8RT6D7&k4P=tNYFZa)>>C5(iRr8;sm%?r$E)(Ffc zmF$Ht!|302eDD)A`Y@$LTgiQBodz5I9Y^S>KB4B|{r$w;Os{j}d#@(Nx9@l{Z_HTS zFQ1c{WA+>rU@9~^?x%o1%LXOs0->#aE2^{2Q7d7;sDaOEM1b?HDtFBe4uG-nHI%6(gPFx?1m)m(xs@6U`Onze6 zE%0Bc_4vlULX<>KOklXCoRMlxKGNfco(}F$Id^?yK*EHP=aMp`5U;mD^Myvk#DR*3 z_@>N+=3@$@5jA4G!k);dOZ9A(n?80{gx;}A-bURGhyBgj#`I8>mjBz}SeuSPc5fue zC#kV2m#KEME}t56I17qOju`xa{?rm=x411XuMHiX_;0}BEF=aIs)31^P~5YT#7*c0 zB8V`>Q&1(7UlLj!`~vYT!;GDT8M>+ed;NSH_wv8ikmZ1w~=t-Z9tAtdmCyGG~`$p4u_6=})W0EjjB{BA@3{v0J+* zen>*1%Y3g%eGHOFG$akGGrFRq&G8d%FSw)jJ>c`nir^V0z2}>5IJ@O~Y!;gMB1UT1 zx?!K0JRYi7P*kV53-~80VLqMsT9%|8NRqQVlr$beDl!Mbj00THQUCiw}W7k)3>O4Ekix3Z#~kWhbyeuw8pK6M31CY<$!$qR zB|GJjUQKxUNr{K;*`dzMii!|?q|3Tx^bT*0b1eS2@a*xt zt&%_E(?b&X@Ugs692S?Gb$4PGbIm{{!S&O{4qSuYwa@C=Ab#yVVdYo>AhGgzZ$;u> z2Ajj1>73DvOvl4fR4A(D0)QJuE4PVTP!~(#AN&h z8y_7%B9?I>g~LeFL4393GY9rFY}jW&NAwo^LU9_aNZ2-W0{hk`AWGS#ab=&SbHz%= z^pI6Xrp>YYQ*MYx;4C|7Flcrn=o^kuvQ5fOkQ7-jdUsZrl1XL-%dV7iO3QEW)1ezy zv?)mruxBpRy8i#Q?y5$M0q|;IXFFdT%H-$z#I!TWdW;$=1S8Ik#R4BA@HEB z)-HB=Wai9QrB$evL|5(86lyyD8V5z>IYO%+PfFuy0iF-CT|wn7@eqUXH)(fIhHpu# zzn4+FRW^Uxj)!fAg=;x$+18jO?PE&XUz@+ORiFqZ@}`4vlu50y1Etz&Bo~Tdo+E;1 z4_Z*Vmx3W*mP>^Bycyhbt*0Q{%iBo98oj&eGap*{-UDeSLmDHDFTBB4R^=E>quW&f z?Vdw_kg$Ta81W(WP1^AT?k)7$N0d2^-5MUC6nxJBPth@JW-a&hE2AK&Rv^Azo1siL zd!)W8rZYoD1S7eUGG=&$!R#5*EzA+ehm6SXg3LCyH?zK0`|l$=J>ER+yWj0Zn5Qku zlsysSW$d?PX;Dp`ZM&B-kH*^G;SrGRHwfrC^r;yI`n=&t-n#9?IO`g#brDvpf^xgM zCwIxL8e4$v93EkOAeMhJ@+c`7$Z*TyjLGMbx_rY|RedVm<~tmch82r?(6Mp~F+2^f z_KonegD>KH|9sSFCF^Vybgz}5M)~cBU=~9Z+ag7PHD|*KL|C@tmd&u_9Q#(fK_Y)@mO=|Bw`7vUAPw4&s%O1MPs~3swvt_W zL!4VVY31Ez^F0_M_cC5m4}UC82W@5~h8HEW^RG+u^-9Fi*2?7%B@!cNxyX;yGqxhf zuw}#&x#ZZ+5oe$w4uGQI!BpyNa^AH0T2A(BykFZQM#3=)qA;OPvC#)g7iy5C?6 z)SPq{tm7p2i}KirM`=th#+SCa>I9QVv|?4MlW&&dZ9j0)5$&ojdCLq9ZAW3|zU1#0 zkEc+ne1CixiZ5*2Q-O?gMTsJSB`=dI%R`+Y$Apvv^_LeBEdBC^wU1$D9B~YUG_W6m z7=Yn`5=E1yen=z{2;NbYl$!EzOhJfxvmqFYJfuhtcB;Z@adS*MDe>SdMTufe4_so3 zF(ZjE#-h#Xi&2Zt3f7j6e?pErSLj{XEH7yFaT#4Bj1!}27g!*=K{a**aFwYEwzHgO z2ureI3?W!bqF}JfifmCGJ@`yo*>WCLio09!m6!WSaFXQ=-gScH(;yc{I|Ki^Hc13T zJWchoW*iu_g6Fo$dGFxml$@?2#FP|D(bYDl`Bza+rX-G}Y8`KM&{(vq0Uzn%RjN&c~!QK42M3F*MC6Ik0;e zHR|iY(0gxUT)>CdSD!KLIIfxk;-g4@| z1$gn}Jr%I>k?ZikX+Dl6{+ThZ`rY;fD|AG0XTMXJ%e< za@lziRNqPk-O9c>D+SlgIyZ%M>(wx}8fVArAJ!wpPiQ0+ZmYCW56+Epz1wmSxu`yN zb^PWm9&)RTv976$f}LhQ(gY8pkC8$%=}91Y>PdcdB;?TpcX%=6(DxbijmThif=Kxj zXmrQs?Uf^^FT7n^FrNmpgB)-(d=mb<4zj~r9QSW*+!E2o^=Y!&+@znvP9n9Y^bDCw z;;CKAZ(+vh@RW2bFUeh$--7b@DF;hZeIHPvf#6kL(f$-^I7XQB@XiCcx6jO>K>PxP zP$d+tPKFZk2Mb6-BrQdOm*{9&%!Qmd`&k3uHpp<`Y{>n**O{(`7#RVox2_WRZORc& zWFgsQ4>ja%UnN81zwM#o+$Vk-xe0O#rct0 zDDCh(3GW+pMg?;Gdp+>cJ|Ep~sWeFG0!jzT(nDADu?_BXU6NA?Q64-9&abQZR>tOV z`%m;KhFu+27FgX?$t&h(NGDrA<|bqiOx!)!w3pY4Bt|x;=#E$1zs=bLF`jrxHk1&V z5-+g9SufW_4yhOz*9jor*}iCsKRA{6X0(6*#qIsnA^)sFcwebOezpe~={xDu{ruoa z>*VH?lb~z4NRQgHdO<-89aK`jaP}m$pT{DPX;>UZgvz2~fUM4#5M!fvJ|9dXW}hr+ zWAzZ@GuF`NNczKqGjtR2bR%RFS@5Qs97~3u6Z*%x5 zsfWGlPF>3+o4wUHES()cH+_(gVpW`fH>t4MtM;cVuK4RV>{=5;T9PU;RaU6AEemw*LTP*P#`Ahgz)><+#=IO1pA z!k)r1 z&A5GnxygE>ulJuB&ZN_UGWE7(&28sSc=QG$?Z#Jy^@2fl$GBwO_}W$~zDlqsmN>2q zHXvPTIymj#JKn!LL=?y=P(h;5*90l-cOSAd1~j_e2#&e zPP0Xw)EQGy<|ex9tUC+T$Ha0WY#U;00p&UEj<%o59bfL!^KKq40rb*K=dE4N234FL z$8A1Ki8i=|P8vC5AG2eo6!nkuw<<)AZz1ZdO)Re~lC3%vIcC{!do^07;kNJLECmz! zjCVVg+jxrmJ-Q4MdsJC!Ab>Uld3ZFayf8)w_p2 zz?Etr_YC3Hs78HMc!vCwwo)GanNlyV&;#x#ZGk~hf&Mzn@#{$e;TPim-Tr@^?D!q= z*RugXPaynd%`Z#qwTOS5NBAA%*ADWZrwslw?w9}JH5k91Irtsr*Dl_l-ROUr`-_8k z4a)!NP5&L>*Ottm&A@+|*2~L%4ZxqR!M`K?+MxHdQuLSoEV;i1;XjR@zeD`mSM{?l z|Cb5B@bNVefAszRKK`#gGCwuuUv`S{>hb@K>%W8i+CuSnkO1V@f&9{Z^E=3|y$yf= zrv_182l7X6#_!|*S~LFp_z9@59{;6Z;`i}?ElB>XJpX0s7_S@u|51nj9qiWv#ow8m ziS;_L|5QAGhxj$a`m@sUmp#37O}~b@f3JJ|j`M43$qP$@p- z>-Dxp}bf=o6S0;?$ak^IFE%V{JYiTN{^iUN~X`0B}6FSqe8pOAm;S(#?`hK z(TLJ}7E$-INf9=NT5i3&=v!KbUmnRfF3$nmUM{wwwititaiz)Gs6;pI_Ha z6regUo6`)?v8iW?^_}g`6mZx$17{tbfbk08pT|*xN!!+rl9IueN~Jb+%EG@Ah#zoBfm6!e?_IY4KkeeP8wYm;55uU0WN-VNaXyeUcG2`iC2!$A`UHX>fxt zwKw`hJPs-FEr-E`t&X(Kfj&B_bJ+`_%z)3O%9fmbb<@z8Dk&EI*jLA2tX}H2tdSpa zM+7tHIe=Eh_4$WWYPj#jn$|3>(ws!OkwuCmp!HzE_l9Lu)mzl^s+@IfjS^j@7@^k{ zu-cADN43G30VWnpI5nHDIw|#!`GJC@wcAxTdBU@Y(ir@qN|odv`#DOK*HFuWxa2ML z%;y<-3X#oMW2I+K3H7B+Rlj`{=VvqQP8Cm^@Jtu~R#aO>98Y=ruxzIXmhiM z784;RB*aKS224peKP1gm^ULr0f)ndtY>KJKmrEFpMuTwhn9>y6)lfa$J|8%2)#R*1 z_w_b|YitSmu|!W3k}lS7NMm%>o5aQ>T*KUoKOy`rE27Zsdzyd%0AN7>RaVgc`&l6` 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/github.com/andybalholm/cascadia/@v/v1.3.1.ziphash b/pkg/mod/cache/download/github.com/andybalholm/cascadia/@v/v1.3.1.ziphash new file mode 100644 index 000000000..6d0ba5ab1 --- /dev/null +++ b/pkg/mod/cache/download/github.com/andybalholm/cascadia/@v/v1.3.1.ziphash @@ -0,0 +1 @@ +h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= \ No newline at end of file diff --git a/pkg/mod/cache/download/github.com/davecgh/go-spew/@v/list b/pkg/mod/cache/download/github.com/davecgh/go-spew/@v/list new file mode 100644 index 000000000..795460fce --- /dev/null +++ b/pkg/mod/cache/download/github.com/davecgh/go-spew/@v/list @@ -0,0 +1 @@ +v1.1.0 diff --git a/pkg/mod/cache/download/github.com/davecgh/go-spew/@v/v1.1.0.mod b/pkg/mod/cache/download/github.com/davecgh/go-spew/@v/v1.1.0.mod new file mode 100644 index 000000000..5e4b0f5d7 --- /dev/null +++ b/pkg/mod/cache/download/github.com/davecgh/go-spew/@v/v1.1.0.mod @@ -0,0 +1 @@ +module github.com/davecgh/go-spew diff --git a/pkg/mod/cache/download/github.com/gernest/front/@v/list b/pkg/mod/cache/download/github.com/gernest/front/@v/list new file mode 100644 index 000000000..e666c2f05 --- /dev/null +++ b/pkg/mod/cache/download/github.com/gernest/front/@v/list @@ -0,0 +1 @@ +v0.0.0-20210301115436-8a0b0a782d0a diff --git a/pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.info b/pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.info new file mode 100644 index 000000000..e527e6f9b --- /dev/null +++ b/pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.info @@ -0,0 +1 @@ +{"Version":"v0.0.0-20210301115436-8a0b0a782d0a","Time":"2021-03-01T11:54:36Z"} \ No newline at end of file diff --git a/pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.lock b/pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.lock new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.mod b/pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.mod new file mode 100644 index 000000000..d0d89f508 --- /dev/null +++ b/pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.mod @@ -0,0 +1 @@ +module github.com/gernest/front diff --git a/pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.zip b/pkg/mod/cache/download/github.com/gernest/front/@v/v0.0.0-20210301115436-8a0b0a782d0a.zip new file mode 100644 index 0000000000000000000000000000000000000000..e2da9fef0a9627b48b85f34a8366eac244e1da12 GIT binary patch literal 5849 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 E0|hxXm;e9( literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/github.com/jackyzha0/hugo-obsidian/@v/v0.0.0-20220403030921-3ce308411ee3.ziphash b/pkg/mod/cache/download/github.com/jackyzha0/hugo-obsidian/@v/v0.0.0-20220403030921-3ce308411ee3.ziphash new file mode 100644 index 000000000..b7b51ca20 --- /dev/null +++ b/pkg/mod/cache/download/github.com/jackyzha0/hugo-obsidian/@v/v0.0.0-20220403030921-3ce308411ee3.ziphash @@ -0,0 +1 @@ +h1:MovdN2bkRb6YEAYarv6yNsKhSIYiI9FAeKhDcBwPvak= \ No newline at end of file diff --git a/pkg/mod/cache/download/github.com/pmezard/go-difflib/@v/list b/pkg/mod/cache/download/github.com/pmezard/go-difflib/@v/list new file mode 100644 index 000000000..0ec25f750 --- /dev/null +++ b/pkg/mod/cache/download/github.com/pmezard/go-difflib/@v/list @@ -0,0 +1 @@ +v1.0.0 diff --git a/pkg/mod/cache/download/github.com/pmezard/go-difflib/@v/v1.0.0.mod b/pkg/mod/cache/download/github.com/pmezard/go-difflib/@v/v1.0.0.mod new file mode 100644 index 000000000..a03051fbb --- /dev/null +++ b/pkg/mod/cache/download/github.com/pmezard/go-difflib/@v/v1.0.0.mod @@ -0,0 +1 @@ +module github.com/pmezard/go-difflib diff --git a/pkg/mod/cache/download/github.com/stretchr/objx/@v/list b/pkg/mod/cache/download/github.com/stretchr/objx/@v/list new file mode 100644 index 000000000..b82608c0b --- /dev/null +++ b/pkg/mod/cache/download/github.com/stretchr/objx/@v/list @@ -0,0 +1 @@ +v0.1.0 diff --git a/pkg/mod/cache/download/github.com/stretchr/objx/@v/v0.1.0.mod b/pkg/mod/cache/download/github.com/stretchr/objx/@v/v0.1.0.mod new file mode 100644 index 000000000..cbaa42114 --- /dev/null +++ b/pkg/mod/cache/download/github.com/stretchr/objx/@v/v0.1.0.mod @@ -0,0 +1 @@ +module github.com/stretchr/objx diff --git a/pkg/mod/cache/download/github.com/stretchr/testify/@v/list b/pkg/mod/cache/download/github.com/stretchr/testify/@v/list new file mode 100644 index 000000000..a20e2d82d --- /dev/null +++ b/pkg/mod/cache/download/github.com/stretchr/testify/@v/list @@ -0,0 +1 @@ +v1.7.0 diff --git a/pkg/mod/cache/download/github.com/stretchr/testify/@v/v1.7.0.mod b/pkg/mod/cache/download/github.com/stretchr/testify/@v/v1.7.0.mod new file mode 100644 index 000000000..ed0b50bf9 --- /dev/null +++ b/pkg/mod/cache/download/github.com/stretchr/testify/@v/v1.7.0.mod @@ -0,0 +1,10 @@ +module github.com/stretchr/testify + +go 1.13 + +require ( + github.com/davecgh/go-spew v1.1.0 + github.com/pmezard/go-difflib v1.0.0 + github.com/stretchr/objx v0.1.0 + gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c +) diff --git a/pkg/mod/cache/download/github.com/yuin/goldmark/@v/list b/pkg/mod/cache/download/github.com/yuin/goldmark/@v/list new file mode 100644 index 000000000..42b5eb39e --- /dev/null +++ b/pkg/mod/cache/download/github.com/yuin/goldmark/@v/list @@ -0,0 +1,2 @@ +v1.1.32 +v1.4.4 diff --git a/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.1.32.mod b/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.1.32.mod new file mode 100644 index 000000000..a10efcad5 --- /dev/null +++ b/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.1.32.mod @@ -0,0 +1,3 @@ +module github.com/yuin/goldmark + +go 1.13 diff --git a/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.info b/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.info new file mode 100644 index 000000000..6111e737e --- /dev/null +++ b/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.info @@ -0,0 +1 @@ +{"Version":"v1.4.4","Time":"2021-11-14T10:49:34Z"} \ No newline at end of file diff --git a/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.lock b/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.lock new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.mod b/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.mod new file mode 100644 index 000000000..27712f225 --- /dev/null +++ b/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.mod @@ -0,0 +1,3 @@ +module github.com/yuin/goldmark + +go 1.16 diff --git a/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.zip b/pkg/mod/cache/download/github.com/yuin/goldmark/@v/v1.4.4.zip new file mode 100644 index 0000000000000000000000000000000000000000..a8d2654f0ad18e848610214b4048b06bf51302ed GIT binary patch literal 273588 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 z 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

    t@Pc$$@AOn0e>%9LAKbiGoT@wG8)!ftdQ9G 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%0AKthkONvXTeTbNNUz`IwItr2Mv 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%0D%TKRZ0_W=esXBvT5se<;UMw{wyT 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ℑ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 z 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�Q@_@ZS!_W5Iagv2NSE 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≻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 z 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

      N$JvHUoTNy z)C*`7u%+7Z&mLkuc1to@s`aI*=vi z!qG9R(=t$=)4~pufLlp8;7-W~oAEqky|m)h2x*{1_`6K@31AXIdjNvE4?Shea|`7~ z6^Z~zCYefcxVd-flLRXP_DEwf=@GRVA}=!BvZJn8E&{s#cp@onlQ%#Kp_dkacStk} z`5~=4Y}|a{w5xugr?@)KZANelro20)B~9CDQZ$T{=Wk7IQ|^-y`K0XNb-d8nPvK-< zg9z4dzH^jRUhG;>W$9fl-&15K=B_ik)0^1uc3a5S5uj7BAFmG=kzH|nq;F7_EacBB z2@-B+{UT1V{jdL2CEf9e1zzmSuyVJ6AF5}U*%HYrX5o_w>who89kt9NGz9(um)_)K zkr-Wv9l!TMt|KEuevc@+u~m(#IzU4h&c9{Ax~G%`Dc|hDopZ8SROu5>{q=DDa(=fY ze)qAdLpvE>9PStZ0>?zQ(#ooYy?3Nj5wJ*H7(=n|ZYRIWTJc?-Shk|jVADCO$?w0H zT%>qi66{O$%iv>%BFwl%^JU^lQy-jLm4OjEZ53~|O#yLUjTksgd!}fjd183^oEl3Q zmcn;|De1~@rLP3oyx1p!&=)nqcaTC`WP|`dhy9t?FiZ6iZ0a6Q%G1t31#2tBs`F7Q z&w3@f8ISW=6cgG-zZ29b1-OLPluuXio(CAp`CVOk&AB1K9##$wZ(oTnenl|uH_^?; z(K|}JkTPD+x4ATLuU-L@r~(sX91P^$z^4%2T2^ zcuSfO|MccEabPZg0UlKr?2mI3Z);$npE)T6SrX}&D84Og&4ie%3KE9d;8-$7N zS$2Hkbh?pnwd0`t9Q=C`gav+{Bubv*M54f(jjdZhRixB-P+(AFTgSF6^QIK} zd-Kx8&G{izY7g)Ivzd(a5Q0~F6#{b`fNs+Xc5Sd|n|Y@Bi)bRlgCn%4LG2{2dRA1atS#5P{wpNAUHR$k3m+l} z(KIUAslEdG>x86ni2xfyHHK=jAv6 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x024/946 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x024/946 new file mode 100644 index 0000000000000000000000000000000000000000..5e34576ea6dd20db111e24f63409ae11c6bde158 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x027/107 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x027/107 new file mode 100644 index 0000000000000000000000000000000000000000..7f02a19e010095f00c1e96561f0dc3242dea82d4 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x029/017 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x029/017 new file mode 100644 index 0000000000000000000000000000000000000000..9c0d873a9500875890a4496c399f8ae703557801 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x030/831 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x030/831 new file mode 100644 index 0000000000000000000000000000000000000000..783072f485b0b5dd7af657bb0635253b8727aa2a GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/496 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/496 new file mode 100644 index 0000000000000000000000000000000000000000..75f6dd10831a55caad81e36bc7c8c564c9b776f3 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/497 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/497 new file mode 100644 index 0000000000000000000000000000000000000000..9c3a3dc890f6444ea155a3e7519f5033be4b7e9c GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/498 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/498 new file mode 100644 index 0000000000000000000000000000000000000000..899eb112a253e46c43153784934311bb0c3c0d8e GIT binary patch literal 8192 zcmV+bAphTQjN;#?6Tyb8JVF~pT070NK2tTK)cGceuVo4&Fok@*svVZy{d*@X?K);= z${TXb`jE5akwfJ=pE-Ci4i;L3hyHQ^S$_VX={qRWmn7~~yoDJwjFTKkM>D@jMC

      M6+F`07d?ccoPGZ|@zhfeFC>09MF*kys_fa1ge5o>uu@qFB%(;4n1KZ;zz zT8oKZz24s=TxK_BwV%*gpda&0MmpVJV&-7A>2#K!G#ZQk@2~o!Y9D(xMD030z zMBR_u!|-|@zFdW`u3Dj9>Y%~p)ad1lPc-=m3{M|ZNTe{%lq(TJYY~yCp5-G&Wn`|c zMxr|-bdM3K?}z-Mr!_&>Jd8pqQlm8=WVOA$!w5&!a?1YUnjBNgoUd+{?Aa;`R17N0 zvHN4&EBzD4wQ=CZ$GhXQ^S2||Y!WE`7s8AIVbSvHI0k>nir)0+oyYJN(SGh`6Yh;7 z{WyY-VE~}knhz(pFXY{o^95s|%IRl$$

      $~(iV7N*OE~OsmPdi-<<0wj>nxY=A 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/498.p/98 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x040/498.p/98 new file mode 100644 index 0000000000000000000000000000000000000000..81bd66a651bd1bc91ae2115eddd4954d138fa059 GIT binary patch literal 3136 zcmV-G48QYljN;#?6Tyb8JVF~pT070NK2tTK)cGceuVo4&Fok@*svVZy{d*@X?K);= z${TXb`jE5akwfJ=pE-Ci4i;L3hyHQ^S$_VX={qRWmn7~~yoDJwjFTKkM>D@jMC

      M6+F`07d?ccoPGZ|@zhfeFC>09MF*kys_fa1ge5o>uu@qFB%(;4n1KZ;zz zT8oKZz24s=TxK_BwV%*gpda&0MmpVJV&-7A>2#K!G#ZQk@2~o!Y9D(xMD030z zMBR_u!|-|@zFdW`u3Dj9>Y%~p)ad1lPc-=m3{M|ZNTe{%lq(TJYY~yCp5-G&Wn`|c zMxr|-bdM3K?}z-Mr!_&>Jd8pqQlm8=WVOA$!w5&!a?1YUnjBNgoUd+{?Aa;`R17N0 zvHN4&EBzD4wQ=CZ$GhXQ^S2||Y!WE`7s8AIVbSvHI0k>nir)0+oyYJN(SGh`6Yh;7 z{WyY-VE~}knhz(pFXY{o^95s|%IRl$$

      $~(iV7N*OE~OsmPdi-<<0wj>nxY=A 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/000 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/000 new file mode 100644 index 0000000000000000000000000000000000000000..d4b0b5f3d585e880905f926e50942cfe93537e2a GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/036 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/036 new file mode 100644 index 0000000000000000000000000000000000000000..0eea88c25303d918639c6c92e58227668fee905d GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/047 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/047 new file mode 100644 index 0000000000000000000000000000000000000000..e718fcc2c005090a76021c92147832eb9f84f08e GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/052 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/052 new file mode 100644 index 0000000000000000000000000000000000000000..60df44d1d35ceae09854129ca1cee4d203a5d791 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/054 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/054 new file mode 100644 index 0000000000000000000000000000000000000000..d3784f4aa0ab13a08dacd628500c74df1d4ede0c GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/097 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/097 new file mode 100644 index 0000000000000000000000000000000000000000..7bcba62ad2b144531bf5edaf1aca5112abd95cf5 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/113 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/113 new file mode 100644 index 0000000000000000000000000000000000000000..2c750c50b3313a3334b73cab479506d162792dcd GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/158.p/50 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/158.p/50 new file mode 100644 index 0000000000000000000000000000000000000000..c7496d4c664b0ed5a75b6d78089c6512698c7c47 GIT binary patch literal 1600 zcmV-G2EX|t>|L~r&?Bn%`kf0np*72M9@9O;K1yabXX$kFD!K9_qN5|$X^whWC5uF@ zxLR=*dJa$X5@59=Vw3k9`+nrJpcL3hz`PFvhYe$Vb7#3@Og?5Pqyne$Pu~Da{*v?@ zkPBZwUO-wKB(FEOGVFL5`j?b&`+_puH6s#8kM{GHJAN4YX^S@mePafSreq{hMc6@Sp=4_Ct4m!{Xzo z$^oQjNS4K0rNnGg4EZeOdurYtJ;e#@ktos&Qg?pmGn#^O$cw zDXPJ_D+#p_SH1Jd3Itm#KBJ@GX%?z%;PlGRA~lQNJ`Bhcc#^yG(8LS{6YFE8;&{3#(ZArk!`QCn=k?tKIX0Yaa&eDT+G8hf?DL!57wKbxv=3s&Q+>4m*(v z`qw9ZOTlz24BFWCH1Vxl=I571rW>6!#P^Cu1Vm`q#XN}w`enu`&lM`0^TE{>QhOuC zYW|JS)<7*g{I=ae3KEum!W`+LpNtWw-#33=a?aze$szcm+qcevq?Q?yu!jzYDVQT+f}Mg6RcEaHG3Tp7b4Cw`be}i$$Dh5i^)-j zm@o>FfS`7)Rd0?Uv)~C}%+b7*MRvn%T3f2Npv%3D3V;P!EY~wvDszIH%EDYo;U$+V zP2P@E`c%g(B)Z)hCJi7KMHLp_c{j#<_Q2He7op#hn?P53OYMXn$5F z9MFGK;Zs6VQqpsG((iOIjxm7@$9#Y=e7kFO{%+h#RBup4X!yMYTz5v^)!s}-kfJicz z7(mead684TPMbm*Rgi)s%3Eju%(!w8#uOg>@W>fj7BGN~89SMVy6A*a{mCuMzQ+v| z+(?Iy#7eRgHkdM{8*&S{ACBQDaZBo(qsS#ofo07xbxl&9KVzAek zlnJK>Ajq(9qrUNtah!uWOUq&P66RX`0~;rNB5#!UMN#HMt3Cdl3mL$aVQ`H*c|ka^ zh-CrTh17CB7`ndfdHYWo+=#*0)>A!J;GjMt8~}rP9k@sNY#xgXz?ymsmy7nrunt!` zXn=7OaIt#Wibl4C6k}R8ji}s#5aiiF2?68dC0os=q>eVrB{@&f2h za9l4*9!E99W7*=ce@xPc?>hPKlK1{RrBX}4Frqn!lwgY*Vr&DT=pho&P z-a})Ho_f%HB5^rM)&JsG*UhNExX^%v%={Tr(-Cmo*o?=yG|0a&-8@8ae|!?I*MuwTpP>) literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/158.p/52 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/158.p/52 new file mode 100644 index 0000000000000000000000000000000000000000..46b3f0ce453f53f5d99ec3e12c99da57b2fe40a1 GIT binary patch literal 1664 zcmV-`27mb?>|L~r&?Bn%`kf0np*72M9@9O;K1yabXX$kFD!K9_qN5|$X^whWC5uF@ zxLR=*dJa$X5@59=Vw3k9`+nrJpcL3hz`PFvhYe$Vb7#3@Og?5Pqyne$Pu~Da{*v?@ zkPBZwUO-wKB(FEOGVFL5`j?b&`+_puH6s#8kM{GHJAN4YX^S@mePafSreq{hMc6@Sp=4_Ct4m!{Xzo z$^oQjNS4K0rNnGg4EZeOdurYtJ;e#@ktos&Qg?pmGn#^O$cw zDXPJ_D+#p_SH1Jd3Itm#KBJ@GX%?z%;PlGRA~lQNJ`Bhcc#^yG(8LS{6YFE8;&{3#(ZArk!`QCn=k?tKIX0Yaa&eDT+G8hf?DL!57wKbxv=3s&Q+>4m*(v z`qw9ZOTlz24BFWCH1Vxl=I571rW>6!#P^Cu1Vm`q#XN}w`enu`&lM`0^TE{>QhOuC zYW|JS)<7*g{I=ae3KEum!W`+LpNtWw-#33=a?aze$szcm+qcevq?Q?yu!jzYDVQT+f}Mg6RcEaHG3Tp7b4Cw`be}i$$Dh5i^)-j zm@o>FfS`7)Rd0?Uv)~C}%+b7*MRvn%T3f2Npv%3D3V;P!EY~wvDszIH%EDYo;U$+V zP2P@E`c%g(B)Z)hCJi7KMHLp_c{j#<_Q2He7op#hn?P53OYMXn$5F z9MFGK;Zs6VQqpsG((iOIjxm7@$9#Y=e7kFO{%+h#RBup4X!yMYTz5v^)!s}-kfJicz z7(mead684TPMbm*Rgi)s%3Eju%(!w8#uOg>@W>fj7BGN~89SMVy6A*a{mCuMzQ+v| z+(?Iy#7eRgHkdM{8*&S{ACBQDaZBo(qsS#ofo07xbxl&9KVzAek zlnJK>Ajq(9qrUNtah!uWOUq&P66RX`0~;rNB5#!UMN#HMt3Cdl3mL$aVQ`H*c|ka^ zh-CrTh17CB7`ndfdHYWo+=#*0)>A!J;GjMt8~}rP9k@sNY#xgXz?ymsmy7nrunt!` zXn=7OaIt#Wibl4C6k}R8ji}s#5aiiF2?68dC0os=q>eVrB{@&f2h za9l4*9!E99W7*=ce@xPc?>hPKlK1{RrBX}4Frqn!lwgY*Vr&DT=pho&P z-a})Ho_f%HB5^rM)&JsG*UhNExX^%v%={Tr(-Cmo*o?=yG|0a&-8@8ae|!?I*Mwc;=xAQ zX5EG=uCaT9AVkWU-=Q)$$(z*jqbgRP@ejoPYFbR&zZ4L#_dO7%94t^3Rq6H`{Pk=z KH&VQ>Y*q|v*gTK` literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/2/000.p/158 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/2/000.p/158 new file mode 100644 index 0000000000000000000000000000000000000000..db4db4627ce4c8ef4d399f57eff836e379fcc1e0 GIT binary patch literal 5056 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 Me A Coffee + +## License + +The [BSD 3-Clause license][bsd], the same as the [Go language][golic]. Cascadia's license is [here][caslic]. + +[jquery]: http://jquery.com/ +[go]: http://golang.org/ +[cascadia]: https://github.com/andybalholm/cascadia +[cascadiacli]: https://github.com/suntong/cascadia +[bsd]: http://opensource.org/licenses/BSD-3-Clause +[golic]: http://golang.org/LICENSE +[caslic]: https://github.com/andybalholm/cascadia/blob/master/LICENSE +[doc]: https://pkg.go.dev/github.com/PuerkitoBio/goquery +[index]: http://api.jquery.com/index/ +[gonet]: https://github.com/golang/net/ +[html]: https://pkg.go.dev/golang.org/x/net/html +[wiki]: https://github.com/PuerkitoBio/goquery/wiki/Tips-and-tricks +[thatguystone]: https://github.com/thatguystone +[piotr]: https://github.com/piotrkowalczuk +[goq]: https://github.com/andrewstuart/goq +[thiemok]: https://github.com/thiemok +[djw]: https://github.com/davidjwilkins diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/array.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/array.go new file mode 100644 index 000000000..1b1f6cbe6 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/array.go @@ -0,0 +1,124 @@ +package goquery + +import ( + "golang.org/x/net/html" +) + +const ( + maxUint = ^uint(0) + maxInt = int(maxUint >> 1) + + // ToEnd is a special index value that can be used as end index in a call + // to Slice so that all elements are selected until the end of the Selection. + // It is equivalent to passing (*Selection).Length(). + ToEnd = maxInt +) + +// First reduces the set of matched elements to the first in the set. +// It returns a new Selection object, and an empty Selection object if the +// the selection is empty. +func (s *Selection) First() *Selection { + return s.Eq(0) +} + +// Last reduces the set of matched elements to the last in the set. +// It returns a new Selection object, and an empty Selection object if +// the selection is empty. +func (s *Selection) Last() *Selection { + return s.Eq(-1) +} + +// Eq reduces the set of matched elements to the one at the specified index. +// If a negative index is given, it counts backwards starting at the end of the +// set. It returns a new Selection object, and an empty Selection object if the +// index is invalid. +func (s *Selection) Eq(index int) *Selection { + if index < 0 { + index += len(s.Nodes) + } + + if index >= len(s.Nodes) || index < 0 { + return newEmptySelection(s.document) + } + + return s.Slice(index, index+1) +} + +// Slice reduces the set of matched elements to a subset specified by a range +// of indices. The start index is 0-based and indicates the index of the first +// element to select. The end index is 0-based and indicates the index at which +// the elements stop being selected (the end index is not selected). +// +// The indices may be negative, in which case they represent an offset from the +// end of the selection. +// +// The special value ToEnd may be specified as end index, in which case all elements +// until the end are selected. This works both for a positive and negative start +// index. +func (s *Selection) Slice(start, end int) *Selection { + if start < 0 { + start += len(s.Nodes) + } + if end == ToEnd { + end = len(s.Nodes) + } else if end < 0 { + end += len(s.Nodes) + } + return pushStack(s, s.Nodes[start:end]) +} + +// Get retrieves the underlying node at the specified index. +// Get without parameter is not implemented, since the node array is available +// on the Selection object. +func (s *Selection) Get(index int) *html.Node { + if index < 0 { + index += len(s.Nodes) // Negative index gets from the end + } + return s.Nodes[index] +} + +// Index returns the position of the first element within the Selection object +// relative to its sibling elements. +func (s *Selection) Index() int { + if len(s.Nodes) > 0 { + return newSingleSelection(s.Nodes[0], s.document).PrevAll().Length() + } + return -1 +} + +// IndexSelector returns the position of the first element within the +// Selection object relative to the elements matched by the selector, or -1 if +// not found. +func (s *Selection) IndexSelector(selector string) int { + if len(s.Nodes) > 0 { + sel := s.document.Find(selector) + return indexInSlice(sel.Nodes, s.Nodes[0]) + } + return -1 +} + +// IndexMatcher returns the position of the first element within the +// Selection object relative to the elements matched by the matcher, or -1 if +// not found. +func (s *Selection) IndexMatcher(m Matcher) int { + if len(s.Nodes) > 0 { + sel := s.document.FindMatcher(m) + return indexInSlice(sel.Nodes, s.Nodes[0]) + } + return -1 +} + +// IndexOfNode returns the position of the specified node within the Selection +// object, or -1 if not found. +func (s *Selection) IndexOfNode(node *html.Node) int { + return indexInSlice(s.Nodes, node) +} + +// IndexOfSelection returns the position of the first node in the specified +// Selection object within this Selection object, or -1 if not found. +func (s *Selection) IndexOfSelection(sel *Selection) int { + if sel != nil && len(sel.Nodes) > 0 { + return indexInSlice(s.Nodes, sel.Nodes[0]) + } + return -1 +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/array_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/array_test.go new file mode 100644 index 000000000..7857b38fb --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/array_test.go @@ -0,0 +1,234 @@ +package goquery + +import ( + "testing" +) + +func TestFirst(t *testing.T) { + sel := Doc().Find(".pvk-content").First() + assertLength(t, sel.Nodes, 1) +} + +func TestFirstEmpty(t *testing.T) { + sel := Doc().Find(".pvk-zzcontentzz").First() + assertLength(t, sel.Nodes, 0) +} + +func TestFirstInvalid(t *testing.T) { + sel := Doc().Find("").First() + assertLength(t, sel.Nodes, 0) +} + +func TestFirstRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.First().End() + assertEqual(t, sel, sel2) +} + +func TestLast(t *testing.T) { + sel := Doc().Find(".pvk-content").Last() + assertLength(t, sel.Nodes, 1) + + // Should contain Footer + foot := Doc().Find(".footer") + if !sel.Contains(foot.Nodes[0]) { + t.Error("Last .pvk-content should contain .footer.") + } +} + +func TestLastEmpty(t *testing.T) { + sel := Doc().Find(".pvk-zzcontentzz").Last() + assertLength(t, sel.Nodes, 0) +} + +func TestLastInvalid(t *testing.T) { + sel := Doc().Find("").Last() + assertLength(t, sel.Nodes, 0) +} + +func TestLastRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.Last().End() + assertEqual(t, sel, sel2) +} + +func TestEq(t *testing.T) { + sel := Doc().Find(".pvk-content").Eq(1) + assertLength(t, sel.Nodes, 1) +} + +func TestEqNegative(t *testing.T) { + sel := Doc().Find(".pvk-content").Eq(-1) + assertLength(t, sel.Nodes, 1) + + // Should contain Footer + foot := Doc().Find(".footer") + if !sel.Contains(foot.Nodes[0]) { + t.Error("Index -1 of .pvk-content should contain .footer.") + } +} + +func TestEqEmpty(t *testing.T) { + sel := Doc().Find("something_random_that_does_not_exists").Eq(0) + assertLength(t, sel.Nodes, 0) +} + +func TestEqInvalid(t *testing.T) { + sel := Doc().Find("").Eq(0) + assertLength(t, sel.Nodes, 0) +} + +func TestEqInvalidPositive(t *testing.T) { + sel := Doc().Find(".pvk-content").Eq(3) + assertLength(t, sel.Nodes, 0) +} + +func TestEqInvalidNegative(t *testing.T) { + sel := Doc().Find(".pvk-content").Eq(-4) + assertLength(t, sel.Nodes, 0) +} + +func TestEqRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.Eq(1).End() + assertEqual(t, sel, sel2) +} + +func TestSlice(t *testing.T) { + sel := Doc().Find(".pvk-content").Slice(0, 2) + + assertLength(t, sel.Nodes, 2) + assertSelectionIs(t, sel, "#pc1", "#pc2") +} + +func TestSliceToEnd(t *testing.T) { + sel := Doc().Find(".pvk-content").Slice(1, ToEnd) + + assertLength(t, sel.Nodes, 2) + assertSelectionIs(t, sel.Eq(0), "#pc2") + if _, ok := sel.Eq(1).Attr("id"); ok { + t.Error("Want no attribute ID, got one") + } +} + +func TestSliceEmpty(t *testing.T) { + defer assertPanic(t) + Doc().Find("x").Slice(0, 2) +} + +func TestSliceInvalid(t *testing.T) { + defer assertPanic(t) + Doc().Find("").Slice(0, 2) +} + +func TestSliceInvalidToEnd(t *testing.T) { + defer assertPanic(t) + Doc().Find("").Slice(2, ToEnd) +} + +func TestSliceOutOfBounds(t *testing.T) { + defer assertPanic(t) + Doc().Find(".pvk-content").Slice(2, 12) +} + +func TestNegativeSliceStart(t *testing.T) { + sel := Doc().Find(".container-fluid").Slice(-2, 3) + assertLength(t, sel.Nodes, 1) + assertSelectionIs(t, sel.Eq(0), "#cf3") +} + +func TestNegativeSliceEnd(t *testing.T) { + sel := Doc().Find(".container-fluid").Slice(1, -1) + assertLength(t, sel.Nodes, 2) + assertSelectionIs(t, sel.Eq(0), "#cf2") + assertSelectionIs(t, sel.Eq(1), "#cf3") +} + +func TestNegativeSliceBoth(t *testing.T) { + sel := Doc().Find(".container-fluid").Slice(-3, -1) + assertLength(t, sel.Nodes, 2) + assertSelectionIs(t, sel.Eq(0), "#cf2") + assertSelectionIs(t, sel.Eq(1), "#cf3") +} + +func TestNegativeSliceToEnd(t *testing.T) { + sel := Doc().Find(".container-fluid").Slice(-3, ToEnd) + assertLength(t, sel.Nodes, 3) + assertSelectionIs(t, sel, "#cf2", "#cf3", "#cf4") +} + +func TestNegativeSliceOutOfBounds(t *testing.T) { + defer assertPanic(t) + Doc().Find(".container-fluid").Slice(-12, -7) +} + +func TestSliceRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.Slice(0, 2).End() + assertEqual(t, sel, sel2) +} + +func TestGet(t *testing.T) { + sel := Doc().Find(".pvk-content") + node := sel.Get(1) + if sel.Nodes[1] != node { + t.Errorf("Expected node %v to be %v.", node, sel.Nodes[1]) + } +} + +func TestGetNegative(t *testing.T) { + sel := Doc().Find(".pvk-content") + node := sel.Get(-3) + if sel.Nodes[0] != node { + t.Errorf("Expected node %v to be %v.", node, sel.Nodes[0]) + } +} + +func TestGetInvalid(t *testing.T) { + defer assertPanic(t) + sel := Doc().Find(".pvk-content") + sel.Get(129) +} + +func TestIndex(t *testing.T) { + sel := Doc().Find(".pvk-content") + if i := sel.Index(); i != 1 { + t.Errorf("Expected index of 1, got %v.", i) + } +} + +func TestIndexSelector(t *testing.T) { + sel := Doc().Find(".hero-unit") + if i := sel.IndexSelector("div"); i != 4 { + t.Errorf("Expected index of 4, got %v.", i) + } +} + +func TestIndexSelectorInvalid(t *testing.T) { + sel := Doc().Find(".hero-unit") + if i := sel.IndexSelector(""); i != -1 { + t.Errorf("Expected index of -1, got %v.", i) + } +} + +func TestIndexOfNode(t *testing.T) { + sel := Doc().Find("div.pvk-gutter") + if i := sel.IndexOfNode(sel.Nodes[1]); i != 1 { + t.Errorf("Expected index of 1, got %v.", i) + } +} + +func TestIndexOfNilNode(t *testing.T) { + sel := Doc().Find("div.pvk-gutter") + if i := sel.IndexOfNode(nil); i != -1 { + t.Errorf("Expected index of -1, got %v.", i) + } +} + +func TestIndexOfSelection(t *testing.T) { + sel := Doc().Find("div") + sel2 := Doc().Find(".hero-unit") + if i := sel.IndexOfSelection(sel2); i != 4 { + t.Errorf("Expected index of 4, got %v.", i) + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.0 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.0 new file mode 100644 index 000000000..eb5847831 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.0 @@ -0,0 +1,436 @@ +PASS +BenchmarkFirst 20000000 92.9 ns/op +BenchmarkLast 20000000 91.6 ns/op +BenchmarkEq 20000000 90.6 ns/op +BenchmarkSlice 20000000 86.7 ns/op +BenchmarkGet 1000000000 2.14 ns/op +BenchmarkIndex 500000 5308 ns/op +--- BENCH: BenchmarkIndex + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 +BenchmarkIndexSelector 50000 54962 ns/op +--- BENCH: BenchmarkIndexSelector + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 +BenchmarkIndexOfNode 100000000 11.4 ns/op +--- BENCH: BenchmarkIndexOfNode + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 +BenchmarkIndexOfSelection 100000000 12.1 ns/op +--- BENCH: BenchmarkIndexOfSelection + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 +BenchmarkMetalReviewExample 5000 327144 ns/op +--- BENCH: BenchmarkMetalReviewExample + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + + bench_example_test.go:41: MetalReviewExample=10 + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + ... [output truncated] +BenchmarkAdd 50000 52945 ns/op +--- BENCH: BenchmarkAdd + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 +BenchmarkAddSelection 10000000 205 ns/op +--- BENCH: BenchmarkAddSelection + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 +BenchmarkAddNodes 10000000 203 ns/op +--- BENCH: BenchmarkAddNodes + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 +BenchmarkAndSelf 1000000 2639 ns/op +--- BENCH: BenchmarkAndSelf + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 +BenchmarkFilter 50000 30182 ns/op +--- BENCH: BenchmarkFilter + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 +BenchmarkNot 50000 34855 ns/op +--- BENCH: BenchmarkNot + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 +BenchmarkFilterFunction 50000 66052 ns/op +--- BENCH: BenchmarkFilterFunction + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 +BenchmarkNotFunction 50000 69721 ns/op +--- BENCH: BenchmarkNotFunction + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 +BenchmarkFilterNodes 50000 66077 ns/op +--- BENCH: BenchmarkFilterNodes + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 +BenchmarkNotNodes 20000 80021 ns/op +--- BENCH: BenchmarkNotNodes + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 +BenchmarkFilterSelection 50000 66256 ns/op +--- BENCH: BenchmarkFilterSelection + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 +BenchmarkNotSelection 20000 79568 ns/op +--- BENCH: BenchmarkNotSelection + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 +BenchmarkHas 5000 569441 ns/op +--- BENCH: BenchmarkHas + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 +BenchmarkHasNodes 10000 230585 ns/op +--- BENCH: BenchmarkHasNodes + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 +BenchmarkHasSelection 10000 231470 ns/op +--- BENCH: BenchmarkHasSelection + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 +BenchmarkEnd 500000000 4.65 ns/op +--- BENCH: BenchmarkEnd + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 +BenchmarkEach 200000 9558 ns/op +--- BENCH: BenchmarkEach + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 +BenchmarkMap 100000 16809 ns/op +--- BENCH: BenchmarkMap + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 +BenchmarkAttr 50000000 37.5 ns/op +--- BENCH: BenchmarkAttr + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading +BenchmarkText 100000 18583 ns/op +BenchmarkLength 2000000000 0.80 ns/op +--- BENCH: BenchmarkLength + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 +BenchmarkHtml 5000000 666 ns/op +BenchmarkIs 50000 34328 ns/op +--- BENCH: BenchmarkIs + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true +BenchmarkIsPositional 50000 32423 ns/op +--- BENCH: BenchmarkIsPositional + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true +BenchmarkIsFunction 1000000 2707 ns/op +--- BENCH: BenchmarkIsFunction + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true +BenchmarkIsSelection 50000 66976 ns/op +--- BENCH: BenchmarkIsSelection + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true +BenchmarkIsNodes 50000 66740 ns/op +--- BENCH: BenchmarkIsNodes + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true +BenchmarkHasClass 5000 701722 ns/op +--- BENCH: BenchmarkHasClass + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true +BenchmarkContains 100000000 11.9 ns/op +--- BENCH: BenchmarkContains + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true +BenchmarkFind 50000 55444 ns/op +--- BENCH: BenchmarkFind + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 +BenchmarkFindWithinSelection 10000 127984 ns/op +--- BENCH: BenchmarkFindWithinSelection + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 +BenchmarkFindSelection 5000 355944 ns/op +--- BENCH: BenchmarkFindSelection + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 +BenchmarkFindNodes 5000 355596 ns/op +--- BENCH: BenchmarkFindNodes + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 +BenchmarkContents 500000 5656 ns/op +--- BENCH: BenchmarkContents + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 +BenchmarkContentsFiltered 200000 9007 ns/op +--- BENCH: BenchmarkContentsFiltered + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 +BenchmarkChildren 1000000 1237 ns/op +--- BENCH: BenchmarkChildren + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 +BenchmarkChildrenFiltered 500000 5613 ns/op +--- BENCH: BenchmarkChildrenFiltered + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 +BenchmarkParent 50000 47026 ns/op +--- BENCH: BenchmarkParent + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 +BenchmarkParentFiltered 50000 51438 ns/op +--- BENCH: BenchmarkParentFiltered + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 +BenchmarkParents 20000 91820 ns/op +--- BENCH: BenchmarkParents + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 +BenchmarkParentsFiltered 20000 95156 ns/op +--- BENCH: BenchmarkParentsFiltered + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 +BenchmarkParentsUntil 10000 134383 ns/op +--- BENCH: BenchmarkParentsUntil + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 +BenchmarkParentsUntilSelection 10000 235456 ns/op +--- BENCH: BenchmarkParentsUntilSelection + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 +BenchmarkParentsUntilNodes 10000 235936 ns/op +--- BENCH: BenchmarkParentsUntilNodes + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 +BenchmarkParentsFilteredUntil 50000 32451 ns/op +--- BENCH: BenchmarkParentsFilteredUntil + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 +BenchmarkParentsFilteredUntilSelection 50000 30570 ns/op +--- BENCH: BenchmarkParentsFilteredUntilSelection + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 +BenchmarkParentsFilteredUntilNodes 50000 30729 ns/op +--- BENCH: BenchmarkParentsFilteredUntilNodes + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 +BenchmarkSiblings 10000 106704 ns/op +--- BENCH: BenchmarkSiblings + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 +BenchmarkSiblingsFiltered 10000 115592 ns/op +--- BENCH: BenchmarkSiblingsFiltered + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 +BenchmarkNext 50000 54449 ns/op +--- BENCH: BenchmarkNext + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 +BenchmarkNextFiltered 50000 58503 ns/op +--- BENCH: BenchmarkNextFiltered + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 +BenchmarkNextAll 20000 77698 ns/op +--- BENCH: BenchmarkNextAll + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 +BenchmarkNextAllFiltered 20000 85034 ns/op +--- BENCH: BenchmarkNextAllFiltered + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 +BenchmarkPrev 50000 56458 ns/op +--- BENCH: BenchmarkPrev + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 +BenchmarkPrevFiltered 50000 60163 ns/op +--- BENCH: BenchmarkPrevFiltered + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 +BenchmarkPrevAll 50000 47679 ns/op +--- BENCH: BenchmarkPrevAll + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 +BenchmarkPrevAllFiltered 50000 51563 ns/op +--- BENCH: BenchmarkPrevAllFiltered + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 +BenchmarkNextUntil 10000 213998 ns/op +--- BENCH: BenchmarkNextUntil + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 +BenchmarkNextUntilSelection 10000 140720 ns/op +--- BENCH: BenchmarkNextUntilSelection + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 +BenchmarkNextUntilNodes 20000 90702 ns/op +--- BENCH: BenchmarkNextUntilNodes + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 +BenchmarkPrevUntil 5000 456039 ns/op +--- BENCH: BenchmarkPrevUntil + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 +BenchmarkPrevUntilSelection 10000 167944 ns/op +--- BENCH: BenchmarkPrevUntilSelection + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 +BenchmarkPrevUntilNodes 20000 82059 ns/op +--- BENCH: BenchmarkPrevUntilNodes + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 +BenchmarkNextFilteredUntil 10000 150883 ns/op +--- BENCH: BenchmarkNextFilteredUntil + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 +BenchmarkNextFilteredUntilSelection 10000 146578 ns/op +--- BENCH: BenchmarkNextFilteredUntilSelection + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 +BenchmarkNextFilteredUntilNodes 10000 148284 ns/op +--- BENCH: BenchmarkNextFilteredUntilNodes + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 +BenchmarkPrevFilteredUntil 10000 154303 ns/op +--- BENCH: BenchmarkPrevFilteredUntil + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 +BenchmarkPrevFilteredUntilSelection 10000 149062 ns/op +--- BENCH: BenchmarkPrevFilteredUntilSelection + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 +BenchmarkPrevFilteredUntilNodes 10000 150584 ns/op +--- BENCH: BenchmarkPrevFilteredUntilNodes + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 +ok github.com/PuerkitoBio/goquery 188.326s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.1 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.1 new file mode 100644 index 000000000..c0d9d06c1 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.1 @@ -0,0 +1,438 @@ +PASS +BenchmarkFirst 20000000 96.2 ns/op +BenchmarkLast 20000000 95.8 ns/op +BenchmarkEq 20000000 94.4 ns/op +BenchmarkSlice 20000000 89.9 ns/op +BenchmarkGet 1000000000 2.31 ns/op +BenchmarkIndex 1000000 1911 ns/op +--- BENCH: BenchmarkIndex + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 +BenchmarkIndexSelector 50000 56034 ns/op +--- BENCH: BenchmarkIndexSelector + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 +BenchmarkIndexOfNode 100000000 11.8 ns/op +--- BENCH: BenchmarkIndexOfNode + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 +BenchmarkIndexOfSelection 100000000 12.1 ns/op +--- BENCH: BenchmarkIndexOfSelection + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 +BenchmarkMetalReviewExample 5000 336823 ns/op +--- BENCH: BenchmarkMetalReviewExample + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + + bench_example_test.go:41: MetalReviewExample=10 + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + ... [output truncated] +BenchmarkAdd 50000 54709 ns/op +--- BENCH: BenchmarkAdd + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 +BenchmarkAddSelection 10000000 209 ns/op +--- BENCH: BenchmarkAddSelection + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 +BenchmarkAddNodes 10000000 202 ns/op +--- BENCH: BenchmarkAddNodes + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 +BenchmarkAndSelf 1000000 2634 ns/op +--- BENCH: BenchmarkAndSelf + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 +BenchmarkFilter 50000 31049 ns/op +--- BENCH: BenchmarkFilter + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 +BenchmarkNot 50000 35167 ns/op +--- BENCH: BenchmarkNot + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 +BenchmarkFilterFunction 50000 68974 ns/op +--- BENCH: BenchmarkFilterFunction + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 +BenchmarkNotFunction 50000 74760 ns/op +--- BENCH: BenchmarkNotFunction + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 +BenchmarkFilterNodes 50000 68670 ns/op +--- BENCH: BenchmarkFilterNodes + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 +BenchmarkNotNodes 20000 81357 ns/op +--- BENCH: BenchmarkNotNodes + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 +BenchmarkFilterSelection 50000 68388 ns/op +--- BENCH: BenchmarkFilterSelection + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 +BenchmarkNotSelection 20000 82108 ns/op +--- BENCH: BenchmarkNotSelection + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 +BenchmarkHas 5000 582934 ns/op +--- BENCH: BenchmarkHas + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 +BenchmarkHasNodes 10000 241602 ns/op +--- BENCH: BenchmarkHasNodes + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 +BenchmarkHasSelection 10000 243612 ns/op +--- BENCH: BenchmarkHasSelection + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 +BenchmarkEnd 500000000 4.14 ns/op +--- BENCH: BenchmarkEnd + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 +BenchmarkEach 200000 9848 ns/op +--- BENCH: BenchmarkEach + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 +BenchmarkMap 100000 17569 ns/op +--- BENCH: BenchmarkMap + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 +BenchmarkAttr 50000000 37.6 ns/op +--- BENCH: BenchmarkAttr + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading +BenchmarkText 100000 19345 ns/op +BenchmarkLength 2000000000 0.80 ns/op +--- BENCH: BenchmarkLength + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 +BenchmarkHtml 5000000 688 ns/op +BenchmarkIs 50000 35061 ns/op +--- BENCH: BenchmarkIs + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true +BenchmarkIsPositional 50000 32789 ns/op +--- BENCH: BenchmarkIsPositional + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true +BenchmarkIsFunction 1000000 2816 ns/op +--- BENCH: BenchmarkIsFunction + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true +BenchmarkIsSelection 50000 68272 ns/op +--- BENCH: BenchmarkIsSelection + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true +BenchmarkIsNodes 50000 68107 ns/op +--- BENCH: BenchmarkIsNodes + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true +BenchmarkHasClass 5000 709386 ns/op +--- BENCH: BenchmarkHasClass + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true +BenchmarkContains 100000000 12.4 ns/op +--- BENCH: BenchmarkContains + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true +BenchmarkFind 50000 56342 ns/op +--- BENCH: BenchmarkFind + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 +BenchmarkFindWithinSelection 10000 131878 ns/op +--- BENCH: BenchmarkFindWithinSelection + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 +BenchmarkFindSelection 5000 374240 ns/op +--- BENCH: BenchmarkFindSelection + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 +BenchmarkFindNodes 5000 374447 ns/op +--- BENCH: BenchmarkFindNodes + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 +BenchmarkContents 200000 9721 ns/op +--- BENCH: BenchmarkContents + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 +BenchmarkContentsFiltered 200000 12909 ns/op +--- BENCH: BenchmarkContentsFiltered + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 +BenchmarkChildren 1000000 1869 ns/op +--- BENCH: BenchmarkChildren + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 +BenchmarkChildrenFiltered 500000 5941 ns/op +--- BENCH: BenchmarkChildrenFiltered + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 +BenchmarkParent 50000 46223 ns/op +--- BENCH: BenchmarkParent + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 +BenchmarkParentFiltered 50000 51452 ns/op +--- BENCH: BenchmarkParentFiltered + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 +BenchmarkParents 20000 93967 ns/op +--- BENCH: BenchmarkParents + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 +BenchmarkParentsFiltered 20000 97617 ns/op +--- BENCH: BenchmarkParentsFiltered + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 +BenchmarkParentsUntil 10000 138898 ns/op +--- BENCH: BenchmarkParentsUntil + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 +BenchmarkParentsUntilSelection 10000 247817 ns/op +--- BENCH: BenchmarkParentsUntilSelection + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 +BenchmarkParentsUntilNodes 10000 246055 ns/op +--- BENCH: BenchmarkParentsUntilNodes + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 +BenchmarkParentsFilteredUntil 50000 33201 ns/op +--- BENCH: BenchmarkParentsFilteredUntil + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 +BenchmarkParentsFilteredUntilSelection 50000 31486 ns/op +--- BENCH: BenchmarkParentsFilteredUntilSelection + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 +BenchmarkParentsFilteredUntilNodes 50000 31754 ns/op +--- BENCH: BenchmarkParentsFilteredUntilNodes + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 +BenchmarkSiblings 20000 94749 ns/op +--- BENCH: BenchmarkSiblings + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 +BenchmarkSiblingsFiltered 10000 103926 ns/op +--- BENCH: BenchmarkSiblingsFiltered + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 +BenchmarkNext 50000 33782 ns/op +--- BENCH: BenchmarkNext + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 +BenchmarkNextFiltered 50000 37108 ns/op +--- BENCH: BenchmarkNextFiltered + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 +BenchmarkNextAll 50000 64769 ns/op +--- BENCH: BenchmarkNextAll + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 +BenchmarkNextAllFiltered 50000 71050 ns/op +--- BENCH: BenchmarkNextAllFiltered + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 +BenchmarkPrev 50000 33908 ns/op +--- BENCH: BenchmarkPrev + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 +BenchmarkPrevFiltered 50000 37353 ns/op +--- BENCH: BenchmarkPrevFiltered + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 +BenchmarkPrevAll 50000 31056 ns/op +--- BENCH: BenchmarkPrevAll + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 +BenchmarkPrevAllFiltered 50000 34286 ns/op +--- BENCH: BenchmarkPrevAllFiltered + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 +BenchmarkNextUntil 10000 202553 ns/op +--- BENCH: BenchmarkNextUntil + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 +BenchmarkNextUntilSelection 20000 98693 ns/op +--- BENCH: BenchmarkNextUntilSelection + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 +BenchmarkNextUntilNodes 50000 45532 ns/op +--- BENCH: BenchmarkNextUntilNodes + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 +BenchmarkPrevUntil 5000 454378 ns/op +--- BENCH: BenchmarkPrevUntil + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 +BenchmarkPrevUntilSelection 10000 123594 ns/op +--- BENCH: BenchmarkPrevUntilSelection + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 +BenchmarkPrevUntilNodes 50000 37509 ns/op +--- BENCH: BenchmarkPrevUntilNodes + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 +BenchmarkNextFilteredUntil 10000 109317 ns/op +--- BENCH: BenchmarkNextFilteredUntil + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 +BenchmarkNextFilteredUntilSelection 10000 105959 ns/op +--- BENCH: BenchmarkNextFilteredUntilSelection + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 +BenchmarkNextFilteredUntilNodes 10000 107132 ns/op +--- BENCH: BenchmarkNextFilteredUntilNodes + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 +BenchmarkPrevFilteredUntil 10000 114474 ns/op +--- BENCH: BenchmarkPrevFilteredUntil + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 +BenchmarkPrevFilteredUntilSelection 10000 107592 ns/op +--- BENCH: BenchmarkPrevFilteredUntilSelection + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 +BenchmarkPrevFilteredUntilNodes 10000 107495 ns/op +--- BENCH: BenchmarkPrevFilteredUntilNodes + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 +ok github.com/PuerkitoBio/goquery 187.652s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.1-v0.2.1-go1.1rc1.svg b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.1-v0.2.1-go1.1rc1.svg new file mode 100644 index 000000000..849a70b79 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.1.1-v0.2.1-go1.1rc1.svg @@ -0,0 +1,405 @@ + + + + + + + + ++0.10% + +BenchmarkFirst + + +-0.10% + +BenchmarkLast + + ++2.86% + +BenchmarkEq + + ++2.67% + +BenchmarkSlice + + +-10.82% + +BenchmarkGet + + +-44.06% + +BenchmarkIndex + + +-52.26% + +BenchmarkIndexSelector + + +-9.32% + +BenchmarkIndexOfNode + + +-2.48% + +BenchmarkIndexOfSelection + + +-34.96% + +BenchmarkMetalReviewExample + + +-59.16% + +BenchmarkAdd + + ++0.00% + +BenchmarkAddSelection + + ++3.47% + +BenchmarkAddNodes + + +-2.51% + +BenchmarkAndSelf + + +-13.96% + +BenchmarkFilter + + +-14.53% + +BenchmarkNot + + +-3.81% + +BenchmarkFilterFunction + + +-2.83% + +BenchmarkNotFunction + + +-4.63% + +BenchmarkFilterNodes + + +-2.32% + +BenchmarkNotNodes + + +-4.23% + +BenchmarkFilterSelection + + +-3.31% + +BenchmarkNotSelection + + +-33.69% + +BenchmarkHas + + +-4.53% + +BenchmarkHasNodes + + +-5.30% + +BenchmarkHasSelection + + ++11.35% + +BenchmarkEnd + + +-3.33% + +BenchmarkEach + + +-9.16% + +BenchmarkMap + + +-19.15% + +BenchmarkAttr + + +-3.24% + +BenchmarkText + + +-61.25% + +BenchmarkLength + + +-11.92% + +BenchmarkHtml + + +-16.46% + +BenchmarkIs + + +-27.31% + +BenchmarkIsPositional + + +-13.49% + +BenchmarkIsFunction + + +-1.71% + +BenchmarkIsSelection + + +-3.03% + +BenchmarkIsNodes + + +-20.30% + +BenchmarkHasClass + + +-11.29% + +BenchmarkContains + + +-50.88% + +BenchmarkFind + + +-45.28% + +BenchmarkFindWithinSelection + + ++22.95% + +BenchmarkFindSelection + + ++22.68% + +BenchmarkFindNodes + + +-65.08% + +BenchmarkContents + + +-59.77% + +BenchmarkContentsFiltered + + +-64.31% + +BenchmarkChildren + + +-39.56% + +BenchmarkChildrenFiltered + + +-6.61% + +BenchmarkParent + + +-10.92% + +BenchmarkParentFiltered + + +-1.72% + +BenchmarkParents + + +-2.37% + +BenchmarkParentsFiltered + + +-47.60% + +BenchmarkParentsUntil + + +-36.39% + +BenchmarkParentsUntilSelection + + +-35.99% + +BenchmarkParentsUntilNodes + + +-48.84% + +BenchmarkParentsFilteredUntil + + +-32.75% + +BenchmarkParentsFilteredUntilSelection + + +-33.12% + +BenchmarkParentsFilteredUntilNodes + + +-29.78% + +BenchmarkSiblings + + +-30.89% + +BenchmarkSiblingsFiltered + + +-68.19% + +BenchmarkNext + + +-66.59% + +BenchmarkNextFiltered + + +-31.08% + +BenchmarkNextAll + + +-30.03% + +BenchmarkNextAllFiltered + + +-68.32% + +BenchmarkPrev + + +-66.65% + +BenchmarkPrevFiltered + + +-43.33% + +BenchmarkPrevAll + + +-43.24% + +BenchmarkPrevAllFiltered + + +-54.27% + +BenchmarkNextUntil + + +-37.90% + +BenchmarkNextUntilSelection + + +-43.21% + +BenchmarkNextUntilNodes + + +-49.33% + +BenchmarkPrevUntil + + +-37.02% + +BenchmarkPrevUntilSelection + + +-44.59% + +BenchmarkPrevUntilNodes + + +-57.79% + +BenchmarkNextFilteredUntil + + +-36.61% + +BenchmarkNextFilteredUntilSelection + + +-37.81% + +BenchmarkNextFilteredUntilNodes + + +-59.21% + +BenchmarkPrevFilteredUntil + + +-36.20% + +BenchmarkPrevFilteredUntilSelection + + +-36.05% + +BenchmarkPrevFilteredUntilNodes + + diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.0 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.0 new file mode 100644 index 000000000..3ea8dcb19 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.0 @@ -0,0 +1,459 @@ +PASS +BenchmarkFirst 20000000 94.3 ns/op +BenchmarkLast 20000000 94.7 ns/op +BenchmarkEq 20000000 93.7 ns/op +BenchmarkSlice 20000000 89.9 ns/op +BenchmarkGet 1000000000 2.72 ns/op +BenchmarkIndex 1000000 1834 ns/op +--- BENCH: BenchmarkIndex +bench_array_test.go:73: Index=3 +bench_array_test.go:73: Index=3 +bench_array_test.go:73: Index=3 +bench_array_test.go:73: Index=3 +BenchmarkIndexSelector 50000 53958 ns/op +--- BENCH: BenchmarkIndexSelector +bench_array_test.go:85: IndexSelector=4 +bench_array_test.go:85: IndexSelector=4 +bench_array_test.go:85: IndexSelector=4 +bench_array_test.go:85: IndexSelector=4 +BenchmarkIndexOfNode 100000000 10.1 ns/op +--- BENCH: BenchmarkIndexOfNode +bench_array_test.go:99: IndexOfNode=2 +bench_array_test.go:99: IndexOfNode=2 +bench_array_test.go:99: IndexOfNode=2 +bench_array_test.go:99: IndexOfNode=2 +bench_array_test.go:99: IndexOfNode=2 +BenchmarkIndexOfSelection 100000000 10.9 ns/op +--- BENCH: BenchmarkIndexOfSelection +bench_array_test.go:111: IndexOfSelection=2 +bench_array_test.go:111: IndexOfSelection=2 +bench_array_test.go:111: IndexOfSelection=2 +bench_array_test.go:111: IndexOfSelection=2 +bench_array_test.go:111: IndexOfSelection=2 +BenchmarkMetalReviewExample 5000 326712 ns/op +--- BENCH: BenchmarkMetalReviewExample +bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + + bench_example_test.go:41: MetalReviewExample=10 +bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + ... [output truncated] +BenchmarkAdd 50000 51776 ns/op +--- BENCH: BenchmarkAdd +bench_expand_test.go:20: Add=43 +bench_expand_test.go:20: Add=43 +bench_expand_test.go:20: Add=43 +bench_expand_test.go:20: Add=43 +BenchmarkAddSelection 10000000 196 ns/op +--- BENCH: BenchmarkAddSelection +bench_expand_test.go:37: AddSelection=43 +bench_expand_test.go:37: AddSelection=43 +bench_expand_test.go:37: AddSelection=43 +bench_expand_test.go:37: AddSelection=43 +bench_expand_test.go:37: AddSelection=43 +BenchmarkAddNodes 10000000 191 ns/op +--- BENCH: BenchmarkAddNodes +bench_expand_test.go:55: AddNodes=43 +bench_expand_test.go:55: AddNodes=43 +bench_expand_test.go:55: AddNodes=43 +bench_expand_test.go:55: AddNodes=43 +bench_expand_test.go:55: AddNodes=43 +BenchmarkAndSelf 1000000 2495 ns/op +--- BENCH: BenchmarkAndSelf +bench_expand_test.go:71: AndSelf=44 +bench_expand_test.go:71: AndSelf=44 +bench_expand_test.go:71: AndSelf=44 +bench_expand_test.go:71: AndSelf=44 +BenchmarkFilter 50000 30974 ns/op +--- BENCH: BenchmarkFilter +bench_filter_test.go:20: Filter=13 +bench_filter_test.go:20: Filter=13 +bench_filter_test.go:20: Filter=13 +bench_filter_test.go:20: Filter=13 +BenchmarkNot 50000 35322 ns/op +--- BENCH: BenchmarkNot +bench_filter_test.go:36: Not=371 +bench_filter_test.go:36: Not=371 +bench_filter_test.go:36: Not=371 +bench_filter_test.go:36: Not=371 +BenchmarkFilterFunction 50000 65644 ns/op +--- BENCH: BenchmarkFilterFunction +bench_filter_test.go:55: FilterFunction=112 +bench_filter_test.go:55: FilterFunction=112 +bench_filter_test.go:55: FilterFunction=112 +bench_filter_test.go:55: FilterFunction=112 +BenchmarkNotFunction 50000 69245 ns/op +--- BENCH: BenchmarkNotFunction +bench_filter_test.go:74: NotFunction=261 +bench_filter_test.go:74: NotFunction=261 +bench_filter_test.go:74: NotFunction=261 +bench_filter_test.go:74: NotFunction=261 +BenchmarkFilterNodes 50000 64824 ns/op +--- BENCH: BenchmarkFilterNodes +bench_filter_test.go:92: FilterNodes=2 +bench_filter_test.go:92: FilterNodes=2 +bench_filter_test.go:92: FilterNodes=2 +bench_filter_test.go:92: FilterNodes=2 +BenchmarkNotNodes 20000 76247 ns/op +--- BENCH: BenchmarkNotNodes +bench_filter_test.go:110: NotNodes=360 +bench_filter_test.go:110: NotNodes=360 +bench_filter_test.go:110: NotNodes=360 +bench_filter_test.go:110: NotNodes=360 +BenchmarkFilterSelection 50000 66154 ns/op +--- BENCH: BenchmarkFilterSelection +bench_filter_test.go:127: FilterSelection=2 +bench_filter_test.go:127: FilterSelection=2 +bench_filter_test.go:127: FilterSelection=2 +bench_filter_test.go:127: FilterSelection=2 +BenchmarkNotSelection 20000 76336 ns/op +--- BENCH: BenchmarkNotSelection +bench_filter_test.go:144: NotSelection=360 +bench_filter_test.go:144: NotSelection=360 +bench_filter_test.go:144: NotSelection=360 +bench_filter_test.go:144: NotSelection=360 +BenchmarkHas 5000 569495 ns/op +--- BENCH: BenchmarkHas +bench_filter_test.go:160: Has=13 +bench_filter_test.go:160: Has=13 +bench_filter_test.go:160: Has=13 +BenchmarkHasNodes 10000 227059 ns/op +--- BENCH: BenchmarkHasNodes +bench_filter_test.go:178: HasNodes=15 +bench_filter_test.go:178: HasNodes=15 +bench_filter_test.go:178: HasNodes=15 +BenchmarkHasSelection 10000 227167 ns/op +--- BENCH: BenchmarkHasSelection +bench_filter_test.go:195: HasSelection=15 +bench_filter_test.go:195: HasSelection=15 +bench_filter_test.go:195: HasSelection=15 +BenchmarkEnd 500000000 3.99 ns/op +--- BENCH: BenchmarkEnd +bench_filter_test.go:211: End=373 +bench_filter_test.go:211: End=373 +bench_filter_test.go:211: End=373 +bench_filter_test.go:211: End=373 +bench_filter_test.go:211: End=373 +bench_filter_test.go:211: End=373 +BenchmarkEach 200000 9354 ns/op +--- BENCH: BenchmarkEach +bench_iteration_test.go:22: Each=59 +bench_iteration_test.go:22: Each=59 +bench_iteration_test.go:22: Each=59 +bench_iteration_test.go:22: Each=59 +BenchmarkMap 100000 16557 ns/op +--- BENCH: BenchmarkMap +bench_iteration_test.go:41: Map=59 +bench_iteration_test.go:41: Map=59 +bench_iteration_test.go:41: Map=59 +bench_iteration_test.go:41: Map=59 +BenchmarkAttr 50000000 36.4 ns/op +--- BENCH: BenchmarkAttr +bench_property_test.go:16: Attr=firstHeading +bench_property_test.go:16: Attr=firstHeading +bench_property_test.go:16: Attr=firstHeading +bench_property_test.go:16: Attr=firstHeading +bench_property_test.go:16: Attr=firstHeading +BenchmarkText 100000 18473 ns/op +BenchmarkLength 2000000000 0.76 ns/op +--- BENCH: BenchmarkLength +bench_property_test.go:37: Length=14 +bench_property_test.go:37: Length=14 +bench_property_test.go:37: Length=14 +bench_property_test.go:37: Length=14 +bench_property_test.go:37: Length=14 +bench_property_test.go:37: Length=14 +BenchmarkHtml 5000000 666 ns/op +BenchmarkIs 50000 35174 ns/op +--- BENCH: BenchmarkIs +bench_query_test.go:16: Is=true +bench_query_test.go:16: Is=true +bench_query_test.go:16: Is=true +bench_query_test.go:16: Is=true +BenchmarkIsPositional 50000 31814 ns/op +--- BENCH: BenchmarkIsPositional +bench_query_test.go:28: IsPositional=true +bench_query_test.go:28: IsPositional=true +bench_query_test.go:28: IsPositional=true +bench_query_test.go:28: IsPositional=true +BenchmarkIsFunction 1000000 2754 ns/op +--- BENCH: BenchmarkIsFunction +bench_query_test.go:43: IsFunction=true +bench_query_test.go:43: IsFunction=true +bench_query_test.go:43: IsFunction=true +bench_query_test.go:43: IsFunction=true +BenchmarkIsSelection 50000 66260 ns/op +--- BENCH: BenchmarkIsSelection +bench_query_test.go:56: IsSelection=true +bench_query_test.go:56: IsSelection=true +bench_query_test.go:56: IsSelection=true +bench_query_test.go:56: IsSelection=true +BenchmarkIsNodes 50000 64682 ns/op +--- BENCH: BenchmarkIsNodes +bench_query_test.go:70: IsNodes=true +bench_query_test.go:70: IsNodes=true +bench_query_test.go:70: IsNodes=true +bench_query_test.go:70: IsNodes=true +BenchmarkHasClass 5000 672953 ns/op +--- BENCH: BenchmarkHasClass +bench_query_test.go:82: HasClass=true +bench_query_test.go:82: HasClass=true +bench_query_test.go:82: HasClass=true +BenchmarkContains 100000000 11.3 ns/op +--- BENCH: BenchmarkContains +bench_query_test.go:96: Contains=true +bench_query_test.go:96: Contains=true +bench_query_test.go:96: Contains=true +bench_query_test.go:96: Contains=true +bench_query_test.go:96: Contains=true +BenchmarkFind 50000 53780 ns/op +--- BENCH: BenchmarkFind +bench_traversal_test.go:18: Find=41 +bench_traversal_test.go:18: Find=41 +bench_traversal_test.go:18: Find=41 +bench_traversal_test.go:18: Find=41 +BenchmarkFindWithinSelection 10000 125963 ns/op +--- BENCH: BenchmarkFindWithinSelection +bench_traversal_test.go:34: FindWithinSelection=39 +bench_traversal_test.go:34: FindWithinSelection=39 +bench_traversal_test.go:34: FindWithinSelection=39 +BenchmarkFindSelection 5000 357318 ns/op +--- BENCH: BenchmarkFindSelection +bench_traversal_test.go:51: FindSelection=73 +bench_traversal_test.go:51: FindSelection=73 +bench_traversal_test.go:51: FindSelection=73 +BenchmarkFindNodes 5000 357587 ns/op +--- BENCH: BenchmarkFindNodes +bench_traversal_test.go:69: FindNodes=73 +bench_traversal_test.go:69: FindNodes=73 +bench_traversal_test.go:69: FindNodes=73 +BenchmarkContents 200000 9135 ns/op +--- BENCH: BenchmarkContents +bench_traversal_test.go:85: Contents=16 +bench_traversal_test.go:85: Contents=16 +bench_traversal_test.go:85: Contents=16 +bench_traversal_test.go:85: Contents=16 +BenchmarkContentsFiltered 200000 12383 ns/op +--- BENCH: BenchmarkContentsFiltered +bench_traversal_test.go:101: ContentsFiltered=1 +bench_traversal_test.go:101: ContentsFiltered=1 +bench_traversal_test.go:101: ContentsFiltered=1 +bench_traversal_test.go:101: ContentsFiltered=1 +BenchmarkChildren 1000000 1809 ns/op +--- BENCH: BenchmarkChildren +bench_traversal_test.go:117: Children=2 +bench_traversal_test.go:117: Children=2 +bench_traversal_test.go:117: Children=2 +bench_traversal_test.go:117: Children=2 +BenchmarkChildrenFiltered 500000 5814 ns/op +--- BENCH: BenchmarkChildrenFiltered +bench_traversal_test.go:133: ChildrenFiltered=2 +bench_traversal_test.go:133: ChildrenFiltered=2 +bench_traversal_test.go:133: ChildrenFiltered=2 +bench_traversal_test.go:133: ChildrenFiltered=2 +BenchmarkParent 50000 44810 ns/op +--- BENCH: BenchmarkParent +bench_traversal_test.go:149: Parent=55 +bench_traversal_test.go:149: Parent=55 +bench_traversal_test.go:149: Parent=55 +bench_traversal_test.go:149: Parent=55 +BenchmarkParentFiltered 50000 48795 ns/op +--- BENCH: BenchmarkParentFiltered +bench_traversal_test.go:165: ParentFiltered=4 +bench_traversal_test.go:165: ParentFiltered=4 +bench_traversal_test.go:165: ParentFiltered=4 +bench_traversal_test.go:165: ParentFiltered=4 +BenchmarkParents 20000 89102 ns/op +--- BENCH: BenchmarkParents +bench_traversal_test.go:181: Parents=73 +bench_traversal_test.go:181: Parents=73 +bench_traversal_test.go:181: Parents=73 +bench_traversal_test.go:181: Parents=73 +BenchmarkParentsFiltered 20000 93953 ns/op +--- BENCH: BenchmarkParentsFiltered +bench_traversal_test.go:197: ParentsFiltered=18 +bench_traversal_test.go:197: ParentsFiltered=18 +bench_traversal_test.go:197: ParentsFiltered=18 +bench_traversal_test.go:197: ParentsFiltered=18 +BenchmarkParentsUntil 10000 130783 ns/op +--- BENCH: BenchmarkParentsUntil +bench_traversal_test.go:213: ParentsUntil=52 +bench_traversal_test.go:213: ParentsUntil=52 +bench_traversal_test.go:213: ParentsUntil=52 +BenchmarkParentsUntilSelection 10000 231797 ns/op +--- BENCH: BenchmarkParentsUntilSelection +bench_traversal_test.go:230: ParentsUntilSelection=70 +bench_traversal_test.go:230: ParentsUntilSelection=70 +bench_traversal_test.go:230: ParentsUntilSelection=70 +BenchmarkParentsUntilNodes 10000 233761 ns/op +--- BENCH: BenchmarkParentsUntilNodes +bench_traversal_test.go:248: ParentsUntilNodes=70 +bench_traversal_test.go:248: ParentsUntilNodes=70 +bench_traversal_test.go:248: ParentsUntilNodes=70 +BenchmarkParentsFilteredUntil 50000 31360 ns/op +--- BENCH: BenchmarkParentsFilteredUntil +bench_traversal_test.go:264: ParentsFilteredUntil=2 +bench_traversal_test.go:264: ParentsFilteredUntil=2 +bench_traversal_test.go:264: ParentsFilteredUntil=2 +bench_traversal_test.go:264: ParentsFilteredUntil=2 +BenchmarkParentsFilteredUntilSelection 50000 30272 ns/op +--- BENCH: BenchmarkParentsFilteredUntilSelection +bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 +bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 +bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 +bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 +BenchmarkParentsFilteredUntilNodes 50000 30327 ns/op +--- BENCH: BenchmarkParentsFilteredUntilNodes +bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 +bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 +bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 +bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 +BenchmarkSiblings 20000 89862 ns/op +--- BENCH: BenchmarkSiblings +bench_traversal_test.go:315: Siblings=293 +bench_traversal_test.go:315: Siblings=293 +bench_traversal_test.go:315: Siblings=293 +bench_traversal_test.go:315: Siblings=293 +BenchmarkSiblingsFiltered 20000 97948 ns/op +--- BENCH: BenchmarkSiblingsFiltered +bench_traversal_test.go:331: SiblingsFiltered=46 +bench_traversal_test.go:331: SiblingsFiltered=46 +bench_traversal_test.go:331: SiblingsFiltered=46 +bench_traversal_test.go:331: SiblingsFiltered=46 +BenchmarkNext 50000 31975 ns/op +--- BENCH: BenchmarkNext +bench_traversal_test.go:347: Next=49 +bench_traversal_test.go:347: Next=49 +bench_traversal_test.go:347: Next=49 +bench_traversal_test.go:347: Next=49 +BenchmarkNextFiltered 50000 34887 ns/op +--- BENCH: BenchmarkNextFiltered +bench_traversal_test.go:363: NextFiltered=6 +bench_traversal_test.go:363: NextFiltered=6 +bench_traversal_test.go:363: NextFiltered=6 +bench_traversal_test.go:363: NextFiltered=6 +BenchmarkNextAll 50000 60734 ns/op +--- BENCH: BenchmarkNextAll +bench_traversal_test.go:379: NextAll=234 +bench_traversal_test.go:379: NextAll=234 +bench_traversal_test.go:379: NextAll=234 +bench_traversal_test.go:379: NextAll=234 +BenchmarkNextAllFiltered 50000 67428 ns/op +--- BENCH: BenchmarkNextAllFiltered +bench_traversal_test.go:395: NextAllFiltered=33 +bench_traversal_test.go:395: NextAllFiltered=33 +bench_traversal_test.go:395: NextAllFiltered=33 +bench_traversal_test.go:395: NextAllFiltered=33 +BenchmarkPrev 50000 32399 ns/op +--- BENCH: BenchmarkPrev +bench_traversal_test.go:411: Prev=49 +bench_traversal_test.go:411: Prev=49 +bench_traversal_test.go:411: Prev=49 +bench_traversal_test.go:411: Prev=49 +BenchmarkPrevFiltered 50000 34944 ns/op +--- BENCH: BenchmarkPrevFiltered +bench_traversal_test.go:429: PrevFiltered=7 +bench_traversal_test.go:429: PrevFiltered=7 +bench_traversal_test.go:429: PrevFiltered=7 +bench_traversal_test.go:429: PrevFiltered=7 +BenchmarkPrevAll 100000 29360 ns/op +--- BENCH: BenchmarkPrevAll +bench_traversal_test.go:445: PrevAll=78 +bench_traversal_test.go:445: PrevAll=78 +bench_traversal_test.go:445: PrevAll=78 +bench_traversal_test.go:445: PrevAll=78 +BenchmarkPrevAllFiltered 50000 32291 ns/op +--- BENCH: BenchmarkPrevAllFiltered +bench_traversal_test.go:461: PrevAllFiltered=6 +bench_traversal_test.go:461: PrevAllFiltered=6 +bench_traversal_test.go:461: PrevAllFiltered=6 +bench_traversal_test.go:461: PrevAllFiltered=6 +BenchmarkNextUntil 10000 191890 ns/op +--- BENCH: BenchmarkNextUntil +bench_traversal_test.go:477: NextUntil=84 +bench_traversal_test.go:477: NextUntil=84 +bench_traversal_test.go:477: NextUntil=84 +BenchmarkNextUntilSelection 20000 92054 ns/op +--- BENCH: BenchmarkNextUntilSelection +bench_traversal_test.go:494: NextUntilSelection=42 +bench_traversal_test.go:494: NextUntilSelection=42 +bench_traversal_test.go:494: NextUntilSelection=42 +bench_traversal_test.go:494: NextUntilSelection=42 +BenchmarkNextUntilNodes 50000 43401 ns/op +--- BENCH: BenchmarkNextUntilNodes +bench_traversal_test.go:512: NextUntilNodes=12 +bench_traversal_test.go:512: NextUntilNodes=12 +bench_traversal_test.go:512: NextUntilNodes=12 +bench_traversal_test.go:512: NextUntilNodes=12 +BenchmarkPrevUntil 5000 433383 ns/op +--- BENCH: BenchmarkPrevUntil +bench_traversal_test.go:528: PrevUntil=238 +bench_traversal_test.go:528: PrevUntil=238 +bench_traversal_test.go:528: PrevUntil=238 +BenchmarkPrevUntilSelection 10000 116423 ns/op +--- BENCH: BenchmarkPrevUntilSelection +bench_traversal_test.go:545: PrevUntilSelection=49 +bench_traversal_test.go:545: PrevUntilSelection=49 +bench_traversal_test.go:545: PrevUntilSelection=49 +BenchmarkPrevUntilNodes 50000 35338 ns/op +--- BENCH: BenchmarkPrevUntilNodes +bench_traversal_test.go:563: PrevUntilNodes=11 +bench_traversal_test.go:563: PrevUntilNodes=11 +bench_traversal_test.go:563: PrevUntilNodes=11 +bench_traversal_test.go:563: PrevUntilNodes=11 +BenchmarkNextFilteredUntil 10000 104686 ns/op +--- BENCH: BenchmarkNextFilteredUntil +bench_traversal_test.go:579: NextFilteredUntil=22 +bench_traversal_test.go:579: NextFilteredUntil=22 +bench_traversal_test.go:579: NextFilteredUntil=22 +BenchmarkNextFilteredUntilSelection 20000 99485 ns/op +--- BENCH: BenchmarkNextFilteredUntilSelection +bench_traversal_test.go:596: NextFilteredUntilSelection=22 +bench_traversal_test.go:596: NextFilteredUntilSelection=22 +bench_traversal_test.go:596: NextFilteredUntilSelection=22 +bench_traversal_test.go:596: NextFilteredUntilSelection=22 +BenchmarkNextFilteredUntilNodes 20000 99452 ns/op +--- BENCH: BenchmarkNextFilteredUntilNodes +bench_traversal_test.go:614: NextFilteredUntilNodes=22 +bench_traversal_test.go:614: NextFilteredUntilNodes=22 +bench_traversal_test.go:614: NextFilteredUntilNodes=22 +bench_traversal_test.go:614: NextFilteredUntilNodes=22 +BenchmarkPrevFilteredUntil 10000 112640 ns/op +--- BENCH: BenchmarkPrevFilteredUntil +bench_traversal_test.go:630: PrevFilteredUntil=20 +bench_traversal_test.go:630: PrevFilteredUntil=20 +bench_traversal_test.go:630: PrevFilteredUntil=20 +BenchmarkPrevFilteredUntilSelection 10000 103702 ns/op +--- BENCH: BenchmarkPrevFilteredUntilSelection +bench_traversal_test.go:647: PrevFilteredUntilSelection=20 +bench_traversal_test.go:647: PrevFilteredUntilSelection=20 +bench_traversal_test.go:647: PrevFilteredUntilSelection=20 +BenchmarkPrevFilteredUntilNodes 10000 103277 ns/op +--- BENCH: BenchmarkPrevFilteredUntilNodes +bench_traversal_test.go:665: PrevFilteredUntilNodes=20 +bench_traversal_test.go:665: PrevFilteredUntilNodes=20 +bench_traversal_test.go:665: PrevFilteredUntilNodes=20 +BenchmarkClosest 500000 6530 ns/op +--- BENCH: BenchmarkClosest +bench_traversal_test.go:681: Closest=2 +bench_traversal_test.go:681: Closest=2 +bench_traversal_test.go:681: Closest=2 +bench_traversal_test.go:681: Closest=2 +BenchmarkClosestSelection 1000000 1135 ns/op +--- BENCH: BenchmarkClosestSelection +bench_traversal_test.go:698: ClosestSelection=2 +bench_traversal_test.go:698: ClosestSelection=2 +bench_traversal_test.go:698: ClosestSelection=2 +bench_traversal_test.go:698: ClosestSelection=2 +BenchmarkClosestNodes 1000000 1133 ns/op +--- BENCH: BenchmarkClosestNodes +bench_traversal_test.go:715: ClosestNodes=2 +bench_traversal_test.go:715: ClosestNodes=2 +bench_traversal_test.go:715: ClosestNodes=2 +bench_traversal_test.go:715: ClosestNodes=2 +ok github.com/PuerkitoBio/goquery 192.541s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.0-v0.2.1-go1.1rc1.svg b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.0-v0.2.1-go1.1rc1.svg new file mode 100644 index 000000000..eaabc618b --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.0-v0.2.1-go1.1rc1.svg @@ -0,0 +1,420 @@ + + + + + + + + ++2.12% + +BenchmarkFirst + + ++1.06% + +BenchmarkLast + + ++3.63% + +BenchmarkEq + + ++2.67% + +BenchmarkSlice + + +-24.26% + +BenchmarkGet + + +-41.71% + +BenchmarkIndex + + +-50.42% + +BenchmarkIndexSelector + + ++5.94% + +BenchmarkIndexOfNode + + ++8.26% + +BenchmarkIndexOfSelection + + +-32.94% + +BenchmarkMetalReviewExample + + +-56.84% + +BenchmarkAdd + + ++6.63% + +BenchmarkAddSelection + + ++9.42% + +BenchmarkAddNodes + + ++2.93% + +BenchmarkAndSelf + + +-13.75% + +BenchmarkFilter + + +-14.90% + +BenchmarkNot + + ++1.07% + +BenchmarkFilterFunction + + ++4.91% + +BenchmarkNotFunction + + ++1.03% + +BenchmarkFilterNodes + + ++4.22% + +BenchmarkNotNodes + + +-1.00% + +BenchmarkFilterSelection + + ++4.00% + +BenchmarkNotSelection + + +-32.12% + +BenchmarkHas + + ++1.59% + +BenchmarkHasNodes + + ++1.56% + +BenchmarkHasSelection + + ++15.54% + +BenchmarkEnd + + ++1.77% + +BenchmarkEach + + +-3.61% + +BenchmarkMap + + +-16.48% + +BenchmarkAttr + + ++1.33% + +BenchmarkText + + +-59.21% + +BenchmarkLength + + +-9.01% + +BenchmarkHtml + + +-16.73% + +BenchmarkIs + + +-25.08% + +BenchmarkIsPositional + + +-11.55% + +BenchmarkIsFunction + + ++1.28% + +BenchmarkIsSelection + + ++2.10% + +BenchmarkIsNodes + + +-15.99% + +BenchmarkHasClass + + +-2.65% + +BenchmarkContains + + +-48.54% + +BenchmarkFind + + +-42.71% + +BenchmarkFindWithinSelection + + ++28.77% + +BenchmarkFindSelection + + ++28.47% + +BenchmarkFindNodes + + +-62.84% + +BenchmarkContents + + +-58.06% + +BenchmarkContentsFiltered + + +-63.13% + +BenchmarkChildren + + +-38.24% + +BenchmarkChildrenFiltered + + +-3.66% + +BenchmarkParent + + +-6.06% + +BenchmarkParentFiltered + + ++3.64% + +BenchmarkParents + + ++1.44% + +BenchmarkParentsFiltered + + +-44.35% + +BenchmarkParentsUntil + + +-31.99% + +BenchmarkParentsUntilSelection + + +-32.62% + +BenchmarkParentsUntilNodes + + +-45.83% + +BenchmarkParentsFilteredUntil + + +-30.05% + +BenchmarkParentsFilteredUntilSelection + + +-29.97% + +BenchmarkParentsFilteredUntilNodes + + +-25.96% + +BenchmarkSiblings + + +-26.67% + +BenchmarkSiblingsFiltered + + +-66.40% + +BenchmarkNext + + +-64.46% + +BenchmarkNextFiltered + + +-26.50% + +BenchmarkNextAll + + +-26.27% + +BenchmarkNextAllFiltered + + +-66.84% + +BenchmarkPrev + + +-64.35% + +BenchmarkPrevFiltered + + +-40.05% + +BenchmarkPrevAll + + +-39.74% + +BenchmarkPrevAllFiltered + + +-51.73% + +BenchmarkNextUntil + + +-33.42% + +BenchmarkNextUntilSelection + + +-40.42% + +BenchmarkNextUntilNodes + + +-46.87% + +BenchmarkPrevUntil + + +-33.14% + +BenchmarkPrevUntilSelection + + +-41.19% + +BenchmarkPrevUntilNodes + + +-55.92% + +BenchmarkNextFilteredUntil + + +-32.49% + +BenchmarkNextFilteredUntilSelection + + +-33.00% + +BenchmarkNextFilteredUntilNodes + + +-58.54% + +BenchmarkPrevFilteredUntil + + +-33.80% + +BenchmarkPrevFilteredUntilSelection + + +-33.44% + +BenchmarkPrevFilteredUntilNodes + + +-24.82% + +BenchmarkClosest + + +-34.45% + +BenchmarkClosestSelection + + +-35.30% + +BenchmarkClosestNodes + + diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.1-go1.1rc1 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.1-go1.1rc1 new file mode 100644 index 000000000..1f2a426d3 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.2.1-go1.1rc1 @@ -0,0 +1,470 @@ +PASS +BenchmarkFirst 20000000 96.3 ns/op +BenchmarkLast 20000000 95.7 ns/op +BenchmarkEq 20000000 97.1 ns/op +BenchmarkSlice 20000000 92.3 ns/op +BenchmarkGet 1000000000 2.06 ns/op +BenchmarkIndex 1000000 1069 ns/op +--- BENCH: BenchmarkIndex + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 +BenchmarkIndexSelector 100000 26750 ns/op +--- BENCH: BenchmarkIndexSelector + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 +BenchmarkIndexOfNode 100000000 10.7 ns/op +--- BENCH: BenchmarkIndexOfNode + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 +BenchmarkIndexOfSelection 100000000 11.8 ns/op +--- BENCH: BenchmarkIndexOfSelection + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 +BenchmarkMetalReviewExample 10000 219078 ns/op +--- BENCH: BenchmarkMetalReviewExample + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + + bench_example_test.go:41: MetalReviewExample=10 + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + ... [output truncated] +BenchmarkAdd 100000 22345 ns/op +--- BENCH: BenchmarkAdd + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 +BenchmarkAddSelection 10000000 209 ns/op +--- BENCH: BenchmarkAddSelection + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 +BenchmarkAddNodes 10000000 209 ns/op +--- BENCH: BenchmarkAddNodes + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 +BenchmarkAndSelf 1000000 2568 ns/op +--- BENCH: BenchmarkAndSelf + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 +BenchmarkFilter 100000 26715 ns/op +--- BENCH: BenchmarkFilter + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 +BenchmarkNot 50000 30058 ns/op +--- BENCH: BenchmarkNot + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 +BenchmarkFilterFunction 50000 66346 ns/op +--- BENCH: BenchmarkFilterFunction + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 +BenchmarkNotFunction 50000 72646 ns/op +--- BENCH: BenchmarkNotFunction + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 +BenchmarkFilterNodes 50000 65493 ns/op +--- BENCH: BenchmarkFilterNodes + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 +BenchmarkNotNodes 20000 79466 ns/op +--- BENCH: BenchmarkNotNodes + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 +BenchmarkFilterSelection 50000 65494 ns/op +--- BENCH: BenchmarkFilterSelection + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 +BenchmarkNotSelection 20000 79387 ns/op +--- BENCH: BenchmarkNotSelection + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 +BenchmarkHas 5000 386571 ns/op +--- BENCH: BenchmarkHas + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 +BenchmarkHasNodes 10000 230664 ns/op +--- BENCH: BenchmarkHasNodes + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 +BenchmarkHasSelection 10000 230705 ns/op +--- BENCH: BenchmarkHasSelection + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 +BenchmarkEnd 500000000 4.61 ns/op +--- BENCH: BenchmarkEnd + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 +BenchmarkEach 200000 9520 ns/op +--- BENCH: BenchmarkEach + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 +BenchmarkMap 100000 15960 ns/op +--- BENCH: BenchmarkMap + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 +BenchmarkAttr 50000000 30.4 ns/op +--- BENCH: BenchmarkAttr + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading +BenchmarkText 100000 18718 ns/op +BenchmarkLength 2000000000 0.31 ns/op +--- BENCH: BenchmarkLength + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 +BenchmarkHtml 5000000 606 ns/op +BenchmarkIs 100000 29289 ns/op +--- BENCH: BenchmarkIs + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true +BenchmarkIsPositional 100000 23834 ns/op +--- BENCH: BenchmarkIsPositional + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true +BenchmarkIsFunction 1000000 2436 ns/op +--- BENCH: BenchmarkIsFunction + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true +BenchmarkIsSelection 50000 67106 ns/op +--- BENCH: BenchmarkIsSelection + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true +BenchmarkIsNodes 50000 66042 ns/op +--- BENCH: BenchmarkIsNodes + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true +BenchmarkHasClass 5000 565347 ns/op +--- BENCH: BenchmarkHasClass + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true +BenchmarkContains 100000000 11.0 ns/op +--- BENCH: BenchmarkContains + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true +BenchmarkFind 100000 27677 ns/op +--- BENCH: BenchmarkFind + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 +BenchmarkFindWithinSelection 50000 72162 ns/op +--- BENCH: BenchmarkFindWithinSelection + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 +BenchmarkFindSelection 5000 460124 ns/op +--- BENCH: BenchmarkFindSelection + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 +BenchmarkFindNodes 5000 459390 ns/op +--- BENCH: BenchmarkFindNodes + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 +BenchmarkContents 500000 3395 ns/op +--- BENCH: BenchmarkContents + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 +BenchmarkContentsFiltered 500000 5193 ns/op +--- BENCH: BenchmarkContentsFiltered + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 +BenchmarkChildren 5000000 667 ns/op +--- BENCH: BenchmarkChildren + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 +BenchmarkChildrenFiltered 500000 3591 ns/op +--- BENCH: BenchmarkChildrenFiltered + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 +BenchmarkParent 50000 43168 ns/op +--- BENCH: BenchmarkParent + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 +BenchmarkParentFiltered 50000 45836 ns/op +--- BENCH: BenchmarkParentFiltered + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 +BenchmarkParents 20000 92348 ns/op +--- BENCH: BenchmarkParents + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 +BenchmarkParentsFiltered 20000 95306 ns/op +--- BENCH: BenchmarkParentsFiltered + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 +BenchmarkParentsUntil 50000 72782 ns/op +--- BENCH: BenchmarkParentsUntil + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 +BenchmarkParentsUntilSelection 10000 157639 ns/op +--- BENCH: BenchmarkParentsUntilSelection + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 +BenchmarkParentsUntilNodes 10000 157510 ns/op +--- BENCH: BenchmarkParentsUntilNodes + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 +BenchmarkParentsFilteredUntil 100000 16987 ns/op +--- BENCH: BenchmarkParentsFilteredUntil + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 +BenchmarkParentsFilteredUntilSelection 100000 21174 ns/op +--- BENCH: BenchmarkParentsFilteredUntilSelection + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 +BenchmarkParentsFilteredUntilNodes 100000 21238 ns/op +--- BENCH: BenchmarkParentsFilteredUntilNodes + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 +BenchmarkSiblings 50000 66536 ns/op +--- BENCH: BenchmarkSiblings + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 +BenchmarkSiblingsFiltered 50000 71822 ns/op +--- BENCH: BenchmarkSiblingsFiltered + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 +BenchmarkNext 200000 10745 ns/op +--- BENCH: BenchmarkNext + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 +BenchmarkNextFiltered 200000 12399 ns/op +--- BENCH: BenchmarkNextFiltered + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 +BenchmarkNextAll 50000 44640 ns/op +--- BENCH: BenchmarkNextAll + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 +BenchmarkNextAllFiltered 50000 49713 ns/op +--- BENCH: BenchmarkNextAllFiltered + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 +BenchmarkPrev 200000 10743 ns/op +--- BENCH: BenchmarkPrev + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 +BenchmarkPrevFiltered 200000 12456 ns/op +--- BENCH: BenchmarkPrevFiltered + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 +BenchmarkPrevAll 100000 17600 ns/op +--- BENCH: BenchmarkPrevAll + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 +BenchmarkPrevAllFiltered 100000 19460 ns/op +--- BENCH: BenchmarkPrevAllFiltered + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 +BenchmarkNextUntil 20000 92630 ns/op +--- BENCH: BenchmarkNextUntil + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 +BenchmarkNextUntilSelection 50000 61285 ns/op +--- BENCH: BenchmarkNextUntilSelection + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 +BenchmarkNextUntilNodes 100000 25859 ns/op +--- BENCH: BenchmarkNextUntilNodes + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 +BenchmarkPrevUntil 10000 230236 ns/op +--- BENCH: BenchmarkPrevUntil + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 +BenchmarkPrevUntilSelection 20000 77837 ns/op +--- BENCH: BenchmarkPrevUntilSelection + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 +BenchmarkPrevUntilNodes 100000 20784 ns/op +--- BENCH: BenchmarkPrevUntilNodes + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 +BenchmarkNextFilteredUntil 50000 46147 ns/op +--- BENCH: BenchmarkNextFilteredUntil + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 +BenchmarkNextFilteredUntilSelection 50000 67164 ns/op +--- BENCH: BenchmarkNextFilteredUntilSelection + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 +BenchmarkNextFilteredUntilNodes 50000 66628 ns/op +--- BENCH: BenchmarkNextFilteredUntilNodes + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 +BenchmarkPrevFilteredUntil 50000 46697 ns/op +--- BENCH: BenchmarkPrevFilteredUntil + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 +BenchmarkPrevFilteredUntilSelection 50000 68646 ns/op +--- BENCH: BenchmarkPrevFilteredUntilSelection + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 +BenchmarkPrevFilteredUntilNodes 50000 68745 ns/op +--- BENCH: BenchmarkPrevFilteredUntilNodes + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 +BenchmarkClosest 500000 4909 ns/op +--- BENCH: BenchmarkClosest + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 +BenchmarkClosestSelection 5000000 744 ns/op +--- BENCH: BenchmarkClosestSelection + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 +BenchmarkClosestNodes 5000000 733 ns/op +--- BENCH: BenchmarkClosestNodes + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 +ok github.com/PuerkitoBio/goquery 220.793s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.0 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.0 new file mode 100644 index 000000000..037c9a9d2 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.0 @@ -0,0 +1,476 @@ +PASS +BenchmarkFirst 20000000 95.5 ns/op +BenchmarkLast 20000000 94.9 ns/op +BenchmarkEq 20000000 95.7 ns/op +BenchmarkSlice 20000000 91.7 ns/op +BenchmarkGet 1000000000 2.05 ns/op +BenchmarkIndex 1000000 1079 ns/op +--- BENCH: BenchmarkIndex + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 +BenchmarkIndexSelector 100000 26972 ns/op +--- BENCH: BenchmarkIndexSelector + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 +BenchmarkIndexOfNode 100000000 10.8 ns/op +--- BENCH: BenchmarkIndexOfNode + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 +BenchmarkIndexOfSelection 100000000 11.7 ns/op +--- BENCH: BenchmarkIndexOfSelection + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 +BenchmarkMetalReviewExample 10000 213800 ns/op +--- BENCH: BenchmarkMetalReviewExample + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + + bench_example_test.go:41: MetalReviewExample=10 + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + ... [output truncated] +BenchmarkAdd 100000 21811 ns/op +--- BENCH: BenchmarkAdd + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 +BenchmarkAddSelection 10000000 205 ns/op +--- BENCH: BenchmarkAddSelection + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 +BenchmarkAddNodes 10000000 202 ns/op +--- BENCH: BenchmarkAddNodes + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 +BenchmarkAndSelf 1000000 2467 ns/op +--- BENCH: BenchmarkAndSelf + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 +BenchmarkFilter 100000 25643 ns/op +--- BENCH: BenchmarkFilter + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 +BenchmarkNot 100000 29566 ns/op +--- BENCH: BenchmarkNot + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 +BenchmarkFilterFunction 50000 66894 ns/op +--- BENCH: BenchmarkFilterFunction + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 +BenchmarkNotFunction 50000 72183 ns/op +--- BENCH: BenchmarkNotFunction + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 +BenchmarkFilterNodes 50000 65516 ns/op +--- BENCH: BenchmarkFilterNodes + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 +BenchmarkNotNodes 20000 78880 ns/op +--- BENCH: BenchmarkNotNodes + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 +BenchmarkFilterSelection 50000 65232 ns/op +--- BENCH: BenchmarkFilterSelection + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 +BenchmarkNotSelection 20000 78813 ns/op +--- BENCH: BenchmarkNotSelection + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 +BenchmarkHas 5000 388834 ns/op +--- BENCH: BenchmarkHas + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 +BenchmarkHasNodes 10000 228552 ns/op +--- BENCH: BenchmarkHasNodes + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 +BenchmarkHasSelection 10000 228365 ns/op +--- BENCH: BenchmarkHasSelection + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 +BenchmarkEnd 500000000 4.62 ns/op +--- BENCH: BenchmarkEnd + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 +BenchmarkEach 200000 9548 ns/op +--- BENCH: BenchmarkEach + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 +BenchmarkMap 100000 15900 ns/op +--- BENCH: BenchmarkMap + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 +BenchmarkEachWithBreak 1000000 1650 ns/op +--- BENCH: BenchmarkEachWithBreak + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 +BenchmarkAttr 50000000 30.5 ns/op +--- BENCH: BenchmarkAttr + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading +BenchmarkText 100000 18873 ns/op +BenchmarkLength 2000000000 0.31 ns/op +--- BENCH: BenchmarkLength + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 +BenchmarkHtml 5000000 616 ns/op +BenchmarkIs 100000 29499 ns/op +--- BENCH: BenchmarkIs + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true +BenchmarkIsPositional 100000 23733 ns/op +--- BENCH: BenchmarkIsPositional + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true +BenchmarkIsFunction 1000000 2404 ns/op +--- BENCH: BenchmarkIsFunction + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true +BenchmarkIsSelection 50000 65376 ns/op +--- BENCH: BenchmarkIsSelection + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true +BenchmarkIsNodes 50000 65322 ns/op +--- BENCH: BenchmarkIsNodes + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true +BenchmarkHasClass 5000 558933 ns/op +--- BENCH: BenchmarkHasClass + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true +BenchmarkContains 100000000 11.1 ns/op +--- BENCH: BenchmarkContains + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true +BenchmarkFind 100000 27841 ns/op +--- BENCH: BenchmarkFind + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 +BenchmarkFindWithinSelection 50000 72096 ns/op +--- BENCH: BenchmarkFindWithinSelection + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 +BenchmarkFindSelection 5000 457349 ns/op +--- BENCH: BenchmarkFindSelection + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 +BenchmarkFindNodes 5000 459324 ns/op +--- BENCH: BenchmarkFindNodes + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 +BenchmarkContents 500000 3435 ns/op +--- BENCH: BenchmarkContents + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 +BenchmarkContentsFiltered 500000 5241 ns/op +--- BENCH: BenchmarkContentsFiltered + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 +BenchmarkChildren 5000000 667 ns/op +--- BENCH: BenchmarkChildren + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 +BenchmarkChildrenFiltered 500000 3639 ns/op +--- BENCH: BenchmarkChildrenFiltered + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 +BenchmarkParent 50000 44867 ns/op +--- BENCH: BenchmarkParent + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 +BenchmarkParentFiltered 50000 46476 ns/op +--- BENCH: BenchmarkParentFiltered + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 +BenchmarkParents 20000 92559 ns/op +--- BENCH: BenchmarkParents + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 +BenchmarkParentsFiltered 20000 96142 ns/op +--- BENCH: BenchmarkParentsFiltered + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 +BenchmarkParentsUntil 50000 73931 ns/op +--- BENCH: BenchmarkParentsUntil + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 +BenchmarkParentsUntilSelection 10000 159820 ns/op +--- BENCH: BenchmarkParentsUntilSelection + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 +BenchmarkParentsUntilNodes 10000 158811 ns/op +--- BENCH: BenchmarkParentsUntilNodes + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 +BenchmarkParentsFilteredUntil 100000 17203 ns/op +--- BENCH: BenchmarkParentsFilteredUntil + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 +BenchmarkParentsFilteredUntilSelection 100000 21358 ns/op +--- BENCH: BenchmarkParentsFilteredUntilSelection + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 +BenchmarkParentsFilteredUntilNodes 100000 21338 ns/op +--- BENCH: BenchmarkParentsFilteredUntilNodes + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 +BenchmarkSiblings 50000 66463 ns/op +--- BENCH: BenchmarkSiblings + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 +BenchmarkSiblingsFiltered 50000 72503 ns/op +--- BENCH: BenchmarkSiblingsFiltered + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 +BenchmarkNext 200000 10881 ns/op +--- BENCH: BenchmarkNext + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 +BenchmarkNextFiltered 200000 12588 ns/op +--- BENCH: BenchmarkNextFiltered + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 +BenchmarkNextAll 50000 45075 ns/op +--- BENCH: BenchmarkNextAll + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 +BenchmarkNextAllFiltered 50000 50455 ns/op +--- BENCH: BenchmarkNextAllFiltered + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 +BenchmarkPrev 200000 10933 ns/op +--- BENCH: BenchmarkPrev + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 +BenchmarkPrevFiltered 200000 12579 ns/op +--- BENCH: BenchmarkPrevFiltered + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 +BenchmarkPrevAll 100000 17751 ns/op +--- BENCH: BenchmarkPrevAll + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 +BenchmarkPrevAllFiltered 100000 19702 ns/op +--- BENCH: BenchmarkPrevAllFiltered + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 +BenchmarkNextUntil 20000 93586 ns/op +--- BENCH: BenchmarkNextUntil + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 +BenchmarkNextUntilSelection 50000 61155 ns/op +--- BENCH: BenchmarkNextUntilSelection + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 +BenchmarkNextUntilNodes 100000 25805 ns/op +--- BENCH: BenchmarkNextUntilNodes + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 +BenchmarkPrevUntil 10000 232225 ns/op +--- BENCH: BenchmarkPrevUntil + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 +BenchmarkPrevUntilSelection 20000 78316 ns/op +--- BENCH: BenchmarkPrevUntilSelection + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 +BenchmarkPrevUntilNodes 100000 20657 ns/op +--- BENCH: BenchmarkPrevUntilNodes + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 +BenchmarkNextFilteredUntil 50000 46567 ns/op +--- BENCH: BenchmarkNextFilteredUntil + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 +BenchmarkNextFilteredUntilSelection 50000 67227 ns/op +--- BENCH: BenchmarkNextFilteredUntilSelection + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 +BenchmarkNextFilteredUntilNodes 50000 66995 ns/op +--- BENCH: BenchmarkNextFilteredUntilNodes + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 +BenchmarkPrevFilteredUntil 50000 47361 ns/op +--- BENCH: BenchmarkPrevFilteredUntil + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 +BenchmarkPrevFilteredUntilSelection 50000 68802 ns/op +--- BENCH: BenchmarkPrevFilteredUntilSelection + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 +BenchmarkPrevFilteredUntilNodes 50000 68928 ns/op +--- BENCH: BenchmarkPrevFilteredUntilNodes + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 +BenchmarkClosest 500000 4922 ns/op +--- BENCH: BenchmarkClosest + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 +BenchmarkClosestSelection 5000000 738 ns/op +--- BENCH: BenchmarkClosestSelection + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 +BenchmarkClosestNodes 5000000 737 ns/op +--- BENCH: BenchmarkClosestNodes + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 +ok github.com/PuerkitoBio/goquery 224.003s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2 new file mode 100644 index 000000000..0a8704c86 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2 @@ -0,0 +1,478 @@ +PASS +BenchmarkFirst 20000000 88.4 ns/op +BenchmarkLast 20000000 88.2 ns/op +BenchmarkEq 20000000 87.4 ns/op +BenchmarkSlice 20000000 84.9 ns/op +BenchmarkGet 2000000000 1.99 ns/op +BenchmarkIndex 2000000 906 ns/op +--- BENCH: BenchmarkIndex + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 +BenchmarkIndexSelector 100000 22276 ns/op +--- BENCH: BenchmarkIndexSelector + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 +BenchmarkIndexOfNode 200000000 9.72 ns/op +--- BENCH: BenchmarkIndexOfNode + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 +BenchmarkIndexOfSelection 100000000 10.4 ns/op +--- BENCH: BenchmarkIndexOfSelection + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 +BenchmarkMetalReviewExample 10000 199277 ns/op +--- BENCH: BenchmarkMetalReviewExample + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + + bench_example_test.go:41: MetalReviewExample=10 + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + ... [output truncated] +BenchmarkAdd 100000 18277 ns/op +--- BENCH: BenchmarkAdd + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 +BenchmarkAddSelection 10000000 200 ns/op +--- BENCH: BenchmarkAddSelection + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 +BenchmarkAddNodes 10000000 189 ns/op +--- BENCH: BenchmarkAddNodes + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 +BenchmarkAndSelf 1000000 2569 ns/op +--- BENCH: BenchmarkAndSelf + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 +BenchmarkFilter 100000 25195 ns/op +--- BENCH: BenchmarkFilter + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 +BenchmarkNot 100000 29003 ns/op +--- BENCH: BenchmarkNot + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 +BenchmarkFilterFunction 50000 60690 ns/op +--- BENCH: BenchmarkFilterFunction + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 +BenchmarkNotFunction 50000 66008 ns/op +--- BENCH: BenchmarkNotFunction + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 +BenchmarkFilterNodes 50000 59723 ns/op +--- BENCH: BenchmarkFilterNodes + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 +BenchmarkNotNodes 50000 72698 ns/op +--- BENCH: BenchmarkNotNodes + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 +BenchmarkFilterSelection 50000 59598 ns/op +--- BENCH: BenchmarkFilterSelection + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 +BenchmarkNotSelection 50000 72526 ns/op +--- BENCH: BenchmarkNotSelection + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 +BenchmarkHas 5000 367076 ns/op +--- BENCH: BenchmarkHas + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 +BenchmarkHasNodes 10000 219710 ns/op +--- BENCH: BenchmarkHasNodes + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 +BenchmarkHasSelection 10000 219105 ns/op +--- BENCH: BenchmarkHasSelection + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 +BenchmarkEnd 500000000 4.58 ns/op +--- BENCH: BenchmarkEnd + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 +BenchmarkEach 200000 8615 ns/op +--- BENCH: BenchmarkEach + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 +BenchmarkMap 200000 14271 ns/op +--- BENCH: BenchmarkMap + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 +BenchmarkEachWithBreak 1000000 1497 ns/op +--- BENCH: BenchmarkEachWithBreak + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 +BenchmarkAttr 50000000 30.9 ns/op +--- BENCH: BenchmarkAttr + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading +BenchmarkText 200000 13729 ns/op +BenchmarkLength 2000000000 0.31 ns/op +--- BENCH: BenchmarkLength + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 +BenchmarkHtml 5000000 537 ns/op +BenchmarkIs 100000 28904 ns/op +--- BENCH: BenchmarkIs + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true +BenchmarkIsPositional 100000 23556 ns/op +--- BENCH: BenchmarkIsPositional + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true +BenchmarkIsFunction 1000000 2195 ns/op +--- BENCH: BenchmarkIsFunction + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true +BenchmarkIsSelection 50000 60100 ns/op +--- BENCH: BenchmarkIsSelection + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true +BenchmarkIsNodes 50000 59962 ns/op +--- BENCH: BenchmarkIsNodes + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true +BenchmarkHasClass 5000 388679 ns/op +--- BENCH: BenchmarkHasClass + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true +BenchmarkContains 100000000 11.0 ns/op +--- BENCH: BenchmarkContains + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true +BenchmarkFind 100000 22779 ns/op +--- BENCH: BenchmarkFind + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 +BenchmarkFindWithinSelection 50000 62033 ns/op +--- BENCH: BenchmarkFindWithinSelection + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 +BenchmarkFindSelection 5000 446918 ns/op +--- BENCH: BenchmarkFindSelection + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 +BenchmarkFindNodes 5000 441753 ns/op +--- BENCH: BenchmarkFindNodes + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 +BenchmarkContents 1000000 2807 ns/op +--- BENCH: BenchmarkContents + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 +BenchmarkContentsFiltered 500000 4477 ns/op +--- BENCH: BenchmarkContentsFiltered + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 +BenchmarkChildren 5000000 548 ns/op +--- BENCH: BenchmarkChildren + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 +BenchmarkChildrenFiltered 500000 3304 ns/op +--- BENCH: BenchmarkChildrenFiltered + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 +BenchmarkParent 50000 38248 ns/op +--- BENCH: BenchmarkParent + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 +BenchmarkParentFiltered 50000 40677 ns/op +--- BENCH: BenchmarkParentFiltered + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 +BenchmarkParents 20000 83043 ns/op +--- BENCH: BenchmarkParents + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 +BenchmarkParentsFiltered 20000 85391 ns/op +--- BENCH: BenchmarkParentsFiltered + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 +BenchmarkParentsUntil 50000 65118 ns/op +--- BENCH: BenchmarkParentsUntil + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 +BenchmarkParentsUntilSelection 10000 144028 ns/op +--- BENCH: BenchmarkParentsUntilSelection + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 +BenchmarkParentsUntilNodes 10000 146713 ns/op +--- BENCH: BenchmarkParentsUntilNodes + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 +BenchmarkParentsFilteredUntil 100000 15113 ns/op +--- BENCH: BenchmarkParentsFilteredUntil + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 +BenchmarkParentsFilteredUntilSelection 100000 18881 ns/op +--- BENCH: BenchmarkParentsFilteredUntilSelection + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 +BenchmarkParentsFilteredUntilNodes 100000 18926 ns/op +--- BENCH: BenchmarkParentsFilteredUntilNodes + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 +BenchmarkSiblings 50000 63221 ns/op +--- BENCH: BenchmarkSiblings + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 +BenchmarkSiblingsFiltered 50000 69028 ns/op +--- BENCH: BenchmarkSiblingsFiltered + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 +BenchmarkNext 200000 9133 ns/op +--- BENCH: BenchmarkNext + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 +BenchmarkNextFiltered 200000 10601 ns/op +--- BENCH: BenchmarkNextFiltered + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 +BenchmarkNextAll 50000 43089 ns/op +--- BENCH: BenchmarkNextAll + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 +BenchmarkNextAllFiltered 50000 47867 ns/op +--- BENCH: BenchmarkNextAllFiltered + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 +BenchmarkPrev 200000 9104 ns/op +--- BENCH: BenchmarkPrev + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 +BenchmarkPrevFiltered 200000 10579 ns/op +--- BENCH: BenchmarkPrevFiltered + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 +BenchmarkPrevAll 100000 15185 ns/op +--- BENCH: BenchmarkPrevAll + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 +BenchmarkPrevAllFiltered 100000 17108 ns/op +--- BENCH: BenchmarkPrevAllFiltered + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 +BenchmarkNextUntil 20000 81087 ns/op +--- BENCH: BenchmarkNextUntil + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 +BenchmarkNextUntilSelection 50000 55831 ns/op +--- BENCH: BenchmarkNextUntilSelection + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 +BenchmarkNextUntilNodes 100000 23130 ns/op +--- BENCH: BenchmarkNextUntilNodes + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 +BenchmarkPrevUntil 10000 204673 ns/op +--- BENCH: BenchmarkPrevUntil + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 +BenchmarkPrevUntilSelection 50000 70965 ns/op +--- BENCH: BenchmarkPrevUntilSelection + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 +BenchmarkPrevUntilNodes 100000 18591 ns/op +--- BENCH: BenchmarkPrevUntilNodes + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 +BenchmarkNextFilteredUntil 50000 42004 ns/op +--- BENCH: BenchmarkNextFilteredUntil + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 +BenchmarkNextFilteredUntilSelection 50000 61953 ns/op +--- BENCH: BenchmarkNextFilteredUntilSelection + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 +BenchmarkNextFilteredUntilNodes 50000 62124 ns/op +--- BENCH: BenchmarkNextFilteredUntilNodes + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 +BenchmarkPrevFilteredUntil 50000 42861 ns/op +--- BENCH: BenchmarkPrevFilteredUntil + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 +BenchmarkPrevFilteredUntilSelection 50000 62451 ns/op +--- BENCH: BenchmarkPrevFilteredUntilSelection + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 +BenchmarkPrevFilteredUntilNodes 50000 62631 ns/op +--- BENCH: BenchmarkPrevFilteredUntilNodes + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 +BenchmarkClosest 500000 4684 ns/op +--- BENCH: BenchmarkClosest + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 +BenchmarkClosestSelection 5000000 622 ns/op +--- BENCH: BenchmarkClosestSelection + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 +BenchmarkClosestNodes 5000000 617 ns/op +--- BENCH: BenchmarkClosestNodes + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 +ok github.com/PuerkitoBio/goquery 218.724s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2-take2 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2-take2 new file mode 100644 index 000000000..02a811874 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2-take2 @@ -0,0 +1,477 @@ +PASS +BenchmarkFirst 20000000 88.3 ns/op +BenchmarkLast 20000000 88.9 ns/op +BenchmarkEq 20000000 86.7 ns/op +BenchmarkSlice 20000000 84.1 ns/op +BenchmarkGet 2000000000 1.99 ns/op +BenchmarkIndex 2000000 907 ns/op +--- BENCH: BenchmarkIndex + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 +BenchmarkIndexSelector 200000 13052 ns/op +--- BENCH: BenchmarkIndexSelector + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 +BenchmarkIndexOfNode 100000000 10.5 ns/op +--- BENCH: BenchmarkIndexOfNode + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 +BenchmarkIndexOfSelection 100000000 11.6 ns/op +--- BENCH: BenchmarkIndexOfSelection + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 +BenchmarkMetalReviewExample 10000 189556 ns/op +--- BENCH: BenchmarkMetalReviewExample + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + + bench_example_test.go:41: MetalReviewExample=10 + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + ... [output truncated] +BenchmarkAdd 200000 13714 ns/op +--- BENCH: BenchmarkAdd + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 +BenchmarkAddSelection 10000000 200 ns/op +--- BENCH: BenchmarkAddSelection + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 +BenchmarkAddNodes 10000000 186 ns/op +--- BENCH: BenchmarkAddNodes + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 +BenchmarkAndSelf 1000000 2532 ns/op +--- BENCH: BenchmarkAndSelf + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 +BenchmarkFilter 100000 25199 ns/op +--- BENCH: BenchmarkFilter + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 +BenchmarkNot 100000 29162 ns/op +--- BENCH: BenchmarkNot + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 +BenchmarkFilterFunction 50000 60733 ns/op +--- BENCH: BenchmarkFilterFunction + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 +BenchmarkNotFunction 50000 66124 ns/op +--- BENCH: BenchmarkNotFunction + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 +BenchmarkFilterNodes 50000 59489 ns/op +--- BENCH: BenchmarkFilterNodes + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 +BenchmarkNotNodes 50000 73623 ns/op +--- BENCH: BenchmarkNotNodes + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 +BenchmarkFilterSelection 50000 60053 ns/op +--- BENCH: BenchmarkFilterSelection + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 +BenchmarkNotSelection 50000 73477 ns/op +--- BENCH: BenchmarkNotSelection + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 +BenchmarkHas 5000 364859 ns/op +--- BENCH: BenchmarkHas + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 +BenchmarkHasNodes 10000 226980 ns/op +--- BENCH: BenchmarkHasNodes + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 +BenchmarkHasSelection 10000 220471 ns/op +--- BENCH: BenchmarkHasSelection + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 +BenchmarkEnd 500000000 4.64 ns/op +--- BENCH: BenchmarkEnd + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 +BenchmarkEach 200000 8811 ns/op +--- BENCH: BenchmarkEach + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 +BenchmarkMap 100000 15365 ns/op +--- BENCH: BenchmarkMap + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 +BenchmarkEachWithBreak 1000000 1559 ns/op +--- BENCH: BenchmarkEachWithBreak + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 +BenchmarkAttr 50000000 31.7 ns/op +--- BENCH: BenchmarkAttr + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading +BenchmarkText 200000 13901 ns/op +BenchmarkLength 2000000000 0.31 ns/op +--- BENCH: BenchmarkLength + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 +BenchmarkHtml 5000000 541 ns/op +BenchmarkIs 100000 29435 ns/op +--- BENCH: BenchmarkIs + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true +BenchmarkIsPositional 100000 22938 ns/op +--- BENCH: BenchmarkIsPositional + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true +BenchmarkIsFunction 1000000 2185 ns/op +--- BENCH: BenchmarkIsFunction + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true +BenchmarkIsSelection 50000 60607 ns/op +--- BENCH: BenchmarkIsSelection + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true +BenchmarkIsNodes 50000 61599 ns/op +--- BENCH: BenchmarkIsNodes + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true +BenchmarkHasClass 5000 395436 ns/op +--- BENCH: BenchmarkHasClass + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true +BenchmarkContains 100000000 11.0 ns/op +--- BENCH: BenchmarkContains + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true +BenchmarkFind 200000 13788 ns/op +--- BENCH: BenchmarkFind + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 +BenchmarkFindWithinSelection 50000 54253 ns/op +--- BENCH: BenchmarkFindWithinSelection + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 +BenchmarkFindSelection 5000 438879 ns/op +--- BENCH: BenchmarkFindSelection + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 +BenchmarkFindNodes 5000 437225 ns/op +--- BENCH: BenchmarkFindNodes + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 +BenchmarkContents 1000000 2844 ns/op +--- BENCH: BenchmarkContents + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 +BenchmarkContentsFiltered 500000 4528 ns/op +--- BENCH: BenchmarkContentsFiltered + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 +BenchmarkChildren 5000000 552 ns/op +--- BENCH: BenchmarkChildren + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 +BenchmarkChildrenFiltered 500000 3345 ns/op +--- BENCH: BenchmarkChildrenFiltered + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 +BenchmarkParent 50000 39482 ns/op +--- BENCH: BenchmarkParent + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 +BenchmarkParentFiltered 50000 42113 ns/op +--- BENCH: BenchmarkParentFiltered + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 +BenchmarkParents 20000 84136 ns/op +--- BENCH: BenchmarkParents + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 +BenchmarkParentsFiltered 20000 86041 ns/op +--- BENCH: BenchmarkParentsFiltered + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 +BenchmarkParentsUntil 50000 65844 ns/op +--- BENCH: BenchmarkParentsUntil + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 +BenchmarkParentsUntilSelection 10000 146903 ns/op +--- BENCH: BenchmarkParentsUntilSelection + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 +BenchmarkParentsUntilNodes 10000 146638 ns/op +--- BENCH: BenchmarkParentsUntilNodes + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 +BenchmarkParentsFilteredUntil 100000 16413 ns/op +--- BENCH: BenchmarkParentsFilteredUntil + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 +BenchmarkParentsFilteredUntilSelection 100000 20366 ns/op +--- BENCH: BenchmarkParentsFilteredUntilSelection + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 +BenchmarkParentsFilteredUntilNodes 100000 18800 ns/op +--- BENCH: BenchmarkParentsFilteredUntilNodes + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 +BenchmarkSiblings 50000 63443 ns/op +--- BENCH: BenchmarkSiblings + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 +BenchmarkSiblingsFiltered 50000 69250 ns/op +--- BENCH: BenchmarkSiblingsFiltered + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 +BenchmarkNext 200000 9193 ns/op +--- BENCH: BenchmarkNext + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 +BenchmarkNextFiltered 200000 10767 ns/op +--- BENCH: BenchmarkNextFiltered + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 +BenchmarkNextAll 50000 42829 ns/op +--- BENCH: BenchmarkNextAll + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 +BenchmarkNextAllFiltered 50000 48174 ns/op +--- BENCH: BenchmarkNextAllFiltered + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 +BenchmarkPrev 200000 9114 ns/op +--- BENCH: BenchmarkPrev + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 +BenchmarkPrevFiltered 200000 11114 ns/op +--- BENCH: BenchmarkPrevFiltered + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 +BenchmarkPrevAll 100000 16387 ns/op +--- BENCH: BenchmarkPrevAll + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 +BenchmarkPrevAllFiltered 100000 18322 ns/op +--- BENCH: BenchmarkPrevAllFiltered + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 +BenchmarkNextUntil 20000 83828 ns/op +--- BENCH: BenchmarkNextUntil + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 +BenchmarkNextUntilSelection 50000 58822 ns/op +--- BENCH: BenchmarkNextUntilSelection + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 +BenchmarkNextUntilNodes 100000 23173 ns/op +--- BENCH: BenchmarkNextUntilNodes + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 +BenchmarkPrevUntil 10000 219407 ns/op +--- BENCH: BenchmarkPrevUntil + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 +BenchmarkPrevUntilSelection 20000 76033 ns/op +--- BENCH: BenchmarkPrevUntilSelection + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 +BenchmarkPrevUntilNodes 100000 19417 ns/op +--- BENCH: BenchmarkPrevUntilNodes + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 +BenchmarkNextFilteredUntil 50000 44648 ns/op +--- BENCH: BenchmarkNextFilteredUntil + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 +BenchmarkNextFilteredUntilSelection 50000 62751 ns/op +--- BENCH: BenchmarkNextFilteredUntilSelection + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 +BenchmarkNextFilteredUntilNodes 50000 62035 ns/op +--- BENCH: BenchmarkNextFilteredUntilNodes + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 +BenchmarkPrevFilteredUntil 50000 43331 ns/op +--- BENCH: BenchmarkPrevFilteredUntil + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 +BenchmarkPrevFilteredUntilSelection 50000 64767 ns/op +--- BENCH: BenchmarkPrevFilteredUntilSelection + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 +BenchmarkPrevFilteredUntilNodes 50000 67808 ns/op +--- BENCH: BenchmarkPrevFilteredUntilNodes + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 +BenchmarkClosest 500000 4870 ns/op +--- BENCH: BenchmarkClosest + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 +BenchmarkClosestSelection 5000000 656 ns/op +--- BENCH: BenchmarkClosestSelection + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 +BenchmarkClosestNodes 5000000 663 ns/op +--- BENCH: BenchmarkClosestNodes + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 +ok github.com/PuerkitoBio/goquery 218.007s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2rc1 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2rc1 new file mode 100644 index 000000000..e1bada783 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v0.3.2-go1.2rc1 @@ -0,0 +1,477 @@ +PASS +BenchmarkFirst 20000000 91.0 ns/op +BenchmarkLast 20000000 90.5 ns/op +BenchmarkEq 20000000 90.2 ns/op +BenchmarkSlice 20000000 88.0 ns/op +BenchmarkGet 1000000000 2.04 ns/op +BenchmarkIndex 2000000 935 ns/op +--- BENCH: BenchmarkIndex + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 + bench_array_test.go:73: Index=3 +BenchmarkIndexSelector 100000 23613 ns/op +--- BENCH: BenchmarkIndexSelector + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 + bench_array_test.go:85: IndexSelector=4 +BenchmarkIndexOfNode 100000000 10.2 ns/op +--- BENCH: BenchmarkIndexOfNode + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 + bench_array_test.go:99: IndexOfNode=2 +BenchmarkIndexOfSelection 100000000 11.0 ns/op +--- BENCH: BenchmarkIndexOfSelection + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 + bench_array_test.go:111: IndexOfSelection=2 +BenchmarkMetalReviewExample 10000 213843 ns/op +--- BENCH: BenchmarkMetalReviewExample + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + + bench_example_test.go:41: MetalReviewExample=10 + bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5). + Review 1: Over Your Threshold - Facticity (6.0). + Review 2: Nuclear Death Terror - Chaos Reigns (7.5). + Review 3: Evoken - Atra Mors (9.5). + ... [output truncated] +BenchmarkAdd 100000 18671 ns/op +--- BENCH: BenchmarkAdd + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 + bench_expand_test.go:20: Add=43 +BenchmarkAddSelection 10000000 204 ns/op +--- BENCH: BenchmarkAddSelection + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 + bench_expand_test.go:37: AddSelection=43 +BenchmarkAddNodes 10000000 195 ns/op +--- BENCH: BenchmarkAddNodes + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 + bench_expand_test.go:55: AddNodes=43 +BenchmarkAndSelf 1000000 2611 ns/op +--- BENCH: BenchmarkAndSelf + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 + bench_expand_test.go:71: AndSelf=44 +BenchmarkFilter 100000 27571 ns/op +--- BENCH: BenchmarkFilter + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 + bench_filter_test.go:20: Filter=13 +BenchmarkNot 50000 32006 ns/op +--- BENCH: BenchmarkNot + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 + bench_filter_test.go:36: Not=371 +BenchmarkFilterFunction 50000 61388 ns/op +--- BENCH: BenchmarkFilterFunction + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 + bench_filter_test.go:55: FilterFunction=112 +BenchmarkNotFunction 50000 66702 ns/op +--- BENCH: BenchmarkNotFunction + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 + bench_filter_test.go:74: NotFunction=261 +BenchmarkFilterNodes 50000 59699 ns/op +--- BENCH: BenchmarkFilterNodes + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 + bench_filter_test.go:92: FilterNodes=2 +BenchmarkNotNodes 50000 73248 ns/op +--- BENCH: BenchmarkNotNodes + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 + bench_filter_test.go:110: NotNodes=360 +BenchmarkFilterSelection 50000 59242 ns/op +--- BENCH: BenchmarkFilterSelection + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 + bench_filter_test.go:127: FilterSelection=2 +BenchmarkNotSelection 50000 73211 ns/op +--- BENCH: BenchmarkNotSelection + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 + bench_filter_test.go:144: NotSelection=360 +BenchmarkHas 5000 395087 ns/op +--- BENCH: BenchmarkHas + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 + bench_filter_test.go:160: Has=13 +BenchmarkHasNodes 10000 215849 ns/op +--- BENCH: BenchmarkHasNodes + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 + bench_filter_test.go:178: HasNodes=15 +BenchmarkHasSelection 10000 215612 ns/op +--- BENCH: BenchmarkHasSelection + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 + bench_filter_test.go:195: HasSelection=15 +BenchmarkEnd 500000000 4.59 ns/op +--- BENCH: BenchmarkEnd + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 + bench_filter_test.go:211: End=373 +BenchmarkEach 200000 8588 ns/op +--- BENCH: BenchmarkEach + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 + bench_iteration_test.go:22: Each=59 +BenchmarkMap 200000 14444 ns/op +--- BENCH: BenchmarkMap + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 + bench_iteration_test.go:41: Map=59 +BenchmarkEachWithBreak 1000000 1490 ns/op +--- BENCH: BenchmarkEachWithBreak + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 + bench_iteration_test.go:61: Each=10 +BenchmarkAttr 50000000 30.9 ns/op +--- BENCH: BenchmarkAttr + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading + bench_property_test.go:16: Attr=firstHeading +BenchmarkText 200000 14017 ns/op +BenchmarkLength 2000000000 0.31 ns/op +--- BENCH: BenchmarkLength + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 + bench_property_test.go:37: Length=14 +BenchmarkHtml 5000000 577 ns/op +BenchmarkIs 50000 31936 ns/op +--- BENCH: BenchmarkIs + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true + bench_query_test.go:16: Is=true +BenchmarkIsPositional 100000 23372 ns/op +--- BENCH: BenchmarkIsPositional + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true + bench_query_test.go:28: IsPositional=true +BenchmarkIsFunction 1000000 2170 ns/op +--- BENCH: BenchmarkIsFunction + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true + bench_query_test.go:43: IsFunction=true +BenchmarkIsSelection 50000 59814 ns/op +--- BENCH: BenchmarkIsSelection + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true + bench_query_test.go:56: IsSelection=true +BenchmarkIsNodes 50000 59629 ns/op +--- BENCH: BenchmarkIsNodes + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true + bench_query_test.go:70: IsNodes=true +BenchmarkHasClass 5000 384894 ns/op +--- BENCH: BenchmarkHasClass + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true + bench_query_test.go:82: HasClass=true +BenchmarkContains 100000000 11.4 ns/op +--- BENCH: BenchmarkContains + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true + bench_query_test.go:96: Contains=true +BenchmarkFind 100000 23545 ns/op +--- BENCH: BenchmarkFind + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 + bench_traversal_test.go:18: Find=41 +BenchmarkFindWithinSelection 50000 63775 ns/op +--- BENCH: BenchmarkFindWithinSelection + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 + bench_traversal_test.go:34: FindWithinSelection=39 +BenchmarkFindSelection 5000 441958 ns/op +--- BENCH: BenchmarkFindSelection + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 + bench_traversal_test.go:51: FindSelection=73 +BenchmarkFindNodes 5000 437717 ns/op +--- BENCH: BenchmarkFindNodes + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 + bench_traversal_test.go:69: FindNodes=73 +BenchmarkContents 1000000 2799 ns/op +--- BENCH: BenchmarkContents + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 + bench_traversal_test.go:85: Contents=16 +BenchmarkContentsFiltered 500000 4489 ns/op +--- BENCH: BenchmarkContentsFiltered + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 + bench_traversal_test.go:101: ContentsFiltered=1 +BenchmarkChildren 5000000 546 ns/op +--- BENCH: BenchmarkChildren + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 + bench_traversal_test.go:117: Children=2 +BenchmarkChildrenFiltered 500000 3472 ns/op +--- BENCH: BenchmarkChildrenFiltered + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 + bench_traversal_test.go:133: ChildrenFiltered=2 +BenchmarkParent 50000 39067 ns/op +--- BENCH: BenchmarkParent + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 + bench_traversal_test.go:149: Parent=55 +BenchmarkParentFiltered 50000 41450 ns/op +--- BENCH: BenchmarkParentFiltered + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 + bench_traversal_test.go:165: ParentFiltered=4 +BenchmarkParents 20000 84864 ns/op +--- BENCH: BenchmarkParents + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 + bench_traversal_test.go:181: Parents=73 +BenchmarkParentsFiltered 20000 87823 ns/op +--- BENCH: BenchmarkParentsFiltered + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 + bench_traversal_test.go:197: ParentsFiltered=18 +BenchmarkParentsUntil 50000 65986 ns/op +--- BENCH: BenchmarkParentsUntil + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 + bench_traversal_test.go:213: ParentsUntil=52 +BenchmarkParentsUntilSelection 10000 149798 ns/op +--- BENCH: BenchmarkParentsUntilSelection + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 + bench_traversal_test.go:230: ParentsUntilSelection=70 +BenchmarkParentsUntilNodes 10000 148144 ns/op +--- BENCH: BenchmarkParentsUntilNodes + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 + bench_traversal_test.go:248: ParentsUntilNodes=70 +BenchmarkParentsFilteredUntil 100000 15579 ns/op +--- BENCH: BenchmarkParentsFilteredUntil + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 + bench_traversal_test.go:264: ParentsFilteredUntil=2 +BenchmarkParentsFilteredUntilSelection 100000 19094 ns/op +--- BENCH: BenchmarkParentsFilteredUntilSelection + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 + bench_traversal_test.go:281: ParentsFilteredUntilSelection=2 +BenchmarkParentsFilteredUntilNodes 100000 19037 ns/op +--- BENCH: BenchmarkParentsFilteredUntilNodes + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 + bench_traversal_test.go:299: ParentsFilteredUntilNodes=2 +BenchmarkSiblings 50000 63891 ns/op +--- BENCH: BenchmarkSiblings + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 + bench_traversal_test.go:315: Siblings=293 +BenchmarkSiblingsFiltered 50000 70424 ns/op +--- BENCH: BenchmarkSiblingsFiltered + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 + bench_traversal_test.go:331: SiblingsFiltered=46 +BenchmarkNext 200000 9350 ns/op +--- BENCH: BenchmarkNext + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 + bench_traversal_test.go:347: Next=49 +BenchmarkNextFiltered 200000 10929 ns/op +--- BENCH: BenchmarkNextFiltered + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 + bench_traversal_test.go:363: NextFiltered=6 +BenchmarkNextAll 50000 43398 ns/op +--- BENCH: BenchmarkNextAll + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 + bench_traversal_test.go:379: NextAll=234 +BenchmarkNextAllFiltered 50000 48519 ns/op +--- BENCH: BenchmarkNextAllFiltered + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 + bench_traversal_test.go:395: NextAllFiltered=33 +BenchmarkPrev 200000 9181 ns/op +--- BENCH: BenchmarkPrev + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 + bench_traversal_test.go:411: Prev=49 +BenchmarkPrevFiltered 200000 10811 ns/op +--- BENCH: BenchmarkPrevFiltered + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 + bench_traversal_test.go:429: PrevFiltered=7 +BenchmarkPrevAll 100000 15589 ns/op +--- BENCH: BenchmarkPrevAll + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 + bench_traversal_test.go:445: PrevAll=78 +BenchmarkPrevAllFiltered 100000 17341 ns/op +--- BENCH: BenchmarkPrevAllFiltered + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 + bench_traversal_test.go:461: PrevAllFiltered=6 +BenchmarkNextUntil 20000 80663 ns/op +--- BENCH: BenchmarkNextUntil + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 + bench_traversal_test.go:477: NextUntil=84 +BenchmarkNextUntilSelection 50000 56496 ns/op +--- BENCH: BenchmarkNextUntilSelection + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 + bench_traversal_test.go:494: NextUntilSelection=42 +BenchmarkNextUntilNodes 100000 23729 ns/op +--- BENCH: BenchmarkNextUntilNodes + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 + bench_traversal_test.go:512: NextUntilNodes=12 +BenchmarkPrevUntil 10000 208267 ns/op +--- BENCH: BenchmarkPrevUntil + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 + bench_traversal_test.go:528: PrevUntil=238 +BenchmarkPrevUntilSelection 50000 72119 ns/op +--- BENCH: BenchmarkPrevUntilSelection + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 + bench_traversal_test.go:545: PrevUntilSelection=49 +BenchmarkPrevUntilNodes 100000 18549 ns/op +--- BENCH: BenchmarkPrevUntilNodes + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 + bench_traversal_test.go:563: PrevUntilNodes=11 +BenchmarkNextFilteredUntil 50000 42339 ns/op +--- BENCH: BenchmarkNextFilteredUntil + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 + bench_traversal_test.go:579: NextFilteredUntil=22 +BenchmarkNextFilteredUntilSelection 50000 61916 ns/op +--- BENCH: BenchmarkNextFilteredUntilSelection + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 + bench_traversal_test.go:596: NextFilteredUntilSelection=22 +BenchmarkNextFilteredUntilNodes 50000 62139 ns/op +--- BENCH: BenchmarkNextFilteredUntilNodes + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 + bench_traversal_test.go:614: NextFilteredUntilNodes=22 +BenchmarkPrevFilteredUntil 50000 43409 ns/op +--- BENCH: BenchmarkPrevFilteredUntil + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 + bench_traversal_test.go:630: PrevFilteredUntil=20 +BenchmarkPrevFilteredUntilSelection 50000 63768 ns/op +--- BENCH: BenchmarkPrevFilteredUntilSelection + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 + bench_traversal_test.go:647: PrevFilteredUntilSelection=20 +BenchmarkPrevFilteredUntilNodes 50000 63543 ns/op +--- BENCH: BenchmarkPrevFilteredUntilNodes + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 + bench_traversal_test.go:665: PrevFilteredUntilNodes=20 +BenchmarkClosest 500000 5110 ns/op +--- BENCH: BenchmarkClosest + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 + bench_traversal_test.go:681: Closest=2 +BenchmarkClosestSelection 5000000 629 ns/op +--- BENCH: BenchmarkClosestSelection + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 + bench_traversal_test.go:698: ClosestSelection=2 +BenchmarkClosestNodes 5000000 627 ns/op +--- BENCH: BenchmarkClosestNodes + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 + bench_traversal_test.go:715: ClosestNodes=2 +ok github.com/PuerkitoBio/goquery 215.785s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.0-go1.7 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.0-go1.7 new file mode 100644 index 000000000..4bc3a1fa8 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.0-go1.7 @@ -0,0 +1,85 @@ +BenchmarkFirst-4 30000000 50.7 ns/op 48 B/op 1 allocs/op +BenchmarkLast-4 30000000 50.9 ns/op 48 B/op 1 allocs/op +BenchmarkEq-4 30000000 55.7 ns/op 48 B/op 1 allocs/op +BenchmarkSlice-4 500000000 3.45 ns/op 0 B/op 0 allocs/op +BenchmarkGet-4 2000000000 1.68 ns/op 0 B/op 0 allocs/op +BenchmarkIndex-4 3000000 541 ns/op 248 B/op 10 allocs/op +BenchmarkIndexSelector-4 200000 10749 ns/op 2464 B/op 17 allocs/op +BenchmarkIndexOfNode-4 200000000 6.47 ns/op 0 B/op 0 allocs/op +BenchmarkIndexOfSelection-4 200000000 7.27 ns/op 0 B/op 0 allocs/op +BenchmarkMetalReviewExample-4 10000 138426 ns/op 12240 B/op 319 allocs/op +BenchmarkAdd-4 200000 10192 ns/op 208 B/op 9 allocs/op +BenchmarkAddSelection-4 10000000 158 ns/op 48 B/op 1 allocs/op +BenchmarkAddNodes-4 10000000 156 ns/op 48 B/op 1 allocs/op +BenchmarkAndSelf-4 1000000 1588 ns/op 1008 B/op 5 allocs/op +BenchmarkFilter-4 100000 20427 ns/op 360 B/op 8 allocs/op +BenchmarkNot-4 100000 23508 ns/op 136 B/op 5 allocs/op +BenchmarkFilterFunction-4 50000 34178 ns/op 22976 B/op 755 allocs/op +BenchmarkNotFunction-4 50000 38173 ns/op 29120 B/op 757 allocs/op +BenchmarkFilterNodes-4 50000 34001 ns/op 20960 B/op 749 allocs/op +BenchmarkNotNodes-4 30000 40344 ns/op 29120 B/op 757 allocs/op +BenchmarkFilterSelection-4 50000 33308 ns/op 20960 B/op 749 allocs/op +BenchmarkNotSelection-4 30000 40748 ns/op 29120 B/op 757 allocs/op +BenchmarkHas-4 5000 263346 ns/op 1816 B/op 48 allocs/op +BenchmarkHasNodes-4 10000 160840 ns/op 21184 B/op 752 allocs/op +BenchmarkHasSelection-4 10000 165410 ns/op 21184 B/op 752 allocs/op +BenchmarkEnd-4 2000000000 1.01 ns/op 0 B/op 0 allocs/op +BenchmarkEach-4 300000 4664 ns/op 3304 B/op 118 allocs/op +BenchmarkMap-4 200000 8286 ns/op 5572 B/op 184 allocs/op +BenchmarkEachWithBreak-4 2000000 806 ns/op 560 B/op 20 allocs/op +BenchmarkAttr-4 100000000 21.6 ns/op 0 B/op 0 allocs/op +BenchmarkText-4 200000 8909 ns/op 7536 B/op 110 allocs/op +BenchmarkLength-4 2000000000 0.34 ns/op 0 B/op 0 allocs/op +BenchmarkHtml-4 3000000 422 ns/op 120 B/op 2 allocs/op +BenchmarkIs-4 100000 22615 ns/op 88 B/op 4 allocs/op +BenchmarkIsPositional-4 50000 26655 ns/op 1112 B/op 10 allocs/op +BenchmarkIsFunction-4 1000000 1208 ns/op 784 B/op 28 allocs/op +BenchmarkIsSelection-4 50000 33497 ns/op 20960 B/op 749 allocs/op +BenchmarkIsNodes-4 50000 33572 ns/op 20960 B/op 749 allocs/op +BenchmarkHasClass-4 10000 232802 ns/op 14944 B/op 976 allocs/op +BenchmarkContains-4 200000000 7.33 ns/op 0 B/op 0 allocs/op +BenchmarkFind-4 200000 10715 ns/op 2464 B/op 17 allocs/op +BenchmarkFindWithinSelection-4 50000 35878 ns/op 2176 B/op 78 allocs/op +BenchmarkFindSelection-4 10000 194356 ns/op 2672 B/op 82 allocs/op +BenchmarkFindNodes-4 10000 195510 ns/op 2672 B/op 82 allocs/op +BenchmarkContents-4 1000000 2252 ns/op 864 B/op 34 allocs/op +BenchmarkContentsFiltered-4 500000 3015 ns/op 1016 B/op 39 allocs/op +BenchmarkChildren-4 5000000 364 ns/op 152 B/op 7 allocs/op +BenchmarkChildrenFiltered-4 1000000 2212 ns/op 352 B/op 15 allocs/op +BenchmarkParent-4 50000 24643 ns/op 4048 B/op 381 allocs/op +BenchmarkParentFiltered-4 50000 25967 ns/op 4248 B/op 388 allocs/op +BenchmarkParents-4 30000 50000 ns/op 27776 B/op 830 allocs/op +BenchmarkParentsFiltered-4 30000 53107 ns/op 28360 B/op 838 allocs/op +BenchmarkParentsUntil-4 100000 22423 ns/op 10352 B/op 353 allocs/op +BenchmarkParentsUntilSelection-4 20000 86925 ns/op 51144 B/op 1516 allocs/op +BenchmarkParentsUntilNodes-4 20000 87597 ns/op 51144 B/op 1516 allocs/op +BenchmarkParentsFilteredUntil-4 300000 5568 ns/op 2232 B/op 86 allocs/op +BenchmarkParentsFilteredUntilSelection-4 200000 10966 ns/op 5440 B/op 190 allocs/op +BenchmarkParentsFilteredUntilNodes-4 200000 10919 ns/op 5440 B/op 190 allocs/op +BenchmarkSiblings-4 30000 46018 ns/op 15400 B/op 204 allocs/op +BenchmarkSiblingsFiltered-4 30000 50566 ns/op 16496 B/op 213 allocs/op +BenchmarkNext-4 200000 7921 ns/op 3216 B/op 112 allocs/op +BenchmarkNextFiltered-4 200000 8804 ns/op 3416 B/op 118 allocs/op +BenchmarkNextAll-4 50000 31098 ns/op 9912 B/op 138 allocs/op +BenchmarkNextAllFiltered-4 50000 34677 ns/op 11008 B/op 147 allocs/op +BenchmarkPrev-4 200000 7920 ns/op 3216 B/op 112 allocs/op +BenchmarkPrevFiltered-4 200000 8913 ns/op 3416 B/op 118 allocs/op +BenchmarkPrevAll-4 200000 10845 ns/op 4376 B/op 113 allocs/op +BenchmarkPrevAllFiltered-4 100000 12030 ns/op 4576 B/op 119 allocs/op +BenchmarkNextUntil-4 100000 19193 ns/op 5760 B/op 260 allocs/op +BenchmarkNextUntilSelection-4 50000 34829 ns/op 18480 B/op 542 allocs/op +BenchmarkNextUntilNodes-4 100000 14459 ns/op 7944 B/op 248 allocs/op +BenchmarkPrevUntil-4 20000 66296 ns/op 12856 B/op 448 allocs/op +BenchmarkPrevUntilSelection-4 30000 45037 ns/op 23432 B/op 689 allocs/op +BenchmarkPrevUntilNodes-4 200000 11525 ns/op 6152 B/op 203 allocs/op +BenchmarkNextFilteredUntil-4 100000 12940 ns/op 4512 B/op 173 allocs/op +BenchmarkNextFilteredUntilSelection-4 50000 38924 ns/op 19160 B/op 567 allocs/op +BenchmarkNextFilteredUntilNodes-4 50000 38528 ns/op 19160 B/op 567 allocs/op +BenchmarkPrevFilteredUntil-4 100000 12980 ns/op 4664 B/op 175 allocs/op +BenchmarkPrevFilteredUntilSelection-4 50000 39671 ns/op 19936 B/op 587 allocs/op +BenchmarkPrevFilteredUntilNodes-4 50000 39484 ns/op 19936 B/op 587 allocs/op +BenchmarkClosest-4 500000 3310 ns/op 160 B/op 8 allocs/op +BenchmarkClosestSelection-4 5000000 361 ns/op 96 B/op 6 allocs/op +BenchmarkClosestNodes-4 5000000 359 ns/op 96 B/op 6 allocs/op +PASS +ok github.com/PuerkitoBio/goquery 163.718s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1a-go1.7 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1a-go1.7 new file mode 100644 index 000000000..0831aac3a --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1a-go1.7 @@ -0,0 +1,85 @@ +BenchmarkFirst-4 30000000 50.9 ns/op 48 B/op 1 allocs/op +BenchmarkLast-4 30000000 50.0 ns/op 48 B/op 1 allocs/op +BenchmarkEq-4 30000000 50.5 ns/op 48 B/op 1 allocs/op +BenchmarkSlice-4 500000000 3.53 ns/op 0 B/op 0 allocs/op +BenchmarkGet-4 2000000000 1.66 ns/op 0 B/op 0 allocs/op +BenchmarkIndex-4 2000000 832 ns/op 248 B/op 10 allocs/op +BenchmarkIndexSelector-4 100000 16073 ns/op 3839 B/op 21 allocs/op +BenchmarkIndexOfNode-4 200000000 6.38 ns/op 0 B/op 0 allocs/op +BenchmarkIndexOfSelection-4 200000000 7.14 ns/op 0 B/op 0 allocs/op +BenchmarkMetalReviewExample-4 10000 140737 ns/op 12418 B/op 320 allocs/op +BenchmarkAdd-4 100000 13162 ns/op 974 B/op 10 allocs/op +BenchmarkAddSelection-4 500000 3160 ns/op 814 B/op 2 allocs/op +BenchmarkAddNodes-4 500000 3159 ns/op 814 B/op 2 allocs/op +BenchmarkAndSelf-4 200000 7423 ns/op 2404 B/op 9 allocs/op +BenchmarkFilter-4 100000 19671 ns/op 360 B/op 8 allocs/op +BenchmarkNot-4 100000 22577 ns/op 136 B/op 5 allocs/op +BenchmarkFilterFunction-4 50000 33960 ns/op 22976 B/op 755 allocs/op +BenchmarkNotFunction-4 50000 37909 ns/op 29120 B/op 757 allocs/op +BenchmarkFilterNodes-4 50000 34196 ns/op 20960 B/op 749 allocs/op +BenchmarkNotNodes-4 30000 40446 ns/op 29120 B/op 757 allocs/op +BenchmarkFilterSelection-4 50000 33091 ns/op 20960 B/op 749 allocs/op +BenchmarkNotSelection-4 30000 40609 ns/op 29120 B/op 757 allocs/op +BenchmarkHas-4 5000 262936 ns/op 2371 B/op 50 allocs/op +BenchmarkHasNodes-4 10000 148631 ns/op 21184 B/op 752 allocs/op +BenchmarkHasSelection-4 10000 153117 ns/op 21184 B/op 752 allocs/op +BenchmarkEnd-4 2000000000 1.02 ns/op 0 B/op 0 allocs/op +BenchmarkEach-4 300000 4653 ns/op 3304 B/op 118 allocs/op +BenchmarkMap-4 200000 8257 ns/op 5572 B/op 184 allocs/op +BenchmarkEachWithBreak-4 2000000 806 ns/op 560 B/op 20 allocs/op +BenchmarkAttr-4 100000000 22.0 ns/op 0 B/op 0 allocs/op +BenchmarkText-4 200000 8913 ns/op 7536 B/op 110 allocs/op +BenchmarkLength-4 2000000000 0.35 ns/op 0 B/op 0 allocs/op +BenchmarkHtml-4 5000000 398 ns/op 120 B/op 2 allocs/op +BenchmarkIs-4 100000 22392 ns/op 88 B/op 4 allocs/op +BenchmarkIsPositional-4 50000 26259 ns/op 1112 B/op 10 allocs/op +BenchmarkIsFunction-4 1000000 1212 ns/op 784 B/op 28 allocs/op +BenchmarkIsSelection-4 50000 33222 ns/op 20960 B/op 749 allocs/op +BenchmarkIsNodes-4 50000 33408 ns/op 20960 B/op 749 allocs/op +BenchmarkHasClass-4 10000 233208 ns/op 14944 B/op 976 allocs/op +BenchmarkContains-4 200000000 7.57 ns/op 0 B/op 0 allocs/op +BenchmarkFind-4 100000 16121 ns/op 3839 B/op 21 allocs/op +BenchmarkFindWithinSelection-4 20000 68019 ns/op 11521 B/op 97 allocs/op +BenchmarkFindSelection-4 5000 387582 ns/op 59787 B/op 176 allocs/op +BenchmarkFindNodes-4 5000 389246 ns/op 59797 B/op 176 allocs/op +BenchmarkContents-4 200000 11475 ns/op 2878 B/op 42 allocs/op +BenchmarkContentsFiltered-4 200000 11222 ns/op 2498 B/op 46 allocs/op +BenchmarkChildren-4 2000000 650 ns/op 152 B/op 7 allocs/op +BenchmarkChildrenFiltered-4 500000 2568 ns/op 352 B/op 15 allocs/op +BenchmarkParent-4 2000 702513 ns/op 194478 B/op 828 allocs/op +BenchmarkParentFiltered-4 2000 690778 ns/op 194658 B/op 835 allocs/op +BenchmarkParents-4 10000 124855 ns/op 49869 B/op 868 allocs/op +BenchmarkParentsFiltered-4 10000 128535 ns/op 50456 B/op 876 allocs/op +BenchmarkParentsUntil-4 20000 72982 ns/op 23802 B/op 388 allocs/op +BenchmarkParentsUntilSelection-4 10000 156099 ns/op 72453 B/op 1549 allocs/op +BenchmarkParentsUntilNodes-4 10000 156610 ns/op 72455 B/op 1549 allocs/op +BenchmarkParentsFilteredUntil-4 100000 15549 ns/op 4068 B/op 94 allocs/op +BenchmarkParentsFilteredUntilSelection-4 100000 20564 ns/op 7276 B/op 198 allocs/op +BenchmarkParentsFilteredUntilNodes-4 100000 20635 ns/op 7276 B/op 198 allocs/op +BenchmarkSiblings-4 3000 565114 ns/op 205910 B/op 336 allocs/op +BenchmarkSiblingsFiltered-4 3000 580264 ns/op 206993 B/op 345 allocs/op +BenchmarkNext-4 20000 93177 ns/op 26810 B/op 169 allocs/op +BenchmarkNextFiltered-4 20000 94171 ns/op 27013 B/op 175 allocs/op +BenchmarkNextAll-4 5000 270320 ns/op 89289 B/op 237 allocs/op +BenchmarkNextAllFiltered-4 5000 275283 ns/op 90375 B/op 246 allocs/op +BenchmarkPrev-4 20000 92777 ns/op 26810 B/op 169 allocs/op +BenchmarkPrevFiltered-4 20000 95577 ns/op 27007 B/op 175 allocs/op +BenchmarkPrevAll-4 20000 86339 ns/op 27515 B/op 151 allocs/op +BenchmarkPrevAllFiltered-4 20000 87759 ns/op 27715 B/op 157 allocs/op +BenchmarkNextUntil-4 10000 163930 ns/op 48541 B/op 330 allocs/op +BenchmarkNextUntilSelection-4 30000 56382 ns/op 23880 B/op 556 allocs/op +BenchmarkNextUntilNodes-4 100000 18883 ns/op 8703 B/op 252 allocs/op +BenchmarkPrevUntil-4 3000 484668 ns/op 145402 B/op 611 allocs/op +BenchmarkPrevUntilSelection-4 20000 72125 ns/op 28865 B/op 705 allocs/op +BenchmarkPrevUntilNodes-4 100000 14722 ns/op 6510 B/op 205 allocs/op +BenchmarkNextFilteredUntil-4 50000 39006 ns/op 10990 B/op 192 allocs/op +BenchmarkNextFilteredUntilSelection-4 20000 66048 ns/op 25641 B/op 586 allocs/op +BenchmarkNextFilteredUntilNodes-4 20000 65314 ns/op 25640 B/op 586 allocs/op +BenchmarkPrevFilteredUntil-4 50000 33312 ns/op 9709 B/op 189 allocs/op +BenchmarkPrevFilteredUntilSelection-4 20000 64197 ns/op 24981 B/op 601 allocs/op +BenchmarkPrevFilteredUntilNodes-4 20000 64505 ns/op 24982 B/op 601 allocs/op +BenchmarkClosest-4 500000 4065 ns/op 160 B/op 8 allocs/op +BenchmarkClosestSelection-4 2000000 756 ns/op 96 B/op 6 allocs/op +BenchmarkClosestNodes-4 2000000 753 ns/op 96 B/op 6 allocs/op +PASS +ok github.com/PuerkitoBio/goquery 162.053s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1b-go1.7 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1b-go1.7 new file mode 100644 index 000000000..e8a9e5124 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1b-go1.7 @@ -0,0 +1,85 @@ +BenchmarkFirst-4 30000000 51.8 ns/op 48 B/op 1 allocs/op +BenchmarkLast-4 30000000 50.1 ns/op 48 B/op 1 allocs/op +BenchmarkEq-4 30000000 51.4 ns/op 48 B/op 1 allocs/op +BenchmarkSlice-4 500000000 3.52 ns/op 0 B/op 0 allocs/op +BenchmarkGet-4 2000000000 1.65 ns/op 0 B/op 0 allocs/op +BenchmarkIndex-4 2000000 787 ns/op 248 B/op 10 allocs/op +BenchmarkIndexSelector-4 100000 16952 ns/op 3839 B/op 21 allocs/op +BenchmarkIndexOfNode-4 200000000 6.42 ns/op 0 B/op 0 allocs/op +BenchmarkIndexOfSelection-4 200000000 7.12 ns/op 0 B/op 0 allocs/op +BenchmarkMetalReviewExample-4 10000 141994 ns/op 12418 B/op 320 allocs/op +BenchmarkAdd-4 200000 10367 ns/op 208 B/op 9 allocs/op +BenchmarkAddSelection-4 10000000 152 ns/op 48 B/op 1 allocs/op +BenchmarkAddNodes-4 10000000 147 ns/op 48 B/op 1 allocs/op +BenchmarkAndSelf-4 1000000 1647 ns/op 1008 B/op 5 allocs/op +BenchmarkFilter-4 100000 19522 ns/op 360 B/op 8 allocs/op +BenchmarkNot-4 100000 22546 ns/op 136 B/op 5 allocs/op +BenchmarkFilterFunction-4 50000 35087 ns/op 22976 B/op 755 allocs/op +BenchmarkNotFunction-4 50000 39123 ns/op 29120 B/op 757 allocs/op +BenchmarkFilterNodes-4 50000 34890 ns/op 20960 B/op 749 allocs/op +BenchmarkNotNodes-4 30000 41145 ns/op 29120 B/op 757 allocs/op +BenchmarkFilterSelection-4 50000 33735 ns/op 20960 B/op 749 allocs/op +BenchmarkNotSelection-4 30000 41334 ns/op 29120 B/op 757 allocs/op +BenchmarkHas-4 5000 264058 ns/op 2370 B/op 50 allocs/op +BenchmarkHasNodes-4 10000 151718 ns/op 21184 B/op 752 allocs/op +BenchmarkHasSelection-4 10000 156955 ns/op 21184 B/op 752 allocs/op +BenchmarkEnd-4 2000000000 1.01 ns/op 0 B/op 0 allocs/op +BenchmarkEach-4 300000 4660 ns/op 3304 B/op 118 allocs/op +BenchmarkMap-4 200000 8404 ns/op 5572 B/op 184 allocs/op +BenchmarkEachWithBreak-4 2000000 806 ns/op 560 B/op 20 allocs/op +BenchmarkAttr-4 100000000 21.6 ns/op 0 B/op 0 allocs/op +BenchmarkText-4 200000 8911 ns/op 7536 B/op 110 allocs/op +BenchmarkLength-4 2000000000 0.34 ns/op 0 B/op 0 allocs/op +BenchmarkHtml-4 3000000 405 ns/op 120 B/op 2 allocs/op +BenchmarkIs-4 100000 22228 ns/op 88 B/op 4 allocs/op +BenchmarkIsPositional-4 50000 26469 ns/op 1112 B/op 10 allocs/op +BenchmarkIsFunction-4 1000000 1240 ns/op 784 B/op 28 allocs/op +BenchmarkIsSelection-4 50000 33709 ns/op 20960 B/op 749 allocs/op +BenchmarkIsNodes-4 50000 33711 ns/op 20960 B/op 749 allocs/op +BenchmarkHasClass-4 10000 236005 ns/op 14944 B/op 976 allocs/op +BenchmarkContains-4 200000000 7.47 ns/op 0 B/op 0 allocs/op +BenchmarkFind-4 100000 16075 ns/op 3839 B/op 21 allocs/op +BenchmarkFindWithinSelection-4 30000 41418 ns/op 3539 B/op 82 allocs/op +BenchmarkFindSelection-4 10000 209490 ns/op 5616 B/op 89 allocs/op +BenchmarkFindNodes-4 10000 208206 ns/op 5614 B/op 89 allocs/op +BenchmarkContents-4 300000 4751 ns/op 1420 B/op 36 allocs/op +BenchmarkContentsFiltered-4 300000 5454 ns/op 1570 B/op 41 allocs/op +BenchmarkChildren-4 3000000 527 ns/op 152 B/op 7 allocs/op +BenchmarkChildrenFiltered-4 1000000 2484 ns/op 352 B/op 15 allocs/op +BenchmarkParent-4 50000 34724 ns/op 6940 B/op 387 allocs/op +BenchmarkParentFiltered-4 50000 35596 ns/op 7141 B/op 394 allocs/op +BenchmarkParents-4 20000 62094 ns/op 30720 B/op 837 allocs/op +BenchmarkParentsFiltered-4 20000 63223 ns/op 31304 B/op 845 allocs/op +BenchmarkParentsUntil-4 50000 30391 ns/op 11828 B/op 358 allocs/op +BenchmarkParentsUntilSelection-4 20000 99962 ns/op 54075 B/op 1523 allocs/op +BenchmarkParentsUntilNodes-4 20000 98763 ns/op 54073 B/op 1523 allocs/op +BenchmarkParentsFilteredUntil-4 200000 7982 ns/op 2787 B/op 88 allocs/op +BenchmarkParentsFilteredUntilSelection-4 100000 13618 ns/op 5995 B/op 192 allocs/op +BenchmarkParentsFilteredUntilNodes-4 100000 13639 ns/op 5994 B/op 192 allocs/op +BenchmarkSiblings-4 20000 75287 ns/op 28453 B/op 225 allocs/op +BenchmarkSiblingsFiltered-4 20000 80139 ns/op 29543 B/op 234 allocs/op +BenchmarkNext-4 100000 14270 ns/op 4659 B/op 117 allocs/op +BenchmarkNextFiltered-4 100000 15352 ns/op 4860 B/op 123 allocs/op +BenchmarkNextAll-4 20000 60811 ns/op 22771 B/op 157 allocs/op +BenchmarkNextAllFiltered-4 20000 69079 ns/op 23871 B/op 166 allocs/op +BenchmarkPrev-4 100000 14417 ns/op 4659 B/op 117 allocs/op +BenchmarkPrevFiltered-4 100000 15443 ns/op 4859 B/op 123 allocs/op +BenchmarkPrevAll-4 100000 22008 ns/op 7346 B/op 120 allocs/op +BenchmarkPrevAllFiltered-4 100000 23212 ns/op 7544 B/op 126 allocs/op +BenchmarkNextUntil-4 50000 30589 ns/op 8767 B/op 267 allocs/op +BenchmarkNextUntilSelection-4 30000 40875 ns/op 19862 B/op 546 allocs/op +BenchmarkNextUntilNodes-4 100000 15987 ns/op 8134 B/op 249 allocs/op +BenchmarkPrevUntil-4 20000 98799 ns/op 25727 B/op 467 allocs/op +BenchmarkPrevUntilSelection-4 30000 51874 ns/op 24875 B/op 694 allocs/op +BenchmarkPrevUntilNodes-4 100000 12901 ns/op 6334 B/op 204 allocs/op +BenchmarkNextFilteredUntil-4 100000 19869 ns/op 5909 B/op 177 allocs/op +BenchmarkNextFilteredUntilSelection-4 30000 45412 ns/op 20557 B/op 571 allocs/op +BenchmarkNextFilteredUntilNodes-4 30000 45363 ns/op 20557 B/op 571 allocs/op +BenchmarkPrevFilteredUntil-4 100000 19357 ns/op 6033 B/op 179 allocs/op +BenchmarkPrevFilteredUntilSelection-4 30000 46396 ns/op 21305 B/op 591 allocs/op +BenchmarkPrevFilteredUntilNodes-4 30000 46133 ns/op 21305 B/op 591 allocs/op +BenchmarkClosest-4 500000 3448 ns/op 160 B/op 8 allocs/op +BenchmarkClosestSelection-4 3000000 528 ns/op 96 B/op 6 allocs/op +BenchmarkClosestNodes-4 3000000 523 ns/op 96 B/op 6 allocs/op +PASS +ok github.com/PuerkitoBio/goquery 162.012s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1c-go1.7 b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1c-go1.7 new file mode 100644 index 000000000..e522e5a2d --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench/v1.0.1c-go1.7 @@ -0,0 +1,86 @@ +BenchmarkFirst-4 30000000 51.7 ns/op 48 B/op 1 allocs/op +BenchmarkLast-4 30000000 51.9 ns/op 48 B/op 1 allocs/op +BenchmarkEq-4 30000000 50.0 ns/op 48 B/op 1 allocs/op +BenchmarkSlice-4 500000000 3.47 ns/op 0 B/op 0 allocs/op +BenchmarkGet-4 2000000000 1.68 ns/op 0 B/op 0 allocs/op +BenchmarkIndex-4 2000000 804 ns/op 248 B/op 10 allocs/op +BenchmarkIndexSelector-4 100000 16285 ns/op 3839 B/op 21 allocs/op +BenchmarkIndexOfNode-4 200000000 6.50 ns/op 0 B/op 0 allocs/op +BenchmarkIndexOfSelection-4 200000000 7.02 ns/op 0 B/op 0 allocs/op +BenchmarkMetalReviewExample-4 10000 143160 ns/op 12417 B/op 320 allocs/op +BenchmarkAdd-4 200000 10326 ns/op 208 B/op 9 allocs/op +BenchmarkAddSelection-4 10000000 155 ns/op 48 B/op 1 allocs/op +BenchmarkAddNodes-4 10000000 156 ns/op 48 B/op 1 allocs/op +BenchmarkAddNodesBig-4 20000 94439 ns/op 21847 B/op 37 allocs/op +BenchmarkAndSelf-4 1000000 1791 ns/op 1008 B/op 5 allocs/op +BenchmarkFilter-4 100000 19470 ns/op 360 B/op 8 allocs/op +BenchmarkNot-4 100000 22500 ns/op 136 B/op 5 allocs/op +BenchmarkFilterFunction-4 50000 34578 ns/op 22976 B/op 755 allocs/op +BenchmarkNotFunction-4 50000 38703 ns/op 29120 B/op 757 allocs/op +BenchmarkFilterNodes-4 50000 34486 ns/op 20960 B/op 749 allocs/op +BenchmarkNotNodes-4 30000 41094 ns/op 29120 B/op 757 allocs/op +BenchmarkFilterSelection-4 50000 33623 ns/op 20960 B/op 749 allocs/op +BenchmarkNotSelection-4 30000 41483 ns/op 29120 B/op 757 allocs/op +BenchmarkHas-4 5000 266628 ns/op 2371 B/op 50 allocs/op +BenchmarkHasNodes-4 10000 152617 ns/op 21184 B/op 752 allocs/op +BenchmarkHasSelection-4 10000 156682 ns/op 21184 B/op 752 allocs/op +BenchmarkEnd-4 2000000000 1.00 ns/op 0 B/op 0 allocs/op +BenchmarkEach-4 300000 4712 ns/op 3304 B/op 118 allocs/op +BenchmarkMap-4 200000 8434 ns/op 5572 B/op 184 allocs/op +BenchmarkEachWithBreak-4 2000000 819 ns/op 560 B/op 20 allocs/op +BenchmarkAttr-4 100000000 21.7 ns/op 0 B/op 0 allocs/op +BenchmarkText-4 200000 9376 ns/op 7536 B/op 110 allocs/op +BenchmarkLength-4 2000000000 0.35 ns/op 0 B/op 0 allocs/op +BenchmarkHtml-4 5000000 401 ns/op 120 B/op 2 allocs/op +BenchmarkIs-4 100000 22214 ns/op 88 B/op 4 allocs/op +BenchmarkIsPositional-4 50000 26559 ns/op 1112 B/op 10 allocs/op +BenchmarkIsFunction-4 1000000 1228 ns/op 784 B/op 28 allocs/op +BenchmarkIsSelection-4 50000 33471 ns/op 20960 B/op 749 allocs/op +BenchmarkIsNodes-4 50000 34461 ns/op 20960 B/op 749 allocs/op +BenchmarkHasClass-4 10000 232429 ns/op 14944 B/op 976 allocs/op +BenchmarkContains-4 200000000 7.62 ns/op 0 B/op 0 allocs/op +BenchmarkFind-4 100000 16114 ns/op 3839 B/op 21 allocs/op +BenchmarkFindWithinSelection-4 30000 42520 ns/op 3540 B/op 82 allocs/op +BenchmarkFindSelection-4 10000 209801 ns/op 5615 B/op 89 allocs/op +BenchmarkFindNodes-4 10000 209082 ns/op 5614 B/op 89 allocs/op +BenchmarkContents-4 300000 4836 ns/op 1420 B/op 36 allocs/op +BenchmarkContentsFiltered-4 200000 5495 ns/op 1570 B/op 41 allocs/op +BenchmarkChildren-4 3000000 527 ns/op 152 B/op 7 allocs/op +BenchmarkChildrenFiltered-4 500000 2499 ns/op 352 B/op 15 allocs/op +BenchmarkParent-4 50000 34072 ns/op 6942 B/op 387 allocs/op +BenchmarkParentFiltered-4 50000 36077 ns/op 7141 B/op 394 allocs/op +BenchmarkParents-4 20000 64118 ns/op 30719 B/op 837 allocs/op +BenchmarkParentsFiltered-4 20000 63432 ns/op 31303 B/op 845 allocs/op +BenchmarkParentsUntil-4 50000 29589 ns/op 11829 B/op 358 allocs/op +BenchmarkParentsUntilSelection-4 10000 101033 ns/op 54076 B/op 1523 allocs/op +BenchmarkParentsUntilNodes-4 10000 100584 ns/op 54076 B/op 1523 allocs/op +BenchmarkParentsFilteredUntil-4 200000 8061 ns/op 2787 B/op 88 allocs/op +BenchmarkParentsFilteredUntilSelection-4 100000 13848 ns/op 5995 B/op 192 allocs/op +BenchmarkParentsFilteredUntilNodes-4 100000 13766 ns/op 5995 B/op 192 allocs/op +BenchmarkSiblings-4 20000 75135 ns/op 28453 B/op 225 allocs/op +BenchmarkSiblingsFiltered-4 20000 80532 ns/op 29544 B/op 234 allocs/op +BenchmarkNext-4 100000 14200 ns/op 4660 B/op 117 allocs/op +BenchmarkNextFiltered-4 100000 15284 ns/op 4859 B/op 123 allocs/op +BenchmarkNextAll-4 20000 60889 ns/op 22774 B/op 157 allocs/op +BenchmarkNextAllFiltered-4 20000 65125 ns/op 23869 B/op 166 allocs/op +BenchmarkPrev-4 100000 14448 ns/op 4659 B/op 117 allocs/op +BenchmarkPrevFiltered-4 100000 15444 ns/op 4859 B/op 123 allocs/op +BenchmarkPrevAll-4 100000 22019 ns/op 7344 B/op 120 allocs/op +BenchmarkPrevAllFiltered-4 100000 23307 ns/op 7545 B/op 126 allocs/op +BenchmarkNextUntil-4 50000 30287 ns/op 8766 B/op 267 allocs/op +BenchmarkNextUntilSelection-4 30000 41476 ns/op 19862 B/op 546 allocs/op +BenchmarkNextUntilNodes-4 100000 16106 ns/op 8133 B/op 249 allocs/op +BenchmarkPrevUntil-4 20000 98951 ns/op 25728 B/op 467 allocs/op +BenchmarkPrevUntilSelection-4 30000 52390 ns/op 24875 B/op 694 allocs/op +BenchmarkPrevUntilNodes-4 100000 12986 ns/op 6334 B/op 204 allocs/op +BenchmarkNextFilteredUntil-4 100000 19365 ns/op 5908 B/op 177 allocs/op +BenchmarkNextFilteredUntilSelection-4 30000 45334 ns/op 20555 B/op 571 allocs/op +BenchmarkNextFilteredUntilNodes-4 30000 45292 ns/op 20556 B/op 571 allocs/op +BenchmarkPrevFilteredUntil-4 100000 19412 ns/op 6032 B/op 179 allocs/op +BenchmarkPrevFilteredUntilSelection-4 30000 46286 ns/op 21304 B/op 591 allocs/op +BenchmarkPrevFilteredUntilNodes-4 30000 46554 ns/op 21305 B/op 591 allocs/op +BenchmarkClosest-4 500000 3480 ns/op 160 B/op 8 allocs/op +BenchmarkClosestSelection-4 2000000 722 ns/op 96 B/op 6 allocs/op +BenchmarkClosestNodes-4 2000000 719 ns/op 96 B/op 6 allocs/op +PASS +ok github.com/PuerkitoBio/goquery 160.565s diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_array_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_array_test.go new file mode 100644 index 000000000..29c7e205d --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_array_test.go @@ -0,0 +1,120 @@ +package goquery + +import ( + "testing" +) + +func BenchmarkFirst(b *testing.B) { + b.StopTimer() + sel := DocB().Find("dd") + b.StartTimer() + for i := 0; i < b.N; i++ { + sel.First() + } +} + +func BenchmarkLast(b *testing.B) { + b.StopTimer() + sel := DocB().Find("dd") + b.StartTimer() + for i := 0; i < b.N; i++ { + sel.Last() + } +} + +func BenchmarkEq(b *testing.B) { + b.StopTimer() + sel := DocB().Find("dd") + j := 0 + b.StartTimer() + for i := 0; i < b.N; i++ { + sel.Eq(j) + if j++; j >= sel.Length() { + j = 0 + } + } +} + +func BenchmarkSlice(b *testing.B) { + b.StopTimer() + sel := DocB().Find("dd") + j := 0 + b.StartTimer() + for i := 0; i < b.N; i++ { + sel.Slice(j, j+4) + if j++; j >= (sel.Length() - 4) { + j = 0 + } + } +} + +func BenchmarkGet(b *testing.B) { + b.StopTimer() + sel := DocB().Find("dd") + j := 0 + b.StartTimer() + for i := 0; i < b.N; i++ { + sel.Get(j) + if j++; j >= sel.Length() { + j = 0 + } + } +} + +func BenchmarkIndex(b *testing.B) { + var j int + + b.StopTimer() + sel := DocB().Find("#Main") + b.StartTimer() + for i := 0; i < b.N; i++ { + j = sel.Index() + } + if j != 3 { + b.Fatalf("want 3, got %d", j) + } +} + +func BenchmarkIndexSelector(b *testing.B) { + var j int + + b.StopTimer() + sel := DocB().Find("#manual-nav dl dd:nth-child(1)") + b.StartTimer() + for i := 0; i < b.N; i++ { + j = sel.IndexSelector("dd") + } + if j != 4 { + b.Fatalf("want 4, got %d", j) + } +} + +func BenchmarkIndexOfNode(b *testing.B) { + var j int + + b.StopTimer() + sel := DocB().Find("span a") + sel2 := DocB().Find("span a:nth-child(3)") + n := sel2.Get(0) + b.StartTimer() + for i := 0; i < b.N; i++ { + j = sel.IndexOfNode(n) + } + if j != 2 { + b.Fatalf("want 2, got %d", j) + } +} + +func BenchmarkIndexOfSelection(b *testing.B) { + var j int + b.StopTimer() + sel := DocB().Find("span a") + sel2 := DocB().Find("span a:nth-child(3)") + b.StartTimer() + for i := 0; i < b.N; i++ { + j = sel.IndexOfSelection(sel2) + } + if j != 2 { + b.Fatalf("want 2, got %d", j) + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_example_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_example_test.go new file mode 100644 index 000000000..ba9ebe5c0 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_example_test.go @@ -0,0 +1,40 @@ +package goquery + +import ( + "bytes" + "fmt" + "strconv" + "testing" +) + +func BenchmarkMetalReviewExample(b *testing.B) { + var n int + var buf bytes.Buffer + + b.StopTimer() + doc := loadDoc("metalreview.html") + b.StartTimer() + for i := 0; i < b.N; i++ { + doc.Find(".slider-row:nth-child(1) .slider-item").Each(func(i int, s *Selection) { + var band, title string + var score float64 + var e error + + n++ + // For each item found, get the band, title and score, and print it + band = s.Find("strong").Text() + title = s.Find("em").Text() + if score, e = strconv.ParseFloat(s.Find(".score").Text(), 64); e != nil { + // Not a valid float, ignore score + if n <= 4 { + buf.WriteString(fmt.Sprintf("Review %d: %s - %s.\n", i, band, title)) + } + } else { + // Print all, including score + if n <= 4 { + buf.WriteString(fmt.Sprintf("Review %d: %s - %s (%2.1f).\n", i, band, title, score)) + } + } + }) + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_expand_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_expand_test.go new file mode 100644 index 000000000..61f194753 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_expand_test.go @@ -0,0 +1,104 @@ +package goquery + +import ( + "testing" +) + +func BenchmarkAdd(b *testing.B) { + var n int + + b.StopTimer() + sel := DocB().Find("dd") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Add("h2[title]").Length() + } else { + sel.Add("h2[title]") + } + } + if n != 43 { + b.Fatalf("want 43, got %d", n) + } +} + +func BenchmarkAddSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocB().Find("dd") + sel2 := DocB().Find("h2[title]") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.AddSelection(sel2).Length() + } else { + sel.AddSelection(sel2) + } + } + if n != 43 { + b.Fatalf("want 43, got %d", n) + } +} + +func BenchmarkAddNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := DocB().Find("dd") + sel2 := DocB().Find("h2[title]") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.AddNodes(nodes...).Length() + } else { + sel.AddNodes(nodes...) + } + } + if n != 43 { + b.Fatalf("want 43, got %d", n) + } +} + +func BenchmarkAddNodesBig(b *testing.B) { + var n int + + doc := DocW() + sel := doc.Find("li") + // make nodes > 1000 + nodes := sel.Nodes + nodes = append(nodes, nodes...) + nodes = append(nodes, nodes...) + sel = doc.Find("xyz") + b.ResetTimer() + + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.AddNodes(nodes...).Length() + } else { + sel.AddNodes(nodes...) + } + } + if n != 373 { + b.Fatalf("want 373, got %d", n) + } +} + +func BenchmarkAndSelf(b *testing.B) { + var n int + + b.StopTimer() + sel := DocB().Find("dd").Parent() + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.AndSelf().Length() + } else { + sel.AndSelf() + } + } + if n != 44 { + b.Fatalf("want 44, got %d", n) + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_filter_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_filter_test.go new file mode 100644 index 000000000..38e39f54a --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_filter_test.go @@ -0,0 +1,236 @@ +package goquery + +import ( + "testing" +) + +func BenchmarkFilter(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Filter(".toclevel-1").Length() + } else { + sel.Filter(".toclevel-1") + } + } + if n != 13 { + b.Fatalf("want 13, got %d", n) + } +} + +func BenchmarkNot(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Not(".toclevel-2").Length() + } else { + sel.Filter(".toclevel-2") + } + } + if n != 371 { + b.Fatalf("want 371, got %d", n) + } +} + +func BenchmarkFilterFunction(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + f := func(i int, s *Selection) bool { + return len(s.Get(0).Attr) > 0 + } + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.FilterFunction(f).Length() + } else { + sel.FilterFunction(f) + } + } + if n != 112 { + b.Fatalf("want 112, got %d", n) + } +} + +func BenchmarkNotFunction(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + f := func(i int, s *Selection) bool { + return len(s.Get(0).Attr) > 0 + } + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NotFunction(f).Length() + } else { + sel.NotFunction(f) + } + } + if n != 261 { + b.Fatalf("want 261, got %d", n) + } +} + +func BenchmarkFilterNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + sel2 := DocW().Find(".toclevel-2") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.FilterNodes(nodes...).Length() + } else { + sel.FilterNodes(nodes...) + } + } + if n != 2 { + b.Fatalf("want 2, got %d", n) + } +} + +func BenchmarkNotNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + sel2 := DocW().Find(".toclevel-1") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NotNodes(nodes...).Length() + } else { + sel.NotNodes(nodes...) + } + } + if n != 360 { + b.Fatalf("want 360, got %d", n) + } +} + +func BenchmarkFilterSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + sel2 := DocW().Find(".toclevel-2") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.FilterSelection(sel2).Length() + } else { + sel.FilterSelection(sel2) + } + } + if n != 2 { + b.Fatalf("want 2, got %d", n) + } +} + +func BenchmarkNotSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + sel2 := DocW().Find(".toclevel-1") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NotSelection(sel2).Length() + } else { + sel.NotSelection(sel2) + } + } + if n != 360 { + b.Fatalf("want 360, got %d", n) + } +} + +func BenchmarkHas(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Has(".editsection").Length() + } else { + sel.Has(".editsection") + } + } + if n != 13 { + b.Fatalf("want 13, got %d", n) + } +} + +func BenchmarkHasNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + sel2 := DocW().Find(".tocnumber") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.HasNodes(nodes...).Length() + } else { + sel.HasNodes(nodes...) + } + } + if n != 15 { + b.Fatalf("want 15, got %d", n) + } +} + +func BenchmarkHasSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + sel2 := DocW().Find(".tocnumber") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.HasSelection(sel2).Length() + } else { + sel.HasSelection(sel2) + } + } + if n != 15 { + b.Fatalf("want 15, got %d", n) + } +} + +func BenchmarkEnd(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li").Has(".tocnumber") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.End().Length() + } else { + sel.End() + } + } + if n != 373 { + b.Fatalf("want 373, got %d", n) + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_iteration_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_iteration_test.go new file mode 100644 index 000000000..71bfd59c5 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_iteration_test.go @@ -0,0 +1,69 @@ +package goquery + +import ( + "strconv" + "testing" +) + +func BenchmarkEach(b *testing.B) { + var tmp, n int + + b.StopTimer() + sel := DocW().Find("td") + f := func(i int, s *Selection) { + tmp++ + } + b.StartTimer() + for i := 0; i < b.N; i++ { + sel.Each(f) + if n == 0 { + n = tmp + } + } + if n != 59 { + b.Fatalf("want 59, got %d", n) + } +} + +func BenchmarkMap(b *testing.B) { + var tmp, n int + + b.StopTimer() + sel := DocW().Find("td") + f := func(i int, s *Selection) string { + tmp++ + return strconv.Itoa(tmp) + } + b.StartTimer() + for i := 0; i < b.N; i++ { + sel.Map(f) + if n == 0 { + n = tmp + } + } + if n != 59 { + b.Fatalf("want 59, got %d", n) + } +} + +func BenchmarkEachWithBreak(b *testing.B) { + var tmp, n int + + b.StopTimer() + sel := DocW().Find("td") + f := func(i int, s *Selection) bool { + tmp++ + return tmp < 10 + } + b.StartTimer() + for i := 0; i < b.N; i++ { + tmp = 0 + sel.EachWithBreak(f) + if n == 0 { + n = tmp + } + } + if n != 10 { + b.Fatalf("want 10, got %d", n) + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_property_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_property_test.go new file mode 100644 index 000000000..ee2d4cd02 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_property_test.go @@ -0,0 +1,51 @@ +package goquery + +import ( + "testing" +) + +func BenchmarkAttr(b *testing.B) { + var s string + + b.StopTimer() + sel := DocW().Find("h1") + b.StartTimer() + for i := 0; i < b.N; i++ { + s, _ = sel.Attr("id") + } + if s != "firstHeading" { + b.Fatalf("want firstHeading, got %q", s) + } +} + +func BenchmarkText(b *testing.B) { + b.StopTimer() + sel := DocW().Find("h2") + b.StartTimer() + for i := 0; i < b.N; i++ { + sel.Text() + } +} + +func BenchmarkLength(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + b.StartTimer() + for i := 0; i < b.N; i++ { + n = sel.Length() + } + if n != 14 { + b.Fatalf("want 14, got %d", n) + } +} + +func BenchmarkHtml(b *testing.B) { + b.StopTimer() + sel := DocW().Find("h2") + b.StartTimer() + for i := 0; i < b.N; i++ { + _, _ = sel.Html() + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_query_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_query_test.go new file mode 100644 index 000000000..64fdbc4bd --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_query_test.go @@ -0,0 +1,111 @@ +package goquery + +import ( + "testing" +) + +func BenchmarkIs(b *testing.B) { + var y bool + + b.StopTimer() + sel := DocW().Find("li") + b.StartTimer() + for i := 0; i < b.N; i++ { + y = sel.Is(".toclevel-2") + } + if !y { + b.Fatal("want true") + } +} + +func BenchmarkIsPositional(b *testing.B) { + var y bool + + b.StopTimer() + sel := DocW().Find("li") + b.StartTimer() + for i := 0; i < b.N; i++ { + y = sel.Is("li:nth-child(2)") + } + if !y { + b.Fatal("want true") + } +} + +func BenchmarkIsFunction(b *testing.B) { + var y bool + + b.StopTimer() + sel := DocW().Find(".toclevel-1") + f := func(i int, s *Selection) bool { + return i == 8 + } + b.StartTimer() + for i := 0; i < b.N; i++ { + y = sel.IsFunction(f) + } + if !y { + b.Fatal("want true") + } +} + +func BenchmarkIsSelection(b *testing.B) { + var y bool + + b.StopTimer() + sel := DocW().Find("li") + sel2 := DocW().Find(".toclevel-2") + b.StartTimer() + for i := 0; i < b.N; i++ { + y = sel.IsSelection(sel2) + } + if !y { + b.Fatal("want true") + } +} + +func BenchmarkIsNodes(b *testing.B) { + var y bool + + b.StopTimer() + sel := DocW().Find("li") + sel2 := DocW().Find(".toclevel-2") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + y = sel.IsNodes(nodes...) + } + if !y { + b.Fatal("want true") + } +} + +func BenchmarkHasClass(b *testing.B) { + var y bool + + b.StopTimer() + sel := DocW().Find("span") + b.StartTimer() + for i := 0; i < b.N; i++ { + y = sel.HasClass("official") + } + if !y { + b.Fatal("want true") + } +} + +func BenchmarkContains(b *testing.B) { + var y bool + + b.StopTimer() + sel := DocW().Find("span.url") + sel2 := DocW().Find("a[rel=\"nofollow\"]") + node := sel2.Nodes[0] + b.StartTimer() + for i := 0; i < b.N; i++ { + y = sel.Contains(node) + } + if !y { + b.Fatal("want true") + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_traversal_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_traversal_test.go new file mode 100644 index 000000000..8cb673b50 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/bench_traversal_test.go @@ -0,0 +1,822 @@ +package goquery + +import ( + "testing" + + "github.com/andybalholm/cascadia" +) + +func BenchmarkFind(b *testing.B) { + var n int + + for i := 0; i < b.N; i++ { + if n == 0 { + n = DocB().Find("dd").Length() + + } else { + DocB().Find("dd") + } + } + if n != 41 { + b.Fatalf("want 41, got %d", n) + } +} + +func BenchmarkFindWithinSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("ul") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Find("a[class]").Length() + } else { + sel.Find("a[class]") + } + } + if n != 39 { + b.Fatalf("want 39, got %d", n) + } +} + +func BenchmarkFindSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("ul") + sel2 := DocW().Find("span") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.FindSelection(sel2).Length() + } else { + sel.FindSelection(sel2) + } + } + if n != 73 { + b.Fatalf("want 73, got %d", n) + } +} + +func BenchmarkFindNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("ul") + sel2 := DocW().Find("span") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.FindNodes(nodes...).Length() + } else { + sel.FindNodes(nodes...) + } + } + if n != 73 { + b.Fatalf("want 73, got %d", n) + } +} + +func BenchmarkContents(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find(".toclevel-1") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Contents().Length() + } else { + sel.Contents() + } + } + if n != 16 { + b.Fatalf("want 16, got %d", n) + } +} + +func BenchmarkContentsFiltered(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find(".toclevel-1") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ContentsFiltered("a[href=\"#Examples\"]").Length() + } else { + sel.ContentsFiltered("a[href=\"#Examples\"]") + } + } + if n != 1 { + b.Fatalf("want 1, got %d", n) + } +} + +func BenchmarkChildren(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find(".toclevel-2") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Children().Length() + } else { + sel.Children() + } + } + if n != 2 { + b.Fatalf("want 2, got %d", n) + } +} + +func BenchmarkChildrenFiltered(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h3") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ChildrenFiltered(".editsection").Length() + } else { + sel.ChildrenFiltered(".editsection") + } + } + if n != 2 { + b.Fatalf("want 2, got %d", n) + } +} + +func BenchmarkParent(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Parent().Length() + } else { + sel.Parent() + } + } + if n != 55 { + b.Fatalf("want 55, got %d", n) + } +} + +func BenchmarkParentFiltered(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ParentFiltered("ul[id]").Length() + } else { + sel.ParentFiltered("ul[id]") + } + } + if n != 4 { + b.Fatalf("want 4, got %d", n) + } +} + +func BenchmarkParents(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("th a") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Parents().Length() + } else { + sel.Parents() + } + } + if n != 73 { + b.Fatalf("want 73, got %d", n) + } +} + +func BenchmarkParentsFiltered(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("th a") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ParentsFiltered("tr").Length() + } else { + sel.ParentsFiltered("tr") + } + } + if n != 18 { + b.Fatalf("want 18, got %d", n) + } +} + +func BenchmarkParentsUntil(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("th a") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ParentsUntil("table").Length() + } else { + sel.ParentsUntil("table") + } + } + if n != 52 { + b.Fatalf("want 52, got %d", n) + } +} + +func BenchmarkParentsUntilSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("th a") + sel2 := DocW().Find("#content") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ParentsUntilSelection(sel2).Length() + } else { + sel.ParentsUntilSelection(sel2) + } + } + if n != 70 { + b.Fatalf("want 70, got %d", n) + } +} + +func BenchmarkParentsUntilNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("th a") + sel2 := DocW().Find("#content") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ParentsUntilNodes(nodes...).Length() + } else { + sel.ParentsUntilNodes(nodes...) + } + } + if n != 70 { + b.Fatalf("want 70, got %d", n) + } +} + +func BenchmarkParentsFilteredUntil(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find(".toclevel-1 a") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ParentsFilteredUntil(":nth-child(1)", "ul").Length() + } else { + sel.ParentsFilteredUntil(":nth-child(1)", "ul") + } + } + if n != 2 { + b.Fatalf("want 2, got %d", n) + } +} + +func BenchmarkParentsFilteredUntilSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find(".toclevel-1 a") + sel2 := DocW().Find("ul") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ParentsFilteredUntilSelection(":nth-child(1)", sel2).Length() + } else { + sel.ParentsFilteredUntilSelection(":nth-child(1)", sel2) + } + } + if n != 2 { + b.Fatalf("want 2, got %d", n) + } +} + +func BenchmarkParentsFilteredUntilNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find(".toclevel-1 a") + sel2 := DocW().Find("ul") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ParentsFilteredUntilNodes(":nth-child(1)", nodes...).Length() + } else { + sel.ParentsFilteredUntilNodes(":nth-child(1)", nodes...) + } + } + if n != 2 { + b.Fatalf("want 2, got %d", n) + } +} + +func BenchmarkSiblings(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("ul li:nth-child(1)") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Siblings().Length() + } else { + sel.Siblings() + } + } + if n != 293 { + b.Fatalf("want 293, got %d", n) + } +} + +func BenchmarkSiblingsFiltered(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("ul li:nth-child(1)") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.SiblingsFiltered("[class]").Length() + } else { + sel.SiblingsFiltered("[class]") + } + } + if n != 46 { + b.Fatalf("want 46, got %d", n) + } +} + +func BenchmarkNext(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li:nth-child(1)") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Next().Length() + } else { + sel.Next() + } + } + if n != 49 { + b.Fatalf("want 49, got %d", n) + } +} + +func BenchmarkNextFiltered(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li:nth-child(1)") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NextFiltered("[class]").Length() + } else { + sel.NextFiltered("[class]") + } + } + if n != 6 { + b.Fatalf("want 6, got %d", n) + } +} + +func BenchmarkNextAll(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li:nth-child(3)") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NextAll().Length() + } else { + sel.NextAll() + } + } + if n != 234 { + b.Fatalf("want 234, got %d", n) + } +} + +func BenchmarkNextAllFiltered(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li:nth-child(3)") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NextAllFiltered("[class]").Length() + } else { + sel.NextAllFiltered("[class]") + } + } + if n != 33 { + b.Fatalf("want 33, got %d", n) + } +} + +func BenchmarkPrev(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li:last-child") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Prev().Length() + } else { + sel.Prev() + } + } + if n != 49 { + b.Fatalf("want 49, got %d", n) + } +} + +func BenchmarkPrevFiltered(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li:last-child") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.PrevFiltered("[class]").Length() + } else { + sel.PrevFiltered("[class]") + } + } + // There is one more Prev li with a class, compared to Next li with a class + // (confirmed by looking at the HTML, this is ok) + if n != 7 { + b.Fatalf("want 7, got %d", n) + } +} + +func BenchmarkPrevAll(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li:nth-child(4)") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.PrevAll().Length() + } else { + sel.PrevAll() + } + } + if n != 78 { + b.Fatalf("want 78, got %d", n) + } +} + +func BenchmarkPrevAllFiltered(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li:nth-child(4)") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.PrevAllFiltered("[class]").Length() + } else { + sel.PrevAllFiltered("[class]") + } + } + if n != 6 { + b.Fatalf("want 6, got %d", n) + } +} + +func BenchmarkNextUntil(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li:first-child") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NextUntil(":nth-child(4)").Length() + } else { + sel.NextUntil(":nth-child(4)") + } + } + if n != 84 { + b.Fatalf("want 84, got %d", n) + } +} + +func BenchmarkNextUntilSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + sel2 := DocW().Find("ul") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NextUntilSelection(sel2).Length() + } else { + sel.NextUntilSelection(sel2) + } + } + if n != 42 { + b.Fatalf("want 42, got %d", n) + } +} + +func BenchmarkNextUntilNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + sel2 := DocW().Find("p") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NextUntilNodes(nodes...).Length() + } else { + sel.NextUntilNodes(nodes...) + } + } + if n != 12 { + b.Fatalf("want 12, got %d", n) + } +} + +func BenchmarkPrevUntil(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("li:last-child") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.PrevUntil(":nth-child(4)").Length() + } else { + sel.PrevUntil(":nth-child(4)") + } + } + if n != 238 { + b.Fatalf("want 238, got %d", n) + } +} + +func BenchmarkPrevUntilSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + sel2 := DocW().Find("ul") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.PrevUntilSelection(sel2).Length() + } else { + sel.PrevUntilSelection(sel2) + } + } + if n != 49 { + b.Fatalf("want 49, got %d", n) + } +} + +func BenchmarkPrevUntilNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + sel2 := DocW().Find("p") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.PrevUntilNodes(nodes...).Length() + } else { + sel.PrevUntilNodes(nodes...) + } + } + if n != 11 { + b.Fatalf("want 11, got %d", n) + } +} + +func BenchmarkNextFilteredUntil(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NextFilteredUntil("p", "div").Length() + } else { + sel.NextFilteredUntil("p", "div") + } + } + if n != 22 { + b.Fatalf("want 22, got %d", n) + } +} + +func BenchmarkNextFilteredUntilSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + sel2 := DocW().Find("div") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NextFilteredUntilSelection("p", sel2).Length() + } else { + sel.NextFilteredUntilSelection("p", sel2) + } + } + if n != 22 { + b.Fatalf("want 22, got %d", n) + } +} + +func BenchmarkNextFilteredUntilNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + sel2 := DocW().Find("div") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.NextFilteredUntilNodes("p", nodes...).Length() + } else { + sel.NextFilteredUntilNodes("p", nodes...) + } + } + if n != 22 { + b.Fatalf("want 22, got %d", n) + } +} + +func BenchmarkPrevFilteredUntil(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.PrevFilteredUntil("p", "div").Length() + } else { + sel.PrevFilteredUntil("p", "div") + } + } + if n != 20 { + b.Fatalf("want 20, got %d", n) + } +} + +func BenchmarkPrevFilteredUntilSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + sel2 := DocW().Find("div") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.PrevFilteredUntilSelection("p", sel2).Length() + } else { + sel.PrevFilteredUntilSelection("p", sel2) + } + } + if n != 20 { + b.Fatalf("want 20, got %d", n) + } +} + +func BenchmarkPrevFilteredUntilNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := DocW().Find("h2") + sel2 := DocW().Find("div") + nodes := sel2.Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.PrevFilteredUntilNodes("p", nodes...).Length() + } else { + sel.PrevFilteredUntilNodes("p", nodes...) + } + } + if n != 20 { + b.Fatalf("want 20, got %d", n) + } +} + +func BenchmarkClosest(b *testing.B) { + var n int + + b.StopTimer() + sel := Doc().Find(".container-fluid") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.Closest(".pvk-content").Length() + } else { + sel.Closest(".pvk-content") + } + } + if n != 2 { + b.Fatalf("want 2, got %d", n) + } +} + +func BenchmarkClosestSelection(b *testing.B) { + var n int + + b.StopTimer() + sel := Doc().Find(".container-fluid") + sel2 := Doc().Find(".pvk-content") + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ClosestSelection(sel2).Length() + } else { + sel.ClosestSelection(sel2) + } + } + if n != 2 { + b.Fatalf("want 2, got %d", n) + } +} + +func BenchmarkClosestNodes(b *testing.B) { + var n int + + b.StopTimer() + sel := Doc().Find(".container-fluid") + nodes := Doc().Find(".pvk-content").Nodes + b.StartTimer() + for i := 0; i < b.N; i++ { + if n == 0 { + n = sel.ClosestNodes(nodes...).Length() + } else { + sel.ClosestNodes(nodes...) + } + } + if n != 2 { + b.Fatalf("want 2, got %d", n) + } +} + +func BenchmarkSingleMatcher(b *testing.B) { + doc := Doc() + multi := cascadia.MustCompile(`div`) + single := SingleMatcher(multi) + b.ResetTimer() + + b.Run("multi", func(b *testing.B) { + for i := 0; i < b.N; i++ { + _ = doc.FindMatcher(multi) + } + }) + b.Run("single", func(b *testing.B) { + for i := 0; i < b.N; i++ { + _ = doc.FindMatcher(single) + } + }) +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/doc.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/doc.go new file mode 100644 index 000000000..71146a780 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/doc.go @@ -0,0 +1,123 @@ +// Copyright (c) 2012-2016, Martin Angers & Contributors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// * Neither the name of the author nor the names of its contributors may be used to +// endorse or promote products derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/* +Package goquery implements features similar to jQuery, including the chainable +syntax, to manipulate and query an HTML document. + +It brings a syntax and a set of features similar to jQuery to the Go language. +It is based on Go's net/html package and the CSS Selector library cascadia. +Since the net/html parser returns nodes, and not a full-featured DOM +tree, jQuery's stateful manipulation functions (like height(), css(), detach()) +have been left off. + +Also, because the net/html parser requires UTF-8 encoding, so does goquery: it is +the caller's responsibility to ensure that the source document provides UTF-8 encoded HTML. +See the repository's wiki for various options on how to do this. + +Syntax-wise, it is as close as possible to jQuery, with the same method names when +possible, and that warm and fuzzy chainable interface. jQuery being the +ultra-popular library that it is, writing a similar HTML-manipulating +library was better to follow its API than to start anew (in the same spirit as +Go's fmt package), even though some of its methods are less than intuitive (looking +at you, index()...). + +It is hosted on GitHub, along with additional documentation in the README.md +file: https://github.com/puerkitobio/goquery + +Please note that because of the net/html dependency, goquery requires Go1.1+. + +The various methods are split into files based on the category of behavior. +The three dots (...) indicate that various "overloads" are available. + +* array.go : array-like positional manipulation of the selection. + - Eq() + - First() + - Get() + - Index...() + - Last() + - Slice() + +* expand.go : methods that expand or augment the selection's set. + - Add...() + - AndSelf() + - Union(), which is an alias for AddSelection() + +* filter.go : filtering methods, that reduce the selection's set. + - End() + - Filter...() + - Has...() + - Intersection(), which is an alias of FilterSelection() + - Not...() + +* iteration.go : methods to loop over the selection's nodes. + - Each() + - EachWithBreak() + - Map() + +* manipulation.go : methods for modifying the document + - After...() + - Append...() + - Before...() + - Clone() + - Empty() + - Prepend...() + - Remove...() + - ReplaceWith...() + - Unwrap() + - Wrap...() + - WrapAll...() + - WrapInner...() + +* property.go : methods that inspect and get the node's properties values. + - Attr*(), RemoveAttr(), SetAttr() + - AddClass(), HasClass(), RemoveClass(), ToggleClass() + - Html() + - Length() + - Size(), which is an alias for Length() + - Text() + +* query.go : methods that query, or reflect, a node's identity. + - Contains() + - Is...() + +* traversal.go : methods to traverse the HTML document tree. + - Children...() + - Contents() + - Find...() + - Next...() + - Parent[s]...() + - Prev...() + - Siblings...() + +* type.go : definition of the types exposed by goquery. + - Document + - Selection + - Matcher + +* utilities.go : definition of helper functions (and not methods on a *Selection) +that are not part of jQuery, but are useful to goquery. + - NodeName + - OuterHtml +*/ +package goquery diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/doc/tips.md b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/doc/tips.md new file mode 100644 index 000000000..590da122e --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/doc/tips.md @@ -0,0 +1,68 @@ +# Tips and tricks + +## Handle Non-UTF8 html Pages + +The `go.net/html` package used by `goquery` requires that the html document is UTF-8 encoded. When you know the encoding of the html page is not UTF-8, you can use the `iconv` package to convert it to UTF-8 (there are various implementation of the `iconv` API, see [godoc.org][iconv] for other options): + +```bash +$ go get -u github.com/djimenez/iconv-go +``` + +and then: + +```golang +// Load the URL +res, err := http.Get(url) +if err != nil { + // handle error +} +defer res.Body.Close() + +// Convert the designated charset HTML to utf-8 encoded HTML. +// `charset` being one of the charsets known by the iconv package. +utfBody, err := iconv.NewReader(res.Body, charset, "utf-8") +if err != nil { + // handler error +} + +// use utfBody using goquery +doc, err := goquery.NewDocumentFromReader(utfBody) +if err != nil { + // handler error +} +// use doc... +``` + +Thanks to github user @YuheiNakasaka. + +Actually, the official go.text repository covers this use case too, see its [godoc page][text] for the details. + + +## Handle Javascript-based Pages + +`goquery` is great to handle normal html pages, but when most of the page is build dynamically using javascript, there's not much it can do. There are various options when faced with this problem: + +* Use a headless browser such as [webloop][]. +* Use a Go javascript parser package, such as [otto][]. + +You can find a code example using `otto` [in this gist][exotto]. Thanks to github user @cryptix. + +## For Loop + +If all you need is a normal `for` loop over all nodes in the current selection, where `Map/Each`-style iteration is not necessary, you can use the following: + +```golang +sel := Doc().Find(".selector") +for i := range sel.Nodes { + single := sel.Eq(i) + // use `single` as a selection of 1 node +} +``` + +Thanks to github user @jmoiron. + +[webloop]: https://github.com/sourcegraph/webloop +[otto]: https://github.com/robertkrimen/otto +[exotto]: https://gist.github.com/cryptix/87127f76a94183747b53 +[iconv]: http://godoc.org/?q=iconv +[text]: https://godoc.org/golang.org/x/text/encoding diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/example_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/example_test.go new file mode 100644 index 000000000..924e8d1a8 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/example_test.go @@ -0,0 +1,110 @@ +package goquery_test + +import ( + "fmt" + "log" + "net/http" + "os" + "strings" + + "github.com/PuerkitoBio/goquery" +) + +// This example scrapes the reviews shown on the home page of metalsucks.net. +func Example() { + // Request the HTML page. + res, err := http.Get("http://metalsucks.net") + if err != nil { + log.Fatal(err) + } + defer res.Body.Close() + if res.StatusCode != 200 { + log.Fatalf("status code error: %d %s", res.StatusCode, res.Status) + } + + // Load the HTML document + doc, err := goquery.NewDocumentFromReader(res.Body) + if err != nil { + log.Fatal(err) + } + + // Find the review items + doc.Find(".sidebar-reviews article .content-block").Each(func(i int, s *goquery.Selection) { + // For each item found, get the band and title + band := s.Find("a").Text() + title := s.Find("i").Text() + fmt.Printf("Review %d: %s - %s\n", i, band, title) + }) + // To see the output of the Example while running the test suite (go test), simply + // remove the leading "x" before Output on the next line. This will cause the + // example to fail (all the "real" tests should pass). + + // xOutput: voluntarily fail the Example output. +} + +// This example shows how to use NewDocumentFromReader from a file. +func ExampleNewDocumentFromReader_file() { + // create from a file + f, err := os.Open("some/file.html") + if err != nil { + log.Fatal(err) + } + defer f.Close() + doc, err := goquery.NewDocumentFromReader(f) + if err != nil { + log.Fatal(err) + } + // use the goquery document... + _ = doc.Find("h1") +} + +// This example shows how to use NewDocumentFromReader from a string. +func ExampleNewDocumentFromReader_string() { + // create from a string + data := ` + + + My document + + +

      Header

      + +` + + doc, err := goquery.NewDocumentFromReader(strings.NewReader(data)) + if err != nil { + log.Fatal(err) + } + header := doc.Find("h1").Text() + fmt.Println(header) + + // Output: Header +} + +func ExampleSingle() { + html := ` + + +
      1
      +
      2
      +
      3
      + + +` + doc, err := goquery.NewDocumentFromReader(strings.NewReader(html)) + if err != nil { + log.Fatal(err) + } + + // By default, the selector string selects all matching nodes + multiSel := doc.Find("div") + fmt.Println(multiSel.Text()) + + // Using goquery.Single, only the first match is selected + singleSel := doc.FindMatcher(goquery.Single("div")) + fmt.Println(singleSel.Text()) + + // Output: + // 123 + // 1 +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/expand.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/expand.go new file mode 100644 index 000000000..7caade531 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/expand.go @@ -0,0 +1,70 @@ +package goquery + +import "golang.org/x/net/html" + +// Add adds the selector string's matching nodes to those in the current +// selection and returns a new Selection object. +// The selector string is run in the context of the document of the current +// Selection object. +func (s *Selection) Add(selector string) *Selection { + return s.AddNodes(findWithMatcher([]*html.Node{s.document.rootNode}, compileMatcher(selector))...) +} + +// AddMatcher adds the matcher's matching nodes to those in the current +// selection and returns a new Selection object. +// The matcher is run in the context of the document of the current +// Selection object. +func (s *Selection) AddMatcher(m Matcher) *Selection { + return s.AddNodes(findWithMatcher([]*html.Node{s.document.rootNode}, m)...) +} + +// AddSelection adds the specified Selection object's nodes to those in the +// current selection and returns a new Selection object. +func (s *Selection) AddSelection(sel *Selection) *Selection { + if sel == nil { + return s.AddNodes() + } + return s.AddNodes(sel.Nodes...) +} + +// Union is an alias for AddSelection. +func (s *Selection) Union(sel *Selection) *Selection { + return s.AddSelection(sel) +} + +// AddNodes adds the specified nodes to those in the +// current selection and returns a new Selection object. +func (s *Selection) AddNodes(nodes ...*html.Node) *Selection { + return pushStack(s, appendWithoutDuplicates(s.Nodes, nodes, nil)) +} + +// AndSelf adds the previous set of elements on the stack to the current set. +// It returns a new Selection object containing the current Selection combined +// with the previous one. +// Deprecated: This function has been deprecated and is now an alias for AddBack(). +func (s *Selection) AndSelf() *Selection { + return s.AddBack() +} + +// AddBack adds the previous set of elements on the stack to the current set. +// It returns a new Selection object containing the current Selection combined +// with the previous one. +func (s *Selection) AddBack() *Selection { + return s.AddSelection(s.prevSel) +} + +// AddBackFiltered reduces the previous set of elements on the stack to those that +// match the selector string, and adds them to the current set. +// It returns a new Selection object containing the current Selection combined +// with the filtered previous one +func (s *Selection) AddBackFiltered(selector string) *Selection { + return s.AddSelection(s.prevSel.Filter(selector)) +} + +// AddBackMatcher reduces the previous set of elements on the stack to those that match +// the mateher, and adds them to the curernt set. +// It returns a new Selection object containing the current Selection combined +// with the filtered previous one +func (s *Selection) AddBackMatcher(m Matcher) *Selection { + return s.AddSelection(s.prevSel.FilterMatcher(m)) +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/expand_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/expand_test.go new file mode 100644 index 000000000..c034dc62a --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/expand_test.go @@ -0,0 +1,118 @@ +package goquery + +import ( + "testing" +) + +func TestAdd(t *testing.T) { + sel := Doc().Find("div.row-fluid").Add("a") + assertLength(t, sel.Nodes, 19) +} + +func TestAddInvalid(t *testing.T) { + sel1 := Doc().Find("div.row-fluid") + sel2 := sel1.Add("") + assertLength(t, sel1.Nodes, 9) + assertLength(t, sel2.Nodes, 9) + if sel1 == sel2 { + t.Errorf("selections should not be the same") + } +} + +func TestAddRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.Add("a").End() + assertEqual(t, sel, sel2) +} + +func TestAddSelection(t *testing.T) { + sel := Doc().Find("div.row-fluid") + sel2 := Doc().Find("a") + sel = sel.AddSelection(sel2) + assertLength(t, sel.Nodes, 19) +} + +func TestAddSelectionNil(t *testing.T) { + sel := Doc().Find("div.row-fluid") + assertLength(t, sel.Nodes, 9) + + sel = sel.AddSelection(nil) + assertLength(t, sel.Nodes, 9) +} + +func TestAddSelectionRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.Find("a") + sel2 = sel.AddSelection(sel2).End() + assertEqual(t, sel, sel2) +} + +func TestAddNodes(t *testing.T) { + sel := Doc().Find("div.pvk-gutter") + sel2 := Doc().Find(".pvk-content") + sel = sel.AddNodes(sel2.Nodes...) + assertLength(t, sel.Nodes, 9) +} + +func TestAddNodesNone(t *testing.T) { + sel := Doc().Find("div.pvk-gutter").AddNodes() + assertLength(t, sel.Nodes, 6) +} + +func TestAddNodesRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.Find("a") + sel2 = sel.AddNodes(sel2.Nodes...).End() + assertEqual(t, sel, sel2) +} + +func TestAddNodesBig(t *testing.T) { + doc := DocW() + sel := doc.Find("li") + assertLength(t, sel.Nodes, 373) + sel2 := doc.Find("xyz") + assertLength(t, sel2.Nodes, 0) + + nodes := sel.Nodes + sel2 = sel2.AddNodes(nodes...) + assertLength(t, sel2.Nodes, 373) + nodes2 := append(nodes, nodes...) + sel2 = sel2.End().AddNodes(nodes2...) + assertLength(t, sel2.Nodes, 373) + nodes3 := append(nodes2, nodes...) + sel2 = sel2.End().AddNodes(nodes3...) + assertLength(t, sel2.Nodes, 373) +} + +func TestAndSelf(t *testing.T) { + sel := Doc().Find(".span12").Last().AndSelf() + assertLength(t, sel.Nodes, 2) +} + +func TestAndSelfRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.Find("a").AndSelf().End().End() + assertEqual(t, sel, sel2) +} + +func TestAddBack(t *testing.T) { + sel := Doc().Find(".span12").Last().AddBack() + assertLength(t, sel.Nodes, 2) +} + +func TestAddBackRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.Find("a").AddBack().End().End() + assertEqual(t, sel, sel2) +} + +func TestAddBackFiltered(t *testing.T) { + sel := Doc().Find(".span12, .footer").Find("h1").AddBackFiltered(".footer") + assertLength(t, sel.Nodes, 2) +} + +func TestAddBackFilteredRollback(t *testing.T) { + sel := Doc().Find(".span12, .footer") + sel2 := sel.Find("h1").AddBackFiltered(".footer").End().End() + assertEqual(t, sel, sel2) +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/filter.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/filter.go new file mode 100644 index 000000000..9138ffb33 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/filter.go @@ -0,0 +1,163 @@ +package goquery + +import "golang.org/x/net/html" + +// Filter reduces the set of matched elements to those that match the selector string. +// It returns a new Selection object for this subset of matching elements. +func (s *Selection) Filter(selector string) *Selection { + return s.FilterMatcher(compileMatcher(selector)) +} + +// FilterMatcher reduces the set of matched elements to those that match +// the given matcher. It returns a new Selection object for this subset +// of matching elements. +func (s *Selection) FilterMatcher(m Matcher) *Selection { + return pushStack(s, winnow(s, m, true)) +} + +// Not removes elements from the Selection that match the selector string. +// It returns a new Selection object with the matching elements removed. +func (s *Selection) Not(selector string) *Selection { + return s.NotMatcher(compileMatcher(selector)) +} + +// NotMatcher removes elements from the Selection that match the given matcher. +// It returns a new Selection object with the matching elements removed. +func (s *Selection) NotMatcher(m Matcher) *Selection { + return pushStack(s, winnow(s, m, false)) +} + +// FilterFunction reduces the set of matched elements to those that pass the function's test. +// It returns a new Selection object for this subset of elements. +func (s *Selection) FilterFunction(f func(int, *Selection) bool) *Selection { + return pushStack(s, winnowFunction(s, f, true)) +} + +// NotFunction removes elements from the Selection that pass the function's test. +// It returns a new Selection object with the matching elements removed. +func (s *Selection) NotFunction(f func(int, *Selection) bool) *Selection { + return pushStack(s, winnowFunction(s, f, false)) +} + +// FilterNodes reduces the set of matched elements to those that match the specified nodes. +// It returns a new Selection object for this subset of elements. +func (s *Selection) FilterNodes(nodes ...*html.Node) *Selection { + return pushStack(s, winnowNodes(s, nodes, true)) +} + +// NotNodes removes elements from the Selection that match the specified nodes. +// It returns a new Selection object with the matching elements removed. +func (s *Selection) NotNodes(nodes ...*html.Node) *Selection { + return pushStack(s, winnowNodes(s, nodes, false)) +} + +// FilterSelection reduces the set of matched elements to those that match a +// node in the specified Selection object. +// It returns a new Selection object for this subset of elements. +func (s *Selection) FilterSelection(sel *Selection) *Selection { + if sel == nil { + return pushStack(s, winnowNodes(s, nil, true)) + } + return pushStack(s, winnowNodes(s, sel.Nodes, true)) +} + +// NotSelection removes elements from the Selection that match a node in the specified +// Selection object. It returns a new Selection object with the matching elements removed. +func (s *Selection) NotSelection(sel *Selection) *Selection { + if sel == nil { + return pushStack(s, winnowNodes(s, nil, false)) + } + return pushStack(s, winnowNodes(s, sel.Nodes, false)) +} + +// Intersection is an alias for FilterSelection. +func (s *Selection) Intersection(sel *Selection) *Selection { + return s.FilterSelection(sel) +} + +// Has reduces the set of matched elements to those that have a descendant +// that matches the selector. +// It returns a new Selection object with the matching elements. +func (s *Selection) Has(selector string) *Selection { + return s.HasSelection(s.document.Find(selector)) +} + +// HasMatcher reduces the set of matched elements to those that have a descendant +// that matches the matcher. +// It returns a new Selection object with the matching elements. +func (s *Selection) HasMatcher(m Matcher) *Selection { + return s.HasSelection(s.document.FindMatcher(m)) +} + +// HasNodes reduces the set of matched elements to those that have a +// descendant that matches one of the nodes. +// It returns a new Selection object with the matching elements. +func (s *Selection) HasNodes(nodes ...*html.Node) *Selection { + return s.FilterFunction(func(_ int, sel *Selection) bool { + // Add all nodes that contain one of the specified nodes + for _, n := range nodes { + if sel.Contains(n) { + return true + } + } + return false + }) +} + +// HasSelection reduces the set of matched elements to those that have a +// descendant that matches one of the nodes of the specified Selection object. +// It returns a new Selection object with the matching elements. +func (s *Selection) HasSelection(sel *Selection) *Selection { + if sel == nil { + return s.HasNodes() + } + return s.HasNodes(sel.Nodes...) +} + +// End ends the most recent filtering operation in the current chain and +// returns the set of matched elements to its previous state. +func (s *Selection) End() *Selection { + if s.prevSel != nil { + return s.prevSel + } + return newEmptySelection(s.document) +} + +// Filter based on the matcher, and the indicator to keep (Filter) or +// to get rid of (Not) the matching elements. +func winnow(sel *Selection, m Matcher, keep bool) []*html.Node { + // Optimize if keep is requested + if keep { + return m.Filter(sel.Nodes) + } + // Use grep + return grep(sel, func(i int, s *Selection) bool { + return !m.Match(s.Get(0)) + }) +} + +// Filter based on an array of nodes, and the indicator to keep (Filter) or +// to get rid of (Not) the matching elements. +func winnowNodes(sel *Selection, nodes []*html.Node, keep bool) []*html.Node { + if len(nodes)+len(sel.Nodes) < minNodesForSet { + return grep(sel, func(i int, s *Selection) bool { + return isInSlice(nodes, s.Get(0)) == keep + }) + } + + set := make(map[*html.Node]bool) + for _, n := range nodes { + set[n] = true + } + return grep(sel, func(i int, s *Selection) bool { + return set[s.Get(0)] == keep + }) +} + +// Filter based on a function test, and the indicator to keep (Filter) or +// to get rid of (Not) the matching elements. +func winnowFunction(sel *Selection, f func(int, *Selection) bool, keep bool) []*html.Node { + return grep(sel, func(i int, s *Selection) bool { + return f(i, s) == keep + }) +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/filter_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/filter_test.go new file mode 100644 index 000000000..f663c08f6 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/filter_test.go @@ -0,0 +1,206 @@ +package goquery + +import ( + "testing" +) + +func TestFilter(t *testing.T) { + sel := Doc().Find(".span12").Filter(".alert") + assertLength(t, sel.Nodes, 1) +} + +func TestFilterNone(t *testing.T) { + sel := Doc().Find(".span12").Filter(".zzalert") + assertLength(t, sel.Nodes, 0) +} + +func TestFilterInvalid(t *testing.T) { + sel := Doc().Find(".span12").Filter("") + assertLength(t, sel.Nodes, 0) +} + +func TestFilterRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.Filter(".alert").End() + assertEqual(t, sel, sel2) +} + +func TestFilterFunction(t *testing.T) { + sel := Doc().Find(".pvk-content").FilterFunction(func(i int, s *Selection) bool { + return i > 0 + }) + assertLength(t, sel.Nodes, 2) +} + +func TestFilterFunctionRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.FilterFunction(func(i int, s *Selection) bool { + return i > 0 + }).End() + assertEqual(t, sel, sel2) +} + +func TestFilterNode(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.FilterNodes(sel.Nodes[2]) + assertLength(t, sel2.Nodes, 1) +} + +func TestFilterNodeRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.FilterNodes(sel.Nodes[2]).End() + assertEqual(t, sel, sel2) +} + +func TestFilterSelection(t *testing.T) { + sel := Doc().Find(".link") + sel2 := Doc().Find("a[ng-click]") + sel3 := sel.FilterSelection(sel2) + assertLength(t, sel3.Nodes, 1) +} + +func TestFilterSelectionRollback(t *testing.T) { + sel := Doc().Find(".link") + sel2 := Doc().Find("a[ng-click]") + sel2 = sel.FilterSelection(sel2).End() + assertEqual(t, sel, sel2) +} + +func TestFilterSelectionNil(t *testing.T) { + var sel2 *Selection + + sel := Doc().Find(".link") + sel3 := sel.FilterSelection(sel2) + assertLength(t, sel3.Nodes, 0) +} + +func TestNot(t *testing.T) { + sel := Doc().Find(".span12").Not(".alert") + assertLength(t, sel.Nodes, 1) +} + +func TestNotInvalid(t *testing.T) { + sel := Doc().Find(".span12").Not("") + assertLength(t, sel.Nodes, 2) +} + +func TestNotRollback(t *testing.T) { + sel := Doc().Find(".span12") + sel2 := sel.Not(".alert").End() + assertEqual(t, sel, sel2) +} + +func TestNotNone(t *testing.T) { + sel := Doc().Find(".span12").Not(".zzalert") + assertLength(t, sel.Nodes, 2) +} + +func TestNotFunction(t *testing.T) { + sel := Doc().Find(".pvk-content").NotFunction(func(i int, s *Selection) bool { + return i > 0 + }) + assertLength(t, sel.Nodes, 1) +} + +func TestNotFunctionRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.NotFunction(func(i int, s *Selection) bool { + return i > 0 + }).End() + assertEqual(t, sel, sel2) +} + +func TestNotNode(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.NotNodes(sel.Nodes[2]) + assertLength(t, sel2.Nodes, 2) +} + +func TestNotNodeRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.NotNodes(sel.Nodes[2]).End() + assertEqual(t, sel, sel2) +} + +func TestNotSelection(t *testing.T) { + sel := Doc().Find(".link") + sel2 := Doc().Find("a[ng-click]") + sel3 := sel.NotSelection(sel2) + assertLength(t, sel3.Nodes, 6) +} + +func TestNotSelectionRollback(t *testing.T) { + sel := Doc().Find(".link") + sel2 := Doc().Find("a[ng-click]") + sel2 = sel.NotSelection(sel2).End() + assertEqual(t, sel, sel2) +} + +func TestIntersection(t *testing.T) { + sel := Doc().Find(".pvk-gutter") + sel2 := Doc().Find("div").Intersection(sel) + assertLength(t, sel2.Nodes, 6) +} + +func TestIntersectionRollback(t *testing.T) { + sel := Doc().Find(".pvk-gutter") + sel2 := Doc().Find("div") + sel2 = sel.Intersection(sel2).End() + assertEqual(t, sel, sel2) +} + +func TestHas(t *testing.T) { + sel := Doc().Find(".container-fluid").Has(".center-content") + assertLength(t, sel.Nodes, 2) + // Has() returns the high-level .container-fluid div, and the one that is the immediate parent of center-content +} + +func TestHasInvalid(t *testing.T) { + sel := Doc().Find(".container-fluid").Has("") + assertLength(t, sel.Nodes, 0) +} + +func TestHasRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.Has(".center-content").End() + assertEqual(t, sel, sel2) +} + +func TestHasNodes(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := Doc().Find(".center-content") + sel = sel.HasNodes(sel2.Nodes...) + assertLength(t, sel.Nodes, 2) + // Has() returns the high-level .container-fluid div, and the one that is the immediate parent of center-content +} + +func TestHasNodesRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := Doc().Find(".center-content") + sel2 = sel.HasNodes(sel2.Nodes...).End() + assertEqual(t, sel, sel2) +} + +func TestHasSelection(t *testing.T) { + sel := Doc().Find("p") + sel2 := Doc().Find("small") + sel = sel.HasSelection(sel2) + assertLength(t, sel.Nodes, 1) +} + +func TestHasSelectionRollback(t *testing.T) { + sel := Doc().Find("p") + sel2 := Doc().Find("small") + sel2 = sel.HasSelection(sel2).End() + assertEqual(t, sel, sel2) +} + +func TestEnd(t *testing.T) { + sel := Doc().Find("p").Has("small").End() + assertLength(t, sel.Nodes, 4) +} + +func TestEndToTop(t *testing.T) { + sel := Doc().Find("p").Has("small").End().End().End() + assertLength(t, sel.Nodes, 0) +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/go.mod b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/go.mod new file mode 100644 index 000000000..4b5a30963 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/go.mod @@ -0,0 +1,8 @@ +module github.com/PuerkitoBio/goquery + +require ( + github.com/andybalholm/cascadia v1.3.1 + golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 +) + +go 1.13 diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/go.sum b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/go.sum new file mode 100644 index 000000000..167f12d2d --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/go.sum @@ -0,0 +1,9 @@ +github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= +github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= +golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 h1:/6y1LfuqNuQdHAm0jjtPtgRcxIxjVZgm5OTu8/QhZvk= +golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/iteration.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/iteration.go new file mode 100644 index 000000000..e246f2e0e --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/iteration.go @@ -0,0 +1,39 @@ +package goquery + +// Each iterates over a Selection object, executing a function for each +// matched element. It returns the current Selection object. The function +// f is called for each element in the selection with the index of the +// element in that selection starting at 0, and a *Selection that contains +// only that element. +func (s *Selection) Each(f func(int, *Selection)) *Selection { + for i, n := range s.Nodes { + f(i, newSingleSelection(n, s.document)) + } + return s +} + +// EachWithBreak iterates over a Selection object, executing a function for each +// matched element. It is identical to Each except that it is possible to break +// out of the loop by returning false in the callback function. It returns the +// current Selection object. +func (s *Selection) EachWithBreak(f func(int, *Selection) bool) *Selection { + for i, n := range s.Nodes { + if !f(i, newSingleSelection(n, s.document)) { + return s + } + } + return s +} + +// Map passes each element in the current matched set through a function, +// producing a slice of string holding the returned values. The function +// f is called for each element in the selection with the index of the +// element in that selection starting at 0, and a *Selection that contains +// only that element. +func (s *Selection) Map(f func(int, *Selection) string) (result []string) { + for i, n := range s.Nodes { + result = append(result, f(i, newSingleSelection(n, s.document))) + } + + return result +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/iteration_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/iteration_test.go new file mode 100644 index 000000000..9b6aafb7b --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/iteration_test.go @@ -0,0 +1,88 @@ +package goquery + +import ( + "testing" + + "golang.org/x/net/html" +) + +func TestEach(t *testing.T) { + var cnt int + + sel := Doc().Find(".hero-unit .row-fluid").Each(func(i int, n *Selection) { + cnt++ + t.Logf("At index %v, node %v", i, n.Nodes[0].Data) + }).Find("a") + + if cnt != 4 { + t.Errorf("Expected Each() to call function 4 times, got %v times.", cnt) + } + assertLength(t, sel.Nodes, 6) +} + +func TestEachWithBreak(t *testing.T) { + var cnt int + + sel := Doc().Find(".hero-unit .row-fluid").EachWithBreak(func(i int, n *Selection) bool { + cnt++ + t.Logf("At index %v, node %v", i, n.Nodes[0].Data) + return false + }).Find("a") + + if cnt != 1 { + t.Errorf("Expected Each() to call function 1 time, got %v times.", cnt) + } + assertLength(t, sel.Nodes, 6) +} + +func TestEachEmptySelection(t *testing.T) { + var cnt int + + sel := Doc().Find("zzzz") + sel.Each(func(i int, n *Selection) { + cnt++ + }) + if cnt > 0 { + t.Error("Expected Each() to not be called on empty Selection.") + } + sel2 := sel.Find("div") + assertLength(t, sel2.Nodes, 0) +} + +func TestMap(t *testing.T) { + sel := Doc().Find(".pvk-content") + vals := sel.Map(func(i int, s *Selection) string { + n := s.Get(0) + if n.Type == html.ElementNode { + return n.Data + } + return "" + }) + for _, v := range vals { + if v != "div" { + t.Error("Expected Map array result to be all 'div's.") + } + } + if len(vals) != 3 { + t.Errorf("Expected Map array result to have a length of 3, found %v.", len(vals)) + } +} + +func TestForRange(t *testing.T) { + sel := Doc().Find(".pvk-content") + initLen := sel.Length() + for i := range sel.Nodes { + single := sel.Eq(i) + //h, err := single.Html() + //if err != nil { + // t.Fatal(err) + //} + //fmt.Println(i, h) + if single.Length() != 1 { + t.Errorf("%d: expected length of 1, got %d", i, single.Length()) + } + } + if sel.Length() != initLen { + t.Errorf("expected initial selection to still have length %d, got %d", initLen, sel.Length()) + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/manipulation.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/manipulation.go new file mode 100644 index 000000000..35febf118 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/manipulation.go @@ -0,0 +1,679 @@ +package goquery + +import ( + "strings" + + "golang.org/x/net/html" +) + +// After applies the selector from the root document and inserts the matched elements +// after the elements in the set of matched elements. +// +// If one of the matched elements in the selection is not currently in the +// document, it's impossible to insert nodes after it, so it will be ignored. +// +// This follows the same rules as Selection.Append. +func (s *Selection) After(selector string) *Selection { + return s.AfterMatcher(compileMatcher(selector)) +} + +// AfterMatcher applies the matcher from the root document and inserts the matched elements +// after the elements in the set of matched elements. +// +// If one of the matched elements in the selection is not currently in the +// document, it's impossible to insert nodes after it, so it will be ignored. +// +// This follows the same rules as Selection.Append. +func (s *Selection) AfterMatcher(m Matcher) *Selection { + return s.AfterNodes(m.MatchAll(s.document.rootNode)...) +} + +// AfterSelection inserts the elements in the selection after each element in the set of matched +// elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) AfterSelection(sel *Selection) *Selection { + return s.AfterNodes(sel.Nodes...) +} + +// AfterHtml parses the html and inserts it after the set of matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) AfterHtml(htmlStr string) *Selection { + return s.eachNodeHtml(htmlStr, true, func(node *html.Node, nodes []*html.Node) { + nextSibling := node.NextSibling + for _, n := range nodes { + if node.Parent != nil { + node.Parent.InsertBefore(n, nextSibling) + } + } + }) +} + +// AfterNodes inserts the nodes after each element in the set of matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) AfterNodes(ns ...*html.Node) *Selection { + return s.manipulateNodes(ns, true, func(sn *html.Node, n *html.Node) { + if sn.Parent != nil { + sn.Parent.InsertBefore(n, sn.NextSibling) + } + }) +} + +// Append appends the elements specified by the selector to the end of each element +// in the set of matched elements, following those rules: +// +// 1) The selector is applied to the root document. +// +// 2) Elements that are part of the document will be moved to the new location. +// +// 3) If there are multiple locations to append to, cloned nodes will be +// appended to all target locations except the last one, which will be moved +// as noted in (2). +func (s *Selection) Append(selector string) *Selection { + return s.AppendMatcher(compileMatcher(selector)) +} + +// AppendMatcher appends the elements specified by the matcher to the end of each element +// in the set of matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) AppendMatcher(m Matcher) *Selection { + return s.AppendNodes(m.MatchAll(s.document.rootNode)...) +} + +// AppendSelection appends the elements in the selection to the end of each element +// in the set of matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) AppendSelection(sel *Selection) *Selection { + return s.AppendNodes(sel.Nodes...) +} + +// AppendHtml parses the html and appends it to the set of matched elements. +func (s *Selection) AppendHtml(htmlStr string) *Selection { + return s.eachNodeHtml(htmlStr, false, func(node *html.Node, nodes []*html.Node) { + for _, n := range nodes { + node.AppendChild(n) + } + }) +} + +// AppendNodes appends the specified nodes to each node in the set of matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) AppendNodes(ns ...*html.Node) *Selection { + return s.manipulateNodes(ns, false, func(sn *html.Node, n *html.Node) { + sn.AppendChild(n) + }) +} + +// Before inserts the matched elements before each element in the set of matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) Before(selector string) *Selection { + return s.BeforeMatcher(compileMatcher(selector)) +} + +// BeforeMatcher inserts the matched elements before each element in the set of matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) BeforeMatcher(m Matcher) *Selection { + return s.BeforeNodes(m.MatchAll(s.document.rootNode)...) +} + +// BeforeSelection inserts the elements in the selection before each element in the set of matched +// elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) BeforeSelection(sel *Selection) *Selection { + return s.BeforeNodes(sel.Nodes...) +} + +// BeforeHtml parses the html and inserts it before the set of matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) BeforeHtml(htmlStr string) *Selection { + return s.eachNodeHtml(htmlStr, true, func(node *html.Node, nodes []*html.Node) { + for _, n := range nodes { + if node.Parent != nil { + node.Parent.InsertBefore(n, node) + } + } + }) +} + +// BeforeNodes inserts the nodes before each element in the set of matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) BeforeNodes(ns ...*html.Node) *Selection { + return s.manipulateNodes(ns, false, func(sn *html.Node, n *html.Node) { + if sn.Parent != nil { + sn.Parent.InsertBefore(n, sn) + } + }) +} + +// Clone creates a deep copy of the set of matched nodes. The new nodes will not be +// attached to the document. +func (s *Selection) Clone() *Selection { + ns := newEmptySelection(s.document) + ns.Nodes = cloneNodes(s.Nodes) + return ns +} + +// Empty removes all children nodes from the set of matched elements. +// It returns the children nodes in a new Selection. +func (s *Selection) Empty() *Selection { + var nodes []*html.Node + + for _, n := range s.Nodes { + for c := n.FirstChild; c != nil; c = n.FirstChild { + n.RemoveChild(c) + nodes = append(nodes, c) + } + } + + return pushStack(s, nodes) +} + +// Prepend prepends the elements specified by the selector to each element in +// the set of matched elements, following the same rules as Append. +func (s *Selection) Prepend(selector string) *Selection { + return s.PrependMatcher(compileMatcher(selector)) +} + +// PrependMatcher prepends the elements specified by the matcher to each +// element in the set of matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) PrependMatcher(m Matcher) *Selection { + return s.PrependNodes(m.MatchAll(s.document.rootNode)...) +} + +// PrependSelection prepends the elements in the selection to each element in +// the set of matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) PrependSelection(sel *Selection) *Selection { + return s.PrependNodes(sel.Nodes...) +} + +// PrependHtml parses the html and prepends it to the set of matched elements. +func (s *Selection) PrependHtml(htmlStr string) *Selection { + return s.eachNodeHtml(htmlStr, false, func(node *html.Node, nodes []*html.Node) { + firstChild := node.FirstChild + for _, n := range nodes { + node.InsertBefore(n, firstChild) + } + }) +} + +// PrependNodes prepends the specified nodes to each node in the set of +// matched elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) PrependNodes(ns ...*html.Node) *Selection { + return s.manipulateNodes(ns, true, func(sn *html.Node, n *html.Node) { + // sn.FirstChild may be nil, in which case this functions like + // sn.AppendChild() + sn.InsertBefore(n, sn.FirstChild) + }) +} + +// Remove removes the set of matched elements from the document. +// It returns the same selection, now consisting of nodes not in the document. +func (s *Selection) Remove() *Selection { + for _, n := range s.Nodes { + if n.Parent != nil { + n.Parent.RemoveChild(n) + } + } + + return s +} + +// RemoveFiltered removes from the current set of matched elements those that +// match the selector filter. It returns the Selection of removed nodes. +// +// For example if the selection s contains "

      ", "

      " and "

      " +// and s.RemoveFiltered("h2") is called, only the "

      " node is removed +// (and returned), while "

      " and "

      " are kept in the document. +func (s *Selection) RemoveFiltered(selector string) *Selection { + return s.RemoveMatcher(compileMatcher(selector)) +} + +// RemoveMatcher removes from the current set of matched elements those that +// match the Matcher filter. It returns the Selection of removed nodes. +// See RemoveFiltered for additional information. +func (s *Selection) RemoveMatcher(m Matcher) *Selection { + return s.FilterMatcher(m).Remove() +} + +// ReplaceWith replaces each element in the set of matched elements with the +// nodes matched by the given selector. +// It returns the removed elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) ReplaceWith(selector string) *Selection { + return s.ReplaceWithMatcher(compileMatcher(selector)) +} + +// ReplaceWithMatcher replaces each element in the set of matched elements with +// the nodes matched by the given Matcher. +// It returns the removed elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) ReplaceWithMatcher(m Matcher) *Selection { + return s.ReplaceWithNodes(m.MatchAll(s.document.rootNode)...) +} + +// ReplaceWithSelection replaces each element in the set of matched elements with +// the nodes from the given Selection. +// It returns the removed elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) ReplaceWithSelection(sel *Selection) *Selection { + return s.ReplaceWithNodes(sel.Nodes...) +} + +// ReplaceWithHtml replaces each element in the set of matched elements with +// the parsed HTML. +// It returns the removed elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) ReplaceWithHtml(htmlStr string) *Selection { + s.eachNodeHtml(htmlStr, true, func(node *html.Node, nodes []*html.Node) { + nextSibling := node.NextSibling + for _, n := range nodes { + if node.Parent != nil { + node.Parent.InsertBefore(n, nextSibling) + } + } + }) + return s.Remove() +} + +// ReplaceWithNodes replaces each element in the set of matched elements with +// the given nodes. +// It returns the removed elements. +// +// This follows the same rules as Selection.Append. +func (s *Selection) ReplaceWithNodes(ns ...*html.Node) *Selection { + s.AfterNodes(ns...) + return s.Remove() +} + +// SetHtml sets the html content of each element in the selection to +// specified html string. +func (s *Selection) SetHtml(htmlStr string) *Selection { + for _, context := range s.Nodes { + for c := context.FirstChild; c != nil; c = context.FirstChild { + context.RemoveChild(c) + } + } + return s.eachNodeHtml(htmlStr, false, func(node *html.Node, nodes []*html.Node) { + for _, n := range nodes { + node.AppendChild(n) + } + }) +} + +// SetText sets the content of each element in the selection to specified content. +// The provided text string is escaped. +func (s *Selection) SetText(text string) *Selection { + return s.SetHtml(html.EscapeString(text)) +} + +// Unwrap removes the parents of the set of matched elements, leaving the matched +// elements (and their siblings, if any) in their place. +// It returns the original selection. +func (s *Selection) Unwrap() *Selection { + s.Parent().Each(func(i int, ss *Selection) { + // For some reason, jquery allows unwrap to remove the element, so + // allowing it here too. Same for . Why it allows those elements to + // be unwrapped while not allowing body is a mystery to me. + if ss.Nodes[0].Data != "body" { + ss.ReplaceWithSelection(ss.Contents()) + } + }) + + return s +} + +// Wrap wraps each element in the set of matched elements inside the first +// element matched by the given selector. The matched child is cloned before +// being inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) Wrap(selector string) *Selection { + return s.WrapMatcher(compileMatcher(selector)) +} + +// WrapMatcher wraps each element in the set of matched elements inside the +// first element matched by the given matcher. The matched child is cloned +// before being inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapMatcher(m Matcher) *Selection { + return s.wrapNodes(m.MatchAll(s.document.rootNode)...) +} + +// WrapSelection wraps each element in the set of matched elements inside the +// first element in the given Selection. The element is cloned before being +// inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapSelection(sel *Selection) *Selection { + return s.wrapNodes(sel.Nodes...) +} + +// WrapHtml wraps each element in the set of matched elements inside the inner- +// most child of the given HTML. +// +// It returns the original set of elements. +func (s *Selection) WrapHtml(htmlStr string) *Selection { + nodesMap := make(map[string][]*html.Node) + for _, context := range s.Nodes { + var parent *html.Node + if context.Parent != nil { + parent = context.Parent + } else { + parent = &html.Node{Type: html.ElementNode} + } + nodes, found := nodesMap[nodeName(parent)] + if !found { + nodes = parseHtmlWithContext(htmlStr, parent) + nodesMap[nodeName(parent)] = nodes + } + newSingleSelection(context, s.document).wrapAllNodes(cloneNodes(nodes)...) + } + return s +} + +// WrapNode wraps each element in the set of matched elements inside the inner- +// most child of the given node. The given node is copied before being inserted +// into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapNode(n *html.Node) *Selection { + return s.wrapNodes(n) +} + +func (s *Selection) wrapNodes(ns ...*html.Node) *Selection { + s.Each(func(i int, ss *Selection) { + ss.wrapAllNodes(ns...) + }) + + return s +} + +// WrapAll wraps a single HTML structure, matched by the given selector, around +// all elements in the set of matched elements. The matched child is cloned +// before being inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapAll(selector string) *Selection { + return s.WrapAllMatcher(compileMatcher(selector)) +} + +// WrapAllMatcher wraps a single HTML structure, matched by the given Matcher, +// around all elements in the set of matched elements. The matched child is +// cloned before being inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapAllMatcher(m Matcher) *Selection { + return s.wrapAllNodes(m.MatchAll(s.document.rootNode)...) +} + +// WrapAllSelection wraps a single HTML structure, the first node of the given +// Selection, around all elements in the set of matched elements. The matched +// child is cloned before being inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapAllSelection(sel *Selection) *Selection { + return s.wrapAllNodes(sel.Nodes...) +} + +// WrapAllHtml wraps the given HTML structure around all elements in the set of +// matched elements. The matched child is cloned before being inserted into the +// document. +// +// It returns the original set of elements. +func (s *Selection) WrapAllHtml(htmlStr string) *Selection { + var context *html.Node + var nodes []*html.Node + if len(s.Nodes) > 0 { + context = s.Nodes[0] + if context.Parent != nil { + nodes = parseHtmlWithContext(htmlStr, context) + } else { + nodes = parseHtml(htmlStr) + } + } + return s.wrapAllNodes(nodes...) +} + +func (s *Selection) wrapAllNodes(ns ...*html.Node) *Selection { + if len(ns) > 0 { + return s.WrapAllNode(ns[0]) + } + return s +} + +// WrapAllNode wraps the given node around the first element in the Selection, +// making all other nodes in the Selection children of the given node. The node +// is cloned before being inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapAllNode(n *html.Node) *Selection { + if s.Size() == 0 { + return s + } + + wrap := cloneNode(n) + + first := s.Nodes[0] + if first.Parent != nil { + first.Parent.InsertBefore(wrap, first) + first.Parent.RemoveChild(first) + } + + for c := getFirstChildEl(wrap); c != nil; c = getFirstChildEl(wrap) { + wrap = c + } + + newSingleSelection(wrap, s.document).AppendSelection(s) + + return s +} + +// WrapInner wraps an HTML structure, matched by the given selector, around the +// content of element in the set of matched elements. The matched child is +// cloned before being inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapInner(selector string) *Selection { + return s.WrapInnerMatcher(compileMatcher(selector)) +} + +// WrapInnerMatcher wraps an HTML structure, matched by the given selector, +// around the content of element in the set of matched elements. The matched +// child is cloned before being inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapInnerMatcher(m Matcher) *Selection { + return s.wrapInnerNodes(m.MatchAll(s.document.rootNode)...) +} + +// WrapInnerSelection wraps an HTML structure, matched by the given selector, +// around the content of element in the set of matched elements. The matched +// child is cloned before being inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapInnerSelection(sel *Selection) *Selection { + return s.wrapInnerNodes(sel.Nodes...) +} + +// WrapInnerHtml wraps an HTML structure, matched by the given selector, around +// the content of element in the set of matched elements. The matched child is +// cloned before being inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapInnerHtml(htmlStr string) *Selection { + nodesMap := make(map[string][]*html.Node) + for _, context := range s.Nodes { + nodes, found := nodesMap[nodeName(context)] + if !found { + nodes = parseHtmlWithContext(htmlStr, context) + nodesMap[nodeName(context)] = nodes + } + newSingleSelection(context, s.document).wrapInnerNodes(cloneNodes(nodes)...) + } + return s +} + +// WrapInnerNode wraps an HTML structure, matched by the given selector, around +// the content of element in the set of matched elements. The matched child is +// cloned before being inserted into the document. +// +// It returns the original set of elements. +func (s *Selection) WrapInnerNode(n *html.Node) *Selection { + return s.wrapInnerNodes(n) +} + +func (s *Selection) wrapInnerNodes(ns ...*html.Node) *Selection { + if len(ns) == 0 { + return s + } + + s.Each(func(i int, s *Selection) { + contents := s.Contents() + + if contents.Size() > 0 { + contents.wrapAllNodes(ns...) + } else { + s.AppendNodes(cloneNode(ns[0])) + } + }) + + return s +} + +func parseHtml(h string) []*html.Node { + // Errors are only returned when the io.Reader returns any error besides + // EOF, but strings.Reader never will + nodes, err := html.ParseFragment(strings.NewReader(h), &html.Node{Type: html.ElementNode}) + if err != nil { + panic("goquery: failed to parse HTML: " + err.Error()) + } + return nodes +} + +func parseHtmlWithContext(h string, context *html.Node) []*html.Node { + // Errors are only returned when the io.Reader returns any error besides + // EOF, but strings.Reader never will + nodes, err := html.ParseFragment(strings.NewReader(h), context) + if err != nil { + panic("goquery: failed to parse HTML: " + err.Error()) + } + return nodes +} + +// Get the first child that is an ElementNode +func getFirstChildEl(n *html.Node) *html.Node { + c := n.FirstChild + for c != nil && c.Type != html.ElementNode { + c = c.NextSibling + } + return c +} + +// Deep copy a slice of nodes. +func cloneNodes(ns []*html.Node) []*html.Node { + cns := make([]*html.Node, 0, len(ns)) + + for _, n := range ns { + cns = append(cns, cloneNode(n)) + } + + return cns +} + +// Deep copy a node. The new node has clones of all the original node's +// children but none of its parents or siblings. +func cloneNode(n *html.Node) *html.Node { + nn := &html.Node{ + Type: n.Type, + DataAtom: n.DataAtom, + Data: n.Data, + Attr: make([]html.Attribute, len(n.Attr)), + } + + copy(nn.Attr, n.Attr) + for c := n.FirstChild; c != nil; c = c.NextSibling { + nn.AppendChild(cloneNode(c)) + } + + return nn +} + +func (s *Selection) manipulateNodes(ns []*html.Node, reverse bool, + f func(sn *html.Node, n *html.Node)) *Selection { + + lasti := s.Size() - 1 + + // net.Html doesn't provide document fragments for insertion, so to get + // things in the correct order with After() and Prepend(), the callback + // needs to be called on the reverse of the nodes. + if reverse { + for i, j := 0, len(ns)-1; i < j; i, j = i+1, j-1 { + ns[i], ns[j] = ns[j], ns[i] + } + } + + for i, sn := range s.Nodes { + for _, n := range ns { + if i != lasti { + f(sn, cloneNode(n)) + } else { + if n.Parent != nil { + n.Parent.RemoveChild(n) + } + f(sn, n) + } + } + } + + return s +} + +// eachNodeHtml parses the given html string and inserts the resulting nodes in the dom with the mergeFn. +// The parsed nodes are inserted for each element of the selection. +// isParent can be used to indicate that the elements of the selection should be treated as the parent for the parsed html. +// A cache is used to avoid parsing the html multiple times should the elements of the selection result in the same context. +func (s *Selection) eachNodeHtml(htmlStr string, isParent bool, mergeFn func(n *html.Node, nodes []*html.Node)) *Selection { + // cache to avoid parsing the html for the same context multiple times + nodeCache := make(map[string][]*html.Node) + var context *html.Node + for _, n := range s.Nodes { + if isParent { + context = n.Parent + } else { + if n.Type != html.ElementNode { + continue + } + context = n + } + if context != nil { + nodes, found := nodeCache[nodeName(context)] + if !found { + nodes = parseHtmlWithContext(htmlStr, context) + nodeCache[nodeName(context)] = nodes + } + mergeFn(n, cloneNodes(nodes)) + } + } + return s +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/manipulation_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/manipulation_test.go new file mode 100644 index 000000000..111968912 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/manipulation_test.go @@ -0,0 +1,739 @@ +package goquery + +import ( + "log" + "testing" +) + +const ( + wrapHtml = "
      test string

      " +) + +func TestAfter(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").After("#nf6") + + assertLength(t, doc.Find("#main #nf6").Nodes, 0) + assertLength(t, doc.Find("#foot #nf6").Nodes, 0) + assertLength(t, doc.Find("#main + #nf6").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestAfterMany(t *testing.T) { + doc := Doc2Clone() + doc.Find(".one").After("#nf6") + + assertLength(t, doc.Find("#foot #nf6").Nodes, 1) + assertLength(t, doc.Find("#main #nf6").Nodes, 1) + assertLength(t, doc.Find(".one + #nf6").Nodes, 2) + printSel(t, doc.Selection) +} + +func TestAfterWithRemoved(t *testing.T) { + doc := Doc2Clone() + s := doc.Find("#main").Remove() + s.After("#nf6") + + assertLength(t, s.Find("#nf6").Nodes, 0) + assertLength(t, doc.Find("#nf6").Nodes, 0) + printSel(t, doc.Selection) +} + +func TestAfterSelection(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").AfterSelection(doc.Find("#nf1, #nf2")) + + assertLength(t, doc.Find("#main #nf1, #main #nf2").Nodes, 0) + assertLength(t, doc.Find("#foot #nf1, #foot #nf2").Nodes, 0) + assertLength(t, doc.Find("#main + #nf1, #nf1 + #nf2").Nodes, 2) + printSel(t, doc.Selection) +} + +func TestAfterHtml(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").AfterHtml("new node") + + assertLength(t, doc.Find("#main + strong").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestAfterHtmlContext(t *testing.T) { + doc := loadString(t, ` + + + + + + + + + +
      Before1
      Before2
      + + `) + doc.Find("table tr td").AfterHtml("TestAgain") + assertLength(t, doc.Find("table tr td").Nodes, 6) + assertClass(t, doc.Find("table tr td").Last(), "c2") + printSel(t, doc.Selection) +} + +func TestAppend(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").Append("#nf6") + + assertLength(t, doc.Find("#foot #nf6").Nodes, 0) + assertLength(t, doc.Find("#main #nf6").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestAppendBody(t *testing.T) { + doc := Doc2Clone() + doc.Find("body").Append("#nf6") + + assertLength(t, doc.Find("#foot #nf6").Nodes, 0) + assertLength(t, doc.Find("#main #nf6").Nodes, 0) + assertLength(t, doc.Find("body > #nf6").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestAppendSelection(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").AppendSelection(doc.Find("#nf1, #nf2")) + + assertLength(t, doc.Find("#foot #nf1").Nodes, 0) + assertLength(t, doc.Find("#foot #nf2").Nodes, 0) + assertLength(t, doc.Find("#main #nf1").Nodes, 1) + assertLength(t, doc.Find("#main #nf2").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestAppendSelectionExisting(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").AppendSelection(doc.Find("#n1, #n2")) + + assertClass(t, doc.Find("#main :nth-child(1)"), "three") + assertClass(t, doc.Find("#main :nth-child(5)"), "one") + assertClass(t, doc.Find("#main :nth-child(6)"), "two") + printSel(t, doc.Selection) +} + +func TestAppendClone(t *testing.T) { + doc := Doc2Clone() + doc.Find("#n1").AppendSelection(doc.Find("#nf1").Clone()) + + assertLength(t, doc.Find("#foot #nf1").Nodes, 1) + assertLength(t, doc.Find("#main #nf1").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestAppendHtml(t *testing.T) { + doc := Doc2Clone() + doc.Find("div").AppendHtml("new node") + + assertLength(t, doc.Find("strong").Nodes, 14) + printSel(t, doc.Selection) +} + +func TestAppendHtmlContext(t *testing.T) { + doc := loadString(t, ` + + + + + + + + + +
      Before1
      Before2
      + + `) + doc.Find("table tr").AppendHtml("new1new2") + + assertLength(t, doc.Find("table td").Nodes, 6) + assertClass(t, doc.Find("table td").Last(), "c2") + printSel(t, doc.Selection) +} + +func TestBefore(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").Before("#nf6") + + assertLength(t, doc.Find("#main #nf6").Nodes, 0) + assertLength(t, doc.Find("#foot #nf6").Nodes, 0) + assertLength(t, doc.Find("body > #nf6:first-child").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestBeforeWithRemoved(t *testing.T) { + doc := Doc2Clone() + s := doc.Find("#main").Remove() + s.Before("#nf6") + + assertLength(t, s.Find("#nf6").Nodes, 0) + assertLength(t, doc.Find("#nf6").Nodes, 0) + printSel(t, doc.Selection) +} + +func TestBeforeSelection(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").BeforeSelection(doc.Find("#nf1, #nf2")) + + assertLength(t, doc.Find("#main #nf1, #main #nf2").Nodes, 0) + assertLength(t, doc.Find("#foot #nf1, #foot #nf2").Nodes, 0) + assertLength(t, doc.Find("body > #nf1:first-child, #nf1 + #nf2").Nodes, 2) + printSel(t, doc.Selection) +} + +func TestBeforeHtml(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").BeforeHtml("new node") + + assertLength(t, doc.Find("body > strong:first-child").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestBeforeHtmlContext(t *testing.T) { + doc := loadString(t, ` + + + + + + + + + +
      Before1
      Before2
      + + `) + doc.Find("table tr td:first-child").BeforeHtml("new1new2") + + assertLength(t, doc.Find("table td").Nodes, 6) + assertClass(t, doc.Find("table td").First(), "c1") + printSel(t, doc.Selection) +} + +func TestEmpty(t *testing.T) { + doc := Doc2Clone() + s := doc.Find("#main").Empty() + + assertLength(t, doc.Find("#main").Children().Nodes, 0) + assertLength(t, s.Filter("div").Nodes, 6) + printSel(t, doc.Selection) +} + +func TestPrepend(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").Prepend("#nf6") + + assertLength(t, doc.Find("#foot #nf6").Nodes, 0) + assertLength(t, doc.Find("#main #nf6:first-child").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestPrependBody(t *testing.T) { + doc := Doc2Clone() + doc.Find("body").Prepend("#nf6") + + assertLength(t, doc.Find("#foot #nf6").Nodes, 0) + assertLength(t, doc.Find("#main #nf6").Nodes, 0) + assertLength(t, doc.Find("body > #nf6:first-child").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestPrependSelection(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").PrependSelection(doc.Find("#nf1, #nf2")) + + assertLength(t, doc.Find("#foot #nf1").Nodes, 0) + assertLength(t, doc.Find("#foot #nf2").Nodes, 0) + assertLength(t, doc.Find("#main #nf1:first-child").Nodes, 1) + assertLength(t, doc.Find("#main #nf2:nth-child(2)").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestPrependSelectionExisting(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main").PrependSelection(doc.Find("#n5, #n6")) + + assertClass(t, doc.Find("#main :nth-child(1)"), "five") + assertClass(t, doc.Find("#main :nth-child(2)"), "six") + assertClass(t, doc.Find("#main :nth-child(5)"), "three") + assertClass(t, doc.Find("#main :nth-child(6)"), "four") + printSel(t, doc.Selection) +} + +func TestPrependClone(t *testing.T) { + doc := Doc2Clone() + doc.Find("#n1").PrependSelection(doc.Find("#nf1").Clone()) + + assertLength(t, doc.Find("#foot #nf1:first-child").Nodes, 1) + assertLength(t, doc.Find("#main #nf1:first-child").Nodes, 1) + printSel(t, doc.Selection) +} + +func TestPrependHtml(t *testing.T) { + doc := Doc2Clone() + doc.Find("div").PrependHtml("new node") + + assertLength(t, doc.Find("strong:first-child").Nodes, 14) + printSel(t, doc.Selection) +} + +func TestPrependHtmlContext(t *testing.T) { + doc := loadString(t, ` + + + + + + + + + +
      Before1
      Before2
      + + `) + doc.Find("table tr").PrependHtml("new nodeother new node") + + assertLength(t, doc.Find("table td").Nodes, 6) + assertClass(t, doc.Find("table tr td").First(), "c1") + printSel(t, doc.Selection) +} + +func TestRemove(t *testing.T) { + doc := Doc2Clone() + doc.Find("#nf1").Remove() + + assertLength(t, doc.Find("#foot #nf1").Nodes, 0) + printSel(t, doc.Selection) +} + +func TestRemoveAll(t *testing.T) { + doc := Doc2Clone() + doc.Find("*").Remove() + + assertLength(t, doc.Find("*").Nodes, 0) + printSel(t, doc.Selection) +} + +func TestRemoveRoot(t *testing.T) { + doc := Doc2Clone() + doc.Find("html").Remove() + + assertLength(t, doc.Find("html").Nodes, 0) + printSel(t, doc.Selection) +} + +func TestRemoveFiltered(t *testing.T) { + doc := Doc2Clone() + nf6 := doc.Find("#nf6") + s := doc.Find("div").RemoveFiltered("#nf6") + + assertLength(t, doc.Find("#nf6").Nodes, 0) + assertLength(t, s.Nodes, 1) + if nf6.Nodes[0] != s.Nodes[0] { + t.Error("Removed node does not match original") + } + printSel(t, doc.Selection) +} + +func TestReplaceWith(t *testing.T) { + doc := Doc2Clone() + + doc.Find("#nf6").ReplaceWith("#main") + assertLength(t, doc.Find("#foot #main:last-child").Nodes, 1) + printSel(t, doc.Selection) + + doc.Find("#foot").ReplaceWith("#main") + assertLength(t, doc.Find("#foot").Nodes, 0) + assertLength(t, doc.Find("#main").Nodes, 1) + + printSel(t, doc.Selection) +} + +func TestReplaceWithHtml(t *testing.T) { + doc := Doc2Clone() + doc.Find("#main, #foot").ReplaceWithHtml("
      ") + + assertLength(t, doc.Find("#replace").Nodes, 2) + + printSel(t, doc.Selection) +} + +func TestReplaceWithHtmlContext(t *testing.T) { + doc := loadString(t, ` + + + + + + + + + +
      Before1
      Before2
      + + `) + doc.Find("table th").ReplaceWithHtml("TestReplace") + + assertLength(t, doc.Find("table th").Nodes, 0) + assertLength(t, doc.Find("table tr td").Nodes, 4) + assertClass(t, doc.Find("table tr td").First(), "c1") + printSel(t, doc.Selection) +} + +func TestSetHtml(t *testing.T) { + doc := Doc2Clone() + q := doc.Find("#main, #foot") + q.SetHtml(`
      test
      `) + + assertLength(t, doc.Find("#replace").Nodes, 2) + assertLength(t, doc.Find("#main, #foot").Nodes, 2) + + if q.Text() != "testtest" { + t.Errorf("Expected text to be %v, found %v", "testtest", q.Text()) + } + + printSel(t, doc.Selection) +} + +func TestSetHtmlNoMatch(t *testing.T) { + doc := Doc2Clone() + q := doc.Find("#notthere") + q.SetHtml(`
      test
      `) + + assertLength(t, doc.Find("#replace").Nodes, 0) + + printSel(t, doc.Selection) +} + +func TestSetHtmlEmpty(t *testing.T) { + doc := Doc2Clone() + q := doc.Find("#main") + q.SetHtml(``) + + assertLength(t, doc.Find("#main").Nodes, 1) + assertLength(t, doc.Find("#main").Children().Nodes, 0) + printSel(t, doc.Selection) +} + +func TestSetHtmlContext(t *testing.T) { + doc := loadString(t, ` + + + + + + + + + +
      Before1
      Before2
      + + `) + doc.Find("table tr").SetHtml("TestAgain") + + assertLength(t, doc.Find("table th").Nodes, 0) + assertLength(t, doc.Find("table td").Nodes, 4) + assertLength(t, doc.Find("table tr").Nodes, 2) + printSel(t, doc.Selection) +} + +func TestSetText(t *testing.T) { + doc := Doc2Clone() + q := doc.Find("#main, #foot") + repl := "
      test
      " + q.SetText(repl) + + assertLength(t, doc.Find("#replace").Nodes, 0) + assertLength(t, doc.Find("#main, #foot").Nodes, 2) + + if q.Text() != (repl + repl) { + t.Errorf("Expected text to be %v, found %v", (repl + repl), q.Text()) + } + + h, err := q.Html() + if err != nil { + t.Errorf("Error: %v", err) + } + esc := "<div id="replace">test</div>" + if h != esc { + t.Errorf("Expected html to be %v, found %v", esc, h) + } + + printSel(t, doc.Selection) +} + +func TestReplaceWithSelection(t *testing.T) { + doc := Doc2Clone() + sel := doc.Find("#nf6").ReplaceWithSelection(doc.Find("#nf5")) + + assertSelectionIs(t, sel, "#nf6") + assertLength(t, doc.Find("#nf6").Nodes, 0) + assertLength(t, doc.Find("#nf5").Nodes, 1) + + printSel(t, doc.Selection) +} + +func TestUnwrap(t *testing.T) { + doc := Doc2Clone() + + doc.Find("#nf5").Unwrap() + assertLength(t, doc.Find("#foot").Nodes, 0) + assertLength(t, doc.Find("body > #nf1").Nodes, 1) + assertLength(t, doc.Find("body > #nf5").Nodes, 1) + + printSel(t, doc.Selection) + + doc = Doc2Clone() + + doc.Find("#nf5, #n1").Unwrap() + assertLength(t, doc.Find("#foot").Nodes, 0) + assertLength(t, doc.Find("#main").Nodes, 0) + assertLength(t, doc.Find("body > #n1").Nodes, 1) + assertLength(t, doc.Find("body > #nf5").Nodes, 1) + + printSel(t, doc.Selection) +} + +func TestUnwrapBody(t *testing.T) { + doc := Doc2Clone() + + doc.Find("#main").Unwrap() + assertLength(t, doc.Find("body").Nodes, 1) + assertLength(t, doc.Find("body > #main").Nodes, 1) + + printSel(t, doc.Selection) +} + +func TestUnwrapHead(t *testing.T) { + doc := Doc2Clone() + + doc.Find("title").Unwrap() + assertLength(t, doc.Find("head").Nodes, 0) + assertLength(t, doc.Find("head > title").Nodes, 0) + assertLength(t, doc.Find("title").Nodes, 1) + + printSel(t, doc.Selection) +} + +func TestUnwrapHtml(t *testing.T) { + doc := Doc2Clone() + + doc.Find("head").Unwrap() + assertLength(t, doc.Find("html").Nodes, 0) + assertLength(t, doc.Find("html head").Nodes, 0) + assertLength(t, doc.Find("head").Nodes, 1) + + printSel(t, doc.Selection) +} + +func TestWrap(t *testing.T) { + doc := Doc2Clone() + doc.Find("#nf1").Wrap("#nf2") + nf1 := doc.Find("#foot #nf2 #nf1") + assertLength(t, nf1.Nodes, 1) + + nf2 := doc.Find("#nf2") + assertLength(t, nf2.Nodes, 2) + + printSel(t, doc.Selection) +} + +func TestWrapEmpty(t *testing.T) { + doc := Doc2Clone() + doc.Find("#nf1").Wrap("#doesnt-exist") + + origHtml, _ := Doc2().Html() + newHtml, _ := doc.Html() + + if origHtml != newHtml { + t.Error("Expected the two documents to be identical.") + } + + printSel(t, doc.Selection) +} + +func TestWrapHtml(t *testing.T) { + doc := Doc2Clone() + doc.Find(".odd").WrapHtml(wrapHtml) + nf2 := doc.Find("#ins #nf2") + assertLength(t, nf2.Nodes, 1) + printSel(t, doc.Selection) +} + +func TestWrapSelection(t *testing.T) { + doc := Doc2Clone() + doc.Find("#nf1").WrapSelection(doc.Find("#nf2")) + nf1 := doc.Find("#foot #nf2 #nf1") + assertLength(t, nf1.Nodes, 1) + + nf2 := doc.Find("#nf2") + assertLength(t, nf2.Nodes, 2) + + printSel(t, doc.Selection) +} + +func TestWrapAll(t *testing.T) { + doc := Doc2Clone() + doc.Find(".odd").WrapAll("#nf1") + nf1 := doc.Find("#main #nf1") + assertLength(t, nf1.Nodes, 1) + + sel := nf1.Find("#n2 ~ #n4 ~ #n6 ~ #nf2 ~ #nf4 ~ #nf6") + assertLength(t, sel.Nodes, 1) + + printSel(t, doc.Selection) +} + +func TestWrapAllHtml(t *testing.T) { + doc := Doc2Clone() + doc.Find(".odd").WrapAllHtml(wrapHtml) + nf1 := doc.Find("#main div#ins div p em b #n2 ~ #n4 ~ #n6 ~ #nf2 ~ #nf4 ~ #nf6") + assertLength(t, nf1.Nodes, 1) + printSel(t, doc.Selection) +} + +func TestWrapInnerNoContent(t *testing.T) { + doc := Doc2Clone() + doc.Find(".one").WrapInner(".two") + + twos := doc.Find(".two") + assertLength(t, twos.Nodes, 4) + assertLength(t, doc.Find(".one .two").Nodes, 2) + + printSel(t, doc.Selection) +} + +func TestWrapInnerWithContent(t *testing.T) { + doc := Doc3Clone() + doc.Find(".one").WrapInner(".two") + + twos := doc.Find(".two") + assertLength(t, twos.Nodes, 4) + assertLength(t, doc.Find(".one .two").Nodes, 2) + + printSel(t, doc.Selection) +} + +func TestWrapInnerNoWrapper(t *testing.T) { + doc := Doc2Clone() + doc.Find(".one").WrapInner(".not-exist") + + twos := doc.Find(".two") + assertLength(t, twos.Nodes, 2) + assertLength(t, doc.Find(".one").Nodes, 2) + assertLength(t, doc.Find(".one .two").Nodes, 0) + + printSel(t, doc.Selection) +} + +func TestWrapInnerHtml(t *testing.T) { + doc := Doc2Clone() + doc.Find("#foot").WrapInnerHtml(wrapHtml) + + foot := doc.Find("#foot div#ins div p em b #nf1 ~ #nf2 ~ #nf3") + assertLength(t, foot.Nodes, 1) + + printSel(t, doc.Selection) +} + +func TestParsingRespectsVaryingContext(t *testing.T) { + docA := loadString(t, ` + + + + + `) + docTable := loadString(t, ` + + +
      + + `) + docBoth := loadString(t, ` + + +
      + + + `) + + sA := docA.Find(".x").AppendHtml("Hello") + sTable := docTable.Find(".x").AppendHtml("Hello") + sBoth := docBoth.Find(".x").AppendHtml("Hello") + + printSel(t, docA.Selection) + printSel(t, docTable.Selection) + printSel(t, docBoth.Selection) + + oA, _ := sA.Html() + oTable, _ := sTable.Html() + + if oA == oTable { + t.Errorf("Expected inner html of and to not be equal, but got %s and %s", oA, oTable) + } + + oBothTable, _ := sBoth.First().Html() + if oBothTable != oTable { + t.Errorf("Expected inner html of
      and
      in doc containing both tags to be equal, but got %s and %s", + oTable, + oBothTable) + } + + oBothA, _ := sBoth.Last().Html() + if oBothA != oA { + t.Errorf("Expected inner html of and in doc containing both tags to be equal, but got %s and %s", + oA, + oBothA) + } +} + +func TestHtmlWithNonElementNode(t *testing.T) { + const data = ` + + + + +

      + This is sometext. +

      + + +` + + cases := map[string]func(*Selection, string) *Selection{ + "AfterHtml": (*Selection).AfterHtml, + "AppendHtml": (*Selection).AppendHtml, + "BeforeHtml": (*Selection).BeforeHtml, + "PrependHtml": (*Selection).PrependHtml, + "ReplaceWithHtml": (*Selection).ReplaceWithHtml, + "SetHtml": (*Selection).SetHtml, + } + for nm, fn := range cases { + // this test is only to make sure that the HTML parsing/manipulation + // methods do not raise panics when executed over Selections that contain + // non-Element nodes. + t.Run(nm, func(t *testing.T) { + doc := loadString(t, data) + sel := doc.Find("p").Contents() + func() { + defer func() { + if err := recover(); err != nil { + t.Fatal(err) + } + }() + fn(sel, "
      ") + }() + + // print the resulting document in verbose mode + h, err := OuterHtml(doc.Selection) + if err != nil { + log.Fatal(err) + } + t.Log(h) + }) + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/misc/git/pre-commit b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/misc/git/pre-commit new file mode 100644 index 000000000..78e433146 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/misc/git/pre-commit @@ -0,0 +1,37 @@ +#!/bin/sh + +echo ">>> golint" +for dir in $(go list ./... | grep -v /vendor/) +do + golint "${dir}" +done +echo "<<< golint" +echo + +echo ">>> go vet" +go vet $(go list ./... | grep -v /vendor/) +echo "<<< go vet" +echo + +echo ">>> gosimple" +gosimple $(go list ./... | grep -v /vendor/) +echo "<<< gosimple" +echo + +# Check for gofmt problems and report if any. +gofiles=$(git diff --cached --name-only --diff-filter=ACM | grep '.go$' | grep -v /vendor/) +[ -z "$gofiles" ] && echo "EXIT $vetres" && exit $vetres + +if [ -n "$gofiles" ]; then + unformatted=$(gofmt -l $gofiles) + + if [ -n "$unformatted" ]; then + # Some files are not gofmt'd. + echo >&2 "Go files must be formatted with gofmt. Please run:" + for fn in $unformatted; do + echo >&2 " gofmt -w $PWD/$fn" + done + fi +fi +echo + diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/property.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/property.go new file mode 100644 index 000000000..411126db2 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/property.go @@ -0,0 +1,275 @@ +package goquery + +import ( + "bytes" + "regexp" + "strings" + + "golang.org/x/net/html" +) + +var rxClassTrim = regexp.MustCompile("[\t\r\n]") + +// Attr gets the specified attribute's value for the first element in the +// Selection. To get the value for each element individually, use a looping +// construct such as Each or Map method. +func (s *Selection) Attr(attrName string) (val string, exists bool) { + if len(s.Nodes) == 0 { + return + } + return getAttributeValue(attrName, s.Nodes[0]) +} + +// AttrOr works like Attr but returns default value if attribute is not present. +func (s *Selection) AttrOr(attrName, defaultValue string) string { + if len(s.Nodes) == 0 { + return defaultValue + } + + val, exists := getAttributeValue(attrName, s.Nodes[0]) + if !exists { + return defaultValue + } + + return val +} + +// RemoveAttr removes the named attribute from each element in the set of matched elements. +func (s *Selection) RemoveAttr(attrName string) *Selection { + for _, n := range s.Nodes { + removeAttr(n, attrName) + } + + return s +} + +// SetAttr sets the given attribute on each element in the set of matched elements. +func (s *Selection) SetAttr(attrName, val string) *Selection { + for _, n := range s.Nodes { + attr := getAttributePtr(attrName, n) + if attr == nil { + n.Attr = append(n.Attr, html.Attribute{Key: attrName, Val: val}) + } else { + attr.Val = val + } + } + + return s +} + +// Text gets the combined text contents of each element in the set of matched +// elements, including their descendants. +func (s *Selection) Text() string { + var buf bytes.Buffer + + // Slightly optimized vs calling Each: no single selection object created + var f func(*html.Node) + f = func(n *html.Node) { + if n.Type == html.TextNode { + // Keep newlines and spaces, like jQuery + buf.WriteString(n.Data) + } + if n.FirstChild != nil { + for c := n.FirstChild; c != nil; c = c.NextSibling { + f(c) + } + } + } + for _, n := range s.Nodes { + f(n) + } + + return buf.String() +} + +// Size is an alias for Length. +func (s *Selection) Size() int { + return s.Length() +} + +// Length returns the number of elements in the Selection object. +func (s *Selection) Length() int { + return len(s.Nodes) +} + +// Html gets the HTML contents of the first element in the set of matched +// elements. It includes text and comment nodes. +func (s *Selection) Html() (ret string, e error) { + // Since there is no .innerHtml, the HTML content must be re-created from + // the nodes using html.Render. + var buf bytes.Buffer + + if len(s.Nodes) > 0 { + for c := s.Nodes[0].FirstChild; c != nil; c = c.NextSibling { + e = html.Render(&buf, c) + if e != nil { + return + } + } + ret = buf.String() + } + + return +} + +// AddClass adds the given class(es) to each element in the set of matched elements. +// Multiple class names can be specified, separated by a space or via multiple arguments. +func (s *Selection) AddClass(class ...string) *Selection { + classStr := strings.TrimSpace(strings.Join(class, " ")) + + if classStr == "" { + return s + } + + tcls := getClassesSlice(classStr) + for _, n := range s.Nodes { + curClasses, attr := getClassesAndAttr(n, true) + for _, newClass := range tcls { + if !strings.Contains(curClasses, " "+newClass+" ") { + curClasses += newClass + " " + } + } + + setClasses(n, attr, curClasses) + } + + return s +} + +// HasClass determines whether any of the matched elements are assigned the +// given class. +func (s *Selection) HasClass(class string) bool { + class = " " + class + " " + for _, n := range s.Nodes { + classes, _ := getClassesAndAttr(n, false) + if strings.Contains(classes, class) { + return true + } + } + return false +} + +// RemoveClass removes the given class(es) from each element in the set of matched elements. +// Multiple class names can be specified, separated by a space or via multiple arguments. +// If no class name is provided, all classes are removed. +func (s *Selection) RemoveClass(class ...string) *Selection { + var rclasses []string + + classStr := strings.TrimSpace(strings.Join(class, " ")) + remove := classStr == "" + + if !remove { + rclasses = getClassesSlice(classStr) + } + + for _, n := range s.Nodes { + if remove { + removeAttr(n, "class") + } else { + classes, attr := getClassesAndAttr(n, true) + for _, rcl := range rclasses { + classes = strings.Replace(classes, " "+rcl+" ", " ", -1) + } + + setClasses(n, attr, classes) + } + } + + return s +} + +// ToggleClass adds or removes the given class(es) for each element in the set of matched elements. +// Multiple class names can be specified, separated by a space or via multiple arguments. +func (s *Selection) ToggleClass(class ...string) *Selection { + classStr := strings.TrimSpace(strings.Join(class, " ")) + + if classStr == "" { + return s + } + + tcls := getClassesSlice(classStr) + + for _, n := range s.Nodes { + classes, attr := getClassesAndAttr(n, true) + for _, tcl := range tcls { + if strings.Contains(classes, " "+tcl+" ") { + classes = strings.Replace(classes, " "+tcl+" ", " ", -1) + } else { + classes += tcl + " " + } + } + + setClasses(n, attr, classes) + } + + return s +} + +func getAttributePtr(attrName string, n *html.Node) *html.Attribute { + if n == nil { + return nil + } + + for i, a := range n.Attr { + if a.Key == attrName { + return &n.Attr[i] + } + } + return nil +} + +// Private function to get the specified attribute's value from a node. +func getAttributeValue(attrName string, n *html.Node) (val string, exists bool) { + if a := getAttributePtr(attrName, n); a != nil { + val = a.Val + exists = true + } + return +} + +// Get and normalize the "class" attribute from the node. +func getClassesAndAttr(n *html.Node, create bool) (classes string, attr *html.Attribute) { + // Applies only to element nodes + if n.Type == html.ElementNode { + attr = getAttributePtr("class", n) + if attr == nil && create { + n.Attr = append(n.Attr, html.Attribute{ + Key: "class", + Val: "", + }) + attr = &n.Attr[len(n.Attr)-1] + } + } + + if attr == nil { + classes = " " + } else { + classes = rxClassTrim.ReplaceAllString(" "+attr.Val+" ", " ") + } + + return +} + +func getClassesSlice(classes string) []string { + return strings.Split(rxClassTrim.ReplaceAllString(" "+classes+" ", " "), " ") +} + +func removeAttr(n *html.Node, attrName string) { + for i, a := range n.Attr { + if a.Key == attrName { + n.Attr[i], n.Attr[len(n.Attr)-1], n.Attr = + n.Attr[len(n.Attr)-1], html.Attribute{}, n.Attr[:len(n.Attr)-1] + return + } + } +} + +func setClasses(n *html.Node, attr *html.Attribute, classes string) { + classes = strings.TrimSpace(classes) + if classes == "" { + removeAttr(n, "class") + return + } + + attr.Val = classes +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/property_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/property_test.go new file mode 100644 index 000000000..1095dcc89 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/property_test.go @@ -0,0 +1,252 @@ +package goquery + +import ( + "regexp" + "strings" + "testing" +) + +func TestAttrExists(t *testing.T) { + if val, ok := Doc().Find("a").Attr("href"); !ok { + t.Error("Expected a value for the href attribute.") + } else { + t.Logf("Href of first anchor: %v.", val) + } +} + +func TestAttrOr(t *testing.T) { + if val := Doc().Find("a").AttrOr("fake-attribute", "alternative"); val != "alternative" { + t.Error("Expected an alternative value for 'fake-attribute' attribute.") + } else { + t.Logf("Value returned for not existing attribute: %v.", val) + } + if val := Doc().Find("zz").AttrOr("fake-attribute", "alternative"); val != "alternative" { + t.Error("Expected an alternative value for 'fake-attribute' on an empty selection.") + } else { + t.Logf("Value returned for empty selection: %v.", val) + } +} + +func TestAttrNotExist(t *testing.T) { + if val, ok := Doc().Find("div.row-fluid").Attr("href"); ok { + t.Errorf("Expected no value for the href attribute, got %v.", val) + } +} + +func TestRemoveAttr(t *testing.T) { + sel := Doc2Clone().Find("div") + + sel.RemoveAttr("id") + + _, ok := sel.Attr("id") + if ok { + t.Error("Expected there to be no id attributes set") + } +} + +func TestSetAttr(t *testing.T) { + sel := Doc2Clone().Find("#main") + + sel.SetAttr("id", "not-main") + + val, ok := sel.Attr("id") + if !ok { + t.Error("Expected an id attribute on main") + } + + if val != "not-main" { + t.Errorf("Expected an attribute id to be not-main, got %s", val) + } +} + +func TestSetAttr2(t *testing.T) { + sel := Doc2Clone().Find("#main") + + sel.SetAttr("foo", "bar") + + val, ok := sel.Attr("foo") + if !ok { + t.Error("Expected an 'foo' attribute on main") + } + + if val != "bar" { + t.Errorf("Expected an attribute 'foo' to be 'bar', got '%s'", val) + } +} + +func TestText(t *testing.T) { + txt := Doc().Find("h1").Text() + if strings.Trim(txt, " \n\r\t") != "Provok.in" { + t.Errorf("Expected text to be Provok.in, found %s.", txt) + } +} + +func TestText2(t *testing.T) { + txt := Doc().Find(".hero-unit .container-fluid .row-fluid:nth-child(1)").Text() + if ok, e := regexp.MatchString(`^\s+Provok\.in\s+Prove your point.\s+$`, txt); !ok || e != nil { + t.Errorf("Expected text to be Provok.in Prove your point., found %s.", txt) + if e != nil { + t.Logf("Error: %s.", e.Error()) + } + } +} + +func TestText3(t *testing.T) { + txt := Doc().Find(".pvk-gutter").First().Text() + // There's an   character in there... + if ok, e := regexp.MatchString(`^[\s\x{00A0}]+$`, txt); !ok || e != nil { + t.Errorf("Expected spaces, found <%v>.", txt) + if e != nil { + t.Logf("Error: %s.", e.Error()) + } + } +} + +func TestHtml(t *testing.T) { + txt, e := Doc().Find("h1").Html() + if e != nil { + t.Errorf("Error: %s.", e) + } + + if ok, e := regexp.MatchString(`^\s*
      Provok\.in\s*$`, txt); !ok || e != nil { + t.Errorf("Unexpected HTML content, found %s.", txt) + if e != nil { + t.Logf("Error: %s.", e.Error()) + } + } +} + +func TestNbsp(t *testing.T) { + src := `

      Some text

      ` + d, err := NewDocumentFromReader(strings.NewReader(src)) + if err != nil { + t.Fatal(err) + } + txt := d.Find("p").Text() + ix := strings.Index(txt, "\u00a0") + if ix != 4 { + t.Errorf("Text: expected a non-breaking space at index 4, got %d", ix) + } + + h, err := d.Find("p").Html() + if err != nil { + t.Fatal(err) + } + ix = strings.Index(h, "\u00a0") + if ix != 4 { + t.Errorf("Html: expected a non-breaking space at index 4, got %d", ix) + } +} + +func TestAddClass(t *testing.T) { + sel := Doc2Clone().Find("#main") + sel.AddClass("main main main") + + // Make sure that class was only added once + if a, ok := sel.Attr("class"); !ok || a != "main" { + t.Error("Expected #main to have class main") + } +} + +func TestAddClassSimilar(t *testing.T) { + sel := Doc2Clone().Find("#nf5") + sel.AddClass("odd") + + assertClass(t, sel, "odd") + assertClass(t, sel, "odder") + printSel(t, sel.Parent()) +} + +func TestAddEmptyClass(t *testing.T) { + sel := Doc2Clone().Find("#main") + sel.AddClass("") + + // Make sure that class was only added once + if a, ok := sel.Attr("class"); ok { + t.Errorf("Expected #main to not to have a class, have: %s", a) + } +} + +func TestAddClasses(t *testing.T) { + sel := Doc2Clone().Find("#main") + sel.AddClass("a b") + + // Make sure that class was only added once + if !sel.HasClass("a") || !sel.HasClass("b") { + t.Errorf("#main does not have classes") + } +} + +func TestHasClass(t *testing.T) { + sel := Doc().Find("div") + if !sel.HasClass("span12") { + t.Error("Expected at least one div to have class span12.") + } +} + +func TestHasClassNone(t *testing.T) { + sel := Doc().Find("h2") + if sel.HasClass("toto") { + t.Error("Expected h1 to have no class.") + } +} + +func TestHasClassNotFirst(t *testing.T) { + sel := Doc().Find(".alert") + if !sel.HasClass("alert-error") { + t.Error("Expected .alert to also have class .alert-error.") + } +} + +func TestRemoveClass(t *testing.T) { + sel := Doc2Clone().Find("#nf1") + sel.RemoveClass("one row") + + if !sel.HasClass("even") || sel.HasClass("one") || sel.HasClass("row") { + classes, _ := sel.Attr("class") + t.Error("Expected #nf1 to have class even, has ", classes) + } +} + +func TestRemoveClassSimilar(t *testing.T) { + sel := Doc2Clone().Find("#nf5, #nf6") + assertLength(t, sel.Nodes, 2) + + sel.RemoveClass("odd") + assertClass(t, sel.Eq(0), "odder") + printSel(t, sel) +} + +func TestRemoveAllClasses(t *testing.T) { + sel := Doc2Clone().Find("#nf1") + sel.RemoveClass() + + if a, ok := sel.Attr("class"); ok { + t.Error("All classes were not removed, has ", a) + } + + sel = Doc2Clone().Find("#main") + sel.RemoveClass() + if a, ok := sel.Attr("class"); ok { + t.Error("All classes were not removed, has ", a) + } +} + +func TestToggleClass(t *testing.T) { + sel := Doc2Clone().Find("#nf1") + + sel.ToggleClass("one") + if sel.HasClass("one") { + t.Error("Expected #nf1 to not have class one") + } + + sel.ToggleClass("one") + if !sel.HasClass("one") { + t.Error("Expected #nf1 to have class one") + } + + sel.ToggleClass("one even row") + if a, ok := sel.Attr("class"); ok { + t.Errorf("Expected #nf1 to have no classes, have %q", a) + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/query.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/query.go new file mode 100644 index 000000000..fe86bf0bf --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/query.go @@ -0,0 +1,49 @@ +package goquery + +import "golang.org/x/net/html" + +// Is checks the current matched set of elements against a selector and +// returns true if at least one of these elements matches. +func (s *Selection) Is(selector string) bool { + return s.IsMatcher(compileMatcher(selector)) +} + +// IsMatcher checks the current matched set of elements against a matcher and +// returns true if at least one of these elements matches. +func (s *Selection) IsMatcher(m Matcher) bool { + if len(s.Nodes) > 0 { + if len(s.Nodes) == 1 { + return m.Match(s.Nodes[0]) + } + return len(m.Filter(s.Nodes)) > 0 + } + + return false +} + +// IsFunction checks the current matched set of elements against a predicate and +// returns true if at least one of these elements matches. +func (s *Selection) IsFunction(f func(int, *Selection) bool) bool { + return s.FilterFunction(f).Length() > 0 +} + +// IsSelection checks the current matched set of elements against a Selection object +// and returns true if at least one of these elements matches. +func (s *Selection) IsSelection(sel *Selection) bool { + return s.FilterSelection(sel).Length() > 0 +} + +// IsNodes checks the current matched set of elements against the specified nodes +// and returns true if at least one of these elements matches. +func (s *Selection) IsNodes(nodes ...*html.Node) bool { + return s.FilterNodes(nodes...).Length() > 0 +} + +// Contains returns true if the specified Node is within, +// at any depth, one of the nodes in the Selection object. +// It is NOT inclusive, to behave like jQuery's implementation, and +// unlike Javascript's .contains, so if the contained +// node is itself in the selection, it returns false. +func (s *Selection) Contains(n *html.Node) bool { + return sliceContains(s.Nodes, n) +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/query_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/query_test.go new file mode 100644 index 000000000..54b2a2e0d --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/query_test.go @@ -0,0 +1,103 @@ +package goquery + +import ( + "testing" +) + +func TestIs(t *testing.T) { + sel := Doc().Find(".footer p:nth-child(1)") + if !sel.Is("p") { + t.Error("Expected .footer p:nth-child(1) to be p.") + } +} + +func TestIsInvalid(t *testing.T) { + sel := Doc().Find(".footer p:nth-child(1)") + if sel.Is("") { + t.Error("Is should not succeed with invalid selector string") + } +} + +func TestIsPositional(t *testing.T) { + sel := Doc().Find(".footer p:nth-child(2)") + if !sel.Is("p:nth-child(2)") { + t.Error("Expected .footer p:nth-child(2) to be p:nth-child(2).") + } +} + +func TestIsPositionalNot(t *testing.T) { + sel := Doc().Find(".footer p:nth-child(1)") + if sel.Is("p:nth-child(2)") { + t.Error("Expected .footer p:nth-child(1) NOT to be p:nth-child(2).") + } +} + +func TestIsFunction(t *testing.T) { + ok := Doc().Find("div").IsFunction(func(i int, s *Selection) bool { + return s.HasClass("container-fluid") + }) + + if !ok { + t.Error("Expected some div to have a container-fluid class.") + } +} + +func TestIsFunctionRollback(t *testing.T) { + ok := Doc().Find("div").IsFunction(func(i int, s *Selection) bool { + return s.HasClass("container-fluid") + }) + + if !ok { + t.Error("Expected some div to have a container-fluid class.") + } +} + +func TestIsSelection(t *testing.T) { + sel := Doc().Find("div") + sel2 := Doc().Find(".pvk-gutter") + + if !sel.IsSelection(sel2) { + t.Error("Expected some div to have a pvk-gutter class.") + } +} + +func TestIsSelectionNot(t *testing.T) { + sel := Doc().Find("div") + sel2 := Doc().Find("a") + + if sel.IsSelection(sel2) { + t.Error("Expected some div NOT to be an anchor.") + } +} + +func TestIsNodes(t *testing.T) { + sel := Doc().Find("div") + sel2 := Doc().Find(".footer") + + if !sel.IsNodes(sel2.Nodes[0]) { + t.Error("Expected some div to have a footer class.") + } +} + +func TestDocContains(t *testing.T) { + sel := Doc().Find("h1") + if !Doc().Contains(sel.Nodes[0]) { + t.Error("Expected document to contain H1 tag.") + } +} + +func TestSelContains(t *testing.T) { + sel := Doc().Find(".row-fluid") + sel2 := Doc().Find("a[ng-click]") + if !sel.Contains(sel2.Nodes[0]) { + t.Error("Expected .row-fluid to contain a[ng-click] tag.") + } +} + +func TestSelNotContains(t *testing.T) { + sel := Doc().Find("a.link") + sel2 := Doc().Find("span") + if sel.Contains(sel2.Nodes[0]) { + t.Error("Expected a.link to NOT contain span tag.") + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/gotesting.html b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/gotesting.html new file mode 100644 index 000000000..ba5348fd4 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/gotesting.html @@ -0,0 +1,855 @@ + + + + + + testing - The Go Programming Language + + + + + + + + + + + + +
      + + +
      +

      Package testing

      + + + + + + + + + + +
      +
      +
      import "testing"
      +
      +
      +
      Overview
      +
      Index
      + + +
      Subdirectories
      + +
      +
      + +
      + +
      +

      Overview ▾

      +

      +Package testing provides support for automated testing of Go packages. +It is intended to be used in concert with the “go test” command, which automates +execution of any function of the form +

      +
      func TestXxx(*testing.T)
      +
      +

      +where Xxx can be any alphanumeric string (but the first letter must not be in +[a-z]) and serves to identify the test routine. +These TestXxx routines should be declared within the package they are testing. +

      +

      +Functions of the form +

      +
      func BenchmarkXxx(*testing.B)
      +
      +

      +are considered benchmarks, and are executed by the "go test" command when +the -test.bench flag is provided. +

      +

      +A sample benchmark function looks like this: +

      +
      func BenchmarkHello(b *testing.B) {
      +    for i := 0; i < b.N; i++ {
      +        fmt.Sprintf("hello")
      +    }
      +}
      +
      +

      +The benchmark package will vary b.N until the benchmark function lasts +long enough to be timed reliably. The output +

      +
      testing.BenchmarkHello    10000000    282 ns/op
      +
      +

      +means that the loop ran 10000000 times at a speed of 282 ns per loop. +

      +

      +If a benchmark needs some expensive setup before running, the timer +may be stopped: +

      +
      func BenchmarkBigLen(b *testing.B) {
      +    b.StopTimer()
      +    big := NewBig()
      +    b.StartTimer()
      +    for i := 0; i < b.N; i++ {
      +        big.Len()
      +    }
      +}
      +
      +

      +The package also runs and verifies example code. Example functions may +include a concluding comment that begins with "Output:" and is compared with +the standard output of the function when the tests are run, as in these +examples of an example: +

      +
      func ExampleHello() {
      +        fmt.Println("hello")
      +        // Output: hello
      +}
      +
      +func ExampleSalutations() {
      +        fmt.Println("hello, and")
      +        fmt.Println("goodbye")
      +        // Output:
      +        // hello, and
      +        // goodbye
      +}
      +
      +

      +Example functions without output comments are compiled but not executed. +

      +

      +The naming convention to declare examples for a function F, a type T and +method M on type T are: +

      +
      func ExampleF() { ... }
      +func ExampleT() { ... }
      +func ExampleT_M() { ... }
      +
      +

      +Multiple example functions for a type/function/method may be provided by +appending a distinct suffix to the name. The suffix must start with a +lower-case letter. +

      +
      func ExampleF_suffix() { ... }
      +func ExampleT_suffix() { ... }
      +func ExampleT_M_suffix() { ... }
      +
      +

      +The entire test file is presented as the example when it contains a single +example function, at least one other function, type, variable, or constant +declaration, and no test or benchmark functions. +

      + +
      +
      + + +

      Index

      + +
      +
      + + + + +
      func Main(matchString func(pat, str string) (bool, error), tests []InternalTest, benchmarks []InternalBenchmark, examples []InternalExample)
      + + +
      func RunBenchmarks(matchString func(pat, str string) (bool, error), benchmarks []InternalBenchmark)
      + + +
      func RunExamples(matchString func(pat, str string) (bool, error), examples []InternalExample) (ok bool)
      + + +
      func RunTests(matchString func(pat, str string) (bool, error), tests []InternalTest) (ok bool)
      + + +
      func Short() bool
      + + + +
      type B
      + + + +
          func (c *B) Error(args ...interface{})
      + + +
          func (c *B) Errorf(format string, args ...interface{})
      + + +
          func (c *B) Fail()
      + + +
          func (c *B) FailNow()
      + + +
          func (c *B) Failed() bool
      + + +
          func (c *B) Fatal(args ...interface{})
      + + +
          func (c *B) Fatalf(format string, args ...interface{})
      + + +
          func (c *B) Log(args ...interface{})
      + + +
          func (c *B) Logf(format string, args ...interface{})
      + + +
          func (b *B) ResetTimer()
      + + +
          func (b *B) SetBytes(n int64)
      + + +
          func (b *B) StartTimer()
      + + +
          func (b *B) StopTimer()
      + + + +
      type BenchmarkResult
      + + +
          func Benchmark(f func(b *B)) BenchmarkResult
      + + + +
          func (r BenchmarkResult) NsPerOp() int64
      + + +
          func (r BenchmarkResult) String() string
      + + + +
      type InternalBenchmark
      + + + + +
      type InternalExample
      + + + + +
      type InternalTest
      + + + + +
      type T
      + + + +
          func (c *T) Error(args ...interface{})
      + + +
          func (c *T) Errorf(format string, args ...interface{})
      + + +
          func (c *T) Fail()
      + + +
          func (c *T) FailNow()
      + + +
          func (c *T) Failed() bool
      + + +
          func (c *T) Fatal(args ...interface{})
      + + +
          func (c *T) Fatalf(format string, args ...interface{})
      + + +
          func (c *T) Log(args ...interface{})
      + + +
          func (c *T) Logf(format string, args ...interface{})
      + + +
          func (t *T) Parallel()
      + + + +
      + + + + +

      Package files

      +

      + + + benchmark.go + + example.go + + testing.go + + +

      + + + + + + + +

      func Main

      +
      func Main(matchString func(pat, str string) (bool, error), tests []InternalTest, benchmarks []InternalBenchmark, examples []InternalExample)
      +

      +An internal function but exported because it is cross-package; part of the implementation +of the "go test" command. +

      + + + + + +

      func RunBenchmarks

      +
      func RunBenchmarks(matchString func(pat, str string) (bool, error), benchmarks []InternalBenchmark)
      +

      +An internal function but exported because it is cross-package; part of the implementation +of the "go test" command. +

      + + + + + +

      func RunExamples

      +
      func RunExamples(matchString func(pat, str string) (bool, error), examples []InternalExample) (ok bool)
      + + + + + +

      func RunTests

      +
      func RunTests(matchString func(pat, str string) (bool, error), tests []InternalTest) (ok bool)
      + + + + + +

      func Short

      +
      func Short() bool
      +

      +Short reports whether the -test.short flag is set. +

      + + + + + + +

      type B

      +
      type B struct {
      +    N int
      +    // contains filtered or unexported fields
      +}
      +

      +B is a type passed to Benchmark functions to manage benchmark +timing and to specify the number of iterations to run. +

      + + + + + + + + + + + + +

      func (*B) Error

      +
      func (c *B) Error(args ...interface{})
      +

      +Error is equivalent to Log() followed by Fail(). +

      + + + + + +

      func (*B) Errorf

      +
      func (c *B) Errorf(format string, args ...interface{})
      +

      +Errorf is equivalent to Logf() followed by Fail(). +

      + + + + + +

      func (*B) Fail

      +
      func (c *B) Fail()
      +

      +Fail marks the function as having failed but continues execution. +

      + + + + + +

      func (*B) FailNow

      +
      func (c *B) FailNow()
      +

      +FailNow marks the function as having failed and stops its execution. +Execution will continue at the next test or benchmark. +

      + + + + + +

      func (*B) Failed

      +
      func (c *B) Failed() bool
      +

      +Failed returns whether the function has failed. +

      + + + + + +

      func (*B) Fatal

      +
      func (c *B) Fatal(args ...interface{})
      +

      +Fatal is equivalent to Log() followed by FailNow(). +

      + + + + + +

      func (*B) Fatalf

      +
      func (c *B) Fatalf(format string, args ...interface{})
      +

      +Fatalf is equivalent to Logf() followed by FailNow(). +

      + + + + + +

      func (*B) Log

      +
      func (c *B) Log(args ...interface{})
      +

      +Log formats its arguments using default formatting, analogous to Println(), +and records the text in the error log. +

      + + + + + +

      func (*B) Logf

      +
      func (c *B) Logf(format string, args ...interface{})
      +

      +Logf formats its arguments according to the format, analogous to Printf(), +and records the text in the error log. +

      + + + + + +

      func (*B) ResetTimer

      +
      func (b *B) ResetTimer()
      +

      +ResetTimer sets the elapsed benchmark time to zero. +It does not affect whether the timer is running. +

      + + + + + +

      func (*B) SetBytes

      +
      func (b *B) SetBytes(n int64)
      +

      +SetBytes records the number of bytes processed in a single operation. +If this is called, the benchmark will report ns/op and MB/s. +

      + + + + + +

      func (*B) StartTimer

      +
      func (b *B) StartTimer()
      +

      +StartTimer starts timing a test. This function is called automatically +before a benchmark starts, but it can also used to resume timing after +a call to StopTimer. +

      + + + + + +

      func (*B) StopTimer

      +
      func (b *B) StopTimer()
      +

      +StopTimer stops timing a test. This can be used to pause the timer +while performing complex initialization that you don't +want to measure. +

      + + + + + + + +

      type BenchmarkResult

      +
      type BenchmarkResult struct {
      +    N     int           // The number of iterations.
      +    T     time.Duration // The total time taken.
      +    Bytes int64         // Bytes processed in one iteration.
      +}
      +

      +The results of a benchmark run. +

      + + + + + + + + + + +

      func Benchmark

      +
      func Benchmark(f func(b *B)) BenchmarkResult
      +

      +Benchmark benchmarks a single function. Useful for creating +custom benchmarks that do not use the "go test" command. +

      + + + + + + +

      func (BenchmarkResult) NsPerOp

      +
      func (r BenchmarkResult) NsPerOp() int64
      + + + + + +

      func (BenchmarkResult) String

      +
      func (r BenchmarkResult) String() string
      + + + + + + + +

      type InternalBenchmark

      +
      type InternalBenchmark struct {
      +    Name string
      +    F    func(b *B)
      +}
      +

      +An internal type but exported because it is cross-package; part of the implementation +of the "go test" command. +

      + + + + + + + + + + + + + + +

      type InternalExample

      +
      type InternalExample struct {
      +    Name   string
      +    F      func()
      +    Output string
      +}
      + + + + + + + + + + + + + + +

      type InternalTest

      +
      type InternalTest struct {
      +    Name string
      +    F    func(*T)
      +}
      +

      +An internal type but exported because it is cross-package; part of the implementation +of the "go test" command. +

      + + + + + + + + + + + + + + +

      type T

      +
      type T struct {
      +    // contains filtered or unexported fields
      +}
      +

      +T is a type passed to Test functions to manage test state and support formatted test logs. +Logs are accumulated during execution and dumped to standard error when done. +

      + + + + + + + + + + + + +

      func (*T) Error

      +
      func (c *T) Error(args ...interface{})
      +

      +Error is equivalent to Log() followed by Fail(). +

      + + + + + +

      func (*T) Errorf

      +
      func (c *T) Errorf(format string, args ...interface{})
      +

      +Errorf is equivalent to Logf() followed by Fail(). +

      + + + + + +

      func (*T) Fail

      +
      func (c *T) Fail()
      +

      +Fail marks the function as having failed but continues execution. +

      + + + + + +

      func (*T) FailNow

      +
      func (c *T) FailNow()
      +

      +FailNow marks the function as having failed and stops its execution. +Execution will continue at the next test or benchmark. +

      + + + + + +

      func (*T) Failed

      +
      func (c *T) Failed() bool
      +

      +Failed returns whether the function has failed. +

      + + + + + +

      func (*T) Fatal

      +
      func (c *T) Fatal(args ...interface{})
      +

      +Fatal is equivalent to Log() followed by FailNow(). +

      + + + + + +

      func (*T) Fatalf

      +
      func (c *T) Fatalf(format string, args ...interface{})
      +

      +Fatalf is equivalent to Logf() followed by FailNow(). +

      + + + + + +

      func (*T) Log

      +
      func (c *T) Log(args ...interface{})
      +

      +Log formats its arguments using default formatting, analogous to Println(), +and records the text in the error log. +

      + + + + + +

      func (*T) Logf

      +
      func (c *T) Logf(format string, args ...interface{})
      +

      +Logf formats its arguments according to the format, analogous to Printf(), +and records the text in the error log. +

      + + + + + +

      func (*T) Parallel

      +
      func (t *T) Parallel()
      +

      +Parallel signals that this test is to be run in parallel with (and only with) +other parallel tests in this CPU group. +

      + + + + + +
      + + + + + + + + + + + + +

      Subdirectories

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Name    Synopsis
      ..
      iotest    Package iotest implements Readers and Writers useful mainly for testing.
      quick    Package quick implements utility functions to help with black box testing.
      + + + + + + + + + + + + + diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/gowiki.html b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/gowiki.html new file mode 100644 index 000000000..2ed6bb715 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/gowiki.html @@ -0,0 +1,1214 @@ + + + +Go (programming language) - Wikipedia, the free encyclopedia + + + + + + + + + + + + + + + + + + + + + + +
      +
      + +
      + + + +
      + + +

      Go (programming language)

      + + +
      + +
      From Wikipedia, the free encyclopedia
      + + +
        (Redirected from Golang)
      + + +
      + Jump to: navigation, search +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Go
      Golang.png
      Paradigm(s)compiled, concurrent, imperative, structured
      Appeared in2009
      Designed byRobert Griesemer
      +Rob Pike
      +Ken Thompson
      DeveloperGoogle Inc.
      Stable releaseversion 1.0.2[1] (14 June 2012; 2 months ago (2012-06-14))
      Typing disciplinestrong, static
      Major implementationsgc (8g, 6g, 5g), gccgo
      Influenced byC, Limbo, Modula, Newsqueak, Oberon, Pascal,[2] Python
      OSLinux, Mac OS X, FreeBSD, OpenBSD, MS Windows, Plan 9[3]
      LicenseBSD-style[4] + Patent grant[5]
      Usual filename extensions.go
      Websitegolang.org
      +

      Go is a compiled, garbage-collected, concurrent programming language developed by Google Inc.[6]

      +

      The initial design of Go was started in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson.[2] Go was officially announced in November 2009. In May 2010, Rob Pike publicly stated that Go was being used "for real stuff" at Google.[7] Go's "gc" compiler targets the Linux, Mac OS X, FreeBSD, OpenBSD, Plan 9, and Microsoft Windows operating systems and the i386, amd64, and ARM processor architectures.[8]

      + + + + +
      +
      +

      Contents

      +
      + +
      +

      [edit] Goals

      +

      Go aims to provide the efficiency of a statically typed compiled language with the ease of programming of a dynamic language.[9] Other goals include:

      +
        +
      • Safety: Type-safe and memory-safe.
      • +
      • Good support for concurrency and communication.
      • +
      • Efficient, latency-free garbage collection.
      • +
      • High-speed compilation.
      • +
      +

      [edit] Description

      +

      The syntax of Go is broadly similar to that of C: blocks of code are surrounded with curly braces; common control flow structures include for, switch, and if. Unlike C, line-ending semicolons are optional, variable declarations are written differently and are usually optional, type conversions must be made explicit, and new go and select control keywords have been introduced to support concurrent programming. New built-in types include maps, Unicode strings, array slices, and channels for inter-thread communication.

      +

      Go is designed for exceptionally fast compiling times, even on modest hardware.[10] The language requires garbage collection. Certain concurrency-related structural conventions of Go (channels and alternative channel inputs) are borrowed from Tony Hoare's CSP. Unlike previous concurrent programming languages such as occam or Limbo, Go does not provide any built-in notion of safe or verifiable concurrency.[11]

      +

      Of features found in C++ or Java, Go does not include type inheritance, generic programming, assertions, method overloading, or pointer arithmetic.[2] Of these, the Go authors express an openness to generic programming, explicitly argue against assertions and pointer arithmetic, while defending the choice to omit type inheritance as giving a more useful language, encouraging heavy use of interfaces instead.[2] Initially, the language did not include exception handling, but in March 2010 a mechanism known as panic/recover was implemented to handle exceptional errors while avoiding some of the problems the Go authors find with exceptions.[12][13]

      +

      [edit] Type system

      +

      Go allows a programmer to write functions that can operate on inputs of arbitrary type, provided that the type implements the functions defined by a given interface.

      +

      Unlike Java, the interfaces a type supports do not need to be specified at the point at which the type is defined, and Go interfaces do not participate in a type hierarchy. A Go interface is best described as a set of methods, each identified by a name and signature. A type is considered to implement an interface if all the required methods have been defined for that type. An interface can be declared to "embed" other interfaces, meaning the declared interface includes the methods defined in the other interfaces.[11]

      +

      Unlike Java, the in-memory representation of an object does not contain a pointer to a virtual method table. Instead a value of interface type is implemented as a pair of a pointer to the object, and a pointer to a dictionary containing implementations of the interface methods for that type.

      +

      Consider the following example:

      +
      +
      +
      +type Sequence []int
      + 
      +func (s Sequence) Len() int {
      +    return len(s)
      +}
      + 
      +type HasLength interface {
      +    Len() int
      +}
      + 
      +func Foo (o HasLength) {
      +    ...
      +}
      +
      +
      +

      These four definitions could have been placed in separate files, in different parts of the program. Notably, the programmer who defined the Sequence type did not need to declare that the type implemented HasLength, and the person who implemented the Len method for Sequence did not need to specify that this method was part of HasLength.

      +

      [edit] Name visibility

      +

      Visibility of structures, structure fields, variables, constants, methods, top-level types and functions outside their defining package is defined implicitly according to the capitalization of their identifier.[14]

      +

      [edit] Concurrency

      +

      Go provides goroutines, small lightweight threads; the name alludes to coroutines. Goroutines are created with the go statement from anonymous or named functions.

      +

      Goroutines are executed in parallel with other goroutines, including their caller. They do not necessarily run in separate threads, but a group of goroutines are multiplexed onto multiple threads — execution control is moved between them by blocking them when sending or receiving messages over channels.

      +

      [edit] Implementations

      +

      There are currently two Go compilers:

      +
        +
      • 6g/8g/5g (the compilers for AMD64, x86, and ARM respectively) with their supporting tools (collectively known as "gc") based on Ken's previous work on Plan 9's C toolchain.
      • +
      • gccgo, a GCC frontend written in C++,[15] and now officially supported as of version 4.6, albeit not part of the standard binary for gcc.[16]
      • +
      +

      Both compilers work on Unix-like systems, and a port to Microsoft Windows of the gc compiler and runtime have been integrated in the main distribution. Most of the standard libraries also work on Windows.

      +

      There is also an unmaintained "tiny" runtime environment that allows Go programs to run on bare hardware.[17]

      +

      [edit] Examples

      +

      [edit] Hello world

      +

      The following is a Hello world program in Go:

      +
      +
      +
      +package main
      + 
      +import "fmt"
      + 
      +func main() {
      +        fmt.Println("Hello, World")
      +}
      +
      +
      +

      Go's automatic semicolon insertion feature requires that opening braces not be placed on their own lines, and this is thus the preferred brace style; the examples shown comply with this style.[18]

      +

      [edit] Echo

      +

      Example illustrating how to write a program like the Unix echo command in Go:[19]

      +
      +
      +
      +package main
      + 
      +import (
      +        "os"
      +        "flag"  // command line option parser
      +)
      + 
      +var omitNewline = flag.Bool("n", false, "don't print final newline")
      + 
      +const (
      +        Space = " "
      +        Newline = "\n"
      +)
      + 
      +func main() {
      +        flag.Parse()   // Scans the arg list and sets up flags
      +        var s string
      +        for i := 0; i < flag.NArg(); i++ {
      +                if i > 0 {
      +                        s += Space
      +                }
      +                s += flag.Arg(i)
      +        }
      +        if !*omitNewline {
      +                s += Newline
      +        }
      +        os.Stdout.WriteString(s)
      +}
      +
      +
      +

      [edit] Reception

      +

      Go's initial release led to much discussion.

      +

      Michele Simionato wrote in an article for artima.com:[20]

      +
      +
      Here I just wanted to point out the design choices about interfaces and inheritance. Such ideas are not new and it is a shame that no popular language has followed such particular route in the design space. I hope Go will become popular; if not, I hope such ideas will finally enter in a popular language, we are already 10 or 20 years too late :-(
      +
      +

      Dave Astels at Engine Yard wrote:[21]

      +
      +
      Go is extremely easy to dive into. There are a minimal number of fundamental language concepts and the syntax is clean and designed to be clear and unambiguous. Go is still experimental and still a little rough around the edges.
      +
      +

      Ars Technica interviewed Rob Pike, one of the authors of Go, and asked why a new language was needed. He replied that:[22]

      +
      +
      It wasn't enough to just add features to existing programming languages, because sometimes you can get more in the long run by taking things away. They wanted to start from scratch and rethink everything. ... [But they did not want] to deviate too much from what developers already knew because they wanted to avoid alienating Go's target audience.
      +
      +

      Go was in 15th place on the TIOBE Programming Community Index of programming language popularity in its first year, 2009,[citation needed] surpassing established languages like Pascal. As of March 2012, it ranked 66th in the index.[23]

      +

      Bruce Eckel stated:[24]

      +
      +
      The complexity of C++ (even more complexity has been added in the new C++), and the resulting impact on productivity, is no longer justified. All the hoops that the C++ programmer had to jump through in order to use a C-compatible language make no sense anymore -- they're just a waste of time and effort. Now, Go makes much more sense for the class of problems that C++ was originally intended to solve.
      +
      +

      [edit] Naming dispute

      +

      On the day of the general release of the language, Francis McCabe, developer of the Go! programming language (note the exclamation point), requested a name change of Google's language to prevent confusion with his language.[25] The issue was closed by a Google developer on 12 October 2010 with the custom status "Unfortunate", with a comment that "there are many computing products and services named Go. In the 11 months since our release, there has been minimal confusion of the two languages."[26]

      +

      [edit] See also

      + +

      [edit] References

      + +
      +
        +
      1. ^ "golang-announce: go1.0.2 released". https://groups.google.com/forum/#!msg/golang-announce/9-f_fnXNDzw/MiM3tk0iyjYJ. Retrieved 14 June 2012. 
      2. +
      3. ^ a b c d "Language Design FAQ". golang.org. 16 January 2010. http://golang.org/doc/go_faq.html. Retrieved 27 February 2010. 
      4. +
      5. ^ "Go Porting Efforts". Go Language Resources. cat-v. 12 January 2010. http://go-lang.cat-v.org/os-ports. Retrieved 18 January 2010. 
      6. +
      7. ^ "Text file LICENSE". http://golang.org/LICENSE. Retrieved 27 January 2011. 
      8. +
      9. ^ "Additional IP Rights Grant". http://code.google.com/p/go/source/browse/PATENTS. Retrieved 26 July 2012. 
      10. +
      11. ^ Kincaid, Jason (10 November 2009). "Google’s Go: A New Programming Language That’s Python Meets C++". TechCrunch. http://www.techcrunch.com/2009/11/10/google-go-language/. Retrieved 18 January 2010. 
      12. +
      13. ^ Metz, Cade (20 May 2010). "Google programming Frankenstein is a Go". The Register. http://www.theregister.co.uk/2010/05/20/go_in_production_at_google/. 
      14. +
      15. ^ "Installing Go". golang.org. The Go Authors. 11 June 2010. http://golang.org/doc/install.html#tmp_33. Retrieved 11 June 2010. 
      16. +
      17. ^ Pike, Rob. "The Go Programming Language". YouTube. http://www.youtube.com/watch?v=rKnDgT73v8s&feature=related. Retrieved 1 Jul 2011. 
      18. +
      19. ^ Rob Pike (10 November 2009) (flv). The Go Programming Language (Tech talk). Google. Event occurs at 8:53. http://www.youtube.com/watch?v=rKnDgT73v8s#t=8m53. 
      20. +
      21. ^ a b "The Go Memory Model". Google. http://golang.org/doc/go_mem.html. Retrieved 5 January 2011. 
      22. +
      23. ^ Release notes, 30 March 2010
      24. +
      25. ^ "Proposal for an exception-like mechanism". golang-nuts. 25 March 2010. http://groups.google.com/group/golang-nuts/browse_thread/thread/1ce5cd050bb973e4. Retrieved 25 March 2010. 
      26. +
      27. ^ "A Tutorial for the Go Programming Language". The Go Programming Language. Google. http://golang.org/doc/go_tutorial.html. Retrieved 10 March 2010. "In Go the rule about visibility of information is simple: if a name (of a top-level type, function, method, constant or variable, or of a structure field or method) is capitalized, users of the package may see it. Otherwise, the name and hence the thing being named is visible only inside the package in which it is declared." 
      28. +
      29. ^ "FAQ: Implementation". golang.org. 16 January 2010. http://golang.org/doc/go_faq.html#Implementation. Retrieved 18 January 2010. 
      30. +
      31. ^ "Installing GCC: Configuration". http://gcc.gnu.org/install/configure.html. Retrieved 3 December 2011. "Ada, Go and Objective-C++ are not default languages" 
      32. +
      33. ^ Gerrand, Andrew (1 February 2011). "release.2011-02-01". golang-nuts. Google. http://groups.google.com/group/golang-nuts/browse_thread/thread/b877e34723b543a7. Retrieved 5 February 2011. 
      34. +
      35. ^ "A Tutorial for the Go Programming Language". The Go Programming Language. Google. http://golang.org/doc/go_tutorial.html. Retrieved 10 March 2010. "The one surprise is that it's important to put the opening brace of a construct such as an if statement on the same line as the if; however, if you don't, there are situations that may not compile or may give the wrong result. The language forces the brace style to some extent." 
      36. +
      37. ^ "A Tutorial for the Go Programming Language". golang.org. 16 January 2010. http://golang.org/doc/go_tutorial.html. Retrieved 18 January 2010. 
      38. +
      39. ^ Simionato, Michele (15 November 2009). "Interfaces vs Inheritance (or, watch out for Go!)". artima. http://www.artima.com/weblogs/viewpost.jsp?thread=274019. Retrieved 15 November 2009. 
      40. +
      41. ^ Astels, Dave (9 November 2009). "Ready, Set, Go!". engineyard. http://www.engineyard.com/blog/2009/ready-set-go/. Retrieved 9 November 2009. 
      42. +
      43. ^ Paul, Ryan (10 November 2009). "Go: new open source programming language from Google". Ars Technica. http://arstechnica.com/open-source/news/2009/11/go-new-open-source-programming-language-from-google.ars. Retrieved 13 November 2009. 
      44. +
      45. ^ "TIOBE Programming Community Index for March 2012". TIOBE Software. March 2012. http://es.scribd.com/doc/89569304/TIOBE-Programming-Community-Index-for-March-2012. Retrieved 28 April 2012. 
      46. +
      47. ^ Bruce Eckel (27). "Calling Go from Python via JSON-RPC". http://www.artima.com/weblogs/viewpost.jsp?thread=333589. Retrieved 29 August 2011. 
      48. +
      49. ^ Claburn, Thomas (11 November 2009). "Google 'Go' Name Brings Accusations Of Evil'". InformationWeek. http://www.informationweek.com/news/software/web_services/showArticle.jhtml?articleID=221601351. Retrieved 18 January 2010. 
      50. +
      51. ^ "Issue 9 - go - I have already used the name for *MY* programming language". Google Code. Google Inc.. http://code.google.com/p/go/issues/detail?id=9. Retrieved 12 October 2010. 
      52. +
      +
      +

      [edit] Further reading

      + +

      [edit] External links

      + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + + +
      + +
      + + +
      + + +
      +
      Personal tools
      + +
      + + +
      + + +
      +
      Namespaces
      + +
      + + + + +
      +

      +

      +
      Variants
      + +
      + + +
      +
      + + +
      +
      Views
      + +
      + + + + +
      +
      Actions
      + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/metalreview.html b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/metalreview.html new file mode 100644 index 000000000..fc4a38fcd --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/metalreview.html @@ -0,0 +1,413 @@ + + + + + + + + + + + + + + Metal Reviews, News, Blogs, Interviews and Community | Metal Review + + + + + + + + + + +
      +
      + + + +
      + + + + +
      +
      + + + + +
      +
      +
      + +
      +
      +
      +
      + + + + + +
      +

      Reviews

      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
        + +
      • +

        + Serpentine Path - Serpentine Path + Serpentine Path
        + Serpentine Path
        + +

        +
      • + +
      • +

        + Hunter + Hunter's Ground
        + No God But the Wild
        + +

        +
      • + +
      • +

        + Blut Aus Nord - 777 - Cosmosophy + Blut Aus Nord
        + 777 - Cosmosophy
        + Black +

        +
      • + +
      • +

        + Ufomammut - Oro: Opus Alter + Ufomammut
        + Oro: Opus Alter
        + Doom +

        +
      • + +
      • +

        + Resurgency - False Enlightenment + Resurgency
        + False Enlightenment
        + Death +

        +
      • + +
      • +

        + Morgoth - Cursed to Live + Morgoth
        + Cursed to Live
        + DeathLive +

        +
      • + +
      • +

        + Krallice - Years Past Matter + Krallice
        + Years Past Matter
        + Black +

        +
      • + +
      • +

        + Murder Construct - Results + Murder Construct
        + Results
        + Grindcore +

        +
      • + +
      • +

        + Grave - Endless Procession of Souls + Grave
        + Endless Procession of Souls
        + Death +

        +
      • + +
      • +

        + Master - The New Elite + Master
        + The New Elite
        + Death +

        +
      • + +
      +
      +
      +
      +
      +
      +
      + Serpentine Path - Serpentine PathHunter's Ground - No God But the WildBlut Aus Nord - 777 - CosmosophyUfomammut - Oro: Opus AlterResurgency - False EnlightenmentMorgoth - Cursed to LiveKrallice - Years Past MatterMurder Construct - ResultsGrave - Endless Procession of SoulsMaster - The New Elite +
      +
      +
      +
      + + + + + + + +
      +
      +
      +
      +
      + + + + +
      Goto Next Group
      +
      Goto Previous Group
      + + + + + +
      + +
      + + + + + + + +
      +

      Lashes

      +
      NEW Katatonia - Dead End Kings
      45 minutes ago by Chaosjunkie
      +
      Katatonia - Dead End Kings
      1 hour ago by Harry Dick Rotten
      +
      Resurgency - False Enlightenment
      3 hours ago by Anonymous
      +
      Witchcraft - The Alchemist
      5 hours ago by Luke_22
      +
      Katatonia - Dead End Kings
      9 hours ago by chaosjunkie
      +
      Katatonia - Dead End Kings
      10 hours ago by Compeller
      +
      Manetheren - Time
      10 hours ago by xpmule
      +
      Ufomammut - Oro: Opus Alter
      16 hours ago by Anonymous
      +
      Ufomammut - Oro: Opus Alter
      17 hours ago by Harry Dick Rotten
      +
      Katatonia - Dead End Kings
      yesterday by Chaosjunkie
      +
      Katatonia - Dead End Kings
      yesterday by Anonymous
      +
      Katatonia - Dead End Kings
      yesterday by Anonymous
      +
      Katatonia - Dead End Kings
      yesterday by Anonymous
      +
      Katatonia - Dead End Kings
      yesterday by frantic
      +
      Blut Aus Nord - 777 - Cosmosophy
      yesterday by Dimensional Bleedthrough
      + +
      + +
      +
      +
      + + + +
      +
      + + + + + + + + + + + diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page.html b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page.html new file mode 100644 index 000000000..92ec74eef --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page.html @@ -0,0 +1,102 @@ + + + + + + + Provok.in + + + + + + + + + +
      +
      +
      +   +
      +
      +
      +
      +
      +
      +

      + Provok.in +

      +

      + Prove your point. +

      +
      +
      +
      +
      + Beta Version. Things may change. Or disappear. Or fail miserably. If it's the latter, please file an issue. +
      +
      + +
      + Welcome, {{getUserName()}} ( logout ) +
      +
      +
      +
      +
      +   +
      +
      +
      +
      +   +
      +
      +
      +
      +
      +
      + × +

      + {{ title }} +

      +

      + {{ message }} +

      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +   +
      +
      +
      +
      +   +
      +
      + +
      +
      +   +
      +
      +
      + + \ No newline at end of file diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page2.html b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page2.html new file mode 100644 index 000000000..4c2f92f4b --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page2.html @@ -0,0 +1,24 @@ + + + + Tests for siblings + + +
      +
      +
      +
      +
      +
      +
      +
      + + + diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page3.html b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page3.html new file mode 100644 index 000000000..17e86241f --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/testdata/page3.html @@ -0,0 +1,24 @@ + + + + Tests for siblings + + +
      +
      hello
      +
      +
      +
      +
      +
      +
      + + + diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/traversal.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/traversal.go new file mode 100644 index 000000000..5fa5315ac --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/traversal.go @@ -0,0 +1,698 @@ +package goquery + +import "golang.org/x/net/html" + +type siblingType int + +// Sibling type, used internally when iterating over children at the same +// level (siblings) to specify which nodes are requested. +const ( + siblingPrevUntil siblingType = iota - 3 + siblingPrevAll + siblingPrev + siblingAll + siblingNext + siblingNextAll + siblingNextUntil + siblingAllIncludingNonElements +) + +// Find gets the descendants of each element in the current set of matched +// elements, filtered by a selector. It returns a new Selection object +// containing these matched elements. +func (s *Selection) Find(selector string) *Selection { + return pushStack(s, findWithMatcher(s.Nodes, compileMatcher(selector))) +} + +// FindMatcher gets the descendants of each element in the current set of matched +// elements, filtered by the matcher. It returns a new Selection object +// containing these matched elements. +func (s *Selection) FindMatcher(m Matcher) *Selection { + return pushStack(s, findWithMatcher(s.Nodes, m)) +} + +// FindSelection gets the descendants of each element in the current +// Selection, filtered by a Selection. It returns a new Selection object +// containing these matched elements. +func (s *Selection) FindSelection(sel *Selection) *Selection { + if sel == nil { + return pushStack(s, nil) + } + return s.FindNodes(sel.Nodes...) +} + +// FindNodes gets the descendants of each element in the current +// Selection, filtered by some nodes. It returns a new Selection object +// containing these matched elements. +func (s *Selection) FindNodes(nodes ...*html.Node) *Selection { + return pushStack(s, mapNodes(nodes, func(i int, n *html.Node) []*html.Node { + if sliceContains(s.Nodes, n) { + return []*html.Node{n} + } + return nil + })) +} + +// Contents gets the children of each element in the Selection, +// including text and comment nodes. It returns a new Selection object +// containing these elements. +func (s *Selection) Contents() *Selection { + return pushStack(s, getChildrenNodes(s.Nodes, siblingAllIncludingNonElements)) +} + +// ContentsFiltered gets the children of each element in the Selection, +// filtered by the specified selector. It returns a new Selection +// object containing these elements. Since selectors only act on Element nodes, +// this function is an alias to ChildrenFiltered unless the selector is empty, +// in which case it is an alias to Contents. +func (s *Selection) ContentsFiltered(selector string) *Selection { + if selector != "" { + return s.ChildrenFiltered(selector) + } + return s.Contents() +} + +// ContentsMatcher gets the children of each element in the Selection, +// filtered by the specified matcher. It returns a new Selection +// object containing these elements. Since matchers only act on Element nodes, +// this function is an alias to ChildrenMatcher. +func (s *Selection) ContentsMatcher(m Matcher) *Selection { + return s.ChildrenMatcher(m) +} + +// Children gets the child elements of each element in the Selection. +// It returns a new Selection object containing these elements. +func (s *Selection) Children() *Selection { + return pushStack(s, getChildrenNodes(s.Nodes, siblingAll)) +} + +// ChildrenFiltered gets the child elements of each element in the Selection, +// filtered by the specified selector. It returns a new +// Selection object containing these elements. +func (s *Selection) ChildrenFiltered(selector string) *Selection { + return filterAndPush(s, getChildrenNodes(s.Nodes, siblingAll), compileMatcher(selector)) +} + +// ChildrenMatcher gets the child elements of each element in the Selection, +// filtered by the specified matcher. It returns a new +// Selection object containing these elements. +func (s *Selection) ChildrenMatcher(m Matcher) *Selection { + return filterAndPush(s, getChildrenNodes(s.Nodes, siblingAll), m) +} + +// Parent gets the parent of each element in the Selection. It returns a +// new Selection object containing the matched elements. +func (s *Selection) Parent() *Selection { + return pushStack(s, getParentNodes(s.Nodes)) +} + +// ParentFiltered gets the parent of each element in the Selection filtered by a +// selector. It returns a new Selection object containing the matched elements. +func (s *Selection) ParentFiltered(selector string) *Selection { + return filterAndPush(s, getParentNodes(s.Nodes), compileMatcher(selector)) +} + +// ParentMatcher gets the parent of each element in the Selection filtered by a +// matcher. It returns a new Selection object containing the matched elements. +func (s *Selection) ParentMatcher(m Matcher) *Selection { + return filterAndPush(s, getParentNodes(s.Nodes), m) +} + +// Closest gets the first element that matches the selector by testing the +// element itself and traversing up through its ancestors in the DOM tree. +func (s *Selection) Closest(selector string) *Selection { + cs := compileMatcher(selector) + return s.ClosestMatcher(cs) +} + +// ClosestMatcher gets the first element that matches the matcher by testing the +// element itself and traversing up through its ancestors in the DOM tree. +func (s *Selection) ClosestMatcher(m Matcher) *Selection { + return pushStack(s, mapNodes(s.Nodes, func(i int, n *html.Node) []*html.Node { + // For each node in the selection, test the node itself, then each parent + // until a match is found. + for ; n != nil; n = n.Parent { + if m.Match(n) { + return []*html.Node{n} + } + } + return nil + })) +} + +// ClosestNodes gets the first element that matches one of the nodes by testing the +// element itself and traversing up through its ancestors in the DOM tree. +func (s *Selection) ClosestNodes(nodes ...*html.Node) *Selection { + set := make(map[*html.Node]bool) + for _, n := range nodes { + set[n] = true + } + return pushStack(s, mapNodes(s.Nodes, func(i int, n *html.Node) []*html.Node { + // For each node in the selection, test the node itself, then each parent + // until a match is found. + for ; n != nil; n = n.Parent { + if set[n] { + return []*html.Node{n} + } + } + return nil + })) +} + +// ClosestSelection gets the first element that matches one of the nodes in the +// Selection by testing the element itself and traversing up through its ancestors +// in the DOM tree. +func (s *Selection) ClosestSelection(sel *Selection) *Selection { + if sel == nil { + return pushStack(s, nil) + } + return s.ClosestNodes(sel.Nodes...) +} + +// Parents gets the ancestors of each element in the current Selection. It +// returns a new Selection object with the matched elements. +func (s *Selection) Parents() *Selection { + return pushStack(s, getParentsNodes(s.Nodes, nil, nil)) +} + +// ParentsFiltered gets the ancestors of each element in the current +// Selection. It returns a new Selection object with the matched elements. +func (s *Selection) ParentsFiltered(selector string) *Selection { + return filterAndPush(s, getParentsNodes(s.Nodes, nil, nil), compileMatcher(selector)) +} + +// ParentsMatcher gets the ancestors of each element in the current +// Selection. It returns a new Selection object with the matched elements. +func (s *Selection) ParentsMatcher(m Matcher) *Selection { + return filterAndPush(s, getParentsNodes(s.Nodes, nil, nil), m) +} + +// ParentsUntil gets the ancestors of each element in the Selection, up to but +// not including the element matched by the selector. It returns a new Selection +// object containing the matched elements. +func (s *Selection) ParentsUntil(selector string) *Selection { + return pushStack(s, getParentsNodes(s.Nodes, compileMatcher(selector), nil)) +} + +// ParentsUntilMatcher gets the ancestors of each element in the Selection, up to but +// not including the element matched by the matcher. It returns a new Selection +// object containing the matched elements. +func (s *Selection) ParentsUntilMatcher(m Matcher) *Selection { + return pushStack(s, getParentsNodes(s.Nodes, m, nil)) +} + +// ParentsUntilSelection gets the ancestors of each element in the Selection, +// up to but not including the elements in the specified Selection. It returns a +// new Selection object containing the matched elements. +func (s *Selection) ParentsUntilSelection(sel *Selection) *Selection { + if sel == nil { + return s.Parents() + } + return s.ParentsUntilNodes(sel.Nodes...) +} + +// ParentsUntilNodes gets the ancestors of each element in the Selection, +// up to but not including the specified nodes. It returns a +// new Selection object containing the matched elements. +func (s *Selection) ParentsUntilNodes(nodes ...*html.Node) *Selection { + return pushStack(s, getParentsNodes(s.Nodes, nil, nodes)) +} + +// ParentsFilteredUntil is like ParentsUntil, with the option to filter the +// results based on a selector string. It returns a new Selection +// object containing the matched elements. +func (s *Selection) ParentsFilteredUntil(filterSelector, untilSelector string) *Selection { + return filterAndPush(s, getParentsNodes(s.Nodes, compileMatcher(untilSelector), nil), compileMatcher(filterSelector)) +} + +// ParentsFilteredUntilMatcher is like ParentsUntilMatcher, with the option to filter the +// results based on a matcher. It returns a new Selection object containing the matched elements. +func (s *Selection) ParentsFilteredUntilMatcher(filter, until Matcher) *Selection { + return filterAndPush(s, getParentsNodes(s.Nodes, until, nil), filter) +} + +// ParentsFilteredUntilSelection is like ParentsUntilSelection, with the +// option to filter the results based on a selector string. It returns a new +// Selection object containing the matched elements. +func (s *Selection) ParentsFilteredUntilSelection(filterSelector string, sel *Selection) *Selection { + return s.ParentsMatcherUntilSelection(compileMatcher(filterSelector), sel) +} + +// ParentsMatcherUntilSelection is like ParentsUntilSelection, with the +// option to filter the results based on a matcher. It returns a new +// Selection object containing the matched elements. +func (s *Selection) ParentsMatcherUntilSelection(filter Matcher, sel *Selection) *Selection { + if sel == nil { + return s.ParentsMatcher(filter) + } + return s.ParentsMatcherUntilNodes(filter, sel.Nodes...) +} + +// ParentsFilteredUntilNodes is like ParentsUntilNodes, with the +// option to filter the results based on a selector string. It returns a new +// Selection object containing the matched elements. +func (s *Selection) ParentsFilteredUntilNodes(filterSelector string, nodes ...*html.Node) *Selection { + return filterAndPush(s, getParentsNodes(s.Nodes, nil, nodes), compileMatcher(filterSelector)) +} + +// ParentsMatcherUntilNodes is like ParentsUntilNodes, with the +// option to filter the results based on a matcher. It returns a new +// Selection object containing the matched elements. +func (s *Selection) ParentsMatcherUntilNodes(filter Matcher, nodes ...*html.Node) *Selection { + return filterAndPush(s, getParentsNodes(s.Nodes, nil, nodes), filter) +} + +// Siblings gets the siblings of each element in the Selection. It returns +// a new Selection object containing the matched elements. +func (s *Selection) Siblings() *Selection { + return pushStack(s, getSiblingNodes(s.Nodes, siblingAll, nil, nil)) +} + +// SiblingsFiltered gets the siblings of each element in the Selection +// filtered by a selector. It returns a new Selection object containing the +// matched elements. +func (s *Selection) SiblingsFiltered(selector string) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingAll, nil, nil), compileMatcher(selector)) +} + +// SiblingsMatcher gets the siblings of each element in the Selection +// filtered by a matcher. It returns a new Selection object containing the +// matched elements. +func (s *Selection) SiblingsMatcher(m Matcher) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingAll, nil, nil), m) +} + +// Next gets the immediately following sibling of each element in the +// Selection. It returns a new Selection object containing the matched elements. +func (s *Selection) Next() *Selection { + return pushStack(s, getSiblingNodes(s.Nodes, siblingNext, nil, nil)) +} + +// NextFiltered gets the immediately following sibling of each element in the +// Selection filtered by a selector. It returns a new Selection object +// containing the matched elements. +func (s *Selection) NextFiltered(selector string) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNext, nil, nil), compileMatcher(selector)) +} + +// NextMatcher gets the immediately following sibling of each element in the +// Selection filtered by a matcher. It returns a new Selection object +// containing the matched elements. +func (s *Selection) NextMatcher(m Matcher) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNext, nil, nil), m) +} + +// NextAll gets all the following siblings of each element in the +// Selection. It returns a new Selection object containing the matched elements. +func (s *Selection) NextAll() *Selection { + return pushStack(s, getSiblingNodes(s.Nodes, siblingNextAll, nil, nil)) +} + +// NextAllFiltered gets all the following siblings of each element in the +// Selection filtered by a selector. It returns a new Selection object +// containing the matched elements. +func (s *Selection) NextAllFiltered(selector string) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextAll, nil, nil), compileMatcher(selector)) +} + +// NextAllMatcher gets all the following siblings of each element in the +// Selection filtered by a matcher. It returns a new Selection object +// containing the matched elements. +func (s *Selection) NextAllMatcher(m Matcher) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextAll, nil, nil), m) +} + +// Prev gets the immediately preceding sibling of each element in the +// Selection. It returns a new Selection object containing the matched elements. +func (s *Selection) Prev() *Selection { + return pushStack(s, getSiblingNodes(s.Nodes, siblingPrev, nil, nil)) +} + +// PrevFiltered gets the immediately preceding sibling of each element in the +// Selection filtered by a selector. It returns a new Selection object +// containing the matched elements. +func (s *Selection) PrevFiltered(selector string) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrev, nil, nil), compileMatcher(selector)) +} + +// PrevMatcher gets the immediately preceding sibling of each element in the +// Selection filtered by a matcher. It returns a new Selection object +// containing the matched elements. +func (s *Selection) PrevMatcher(m Matcher) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrev, nil, nil), m) +} + +// PrevAll gets all the preceding siblings of each element in the +// Selection. It returns a new Selection object containing the matched elements. +func (s *Selection) PrevAll() *Selection { + return pushStack(s, getSiblingNodes(s.Nodes, siblingPrevAll, nil, nil)) +} + +// PrevAllFiltered gets all the preceding siblings of each element in the +// Selection filtered by a selector. It returns a new Selection object +// containing the matched elements. +func (s *Selection) PrevAllFiltered(selector string) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevAll, nil, nil), compileMatcher(selector)) +} + +// PrevAllMatcher gets all the preceding siblings of each element in the +// Selection filtered by a matcher. It returns a new Selection object +// containing the matched elements. +func (s *Selection) PrevAllMatcher(m Matcher) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevAll, nil, nil), m) +} + +// NextUntil gets all following siblings of each element up to but not +// including the element matched by the selector. It returns a new Selection +// object containing the matched elements. +func (s *Selection) NextUntil(selector string) *Selection { + return pushStack(s, getSiblingNodes(s.Nodes, siblingNextUntil, + compileMatcher(selector), nil)) +} + +// NextUntilMatcher gets all following siblings of each element up to but not +// including the element matched by the matcher. It returns a new Selection +// object containing the matched elements. +func (s *Selection) NextUntilMatcher(m Matcher) *Selection { + return pushStack(s, getSiblingNodes(s.Nodes, siblingNextUntil, + m, nil)) +} + +// NextUntilSelection gets all following siblings of each element up to but not +// including the element matched by the Selection. It returns a new Selection +// object containing the matched elements. +func (s *Selection) NextUntilSelection(sel *Selection) *Selection { + if sel == nil { + return s.NextAll() + } + return s.NextUntilNodes(sel.Nodes...) +} + +// NextUntilNodes gets all following siblings of each element up to but not +// including the element matched by the nodes. It returns a new Selection +// object containing the matched elements. +func (s *Selection) NextUntilNodes(nodes ...*html.Node) *Selection { + return pushStack(s, getSiblingNodes(s.Nodes, siblingNextUntil, + nil, nodes)) +} + +// PrevUntil gets all preceding siblings of each element up to but not +// including the element matched by the selector. It returns a new Selection +// object containing the matched elements. +func (s *Selection) PrevUntil(selector string) *Selection { + return pushStack(s, getSiblingNodes(s.Nodes, siblingPrevUntil, + compileMatcher(selector), nil)) +} + +// PrevUntilMatcher gets all preceding siblings of each element up to but not +// including the element matched by the matcher. It returns a new Selection +// object containing the matched elements. +func (s *Selection) PrevUntilMatcher(m Matcher) *Selection { + return pushStack(s, getSiblingNodes(s.Nodes, siblingPrevUntil, + m, nil)) +} + +// PrevUntilSelection gets all preceding siblings of each element up to but not +// including the element matched by the Selection. It returns a new Selection +// object containing the matched elements. +func (s *Selection) PrevUntilSelection(sel *Selection) *Selection { + if sel == nil { + return s.PrevAll() + } + return s.PrevUntilNodes(sel.Nodes...) +} + +// PrevUntilNodes gets all preceding siblings of each element up to but not +// including the element matched by the nodes. It returns a new Selection +// object containing the matched elements. +func (s *Selection) PrevUntilNodes(nodes ...*html.Node) *Selection { + return pushStack(s, getSiblingNodes(s.Nodes, siblingPrevUntil, + nil, nodes)) +} + +// NextFilteredUntil is like NextUntil, with the option to filter +// the results based on a selector string. +// It returns a new Selection object containing the matched elements. +func (s *Selection) NextFilteredUntil(filterSelector, untilSelector string) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextUntil, + compileMatcher(untilSelector), nil), compileMatcher(filterSelector)) +} + +// NextFilteredUntilMatcher is like NextUntilMatcher, with the option to filter +// the results based on a matcher. +// It returns a new Selection object containing the matched elements. +func (s *Selection) NextFilteredUntilMatcher(filter, until Matcher) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextUntil, + until, nil), filter) +} + +// NextFilteredUntilSelection is like NextUntilSelection, with the +// option to filter the results based on a selector string. It returns a new +// Selection object containing the matched elements. +func (s *Selection) NextFilteredUntilSelection(filterSelector string, sel *Selection) *Selection { + return s.NextMatcherUntilSelection(compileMatcher(filterSelector), sel) +} + +// NextMatcherUntilSelection is like NextUntilSelection, with the +// option to filter the results based on a matcher. It returns a new +// Selection object containing the matched elements. +func (s *Selection) NextMatcherUntilSelection(filter Matcher, sel *Selection) *Selection { + if sel == nil { + return s.NextMatcher(filter) + } + return s.NextMatcherUntilNodes(filter, sel.Nodes...) +} + +// NextFilteredUntilNodes is like NextUntilNodes, with the +// option to filter the results based on a selector string. It returns a new +// Selection object containing the matched elements. +func (s *Selection) NextFilteredUntilNodes(filterSelector string, nodes ...*html.Node) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextUntil, + nil, nodes), compileMatcher(filterSelector)) +} + +// NextMatcherUntilNodes is like NextUntilNodes, with the +// option to filter the results based on a matcher. It returns a new +// Selection object containing the matched elements. +func (s *Selection) NextMatcherUntilNodes(filter Matcher, nodes ...*html.Node) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextUntil, + nil, nodes), filter) +} + +// PrevFilteredUntil is like PrevUntil, with the option to filter +// the results based on a selector string. +// It returns a new Selection object containing the matched elements. +func (s *Selection) PrevFilteredUntil(filterSelector, untilSelector string) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevUntil, + compileMatcher(untilSelector), nil), compileMatcher(filterSelector)) +} + +// PrevFilteredUntilMatcher is like PrevUntilMatcher, with the option to filter +// the results based on a matcher. +// It returns a new Selection object containing the matched elements. +func (s *Selection) PrevFilteredUntilMatcher(filter, until Matcher) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevUntil, + until, nil), filter) +} + +// PrevFilteredUntilSelection is like PrevUntilSelection, with the +// option to filter the results based on a selector string. It returns a new +// Selection object containing the matched elements. +func (s *Selection) PrevFilteredUntilSelection(filterSelector string, sel *Selection) *Selection { + return s.PrevMatcherUntilSelection(compileMatcher(filterSelector), sel) +} + +// PrevMatcherUntilSelection is like PrevUntilSelection, with the +// option to filter the results based on a matcher. It returns a new +// Selection object containing the matched elements. +func (s *Selection) PrevMatcherUntilSelection(filter Matcher, sel *Selection) *Selection { + if sel == nil { + return s.PrevMatcher(filter) + } + return s.PrevMatcherUntilNodes(filter, sel.Nodes...) +} + +// PrevFilteredUntilNodes is like PrevUntilNodes, with the +// option to filter the results based on a selector string. It returns a new +// Selection object containing the matched elements. +func (s *Selection) PrevFilteredUntilNodes(filterSelector string, nodes ...*html.Node) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevUntil, + nil, nodes), compileMatcher(filterSelector)) +} + +// PrevMatcherUntilNodes is like PrevUntilNodes, with the +// option to filter the results based on a matcher. It returns a new +// Selection object containing the matched elements. +func (s *Selection) PrevMatcherUntilNodes(filter Matcher, nodes ...*html.Node) *Selection { + return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevUntil, + nil, nodes), filter) +} + +// Filter and push filters the nodes based on a matcher, and pushes the results +// on the stack, with the srcSel as previous selection. +func filterAndPush(srcSel *Selection, nodes []*html.Node, m Matcher) *Selection { + // Create a temporary Selection with the specified nodes to filter using winnow + sel := &Selection{nodes, srcSel.document, nil} + // Filter based on matcher and push on stack + return pushStack(srcSel, winnow(sel, m, true)) +} + +// Internal implementation of Find that return raw nodes. +func findWithMatcher(nodes []*html.Node, m Matcher) []*html.Node { + // Map nodes to find the matches within the children of each node + return mapNodes(nodes, func(i int, n *html.Node) (result []*html.Node) { + // Go down one level, becausejQuery's Find selects only within descendants + for c := n.FirstChild; c != nil; c = c.NextSibling { + if c.Type == html.ElementNode { + result = append(result, m.MatchAll(c)...) + } + } + return + }) +} + +// Internal implementation to get all parent nodes, stopping at the specified +// node (or nil if no stop). +func getParentsNodes(nodes []*html.Node, stopm Matcher, stopNodes []*html.Node) []*html.Node { + return mapNodes(nodes, func(i int, n *html.Node) (result []*html.Node) { + for p := n.Parent; p != nil; p = p.Parent { + sel := newSingleSelection(p, nil) + if stopm != nil { + if sel.IsMatcher(stopm) { + break + } + } else if len(stopNodes) > 0 { + if sel.IsNodes(stopNodes...) { + break + } + } + if p.Type == html.ElementNode { + result = append(result, p) + } + } + return + }) +} + +// Internal implementation of sibling nodes that return a raw slice of matches. +func getSiblingNodes(nodes []*html.Node, st siblingType, untilm Matcher, untilNodes []*html.Node) []*html.Node { + var f func(*html.Node) bool + + // If the requested siblings are ...Until, create the test function to + // determine if the until condition is reached (returns true if it is) + if st == siblingNextUntil || st == siblingPrevUntil { + f = func(n *html.Node) bool { + if untilm != nil { + // Matcher-based condition + sel := newSingleSelection(n, nil) + return sel.IsMatcher(untilm) + } else if len(untilNodes) > 0 { + // Nodes-based condition + sel := newSingleSelection(n, nil) + return sel.IsNodes(untilNodes...) + } + return false + } + } + + return mapNodes(nodes, func(i int, n *html.Node) []*html.Node { + return getChildrenWithSiblingType(n.Parent, st, n, f) + }) +} + +// Gets the children nodes of each node in the specified slice of nodes, +// based on the sibling type request. +func getChildrenNodes(nodes []*html.Node, st siblingType) []*html.Node { + return mapNodes(nodes, func(i int, n *html.Node) []*html.Node { + return getChildrenWithSiblingType(n, st, nil, nil) + }) +} + +// Gets the children of the specified parent, based on the requested sibling +// type, skipping a specified node if required. +func getChildrenWithSiblingType(parent *html.Node, st siblingType, skipNode *html.Node, + untilFunc func(*html.Node) bool) (result []*html.Node) { + + // Create the iterator function + var iter = func(cur *html.Node) (ret *html.Node) { + // Based on the sibling type requested, iterate the right way + for { + switch st { + case siblingAll, siblingAllIncludingNonElements: + if cur == nil { + // First iteration, start with first child of parent + // Skip node if required + if ret = parent.FirstChild; ret == skipNode && skipNode != nil { + ret = skipNode.NextSibling + } + } else { + // Skip node if required + if ret = cur.NextSibling; ret == skipNode && skipNode != nil { + ret = skipNode.NextSibling + } + } + case siblingPrev, siblingPrevAll, siblingPrevUntil: + if cur == nil { + // Start with previous sibling of the skip node + ret = skipNode.PrevSibling + } else { + ret = cur.PrevSibling + } + case siblingNext, siblingNextAll, siblingNextUntil: + if cur == nil { + // Start with next sibling of the skip node + ret = skipNode.NextSibling + } else { + ret = cur.NextSibling + } + default: + panic("Invalid sibling type.") + } + if ret == nil || ret.Type == html.ElementNode || st == siblingAllIncludingNonElements { + return + } + // Not a valid node, try again from this one + cur = ret + } + } + + for c := iter(nil); c != nil; c = iter(c) { + // If this is an ...Until case, test before append (returns true + // if the until condition is reached) + if st == siblingNextUntil || st == siblingPrevUntil { + if untilFunc(c) { + return + } + } + result = append(result, c) + if st == siblingNext || st == siblingPrev { + // Only one node was requested (immediate next or previous), so exit + return + } + } + return +} + +// Internal implementation of parent nodes that return a raw slice of Nodes. +func getParentNodes(nodes []*html.Node) []*html.Node { + return mapNodes(nodes, func(i int, n *html.Node) []*html.Node { + if n.Parent != nil && n.Parent.Type == html.ElementNode { + return []*html.Node{n.Parent} + } + return nil + }) +} + +// Internal map function used by many traversing methods. Takes the source nodes +// to iterate on and the mapping function that returns an array of nodes. +// Returns an array of nodes mapped by calling the callback function once for +// each node in the source nodes. +func mapNodes(nodes []*html.Node, f func(int, *html.Node) []*html.Node) (result []*html.Node) { + set := make(map[*html.Node]bool) + for i, n := range nodes { + if vals := f(i, n); len(vals) > 0 { + result = appendWithoutDuplicates(result, vals, set) + } + } + return result +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/traversal_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/traversal_test.go new file mode 100644 index 000000000..04383a413 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/traversal_test.go @@ -0,0 +1,793 @@ +package goquery + +import ( + "strings" + "testing" +) + +func TestFind(t *testing.T) { + sel := Doc().Find("div.row-fluid") + assertLength(t, sel.Nodes, 9) +} + +func TestFindRollback(t *testing.T) { + sel := Doc().Find("div.row-fluid") + sel2 := sel.Find("a").End() + assertEqual(t, sel, sel2) +} + +func TestFindNotSelf(t *testing.T) { + sel := Doc().Find("h1").Find("h1") + assertLength(t, sel.Nodes, 0) +} + +func TestFindInvalid(t *testing.T) { + sel := Doc().Find(":+ ^") + assertLength(t, sel.Nodes, 0) +} + +func TestFindBig(t *testing.T) { + doc := DocW() + sel := doc.Find("li") + assertLength(t, sel.Nodes, 373) + sel2 := doc.Find("span") + assertLength(t, sel2.Nodes, 448) + sel3 := sel.FindSelection(sel2) + assertLength(t, sel3.Nodes, 248) +} + +func TestChainedFind(t *testing.T) { + sel := Doc().Find("div.hero-unit").Find(".row-fluid") + assertLength(t, sel.Nodes, 4) +} + +func TestChainedFindInvalid(t *testing.T) { + sel := Doc().Find("div.hero-unit").Find("") + assertLength(t, sel.Nodes, 0) +} + +func TestChildren(t *testing.T) { + sel := Doc().Find(".pvk-content").Children() + assertLength(t, sel.Nodes, 5) +} + +func TestChildrenRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.Children().End() + assertEqual(t, sel, sel2) +} + +func TestContents(t *testing.T) { + sel := Doc().Find(".pvk-content").Contents() + assertLength(t, sel.Nodes, 13) +} + +func TestContentsRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.Contents().End() + assertEqual(t, sel, sel2) +} + +func TestChildrenFiltered(t *testing.T) { + sel := Doc().Find(".pvk-content").ChildrenFiltered(".hero-unit") + assertLength(t, sel.Nodes, 1) +} + +func TestChildrenFilteredInvalid(t *testing.T) { + sel := Doc().Find(".pvk-content").ChildrenFiltered("") + assertLength(t, sel.Nodes, 0) +} + +func TestChildrenFilteredRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.ChildrenFiltered(".hero-unit").End() + assertEqual(t, sel, sel2) +} + +func TestContentsFiltered(t *testing.T) { + sel := Doc().Find(".pvk-content").ContentsFiltered(".hero-unit") + assertLength(t, sel.Nodes, 1) +} + +func TestContentsFilteredInvalid(t *testing.T) { + sel := Doc().Find(".pvk-content").ContentsFiltered("~") + assertLength(t, sel.Nodes, 0) +} + +func TestContentsFilteredRollback(t *testing.T) { + sel := Doc().Find(".pvk-content") + sel2 := sel.ContentsFiltered(".hero-unit").End() + assertEqual(t, sel, sel2) +} + +func TestChildrenFilteredNone(t *testing.T) { + sel := Doc().Find(".pvk-content").ChildrenFiltered("a.btn") + assertLength(t, sel.Nodes, 0) +} + +func TestParent(t *testing.T) { + sel := Doc().Find(".container-fluid").Parent() + assertLength(t, sel.Nodes, 3) +} + +func TestParentRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.Parent().End() + assertEqual(t, sel, sel2) +} + +func TestParentBody(t *testing.T) { + sel := Doc().Find("body").Parent() + assertLength(t, sel.Nodes, 1) +} + +func TestParentFiltered(t *testing.T) { + sel := Doc().Find(".container-fluid").ParentFiltered(".hero-unit") + assertLength(t, sel.Nodes, 1) + assertClass(t, sel, "hero-unit") +} + +func TestParentFilteredInvalid(t *testing.T) { + sel := Doc().Find(".container-fluid").ParentFiltered("") + assertLength(t, sel.Nodes, 0) +} + +func TestParentFilteredRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.ParentFiltered(".hero-unit").End() + assertEqual(t, sel, sel2) +} + +func TestParents(t *testing.T) { + sel := Doc().Find(".container-fluid").Parents() + assertLength(t, sel.Nodes, 8) +} + +func TestParentsOrder(t *testing.T) { + sel := Doc().Find("#cf2").Parents() + assertLength(t, sel.Nodes, 6) + assertSelectionIs(t, sel, ".hero-unit", ".pvk-content", "div.row-fluid", "#cf1", "body", "html") +} + +func TestParentsRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.Parents().End() + assertEqual(t, sel, sel2) +} + +func TestParentsFiltered(t *testing.T) { + sel := Doc().Find(".container-fluid").ParentsFiltered("body") + assertLength(t, sel.Nodes, 1) +} + +func TestParentsFilteredInvalid(t *testing.T) { + sel := Doc().Find(".container-fluid").ParentsFiltered("") + assertLength(t, sel.Nodes, 0) +} + +func TestParentsFilteredRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.ParentsFiltered("body").End() + assertEqual(t, sel, sel2) +} + +func TestParentsUntil(t *testing.T) { + sel := Doc().Find(".container-fluid").ParentsUntil("body") + assertLength(t, sel.Nodes, 6) +} + +func TestParentsUntilInvalid(t *testing.T) { + sel := Doc().Find(".container-fluid").ParentsUntil("") + assertLength(t, sel.Nodes, 8) +} + +func TestParentsUntilRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.ParentsUntil("body").End() + assertEqual(t, sel, sel2) +} + +func TestParentsUntilSelection(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := Doc().Find(".pvk-content") + sel = sel.ParentsUntilSelection(sel2) + assertLength(t, sel.Nodes, 3) +} + +func TestParentsUntilSelectionRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := Doc().Find(".pvk-content") + sel2 = sel.ParentsUntilSelection(sel2).End() + assertEqual(t, sel, sel2) +} + +func TestParentsUntilNodes(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := Doc().Find(".pvk-content, .hero-unit") + sel = sel.ParentsUntilNodes(sel2.Nodes...) + assertLength(t, sel.Nodes, 2) +} + +func TestParentsUntilNodesRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := Doc().Find(".pvk-content, .hero-unit") + sel2 = sel.ParentsUntilNodes(sel2.Nodes...).End() + assertEqual(t, sel, sel2) +} + +func TestParentsFilteredUntil(t *testing.T) { + sel := Doc().Find(".container-fluid").ParentsFilteredUntil(".pvk-content", "body") + assertLength(t, sel.Nodes, 2) +} + +func TestParentsFilteredUntilInvalid(t *testing.T) { + sel := Doc().Find(".container-fluid").ParentsFilteredUntil("", "") + assertLength(t, sel.Nodes, 0) +} + +func TestParentsFilteredUntilRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.ParentsFilteredUntil(".pvk-content", "body").End() + assertEqual(t, sel, sel2) +} + +func TestParentsFilteredUntilSelection(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := Doc().Find(".row-fluid") + sel = sel.ParentsFilteredUntilSelection("div", sel2) + assertLength(t, sel.Nodes, 3) +} + +func TestParentsFilteredUntilSelectionRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := Doc().Find(".row-fluid") + sel2 = sel.ParentsFilteredUntilSelection("div", sel2).End() + assertEqual(t, sel, sel2) +} + +func TestParentsFilteredUntilNodes(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := Doc().Find(".row-fluid") + sel = sel.ParentsFilteredUntilNodes("body", sel2.Nodes...) + assertLength(t, sel.Nodes, 1) +} + +func TestParentsFilteredUntilNodesRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := Doc().Find(".row-fluid") + sel2 = sel.ParentsFilteredUntilNodes("body", sel2.Nodes...).End() + assertEqual(t, sel, sel2) +} + +func TestSiblings(t *testing.T) { + sel := Doc().Find("h1").Siblings() + assertLength(t, sel.Nodes, 1) +} + +func TestSiblingsRollback(t *testing.T) { + sel := Doc().Find("h1") + sel2 := sel.Siblings().End() + assertEqual(t, sel, sel2) +} + +func TestSiblings2(t *testing.T) { + sel := Doc().Find(".pvk-gutter").Siblings() + assertLength(t, sel.Nodes, 9) +} + +func TestSiblings3(t *testing.T) { + sel := Doc().Find("body>.container-fluid").Siblings() + assertLength(t, sel.Nodes, 0) +} + +func TestSiblingsFiltered(t *testing.T) { + sel := Doc().Find(".pvk-gutter").SiblingsFiltered(".pvk-content") + assertLength(t, sel.Nodes, 3) +} + +func TestSiblingsFilteredInvalid(t *testing.T) { + sel := Doc().Find(".pvk-gutter").SiblingsFiltered("") + assertLength(t, sel.Nodes, 0) +} + +func TestSiblingsFilteredRollback(t *testing.T) { + sel := Doc().Find(".pvk-gutter") + sel2 := sel.SiblingsFiltered(".pvk-content").End() + assertEqual(t, sel, sel2) +} + +func TestNext(t *testing.T) { + sel := Doc().Find("h1").Next() + assertLength(t, sel.Nodes, 1) +} + +func TestNextRollback(t *testing.T) { + sel := Doc().Find("h1") + sel2 := sel.Next().End() + assertEqual(t, sel, sel2) +} + +func TestNext2(t *testing.T) { + sel := Doc().Find(".close").Next() + assertLength(t, sel.Nodes, 1) +} + +func TestNextNone(t *testing.T) { + sel := Doc().Find("small").Next() + assertLength(t, sel.Nodes, 0) +} + +func TestNextFiltered(t *testing.T) { + sel := Doc().Find(".container-fluid").NextFiltered("div") + assertLength(t, sel.Nodes, 2) +} + +func TestNextFilteredInvalid(t *testing.T) { + sel := Doc().Find(".container-fluid").NextFiltered("") + assertLength(t, sel.Nodes, 0) +} + +func TestNextFilteredRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.NextFiltered("div").End() + assertEqual(t, sel, sel2) +} + +func TestNextFiltered2(t *testing.T) { + sel := Doc().Find(".container-fluid").NextFiltered("[ng-view]") + assertLength(t, sel.Nodes, 1) +} + +func TestPrev(t *testing.T) { + sel := Doc().Find(".red").Prev() + assertLength(t, sel.Nodes, 1) + assertClass(t, sel, "green") +} + +func TestPrevRollback(t *testing.T) { + sel := Doc().Find(".red") + sel2 := sel.Prev().End() + assertEqual(t, sel, sel2) +} + +func TestPrev2(t *testing.T) { + sel := Doc().Find(".row-fluid").Prev() + assertLength(t, sel.Nodes, 5) +} + +func TestPrevNone(t *testing.T) { + sel := Doc().Find("h2").Prev() + assertLength(t, sel.Nodes, 0) +} + +func TestPrevFiltered(t *testing.T) { + sel := Doc().Find(".row-fluid").PrevFiltered(".row-fluid") + assertLength(t, sel.Nodes, 5) +} + +func TestPrevFilteredInvalid(t *testing.T) { + sel := Doc().Find(".row-fluid").PrevFiltered("") + assertLength(t, sel.Nodes, 0) +} + +func TestPrevFilteredRollback(t *testing.T) { + sel := Doc().Find(".row-fluid") + sel2 := sel.PrevFiltered(".row-fluid").End() + assertEqual(t, sel, sel2) +} + +func TestNextAll(t *testing.T) { + sel := Doc().Find("#cf2 div:nth-child(1)").NextAll() + assertLength(t, sel.Nodes, 3) +} + +func TestNextAllRollback(t *testing.T) { + sel := Doc().Find("#cf2 div:nth-child(1)") + sel2 := sel.NextAll().End() + assertEqual(t, sel, sel2) +} + +func TestNextAll2(t *testing.T) { + sel := Doc().Find("div[ng-cloak]").NextAll() + assertLength(t, sel.Nodes, 1) +} + +func TestNextAllNone(t *testing.T) { + sel := Doc().Find(".footer").NextAll() + assertLength(t, sel.Nodes, 0) +} + +func TestNextAllFiltered(t *testing.T) { + sel := Doc().Find("#cf2 .row-fluid").NextAllFiltered("[ng-cloak]") + assertLength(t, sel.Nodes, 2) +} + +func TestNextAllFilteredInvalid(t *testing.T) { + sel := Doc().Find("#cf2 .row-fluid").NextAllFiltered("") + assertLength(t, sel.Nodes, 0) +} + +func TestNextAllFilteredRollback(t *testing.T) { + sel := Doc().Find("#cf2 .row-fluid") + sel2 := sel.NextAllFiltered("[ng-cloak]").End() + assertEqual(t, sel, sel2) +} + +func TestNextAllFiltered2(t *testing.T) { + sel := Doc().Find(".close").NextAllFiltered("h4") + assertLength(t, sel.Nodes, 1) +} + +func TestPrevAll(t *testing.T) { + sel := Doc().Find("[ng-view]").PrevAll() + assertLength(t, sel.Nodes, 2) +} + +func TestPrevAllOrder(t *testing.T) { + sel := Doc().Find("[ng-view]").PrevAll() + assertLength(t, sel.Nodes, 2) + assertSelectionIs(t, sel, "#cf4", "#cf3") +} + +func TestPrevAllRollback(t *testing.T) { + sel := Doc().Find("[ng-view]") + sel2 := sel.PrevAll().End() + assertEqual(t, sel, sel2) +} + +func TestPrevAll2(t *testing.T) { + sel := Doc().Find(".pvk-gutter").PrevAll() + assertLength(t, sel.Nodes, 6) +} + +func TestPrevAllFiltered(t *testing.T) { + sel := Doc().Find(".pvk-gutter").PrevAllFiltered(".pvk-content") + assertLength(t, sel.Nodes, 3) +} + +func TestPrevAllFilteredInvalid(t *testing.T) { + sel := Doc().Find(".pvk-gutter").PrevAllFiltered("") + assertLength(t, sel.Nodes, 0) +} + +func TestPrevAllFilteredRollback(t *testing.T) { + sel := Doc().Find(".pvk-gutter") + sel2 := sel.PrevAllFiltered(".pvk-content").End() + assertEqual(t, sel, sel2) +} + +func TestNextUntil(t *testing.T) { + sel := Doc().Find(".alert a").NextUntil("p") + assertLength(t, sel.Nodes, 1) + assertSelectionIs(t, sel, "h4") +} + +func TestNextUntilInvalid(t *testing.T) { + sel := Doc().Find(".alert a").NextUntil("") + assertLength(t, sel.Nodes, 2) +} + +func TestNextUntil2(t *testing.T) { + sel := Doc().Find("#cf2-1").NextUntil("[ng-cloak]") + assertLength(t, sel.Nodes, 1) + assertSelectionIs(t, sel, "#cf2-2") +} + +func TestNextUntilOrder(t *testing.T) { + sel := Doc().Find("#cf2-1").NextUntil("#cf2-4") + assertLength(t, sel.Nodes, 2) + assertSelectionIs(t, sel, "#cf2-2", "#cf2-3") +} + +func TestNextUntilRollback(t *testing.T) { + sel := Doc().Find("#cf2-1") + sel2 := sel.PrevUntil("#cf2-4").End() + assertEqual(t, sel, sel2) +} + +func TestNextUntilSelection(t *testing.T) { + sel := Doc2().Find("#n2") + sel2 := Doc2().Find("#n4") + sel2 = sel.NextUntilSelection(sel2) + assertLength(t, sel2.Nodes, 1) + assertSelectionIs(t, sel2, "#n3") +} + +func TestNextUntilSelectionRollback(t *testing.T) { + sel := Doc2().Find("#n2") + sel2 := Doc2().Find("#n4") + sel2 = sel.NextUntilSelection(sel2).End() + assertEqual(t, sel, sel2) +} + +func TestNextUntilNodes(t *testing.T) { + sel := Doc2().Find("#n2") + sel2 := Doc2().Find("#n5") + sel2 = sel.NextUntilNodes(sel2.Nodes...) + assertLength(t, sel2.Nodes, 2) + assertSelectionIs(t, sel2, "#n3", "#n4") +} + +func TestNextUntilNodesRollback(t *testing.T) { + sel := Doc2().Find("#n2") + sel2 := Doc2().Find("#n5") + sel2 = sel.NextUntilNodes(sel2.Nodes...).End() + assertEqual(t, sel, sel2) +} + +func TestPrevUntil(t *testing.T) { + sel := Doc().Find(".alert p").PrevUntil("a") + assertLength(t, sel.Nodes, 1) + assertSelectionIs(t, sel, "h4") +} + +func TestPrevUntilInvalid(t *testing.T) { + sel := Doc().Find(".alert p").PrevUntil("") + assertLength(t, sel.Nodes, 2) +} + +func TestPrevUntil2(t *testing.T) { + sel := Doc().Find("[ng-cloak]").PrevUntil(":not([ng-cloak])") + assertLength(t, sel.Nodes, 1) + assertSelectionIs(t, sel, "[ng-cloak]") +} + +func TestPrevUntilOrder(t *testing.T) { + sel := Doc().Find("#cf2-4").PrevUntil("#cf2-1") + assertLength(t, sel.Nodes, 2) + assertSelectionIs(t, sel, "#cf2-3", "#cf2-2") +} + +func TestPrevUntilRollback(t *testing.T) { + sel := Doc().Find("#cf2-4") + sel2 := sel.PrevUntil("#cf2-1").End() + assertEqual(t, sel, sel2) +} + +func TestPrevUntilSelection(t *testing.T) { + sel := Doc2().Find("#n4") + sel2 := Doc2().Find("#n2") + sel2 = sel.PrevUntilSelection(sel2) + assertLength(t, sel2.Nodes, 1) + assertSelectionIs(t, sel2, "#n3") +} + +func TestPrevUntilSelectionRollback(t *testing.T) { + sel := Doc2().Find("#n4") + sel2 := Doc2().Find("#n2") + sel2 = sel.PrevUntilSelection(sel2).End() + assertEqual(t, sel, sel2) +} + +func TestPrevUntilNodes(t *testing.T) { + sel := Doc2().Find("#n5") + sel2 := Doc2().Find("#n2") + sel2 = sel.PrevUntilNodes(sel2.Nodes...) + assertLength(t, sel2.Nodes, 2) + assertSelectionIs(t, sel2, "#n4", "#n3") +} + +func TestPrevUntilNodesRollback(t *testing.T) { + sel := Doc2().Find("#n5") + sel2 := Doc2().Find("#n2") + sel2 = sel.PrevUntilNodes(sel2.Nodes...).End() + assertEqual(t, sel, sel2) +} + +func TestNextFilteredUntil(t *testing.T) { + sel := Doc2().Find(".two").NextFilteredUntil(".even", ".six") + assertLength(t, sel.Nodes, 4) + assertSelectionIs(t, sel, "#n3", "#n5", "#nf3", "#nf5") +} + +func TestNextFilteredUntilInvalid(t *testing.T) { + sel := Doc2().Find(".two").NextFilteredUntil("", "") + assertLength(t, sel.Nodes, 0) +} + +func TestNextFilteredUntilRollback(t *testing.T) { + sel := Doc2().Find(".two") + sel2 := sel.NextFilteredUntil(".even", ".six").End() + assertEqual(t, sel, sel2) +} + +func TestNextFilteredUntilSelection(t *testing.T) { + sel := Doc2().Find(".even") + sel2 := Doc2().Find(".five") + sel = sel.NextFilteredUntilSelection(".even", sel2) + assertLength(t, sel.Nodes, 2) + assertSelectionIs(t, sel, "#n3", "#nf3") +} + +func TestNextFilteredUntilSelectionRollback(t *testing.T) { + sel := Doc2().Find(".even") + sel2 := Doc2().Find(".five") + sel3 := sel.NextFilteredUntilSelection(".even", sel2).End() + assertEqual(t, sel, sel3) +} + +func TestNextFilteredUntilNodes(t *testing.T) { + sel := Doc2().Find(".even") + sel2 := Doc2().Find(".four") + sel = sel.NextFilteredUntilNodes(".odd", sel2.Nodes...) + assertLength(t, sel.Nodes, 4) + assertSelectionIs(t, sel, "#n2", "#n6", "#nf2", "#nf6") +} + +func TestNextFilteredUntilNodesRollback(t *testing.T) { + sel := Doc2().Find(".even") + sel2 := Doc2().Find(".four") + sel3 := sel.NextFilteredUntilNodes(".odd", sel2.Nodes...).End() + assertEqual(t, sel, sel3) +} + +func TestPrevFilteredUntil(t *testing.T) { + sel := Doc2().Find(".five").PrevFilteredUntil(".odd", ".one") + assertLength(t, sel.Nodes, 4) + assertSelectionIs(t, sel, "#n4", "#n2", "#nf4", "#nf2") +} + +func TestPrevFilteredUntilInvalid(t *testing.T) { + sel := Doc2().Find(".five").PrevFilteredUntil("", "") + assertLength(t, sel.Nodes, 0) +} + +func TestPrevFilteredUntilRollback(t *testing.T) { + sel := Doc2().Find(".four") + sel2 := sel.PrevFilteredUntil(".odd", ".one").End() + assertEqual(t, sel, sel2) +} + +func TestPrevFilteredUntilSelection(t *testing.T) { + sel := Doc2().Find(".odd") + sel2 := Doc2().Find(".two") + sel = sel.PrevFilteredUntilSelection(".odd", sel2) + assertLength(t, sel.Nodes, 2) + assertSelectionIs(t, sel, "#n4", "#nf4") +} + +func TestPrevFilteredUntilSelectionRollback(t *testing.T) { + sel := Doc2().Find(".even") + sel2 := Doc2().Find(".five") + sel3 := sel.PrevFilteredUntilSelection(".even", sel2).End() + assertEqual(t, sel, sel3) +} + +func TestPrevFilteredUntilNodes(t *testing.T) { + sel := Doc2().Find(".even") + sel2 := Doc2().Find(".four") + sel = sel.PrevFilteredUntilNodes(".odd", sel2.Nodes...) + assertLength(t, sel.Nodes, 2) + assertSelectionIs(t, sel, "#n2", "#nf2") +} + +func TestPrevFilteredUntilNodesRollback(t *testing.T) { + sel := Doc2().Find(".even") + sel2 := Doc2().Find(".four") + sel3 := sel.PrevFilteredUntilNodes(".odd", sel2.Nodes...).End() + assertEqual(t, sel, sel3) +} + +func TestClosestItself(t *testing.T) { + sel := Doc2().Find(".three") + sel2 := sel.Closest(".row") + assertLength(t, sel2.Nodes, sel.Length()) + assertSelectionIs(t, sel2, "#n3", "#nf3") +} + +func TestClosestNoDupes(t *testing.T) { + sel := Doc().Find(".span12") + sel2 := sel.Closest(".pvk-content") + assertLength(t, sel2.Nodes, 1) + assertClass(t, sel2, "pvk-content") +} + +func TestClosestNone(t *testing.T) { + sel := Doc().Find("h4") + sel2 := sel.Closest("a") + assertLength(t, sel2.Nodes, 0) +} + +func TestClosestInvalid(t *testing.T) { + sel := Doc().Find("h4") + sel2 := sel.Closest("") + assertLength(t, sel2.Nodes, 0) +} + +func TestClosestMany(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.Closest(".pvk-content") + assertLength(t, sel2.Nodes, 2) + assertSelectionIs(t, sel2, "#pc1", "#pc2") +} + +func TestClosestRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.Closest(".pvk-content").End() + assertEqual(t, sel, sel2) +} + +func TestClosestSelectionItself(t *testing.T) { + sel := Doc2().Find(".three") + sel2 := sel.ClosestSelection(Doc2().Find(".row")) + assertLength(t, sel2.Nodes, sel.Length()) +} + +func TestClosestSelectionNoDupes(t *testing.T) { + sel := Doc().Find(".span12") + sel2 := sel.ClosestSelection(Doc().Find(".pvk-content")) + assertLength(t, sel2.Nodes, 1) + assertClass(t, sel2, "pvk-content") +} + +func TestClosestSelectionNone(t *testing.T) { + sel := Doc().Find("h4") + sel2 := sel.ClosestSelection(Doc().Find("a")) + assertLength(t, sel2.Nodes, 0) +} + +func TestClosestSelectionMany(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.ClosestSelection(Doc().Find(".pvk-content")) + assertLength(t, sel2.Nodes, 2) + assertSelectionIs(t, sel2, "#pc1", "#pc2") +} + +func TestClosestSelectionRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.ClosestSelection(Doc().Find(".pvk-content")).End() + assertEqual(t, sel, sel2) +} + +func TestClosestNodesItself(t *testing.T) { + sel := Doc2().Find(".three") + sel2 := sel.ClosestNodes(Doc2().Find(".row").Nodes...) + assertLength(t, sel2.Nodes, sel.Length()) +} + +func TestClosestNodesNoDupes(t *testing.T) { + sel := Doc().Find(".span12") + sel2 := sel.ClosestNodes(Doc().Find(".pvk-content").Nodes...) + assertLength(t, sel2.Nodes, 1) + assertClass(t, sel2, "pvk-content") +} + +func TestClosestNodesNone(t *testing.T) { + sel := Doc().Find("h4") + sel2 := sel.ClosestNodes(Doc().Find("a").Nodes...) + assertLength(t, sel2.Nodes, 0) +} + +func TestClosestNodesMany(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.ClosestNodes(Doc().Find(".pvk-content").Nodes...) + assertLength(t, sel2.Nodes, 2) + assertSelectionIs(t, sel2, "#pc1", "#pc2") +} + +func TestClosestNodesRollback(t *testing.T) { + sel := Doc().Find(".container-fluid") + sel2 := sel.ClosestNodes(Doc().Find(".pvk-content").Nodes...).End() + assertEqual(t, sel, sel2) +} + +func TestIssue26(t *testing.T) { + img1 := `150x150` + img2 := `150x150` + cases := []struct { + s string + l int + }{ + {s: img1 + img2, l: 2}, + {s: img1, l: 1}, + {s: img2, l: 1}, + } + for _, c := range cases { + doc, err := NewDocumentFromReader(strings.NewReader(c.s)) + if err != nil { + t.Fatal(err) + } + sel := doc.Find("img[src]") + assertLength(t, sel.Nodes, c.l) + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/type.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/type.go new file mode 100644 index 000000000..6646c143b --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/type.go @@ -0,0 +1,203 @@ +package goquery + +import ( + "errors" + "io" + "net/http" + "net/url" + + "github.com/andybalholm/cascadia" + "golang.org/x/net/html" +) + +// Document represents an HTML document to be manipulated. Unlike jQuery, which +// is loaded as part of a DOM document, and thus acts upon its containing +// document, GoQuery doesn't know which HTML document to act upon. So it needs +// to be told, and that's what the Document class is for. It holds the root +// document node to manipulate, and can make selections on this document. +type Document struct { + *Selection + Url *url.URL + rootNode *html.Node +} + +// NewDocumentFromNode is a Document constructor that takes a root html Node +// as argument. +func NewDocumentFromNode(root *html.Node) *Document { + return newDocument(root, nil) +} + +// NewDocument is a Document constructor that takes a string URL as argument. +// It loads the specified document, parses it, and stores the root Document +// node, ready to be manipulated. +// +// Deprecated: Use the net/http standard library package to make the request +// and validate the response before calling goquery.NewDocumentFromReader +// with the response's body. +func NewDocument(url string) (*Document, error) { + // Load the URL + res, e := http.Get(url) + if e != nil { + return nil, e + } + return NewDocumentFromResponse(res) +} + +// NewDocumentFromReader returns a Document from an io.Reader. +// It returns an error as second value if the reader's data cannot be parsed +// as html. It does not check if the reader is also an io.Closer, the +// provided reader is never closed by this call. It is the responsibility +// of the caller to close it if required. +func NewDocumentFromReader(r io.Reader) (*Document, error) { + root, e := html.Parse(r) + if e != nil { + return nil, e + } + return newDocument(root, nil), nil +} + +// NewDocumentFromResponse is another Document constructor that takes an http response as argument. +// It loads the specified response's document, parses it, and stores the root Document +// node, ready to be manipulated. The response's body is closed on return. +// +// Deprecated: Use goquery.NewDocumentFromReader with the response's body. +func NewDocumentFromResponse(res *http.Response) (*Document, error) { + if res == nil { + return nil, errors.New("Response is nil") + } + defer res.Body.Close() + if res.Request == nil { + return nil, errors.New("Response.Request is nil") + } + + // Parse the HTML into nodes + root, e := html.Parse(res.Body) + if e != nil { + return nil, e + } + + // Create and fill the document + return newDocument(root, res.Request.URL), nil +} + +// CloneDocument creates a deep-clone of a document. +func CloneDocument(doc *Document) *Document { + return newDocument(cloneNode(doc.rootNode), doc.Url) +} + +// Private constructor, make sure all fields are correctly filled. +func newDocument(root *html.Node, url *url.URL) *Document { + // Create and fill the document + d := &Document{nil, url, root} + d.Selection = newSingleSelection(root, d) + return d +} + +// Selection represents a collection of nodes matching some criteria. The +// initial Selection can be created by using Document.Find, and then +// manipulated using the jQuery-like chainable syntax and methods. +type Selection struct { + Nodes []*html.Node + document *Document + prevSel *Selection +} + +// Helper constructor to create an empty selection +func newEmptySelection(doc *Document) *Selection { + return &Selection{nil, doc, nil} +} + +// Helper constructor to create a selection of only one node +func newSingleSelection(node *html.Node, doc *Document) *Selection { + return &Selection{[]*html.Node{node}, doc, nil} +} + +// Matcher is an interface that defines the methods to match +// HTML nodes against a compiled selector string. Cascadia's +// Selector implements this interface. +type Matcher interface { + Match(*html.Node) bool + MatchAll(*html.Node) []*html.Node + Filter([]*html.Node) []*html.Node +} + +// Single compiles a selector string to a Matcher that stops after the first +// match is found. +// +// By default, Selection.Find and other functions that accept a selector string +// to select nodes will use all matches corresponding to that selector. By +// using the Matcher returned by Single, at most the first match will be +// selected. +// +// For example, those two statements are semantically equivalent: +// +// sel1 := doc.Find("a").First() +// sel2 := doc.FindMatcher(goquery.Single("a")) +// +// The one using Single is optimized to be potentially much faster on large +// documents. +// +// Only the behaviour of the MatchAll method of the Matcher interface is +// altered compared to standard Matchers. This means that the single-selection +// property of the Matcher only applies for Selection methods where the Matcher +// is used to select nodes, not to filter or check if a node matches the +// Matcher - in those cases, the behaviour of the Matcher is unchanged (e.g. +// FilterMatcher(Single("div")) will still result in a Selection with multiple +// "div"s if there were many "div"s in the Selection to begin with). +func Single(selector string) Matcher { + return singleMatcher{compileMatcher(selector)} +} + +// SingleMatcher returns a Matcher matches the same nodes as m, but that stops +// after the first match is found. +// +// See the documentation of function Single for more details. +func SingleMatcher(m Matcher) Matcher { + if _, ok := m.(singleMatcher); ok { + // m is already a singleMatcher + return m + } + return singleMatcher{m} +} + +// compileMatcher compiles the selector string s and returns +// the corresponding Matcher. If s is an invalid selector string, +// it returns a Matcher that fails all matches. +func compileMatcher(s string) Matcher { + cs, err := cascadia.Compile(s) + if err != nil { + return invalidMatcher{} + } + return cs +} + +type singleMatcher struct { + Matcher +} + +func (m singleMatcher) MatchAll(n *html.Node) []*html.Node { + // Optimized version - stops finding at the first match (cascadia-compiled + // matchers all use this code path). + if mm, ok := m.Matcher.(interface{ MatchFirst(*html.Node) *html.Node }); ok { + node := mm.MatchFirst(n) + if node == nil { + return nil + } + return []*html.Node{node} + } + + // Fallback version, for e.g. test mocks that don't provide the MatchFirst + // method. + nodes := m.Matcher.MatchAll(n) + if len(nodes) > 0 { + return nodes[:1:1] + } + return nil +} + +// invalidMatcher is a Matcher that always fails to match. +type invalidMatcher struct{} + +func (invalidMatcher) Match(n *html.Node) bool { return false } +func (invalidMatcher) MatchAll(n *html.Node) []*html.Node { return nil } +func (invalidMatcher) Filter(ns []*html.Node) []*html.Node { return nil } diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/type_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/type_test.go new file mode 100644 index 000000000..84080a9c7 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/type_test.go @@ -0,0 +1,255 @@ +package goquery + +import ( + "bytes" + "fmt" + "os" + "strings" + "testing" + + "github.com/andybalholm/cascadia" + "golang.org/x/net/html" +) + +// Test helper functions and members +var doc *Document +var doc2 *Document +var doc3 *Document +var docB *Document +var docW *Document + +func Doc() *Document { + if doc == nil { + doc = loadDoc("page.html") + } + return doc +} + +func Doc2() *Document { + if doc2 == nil { + doc2 = loadDoc("page2.html") + } + return doc2 +} + +func Doc2Clone() *Document { + return CloneDocument(Doc2()) +} + +func Doc3() *Document { + if doc3 == nil { + doc3 = loadDoc("page3.html") + } + return doc3 +} + +func Doc3Clone() *Document { + return CloneDocument(Doc3()) +} + +func DocB() *Document { + if docB == nil { + docB = loadDoc("gotesting.html") + } + return docB +} + +func DocW() *Document { + if docW == nil { + docW = loadDoc("gowiki.html") + } + return docW +} + +func assertLength(t *testing.T, nodes []*html.Node, length int) { + if len(nodes) != length { + t.Errorf("Expected %d nodes, found %d.", length, len(nodes)) + for i, n := range nodes { + t.Logf("Node %d: %+v.", i, n) + } + } +} + +func assertClass(t *testing.T, sel *Selection, class string) { + if !sel.HasClass(class) { + t.Errorf("Expected node to have class %s, found %+v.", class, sel.Get(0)) + } +} + +func assertPanic(t *testing.T) { + if e := recover(); e == nil { + t.Error("Expected a panic.") + } +} + +func assertEqual(t *testing.T, s1 *Selection, s2 *Selection) { + if s1 != s2 { + t.Error("Expected selection objects to be the same.") + } +} + +func assertSelectionIs(t *testing.T, sel *Selection, is ...string) { + for i := 0; i < sel.Length(); i++ { + if !sel.Eq(i).Is(is[i]) { + t.Errorf("Expected node %d to be %s, found %+v", i, is[i], sel.Get(i)) + } + } +} + +func printSel(t *testing.T, sel *Selection) { + if testing.Verbose() { + h, err := sel.Html() + if err != nil { + t.Fatal(err) + } + t.Log(h) + } +} + +func loadDoc(page string) *Document { + var f *os.File + var e error + + if f, e = os.Open(fmt.Sprintf("./testdata/%s", page)); e != nil { + panic(e.Error()) + } + defer f.Close() + + var node *html.Node + if node, e = html.Parse(f); e != nil { + panic(e.Error()) + } + return NewDocumentFromNode(node) +} + +func loadString(t *testing.T, doc string) *Document { + d, err := NewDocumentFromReader(strings.NewReader(doc)) + if err != nil { + t.Error("Failed to parse test document") + } + return d +} + +func TestNewDocument(t *testing.T) { + if f, e := os.Open("./testdata/page.html"); e != nil { + t.Error(e.Error()) + } else { + defer f.Close() + if node, e := html.Parse(f); e != nil { + t.Error(e.Error()) + } else { + doc = NewDocumentFromNode(node) + } + } +} + +func TestNewDocumentFromReader(t *testing.T) { + cases := []struct { + src string + err bool + sel string + cnt int + }{ + 0: { + src: ` + + +Test + +

      Hi

      + +`, + sel: "h1", + cnt: 1, + }, + 1: { + // Actually pretty hard to make html.Parse return an error + // based on content... + src: `>>qq>`, + }, + } + buf := bytes.NewBuffer(nil) + + for i, c := range cases { + buf.Reset() + buf.WriteString(c.src) + + d, e := NewDocumentFromReader(buf) + if (e != nil) != c.err { + if c.err { + t.Errorf("[%d] - expected error, got none", i) + } else { + t.Errorf("[%d] - expected no error, got %s", i, e) + } + } + if c.sel != "" { + s := d.Find(c.sel) + if s.Length() != c.cnt { + t.Errorf("[%d] - expected %d nodes, found %d", i, c.cnt, s.Length()) + } + } + } +} + +func TestNewDocumentFromResponseNil(t *testing.T) { + _, e := NewDocumentFromResponse(nil) + if e == nil { + t.Error("Expected error, got none") + } +} + +func TestIssue103(t *testing.T) { + d, err := NewDocumentFromReader(strings.NewReader("Scientists Stored These Images in DNA—Then Flawlessly Retrieved Them")) + if err != nil { + t.Error(err) + } + text := d.Find("title").Text() + for i, r := range text { + t.Logf("%d: %d - %q\n", i, r, string(r)) + } + t.Log(text) +} + +func TestSingle(t *testing.T) { + data := ` + + +
      1
      +
      2
      +
      3
      +

      4

      + + +` + doc, err := NewDocumentFromReader(strings.NewReader(data)) + if err != nil { + t.Fatal(err) + } + + text := doc.FindMatcher(Single("div")).Text() + if text != "1" { + t.Fatalf("want %q, got %q", "1", text) + } + + // Verify semantic equivalence + sel1 := doc.Find("div").First() + sel2 := doc.FindMatcher(Single("div")) + if sel1.Text() != sel2.Text() { + t.Fatalf("want sel1 to equal sel2") + } + + // Here, the Single has no effect as the selector is used to filter + // from the existing selection, not to find nodes in the document. + divs := doc.Find("div") + text = divs.FilterMatcher(Single(".a")).Text() + if text != "23" { + t.Fatalf("want %q, got %q", "23", text) + } + + classA := cascadia.MustCompile(".a") + classB := cascadia.MustCompile(".b") + text = doc.FindMatcher(classB).AddMatcher(SingleMatcher(classA)).Text() + if text != "142" { + t.Fatalf("want %q, got %q", "142", text) + } +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/utilities.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/utilities.go new file mode 100644 index 000000000..6d243cdd6 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/utilities.go @@ -0,0 +1,178 @@ +package goquery + +import ( + "bytes" + "io" + + "golang.org/x/net/html" +) + +// used to determine if a set (map[*html.Node]bool) should be used +// instead of iterating over a slice. The set uses more memory and +// is slower than slice iteration for small N. +const minNodesForSet = 1000 + +var nodeNames = []string{ + html.ErrorNode: "#error", + html.TextNode: "#text", + html.DocumentNode: "#document", + html.CommentNode: "#comment", +} + +// NodeName returns the node name of the first element in the selection. +// It tries to behave in a similar way as the DOM's nodeName property +// (https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeName). +// +// Go's net/html package defines the following node types, listed with +// the corresponding returned value from this function: +// +// ErrorNode : #error +// TextNode : #text +// DocumentNode : #document +// ElementNode : the element's tag name +// CommentNode : #comment +// DoctypeNode : the name of the document type +// +func NodeName(s *Selection) string { + if s.Length() == 0 { + return "" + } + return nodeName(s.Get(0)) +} + +// nodeName returns the node name of the given html node. +// See NodeName for additional details on behaviour. +func nodeName(node *html.Node) string { + if node == nil { + return "" + } + + switch node.Type { + case html.ElementNode, html.DoctypeNode: + return node.Data + default: + if int(node.Type) < len(nodeNames) { + return nodeNames[node.Type] + } + return "" + } +} + +// Render renders the html of the first element from selector and writes it to +// the writer. It behaves the same as OuterHtml but writes to w instead of +// returning the string. +func Render(w io.Writer, s *Selection) error { + if s.Length() == 0 { + return nil + } + n := s.Get(0) + return html.Render(w, n) +} + +// OuterHtml returns the outer HTML rendering of the first item in +// the selection - that is, the HTML including the first element's +// tag and attributes. +// +// Unlike InnerHtml, this is a function and not a method on the Selection, +// because this is not a jQuery method (in javascript-land, this is +// a property provided by the DOM). +func OuterHtml(s *Selection) (string, error) { + var buf bytes.Buffer + if err := Render(&buf, s); err != nil { + return "", err + } + return buf.String(), nil +} + +// Loop through all container nodes to search for the target node. +func sliceContains(container []*html.Node, contained *html.Node) bool { + for _, n := range container { + if nodeContains(n, contained) { + return true + } + } + + return false +} + +// Checks if the contained node is within the container node. +func nodeContains(container *html.Node, contained *html.Node) bool { + // Check if the parent of the contained node is the container node, traversing + // upward until the top is reached, or the container is found. + for contained = contained.Parent; contained != nil; contained = contained.Parent { + if container == contained { + return true + } + } + return false +} + +// Checks if the target node is in the slice of nodes. +func isInSlice(slice []*html.Node, node *html.Node) bool { + return indexInSlice(slice, node) > -1 +} + +// Returns the index of the target node in the slice, or -1. +func indexInSlice(slice []*html.Node, node *html.Node) int { + if node != nil { + for i, n := range slice { + if n == node { + return i + } + } + } + return -1 +} + +// Appends the new nodes to the target slice, making sure no duplicate is added. +// There is no check to the original state of the target slice, so it may still +// contain duplicates. The target slice is returned because append() may create +// a new underlying array. If targetSet is nil, a local set is created with the +// target if len(target) + len(nodes) is greater than minNodesForSet. +func appendWithoutDuplicates(target []*html.Node, nodes []*html.Node, targetSet map[*html.Node]bool) []*html.Node { + // if there are not that many nodes, don't use the map, faster to just use nested loops + // (unless a non-nil targetSet is passed, in which case the caller knows better). + if targetSet == nil && len(target)+len(nodes) < minNodesForSet { + for _, n := range nodes { + if !isInSlice(target, n) { + target = append(target, n) + } + } + return target + } + + // if a targetSet is passed, then assume it is reliable, otherwise create one + // and initialize it with the current target contents. + if targetSet == nil { + targetSet = make(map[*html.Node]bool, len(target)) + for _, n := range target { + targetSet[n] = true + } + } + for _, n := range nodes { + if !targetSet[n] { + target = append(target, n) + targetSet[n] = true + } + } + + return target +} + +// Loop through a selection, returning only those nodes that pass the predicate +// function. +func grep(sel *Selection, predicate func(i int, s *Selection) bool) (result []*html.Node) { + for i, n := range sel.Nodes { + if predicate(i, newSingleSelection(n, sel.document)) { + result = append(result, n) + } + } + return result +} + +// Creates a new Selection object based on the specified nodes, and keeps the +// source Selection object on the stack (linked list). +func pushStack(fromSel *Selection, nodes []*html.Node) *Selection { + result := &Selection{nodes, fromSel.document, fromSel} + return result +} diff --git a/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/utilities_test.go b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/utilities_test.go new file mode 100644 index 000000000..c8e9d5400 --- /dev/null +++ b/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/utilities_test.go @@ -0,0 +1,128 @@ +package goquery + +import ( + "reflect" + "sort" + "strings" + "testing" + + "golang.org/x/net/html" +) + +var allNodes = ` + + + + + +

      + This is some text. +

      +
      +

      +

      + +` + +func TestNodeName(t *testing.T) { + doc, err := NewDocumentFromReader(strings.NewReader(allNodes)) + if err != nil { + t.Fatal(err) + } + + n0 := doc.Nodes[0] + nDT := n0.FirstChild + sMeta := doc.Find("meta") + nMeta := sMeta.Get(0) + sP := doc.Find("p") + nP := sP.Get(0) + nComment := nP.FirstChild + nText := nComment.NextSibling + + cases := []struct { + node *html.Node + typ html.NodeType + want string + }{ + {n0, html.DocumentNode, nodeNames[html.DocumentNode]}, + {nDT, html.DoctypeNode, "html"}, + {nMeta, html.ElementNode, "meta"}, + {nP, html.ElementNode, "p"}, + {nComment, html.CommentNode, nodeNames[html.CommentNode]}, + {nText, html.TextNode, nodeNames[html.TextNode]}, + } + for i, c := range cases { + got := NodeName(newSingleSelection(c.node, doc)) + if c.node.Type != c.typ { + t.Errorf("%d: want type %v, got %v", i, c.typ, c.node.Type) + } + if got != c.want { + t.Errorf("%d: want %q, got %q", i, c.want, got) + } + } +} + +func TestNodeNameMultiSel(t *testing.T) { + doc, err := NewDocumentFromReader(strings.NewReader(allNodes)) + if err != nil { + t.Fatal(err) + } + + in := []string{"p", "h1", "div"} + var out []string + doc.Find(strings.Join(in, ", ")).Each(func(i int, s *Selection) { + got := NodeName(s) + out = append(out, got) + }) + sort.Strings(in) + sort.Strings(out) + if !reflect.DeepEqual(in, out) { + t.Errorf("want %v, got %v", in, out) + } +} + +func TestOuterHtml(t *testing.T) { + doc, err := NewDocumentFromReader(strings.NewReader(allNodes)) + if err != nil { + t.Fatal(err) + } + + n0 := doc.Nodes[0] + nDT := n0.FirstChild + sMeta := doc.Find("meta") + sP := doc.Find("p") + nP := sP.Get(0) + nComment := nP.FirstChild + nText := nComment.NextSibling + sHeaders := doc.Find(".header") + + cases := []struct { + node *html.Node + sel *Selection + want string + }{ + {nDT, nil, ""}, // render makes DOCTYPE all caps + {nil, sMeta, ``}, // and auto-closes the meta + {nil, sP, `

      + This is some text. +

      `}, + {nComment, nil, ""}, + {nText, nil, ` + This is some text. + `}, + {nil, sHeaders, `

      `}, + } + for i, c := range cases { + if c.sel == nil { + c.sel = newSingleSelection(c.node, doc) + } + got, err := OuterHtml(c.sel) + if err != nil { + t.Fatal(err) + } + + if got != c.want { + t.Errorf("%d: want %q, got %q", i, c.want, got) + } + } +} diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/.github/workflows/go.yml b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/.github/workflows/go.yml new file mode 100644 index 000000000..dc251db92 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/.github/workflows/go.yml @@ -0,0 +1,40 @@ +name: Go + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.16 + + - name: Load cached dependencies + uses: actions/cache@v2 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + + - name: Download dependencies + run: go mod download + + - name: Build + run: make build + + - name: Lint + run: make lint + + - name: Test + run: make cover + + - name: Upload coverage + uses: codecov/codecov-action@v1 diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/.gitignore b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/.gitignore new file mode 100644 index 000000000..4119fb986 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/.gitignore @@ -0,0 +1,3 @@ +/bin +/cover.out +/cover.html diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/CHANGELOG.md b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/CHANGELOG.md new file mode 100644 index 000000000..e8eb435ff --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/CHANGELOG.md @@ -0,0 +1,27 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.3.0] - 2021-03-25 +### Changed +- Renderer: Don't render links if Resolver returns an empty destination. + +[0.3.0]: https://github.com/abhinav/goldmark-wikilink/releases/tag/v0.3.0 + +## [0.2.0] - 2021-03-23 +### Added +- Node: Add `Fragment` field to track the `#` portion of a link. + +### Changed +- Parser: Pull apart `#` portion of a link into Fragment field. +- Renderer: Support links without titles. This makes wikilink references to + headers in the same document possible with `[[#Foo]]` possible. + +[0.2.0]: https://github.com/abhinav/goldmark-wikilink/releases/tag/v0.2.0 + +## [0.1.0] - 2021-03-14 +- Initial release. + +[0.1.0]: https://github.com/abhinav/goldmark-wikilink/releases/tag/v0.1.0 diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/LICENSE b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/LICENSE new file mode 100644 index 000000000..e1c72f0b7 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Abhinav Gupta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/Makefile b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/Makefile new file mode 100644 index 000000000..fdf2c7bf4 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/Makefile @@ -0,0 +1,53 @@ +# "go install"-ed binaries will be placed here during development. +export GOBIN ?= $(shell pwd)/bin + +GO_FILES = $(shell find . \ + -path '*/.*' -prune -o \ + '(' -type f -a -name '*.go' ')' -print) + +GOLINT = $(GOBIN)/golint +STATICCHECK = $(GOBIN)/staticcheck +TOOLS = $(GOLINT) $(STATICCHECK) + +.PHONY: all +all: build lint test + +.PHONY: build +build: + go build ./... + +.PHONY: test +test: + go test -v -race ./... + +.PHONY: cover +cover: + go test -race -coverprofile=cover.out -coverpkg=./... ./... + go tool cover -html=cover.out -o cover.html + +.PHONY: lint +lint: gofmt golint staticcheck + +.PHONY: gofmt +gofmt: + $(eval FMT_LOG := $(shell mktemp -t gofmt.XXXXX)) + @gofmt -e -s -l $(GO_FILES) > $(FMT_LOG) || true + @[ ! -s "$(FMT_LOG)" ] || \ + (echo "gofmt failed. Please reformat the following files:" | \ + cat - $(FMT_LOG) && false) + +.PHONY: golint +golint: $(GOLINT) + $(GOLINT) ./... + +.PHONY: staticcheck +staticcheck: $(STATICCHECK) + $(STATICCHECK) ./... + +tools: $(GOLINT) $(STATICCHECK) + +$(GOLINT): tools/go.mod + cd tools && go install golang.org/x/lint/golint + +$(STATICCHECK): tools/go.mod + cd tools && go install honnef.co/go/tools/cmd/staticcheck diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/README.md b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/README.md new file mode 100644 index 000000000..28d1bd375 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/README.md @@ -0,0 +1,42 @@ +[![Go Reference](https://pkg.go.dev/badge/github.com/abhinav/goldmark-wikilink.svg)](https://pkg.go.dev/github.com/abhinav/goldmark-wikilink) +[![Go](https://github.com/abhinav/goldmark-wikilink/actions/workflows/go.yml/badge.svg)](https://github.com/abhinav/goldmark-wikilink/actions/workflows/go.yml) +[![codecov](https://codecov.io/gh/abhinav/goldmark-wikilink/branch/main/graph/badge.svg?token=W98KYF8SPE)](https://codecov.io/gh/abhinav/goldmark-wikilink) + +goldmark-wikilink is an extension for the [goldmark] Markdown parser that +supports parsing `[[...]]`-style wiki links. + + [goldmark]: http://github.com/yuin/goldmark + +# Usage + +To use goldmark-wikilink, import the `wikilink` package. + +```go +import wikilink "github.com/abhinav/goldmark-wikilink" +``` + +Then include the `wiklink.Extender` in the list of extensions you build your +[`goldmark.Markdown`] with. + + [`goldmark.Markdown`]: https://pkg.go.dev/github.com/yuin/goldmark#Markdown + +```go +goldmark.New( + &wiklink.Extender{} + // ... +) +``` + +goldmark-wikilink provides control over destinations of wikilinks with the +`Resolver` type. Specify a custom `Resolver` to the `Extender` when installing +it. + +```go +goldmark.New( + &wiklink.Extender{ + Resolver: myresolver, + } + // ... +) +``` + diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/ast.go b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/ast.go new file mode 100644 index 000000000..d16ebce3d --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/ast.go @@ -0,0 +1,52 @@ +package wikilink + +import ( + "github.com/yuin/goldmark/ast" +) + +// Kind is the kind of the wikilink AST node. +var Kind = ast.NewNodeKind("WikiLink") + +// Node is a Wikilink AST node. Wikilinks have two components: the target and +// the label. +// +// The target is the page to which this link points, and the label is the text +// that displays for this link. +// +// For links in the following form, the label and the target are the same. +// +// [[Foo bar]] +// +// For links in the following form, the target is the portion of the link to +// the left of the "|", and the label is the portion to the right. +// +// [[Foo bar|baz qux]] +type Node struct { + ast.BaseInline + + // Page to which this wikilink points. + // + // This may be blank for links to headers within the same document + // like [[#Foo]]. + Target []byte + + // Fragment portion of the link, if any. + // + // For links in the form, [[Foo bar#Baz qux]], this is the portion + // after the "#". + Fragment []byte +} + +var _ ast.Node = (*Node)(nil) + +// Kind reports the kind of this node. +func (n *Node) Kind() ast.NodeKind { + return Kind +} + +// Dump dumps the Node to stdout. +func (n *Node) Dump(src []byte, level int) { + ast.DumpHelper(n, src, level, map[string]string{ + "Target": string(n.Target), + }, nil) +} diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/ast_test.go b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/ast_test.go new file mode 100644 index 000000000..51c70ac79 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/ast_test.go @@ -0,0 +1,41 @@ +package wikilink + +import ( + "io/ioutil" + "os" + "strings" + "testing" + + "github.com/stretchr/testify/require" + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" +) + +func TestNodeDump(t *testing.T) { + src := []byte("[[My page]]") + n := &Node{Target: src[2 : len(src)-2]} + n.AppendChild(n, ast.NewTextSegment(text.NewSegment(2, len(src)-2))) + + // Node.Dump writes to stdout and provides now ay of overriding that + // so we'll have to temporarily hijack os.Stdout. + out, err := ioutil.TempFile(t.TempDir(), "stdout") + require.NoError(t, err, "create temporary file") + defer func(out *os.File) { os.Stdout = out }(os.Stdout) + os.Stdout = out + + n.Dump(src, 0) + + require.NoError(t, out.Close(), "close stdout") + + got, err := ioutil.ReadFile(out.Name()) + require.NoError(t, err, "read stdout from %q", out.Name()) + + want := strings.Join([]string{ + "WikiLink {", + " Target: My page", + ` Text: "My page"`, + "}", + "", + }, "\n") + require.Equal(t, want, string(got), "dump output mismatch") +} diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/extender.go b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/extender.go new file mode 100644 index 000000000..31e08cc98 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/extender.go @@ -0,0 +1,38 @@ +package wikilink + +import ( + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer" + "github.com/yuin/goldmark/util" +) + +// Extender extends a goldmark Markdown object with support for parsing and +// rendering Wikilinks. +type Extender struct { + // Resoler specifies how to resolve destinations for linked pages. + // + // Uses DefaultResolver if unspecified. + Resolver Resolver +} + +// Extend extends the provided Markdown object with support for wikilinks. +func (e *Extender) Extend(md goldmark.Markdown) { + // The link parser is at priority 200 in goldmark so we need to be + // lower than that to ensure that the "[" trigger fires. + md.Parser().AddOptions( + parser.WithInlineParsers( + util.Prioritized(&Parser{}, 199), + ), + ) + + // The renderer priority matters less. Use the same just so that + // there's a reasonable expected value. + md.Renderer().AddOptions( + renderer.WithNodeRenderers( + util.Prioritized(&Renderer{ + Resolver: e.Resolver, + }, 199), + ), + ) +} diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/go.mod b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/go.mod new file mode 100644 index 000000000..85ed866c5 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/go.mod @@ -0,0 +1,8 @@ +module github.com/abhinav/goldmark-wikilink + +go 1.16 + +require ( + github.com/stretchr/testify v1.7.0 + github.com/yuin/goldmark v1.1.32 +) diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/go.sum b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/go.sum new file mode 100644 index 000000000..abf41c88b --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/go.sum @@ -0,0 +1,13 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/yuin/goldmark v1.1.32 h1:5tjfNdR2ki3yYQ842+eX2sQHeiwpKJ0RnHO4IYOc4V8= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/integration_test.go b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/integration_test.go new file mode 100644 index 000000000..dee41a564 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/integration_test.go @@ -0,0 +1,39 @@ +package wikilink_test + +import ( + "bytes" + "testing" + + wikilink "github.com/abhinav/goldmark-wikilink" + "github.com/yuin/goldmark" + goldtestutil "github.com/yuin/goldmark/testutil" +) + +func TestIntegration(t *testing.T) { + t.Parallel() + + goldtestutil.DoTestCaseFile( + goldmark.New(goldmark.WithExtensions(&wikilink.Extender{ + Resolver: _resolver, + })), + "testdata/tests.txt", + t, + ) +} + +var ( + _resolver = resolver{} + + // Links with this target will return a nil destination. + _doesNotExistTarget = []byte("Does Not Exist") +) + +type resolver struct{} + +func (resolver) ResolveWikilink(n *wikilink.Node) ([]byte, error) { + if bytes.Equal(n.Target, _doesNotExistTarget) { + return nil, nil + } + + return wikilink.DefaultResolver.ResolveWikilink(n) +} diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/parser.go b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/parser.go new file mode 100644 index 000000000..fe4c42bc0 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/parser.go @@ -0,0 +1,83 @@ +package wikilink + +import ( + "bytes" + + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/text" +) + +// Parser parses wikilinks. +// +// Install it on your goldmark Markdown object with Extender, or install it +// directly on your goldmark Parser by using the WithInlineParsers option. +// +// wikilinkParser := util.Prioritized(&wikilink.Parser{...}, 199) +// goldmarkParser.AddOptions(parser.WithInlineParsers(wikilinkParser)) +// +// Note that the priority for the wikilink parser must 199 or lower to take +// precednce over the plain Markdown link parser which has a priority of 200. +type Parser struct { +} + +var _ parser.InlineParser = (*Parser)(nil) + +var ( + _open = []byte("[[") + _pipe = []byte{'|'} + _hash = []byte{'#'} + _close = []byte("]]") +) + +// Trigger returns characters that trigger this parser. +func (p *Parser) Trigger() []byte { + return []byte{'['} +} + +// Parse parses a wikilink. It supports links in the following form. +// +// [[My page]] +// +// This will use "My page" as both, the target for the link as well as the +// plain text label for it. +// +// Optionally, links can specify a different label by adding a "|" after the +// target. +// +// [[My page|click here]] +// +// This will treat "My page" as the target and "click here" as the label for +// the link. +func (p *Parser) Parse(_ ast.Node, block text.Reader, _ parser.Context) ast.Node { + line, seg := block.PeekLine() + if !bytes.HasPrefix(line, _open) { + return nil + } + + stop := bytes.Index(line, _close) + if stop < 0 { + return nil // must close on the same ine + } + seg = text.NewSegment(seg.Start+2, seg.Start+stop) + + n := &Node{Target: block.Value(seg)} + if idx := bytes.Index(n.Target, _pipe); idx >= 0 { + n.Target = n.Target[:idx] // [[ ... | + seg = seg.WithStart(seg.Start + idx + 1) // | ... ]] + } + + if len(n.Target) == 0 || seg.Len() == 0 { + return nil // target and label must not be empty + } + + // Target may be Foo#Bar, so break them apart. + if idx := bytes.LastIndex(n.Target, _hash); idx >= 0 { + n.Fragment = n.Target[idx+1:] // Foo#Bar => Bar + n.Target = n.Target[:idx] // Foo#Bar => Foo + } + + n.AppendChild(n, ast.NewTextSegment(seg)) + block.Advance(stop + 2) + return n +} diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/parser_test.go b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/parser_test.go new file mode 100644 index 000000000..600b2ac44 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/parser_test.go @@ -0,0 +1,112 @@ +package wikilink + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/text" +) + +func TestParser(t *testing.T) { + t.Parallel() + + tests := []struct { + desc string + give string + + wantTarget string + wantLabel string + wantFragment string + + remainder string // unconsumed portion of tt.give + }{ + { + desc: "simple", + give: "[[foo]] bar", + wantTarget: "foo", + wantLabel: "foo", + remainder: " bar", + }, + { + desc: "spaces", + give: "[[foo bar]]baz", + wantTarget: "foo bar", + wantLabel: "foo bar", + remainder: "baz", + }, + { + desc: "label", + give: "[[foo|bar]]", + wantTarget: "foo", + wantLabel: "bar", + }, + { + desc: "label with spaces", + give: "[[foo bar|baz qux]] quux", + wantTarget: "foo bar", + wantLabel: "baz qux", + remainder: " quux", + }, + { + desc: "fragment", + give: "[[foo#bar]] baz", + wantTarget: "foo", + wantLabel: "foo#bar", + wantFragment: "bar", + remainder: " baz", + }, + { + desc: "fragment with label", + give: "[[foo#bar|baz]]", + wantTarget: "foo", + wantLabel: "baz", + wantFragment: "bar", + }, + { + desc: "fragment without target", + give: "[[#foo]]", + wantTarget: "", + wantLabel: "#foo", + wantFragment: "foo", + }, + { + desc: "fragment without target with label", + give: "[[#foo|bar]]", + wantTarget: "", + wantLabel: "bar", + wantFragment: "foo", + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.desc, func(t *testing.T) { + t.Parallel() + + r := text.NewReader([]byte(tt.give)) + + var p Parser + got := p.Parse(nil /* parent */, r, parser.NewContext()) + require.NotNil(t, got, "expected Node, got nil") + + if n, ok := got.(*Node); assert.True(t, ok, "expected Node, got %T", got) { + assert.Equal(t, tt.wantTarget, string(n.Target), "target mismatch") + assert.Equal(t, tt.wantFragment, string(n.Fragment), "fragment mismatch") + } + + if assert.Equal(t, 1, got.ChildCount(), "children mismatch") { + child := got.FirstChild() + if label, ok := child.(*ast.Text); assert.True(t, ok, "expected Text, got %T", child) { + assert.Equal(t, tt.wantLabel, string(r.Value(label.Segment)), "label mismatch") + } + } + + _, pos := r.Position() + assert.Equal(t, tt.remainder, string(r.Value(pos)), + "remaining text does not match") + }) + } +} diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/renderer.go b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/renderer.go new file mode 100644 index 000000000..42cb2232c --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/renderer.go @@ -0,0 +1,106 @@ +package wikilink + +import ( + "fmt" + "sync" + + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/renderer" + "github.com/yuin/goldmark/util" +) + +// Renderer renders wikilinks as HTML. +// +// Install it on your goldmark Markdown object with Extender, or directly on a +// goldmark Renderer by using the WithNodeRenderers option. +// +// wikilinkRenderer := util.Prioritized(&wikilink.Renderer{...}, 199) +// goldmarkRenderer.AddOptions(renderer.WithNodeRenderers(wikilinkRenderer)) +type Renderer struct { + // Resolver determines destinations for wikilink pages. + // + // If a Resolver returns an empty destination, the Renderer will skip + // the link and render just its contents. That is, instead of, + // + // bar + // + // The renderer will render just the following. + // + // bar + // + // Defaults to DefaultResolver if unspecified. + Resolver Resolver + + once sync.Once // guards init + + // hasDest records whether a node had a destination when we resolved + // it. This is needed to decide whether a closing must be added + // when exiting a Node render. + hasDest map[*Node]struct{} +} + +func (r *Renderer) init() { + r.once.Do(func() { + r.hasDest = make(map[*Node]struct{}) + if r.Resolver == nil { + r.Resolver = DefaultResolver + } + }) +} + +// RegisterFuncs registers wikilink rendering functions with the provided +// goldmark registerer. This teaches goldmark to call us when it encounters a +// wikilink in the AST. +func (r *Renderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) { + reg.Register(Kind, r.Render) +} + +// Render renders the provided Node. It must be a Wikilink node. +// +// goldmark will call this method if this renderer was registered with it +// using the WithNodeRenderers option. +func (r *Renderer) Render(w util.BufWriter, _ []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + r.init() + + n, ok := node.(*Node) + if !ok { + return ast.WalkStop, fmt.Errorf("unexpected node %T, expected *goldmarkwikilink.Node", node) + } + + if entering { + if err := r.enter(w, n); err != nil { + return ast.WalkStop, err + } + } else { + r.exit(w, n) + } + + return ast.WalkContinue, nil +} + +func (r *Renderer) enter(w util.BufWriter, n *Node) error { + dest, err := r.Resolver.ResolveWikilink(n) + if err != nil { + return fmt.Errorf("resolve %q: %w", n.Target, err) + } + if len(dest) == 0 { + return nil + } + + r.hasDest[n] = struct{}{} + w.WriteString(``) + return nil +} + +func (r *Renderer) exit(w util.BufWriter, n *Node) { + _, ok := r.hasDest[n] + if !ok { + return + } + + w.WriteString("") + // Avoid memory leaks by cleaning up after exiting the node. + delete(r.hasDest, n) +} diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/renderer_test.go b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/renderer_test.go new file mode 100644 index 000000000..8af96e865 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/renderer_test.go @@ -0,0 +1,119 @@ +package wikilink + +import ( + "bufio" + "bytes" + "errors" + "io/ioutil" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/yuin/goldmark/ast" +) + +func TestRenderer(t *testing.T) { + t.Parallel() + + t.Run("default resolver", func(t *testing.T) { + t.Parallel() + + var ( + r Renderer + buff bytes.Buffer + w = bufio.NewWriter(&buff) + n = &Node{Target: []byte("foo")} + ) + + _, err := r.Render(w, nil /* source */, n, true /* entering */) + require.NoError(t, err, "should not fail") + require.NoError(t, w.Flush(), "flush") + + assert.Equal(t, ``, buff.String(), + "output mismatch") + }) + + t.Run("custom resolver", func(t *testing.T) { + t.Parallel() + + var ( + buff bytes.Buffer + w = bufio.NewWriter(&buff) + resolved bool + ) + defer func() { + assert.True(t, resolved, "custom resolver was never invoked") + }() + + n := &Node{Target: []byte("foo")} + r := Renderer{ + Resolver: resolverFunc(func(n *Node) ([]byte, error) { + assert.False(t, resolved, "resolver invoked too many times") + resolved = true + + assert.Equal(t, "foo", string(n.Target), "target mismatch") + return []byte("bar.html"), nil + }), + } + + _, err := r.Render(w, nil /* source */, n, true /* entering */) + require.NoError(t, err, "should not fail") + require.NoError(t, w.Flush(), "flush") + + assert.Equal(t, ``, buff.String(), + "output mismatch") + }) + + t.Run("no link", func(t *testing.T) { + t.Parallel() + var ( + buff bytes.Buffer + w = bufio.NewWriter(&buff) + ) + + n := &Node{Target: []byte("foo")} + r := Renderer{ + Resolver: resolverFunc(noopResolver), + } + + _, err := r.Render(w, nil /* source */, n, true /* entering */) + require.NoError(t, err, "should not fail") + + _, err = r.Render(w, nil /* source */, n, false /* entering */) + require.NoError(t, err, "should not fail") + + require.NoError(t, w.Flush(), "flush") + assert.Empty(t, buff.String(), "output should be empty") + }) +} + +func TestRenderer_IncorrectNode(t *testing.T) { + t.Parallel() + + var r Renderer + _, err := r.Render(bufio.NewWriter(ioutil.Discard), nil /* src */, ast.NewText(), true /* enter */) + require.Error(t, err, "render with incorrect node must fail") + assert.Contains(t, err.Error(), "unexpected node") +} + +func TestRenderer_ResolveError(t *testing.T) { + t.Parallel() + + r := Renderer{ + Resolver: resolverFunc(func(*Node) ([]byte, error) { + return nil, errors.New("great sadness") + }), + } + _, err := r.Render( + bufio.NewWriter(ioutil.Discard), + nil, // source + &Node{Target: []byte("foo")}, + true, // entering + ) + require.Error(t, err, "render with incorrect node must fail") + assert.Contains(t, err.Error(), "great sadness") +} + +func noopResolver(*Node) ([]byte, error) { + return nil, nil +} diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/resolver.go b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/resolver.go new file mode 100644 index 000000000..7fdb2fd6f --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/resolver.go @@ -0,0 +1,44 @@ +package wikilink + +// DefaultResolver is a minimal wiklink resolver that resolves to HTML pages +// relative to the source page. +// +// For example, +// +// [[Foo]] // => "Foo.html" +// [[Foo bar]] // => "Foo bar.html" +// [[foo/Bar]] // => "foo/Bar.html" +var DefaultResolver Resolver = defaultResolver{} + +// Resolver resolves pages referenced by wikilinks to their destinations. +type Resolver interface { + // ResolveWikilink returns the address of the page that the provided + // wikilink points to. The destination will be URL-escaped before + // being placed into a link. + // + // If ResolveWikilink returns a non-nil error, rendering will be + // halted. + // + // If ResolveWikilink returns a nil destination and error, the + // Renderer will omit the link and render its contents as a regular + // string. + ResolveWikilink(*Node) (destination []byte, err error) +} + +var _html = []byte(".html") + +type defaultResolver struct{} + +func (defaultResolver) ResolveWikilink(n *Node) ([]byte, error) { + dest := make([]byte, len(n.Target)+len(_html)+len(_hash)+len(n.Fragment)) + var i int + if len(n.Target) > 0 { + i += copy(dest, n.Target) + i += copy(dest[i:], _html) + } + if len(n.Fragment) > 0 { + i += copy(dest[i:], _hash) + i += copy(dest[i:], n.Fragment) + } + return dest[:i], nil +} diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/resolver_test.go b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/resolver_test.go new file mode 100644 index 000000000..01f8099e3 --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/resolver_test.go @@ -0,0 +1,67 @@ +package wikilink + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +type resolverFunc func(*Node) ([]byte, error) + +func (f resolverFunc) ResolveWikilink(n *Node) ([]byte, error) { + return f(n) +} + +func TestDefaultResolver(t *testing.T) { + t.Parallel() + + tests := []struct { + target string + fragment string + want string + }{ + { + target: "foo", + want: "foo.html", + }, + { + target: "foo bar", + want: "foo bar.html", + }, + { + target: "foo/bar", + want: "foo/bar.html", + }, + { + target: "foo", + fragment: "bar", + want: "foo.html#bar", + }, + { + target: "foo/bar", + fragment: "baz", + want: "foo/bar.html#baz", + }, + { + fragment: "foo", + want: "#foo", + }, + } + + for _, tt := range tests { + tt := tt + name := fmt.Sprintf("%v#%v", tt.target, tt.fragment) + t.Run(name, func(t *testing.T) { + t.Parallel() + + got, err := DefaultResolver.ResolveWikilink(&Node{ + Target: []byte(tt.target), + Fragment: []byte(tt.fragment), + }) + require.NoError(t, err, "resolve failed") + assert.Equal(t, tt.want, string(got), "result mismatch") + }) + } +} diff --git a/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/testdata/tests.txt b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/testdata/tests.txt new file mode 100644 index 000000000..64866912f --- /dev/null +++ b/pkg/mod/github.com/abhinav/goldmark-wikilink@v0.3.0/testdata/tests.txt @@ -0,0 +1,106 @@ +1 +//- - - - - - - - -// +[[Simple]] link. +//- - - - - - - - -// +

      Simple link.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +2 +//- - - - - - - - -// +Links [[with|label]]. +//- - - - - - - - -// +

      Links label.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +3 +//- - - - - - - - -// +Links [[can have spaces]]. +//- - - - - - - - -// +

      Links can have spaces.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +4 +//- - - - - - - - -// +Labels [[can have|spaces too]]. +//- - - - - - - - -// +

      Labels spaces too.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +5 +//- - - - - - - - -// +Links can not [[go across +lines]] +//- - - - - - - - -// +

      Links can not [[go across +lines]]

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +6 +//- - - - - - - - -// +Labels can not [[go across| +lines]]. +//- - - - - - - - -// +

      Labels can not [[go across| +lines]].

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +7 +//- - - - - - - - -// +Formatting in [[links *is* _taken_ ~~verbatim~~]]. +//- - - - - - - - -// +

      Formatting in links *is* _taken_ ~~verbatim~~.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +8 +//- - - - - - - - -// +Empty links are not allowed [[]]. +//- - - - - - - - -// +

      Empty links are not allowed [[]].

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +9 +//- - - - - - - - -// +Empty links are not allowed even with labels [[|Foo]]. +//- - - - - - - - -// +

      Empty links are not allowed even with labels [[|Foo]].

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +10 +//- - - - - - - - -// +Empty labels are not allowed [[Foo|]]. +//- - - - - - - - -// +

      Empty labels are not allowed [[Foo|]].

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +11 +//- - - - - - - - -// +Does not mess up [regular links](dest.html). +//- - - - - - - - -// +

      Does not mess up regular links.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +12 +//- - - - - - - - -// +Supports [[Fragments#In Links]]. +//- - - - - - - - -// +

      Supports Fragments#In Links.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +13 +//- - - - - - - - -// +Links [[with fragments#can have|labels]]. +//- - - - - - - - -// +

      Links labels.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +14 +//- - - - - - - - -// +[[#Relative]] links. +//- - - - - - - - -// +

      #Relative links.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +15 +//- - - - - - - - -// +Relative [[#Links|with labels]]. +//- - - - - - - - -// +

      Relative with labels.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +16 +//- - - - - - - - -// +Page that [[Does Not Exist]]. +//- - - - - - - - -// +

      Page that Does Not Exist.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// +17 +//- - - - - - - - -// +Page that [[Does Not Exist|has a label]]. +//- - - - - - - - -// +

      Page that has a label.

      +//= = = = = = = = = = = = = = = = = = = = = = = =// diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/.travis.yml b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/.travis.yml new file mode 100644 index 000000000..6f227517d --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/.travis.yml @@ -0,0 +1,14 @@ +language: go + +go: + - 1.3 + - 1.4 + +install: + - go get github.com/andybalholm/cascadia + +script: + - go test -v + +notifications: + email: false diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/LICENSE b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/LICENSE new file mode 100644 index 000000000..ee5ad35ac --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/LICENSE @@ -0,0 +1,24 @@ +Copyright (c) 2011 Andy Balholm. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/README.md b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/README.md new file mode 100644 index 000000000..26f4c37b3 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/README.md @@ -0,0 +1,9 @@ +# cascadia + +[![](https://travis-ci.org/andybalholm/cascadia.svg)](https://travis-ci.org/andybalholm/cascadia) + +The Cascadia package implements CSS selectors for use with the parse trees produced by the html package. + +To test CSS selectors without writing Go code, check out [cascadia](https://github.com/suntong/cascadia) the command line tool, a thin wrapper around this package. + +[Refer to godoc here](https://godoc.org/github.com/andybalholm/cascadia). diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/benchmark_test.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/benchmark_test.go new file mode 100644 index 000000000..42bf50006 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/benchmark_test.go @@ -0,0 +1,53 @@ +package cascadia + +import ( + "strings" + "testing" + + "golang.org/x/net/html" +) + +func MustParseHTML(doc string) *html.Node { + dom, err := html.Parse(strings.NewReader(doc)) + if err != nil { + panic(err) + } + return dom +} + +var selector = MustCompile(`div.matched`) +var doc = ` + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + +` +var dom = MustParseHTML(doc) + +func BenchmarkMatchAll(b *testing.B) { + var matches []*html.Node + for i := 0; i < b.N; i++ { + matches = selector.MatchAll(dom) + } + _ = matches +} diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test0 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test0 new file mode 100644 index 000000000..83a6561a7 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test0 @@ -0,0 +1 @@ +address \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test1 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test1 new file mode 100644 index 000000000..f59ec20aa --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test1 @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test10 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test10 new file mode 100644 index 000000000..0ee70eb00 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test10 @@ -0,0 +1 @@ +p[title] \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test11 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test11 new file mode 100644 index 000000000..66340c4af --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test11 @@ -0,0 +1 @@ +address[title="foo"] \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test12 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test12 new file mode 100644 index 000000000..6303f0869 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test12 @@ -0,0 +1 @@ +[ title ~= foo ] \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test13 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test13 new file mode 100644 index 000000000..45d91eb63 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test13 @@ -0,0 +1 @@ +[title~="hello world"] \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test14 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test14 new file mode 100644 index 000000000..62e7d68a8 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test14 @@ -0,0 +1 @@ +[lang|="en"] \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test15 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test15 new file mode 100644 index 000000000..fe9ab530e --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test15 @@ -0,0 +1 @@ +[title^="foo"] \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test16 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test16 new file mode 100644 index 000000000..dbee7332c --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test16 @@ -0,0 +1 @@ +[title$="bar"] \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test17 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test17 new file mode 100644 index 000000000..e4fb4032c --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test17 @@ -0,0 +1 @@ +[title*="bar"] \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test18 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test18 new file mode 100644 index 000000000..607501436 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test18 @@ -0,0 +1 @@ +.t1:not(.t2) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test19 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test19 new file mode 100644 index 000000000..f04dfafd4 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test19 @@ -0,0 +1 @@ +div:not(.t1) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test2 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test2 new file mode 100644 index 000000000..5529b9b4c --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test2 @@ -0,0 +1 @@ +#foo \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test20 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test20 new file mode 100644 index 000000000..a1c883497 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test20 @@ -0,0 +1 @@ +li:nth-child(odd) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test21 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test21 new file mode 100644 index 000000000..b99fcb6ac --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test21 @@ -0,0 +1 @@ +li:nth-child(even) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test22 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test22 new file mode 100644 index 000000000..a9ee21795 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test22 @@ -0,0 +1 @@ +li:nth-child(-n+2) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test23 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test23 new file mode 100644 index 000000000..aad519d55 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test23 @@ -0,0 +1 @@ +li:nth-child(3n+1) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test24 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test24 new file mode 100644 index 000000000..436a2191c --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test24 @@ -0,0 +1 @@ +li:nth-last-child(odd) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test25 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test25 new file mode 100644 index 000000000..46f6cbc27 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test25 @@ -0,0 +1 @@ +li:nth-last-child(even) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test26 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test26 new file mode 100644 index 000000000..d18bf3b45 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test26 @@ -0,0 +1 @@ +li:nth-last-child(-n+2) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test27 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test27 new file mode 100644 index 000000000..d1d6eb317 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test27 @@ -0,0 +1 @@ +li:nth-last-child(3n+1) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test28 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test28 new file mode 100644 index 000000000..9a0c94931 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test28 @@ -0,0 +1 @@ +span:first-child \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test29 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test29 new file mode 100644 index 000000000..7058608ec --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test29 @@ -0,0 +1 @@ +span:last-child \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test3 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test3 new file mode 100644 index 000000000..ee024825f --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test3 @@ -0,0 +1 @@ +li#t1 \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test30 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test30 new file mode 100644 index 000000000..536e6ffb3 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test30 @@ -0,0 +1 @@ +p:nth-of-type(2) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test31 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test31 new file mode 100644 index 000000000..61c1fc758 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test31 @@ -0,0 +1 @@ +p:nth-last-of-type(2) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test32 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test32 new file mode 100644 index 000000000..d9a9dc54b --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test32 @@ -0,0 +1 @@ +p:last-of-type \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test33 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test33 new file mode 100644 index 000000000..9052c4194 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test33 @@ -0,0 +1 @@ +p:first-of-type \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test34 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test34 new file mode 100644 index 000000000..60bd12471 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test34 @@ -0,0 +1 @@ +p:only-child \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test35 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test35 new file mode 100644 index 000000000..87d9dbc65 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test35 @@ -0,0 +1 @@ +p:only-of-type \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test36 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test36 new file mode 100644 index 000000000..8e9295421 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test36 @@ -0,0 +1 @@ +:empty \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test37 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test37 new file mode 100644 index 000000000..ba3455f5b --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test37 @@ -0,0 +1 @@ +div p \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test38 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test38 new file mode 100644 index 000000000..d6f24c0af --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test38 @@ -0,0 +1 @@ +div table p \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test39 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test39 new file mode 100644 index 000000000..a72a605cf --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test39 @@ -0,0 +1 @@ +div > p \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test4 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test4 new file mode 100644 index 000000000..7b253d3ee --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test4 @@ -0,0 +1 @@ +*#t4 \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test40 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test40 new file mode 100644 index 000000000..407ea3c42 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test40 @@ -0,0 +1 @@ +p ~ p \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test41 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test41 new file mode 100644 index 000000000..e36e0942f --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test41 @@ -0,0 +1 @@ +p + p \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test42 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test42 new file mode 100644 index 000000000..fa59ada06 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test42 @@ -0,0 +1 @@ +li, p \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test43 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test43 new file mode 100644 index 000000000..e946ff3aa --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test43 @@ -0,0 +1 @@ +p +/*This is a comment*/ p \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test44 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test44 new file mode 100644 index 000000000..df68954ae --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test44 @@ -0,0 +1 @@ +p:contains("that wraps") \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test45 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test45 new file mode 100644 index 000000000..5c479a9a1 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test45 @@ -0,0 +1 @@ +p:containsOwn("that wraps") \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test46 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test46 new file mode 100644 index 000000000..a189d03cb --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test46 @@ -0,0 +1 @@ +:containsOwn("inner") \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test47 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test47 new file mode 100644 index 000000000..bfba3689e --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test47 @@ -0,0 +1 @@ +p:containsOwn("block") \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test48 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test48 new file mode 100644 index 000000000..4a6abb3ce --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test48 @@ -0,0 +1 @@ +div:has(#p1) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test49 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test49 new file mode 100644 index 000000000..2048a0cd8 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test49 @@ -0,0 +1 @@ +div:has(:containsOwn("2")) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test5 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test5 new file mode 100644 index 000000000..702c0f1e5 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test5 @@ -0,0 +1 @@ +.t1 \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test50 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test50 new file mode 100644 index 000000000..c062e4c1b --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test50 @@ -0,0 +1 @@ +body :has(:containsOwn("2")) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test51 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test51 new file mode 100644 index 000000000..151226047 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test51 @@ -0,0 +1 @@ +body :haschild(:containsOwn("2")) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test52 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test52 new file mode 100644 index 000000000..c3dee62a8 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test52 @@ -0,0 +1 @@ +p:matches([\d]) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test53 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test53 new file mode 100644 index 000000000..90f71d782 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test53 @@ -0,0 +1 @@ +p:matches([a-z]) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test54 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test54 new file mode 100644 index 000000000..88b4c2830 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test54 @@ -0,0 +1 @@ +p:matches([a-zA-Z]) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test55 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test55 new file mode 100644 index 000000000..699b41ffd --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test55 @@ -0,0 +1 @@ +p:matches([^\d]) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test56 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test56 new file mode 100644 index 000000000..83d4c474b --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test56 @@ -0,0 +1 @@ +p:matches(^(0|a)) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test57 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test57 new file mode 100644 index 000000000..e8507ba67 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test57 @@ -0,0 +1 @@ +p:matches(^\d+$) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test58 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test58 new file mode 100644 index 000000000..e29dba9b3 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test58 @@ -0,0 +1 @@ +p:not(:matches(^\d+$)) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test59 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test59 new file mode 100644 index 000000000..b5f72069a --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test59 @@ -0,0 +1 @@ +div :matchesOwn(^\d+$) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test6 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test6 new file mode 100644 index 000000000..cf58afccd --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test6 @@ -0,0 +1 @@ +p.t1 \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test60 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test60 new file mode 100644 index 000000000..2154ba88b --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test60 @@ -0,0 +1 @@ +[href#=(fina)]:not([href#=(\/\/[^\/]+untrusted)]) \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test61 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test61 new file mode 100644 index 000000000..1c8f5258e --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test61 @@ -0,0 +1 @@ +[href#=(^https:\/\/[^\/]*\/?news)] \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test7 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test7 new file mode 100644 index 000000000..9ad6c2093 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test7 @@ -0,0 +1 @@ +div.teST \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test8 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test8 new file mode 100644 index 000000000..2ed128422 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test8 @@ -0,0 +1 @@ +.t1.fail \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test9 b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test9 new file mode 100644 index 000000000..8c1c2a272 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/corpus/test9 @@ -0,0 +1 @@ +p.t1.t2 \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/fuzz.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/fuzz.go new file mode 100644 index 000000000..d1a46f8cb --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/fuzz/fuzz.go @@ -0,0 +1,15 @@ +package fuzz + +import "github.com/andybalholm/cascadia" + +// Fuzz is the entrypoint used by the go-fuzz framework +func Fuzz(data []byte) int { + sel, err := cascadia.Compile(string(data)) + if err != nil { + if sel != nil { + panic("sel != nil on error") + } + return 0 + } + return 1 +} diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/go.mod b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/go.mod new file mode 100644 index 000000000..ee72d3fe0 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/go.mod @@ -0,0 +1,5 @@ +module github.com/andybalholm/cascadia + +go 1.16 + +require golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/go.sum b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/go.sum new file mode 100644 index 000000000..0f4194c57 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/go.sum @@ -0,0 +1,7 @@ +golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 h1:/6y1LfuqNuQdHAm0jjtPtgRcxIxjVZgm5OTu8/QhZvk= +golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/parser.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/parser.go new file mode 100644 index 000000000..f654c0c7a --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/parser.go @@ -0,0 +1,887 @@ +// Package cascadia is an implementation of CSS selectors. +package cascadia + +import ( + "errors" + "fmt" + "regexp" + "strconv" + "strings" +) + +// a parser for CSS selectors +type parser struct { + s string // the source text + i int // the current position + + // if `false`, parsing a pseudo-element + // returns an error. + acceptPseudoElements bool +} + +// parseEscape parses a backslash escape. +func (p *parser) parseEscape() (result string, err error) { + if len(p.s) < p.i+2 || p.s[p.i] != '\\' { + return "", errors.New("invalid escape sequence") + } + + start := p.i + 1 + c := p.s[start] + switch { + case c == '\r' || c == '\n' || c == '\f': + return "", errors.New("escaped line ending outside string") + case hexDigit(c): + // unicode escape (hex) + var i int + for i = start; i < start+6 && i < len(p.s) && hexDigit(p.s[i]); i++ { + // empty + } + v, _ := strconv.ParseUint(p.s[start:i], 16, 64) + if len(p.s) > i { + switch p.s[i] { + case '\r': + i++ + if len(p.s) > i && p.s[i] == '\n' { + i++ + } + case ' ', '\t', '\n', '\f': + i++ + } + } + p.i = i + return string(rune(v)), nil + } + + // Return the literal character after the backslash. + result = p.s[start : start+1] + p.i += 2 + return result, nil +} + +// toLowerASCII returns s with all ASCII capital letters lowercased. +func toLowerASCII(s string) string { + var b []byte + for i := 0; i < len(s); i++ { + if c := s[i]; 'A' <= c && c <= 'Z' { + if b == nil { + b = make([]byte, len(s)) + copy(b, s) + } + b[i] = s[i] + ('a' - 'A') + } + } + + if b == nil { + return s + } + + return string(b) +} + +func hexDigit(c byte) bool { + return '0' <= c && c <= '9' || 'a' <= c && c <= 'f' || 'A' <= c && c <= 'F' +} + +// nameStart returns whether c can be the first character of an identifier +// (not counting an initial hyphen, or an escape sequence). +func nameStart(c byte) bool { + return 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || c == '_' || c > 127 +} + +// nameChar returns whether c can be a character within an identifier +// (not counting an escape sequence). +func nameChar(c byte) bool { + return 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || c == '_' || c > 127 || + c == '-' || '0' <= c && c <= '9' +} + +// parseIdentifier parses an identifier. +func (p *parser) parseIdentifier() (result string, err error) { + startingDash := false + if len(p.s) > p.i && p.s[p.i] == '-' { + startingDash = true + p.i++ + } + + if len(p.s) <= p.i { + return "", errors.New("expected identifier, found EOF instead") + } + + if c := p.s[p.i]; !(nameStart(c) || c == '\\') { + return "", fmt.Errorf("expected identifier, found %c instead", c) + } + + result, err = p.parseName() + if startingDash && err == nil { + result = "-" + result + } + return +} + +// parseName parses a name (which is like an identifier, but doesn't have +// extra restrictions on the first character). +func (p *parser) parseName() (result string, err error) { + i := p.i +loop: + for i < len(p.s) { + c := p.s[i] + switch { + case nameChar(c): + start := i + for i < len(p.s) && nameChar(p.s[i]) { + i++ + } + result += p.s[start:i] + case c == '\\': + p.i = i + val, err := p.parseEscape() + if err != nil { + return "", err + } + i = p.i + result += val + default: + break loop + } + } + + if result == "" { + return "", errors.New("expected name, found EOF instead") + } + + p.i = i + return result, nil +} + +// parseString parses a single- or double-quoted string. +func (p *parser) parseString() (result string, err error) { + i := p.i + if len(p.s) < i+2 { + return "", errors.New("expected string, found EOF instead") + } + + quote := p.s[i] + i++ + +loop: + for i < len(p.s) { + switch p.s[i] { + case '\\': + if len(p.s) > i+1 { + switch c := p.s[i+1]; c { + case '\r': + if len(p.s) > i+2 && p.s[i+2] == '\n' { + i += 3 + continue loop + } + fallthrough + case '\n', '\f': + i += 2 + continue loop + } + } + p.i = i + val, err := p.parseEscape() + if err != nil { + return "", err + } + i = p.i + result += val + case quote: + break loop + case '\r', '\n', '\f': + return "", errors.New("unexpected end of line in string") + default: + start := i + for i < len(p.s) { + if c := p.s[i]; c == quote || c == '\\' || c == '\r' || c == '\n' || c == '\f' { + break + } + i++ + } + result += p.s[start:i] + } + } + + if i >= len(p.s) { + return "", errors.New("EOF in string") + } + + // Consume the final quote. + i++ + + p.i = i + return result, nil +} + +// parseRegex parses a regular expression; the end is defined by encountering an +// unmatched closing ')' or ']' which is not consumed +func (p *parser) parseRegex() (rx *regexp.Regexp, err error) { + i := p.i + if len(p.s) < i+2 { + return nil, errors.New("expected regular expression, found EOF instead") + } + + // number of open parens or brackets; + // when it becomes negative, finished parsing regex + open := 0 + +loop: + for i < len(p.s) { + switch p.s[i] { + case '(', '[': + open++ + case ')', ']': + open-- + if open < 0 { + break loop + } + } + i++ + } + + if i >= len(p.s) { + return nil, errors.New("EOF in regular expression") + } + rx, err = regexp.Compile(p.s[p.i:i]) + p.i = i + return rx, err +} + +// skipWhitespace consumes whitespace characters and comments. +// It returns true if there was actually anything to skip. +func (p *parser) skipWhitespace() bool { + i := p.i + for i < len(p.s) { + switch p.s[i] { + case ' ', '\t', '\r', '\n', '\f': + i++ + continue + case '/': + if strings.HasPrefix(p.s[i:], "/*") { + end := strings.Index(p.s[i+len("/*"):], "*/") + if end != -1 { + i += end + len("/**/") + continue + } + } + } + break + } + + if i > p.i { + p.i = i + return true + } + + return false +} + +// consumeParenthesis consumes an opening parenthesis and any following +// whitespace. It returns true if there was actually a parenthesis to skip. +func (p *parser) consumeParenthesis() bool { + if p.i < len(p.s) && p.s[p.i] == '(' { + p.i++ + p.skipWhitespace() + return true + } + return false +} + +// consumeClosingParenthesis consumes a closing parenthesis and any preceding +// whitespace. It returns true if there was actually a parenthesis to skip. +func (p *parser) consumeClosingParenthesis() bool { + i := p.i + p.skipWhitespace() + if p.i < len(p.s) && p.s[p.i] == ')' { + p.i++ + return true + } + p.i = i + return false +} + +// parseTypeSelector parses a type selector (one that matches by tag name). +func (p *parser) parseTypeSelector() (result tagSelector, err error) { + tag, err := p.parseIdentifier() + if err != nil { + return + } + return tagSelector{tag: toLowerASCII(tag)}, nil +} + +// parseIDSelector parses a selector that matches by id attribute. +func (p *parser) parseIDSelector() (idSelector, error) { + if p.i >= len(p.s) { + return idSelector{}, fmt.Errorf("expected id selector (#id), found EOF instead") + } + if p.s[p.i] != '#' { + return idSelector{}, fmt.Errorf("expected id selector (#id), found '%c' instead", p.s[p.i]) + } + + p.i++ + id, err := p.parseName() + if err != nil { + return idSelector{}, err + } + + return idSelector{id: id}, nil +} + +// parseClassSelector parses a selector that matches by class attribute. +func (p *parser) parseClassSelector() (classSelector, error) { + if p.i >= len(p.s) { + return classSelector{}, fmt.Errorf("expected class selector (.class), found EOF instead") + } + if p.s[p.i] != '.' { + return classSelector{}, fmt.Errorf("expected class selector (.class), found '%c' instead", p.s[p.i]) + } + + p.i++ + class, err := p.parseIdentifier() + if err != nil { + return classSelector{}, err + } + + return classSelector{class: class}, nil +} + +// parseAttributeSelector parses a selector that matches by attribute value. +func (p *parser) parseAttributeSelector() (attrSelector, error) { + if p.i >= len(p.s) { + return attrSelector{}, fmt.Errorf("expected attribute selector ([attribute]), found EOF instead") + } + if p.s[p.i] != '[' { + return attrSelector{}, fmt.Errorf("expected attribute selector ([attribute]), found '%c' instead", p.s[p.i]) + } + + p.i++ + p.skipWhitespace() + key, err := p.parseIdentifier() + if err != nil { + return attrSelector{}, err + } + key = toLowerASCII(key) + + p.skipWhitespace() + if p.i >= len(p.s) { + return attrSelector{}, errors.New("unexpected EOF in attribute selector") + } + + if p.s[p.i] == ']' { + p.i++ + return attrSelector{key: key, operation: ""}, nil + } + + if p.i+2 >= len(p.s) { + return attrSelector{}, errors.New("unexpected EOF in attribute selector") + } + + op := p.s[p.i : p.i+2] + if op[0] == '=' { + op = "=" + } else if op[1] != '=' { + return attrSelector{}, fmt.Errorf(`expected equality operator, found "%s" instead`, op) + } + p.i += len(op) + + p.skipWhitespace() + if p.i >= len(p.s) { + return attrSelector{}, errors.New("unexpected EOF in attribute selector") + } + var val string + var rx *regexp.Regexp + if op == "#=" { + rx, err = p.parseRegex() + } else { + switch p.s[p.i] { + case '\'', '"': + val, err = p.parseString() + default: + val, err = p.parseIdentifier() + } + } + if err != nil { + return attrSelector{}, err + } + + p.skipWhitespace() + if p.i >= len(p.s) { + return attrSelector{}, errors.New("unexpected EOF in attribute selector") + } + + // check if the attribute contains an ignore case flag + ignoreCase := false + if p.s[p.i] == 'i' || p.s[p.i] == 'I' { + ignoreCase = true + p.i++ + } + + p.skipWhitespace() + if p.i >= len(p.s) { + return attrSelector{}, errors.New("unexpected EOF in attribute selector") + } + + if p.s[p.i] != ']' { + return attrSelector{}, fmt.Errorf("expected ']', found '%c' instead", p.s[p.i]) + } + p.i++ + + switch op { + case "=", "!=", "~=", "|=", "^=", "$=", "*=", "#=": + return attrSelector{key: key, val: val, operation: op, regexp: rx, insensitive: ignoreCase}, nil + default: + return attrSelector{}, fmt.Errorf("attribute operator %q is not supported", op) + } +} + +var ( + errExpectedParenthesis = errors.New("expected '(' but didn't find it") + errExpectedClosingParenthesis = errors.New("expected ')' but didn't find it") + errUnmatchedParenthesis = errors.New("unmatched '('") +) + +// parsePseudoclassSelector parses a pseudoclass selector like :not(p) or a pseudo-element +// For backwards compatibility, both ':' and '::' prefix are allowed for pseudo-elements. +// https://drafts.csswg.org/selectors-3/#pseudo-elements +// Returning a nil `Sel` (and a nil `error`) means we found a pseudo-element. +func (p *parser) parsePseudoclassSelector() (out Sel, pseudoElement string, err error) { + if p.i >= len(p.s) { + return nil, "", fmt.Errorf("expected pseudoclass selector (:pseudoclass), found EOF instead") + } + if p.s[p.i] != ':' { + return nil, "", fmt.Errorf("expected attribute selector (:pseudoclass), found '%c' instead", p.s[p.i]) + } + + p.i++ + var mustBePseudoElement bool + if p.i >= len(p.s) { + return nil, "", fmt.Errorf("got empty pseudoclass (or pseudoelement)") + } + if p.s[p.i] == ':' { // we found a pseudo-element + mustBePseudoElement = true + p.i++ + } + + name, err := p.parseIdentifier() + if err != nil { + return + } + name = toLowerASCII(name) + if mustBePseudoElement && (name != "after" && name != "backdrop" && name != "before" && + name != "cue" && name != "first-letter" && name != "first-line" && name != "grammar-error" && + name != "marker" && name != "placeholder" && name != "selection" && name != "spelling-error") { + return out, "", fmt.Errorf("unknown pseudoelement :%s", name) + } + + switch name { + case "not", "has", "haschild": + if !p.consumeParenthesis() { + return out, "", errExpectedParenthesis + } + sel, parseErr := p.parseSelectorGroup() + if parseErr != nil { + return out, "", parseErr + } + if !p.consumeClosingParenthesis() { + return out, "", errExpectedClosingParenthesis + } + + out = relativePseudoClassSelector{name: name, match: sel} + + case "contains", "containsown": + if !p.consumeParenthesis() { + return out, "", errExpectedParenthesis + } + if p.i == len(p.s) { + return out, "", errUnmatchedParenthesis + } + var val string + switch p.s[p.i] { + case '\'', '"': + val, err = p.parseString() + default: + val, err = p.parseIdentifier() + } + if err != nil { + return out, "", err + } + val = strings.ToLower(val) + p.skipWhitespace() + if p.i >= len(p.s) { + return out, "", errors.New("unexpected EOF in pseudo selector") + } + if !p.consumeClosingParenthesis() { + return out, "", errExpectedClosingParenthesis + } + + out = containsPseudoClassSelector{own: name == "containsown", value: val} + + case "matches", "matchesown": + if !p.consumeParenthesis() { + return out, "", errExpectedParenthesis + } + rx, err := p.parseRegex() + if err != nil { + return out, "", err + } + if p.i >= len(p.s) { + return out, "", errors.New("unexpected EOF in pseudo selector") + } + if !p.consumeClosingParenthesis() { + return out, "", errExpectedClosingParenthesis + } + + out = regexpPseudoClassSelector{own: name == "matchesown", regexp: rx} + + case "nth-child", "nth-last-child", "nth-of-type", "nth-last-of-type": + if !p.consumeParenthesis() { + return out, "", errExpectedParenthesis + } + a, b, err := p.parseNth() + if err != nil { + return out, "", err + } + if !p.consumeClosingParenthesis() { + return out, "", errExpectedClosingParenthesis + } + last := name == "nth-last-child" || name == "nth-last-of-type" + ofType := name == "nth-of-type" || name == "nth-last-of-type" + out = nthPseudoClassSelector{a: a, b: b, last: last, ofType: ofType} + + case "first-child": + out = nthPseudoClassSelector{a: 0, b: 1, ofType: false, last: false} + case "last-child": + out = nthPseudoClassSelector{a: 0, b: 1, ofType: false, last: true} + case "first-of-type": + out = nthPseudoClassSelector{a: 0, b: 1, ofType: true, last: false} + case "last-of-type": + out = nthPseudoClassSelector{a: 0, b: 1, ofType: true, last: true} + case "only-child": + out = onlyChildPseudoClassSelector{ofType: false} + case "only-of-type": + out = onlyChildPseudoClassSelector{ofType: true} + case "input": + out = inputPseudoClassSelector{} + case "empty": + out = emptyElementPseudoClassSelector{} + case "root": + out = rootPseudoClassSelector{} + case "link": + out = linkPseudoClassSelector{} + case "lang": + if !p.consumeParenthesis() { + return out, "", errExpectedParenthesis + } + if p.i == len(p.s) { + return out, "", errUnmatchedParenthesis + } + val, err := p.parseIdentifier() + if err != nil { + return out, "", err + } + val = strings.ToLower(val) + p.skipWhitespace() + if p.i >= len(p.s) { + return out, "", errors.New("unexpected EOF in pseudo selector") + } + if !p.consumeClosingParenthesis() { + return out, "", errExpectedClosingParenthesis + } + out = langPseudoClassSelector{lang: val} + case "enabled": + out = enabledPseudoClassSelector{} + case "disabled": + out = disabledPseudoClassSelector{} + case "checked": + out = checkedPseudoClassSelector{} + case "visited", "hover", "active", "focus", "target": + // Not applicable in a static context: never match. + out = neverMatchSelector{value: ":" + name} + case "after", "backdrop", "before", "cue", "first-letter", "first-line", "grammar-error", "marker", "placeholder", "selection", "spelling-error": + return nil, name, nil + default: + return out, "", fmt.Errorf("unknown pseudoclass or pseudoelement :%s", name) + } + return +} + +// parseInteger parses a decimal integer. +func (p *parser) parseInteger() (int, error) { + i := p.i + start := i + for i < len(p.s) && '0' <= p.s[i] && p.s[i] <= '9' { + i++ + } + if i == start { + return 0, errors.New("expected integer, but didn't find it") + } + p.i = i + + val, err := strconv.Atoi(p.s[start:i]) + if err != nil { + return 0, err + } + + return val, nil +} + +// parseNth parses the argument for :nth-child (normally of the form an+b). +func (p *parser) parseNth() (a, b int, err error) { + // initial state + if p.i >= len(p.s) { + goto eof + } + switch p.s[p.i] { + case '-': + p.i++ + goto negativeA + case '+': + p.i++ + goto positiveA + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + goto positiveA + case 'n', 'N': + a = 1 + p.i++ + goto readN + case 'o', 'O', 'e', 'E': + id, nameErr := p.parseName() + if nameErr != nil { + return 0, 0, nameErr + } + id = toLowerASCII(id) + if id == "odd" { + return 2, 1, nil + } + if id == "even" { + return 2, 0, nil + } + return 0, 0, fmt.Errorf("expected 'odd' or 'even', but found '%s' instead", id) + default: + goto invalid + } + +positiveA: + if p.i >= len(p.s) { + goto eof + } + switch p.s[p.i] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + a, err = p.parseInteger() + if err != nil { + return 0, 0, err + } + goto readA + case 'n', 'N': + a = 1 + p.i++ + goto readN + default: + goto invalid + } + +negativeA: + if p.i >= len(p.s) { + goto eof + } + switch p.s[p.i] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + a, err = p.parseInteger() + if err != nil { + return 0, 0, err + } + a = -a + goto readA + case 'n', 'N': + a = -1 + p.i++ + goto readN + default: + goto invalid + } + +readA: + if p.i >= len(p.s) { + goto eof + } + switch p.s[p.i] { + case 'n', 'N': + p.i++ + goto readN + default: + // The number we read as a is actually b. + return 0, a, nil + } + +readN: + p.skipWhitespace() + if p.i >= len(p.s) { + goto eof + } + switch p.s[p.i] { + case '+': + p.i++ + p.skipWhitespace() + b, err = p.parseInteger() + if err != nil { + return 0, 0, err + } + return a, b, nil + case '-': + p.i++ + p.skipWhitespace() + b, err = p.parseInteger() + if err != nil { + return 0, 0, err + } + return a, -b, nil + default: + return a, 0, nil + } + +eof: + return 0, 0, errors.New("unexpected EOF while attempting to parse expression of form an+b") + +invalid: + return 0, 0, errors.New("unexpected character while attempting to parse expression of form an+b") +} + +// parseSimpleSelectorSequence parses a selector sequence that applies to +// a single element. +func (p *parser) parseSimpleSelectorSequence() (Sel, error) { + var selectors []Sel + + if p.i >= len(p.s) { + return nil, errors.New("expected selector, found EOF instead") + } + + switch p.s[p.i] { + case '*': + // It's the universal selector. Just skip over it, since it doesn't affect the meaning. + p.i++ + if p.i+2 < len(p.s) && p.s[p.i:p.i+2] == "|*" { // other version of universal selector + p.i += 2 + } + case '#', '.', '[', ':': + // There's no type selector. Wait to process the other till the main loop. + default: + r, err := p.parseTypeSelector() + if err != nil { + return nil, err + } + selectors = append(selectors, r) + } + + var pseudoElement string +loop: + for p.i < len(p.s) { + var ( + ns Sel + newPseudoElement string + err error + ) + switch p.s[p.i] { + case '#': + ns, err = p.parseIDSelector() + case '.': + ns, err = p.parseClassSelector() + case '[': + ns, err = p.parseAttributeSelector() + case ':': + ns, newPseudoElement, err = p.parsePseudoclassSelector() + default: + break loop + } + if err != nil { + return nil, err + } + // From https://drafts.csswg.org/selectors-3/#pseudo-elements : + // "Only one pseudo-element may appear per selector, and if present + // it must appear after the sequence of simple selectors that + // represents the subjects of the selector."" + if ns == nil { // we found a pseudo-element + if pseudoElement != "" { + return nil, fmt.Errorf("only one pseudo-element is accepted per selector, got %s and %s", pseudoElement, newPseudoElement) + } + if !p.acceptPseudoElements { + return nil, fmt.Errorf("pseudo-element %s found, but pseudo-elements support is disabled", newPseudoElement) + } + pseudoElement = newPseudoElement + } else { + if pseudoElement != "" { + return nil, fmt.Errorf("pseudo-element %s must be at the end of selector", pseudoElement) + } + selectors = append(selectors, ns) + } + + } + if len(selectors) == 1 && pseudoElement == "" { // no need wrap the selectors in compoundSelector + return selectors[0], nil + } + return compoundSelector{selectors: selectors, pseudoElement: pseudoElement}, nil +} + +// parseSelector parses a selector that may include combinators. +func (p *parser) parseSelector() (Sel, error) { + p.skipWhitespace() + result, err := p.parseSimpleSelectorSequence() + if err != nil { + return nil, err + } + + for { + var ( + combinator byte + c Sel + ) + if p.skipWhitespace() { + combinator = ' ' + } + if p.i >= len(p.s) { + return result, nil + } + + switch p.s[p.i] { + case '+', '>', '~': + combinator = p.s[p.i] + p.i++ + p.skipWhitespace() + case ',', ')': + // These characters can't begin a selector, but they can legally occur after one. + return result, nil + } + + if combinator == 0 { + return result, nil + } + + c, err = p.parseSimpleSelectorSequence() + if err != nil { + return nil, err + } + result = combinedSelector{first: result, combinator: combinator, second: c} + } +} + +// parseSelectorGroup parses a group of selectors, separated by commas. +func (p *parser) parseSelectorGroup() (SelectorGroup, error) { + current, err := p.parseSelector() + if err != nil { + return nil, err + } + result := SelectorGroup{current} + + for p.i < len(p.s) { + if p.s[p.i] != ',' { + break + } + p.i++ + c, err := p.parseSelector() + if err != nil { + return nil, err + } + result = append(result, c) + } + return result, nil +} diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/parser_test.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/parser_test.go new file mode 100644 index 000000000..0dacb79ea --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/parser_test.go @@ -0,0 +1,88 @@ +package cascadia + +import ( + "testing" +) + +var identifierTests = map[string]string{ + "x": "x", + "96": "", + "-x": "-x", + `r\e9 sumé`: "résumé", + `r\0000e9 sumé`: "résumé", + `r\0000e9sumé`: "résumé", + `a\"b`: `a"b`, +} + +func TestParseIdentifier(t *testing.T) { + for source, want := range identifierTests { + p := &parser{s: source} + got, err := p.parseIdentifier() + if err != nil { + if want == "" { + // It was supposed to be an error. + continue + } + t.Errorf("parsing %q: got error (%s), want %q", source, err, want) + continue + } + + if want == "" { + if err == nil { + t.Errorf("parsing %q: got %q, want error", source, got) + } + continue + } + + if p.i < len(source) { + t.Errorf("parsing %q: %d bytes left over", source, len(source)-p.i) + continue + } + + if got != want { + t.Errorf("parsing %q: got %q, want %q", source, got, want) + } + } +} + +var stringTests = map[string]string{ + `"x"`: "x", + `'x'`: "x", + `'x`: "", + "'x\\\r\nx'": "xx", + `"r\e9 sumé"`: "résumé", + `"r\0000e9 sumé"`: "résumé", + `"r\0000e9sumé"`: "résumé", + `"a\"b"`: `a"b`, +} + +func TestParseString(t *testing.T) { + for source, want := range stringTests { + p := &parser{s: source} + got, err := p.parseString() + if err != nil { + if want == "" { + // It was supposed to be an error. + continue + } + t.Errorf("parsing %q: got error (%s), want %q", source, err, want) + continue + } + + if want == "" { + if err == nil { + t.Errorf("parsing %q: got %q, want error", source, got) + } + continue + } + + if p.i < len(source) { + t.Errorf("parsing %q: %d bytes left over", source, len(source)-p.i) + continue + } + + if got != want { + t.Errorf("parsing %q: got %q, want %q", source, got, want) + } + } +} diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/pseudo_classes.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/pseudo_classes.go new file mode 100644 index 000000000..3986b22cd --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/pseudo_classes.go @@ -0,0 +1,474 @@ +package cascadia + +import ( + "bytes" + "fmt" + "regexp" + "strings" + + "golang.org/x/net/html" + "golang.org/x/net/html/atom" +) + +// This file implements the pseudo classes selectors, +// which share the implementation of PseudoElement() and Specificity() + +type abstractPseudoClass struct{} + +func (s abstractPseudoClass) Specificity() Specificity { + return Specificity{0, 1, 0} +} + +func (c abstractPseudoClass) PseudoElement() string { + return "" +} + +type relativePseudoClassSelector struct { + name string // one of "not", "has", "haschild" + match SelectorGroup +} + +func (s relativePseudoClassSelector) Match(n *html.Node) bool { + if n.Type != html.ElementNode { + return false + } + switch s.name { + case "not": + // matches elements that do not match a. + return !s.match.Match(n) + case "has": + // matches elements with any descendant that matches a. + return hasDescendantMatch(n, s.match) + case "haschild": + // matches elements with a child that matches a. + return hasChildMatch(n, s.match) + default: + panic(fmt.Sprintf("unsupported relative pseudo class selector : %s", s.name)) + } +} + +// hasChildMatch returns whether n has any child that matches a. +func hasChildMatch(n *html.Node, a Matcher) bool { + for c := n.FirstChild; c != nil; c = c.NextSibling { + if a.Match(c) { + return true + } + } + return false +} + +// hasDescendantMatch performs a depth-first search of n's descendants, +// testing whether any of them match a. It returns true as soon as a match is +// found, or false if no match is found. +func hasDescendantMatch(n *html.Node, a Matcher) bool { + for c := n.FirstChild; c != nil; c = c.NextSibling { + if a.Match(c) || (c.Type == html.ElementNode && hasDescendantMatch(c, a)) { + return true + } + } + return false +} + +// Specificity returns the specificity of the most specific selectors +// in the pseudo-class arguments. +// See https://www.w3.org/TR/selectors/#specificity-rules +func (s relativePseudoClassSelector) Specificity() Specificity { + var max Specificity + for _, sel := range s.match { + newSpe := sel.Specificity() + if max.Less(newSpe) { + max = newSpe + } + } + return max +} + +func (c relativePseudoClassSelector) PseudoElement() string { + return "" +} + +type containsPseudoClassSelector struct { + abstractPseudoClass + value string + own bool +} + +func (s containsPseudoClassSelector) Match(n *html.Node) bool { + var text string + if s.own { + // matches nodes that directly contain the given text + text = strings.ToLower(nodeOwnText(n)) + } else { + // matches nodes that contain the given text. + text = strings.ToLower(nodeText(n)) + } + return strings.Contains(text, s.value) +} + +type regexpPseudoClassSelector struct { + abstractPseudoClass + regexp *regexp.Regexp + own bool +} + +func (s regexpPseudoClassSelector) Match(n *html.Node) bool { + var text string + if s.own { + // matches nodes whose text directly matches the specified regular expression + text = nodeOwnText(n) + } else { + // matches nodes whose text matches the specified regular expression + text = nodeText(n) + } + return s.regexp.MatchString(text) +} + +// writeNodeText writes the text contained in n and its descendants to b. +func writeNodeText(n *html.Node, b *bytes.Buffer) { + switch n.Type { + case html.TextNode: + b.WriteString(n.Data) + case html.ElementNode: + for c := n.FirstChild; c != nil; c = c.NextSibling { + writeNodeText(c, b) + } + } +} + +// nodeText returns the text contained in n and its descendants. +func nodeText(n *html.Node) string { + var b bytes.Buffer + writeNodeText(n, &b) + return b.String() +} + +// nodeOwnText returns the contents of the text nodes that are direct +// children of n. +func nodeOwnText(n *html.Node) string { + var b bytes.Buffer + for c := n.FirstChild; c != nil; c = c.NextSibling { + if c.Type == html.TextNode { + b.WriteString(c.Data) + } + } + return b.String() +} + +type nthPseudoClassSelector struct { + abstractPseudoClass + a, b int + last, ofType bool +} + +func (s nthPseudoClassSelector) Match(n *html.Node) bool { + if s.a == 0 { + if s.last { + return simpleNthLastChildMatch(s.b, s.ofType, n) + } else { + return simpleNthChildMatch(s.b, s.ofType, n) + } + } + return nthChildMatch(s.a, s.b, s.last, s.ofType, n) +} + +// nthChildMatch implements :nth-child(an+b). +// If last is true, implements :nth-last-child instead. +// If ofType is true, implements :nth-of-type instead. +func nthChildMatch(a, b int, last, ofType bool, n *html.Node) bool { + if n.Type != html.ElementNode { + return false + } + + parent := n.Parent + if parent == nil { + return false + } + + if parent.Type == html.DocumentNode { + return false + } + + i := -1 + count := 0 + for c := parent.FirstChild; c != nil; c = c.NextSibling { + if (c.Type != html.ElementNode) || (ofType && c.Data != n.Data) { + continue + } + count++ + if c == n { + i = count + if !last { + break + } + } + } + + if i == -1 { + // This shouldn't happen, since n should always be one of its parent's children. + return false + } + + if last { + i = count - i + 1 + } + + i -= b + if a == 0 { + return i == 0 + } + + return i%a == 0 && i/a >= 0 +} + +// simpleNthChildMatch implements :nth-child(b). +// If ofType is true, implements :nth-of-type instead. +func simpleNthChildMatch(b int, ofType bool, n *html.Node) bool { + if n.Type != html.ElementNode { + return false + } + + parent := n.Parent + if parent == nil { + return false + } + + if parent.Type == html.DocumentNode { + return false + } + + count := 0 + for c := parent.FirstChild; c != nil; c = c.NextSibling { + if c.Type != html.ElementNode || (ofType && c.Data != n.Data) { + continue + } + count++ + if c == n { + return count == b + } + if count >= b { + return false + } + } + return false +} + +// simpleNthLastChildMatch implements :nth-last-child(b). +// If ofType is true, implements :nth-last-of-type instead. +func simpleNthLastChildMatch(b int, ofType bool, n *html.Node) bool { + if n.Type != html.ElementNode { + return false + } + + parent := n.Parent + if parent == nil { + return false + } + + if parent.Type == html.DocumentNode { + return false + } + + count := 0 + for c := parent.LastChild; c != nil; c = c.PrevSibling { + if c.Type != html.ElementNode || (ofType && c.Data != n.Data) { + continue + } + count++ + if c == n { + return count == b + } + if count >= b { + return false + } + } + return false +} + +type onlyChildPseudoClassSelector struct { + abstractPseudoClass + ofType bool +} + +// Match implements :only-child. +// If `ofType` is true, it implements :only-of-type instead. +func (s onlyChildPseudoClassSelector) Match(n *html.Node) bool { + if n.Type != html.ElementNode { + return false + } + + parent := n.Parent + if parent == nil { + return false + } + + if parent.Type == html.DocumentNode { + return false + } + + count := 0 + for c := parent.FirstChild; c != nil; c = c.NextSibling { + if (c.Type != html.ElementNode) || (s.ofType && c.Data != n.Data) { + continue + } + count++ + if count > 1 { + return false + } + } + + return count == 1 +} + +type inputPseudoClassSelector struct { + abstractPseudoClass +} + +// Matches input, select, textarea and button elements. +func (s inputPseudoClassSelector) Match(n *html.Node) bool { + return n.Type == html.ElementNode && (n.Data == "input" || n.Data == "select" || n.Data == "textarea" || n.Data == "button") +} + +type emptyElementPseudoClassSelector struct { + abstractPseudoClass +} + +// Matches empty elements. +func (s emptyElementPseudoClassSelector) Match(n *html.Node) bool { + if n.Type != html.ElementNode { + return false + } + + for c := n.FirstChild; c != nil; c = c.NextSibling { + switch c.Type { + case html.ElementNode: + return false + case html.TextNode: + if strings.TrimSpace(nodeText(c)) == "" { + continue + } else { + return false + } + } + } + + return true +} + +type rootPseudoClassSelector struct { + abstractPseudoClass +} + +// Match implements :root +func (s rootPseudoClassSelector) Match(n *html.Node) bool { + if n.Type != html.ElementNode { + return false + } + if n.Parent == nil { + return false + } + return n.Parent.Type == html.DocumentNode +} + +func hasAttr(n *html.Node, attr string) bool { + return matchAttribute(n, attr, func(string) bool { return true }) +} + +type linkPseudoClassSelector struct { + abstractPseudoClass +} + +// Match implements :link +func (s linkPseudoClassSelector) Match(n *html.Node) bool { + return (n.DataAtom == atom.A || n.DataAtom == atom.Area || n.DataAtom == atom.Link) && hasAttr(n, "href") +} + +type langPseudoClassSelector struct { + abstractPseudoClass + lang string +} + +func (s langPseudoClassSelector) Match(n *html.Node) bool { + own := matchAttribute(n, "lang", func(val string) bool { + return val == s.lang || strings.HasPrefix(val, s.lang+"-") + }) + if n.Parent == nil { + return own + } + return own || s.Match(n.Parent) +} + +type enabledPseudoClassSelector struct { + abstractPseudoClass +} + +func (s enabledPseudoClassSelector) Match(n *html.Node) bool { + if n.Type != html.ElementNode { + return false + } + switch n.DataAtom { + case atom.A, atom.Area, atom.Link: + return hasAttr(n, "href") + case atom.Optgroup, atom.Menuitem, atom.Fieldset: + return !hasAttr(n, "disabled") + case atom.Button, atom.Input, atom.Select, atom.Textarea, atom.Option: + return !hasAttr(n, "disabled") && !inDisabledFieldset(n) + } + return false +} + +type disabledPseudoClassSelector struct { + abstractPseudoClass +} + +func (s disabledPseudoClassSelector) Match(n *html.Node) bool { + if n.Type != html.ElementNode { + return false + } + switch n.DataAtom { + case atom.Optgroup, atom.Menuitem, atom.Fieldset: + return hasAttr(n, "disabled") + case atom.Button, atom.Input, atom.Select, atom.Textarea, atom.Option: + return hasAttr(n, "disabled") || inDisabledFieldset(n) + } + return false +} + +func hasLegendInPreviousSiblings(n *html.Node) bool { + for s := n.PrevSibling; s != nil; s = s.PrevSibling { + if s.DataAtom == atom.Legend { + return true + } + } + return false +} + +func inDisabledFieldset(n *html.Node) bool { + if n.Parent == nil { + return false + } + if n.Parent.DataAtom == atom.Fieldset && hasAttr(n.Parent, "disabled") && + (n.DataAtom != atom.Legend || hasLegendInPreviousSiblings(n)) { + return true + } + return inDisabledFieldset(n.Parent) +} + +type checkedPseudoClassSelector struct { + abstractPseudoClass +} + +func (s checkedPseudoClassSelector) Match(n *html.Node) bool { + if n.Type != html.ElementNode { + return false + } + switch n.DataAtom { + case atom.Input, atom.Menuitem: + return hasAttr(n, "checked") && matchAttribute(n, "type", func(val string) bool { + t := toLowerASCII(val) + return t == "checkbox" || t == "radio" + }) + case atom.Option: + return hasAttr(n, "selected") + } + return false +} diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/selector.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/selector.go new file mode 100644 index 000000000..87549be23 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/selector.go @@ -0,0 +1,586 @@ +package cascadia + +import ( + "fmt" + "regexp" + "strings" + + "golang.org/x/net/html" +) + +// Matcher is the interface for basic selector functionality. +// Match returns whether a selector matches n. +type Matcher interface { + Match(n *html.Node) bool +} + +// Sel is the interface for all the functionality provided by selectors. +type Sel interface { + Matcher + Specificity() Specificity + + // Returns a CSS input compiling to this selector. + String() string + + // Returns a pseudo-element, or an empty string. + PseudoElement() string +} + +// Parse parses a selector. Use `ParseWithPseudoElement` +// if you need support for pseudo-elements. +func Parse(sel string) (Sel, error) { + p := &parser{s: sel} + compiled, err := p.parseSelector() + if err != nil { + return nil, err + } + + if p.i < len(sel) { + return nil, fmt.Errorf("parsing %q: %d bytes left over", sel, len(sel)-p.i) + } + + return compiled, nil +} + +// ParseWithPseudoElement parses a single selector, +// with support for pseudo-element. +func ParseWithPseudoElement(sel string) (Sel, error) { + p := &parser{s: sel, acceptPseudoElements: true} + compiled, err := p.parseSelector() + if err != nil { + return nil, err + } + + if p.i < len(sel) { + return nil, fmt.Errorf("parsing %q: %d bytes left over", sel, len(sel)-p.i) + } + + return compiled, nil +} + +// ParseGroup parses a selector, or a group of selectors separated by commas. +// Use `ParseGroupWithPseudoElements` +// if you need support for pseudo-elements. +func ParseGroup(sel string) (SelectorGroup, error) { + p := &parser{s: sel} + compiled, err := p.parseSelectorGroup() + if err != nil { + return nil, err + } + + if p.i < len(sel) { + return nil, fmt.Errorf("parsing %q: %d bytes left over", sel, len(sel)-p.i) + } + + return compiled, nil +} + +// ParseGroupWithPseudoElements parses a selector, or a group of selectors separated by commas. +// It supports pseudo-elements. +func ParseGroupWithPseudoElements(sel string) (SelectorGroup, error) { + p := &parser{s: sel, acceptPseudoElements: true} + compiled, err := p.parseSelectorGroup() + if err != nil { + return nil, err + } + + if p.i < len(sel) { + return nil, fmt.Errorf("parsing %q: %d bytes left over", sel, len(sel)-p.i) + } + + return compiled, nil +} + +// A Selector is a function which tells whether a node matches or not. +// +// This type is maintained for compatibility; I recommend using the newer and +// more idiomatic interfaces Sel and Matcher. +type Selector func(*html.Node) bool + +// Compile parses a selector and returns, if successful, a Selector object +// that can be used to match against html.Node objects. +func Compile(sel string) (Selector, error) { + compiled, err := ParseGroup(sel) + if err != nil { + return nil, err + } + + return Selector(compiled.Match), nil +} + +// MustCompile is like Compile, but panics instead of returning an error. +func MustCompile(sel string) Selector { + compiled, err := Compile(sel) + if err != nil { + panic(err) + } + return compiled +} + +// MatchAll returns a slice of the nodes that match the selector, +// from n and its children. +func (s Selector) MatchAll(n *html.Node) []*html.Node { + return s.matchAllInto(n, nil) +} + +func (s Selector) matchAllInto(n *html.Node, storage []*html.Node) []*html.Node { + if s(n) { + storage = append(storage, n) + } + + for child := n.FirstChild; child != nil; child = child.NextSibling { + storage = s.matchAllInto(child, storage) + } + + return storage +} + +func queryInto(n *html.Node, m Matcher, storage []*html.Node) []*html.Node { + for child := n.FirstChild; child != nil; child = child.NextSibling { + if m.Match(child) { + storage = append(storage, child) + } + storage = queryInto(child, m, storage) + } + + return storage +} + +// QueryAll returns a slice of all the nodes that match m, from the descendants +// of n. +func QueryAll(n *html.Node, m Matcher) []*html.Node { + return queryInto(n, m, nil) +} + +// Match returns true if the node matches the selector. +func (s Selector) Match(n *html.Node) bool { + return s(n) +} + +// MatchFirst returns the first node that matches s, from n and its children. +func (s Selector) MatchFirst(n *html.Node) *html.Node { + if s.Match(n) { + return n + } + + for c := n.FirstChild; c != nil; c = c.NextSibling { + m := s.MatchFirst(c) + if m != nil { + return m + } + } + return nil +} + +// Query returns the first node that matches m, from the descendants of n. +// If none matches, it returns nil. +func Query(n *html.Node, m Matcher) *html.Node { + for c := n.FirstChild; c != nil; c = c.NextSibling { + if m.Match(c) { + return c + } + if matched := Query(c, m); matched != nil { + return matched + } + } + + return nil +} + +// Filter returns the nodes in nodes that match the selector. +func (s Selector) Filter(nodes []*html.Node) (result []*html.Node) { + for _, n := range nodes { + if s(n) { + result = append(result, n) + } + } + return result +} + +// Filter returns the nodes that match m. +func Filter(nodes []*html.Node, m Matcher) (result []*html.Node) { + for _, n := range nodes { + if m.Match(n) { + result = append(result, n) + } + } + return result +} + +type tagSelector struct { + tag string +} + +// Matches elements with a given tag name. +func (t tagSelector) Match(n *html.Node) bool { + return n.Type == html.ElementNode && n.Data == t.tag +} + +func (c tagSelector) Specificity() Specificity { + return Specificity{0, 0, 1} +} + +func (c tagSelector) PseudoElement() string { + return "" +} + +type classSelector struct { + class string +} + +// Matches elements by class attribute. +func (t classSelector) Match(n *html.Node) bool { + return matchAttribute(n, "class", func(s string) bool { + return matchInclude(t.class, s, false) + }) +} + +func (c classSelector) Specificity() Specificity { + return Specificity{0, 1, 0} +} + +func (c classSelector) PseudoElement() string { + return "" +} + +type idSelector struct { + id string +} + +// Matches elements by id attribute. +func (t idSelector) Match(n *html.Node) bool { + return matchAttribute(n, "id", func(s string) bool { + return s == t.id + }) +} + +func (c idSelector) Specificity() Specificity { + return Specificity{1, 0, 0} +} + +func (c idSelector) PseudoElement() string { + return "" +} + +type attrSelector struct { + key, val, operation string + regexp *regexp.Regexp + insensitive bool +} + +// Matches elements by attribute value. +func (t attrSelector) Match(n *html.Node) bool { + switch t.operation { + case "": + return matchAttribute(n, t.key, func(string) bool { return true }) + case "=": + return matchAttribute(n, t.key, func(s string) bool { return matchInsensitiveValue(s, t.val, t.insensitive) }) + case "!=": + return attributeNotEqualMatch(t.key, t.val, n, t.insensitive) + case "~=": + // matches elements where the attribute named key is a whitespace-separated list that includes val. + return matchAttribute(n, t.key, func(s string) bool { return matchInclude(t.val, s, t.insensitive) }) + case "|=": + return attributeDashMatch(t.key, t.val, n, t.insensitive) + case "^=": + return attributePrefixMatch(t.key, t.val, n, t.insensitive) + case "$=": + return attributeSuffixMatch(t.key, t.val, n, t.insensitive) + case "*=": + return attributeSubstringMatch(t.key, t.val, n, t.insensitive) + case "#=": + return attributeRegexMatch(t.key, t.regexp, n) + default: + panic(fmt.Sprintf("unsuported operation : %s", t.operation)) + } +} + +// matches elements where we ignore (or not) the case of the attribute value +// the user attribute is the value set by the user to match elements +// the real attribute is the attribute value found in the code parsed +func matchInsensitiveValue(userAttr string, realAttr string, ignoreCase bool) bool { + if ignoreCase { + return strings.EqualFold(userAttr, realAttr) + } + return userAttr == realAttr + +} + +// matches elements where the attribute named key satisifes the function f. +func matchAttribute(n *html.Node, key string, f func(string) bool) bool { + if n.Type != html.ElementNode { + return false + } + for _, a := range n.Attr { + if a.Key == key && f(a.Val) { + return true + } + } + return false +} + +// attributeNotEqualMatch matches elements where +// the attribute named key does not have the value val. +func attributeNotEqualMatch(key, val string, n *html.Node, ignoreCase bool) bool { + if n.Type != html.ElementNode { + return false + } + for _, a := range n.Attr { + if a.Key == key && matchInsensitiveValue(a.Val, val, ignoreCase) { + return false + } + } + return true +} + +// returns true if s is a whitespace-separated list that includes val. +func matchInclude(val string, s string, ignoreCase bool) bool { + for s != "" { + i := strings.IndexAny(s, " \t\r\n\f") + if i == -1 { + return matchInsensitiveValue(s, val, ignoreCase) + } + if matchInsensitiveValue(s[:i], val, ignoreCase) { + return true + } + s = s[i+1:] + } + return false +} + +// matches elements where the attribute named key equals val or starts with val plus a hyphen. +func attributeDashMatch(key, val string, n *html.Node, ignoreCase bool) bool { + return matchAttribute(n, key, + func(s string) bool { + if matchInsensitiveValue(s, val, ignoreCase) { + return true + } + if len(s) <= len(val) { + return false + } + if matchInsensitiveValue(s[:len(val)], val, ignoreCase) && s[len(val)] == '-' { + return true + } + return false + }) +} + +// attributePrefixMatch returns a Selector that matches elements where +// the attribute named key starts with val. +func attributePrefixMatch(key, val string, n *html.Node, ignoreCase bool) bool { + return matchAttribute(n, key, + func(s string) bool { + if strings.TrimSpace(s) == "" { + return false + } + if ignoreCase { + return strings.HasPrefix(strings.ToLower(s), strings.ToLower(val)) + } + return strings.HasPrefix(s, val) + }) +} + +// attributeSuffixMatch matches elements where +// the attribute named key ends with val. +func attributeSuffixMatch(key, val string, n *html.Node, ignoreCase bool) bool { + return matchAttribute(n, key, + func(s string) bool { + if strings.TrimSpace(s) == "" { + return false + } + if ignoreCase { + return strings.HasSuffix(strings.ToLower(s), strings.ToLower(val)) + } + return strings.HasSuffix(s, val) + }) +} + +// attributeSubstringMatch matches nodes where +// the attribute named key contains val. +func attributeSubstringMatch(key, val string, n *html.Node, ignoreCase bool) bool { + return matchAttribute(n, key, + func(s string) bool { + if strings.TrimSpace(s) == "" { + return false + } + if ignoreCase { + return strings.Contains(strings.ToLower(s), strings.ToLower(val)) + } + return strings.Contains(s, val) + }) +} + +// attributeRegexMatch matches nodes where +// the attribute named key matches the regular expression rx +func attributeRegexMatch(key string, rx *regexp.Regexp, n *html.Node) bool { + return matchAttribute(n, key, + func(s string) bool { + return rx.MatchString(s) + }) +} + +func (c attrSelector) Specificity() Specificity { + return Specificity{0, 1, 0} +} + +func (c attrSelector) PseudoElement() string { + return "" +} + +// see pseudo_classes.go for pseudo classes selectors + +// on a static context, some selectors can't match anything +type neverMatchSelector struct { + value string +} + +func (s neverMatchSelector) Match(n *html.Node) bool { + return false +} + +func (s neverMatchSelector) Specificity() Specificity { + return Specificity{0, 0, 0} +} + +func (c neverMatchSelector) PseudoElement() string { + return "" +} + +type compoundSelector struct { + selectors []Sel + pseudoElement string +} + +// Matches elements if each sub-selectors matches. +func (t compoundSelector) Match(n *html.Node) bool { + if len(t.selectors) == 0 { + return n.Type == html.ElementNode + } + + for _, sel := range t.selectors { + if !sel.Match(n) { + return false + } + } + return true +} + +func (s compoundSelector) Specificity() Specificity { + var out Specificity + for _, sel := range s.selectors { + out = out.Add(sel.Specificity()) + } + if s.pseudoElement != "" { + // https://drafts.csswg.org/selectors-3/#specificity + out = out.Add(Specificity{0, 0, 1}) + } + return out +} + +func (c compoundSelector) PseudoElement() string { + return c.pseudoElement +} + +type combinedSelector struct { + first Sel + combinator byte + second Sel +} + +func (t combinedSelector) Match(n *html.Node) bool { + if t.first == nil { + return false // maybe we should panic + } + switch t.combinator { + case 0: + return t.first.Match(n) + case ' ': + return descendantMatch(t.first, t.second, n) + case '>': + return childMatch(t.first, t.second, n) + case '+': + return siblingMatch(t.first, t.second, true, n) + case '~': + return siblingMatch(t.first, t.second, false, n) + default: + panic("unknown combinator") + } +} + +// matches an element if it matches d and has an ancestor that matches a. +func descendantMatch(a, d Matcher, n *html.Node) bool { + if !d.Match(n) { + return false + } + + for p := n.Parent; p != nil; p = p.Parent { + if a.Match(p) { + return true + } + } + + return false +} + +// matches an element if it matches d and its parent matches a. +func childMatch(a, d Matcher, n *html.Node) bool { + return d.Match(n) && n.Parent != nil && a.Match(n.Parent) +} + +// matches an element if it matches s2 and is preceded by an element that matches s1. +// If adjacent is true, the sibling must be immediately before the element. +func siblingMatch(s1, s2 Matcher, adjacent bool, n *html.Node) bool { + if !s2.Match(n) { + return false + } + + if adjacent { + for n = n.PrevSibling; n != nil; n = n.PrevSibling { + if n.Type == html.TextNode || n.Type == html.CommentNode { + continue + } + return s1.Match(n) + } + return false + } + + // Walk backwards looking for element that matches s1 + for c := n.PrevSibling; c != nil; c = c.PrevSibling { + if s1.Match(c) { + return true + } + } + + return false +} + +func (s combinedSelector) Specificity() Specificity { + spec := s.first.Specificity() + if s.second != nil { + spec = spec.Add(s.second.Specificity()) + } + return spec +} + +// on combinedSelector, a pseudo-element only makes sens on the last +// selector, although others increase specificity. +func (c combinedSelector) PseudoElement() string { + if c.second == nil { + return "" + } + return c.second.PseudoElement() +} + +// A SelectorGroup is a list of selectors, which matches if any of the +// individual selectors matches. +type SelectorGroup []Sel + +// Match returns true if the node matches one of the single selectors. +func (s SelectorGroup) Match(n *html.Node) bool { + for _, sel := range s { + if sel.Match(n) { + return true + } + } + return false +} diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/selector_test.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/selector_test.go new file mode 100644 index 000000000..b357a9800 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/selector_test.go @@ -0,0 +1,1003 @@ +package cascadia + +import ( + "bytes" + "encoding/json" + "fmt" + "io/ioutil" + "log" + "reflect" + "strings" + "testing" + + "golang.org/x/net/html" +) + +var validSelectors []validSelector + +func init() { + c, err := ioutil.ReadFile("test_resources/valid_selectors.json") + if err != nil { + log.Fatal(err) + } + if err = json.Unmarshal(c, &validSelectors); err != nil { + log.Fatal(err) + } +} + +type selectorTest struct { + HTML, selector string + results []string +} + +func nodeString(n *html.Node) string { + buf := bytes.NewBufferString("") + if err := html.Render(buf, n); err != nil { + log.Fatal(err) + } + return buf.String() +} + +var selectorTests = []selectorTest{ + { + `
      This address...
      `, + "address", + []string{ + "
      This address...
      ", + }, + }, + { + `text`, + "*", + []string{ + "text", + "", + "text", + }, + }, + { + ``, + "*", + []string{ + "", + "", + "", + }, + }, + { + `

      `, + "#foo", + []string{ + `

      `, + }, + }, + { + `
      • `, + "li#t1", + []string{ + `

      • `, + }, + }, + { + `
        1. `, + "*#t4", + []string{ + `
        2. `, + }, + }, + { + `
          • `, + ".t1", + []string{ + `
          • `, + }, + }, + { + `

            `, + "p.t1", + []string{ + `

            `, + }, + }, + { + `
            `, + "div.teST", + []string{}, + }, + { + `

            `, + ".t1.fail", + []string{}, + }, + { + `

            `, + "p.t1.t2", + []string{ + `

            `, + }, + }, + { + `

            `, + "p[title]", + []string{ + `

            `, + }, + }, + { + `
            `, + `div[class="red" i]`, + []string{ + `
            `, + }, + }, + { + `
            `, + `address[title="foo"]`, + []string{ + `
            `, + }, + }, + { + `
            `, + `address[title="FoOIgnoRECaSe" i]`, + []string{ + `
            `, + }, + }, + { + `
            `, + `address[title!="foo"]`, + []string{ + `
            `, + `
            `, + }, + }, + { + `
            `, + `address[title!="foo" i]`, + []string{ + `
            `, + `
            `, + }, + }, + { + `

            `, + `p[title!="FooBarUFoo" i]`, + []string{ + `

            `, + }, + }, + { + `

            `, + `[ title ~= foo ]`, + []string{ + `

            `, + }, + }, + { + `

            `, + `p[title~="FOO" i]`, + []string{ + `

            `, + }, + }, + { + `

            `, + `p[title~=toofoo i]`, + []string{}, + }, + { + `

            `, + `[title~="hello world"]`, + []string{}, + }, + { + `

            `, + `[title~="hello" i]`, + []string{ + `

            `, + }, + }, + { + `

            `, + `[title~="hello" I]`, + []string{ + `

            `, + }, + }, + { + `

            `, + `[lang|="en"]`, + []string{ + `

            `, + `

            `, + }, + }, + { + `

            `, + `[lang|="EN" i]`, + []string{ + `

            `, + `

            `, + }, + }, + { + `

            `, + `[lang|="EN" i]`, + []string{ + `

            `, + `

            `, + }, + }, + { + `

            `, + `[title^="foo"]`, + []string{ + `

            `, + }, + }, + { + `

            `, + `[title^="foo" i]`, + []string{ + `

            `, + }, + }, + { + `

            `, + `[title$="bar"]`, + []string{ + `

            `, + }, + }, + { + `

            `, + `[title$="BAR" i]`, + []string{ + `

            `, + }, + }, + { + `

            `, + `[title*="bar"]`, + []string{ + `

            `, + }, + }, + { + `

            `, + `[title*="BaRu" i]`, + []string{ + `

            `, + }, + }, + { + `

            `, + `[title*="BaRu" I]`, + []string{ + `

            `, + }, + }, + { + `

            This text should be green.

            This text should be green.

            `, + `p[class$=" "]`, + []string{}, + }, + { + `

            This text should be green.

            This text should be green.

            `, + `p[class$=""]`, + []string{}, + }, + { + `

            This text should be green.

            This text should be green.

            `, + `p[class^=" "]`, + []string{}, + }, + { + `

            This text should be green.

            This text should be green.

            `, + `p[class^=""]`, + []string{}, + }, + { + `

            This text should be green.

            This text should be green.

            `, + `p[class*=" "]`, + []string{}, + }, + { + `

            This text should be green.

            This text should be green.

            `, + `p[class*=""]`, + []string{}, + }, + { + ``, + `input[name=Sex][value=F]`, + []string{ + ``, + }, + }, + { + `aaa
            `, + `table[border="0"][cellpadding="0"][cellspacing="0"]`, + []string{ + `
            `, + }, + }, + { + `

            `, + ".t1:not(.t2)", + []string{}, + }, + { + `

            `, + `div:not(.t1)`, + []string{ + `
            `, + }, + }, + { + `
            `, + `div:not([class="t2"])`, + []string{ + `
            `, + `
            `, + }, + }, + { + `
            `, + `li:nth-child(odd)`, + []string{ + `
          • `, + `
          • `, + }, + }, + { + `
            `, + `li:nth-child(even)`, + []string{ + `
          • `, + }, + }, + { + `
            `, + `li:nth-child(-n+2)`, + []string{ + `
          • `, + `
          • `, + }, + }, + { + `
            `, + `li:nth-child(3n+1)`, + []string{ + `
          • `, + }, + }, + { + `
            `, + `li:nth-last-child(odd)`, + []string{ + `
          • `, + `
          • `, + }, + }, + { + `
            `, + `li:nth-last-child(even)`, + []string{ + `
          • `, + `
          • `, + }, + }, + { + `
            `, + `li:nth-last-child(-n+2)`, + []string{ + `
          • `, + `
          • `, + }, + }, + { + `
            `, + `li:nth-last-child(3n+1)`, + []string{ + `
          • `, + `
          • `, + }, + }, + { + `

            some text and a span and another

            `, + `span:first-child`, + []string{ + `and a span`, + }, + }, + { + `a span and some text`, + `span:last-child`, + []string{ + `a span`, + }, + }, + { + `

            `, + `p:nth-of-type(2)`, + []string{ + `

            `, + }, + }, + { + `

            `, + `p:nth-last-of-type(2)`, + []string{ + `

            `, + }, + }, + { + `

            `, + `p:last-of-type`, + []string{ + `

            `, + }, + }, + { + `

            `, + `p:first-of-type`, + []string{ + `

            `, + }, + }, + { + `

            `, + `p:only-child`, + []string{ + `

            `, + }, + }, + { + `

            `, + `p:only-of-type`, + []string{ + `

            `, + }, + }, + { + `

            Hello

            `, + `:empty`, + []string{ + ``, + `

            `, + ``, + }, + }, + { + `

            `, + `div p`, + []string{ + `

            `, + `

            `, + }, + }, + { + `

            `, + `div table p`, + []string{ + `

            `, + }, + }, + { + `

            `, + `div > p`, + []string{ + `

            `, + `

            `, + }, + }, + { + `

            `, + `p ~ p`, + []string{ + `

            `, + `

            `, + }, + }, + { + `

            + +

            `, + `p + p`, + []string{ + `

            `, + }, + }, + { + `

            `, + `li, p`, + []string{ + "

          • ", + "
          • ", + "

            ", + }, + }, + { + `

            `, + `p +/*This is a comment*/ p`, + []string{ + `

            `, + }, + }, + { + `

            Text block that wraps inner text and continues

            `, + `p:contains("that wraps")`, + []string{ + `

            Text block that wraps inner text and continues

            `, + }, + }, + { + `

            Text block that wraps inner text and continues

            `, + `p:containsOwn("that wraps")`, + []string{}, + }, + { + `

            Text block that wraps inner text and continues

            `, + `:containsOwn("inner")`, + []string{ + `wraps inner text`, + }, + }, + { + `

            Text block that wraps inner text and continues

            `, + `p:containsOwn("block")`, + []string{ + `

            Text block that wraps inner text and continues

            `, + }, + }, + { + `

            text content

            `, + `div:has(#p1)`, + []string{ + `

            text content

            `, + }, + }, + { + `

            contents 1

            +

            contents 2

            `, + `div:has(:containsOwn("2"))`, + []string{ + `

            contents 2

            `, + }, + }, + { + `

            contents 1

            +

            contents 2

            `, + `body :has(:containsOwn("2"))`, + []string{ + `

            contents 2

            `, + `

            contents 2

            `, + }, + }, + { + `

            contents 1

            +

            contents 2

            `, + `body :haschild(:containsOwn("2"))`, + []string{ + `

            contents 2

            `, + }, + }, + { + `

            0123456789

            abcdef

            0123ABCD

            `, + `p:matches([\d])`, + []string{ + `

            0123456789

            `, + `

            0123ABCD

            `, + }, + }, + { + `

            0123456789

            abcdef

            0123ABCD

            `, + `p:matches([a-z])`, + []string{ + `

            abcdef

            `, + }, + }, + { + `

            0123456789

            abcdef

            0123ABCD

            `, + `p:matches([a-zA-Z])`, + []string{ + `

            abcdef

            `, + `

            0123ABCD

            `, + }, + }, + { + `

            0123456789

            abcdef

            0123ABCD

            `, + `p:matches([^\d])`, + []string{ + `

            abcdef

            `, + `

            0123ABCD

            `, + }, + }, + { + `

            0123456789

            abcdef

            0123ABCD

            `, + `p:matches(^(0|a))`, + []string{ + `

            0123456789

            `, + `

            abcdef

            `, + `

            0123ABCD

            `, + }, + }, + { + `

            0123456789

            abcdef

            0123ABCD

            `, + `p:matches(^\d+$)`, + []string{ + `

            0123456789

            `, + }, + }, + { + `

            0123456789

            abcdef

            0123ABCD

            `, + `p:not(:matches(^\d+$))`, + []string{ + `

            abcdef

            `, + `

            0123ABCD

            `, + }, + }, + { + `

            0123456789

            `, + `div :matchesOwn(^\d+$)`, + []string{ + `

            0123456789

            `, + `567`, + }, + }, + { + ``, + `[href#=(fina)]:not([href#=(\/\/[^\/]+untrusted)])`, + []string{ + ``, + ``, + }, + }, + { + ``, + `[href#=(^https:\/\/[^\/]*\/?news)]`, + []string{ + ``, + }, + }, + { + `
            + + + + + +
            `, + `:input`, + []string{ + ``, + ``, + ``, + ``, + ``, + }, + }, + { + ``, + ":root", + []string{ + "", + }, + }, + { + ``, + "*:root", + []string{ + "", + }, + }, + { + ``, + "*:root:first-child", + []string{}, + }, + { + ``, + "*:root:nth-child(1)", + []string{}, + }, + { + ``, + "a:not(:root)", + []string{ + ``, + }, + }, + { + `

            `, + "body > *:nth-child(3n+2)", + []string{ + "
            ", + "
            ", + }, + }, + { + `
            `, + "input:disabled", + []string{ + ``, + }, + }, + { + `
            `, + ":disabled", + []string{ + `
            `, + }, + }, + { + `
            `, + ":enabled", + []string{ + `
            `, + }, + }, +} + +func setup(selector, testHTML string) (Selector, *html.Node, error) { + s, err := Compile(selector) + if err != nil { + return nil, nil, fmt.Errorf("error compiling %q: %s", selector, err) + } + + doc, err := html.Parse(strings.NewReader(testHTML)) + if err != nil { + return nil, nil, fmt.Errorf("error parsing %q: %s", testHTML, err) + } + return s, doc, nil +} + +func TestSelectors(t *testing.T) { + for _, test := range selectorTests { + s, doc, err := setup(test.selector, test.HTML) + if err != nil { + t.Error(err) + continue + } + + matches := s.MatchAll(doc) + if len(matches) != len(test.results) { + t.Errorf("selector %s wanted %d elements, got %d instead", test.selector, len(test.results), len(matches)) + continue + } + + for i, m := range matches { + got := nodeString(m) + if got != test.results[i] { + t.Errorf("selector %s wanted %s, got %s instead", test.selector, test.results[i], got) + } + } + + firstMatch := s.MatchFirst(doc) + if len(test.results) == 0 { + if firstMatch != nil { + t.Errorf("MatchFirst: selector %s want nil, got %s", test.selector, nodeString(firstMatch)) + } + } else { + got := nodeString(firstMatch) + if got != test.results[0] { + t.Errorf("MatchFirst: selector %s want %s, got %s", test.selector, test.results[0], got) + } + } + } +} + +func setupMatcher(selector, testHTML string) (Matcher, *html.Node, error) { + s, err := ParseGroup(selector) + if err != nil { + return nil, nil, fmt.Errorf("error compiling %q: %s", selector, err) + } + + doc, err := html.Parse(strings.NewReader(testHTML)) + if err != nil { + return nil, nil, fmt.Errorf("error parsing %q: %s", testHTML, err) + } + return s, doc, nil +} + +func TestMatchers(t *testing.T) { + for _, test := range selectorTests { + s, doc, err := setupMatcher(test.selector, test.HTML) + if err != nil { + t.Error(err) + continue + } + + matches := QueryAll(doc, s) + if len(matches) != len(test.results) { + t.Errorf("selector %s wanted %d elements, got %d instead", test.selector, len(test.results), len(matches)) + continue + } + + for i, m := range matches { + got := nodeString(m) + if got != test.results[i] { + t.Errorf("selector %s wanted %s, got %s instead", test.selector, test.results[i], got) + } + } + + firstMatch := Query(doc, s) + if len(test.results) == 0 { + if firstMatch != nil { + t.Errorf("Query: selector %s want nil, got %s", test.selector, nodeString(firstMatch)) + } + } else { + got := nodeString(firstMatch) + if got != test.results[0] { + t.Errorf("Query: selector %s want %s, got %s", test.selector, test.results[0], got) + } + } + + if !reflect.DeepEqual(matches, Selector(s.Match).Filter(matches)) { + t.Fatalf("inconsistent Filter result") + } + } +} + +type testPseudo struct { + HTML, selector string + spec Specificity + pseudo string +} + +var testsPseudo = []testPseudo{ + { + HTML: `
            `, + selector: "#s12:not(FOO)::before", + spec: Specificity{1, 0, 2}, + pseudo: "before", + }, + { + HTML: `
            `, + selector: "#s12::first-line", + spec: Specificity{1, 0, 1}, + pseudo: "first-line", + }, + { + HTML: `
            `, + selector: "ol > #s12:first-line", + spec: Specificity{1, 0, 2}, + pseudo: "first-line", + }, + { + HTML: `
            `, + selector: "#s12:not(FOO)::after", + spec: Specificity{1, 0, 2}, + pseudo: "after", + }, + { + HTML: `
            `, + selector: "LI.red.level:before", + spec: Specificity{0, 2, 2}, + pseudo: "before", + }, +} + +func TestPseudoElement(t *testing.T) { + for _, test := range testsPseudo { + s, err := ParseWithPseudoElement(test.selector) + if err != nil { + t.Fatalf("error compiling %q: %s", test.selector, err) + } + + if _, err = Parse(test.selector); err == nil { + t.Fatalf("selector %s with pseudo-element should not compile", test.selector) + } + + doc, err := html.Parse(strings.NewReader(test.HTML)) + if err != nil { + t.Fatalf("error parsing %q: %s", test.HTML, err) + } + + body := doc.FirstChild.LastChild + testNode := body.FirstChild.FirstChild.LastChild + if !s.Match(testNode) { + t.Errorf("%s didn't match (html tree : \n %s) \n", test.selector, nodeString(doc)) + continue + } + if s.Specificity() != test.spec { + t.Errorf("wrong specificity : expected %v got %v", test.spec, s.Specificity()) + } + if s.PseudoElement() != test.pseudo { + t.Errorf("wrong pseudo-element : expected %s got %s", test.pseudo, s.PseudoElement()) + } + } +} + +type invalidSelector struct { + Name string `json:"name,omitempty"` + Selector string `json:"selector,omitempty"` +} + +type validSelector struct { + invalidSelector + Expect []string `json:"expect,omitempty"` + Exclude []string `json:"exclude,omitempty"` + Level int `json:"level,omitempty"` + Xfail bool `json:"xfail,omitempty"` +} + +func TestShakespeare(t *testing.T) { + doc := parseReference("test_resources/shakespeare.html") + body := doc.FirstChild.NextSibling.LastChild + assertCount := func(selector string, expected int) { + sel, err := ParseGroup(selector) + if err != nil { + t.Errorf("invalid selector %s", selector) + } + if l := len(Selector(sel.Match).MatchAll(body)); l != expected { + t.Errorf("%s -> expected %d, got %d", selector, expected, l) + } + } + + // Data borrowed from https://github.com/Kozea/cssselect2 + assertCount("*", 246) + assertCount("div:only-child", 22) // ? + assertCount("div:nth-child(even)", 106) + assertCount("div:nth-child(2n)", 106) + assertCount("div:nth-child(odd)", 137) + assertCount("div:nth-child(2n+1)", 137) + assertCount("div:nth-child(n)", 243) + assertCount("div:last-child", 53) + assertCount("div:first-child", 51) + assertCount("div > div", 242) + assertCount("div + div", 190) + assertCount("div ~ div", 190) + assertCount("body", 1) + assertCount("body div", 243) + assertCount("div", 243) + assertCount("div div", 242) + assertCount("div div div", 241) + assertCount("div, div, div", 243) + assertCount("div, a, span", 243) + assertCount(".dialog", 51) + assertCount("div.dialog", 51) + assertCount("div .dialog", 51) + assertCount("div.character, div.dialog", 99) + assertCount("div.direction.dialog", 0) + assertCount("div.dialog.direction", 0) + assertCount("div.dialog.scene", 1) + assertCount("div.scene.scene", 1) + assertCount("div.scene .scene", 0) + assertCount("div.direction .dialog ", 0) + assertCount("div .dialog .direction", 4) + assertCount("div.dialog .dialog .direction", 4) + assertCount("#speech5", 1) + assertCount("div#speech5", 1) + assertCount("div #speech5", 1) + assertCount("div.scene div.dialog", 49) + assertCount("div#scene1 div.dialog div", 142) + assertCount("#scene1 #speech1", 1) + assertCount("div[class]", 103) + assertCount("div[class=dialog]", 50) + assertCount("div[class^=dia]", 51) + assertCount("div[class$=log]", 50) + assertCount("div[class*=sce]", 1) + assertCount("div[class|=dialog]", 50) + assertCount("div[class~=dialog]", 51) +} diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/serialize.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/serialize.go new file mode 100644 index 000000000..61acf04e1 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/serialize.go @@ -0,0 +1,176 @@ +package cascadia + +import ( + "fmt" + "strconv" + "strings" +) + +// implements the reverse operation Sel -> string + +var specialCharReplacer *strings.Replacer + +func init() { + var pairs []string + for _, s := range ",!\"#$%&'()*+ -./:;<=>?@[\\]^`{|}~" { + pairs = append(pairs, string(s), "\\"+string(s)) + } + specialCharReplacer = strings.NewReplacer(pairs...) +} + +// espace special CSS char +func escape(s string) string { return specialCharReplacer.Replace(s) } + +func (c tagSelector) String() string { + return c.tag +} + +func (c idSelector) String() string { + return "#" + escape(c.id) +} + +func (c classSelector) String() string { + return "." + escape(c.class) +} + +func (c attrSelector) String() string { + val := c.val + if c.operation == "#=" { + val = c.regexp.String() + } else if c.operation != "" { + val = fmt.Sprintf(`"%s"`, val) + } + + ignoreCase := "" + + if c.insensitive { + ignoreCase = " i" + } + + return fmt.Sprintf(`[%s%s%s%s]`, c.key, c.operation, val, ignoreCase) +} + +func (c relativePseudoClassSelector) String() string { + return fmt.Sprintf(":%s(%s)", c.name, c.match.String()) +} + +func (c containsPseudoClassSelector) String() string { + s := "contains" + if c.own { + s += "Own" + } + return fmt.Sprintf(`:%s("%s")`, s, c.value) +} + +func (c regexpPseudoClassSelector) String() string { + s := "matches" + if c.own { + s += "Own" + } + return fmt.Sprintf(":%s(%s)", s, c.regexp.String()) +} + +func (c nthPseudoClassSelector) String() string { + if c.a == 0 && c.b == 1 { // special cases + s := ":first-" + if c.last { + s = ":last-" + } + if c.ofType { + s += "of-type" + } else { + s += "child" + } + return s + } + var name string + switch [2]bool{c.last, c.ofType} { + case [2]bool{true, true}: + name = "nth-last-of-type" + case [2]bool{true, false}: + name = "nth-last-child" + case [2]bool{false, true}: + name = "nth-of-type" + case [2]bool{false, false}: + name = "nth-child" + } + s := fmt.Sprintf("+%d", c.b) + if c.b < 0 { // avoid +-8 invalid syntax + s = strconv.Itoa(c.b) + } + return fmt.Sprintf(":%s(%dn%s)", name, c.a, s) +} + +func (c onlyChildPseudoClassSelector) String() string { + if c.ofType { + return ":only-of-type" + } + return ":only-child" +} + +func (c inputPseudoClassSelector) String() string { + return ":input" +} + +func (c emptyElementPseudoClassSelector) String() string { + return ":empty" +} + +func (c rootPseudoClassSelector) String() string { + return ":root" +} + +func (c linkPseudoClassSelector) String() string { + return ":link" +} + +func (c langPseudoClassSelector) String() string { + return fmt.Sprintf(":lang(%s)", c.lang) +} + +func (c neverMatchSelector) String() string { + return c.value +} + +func (c enabledPseudoClassSelector) String() string { + return ":enabled" +} + +func (c disabledPseudoClassSelector) String() string { + return ":disabled" +} + +func (c checkedPseudoClassSelector) String() string { + return ":checked" +} + +func (c compoundSelector) String() string { + if len(c.selectors) == 0 && c.pseudoElement == "" { + return "*" + } + chunks := make([]string, len(c.selectors)) + for i, sel := range c.selectors { + chunks[i] = sel.String() + } + s := strings.Join(chunks, "") + if c.pseudoElement != "" { + s += "::" + c.pseudoElement + } + return s +} + +func (c combinedSelector) String() string { + start := c.first.String() + if c.second != nil { + start += fmt.Sprintf(" %s %s", string(c.combinator), c.second.String()) + } + return start +} + +func (c SelectorGroup) String() string { + ck := make([]string, len(c)) + for i, s := range c { + ck[i] = s.String() + } + return strings.Join(ck, ", ") +} diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/serialize_test.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/serialize_test.go new file mode 100644 index 000000000..c2e979145 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/serialize_test.go @@ -0,0 +1,39 @@ +package cascadia + +import ( + "reflect" + "testing" +) + +func TestSerialize(t *testing.T) { + var testSer []string + for _, test := range selectorTests { + testSer = append(testSer, test.selector) + } + for _, test := range testsPseudo { + testSer = append(testSer, test.selector) + } + for _, test := range loadValidSelectors(t) { + if test.Xfail { + continue + } + testSer = append(testSer, test.Selector) + } + + for _, test := range testSer { + s, err := ParseGroupWithPseudoElements(test) + if err != nil { + t.Fatalf("error compiling %q: %s", test, err) + } + + serialized := s.String() + s2, err := ParseGroupWithPseudoElements(serialized) + if err != nil { + t.Errorf("error compiling %q: %s %T (original : %s)", serialized, err, s, test) + } + + if !reflect.DeepEqual(s, s2) { + t.Errorf("can't retrieve selector from serialized : %s (original : %s, sel : %#v)", serialized, test, s) + } + } +} diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/specificity.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/specificity.go new file mode 100644 index 000000000..8db864f9b --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/specificity.go @@ -0,0 +1,26 @@ +package cascadia + +// Specificity is the CSS specificity as defined in +// https://www.w3.org/TR/selectors/#specificity-rules +// with the convention Specificity = [A,B,C]. +type Specificity [3]int + +// returns `true` if s < other (strictly), false otherwise +func (s Specificity) Less(other Specificity) bool { + for i := range s { + if s[i] < other[i] { + return true + } + if s[i] > other[i] { + return false + } + } + return false +} + +func (s Specificity) Add(other Specificity) Specificity { + for i, sp := range other { + s[i] += sp + } + return s +} diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/specificity_test.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/specificity_test.go new file mode 100644 index 000000000..535e545a9 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/specificity_test.go @@ -0,0 +1,127 @@ +package cascadia + +import ( + "fmt" + "strings" + "testing" + + "golang.org/x/net/html" +) + +type testSpec struct { + // html, css selector + HTML, selector string + // correct specificity + spec Specificity +} + +var testsSpecificity = []testSpec{ + { + HTML: `
            `, + selector: ":not(em, strong#foo)", + spec: Specificity{1, 0, 1}, + }, + { + HTML: `
            `, + selector: "*", + spec: Specificity{0, 0, 0}, + }, + { + HTML: `
              `, + selector: "ul", + spec: Specificity{0, 0, 1}, + }, + { + HTML: `
              `, + selector: "ul li", + spec: Specificity{0, 0, 2}, + }, + { + HTML: `
                `, + selector: "ul ol+li", + spec: Specificity{0, 0, 3}, + }, + { + HTML: `

                `, + selector: "H1 + *[REL=up] ", + spec: Specificity{0, 1, 1}, + }, + { + HTML: `
                `, + selector: "UL OL LI.red", + spec: Specificity{0, 1, 3}, + }, + { + HTML: `
                `, + selector: "LI.red.level", + spec: Specificity{0, 2, 1}, + }, + { + HTML: `
                `, + selector: "#x34y", + spec: Specificity{1, 0, 0}, + }, + { + HTML: `
                `, + selector: "#s12:not(FOO)", + spec: Specificity{1, 0, 1}, + }, + { + HTML: `
                `, + selector: "#s12:not(FOO)", + spec: Specificity{1, 0, 1}, + }, + { + HTML: `
                `, + selector: "#s12:empty", + spec: Specificity{1, 1, 0}, + }, + { + HTML: `
                `, + selector: "#s12:only-child", + spec: Specificity{1, 1, 0}, + }, +} + +func setupSel(selector, HTML string) (Sel, *html.Node, error) { + s, err := Parse(selector) + if err != nil { + return nil, nil, fmt.Errorf("error compiling %q: %s", selector, err) + } + + doc, err := html.Parse(strings.NewReader(HTML)) + if err != nil { + return nil, nil, fmt.Errorf("error parsing %q: %s", HTML, err) + } + return s, doc, nil +} + +func TestSpecificity(t *testing.T) { + for _, test := range testsSpecificity { + s, doc, err := setupSel(test.selector, test.HTML) + if err != nil { + t.Fatal(err) + } + body := doc.FirstChild.LastChild + testNode := body.FirstChild.FirstChild.LastChild + if !s.Match(testNode) { + t.Errorf("%s didn't match (html tree : \n %s) \n", test.selector, nodeString(doc)) + continue + } + gotSpec := s.Specificity() + if gotSpec != test.spec { + t.Errorf("wrong specificity : expected %v, got %v", test.spec, gotSpec) + } + } +} + +func TestCompareSpecificity(t *testing.T) { + s1, s2 := Specificity{1, 1, 0}, Specificity{1, 0, 0} + if s1.Less(s2) { + t.Fatal() + } + + if s1.Less(s1) { + t.Fatal() + } +} diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/content.xhtml b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/content.xhtml new file mode 100644 index 000000000..bc54adec7 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/content.xhtml @@ -0,0 +1,530 @@ + + + + + Selectors-API Test Suite: HTML with Selectors Level 2 using + TestHarness: Test Document + + + + + + + + + +
                +
                + +
                +

                + Universal selector tests inside element with + id="universal". +

                +
                +
                Some preformatted text with some embedded code
                +

                + This is a normal link: + W3C +

                +
                + Some more nested elements + code hyperlink +
                +
                + +
                +
                +
                +
                +
                +

                + +

                +
                
                +                
                +
                  + + + + +
                  + +
                  +
                  +
                  +
                  +
                  + +
                  + + + + + + + + + +
                  + +
                  +
                  + +
                  +
                  +
                  +
                  + +
                  +
                  + + + + + + + + + + +

                  +
                  + +
                  +
                  +
                  +
                  +
                  +
                  + +
                  + + + + +
                  +
                  +
                  +
                  +
                  + +

                  + +
                  + +
                  + + + + +
                  +
                  +
                  +
                  + +

                  + +
                  + +
                  + + + + +
                  +
                  +
                  +
                  +
                  +
                  + +

                  +
                  + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + +
                    +
                  1. +
                  2. +
                  3. +
                  4. +
                  5. +
                  6. +
                  7. +
                  8. +
                  9. +
                  10. +
                  11. +
                  12. +
                  + +

                  + span1 + em1 + + em2 + span2 + strong1 + em3 + span3 + span4 + strong2 + em4 +

                  +
                  + +
                  +
                  +
                  +
                  + +

                  + +

                  +

                  + +

                  +

                  + +

                  +
                  + +
                  +

                  + +

                  +

                  + +

                  +

                  + +

                  + +
                  +
                  +
                  +
                  + +
                  +

                  + +

                  +

                  + + +

                  +

                  + + + +

                  +
                  + > + +
                  +

                  +

                  +

                  +

                  Text node

                  +

                  + +

                  +
                  + + + +
                  +
                  +
                  +
                  +
                  +
                  + +
                  + + + + + + + + + + + + + + + + + + + + + + + +
                  + +
                  +
                  +
                  +
                  + +

                  + +

                  +

                  + +

                  +

                  + +

                  +
                  + +
                  All pseudo-element tests
                  + +
                  +

                  +

                  +

                  + + +
                  +
                  +

                  +
                  +

                  +
                  +
                  +
                  +
                  + + + + + + +
                  + +
                  +
                  +
                  + +
                    +
                  • +
                  • +
                  • +
                  • +
                  + + + + + + +
                  + +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  + +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  + +
                  +
                  +
                  +
                  +
                  +
                  +

                  +
                  +
                  +
                  +

                  +

                  +
                  + +
                  +
                  +
                  +
                  +
                  +
                  +

                  +
                  +
                  +
                  +

                  +

                  +
                  + +
                  + + +
                  +
                  + + diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/invalid_selectors.json b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/invalid_selectors.json new file mode 100644 index 000000000..9915d38cb --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/invalid_selectors.json @@ -0,0 +1,37 @@ +[ + {"name": "Empty String", "selector": ""}, + {"name": "Invalid character", "selector": "["}, + {"name": "Invalid character", "selector": "]"}, + {"name": "Invalid character", "selector": "("}, + {"name": "Invalid character", "selector": ")"}, + {"name": "Invalid character", "selector": "{"}, + {"name": "Invalid character", "selector": "}"}, + {"name": "Invalid character", "selector": "<"}, + {"name": "Invalid character", "selector": ">"}, + {"name": "Invalid character", "selector": ":"}, + {"name": "Invalid character", "selector": "::"}, + {"name": "Invalid ID", "selector": "#"}, + {"name": "Invalid group of selectors", "selector": "div,"}, + {"name": "Invalid class", "selector": "."}, + {"name": "Invalid class", "selector": ".5cm"}, + {"name": "Invalid class", "selector": "..test"}, + {"name": "Invalid class", "selector": ".foo..quux"}, + {"name": "Invalid class", "selector": ".bar."}, + {"name": "Invalid combinator", "selector": "div & address, p"}, + {"name": "Invalid combinator", "selector": "div >> address, p"}, + {"name": "Invalid combinator", "selector": "div ++ address, p"}, + {"name": "Invalid combinator", "selector": "div ~~ address, p"}, + {"name": "Invalid [att=value] selector", "selector": "[*=test]"}, + {"name": "Invalid [att=value] selector", "selector": "[*|*=test]"}, + {"name": "Invalid [att=value] selector", "selector": "[class= space unquoted ]"}, + {"name": "Unknown pseudo-class", "selector": "div:example"}, + {"name": "Unknown pseudo-class", "selector": ":example"}, + {"name": "Unknown pseudo-element", "selector": "div::example", "xfail": true}, + {"name": "Unknown pseudo-element", "selector": "::example", "xfail": true}, + {"name": "Invalid pseudo-element", "selector": ":::before"}, + {"name": "Undeclared namespace", "selector": "ns|div"}, + {"name": "Undeclared namespace", "selector": ":not(ns|div)"}, + {"name": "Invalid namespace", "selector": "^|div"}, + {"name": "Invalid namespace", "selector": "$|div"}, + {"name": "Case insensitive, no closing ]", "selector": "[a=a i"} +] diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/shakespeare.html b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/shakespeare.html new file mode 100644 index 000000000..8a42029de --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/shakespeare.html @@ -0,0 +1,307 @@ + + + + + + +
                  +
                  +

                  As You Like It

                  +
                  + by William Shakespeare +
                  +
                  +

                  ACT I, SCENE III. A room in the palace.

                  +
                  +
                  Enter CELIA and ROSALIND
                  +
                  +
                  CELIA
                  +
                  +
                  Why, cousin! why, Rosalind! Cupid have mercy! not a word?
                  +
                  +
                  ROSALIND
                  +
                  +
                  Not one to throw at a dog.
                  +
                  +
                  CELIA
                  +
                  +
                  No, thy words are too precious to be cast away upon
                  +
                  curs; throw some of them at me; come, lame me with reasons.
                  +
                  +
                  ROSALIND
                  +
                  CELIA
                  +
                  +
                  But is all this for your father?
                  +
                  +
                  +
                  Then there were two cousins laid up; when the one
                  +
                  should be lamed with reasons and the other mad
                  +
                  without any.
                  +
                  +
                  ROSALIND
                  +
                  +
                  No, some of it is for my child's father. O, how
                  +
                  full of briers is this working-day world!
                  +
                  +
                  CELIA
                  +
                  +
                  They are but burs, cousin, thrown upon thee in
                  +
                  holiday foolery: if we walk not in the trodden
                  +
                  paths our very petticoats will catch them.
                  +
                  +
                  ROSALIND
                  +
                  +
                  I could shake them off my coat: these burs are in my heart.
                  +
                  +
                  CELIA
                  +
                  +
                  Hem them away.
                  +
                  +
                  ROSALIND
                  +
                  +
                  I would try, if I could cry 'hem' and have him.
                  +
                  +
                  CELIA
                  +
                  +
                  Come, come, wrestle with thy affections.
                  +
                  +
                  ROSALIND
                  +
                  +
                  O, they take the part of a better wrestler than myself!
                  +
                  +
                  CELIA
                  +
                  +
                  O, a good wish upon you! you will try in time, in
                  +
                  despite of a fall. But, turning these jests out of
                  +
                  service, let us talk in good earnest: is it
                  +
                  possible, on such a sudden, you should fall into so
                  +
                  strong a liking with old Sir Rowland's youngest son?
                  +
                  +
                  ROSALIND
                  +
                  +
                  The duke my father loved his father dearly.
                  +
                  +
                  CELIA
                  +
                  +
                  Doth it therefore ensue that you should love his son
                  +
                  dearly? By this kind of chase, I should hate him,
                  +
                  for my father hated his father dearly; yet I hate
                  +
                  not Orlando.
                  +
                  +
                  ROSALIND
                  +
                  +
                  No, faith, hate him not, for my sake.
                  +
                  +
                  CELIA
                  +
                  +
                  Why should I not? doth he not deserve well?
                  +
                  +
                  ROSALIND
                  +
                  +
                  Let me love him for that, and do you love him
                  +
                  because I do. Look, here comes the duke.
                  +
                  +
                  CELIA
                  +
                  +
                  With his eyes full of anger.
                  +
                  Enter DUKE FREDERICK, with Lords
                  +
                  +
                  DUKE FREDERICK
                  +
                  +
                  Mistress, dispatch you with your safest haste
                  +
                  And get you from our court.
                  +
                  +
                  ROSALIND
                  +
                  +
                  Me, uncle?
                  +
                  +
                  DUKE FREDERICK
                  +
                  +
                  You, cousin
                  +
                  Within these ten days if that thou be'st found
                  +
                  So near our public court as twenty miles,
                  +
                  Thou diest for it.
                  +
                  +
                  ROSALIND
                  +
                  +
                  I do beseech your grace,
                  +
                  Let me the knowledge of my fault bear with me:
                  +
                  If with myself I hold intelligence
                  +
                  Or have acquaintance with mine own desires,
                  +
                  If that I do not dream or be not frantic,--
                  +
                  As I do trust I am not--then, dear uncle,
                  +
                  Never so much as in a thought unborn
                  +
                  Did I offend your highness.
                  +
                  +
                  DUKE FREDERICK
                  +
                  +
                  Thus do all traitors:
                  +
                  If their purgation did consist in words,
                  +
                  They are as innocent as grace itself:
                  +
                  Let it suffice thee that I trust thee not.
                  +
                  +
                  ROSALIND
                  +
                  +
                  Yet your mistrust cannot make me a traitor:
                  +
                  Tell me whereon the likelihood depends.
                  +
                  +
                  DUKE FREDERICK
                  +
                  +
                  Thou art thy father's daughter; there's enough.
                  +
                  +
                  ROSALIND
                  +
                  +
                  So was I when your highness took his dukedom;
                  +
                  So was I when your highness banish'd him:
                  +
                  Treason is not inherited, my lord;
                  +
                  Or, if we did derive it from our friends,
                  +
                  What's that to me? my father was no traitor:
                  +
                  Then, good my liege, mistake me not so much
                  +
                  To think my poverty is treacherous.
                  +
                  +
                  CELIA
                  +
                  +
                  Dear sovereign, hear me speak.
                  +
                  +
                  DUKE FREDERICK
                  +
                  +
                  Ay, Celia; we stay'd her for your sake,
                  +
                  Else had she with her father ranged along.
                  +
                  +
                  CELIA
                  +
                  +
                  I did not then entreat to have her stay;
                  +
                  It was your pleasure and your own remorse:
                  +
                  I was too young that time to value her;
                  +
                  But now I know her: if she be a traitor,
                  +
                  Why so am I; we still have slept together,
                  +
                  Rose at an instant, learn'd, play'd, eat together,
                  +
                  And wheresoever we went, like Juno's swans,
                  +
                  Still we went coupled and inseparable.
                  +
                  +
                  DUKE FREDERICK
                  +
                  +
                  She is too subtle for thee; and her smoothness,
                  +
                  Her very silence and her patience
                  +
                  Speak to the people, and they pity her.
                  +
                  Thou art a fool: she robs thee of thy name;
                  +
                  And thou wilt show more bright and seem more virtuous
                  +
                  When she is gone. Then open not thy lips:
                  +
                  Firm and irrevocable is my doom
                  +
                  Which I have pass'd upon her; she is banish'd.
                  +
                  +
                  CELIA
                  +
                  +
                  Pronounce that sentence then on me, my liege:
                  +
                  I cannot live out of her company.
                  +
                  +
                  DUKE FREDERICK
                  +
                  +
                  You are a fool. You, niece, provide yourself:
                  +
                  If you outstay the time, upon mine honour,
                  +
                  And in the greatness of my word, you die.
                  +
                  Exeunt DUKE FREDERICK and Lords
                  +
                  +
                  CELIA
                  +
                  +
                  O my poor Rosalind, whither wilt thou go?
                  +
                  Wilt thou change fathers? I will give thee mine.
                  +
                  I charge thee, be not thou more grieved than I am.
                  +
                  +
                  ROSALIND
                  +
                  +
                  I have more cause.
                  +
                  +
                  CELIA
                  +
                  +
                  Thou hast not, cousin;
                  +
                  Prithee be cheerful: know'st thou not, the duke
                  +
                  Hath banish'd me, his daughter?
                  +
                  +
                  ROSALIND
                  +
                  +
                  That he hath not.
                  +
                  +
                  CELIA
                  +
                  +
                  No, hath not? Rosalind lacks then the love
                  +
                  Which teacheth thee that thou and I am one:
                  +
                  Shall we be sunder'd? shall we part, sweet girl?
                  +
                  No: let my father seek another heir.
                  +
                  Therefore devise with me how we may fly,
                  +
                  Whither to go and what to bear with us;
                  +
                  And do not seek to take your change upon you,
                  +
                  To bear your griefs yourself and leave me out;
                  +
                  For, by this heaven, now at our sorrows pale,
                  +
                  Say what thou canst, I'll go along with thee.
                  +
                  +
                  ROSALIND
                  +
                  +
                  Why, whither shall we go?
                  +
                  +
                  CELIA
                  +
                  +
                  To seek my uncle in the forest of Arden.
                  +
                  +
                  ROSALIND
                  +
                  +
                  Alas, what danger will it be to us,
                  +
                  Maids as we are, to travel forth so far!
                  +
                  Beauty provoketh thieves sooner than gold.
                  +
                  +
                  CELIA
                  +
                  +
                  I'll put myself in poor and mean attire
                  +
                  And with a kind of umber smirch my face;
                  +
                  The like do you: so shall we pass along
                  +
                  And never stir assailants.
                  +
                  +
                  ROSALIND
                  +
                  +
                  Were it not better,
                  +
                  Because that I am more than common tall,
                  +
                  That I did suit me all points like a man?
                  +
                  A gallant curtle-axe upon my thigh,
                  +
                  A boar-spear in my hand; and--in my heart
                  +
                  Lie there what hidden woman's fear there will--
                  +
                  We'll have a swashing and a martial outside,
                  +
                  As many other mannish cowards have
                  +
                  That do outface it with their semblances.
                  +
                  +
                  CELIA
                  +
                  +
                  What shall I call thee when thou art a man?
                  +
                  +
                  ROSALIND
                  +
                  +
                  I'll have no worse a name than Jove's own page;
                  +
                  And therefore look you call me Ganymede.
                  +
                  But what will you be call'd?
                  +
                  +
                  CELIA
                  +
                  +
                  Something that hath a reference to my state
                  +
                  No longer Celia, but Aliena.
                  +
                  +
                  ROSALIND
                  +
                  +
                  But, cousin, what if we assay'd to steal
                  +
                  The clownish fool out of your father's court?
                  +
                  Would he not be a comfort to our travel?
                  +
                  +
                  CELIA
                  +
                  +
                  He'll go along o'er the wide world with me;
                  +
                  Leave me alone to woo him. Let's away,
                  +
                  And get our jewels and our wealth together,
                  +
                  Devise the fittest time and safest way
                  +
                  To hide us from pursuit that will be made
                  +
                  After my flight. Now go we in content
                  +
                  To liberty and not to banishment.
                  +
                  Exeunt
                  +
                  +
                  +
                  +
                  + + diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/valid_selectors.json b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/valid_selectors.json new file mode 100644 index 000000000..ff6b5253e --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/test_resources/valid_selectors.json @@ -0,0 +1,1642 @@ +[ + { + "name": "Type selector, matching html element", + "selector": "html", + "expect": [ + "html" + ], + "exclude": [ + "element", + "fragment", + "detached" + ], + "level": 1 + }, + { + "name": "Type selector, matching body element", + "selector": "body", + "expect": [ + "body" + ], + "exclude": [ + "element", + "fragment", + "detached" + ], + "level": 1 + }, + { + "name": "Universal selector, matching all children of element with specified ID", + "selector": "#universal>*", + "expect": [ + "universal-p1", + "universal-hr1", + "universal-pre1", + "universal-p2", + "universal-address1" + ], + "level": 2 + }, + { + "name": "Universal selector, matching all grandchildren of element with specified ID", + "selector": "#universal>*>*", + "expect": [ + "universal-code1", + "universal-span1", + "universal-a1", + "universal-code2" + ], + "level": 2 + }, + { + "name": "Universal selector, matching all children of empty element with specified ID", + "selector": "#empty>*", + "expect": [], + "level": 2 + }, + { + "name": "Universal selector, matching all descendants of element with specified ID", + "selector": "#universal *", + "expect": [ + "universal-p1", + "universal-code1", + "universal-hr1", + "universal-pre1", + "universal-span1", + "universal-p2", + "universal-a1", + "universal-address1", + "universal-code2", + "universal-a2" + ], + "level": 2 + }, + { + "name": "Attribute presence selector, matching align attribute with value", + "selector": ".attr-presence-div1[align]", + "expect": [ + "attr-presence-div1" + ], + "level": 2 + }, + { + "name": "Attribute presence selector, matching align attribute with empty value", + "selector": ".attr-presence-div2[align]", + "expect": [ + "attr-presence-div2" + ], + "level": 2 + }, + { + "name": "Attribute presence selector, matching title attribute, case insensitivity", + "selector": "#attr-presence [TiTlE]", + "expect": [ + "attr-presence-a1", + "attr-presence-span1" + ], + "exclude": [ + "xhtml" + ], + "level": 2 + }, + { + "name": "Attribute presence selector, matching custom data-* attribute", + "selector": "[data-attr-presence]", + "expect": [ + "attr-presence-pre1", + "attr-presence-blockquote1" + ], + "level": 2 + }, + { + "name": "Attribute presence selector, not matching attribute with similar name", + "selector": ".attr-presence-div3[align], .attr-presence-div4[align]", + "expect": [], + "level": 2 + }, + { + "name": "Attribute presence selector, matching attribute with non-ASCII characters", + "selector": "ul[data-中文]", + "expect": [ + "attr-presence-ul1" + ], + "level": 2 + }, + { + "name": "Attribute presence selector, not matching default option without selected attribute", + "selector": "#attr-presence-select1 option[selected]", + "expect": [], + "level": 2 + }, + { + "name": "Attribute presence selector, matching option with selected attribute", + "selector": "#attr-presence-select2 option[selected]", + "expect": [ + "attr-presence-select2-option4" + ], + "level": 2 + }, + { + "name": "Attribute presence selector, matching multiple options with selected attributes", + "selector": "#attr-presence-select3 option[selected]", + "expect": [ + "attr-presence-select3-option2", + "attr-presence-select3-option3" + ], + "level": 2 + }, + { + "name": "Attribute value selector, matching align attribute with value", + "selector": "#attr-value [align=\"center\"]", + "expect": [ + "attr-value-div1" + ], + "level": 2 + }, + { + "name": "Attribute value selector, matching align attribute with empty value", + "selector": "#attr-value [align=\"\"]", + "expect": [ + "attr-value-div2" + ], + "level": 2 + }, + { + "name": "Attribute value selector, not matching align attribute with partial value", + "selector": "#attr-value [align=\"c\"]", + "expect": [], + "level": 2 + }, + { + "name": "Attribute value selector, not matching align attribute with incorrect value", + "selector": "#attr-value [align=\"centera\"]", + "expect": [], + "level": 2 + }, + { + "name": "Attribute value selector, matching custom data-* attribute with unicode escaped value", + "selector": "[data-attr-value=\"\\e9\"]", + "expect": [ + "attr-value-div3" + ], + "level": 2 + }, + { + "name": "Attribute value selector, matching custom data-* attribute with escaped character", + "selector": "[data-attr-value_foo=\"\\e9\"]", + "expect": [ + "attr-value-div4" + ], + "level": 2 + }, + { + "name": "Attribute value selector with single-quoted value, matching multiple inputs with type attributes", + "selector": "#attr-value input[type='hidden'],#attr-value input[type='radio']", + "expect": [ + "attr-value-input3", + "attr-value-input4", + "attr-value-input6", + "attr-value-input8", + "attr-value-input9" + ], + "level": 2 + }, + { + "name": "Attribute value selector with double-quoted value, matching multiple inputs with type attributes", + "selector": "#attr-value input[type=\"hidden\"],#attr-value input[type='radio']", + "expect": [ + "attr-value-input3", + "attr-value-input4", + "attr-value-input6", + "attr-value-input8", + "attr-value-input9" + ], + "level": 2 + }, + { + "name": "Attribute value selector with unquoted value, matching multiple inputs with type attributes", + "selector": "#attr-value input[type=hidden],#attr-value input[type=radio]", + "expect": [ + "attr-value-input3", + "attr-value-input4", + "attr-value-input6", + "attr-value-input8", + "attr-value-input9" + ], + "level": 2 + }, + { + "name": "Attribute value selector, matching attribute with value using non-ASCII characters", + "selector": "[data-attr-value=中文]", + "expect": [ + "attr-value-div5" + ], + "level": 2 + }, + { + "name": "Attribute whitespace-separated list selector, matching class attribute with value", + "selector": "#attr-whitespace [class~=\"div1\"]", + "expect": [ + "attr-whitespace-div1" + ], + "level": 2 + }, + { + "name": "Attribute whitespace-separated list selector, not matching class attribute with empty value", + "selector": "#attr-whitespace [class~=\"\"]", + "expect": [], + "level": 2 + }, + { + "name": "Attribute whitespace-separated list selector, not matching class attribute with partial value", + "selector": "[data-attr-whitespace~=\"div\"]", + "expect": [], + "level": 2 + }, + { + "name": "Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value", + "selector": "[data-attr-whitespace~=\"\\0000e9\"]", + "expect": [ + "attr-whitespace-div4" + ], + "level": 2 + }, + { + "name": "Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character", + "selector": "[data-attr-whitespace_foo~=\"\\e9\"]", + "expect": [ + "attr-whitespace-div5" + ], + "level": 2 + }, + { + "name": "Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes", + "selector": "#attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow']", + "expect": [ + "attr-whitespace-a1", + "attr-whitespace-a2", + "attr-whitespace-a3", + "attr-whitespace-a5", + "attr-whitespace-a7" + ], + "level": 2 + }, + { + "name": "Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes", + "selector": "#attr-whitespace a[rel~=\"bookmark\"],#attr-whitespace a[rel~='nofollow']", + "expect": [ + "attr-whitespace-a1", + "attr-whitespace-a2", + "attr-whitespace-a3", + "attr-whitespace-a5", + "attr-whitespace-a7" + ], + "level": 2 + }, + { + "name": "Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes", + "selector": "#attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow]", + "expect": [ + "attr-whitespace-a1", + "attr-whitespace-a2", + "attr-whitespace-a3", + "attr-whitespace-a5", + "attr-whitespace-a7" + ], + "level": 2 + }, + { + "name": "Attribute whitespace-separated list selector with double-quoted value, not matching value with space", + "selector": "#attr-whitespace a[rel~=\"book mark\"]", + "expect": [], + "level": 2 + }, + { + "name": "Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters", + "selector": "#attr-whitespace [title~=中文]", + "expect": [ + "attr-whitespace-p1" + ], + "level": 2 + }, + { + "name": "Attribute hyphen-separated list selector, not matching unspecified lang attribute", + "selector": "#attr-hyphen-div1[lang|=\"en\"]", + "expect": [], + "level": 2 + }, + { + "name": "Attribute hyphen-separated list selector, matching lang attribute with exact value", + "selector": "#attr-hyphen-div2[lang|=\"fr\"]", + "expect": [ + "attr-hyphen-div2" + ], + "level": 2 + }, + { + "name": "Attribute hyphen-separated list selector, matching lang attribute with partial value", + "selector": "#attr-hyphen-div3[lang|=\"en\"]", + "expect": [ + "attr-hyphen-div3" + ], + "level": 2 + }, + { + "name": "Attribute hyphen-separated list selector, not matching incorrect value", + "selector": "#attr-hyphen-div4[lang|=\"es-AR\"]", + "expect": [], + "level": 2 + }, + { + "name": "Attribute begins with selector, matching href attributes beginning with specified substring", + "selector": "#attr-begins a[href^=\"http://www\"]", + "expect": [ + "attr-begins-a1", + "attr-begins-a3" + ], + "level": 3 + }, + { + "name": "Attribute begins with selector, matching lang attributes beginning with specified substring, ", + "selector": "#attr-begins [lang^=\"en-\"]", + "expect": [ + "attr-begins-div2", + "attr-begins-div4" + ], + "level": 3 + }, + { + "name": "Attribute begins with selector, not matching class attribute not beginning with specified substring", + "selector": "#attr-begins [class^=apple]", + "expect": [], + "level": 3 + }, + { + "name": "Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring", + "selector": "#attr-begins [class^=' apple']", + "expect": [ + "attr-begins-p1" + ], + "level": 3 + }, + { + "name": "Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring", + "selector": "#attr-begins [class^=\" apple\"]", + "expect": [ + "attr-begins-p1" + ], + "level": 3 + }, + { + "name": "Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring", + "selector": "#attr-begins [class^= apple]", + "expect": [], + "level": 3 + }, + { + "name": "Attribute ends with selector, matching href attributes ending with specified substring", + "selector": "#attr-ends a[href$=\".org\"]", + "expect": [ + "attr-ends-a1", + "attr-ends-a3" + ], + "level": 3 + }, + { + "name": "Attribute ends with selector, matching lang attributes ending with specified substring, ", + "selector": "#attr-ends [lang$=\"-CH\"]", + "expect": [ + "attr-ends-div2", + "attr-ends-div4" + ], + "level": 3 + }, + { + "name": "Attribute ends with selector, not matching class attribute not ending with specified substring", + "selector": "#attr-ends [class$=apple]", + "expect": [], + "level": 3 + }, + { + "name": "Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring", + "selector": "#attr-ends [class$='apple ']", + "expect": [ + "attr-ends-p1" + ], + "level": 3 + }, + { + "name": "Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring", + "selector": "#attr-ends [class$=\"apple \"]", + "expect": [ + "attr-ends-p1" + ], + "level": 3 + }, + { + "name": "Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring", + "selector": "#attr-ends [class$=apple ]", + "expect": [], + "level": 3 + }, + { + "name": "Attribute contains selector, matching href attributes beginning with specified substring", + "selector": "#attr-contains a[href*=\"http://www\"]", + "expect": [ + "attr-contains-a1", + "attr-contains-a3" + ], + "level": 3 + }, + { + "name": "Attribute contains selector, matching href attributes ending with specified substring", + "selector": "#attr-contains a[href*=\".org\"]", + "expect": [ + "attr-contains-a1", + "attr-contains-a2" + ], + "level": 3 + }, + { + "name": "Attribute contains selector, matching href attributes containing specified substring", + "selector": "#attr-contains a[href*=\".example.\"]", + "expect": [ + "attr-contains-a1", + "attr-contains-a3" + ], + "level": 3 + }, + { + "name": "Attribute contains selector, matching lang attributes beginning with specified substring, ", + "selector": "#attr-contains [lang*=\"en-\"]", + "expect": [ + "attr-contains-div2", + "attr-contains-div6" + ], + "level": 3 + }, + { + "name": "Attribute contains selector, matching lang attributes ending with specified substring, ", + "selector": "#attr-contains [lang*=\"-CH\"]", + "expect": [ + "attr-contains-div3", + "attr-contains-div5" + ], + "level": 3 + }, + { + "name": "Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring", + "selector": "#attr-contains [class*=' apple']", + "expect": [ + "attr-contains-p1" + ], + "level": 3 + }, + { + "name": "Attribute contains selector with single-quoted value, matching class attribute ending with specified substring", + "selector": "#attr-contains [class*='orange ']", + "expect": [ + "attr-contains-p1" + ], + "level": 3 + }, + { + "name": "Attribute contains selector with single-quoted value, matching class attribute containing specified substring", + "selector": "#attr-contains [class*='ple banana ora']", + "expect": [ + "attr-contains-p1" + ], + "level": 3 + }, + { + "name": "Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring", + "selector": "#attr-contains [class*=\" apple\"]", + "expect": [ + "attr-contains-p1" + ], + "level": 3 + }, + { + "name": "Attribute contains selector with double-quoted value, matching class attribute ending with specified substring", + "selector": "#attr-contains [class*=\"orange \"]", + "expect": [ + "attr-contains-p1" + ], + "level": 3 + }, + { + "name": "Attribute contains selector with double-quoted value, matching class attribute containing specified substring", + "selector": "#attr-contains [class*=\"ple banana ora\"]", + "expect": [ + "attr-contains-p1" + ], + "level": 3 + }, + { + "name": "Attribute contains selector with unquoted value, matching class attribute beginning with specified substring", + "selector": "#attr-contains [class*= apple]", + "expect": [ + "attr-contains-p1" + ], + "level": 3 + }, + { + "name": "Attribute contains selector with unquoted value, matching class attribute ending with specified substring", + "selector": "#attr-contains [class*=orange ]", + "expect": [ + "attr-contains-p1" + ], + "level": 3 + }, + { + "name": "Attribute contains selector with unquoted value, matching class attribute containing specified substring", + "selector": "#attr-contains [class*= banana ]", + "expect": [ + "attr-contains-p1" + ], + "level": 3 + }, + { + "name": ":root pseudo-class selector, matching document root element", + "selector": ":root", + "expect": [ + "html" + ], + "exclude": [ + "element", + "fragment", + "detached" + ], + "level": 3 + }, + { + "name": ":nth-child selector, matching the third child element", + "selector": "#pseudo-nth-table1 :nth-child(3)", + "expect": [ + "pseudo-nth-td3", + "pseudo-nth-td9", + "pseudo-nth-tr3", + "pseudo-nth-td15" + ], + "level": 3 + }, + { + "name": ":nth-child selector, matching every third child element", + "selector": "#pseudo-nth li:nth-child(3n)", + "expect": [ + "pseudo-nth-li3", + "pseudo-nth-li6", + "pseudo-nth-li9", + "pseudo-nth-li12" + ], + "level": 3 + }, + { + "name": ":nth-child selector, matching every second child element, starting from the fourth", + "selector": "#pseudo-nth li:nth-child(2n+4)", + "expect": [ + "pseudo-nth-li4", + "pseudo-nth-li6", + "pseudo-nth-li8", + "pseudo-nth-li10", + "pseudo-nth-li12" + ], + "level": 3 + }, + { + "name": ":nth-child selector, matching every fourth child element, starting from the third", + "selector": "#pseudo-nth-p1 :nth-child(4n-1)", + "expect": [ + "pseudo-nth-em2", + "pseudo-nth-span3" + ], + "level": 3 + }, + { + "name": ":nth-last-child selector, matching the third last child element", + "selector": "#pseudo-nth-table1 :nth-last-child(3)", + "expect": [ + "pseudo-nth-tr1", + "pseudo-nth-td4", + "pseudo-nth-td10", + "pseudo-nth-td16" + ], + "level": 3 + }, + { + "name": ":nth-last-child selector, matching every third child element from the end", + "selector": "#pseudo-nth li:nth-last-child(3n)", + "expect": [ + "pseudo-nth-li1", + "pseudo-nth-li4", + "pseudo-nth-li7", + "pseudo-nth-li10" + ], + "level": 3 + }, + { + "name": ":nth-last-child selector, matching every second child element from the end, starting from the fourth last", + "selector": "#pseudo-nth li:nth-last-child(2n+4)", + "expect": [ + "pseudo-nth-li1", + "pseudo-nth-li3", + "pseudo-nth-li5", + "pseudo-nth-li7", + "pseudo-nth-li9" + ], + "level": 3 + }, + { + "name": ":nth-last-child selector, matching every fourth element from the end, starting from the third last", + "selector": "#pseudo-nth-p1 :nth-last-child(4n-1)", + "expect": [ + "pseudo-nth-span2", + "pseudo-nth-span4" + ], + "level": 3 + }, + { + "name": ":nth-of-type selector, matching the third em element", + "selector": "#pseudo-nth-p1 em:nth-of-type(3)", + "expect": [ + "pseudo-nth-em3" + ], + "level": 3 + }, + { + "name": ":nth-of-type selector, matching every second element of their type", + "selector": "#pseudo-nth-p1 :nth-of-type(2n)", + "expect": [ + "pseudo-nth-em2", + "pseudo-nth-span2", + "pseudo-nth-span4", + "pseudo-nth-strong2", + "pseudo-nth-em4" + ], + "level": 3 + }, + { + "name": ":nth-of-type selector, matching every second elemetn of their type, starting from the first", + "selector": "#pseudo-nth-p1 span:nth-of-type(2n-1)", + "expect": [ + "pseudo-nth-span1", + "pseudo-nth-span3" + ], + "level": 3 + }, + { + "name": ":nth-last-of-type selector, matching the thrid last em element", + "selector": "#pseudo-nth-p1 em:nth-last-of-type(3)", + "expect": [ + "pseudo-nth-em2" + ], + "level": 3 + }, + { + "name": ":nth-last-of-type selector, matching every second last element of their type", + "selector": "#pseudo-nth-p1 :nth-last-of-type(2n)", + "expect": [ + "pseudo-nth-span1", + "pseudo-nth-em1", + "pseudo-nth-strong1", + "pseudo-nth-em3", + "pseudo-nth-span3" + ], + "level": 3 + }, + { + "name": ":nth-last-of-type selector, matching every second last element of their type, starting from the last", + "selector": "#pseudo-nth-p1 span:nth-last-of-type(2n-1)", + "expect": [ + "pseudo-nth-span2", + "pseudo-nth-span4" + ], + "level": 3 + }, + { + "name": ":first-of-type selector, matching the first em element", + "selector": "#pseudo-nth-p1 em:first-of-type", + "expect": [ + "pseudo-nth-em1" + ], + "level": 3 + }, + { + "name": ":first-of-type selector, matching the first of every type of element", + "selector": "#pseudo-nth-p1 :first-of-type", + "expect": [ + "pseudo-nth-span1", + "pseudo-nth-em1", + "pseudo-nth-strong1" + ], + "level": 3 + }, + { + "name": ":first-of-type selector, matching the first td element in each table row", + "selector": "#pseudo-nth-table1 tr :first-of-type", + "expect": [ + "pseudo-nth-td1", + "pseudo-nth-td7", + "pseudo-nth-td13" + ], + "level": 3 + }, + { + "name": ":last-of-type selector, matching the last em elemnet", + "selector": "#pseudo-nth-p1 em:last-of-type", + "expect": [ + "pseudo-nth-em4" + ], + "level": 3 + }, + { + "name": ":last-of-type selector, matching the last of every type of element", + "selector": "#pseudo-nth-p1 :last-of-type", + "expect": [ + "pseudo-nth-span4", + "pseudo-nth-strong2", + "pseudo-nth-em4" + ], + "level": 3 + }, + { + "name": ":last-of-type selector, matching the last td element in each table row", + "selector": "#pseudo-nth-table1 tr :last-of-type", + "expect": [ + "pseudo-nth-td6", + "pseudo-nth-td12", + "pseudo-nth-td18" + ], + "level": 3 + }, + { + "name": ":first-child pseudo-class selector, matching first child div element", + "selector": "#pseudo-first-child div:first-child", + "expect": [ + "pseudo-first-child-div1" + ], + "level": 2 + }, + { + "name": ":first-child pseudo-class selector, doesn't match non-first-child elements", + "selector": ".pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child", + "expect": [], + "level": 2 + }, + { + "name": ":first-child pseudo-class selector, matching first-child of multiple elements", + "selector": "#pseudo-first-child span:first-child", + "expect": [ + "pseudo-first-child-span1", + "pseudo-first-child-span3", + "pseudo-first-child-span5" + ], + "level": 2 + }, + { + "name": ":last-child pseudo-class selector, matching last child div element", + "selector": "#pseudo-last-child div:last-child", + "expect": [ + "pseudo-last-child-div3" + ], + "level": 3 + }, + { + "name": ":last-child pseudo-class selector, doesn't match non-last-child elements", + "selector": ".pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child", + "expect": [], + "level": 3 + }, + { + "name": ":last-child pseudo-class selector, matching first-child of multiple elements", + "selector": "#pseudo-last-child span:last-child", + "expect": [ + "pseudo-last-child-span2", + "pseudo-last-child-span4", + "pseudo-last-child-span6" + ], + "level": 3 + }, + { + "name": ":pseudo-only-child pseudo-class selector, matching all only-child elements", + "selector": "#pseudo-only :only-child", + "expect": [ + "pseudo-only-span1" + ], + "level": 3 + }, + { + "name": ":pseudo-only-child pseudo-class selector, matching only-child em elements", + "selector": "#pseudo-only em:only-child", + "expect": [], + "level": 3 + }, + { + "name": ":pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type", + "selector": "#pseudo-only :only-of-type", + "expect": [ + "pseudo-only-span1", + "pseudo-only-em1" + ], + "level": 3 + }, + { + "name": ":pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type", + "selector": "#pseudo-only em:only-of-type", + "expect": [ + "pseudo-only-em1" + ], + "level": 3 + }, + { + "name": ":empty pseudo-class selector, matching empty p elements", + "selector": "#pseudo-empty p:empty", + "expect": [ + "pseudo-empty-p1", + "pseudo-empty-p2", + "pseudo-empty-p3" + ], + "level": 3 + }, + { + "name": ":empty pseudo-class selector, matching all empty elements", + "selector": "#pseudo-empty :empty", + "expect": [ + "pseudo-empty-p1", + "pseudo-empty-p2", + "pseudo-empty-p3", + "pseudo-empty-span1" + ], + "level": 3 + }, + { + "name": ":link and :visited pseudo-class selectors, matching a and area elements with href attributes", + "selector": "#pseudo-link :link, #pseudo-link :visited", + "expect": [ + "pseudo-link-a1", + "pseudo-link-a2", + "pseudo-link-area1" + ], + "level": 1 + }, + { + "name": ":link and :visited pseudo-class selectors, matching link elements with href attributes", + "selector": "#head :link, #head :visited", + "expect": [ + "pseudo-link-link1", + "pseudo-link-link2" + ], + "exclude": [ + "element", + "fragment", + "detached" + ], + "level": 1 + }, + { + "name": ":target pseudo-class selector, matching the element referenced by the URL fragment identifier", + "selector": ":target", + "xfail": true, + "expect": [ + "target" + ], + "exclude": [ + "fragment", + "detached" + ], + "level": 3 + }, + { + "name": ":lang pseudo-class selector, matching inherited language", + "selector": "#pseudo-lang-div1:lang(en)", + "expect": [ + "pseudo-lang-div1" + ], + "exclude": [ + "detached", + "fragment" + ], + "level": 2 + }, + { + "name": ":lang pseudo-class selector, matching specified language with exact value", + "selector": "#pseudo-lang-div2:lang(fr)", + "expect": [ + "pseudo-lang-div2" + ], + "level": 2 + }, + { + "name": ":lang pseudo-class selector, matching specified language with partial value", + "selector": "#pseudo-lang-div3:lang(en)", + "expect": [ + "pseudo-lang-div3" + ], + "level": 2 + }, + { + "name": ":lang pseudo-class selector, not matching incorrect language", + "selector": "#pseudo-lang-div4:lang(es-AR)", + "expect": [], + "level": 2 + }, + { + "name": ":enabled pseudo-class selector, matching all enabled form controls", + "selector": "#pseudo-ui :enabled", + "expect": [ + "pseudo-ui-input1", + "pseudo-ui-input2", + "pseudo-ui-input3", + "pseudo-ui-input4", + "pseudo-ui-input5", + "pseudo-ui-input6", + "pseudo-ui-input7", + "pseudo-ui-input8", + "pseudo-ui-input9", + "pseudo-ui-textarea1", + "pseudo-ui-button1" + ], + "level": 3 + }, + { + "name": ":enabled pseudo-class selector, matching all disabled form controls", + "selector": "#pseudo-ui :disabled", + "expect": [ + "pseudo-ui-input10", + "pseudo-ui-input11", + "pseudo-ui-input12", + "pseudo-ui-input13", + "pseudo-ui-input14", + "pseudo-ui-input15", + "pseudo-ui-input16", + "pseudo-ui-input17", + "pseudo-ui-input18", + "pseudo-ui-textarea2", + "pseudo-ui-button2" + ], + "level": 3 + }, + { + "name": ":checked pseudo-class selector, matching checked radio buttons and checkboxes", + "selector": "#pseudo-ui :checked", + "expect": [ + "pseudo-ui-input4", + "pseudo-ui-input6", + "pseudo-ui-input13", + "pseudo-ui-input15" + ], + "level": 3 + }, + { + "name": ":not pseudo-class selector, matching ", + "selector": "#not>:not(div)", + "expect": [ + "not-p1", + "not-p2", + "not-p3" + ], + "level": 3 + }, + { + "name": ":not pseudo-class selector, matching ", + "selector": "#not * :not(:first-child)", + "expect": [ + "not-em1", + "not-em2", + "not-em3" + ], + "level": 3 + }, + { + "name": ":not pseudo-class selector, matching nothing", + "selector": ":not(*)", + "expect": [], + "level": 3 + }, + { + "name": ":not pseudo-class selector, matching nothing", + "selector": ":not(*|*)", + "expect": [], + "level": 3 + }, + { + "name": ":first-line pseudo-element (one-colon syntax) selector, not matching any elements", + "selector": "#pseudo-element:first-line", + "expect": [], + "level": 2 + }, + { + "name": "::first-line pseudo-element (two-colon syntax) selector, not matching any elements", + "selector": "#pseudo-element::first-line", + "expect": [], + "level": 3 + }, + { + "name": ":first-letter pseudo-element (one-colon syntax) selector, not matching any elements", + "selector": "#pseudo-element:first-letter", + "expect": [], + "level": 2 + }, + { + "name": "::first-letter pseudo-element (two-colon syntax) selector, not matching any elements", + "selector": "#pseudo-element::first-letter", + "expect": [], + "level": 3 + }, + { + "name": ":before pseudo-element (one-colon syntax) selector, not matching any elements", + "selector": "#pseudo-element:before", + "expect": [], + "level": 2 + }, + { + "name": "::before pseudo-element (two-colon syntax) selector, not matching any elements", + "selector": "#pseudo-element::before", + "expect": [], + "level": 3 + }, + { + "name": ":after pseudo-element (one-colon syntax) selector, not matching any elements", + "selector": "#pseudo-element:after", + "expect": [], + "level": 2 + }, + { + "name": "::after pseudo-element (two-colon syntax) selector, not matching any elements", + "selector": "#pseudo-element::after", + "expect": [], + "level": 3 + }, + { + "name": "Class selector, matching element with specified class", + "selector": ".class-p", + "expect": [ + "class-p1", + "class-p2", + "class-p3" + ], + "level": 1 + }, + { + "name": "Class selector, chained, matching only elements with all specified classes", + "selector": "#class .apple.orange.banana", + "expect": [ + "class-div1", + "class-div2", + "class-p4", + "class-div3", + "class-p6", + "class-div4" + ], + "level": 1 + }, + { + "name": "Class Selector, chained, with type selector", + "selector": "div.apple.banana.orange", + "expect": [ + "class-div1", + "class-div2", + "class-div3", + "class-div4" + ], + "level": 1 + }, + { + "name": "Class selector, matching element with class value using non-ASCII characters", + "selector": ".台北Táiběi", + "expect": [ + "class-span1" + ], + "level": 1 + }, + { + "name": "Class selector, matching multiple elements with class value using non-ASCII characters", + "selector": ".台北", + "expect": [ + "class-span1", + "class-span2" + ], + "level": 1 + }, + { + "name": "Class selector, chained, matching element with multiple class values using non-ASCII characters", + "selector": ".台北Táiběi.台北", + "expect": [ + "class-span1" + ], + "level": 1 + }, + { + "name": "Class selector, matching element with class with escaped character", + "selector": ".foo\\:bar", + "expect": [ + "class-span3" + ], + "level": 1 + }, + { + "name": "Class selector, matching element with class with escaped character", + "selector": ".test\\.foo\\[5\\]bar", + "expect": [ + "class-span4" + ], + "level": 1 + }, + { + "name": "ID selector, matching element with specified id", + "selector": "#id #id-div1", + "expect": [ + "id-div1" + ], + "level": 1 + }, + { + "name": "ID selector, chained, matching element with specified id", + "selector": "#id-div1, #id-div1", + "expect": [ + "id-div1" + ], + "level": 1 + }, + { + "name": "ID selector, chained, matching element with specified id", + "selector": "#id-div1, #id-div2", + "expect": [ + "id-div1", + "id-div2" + ], + "level": 1 + }, + { + "name": "ID Selector, chained, with type selector", + "selector": "div#id-div1, div#id-div2", + "expect": [ + "id-div1", + "id-div2" + ], + "level": 1 + }, + { + "name": "ID selector, not matching non-existent descendant", + "selector": "#id #none", + "expect": [], + "level": 1 + }, + { + "name": "ID selector, not matching non-existent ancestor", + "selector": "#none #id-div1", + "expect": [], + "level": 1 + }, + { + "name": "ID selector, matching multiple elements with duplicate id", + "selector": "#id-li-duplicate", + "expect": [ + "id-li-duplicate", + "id-li-duplicate", + "id-li-duplicate", + "id-li-duplicate" + ], + "level": 1 + }, + { + "name": "ID selector, matching id value using non-ASCII characters", + "selector": "#台北Táiběi", + "expect": [ + "台北Táiběi" + ], + "level": 1 + }, + { + "name": "ID selector, matching id value using non-ASCII characters", + "selector": "#台北", + "expect": [ + "台北" + ], + "level": 1 + }, + { + "name": "ID selector, matching id values using non-ASCII characters", + "selector": "#台北Táiběi, #台北", + "expect": [ + "台北Táiběi", + "台北" + ], + "level": 1 + }, + { + "name": "ID selector, matching element with id with escaped character", + "selector": "#\\#foo\\:bar", + "expect": [ + "#foo:bar" + ], + "level": 1 + }, + { + "name": "ID selector, matching element with id with escaped character", + "selector": "#test\\.foo\\[5\\]bar", + "expect": [ + "test.foo[5]bar" + ], + "level": 1 + }, + { + "name": "Namespace selector, matching element with any namespace", + "selector": "#any-namespace *|div", + "expect": [ + "any-namespace-div1", + "any-namespace-div2", + "any-namespace-div3", + "any-namespace-div4" + ], + "level": 3, + "xfail": true + }, + { + "name": "Namespace selector, matching div elements in no namespace only", + "selector": "#no-namespace |div", + "expect": [ + "no-namespace-div3" + ], + "level": 3, + "xfail": true + }, + { + "name": "Namespace selector, matching any elements in no namespace only", + "selector": "#no-namespace |*", + "expect": [ + "no-namespace-div3" + ], + "level": 3, + "xfail": true + }, + { + "name": "Descendant combinator, matching element that is a descendant of an element with id", + "selector": "#descendant div", + "expect": [ + "descendant-div1", + "descendant-div2", + "descendant-div3", + "descendant-div4" + ], + "level": 1 + }, + { + "name": "Descendant combinator, matching element with id that is a descendant of an element", + "selector": "body #descendant-div1", + "expect": [ + "descendant-div1" + ], + "exclude": [ + "detached", + "fragment" + ], + "level": 1 + }, + { + "name": "Descendant combinator, matching element with id that is a descendant of an element", + "selector": "div #descendant-div1", + "expect": [ + "descendant-div1" + ], + "level": 1 + }, + { + "name": "Descendant combinator, matching element with id that is a descendant of an element with id", + "selector": "#descendant #descendant-div2", + "expect": [ + "descendant-div2" + ], + "level": 1 + }, + { + "name": "Descendant combinator, matching element with class that is a descendant of an element with id", + "selector": "#descendant .descendant-div2", + "expect": [ + "descendant-div2" + ], + "level": 1 + }, + { + "name": "Descendant combinator, matching element with class that is a descendant of an element with class", + "selector": ".descendant-div1 .descendant-div3", + "expect": [ + "descendant-div3" + ], + "level": 1 + }, + { + "name": "Descendant combinator, not matching element with id that is not a descendant of an element with id", + "selector": "#descendant-div1 #descendant-div4", + "expect": [], + "level": 1 + }, + { + "name": "Descendant combinator, whitespace characters", + "selector": "#descendant\t\r\n#descendant-div2", + "expect": [ + "descendant-div2" + ], + "level": 1 + }, + { + "name": "Child combinator, matching element that is a child of an element with id", + "selector": "#child>div", + "expect": [ + "child-div1", + "child-div4" + ], + "level": 2 + }, + { + "name": "Child combinator, matching element with id that is a child of an element", + "selector": "div>#child-div1", + "expect": [ + "child-div1" + ], + "level": 2 + }, + { + "name": "Child combinator, matching element with id that is a child of an element with id", + "selector": "#child>#child-div1", + "expect": [ + "child-div1" + ], + "level": 2 + }, + { + "name": "Child combinator, matching element with id that is a child of an element with class", + "selector": "#child-div1>.child-div2", + "expect": [ + "child-div2" + ], + "level": 2 + }, + { + "name": "Child combinator, matching element with class that is a child of an element with class", + "selector": ".child-div1>.child-div2", + "expect": [ + "child-div2" + ], + "level": 2 + }, + { + "name": "Child combinator, not matching element with id that is not a child of an element with id", + "selector": "#child>#child-div3", + "expect": [], + "level": 2 + }, + { + "name": "Child combinator, not matching element with id that is not a child of an element with class", + "selector": "#child-div1>.child-div3", + "expect": [], + "level": 2 + }, + { + "name": "Child combinator, not matching element with class that is not a child of an element with class", + "selector": ".child-div1>.child-div3", + "expect": [], + "level": 2 + }, + { + "name": "Child combinator, surrounded by whitespace", + "selector": "#child-div1\t\r\n>\t\r\n#child-div2", + "expect": [ + "child-div2" + ], + "level": 2 + }, + { + "name": "Child combinator, whitespace after", + "selector": "#child-div1>\t\r\n#child-div2", + "expect": [ + "child-div2" + ], + "level": 2 + }, + { + "name": "Child combinator, whitespace before", + "selector": "#child-div1\t\r\n>#child-div2", + "expect": [ + "child-div2" + ], + "level": 2 + }, + { + "name": "Child combinator, no whitespace", + "selector": "#child-div1>#child-div2", + "expect": [ + "child-div2" + ], + "level": 2 + }, + { + "name": "Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id", + "selector": "#adjacent-div2+div", + "expect": [ + "adjacent-div4" + ], + "level": 2 + }, + { + "name": "Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element", + "selector": "div+#adjacent-div4", + "expect": [ + "adjacent-div4" + ], + "level": 2 + }, + { + "name": "Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id", + "selector": "#adjacent-div2+#adjacent-div4", + "expect": [ + "adjacent-div4" + ], + "level": 2 + }, + { + "name": "Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id", + "selector": "#adjacent-div2+.adjacent-div4", + "expect": [ + "adjacent-div4" + ], + "level": 2 + }, + { + "name": "Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class", + "selector": ".adjacent-div2+.adjacent-div4", + "expect": [ + "adjacent-div4" + ], + "level": 2 + }, + { + "name": "Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element", + "selector": "#adjacent div+p", + "expect": [ + "adjacent-p2" + ], + "level": 2 + }, + { + "name": "Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id", + "selector": "#adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1", + "expect": [], + "level": 2 + }, + { + "name": "Adjacent sibling combinator, surrounded by whitespace", + "selector": "#adjacent-p2\t\r\n+\t\r\n#adjacent-p3", + "expect": [ + "adjacent-p3" + ], + "level": 2 + }, + { + "name": "Adjacent sibling combinator, whitespace after", + "selector": "#adjacent-p2+\t\r\n#adjacent-p3", + "expect": [ + "adjacent-p3" + ], + "level": 2 + }, + { + "name": "Adjacent sibling combinator, whitespace before", + "selector": "#adjacent-p2\t\r\n+#adjacent-p3", + "expect": [ + "adjacent-p3" + ], + "level": 2 + }, + { + "name": "Adjacent sibling combinator, no whitespace", + "selector": "#adjacent-p2+#adjacent-p3", + "expect": [ + "adjacent-p3" + ], + "level": 2 + }, + { + "name": "General sibling combinator, matching element that is a sibling of an element with id", + "selector": "#sibling-div2~div", + "expect": [ + "sibling-div4", + "sibling-div6" + ], + "level": 3 + }, + { + "name": "General sibling combinator, matching element with id that is a sibling of an element", + "selector": "div~#sibling-div4", + "expect": [ + "sibling-div4" + ], + "level": 3 + }, + { + "name": "General sibling combinator, matching element with id that is a sibling of an element with id", + "selector": "#sibling-div2~#sibling-div4", + "expect": [ + "sibling-div4" + ], + "level": 3 + }, + { + "name": "General sibling combinator, matching element with class that is a sibling of an element with id", + "selector": "#sibling-div2~.sibling-div", + "expect": [ + "sibling-div4", + "sibling-div6" + ], + "level": 3 + }, + { + "name": "General sibling combinator, matching p element that is a sibling of a div element", + "selector": "#sibling div~p", + "expect": [ + "sibling-p2", + "sibling-p3" + ], + "level": 3 + }, + { + "name": "General sibling combinator, not matching element with id that is not a sibling after a p element", + "selector": "#sibling>p~div", + "expect": [], + "level": 3 + }, + { + "name": "General sibling combinator, not matching element with id that is not a sibling after an element with id", + "selector": "#sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1", + "expect": [], + "level": 3 + }, + { + "name": "General sibling combinator, surrounded by whitespace", + "selector": "#sibling-p2\t\r\n~\t\r\n#sibling-p3", + "expect": [ + "sibling-p3" + ], + "level": 3 + }, + { + "name": "General sibling combinator, whitespace after", + "selector": "#sibling-p2~\t\r\n#sibling-p3", + "expect": [ + "sibling-p3" + ], + "level": 3 + }, + { + "name": "General sibling combinator, whitespace before", + "selector": "#sibling-p2\t\r\n~#sibling-p3", + "expect": [ + "sibling-p3" + ], + "level": 3 + }, + { + "name": "General sibling combinator, no whitespace", + "selector": "#sibling-p2~#sibling-p3", + "expect": [ + "sibling-p3" + ], + "level": 3 + }, + { + "name": "Syntax, group of selectors separator, surrounded by whitespace", + "selector": "#group em\t\r \n,\t\r \n#group strong", + "expect": [ + "group-em1", + "group-strong1" + ], + "level": 1 + }, + { + "name": "Syntax, group of selectors separator, whitespace after", + "selector": "#group em,\t\r\n#group strong", + "expect": [ + "group-em1", + "group-strong1" + ], + "level": 1 + }, + { + "name": "Syntax, group of selectors separator, whitespace before", + "selector": "#group em\t\r\n,#group strong", + "expect": [ + "group-em1", + "group-strong1" + ], + "level": 1 + }, + { + "name": "Syntax, group of selectors separator, no whitespace", + "selector": "#group em,#group strong", + "expect": [ + "group-em1", + "group-strong1" + ], + "level": 1 + } +] \ No newline at end of file diff --git a/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/w3_test.go b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/w3_test.go new file mode 100644 index 000000000..f1dcf3ab6 --- /dev/null +++ b/pkg/mod/github.com/andybalholm/cascadia@v1.3.1/w3_test.go @@ -0,0 +1,102 @@ +package cascadia + +import ( + "encoding/json" + "io/ioutil" + "log" + "os" + "reflect" + "testing" + + "golang.org/x/net/html" +) + +func TestInvalidSelectors(t *testing.T) { + c, err := ioutil.ReadFile("test_resources/invalid_selectors.json") + if err != nil { + t.Fatal(err) + } + var tests []invalidSelector + if err = json.Unmarshal(c, &tests); err != nil { + t.Fatal(err) + } + for _, test := range tests { + _, err := ParseGroupWithPseudoElements(test.Selector) + if err == nil { + t.Fatalf("%s -> expected error on invalid selector : %s", test.Name, test.Selector) + } + } +} + +func parseReference(filename string) *html.Node { + f, err := os.Open(filename) + if err != nil { + log.Fatal(err) + } + node, err := html.Parse(f) + if err != nil { + log.Fatal(err) + } + return node +} + +func getId(n *html.Node) string { + for _, attr := range n.Attr { + if attr.Key == "id" { + return attr.Val + } + } + return "" +} + +func isEqual(m map[string]int, l []string) bool { + expected := map[string]int{} + for _, s := range l { + expected[s]++ + } + return reflect.DeepEqual(m, expected) +} + +func loadValidSelectors(t *testing.T) []validSelector { + c, err := ioutil.ReadFile("test_resources/valid_selectors.json") + if err != nil { + t.Fatal(err) + } + var tests []validSelector + if err = json.Unmarshal(c, &tests); err != nil { + t.Fatal(err) + } + return tests +} + +func TestValidSelectors(t *testing.T) { + tests := loadValidSelectors(t) + doc := parseReference("test_resources/content.xhtml") + for i, test := range tests { + if test.Xfail { + t.Logf("skiped test %s", test.Name) + continue + } + sels, err := ParseGroupWithPseudoElements(test.Selector) + if err != nil { + t.Fatalf("%s -> unable to parse valid selector : %s : %s", test.Name, test.Selector, err) + } + matchingNodes := map[*html.Node]bool{} + for _, sel := range sels { + if sel.PseudoElement() != "" { + continue // pseudo element doesn't count as a match in this test since they are not part of the document + } + for _, node := range Selector(sel.Match).MatchAll(doc) { + matchingNodes[node] = true + } + } + matchingIds := map[string]int{} + for node := range matchingNodes { + matchingIds[getId(node)]++ + } + if !isEqual(matchingIds, test.Expect) { + t.Fatalf("test %d %s : expected %v got %v", i, test.Name, test.Expect, matchingIds) + } + + } +} diff --git a/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/.travis.yml b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/.travis.yml new file mode 100644 index 000000000..5e5830abf --- /dev/null +++ b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/.travis.yml @@ -0,0 +1,9 @@ +language: go +go: + - 1.6 +before_install: + - go get github.com/axw/gocov/gocov + - go get github.com/mattn/goveralls + - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi +script: + - $HOME/gopath/bin/goveralls -service=travis-ci -repotoken=$COVERALLS diff --git a/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/LICENCE b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/LICENCE new file mode 100644 index 000000000..77b3d1cef --- /dev/null +++ b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/LICENCE @@ -0,0 +1,19 @@ +Copyright (c) 2015 geofrey ernest + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/README.md b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/README.md new file mode 100644 index 000000000..197df8798 --- /dev/null +++ b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/README.md @@ -0,0 +1,55 @@ +# front [![Build Status](https://travis-ci.org/gernest/front.svg)](https://travis-ci.org/gernest/front) [![GoDoc](https://godoc.org/github.com/gernest/front?status.svg)](https://godoc.org/github.com/gernest/front)[![Coverage Status](https://coveralls.io/repos/gernest/front/badge.svg?branch=master&service=github)](https://coveralls.io/github/gernest/front?branch=master) + +extracts frontmatter from text files with ease. + +## Features +* Custom delimiters. You are free to register any delimiter of your choice. Provided its a three character string. e.g `+++`, `$$$`, `---`, `%%%` +* Custom Handlers. Anything that implements `HandlerFunc` can be used to decode the values from the frontmatter text, you can see the `JSONHandler` for how to implement one. +* Support YAML frontmatter +* Support JSON frontmatter. + +## Installation + + go get github.com/gernest/front + +## How to use + +```go +package main + +import ( + "fmt" + "strings" + + "github.com/gernest/front" +) + +var txt = `+++ +{ + "title":"front" +} ++++ + +# Body +Over my dead body +` + +func main() { + m := front.NewMatter() + m.Handle("+++", front.JSONHandler) + f, body, err := m.Parse(strings.NewReader(txt)) + if err != nil { + panic(err) + } + + fmt.Printf("The front matter is:\n%#v\n", f) + fmt.Printf("The body is:\n%q\n", body) +} +``` + +Please see the tests formore details + +## Licence + +This project is under the MIT Licence. See the [LICENCE](LICENCE) file for the full license text. + diff --git a/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/front.go b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/front.go new file mode 100644 index 000000000..2073a34c3 --- /dev/null +++ b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/front.go @@ -0,0 +1,146 @@ +// Package front is a frontmatter extraction library. +package front + +import ( + "bufio" + "bytes" + "encoding/json" + "errors" + "io" + "strings" + + "gopkg.in/yaml.v2" +) + +var ( + //ErrIsEmpty is an error indicating no front matter was found + ErrIsEmpty = errors.New("front: an empty file") + + //ErrUnknownDelim is returned when the delimiters are not known by the + //FrontMatter implementation. + ErrUnknownDelim = errors.New("front: unknown delim") +) + +type ( + //HandlerFunc is an interface for a function that process front matter text. + HandlerFunc func(string) (map[string]interface{}, error) +) + +//Matter is all what matters here. +type Matter struct { + handlers map[string]HandlerFunc +} + +//NewMatter creates a new Matter instance +func NewMatter() *Matter { + return &Matter{handlers: make(map[string]HandlerFunc)} +} + +//Handle registers a handler for the given frontmatter delimiter +func (m *Matter) Handle(delim string, fn HandlerFunc) { + m.handlers[delim] = fn +} + +// Parse parses the input and extract the frontmatter +func (m *Matter) Parse(input io.Reader) (front map[string]interface{}, body string, err error) { + return m.parse(input) +} +func (m *Matter) parse(input io.Reader) (front map[string]interface{}, body string, err error) { + var getFront = func(f string) string { + return strings.TrimSpace(f[3:]) + } + f, body, err := m.splitFront(input) + if err != nil { + return nil, "", err + } else if len(f) < 3 { + return map[string]interface{}{}, body, nil + } + h := m.handlers[f[:3]] + front, err = h(getFront(f)) + if err != nil { + return nil, "", err + } + return front, body, nil + +} +func sniffDelim(input []byte) (string, error) { + if len(input) < 4 { + return "", ErrIsEmpty + } + return string(input[:3]), nil +} + +func (m *Matter) splitFront(input io.Reader) (front, body string, err error) { + bufsize := 1024 * 1024 + buf := make([]byte, bufsize) + + s := bufio.NewScanner(input) + // Necessary so we can handle larger than default 4096b buffer + s.Buffer(buf, bufsize) + + rst := make([]string, 2) + s.Split(m.split) + n := 0 + for s.Scan() { + if n == 0 { + rst[0] = s.Text() + } else if n == 1 { + rst[1] = s.Text() + } + n++ + } + if err = s.Err(); err != nil { + return + } + return rst[0], rst[1], nil +} + +//split implements bufio.SplitFunc for spliting front matter from the body text. +func (m *Matter) split(data []byte, atEOF bool) (advance int, token []byte, err error) { + if atEOF && len(data) == 0 { + return 0, nil, nil + } + delim, err := sniffDelim(data) + if err != nil { + return 0, nil, err + } + if _, ok := m.handlers[delim]; !ok { + return 0, nil, ErrUnknownDelim + } + if x := bytes.Index(data, []byte(delim)); x >= 0 { + // check the next delim index + if next := bytes.Index(data[x+len(delim):], []byte(delim)); next > 0 { + return next + len(delim), dropSpace(data[:next+len(delim)]), nil + } + return len(data), dropSpace(data[x+len(delim):]), nil + } + if atEOF { + return len(data), data, nil + } + return 0, nil, nil +} + +func dropSpace(d []byte) []byte { + return bytes.TrimSpace(d) +} + +//JSONHandler implements HandlerFunc interface. It extracts front matter data from the given +// string argument by interpreting it as a json string. +func JSONHandler(front string) (map[string]interface{}, error) { + var rst interface{} + err := json.Unmarshal([]byte(front), &rst) + if err != nil { + return nil, err + } + return rst.(map[string]interface{}), nil +} + +//YAMLHandler decodes ymal string into a go map[string]interface{} +func YAMLHandler(front string) (map[string]interface{}, error) { + out := make(map[string]interface{}) + err := yaml.Unmarshal([]byte(front), out) + if err != nil { + return nil, err + } + return out, nil +} diff --git a/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/front_test.go b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/front_test.go new file mode 100644 index 000000000..7b2d35cca --- /dev/null +++ b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/front_test.go @@ -0,0 +1,64 @@ +package front + +import ( + "bytes" + "io/ioutil" + "testing" +) + +func TestMatter(t *testing.T) { + bodyData, err := ioutil.ReadFile("testdata/front/body.md") + if err != nil { + t.Error(err) + } + m := NewMatter() + m.Handle("+++", JSONHandler) + b, err := ioutil.ReadFile("testdata/front/json.md") + if err != nil { + t.Error(err) + } + front, body, err := m.Parse(bytes.NewReader(b)) + if err != nil { + t.Error(err) + } + if body != string(bodyData) { + t.Errorf("expected %s got %s", string(bodyData), body) + } + if _, ok := front["title"]; !ok { + t.Error("expected front matter to contain title got nil instead") + } +} + +func TestYAMLHandler(t *testing.T) { + data, err := ioutil.ReadFile("testdata/sample.yml") + if err != nil { + t.Fatal(err) + } + f, err := YAMLHandler(string(data)) + if err != nil { + t.Errorf("handling yaml %v", err) + } + if _, ok := f["language"]; !ok { + t.Errorf("expected language got nil instead") + } +} + +func TestEmptyFile(t *testing.T) { + data, err := ioutil.ReadFile("testdata/front/empty.md") + if err != nil { + t.Fatal(err) + } + + m := NewMatter() + m.Handle("+++", JSONHandler) + front, body, err := m.Parse(bytes.NewReader(data)) + if err != nil { + t.Error(err) + } + if len(front) != 0 { + t.Fatal("front was not empty") + } + if len(body) != 0 { + t.Fatal("body was not empty") + } +} diff --git a/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/front/body.md b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/front/body.md new file mode 100644 index 000000000..f44eed4d0 --- /dev/null +++ b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/front/body.md @@ -0,0 +1,2 @@ +# Body +Over my dead body \ No newline at end of file diff --git a/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/front/empty.md b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/front/empty.md new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/front/json.md b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/front/json.md new file mode 100644 index 000000000..73b898c85 --- /dev/null +++ b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/front/json.md @@ -0,0 +1,8 @@ ++++ +{ + "title":"bongo" +} ++++ + +# Body +Over my dead body \ No newline at end of file diff --git a/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/sample.yml b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/sample.yml new file mode 100644 index 000000000..f1a88bedf --- /dev/null +++ b/pkg/mod/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a/testdata/sample.yml @@ -0,0 +1,12 @@ +language: go +go: + - 1.2 + - 1.3 + - release + - tip +before_install: + - go get github.com/axw/gocov/gocov + - go get github.com/mattn/goveralls + - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi +script: + - $HOME/gopath/bin/goveralls -service=travis-ci -repotoken=$COVERALLS \ No newline at end of file diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/.gitignore b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/.gitignore new file mode 100644 index 000000000..485dee64b --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/Dockerfile b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/Dockerfile new file mode 100644 index 000000000..5ccf52416 --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/Dockerfile @@ -0,0 +1,11 @@ +# File generated by github.com/posener/goaction. DO NOT EDIT. + + +FROM golang:1.16-alpine3.14 +RUN apk add git + +COPY . /home/src +WORKDIR /home/src +RUN go build -o /bin/action ./ + +ENTRYPOINT [ "/bin/action" ] diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/LICENSE.txt b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/LICENSE.txt new file mode 100644 index 000000000..147e2ca14 --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 jackyzha0 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/README.md b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/README.md new file mode 100644 index 000000000..52cdeb4ac --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/README.md @@ -0,0 +1,40 @@ +# Obsidian Link Scrapper +Used by [Quartz](https://github.com/jackyzha0/quartz) + +This repository comes to you in two parts. + +1. GitHub Action (scrapes links into a `.json` file) +2. Hugo Partial (turns `.json` file into graphs and tables) + +## GitHub Action +GitHub action and binary to scrape [Obsidian](http://obsidian.md/) vault for links and exposes them as a `.json` file for easy consumption by [Hugo](https://gohugo.io/). +### Example Usage (Binary) +Read Markdown from the `/content` folder and place the resulting `linkIndex.json` (and `contentIndex.yaml` if the `index` flag is enabled) into `/data` + +```shell +# Installation +go install github.com/jackyzha0/hugo-obsidian + +# Run +hugo-obsidian -input=content -output=data -index=true +``` + +### Example Usage (GitHub Action) + +Add 'Build Link Index' as a build step in your workflow file (e.g. `.github/workflows/deploy.yaml`) +```yaml +... + +jobs: + deploy: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Build Link Index + uses: jackyzha0/hugo-obsidian@v2.1 + with: + input: content # input folder + output: data # output folder + index: true # whether to index content + ... +``` diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/action.yml b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/action.yml new file mode 100644 index 000000000..e18c2e560 --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/action.yml @@ -0,0 +1,30 @@ +name: hugo-obsidian +inputs: + input: + default: . + description: "Input Directory" + required: false + output: + default: . + description: "Output Directory" + required: false + index: + default: "false" + description: "Index content" + required: false + root: + default: "." + description: "Root of Repository" + required: false +description: simple GitHub action to parse Markdown Links into a .yaml file for Hugo +branding: + icon: anchor + color: purple +runs: + using: docker + image: Dockerfile + args: + - "-input=${{ inputs.input }}" + - "-output=${{ inputs.output }}" + - "-index=${{ inputs.index }}" + - "-root=${{ inputs.root }}" diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/go.mod b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/go.mod new file mode 100644 index 000000000..81f6c7842 --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/go.mod @@ -0,0 +1,13 @@ +module github.com/jackyzha0/hugo-obsidian + +go 1.16 + +require ( + github.com/BurntSushi/toml v0.4.1 // indirect + github.com/PuerkitoBio/goquery v1.8.0 + github.com/abhinav/goldmark-wikilink v0.3.0 + github.com/gernest/front v0.0.0-20210301115436-8a0b0a782d0a + github.com/yuin/goldmark v1.4.4 + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b +) diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/go.sum b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/go.sum new file mode 100644 index 000000000..c04e03230 --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/go.sum @@ -0,0 +1,34 @@ +github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw= +github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U= +github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI= +github.com/abhinav/goldmark-wikilink v0.3.0 h1:ry8CBaULn410PKCSkwLz/WVI2f/g7EB+yqY7LKHDcPQ= +github.com/abhinav/goldmark-wikilink v0.3.0/go.mod h1:MHRZiLRE1ZDZDjHCFYwKEEgITXGbB7N0Yr00dbmfHM8= +github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= +github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/gernest/front v0.0.0-20210301115436-8a0b0a782d0a h1:z7BePknRd4Nz3CeWDhcmCkuCliM2YY/RnjWpdPUuQQo= +github.com/gernest/front v0.0.0-20210301115436-8a0b0a782d0a/go.mod h1:FwEMwQ5+xky8tbzDLj72k2RAqXnFByLNwxg+9UZDtqU= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.4 h1:zNWRjYUW32G9KirMXYHQHVNFkXvMI7LpgNW2AgYAoIs= +github.com/yuin/goldmark v1.4.4/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg= +golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 h1:/6y1LfuqNuQdHAm0jjtPtgRcxIxjVZgm5OTu8/QhZvk= +golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/main.go b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/main.go new file mode 100644 index 000000000..8e86154a8 --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/main.go @@ -0,0 +1,83 @@ +package main + +import ( + "flag" + "github.com/BurntSushi/toml" + wikilink "github.com/abhinav/goldmark-wikilink" + "github.com/yuin/goldmark" + "io/ioutil" + "path/filepath" + "time" +) + +var md goldmark.Markdown + +func init() { + md = goldmark.New( + goldmark.WithExtensions(&wikilink.Extender{}), + ) +} + +type Link struct { + Source string `json:"source"` + Target string `json:"target"` + Text string `json:"text"` +} + +type LinkTable = map[string][]Link +type Index struct { + Links LinkTable `json:"links"` + Backlinks LinkTable `json:"backlinks"` +} + +type Content struct { + Title string `json:"title"` + Content string `json:"content"` + LastModified time.Time `json:"lastmodified"` + Tags []string `json:"tags"` +} + +type ContentIndex = map[string]Content + +type ConfigTOML struct { + IgnoredFiles []string `toml:"ignoreFiles"` +} + +func getIgnoredFiles(base string) (res map[string]struct{}) { + res = make(map[string]struct{}) + + source, err := ioutil.ReadFile(filepath.FromSlash(base + "/config.toml")) + if err != nil { + return res + } + + var config ConfigTOML + if _, err := toml.Decode(string(source), &config); err != nil { + return res + } + + for _, glb := range config.IgnoredFiles { + matches, _ := filepath.Glob(base + glb) + for _, match := range matches { + res[match] = struct{}{} + } + } + + return res +} + +func main() { + in := flag.String("input", ".", "Input Directory") + out := flag.String("output", ".", "Output Directory") + root := flag.String("root", "..", "Root Directory (for config parsing)") + index := flag.Bool("index", false, "Whether to index the content") + flag.Parse() + + ignoreBlobs := getIgnoredFiles(*root) + l, i := walk(*in, ".md", *index, ignoreBlobs) + f := filter(l) + err := write(f, i, *index, *out) + if err != nil { + panic(err) + } +} diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/parse.go b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/parse.go new file mode 100644 index 000000000..65b1510f4 --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/parse.go @@ -0,0 +1,51 @@ +package main + +import ( + "bytes" + "fmt" + "github.com/PuerkitoBio/goquery" + "io/ioutil" + "strings" +) + +// parse single file for links +func parse(dir, pathPrefix string) []Link { + // read file + source, err := ioutil.ReadFile(dir) + if err != nil { + panic(err) + } + + // parse md + var links []Link + fmt.Printf("[Parsing note] %s => ", trim(dir, pathPrefix, ".md")) + + var buf bytes.Buffer + if err := md.Convert(source, &buf); err != nil { + panic(err) + } + + doc, err := goquery.NewDocumentFromReader(&buf) + var n int + doc.Find("a").Each(func(i int, s *goquery.Selection) { + text := strings.TrimSpace(s.Text()) + target, ok := s.Attr("href") + if !ok { + target = "#" + } + + target = processTarget(target) + source := processSource(trim(dir, pathPrefix, ".md")) + + // fmt.Printf(" '%s' => %s\n", source, target) + links = append(links, Link{ + Source: source, + Target: target, + Text: text, + }) + n++ + }) + fmt.Printf("found: %d links\n", n) + + return links +} diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/util.go b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/util.go new file mode 100644 index 000000000..a90878959 --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/util.go @@ -0,0 +1,94 @@ +package main + +import ( + "fmt" + "net/url" + "path/filepath" + "strings" + "unicode" +) + +func trim(source, prefix, suffix string) string { + return strings.TrimPrefix(strings.TrimSuffix(source, suffix), prefix) +} + +func hugoPathTrim(source string) string { + return strings.TrimSuffix(strings.TrimSuffix(source, "/index"), "_index") +} + +func processTarget(source string) string { + if !isInternal(source) { + return source + } + if strings.HasPrefix(source, "/") { + return strings.TrimSuffix(source, ".md") + } + res := "/" + strings.TrimSuffix(strings.TrimSuffix(source, ".html"), ".md") + res, _ = url.PathUnescape(res) + res = strings.Split(res, "#")[0] + res = strings.TrimSpace(res) + res = UnicodeSanitize(res) + return strings.ReplaceAll(url.PathEscape(res), "%2F", "/") +} + +func processSource(source string) string { + res := filepath.ToSlash(hugoPathTrim(source)) + res = UnicodeSanitize(res) + return strings.ReplaceAll(url.PathEscape(res), "%2F", "/") +} + +func isInternal(link string) bool { + return !strings.HasPrefix(link, "http") +} + +// From https://golang.org/src/net/url/url.go +func ishex(c rune) bool { + switch { + case '0' <= c && c <= '9': + return true + case 'a' <= c && c <= 'f': + return true + case 'A' <= c && c <= 'F': + return true + } + return false +} + +// UnicodeSanitize sanitizes string to be used in Hugo URL's +// from https://github.com/gohugoio/hugo/blob/93aad3c543828efca2adeb7f96cf50ae29878593/helpers/path.go#L94 +func UnicodeSanitize(s string) string { + source := []rune(s) + target := make([]rune, 0, len(source)) + var prependHyphen bool + + for i, r := range source { + isAllowed := r == '.' || r == '/' || r == '\\' || r == '_' || r == '#' || r == '+' || r == '~' + isAllowed = isAllowed || unicode.IsLetter(r) || unicode.IsDigit(r) || unicode.IsMark(r) + isAllowed = isAllowed || (r == '%' && i+2 < len(source) && ishex(source[i+1]) && ishex(source[i+2])) + + if isAllowed { + if prependHyphen { + target = append(target, '-') + prependHyphen = false + } + target = append(target, r) + } else if len(target) > 0 && (r == '-' || unicode.IsSpace(r)) { + prependHyphen = true + } + } + + return string(target) +} + +// filter out certain links (e.g. to media) +func filter(links []Link) (res []Link) { + for _, l := range links { + // filter external and non-md + isMarkdown := filepath.Ext(l.Target) == "" || filepath.Ext(l.Target) == ".md" + if isInternal(l.Target) && isMarkdown { + res = append(res, l) + } + } + fmt.Printf("Removed %d external and non-markdown links\n", len(links)-len(res)) + return res +} diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/walk.go b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/walk.go new file mode 100644 index 000000000..7833a92ee --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/walk.go @@ -0,0 +1,92 @@ +package main + +import ( + "fmt" + "github.com/gernest/front" + "io/fs" + "io/ioutil" + "os" + "path/filepath" + "strings" + "time" +) + +// recursively walk directory and return all files with given extension +func walk(root, ext string, index bool, ignorePaths map[string]struct{}) (res []Link, i ContentIndex) { + fmt.Printf("Scraping %s\n", root) + i = make(ContentIndex) + + m := front.NewMatter() + m.Handle("---", front.YAMLHandler) + nPrivate := 0 + + start := time.Now() + + err := filepath.WalkDir(root, func(fp string, d fs.DirEntry, e error) error { + if e != nil { + return e + } + + // path normalize fp + s := filepath.ToSlash(fp) + if _, ignored := ignorePaths[s]; ignored { + fmt.Printf("[Ignored] %s\n", d.Name()) + nPrivate++ + } else if filepath.Ext(d.Name()) == ext { + res = append(res, parse(s, root)...) + if index { + text := getText(s) + + frontmatter, body, err := m.Parse(strings.NewReader(text)) + if err != nil { + frontmatter = map[string]interface{}{} + body = text + } + + var title string + if parsedTitle, ok := frontmatter["title"]; ok { + title = parsedTitle.(string) + } else { + title = "Untitled Page" + } + + // check if page is private + if parsedPrivate, ok := frontmatter["draft"]; !ok || !parsedPrivate.(bool) { + info, _ := os.Stat(s) + source := processSource(trim(s, root, ".md")) + + // adjustedPath := UnicodeSanitize(strings.Replace(hugoPathTrim(trim(s, root, ".md")), " ", "-", -1)) + i[source] = Content{ + LastModified: info.ModTime(), + Title: title, + Content: body, + } + } else { + fmt.Printf("[Ignored] %s\n", d.Name()) + nPrivate++ + } + } + } + return nil + }) + if err != nil { + panic(err) + } + + end := time.Now() + + fmt.Printf("[DONE] in %s\n", end.Sub(start).Round(time.Millisecond)) + fmt.Printf("Ignored %d private files \n", nPrivate) + fmt.Printf("Parsed %d total links \n", len(res)) + return res, i +} + +func getText(dir string) string { + // read file + fileBytes, err := ioutil.ReadFile(dir) + if err != nil { + panic(err) + } + + return string(fileBytes) +} diff --git a/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/write.go b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/write.go new file mode 100644 index 000000000..e199e0af0 --- /dev/null +++ b/pkg/mod/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3/write.go @@ -0,0 +1,68 @@ +package main + +import ( + "encoding/json" + "io/ioutil" + "path" +) + +func write(links []Link, contentIndex ContentIndex, toIndex bool, out string) error { + index := index(links) + resStruct := struct { + Index Index `json:"index"` + Links []Link `json:"links"` + }{ + Index: index, + Links: links, + } + marshalledIndex, mErr := json.MarshalIndent(&resStruct, "", " ") + if mErr != nil { + return mErr + } + + writeErr := ioutil.WriteFile(path.Join(out, "linkIndex.json"), marshalledIndex, 0644) + if writeErr != nil { + return writeErr + } + + if toIndex { + marshalledContentIndex, mcErr := json.MarshalIndent(&contentIndex, "", " ") + if mcErr != nil { + return mcErr + } + + writeErr = ioutil.WriteFile(path.Join(out, "contentIndex.json"), marshalledContentIndex, 0644) + if writeErr != nil { + return writeErr + } + } + + return nil +} + +// constructs index from links +func index(links []Link) (index Index) { + linkMap := make(map[string][]Link) + backlinkMap := make(map[string][]Link) + for _, l := range links { + // backlink (only if internal) + if _, ok := backlinkMap[l.Target]; ok { + backlinkMap[l.Target] = append(backlinkMap[l.Target], l) + } else { + backlinkMap[l.Target] = []Link{l} + } + + // regular link + if _, ok := linkMap[l.Source]; ok { + linkMap[l.Source] = append(linkMap[l.Source], l) + } else { + linkMap[l.Source] = []Link{l} + } + } + index.Links = linkMap + index.Backlinks = backlinkMap + return index +} + + + diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/ISSUE_TEMPLATE.md b/pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..51e3b62f1 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,17 @@ +goldmark has [https://github.com/yuin/goldmark/discussions](Discussions) in github. +You should post only issues here. Feature requests and questions should be posted at discussions. + + +- [ ] goldmark is fully compliant with the CommonMark. Before submitting issue, you **must** read [CommonMark spec](https://spec.commonmark.org/0.29/) and confirm your output is different from [CommonMark online demo](https://spec.commonmark.org/dingus/). + - [ ] **Extensions(Autolink without `<` `>`, Table, etc) are not part of CommonMark spec.** You should confirm your output is different from other official renderers correspond with an extension. +- [ ] **goldmark is not dedicated for Hugo**. If you are Hugo user and your issue was raised by your experience in Hugo, **you should consider create issue at Hugo repository at first** . + +Please answer the following before submitting your issue: + +1. What version of goldmark are you using? : +2. What version of Go are you using? : +3. What operating system and processor architecture are you using? : +4. What did you do? : +5. What did you expect to see? : +6. What did you see instead? : +7. Did you confirm your output is different from [CommonMark online demo](https://spec.commonmark.org/dingus/) or other official renderer correspond with an extension?: diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/stale.yml b/pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/stale.yml new file mode 100644 index 000000000..470349fb1 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/stale.yml @@ -0,0 +1,17 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 30 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - pinned + - security +# Label to use when marking an issue as stale +staleLabel: stale +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/workflows/test.yaml b/pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/workflows/test.yaml new file mode 100644 index 000000000..b9d887915 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/.github/workflows/test.yaml @@ -0,0 +1,26 @@ +on: [push, pull_request] +name: test +jobs: + test: + strategy: + fail-fast: false + matrix: + go-version: [1.16.x, 1.17.x] + platform: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.platform }} + steps: + - name: Install Go + uses: actions/setup-go@v1 + with: + go-version: ${{ matrix.go-version }} + - name: Checkout code + uses: actions/checkout@v1 + - name: Run tests + run: go test -v ./... -covermode=count -coverprofile=coverage.out -coverpkg=./... + - name: Send coverage + if: "matrix.platform == 'ubuntu-latest'" + env: + COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + GO111MODULE=off go get github.com/mattn/goveralls + $(go env GOPATH)/bin/goveralls -coverprofile=coverage.out -service=github diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/.gitignore b/pkg/mod/github.com/yuin/goldmark@v1.4.4/.gitignore new file mode 100644 index 000000000..06c135f17 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/.gitignore @@ -0,0 +1,19 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, build with `go test -c` +*.test +*.pprof + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +.DS_Store +fuzz/corpus +fuzz/crashers +fuzz/suppressions +fuzz/fuzz-fuzz.zip diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/LICENSE b/pkg/mod/github.com/yuin/goldmark@v1.4.4/LICENSE new file mode 100644 index 000000000..dc5b2a690 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Yusuke Inuzuka + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/Makefile b/pkg/mod/github.com/yuin/goldmark@v1.4.4/Makefile new file mode 100644 index 000000000..667a19a47 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/Makefile @@ -0,0 +1,16 @@ +.PHONY: test fuzz + +test: + go test -coverprofile=profile.out -coverpkg=github.com/yuin/goldmark,github.com/yuin/goldmark/ast,github.com/yuin/goldmark/extension,github.com/yuin/goldmark/extension/ast,github.com/yuin/goldmark/parser,github.com/yuin/goldmark/renderer,github.com/yuin/goldmark/renderer/html,github.com/yuin/goldmark/text,github.com/yuin/goldmark/util ./... + +cov: test + go tool cover -html=profile.out + +fuzz: + which go-fuzz > /dev/null 2>&1 || (GO111MODULE=off go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-build; GO111MODULE=off go get -d github.com/dvyukov/go-fuzz-corpus; true) + rm -rf ./fuzz/corpus + rm -rf ./fuzz/crashers + rm -rf ./fuzz/suppressions + rm -f ./fuzz/fuzz-fuzz.zip + cd ./fuzz && go-fuzz-build + cd ./fuzz && go-fuzz diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/README.md b/pkg/mod/github.com/yuin/goldmark@v1.4.4/README.md new file mode 100644 index 000000000..2e54d9b85 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/README.md @@ -0,0 +1,494 @@ +goldmark +========================================== + +[![https://pkg.go.dev/github.com/yuin/goldmark](https://pkg.go.dev/badge/github.com/yuin/goldmark.svg)](https://pkg.go.dev/github.com/yuin/goldmark) +[![https://github.com/yuin/goldmark/actions?query=workflow:test](https://github.com/yuin/goldmark/workflows/test/badge.svg?branch=master&event=push)](https://github.com/yuin/goldmark/actions?query=workflow:test) +[![https://coveralls.io/github/yuin/goldmark](https://coveralls.io/repos/github/yuin/goldmark/badge.svg?branch=master)](https://coveralls.io/github/yuin/goldmark) +[![https://goreportcard.com/report/github.com/yuin/goldmark](https://goreportcard.com/badge/github.com/yuin/goldmark)](https://goreportcard.com/report/github.com/yuin/goldmark) + +> A Markdown parser written in Go. Easy to extend, standards-compliant, well-structured. + +goldmark is compliant with CommonMark 0.30. + +Motivation +---------------------- +I needed a Markdown parser for Go that satisfies the following requirements: + +- Easy to extend. + - Markdown is poor in document expressions compared to other light markup languages such as reStructuredText. + - We have extensions to the Markdown syntax, e.g. PHP Markdown Extra, GitHub Flavored Markdown. +- Standards-compliant. + - Markdown has many dialects. + - GitHub-Flavored Markdown is widely used and is based upon CommonMark, effectively mooting the question of whether or not CommonMark is an ideal specification. + - CommonMark is complicated and hard to implement. +- Well-structured. + - AST-based; preserves source position of nodes. +- Written in pure Go. + +[golang-commonmark](https://gitlab.com/golang-commonmark/markdown) may be a good choice, but it seems to be a copy of [markdown-it](https://github.com/markdown-it). + +[blackfriday.v2](https://github.com/russross/blackfriday/tree/v2) is a fast and widely-used implementation, but is not CommonMark-compliant and cannot be extended from outside of the package, since its AST uses structs instead of interfaces. + +Furthermore, its behavior differs from other implementations in some cases, especially regarding lists: [Deep nested lists don't output correctly #329](https://github.com/russross/blackfriday/issues/329), [List block cannot have a second line #244](https://github.com/russross/blackfriday/issues/244), etc. + +This behavior sometimes causes problems. If you migrate your Markdown text from GitHub to blackfriday-based wikis, many lists will immediately be broken. + +As mentioned above, CommonMark is complicated and hard to implement, so Markdown parsers based on CommonMark are few and far between. + +Features +---------------------- + +- **Standards-compliant.** goldmark is fully compliant with the latest [CommonMark](https://commonmark.org/) specification. +- **Extensible.** Do you want to add a `@username` mention syntax to Markdown? + You can easily do so in goldmark. You can add your AST nodes, + parsers for block-level elements, parsers for inline-level elements, + transformers for paragraphs, transformers for the whole AST structure, and + renderers. +- **Performance.** goldmark's performance is on par with that of cmark, + the CommonMark reference implementation written in C. +- **Robust.** goldmark is tested with [go-fuzz](https://github.com/dvyukov/go-fuzz), a fuzz testing tool. +- **Built-in extensions.** goldmark ships with common extensions like tables, strikethrough, + task lists, and definition lists. +- **Depends only on standard libraries.** + +Installation +---------------------- +```bash +$ go get github.com/yuin/goldmark +``` + + +Usage +---------------------- +Import packages: + +```go +import ( + "bytes" + "github.com/yuin/goldmark" +) +``` + + +Convert Markdown documents with the CommonMark-compliant mode: + +```go +var buf bytes.Buffer +if err := goldmark.Convert(source, &buf); err != nil { + panic(err) +} +``` + +With options +------------------------------ + +```go +var buf bytes.Buffer +if err := goldmark.Convert(source, &buf, parser.WithContext(ctx)); err != nil { + panic(err) +} +``` + +| Functional option | Type | Description | +| ----------------- | ---- | ----------- | +| `parser.WithContext` | A `parser.Context` | Context for the parsing phase. | + +Context options +---------------------- + +| Functional option | Type | Description | +| ----------------- | ---- | ----------- | +| `parser.WithIDs` | A `parser.IDs` | `IDs` allows you to change logics that are related to element id(ex: Auto heading id generation). | + + +Custom parser and renderer +-------------------------- +```go +import ( + "bytes" + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/extension" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer/html" +) + +md := goldmark.New( + goldmark.WithExtensions(extension.GFM), + goldmark.WithParserOptions( + parser.WithAutoHeadingID(), + ), + goldmark.WithRendererOptions( + html.WithHardWraps(), + html.WithXHTML(), + ), + ) +var buf bytes.Buffer +if err := md.Convert(source, &buf); err != nil { + panic(err) +} +``` + +| Functional option | Type | Description | +| ----------------- | ---- | ----------- | +| `goldmark.WithParser` | `parser.Parser` | This option must be passed before `goldmark.WithParserOptions` and `goldmark.WithExtensions` | +| `goldmark.WithRenderer` | `renderer.Renderer` | This option must be passed before `goldmark.WithRendererOptions` and `goldmark.WithExtensions` | +| `goldmark.WithParserOptions` | `...parser.Option` | | +| `goldmark.WithRendererOptions` | `...renderer.Option` | | +| `goldmark.WithExtensions` | `...goldmark.Extender` | | + +Parser and Renderer options +------------------------------ + +### Parser options + +| Functional option | Type | Description | +| ----------------- | ---- | ----------- | +| `parser.WithBlockParsers` | A `util.PrioritizedSlice` whose elements are `parser.BlockParser` | Parsers for parsing block level elements. | +| `parser.WithInlineParsers` | A `util.PrioritizedSlice` whose elements are `parser.InlineParser` | Parsers for parsing inline level elements. | +| `parser.WithParagraphTransformers` | A `util.PrioritizedSlice` whose elements are `parser.ParagraphTransformer` | Transformers for transforming paragraph nodes. | +| `parser.WithASTTransformers` | A `util.PrioritizedSlice` whose elements are `parser.ASTTransformer` | Transformers for transforming an AST. | +| `parser.WithAutoHeadingID` | `-` | Enables auto heading ids. | +| `parser.WithAttribute` | `-` | Enables custom attributes. Currently only headings supports attributes. | + +### HTML Renderer options + +| Functional option | Type | Description | +| ----------------- | ---- | ----------- | +| `html.WithWriter` | `html.Writer` | `html.Writer` for writing contents to an `io.Writer`. | +| `html.WithHardWraps` | `-` | Render newlines as `
                  `.| +| `html.WithXHTML` | `-` | Render as XHTML. | +| `html.WithUnsafe` | `-` | By default, goldmark does not render raw HTML or potentially dangerous links. With this option, goldmark renders such content as written. | + +### Built-in extensions + +- `extension.Table` + - [GitHub Flavored Markdown: Tables](https://github.github.com/gfm/#tables-extension-) +- `extension.Strikethrough` + - [GitHub Flavored Markdown: Strikethrough](https://github.github.com/gfm/#strikethrough-extension-) +- `extension.Linkify` + - [GitHub Flavored Markdown: Autolinks](https://github.github.com/gfm/#autolinks-extension-) +- `extension.TaskList` + - [GitHub Flavored Markdown: Task list items](https://github.github.com/gfm/#task-list-items-extension-) +- `extension.GFM` + - This extension enables Table, Strikethrough, Linkify and TaskList. + - This extension does not filter tags defined in [6.11: Disallowed Raw HTML (extension)](https://github.github.com/gfm/#disallowed-raw-html-extension-). + If you need to filter HTML tags, see [Security](#security). + - If you need to parse github emojis, you can use [goldmark-emoji](https://github.com/yuin/goldmark-emoji) extension. +- `extension.DefinitionList` + - [PHP Markdown Extra: Definition lists](https://michelf.ca/projects/php-markdown/extra/#def-list) +- `extension.Footnote` + - [PHP Markdown Extra: Footnotes](https://michelf.ca/projects/php-markdown/extra/#footnotes) +- `extension.Typographer` + - This extension substitutes punctuations with typographic entities like [smartypants](https://daringfireball.net/projects/smartypants/). + +### Attributes +The `parser.WithAttribute` option allows you to define attributes on some elements. + +Currently only headings support attributes. + +**Attributes are being discussed in the +[CommonMark forum](https://talk.commonmark.org/t/consistent-attribute-syntax/272). +This syntax may possibly change in the future.** + + +#### Headings + +``` +## heading ## {#id .className attrName=attrValue class="class1 class2"} + +## heading {#id .className attrName=attrValue class="class1 class2"} +``` + +``` +heading {#id .className attrName=attrValue} +============ +``` + +### Table extension +The Table extension implements [Table(extension)](https://github.github.com/gfm/#tables-extension-), as +defined in [GitHub Flavored Markdown Spec](https://github.github.com/gfm/). + +Specs are defined for XHTML, so specs use some deprecated attributes for HTML5. + +You can override alignment rendering method via options. + +| Functional option | Type | Description | +| ----------------- | ---- | ----------- | +| `extension.WithTableCellAlignMethod` | `extension.TableCellAlignMethod` | Option indicates how are table cells aligned. | + +### Typographer extension + +The Typographer extension translates plain ASCII punctuation characters into typographic-punctuation HTML entities. + +Default substitutions are: + +| Punctuation | Default entity | +| ------------ | ---------- | +| `'` | `‘`, `’` | +| `"` | `“`, `”` | +| `--` | `–` | +| `---` | `—` | +| `...` | `…` | +| `<<` | `«` | +| `>>` | `»` | + +You can override the default substitutions via `extensions.WithTypographicSubstitutions`: + +```go +markdown := goldmark.New( + goldmark.WithExtensions( + extension.NewTypographer( + extension.WithTypographicSubstitutions(extension.TypographicSubstitutions{ + extension.LeftSingleQuote: []byte("‚"), + extension.RightSingleQuote: nil, // nil disables a substitution + }), + ), + ), +) +``` + +### Linkify extension + +The Linkify extension implements [Autolinks(extension)](https://github.github.com/gfm/#autolinks-extension-), as +defined in [GitHub Flavored Markdown Spec](https://github.github.com/gfm/). + +Since the spec does not define details about URLs, there are numerous ambiguous cases. + +You can override autolinking patterns via options. + +| Functional option | Type | Description | +| ----------------- | ---- | ----------- | +| `extension.WithLinkifyAllowedProtocols` | `[][]byte` | List of allowed protocols such as `[][]byte{ []byte("http:") }` | +| `extension.WithLinkifyURLRegexp` | `*regexp.Regexp` | Regexp that defines URLs, including protocols | +| `extension.WithLinkifyWWWRegexp` | `*regexp.Regexp` | Regexp that defines URL starting with `www.`. This pattern corresponds to [the extended www autolink](https://github.github.com/gfm/#extended-www-autolink) | +| `extension.WithLinkifyEmailRegexp` | `*regexp.Regexp` | Regexp that defines email addresses` | + +Example, using [xurls](https://github.com/mvdan/xurls): + +```go +import "mvdan.cc/xurls/v2" + +markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + ), + goldmark.WithExtensions( + extension.NewLinkify( + extension.WithLinkifyAllowedProtocols([][]byte{ + []byte("http:"), + []byte("https:"), + }), + extension.WithLinkifyURLRegexp( + xurls.Strict, + ), + ), + ), +) +``` + +### Footnotes extension + +The Footnote extension implements [PHP Markdown Extra: Footnotes](https://michelf.ca/projects/php-markdown/extra/#footnotes). + +This extension has some options: + +| Functional option | Type | Description | +| ----------------- | ---- | ----------- | +| `extension.WithFootnoteIDPrefix` | `[]byte` | a prefix for the id attributes.| +| `extension.WithFootnoteIDPrefixFunction` | `func(gast.Node) []byte` | a function that determines the id attribute for given Node.| +| `extension.WithFootnoteLinkTitle` | `[]byte` | an optional title attribute for footnote links.| +| `extension.WithFootnoteBacklinkTitle` | `[]byte` | an optional title attribute for footnote backlinks. | +| `extension.WithFootnoteLinkClass` | `[]byte` | a class for footnote links. This defaults to `footnote-ref`. | +| `extension.WithFootnoteBacklinkClass` | `[]byte` | a class for footnote backlinks. This defaults to `footnote-backref`. | +| `extension.WithFootnoteBacklinkHTML` | `[]byte` | a class for footnote backlinks. This defaults to `↩︎`. | + +Some options can have special substitutions. Occurrences of “^^” in the string will be replaced by the corresponding footnote number in the HTML output. Occurrences of “%%” will be replaced by a number for the reference (footnotes can have multiple references). + +`extension.WithFootnoteIDPrefix` and `extension.WithFootnoteIDPrefixFunction` are useful if you have multiple Markdown documents displayed inside one HTML document to avoid footnote ids to clash each other. + +`extension.WithFootnoteIDPrefix` sets fixed id prefix, so you may write codes like the following: + +```go +for _, path := range files { + source := readAll(path) + prefix := getPrefix(path) + + markdown := goldmark.New( + goldmark.WithExtensions( + NewFootnote( + WithFootnoteIDPrefix([]byte(path)), + ), + ), + ) + var b bytes.Buffer + err := markdown.Convert(source, &b) + if err != nil { + t.Error(err.Error()) + } +} +``` + +`extension.WithFootnoteIDPrefixFunction` determines an id prefix by calling given function, so you may write codes like the following: + +```go +markdown := goldmark.New( + goldmark.WithExtensions( + NewFootnote( + WithFootnoteIDPrefixFunction(func(n gast.Node) []byte { + v, ok := n.OwnerDocument().Meta()["footnote-prefix"] + if ok { + return util.StringToReadOnlyBytes(v.(string)) + } + return nil + }), + ), + ), +) + +for _, path := range files { + source := readAll(path) + var b bytes.Buffer + + doc := markdown.Parser().Parse(text.NewReader(source)) + doc.Meta()["footnote-prefix"] = getPrefix(path) + err := markdown.Renderer().Render(&b, source, doc) +} +``` + +You can use [goldmark-meta](https://github.com/yuin/goldmark-meta) to define a id prefix in the markdown document: + + +```markdown +--- +title: document title +slug: article1 +footnote-prefix: article1 +--- + +# My article + +``` + +Security +-------------------- +By default, goldmark does not render raw HTML or potentially-dangerous URLs. +If you need to gain more control over untrusted contents, it is recommended that you +use an HTML sanitizer such as [bluemonday](https://github.com/microcosm-cc/bluemonday). + +Benchmark +-------------------- +You can run this benchmark in the `_benchmark` directory. + +### against other golang libraries + +blackfriday v2 seems to be the fastest, but as it is not CommonMark compliant, its performance cannot be directly compared to that of the CommonMark-compliant libraries. + +goldmark, meanwhile, builds a clean, extensible AST structure, achieves full compliance with +CommonMark, and consumes less memory, all while being reasonably fast. + +``` +goos: darwin +goarch: amd64 +BenchmarkMarkdown/Blackfriday-v2-12 326 3465240 ns/op 3298861 B/op 20047 allocs/op +BenchmarkMarkdown/GoldMark-12 303 3927494 ns/op 2574809 B/op 13853 allocs/op +BenchmarkMarkdown/CommonMark-12 244 4900853 ns/op 2753851 B/op 20527 allocs/op +BenchmarkMarkdown/Lute-12 130 9195245 ns/op 9175030 B/op 123534 allocs/op +BenchmarkMarkdown/GoMarkdown-12 9 113541994 ns/op 2187472 B/op 22173 allocs/op +``` + +### against cmark (CommonMark reference implementation written in C) + +``` +----------- cmark ----------- +file: _data.md +iteration: 50 +average: 0.0037760639 sec +go run ./goldmark_benchmark.go +------- goldmark ------- +file: _data.md +iteration: 50 +average: 0.0040964230 sec +``` + +As you can see, goldmark's performance is on par with cmark's. + +Extensions +-------------------- + +- [goldmark-meta](https://github.com/yuin/goldmark-meta): A YAML metadata + extension for the goldmark Markdown parser. +- [goldmark-highlighting](https://github.com/yuin/goldmark-highlighting): A syntax-highlighting extension + for the goldmark markdown parser. +- [goldmark-emoji](https://github.com/yuin/goldmark-emoji): An emoji + extension for the goldmark Markdown parser. +- [goldmark-mathjax](https://github.com/litao91/goldmark-mathjax): Mathjax support for the goldmark markdown parser +- [goldmark-pdf](https://github.com/stephenafamo/goldmark-pdf): A PDF renderer that can be passed to `goldmark.WithRenderer()`. +- [goldmark-hashtag](https://github.com/abhinav/goldmark-hashtag): Adds support for `#hashtag`-based tagging to goldmark. +- [goldmark-wikilink](https://github.com/abhinav/goldmark-wikilink): Adds support for `[[wiki]]`-style links to goldmark. +- [goldmark-toc](https://github.com/abhinav/goldmark-toc): Adds support for generating tables-of-contents for goldmark documents. +- [goldmark-mermaid](https://github.com/abhinav/goldmark-mermaid): Adds support for renderng [Mermaid](https://mermaid-js.github.io/mermaid/) diagrams in goldmark documents. + +goldmark internal(for extension developers) +---------------------------------------------- +### Overview +goldmark's Markdown processing is outlined in the diagram below. + +``` + + | + V + +-------- parser.Parser --------------------------- + | 1. Parse block elements into AST + | 1. If a parsed block is a paragraph, apply + | ast.ParagraphTransformer + | 2. Traverse AST and parse blocks. + | 1. Process delimiters(emphasis) at the end of + | block parsing + | 3. Apply parser.ASTTransformers to AST + | + V + + | + V + +------- renderer.Renderer ------------------------ + | 1. Traverse AST and apply renderer.NodeRenderer + | corespond to the node type + + | + V + +``` + +### Parsing +Markdown documents are read through `text.Reader` interface. + +AST nodes do not have concrete text. AST nodes have segment information of the documents, represented by `text.Segment` . + +`text.Segment` has 3 attributes: `Start`, `End`, `Padding` . + +(TBC) + +**TODO** + +See `extension` directory for examples of extensions. + +Summary: + +1. Define AST Node as a struct in which `ast.BaseBlock` or `ast.BaseInline` is embedded. +2. Write a parser that implements `parser.BlockParser` or `parser.InlineParser`. +3. Write a renderer that implements `renderer.NodeRenderer`. +4. Define your goldmark extension that implements `goldmark.Extender`. + + +Donation +-------------------- +BTC: 1NEDSyUmo4SMTDP83JJQSWi1MvQUGGNMZB + +License +-------------------- +MIT + +Author +-------------------- +Yusuke Inuzuka diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/.gitignore b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/.gitignore new file mode 100644 index 000000000..0c9a6c61a --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/.gitignore @@ -0,0 +1,2 @@ +cmark-master +cmark_benchmark diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/Makefile b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/Makefile new file mode 100644 index 000000000..5362cd188 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/Makefile @@ -0,0 +1,42 @@ +CMARK_BIN=cmark_benchmark +CMARK_RUN=LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:./cmark-master/build/src ./$(CMARK_BIN) +ifeq ($(OS),Windows_NT) + CMARK_BIN=cmark_benchmark.exe + CMARK_RUN=bash -c "PATH=./cmark-master/build/src:$${PATH} ./$(CMARK_BIN)" +endif +ifneq ($(WSL_INTEROP),) + CMARK_BIN=cmark_benchmark.exe + CMARK_RUN=cp ./cmark-master/build-mingw/windows/bin/libcmark.dll . && ./$(CMARK_BIN); rm -f libcmark.dll +endif + +.PHONY: run + +run: $(CMARK_BIN) + @ $(CMARK_RUN) + @ if [ -z "$${WSL_INTEROP}" ]; then \ + go run ./goldmark_benchmark.go; \ + else \ + GOOS=windows GOARCH=amd64 go build -o goldmark_benchmark.exe ./goldmark_benchmark.go && ./goldmark_benchmark.exe; \ + fi + +./cmark-master/build/src/config.h: + wget -nc -O cmark.zip https://github.com/commonmark/cmark/archive/master.zip + unzip cmark.zip + rm -f cmark.zip + @ if [ -z "$${WSL_INTEROP}" ]; then \ + cd cmark-master && make; + else \ + cd cmark-master && make mingw; \ + fi + +$(CMARK_BIN): ./cmark-master/build/src/config.h + @ if [ -z "$${WSL_INTEROP}" ]; then \ + gcc -I./cmark-master/build/src -I./cmark-master/src cmark_benchmark.c -o $(CMARK_BIN) -L./cmark-master/build/src -lcmark; \ + else \ + i686-w64-mingw32-gcc -I./cmark-master/build-mingw/windows/include cmark_benchmark.c -o $(CMARK_BIN) -L./cmark-master/build-mingw/windows/lib -lcmark.dll; \ + fi + +.PHONY: clean +clean: + rm -f $(CMARK_BIN) + rm -f goldmark_benchmark.exe diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/_data.md b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/_data.md new file mode 100644 index 000000000..87db650b7 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/_data.md @@ -0,0 +1,9702 @@ +# Introduction + +## What is Markdown? + +Markdown is a plain text format for writing structured documents, +based on conventions for indicating formatting in email +and usenet posts. It was developed by John Gruber (with +help from Aaron Swartz) and released in 2004 in the form of a +[syntax description](http://daringfireball.net/projects/markdown/syntax) +and a Perl script (`Markdown.pl`) for converting Markdown to +HTML. In the next decade, dozens of implementations were +developed in many languages. Some extended the original +Markdown syntax with conventions for footnotes, tables, and +other document elements. Some allowed Markdown documents to be +rendered in formats other than HTML. Websites like Reddit, +StackOverflow, and GitHub had millions of people using Markdown. +And Markdown started to be used beyond the web, to author books, +articles, slide shows, letters, and lecture notes. + +What distinguishes Markdown from many other lightweight markup +syntaxes, which are often easier to write, is its readability. +As Gruber writes: + +> The overriding design goal for Markdown's formatting syntax is +> to make it as readable as possible. The idea is that a +> Markdown-formatted document should be publishable as-is, as +> plain text, without looking like it's been marked up with tags +> or formatting instructions. +> () + +The point can be illustrated by comparing a sample of +[AsciiDoc](http://www.methods.co.nz/asciidoc/) with +an equivalent sample of Markdown. Here is a sample of +AsciiDoc from the AsciiDoc manual: + +``` +1. List item one. ++ +List item one continued with a second paragraph followed by an +Indented block. ++ +................. +$ ls *.sh +$ mv *.sh ~/tmp +................. ++ +List item continued with a third paragraph. + +2. List item two continued with an open block. ++ +-- +This paragraph is part of the preceding list item. + +a. This list is nested and does not require explicit item +continuation. ++ +This paragraph is part of the preceding list item. + +b. List item b. + +This paragraph belongs to item two of the outer list. +-- +``` + +And here is the equivalent in Markdown: +``` +1. List item one. + + List item one continued with a second paragraph followed by an + Indented block. + + $ ls *.sh + $ mv *.sh ~/tmp + + List item continued with a third paragraph. + +2. List item two continued with an open block. + + This paragraph is part of the preceding list item. + + 1. This list is nested and does not require explicit item continuation. + + This paragraph is part of the preceding list item. + + 2. List item b. + + This paragraph belongs to item two of the outer list. +``` + +The AsciiDoc version is, arguably, easier to write. You don't need +to worry about indentation. But the Markdown version is much easier +to read. The nesting of list items is apparent to the eye in the +source, not just in the processed document. + +## Why is a spec needed? + +John Gruber's [canonical description of Markdown's +syntax](http://daringfireball.net/projects/markdown/syntax) +does not specify the syntax unambiguously. Here are some examples of +questions it does not answer: + +1. How much indentation is needed for a sublist? The spec says that + continuation paragraphs need to be indented four spaces, but is + not fully explicit about sublists. It is natural to think that + they, too, must be indented four spaces, but `Markdown.pl` does + not require that. This is hardly a "corner case," and divergences + between implementations on this issue often lead to surprises for + users in real documents. (See [this comment by John + Gruber](http://article.gmane.org/gmane.text.markdown.general/1997).) + +2. Is a blank line needed before a block quote or heading? + Most implementations do not require the blank line. However, + this can lead to unexpected results in hard-wrapped text, and + also to ambiguities in parsing (note that some implementations + put the heading inside the blockquote, while others do not). + (John Gruber has also spoken [in favor of requiring the blank + lines](http://article.gmane.org/gmane.text.markdown.general/2146).) + +3. Is a blank line needed before an indented code block? + (`Markdown.pl` requires it, but this is not mentioned in the + documentation, and some implementations do not require it.) + + ``` markdown + paragraph + code? + ``` + +4. What is the exact rule for determining when list items get + wrapped in `

                  ` tags? Can a list be partially "loose" and partially + "tight"? What should we do with a list like this? + + ``` markdown + 1. one + + 2. two + 3. three + ``` + + Or this? + + ``` markdown + 1. one + - a + + - b + 2. two + ``` + + (There are some relevant comments by John Gruber + [here](http://article.gmane.org/gmane.text.markdown.general/2554).) + +5. Can list markers be indented? Can ordered list markers be right-aligned? + + ``` markdown + 8. item 1 + 9. item 2 + 10. item 2a + ``` + +6. Is this one list with a thematic break in its second item, + or two lists separated by a thematic break? + + ``` markdown + * a + * * * * * + * b + ``` + +7. When list markers change from numbers to bullets, do we have + two lists or one? (The Markdown syntax description suggests two, + but the perl scripts and many other implementations produce one.) + + ``` markdown + 1. fee + 2. fie + - foe + - fum + ``` + +8. What are the precedence rules for the markers of inline structure? + For example, is the following a valid link, or does the code span + take precedence ? + + ``` markdown + [a backtick (`)](/url) and [another backtick (`)](/url). + ``` + +9. What are the precedence rules for markers of emphasis and strong + emphasis? For example, how should the following be parsed? + + ``` markdown + *foo *bar* baz* + ``` + +10. What are the precedence rules between block-level and inline-level + structure? For example, how should the following be parsed? + + ``` markdown + - `a long code span can contain a hyphen like this + - and it can screw things up` + ``` + +11. Can list items include section headings? (`Markdown.pl` does not + allow this, but does allow blockquotes to include headings.) + + ``` markdown + - # Heading + ``` + +12. Can list items be empty? + + ``` markdown + * a + * + * b + ``` + +13. Can link references be defined inside block quotes or list items? + + ``` markdown + > Blockquote [foo]. + > + > [foo]: /url + ``` + +14. If there are multiple definitions for the same reference, which takes + precedence? + + ``` markdown + [foo]: /url1 + [foo]: /url2 + + [foo][] + ``` + +In the absence of a spec, early implementers consulted `Markdown.pl` +to resolve these ambiguities. But `Markdown.pl` was quite buggy, and +gave manifestly bad results in many cases, so it was not a +satisfactory replacement for a spec. + +Because there is no unambiguous spec, implementations have diverged +considerably. As a result, users are often surprised to find that +a document that renders one way on one system (say, a GitHub wiki) +renders differently on another (say, converting to docbook using +pandoc). To make matters worse, because nothing in Markdown counts +as a "syntax error," the divergence often isn't discovered right away. + +## About this document + +This document attempts to specify Markdown syntax unambiguously. +It contains many examples with side-by-side Markdown and +HTML. These are intended to double as conformance tests. An +accompanying script `spec_tests.py` can be used to run the tests +against any Markdown program: + + python test/spec_tests.py --spec spec.txt --program PROGRAM + +Since this document describes how Markdown is to be parsed into +an abstract syntax tree, it would have made sense to use an abstract +representation of the syntax tree instead of HTML. But HTML is capable +of representing the structural distinctions we need to make, and the +choice of HTML for the tests makes it possible to run the tests against +an implementation without writing an abstract syntax tree renderer. + +This document is generated from a text file, `spec.txt`, written +in Markdown with a small extension for the side-by-side tests. +The script `tools/makespec.py` can be used to convert `spec.txt` into +HTML or CommonMark (which can then be converted into other formats). + +In the examples, the `→` character is used to represent tabs. + +# Preliminaries + +## Characters and lines + +Any sequence of [characters] is a valid CommonMark +document. + +A [character](@) is a Unicode code point. Although some +code points (for example, combining accents) do not correspond to +characters in an intuitive sense, all code points count as characters +for purposes of this spec. + +This spec does not specify an encoding; it thinks of lines as composed +of [characters] rather than bytes. A conforming parser may be limited +to a certain encoding. + +A [line](@) is a sequence of zero or more [characters] +other than newline (`U+000A`) or carriage return (`U+000D`), +followed by a [line ending] or by the end of file. + +A [line ending](@) is a newline (`U+000A`), a carriage return +(`U+000D`) not followed by a newline, or a carriage return and a +following newline. + +A line containing no characters, or a line containing only spaces +(`U+0020`) or tabs (`U+0009`), is called a [blank line](@). + +The following definitions of character classes will be used in this spec: + +A [whitespace character](@) is a space +(`U+0020`), tab (`U+0009`), newline (`U+000A`), line tabulation (`U+000B`), +form feed (`U+000C`), or carriage return (`U+000D`). + +[Whitespace](@) is a sequence of one or more [whitespace +characters]. + +A [Unicode whitespace character](@) is +any code point in the Unicode `Zs` general category, or a tab (`U+0009`), +carriage return (`U+000D`), newline (`U+000A`), or form feed +(`U+000C`). + +[Unicode whitespace](@) is a sequence of one +or more [Unicode whitespace characters]. + +A [space](@) is `U+0020`. + +A [non-whitespace character](@) is any character +that is not a [whitespace character]. + +An [ASCII punctuation character](@) +is `!`, `"`, `#`, `$`, `%`, `&`, `'`, `(`, `)`, +`*`, `+`, `,`, `-`, `.`, `/` (U+0021–2F), +`:`, `;`, `<`, `=`, `>`, `?`, `@` (U+003A–0040), +`[`, `\`, `]`, `^`, `_`, `` ` `` (U+005B–0060), +`{`, `|`, `}`, or `~` (U+007B–007E). + +A [punctuation character](@) is an [ASCII +punctuation character] or anything in +the general Unicode categories `Pc`, `Pd`, `Pe`, `Pf`, `Pi`, `Po`, or `Ps`. + +## Tabs + +Tabs in lines are not expanded to [spaces]. However, +in contexts where whitespace helps to define block structure, +tabs behave as if they were replaced by spaces with a tab stop +of 4 characters. + +Thus, for example, a tab can be used instead of four spaces +in an indented code block. (Note, however, that internal +tabs are passed through as literal tabs, not expanded to +spaces.) + +```````````````````````````````` example +→foo→baz→→bim +. +

                  foo→baz→→bim
                  +
                  +```````````````````````````````` + +```````````````````````````````` example + →foo→baz→→bim +. +
                  foo→baz→→bim
                  +
                  +```````````````````````````````` + +```````````````````````````````` example + a→a + ὐ→a +. +
                  a→a
                  +ὐ→a
                  +
                  +```````````````````````````````` + +In the following example, a continuation paragraph of a list +item is indented with a tab; this has exactly the same effect +as indentation with four spaces would: + +```````````````````````````````` example + - foo + +→bar +. +
                    +
                  • +

                    foo

                    +

                    bar

                    +
                  • +
                  +```````````````````````````````` + +```````````````````````````````` example +- foo + +→→bar +. +
                    +
                  • +

                    foo

                    +
                      bar
                    +
                    +
                  • +
                  +```````````````````````````````` + +Normally the `>` that begins a block quote may be followed +optionally by a space, which is not considered part of the +content. In the following case `>` is followed by a tab, +which is treated as if it were expanded into three spaces. +Since one of these spaces is considered part of the +delimiter, `foo` is considered to be indented six spaces +inside the block quote context, so we get an indented +code block starting with two spaces. + +```````````````````````````````` example +>→→foo +. +
                  +
                    foo
                  +
                  +
                  +```````````````````````````````` + +```````````````````````````````` example +-→→foo +. +
                    +
                  • +
                      foo
                    +
                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example + foo +→bar +. +
                  foo
                  +bar
                  +
                  +```````````````````````````````` + +```````````````````````````````` example + - foo + - bar +→ - baz +. +
                    +
                  • foo +
                      +
                    • bar +
                        +
                      • baz
                      • +
                      +
                    • +
                    +
                  • +
                  +```````````````````````````````` + +```````````````````````````````` example +#→Foo +. +

                  Foo

                  +```````````````````````````````` + +```````````````````````````````` example +*→*→*→ +. +
                  +```````````````````````````````` + + +## Insecure characters + +For security reasons, the Unicode character `U+0000` must be replaced +with the REPLACEMENT CHARACTER (`U+FFFD`). + +# Blocks and inlines + +We can think of a document as a sequence of +[blocks](@)---structural elements like paragraphs, block +quotations, lists, headings, rules, and code blocks. Some blocks (like +block quotes and list items) contain other blocks; others (like +headings and paragraphs) contain [inline](@) content---text, +links, emphasized text, images, code spans, and so on. + +## Precedence + +Indicators of block structure always take precedence over indicators +of inline structure. So, for example, the following is a list with +two items, not a list with one item containing a code span: + +```````````````````````````````` example +- `one +- two` +. +
                    +
                  • `one
                  • +
                  • two`
                  • +
                  +```````````````````````````````` + + +This means that parsing can proceed in two steps: first, the block +structure of the document can be discerned; second, text lines inside +paragraphs, headings, and other block constructs can be parsed for inline +structure. The second step requires information about link reference +definitions that will be available only at the end of the first +step. Note that the first step requires processing lines in sequence, +but the second can be parallelized, since the inline parsing of +one block element does not affect the inline parsing of any other. + +## Container blocks and leaf blocks + +We can divide blocks into two types: +[container blocks](@), +which can contain other blocks, and [leaf blocks](@), +which cannot. + +# Leaf blocks + +This section describes the different kinds of leaf block that make up a +Markdown document. + +## Thematic breaks + +A line consisting of 0-3 spaces of indentation, followed by a sequence +of three or more matching `-`, `_`, or `*` characters, each followed +optionally by any number of spaces or tabs, forms a +[thematic break](@). + +```````````````````````````````` example +*** +--- +___ +. +
                  +
                  +
                  +```````````````````````````````` + + +Wrong characters: + +```````````````````````````````` example ++++ +. +

                  +++

                  +```````````````````````````````` + + +```````````````````````````````` example +=== +. +

                  ===

                  +```````````````````````````````` + + +Not enough characters: + +```````````````````````````````` example +-- +** +__ +. +

                  -- +** +__

                  +```````````````````````````````` + + +One to three spaces indent are allowed: + +```````````````````````````````` example + *** + *** + *** +. +
                  +
                  +
                  +```````````````````````````````` + + +Four spaces is too many: + +```````````````````````````````` example + *** +. +
                  ***
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +Foo + *** +. +

                  Foo +***

                  +```````````````````````````````` + + +More than three characters may be used: + +```````````````````````````````` example +_____________________________________ +. +
                  +```````````````````````````````` + + +Spaces are allowed between the characters: + +```````````````````````````````` example + - - - +. +
                  +```````````````````````````````` + + +```````````````````````````````` example + ** * ** * ** * ** +. +
                  +```````````````````````````````` + + +```````````````````````````````` example +- - - - +. +
                  +```````````````````````````````` + + +Spaces are allowed at the end: + +```````````````````````````````` example +- - - - +. +
                  +```````````````````````````````` + + +However, no other characters may occur in the line: + +```````````````````````````````` example +_ _ _ _ a + +a------ + +---a--- +. +

                  _ _ _ _ a

                  +

                  a------

                  +

                  ---a---

                  +```````````````````````````````` + + +It is required that all of the [non-whitespace characters] be the same. +So, this is not a thematic break: + +```````````````````````````````` example + *-* +. +

                  -

                  +```````````````````````````````` + + +Thematic breaks do not need blank lines before or after: + +```````````````````````````````` example +- foo +*** +- bar +. +
                    +
                  • foo
                  • +
                  +
                  +
                    +
                  • bar
                  • +
                  +```````````````````````````````` + + +Thematic breaks can interrupt a paragraph: + +```````````````````````````````` example +Foo +*** +bar +. +

                  Foo

                  +
                  +

                  bar

                  +```````````````````````````````` + + +If a line of dashes that meets the above conditions for being a +thematic break could also be interpreted as the underline of a [setext +heading], the interpretation as a +[setext heading] takes precedence. Thus, for example, +this is a setext heading, not a paragraph followed by a thematic break: + +```````````````````````````````` example +Foo +--- +bar +. +

                  Foo

                  +

                  bar

                  +```````````````````````````````` + + +When both a thematic break and a list item are possible +interpretations of a line, the thematic break takes precedence: + +```````````````````````````````` example +* Foo +* * * +* Bar +. +
                    +
                  • Foo
                  • +
                  +
                  +
                    +
                  • Bar
                  • +
                  +```````````````````````````````` + + +If you want a thematic break in a list item, use a different bullet: + +```````````````````````````````` example +- Foo +- * * * +. +
                    +
                  • Foo
                  • +
                  • +
                    +
                  • +
                  +```````````````````````````````` + + +## ATX headings + +An [ATX heading](@) +consists of a string of characters, parsed as inline content, between an +opening sequence of 1--6 unescaped `#` characters and an optional +closing sequence of any number of unescaped `#` characters. +The opening sequence of `#` characters must be followed by a +[space] or by the end of line. The optional closing sequence of `#`s must be +preceded by a [space] and may be followed by spaces only. The opening +`#` character may be indented 0-3 spaces. The raw contents of the +heading are stripped of leading and trailing spaces before being parsed +as inline content. The heading level is equal to the number of `#` +characters in the opening sequence. + +Simple headings: + +```````````````````````````````` example +# foo +## foo +### foo +#### foo +##### foo +###### foo +. +

                  foo

                  +

                  foo

                  +

                  foo

                  +

                  foo

                  +
                  foo
                  +
                  foo
                  +```````````````````````````````` + + +More than six `#` characters is not a heading: + +```````````````````````````````` example +####### foo +. +

                  ####### foo

                  +```````````````````````````````` + + +At least one space is required between the `#` characters and the +heading's contents, unless the heading is empty. Note that many +implementations currently do not require the space. However, the +space was required by the +[original ATX implementation](http://www.aaronsw.com/2002/atx/atx.py), +and it helps prevent things like the following from being parsed as +headings: + +```````````````````````````````` example +#5 bolt + +#hashtag +. +

                  #5 bolt

                  +

                  #hashtag

                  +```````````````````````````````` + + +This is not a heading, because the first `#` is escaped: + +```````````````````````````````` example +\## foo +. +

                  ## foo

                  +```````````````````````````````` + + +Contents are parsed as inlines: + +```````````````````````````````` example +# foo *bar* \*baz\* +. +

                  foo bar *baz*

                  +```````````````````````````````` + + +Leading and trailing [whitespace] is ignored in parsing inline content: + +```````````````````````````````` example +# foo +. +

                  foo

                  +```````````````````````````````` + + +One to three spaces indentation are allowed: + +```````````````````````````````` example + ### foo + ## foo + # foo +. +

                  foo

                  +

                  foo

                  +

                  foo

                  +```````````````````````````````` + + +Four spaces are too much: + +```````````````````````````````` example + # foo +. +
                  # foo
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +foo + # bar +. +

                  foo +# bar

                  +```````````````````````````````` + + +A closing sequence of `#` characters is optional: + +```````````````````````````````` example +## foo ## + ### bar ### +. +

                  foo

                  +

                  bar

                  +```````````````````````````````` + + +It need not be the same length as the opening sequence: + +```````````````````````````````` example +# foo ################################## +##### foo ## +. +

                  foo

                  +
                  foo
                  +```````````````````````````````` + + +Spaces are allowed after the closing sequence: + +```````````````````````````````` example +### foo ### +. +

                  foo

                  +```````````````````````````````` + + +A sequence of `#` characters with anything but [spaces] following it +is not a closing sequence, but counts as part of the contents of the +heading: + +```````````````````````````````` example +### foo ### b +. +

                  foo ### b

                  +```````````````````````````````` + + +The closing sequence must be preceded by a space: + +```````````````````````````````` example +# foo# +. +

                  foo#

                  +```````````````````````````````` + + +Backslash-escaped `#` characters do not count as part +of the closing sequence: + +```````````````````````````````` example +### foo \### +## foo #\## +# foo \# +. +

                  foo ###

                  +

                  foo ###

                  +

                  foo #

                  +```````````````````````````````` + + +ATX headings need not be separated from surrounding content by blank +lines, and they can interrupt paragraphs: + +```````````````````````````````` example +**** +## foo +**** +. +
                  +

                  foo

                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +Foo bar +# baz +Bar foo +. +

                  Foo bar

                  +

                  baz

                  +

                  Bar foo

                  +```````````````````````````````` + + +ATX headings can be empty: + +```````````````````````````````` example +## +# +### ### +. +

                  +

                  +

                  +```````````````````````````````` + + +## Setext headings + +A [setext heading](@) consists of one or more +lines of text, each containing at least one [non-whitespace +character], with no more than 3 spaces indentation, followed by +a [setext heading underline]. The lines of text must be such +that, were they not followed by the setext heading underline, +they would be interpreted as a paragraph: they cannot be +interpretable as a [code fence], [ATX heading][ATX headings], +[block quote][block quotes], [thematic break][thematic breaks], +[list item][list items], or [HTML block][HTML blocks]. + +A [setext heading underline](@) is a sequence of +`=` characters or a sequence of `-` characters, with no more than 3 +spaces indentation and any number of trailing spaces. If a line +containing a single `-` can be interpreted as an +empty [list items], it should be interpreted this way +and not as a [setext heading underline]. + +The heading is a level 1 heading if `=` characters are used in +the [setext heading underline], and a level 2 heading if `-` +characters are used. The contents of the heading are the result +of parsing the preceding lines of text as CommonMark inline +content. + +In general, a setext heading need not be preceded or followed by a +blank line. However, it cannot interrupt a paragraph, so when a +setext heading comes after a paragraph, a blank line is needed between +them. + +Simple examples: + +```````````````````````````````` example +Foo *bar* +========= + +Foo *bar* +--------- +. +

                  Foo bar

                  +

                  Foo bar

                  +```````````````````````````````` + + +The content of the header may span more than one line: + +```````````````````````````````` example +Foo *bar +baz* +==== +. +

                  Foo bar +baz

                  +```````````````````````````````` + +The contents are the result of parsing the headings's raw +content as inlines. The heading's raw content is formed by +concatenating the lines and removing initial and final +[whitespace]. + +```````````````````````````````` example + Foo *bar +baz*→ +==== +. +

                  Foo bar +baz

                  +```````````````````````````````` + + +The underlining can be any length: + +```````````````````````````````` example +Foo +------------------------- + +Foo += +. +

                  Foo

                  +

                  Foo

                  +```````````````````````````````` + + +The heading content can be indented up to three spaces, and need +not line up with the underlining: + +```````````````````````````````` example + Foo +--- + + Foo +----- + + Foo + === +. +

                  Foo

                  +

                  Foo

                  +

                  Foo

                  +```````````````````````````````` + + +Four spaces indent is too much: + +```````````````````````````````` example + Foo + --- + + Foo +--- +. +
                  Foo
                  +---
                  +
                  +Foo
                  +
                  +
                  +```````````````````````````````` + + +The setext heading underline can be indented up to three spaces, and +may have trailing spaces: + +```````````````````````````````` example +Foo + ---- +. +

                  Foo

                  +```````````````````````````````` + + +Four spaces is too much: + +```````````````````````````````` example +Foo + --- +. +

                  Foo +---

                  +```````````````````````````````` + + +The setext heading underline cannot contain internal spaces: + +```````````````````````````````` example +Foo += = + +Foo +--- - +. +

                  Foo += =

                  +

                  Foo

                  +
                  +```````````````````````````````` + + +Trailing spaces in the content line do not cause a line break: + +```````````````````````````````` example +Foo +----- +. +

                  Foo

                  +```````````````````````````````` + + +Nor does a backslash at the end: + +```````````````````````````````` example +Foo\ +---- +. +

                  Foo\

                  +```````````````````````````````` + + +Since indicators of block structure take precedence over +indicators of inline structure, the following are setext headings: + +```````````````````````````````` example +`Foo +---- +` + + +. +

                  `Foo

                  +

                  `

                  +

                  <a title="a lot

                  +

                  of dashes"/>

                  +```````````````````````````````` + + +The setext heading underline cannot be a [lazy continuation +line] in a list item or block quote: + +```````````````````````````````` example +> Foo +--- +. +
                  +

                  Foo

                  +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> foo +bar +=== +. +
                  +

                  foo +bar +===

                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +- Foo +--- +. +
                    +
                  • Foo
                  • +
                  +
                  +```````````````````````````````` + + +A blank line is needed between a paragraph and a following +setext heading, since otherwise the paragraph becomes part +of the heading's content: + +```````````````````````````````` example +Foo +Bar +--- +. +

                  Foo +Bar

                  +```````````````````````````````` + + +But in general a blank line is not required before or after +setext headings: + +```````````````````````````````` example +--- +Foo +--- +Bar +--- +Baz +. +
                  +

                  Foo

                  +

                  Bar

                  +

                  Baz

                  +```````````````````````````````` + + +Setext headings cannot be empty: + +```````````````````````````````` example + +==== +. +

                  ====

                  +```````````````````````````````` + + +Setext heading text lines must not be interpretable as block +constructs other than paragraphs. So, the line of dashes +in these examples gets interpreted as a thematic break: + +```````````````````````````````` example +--- +--- +. +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +- foo +----- +. +
                    +
                  • foo
                  • +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + foo +--- +. +
                  foo
                  +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> foo +----- +. +
                  +

                  foo

                  +
                  +
                  +```````````````````````````````` + + +If you want a heading with `> foo` as its literal text, you can +use backslash escapes: + +```````````````````````````````` example +\> foo +------ +. +

                  > foo

                  +```````````````````````````````` + + +**Compatibility note:** Most existing Markdown implementations +do not allow the text of setext headings to span multiple lines. +But there is no consensus about how to interpret + +``` markdown +Foo +bar +--- +baz +``` + +One can find four different interpretations: + +1. paragraph "Foo", heading "bar", paragraph "baz" +2. paragraph "Foo bar", thematic break, paragraph "baz" +3. paragraph "Foo bar --- baz" +4. heading "Foo bar", paragraph "baz" + +We find interpretation 4 most natural, and interpretation 4 +increases the expressive power of CommonMark, by allowing +multiline headings. Authors who want interpretation 1 can +put a blank line after the first paragraph: + +```````````````````````````````` example +Foo + +bar +--- +baz +. +

                  Foo

                  +

                  bar

                  +

                  baz

                  +```````````````````````````````` + + +Authors who want interpretation 2 can put blank lines around +the thematic break, + +```````````````````````````````` example +Foo +bar + +--- + +baz +. +

                  Foo +bar

                  +
                  +

                  baz

                  +```````````````````````````````` + + +or use a thematic break that cannot count as a [setext heading +underline], such as + +```````````````````````````````` example +Foo +bar +* * * +baz +. +

                  Foo +bar

                  +
                  +

                  baz

                  +```````````````````````````````` + + +Authors who want interpretation 3 can use backslash escapes: + +```````````````````````````````` example +Foo +bar +\--- +baz +. +

                  Foo +bar +--- +baz

                  +```````````````````````````````` + + +## Indented code blocks + +An [indented code block](@) is composed of one or more +[indented chunks] separated by blank lines. +An [indented chunk](@) is a sequence of non-blank lines, +each indented four or more spaces. The contents of the code block are +the literal contents of the lines, including trailing +[line endings], minus four spaces of indentation. +An indented code block has no [info string]. + +An indented code block cannot interrupt a paragraph, so there must be +a blank line between a paragraph and a following indented code block. +(A blank line is not needed, however, between a code block and a following +paragraph.) + +```````````````````````````````` example + a simple + indented code block +. +
                  a simple
                  +  indented code block
                  +
                  +```````````````````````````````` + + +If there is any ambiguity between an interpretation of indentation +as a code block and as indicating that material belongs to a [list +item][list items], the list item interpretation takes precedence: + +```````````````````````````````` example + - foo + + bar +. +
                    +
                  • +

                    foo

                    +

                    bar

                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +1. foo + + - bar +. +
                    +
                  1. +

                    foo

                    +
                      +
                    • bar
                    • +
                    +
                  2. +
                  +```````````````````````````````` + + + +The contents of a code block are literal text, and do not get parsed +as Markdown: + +```````````````````````````````` example +
                  + *hi* + + - one +. +
                  <a/>
                  +*hi*
                  +
                  +- one
                  +
                  +```````````````````````````````` + + +Here we have three chunks separated by blank lines: + +```````````````````````````````` example + chunk1 + + chunk2 + + + + chunk3 +. +
                  chunk1
                  +
                  +chunk2
                  +
                  +
                  +
                  +chunk3
                  +
                  +```````````````````````````````` + + +Any initial spaces beyond four will be included in the content, even +in interior blank lines: + +```````````````````````````````` example + chunk1 + + chunk2 +. +
                  chunk1
                  +  
                  +  chunk2
                  +
                  +```````````````````````````````` + + +An indented code block cannot interrupt a paragraph. (This +allows hanging indents and the like.) + +```````````````````````````````` example +Foo + bar + +. +

                  Foo +bar

                  +```````````````````````````````` + + +However, any non-blank line with fewer than four leading spaces ends +the code block immediately. So a paragraph may occur immediately +after indented code: + +```````````````````````````````` example + foo +bar +. +
                  foo
                  +
                  +

                  bar

                  +```````````````````````````````` + + +And indented code can occur immediately before and after other kinds of +blocks: + +```````````````````````````````` example +# Heading + foo +Heading +------ + foo +---- +. +

                  Heading

                  +
                  foo
                  +
                  +

                  Heading

                  +
                  foo
                  +
                  +
                  +```````````````````````````````` + + +The first line can be indented more than four spaces: + +```````````````````````````````` example + foo + bar +. +
                      foo
                  +bar
                  +
                  +```````````````````````````````` + + +Blank lines preceding or following an indented code block +are not included in it: + +```````````````````````````````` example + + + foo + + +. +
                  foo
                  +
                  +```````````````````````````````` + + +Trailing spaces are included in the code block's content: + +```````````````````````````````` example + foo +. +
                  foo  
                  +
                  +```````````````````````````````` + + + +## Fenced code blocks + +A [code fence](@) is a sequence +of at least three consecutive backtick characters (`` ` ``) or +tildes (`~`). (Tildes and backticks cannot be mixed.) +A [fenced code block](@) +begins with a code fence, indented no more than three spaces. + +The line with the opening code fence may optionally contain some text +following the code fence; this is trimmed of leading and trailing +whitespace and called the [info string](@). If the [info string] comes +after a backtick fence, it may not contain any backtick +characters. (The reason for this restriction is that otherwise +some inline code would be incorrectly interpreted as the +beginning of a fenced code block.) + +The content of the code block consists of all subsequent lines, until +a closing [code fence] of the same type as the code block +began with (backticks or tildes), and with at least as many backticks +or tildes as the opening code fence. If the leading code fence is +indented N spaces, then up to N spaces of indentation are removed from +each line of the content (if present). (If a content line is not +indented, it is preserved unchanged. If it is indented less than N +spaces, all of the indentation is removed.) + +The closing code fence may be indented up to three spaces, and may be +followed only by spaces, which are ignored. If the end of the +containing block (or document) is reached and no closing code fence +has been found, the code block contains all of the lines after the +opening code fence until the end of the containing block (or +document). (An alternative spec would require backtracking in the +event that a closing code fence is not found. But this makes parsing +much less efficient, and there seems to be no real down side to the +behavior described here.) + +A fenced code block may interrupt a paragraph, and does not require +a blank line either before or after. + +The content of a code fence is treated as literal text, not parsed +as inlines. The first word of the [info string] is typically used to +specify the language of the code sample, and rendered in the `class` +attribute of the `code` tag. However, this spec does not mandate any +particular treatment of the [info string]. + +Here is a simple example with backticks: + +```````````````````````````````` example +``` +< + > +``` +. +
                  <
                  + >
                  +
                  +```````````````````````````````` + + +With tildes: + +```````````````````````````````` example +~~~ +< + > +~~~ +. +
                  <
                  + >
                  +
                  +```````````````````````````````` + +Fewer than three backticks is not enough: + +```````````````````````````````` example +`` +foo +`` +. +

                  foo

                  +```````````````````````````````` + +The closing code fence must use the same character as the opening +fence: + +```````````````````````````````` example +``` +aaa +~~~ +``` +. +
                  aaa
                  +~~~
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +~~~ +aaa +``` +~~~ +. +
                  aaa
                  +```
                  +
                  +```````````````````````````````` + + +The closing code fence must be at least as long as the opening fence: + +```````````````````````````````` example +```` +aaa +``` +`````` +. +
                  aaa
                  +```
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +~~~~ +aaa +~~~ +~~~~ +. +
                  aaa
                  +~~~
                  +
                  +```````````````````````````````` + + +Unclosed code blocks are closed by the end of the document +(or the enclosing [block quote][block quotes] or [list item][list items]): + +```````````````````````````````` example +``` +. +
                  +```````````````````````````````` + + +```````````````````````````````` example +````` + +``` +aaa +. +
                  
                  +```
                  +aaa
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> ``` +> aaa + +bbb +. +
                  +
                  aaa
                  +
                  +
                  +

                  bbb

                  +```````````````````````````````` + + +A code block can have all empty lines as its content: + +```````````````````````````````` example +``` + + +``` +. +
                  
                  +  
                  +
                  +```````````````````````````````` + + +A code block can be empty: + +```````````````````````````````` example +``` +``` +. +
                  +```````````````````````````````` + + +Fences can be indented. If the opening fence is indented, +content lines will have equivalent opening indentation removed, +if present: + +```````````````````````````````` example + ``` + aaa +aaa +``` +. +
                  aaa
                  +aaa
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + ``` +aaa + aaa +aaa + ``` +. +
                  aaa
                  +aaa
                  +aaa
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + ``` + aaa + aaa + aaa + ``` +. +
                  aaa
                  + aaa
                  +aaa
                  +
                  +```````````````````````````````` + + +Four spaces indentation produces an indented code block: + +```````````````````````````````` example + ``` + aaa + ``` +. +
                  ```
                  +aaa
                  +```
                  +
                  +```````````````````````````````` + + +Closing fences may be indented by 0-3 spaces, and their indentation +need not match that of the opening fence: + +```````````````````````````````` example +``` +aaa + ``` +. +
                  aaa
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + ``` +aaa + ``` +. +
                  aaa
                  +
                  +```````````````````````````````` + + +This is not a closing fence, because it is indented 4 spaces: + +```````````````````````````````` example +``` +aaa + ``` +. +
                  aaa
                  +    ```
                  +
                  +```````````````````````````````` + + + +Code fences (opening and closing) cannot contain internal spaces: + +```````````````````````````````` example +``` ``` +aaa +. +

                  +aaa

                  +```````````````````````````````` + + +```````````````````````````````` example +~~~~~~ +aaa +~~~ ~~ +. +
                  aaa
                  +~~~ ~~
                  +
                  +```````````````````````````````` + + +Fenced code blocks can interrupt paragraphs, and can be followed +directly by paragraphs, without a blank line between: + +```````````````````````````````` example +foo +``` +bar +``` +baz +. +

                  foo

                  +
                  bar
                  +
                  +

                  baz

                  +```````````````````````````````` + + +Other blocks can also occur before and after fenced code blocks +without an intervening blank line: + +```````````````````````````````` example +foo +--- +~~~ +bar +~~~ +# baz +. +

                  foo

                  +
                  bar
                  +
                  +

                  baz

                  +```````````````````````````````` + + +An [info string] can be provided after the opening code fence. +Although this spec doesn't mandate any particular treatment of +the info string, the first word is typically used to specify +the language of the code block. In HTML output, the language is +normally indicated by adding a class to the `code` element consisting +of `language-` followed by the language name. + +```````````````````````````````` example +```ruby +def foo(x) + return 3 +end +``` +. +
                  def foo(x)
                  +  return 3
                  +end
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +~~~~ ruby startline=3 $%@#$ +def foo(x) + return 3 +end +~~~~~~~ +. +
                  def foo(x)
                  +  return 3
                  +end
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +````; +```` +. +
                  +```````````````````````````````` + + +[Info strings] for backtick code blocks cannot contain backticks: + +```````````````````````````````` example +``` aa ``` +foo +. +

                  aa +foo

                  +```````````````````````````````` + + +[Info strings] for tilde code blocks can contain backticks and tildes: + +```````````````````````````````` example +~~~ aa ``` ~~~ +foo +~~~ +. +
                  foo
                  +
                  +```````````````````````````````` + + +Closing code fences cannot have [info strings]: + +```````````````````````````````` example +``` +``` aaa +``` +. +
                  ``` aaa
                  +
                  +```````````````````````````````` + + + +## HTML blocks + +An [HTML block](@) is a group of lines that is treated +as raw HTML (and will not be escaped in HTML output). + +There are seven kinds of [HTML block], which can be defined by their +start and end conditions. The block begins with a line that meets a +[start condition](@) (after up to three spaces optional indentation). +It ends with the first subsequent line that meets a matching [end +condition](@), or the last line of the document, or the last line of +the [container block](#container-blocks) containing the current HTML +block, if no line is encountered that meets the [end condition]. If +the first line meets both the [start condition] and the [end +condition], the block will contain just that line. + +1. **Start condition:** line begins with the string ``, or the end of the line.\ +**End condition:** line contains an end tag +``, ``, or `` (case-insensitive; it +need not match the start tag). + +2. **Start condition:** line begins with the string ``. + +3. **Start condition:** line begins with the string ``. + +4. **Start condition:** line begins with the string ``. + +5. **Start condition:** line begins with the string +``. + +6. **Start condition:** line begins the string `<` or ``, or +the string `/>`.\ +**End condition:** line is followed by a [blank line]. + +7. **Start condition:** line begins with a complete [open tag] +(with any [tag name] other than `script`, +`style`, or `pre`) or a complete [closing tag], +followed only by [whitespace] or the end of the line.\ +**End condition:** line is followed by a [blank line]. + +HTML blocks continue until they are closed by their appropriate +[end condition], or the last line of the document or other [container +block](#container-blocks). This means any HTML **within an HTML +block** that might otherwise be recognised as a start condition will +be ignored by the parser and passed through as-is, without changing +the parser's state. + +For instance, `
                  ` within a HTML block started by `` will not affect
                  +the parser state; as the HTML block was started in by start condition 6, it
                  +will end at any blank line. This can be surprising:
                  +
                  +```````````````````````````````` example
                  +
                  +
                  +**Hello**,
                  +
                  +_world_.
                  +
                  +
                  +. +
                  +
                  +**Hello**,
                  +

                  world. +

                  +
                  +```````````````````````````````` + +In this case, the HTML block is terminated by the newline — the `**Hello**` +text remains verbatim — and regular parsing resumes, with a paragraph, +emphasised `world` and inline and block HTML following. + +All types of [HTML blocks] except type 7 may interrupt +a paragraph. Blocks of type 7 may not interrupt a paragraph. +(This restriction is intended to prevent unwanted interpretation +of long tags inside a wrapped paragraph as starting HTML blocks.) + +Some simple examples follow. Here are some basic HTML blocks +of type 6: + +```````````````````````````````` example + + + + +
                  + hi +
                  + +okay. +. + + + + +
                  + hi +
                  +

                  okay.

                  +```````````````````````````````` + + +```````````````````````````````` example +
                  +*foo* +```````````````````````````````` + + +Here we have two HTML blocks with a Markdown paragraph between them: + +```````````````````````````````` example +
                  + +*Markdown* + +
                  +. +
                  +

                  Markdown

                  +
                  +```````````````````````````````` + + +The tag on the first line can be partial, as long +as it is split where there would be whitespace: + +```````````````````````````````` example +
                  +
                  +. +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +
                  +
                  +. +
                  +
                  +```````````````````````````````` + + +An open tag need not be closed: +```````````````````````````````` example +
                  +*foo* + +*bar* +. +
                  +*foo* +

                  bar

                  +```````````````````````````````` + + + +A partial tag need not even be completed (garbage +in, garbage out): + +```````````````````````````````` example +
                  +. + +```````````````````````````````` + + +```````````````````````````````` example +
                  +foo +
                  +. +
                  +foo +
                  +```````````````````````````````` + + +Everything until the next blank line or end of document +gets included in the HTML block. So, in the following +example, what looks like a Markdown code block +is actually part of the HTML block, which continues until a blank +line or the end of the document is reached: + +```````````````````````````````` example +
                  +``` c +int x = 33; +``` +. +
                  +``` c +int x = 33; +``` +```````````````````````````````` + + +To start an [HTML block] with a tag that is *not* in the +list of block-level tags in (6), you must put the tag by +itself on the first line (and it must be complete): + +```````````````````````````````` example + +*bar* + +. + +*bar* + +```````````````````````````````` + + +In type 7 blocks, the [tag name] can be anything: + +```````````````````````````````` example + +*bar* + +. + +*bar* + +```````````````````````````````` + + +```````````````````````````````` example + +*bar* + +. + +*bar* + +```````````````````````````````` + + +```````````````````````````````` example + +*bar* +. + +*bar* +```````````````````````````````` + + +These rules are designed to allow us to work with tags that +can function as either block-level or inline-level tags. +The `` tag is a nice example. We can surround content with +`` tags in three different ways. In this case, we get a raw +HTML block, because the `` tag is on a line by itself: + +```````````````````````````````` example + +*foo* + +. + +*foo* + +```````````````````````````````` + + +In this case, we get a raw HTML block that just includes +the `` tag (because it ends with the following blank +line). So the contents get interpreted as CommonMark: + +```````````````````````````````` example + + +*foo* + + +. + +

                  foo

                  +
                  +```````````````````````````````` + + +Finally, in this case, the `` tags are interpreted +as [raw HTML] *inside* the CommonMark paragraph. (Because +the tag is not on a line by itself, we get inline HTML +rather than an [HTML block].) + +```````````````````````````````` example +*foo* +. +

                  foo

                  +```````````````````````````````` + + +HTML tags designed to contain literal content +(`script`, `style`, `pre`), comments, processing instructions, +and declarations are treated somewhat differently. +Instead of ending at the first blank line, these blocks +end at the first line containing a corresponding end tag. +As a result, these blocks can contain blank lines: + +A pre tag (type 1): + +```````````````````````````````` example +
                  
                  +import Text.HTML.TagSoup
                  +
                  +main :: IO ()
                  +main = print $ parseTags tags
                  +
                  +okay +. +
                  
                  +import Text.HTML.TagSoup
                  +
                  +main :: IO ()
                  +main = print $ parseTags tags
                  +
                  +

                  okay

                  +```````````````````````````````` + + +A script tag (type 1): + +```````````````````````````````` example + +okay +. + +

                  okay

                  +```````````````````````````````` + + +A style tag (type 1): + +```````````````````````````````` example + +okay +. + +

                  okay

                  +```````````````````````````````` + + +If there is no matching end tag, the block will end at the +end of the document (or the enclosing [block quote][block quotes] +or [list item][list items]): + +```````````````````````````````` example + +*foo* +. + +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +*bar* +*baz* +. +*bar* +

                  baz

                  +```````````````````````````````` + + +Note that anything on the last line after the +end tag will be included in the [HTML block]: + +```````````````````````````````` example +1. *bar* +. +1. *bar* +```````````````````````````````` + + +A comment (type 2): + +```````````````````````````````` example + +okay +. + +

                  okay

                  +```````````````````````````````` + + + +A processing instruction (type 3): + +```````````````````````````````` example +'; + +?> +okay +. +'; + +?> +

                  okay

                  +```````````````````````````````` + + +A declaration (type 4): + +```````````````````````````````` example + +. + +```````````````````````````````` + + +CDATA (type 5): + +```````````````````````````````` example + +okay +. + +

                  okay

                  +```````````````````````````````` + + +The opening tag can be indented 1-3 spaces, but not 4: + +```````````````````````````````` example + + + +. + +
                  <!-- foo -->
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +
                  + +
                  +. +
                  +
                  <div>
                  +
                  +```````````````````````````````` + + +An HTML block of types 1--6 can interrupt a paragraph, and need not be +preceded by a blank line. + +```````````````````````````````` example +Foo +
                  +bar +
                  +. +

                  Foo

                  +
                  +bar +
                  +```````````````````````````````` + + +However, a following blank line is needed, except at the end of +a document, and except for blocks of types 1--5, [above][HTML +block]: + +```````````````````````````````` example +
                  +bar +
                  +*foo* +. +
                  +bar +
                  +*foo* +```````````````````````````````` + + +HTML blocks of type 7 cannot interrupt a paragraph: + +```````````````````````````````` example +Foo + +baz +. +

                  Foo + +baz

                  +```````````````````````````````` + + +This rule differs from John Gruber's original Markdown syntax +specification, which says: + +> The only restrictions are that block-level HTML elements — +> e.g. `
                  `, ``, `
                  `, `

                  `, etc. — must be separated from +> surrounding content by blank lines, and the start and end tags of the +> block should not be indented with tabs or spaces. + +In some ways Gruber's rule is more restrictive than the one given +here: + +- It requires that an HTML block be preceded by a blank line. +- It does not allow the start tag to be indented. +- It requires a matching end tag, which it also does not allow to + be indented. + +Most Markdown implementations (including some of Gruber's own) do not +respect all of these restrictions. + +There is one respect, however, in which Gruber's rule is more liberal +than the one given here, since it allows blank lines to occur inside +an HTML block. There are two reasons for disallowing them here. +First, it removes the need to parse balanced tags, which is +expensive and can require backtracking from the end of the document +if no matching end tag is found. Second, it provides a very simple +and flexible way of including Markdown content inside HTML tags: +simply separate the Markdown from the HTML using blank lines: + +Compare: + +```````````````````````````````` example +

                  + +*Emphasized* text. + +
                  +. +
                  +

                  Emphasized text.

                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +
                  +*Emphasized* text. +
                  +. +
                  +*Emphasized* text. +
                  +```````````````````````````````` + + +Some Markdown implementations have adopted a convention of +interpreting content inside tags as text if the open tag has +the attribute `markdown=1`. The rule given above seems a simpler and +more elegant way of achieving the same expressive power, which is also +much simpler to parse. + +The main potential drawback is that one can no longer paste HTML +blocks into Markdown documents with 100% reliability. However, +*in most cases* this will work fine, because the blank lines in +HTML are usually followed by HTML block tags. For example: + +```````````````````````````````` example +
                  + + + + + + + +
                  +Hi +
                  +. + + + + +
                  +Hi +
                  +```````````````````````````````` + + +There are problems, however, if the inner tags are indented +*and* separated by spaces, as then they will be interpreted as +an indented code block: + +```````````````````````````````` example + + + + + + + + +
                  + Hi +
                  +. + + +
                  <td>
                  +  Hi
                  +</td>
                  +
                  + +
                  +```````````````````````````````` + + +Fortunately, blank lines are usually not necessary and can be +deleted. The exception is inside `
                  ` tags, but as described
                  +[above][HTML blocks], raw HTML blocks starting with `
                  `
                  +*can* contain blank lines.
                  +
                  +## Link reference definitions
                  +
                  +A [link reference definition](@)
                  +consists of a [link label], indented up to three spaces, followed
                  +by a colon (`:`), optional [whitespace] (including up to one
                  +[line ending]), a [link destination],
                  +optional [whitespace] (including up to one
                  +[line ending]), and an optional [link
                  +title], which if it is present must be separated
                  +from the [link destination] by [whitespace].
                  +No further [non-whitespace characters] may occur on the line.
                  +
                  +A [link reference definition]
                  +does not correspond to a structural element of a document.  Instead, it
                  +defines a label which can be used in [reference links]
                  +and reference-style [images] elsewhere in the document.  [Link
                  +reference definitions] can come either before or after the links that use
                  +them.
                  +
                  +```````````````````````````````` example
                  +[foo]: /url "title"
                  +
                  +[foo]
                  +.
                  +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example + [foo]: + /url + 'the title' + +[foo] +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[Foo*bar\]]:my_(url) 'title (with parens)' + +[Foo*bar\]] +. +

                  Foo*bar]

                  +```````````````````````````````` + + +```````````````````````````````` example +[Foo bar]: + +'title' + +[Foo bar] +. +

                  Foo bar

                  +```````````````````````````````` + + +The title may extend over multiple lines: + +```````````````````````````````` example +[foo]: /url ' +title +line1 +line2 +' + +[foo] +. +

                  foo

                  +```````````````````````````````` + + +However, it may not contain a [blank line]: + +```````````````````````````````` example +[foo]: /url 'title + +with blank line' + +[foo] +. +

                  [foo]: /url 'title

                  +

                  with blank line'

                  +

                  [foo]

                  +```````````````````````````````` + + +The title may be omitted: + +```````````````````````````````` example +[foo]: +/url + +[foo] +. +

                  foo

                  +```````````````````````````````` + + +The link destination may not be omitted: + +```````````````````````````````` example +[foo]: + +[foo] +. +

                  [foo]:

                  +

                  [foo]

                  +```````````````````````````````` + + However, an empty link destination may be specified using + angle brackets: + +```````````````````````````````` example +[foo]: <> + +[foo] +. +

                  foo

                  +```````````````````````````````` + +The title must be separated from the link destination by +whitespace: + +```````````````````````````````` example +[foo]: (baz) + +[foo] +. +

                  [foo]: (baz)

                  +

                  [foo]

                  +```````````````````````````````` + + +Both title and destination can contain backslash escapes +and literal backslashes: + +```````````````````````````````` example +[foo]: /url\bar\*baz "foo\"bar\baz" + +[foo] +. +

                  foo

                  +```````````````````````````````` + + +A link can come before its corresponding definition: + +```````````````````````````````` example +[foo] + +[foo]: url +. +

                  foo

                  +```````````````````````````````` + + +If there are several matching definitions, the first one takes +precedence: + +```````````````````````````````` example +[foo] + +[foo]: first +[foo]: second +. +

                  foo

                  +```````````````````````````````` + + +As noted in the section on [Links], matching of labels is +case-insensitive (see [matches]). + +```````````````````````````````` example +[FOO]: /url + +[Foo] +. +

                  Foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[ΑΓΩ]: /φου + +[αγω] +. +

                  αγω

                  +```````````````````````````````` + + +Here is a link reference definition with no corresponding link. +It contributes nothing to the document. + +```````````````````````````````` example +[foo]: /url +. +```````````````````````````````` + + +Here is another one: + +```````````````````````````````` example +[ +foo +]: /url +bar +. +

                  bar

                  +```````````````````````````````` + + +This is not a link reference definition, because there are +[non-whitespace characters] after the title: + +```````````````````````````````` example +[foo]: /url "title" ok +. +

                  [foo]: /url "title" ok

                  +```````````````````````````````` + + +This is a link reference definition, but it has no title: + +```````````````````````````````` example +[foo]: /url +"title" ok +. +

                  "title" ok

                  +```````````````````````````````` + + +This is not a link reference definition, because it is indented +four spaces: + +```````````````````````````````` example + [foo]: /url "title" + +[foo] +. +
                  [foo]: /url "title"
                  +
                  +

                  [foo]

                  +```````````````````````````````` + + +This is not a link reference definition, because it occurs inside +a code block: + +```````````````````````````````` example +``` +[foo]: /url +``` + +[foo] +. +
                  [foo]: /url
                  +
                  +

                  [foo]

                  +```````````````````````````````` + + +A [link reference definition] cannot interrupt a paragraph. + +```````````````````````````````` example +Foo +[bar]: /baz + +[bar] +. +

                  Foo +[bar]: /baz

                  +

                  [bar]

                  +```````````````````````````````` + + +However, it can directly follow other block elements, such as headings +and thematic breaks, and it need not be followed by a blank line. + +```````````````````````````````` example +# [Foo] +[foo]: /url +> bar +. +

                  Foo

                  +
                  +

                  bar

                  +
                  +```````````````````````````````` + +```````````````````````````````` example +[foo]: /url +bar +=== +[foo] +. +

                  bar

                  +

                  foo

                  +```````````````````````````````` + +```````````````````````````````` example +[foo]: /url +=== +[foo] +. +

                  === +foo

                  +```````````````````````````````` + + +Several [link reference definitions] +can occur one after another, without intervening blank lines. + +```````````````````````````````` example +[foo]: /foo-url "foo" +[bar]: /bar-url + "bar" +[baz]: /baz-url + +[foo], +[bar], +[baz] +. +

                  foo, +bar, +baz

                  +```````````````````````````````` + + +[Link reference definitions] can occur +inside block containers, like lists and block quotations. They +affect the entire document, not just the container in which they +are defined: + +```````````````````````````````` example +[foo] + +> [foo]: /url +. +

                  foo

                  +
                  +
                  +```````````````````````````````` + + +Whether something is a [link reference definition] is +independent of whether the link reference it defines is +used in the document. Thus, for example, the following +document contains just a link reference definition, and +no visible content: + +```````````````````````````````` example +[foo]: /url +. +```````````````````````````````` + + +## Paragraphs + +A sequence of non-blank lines that cannot be interpreted as other +kinds of blocks forms a [paragraph](@). +The contents of the paragraph are the result of parsing the +paragraph's raw content as inlines. The paragraph's raw content +is formed by concatenating the lines and removing initial and final +[whitespace]. + +A simple example with two paragraphs: + +```````````````````````````````` example +aaa + +bbb +. +

                  aaa

                  +

                  bbb

                  +```````````````````````````````` + + +Paragraphs can contain multiple lines, but no blank lines: + +```````````````````````````````` example +aaa +bbb + +ccc +ddd +. +

                  aaa +bbb

                  +

                  ccc +ddd

                  +```````````````````````````````` + + +Multiple blank lines between paragraph have no effect: + +```````````````````````````````` example +aaa + + +bbb +. +

                  aaa

                  +

                  bbb

                  +```````````````````````````````` + + +Leading spaces are skipped: + +```````````````````````````````` example + aaa + bbb +. +

                  aaa +bbb

                  +```````````````````````````````` + + +Lines after the first may be indented any amount, since indented +code blocks cannot interrupt paragraphs. + +```````````````````````````````` example +aaa + bbb + ccc +. +

                  aaa +bbb +ccc

                  +```````````````````````````````` + + +However, the first line may be indented at most three spaces, +or an indented code block will be triggered: + +```````````````````````````````` example + aaa +bbb +. +

                  aaa +bbb

                  +```````````````````````````````` + + +```````````````````````````````` example + aaa +bbb +. +
                  aaa
                  +
                  +

                  bbb

                  +```````````````````````````````` + + +Final spaces are stripped before inline parsing, so a paragraph +that ends with two or more spaces will not end with a [hard line +break]: + +```````````````````````````````` example +aaa +bbb +. +

                  aaa
                  +bbb

                  +```````````````````````````````` + + +## Blank lines + +[Blank lines] between block-level elements are ignored, +except for the role they play in determining whether a [list] +is [tight] or [loose]. + +Blank lines at the beginning and end of the document are also ignored. + +```````````````````````````````` example + + +aaa + + +# aaa + + +. +

                  aaa

                  +

                  aaa

                  +```````````````````````````````` + + + +# Container blocks + +A [container block](#container-blocks) is a block that has other +blocks as its contents. There are two basic kinds of container blocks: +[block quotes] and [list items]. +[Lists] are meta-containers for [list items]. + +We define the syntax for container blocks recursively. The general +form of the definition is: + +> If X is a sequence of blocks, then the result of +> transforming X in such-and-such a way is a container of type Y +> with these blocks as its content. + +So, we explain what counts as a block quote or list item by explaining +how these can be *generated* from their contents. This should suffice +to define the syntax, although it does not give a recipe for *parsing* +these constructions. (A recipe is provided below in the section entitled +[A parsing strategy](#appendix-a-parsing-strategy).) + +## Block quotes + +A [block quote marker](@) +consists of 0-3 spaces of initial indent, plus (a) the character `>` together +with a following space, or (b) a single character `>` not followed by a space. + +The following rules define [block quotes]: + +1. **Basic case.** If a string of lines *Ls* constitute a sequence + of blocks *Bs*, then the result of prepending a [block quote + marker] to the beginning of each line in *Ls* + is a [block quote](#block-quotes) containing *Bs*. + +2. **Laziness.** If a string of lines *Ls* constitute a [block + quote](#block-quotes) with contents *Bs*, then the result of deleting + the initial [block quote marker] from one or + more lines in which the next [non-whitespace character] after the [block + quote marker] is [paragraph continuation + text] is a block quote with *Bs* as its content. + [Paragraph continuation text](@) is text + that will be parsed as part of the content of a paragraph, but does + not occur at the beginning of the paragraph. + +3. **Consecutiveness.** A document cannot contain two [block + quotes] in a row unless there is a [blank line] between them. + +Nothing else counts as a [block quote](#block-quotes). + +Here is a simple example: + +```````````````````````````````` example +> # Foo +> bar +> baz +. +
                  +

                  Foo

                  +

                  bar +baz

                  +
                  +```````````````````````````````` + + +The spaces after the `>` characters can be omitted: + +```````````````````````````````` example +># Foo +>bar +> baz +. +
                  +

                  Foo

                  +

                  bar +baz

                  +
                  +```````````````````````````````` + + +The `>` characters can be indented 1-3 spaces: + +```````````````````````````````` example + > # Foo + > bar + > baz +. +
                  +

                  Foo

                  +

                  bar +baz

                  +
                  +```````````````````````````````` + + +Four spaces gives us a code block: + +```````````````````````````````` example + > # Foo + > bar + > baz +. +
                  > # Foo
                  +> bar
                  +> baz
                  +
                  +```````````````````````````````` + + +The Laziness clause allows us to omit the `>` before +[paragraph continuation text]: + +```````````````````````````````` example +> # Foo +> bar +baz +. +
                  +

                  Foo

                  +

                  bar +baz

                  +
                  +```````````````````````````````` + + +A block quote can contain some lazy and some non-lazy +continuation lines: + +```````````````````````````````` example +> bar +baz +> foo +. +
                  +

                  bar +baz +foo

                  +
                  +```````````````````````````````` + + +Laziness only applies to lines that would have been continuations of +paragraphs had they been prepended with [block quote markers]. +For example, the `> ` cannot be omitted in the second line of + +``` markdown +> foo +> --- +``` + +without changing the meaning: + +```````````````````````````````` example +> foo +--- +. +
                  +

                  foo

                  +
                  +
                  +```````````````````````````````` + + +Similarly, if we omit the `> ` in the second line of + +``` markdown +> - foo +> - bar +``` + +then the block quote ends after the first line: + +```````````````````````````````` example +> - foo +- bar +. +
                  +
                    +
                  • foo
                  • +
                  +
                  +
                    +
                  • bar
                  • +
                  +```````````````````````````````` + + +For the same reason, we can't omit the `> ` in front of +subsequent lines of an indented or fenced code block: + +```````````````````````````````` example +> foo + bar +. +
                  +
                  foo
                  +
                  +
                  +
                  bar
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> ``` +foo +``` +. +
                  +
                  +
                  +

                  foo

                  +
                  +```````````````````````````````` + + +Note that in the following case, we have a [lazy +continuation line]: + +```````````````````````````````` example +> foo + - bar +. +
                  +

                  foo +- bar

                  +
                  +```````````````````````````````` + + +To see why, note that in + +```markdown +> foo +> - bar +``` + +the `- bar` is indented too far to start a list, and can't +be an indented code block because indented code blocks cannot +interrupt paragraphs, so it is [paragraph continuation text]. + +A block quote can be empty: + +```````````````````````````````` example +> +. +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> +> +> +. +
                  +
                  +```````````````````````````````` + + +A block quote can have initial or final blank lines: + +```````````````````````````````` example +> +> foo +> +. +
                  +

                  foo

                  +
                  +```````````````````````````````` + + +A blank line always separates block quotes: + +```````````````````````````````` example +> foo + +> bar +. +
                  +

                  foo

                  +
                  +
                  +

                  bar

                  +
                  +```````````````````````````````` + + +(Most current Markdown implementations, including John Gruber's +original `Markdown.pl`, will parse this example as a single block quote +with two paragraphs. But it seems better to allow the author to decide +whether two block quotes or one are wanted.) + +Consecutiveness means that if we put these block quotes together, +we get a single block quote: + +```````````````````````````````` example +> foo +> bar +. +
                  +

                  foo +bar

                  +
                  +```````````````````````````````` + + +To get a block quote with two paragraphs, use: + +```````````````````````````````` example +> foo +> +> bar +. +
                  +

                  foo

                  +

                  bar

                  +
                  +```````````````````````````````` + + +Block quotes can interrupt paragraphs: + +```````````````````````````````` example +foo +> bar +. +

                  foo

                  +
                  +

                  bar

                  +
                  +```````````````````````````````` + + +In general, blank lines are not needed before or after block +quotes: + +```````````````````````````````` example +> aaa +*** +> bbb +. +
                  +

                  aaa

                  +
                  +
                  +
                  +

                  bbb

                  +
                  +```````````````````````````````` + + +However, because of laziness, a blank line is needed between +a block quote and a following paragraph: + +```````````````````````````````` example +> bar +baz +. +
                  +

                  bar +baz

                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> bar + +baz +. +
                  +

                  bar

                  +
                  +

                  baz

                  +```````````````````````````````` + + +```````````````````````````````` example +> bar +> +baz +. +
                  +

                  bar

                  +
                  +

                  baz

                  +```````````````````````````````` + + +It is a consequence of the Laziness rule that any number +of initial `>`s may be omitted on a continuation line of a +nested block quote: + +```````````````````````````````` example +> > > foo +bar +. +
                  +
                  +
                  +

                  foo +bar

                  +
                  +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +>>> foo +> bar +>>baz +. +
                  +
                  +
                  +

                  foo +bar +baz

                  +
                  +
                  +
                  +```````````````````````````````` + + +When including an indented code block in a block quote, +remember that the [block quote marker] includes +both the `>` and a following space. So *five spaces* are needed after +the `>`: + +```````````````````````````````` example +> code + +> not code +. +
                  +
                  code
                  +
                  +
                  +
                  +

                  not code

                  +
                  +```````````````````````````````` + + + +## List items + +A [list marker](@) is a +[bullet list marker] or an [ordered list marker]. + +A [bullet list marker](@) +is a `-`, `+`, or `*` character. + +An [ordered list marker](@) +is a sequence of 1--9 arabic digits (`0-9`), followed by either a +`.` character or a `)` character. (The reason for the length +limit is that with 10 digits we start seeing integer overflows +in some browsers.) + +The following rules define [list items]: + +1. **Basic case.** If a sequence of lines *Ls* constitute a sequence of + blocks *Bs* starting with a [non-whitespace character], and *M* is a + list marker of width *W* followed by 1 ≤ *N* ≤ 4 spaces, then the result + of prepending *M* and the following spaces to the first line of + *Ls*, and indenting subsequent lines of *Ls* by *W + N* spaces, is a + list item with *Bs* as its contents. The type of the list item + (bullet or ordered) is determined by the type of its list marker. + If the list item is ordered, then it is also assigned a start + number, based on the ordered list marker. + + Exceptions: + + 1. When the first list item in a [list] interrupts + a paragraph---that is, when it starts on a line that would + otherwise count as [paragraph continuation text]---then (a) + the lines *Ls* must not begin with a blank line, and (b) if + the list item is ordered, the start number must be 1. + 2. If any line is a [thematic break][thematic breaks] then + that line is not a list item. + +For example, let *Ls* be the lines + +```````````````````````````````` example +A paragraph +with two lines. + + indented code + +> A block quote. +. +

                  A paragraph +with two lines.

                  +
                  indented code
                  +
                  +
                  +

                  A block quote.

                  +
                  +```````````````````````````````` + + +And let *M* be the marker `1.`, and *N* = 2. Then rule #1 says +that the following is an ordered list item with start number 1, +and the same contents as *Ls*: + +```````````````````````````````` example +1. A paragraph + with two lines. + + indented code + + > A block quote. +. +
                    +
                  1. +

                    A paragraph +with two lines.

                    +
                    indented code
                    +
                    +
                    +

                    A block quote.

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +The most important thing to notice is that the position of +the text after the list marker determines how much indentation +is needed in subsequent blocks in the list item. If the list +marker takes up two spaces, and there are three spaces between +the list marker and the next [non-whitespace character], then blocks +must be indented five spaces in order to fall under the list +item. + +Here are some examples showing how far content must be indented to be +put under the list item: + +```````````````````````````````` example +- one + + two +. +
                    +
                  • one
                  • +
                  +

                  two

                  +```````````````````````````````` + + +```````````````````````````````` example +- one + + two +. +
                    +
                  • +

                    one

                    +

                    two

                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example + - one + + two +. +
                    +
                  • one
                  • +
                  +
                   two
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + - one + + two +. +
                    +
                  • +

                    one

                    +

                    two

                    +
                  • +
                  +```````````````````````````````` + + +It is tempting to think of this in terms of columns: the continuation +blocks must be indented at least to the column of the first +[non-whitespace character] after the list marker. However, that is not quite right. +The spaces after the list marker determine how much relative indentation +is needed. Which column this indentation reaches will depend on +how the list item is embedded in other constructions, as shown by +this example: + +```````````````````````````````` example + > > 1. one +>> +>> two +. +
                  +
                  +
                    +
                  1. +

                    one

                    +

                    two

                    +
                  2. +
                  +
                  +
                  +```````````````````````````````` + + +Here `two` occurs in the same column as the list marker `1.`, +but is actually contained in the list item, because there is +sufficient indentation after the last containing blockquote marker. + +The converse is also possible. In the following example, the word `two` +occurs far to the right of the initial text of the list item, `one`, but +it is not considered part of the list item, because it is not indented +far enough past the blockquote marker: + +```````````````````````````````` example +>>- one +>> + > > two +. +
                  +
                  +
                    +
                  • one
                  • +
                  +

                  two

                  +
                  +
                  +```````````````````````````````` + + +Note that at least one space is needed between the list marker and +any following content, so these are not list items: + +```````````````````````````````` example +-one + +2.two +. +

                  -one

                  +

                  2.two

                  +```````````````````````````````` + + +A list item may contain blocks that are separated by more than +one blank line. + +```````````````````````````````` example +- foo + + + bar +. +
                    +
                  • +

                    foo

                    +

                    bar

                    +
                  • +
                  +```````````````````````````````` + + +A list item may contain any kind of block: + +```````````````````````````````` example +1. foo + + ``` + bar + ``` + + baz + + > bam +. +
                    +
                  1. +

                    foo

                    +
                    bar
                    +
                    +

                    baz

                    +
                    +

                    bam

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +A list item that contains an indented code block will preserve +empty lines within the code block verbatim. + +```````````````````````````````` example +- Foo + + bar + + + baz +. +
                    +
                  • +

                    Foo

                    +
                    bar
                    +
                    +
                    +baz
                    +
                    +
                  • +
                  +```````````````````````````````` + +Note that ordered list start numbers must be nine digits or less: + +```````````````````````````````` example +123456789. ok +. +
                    +
                  1. ok
                  2. +
                  +```````````````````````````````` + + +```````````````````````````````` example +1234567890. not ok +. +

                  1234567890. not ok

                  +```````````````````````````````` + + +A start number may begin with 0s: + +```````````````````````````````` example +0. ok +. +
                    +
                  1. ok
                  2. +
                  +```````````````````````````````` + + +```````````````````````````````` example +003. ok +. +
                    +
                  1. ok
                  2. +
                  +```````````````````````````````` + + +A start number may not be negative: + +```````````````````````````````` example +-1. not ok +. +

                  -1. not ok

                  +```````````````````````````````` + + + +2. **Item starting with indented code.** If a sequence of lines *Ls* + constitute a sequence of blocks *Bs* starting with an indented code + block, and *M* is a list marker of width *W* followed by + one space, then the result of prepending *M* and the following + space to the first line of *Ls*, and indenting subsequent lines of + *Ls* by *W + 1* spaces, is a list item with *Bs* as its contents. + If a line is empty, then it need not be indented. The type of the + list item (bullet or ordered) is determined by the type of its list + marker. If the list item is ordered, then it is also assigned a + start number, based on the ordered list marker. + +An indented code block will have to be indented four spaces beyond +the edge of the region where text will be included in the list item. +In the following case that is 6 spaces: + +```````````````````````````````` example +- foo + + bar +. +
                    +
                  • +

                    foo

                    +
                    bar
                    +
                    +
                  • +
                  +```````````````````````````````` + + +And in this case it is 11 spaces: + +```````````````````````````````` example + 10. foo + + bar +. +
                    +
                  1. +

                    foo

                    +
                    bar
                    +
                    +
                  2. +
                  +```````````````````````````````` + + +If the *first* block in the list item is an indented code block, +then by rule #2, the contents must be indented *one* space after the +list marker: + +```````````````````````````````` example + indented code + +paragraph + + more code +. +
                  indented code
                  +
                  +

                  paragraph

                  +
                  more code
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +1. indented code + + paragraph + + more code +. +
                    +
                  1. +
                    indented code
                    +
                    +

                    paragraph

                    +
                    more code
                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Note that an additional space indent is interpreted as space +inside the code block: + +```````````````````````````````` example +1. indented code + + paragraph + + more code +. +
                    +
                  1. +
                     indented code
                    +
                    +

                    paragraph

                    +
                    more code
                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Note that rules #1 and #2 only apply to two cases: (a) cases +in which the lines to be included in a list item begin with a +[non-whitespace character], and (b) cases in which +they begin with an indented code +block. In a case like the following, where the first block begins with +a three-space indent, the rules do not allow us to form a list item by +indenting the whole thing and prepending a list marker: + +```````````````````````````````` example + foo + +bar +. +

                  foo

                  +

                  bar

                  +```````````````````````````````` + + +```````````````````````````````` example +- foo + + bar +. +
                    +
                  • foo
                  • +
                  +

                  bar

                  +```````````````````````````````` + + +This is not a significant restriction, because when a block begins +with 1-3 spaces indent, the indentation can always be removed without +a change in interpretation, allowing rule #1 to be applied. So, in +the above case: + +```````````````````````````````` example +- foo + + bar +. +
                    +
                  • +

                    foo

                    +

                    bar

                    +
                  • +
                  +```````````````````````````````` + + +3. **Item starting with a blank line.** If a sequence of lines *Ls* + starting with a single [blank line] constitute a (possibly empty) + sequence of blocks *Bs*, not separated from each other by more than + one blank line, and *M* is a list marker of width *W*, + then the result of prepending *M* to the first line of *Ls*, and + indenting subsequent lines of *Ls* by *W + 1* spaces, is a list + item with *Bs* as its contents. + If a line is empty, then it need not be indented. The type of the + list item (bullet or ordered) is determined by the type of its list + marker. If the list item is ordered, then it is also assigned a + start number, based on the ordered list marker. + +Here are some list items that start with a blank line but are not empty: + +```````````````````````````````` example +- + foo +- + ``` + bar + ``` +- + baz +. +
                    +
                  • foo
                  • +
                  • +
                    bar
                    +
                    +
                  • +
                  • +
                    baz
                    +
                    +
                  • +
                  +```````````````````````````````` + +When the list item starts with a blank line, the number of spaces +following the list marker doesn't change the required indentation: + +```````````````````````````````` example +- + foo +. +
                    +
                  • foo
                  • +
                  +```````````````````````````````` + + +A list item can begin with at most one blank line. +In the following example, `foo` is not part of the list +item: + +```````````````````````````````` example +- + + foo +. +
                    +
                  • +
                  +

                  foo

                  +```````````````````````````````` + + +Here is an empty bullet list item: + +```````````````````````````````` example +- foo +- +- bar +. +
                    +
                  • foo
                  • +
                  • +
                  • bar
                  • +
                  +```````````````````````````````` + + +It does not matter whether there are spaces following the [list marker]: + +```````````````````````````````` example +- foo +- +- bar +. +
                    +
                  • foo
                  • +
                  • +
                  • bar
                  • +
                  +```````````````````````````````` + + +Here is an empty ordered list item: + +```````````````````````````````` example +1. foo +2. +3. bar +. +
                    +
                  1. foo
                  2. +
                  3. +
                  4. bar
                  5. +
                  +```````````````````````````````` + + +A list may start or end with an empty list item: + +```````````````````````````````` example +* +. +
                    +
                  • +
                  +```````````````````````````````` + +However, an empty list item cannot interrupt a paragraph: + +```````````````````````````````` example +foo +* + +foo +1. +. +

                  foo +*

                  +

                  foo +1.

                  +```````````````````````````````` + + +4. **Indentation.** If a sequence of lines *Ls* constitutes a list item + according to rule #1, #2, or #3, then the result of indenting each line + of *Ls* by 1-3 spaces (the same for each line) also constitutes a + list item with the same contents and attributes. If a line is + empty, then it need not be indented. + +Indented one space: + +```````````````````````````````` example + 1. A paragraph + with two lines. + + indented code + + > A block quote. +. +
                    +
                  1. +

                    A paragraph +with two lines.

                    +
                    indented code
                    +
                    +
                    +

                    A block quote.

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Indented two spaces: + +```````````````````````````````` example + 1. A paragraph + with two lines. + + indented code + + > A block quote. +. +
                    +
                  1. +

                    A paragraph +with two lines.

                    +
                    indented code
                    +
                    +
                    +

                    A block quote.

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Indented three spaces: + +```````````````````````````````` example + 1. A paragraph + with two lines. + + indented code + + > A block quote. +. +
                    +
                  1. +

                    A paragraph +with two lines.

                    +
                    indented code
                    +
                    +
                    +

                    A block quote.

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Four spaces indent gives a code block: + +```````````````````````````````` example + 1. A paragraph + with two lines. + + indented code + + > A block quote. +. +
                  1.  A paragraph
                  +    with two lines.
                  +
                  +        indented code
                  +
                  +    > A block quote.
                  +
                  +```````````````````````````````` + + + +5. **Laziness.** If a string of lines *Ls* constitute a [list + item](#list-items) with contents *Bs*, then the result of deleting + some or all of the indentation from one or more lines in which the + next [non-whitespace character] after the indentation is + [paragraph continuation text] is a + list item with the same contents and attributes. The unindented + lines are called + [lazy continuation line](@)s. + +Here is an example with [lazy continuation lines]: + +```````````````````````````````` example + 1. A paragraph +with two lines. + + indented code + + > A block quote. +. +
                    +
                  1. +

                    A paragraph +with two lines.

                    +
                    indented code
                    +
                    +
                    +

                    A block quote.

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Indentation can be partially deleted: + +```````````````````````````````` example + 1. A paragraph + with two lines. +. +
                    +
                  1. A paragraph +with two lines.
                  2. +
                  +```````````````````````````````` + + +These examples show how laziness can work in nested structures: + +```````````````````````````````` example +> 1. > Blockquote +continued here. +. +
                  +
                    +
                  1. +
                    +

                    Blockquote +continued here.

                    +
                    +
                  2. +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> 1. > Blockquote +> continued here. +. +
                  +
                    +
                  1. +
                    +

                    Blockquote +continued here.

                    +
                    +
                  2. +
                  +
                  +```````````````````````````````` + + + +6. **That's all.** Nothing that is not counted as a list item by rules + #1--5 counts as a [list item](#list-items). + +The rules for sublists follow from the general rules +[above][List items]. A sublist must be indented the same number +of spaces a paragraph would need to be in order to be included +in the list item. + +So, in this case we need two spaces indent: + +```````````````````````````````` example +- foo + - bar + - baz + - boo +. +
                    +
                  • foo +
                      +
                    • bar +
                        +
                      • baz +
                          +
                        • boo
                        • +
                        +
                      • +
                      +
                    • +
                    +
                  • +
                  +```````````````````````````````` + + +One is not enough: + +```````````````````````````````` example +- foo + - bar + - baz + - boo +. +
                    +
                  • foo
                  • +
                  • bar
                  • +
                  • baz
                  • +
                  • boo
                  • +
                  +```````````````````````````````` + + +Here we need four, because the list marker is wider: + +```````````````````````````````` example +10) foo + - bar +. +
                    +
                  1. foo +
                      +
                    • bar
                    • +
                    +
                  2. +
                  +```````````````````````````````` + + +Three is not enough: + +```````````````````````````````` example +10) foo + - bar +. +
                    +
                  1. foo
                  2. +
                  +
                    +
                  • bar
                  • +
                  +```````````````````````````````` + + +A list may be the first block in a list item: + +```````````````````````````````` example +- - foo +. +
                    +
                  • +
                      +
                    • foo
                    • +
                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +1. - 2. foo +. +
                    +
                  1. +
                      +
                    • +
                        +
                      1. foo
                      2. +
                      +
                    • +
                    +
                  2. +
                  +```````````````````````````````` + + +A list item can contain a heading: + +```````````````````````````````` example +- # Foo +- Bar + --- + baz +. +
                    +
                  • +

                    Foo

                    +
                  • +
                  • +

                    Bar

                    +baz
                  • +
                  +```````````````````````````````` + + +### Motivation + +John Gruber's Markdown spec says the following about list items: + +1. "List markers typically start at the left margin, but may be indented + by up to three spaces. List markers must be followed by one or more + spaces or a tab." + +2. "To make lists look nice, you can wrap items with hanging indents.... + But if you don't want to, you don't have to." + +3. "List items may consist of multiple paragraphs. Each subsequent + paragraph in a list item must be indented by either 4 spaces or one + tab." + +4. "It looks nice if you indent every line of the subsequent paragraphs, + but here again, Markdown will allow you to be lazy." + +5. "To put a blockquote within a list item, the blockquote's `>` + delimiters need to be indented." + +6. "To put a code block within a list item, the code block needs to be + indented twice — 8 spaces or two tabs." + +These rules specify that a paragraph under a list item must be indented +four spaces (presumably, from the left margin, rather than the start of +the list marker, but this is not said), and that code under a list item +must be indented eight spaces instead of the usual four. They also say +that a block quote must be indented, but not by how much; however, the +example given has four spaces indentation. Although nothing is said +about other kinds of block-level content, it is certainly reasonable to +infer that *all* block elements under a list item, including other +lists, must be indented four spaces. This principle has been called the +*four-space rule*. + +The four-space rule is clear and principled, and if the reference +implementation `Markdown.pl` had followed it, it probably would have +become the standard. However, `Markdown.pl` allowed paragraphs and +sublists to start with only two spaces indentation, at least on the +outer level. Worse, its behavior was inconsistent: a sublist of an +outer-level list needed two spaces indentation, but a sublist of this +sublist needed three spaces. It is not surprising, then, that different +implementations of Markdown have developed very different rules for +determining what comes under a list item. (Pandoc and python-Markdown, +for example, stuck with Gruber's syntax description and the four-space +rule, while discount, redcarpet, marked, PHP Markdown, and others +followed `Markdown.pl`'s behavior more closely.) + +Unfortunately, given the divergences between implementations, there +is no way to give a spec for list items that will be guaranteed not +to break any existing documents. However, the spec given here should +correctly handle lists formatted with either the four-space rule or +the more forgiving `Markdown.pl` behavior, provided they are laid out +in a way that is natural for a human to read. + +The strategy here is to let the width and indentation of the list marker +determine the indentation necessary for blocks to fall under the list +item, rather than having a fixed and arbitrary number. The writer can +think of the body of the list item as a unit which gets indented to the +right enough to fit the list marker (and any indentation on the list +marker). (The laziness rule, #5, then allows continuation lines to be +unindented if needed.) + +This rule is superior, we claim, to any rule requiring a fixed level of +indentation from the margin. The four-space rule is clear but +unnatural. It is quite unintuitive that + +``` markdown +- foo + + bar + + - baz +``` + +should be parsed as two lists with an intervening paragraph, + +``` html +
                    +
                  • foo
                  • +
                  +

                  bar

                  +
                    +
                  • baz
                  • +
                  +``` + +as the four-space rule demands, rather than a single list, + +``` html +
                    +
                  • +

                    foo

                    +

                    bar

                    +
                      +
                    • baz
                    • +
                    +
                  • +
                  +``` + +The choice of four spaces is arbitrary. It can be learned, but it is +not likely to be guessed, and it trips up beginners regularly. + +Would it help to adopt a two-space rule? The problem is that such +a rule, together with the rule allowing 1--3 spaces indentation of the +initial list marker, allows text that is indented *less than* the +original list marker to be included in the list item. For example, +`Markdown.pl` parses + +``` markdown + - one + + two +``` + +as a single list item, with `two` a continuation paragraph: + +``` html +
                    +
                  • +

                    one

                    +

                    two

                    +
                  • +
                  +``` + +and similarly + +``` markdown +> - one +> +> two +``` + +as + +``` html +
                  +
                    +
                  • +

                    one

                    +

                    two

                    +
                  • +
                  +
                  +``` + +This is extremely unintuitive. + +Rather than requiring a fixed indent from the margin, we could require +a fixed indent (say, two spaces, or even one space) from the list marker (which +may itself be indented). This proposal would remove the last anomaly +discussed. Unlike the spec presented above, it would count the following +as a list item with a subparagraph, even though the paragraph `bar` +is not indented as far as the first paragraph `foo`: + +``` markdown + 10. foo + + bar +``` + +Arguably this text does read like a list item with `bar` as a subparagraph, +which may count in favor of the proposal. However, on this proposal indented +code would have to be indented six spaces after the list marker. And this +would break a lot of existing Markdown, which has the pattern: + +``` markdown +1. foo + + indented code +``` + +where the code is indented eight spaces. The spec above, by contrast, will +parse this text as expected, since the code block's indentation is measured +from the beginning of `foo`. + +The one case that needs special treatment is a list item that *starts* +with indented code. How much indentation is required in that case, since +we don't have a "first paragraph" to measure from? Rule #2 simply stipulates +that in such cases, we require one space indentation from the list marker +(and then the normal four spaces for the indented code). This will match the +four-space rule in cases where the list marker plus its initial indentation +takes four spaces (a common case), but diverge in other cases. + +## Lists + +A [list](@) is a sequence of one or more +list items [of the same type]. The list items +may be separated by any number of blank lines. + +Two list items are [of the same type](@) +if they begin with a [list marker] of the same type. +Two list markers are of the +same type if (a) they are bullet list markers using the same character +(`-`, `+`, or `*`) or (b) they are ordered list numbers with the same +delimiter (either `.` or `)`). + +A list is an [ordered list](@) +if its constituent list items begin with +[ordered list markers], and a +[bullet list](@) if its constituent list +items begin with [bullet list markers]. + +The [start number](@) +of an [ordered list] is determined by the list number of +its initial list item. The numbers of subsequent list items are +disregarded. + +A list is [loose](@) if any of its constituent +list items are separated by blank lines, or if any of its constituent +list items directly contain two block-level elements with a blank line +between them. Otherwise a list is [tight](@). +(The difference in HTML output is that paragraphs in a loose list are +wrapped in `

                  ` tags, while paragraphs in a tight list are not.) + +Changing the bullet or ordered list delimiter starts a new list: + +```````````````````````````````` example +- foo +- bar ++ baz +. +

                    +
                  • foo
                  • +
                  • bar
                  • +
                  +
                    +
                  • baz
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +1. foo +2. bar +3) baz +. +
                    +
                  1. foo
                  2. +
                  3. bar
                  4. +
                  +
                    +
                  1. baz
                  2. +
                  +```````````````````````````````` + + +In CommonMark, a list can interrupt a paragraph. That is, +no blank line is needed to separate a paragraph from a following +list: + +```````````````````````````````` example +Foo +- bar +- baz +. +

                  Foo

                  +
                    +
                  • bar
                  • +
                  • baz
                  • +
                  +```````````````````````````````` + +`Markdown.pl` does not allow this, through fear of triggering a list +via a numeral in a hard-wrapped line: + +``` markdown +The number of windows in my house is +14. The number of doors is 6. +``` + +Oddly, though, `Markdown.pl` *does* allow a blockquote to +interrupt a paragraph, even though the same considerations might +apply. + +In CommonMark, we do allow lists to interrupt paragraphs, for +two reasons. First, it is natural and not uncommon for people +to start lists without blank lines: + +``` markdown +I need to buy +- new shoes +- a coat +- a plane ticket +``` + +Second, we are attracted to a + +> [principle of uniformity](@): +> if a chunk of text has a certain +> meaning, it will continue to have the same meaning when put into a +> container block (such as a list item or blockquote). + +(Indeed, the spec for [list items] and [block quotes] presupposes +this principle.) This principle implies that if + +``` markdown + * I need to buy + - new shoes + - a coat + - a plane ticket +``` + +is a list item containing a paragraph followed by a nested sublist, +as all Markdown implementations agree it is (though the paragraph +may be rendered without `

                  ` tags, since the list is "tight"), +then + +``` markdown +I need to buy +- new shoes +- a coat +- a plane ticket +``` + +by itself should be a paragraph followed by a nested sublist. + +Since it is well established Markdown practice to allow lists to +interrupt paragraphs inside list items, the [principle of +uniformity] requires us to allow this outside list items as +well. ([reStructuredText](http://docutils.sourceforge.net/rst.html) +takes a different approach, requiring blank lines before lists +even inside other list items.) + +In order to solve of unwanted lists in paragraphs with +hard-wrapped numerals, we allow only lists starting with `1` to +interrupt paragraphs. Thus, + +```````````````````````````````` example +The number of windows in my house is +14. The number of doors is 6. +. +

                  The number of windows in my house is +14. The number of doors is 6.

                  +```````````````````````````````` + +We may still get an unintended result in cases like + +```````````````````````````````` example +The number of windows in my house is +1. The number of doors is 6. +. +

                  The number of windows in my house is

                  +
                    +
                  1. The number of doors is 6.
                  2. +
                  +```````````````````````````````` + +but this rule should prevent most spurious list captures. + +There can be any number of blank lines between items: + +```````````````````````````````` example +- foo + +- bar + + +- baz +. +
                    +
                  • +

                    foo

                    +
                  • +
                  • +

                    bar

                    +
                  • +
                  • +

                    baz

                    +
                  • +
                  +```````````````````````````````` + +```````````````````````````````` example +- foo + - bar + - baz + + + bim +. +
                    +
                  • foo +
                      +
                    • bar +
                        +
                      • +

                        baz

                        +

                        bim

                        +
                      • +
                      +
                    • +
                    +
                  • +
                  +```````````````````````````````` + + +To separate consecutive lists of the same type, or to separate a +list from an indented code block that would otherwise be parsed +as a subparagraph of the final list item, you can insert a blank HTML +comment: + +```````````````````````````````` example +- foo +- bar + + + +- baz +- bim +. +
                    +
                  • foo
                  • +
                  • bar
                  • +
                  + +
                    +
                  • baz
                  • +
                  • bim
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +- foo + + notcode + +- foo + + + + code +. +
                    +
                  • +

                    foo

                    +

                    notcode

                    +
                  • +
                  • +

                    foo

                    +
                  • +
                  + +
                  code
                  +
                  +```````````````````````````````` + + +List items need not be indented to the same level. The following +list items will be treated as items at the same list level, +since none is indented enough to belong to the previous list +item: + +```````````````````````````````` example +- a + - b + - c + - d + - e + - f +- g +. +
                    +
                  • a
                  • +
                  • b
                  • +
                  • c
                  • +
                  • d
                  • +
                  • e
                  • +
                  • f
                  • +
                  • g
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +1. a + + 2. b + + 3. c +. +
                    +
                  1. +

                    a

                    +
                  2. +
                  3. +

                    b

                    +
                  4. +
                  5. +

                    c

                    +
                  6. +
                  +```````````````````````````````` + +Note, however, that list items may not be indented more than +three spaces. Here `- e` is treated as a paragraph continuation +line, because it is indented more than three spaces: + +```````````````````````````````` example +- a + - b + - c + - d + - e +. +
                    +
                  • a
                  • +
                  • b
                  • +
                  • c
                  • +
                  • d +- e
                  • +
                  +```````````````````````````````` + +And here, `3. c` is treated as in indented code block, +because it is indented four spaces and preceded by a +blank line. + +```````````````````````````````` example +1. a + + 2. b + + 3. c +. +
                    +
                  1. +

                    a

                    +
                  2. +
                  3. +

                    b

                    +
                  4. +
                  +
                  3. c
                  +
                  +```````````````````````````````` + + +This is a loose list, because there is a blank line between +two of the list items: + +```````````````````````````````` example +- a +- b + +- c +. +
                    +
                  • +

                    a

                    +
                  • +
                  • +

                    b

                    +
                  • +
                  • +

                    c

                    +
                  • +
                  +```````````````````````````````` + + +So is this, with a empty second item: + +```````````````````````````````` example +* a +* + +* c +. +
                    +
                  • +

                    a

                    +
                  • +
                  • +
                  • +

                    c

                    +
                  • +
                  +```````````````````````````````` + + +These are loose lists, even though there is no space between the items, +because one of the items directly contains two block-level elements +with a blank line between them: + +```````````````````````````````` example +- a +- b + + c +- d +. +
                    +
                  • +

                    a

                    +
                  • +
                  • +

                    b

                    +

                    c

                    +
                  • +
                  • +

                    d

                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +- a +- b + + [ref]: /url +- d +. +
                    +
                  • +

                    a

                    +
                  • +
                  • +

                    b

                    +
                  • +
                  • +

                    d

                    +
                  • +
                  +```````````````````````````````` + + +This is a tight list, because the blank lines are in a code block: + +```````````````````````````````` example +- a +- ``` + b + + + ``` +- c +. +
                    +
                  • a
                  • +
                  • +
                    b
                    +
                    +
                    +
                    +
                  • +
                  • c
                  • +
                  +```````````````````````````````` + + +This is a tight list, because the blank line is between two +paragraphs of a sublist. So the sublist is loose while +the outer list is tight: + +```````````````````````````````` example +- a + - b + + c +- d +. +
                    +
                  • a +
                      +
                    • +

                      b

                      +

                      c

                      +
                    • +
                    +
                  • +
                  • d
                  • +
                  +```````````````````````````````` + + +This is a tight list, because the blank line is inside the +block quote: + +```````````````````````````````` example +* a + > b + > +* c +. +
                    +
                  • a +
                    +

                    b

                    +
                    +
                  • +
                  • c
                  • +
                  +```````````````````````````````` + + +This list is tight, because the consecutive block elements +are not separated by blank lines: + +```````````````````````````````` example +- a + > b + ``` + c + ``` +- d +. +
                    +
                  • a +
                    +

                    b

                    +
                    +
                    c
                    +
                    +
                  • +
                  • d
                  • +
                  +```````````````````````````````` + + +A single-paragraph list is tight: + +```````````````````````````````` example +- a +. +
                    +
                  • a
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +- a + - b +. +
                    +
                  • a +
                      +
                    • b
                    • +
                    +
                  • +
                  +```````````````````````````````` + + +This list is loose, because of the blank line between the +two block elements in the list item: + +```````````````````````````````` example +1. ``` + foo + ``` + + bar +. +
                    +
                  1. +
                    foo
                    +
                    +

                    bar

                    +
                  2. +
                  +```````````````````````````````` + + +Here the outer list is loose, the inner list tight: + +```````````````````````````````` example +* foo + * bar + + baz +. +
                    +
                  • +

                    foo

                    +
                      +
                    • bar
                    • +
                    +

                    baz

                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +- a + - b + - c + +- d + - e + - f +. +
                    +
                  • +

                    a

                    +
                      +
                    • b
                    • +
                    • c
                    • +
                    +
                  • +
                  • +

                    d

                    +
                      +
                    • e
                    • +
                    • f
                    • +
                    +
                  • +
                  +```````````````````````````````` + + +# Inlines + +Inlines are parsed sequentially from the beginning of the character +stream to the end (left to right, in left-to-right languages). +Thus, for example, in + +```````````````````````````````` example +`hi`lo` +. +

                  hilo`

                  +```````````````````````````````` + +`hi` is parsed as code, leaving the backtick at the end as a literal +backtick. + + +## Backslash escapes + +Any ASCII punctuation character may be backslash-escaped: + +```````````````````````````````` example +\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^\_\`\{\|\}\~ +. +

                  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

                  +```````````````````````````````` + + +Backslashes before other characters are treated as literal +backslashes: + +```````````````````````````````` example +\→\A\a\ \3\φ\« +. +

                  \→\A\a\ \3\φ\«

                  +```````````````````````````````` + + +Escaped characters are treated as regular characters and do +not have their usual Markdown meanings: + +```````````````````````````````` example +\*not emphasized* +\
                  not a tag +\[not a link](/foo) +\`not code` +1\. not a list +\* not a list +\# not a heading +\[foo]: /url "not a reference" +\ö not a character entity +. +

                  *not emphasized* +<br/> not a tag +[not a link](/foo) +`not code` +1. not a list +* not a list +# not a heading +[foo]: /url "not a reference" +&ouml; not a character entity

                  +```````````````````````````````` + + +If a backslash is itself escaped, the following character is not: + +```````````````````````````````` example +\\*emphasis* +. +

                  \emphasis

                  +```````````````````````````````` + + +A backslash at the end of the line is a [hard line break]: + +```````````````````````````````` example +foo\ +bar +. +

                  foo
                  +bar

                  +```````````````````````````````` + + +Backslash escapes do not work in code blocks, code spans, autolinks, or +raw HTML: + +```````````````````````````````` example +`` \[\` `` +. +

                  \[\`

                  +```````````````````````````````` + + +```````````````````````````````` example + \[\] +. +
                  \[\]
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +~~~ +\[\] +~~~ +. +
                  \[\]
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  http://example.com?find=\*

                  +```````````````````````````````` + + +```````````````````````````````` example + +. + +```````````````````````````````` + + +But they work in all other contexts, including URLs and link titles, +link references, and [info strings] in [fenced code blocks]: + +```````````````````````````````` example +[foo](/bar\* "ti\*tle") +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo] + +[foo]: /bar\* "ti\*tle" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +``` foo\+bar +foo +``` +. +
                  foo
                  +
                  +```````````````````````````````` + + + +## Entity and numeric character references + +Valid HTML entity references and numeric character references +can be used in place of the corresponding Unicode character, +with the following exceptions: + +- Entity and character references are not recognized in code + blocks and code spans. + +- Entity and character references cannot stand in place of + special characters that define structural elements in + CommonMark. For example, although `*` can be used + in place of a literal `*` character, `*` cannot replace + `*` in emphasis delimiters, bullet list markers, or thematic + breaks. + +Conforming CommonMark parsers need not store information about +whether a particular character was represented in the source +using a Unicode character or an entity reference. + +[Entity references](@) consist of `&` + any of the valid +HTML5 entity names + `;`. The +document +is used as an authoritative source for the valid entity +references and their corresponding code points. + +```````````````````````````````` example +  & © Æ Ď +¾ ℋ ⅆ +∲ ≧̸ +. +

                    & © Æ Ď +¾ ℋ ⅆ +∲ ≧̸

                  +```````````````````````````````` + + +[Decimal numeric character +references](@) +consist of `&#` + a string of 1--7 arabic digits + `;`. A +numeric character reference is parsed as the corresponding +Unicode character. Invalid Unicode code points will be replaced by +the REPLACEMENT CHARACTER (`U+FFFD`). For security reasons, +the code point `U+0000` will also be replaced by `U+FFFD`. + +```````````````````````````````` example +# Ӓ Ϡ � +. +

                  # Ӓ Ϡ �

                  +```````````````````````````````` + + +[Hexadecimal numeric character +references](@) consist of `&#` + +either `X` or `x` + a string of 1-6 hexadecimal digits + `;`. +They too are parsed as the corresponding Unicode character (this +time specified with a hexadecimal numeral instead of decimal). + +```````````````````````````````` example +" ആ ಫ +. +

                  " ആ ಫ

                  +```````````````````````````````` + + +Here are some nonentities: + +```````````````````````````````` example +  &x; &#; &#x; +� +&#abcdef0; +&ThisIsNotDefined; &hi?; +. +

                  &nbsp &x; &#; &#x; +&#87654321; +&#abcdef0; +&ThisIsNotDefined; &hi?;

                  +```````````````````````````````` + + +Although HTML5 does accept some entity references +without a trailing semicolon (such as `©`), these are not +recognized here, because it makes the grammar too ambiguous: + +```````````````````````````````` example +© +. +

                  &copy

                  +```````````````````````````````` + + +Strings that are not on the list of HTML5 named entities are not +recognized as entity references either: + +```````````````````````````````` example +&MadeUpEntity; +. +

                  &MadeUpEntity;

                  +```````````````````````````````` + + +Entity and numeric character references are recognized in any +context besides code spans or code blocks, including +URLs, [link titles], and [fenced code block][] [info strings]: + +```````````````````````````````` example + +. + +```````````````````````````````` + + +```````````````````````````````` example +[foo](/föö "föö") +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo] + +[foo]: /föö "föö" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +``` föö +foo +``` +. +
                  foo
                  +
                  +```````````````````````````````` + + +Entity and numeric character references are treated as literal +text in code spans and code blocks: + +```````````````````````````````` example +`föö` +. +

                  f&ouml;&ouml;

                  +```````````````````````````````` + + +```````````````````````````````` example + föfö +. +
                  f&ouml;f&ouml;
                  +
                  +```````````````````````````````` + + +Entity and numeric character references cannot be used +in place of symbols indicating structure in CommonMark +documents. + +```````````````````````````````` example +*foo* +*foo* +. +

                  *foo* +foo

                  +```````````````````````````````` + +```````````````````````````````` example +* foo + +* foo +. +

                  * foo

                  +
                    +
                  • foo
                  • +
                  +```````````````````````````````` + +```````````````````````````````` example +foo bar +. +

                  foo + +bar

                  +```````````````````````````````` + +```````````````````````````````` example + foo +. +

                  →foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[a](url "tit") +. +

                  [a](url "tit")

                  +```````````````````````````````` + + +## Code spans + +A [backtick string](@) +is a string of one or more backtick characters (`` ` ``) that is neither +preceded nor followed by a backtick. + +A [code span](@) begins with a backtick string and ends with +a backtick string of equal length. The contents of the code span are +the characters between the two backtick strings, normalized in the +following ways: + +- First, [line endings] are converted to [spaces]. +- If the resulting string both begins *and* ends with a [space] + character, but does not consist entirely of [space] + characters, a single [space] character is removed from the + front and back. This allows you to include code that begins + or ends with backtick characters, which must be separated by + whitespace from the opening or closing backtick strings. + +This is a simple code span: + +```````````````````````````````` example +`foo` +. +

                  foo

                  +```````````````````````````````` + + +Here two backticks are used, because the code contains a backtick. +This example also illustrates stripping of a single leading and +trailing space: + +```````````````````````````````` example +`` foo ` bar `` +. +

                  foo ` bar

                  +```````````````````````````````` + + +This example shows the motivation for stripping leading and trailing +spaces: + +```````````````````````````````` example +` `` ` +. +

                  ``

                  +```````````````````````````````` + +Note that only *one* space is stripped: + +```````````````````````````````` example +` `` ` +. +

                  ``

                  +```````````````````````````````` + +The stripping only happens if the space is on both +sides of the string: + +```````````````````````````````` example +` a` +. +

                  a

                  +```````````````````````````````` + +Only [spaces], and not [unicode whitespace] in general, are +stripped in this way: + +```````````````````````````````` example +` b ` +. +

                   b 

                  +```````````````````````````````` + +No stripping occurs if the code span contains only spaces: + +```````````````````````````````` example +` ` +` ` +. +

                    +

                  +```````````````````````````````` + + +[Line endings] are treated like spaces: + +```````````````````````````````` example +`` +foo +bar +baz +`` +. +

                  foo bar baz

                  +```````````````````````````````` + +```````````````````````````````` example +`` +foo +`` +. +

                  foo

                  +```````````````````````````````` + + +Interior spaces are not collapsed: + +```````````````````````````````` example +`foo bar +baz` +. +

                  foo bar baz

                  +```````````````````````````````` + +Note that browsers will typically collapse consecutive spaces +when rendering `` elements, so it is recommended that +the following CSS be used: + + code{white-space: pre-wrap;} + + +Note that backslash escapes do not work in code spans. All backslashes +are treated literally: + +```````````````````````````````` example +`foo\`bar` +. +

                  foo\bar`

                  +```````````````````````````````` + + +Backslash escapes are never needed, because one can always choose a +string of *n* backtick characters as delimiters, where the code does +not contain any strings of exactly *n* backtick characters. + +```````````````````````````````` example +``foo`bar`` +. +

                  foo`bar

                  +```````````````````````````````` + +```````````````````````````````` example +` foo `` bar ` +. +

                  foo `` bar

                  +```````````````````````````````` + + +Code span backticks have higher precedence than any other inline +constructs except HTML tags and autolinks. Thus, for example, this is +not parsed as emphasized text, since the second `*` is part of a code +span: + +```````````````````````````````` example +*foo`*` +. +

                  *foo*

                  +```````````````````````````````` + + +And this is not parsed as a link: + +```````````````````````````````` example +[not a `link](/foo`) +. +

                  [not a link](/foo)

                  +```````````````````````````````` + + +Code spans, HTML tags, and autolinks have the same precedence. +Thus, this is code: + +```````````````````````````````` example +`` +. +

                  <a href="">`

                  +```````````````````````````````` + + +But this is an HTML tag: + +```````````````````````````````` example +
                  ` +. +

                  `

                  +```````````````````````````````` + + +And this is code: + +```````````````````````````````` example +`` +. +

                  <http://foo.bar.baz>`

                  +```````````````````````````````` + + +But this is an autolink: + +```````````````````````````````` example +` +. +

                  http://foo.bar.`baz`

                  +```````````````````````````````` + + +When a backtick string is not closed by a matching backtick string, +we just have literal backticks: + +```````````````````````````````` example +```foo`` +. +

                  ```foo``

                  +```````````````````````````````` + + +```````````````````````````````` example +`foo +. +

                  `foo

                  +```````````````````````````````` + +The following case also illustrates the need for opening and +closing backtick strings to be equal in length: + +```````````````````````````````` example +`foo``bar`` +. +

                  `foobar

                  +```````````````````````````````` + + +## Emphasis and strong emphasis + +John Gruber's original [Markdown syntax +description](http://daringfireball.net/projects/markdown/syntax#em) says: + +> Markdown treats asterisks (`*`) and underscores (`_`) as indicators of +> emphasis. Text wrapped with one `*` or `_` will be wrapped with an HTML +> `` tag; double `*`'s or `_`'s will be wrapped with an HTML `` +> tag. + +This is enough for most users, but these rules leave much undecided, +especially when it comes to nested emphasis. The original +`Markdown.pl` test suite makes it clear that triple `***` and +`___` delimiters can be used for strong emphasis, and most +implementations have also allowed the following patterns: + +``` markdown +***strong emph*** +***strong** in emph* +***emph* in strong** +**in strong *emph*** +*in emph **strong*** +``` + +The following patterns are less widely supported, but the intent +is clear and they are useful (especially in contexts like bibliography +entries): + +``` markdown +*emph *with emph* in it* +**strong **with strong** in it** +``` + +Many implementations have also restricted intraword emphasis to +the `*` forms, to avoid unwanted emphasis in words containing +internal underscores. (It is best practice to put these in code +spans, but users often do not.) + +``` markdown +internal emphasis: foo*bar*baz +no emphasis: foo_bar_baz +``` + +The rules given below capture all of these patterns, while allowing +for efficient parsing strategies that do not backtrack. + +First, some definitions. A [delimiter run](@) is either +a sequence of one or more `*` characters that is not preceded or +followed by a non-backslash-escaped `*` character, or a sequence +of one or more `_` characters that is not preceded or followed by +a non-backslash-escaped `_` character. + +A [left-flanking delimiter run](@) is +a [delimiter run] that is (1) not followed by [Unicode whitespace], +and either (2a) not followed by a [punctuation character], or +(2b) followed by a [punctuation character] and +preceded by [Unicode whitespace] or a [punctuation character]. +For purposes of this definition, the beginning and the end of +the line count as Unicode whitespace. + +A [right-flanking delimiter run](@) is +a [delimiter run] that is (1) not preceded by [Unicode whitespace], +and either (2a) not preceded by a [punctuation character], or +(2b) preceded by a [punctuation character] and +followed by [Unicode whitespace] or a [punctuation character]. +For purposes of this definition, the beginning and the end of +the line count as Unicode whitespace. + +Here are some examples of delimiter runs. + + - left-flanking but not right-flanking: + + ``` + ***abc + _abc + **"abc" + _"abc" + ``` + + - right-flanking but not left-flanking: + + ``` + abc*** + abc_ + "abc"** + "abc"_ + ``` + + - Both left and right-flanking: + + ``` + abc***def + "abc"_"def" + ``` + + - Neither left nor right-flanking: + + ``` + abc *** def + a _ b + ``` + +(The idea of distinguishing left-flanking and right-flanking +delimiter runs based on the character before and the character +after comes from Roopesh Chander's +[vfmd](http://www.vfmd.org/vfmd-spec/specification/#procedure-for-identifying-emphasis-tags). +vfmd uses the terminology "emphasis indicator string" instead of "delimiter +run," and its rules for distinguishing left- and right-flanking runs +are a bit more complex than the ones given here.) + +The following rules define emphasis and strong emphasis: + +1. A single `*` character [can open emphasis](@) + iff (if and only if) it is part of a [left-flanking delimiter run]. + +2. A single `_` character [can open emphasis] iff + it is part of a [left-flanking delimiter run] + and either (a) not part of a [right-flanking delimiter run] + or (b) part of a [right-flanking delimiter run] + preceded by punctuation. + +3. A single `*` character [can close emphasis](@) + iff it is part of a [right-flanking delimiter run]. + +4. A single `_` character [can close emphasis] iff + it is part of a [right-flanking delimiter run] + and either (a) not part of a [left-flanking delimiter run] + or (b) part of a [left-flanking delimiter run] + followed by punctuation. + +5. A double `**` [can open strong emphasis](@) + iff it is part of a [left-flanking delimiter run]. + +6. A double `__` [can open strong emphasis] iff + it is part of a [left-flanking delimiter run] + and either (a) not part of a [right-flanking delimiter run] + or (b) part of a [right-flanking delimiter run] + preceded by punctuation. + +7. A double `**` [can close strong emphasis](@) + iff it is part of a [right-flanking delimiter run]. + +8. A double `__` [can close strong emphasis] iff + it is part of a [right-flanking delimiter run] + and either (a) not part of a [left-flanking delimiter run] + or (b) part of a [left-flanking delimiter run] + followed by punctuation. + +9. Emphasis begins with a delimiter that [can open emphasis] and ends + with a delimiter that [can close emphasis], and that uses the same + character (`_` or `*`) as the opening delimiter. The + opening and closing delimiters must belong to separate + [delimiter runs]. If one of the delimiters can both + open and close emphasis, then the sum of the lengths of the + delimiter runs containing the opening and closing delimiters + must not be a multiple of 3 unless both lengths are + multiples of 3. + +10. Strong emphasis begins with a delimiter that + [can open strong emphasis] and ends with a delimiter that + [can close strong emphasis], and that uses the same character + (`_` or `*`) as the opening delimiter. The + opening and closing delimiters must belong to separate + [delimiter runs]. If one of the delimiters can both open + and close strong emphasis, then the sum of the lengths of + the delimiter runs containing the opening and closing + delimiters must not be a multiple of 3 unless both lengths + are multiples of 3. + +11. A literal `*` character cannot occur at the beginning or end of + `*`-delimited emphasis or `**`-delimited strong emphasis, unless it + is backslash-escaped. + +12. A literal `_` character cannot occur at the beginning or end of + `_`-delimited emphasis or `__`-delimited strong emphasis, unless it + is backslash-escaped. + +Where rules 1--12 above are compatible with multiple parsings, +the following principles resolve ambiguity: + +13. The number of nestings should be minimized. Thus, for example, + an interpretation `...` is always preferred to + `...`. + +14. An interpretation `...` is always + preferred to `...`. + +15. When two potential emphasis or strong emphasis spans overlap, + so that the second begins before the first ends and ends after + the first ends, the first takes precedence. Thus, for example, + `*foo _bar* baz_` is parsed as `foo _bar baz_` rather + than `*foo bar* baz`. + +16. When there are two potential emphasis or strong emphasis spans + with the same closing delimiter, the shorter one (the one that + opens later) takes precedence. Thus, for example, + `**foo **bar baz**` is parsed as `**foo bar baz` + rather than `foo **bar baz`. + +17. Inline code spans, links, images, and HTML tags group more tightly + than emphasis. So, when there is a choice between an interpretation + that contains one of these elements and one that does not, the + former always wins. Thus, for example, `*[foo*](bar)` is + parsed as `*foo*` rather than as + `[foo](bar)`. + +These rules can be illustrated through a series of examples. + +Rule 1: + +```````````````````````````````` example +*foo bar* +. +

                  foo bar

                  +```````````````````````````````` + + +This is not emphasis, because the opening `*` is followed by +whitespace, and hence not part of a [left-flanking delimiter run]: + +```````````````````````````````` example +a * foo bar* +. +

                  a * foo bar*

                  +```````````````````````````````` + + +This is not emphasis, because the opening `*` is preceded +by an alphanumeric and followed by punctuation, and hence +not part of a [left-flanking delimiter run]: + +```````````````````````````````` example +a*"foo"* +. +

                  a*"foo"*

                  +```````````````````````````````` + + +Unicode nonbreaking spaces count as whitespace, too: + +```````````````````````````````` example +* a * +. +

                  * a *

                  +```````````````````````````````` + + +Intraword emphasis with `*` is permitted: + +```````````````````````````````` example +foo*bar* +. +

                  foobar

                  +```````````````````````````````` + + +```````````````````````````````` example +5*6*78 +. +

                  5678

                  +```````````````````````````````` + + +Rule 2: + +```````````````````````````````` example +_foo bar_ +. +

                  foo bar

                  +```````````````````````````````` + + +This is not emphasis, because the opening `_` is followed by +whitespace: + +```````````````````````````````` example +_ foo bar_ +. +

                  _ foo bar_

                  +```````````````````````````````` + + +This is not emphasis, because the opening `_` is preceded +by an alphanumeric and followed by punctuation: + +```````````````````````````````` example +a_"foo"_ +. +

                  a_"foo"_

                  +```````````````````````````````` + + +Emphasis with `_` is not allowed inside words: + +```````````````````````````````` example +foo_bar_ +. +

                  foo_bar_

                  +```````````````````````````````` + + +```````````````````````````````` example +5_6_78 +. +

                  5_6_78

                  +```````````````````````````````` + + +```````````````````````````````` example +пристаням_стремятся_ +. +

                  пристаням_стремятся_

                  +```````````````````````````````` + + +Here `_` does not generate emphasis, because the first delimiter run +is right-flanking and the second left-flanking: + +```````````````````````````````` example +aa_"bb"_cc +. +

                  aa_"bb"_cc

                  +```````````````````````````````` + + +This is emphasis, even though the opening delimiter is +both left- and right-flanking, because it is preceded by +punctuation: + +```````````````````````````````` example +foo-_(bar)_ +. +

                  foo-(bar)

                  +```````````````````````````````` + + +Rule 3: + +This is not emphasis, because the closing delimiter does +not match the opening delimiter: + +```````````````````````````````` example +_foo* +. +

                  _foo*

                  +```````````````````````````````` + + +This is not emphasis, because the closing `*` is preceded by +whitespace: + +```````````````````````````````` example +*foo bar * +. +

                  *foo bar *

                  +```````````````````````````````` + + +A newline also counts as whitespace: + +```````````````````````````````` example +*foo bar +* +. +

                  *foo bar +*

                  +```````````````````````````````` + + +This is not emphasis, because the second `*` is +preceded by punctuation and followed by an alphanumeric +(hence it is not part of a [right-flanking delimiter run]: + +```````````````````````````````` example +*(*foo) +. +

                  *(*foo)

                  +```````````````````````````````` + + +The point of this restriction is more easily appreciated +with this example: + +```````````````````````````````` example +*(*foo*)* +. +

                  (foo)

                  +```````````````````````````````` + + +Intraword emphasis with `*` is allowed: + +```````````````````````````````` example +*foo*bar +. +

                  foobar

                  +```````````````````````````````` + + + +Rule 4: + +This is not emphasis, because the closing `_` is preceded by +whitespace: + +```````````````````````````````` example +_foo bar _ +. +

                  _foo bar _

                  +```````````````````````````````` + + +This is not emphasis, because the second `_` is +preceded by punctuation and followed by an alphanumeric: + +```````````````````````````````` example +_(_foo) +. +

                  _(_foo)

                  +```````````````````````````````` + + +This is emphasis within emphasis: + +```````````````````````````````` example +_(_foo_)_ +. +

                  (foo)

                  +```````````````````````````````` + + +Intraword emphasis is disallowed for `_`: + +```````````````````````````````` example +_foo_bar +. +

                  _foo_bar

                  +```````````````````````````````` + + +```````````````````````````````` example +_пристаням_стремятся +. +

                  _пристаням_стремятся

                  +```````````````````````````````` + + +```````````````````````````````` example +_foo_bar_baz_ +. +

                  foo_bar_baz

                  +```````````````````````````````` + + +This is emphasis, even though the closing delimiter is +both left- and right-flanking, because it is followed by +punctuation: + +```````````````````````````````` example +_(bar)_. +. +

                  (bar).

                  +```````````````````````````````` + + +Rule 5: + +```````````````````````````````` example +**foo bar** +. +

                  foo bar

                  +```````````````````````````````` + + +This is not strong emphasis, because the opening delimiter is +followed by whitespace: + +```````````````````````````````` example +** foo bar** +. +

                  ** foo bar**

                  +```````````````````````````````` + + +This is not strong emphasis, because the opening `**` is preceded +by an alphanumeric and followed by punctuation, and hence +not part of a [left-flanking delimiter run]: + +```````````````````````````````` example +a**"foo"** +. +

                  a**"foo"**

                  +```````````````````````````````` + + +Intraword strong emphasis with `**` is permitted: + +```````````````````````````````` example +foo**bar** +. +

                  foobar

                  +```````````````````````````````` + + +Rule 6: + +```````````````````````````````` example +__foo bar__ +. +

                  foo bar

                  +```````````````````````````````` + + +This is not strong emphasis, because the opening delimiter is +followed by whitespace: + +```````````````````````````````` example +__ foo bar__ +. +

                  __ foo bar__

                  +```````````````````````````````` + + +A newline counts as whitespace: +```````````````````````````````` example +__ +foo bar__ +. +

                  __ +foo bar__

                  +```````````````````````````````` + + +This is not strong emphasis, because the opening `__` is preceded +by an alphanumeric and followed by punctuation: + +```````````````````````````````` example +a__"foo"__ +. +

                  a__"foo"__

                  +```````````````````````````````` + + +Intraword strong emphasis is forbidden with `__`: + +```````````````````````````````` example +foo__bar__ +. +

                  foo__bar__

                  +```````````````````````````````` + + +```````````````````````````````` example +5__6__78 +. +

                  5__6__78

                  +```````````````````````````````` + + +```````````````````````````````` example +пристаням__стремятся__ +. +

                  пристаням__стремятся__

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo, __bar__, baz__ +. +

                  foo, bar, baz

                  +```````````````````````````````` + + +This is strong emphasis, even though the opening delimiter is +both left- and right-flanking, because it is preceded by +punctuation: + +```````````````````````````````` example +foo-__(bar)__ +. +

                  foo-(bar)

                  +```````````````````````````````` + + + +Rule 7: + +This is not strong emphasis, because the closing delimiter is preceded +by whitespace: + +```````````````````````````````` example +**foo bar ** +. +

                  **foo bar **

                  +```````````````````````````````` + + +(Nor can it be interpreted as an emphasized `*foo bar *`, because of +Rule 11.) + +This is not strong emphasis, because the second `**` is +preceded by punctuation and followed by an alphanumeric: + +```````````````````````````````` example +**(**foo) +. +

                  **(**foo)

                  +```````````````````````````````` + + +The point of this restriction is more easily appreciated +with these examples: + +```````````````````````````````` example +*(**foo**)* +. +

                  (foo)

                  +```````````````````````````````` + + +```````````````````````````````` example +**Gomphocarpus (*Gomphocarpus physocarpus*, syn. +*Asclepias physocarpa*)** +. +

                  Gomphocarpus (Gomphocarpus physocarpus, syn. +Asclepias physocarpa)

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo "*bar*" foo** +. +

                  foo "bar" foo

                  +```````````````````````````````` + + +Intraword emphasis: + +```````````````````````````````` example +**foo**bar +. +

                  foobar

                  +```````````````````````````````` + + +Rule 8: + +This is not strong emphasis, because the closing delimiter is +preceded by whitespace: + +```````````````````````````````` example +__foo bar __ +. +

                  __foo bar __

                  +```````````````````````````````` + + +This is not strong emphasis, because the second `__` is +preceded by punctuation and followed by an alphanumeric: + +```````````````````````````````` example +__(__foo) +. +

                  __(__foo)

                  +```````````````````````````````` + + +The point of this restriction is more easily appreciated +with this example: + +```````````````````````````````` example +_(__foo__)_ +. +

                  (foo)

                  +```````````````````````````````` + + +Intraword strong emphasis is forbidden with `__`: + +```````````````````````````````` example +__foo__bar +. +

                  __foo__bar

                  +```````````````````````````````` + + +```````````````````````````````` example +__пристаням__стремятся +. +

                  __пристаням__стремятся

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo__bar__baz__ +. +

                  foo__bar__baz

                  +```````````````````````````````` + + +This is strong emphasis, even though the closing delimiter is +both left- and right-flanking, because it is followed by +punctuation: + +```````````````````````````````` example +__(bar)__. +. +

                  (bar).

                  +```````````````````````````````` + + +Rule 9: + +Any nonempty sequence of inline elements can be the contents of an +emphasized span. + +```````````````````````````````` example +*foo [bar](/url)* +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo +bar* +. +

                  foo +bar

                  +```````````````````````````````` + + +In particular, emphasis and strong emphasis can be nested +inside emphasis: + +```````````````````````````````` example +_foo __bar__ baz_ +. +

                  foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +_foo _bar_ baz_ +. +

                  foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo_ bar_ +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo *bar** +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo **bar** baz* +. +

                  foo bar baz

                  +```````````````````````````````` + +```````````````````````````````` example +*foo**bar**baz* +. +

                  foobarbaz

                  +```````````````````````````````` + +Note that in the preceding case, the interpretation + +``` markdown +

                  foobarbaz

                  +``` + + +is precluded by the condition that a delimiter that +can both open and close (like the `*` after `foo`) +cannot form emphasis if the sum of the lengths of +the delimiter runs containing the opening and +closing delimiters is a multiple of 3 unless +both lengths are multiples of 3. + + +For the same reason, we don't get two consecutive +emphasis sections in this example: + +```````````````````````````````` example +*foo**bar* +. +

                  foo**bar

                  +```````````````````````````````` + + +The same condition ensures that the following +cases are all strong emphasis nested inside +emphasis, even when the interior spaces are +omitted: + + +```````````````````````````````` example +***foo** bar* +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo **bar*** +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo**bar*** +. +

                  foobar

                  +```````````````````````````````` + + +When the lengths of the interior closing and opening +delimiter runs are *both* multiples of 3, though, +they can match to create emphasis: + +```````````````````````````````` example +foo***bar***baz +. +

                  foobarbaz

                  +```````````````````````````````` + +```````````````````````````````` example +foo******bar*********baz +. +

                  foobar***baz

                  +```````````````````````````````` + + +Indefinite levels of nesting are possible: + +```````````````````````````````` example +*foo **bar *baz* bim** bop* +. +

                  foo bar baz bim bop

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo [*bar*](/url)* +. +

                  foo bar

                  +```````````````````````````````` + + +There can be no empty emphasis or strong emphasis: + +```````````````````````````````` example +** is not an empty emphasis +. +

                  ** is not an empty emphasis

                  +```````````````````````````````` + + +```````````````````````````````` example +**** is not an empty strong emphasis +. +

                  **** is not an empty strong emphasis

                  +```````````````````````````````` + + + +Rule 10: + +Any nonempty sequence of inline elements can be the contents of an +strongly emphasized span. + +```````````````````````````````` example +**foo [bar](/url)** +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo +bar** +. +

                  foo +bar

                  +```````````````````````````````` + + +In particular, emphasis and strong emphasis can be nested +inside strong emphasis: + +```````````````````````````````` example +__foo _bar_ baz__ +. +

                  foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo __bar__ baz__ +. +

                  foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +____foo__ bar__ +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo **bar**** +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo *bar* baz** +. +

                  foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo*bar*baz** +. +

                  foobarbaz

                  +```````````````````````````````` + + +```````````````````````````````` example +***foo* bar** +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo *bar*** +. +

                  foo bar

                  +```````````````````````````````` + + +Indefinite levels of nesting are possible: + +```````````````````````````````` example +**foo *bar **baz** +bim* bop** +. +

                  foo bar baz +bim bop

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo [*bar*](/url)** +. +

                  foo bar

                  +```````````````````````````````` + + +There can be no empty emphasis or strong emphasis: + +```````````````````````````````` example +__ is not an empty emphasis +. +

                  __ is not an empty emphasis

                  +```````````````````````````````` + + +```````````````````````````````` example +____ is not an empty strong emphasis +. +

                  ____ is not an empty strong emphasis

                  +```````````````````````````````` + + + +Rule 11: + +```````````````````````````````` example +foo *** +. +

                  foo ***

                  +```````````````````````````````` + + +```````````````````````````````` example +foo *\** +. +

                  foo *

                  +```````````````````````````````` + + +```````````````````````````````` example +foo *_* +. +

                  foo _

                  +```````````````````````````````` + + +```````````````````````````````` example +foo ***** +. +

                  foo *****

                  +```````````````````````````````` + + +```````````````````````````````` example +foo **\*** +. +

                  foo *

                  +```````````````````````````````` + + +```````````````````````````````` example +foo **_** +. +

                  foo _

                  +```````````````````````````````` + + +Note that when delimiters do not match evenly, Rule 11 determines +that the excess literal `*` characters will appear outside of the +emphasis, rather than inside it: + +```````````````````````````````` example +**foo* +. +

                  *foo

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo** +. +

                  foo*

                  +```````````````````````````````` + + +```````````````````````````````` example +***foo** +. +

                  *foo

                  +```````````````````````````````` + + +```````````````````````````````` example +****foo* +. +

                  ***foo

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo*** +. +

                  foo*

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo**** +. +

                  foo***

                  +```````````````````````````````` + + + +Rule 12: + +```````````````````````````````` example +foo ___ +. +

                  foo ___

                  +```````````````````````````````` + + +```````````````````````````````` example +foo _\__ +. +

                  foo _

                  +```````````````````````````````` + + +```````````````````````````````` example +foo _*_ +. +

                  foo *

                  +```````````````````````````````` + + +```````````````````````````````` example +foo _____ +. +

                  foo _____

                  +```````````````````````````````` + + +```````````````````````````````` example +foo __\___ +. +

                  foo _

                  +```````````````````````````````` + + +```````````````````````````````` example +foo __*__ +. +

                  foo *

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo_ +. +

                  _foo

                  +```````````````````````````````` + + +Note that when delimiters do not match evenly, Rule 12 determines +that the excess literal `_` characters will appear outside of the +emphasis, rather than inside it: + +```````````````````````````````` example +_foo__ +. +

                  foo_

                  +```````````````````````````````` + + +```````````````````````````````` example +___foo__ +. +

                  _foo

                  +```````````````````````````````` + + +```````````````````````````````` example +____foo_ +. +

                  ___foo

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo___ +. +

                  foo_

                  +```````````````````````````````` + + +```````````````````````````````` example +_foo____ +. +

                  foo___

                  +```````````````````````````````` + + +Rule 13 implies that if you want emphasis nested directly inside +emphasis, you must use different delimiters: + +```````````````````````````````` example +**foo** +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +*_foo_* +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo__ +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +_*foo*_ +. +

                  foo

                  +```````````````````````````````` + + +However, strong emphasis within strong emphasis is possible without +switching delimiters: + +```````````````````````````````` example +****foo**** +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +____foo____ +. +

                  foo

                  +```````````````````````````````` + + + +Rule 13 can be applied to arbitrarily long sequences of +delimiters: + +```````````````````````````````` example +******foo****** +. +

                  foo

                  +```````````````````````````````` + + +Rule 14: + +```````````````````````````````` example +***foo*** +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +_____foo_____ +. +

                  foo

                  +```````````````````````````````` + + +Rule 15: + +```````````````````````````````` example +*foo _bar* baz_ +. +

                  foo _bar baz_

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo __bar *baz bim__ bam* +. +

                  foo bar *baz bim bam

                  +```````````````````````````````` + + +Rule 16: + +```````````````````````````````` example +**foo **bar baz** +. +

                  **foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo *bar baz* +. +

                  *foo bar baz

                  +```````````````````````````````` + + +Rule 17: + +```````````````````````````````` example +*[bar*](/url) +. +

                  *bar*

                  +```````````````````````````````` + + +```````````````````````````````` example +_foo [bar_](/url) +. +

                  _foo bar_

                  +```````````````````````````````` + + +```````````````````````````````` example +* +. +

                  *

                  +```````````````````````````````` + + +```````````````````````````````` example +** +. +

                  **

                  +```````````````````````````````` + + +```````````````````````````````` example +__ +. +

                  __

                  +```````````````````````````````` + + +```````````````````````````````` example +*a `*`* +. +

                  a *

                  +```````````````````````````````` + + +```````````````````````````````` example +_a `_`_ +. +

                  a _

                  +```````````````````````````````` + + +```````````````````````````````` example +**a +. +

                  **ahttp://foo.bar/?q=**

                  +```````````````````````````````` + + +```````````````````````````````` example +__a +. +

                  __ahttp://foo.bar/?q=__

                  +```````````````````````````````` + + + +## Links + +A link contains [link text] (the visible text), a [link destination] +(the URI that is the link destination), and optionally a [link title]. +There are two basic kinds of links in Markdown. In [inline links] the +destination and title are given immediately after the link text. In +[reference links] the destination and title are defined elsewhere in +the document. + +A [link text](@) consists of a sequence of zero or more +inline elements enclosed by square brackets (`[` and `]`). The +following rules apply: + +- Links may not contain other links, at any level of nesting. If + multiple otherwise valid link definitions appear nested inside each + other, the inner-most definition is used. + +- Brackets are allowed in the [link text] only if (a) they + are backslash-escaped or (b) they appear as a matched pair of brackets, + with an open bracket `[`, a sequence of zero or more inlines, and + a close bracket `]`. + +- Backtick [code spans], [autolinks], and raw [HTML tags] bind more tightly + than the brackets in link text. Thus, for example, + `` [foo`]` `` could not be a link text, since the second `]` + is part of a code span. + +- The brackets in link text bind more tightly than markers for + [emphasis and strong emphasis]. Thus, for example, `*[foo*](url)` is a link. + +A [link destination](@) consists of either + +- a sequence of zero or more characters between an opening `<` and a + closing `>` that contains no line breaks or unescaped + `<` or `>` characters, or + +- a nonempty sequence of characters that does not start with + `<`, does not include ASCII space or control characters, and + includes parentheses only if (a) they are backslash-escaped or + (b) they are part of a balanced pair of unescaped parentheses. + (Implementations may impose limits on parentheses nesting to + avoid performance issues, but at least three levels of nesting + should be supported.) + +A [link title](@) consists of either + +- a sequence of zero or more characters between straight double-quote + characters (`"`), including a `"` character only if it is + backslash-escaped, or + +- a sequence of zero or more characters between straight single-quote + characters (`'`), including a `'` character only if it is + backslash-escaped, or + +- a sequence of zero or more characters between matching parentheses + (`(...)`), including a `(` or `)` character only if it is + backslash-escaped. + +Although [link titles] may span multiple lines, they may not contain +a [blank line]. + +An [inline link](@) consists of a [link text] followed immediately +by a left parenthesis `(`, optional [whitespace], an optional +[link destination], an optional [link title] separated from the link +destination by [whitespace], optional [whitespace], and a right +parenthesis `)`. The link's text consists of the inlines contained +in the [link text] (excluding the enclosing square brackets). +The link's URI consists of the link destination, excluding enclosing +`<...>` if present, with backslash-escapes in effect as described +above. The link's title consists of the link title, excluding its +enclosing delimiters, with backslash-escapes in effect as described +above. + +Here is a simple inline link: + +```````````````````````````````` example +[link](/uri "title") +. +

                  link

                  +```````````````````````````````` + + +The title may be omitted: + +```````````````````````````````` example +[link](/uri) +. +

                  link

                  +```````````````````````````````` + + +Both the title and the destination may be omitted: + +```````````````````````````````` example +[link]() +. +

                  link

                  +```````````````````````````````` + + +```````````````````````````````` example +[link](<>) +. +

                  link

                  +```````````````````````````````` + +The destination can only contain spaces if it is +enclosed in pointy brackets: + +```````````````````````````````` example +[link](/my uri) +. +

                  [link](/my uri)

                  +```````````````````````````````` + +```````````````````````````````` example +[link](
                  ) +. +

                  link

                  +```````````````````````````````` + +The destination cannot contain line breaks, +even if enclosed in pointy brackets: + +```````````````````````````````` example +[link](foo +bar) +. +

                  [link](foo +bar)

                  +```````````````````````````````` + +```````````````````````````````` example +[link]() +. +

                  [link]()

                  +```````````````````````````````` + +The destination can contain `)` if it is enclosed +in pointy brackets: + +```````````````````````````````` example +[a]() +. +

                  a

                  +```````````````````````````````` + +Pointy brackets that enclose links must be unescaped: + +```````````````````````````````` example +[link]() +. +

                  [link](<foo>)

                  +```````````````````````````````` + +These are not links, because the opening pointy bracket +is not matched properly: + +```````````````````````````````` example +[a]( +[a](c) +. +

                  [a](<b)c +[a](<b)c> +[a](c)

                  +```````````````````````````````` + +Parentheses inside the link destination may be escaped: + +```````````````````````````````` example +[link](\(foo\)) +. +

                  link

                  +```````````````````````````````` + +Any number of parentheses are allowed without escaping, as long as they are +balanced: + +```````````````````````````````` example +[link](foo(and(bar))) +. +

                  link

                  +```````````````````````````````` + +However, if you have unbalanced parentheses, you need to escape or use the +`<...>` form: + +```````````````````````````````` example +[link](foo\(and\(bar\)) +. +

                  link

                  +```````````````````````````````` + + +```````````````````````````````` example +[link]() +. +

                  link

                  +```````````````````````````````` + + +Parentheses and other symbols can also be escaped, as usual +in Markdown: + +```````````````````````````````` example +[link](foo\)\:) +. +

                  link

                  +```````````````````````````````` + + +A link can contain fragment identifiers and queries: + +```````````````````````````````` example +[link](#fragment) + +[link](http://example.com#fragment) + +[link](http://example.com?foo=3#frag) +. +

                  link

                  +

                  link

                  +

                  link

                  +```````````````````````````````` + + +Note that a backslash before a non-escapable character is +just a backslash: + +```````````````````````````````` example +[link](foo\bar) +. +

                  link

                  +```````````````````````````````` + + +URL-escaping should be left alone inside the destination, as all +URL-escaped characters are also valid URL characters. Entity and +numerical character references in the destination will be parsed +into the corresponding Unicode code points, as usual. These may +be optionally URL-escaped when written as HTML, but this spec +does not enforce any particular policy for rendering URLs in +HTML or other formats. Renderers may make different decisions +about how to escape or normalize URLs in the output. + +```````````````````````````````` example +[link](foo%20bä) +. +

                  link

                  +```````````````````````````````` + + +Note that, because titles can often be parsed as destinations, +if you try to omit the destination and keep the title, you'll +get unexpected results: + +```````````````````````````````` example +[link]("title") +. +

                  link

                  +```````````````````````````````` + + +Titles may be in single quotes, double quotes, or parentheses: + +```````````````````````````````` example +[link](/url "title") +[link](/url 'title') +[link](/url (title)) +. +

                  link +link +link

                  +```````````````````````````````` + + +Backslash escapes and entity and numeric character references +may be used in titles: + +```````````````````````````````` example +[link](/url "title \""") +. +

                  link

                  +```````````````````````````````` + + +Titles must be separated from the link using a [whitespace]. +Other [Unicode whitespace] like non-breaking space doesn't work. + +```````````````````````````````` example +[link](/url "title") +. +

                  link

                  +```````````````````````````````` + + +Nested balanced quotes are not allowed without escaping: + +```````````````````````````````` example +[link](/url "title "and" title") +. +

                  [link](/url "title "and" title")

                  +```````````````````````````````` + + +But it is easy to work around this by using a different quote type: + +```````````````````````````````` example +[link](/url 'title "and" title') +. +

                  link

                  +```````````````````````````````` + + +(Note: `Markdown.pl` did allow double quotes inside a double-quoted +title, and its test suite included a test demonstrating this. +But it is hard to see a good rationale for the extra complexity this +brings, since there are already many ways---backslash escaping, +entity and numeric character references, or using a different +quote type for the enclosing title---to write titles containing +double quotes. `Markdown.pl`'s handling of titles has a number +of other strange features. For example, it allows single-quoted +titles in inline links, but not reference links. And, in +reference links but not inline links, it allows a title to begin +with `"` and end with `)`. `Markdown.pl` 1.0.1 even allows +titles with no closing quotation mark, though 1.0.2b8 does not. +It seems preferable to adopt a simple, rational rule that works +the same way in inline links and link reference definitions.) + +[Whitespace] is allowed around the destination and title: + +```````````````````````````````` example +[link]( /uri + "title" ) +. +

                  link

                  +```````````````````````````````` + + +But it is not allowed between the link text and the +following parenthesis: + +```````````````````````````````` example +[link] (/uri) +. +

                  [link] (/uri)

                  +```````````````````````````````` + + +The link text may contain balanced brackets, but not unbalanced ones, +unless they are escaped: + +```````````````````````````````` example +[link [foo [bar]]](/uri) +. +

                  link [foo [bar]]

                  +```````````````````````````````` + + +```````````````````````````````` example +[link] bar](/uri) +. +

                  [link] bar](/uri)

                  +```````````````````````````````` + + +```````````````````````````````` example +[link [bar](/uri) +. +

                  [link bar

                  +```````````````````````````````` + + +```````````````````````````````` example +[link \[bar](/uri) +. +

                  link [bar

                  +```````````````````````````````` + + +The link text may contain inline content: + +```````````````````````````````` example +[link *foo **bar** `#`*](/uri) +. +

                  link foo bar #

                  +```````````````````````````````` + + +```````````````````````````````` example +[![moon](moon.jpg)](/uri) +. +

                  moon

                  +```````````````````````````````` + + +However, links may not contain other links, at any level of nesting. + +```````````````````````````````` example +[foo [bar](/uri)](/uri) +. +

                  [foo bar](/uri)

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo *[bar [baz](/uri)](/uri)*](/uri) +. +

                  [foo [bar baz](/uri)](/uri)

                  +```````````````````````````````` + + +```````````````````````````````` example +![[[foo](uri1)](uri2)](uri3) +. +

                  [foo](uri2)

                  +```````````````````````````````` + + +These cases illustrate the precedence of link text grouping over +emphasis grouping: + +```````````````````````````````` example +*[foo*](/uri) +. +

                  *foo*

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo *bar](baz*) +. +

                  foo *bar

                  +```````````````````````````````` + + +Note that brackets that *aren't* part of links do not take +precedence: + +```````````````````````````````` example +*foo [bar* baz] +. +

                  foo [bar baz]

                  +```````````````````````````````` + + +These cases illustrate the precedence of HTML tags, code spans, +and autolinks over link grouping: + +```````````````````````````````` example +[foo +. +

                  [foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo`](/uri)` +. +

                  [foo](/uri)

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo +. +

                  [foohttp://example.com/?search=](uri)

                  +```````````````````````````````` + + +There are three kinds of [reference link](@)s: +[full](#full-reference-link), [collapsed](#collapsed-reference-link), +and [shortcut](#shortcut-reference-link). + +A [full reference link](@) +consists of a [link text] immediately followed by a [link label] +that [matches] a [link reference definition] elsewhere in the document. + +A [link label](@) begins with a left bracket (`[`) and ends +with the first right bracket (`]`) that is not backslash-escaped. +Between these brackets there must be at least one [non-whitespace character]. +Unescaped square bracket characters are not allowed inside the +opening and closing square brackets of [link labels]. A link +label can have at most 999 characters inside the square +brackets. + +One label [matches](@) +another just in case their normalized forms are equal. To normalize a +label, strip off the opening and closing brackets, +perform the *Unicode case fold*, strip leading and trailing +[whitespace] and collapse consecutive internal +[whitespace] to a single space. If there are multiple +matching reference link definitions, the one that comes first in the +document is used. (It is desirable in such cases to emit a warning.) + +The contents of the first link label are parsed as inlines, which are +used as the link's text. The link's URI and title are provided by the +matching [link reference definition]. + +Here is a simple example: + +```````````````````````````````` example +[foo][bar] + +[bar]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +The rules for the [link text] are the same as with +[inline links]. Thus: + +The link text may contain balanced brackets, but not unbalanced ones, +unless they are escaped: + +```````````````````````````````` example +[link [foo [bar]]][ref] + +[ref]: /uri +. +

                  link [foo [bar]]

                  +```````````````````````````````` + + +```````````````````````````````` example +[link \[bar][ref] + +[ref]: /uri +. +

                  link [bar

                  +```````````````````````````````` + + +The link text may contain inline content: + +```````````````````````````````` example +[link *foo **bar** `#`*][ref] + +[ref]: /uri +. +

                  link foo bar #

                  +```````````````````````````````` + + +```````````````````````````````` example +[![moon](moon.jpg)][ref] + +[ref]: /uri +. +

                  moon

                  +```````````````````````````````` + + +However, links may not contain other links, at any level of nesting. + +```````````````````````````````` example +[foo [bar](/uri)][ref] + +[ref]: /uri +. +

                  [foo bar]ref

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo *bar [baz][ref]*][ref] + +[ref]: /uri +. +

                  [foo bar baz]ref

                  +```````````````````````````````` + + +(In the examples above, we have two [shortcut reference links] +instead of one [full reference link].) + +The following cases illustrate the precedence of link text grouping over +emphasis grouping: + +```````````````````````````````` example +*[foo*][ref] + +[ref]: /uri +. +

                  *foo*

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo *bar][ref] + +[ref]: /uri +. +

                  foo *bar

                  +```````````````````````````````` + + +These cases illustrate the precedence of HTML tags, code spans, +and autolinks over link grouping: + +```````````````````````````````` example +[foo + +[ref]: /uri +. +

                  [foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo`][ref]` + +[ref]: /uri +. +

                  [foo][ref]

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo + +[ref]: /uri +. +

                  [foohttp://example.com/?search=][ref]

                  +```````````````````````````````` + + +Matching is case-insensitive: + +```````````````````````````````` example +[foo][BaR] + +[bar]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +Unicode case fold is used: + +```````````````````````````````` example +[Толпой][Толпой] is a Russian word. + +[ТОЛПОЙ]: /url +. +

                  Толпой is a Russian word.

                  +```````````````````````````````` + + +Consecutive internal [whitespace] is treated as one space for +purposes of determining matching: + +```````````````````````````````` example +[Foo + bar]: /url + +[Baz][Foo bar] +. +

                  Baz

                  +```````````````````````````````` + + +No [whitespace] is allowed between the [link text] and the +[link label]: + +```````````````````````````````` example +[foo] [bar] + +[bar]: /url "title" +. +

                  [foo] bar

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo] +[bar] + +[bar]: /url "title" +. +

                  [foo] +bar

                  +```````````````````````````````` + + +This is a departure from John Gruber's original Markdown syntax +description, which explicitly allows whitespace between the link +text and the link label. It brings reference links in line with +[inline links], which (according to both original Markdown and +this spec) cannot have whitespace after the link text. More +importantly, it prevents inadvertent capture of consecutive +[shortcut reference links]. If whitespace is allowed between the +link text and the link label, then in the following we will have +a single reference link, not two shortcut reference links, as +intended: + +``` markdown +[foo] +[bar] + +[foo]: /url1 +[bar]: /url2 +``` + +(Note that [shortcut reference links] were introduced by Gruber +himself in a beta version of `Markdown.pl`, but never included +in the official syntax description. Without shortcut reference +links, it is harmless to allow space between the link text and +link label; but once shortcut references are introduced, it is +too dangerous to allow this, as it frequently leads to +unintended results.) + +When there are multiple matching [link reference definitions], +the first is used: + +```````````````````````````````` example +[foo]: /url1 + +[foo]: /url2 + +[bar][foo] +. +

                  bar

                  +```````````````````````````````` + + +Note that matching is performed on normalized strings, not parsed +inline content. So the following does not match, even though the +labels define equivalent inline content: + +```````````````````````````````` example +[bar][foo\!] + +[foo!]: /url +. +

                  [bar][foo!]

                  +```````````````````````````````` + + +[Link labels] cannot contain brackets, unless they are +backslash-escaped: + +```````````````````````````````` example +[foo][ref[] + +[ref[]: /uri +. +

                  [foo][ref[]

                  +

                  [ref[]: /uri

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo][ref[bar]] + +[ref[bar]]: /uri +. +

                  [foo][ref[bar]]

                  +

                  [ref[bar]]: /uri

                  +```````````````````````````````` + + +```````````````````````````````` example +[[[foo]]] + +[[[foo]]]: /url +. +

                  [[[foo]]]

                  +

                  [[[foo]]]: /url

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo][ref\[] + +[ref\[]: /uri +. +

                  foo

                  +```````````````````````````````` + + +Note that in this example `]` is not backslash-escaped: + +```````````````````````````````` example +[bar\\]: /uri + +[bar\\] +. +

                  bar\

                  +```````````````````````````````` + + +A [link label] must contain at least one [non-whitespace character]: + +```````````````````````````````` example +[] + +[]: /uri +. +

                  []

                  +

                  []: /uri

                  +```````````````````````````````` + + +```````````````````````````````` example +[ + ] + +[ + ]: /uri +. +

                  [ +]

                  +

                  [ +]: /uri

                  +```````````````````````````````` + + +A [collapsed reference link](@) +consists of a [link label] that [matches] a +[link reference definition] elsewhere in the +document, followed by the string `[]`. +The contents of the first link label are parsed as inlines, +which are used as the link's text. The link's URI and title are +provided by the matching reference link definition. Thus, +`[foo][]` is equivalent to `[foo][foo]`. + +```````````````````````````````` example +[foo][] + +[foo]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[*foo* bar][] + +[*foo* bar]: /url "title" +. +

                  foo bar

                  +```````````````````````````````` + + +The link labels are case-insensitive: + +```````````````````````````````` example +[Foo][] + +[foo]: /url "title" +. +

                  Foo

                  +```````````````````````````````` + + + +As with full reference links, [whitespace] is not +allowed between the two sets of brackets: + +```````````````````````````````` example +[foo] +[] + +[foo]: /url "title" +. +

                  foo +[]

                  +```````````````````````````````` + + +A [shortcut reference link](@) +consists of a [link label] that [matches] a +[link reference definition] elsewhere in the +document and is not followed by `[]` or a link label. +The contents of the first link label are parsed as inlines, +which are used as the link's text. The link's URI and title +are provided by the matching link reference definition. +Thus, `[foo]` is equivalent to `[foo][]`. + +```````````````````````````````` example +[foo] + +[foo]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[*foo* bar] + +[*foo* bar]: /url "title" +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +[[*foo* bar]] + +[*foo* bar]: /url "title" +. +

                  [foo bar]

                  +```````````````````````````````` + + +```````````````````````````````` example +[[bar [foo] + +[foo]: /url +. +

                  [[bar foo

                  +```````````````````````````````` + + +The link labels are case-insensitive: + +```````````````````````````````` example +[Foo] + +[foo]: /url "title" +. +

                  Foo

                  +```````````````````````````````` + + +A space after the link text should be preserved: + +```````````````````````````````` example +[foo] bar + +[foo]: /url +. +

                  foo bar

                  +```````````````````````````````` + + +If you just want bracketed text, you can backslash-escape the +opening bracket to avoid links: + +```````````````````````````````` example +\[foo] + +[foo]: /url "title" +. +

                  [foo]

                  +```````````````````````````````` + + +Note that this is a link, because a link label ends with the first +following closing bracket: + +```````````````````````````````` example +[foo*]: /url + +*[foo*] +. +

                  *foo*

                  +```````````````````````````````` + + +Full and compact references take precedence over shortcut +references: + +```````````````````````````````` example +[foo][bar] + +[foo]: /url1 +[bar]: /url2 +. +

                  foo

                  +```````````````````````````````` + +```````````````````````````````` example +[foo][] + +[foo]: /url1 +. +

                  foo

                  +```````````````````````````````` + +Inline links also take precedence: + +```````````````````````````````` example +[foo]() + +[foo]: /url1 +. +

                  foo

                  +```````````````````````````````` + +```````````````````````````````` example +[foo](not a link) + +[foo]: /url1 +. +

                  foo(not a link)

                  +```````````````````````````````` + +In the following case `[bar][baz]` is parsed as a reference, +`[foo]` as normal text: + +```````````````````````````````` example +[foo][bar][baz] + +[baz]: /url +. +

                  [foo]bar

                  +```````````````````````````````` + + +Here, though, `[foo][bar]` is parsed as a reference, since +`[bar]` is defined: + +```````````````````````````````` example +[foo][bar][baz] + +[baz]: /url1 +[bar]: /url2 +. +

                  foobaz

                  +```````````````````````````````` + + +Here `[foo]` is not parsed as a shortcut reference, because it +is followed by a link label (even though `[bar]` is not defined): + +```````````````````````````````` example +[foo][bar][baz] + +[baz]: /url1 +[foo]: /url2 +. +

                  [foo]bar

                  +```````````````````````````````` + + + +## Images + +Syntax for images is like the syntax for links, with one +difference. Instead of [link text], we have an +[image description](@). The rules for this are the +same as for [link text], except that (a) an +image description starts with `![` rather than `[`, and +(b) an image description may contain links. +An image description has inline elements +as its contents. When an image is rendered to HTML, +this is standardly used as the image's `alt` attribute. + +```````````````````````````````` example +![foo](/url "title") +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo *bar*] + +[foo *bar*]: train.jpg "train & tracks" +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo ![bar](/url)](/url2) +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo [bar](/url)](/url2) +. +

                  foo bar

                  +```````````````````````````````` + + +Though this spec is concerned with parsing, not rendering, it is +recommended that in rendering to HTML, only the plain string content +of the [image description] be used. Note that in +the above example, the alt attribute's value is `foo bar`, not `foo +[bar](/url)` or `foo bar`. Only the plain string +content is rendered, without formatting. + +```````````````````````````````` example +![foo *bar*][] + +[foo *bar*]: train.jpg "train & tracks" +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo *bar*][foobar] + +[FOOBAR]: train.jpg "train & tracks" +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo](train.jpg) +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +My ![foo bar](/path/to/train.jpg "title" ) +. +

                  My foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo]() +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +![](/url) +. +

                  +```````````````````````````````` + + +Reference-style: + +```````````````````````````````` example +![foo][bar] + +[bar]: /url +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo][bar] + +[BAR]: /url +. +

                  foo

                  +```````````````````````````````` + + +Collapsed: + +```````````````````````````````` example +![foo][] + +[foo]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +![*foo* bar][] + +[*foo* bar]: /url "title" +. +

                  foo bar

                  +```````````````````````````````` + + +The labels are case-insensitive: + +```````````````````````````````` example +![Foo][] + +[foo]: /url "title" +. +

                  Foo

                  +```````````````````````````````` + + +As with reference links, [whitespace] is not allowed +between the two sets of brackets: + +```````````````````````````````` example +![foo] +[] + +[foo]: /url "title" +. +

                  foo +[]

                  +```````````````````````````````` + + +Shortcut: + +```````````````````````````````` example +![foo] + +[foo]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +![*foo* bar] + +[*foo* bar]: /url "title" +. +

                  foo bar

                  +```````````````````````````````` + + +Note that link labels cannot contain unescaped brackets: + +```````````````````````````````` example +![[foo]] + +[[foo]]: /url "title" +. +

                  ![[foo]]

                  +

                  [[foo]]: /url "title"

                  +```````````````````````````````` + + +The link labels are case-insensitive: + +```````````````````````````````` example +![Foo] + +[foo]: /url "title" +. +

                  Foo

                  +```````````````````````````````` + + +If you just want a literal `!` followed by bracketed text, you can +backslash-escape the opening `[`: + +```````````````````````````````` example +!\[foo] + +[foo]: /url "title" +. +

                  ![foo]

                  +```````````````````````````````` + + +If you want a link after a literal `!`, backslash-escape the +`!`: + +```````````````````````````````` example +\![foo] + +[foo]: /url "title" +. +

                  !foo

                  +```````````````````````````````` + + +## Autolinks + +[Autolink](@)s are absolute URIs and email addresses inside +`<` and `>`. They are parsed as links, with the URL or email address +as the link label. + +A [URI autolink](@) consists of `<`, followed by an +[absolute URI] followed by `>`. It is parsed as +a link to the URI, with the URI as the link's label. + +An [absolute URI](@), +for these purposes, consists of a [scheme] followed by a colon (`:`) +followed by zero or more characters other than ASCII +[whitespace] and control characters, `<`, and `>`. If +the URI includes these characters, they must be percent-encoded +(e.g. `%20` for a space). + +For purposes of this spec, a [scheme](@) is any sequence +of 2--32 characters beginning with an ASCII letter and followed +by any combination of ASCII letters, digits, or the symbols plus +("+"), period ("."), or hyphen ("-"). + +Here are some valid autolinks: + +```````````````````````````````` example + +. +

                  http://foo.bar.baz

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  http://foo.bar.baz/test?q=hello&id=22&boolean

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  irc://foo.bar:2233/baz

                  +```````````````````````````````` + + +Uppercase is also fine: + +```````````````````````````````` example + +. +

                  MAILTO:FOO@BAR.BAZ

                  +```````````````````````````````` + + +Note that many strings that count as [absolute URIs] for +purposes of this spec are not valid URIs, because their +schemes are not registered or because of other problems +with their syntax: + +```````````````````````````````` example + +. +

                  a+b+c:d

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  made-up-scheme://foo,bar

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  http://../

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  localhost:5001/foo

                  +```````````````````````````````` + + +Spaces are not allowed in autolinks: + +```````````````````````````````` example + +. +

                  <http://foo.bar/baz bim>

                  +```````````````````````````````` + + +Backslash-escapes do not work inside autolinks: + +```````````````````````````````` example + +. +

                  http://example.com/\[\

                  +```````````````````````````````` + + +An [email autolink](@) +consists of `<`, followed by an [email address], +followed by `>`. The link's label is the email address, +and the URL is `mailto:` followed by the email address. + +An [email address](@), +for these purposes, is anything that matches +the [non-normative regex from the HTML5 +spec](https://html.spec.whatwg.org/multipage/forms.html#e-mail-state-(type=email)): + + /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])? + (?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ + +Examples of email autolinks: + +```````````````````````````````` example + +. +

                  foo@bar.example.com

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  foo+special@Bar.baz-bar0.com

                  +```````````````````````````````` + + +Backslash-escapes do not work inside email autolinks: + +```````````````````````````````` example + +. +

                  <foo+@bar.example.com>

                  +```````````````````````````````` + + +These are not autolinks: + +```````````````````````````````` example +<> +. +

                  <>

                  +```````````````````````````````` + + +```````````````````````````````` example +< http://foo.bar > +. +

                  < http://foo.bar >

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  <m:abc>

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  <foo.bar.baz>

                  +```````````````````````````````` + + +```````````````````````````````` example +http://example.com +. +

                  http://example.com

                  +```````````````````````````````` + + +```````````````````````````````` example +foo@bar.example.com +. +

                  foo@bar.example.com

                  +```````````````````````````````` + + +## Raw HTML + +Text between `<` and `>` that looks like an HTML tag is parsed as a +raw HTML tag and will be rendered in HTML without escaping. +Tag and attribute names are not limited to current HTML tags, +so custom tags (and even, say, DocBook tags) may be used. + +Here is the grammar for tags: + +A [tag name](@) consists of an ASCII letter +followed by zero or more ASCII letters, digits, or +hyphens (`-`). + +An [attribute](@) consists of [whitespace], +an [attribute name], and an optional +[attribute value specification]. + +An [attribute name](@) +consists of an ASCII letter, `_`, or `:`, followed by zero or more ASCII +letters, digits, `_`, `.`, `:`, or `-`. (Note: This is the XML +specification restricted to ASCII. HTML5 is laxer.) + +An [attribute value specification](@) +consists of optional [whitespace], +a `=` character, optional [whitespace], and an [attribute +value]. + +An [attribute value](@) +consists of an [unquoted attribute value], +a [single-quoted attribute value], or a [double-quoted attribute value]. + +An [unquoted attribute value](@) +is a nonempty string of characters not +including [whitespace], `"`, `'`, `=`, `<`, `>`, or `` ` ``. + +A [single-quoted attribute value](@) +consists of `'`, zero or more +characters not including `'`, and a final `'`. + +A [double-quoted attribute value](@) +consists of `"`, zero or more +characters not including `"`, and a final `"`. + +An [open tag](@) consists of a `<` character, a [tag name], +zero or more [attributes], optional [whitespace], an optional `/` +character, and a `>` character. + +A [closing tag](@) consists of the string ``. + +An [HTML comment](@) consists of ``, +where *text* does not start with `>` or `->`, does not end with `-`, +and does not contain `--`. (See the +[HTML5 spec](http://www.w3.org/TR/html5/syntax.html#comments).) + +A [processing instruction](@) +consists of the string ``, and the string +`?>`. + +A [declaration](@) consists of the +string ``, and the character `>`. + +A [CDATA section](@) consists of +the string ``, and the string `]]>`. + +An [HTML tag](@) consists of an [open tag], a [closing tag], +an [HTML comment], a [processing instruction], a [declaration], +or a [CDATA section]. + +Here are some simple open tags: + +```````````````````````````````` example + +. +

                  +```````````````````````````````` + + +Empty elements: + +```````````````````````````````` example + +. +

                  +```````````````````````````````` + + +[Whitespace] is allowed: + +```````````````````````````````` example + +. +

                  +```````````````````````````````` + + +With attributes: + +```````````````````````````````` example + +. +

                  +```````````````````````````````` + + +Custom tag names can be used: + +```````````````````````````````` example +Foo +. +

                  Foo

                  +```````````````````````````````` + + +Illegal tag names, not parsed as HTML: + +```````````````````````````````` example +<33> <__> +. +

                  <33> <__>

                  +```````````````````````````````` + + +Illegal attribute names: + +```````````````````````````````` example +
                  +. +

                  <a h*#ref="hi">

                  +```````````````````````````````` + + +Illegal attribute values: + +```````````````````````````````` example +
                  +. +

                  </a href="foo">

                  +```````````````````````````````` + + +Comments: + +```````````````````````````````` example +foo +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +foo +. +

                  foo <!-- not a comment -- two hyphens -->

                  +```````````````````````````````` + + +Not comments: + +```````````````````````````````` example +foo foo --> + +foo +. +

                  foo <!--> foo -->

                  +

                  foo <!-- foo--->

                  +```````````````````````````````` + + +Processing instructions: + +```````````````````````````````` example +foo +. +

                  foo

                  +```````````````````````````````` + + +Declarations: + +```````````````````````````````` example +foo +. +

                  foo

                  +```````````````````````````````` + + +CDATA sections: + +```````````````````````````````` example +foo &<]]> +. +

                  foo &<]]>

                  +```````````````````````````````` + + +Entity and numeric character references are preserved in HTML +attributes: + +```````````````````````````````` example +foo
                  +. +

                  foo

                  +```````````````````````````````` + + +Backslash escapes do not work in HTML attributes: + +```````````````````````````````` example +foo +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  <a href=""">

                  +```````````````````````````````` + + +## Hard line breaks + +A line break (not in a code span or HTML tag) that is preceded +by two or more spaces and does not occur at the end of a block +is parsed as a [hard line break](@) (rendered +in HTML as a `
                  ` tag): + +```````````````````````````````` example +foo +baz +. +

                  foo
                  +baz

                  +```````````````````````````````` + + +For a more visible alternative, a backslash before the +[line ending] may be used instead of two spaces: + +```````````````````````````````` example +foo\ +baz +. +

                  foo
                  +baz

                  +```````````````````````````````` + + +More than two spaces can be used: + +```````````````````````````````` example +foo +baz +. +

                  foo
                  +baz

                  +```````````````````````````````` + + +Leading spaces at the beginning of the next line are ignored: + +```````````````````````````````` example +foo + bar +. +

                  foo
                  +bar

                  +```````````````````````````````` + + +```````````````````````````````` example +foo\ + bar +. +

                  foo
                  +bar

                  +```````````````````````````````` + + +Line breaks can occur inside emphasis, links, and other constructs +that allow inline content: + +```````````````````````````````` example +*foo +bar* +. +

                  foo
                  +bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo\ +bar* +. +

                  foo
                  +bar

                  +```````````````````````````````` + + +Line breaks do not occur inside code spans + +```````````````````````````````` example +`code +span` +. +

                  code span

                  +```````````````````````````````` + + +```````````````````````````````` example +`code\ +span` +. +

                  code\ span

                  +```````````````````````````````` + + +or HTML tags: + +```````````````````````````````` example +
                  +. +

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  +```````````````````````````````` + + +Hard line breaks are for separating inline content within a block. +Neither syntax for hard line breaks works at the end of a paragraph or +other block element: + +```````````````````````````````` example +foo\ +. +

                  foo\

                  +```````````````````````````````` + + +```````````````````````````````` example +foo +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +### foo\ +. +

                  foo\

                  +```````````````````````````````` + + +```````````````````````````````` example +### foo +. +

                  foo

                  +```````````````````````````````` + + +## Soft line breaks + +A regular line break (not in a code span or HTML tag) that is not +preceded by two or more spaces or a backslash is parsed as a +[softbreak](@). (A softbreak may be rendered in HTML either as a +[line ending] or as a space. The result will be the same in +browsers. In the examples here, a [line ending] will be used.) + +```````````````````````````````` example +foo +baz +. +

                  foo +baz

                  +```````````````````````````````` + + +Spaces at the end of the line and beginning of the next line are +removed: + +```````````````````````````````` example +foo + baz +. +

                  foo +baz

                  +```````````````````````````````` + + +A conforming parser may render a soft line break in HTML either as a +line break or as a space. + +A renderer may also provide an option to render soft line breaks +as hard line breaks. + +## Textual content + +Any characters not given an interpretation by the above rules will +be parsed as plain textual content. + +```````````````````````````````` example +hello $.;'there +. +

                  hello $.;'there

                  +```````````````````````````````` + + +```````````````````````````````` example +Foo χρῆν +. +

                  Foo χρῆν

                  +```````````````````````````````` + + +Internal spaces are preserved verbatim: + +```````````````````````````````` example +Multiple spaces +. +

                  Multiple spaces

                  +```````````````````````````````` + + + + +# Appendix: A parsing strategy + +In this appendix we describe some features of the parsing strategy +used in the CommonMark reference implementations. + +## Overview + +Parsing has two phases: + +1. In the first phase, lines of input are consumed and the block +structure of the document---its division into paragraphs, block quotes, +list items, and so on---is constructed. Text is assigned to these +blocks but not parsed. Link reference definitions are parsed and a +map of links is constructed. + +2. In the second phase, the raw text contents of paragraphs and headings +are parsed into sequences of Markdown inline elements (strings, +code spans, links, emphasis, and so on), using the map of link +references constructed in phase 1. + +At each point in processing, the document is represented as a tree of +**blocks**. The root of the tree is a `document` block. The `document` +may have any number of other blocks as **children**. These children +may, in turn, have other blocks as children. The last child of a block +is normally considered **open**, meaning that subsequent lines of input +can alter its contents. (Blocks that are not open are **closed**.) +Here, for example, is a possible document tree, with the open blocks +marked by arrows: + +``` tree +-> document + -> block_quote + paragraph + "Lorem ipsum dolor\nsit amet." + -> list (type=bullet tight=true bullet_char=-) + list_item + paragraph + "Qui *quodsi iracundia*" + -> list_item + -> paragraph + "aliquando id" +``` + +## Phase 1: block structure + +Each line that is processed has an effect on this tree. The line is +analyzed and, depending on its contents, the document may be altered +in one or more of the following ways: + +1. One or more open blocks may be closed. +2. One or more new blocks may be created as children of the + last open block. +3. Text may be added to the last (deepest) open block remaining + on the tree. + +Once a line has been incorporated into the tree in this way, +it can be discarded, so input can be read in a stream. + +For each line, we follow this procedure: + +1. First we iterate through the open blocks, starting with the +root document, and descending through last children down to the last +open block. Each block imposes a condition that the line must satisfy +if the block is to remain open. For example, a block quote requires a +`>` character. A paragraph requires a non-blank line. +In this phase we may match all or just some of the open +blocks. But we cannot close unmatched blocks yet, because we may have a +[lazy continuation line]. + +2. Next, after consuming the continuation markers for existing +blocks, we look for new block starts (e.g. `>` for a block quote). +If we encounter a new block start, we close any blocks unmatched +in step 1 before creating the new block as a child of the last +matched block. + +3. Finally, we look at the remainder of the line (after block +markers like `>`, list markers, and indentation have been consumed). +This is text that can be incorporated into the last open +block (a paragraph, code block, heading, or raw HTML). + +Setext headings are formed when we see a line of a paragraph +that is a [setext heading underline]. + +Reference link definitions are detected when a paragraph is closed; +the accumulated text lines are parsed to see if they begin with +one or more reference link definitions. Any remainder becomes a +normal paragraph. + +We can see how this works by considering how the tree above is +generated by four lines of Markdown: + +``` markdown +> Lorem ipsum dolor +sit amet. +> - Qui *quodsi iracundia* +> - aliquando id +``` + +At the outset, our document model is just + +``` tree +-> document +``` + +The first line of our text, + +``` markdown +> Lorem ipsum dolor +``` + +causes a `block_quote` block to be created as a child of our +open `document` block, and a `paragraph` block as a child of +the `block_quote`. Then the text is added to the last open +block, the `paragraph`: + +``` tree +-> document + -> block_quote + -> paragraph + "Lorem ipsum dolor" +``` + +The next line, + +``` markdown +sit amet. +``` + +is a "lazy continuation" of the open `paragraph`, so it gets added +to the paragraph's text: + +``` tree +-> document + -> block_quote + -> paragraph + "Lorem ipsum dolor\nsit amet." +``` + +The third line, + +``` markdown +> - Qui *quodsi iracundia* +``` + +causes the `paragraph` block to be closed, and a new `list` block +opened as a child of the `block_quote`. A `list_item` is also +added as a child of the `list`, and a `paragraph` as a child of +the `list_item`. The text is then added to the new `paragraph`: + +``` tree +-> document + -> block_quote + paragraph + "Lorem ipsum dolor\nsit amet." + -> list (type=bullet tight=true bullet_char=-) + -> list_item + -> paragraph + "Qui *quodsi iracundia*" +``` + +The fourth line, + +``` markdown +> - aliquando id +``` + +causes the `list_item` (and its child the `paragraph`) to be closed, +and a new `list_item` opened up as child of the `list`. A `paragraph` +is added as a child of the new `list_item`, to contain the text. +We thus obtain the final tree: + +``` tree +-> document + -> block_quote + paragraph + "Lorem ipsum dolor\nsit amet." + -> list (type=bullet tight=true bullet_char=-) + list_item + paragraph + "Qui *quodsi iracundia*" + -> list_item + -> paragraph + "aliquando id" +``` + +## Phase 2: inline structure + +Once all of the input has been parsed, all open blocks are closed. + +We then "walk the tree," visiting every node, and parse raw +string contents of paragraphs and headings as inlines. At this +point we have seen all the link reference definitions, so we can +resolve reference links as we go. + +``` tree +document + block_quote + paragraph + str "Lorem ipsum dolor" + softbreak + str "sit amet." + list (type=bullet tight=true bullet_char=-) + list_item + paragraph + str "Qui " + emph + str "quodsi iracundia" + list_item + paragraph + str "aliquando id" +``` + +Notice how the [line ending] in the first paragraph has +been parsed as a `softbreak`, and the asterisks in the first list item +have become an `emph`. + +### An algorithm for parsing nested emphasis and links + +By far the trickiest part of inline parsing is handling emphasis, +strong emphasis, links, and images. This is done using the following +algorithm. + +When we're parsing inlines and we hit either + +- a run of `*` or `_` characters, or +- a `[` or `![` + +we insert a text node with these symbols as its literal content, and we +add a pointer to this text node to the [delimiter stack](@). + +The [delimiter stack] is a doubly linked list. Each +element contains a pointer to a text node, plus information about + +- the type of delimiter (`[`, `![`, `*`, `_`) +- the number of delimiters, +- whether the delimiter is "active" (all are active to start), and +- whether the delimiter is a potential opener, a potential closer, + or both (which depends on what sort of characters precede + and follow the delimiters). + +When we hit a `]` character, we call the *look for link or image* +procedure (see below). + +When we hit the end of the input, we call the *process emphasis* +procedure (see below), with `stack_bottom` = NULL. + +#### *look for link or image* + +Starting at the top of the delimiter stack, we look backwards +through the stack for an opening `[` or `![` delimiter. + +- If we don't find one, we return a literal text node `]`. + +- If we do find one, but it's not *active*, we remove the inactive + delimiter from the stack, and return a literal text node `]`. + +- If we find one and it's active, then we parse ahead to see if + we have an inline link/image, reference link/image, compact reference + link/image, or shortcut reference link/image. + + + If we don't, then we remove the opening delimiter from the + delimiter stack and return a literal text node `]`. + + + If we do, then + + * We return a link or image node whose children are the inlines + after the text node pointed to by the opening delimiter. + + * We run *process emphasis* on these inlines, with the `[` opener + as `stack_bottom`. + + * We remove the opening delimiter. + + * If we have a link (and not an image), we also set all + `[` delimiters before the opening delimiter to *inactive*. (This + will prevent us from getting links within links.) + +#### *process emphasis* + +Parameter `stack_bottom` sets a lower bound to how far we +descend in the [delimiter stack]. If it is NULL, we can +go all the way to the bottom. Otherwise, we stop before +visiting `stack_bottom`. + +Let `current_position` point to the element on the [delimiter stack] +just above `stack_bottom` (or the first element if `stack_bottom` +is NULL). + +We keep track of the `openers_bottom` for each delimiter +type (`*`, `_`) and each length of the closing delimiter run +(modulo 3). Initialize this to `stack_bottom`. + +Then we repeat the following until we run out of potential +closers: + +- Move `current_position` forward in the delimiter stack (if needed) + until we find the first potential closer with delimiter `*` or `_`. + (This will be the potential closer closest + to the beginning of the input -- the first one in parse order.) + +- Now, look back in the stack (staying above `stack_bottom` and + the `openers_bottom` for this delimiter type) for the + first matching potential opener ("matching" means same delimiter). + +- If one is found: + + + Figure out whether we have emphasis or strong emphasis: + if both closer and opener spans have length >= 2, we have + strong, otherwise regular. + + + Insert an emph or strong emph node accordingly, after + the text node corresponding to the opener. + + + Remove any delimiters between the opener and closer from + the delimiter stack. + + + Remove 1 (for regular emph) or 2 (for strong emph) delimiters + from the opening and closing text nodes. If they become empty + as a result, remove them and remove the corresponding element + of the delimiter stack. If the closing node is removed, reset + `current_position` to the next element in the stack. + +- If none is found: + + + Set `openers_bottom` to the element before `current_position`. + (We know that there are no openers for this kind of closer up to and + including this point, so this puts a lower bound on future searches.) + + + If the closer at `current_position` is not a potential opener, + remove it from the delimiter stack (since we know it can't + be a closer either). + + + Advance `current_position` to the next element in the stack. + +After we're done, we remove all delimiters above `stack_bottom` from the +delimiter stack. + diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/cmark_benchmark.c b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/cmark_benchmark.c new file mode 100644 index 000000000..b4743584f --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/cmark_benchmark.c @@ -0,0 +1,91 @@ +#include +#include +#ifdef WIN32 +# include +#else +# include +# include +#endif +#include "cmark.h" + + +#ifdef WIN32 + +double get_time() +{ + LARGE_INTEGER t, f; + QueryPerformanceCounter(&t); + QueryPerformanceFrequency(&f); + return (double)t.QuadPart/(double)f.QuadPart; +} + +#else + + +double get_time() +{ + struct timeval t; + struct timezone tzp; + gettimeofday(&t, &tzp); + return t.tv_sec + t.tv_usec*1e-6; +} + +#endif + +int main(int argc, char **argv) { + char *markdown_file; + FILE *fp; + size_t size; + char *buf; + char *html; + double start, sum; + int i, n; + + n = argc > 1 ? atoi(argv[1]) : 50; + markdown_file = argc > 2 ? argv[2] : "_data.md"; + + fp = fopen(markdown_file,"r"); + if(fp == NULL){ + fprintf(stderr, "can not open %s", markdown_file); + exit(1); + } + + if(fseek(fp, 0, SEEK_END) != 0) { + fprintf(stderr, "can not seek %s", markdown_file); + exit(1); + } + if((size = ftell(fp)) < 0) { + fprintf(stderr, "can not get size of %s", markdown_file); + exit(1); + } + if(fseek(fp, 0, SEEK_SET) != 0) { + fprintf(stderr, "can not seek %s", markdown_file); + exit(1); + } + buf = malloc(sizeof(char) * size); + if(buf == NULL) { + fprintf(stderr, "can not allocate memory for %s", markdown_file); + exit(1); + } + + if(fread(buf, 1, size, fp) < size) { + fprintf(stderr, "failed to read for %s", markdown_file); + exit(1); + } + + fclose(fp); + + for(i = 0; i < n; i++) { + start = get_time(); + html = cmark_markdown_to_html(buf, size, CMARK_OPT_UNSAFE); + free(html); + sum += get_time() - start; + } + printf("----------- cmark -----------\n"); + printf("file: %s\n", markdown_file); + printf("iteration: %d\n", n); + printf("average: %.10f sec\n", sum / (double)n); + + free(buf); + return 0; +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/goldmark_benchmark.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/goldmark_benchmark.go new file mode 100644 index 000000000..9647de347 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/cmark/goldmark_benchmark.go @@ -0,0 +1,45 @@ +package main + +import ( + "bytes" + "fmt" + "io/ioutil" + "os" + "strconv" + "time" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/renderer/html" +) + +func main() { + n := 50 + file := "_data.md" + if len(os.Args) > 1 { + n, _ = strconv.Atoi(os.Args[1]) + } + if len(os.Args) > 2 { + file = os.Args[2] + } + source, err := ioutil.ReadFile(file) + if err != nil { + panic(err) + } + markdown := goldmark.New(goldmark.WithRendererOptions(html.WithXHTML(), html.WithUnsafe())) + var out bytes.Buffer + markdown.Convert([]byte(""), &out) + + sum := time.Duration(0) + for i := 0; i < n; i++ { + start := time.Now() + out.Reset() + if err := markdown.Convert(source, &out); err != nil { + panic(err) + } + sum += time.Since(start) + } + fmt.Printf("------- goldmark -------\n") + fmt.Printf("file: %s\n", file) + fmt.Printf("iteration: %d\n", n) + fmt.Printf("average: %.10f sec\n", float64((int64(sum)/int64(n)))/1000000000.0) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/go/_data.md b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/go/_data.md new file mode 100644 index 000000000..87db650b7 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/go/_data.md @@ -0,0 +1,9702 @@ +# Introduction + +## What is Markdown? + +Markdown is a plain text format for writing structured documents, +based on conventions for indicating formatting in email +and usenet posts. It was developed by John Gruber (with +help from Aaron Swartz) and released in 2004 in the form of a +[syntax description](http://daringfireball.net/projects/markdown/syntax) +and a Perl script (`Markdown.pl`) for converting Markdown to +HTML. In the next decade, dozens of implementations were +developed in many languages. Some extended the original +Markdown syntax with conventions for footnotes, tables, and +other document elements. Some allowed Markdown documents to be +rendered in formats other than HTML. Websites like Reddit, +StackOverflow, and GitHub had millions of people using Markdown. +And Markdown started to be used beyond the web, to author books, +articles, slide shows, letters, and lecture notes. + +What distinguishes Markdown from many other lightweight markup +syntaxes, which are often easier to write, is its readability. +As Gruber writes: + +> The overriding design goal for Markdown's formatting syntax is +> to make it as readable as possible. The idea is that a +> Markdown-formatted document should be publishable as-is, as +> plain text, without looking like it's been marked up with tags +> or formatting instructions. +> () + +The point can be illustrated by comparing a sample of +[AsciiDoc](http://www.methods.co.nz/asciidoc/) with +an equivalent sample of Markdown. Here is a sample of +AsciiDoc from the AsciiDoc manual: + +``` +1. List item one. ++ +List item one continued with a second paragraph followed by an +Indented block. ++ +................. +$ ls *.sh +$ mv *.sh ~/tmp +................. ++ +List item continued with a third paragraph. + +2. List item two continued with an open block. ++ +-- +This paragraph is part of the preceding list item. + +a. This list is nested and does not require explicit item +continuation. ++ +This paragraph is part of the preceding list item. + +b. List item b. + +This paragraph belongs to item two of the outer list. +-- +``` + +And here is the equivalent in Markdown: +``` +1. List item one. + + List item one continued with a second paragraph followed by an + Indented block. + + $ ls *.sh + $ mv *.sh ~/tmp + + List item continued with a third paragraph. + +2. List item two continued with an open block. + + This paragraph is part of the preceding list item. + + 1. This list is nested and does not require explicit item continuation. + + This paragraph is part of the preceding list item. + + 2. List item b. + + This paragraph belongs to item two of the outer list. +``` + +The AsciiDoc version is, arguably, easier to write. You don't need +to worry about indentation. But the Markdown version is much easier +to read. The nesting of list items is apparent to the eye in the +source, not just in the processed document. + +## Why is a spec needed? + +John Gruber's [canonical description of Markdown's +syntax](http://daringfireball.net/projects/markdown/syntax) +does not specify the syntax unambiguously. Here are some examples of +questions it does not answer: + +1. How much indentation is needed for a sublist? The spec says that + continuation paragraphs need to be indented four spaces, but is + not fully explicit about sublists. It is natural to think that + they, too, must be indented four spaces, but `Markdown.pl` does + not require that. This is hardly a "corner case," and divergences + between implementations on this issue often lead to surprises for + users in real documents. (See [this comment by John + Gruber](http://article.gmane.org/gmane.text.markdown.general/1997).) + +2. Is a blank line needed before a block quote or heading? + Most implementations do not require the blank line. However, + this can lead to unexpected results in hard-wrapped text, and + also to ambiguities in parsing (note that some implementations + put the heading inside the blockquote, while others do not). + (John Gruber has also spoken [in favor of requiring the blank + lines](http://article.gmane.org/gmane.text.markdown.general/2146).) + +3. Is a blank line needed before an indented code block? + (`Markdown.pl` requires it, but this is not mentioned in the + documentation, and some implementations do not require it.) + + ``` markdown + paragraph + code? + ``` + +4. What is the exact rule for determining when list items get + wrapped in `

                  ` tags? Can a list be partially "loose" and partially + "tight"? What should we do with a list like this? + + ``` markdown + 1. one + + 2. two + 3. three + ``` + + Or this? + + ``` markdown + 1. one + - a + + - b + 2. two + ``` + + (There are some relevant comments by John Gruber + [here](http://article.gmane.org/gmane.text.markdown.general/2554).) + +5. Can list markers be indented? Can ordered list markers be right-aligned? + + ``` markdown + 8. item 1 + 9. item 2 + 10. item 2a + ``` + +6. Is this one list with a thematic break in its second item, + or two lists separated by a thematic break? + + ``` markdown + * a + * * * * * + * b + ``` + +7. When list markers change from numbers to bullets, do we have + two lists or one? (The Markdown syntax description suggests two, + but the perl scripts and many other implementations produce one.) + + ``` markdown + 1. fee + 2. fie + - foe + - fum + ``` + +8. What are the precedence rules for the markers of inline structure? + For example, is the following a valid link, or does the code span + take precedence ? + + ``` markdown + [a backtick (`)](/url) and [another backtick (`)](/url). + ``` + +9. What are the precedence rules for markers of emphasis and strong + emphasis? For example, how should the following be parsed? + + ``` markdown + *foo *bar* baz* + ``` + +10. What are the precedence rules between block-level and inline-level + structure? For example, how should the following be parsed? + + ``` markdown + - `a long code span can contain a hyphen like this + - and it can screw things up` + ``` + +11. Can list items include section headings? (`Markdown.pl` does not + allow this, but does allow blockquotes to include headings.) + + ``` markdown + - # Heading + ``` + +12. Can list items be empty? + + ``` markdown + * a + * + * b + ``` + +13. Can link references be defined inside block quotes or list items? + + ``` markdown + > Blockquote [foo]. + > + > [foo]: /url + ``` + +14. If there are multiple definitions for the same reference, which takes + precedence? + + ``` markdown + [foo]: /url1 + [foo]: /url2 + + [foo][] + ``` + +In the absence of a spec, early implementers consulted `Markdown.pl` +to resolve these ambiguities. But `Markdown.pl` was quite buggy, and +gave manifestly bad results in many cases, so it was not a +satisfactory replacement for a spec. + +Because there is no unambiguous spec, implementations have diverged +considerably. As a result, users are often surprised to find that +a document that renders one way on one system (say, a GitHub wiki) +renders differently on another (say, converting to docbook using +pandoc). To make matters worse, because nothing in Markdown counts +as a "syntax error," the divergence often isn't discovered right away. + +## About this document + +This document attempts to specify Markdown syntax unambiguously. +It contains many examples with side-by-side Markdown and +HTML. These are intended to double as conformance tests. An +accompanying script `spec_tests.py` can be used to run the tests +against any Markdown program: + + python test/spec_tests.py --spec spec.txt --program PROGRAM + +Since this document describes how Markdown is to be parsed into +an abstract syntax tree, it would have made sense to use an abstract +representation of the syntax tree instead of HTML. But HTML is capable +of representing the structural distinctions we need to make, and the +choice of HTML for the tests makes it possible to run the tests against +an implementation without writing an abstract syntax tree renderer. + +This document is generated from a text file, `spec.txt`, written +in Markdown with a small extension for the side-by-side tests. +The script `tools/makespec.py` can be used to convert `spec.txt` into +HTML or CommonMark (which can then be converted into other formats). + +In the examples, the `→` character is used to represent tabs. + +# Preliminaries + +## Characters and lines + +Any sequence of [characters] is a valid CommonMark +document. + +A [character](@) is a Unicode code point. Although some +code points (for example, combining accents) do not correspond to +characters in an intuitive sense, all code points count as characters +for purposes of this spec. + +This spec does not specify an encoding; it thinks of lines as composed +of [characters] rather than bytes. A conforming parser may be limited +to a certain encoding. + +A [line](@) is a sequence of zero or more [characters] +other than newline (`U+000A`) or carriage return (`U+000D`), +followed by a [line ending] or by the end of file. + +A [line ending](@) is a newline (`U+000A`), a carriage return +(`U+000D`) not followed by a newline, or a carriage return and a +following newline. + +A line containing no characters, or a line containing only spaces +(`U+0020`) or tabs (`U+0009`), is called a [blank line](@). + +The following definitions of character classes will be used in this spec: + +A [whitespace character](@) is a space +(`U+0020`), tab (`U+0009`), newline (`U+000A`), line tabulation (`U+000B`), +form feed (`U+000C`), or carriage return (`U+000D`). + +[Whitespace](@) is a sequence of one or more [whitespace +characters]. + +A [Unicode whitespace character](@) is +any code point in the Unicode `Zs` general category, or a tab (`U+0009`), +carriage return (`U+000D`), newline (`U+000A`), or form feed +(`U+000C`). + +[Unicode whitespace](@) is a sequence of one +or more [Unicode whitespace characters]. + +A [space](@) is `U+0020`. + +A [non-whitespace character](@) is any character +that is not a [whitespace character]. + +An [ASCII punctuation character](@) +is `!`, `"`, `#`, `$`, `%`, `&`, `'`, `(`, `)`, +`*`, `+`, `,`, `-`, `.`, `/` (U+0021–2F), +`:`, `;`, `<`, `=`, `>`, `?`, `@` (U+003A–0040), +`[`, `\`, `]`, `^`, `_`, `` ` `` (U+005B–0060), +`{`, `|`, `}`, or `~` (U+007B–007E). + +A [punctuation character](@) is an [ASCII +punctuation character] or anything in +the general Unicode categories `Pc`, `Pd`, `Pe`, `Pf`, `Pi`, `Po`, or `Ps`. + +## Tabs + +Tabs in lines are not expanded to [spaces]. However, +in contexts where whitespace helps to define block structure, +tabs behave as if they were replaced by spaces with a tab stop +of 4 characters. + +Thus, for example, a tab can be used instead of four spaces +in an indented code block. (Note, however, that internal +tabs are passed through as literal tabs, not expanded to +spaces.) + +```````````````````````````````` example +→foo→baz→→bim +. +

                  foo→baz→→bim
                  +
                  +```````````````````````````````` + +```````````````````````````````` example + →foo→baz→→bim +. +
                  foo→baz→→bim
                  +
                  +```````````````````````````````` + +```````````````````````````````` example + a→a + ὐ→a +. +
                  a→a
                  +ὐ→a
                  +
                  +```````````````````````````````` + +In the following example, a continuation paragraph of a list +item is indented with a tab; this has exactly the same effect +as indentation with four spaces would: + +```````````````````````````````` example + - foo + +→bar +. +
                    +
                  • +

                    foo

                    +

                    bar

                    +
                  • +
                  +```````````````````````````````` + +```````````````````````````````` example +- foo + +→→bar +. +
                    +
                  • +

                    foo

                    +
                      bar
                    +
                    +
                  • +
                  +```````````````````````````````` + +Normally the `>` that begins a block quote may be followed +optionally by a space, which is not considered part of the +content. In the following case `>` is followed by a tab, +which is treated as if it were expanded into three spaces. +Since one of these spaces is considered part of the +delimiter, `foo` is considered to be indented six spaces +inside the block quote context, so we get an indented +code block starting with two spaces. + +```````````````````````````````` example +>→→foo +. +
                  +
                    foo
                  +
                  +
                  +```````````````````````````````` + +```````````````````````````````` example +-→→foo +. +
                    +
                  • +
                      foo
                    +
                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example + foo +→bar +. +
                  foo
                  +bar
                  +
                  +```````````````````````````````` + +```````````````````````````````` example + - foo + - bar +→ - baz +. +
                    +
                  • foo +
                      +
                    • bar +
                        +
                      • baz
                      • +
                      +
                    • +
                    +
                  • +
                  +```````````````````````````````` + +```````````````````````````````` example +#→Foo +. +

                  Foo

                  +```````````````````````````````` + +```````````````````````````````` example +*→*→*→ +. +
                  +```````````````````````````````` + + +## Insecure characters + +For security reasons, the Unicode character `U+0000` must be replaced +with the REPLACEMENT CHARACTER (`U+FFFD`). + +# Blocks and inlines + +We can think of a document as a sequence of +[blocks](@)---structural elements like paragraphs, block +quotations, lists, headings, rules, and code blocks. Some blocks (like +block quotes and list items) contain other blocks; others (like +headings and paragraphs) contain [inline](@) content---text, +links, emphasized text, images, code spans, and so on. + +## Precedence + +Indicators of block structure always take precedence over indicators +of inline structure. So, for example, the following is a list with +two items, not a list with one item containing a code span: + +```````````````````````````````` example +- `one +- two` +. +
                    +
                  • `one
                  • +
                  • two`
                  • +
                  +```````````````````````````````` + + +This means that parsing can proceed in two steps: first, the block +structure of the document can be discerned; second, text lines inside +paragraphs, headings, and other block constructs can be parsed for inline +structure. The second step requires information about link reference +definitions that will be available only at the end of the first +step. Note that the first step requires processing lines in sequence, +but the second can be parallelized, since the inline parsing of +one block element does not affect the inline parsing of any other. + +## Container blocks and leaf blocks + +We can divide blocks into two types: +[container blocks](@), +which can contain other blocks, and [leaf blocks](@), +which cannot. + +# Leaf blocks + +This section describes the different kinds of leaf block that make up a +Markdown document. + +## Thematic breaks + +A line consisting of 0-3 spaces of indentation, followed by a sequence +of three or more matching `-`, `_`, or `*` characters, each followed +optionally by any number of spaces or tabs, forms a +[thematic break](@). + +```````````````````````````````` example +*** +--- +___ +. +
                  +
                  +
                  +```````````````````````````````` + + +Wrong characters: + +```````````````````````````````` example ++++ +. +

                  +++

                  +```````````````````````````````` + + +```````````````````````````````` example +=== +. +

                  ===

                  +```````````````````````````````` + + +Not enough characters: + +```````````````````````````````` example +-- +** +__ +. +

                  -- +** +__

                  +```````````````````````````````` + + +One to three spaces indent are allowed: + +```````````````````````````````` example + *** + *** + *** +. +
                  +
                  +
                  +```````````````````````````````` + + +Four spaces is too many: + +```````````````````````````````` example + *** +. +
                  ***
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +Foo + *** +. +

                  Foo +***

                  +```````````````````````````````` + + +More than three characters may be used: + +```````````````````````````````` example +_____________________________________ +. +
                  +```````````````````````````````` + + +Spaces are allowed between the characters: + +```````````````````````````````` example + - - - +. +
                  +```````````````````````````````` + + +```````````````````````````````` example + ** * ** * ** * ** +. +
                  +```````````````````````````````` + + +```````````````````````````````` example +- - - - +. +
                  +```````````````````````````````` + + +Spaces are allowed at the end: + +```````````````````````````````` example +- - - - +. +
                  +```````````````````````````````` + + +However, no other characters may occur in the line: + +```````````````````````````````` example +_ _ _ _ a + +a------ + +---a--- +. +

                  _ _ _ _ a

                  +

                  a------

                  +

                  ---a---

                  +```````````````````````````````` + + +It is required that all of the [non-whitespace characters] be the same. +So, this is not a thematic break: + +```````````````````````````````` example + *-* +. +

                  -

                  +```````````````````````````````` + + +Thematic breaks do not need blank lines before or after: + +```````````````````````````````` example +- foo +*** +- bar +. +
                    +
                  • foo
                  • +
                  +
                  +
                    +
                  • bar
                  • +
                  +```````````````````````````````` + + +Thematic breaks can interrupt a paragraph: + +```````````````````````````````` example +Foo +*** +bar +. +

                  Foo

                  +
                  +

                  bar

                  +```````````````````````````````` + + +If a line of dashes that meets the above conditions for being a +thematic break could also be interpreted as the underline of a [setext +heading], the interpretation as a +[setext heading] takes precedence. Thus, for example, +this is a setext heading, not a paragraph followed by a thematic break: + +```````````````````````````````` example +Foo +--- +bar +. +

                  Foo

                  +

                  bar

                  +```````````````````````````````` + + +When both a thematic break and a list item are possible +interpretations of a line, the thematic break takes precedence: + +```````````````````````````````` example +* Foo +* * * +* Bar +. +
                    +
                  • Foo
                  • +
                  +
                  +
                    +
                  • Bar
                  • +
                  +```````````````````````````````` + + +If you want a thematic break in a list item, use a different bullet: + +```````````````````````````````` example +- Foo +- * * * +. +
                    +
                  • Foo
                  • +
                  • +
                    +
                  • +
                  +```````````````````````````````` + + +## ATX headings + +An [ATX heading](@) +consists of a string of characters, parsed as inline content, between an +opening sequence of 1--6 unescaped `#` characters and an optional +closing sequence of any number of unescaped `#` characters. +The opening sequence of `#` characters must be followed by a +[space] or by the end of line. The optional closing sequence of `#`s must be +preceded by a [space] and may be followed by spaces only. The opening +`#` character may be indented 0-3 spaces. The raw contents of the +heading are stripped of leading and trailing spaces before being parsed +as inline content. The heading level is equal to the number of `#` +characters in the opening sequence. + +Simple headings: + +```````````````````````````````` example +# foo +## foo +### foo +#### foo +##### foo +###### foo +. +

                  foo

                  +

                  foo

                  +

                  foo

                  +

                  foo

                  +
                  foo
                  +
                  foo
                  +```````````````````````````````` + + +More than six `#` characters is not a heading: + +```````````````````````````````` example +####### foo +. +

                  ####### foo

                  +```````````````````````````````` + + +At least one space is required between the `#` characters and the +heading's contents, unless the heading is empty. Note that many +implementations currently do not require the space. However, the +space was required by the +[original ATX implementation](http://www.aaronsw.com/2002/atx/atx.py), +and it helps prevent things like the following from being parsed as +headings: + +```````````````````````````````` example +#5 bolt + +#hashtag +. +

                  #5 bolt

                  +

                  #hashtag

                  +```````````````````````````````` + + +This is not a heading, because the first `#` is escaped: + +```````````````````````````````` example +\## foo +. +

                  ## foo

                  +```````````````````````````````` + + +Contents are parsed as inlines: + +```````````````````````````````` example +# foo *bar* \*baz\* +. +

                  foo bar *baz*

                  +```````````````````````````````` + + +Leading and trailing [whitespace] is ignored in parsing inline content: + +```````````````````````````````` example +# foo +. +

                  foo

                  +```````````````````````````````` + + +One to three spaces indentation are allowed: + +```````````````````````````````` example + ### foo + ## foo + # foo +. +

                  foo

                  +

                  foo

                  +

                  foo

                  +```````````````````````````````` + + +Four spaces are too much: + +```````````````````````````````` example + # foo +. +
                  # foo
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +foo + # bar +. +

                  foo +# bar

                  +```````````````````````````````` + + +A closing sequence of `#` characters is optional: + +```````````````````````````````` example +## foo ## + ### bar ### +. +

                  foo

                  +

                  bar

                  +```````````````````````````````` + + +It need not be the same length as the opening sequence: + +```````````````````````````````` example +# foo ################################## +##### foo ## +. +

                  foo

                  +
                  foo
                  +```````````````````````````````` + + +Spaces are allowed after the closing sequence: + +```````````````````````````````` example +### foo ### +. +

                  foo

                  +```````````````````````````````` + + +A sequence of `#` characters with anything but [spaces] following it +is not a closing sequence, but counts as part of the contents of the +heading: + +```````````````````````````````` example +### foo ### b +. +

                  foo ### b

                  +```````````````````````````````` + + +The closing sequence must be preceded by a space: + +```````````````````````````````` example +# foo# +. +

                  foo#

                  +```````````````````````````````` + + +Backslash-escaped `#` characters do not count as part +of the closing sequence: + +```````````````````````````````` example +### foo \### +## foo #\## +# foo \# +. +

                  foo ###

                  +

                  foo ###

                  +

                  foo #

                  +```````````````````````````````` + + +ATX headings need not be separated from surrounding content by blank +lines, and they can interrupt paragraphs: + +```````````````````````````````` example +**** +## foo +**** +. +
                  +

                  foo

                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +Foo bar +# baz +Bar foo +. +

                  Foo bar

                  +

                  baz

                  +

                  Bar foo

                  +```````````````````````````````` + + +ATX headings can be empty: + +```````````````````````````````` example +## +# +### ### +. +

                  +

                  +

                  +```````````````````````````````` + + +## Setext headings + +A [setext heading](@) consists of one or more +lines of text, each containing at least one [non-whitespace +character], with no more than 3 spaces indentation, followed by +a [setext heading underline]. The lines of text must be such +that, were they not followed by the setext heading underline, +they would be interpreted as a paragraph: they cannot be +interpretable as a [code fence], [ATX heading][ATX headings], +[block quote][block quotes], [thematic break][thematic breaks], +[list item][list items], or [HTML block][HTML blocks]. + +A [setext heading underline](@) is a sequence of +`=` characters or a sequence of `-` characters, with no more than 3 +spaces indentation and any number of trailing spaces. If a line +containing a single `-` can be interpreted as an +empty [list items], it should be interpreted this way +and not as a [setext heading underline]. + +The heading is a level 1 heading if `=` characters are used in +the [setext heading underline], and a level 2 heading if `-` +characters are used. The contents of the heading are the result +of parsing the preceding lines of text as CommonMark inline +content. + +In general, a setext heading need not be preceded or followed by a +blank line. However, it cannot interrupt a paragraph, so when a +setext heading comes after a paragraph, a blank line is needed between +them. + +Simple examples: + +```````````````````````````````` example +Foo *bar* +========= + +Foo *bar* +--------- +. +

                  Foo bar

                  +

                  Foo bar

                  +```````````````````````````````` + + +The content of the header may span more than one line: + +```````````````````````````````` example +Foo *bar +baz* +==== +. +

                  Foo bar +baz

                  +```````````````````````````````` + +The contents are the result of parsing the headings's raw +content as inlines. The heading's raw content is formed by +concatenating the lines and removing initial and final +[whitespace]. + +```````````````````````````````` example + Foo *bar +baz*→ +==== +. +

                  Foo bar +baz

                  +```````````````````````````````` + + +The underlining can be any length: + +```````````````````````````````` example +Foo +------------------------- + +Foo += +. +

                  Foo

                  +

                  Foo

                  +```````````````````````````````` + + +The heading content can be indented up to three spaces, and need +not line up with the underlining: + +```````````````````````````````` example + Foo +--- + + Foo +----- + + Foo + === +. +

                  Foo

                  +

                  Foo

                  +

                  Foo

                  +```````````````````````````````` + + +Four spaces indent is too much: + +```````````````````````````````` example + Foo + --- + + Foo +--- +. +
                  Foo
                  +---
                  +
                  +Foo
                  +
                  +
                  +```````````````````````````````` + + +The setext heading underline can be indented up to three spaces, and +may have trailing spaces: + +```````````````````````````````` example +Foo + ---- +. +

                  Foo

                  +```````````````````````````````` + + +Four spaces is too much: + +```````````````````````````````` example +Foo + --- +. +

                  Foo +---

                  +```````````````````````````````` + + +The setext heading underline cannot contain internal spaces: + +```````````````````````````````` example +Foo += = + +Foo +--- - +. +

                  Foo += =

                  +

                  Foo

                  +
                  +```````````````````````````````` + + +Trailing spaces in the content line do not cause a line break: + +```````````````````````````````` example +Foo +----- +. +

                  Foo

                  +```````````````````````````````` + + +Nor does a backslash at the end: + +```````````````````````````````` example +Foo\ +---- +. +

                  Foo\

                  +```````````````````````````````` + + +Since indicators of block structure take precedence over +indicators of inline structure, the following are setext headings: + +```````````````````````````````` example +`Foo +---- +` + +
                  +. +

                  `Foo

                  +

                  `

                  +

                  <a title="a lot

                  +

                  of dashes"/>

                  +```````````````````````````````` + + +The setext heading underline cannot be a [lazy continuation +line] in a list item or block quote: + +```````````````````````````````` example +> Foo +--- +. +
                  +

                  Foo

                  +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> foo +bar +=== +. +
                  +

                  foo +bar +===

                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +- Foo +--- +. +
                    +
                  • Foo
                  • +
                  +
                  +```````````````````````````````` + + +A blank line is needed between a paragraph and a following +setext heading, since otherwise the paragraph becomes part +of the heading's content: + +```````````````````````````````` example +Foo +Bar +--- +. +

                  Foo +Bar

                  +```````````````````````````````` + + +But in general a blank line is not required before or after +setext headings: + +```````````````````````````````` example +--- +Foo +--- +Bar +--- +Baz +. +
                  +

                  Foo

                  +

                  Bar

                  +

                  Baz

                  +```````````````````````````````` + + +Setext headings cannot be empty: + +```````````````````````````````` example + +==== +. +

                  ====

                  +```````````````````````````````` + + +Setext heading text lines must not be interpretable as block +constructs other than paragraphs. So, the line of dashes +in these examples gets interpreted as a thematic break: + +```````````````````````````````` example +--- +--- +. +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +- foo +----- +. +
                    +
                  • foo
                  • +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + foo +--- +. +
                  foo
                  +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> foo +----- +. +
                  +

                  foo

                  +
                  +
                  +```````````````````````````````` + + +If you want a heading with `> foo` as its literal text, you can +use backslash escapes: + +```````````````````````````````` example +\> foo +------ +. +

                  > foo

                  +```````````````````````````````` + + +**Compatibility note:** Most existing Markdown implementations +do not allow the text of setext headings to span multiple lines. +But there is no consensus about how to interpret + +``` markdown +Foo +bar +--- +baz +``` + +One can find four different interpretations: + +1. paragraph "Foo", heading "bar", paragraph "baz" +2. paragraph "Foo bar", thematic break, paragraph "baz" +3. paragraph "Foo bar --- baz" +4. heading "Foo bar", paragraph "baz" + +We find interpretation 4 most natural, and interpretation 4 +increases the expressive power of CommonMark, by allowing +multiline headings. Authors who want interpretation 1 can +put a blank line after the first paragraph: + +```````````````````````````````` example +Foo + +bar +--- +baz +. +

                  Foo

                  +

                  bar

                  +

                  baz

                  +```````````````````````````````` + + +Authors who want interpretation 2 can put blank lines around +the thematic break, + +```````````````````````````````` example +Foo +bar + +--- + +baz +. +

                  Foo +bar

                  +
                  +

                  baz

                  +```````````````````````````````` + + +or use a thematic break that cannot count as a [setext heading +underline], such as + +```````````````````````````````` example +Foo +bar +* * * +baz +. +

                  Foo +bar

                  +
                  +

                  baz

                  +```````````````````````````````` + + +Authors who want interpretation 3 can use backslash escapes: + +```````````````````````````````` example +Foo +bar +\--- +baz +. +

                  Foo +bar +--- +baz

                  +```````````````````````````````` + + +## Indented code blocks + +An [indented code block](@) is composed of one or more +[indented chunks] separated by blank lines. +An [indented chunk](@) is a sequence of non-blank lines, +each indented four or more spaces. The contents of the code block are +the literal contents of the lines, including trailing +[line endings], minus four spaces of indentation. +An indented code block has no [info string]. + +An indented code block cannot interrupt a paragraph, so there must be +a blank line between a paragraph and a following indented code block. +(A blank line is not needed, however, between a code block and a following +paragraph.) + +```````````````````````````````` example + a simple + indented code block +. +
                  a simple
                  +  indented code block
                  +
                  +```````````````````````````````` + + +If there is any ambiguity between an interpretation of indentation +as a code block and as indicating that material belongs to a [list +item][list items], the list item interpretation takes precedence: + +```````````````````````````````` example + - foo + + bar +. +
                    +
                  • +

                    foo

                    +

                    bar

                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +1. foo + + - bar +. +
                    +
                  1. +

                    foo

                    +
                      +
                    • bar
                    • +
                    +
                  2. +
                  +```````````````````````````````` + + + +The contents of a code block are literal text, and do not get parsed +as Markdown: + +```````````````````````````````` example +
                  + *hi* + + - one +. +
                  <a/>
                  +*hi*
                  +
                  +- one
                  +
                  +```````````````````````````````` + + +Here we have three chunks separated by blank lines: + +```````````````````````````````` example + chunk1 + + chunk2 + + + + chunk3 +. +
                  chunk1
                  +
                  +chunk2
                  +
                  +
                  +
                  +chunk3
                  +
                  +```````````````````````````````` + + +Any initial spaces beyond four will be included in the content, even +in interior blank lines: + +```````````````````````````````` example + chunk1 + + chunk2 +. +
                  chunk1
                  +  
                  +  chunk2
                  +
                  +```````````````````````````````` + + +An indented code block cannot interrupt a paragraph. (This +allows hanging indents and the like.) + +```````````````````````````````` example +Foo + bar + +. +

                  Foo +bar

                  +```````````````````````````````` + + +However, any non-blank line with fewer than four leading spaces ends +the code block immediately. So a paragraph may occur immediately +after indented code: + +```````````````````````````````` example + foo +bar +. +
                  foo
                  +
                  +

                  bar

                  +```````````````````````````````` + + +And indented code can occur immediately before and after other kinds of +blocks: + +```````````````````````````````` example +# Heading + foo +Heading +------ + foo +---- +. +

                  Heading

                  +
                  foo
                  +
                  +

                  Heading

                  +
                  foo
                  +
                  +
                  +```````````````````````````````` + + +The first line can be indented more than four spaces: + +```````````````````````````````` example + foo + bar +. +
                      foo
                  +bar
                  +
                  +```````````````````````````````` + + +Blank lines preceding or following an indented code block +are not included in it: + +```````````````````````````````` example + + + foo + + +. +
                  foo
                  +
                  +```````````````````````````````` + + +Trailing spaces are included in the code block's content: + +```````````````````````````````` example + foo +. +
                  foo  
                  +
                  +```````````````````````````````` + + + +## Fenced code blocks + +A [code fence](@) is a sequence +of at least three consecutive backtick characters (`` ` ``) or +tildes (`~`). (Tildes and backticks cannot be mixed.) +A [fenced code block](@) +begins with a code fence, indented no more than three spaces. + +The line with the opening code fence may optionally contain some text +following the code fence; this is trimmed of leading and trailing +whitespace and called the [info string](@). If the [info string] comes +after a backtick fence, it may not contain any backtick +characters. (The reason for this restriction is that otherwise +some inline code would be incorrectly interpreted as the +beginning of a fenced code block.) + +The content of the code block consists of all subsequent lines, until +a closing [code fence] of the same type as the code block +began with (backticks or tildes), and with at least as many backticks +or tildes as the opening code fence. If the leading code fence is +indented N spaces, then up to N spaces of indentation are removed from +each line of the content (if present). (If a content line is not +indented, it is preserved unchanged. If it is indented less than N +spaces, all of the indentation is removed.) + +The closing code fence may be indented up to three spaces, and may be +followed only by spaces, which are ignored. If the end of the +containing block (or document) is reached and no closing code fence +has been found, the code block contains all of the lines after the +opening code fence until the end of the containing block (or +document). (An alternative spec would require backtracking in the +event that a closing code fence is not found. But this makes parsing +much less efficient, and there seems to be no real down side to the +behavior described here.) + +A fenced code block may interrupt a paragraph, and does not require +a blank line either before or after. + +The content of a code fence is treated as literal text, not parsed +as inlines. The first word of the [info string] is typically used to +specify the language of the code sample, and rendered in the `class` +attribute of the `code` tag. However, this spec does not mandate any +particular treatment of the [info string]. + +Here is a simple example with backticks: + +```````````````````````````````` example +``` +< + > +``` +. +
                  <
                  + >
                  +
                  +```````````````````````````````` + + +With tildes: + +```````````````````````````````` example +~~~ +< + > +~~~ +. +
                  <
                  + >
                  +
                  +```````````````````````````````` + +Fewer than three backticks is not enough: + +```````````````````````````````` example +`` +foo +`` +. +

                  foo

                  +```````````````````````````````` + +The closing code fence must use the same character as the opening +fence: + +```````````````````````````````` example +``` +aaa +~~~ +``` +. +
                  aaa
                  +~~~
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +~~~ +aaa +``` +~~~ +. +
                  aaa
                  +```
                  +
                  +```````````````````````````````` + + +The closing code fence must be at least as long as the opening fence: + +```````````````````````````````` example +```` +aaa +``` +`````` +. +
                  aaa
                  +```
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +~~~~ +aaa +~~~ +~~~~ +. +
                  aaa
                  +~~~
                  +
                  +```````````````````````````````` + + +Unclosed code blocks are closed by the end of the document +(or the enclosing [block quote][block quotes] or [list item][list items]): + +```````````````````````````````` example +``` +. +
                  +```````````````````````````````` + + +```````````````````````````````` example +````` + +``` +aaa +. +
                  
                  +```
                  +aaa
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> ``` +> aaa + +bbb +. +
                  +
                  aaa
                  +
                  +
                  +

                  bbb

                  +```````````````````````````````` + + +A code block can have all empty lines as its content: + +```````````````````````````````` example +``` + + +``` +. +
                  
                  +  
                  +
                  +```````````````````````````````` + + +A code block can be empty: + +```````````````````````````````` example +``` +``` +. +
                  +```````````````````````````````` + + +Fences can be indented. If the opening fence is indented, +content lines will have equivalent opening indentation removed, +if present: + +```````````````````````````````` example + ``` + aaa +aaa +``` +. +
                  aaa
                  +aaa
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + ``` +aaa + aaa +aaa + ``` +. +
                  aaa
                  +aaa
                  +aaa
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + ``` + aaa + aaa + aaa + ``` +. +
                  aaa
                  + aaa
                  +aaa
                  +
                  +```````````````````````````````` + + +Four spaces indentation produces an indented code block: + +```````````````````````````````` example + ``` + aaa + ``` +. +
                  ```
                  +aaa
                  +```
                  +
                  +```````````````````````````````` + + +Closing fences may be indented by 0-3 spaces, and their indentation +need not match that of the opening fence: + +```````````````````````````````` example +``` +aaa + ``` +. +
                  aaa
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + ``` +aaa + ``` +. +
                  aaa
                  +
                  +```````````````````````````````` + + +This is not a closing fence, because it is indented 4 spaces: + +```````````````````````````````` example +``` +aaa + ``` +. +
                  aaa
                  +    ```
                  +
                  +```````````````````````````````` + + + +Code fences (opening and closing) cannot contain internal spaces: + +```````````````````````````````` example +``` ``` +aaa +. +

                  +aaa

                  +```````````````````````````````` + + +```````````````````````````````` example +~~~~~~ +aaa +~~~ ~~ +. +
                  aaa
                  +~~~ ~~
                  +
                  +```````````````````````````````` + + +Fenced code blocks can interrupt paragraphs, and can be followed +directly by paragraphs, without a blank line between: + +```````````````````````````````` example +foo +``` +bar +``` +baz +. +

                  foo

                  +
                  bar
                  +
                  +

                  baz

                  +```````````````````````````````` + + +Other blocks can also occur before and after fenced code blocks +without an intervening blank line: + +```````````````````````````````` example +foo +--- +~~~ +bar +~~~ +# baz +. +

                  foo

                  +
                  bar
                  +
                  +

                  baz

                  +```````````````````````````````` + + +An [info string] can be provided after the opening code fence. +Although this spec doesn't mandate any particular treatment of +the info string, the first word is typically used to specify +the language of the code block. In HTML output, the language is +normally indicated by adding a class to the `code` element consisting +of `language-` followed by the language name. + +```````````````````````````````` example +```ruby +def foo(x) + return 3 +end +``` +. +
                  def foo(x)
                  +  return 3
                  +end
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +~~~~ ruby startline=3 $%@#$ +def foo(x) + return 3 +end +~~~~~~~ +. +
                  def foo(x)
                  +  return 3
                  +end
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +````; +```` +. +
                  +```````````````````````````````` + + +[Info strings] for backtick code blocks cannot contain backticks: + +```````````````````````````````` example +``` aa ``` +foo +. +

                  aa +foo

                  +```````````````````````````````` + + +[Info strings] for tilde code blocks can contain backticks and tildes: + +```````````````````````````````` example +~~~ aa ``` ~~~ +foo +~~~ +. +
                  foo
                  +
                  +```````````````````````````````` + + +Closing code fences cannot have [info strings]: + +```````````````````````````````` example +``` +``` aaa +``` +. +
                  ``` aaa
                  +
                  +```````````````````````````````` + + + +## HTML blocks + +An [HTML block](@) is a group of lines that is treated +as raw HTML (and will not be escaped in HTML output). + +There are seven kinds of [HTML block], which can be defined by their +start and end conditions. The block begins with a line that meets a +[start condition](@) (after up to three spaces optional indentation). +It ends with the first subsequent line that meets a matching [end +condition](@), or the last line of the document, or the last line of +the [container block](#container-blocks) containing the current HTML +block, if no line is encountered that meets the [end condition]. If +the first line meets both the [start condition] and the [end +condition], the block will contain just that line. + +1. **Start condition:** line begins with the string ``, or the end of the line.\ +**End condition:** line contains an end tag +``, `
                  `, or `` (case-insensitive; it +need not match the start tag). + +2. **Start condition:** line begins with the string ``. + +3. **Start condition:** line begins with the string ``. + +4. **Start condition:** line begins with the string ``. + +5. **Start condition:** line begins with the string +``. + +6. **Start condition:** line begins the string `<` or ``, or +the string `/>`.\ +**End condition:** line is followed by a [blank line]. + +7. **Start condition:** line begins with a complete [open tag] +(with any [tag name] other than `script`, +`style`, or `pre`) or a complete [closing tag], +followed only by [whitespace] or the end of the line.\ +**End condition:** line is followed by a [blank line]. + +HTML blocks continue until they are closed by their appropriate +[end condition], or the last line of the document or other [container +block](#container-blocks). This means any HTML **within an HTML +block** that might otherwise be recognised as a start condition will +be ignored by the parser and passed through as-is, without changing +the parser's state. + +For instance, `
                  ` within a HTML block started by `` will not affect
                  +the parser state; as the HTML block was started in by start condition 6, it
                  +will end at any blank line. This can be surprising:
                  +
                  +```````````````````````````````` example
                  +
                  +
                  +**Hello**,
                  +
                  +_world_.
                  +
                  +
                  +. +
                  +
                  +**Hello**,
                  +

                  world. +

                  +
                  +```````````````````````````````` + +In this case, the HTML block is terminated by the newline — the `**Hello**` +text remains verbatim — and regular parsing resumes, with a paragraph, +emphasised `world` and inline and block HTML following. + +All types of [HTML blocks] except type 7 may interrupt +a paragraph. Blocks of type 7 may not interrupt a paragraph. +(This restriction is intended to prevent unwanted interpretation +of long tags inside a wrapped paragraph as starting HTML blocks.) + +Some simple examples follow. Here are some basic HTML blocks +of type 6: + +```````````````````````````````` example + + + + +
                  + hi +
                  + +okay. +. + + + + +
                  + hi +
                  +

                  okay.

                  +```````````````````````````````` + + +```````````````````````````````` example +
                  +*foo* +```````````````````````````````` + + +Here we have two HTML blocks with a Markdown paragraph between them: + +```````````````````````````````` example +
                  + +*Markdown* + +
                  +. +
                  +

                  Markdown

                  +
                  +```````````````````````````````` + + +The tag on the first line can be partial, as long +as it is split where there would be whitespace: + +```````````````````````````````` example +
                  +
                  +. +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +
                  +
                  +. +
                  +
                  +```````````````````````````````` + + +An open tag need not be closed: +```````````````````````````````` example +
                  +*foo* + +*bar* +. +
                  +*foo* +

                  bar

                  +```````````````````````````````` + + + +A partial tag need not even be completed (garbage +in, garbage out): + +```````````````````````````````` example +
                  +. + +```````````````````````````````` + + +```````````````````````````````` example +
                  +foo +
                  +. +
                  +foo +
                  +```````````````````````````````` + + +Everything until the next blank line or end of document +gets included in the HTML block. So, in the following +example, what looks like a Markdown code block +is actually part of the HTML block, which continues until a blank +line or the end of the document is reached: + +```````````````````````````````` example +
                  +``` c +int x = 33; +``` +. +
                  +``` c +int x = 33; +``` +```````````````````````````````` + + +To start an [HTML block] with a tag that is *not* in the +list of block-level tags in (6), you must put the tag by +itself on the first line (and it must be complete): + +```````````````````````````````` example + +*bar* + +. + +*bar* + +```````````````````````````````` + + +In type 7 blocks, the [tag name] can be anything: + +```````````````````````````````` example + +*bar* + +. + +*bar* + +```````````````````````````````` + + +```````````````````````````````` example + +*bar* + +. + +*bar* + +```````````````````````````````` + + +```````````````````````````````` example + +*bar* +. + +*bar* +```````````````````````````````` + + +These rules are designed to allow us to work with tags that +can function as either block-level or inline-level tags. +The `` tag is a nice example. We can surround content with +`` tags in three different ways. In this case, we get a raw +HTML block, because the `` tag is on a line by itself: + +```````````````````````````````` example + +*foo* + +. + +*foo* + +```````````````````````````````` + + +In this case, we get a raw HTML block that just includes +the `` tag (because it ends with the following blank +line). So the contents get interpreted as CommonMark: + +```````````````````````````````` example + + +*foo* + + +. + +

                  foo

                  +
                  +```````````````````````````````` + + +Finally, in this case, the `` tags are interpreted +as [raw HTML] *inside* the CommonMark paragraph. (Because +the tag is not on a line by itself, we get inline HTML +rather than an [HTML block].) + +```````````````````````````````` example +*foo* +. +

                  foo

                  +```````````````````````````````` + + +HTML tags designed to contain literal content +(`script`, `style`, `pre`), comments, processing instructions, +and declarations are treated somewhat differently. +Instead of ending at the first blank line, these blocks +end at the first line containing a corresponding end tag. +As a result, these blocks can contain blank lines: + +A pre tag (type 1): + +```````````````````````````````` example +
                  
                  +import Text.HTML.TagSoup
                  +
                  +main :: IO ()
                  +main = print $ parseTags tags
                  +
                  +okay +. +
                  
                  +import Text.HTML.TagSoup
                  +
                  +main :: IO ()
                  +main = print $ parseTags tags
                  +
                  +

                  okay

                  +```````````````````````````````` + + +A script tag (type 1): + +```````````````````````````````` example + +okay +. + +

                  okay

                  +```````````````````````````````` + + +A style tag (type 1): + +```````````````````````````````` example + +okay +. + +

                  okay

                  +```````````````````````````````` + + +If there is no matching end tag, the block will end at the +end of the document (or the enclosing [block quote][block quotes] +or [list item][list items]): + +```````````````````````````````` example + +*foo* +. + +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +*bar* +*baz* +. +*bar* +

                  baz

                  +```````````````````````````````` + + +Note that anything on the last line after the +end tag will be included in the [HTML block]: + +```````````````````````````````` example +1. *bar* +. +1. *bar* +```````````````````````````````` + + +A comment (type 2): + +```````````````````````````````` example + +okay +. + +

                  okay

                  +```````````````````````````````` + + + +A processing instruction (type 3): + +```````````````````````````````` example +'; + +?> +okay +. +'; + +?> +

                  okay

                  +```````````````````````````````` + + +A declaration (type 4): + +```````````````````````````````` example + +. + +```````````````````````````````` + + +CDATA (type 5): + +```````````````````````````````` example + +okay +. + +

                  okay

                  +```````````````````````````````` + + +The opening tag can be indented 1-3 spaces, but not 4: + +```````````````````````````````` example + + + +. + +
                  <!-- foo -->
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +
                  + +
                  +. +
                  +
                  <div>
                  +
                  +```````````````````````````````` + + +An HTML block of types 1--6 can interrupt a paragraph, and need not be +preceded by a blank line. + +```````````````````````````````` example +Foo +
                  +bar +
                  +. +

                  Foo

                  +
                  +bar +
                  +```````````````````````````````` + + +However, a following blank line is needed, except at the end of +a document, and except for blocks of types 1--5, [above][HTML +block]: + +```````````````````````````````` example +
                  +bar +
                  +*foo* +. +
                  +bar +
                  +*foo* +```````````````````````````````` + + +HTML blocks of type 7 cannot interrupt a paragraph: + +```````````````````````````````` example +Foo + +baz +. +

                  Foo + +baz

                  +```````````````````````````````` + + +This rule differs from John Gruber's original Markdown syntax +specification, which says: + +> The only restrictions are that block-level HTML elements — +> e.g. `
                  `, ``, `
                  `, `

                  `, etc. — must be separated from +> surrounding content by blank lines, and the start and end tags of the +> block should not be indented with tabs or spaces. + +In some ways Gruber's rule is more restrictive than the one given +here: + +- It requires that an HTML block be preceded by a blank line. +- It does not allow the start tag to be indented. +- It requires a matching end tag, which it also does not allow to + be indented. + +Most Markdown implementations (including some of Gruber's own) do not +respect all of these restrictions. + +There is one respect, however, in which Gruber's rule is more liberal +than the one given here, since it allows blank lines to occur inside +an HTML block. There are two reasons for disallowing them here. +First, it removes the need to parse balanced tags, which is +expensive and can require backtracking from the end of the document +if no matching end tag is found. Second, it provides a very simple +and flexible way of including Markdown content inside HTML tags: +simply separate the Markdown from the HTML using blank lines: + +Compare: + +```````````````````````````````` example +

                  + +*Emphasized* text. + +
                  +. +
                  +

                  Emphasized text.

                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +
                  +*Emphasized* text. +
                  +. +
                  +*Emphasized* text. +
                  +```````````````````````````````` + + +Some Markdown implementations have adopted a convention of +interpreting content inside tags as text if the open tag has +the attribute `markdown=1`. The rule given above seems a simpler and +more elegant way of achieving the same expressive power, which is also +much simpler to parse. + +The main potential drawback is that one can no longer paste HTML +blocks into Markdown documents with 100% reliability. However, +*in most cases* this will work fine, because the blank lines in +HTML are usually followed by HTML block tags. For example: + +```````````````````````````````` example +
                  + + + + + + + +
                  +Hi +
                  +. + + + + +
                  +Hi +
                  +```````````````````````````````` + + +There are problems, however, if the inner tags are indented +*and* separated by spaces, as then they will be interpreted as +an indented code block: + +```````````````````````````````` example + + + + + + + + +
                  + Hi +
                  +. + + +
                  <td>
                  +  Hi
                  +</td>
                  +
                  + +
                  +```````````````````````````````` + + +Fortunately, blank lines are usually not necessary and can be +deleted. The exception is inside `
                  ` tags, but as described
                  +[above][HTML blocks], raw HTML blocks starting with `
                  `
                  +*can* contain blank lines.
                  +
                  +## Link reference definitions
                  +
                  +A [link reference definition](@)
                  +consists of a [link label], indented up to three spaces, followed
                  +by a colon (`:`), optional [whitespace] (including up to one
                  +[line ending]), a [link destination],
                  +optional [whitespace] (including up to one
                  +[line ending]), and an optional [link
                  +title], which if it is present must be separated
                  +from the [link destination] by [whitespace].
                  +No further [non-whitespace characters] may occur on the line.
                  +
                  +A [link reference definition]
                  +does not correspond to a structural element of a document.  Instead, it
                  +defines a label which can be used in [reference links]
                  +and reference-style [images] elsewhere in the document.  [Link
                  +reference definitions] can come either before or after the links that use
                  +them.
                  +
                  +```````````````````````````````` example
                  +[foo]: /url "title"
                  +
                  +[foo]
                  +.
                  +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example + [foo]: + /url + 'the title' + +[foo] +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[Foo*bar\]]:my_(url) 'title (with parens)' + +[Foo*bar\]] +. +

                  Foo*bar]

                  +```````````````````````````````` + + +```````````````````````````````` example +[Foo bar]: + +'title' + +[Foo bar] +. +

                  Foo bar

                  +```````````````````````````````` + + +The title may extend over multiple lines: + +```````````````````````````````` example +[foo]: /url ' +title +line1 +line2 +' + +[foo] +. +

                  foo

                  +```````````````````````````````` + + +However, it may not contain a [blank line]: + +```````````````````````````````` example +[foo]: /url 'title + +with blank line' + +[foo] +. +

                  [foo]: /url 'title

                  +

                  with blank line'

                  +

                  [foo]

                  +```````````````````````````````` + + +The title may be omitted: + +```````````````````````````````` example +[foo]: +/url + +[foo] +. +

                  foo

                  +```````````````````````````````` + + +The link destination may not be omitted: + +```````````````````````````````` example +[foo]: + +[foo] +. +

                  [foo]:

                  +

                  [foo]

                  +```````````````````````````````` + + However, an empty link destination may be specified using + angle brackets: + +```````````````````````````````` example +[foo]: <> + +[foo] +. +

                  foo

                  +```````````````````````````````` + +The title must be separated from the link destination by +whitespace: + +```````````````````````````````` example +[foo]: (baz) + +[foo] +. +

                  [foo]: (baz)

                  +

                  [foo]

                  +```````````````````````````````` + + +Both title and destination can contain backslash escapes +and literal backslashes: + +```````````````````````````````` example +[foo]: /url\bar\*baz "foo\"bar\baz" + +[foo] +. +

                  foo

                  +```````````````````````````````` + + +A link can come before its corresponding definition: + +```````````````````````````````` example +[foo] + +[foo]: url +. +

                  foo

                  +```````````````````````````````` + + +If there are several matching definitions, the first one takes +precedence: + +```````````````````````````````` example +[foo] + +[foo]: first +[foo]: second +. +

                  foo

                  +```````````````````````````````` + + +As noted in the section on [Links], matching of labels is +case-insensitive (see [matches]). + +```````````````````````````````` example +[FOO]: /url + +[Foo] +. +

                  Foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[ΑΓΩ]: /φου + +[αγω] +. +

                  αγω

                  +```````````````````````````````` + + +Here is a link reference definition with no corresponding link. +It contributes nothing to the document. + +```````````````````````````````` example +[foo]: /url +. +```````````````````````````````` + + +Here is another one: + +```````````````````````````````` example +[ +foo +]: /url +bar +. +

                  bar

                  +```````````````````````````````` + + +This is not a link reference definition, because there are +[non-whitespace characters] after the title: + +```````````````````````````````` example +[foo]: /url "title" ok +. +

                  [foo]: /url "title" ok

                  +```````````````````````````````` + + +This is a link reference definition, but it has no title: + +```````````````````````````````` example +[foo]: /url +"title" ok +. +

                  "title" ok

                  +```````````````````````````````` + + +This is not a link reference definition, because it is indented +four spaces: + +```````````````````````````````` example + [foo]: /url "title" + +[foo] +. +
                  [foo]: /url "title"
                  +
                  +

                  [foo]

                  +```````````````````````````````` + + +This is not a link reference definition, because it occurs inside +a code block: + +```````````````````````````````` example +``` +[foo]: /url +``` + +[foo] +. +
                  [foo]: /url
                  +
                  +

                  [foo]

                  +```````````````````````````````` + + +A [link reference definition] cannot interrupt a paragraph. + +```````````````````````````````` example +Foo +[bar]: /baz + +[bar] +. +

                  Foo +[bar]: /baz

                  +

                  [bar]

                  +```````````````````````````````` + + +However, it can directly follow other block elements, such as headings +and thematic breaks, and it need not be followed by a blank line. + +```````````````````````````````` example +# [Foo] +[foo]: /url +> bar +. +

                  Foo

                  +
                  +

                  bar

                  +
                  +```````````````````````````````` + +```````````````````````````````` example +[foo]: /url +bar +=== +[foo] +. +

                  bar

                  +

                  foo

                  +```````````````````````````````` + +```````````````````````````````` example +[foo]: /url +=== +[foo] +. +

                  === +foo

                  +```````````````````````````````` + + +Several [link reference definitions] +can occur one after another, without intervening blank lines. + +```````````````````````````````` example +[foo]: /foo-url "foo" +[bar]: /bar-url + "bar" +[baz]: /baz-url + +[foo], +[bar], +[baz] +. +

                  foo, +bar, +baz

                  +```````````````````````````````` + + +[Link reference definitions] can occur +inside block containers, like lists and block quotations. They +affect the entire document, not just the container in which they +are defined: + +```````````````````````````````` example +[foo] + +> [foo]: /url +. +

                  foo

                  +
                  +
                  +```````````````````````````````` + + +Whether something is a [link reference definition] is +independent of whether the link reference it defines is +used in the document. Thus, for example, the following +document contains just a link reference definition, and +no visible content: + +```````````````````````````````` example +[foo]: /url +. +```````````````````````````````` + + +## Paragraphs + +A sequence of non-blank lines that cannot be interpreted as other +kinds of blocks forms a [paragraph](@). +The contents of the paragraph are the result of parsing the +paragraph's raw content as inlines. The paragraph's raw content +is formed by concatenating the lines and removing initial and final +[whitespace]. + +A simple example with two paragraphs: + +```````````````````````````````` example +aaa + +bbb +. +

                  aaa

                  +

                  bbb

                  +```````````````````````````````` + + +Paragraphs can contain multiple lines, but no blank lines: + +```````````````````````````````` example +aaa +bbb + +ccc +ddd +. +

                  aaa +bbb

                  +

                  ccc +ddd

                  +```````````````````````````````` + + +Multiple blank lines between paragraph have no effect: + +```````````````````````````````` example +aaa + + +bbb +. +

                  aaa

                  +

                  bbb

                  +```````````````````````````````` + + +Leading spaces are skipped: + +```````````````````````````````` example + aaa + bbb +. +

                  aaa +bbb

                  +```````````````````````````````` + + +Lines after the first may be indented any amount, since indented +code blocks cannot interrupt paragraphs. + +```````````````````````````````` example +aaa + bbb + ccc +. +

                  aaa +bbb +ccc

                  +```````````````````````````````` + + +However, the first line may be indented at most three spaces, +or an indented code block will be triggered: + +```````````````````````````````` example + aaa +bbb +. +

                  aaa +bbb

                  +```````````````````````````````` + + +```````````````````````````````` example + aaa +bbb +. +
                  aaa
                  +
                  +

                  bbb

                  +```````````````````````````````` + + +Final spaces are stripped before inline parsing, so a paragraph +that ends with two or more spaces will not end with a [hard line +break]: + +```````````````````````````````` example +aaa +bbb +. +

                  aaa
                  +bbb

                  +```````````````````````````````` + + +## Blank lines + +[Blank lines] between block-level elements are ignored, +except for the role they play in determining whether a [list] +is [tight] or [loose]. + +Blank lines at the beginning and end of the document are also ignored. + +```````````````````````````````` example + + +aaa + + +# aaa + + +. +

                  aaa

                  +

                  aaa

                  +```````````````````````````````` + + + +# Container blocks + +A [container block](#container-blocks) is a block that has other +blocks as its contents. There are two basic kinds of container blocks: +[block quotes] and [list items]. +[Lists] are meta-containers for [list items]. + +We define the syntax for container blocks recursively. The general +form of the definition is: + +> If X is a sequence of blocks, then the result of +> transforming X in such-and-such a way is a container of type Y +> with these blocks as its content. + +So, we explain what counts as a block quote or list item by explaining +how these can be *generated* from their contents. This should suffice +to define the syntax, although it does not give a recipe for *parsing* +these constructions. (A recipe is provided below in the section entitled +[A parsing strategy](#appendix-a-parsing-strategy).) + +## Block quotes + +A [block quote marker](@) +consists of 0-3 spaces of initial indent, plus (a) the character `>` together +with a following space, or (b) a single character `>` not followed by a space. + +The following rules define [block quotes]: + +1. **Basic case.** If a string of lines *Ls* constitute a sequence + of blocks *Bs*, then the result of prepending a [block quote + marker] to the beginning of each line in *Ls* + is a [block quote](#block-quotes) containing *Bs*. + +2. **Laziness.** If a string of lines *Ls* constitute a [block + quote](#block-quotes) with contents *Bs*, then the result of deleting + the initial [block quote marker] from one or + more lines in which the next [non-whitespace character] after the [block + quote marker] is [paragraph continuation + text] is a block quote with *Bs* as its content. + [Paragraph continuation text](@) is text + that will be parsed as part of the content of a paragraph, but does + not occur at the beginning of the paragraph. + +3. **Consecutiveness.** A document cannot contain two [block + quotes] in a row unless there is a [blank line] between them. + +Nothing else counts as a [block quote](#block-quotes). + +Here is a simple example: + +```````````````````````````````` example +> # Foo +> bar +> baz +. +
                  +

                  Foo

                  +

                  bar +baz

                  +
                  +```````````````````````````````` + + +The spaces after the `>` characters can be omitted: + +```````````````````````````````` example +># Foo +>bar +> baz +. +
                  +

                  Foo

                  +

                  bar +baz

                  +
                  +```````````````````````````````` + + +The `>` characters can be indented 1-3 spaces: + +```````````````````````````````` example + > # Foo + > bar + > baz +. +
                  +

                  Foo

                  +

                  bar +baz

                  +
                  +```````````````````````````````` + + +Four spaces gives us a code block: + +```````````````````````````````` example + > # Foo + > bar + > baz +. +
                  > # Foo
                  +> bar
                  +> baz
                  +
                  +```````````````````````````````` + + +The Laziness clause allows us to omit the `>` before +[paragraph continuation text]: + +```````````````````````````````` example +> # Foo +> bar +baz +. +
                  +

                  Foo

                  +

                  bar +baz

                  +
                  +```````````````````````````````` + + +A block quote can contain some lazy and some non-lazy +continuation lines: + +```````````````````````````````` example +> bar +baz +> foo +. +
                  +

                  bar +baz +foo

                  +
                  +```````````````````````````````` + + +Laziness only applies to lines that would have been continuations of +paragraphs had they been prepended with [block quote markers]. +For example, the `> ` cannot be omitted in the second line of + +``` markdown +> foo +> --- +``` + +without changing the meaning: + +```````````````````````````````` example +> foo +--- +. +
                  +

                  foo

                  +
                  +
                  +```````````````````````````````` + + +Similarly, if we omit the `> ` in the second line of + +``` markdown +> - foo +> - bar +``` + +then the block quote ends after the first line: + +```````````````````````````````` example +> - foo +- bar +. +
                  +
                    +
                  • foo
                  • +
                  +
                  +
                    +
                  • bar
                  • +
                  +```````````````````````````````` + + +For the same reason, we can't omit the `> ` in front of +subsequent lines of an indented or fenced code block: + +```````````````````````````````` example +> foo + bar +. +
                  +
                  foo
                  +
                  +
                  +
                  bar
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> ``` +foo +``` +. +
                  +
                  +
                  +

                  foo

                  +
                  +```````````````````````````````` + + +Note that in the following case, we have a [lazy +continuation line]: + +```````````````````````````````` example +> foo + - bar +. +
                  +

                  foo +- bar

                  +
                  +```````````````````````````````` + + +To see why, note that in + +```markdown +> foo +> - bar +``` + +the `- bar` is indented too far to start a list, and can't +be an indented code block because indented code blocks cannot +interrupt paragraphs, so it is [paragraph continuation text]. + +A block quote can be empty: + +```````````````````````````````` example +> +. +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> +> +> +. +
                  +
                  +```````````````````````````````` + + +A block quote can have initial or final blank lines: + +```````````````````````````````` example +> +> foo +> +. +
                  +

                  foo

                  +
                  +```````````````````````````````` + + +A blank line always separates block quotes: + +```````````````````````````````` example +> foo + +> bar +. +
                  +

                  foo

                  +
                  +
                  +

                  bar

                  +
                  +```````````````````````````````` + + +(Most current Markdown implementations, including John Gruber's +original `Markdown.pl`, will parse this example as a single block quote +with two paragraphs. But it seems better to allow the author to decide +whether two block quotes or one are wanted.) + +Consecutiveness means that if we put these block quotes together, +we get a single block quote: + +```````````````````````````````` example +> foo +> bar +. +
                  +

                  foo +bar

                  +
                  +```````````````````````````````` + + +To get a block quote with two paragraphs, use: + +```````````````````````````````` example +> foo +> +> bar +. +
                  +

                  foo

                  +

                  bar

                  +
                  +```````````````````````````````` + + +Block quotes can interrupt paragraphs: + +```````````````````````````````` example +foo +> bar +. +

                  foo

                  +
                  +

                  bar

                  +
                  +```````````````````````````````` + + +In general, blank lines are not needed before or after block +quotes: + +```````````````````````````````` example +> aaa +*** +> bbb +. +
                  +

                  aaa

                  +
                  +
                  +
                  +

                  bbb

                  +
                  +```````````````````````````````` + + +However, because of laziness, a blank line is needed between +a block quote and a following paragraph: + +```````````````````````````````` example +> bar +baz +. +
                  +

                  bar +baz

                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> bar + +baz +. +
                  +

                  bar

                  +
                  +

                  baz

                  +```````````````````````````````` + + +```````````````````````````````` example +> bar +> +baz +. +
                  +

                  bar

                  +
                  +

                  baz

                  +```````````````````````````````` + + +It is a consequence of the Laziness rule that any number +of initial `>`s may be omitted on a continuation line of a +nested block quote: + +```````````````````````````````` example +> > > foo +bar +. +
                  +
                  +
                  +

                  foo +bar

                  +
                  +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +>>> foo +> bar +>>baz +. +
                  +
                  +
                  +

                  foo +bar +baz

                  +
                  +
                  +
                  +```````````````````````````````` + + +When including an indented code block in a block quote, +remember that the [block quote marker] includes +both the `>` and a following space. So *five spaces* are needed after +the `>`: + +```````````````````````````````` example +> code + +> not code +. +
                  +
                  code
                  +
                  +
                  +
                  +

                  not code

                  +
                  +```````````````````````````````` + + + +## List items + +A [list marker](@) is a +[bullet list marker] or an [ordered list marker]. + +A [bullet list marker](@) +is a `-`, `+`, or `*` character. + +An [ordered list marker](@) +is a sequence of 1--9 arabic digits (`0-9`), followed by either a +`.` character or a `)` character. (The reason for the length +limit is that with 10 digits we start seeing integer overflows +in some browsers.) + +The following rules define [list items]: + +1. **Basic case.** If a sequence of lines *Ls* constitute a sequence of + blocks *Bs* starting with a [non-whitespace character], and *M* is a + list marker of width *W* followed by 1 ≤ *N* ≤ 4 spaces, then the result + of prepending *M* and the following spaces to the first line of + *Ls*, and indenting subsequent lines of *Ls* by *W + N* spaces, is a + list item with *Bs* as its contents. The type of the list item + (bullet or ordered) is determined by the type of its list marker. + If the list item is ordered, then it is also assigned a start + number, based on the ordered list marker. + + Exceptions: + + 1. When the first list item in a [list] interrupts + a paragraph---that is, when it starts on a line that would + otherwise count as [paragraph continuation text]---then (a) + the lines *Ls* must not begin with a blank line, and (b) if + the list item is ordered, the start number must be 1. + 2. If any line is a [thematic break][thematic breaks] then + that line is not a list item. + +For example, let *Ls* be the lines + +```````````````````````````````` example +A paragraph +with two lines. + + indented code + +> A block quote. +. +

                  A paragraph +with two lines.

                  +
                  indented code
                  +
                  +
                  +

                  A block quote.

                  +
                  +```````````````````````````````` + + +And let *M* be the marker `1.`, and *N* = 2. Then rule #1 says +that the following is an ordered list item with start number 1, +and the same contents as *Ls*: + +```````````````````````````````` example +1. A paragraph + with two lines. + + indented code + + > A block quote. +. +
                    +
                  1. +

                    A paragraph +with two lines.

                    +
                    indented code
                    +
                    +
                    +

                    A block quote.

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +The most important thing to notice is that the position of +the text after the list marker determines how much indentation +is needed in subsequent blocks in the list item. If the list +marker takes up two spaces, and there are three spaces between +the list marker and the next [non-whitespace character], then blocks +must be indented five spaces in order to fall under the list +item. + +Here are some examples showing how far content must be indented to be +put under the list item: + +```````````````````````````````` example +- one + + two +. +
                    +
                  • one
                  • +
                  +

                  two

                  +```````````````````````````````` + + +```````````````````````````````` example +- one + + two +. +
                    +
                  • +

                    one

                    +

                    two

                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example + - one + + two +. +
                    +
                  • one
                  • +
                  +
                   two
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + - one + + two +. +
                    +
                  • +

                    one

                    +

                    two

                    +
                  • +
                  +```````````````````````````````` + + +It is tempting to think of this in terms of columns: the continuation +blocks must be indented at least to the column of the first +[non-whitespace character] after the list marker. However, that is not quite right. +The spaces after the list marker determine how much relative indentation +is needed. Which column this indentation reaches will depend on +how the list item is embedded in other constructions, as shown by +this example: + +```````````````````````````````` example + > > 1. one +>> +>> two +. +
                  +
                  +
                    +
                  1. +

                    one

                    +

                    two

                    +
                  2. +
                  +
                  +
                  +```````````````````````````````` + + +Here `two` occurs in the same column as the list marker `1.`, +but is actually contained in the list item, because there is +sufficient indentation after the last containing blockquote marker. + +The converse is also possible. In the following example, the word `two` +occurs far to the right of the initial text of the list item, `one`, but +it is not considered part of the list item, because it is not indented +far enough past the blockquote marker: + +```````````````````````````````` example +>>- one +>> + > > two +. +
                  +
                  +
                    +
                  • one
                  • +
                  +

                  two

                  +
                  +
                  +```````````````````````````````` + + +Note that at least one space is needed between the list marker and +any following content, so these are not list items: + +```````````````````````````````` example +-one + +2.two +. +

                  -one

                  +

                  2.two

                  +```````````````````````````````` + + +A list item may contain blocks that are separated by more than +one blank line. + +```````````````````````````````` example +- foo + + + bar +. +
                    +
                  • +

                    foo

                    +

                    bar

                    +
                  • +
                  +```````````````````````````````` + + +A list item may contain any kind of block: + +```````````````````````````````` example +1. foo + + ``` + bar + ``` + + baz + + > bam +. +
                    +
                  1. +

                    foo

                    +
                    bar
                    +
                    +

                    baz

                    +
                    +

                    bam

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +A list item that contains an indented code block will preserve +empty lines within the code block verbatim. + +```````````````````````````````` example +- Foo + + bar + + + baz +. +
                    +
                  • +

                    Foo

                    +
                    bar
                    +
                    +
                    +baz
                    +
                    +
                  • +
                  +```````````````````````````````` + +Note that ordered list start numbers must be nine digits or less: + +```````````````````````````````` example +123456789. ok +. +
                    +
                  1. ok
                  2. +
                  +```````````````````````````````` + + +```````````````````````````````` example +1234567890. not ok +. +

                  1234567890. not ok

                  +```````````````````````````````` + + +A start number may begin with 0s: + +```````````````````````````````` example +0. ok +. +
                    +
                  1. ok
                  2. +
                  +```````````````````````````````` + + +```````````````````````````````` example +003. ok +. +
                    +
                  1. ok
                  2. +
                  +```````````````````````````````` + + +A start number may not be negative: + +```````````````````````````````` example +-1. not ok +. +

                  -1. not ok

                  +```````````````````````````````` + + + +2. **Item starting with indented code.** If a sequence of lines *Ls* + constitute a sequence of blocks *Bs* starting with an indented code + block, and *M* is a list marker of width *W* followed by + one space, then the result of prepending *M* and the following + space to the first line of *Ls*, and indenting subsequent lines of + *Ls* by *W + 1* spaces, is a list item with *Bs* as its contents. + If a line is empty, then it need not be indented. The type of the + list item (bullet or ordered) is determined by the type of its list + marker. If the list item is ordered, then it is also assigned a + start number, based on the ordered list marker. + +An indented code block will have to be indented four spaces beyond +the edge of the region where text will be included in the list item. +In the following case that is 6 spaces: + +```````````````````````````````` example +- foo + + bar +. +
                    +
                  • +

                    foo

                    +
                    bar
                    +
                    +
                  • +
                  +```````````````````````````````` + + +And in this case it is 11 spaces: + +```````````````````````````````` example + 10. foo + + bar +. +
                    +
                  1. +

                    foo

                    +
                    bar
                    +
                    +
                  2. +
                  +```````````````````````````````` + + +If the *first* block in the list item is an indented code block, +then by rule #2, the contents must be indented *one* space after the +list marker: + +```````````````````````````````` example + indented code + +paragraph + + more code +. +
                  indented code
                  +
                  +

                  paragraph

                  +
                  more code
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +1. indented code + + paragraph + + more code +. +
                    +
                  1. +
                    indented code
                    +
                    +

                    paragraph

                    +
                    more code
                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Note that an additional space indent is interpreted as space +inside the code block: + +```````````````````````````````` example +1. indented code + + paragraph + + more code +. +
                    +
                  1. +
                     indented code
                    +
                    +

                    paragraph

                    +
                    more code
                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Note that rules #1 and #2 only apply to two cases: (a) cases +in which the lines to be included in a list item begin with a +[non-whitespace character], and (b) cases in which +they begin with an indented code +block. In a case like the following, where the first block begins with +a three-space indent, the rules do not allow us to form a list item by +indenting the whole thing and prepending a list marker: + +```````````````````````````````` example + foo + +bar +. +

                  foo

                  +

                  bar

                  +```````````````````````````````` + + +```````````````````````````````` example +- foo + + bar +. +
                    +
                  • foo
                  • +
                  +

                  bar

                  +```````````````````````````````` + + +This is not a significant restriction, because when a block begins +with 1-3 spaces indent, the indentation can always be removed without +a change in interpretation, allowing rule #1 to be applied. So, in +the above case: + +```````````````````````````````` example +- foo + + bar +. +
                    +
                  • +

                    foo

                    +

                    bar

                    +
                  • +
                  +```````````````````````````````` + + +3. **Item starting with a blank line.** If a sequence of lines *Ls* + starting with a single [blank line] constitute a (possibly empty) + sequence of blocks *Bs*, not separated from each other by more than + one blank line, and *M* is a list marker of width *W*, + then the result of prepending *M* to the first line of *Ls*, and + indenting subsequent lines of *Ls* by *W + 1* spaces, is a list + item with *Bs* as its contents. + If a line is empty, then it need not be indented. The type of the + list item (bullet or ordered) is determined by the type of its list + marker. If the list item is ordered, then it is also assigned a + start number, based on the ordered list marker. + +Here are some list items that start with a blank line but are not empty: + +```````````````````````````````` example +- + foo +- + ``` + bar + ``` +- + baz +. +
                    +
                  • foo
                  • +
                  • +
                    bar
                    +
                    +
                  • +
                  • +
                    baz
                    +
                    +
                  • +
                  +```````````````````````````````` + +When the list item starts with a blank line, the number of spaces +following the list marker doesn't change the required indentation: + +```````````````````````````````` example +- + foo +. +
                    +
                  • foo
                  • +
                  +```````````````````````````````` + + +A list item can begin with at most one blank line. +In the following example, `foo` is not part of the list +item: + +```````````````````````````````` example +- + + foo +. +
                    +
                  • +
                  +

                  foo

                  +```````````````````````````````` + + +Here is an empty bullet list item: + +```````````````````````````````` example +- foo +- +- bar +. +
                    +
                  • foo
                  • +
                  • +
                  • bar
                  • +
                  +```````````````````````````````` + + +It does not matter whether there are spaces following the [list marker]: + +```````````````````````````````` example +- foo +- +- bar +. +
                    +
                  • foo
                  • +
                  • +
                  • bar
                  • +
                  +```````````````````````````````` + + +Here is an empty ordered list item: + +```````````````````````````````` example +1. foo +2. +3. bar +. +
                    +
                  1. foo
                  2. +
                  3. +
                  4. bar
                  5. +
                  +```````````````````````````````` + + +A list may start or end with an empty list item: + +```````````````````````````````` example +* +. +
                    +
                  • +
                  +```````````````````````````````` + +However, an empty list item cannot interrupt a paragraph: + +```````````````````````````````` example +foo +* + +foo +1. +. +

                  foo +*

                  +

                  foo +1.

                  +```````````````````````````````` + + +4. **Indentation.** If a sequence of lines *Ls* constitutes a list item + according to rule #1, #2, or #3, then the result of indenting each line + of *Ls* by 1-3 spaces (the same for each line) also constitutes a + list item with the same contents and attributes. If a line is + empty, then it need not be indented. + +Indented one space: + +```````````````````````````````` example + 1. A paragraph + with two lines. + + indented code + + > A block quote. +. +
                    +
                  1. +

                    A paragraph +with two lines.

                    +
                    indented code
                    +
                    +
                    +

                    A block quote.

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Indented two spaces: + +```````````````````````````````` example + 1. A paragraph + with two lines. + + indented code + + > A block quote. +. +
                    +
                  1. +

                    A paragraph +with two lines.

                    +
                    indented code
                    +
                    +
                    +

                    A block quote.

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Indented three spaces: + +```````````````````````````````` example + 1. A paragraph + with two lines. + + indented code + + > A block quote. +. +
                    +
                  1. +

                    A paragraph +with two lines.

                    +
                    indented code
                    +
                    +
                    +

                    A block quote.

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Four spaces indent gives a code block: + +```````````````````````````````` example + 1. A paragraph + with two lines. + + indented code + + > A block quote. +. +
                  1.  A paragraph
                  +    with two lines.
                  +
                  +        indented code
                  +
                  +    > A block quote.
                  +
                  +```````````````````````````````` + + + +5. **Laziness.** If a string of lines *Ls* constitute a [list + item](#list-items) with contents *Bs*, then the result of deleting + some or all of the indentation from one or more lines in which the + next [non-whitespace character] after the indentation is + [paragraph continuation text] is a + list item with the same contents and attributes. The unindented + lines are called + [lazy continuation line](@)s. + +Here is an example with [lazy continuation lines]: + +```````````````````````````````` example + 1. A paragraph +with two lines. + + indented code + + > A block quote. +. +
                    +
                  1. +

                    A paragraph +with two lines.

                    +
                    indented code
                    +
                    +
                    +

                    A block quote.

                    +
                    +
                  2. +
                  +```````````````````````````````` + + +Indentation can be partially deleted: + +```````````````````````````````` example + 1. A paragraph + with two lines. +. +
                    +
                  1. A paragraph +with two lines.
                  2. +
                  +```````````````````````````````` + + +These examples show how laziness can work in nested structures: + +```````````````````````````````` example +> 1. > Blockquote +continued here. +. +
                  +
                    +
                  1. +
                    +

                    Blockquote +continued here.

                    +
                    +
                  2. +
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +> 1. > Blockquote +> continued here. +. +
                  +
                    +
                  1. +
                    +

                    Blockquote +continued here.

                    +
                    +
                  2. +
                  +
                  +```````````````````````````````` + + + +6. **That's all.** Nothing that is not counted as a list item by rules + #1--5 counts as a [list item](#list-items). + +The rules for sublists follow from the general rules +[above][List items]. A sublist must be indented the same number +of spaces a paragraph would need to be in order to be included +in the list item. + +So, in this case we need two spaces indent: + +```````````````````````````````` example +- foo + - bar + - baz + - boo +. +
                    +
                  • foo +
                      +
                    • bar +
                        +
                      • baz +
                          +
                        • boo
                        • +
                        +
                      • +
                      +
                    • +
                    +
                  • +
                  +```````````````````````````````` + + +One is not enough: + +```````````````````````````````` example +- foo + - bar + - baz + - boo +. +
                    +
                  • foo
                  • +
                  • bar
                  • +
                  • baz
                  • +
                  • boo
                  • +
                  +```````````````````````````````` + + +Here we need four, because the list marker is wider: + +```````````````````````````````` example +10) foo + - bar +. +
                    +
                  1. foo +
                      +
                    • bar
                    • +
                    +
                  2. +
                  +```````````````````````````````` + + +Three is not enough: + +```````````````````````````````` example +10) foo + - bar +. +
                    +
                  1. foo
                  2. +
                  +
                    +
                  • bar
                  • +
                  +```````````````````````````````` + + +A list may be the first block in a list item: + +```````````````````````````````` example +- - foo +. +
                    +
                  • +
                      +
                    • foo
                    • +
                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +1. - 2. foo +. +
                    +
                  1. +
                      +
                    • +
                        +
                      1. foo
                      2. +
                      +
                    • +
                    +
                  2. +
                  +```````````````````````````````` + + +A list item can contain a heading: + +```````````````````````````````` example +- # Foo +- Bar + --- + baz +. +
                    +
                  • +

                    Foo

                    +
                  • +
                  • +

                    Bar

                    +baz
                  • +
                  +```````````````````````````````` + + +### Motivation + +John Gruber's Markdown spec says the following about list items: + +1. "List markers typically start at the left margin, but may be indented + by up to three spaces. List markers must be followed by one or more + spaces or a tab." + +2. "To make lists look nice, you can wrap items with hanging indents.... + But if you don't want to, you don't have to." + +3. "List items may consist of multiple paragraphs. Each subsequent + paragraph in a list item must be indented by either 4 spaces or one + tab." + +4. "It looks nice if you indent every line of the subsequent paragraphs, + but here again, Markdown will allow you to be lazy." + +5. "To put a blockquote within a list item, the blockquote's `>` + delimiters need to be indented." + +6. "To put a code block within a list item, the code block needs to be + indented twice — 8 spaces or two tabs." + +These rules specify that a paragraph under a list item must be indented +four spaces (presumably, from the left margin, rather than the start of +the list marker, but this is not said), and that code under a list item +must be indented eight spaces instead of the usual four. They also say +that a block quote must be indented, but not by how much; however, the +example given has four spaces indentation. Although nothing is said +about other kinds of block-level content, it is certainly reasonable to +infer that *all* block elements under a list item, including other +lists, must be indented four spaces. This principle has been called the +*four-space rule*. + +The four-space rule is clear and principled, and if the reference +implementation `Markdown.pl` had followed it, it probably would have +become the standard. However, `Markdown.pl` allowed paragraphs and +sublists to start with only two spaces indentation, at least on the +outer level. Worse, its behavior was inconsistent: a sublist of an +outer-level list needed two spaces indentation, but a sublist of this +sublist needed three spaces. It is not surprising, then, that different +implementations of Markdown have developed very different rules for +determining what comes under a list item. (Pandoc and python-Markdown, +for example, stuck with Gruber's syntax description and the four-space +rule, while discount, redcarpet, marked, PHP Markdown, and others +followed `Markdown.pl`'s behavior more closely.) + +Unfortunately, given the divergences between implementations, there +is no way to give a spec for list items that will be guaranteed not +to break any existing documents. However, the spec given here should +correctly handle lists formatted with either the four-space rule or +the more forgiving `Markdown.pl` behavior, provided they are laid out +in a way that is natural for a human to read. + +The strategy here is to let the width and indentation of the list marker +determine the indentation necessary for blocks to fall under the list +item, rather than having a fixed and arbitrary number. The writer can +think of the body of the list item as a unit which gets indented to the +right enough to fit the list marker (and any indentation on the list +marker). (The laziness rule, #5, then allows continuation lines to be +unindented if needed.) + +This rule is superior, we claim, to any rule requiring a fixed level of +indentation from the margin. The four-space rule is clear but +unnatural. It is quite unintuitive that + +``` markdown +- foo + + bar + + - baz +``` + +should be parsed as two lists with an intervening paragraph, + +``` html +
                    +
                  • foo
                  • +
                  +

                  bar

                  +
                    +
                  • baz
                  • +
                  +``` + +as the four-space rule demands, rather than a single list, + +``` html +
                    +
                  • +

                    foo

                    +

                    bar

                    +
                      +
                    • baz
                    • +
                    +
                  • +
                  +``` + +The choice of four spaces is arbitrary. It can be learned, but it is +not likely to be guessed, and it trips up beginners regularly. + +Would it help to adopt a two-space rule? The problem is that such +a rule, together with the rule allowing 1--3 spaces indentation of the +initial list marker, allows text that is indented *less than* the +original list marker to be included in the list item. For example, +`Markdown.pl` parses + +``` markdown + - one + + two +``` + +as a single list item, with `two` a continuation paragraph: + +``` html +
                    +
                  • +

                    one

                    +

                    two

                    +
                  • +
                  +``` + +and similarly + +``` markdown +> - one +> +> two +``` + +as + +``` html +
                  +
                    +
                  • +

                    one

                    +

                    two

                    +
                  • +
                  +
                  +``` + +This is extremely unintuitive. + +Rather than requiring a fixed indent from the margin, we could require +a fixed indent (say, two spaces, or even one space) from the list marker (which +may itself be indented). This proposal would remove the last anomaly +discussed. Unlike the spec presented above, it would count the following +as a list item with a subparagraph, even though the paragraph `bar` +is not indented as far as the first paragraph `foo`: + +``` markdown + 10. foo + + bar +``` + +Arguably this text does read like a list item with `bar` as a subparagraph, +which may count in favor of the proposal. However, on this proposal indented +code would have to be indented six spaces after the list marker. And this +would break a lot of existing Markdown, which has the pattern: + +``` markdown +1. foo + + indented code +``` + +where the code is indented eight spaces. The spec above, by contrast, will +parse this text as expected, since the code block's indentation is measured +from the beginning of `foo`. + +The one case that needs special treatment is a list item that *starts* +with indented code. How much indentation is required in that case, since +we don't have a "first paragraph" to measure from? Rule #2 simply stipulates +that in such cases, we require one space indentation from the list marker +(and then the normal four spaces for the indented code). This will match the +four-space rule in cases where the list marker plus its initial indentation +takes four spaces (a common case), but diverge in other cases. + +## Lists + +A [list](@) is a sequence of one or more +list items [of the same type]. The list items +may be separated by any number of blank lines. + +Two list items are [of the same type](@) +if they begin with a [list marker] of the same type. +Two list markers are of the +same type if (a) they are bullet list markers using the same character +(`-`, `+`, or `*`) or (b) they are ordered list numbers with the same +delimiter (either `.` or `)`). + +A list is an [ordered list](@) +if its constituent list items begin with +[ordered list markers], and a +[bullet list](@) if its constituent list +items begin with [bullet list markers]. + +The [start number](@) +of an [ordered list] is determined by the list number of +its initial list item. The numbers of subsequent list items are +disregarded. + +A list is [loose](@) if any of its constituent +list items are separated by blank lines, or if any of its constituent +list items directly contain two block-level elements with a blank line +between them. Otherwise a list is [tight](@). +(The difference in HTML output is that paragraphs in a loose list are +wrapped in `

                  ` tags, while paragraphs in a tight list are not.) + +Changing the bullet or ordered list delimiter starts a new list: + +```````````````````````````````` example +- foo +- bar ++ baz +. +

                    +
                  • foo
                  • +
                  • bar
                  • +
                  +
                    +
                  • baz
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +1. foo +2. bar +3) baz +. +
                    +
                  1. foo
                  2. +
                  3. bar
                  4. +
                  +
                    +
                  1. baz
                  2. +
                  +```````````````````````````````` + + +In CommonMark, a list can interrupt a paragraph. That is, +no blank line is needed to separate a paragraph from a following +list: + +```````````````````````````````` example +Foo +- bar +- baz +. +

                  Foo

                  +
                    +
                  • bar
                  • +
                  • baz
                  • +
                  +```````````````````````````````` + +`Markdown.pl` does not allow this, through fear of triggering a list +via a numeral in a hard-wrapped line: + +``` markdown +The number of windows in my house is +14. The number of doors is 6. +``` + +Oddly, though, `Markdown.pl` *does* allow a blockquote to +interrupt a paragraph, even though the same considerations might +apply. + +In CommonMark, we do allow lists to interrupt paragraphs, for +two reasons. First, it is natural and not uncommon for people +to start lists without blank lines: + +``` markdown +I need to buy +- new shoes +- a coat +- a plane ticket +``` + +Second, we are attracted to a + +> [principle of uniformity](@): +> if a chunk of text has a certain +> meaning, it will continue to have the same meaning when put into a +> container block (such as a list item or blockquote). + +(Indeed, the spec for [list items] and [block quotes] presupposes +this principle.) This principle implies that if + +``` markdown + * I need to buy + - new shoes + - a coat + - a plane ticket +``` + +is a list item containing a paragraph followed by a nested sublist, +as all Markdown implementations agree it is (though the paragraph +may be rendered without `

                  ` tags, since the list is "tight"), +then + +``` markdown +I need to buy +- new shoes +- a coat +- a plane ticket +``` + +by itself should be a paragraph followed by a nested sublist. + +Since it is well established Markdown practice to allow lists to +interrupt paragraphs inside list items, the [principle of +uniformity] requires us to allow this outside list items as +well. ([reStructuredText](http://docutils.sourceforge.net/rst.html) +takes a different approach, requiring blank lines before lists +even inside other list items.) + +In order to solve of unwanted lists in paragraphs with +hard-wrapped numerals, we allow only lists starting with `1` to +interrupt paragraphs. Thus, + +```````````````````````````````` example +The number of windows in my house is +14. The number of doors is 6. +. +

                  The number of windows in my house is +14. The number of doors is 6.

                  +```````````````````````````````` + +We may still get an unintended result in cases like + +```````````````````````````````` example +The number of windows in my house is +1. The number of doors is 6. +. +

                  The number of windows in my house is

                  +
                    +
                  1. The number of doors is 6.
                  2. +
                  +```````````````````````````````` + +but this rule should prevent most spurious list captures. + +There can be any number of blank lines between items: + +```````````````````````````````` example +- foo + +- bar + + +- baz +. +
                    +
                  • +

                    foo

                    +
                  • +
                  • +

                    bar

                    +
                  • +
                  • +

                    baz

                    +
                  • +
                  +```````````````````````````````` + +```````````````````````````````` example +- foo + - bar + - baz + + + bim +. +
                    +
                  • foo +
                      +
                    • bar +
                        +
                      • +

                        baz

                        +

                        bim

                        +
                      • +
                      +
                    • +
                    +
                  • +
                  +```````````````````````````````` + + +To separate consecutive lists of the same type, or to separate a +list from an indented code block that would otherwise be parsed +as a subparagraph of the final list item, you can insert a blank HTML +comment: + +```````````````````````````````` example +- foo +- bar + + + +- baz +- bim +. +
                    +
                  • foo
                  • +
                  • bar
                  • +
                  + +
                    +
                  • baz
                  • +
                  • bim
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +- foo + + notcode + +- foo + + + + code +. +
                    +
                  • +

                    foo

                    +

                    notcode

                    +
                  • +
                  • +

                    foo

                    +
                  • +
                  + +
                  code
                  +
                  +```````````````````````````````` + + +List items need not be indented to the same level. The following +list items will be treated as items at the same list level, +since none is indented enough to belong to the previous list +item: + +```````````````````````````````` example +- a + - b + - c + - d + - e + - f +- g +. +
                    +
                  • a
                  • +
                  • b
                  • +
                  • c
                  • +
                  • d
                  • +
                  • e
                  • +
                  • f
                  • +
                  • g
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +1. a + + 2. b + + 3. c +. +
                    +
                  1. +

                    a

                    +
                  2. +
                  3. +

                    b

                    +
                  4. +
                  5. +

                    c

                    +
                  6. +
                  +```````````````````````````````` + +Note, however, that list items may not be indented more than +three spaces. Here `- e` is treated as a paragraph continuation +line, because it is indented more than three spaces: + +```````````````````````````````` example +- a + - b + - c + - d + - e +. +
                    +
                  • a
                  • +
                  • b
                  • +
                  • c
                  • +
                  • d +- e
                  • +
                  +```````````````````````````````` + +And here, `3. c` is treated as in indented code block, +because it is indented four spaces and preceded by a +blank line. + +```````````````````````````````` example +1. a + + 2. b + + 3. c +. +
                    +
                  1. +

                    a

                    +
                  2. +
                  3. +

                    b

                    +
                  4. +
                  +
                  3. c
                  +
                  +```````````````````````````````` + + +This is a loose list, because there is a blank line between +two of the list items: + +```````````````````````````````` example +- a +- b + +- c +. +
                    +
                  • +

                    a

                    +
                  • +
                  • +

                    b

                    +
                  • +
                  • +

                    c

                    +
                  • +
                  +```````````````````````````````` + + +So is this, with a empty second item: + +```````````````````````````````` example +* a +* + +* c +. +
                    +
                  • +

                    a

                    +
                  • +
                  • +
                  • +

                    c

                    +
                  • +
                  +```````````````````````````````` + + +These are loose lists, even though there is no space between the items, +because one of the items directly contains two block-level elements +with a blank line between them: + +```````````````````````````````` example +- a +- b + + c +- d +. +
                    +
                  • +

                    a

                    +
                  • +
                  • +

                    b

                    +

                    c

                    +
                  • +
                  • +

                    d

                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +- a +- b + + [ref]: /url +- d +. +
                    +
                  • +

                    a

                    +
                  • +
                  • +

                    b

                    +
                  • +
                  • +

                    d

                    +
                  • +
                  +```````````````````````````````` + + +This is a tight list, because the blank lines are in a code block: + +```````````````````````````````` example +- a +- ``` + b + + + ``` +- c +. +
                    +
                  • a
                  • +
                  • +
                    b
                    +
                    +
                    +
                    +
                  • +
                  • c
                  • +
                  +```````````````````````````````` + + +This is a tight list, because the blank line is between two +paragraphs of a sublist. So the sublist is loose while +the outer list is tight: + +```````````````````````````````` example +- a + - b + + c +- d +. +
                    +
                  • a +
                      +
                    • +

                      b

                      +

                      c

                      +
                    • +
                    +
                  • +
                  • d
                  • +
                  +```````````````````````````````` + + +This is a tight list, because the blank line is inside the +block quote: + +```````````````````````````````` example +* a + > b + > +* c +. +
                    +
                  • a +
                    +

                    b

                    +
                    +
                  • +
                  • c
                  • +
                  +```````````````````````````````` + + +This list is tight, because the consecutive block elements +are not separated by blank lines: + +```````````````````````````````` example +- a + > b + ``` + c + ``` +- d +. +
                    +
                  • a +
                    +

                    b

                    +
                    +
                    c
                    +
                    +
                  • +
                  • d
                  • +
                  +```````````````````````````````` + + +A single-paragraph list is tight: + +```````````````````````````````` example +- a +. +
                    +
                  • a
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +- a + - b +. +
                    +
                  • a +
                      +
                    • b
                    • +
                    +
                  • +
                  +```````````````````````````````` + + +This list is loose, because of the blank line between the +two block elements in the list item: + +```````````````````````````````` example +1. ``` + foo + ``` + + bar +. +
                    +
                  1. +
                    foo
                    +
                    +

                    bar

                    +
                  2. +
                  +```````````````````````````````` + + +Here the outer list is loose, the inner list tight: + +```````````````````````````````` example +* foo + * bar + + baz +. +
                    +
                  • +

                    foo

                    +
                      +
                    • bar
                    • +
                    +

                    baz

                    +
                  • +
                  +```````````````````````````````` + + +```````````````````````````````` example +- a + - b + - c + +- d + - e + - f +. +
                    +
                  • +

                    a

                    +
                      +
                    • b
                    • +
                    • c
                    • +
                    +
                  • +
                  • +

                    d

                    +
                      +
                    • e
                    • +
                    • f
                    • +
                    +
                  • +
                  +```````````````````````````````` + + +# Inlines + +Inlines are parsed sequentially from the beginning of the character +stream to the end (left to right, in left-to-right languages). +Thus, for example, in + +```````````````````````````````` example +`hi`lo` +. +

                  hilo`

                  +```````````````````````````````` + +`hi` is parsed as code, leaving the backtick at the end as a literal +backtick. + + +## Backslash escapes + +Any ASCII punctuation character may be backslash-escaped: + +```````````````````````````````` example +\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^\_\`\{\|\}\~ +. +

                  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

                  +```````````````````````````````` + + +Backslashes before other characters are treated as literal +backslashes: + +```````````````````````````````` example +\→\A\a\ \3\φ\« +. +

                  \→\A\a\ \3\φ\«

                  +```````````````````````````````` + + +Escaped characters are treated as regular characters and do +not have their usual Markdown meanings: + +```````````````````````````````` example +\*not emphasized* +\
                  not a tag +\[not a link](/foo) +\`not code` +1\. not a list +\* not a list +\# not a heading +\[foo]: /url "not a reference" +\ö not a character entity +. +

                  *not emphasized* +<br/> not a tag +[not a link](/foo) +`not code` +1. not a list +* not a list +# not a heading +[foo]: /url "not a reference" +&ouml; not a character entity

                  +```````````````````````````````` + + +If a backslash is itself escaped, the following character is not: + +```````````````````````````````` example +\\*emphasis* +. +

                  \emphasis

                  +```````````````````````````````` + + +A backslash at the end of the line is a [hard line break]: + +```````````````````````````````` example +foo\ +bar +. +

                  foo
                  +bar

                  +```````````````````````````````` + + +Backslash escapes do not work in code blocks, code spans, autolinks, or +raw HTML: + +```````````````````````````````` example +`` \[\` `` +. +

                  \[\`

                  +```````````````````````````````` + + +```````````````````````````````` example + \[\] +. +
                  \[\]
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example +~~~ +\[\] +~~~ +. +
                  \[\]
                  +
                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  http://example.com?find=\*

                  +```````````````````````````````` + + +```````````````````````````````` example + +. + +```````````````````````````````` + + +But they work in all other contexts, including URLs and link titles, +link references, and [info strings] in [fenced code blocks]: + +```````````````````````````````` example +[foo](/bar\* "ti\*tle") +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo] + +[foo]: /bar\* "ti\*tle" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +``` foo\+bar +foo +``` +. +
                  foo
                  +
                  +```````````````````````````````` + + + +## Entity and numeric character references + +Valid HTML entity references and numeric character references +can be used in place of the corresponding Unicode character, +with the following exceptions: + +- Entity and character references are not recognized in code + blocks and code spans. + +- Entity and character references cannot stand in place of + special characters that define structural elements in + CommonMark. For example, although `*` can be used + in place of a literal `*` character, `*` cannot replace + `*` in emphasis delimiters, bullet list markers, or thematic + breaks. + +Conforming CommonMark parsers need not store information about +whether a particular character was represented in the source +using a Unicode character or an entity reference. + +[Entity references](@) consist of `&` + any of the valid +HTML5 entity names + `;`. The +document +is used as an authoritative source for the valid entity +references and their corresponding code points. + +```````````````````````````````` example +  & © Æ Ď +¾ ℋ ⅆ +∲ ≧̸ +. +

                    & © Æ Ď +¾ ℋ ⅆ +∲ ≧̸

                  +```````````````````````````````` + + +[Decimal numeric character +references](@) +consist of `&#` + a string of 1--7 arabic digits + `;`. A +numeric character reference is parsed as the corresponding +Unicode character. Invalid Unicode code points will be replaced by +the REPLACEMENT CHARACTER (`U+FFFD`). For security reasons, +the code point `U+0000` will also be replaced by `U+FFFD`. + +```````````````````````````````` example +# Ӓ Ϡ � +. +

                  # Ӓ Ϡ �

                  +```````````````````````````````` + + +[Hexadecimal numeric character +references](@) consist of `&#` + +either `X` or `x` + a string of 1-6 hexadecimal digits + `;`. +They too are parsed as the corresponding Unicode character (this +time specified with a hexadecimal numeral instead of decimal). + +```````````````````````````````` example +" ആ ಫ +. +

                  " ആ ಫ

                  +```````````````````````````````` + + +Here are some nonentities: + +```````````````````````````````` example +  &x; &#; &#x; +� +&#abcdef0; +&ThisIsNotDefined; &hi?; +. +

                  &nbsp &x; &#; &#x; +&#87654321; +&#abcdef0; +&ThisIsNotDefined; &hi?;

                  +```````````````````````````````` + + +Although HTML5 does accept some entity references +without a trailing semicolon (such as `©`), these are not +recognized here, because it makes the grammar too ambiguous: + +```````````````````````````````` example +© +. +

                  &copy

                  +```````````````````````````````` + + +Strings that are not on the list of HTML5 named entities are not +recognized as entity references either: + +```````````````````````````````` example +&MadeUpEntity; +. +

                  &MadeUpEntity;

                  +```````````````````````````````` + + +Entity and numeric character references are recognized in any +context besides code spans or code blocks, including +URLs, [link titles], and [fenced code block][] [info strings]: + +```````````````````````````````` example + +. + +```````````````````````````````` + + +```````````````````````````````` example +[foo](/föö "föö") +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo] + +[foo]: /föö "föö" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +``` föö +foo +``` +. +
                  foo
                  +
                  +```````````````````````````````` + + +Entity and numeric character references are treated as literal +text in code spans and code blocks: + +```````````````````````````````` example +`föö` +. +

                  f&ouml;&ouml;

                  +```````````````````````````````` + + +```````````````````````````````` example + föfö +. +
                  f&ouml;f&ouml;
                  +
                  +```````````````````````````````` + + +Entity and numeric character references cannot be used +in place of symbols indicating structure in CommonMark +documents. + +```````````````````````````````` example +*foo* +*foo* +. +

                  *foo* +foo

                  +```````````````````````````````` + +```````````````````````````````` example +* foo + +* foo +. +

                  * foo

                  +
                    +
                  • foo
                  • +
                  +```````````````````````````````` + +```````````````````````````````` example +foo bar +. +

                  foo + +bar

                  +```````````````````````````````` + +```````````````````````````````` example + foo +. +

                  →foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[a](url "tit") +. +

                  [a](url "tit")

                  +```````````````````````````````` + + +## Code spans + +A [backtick string](@) +is a string of one or more backtick characters (`` ` ``) that is neither +preceded nor followed by a backtick. + +A [code span](@) begins with a backtick string and ends with +a backtick string of equal length. The contents of the code span are +the characters between the two backtick strings, normalized in the +following ways: + +- First, [line endings] are converted to [spaces]. +- If the resulting string both begins *and* ends with a [space] + character, but does not consist entirely of [space] + characters, a single [space] character is removed from the + front and back. This allows you to include code that begins + or ends with backtick characters, which must be separated by + whitespace from the opening or closing backtick strings. + +This is a simple code span: + +```````````````````````````````` example +`foo` +. +

                  foo

                  +```````````````````````````````` + + +Here two backticks are used, because the code contains a backtick. +This example also illustrates stripping of a single leading and +trailing space: + +```````````````````````````````` example +`` foo ` bar `` +. +

                  foo ` bar

                  +```````````````````````````````` + + +This example shows the motivation for stripping leading and trailing +spaces: + +```````````````````````````````` example +` `` ` +. +

                  ``

                  +```````````````````````````````` + +Note that only *one* space is stripped: + +```````````````````````````````` example +` `` ` +. +

                  ``

                  +```````````````````````````````` + +The stripping only happens if the space is on both +sides of the string: + +```````````````````````````````` example +` a` +. +

                  a

                  +```````````````````````````````` + +Only [spaces], and not [unicode whitespace] in general, are +stripped in this way: + +```````````````````````````````` example +` b ` +. +

                   b 

                  +```````````````````````````````` + +No stripping occurs if the code span contains only spaces: + +```````````````````````````````` example +` ` +` ` +. +

                    +

                  +```````````````````````````````` + + +[Line endings] are treated like spaces: + +```````````````````````````````` example +`` +foo +bar +baz +`` +. +

                  foo bar baz

                  +```````````````````````````````` + +```````````````````````````````` example +`` +foo +`` +. +

                  foo

                  +```````````````````````````````` + + +Interior spaces are not collapsed: + +```````````````````````````````` example +`foo bar +baz` +. +

                  foo bar baz

                  +```````````````````````````````` + +Note that browsers will typically collapse consecutive spaces +when rendering `` elements, so it is recommended that +the following CSS be used: + + code{white-space: pre-wrap;} + + +Note that backslash escapes do not work in code spans. All backslashes +are treated literally: + +```````````````````````````````` example +`foo\`bar` +. +

                  foo\bar`

                  +```````````````````````````````` + + +Backslash escapes are never needed, because one can always choose a +string of *n* backtick characters as delimiters, where the code does +not contain any strings of exactly *n* backtick characters. + +```````````````````````````````` example +``foo`bar`` +. +

                  foo`bar

                  +```````````````````````````````` + +```````````````````````````````` example +` foo `` bar ` +. +

                  foo `` bar

                  +```````````````````````````````` + + +Code span backticks have higher precedence than any other inline +constructs except HTML tags and autolinks. Thus, for example, this is +not parsed as emphasized text, since the second `*` is part of a code +span: + +```````````````````````````````` example +*foo`*` +. +

                  *foo*

                  +```````````````````````````````` + + +And this is not parsed as a link: + +```````````````````````````````` example +[not a `link](/foo`) +. +

                  [not a link](/foo)

                  +```````````````````````````````` + + +Code spans, HTML tags, and autolinks have the same precedence. +Thus, this is code: + +```````````````````````````````` example +`` +. +

                  <a href="">`

                  +```````````````````````````````` + + +But this is an HTML tag: + +```````````````````````````````` example +
                  ` +. +

                  `

                  +```````````````````````````````` + + +And this is code: + +```````````````````````````````` example +`` +. +

                  <http://foo.bar.baz>`

                  +```````````````````````````````` + + +But this is an autolink: + +```````````````````````````````` example +` +. +

                  http://foo.bar.`baz`

                  +```````````````````````````````` + + +When a backtick string is not closed by a matching backtick string, +we just have literal backticks: + +```````````````````````````````` example +```foo`` +. +

                  ```foo``

                  +```````````````````````````````` + + +```````````````````````````````` example +`foo +. +

                  `foo

                  +```````````````````````````````` + +The following case also illustrates the need for opening and +closing backtick strings to be equal in length: + +```````````````````````````````` example +`foo``bar`` +. +

                  `foobar

                  +```````````````````````````````` + + +## Emphasis and strong emphasis + +John Gruber's original [Markdown syntax +description](http://daringfireball.net/projects/markdown/syntax#em) says: + +> Markdown treats asterisks (`*`) and underscores (`_`) as indicators of +> emphasis. Text wrapped with one `*` or `_` will be wrapped with an HTML +> `` tag; double `*`'s or `_`'s will be wrapped with an HTML `` +> tag. + +This is enough for most users, but these rules leave much undecided, +especially when it comes to nested emphasis. The original +`Markdown.pl` test suite makes it clear that triple `***` and +`___` delimiters can be used for strong emphasis, and most +implementations have also allowed the following patterns: + +``` markdown +***strong emph*** +***strong** in emph* +***emph* in strong** +**in strong *emph*** +*in emph **strong*** +``` + +The following patterns are less widely supported, but the intent +is clear and they are useful (especially in contexts like bibliography +entries): + +``` markdown +*emph *with emph* in it* +**strong **with strong** in it** +``` + +Many implementations have also restricted intraword emphasis to +the `*` forms, to avoid unwanted emphasis in words containing +internal underscores. (It is best practice to put these in code +spans, but users often do not.) + +``` markdown +internal emphasis: foo*bar*baz +no emphasis: foo_bar_baz +``` + +The rules given below capture all of these patterns, while allowing +for efficient parsing strategies that do not backtrack. + +First, some definitions. A [delimiter run](@) is either +a sequence of one or more `*` characters that is not preceded or +followed by a non-backslash-escaped `*` character, or a sequence +of one or more `_` characters that is not preceded or followed by +a non-backslash-escaped `_` character. + +A [left-flanking delimiter run](@) is +a [delimiter run] that is (1) not followed by [Unicode whitespace], +and either (2a) not followed by a [punctuation character], or +(2b) followed by a [punctuation character] and +preceded by [Unicode whitespace] or a [punctuation character]. +For purposes of this definition, the beginning and the end of +the line count as Unicode whitespace. + +A [right-flanking delimiter run](@) is +a [delimiter run] that is (1) not preceded by [Unicode whitespace], +and either (2a) not preceded by a [punctuation character], or +(2b) preceded by a [punctuation character] and +followed by [Unicode whitespace] or a [punctuation character]. +For purposes of this definition, the beginning and the end of +the line count as Unicode whitespace. + +Here are some examples of delimiter runs. + + - left-flanking but not right-flanking: + + ``` + ***abc + _abc + **"abc" + _"abc" + ``` + + - right-flanking but not left-flanking: + + ``` + abc*** + abc_ + "abc"** + "abc"_ + ``` + + - Both left and right-flanking: + + ``` + abc***def + "abc"_"def" + ``` + + - Neither left nor right-flanking: + + ``` + abc *** def + a _ b + ``` + +(The idea of distinguishing left-flanking and right-flanking +delimiter runs based on the character before and the character +after comes from Roopesh Chander's +[vfmd](http://www.vfmd.org/vfmd-spec/specification/#procedure-for-identifying-emphasis-tags). +vfmd uses the terminology "emphasis indicator string" instead of "delimiter +run," and its rules for distinguishing left- and right-flanking runs +are a bit more complex than the ones given here.) + +The following rules define emphasis and strong emphasis: + +1. A single `*` character [can open emphasis](@) + iff (if and only if) it is part of a [left-flanking delimiter run]. + +2. A single `_` character [can open emphasis] iff + it is part of a [left-flanking delimiter run] + and either (a) not part of a [right-flanking delimiter run] + or (b) part of a [right-flanking delimiter run] + preceded by punctuation. + +3. A single `*` character [can close emphasis](@) + iff it is part of a [right-flanking delimiter run]. + +4. A single `_` character [can close emphasis] iff + it is part of a [right-flanking delimiter run] + and either (a) not part of a [left-flanking delimiter run] + or (b) part of a [left-flanking delimiter run] + followed by punctuation. + +5. A double `**` [can open strong emphasis](@) + iff it is part of a [left-flanking delimiter run]. + +6. A double `__` [can open strong emphasis] iff + it is part of a [left-flanking delimiter run] + and either (a) not part of a [right-flanking delimiter run] + or (b) part of a [right-flanking delimiter run] + preceded by punctuation. + +7. A double `**` [can close strong emphasis](@) + iff it is part of a [right-flanking delimiter run]. + +8. A double `__` [can close strong emphasis] iff + it is part of a [right-flanking delimiter run] + and either (a) not part of a [left-flanking delimiter run] + or (b) part of a [left-flanking delimiter run] + followed by punctuation. + +9. Emphasis begins with a delimiter that [can open emphasis] and ends + with a delimiter that [can close emphasis], and that uses the same + character (`_` or `*`) as the opening delimiter. The + opening and closing delimiters must belong to separate + [delimiter runs]. If one of the delimiters can both + open and close emphasis, then the sum of the lengths of the + delimiter runs containing the opening and closing delimiters + must not be a multiple of 3 unless both lengths are + multiples of 3. + +10. Strong emphasis begins with a delimiter that + [can open strong emphasis] and ends with a delimiter that + [can close strong emphasis], and that uses the same character + (`_` or `*`) as the opening delimiter. The + opening and closing delimiters must belong to separate + [delimiter runs]. If one of the delimiters can both open + and close strong emphasis, then the sum of the lengths of + the delimiter runs containing the opening and closing + delimiters must not be a multiple of 3 unless both lengths + are multiples of 3. + +11. A literal `*` character cannot occur at the beginning or end of + `*`-delimited emphasis or `**`-delimited strong emphasis, unless it + is backslash-escaped. + +12. A literal `_` character cannot occur at the beginning or end of + `_`-delimited emphasis or `__`-delimited strong emphasis, unless it + is backslash-escaped. + +Where rules 1--12 above are compatible with multiple parsings, +the following principles resolve ambiguity: + +13. The number of nestings should be minimized. Thus, for example, + an interpretation `...` is always preferred to + `...`. + +14. An interpretation `...` is always + preferred to `...`. + +15. When two potential emphasis or strong emphasis spans overlap, + so that the second begins before the first ends and ends after + the first ends, the first takes precedence. Thus, for example, + `*foo _bar* baz_` is parsed as `foo _bar baz_` rather + than `*foo bar* baz`. + +16. When there are two potential emphasis or strong emphasis spans + with the same closing delimiter, the shorter one (the one that + opens later) takes precedence. Thus, for example, + `**foo **bar baz**` is parsed as `**foo bar baz` + rather than `foo **bar baz`. + +17. Inline code spans, links, images, and HTML tags group more tightly + than emphasis. So, when there is a choice between an interpretation + that contains one of these elements and one that does not, the + former always wins. Thus, for example, `*[foo*](bar)` is + parsed as `*foo*` rather than as + `[foo](bar)`. + +These rules can be illustrated through a series of examples. + +Rule 1: + +```````````````````````````````` example +*foo bar* +. +

                  foo bar

                  +```````````````````````````````` + + +This is not emphasis, because the opening `*` is followed by +whitespace, and hence not part of a [left-flanking delimiter run]: + +```````````````````````````````` example +a * foo bar* +. +

                  a * foo bar*

                  +```````````````````````````````` + + +This is not emphasis, because the opening `*` is preceded +by an alphanumeric and followed by punctuation, and hence +not part of a [left-flanking delimiter run]: + +```````````````````````````````` example +a*"foo"* +. +

                  a*"foo"*

                  +```````````````````````````````` + + +Unicode nonbreaking spaces count as whitespace, too: + +```````````````````````````````` example +* a * +. +

                  * a *

                  +```````````````````````````````` + + +Intraword emphasis with `*` is permitted: + +```````````````````````````````` example +foo*bar* +. +

                  foobar

                  +```````````````````````````````` + + +```````````````````````````````` example +5*6*78 +. +

                  5678

                  +```````````````````````````````` + + +Rule 2: + +```````````````````````````````` example +_foo bar_ +. +

                  foo bar

                  +```````````````````````````````` + + +This is not emphasis, because the opening `_` is followed by +whitespace: + +```````````````````````````````` example +_ foo bar_ +. +

                  _ foo bar_

                  +```````````````````````````````` + + +This is not emphasis, because the opening `_` is preceded +by an alphanumeric and followed by punctuation: + +```````````````````````````````` example +a_"foo"_ +. +

                  a_"foo"_

                  +```````````````````````````````` + + +Emphasis with `_` is not allowed inside words: + +```````````````````````````````` example +foo_bar_ +. +

                  foo_bar_

                  +```````````````````````````````` + + +```````````````````````````````` example +5_6_78 +. +

                  5_6_78

                  +```````````````````````````````` + + +```````````````````````````````` example +пристаням_стремятся_ +. +

                  пристаням_стремятся_

                  +```````````````````````````````` + + +Here `_` does not generate emphasis, because the first delimiter run +is right-flanking and the second left-flanking: + +```````````````````````````````` example +aa_"bb"_cc +. +

                  aa_"bb"_cc

                  +```````````````````````````````` + + +This is emphasis, even though the opening delimiter is +both left- and right-flanking, because it is preceded by +punctuation: + +```````````````````````````````` example +foo-_(bar)_ +. +

                  foo-(bar)

                  +```````````````````````````````` + + +Rule 3: + +This is not emphasis, because the closing delimiter does +not match the opening delimiter: + +```````````````````````````````` example +_foo* +. +

                  _foo*

                  +```````````````````````````````` + + +This is not emphasis, because the closing `*` is preceded by +whitespace: + +```````````````````````````````` example +*foo bar * +. +

                  *foo bar *

                  +```````````````````````````````` + + +A newline also counts as whitespace: + +```````````````````````````````` example +*foo bar +* +. +

                  *foo bar +*

                  +```````````````````````````````` + + +This is not emphasis, because the second `*` is +preceded by punctuation and followed by an alphanumeric +(hence it is not part of a [right-flanking delimiter run]: + +```````````````````````````````` example +*(*foo) +. +

                  *(*foo)

                  +```````````````````````````````` + + +The point of this restriction is more easily appreciated +with this example: + +```````````````````````````````` example +*(*foo*)* +. +

                  (foo)

                  +```````````````````````````````` + + +Intraword emphasis with `*` is allowed: + +```````````````````````````````` example +*foo*bar +. +

                  foobar

                  +```````````````````````````````` + + + +Rule 4: + +This is not emphasis, because the closing `_` is preceded by +whitespace: + +```````````````````````````````` example +_foo bar _ +. +

                  _foo bar _

                  +```````````````````````````````` + + +This is not emphasis, because the second `_` is +preceded by punctuation and followed by an alphanumeric: + +```````````````````````````````` example +_(_foo) +. +

                  _(_foo)

                  +```````````````````````````````` + + +This is emphasis within emphasis: + +```````````````````````````````` example +_(_foo_)_ +. +

                  (foo)

                  +```````````````````````````````` + + +Intraword emphasis is disallowed for `_`: + +```````````````````````````````` example +_foo_bar +. +

                  _foo_bar

                  +```````````````````````````````` + + +```````````````````````````````` example +_пристаням_стремятся +. +

                  _пристаням_стремятся

                  +```````````````````````````````` + + +```````````````````````````````` example +_foo_bar_baz_ +. +

                  foo_bar_baz

                  +```````````````````````````````` + + +This is emphasis, even though the closing delimiter is +both left- and right-flanking, because it is followed by +punctuation: + +```````````````````````````````` example +_(bar)_. +. +

                  (bar).

                  +```````````````````````````````` + + +Rule 5: + +```````````````````````````````` example +**foo bar** +. +

                  foo bar

                  +```````````````````````````````` + + +This is not strong emphasis, because the opening delimiter is +followed by whitespace: + +```````````````````````````````` example +** foo bar** +. +

                  ** foo bar**

                  +```````````````````````````````` + + +This is not strong emphasis, because the opening `**` is preceded +by an alphanumeric and followed by punctuation, and hence +not part of a [left-flanking delimiter run]: + +```````````````````````````````` example +a**"foo"** +. +

                  a**"foo"**

                  +```````````````````````````````` + + +Intraword strong emphasis with `**` is permitted: + +```````````````````````````````` example +foo**bar** +. +

                  foobar

                  +```````````````````````````````` + + +Rule 6: + +```````````````````````````````` example +__foo bar__ +. +

                  foo bar

                  +```````````````````````````````` + + +This is not strong emphasis, because the opening delimiter is +followed by whitespace: + +```````````````````````````````` example +__ foo bar__ +. +

                  __ foo bar__

                  +```````````````````````````````` + + +A newline counts as whitespace: +```````````````````````````````` example +__ +foo bar__ +. +

                  __ +foo bar__

                  +```````````````````````````````` + + +This is not strong emphasis, because the opening `__` is preceded +by an alphanumeric and followed by punctuation: + +```````````````````````````````` example +a__"foo"__ +. +

                  a__"foo"__

                  +```````````````````````````````` + + +Intraword strong emphasis is forbidden with `__`: + +```````````````````````````````` example +foo__bar__ +. +

                  foo__bar__

                  +```````````````````````````````` + + +```````````````````````````````` example +5__6__78 +. +

                  5__6__78

                  +```````````````````````````````` + + +```````````````````````````````` example +пристаням__стремятся__ +. +

                  пристаням__стремятся__

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo, __bar__, baz__ +. +

                  foo, bar, baz

                  +```````````````````````````````` + + +This is strong emphasis, even though the opening delimiter is +both left- and right-flanking, because it is preceded by +punctuation: + +```````````````````````````````` example +foo-__(bar)__ +. +

                  foo-(bar)

                  +```````````````````````````````` + + + +Rule 7: + +This is not strong emphasis, because the closing delimiter is preceded +by whitespace: + +```````````````````````````````` example +**foo bar ** +. +

                  **foo bar **

                  +```````````````````````````````` + + +(Nor can it be interpreted as an emphasized `*foo bar *`, because of +Rule 11.) + +This is not strong emphasis, because the second `**` is +preceded by punctuation and followed by an alphanumeric: + +```````````````````````````````` example +**(**foo) +. +

                  **(**foo)

                  +```````````````````````````````` + + +The point of this restriction is more easily appreciated +with these examples: + +```````````````````````````````` example +*(**foo**)* +. +

                  (foo)

                  +```````````````````````````````` + + +```````````````````````````````` example +**Gomphocarpus (*Gomphocarpus physocarpus*, syn. +*Asclepias physocarpa*)** +. +

                  Gomphocarpus (Gomphocarpus physocarpus, syn. +Asclepias physocarpa)

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo "*bar*" foo** +. +

                  foo "bar" foo

                  +```````````````````````````````` + + +Intraword emphasis: + +```````````````````````````````` example +**foo**bar +. +

                  foobar

                  +```````````````````````````````` + + +Rule 8: + +This is not strong emphasis, because the closing delimiter is +preceded by whitespace: + +```````````````````````````````` example +__foo bar __ +. +

                  __foo bar __

                  +```````````````````````````````` + + +This is not strong emphasis, because the second `__` is +preceded by punctuation and followed by an alphanumeric: + +```````````````````````````````` example +__(__foo) +. +

                  __(__foo)

                  +```````````````````````````````` + + +The point of this restriction is more easily appreciated +with this example: + +```````````````````````````````` example +_(__foo__)_ +. +

                  (foo)

                  +```````````````````````````````` + + +Intraword strong emphasis is forbidden with `__`: + +```````````````````````````````` example +__foo__bar +. +

                  __foo__bar

                  +```````````````````````````````` + + +```````````````````````````````` example +__пристаням__стремятся +. +

                  __пристаням__стремятся

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo__bar__baz__ +. +

                  foo__bar__baz

                  +```````````````````````````````` + + +This is strong emphasis, even though the closing delimiter is +both left- and right-flanking, because it is followed by +punctuation: + +```````````````````````````````` example +__(bar)__. +. +

                  (bar).

                  +```````````````````````````````` + + +Rule 9: + +Any nonempty sequence of inline elements can be the contents of an +emphasized span. + +```````````````````````````````` example +*foo [bar](/url)* +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo +bar* +. +

                  foo +bar

                  +```````````````````````````````` + + +In particular, emphasis and strong emphasis can be nested +inside emphasis: + +```````````````````````````````` example +_foo __bar__ baz_ +. +

                  foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +_foo _bar_ baz_ +. +

                  foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo_ bar_ +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo *bar** +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo **bar** baz* +. +

                  foo bar baz

                  +```````````````````````````````` + +```````````````````````````````` example +*foo**bar**baz* +. +

                  foobarbaz

                  +```````````````````````````````` + +Note that in the preceding case, the interpretation + +``` markdown +

                  foobarbaz

                  +``` + + +is precluded by the condition that a delimiter that +can both open and close (like the `*` after `foo`) +cannot form emphasis if the sum of the lengths of +the delimiter runs containing the opening and +closing delimiters is a multiple of 3 unless +both lengths are multiples of 3. + + +For the same reason, we don't get two consecutive +emphasis sections in this example: + +```````````````````````````````` example +*foo**bar* +. +

                  foo**bar

                  +```````````````````````````````` + + +The same condition ensures that the following +cases are all strong emphasis nested inside +emphasis, even when the interior spaces are +omitted: + + +```````````````````````````````` example +***foo** bar* +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo **bar*** +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo**bar*** +. +

                  foobar

                  +```````````````````````````````` + + +When the lengths of the interior closing and opening +delimiter runs are *both* multiples of 3, though, +they can match to create emphasis: + +```````````````````````````````` example +foo***bar***baz +. +

                  foobarbaz

                  +```````````````````````````````` + +```````````````````````````````` example +foo******bar*********baz +. +

                  foobar***baz

                  +```````````````````````````````` + + +Indefinite levels of nesting are possible: + +```````````````````````````````` example +*foo **bar *baz* bim** bop* +. +

                  foo bar baz bim bop

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo [*bar*](/url)* +. +

                  foo bar

                  +```````````````````````````````` + + +There can be no empty emphasis or strong emphasis: + +```````````````````````````````` example +** is not an empty emphasis +. +

                  ** is not an empty emphasis

                  +```````````````````````````````` + + +```````````````````````````````` example +**** is not an empty strong emphasis +. +

                  **** is not an empty strong emphasis

                  +```````````````````````````````` + + + +Rule 10: + +Any nonempty sequence of inline elements can be the contents of an +strongly emphasized span. + +```````````````````````````````` example +**foo [bar](/url)** +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo +bar** +. +

                  foo +bar

                  +```````````````````````````````` + + +In particular, emphasis and strong emphasis can be nested +inside strong emphasis: + +```````````````````````````````` example +__foo _bar_ baz__ +. +

                  foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo __bar__ baz__ +. +

                  foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +____foo__ bar__ +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo **bar**** +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo *bar* baz** +. +

                  foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo*bar*baz** +. +

                  foobarbaz

                  +```````````````````````````````` + + +```````````````````````````````` example +***foo* bar** +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo *bar*** +. +

                  foo bar

                  +```````````````````````````````` + + +Indefinite levels of nesting are possible: + +```````````````````````````````` example +**foo *bar **baz** +bim* bop** +. +

                  foo bar baz +bim bop

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo [*bar*](/url)** +. +

                  foo bar

                  +```````````````````````````````` + + +There can be no empty emphasis or strong emphasis: + +```````````````````````````````` example +__ is not an empty emphasis +. +

                  __ is not an empty emphasis

                  +```````````````````````````````` + + +```````````````````````````````` example +____ is not an empty strong emphasis +. +

                  ____ is not an empty strong emphasis

                  +```````````````````````````````` + + + +Rule 11: + +```````````````````````````````` example +foo *** +. +

                  foo ***

                  +```````````````````````````````` + + +```````````````````````````````` example +foo *\** +. +

                  foo *

                  +```````````````````````````````` + + +```````````````````````````````` example +foo *_* +. +

                  foo _

                  +```````````````````````````````` + + +```````````````````````````````` example +foo ***** +. +

                  foo *****

                  +```````````````````````````````` + + +```````````````````````````````` example +foo **\*** +. +

                  foo *

                  +```````````````````````````````` + + +```````````````````````````````` example +foo **_** +. +

                  foo _

                  +```````````````````````````````` + + +Note that when delimiters do not match evenly, Rule 11 determines +that the excess literal `*` characters will appear outside of the +emphasis, rather than inside it: + +```````````````````````````````` example +**foo* +. +

                  *foo

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo** +. +

                  foo*

                  +```````````````````````````````` + + +```````````````````````````````` example +***foo** +. +

                  *foo

                  +```````````````````````````````` + + +```````````````````````````````` example +****foo* +. +

                  ***foo

                  +```````````````````````````````` + + +```````````````````````````````` example +**foo*** +. +

                  foo*

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo**** +. +

                  foo***

                  +```````````````````````````````` + + + +Rule 12: + +```````````````````````````````` example +foo ___ +. +

                  foo ___

                  +```````````````````````````````` + + +```````````````````````````````` example +foo _\__ +. +

                  foo _

                  +```````````````````````````````` + + +```````````````````````````````` example +foo _*_ +. +

                  foo *

                  +```````````````````````````````` + + +```````````````````````````````` example +foo _____ +. +

                  foo _____

                  +```````````````````````````````` + + +```````````````````````````````` example +foo __\___ +. +

                  foo _

                  +```````````````````````````````` + + +```````````````````````````````` example +foo __*__ +. +

                  foo *

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo_ +. +

                  _foo

                  +```````````````````````````````` + + +Note that when delimiters do not match evenly, Rule 12 determines +that the excess literal `_` characters will appear outside of the +emphasis, rather than inside it: + +```````````````````````````````` example +_foo__ +. +

                  foo_

                  +```````````````````````````````` + + +```````````````````````````````` example +___foo__ +. +

                  _foo

                  +```````````````````````````````` + + +```````````````````````````````` example +____foo_ +. +

                  ___foo

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo___ +. +

                  foo_

                  +```````````````````````````````` + + +```````````````````````````````` example +_foo____ +. +

                  foo___

                  +```````````````````````````````` + + +Rule 13 implies that if you want emphasis nested directly inside +emphasis, you must use different delimiters: + +```````````````````````````````` example +**foo** +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +*_foo_* +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +__foo__ +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +_*foo*_ +. +

                  foo

                  +```````````````````````````````` + + +However, strong emphasis within strong emphasis is possible without +switching delimiters: + +```````````````````````````````` example +****foo**** +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +____foo____ +. +

                  foo

                  +```````````````````````````````` + + + +Rule 13 can be applied to arbitrarily long sequences of +delimiters: + +```````````````````````````````` example +******foo****** +. +

                  foo

                  +```````````````````````````````` + + +Rule 14: + +```````````````````````````````` example +***foo*** +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +_____foo_____ +. +

                  foo

                  +```````````````````````````````` + + +Rule 15: + +```````````````````````````````` example +*foo _bar* baz_ +. +

                  foo _bar baz_

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo __bar *baz bim__ bam* +. +

                  foo bar *baz bim bam

                  +```````````````````````````````` + + +Rule 16: + +```````````````````````````````` example +**foo **bar baz** +. +

                  **foo bar baz

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo *bar baz* +. +

                  *foo bar baz

                  +```````````````````````````````` + + +Rule 17: + +```````````````````````````````` example +*[bar*](/url) +. +

                  *bar*

                  +```````````````````````````````` + + +```````````````````````````````` example +_foo [bar_](/url) +. +

                  _foo bar_

                  +```````````````````````````````` + + +```````````````````````````````` example +* +. +

                  *

                  +```````````````````````````````` + + +```````````````````````````````` example +** +. +

                  **

                  +```````````````````````````````` + + +```````````````````````````````` example +__ +. +

                  __

                  +```````````````````````````````` + + +```````````````````````````````` example +*a `*`* +. +

                  a *

                  +```````````````````````````````` + + +```````````````````````````````` example +_a `_`_ +. +

                  a _

                  +```````````````````````````````` + + +```````````````````````````````` example +**a +. +

                  **ahttp://foo.bar/?q=**

                  +```````````````````````````````` + + +```````````````````````````````` example +__a +. +

                  __ahttp://foo.bar/?q=__

                  +```````````````````````````````` + + + +## Links + +A link contains [link text] (the visible text), a [link destination] +(the URI that is the link destination), and optionally a [link title]. +There are two basic kinds of links in Markdown. In [inline links] the +destination and title are given immediately after the link text. In +[reference links] the destination and title are defined elsewhere in +the document. + +A [link text](@) consists of a sequence of zero or more +inline elements enclosed by square brackets (`[` and `]`). The +following rules apply: + +- Links may not contain other links, at any level of nesting. If + multiple otherwise valid link definitions appear nested inside each + other, the inner-most definition is used. + +- Brackets are allowed in the [link text] only if (a) they + are backslash-escaped or (b) they appear as a matched pair of brackets, + with an open bracket `[`, a sequence of zero or more inlines, and + a close bracket `]`. + +- Backtick [code spans], [autolinks], and raw [HTML tags] bind more tightly + than the brackets in link text. Thus, for example, + `` [foo`]` `` could not be a link text, since the second `]` + is part of a code span. + +- The brackets in link text bind more tightly than markers for + [emphasis and strong emphasis]. Thus, for example, `*[foo*](url)` is a link. + +A [link destination](@) consists of either + +- a sequence of zero or more characters between an opening `<` and a + closing `>` that contains no line breaks or unescaped + `<` or `>` characters, or + +- a nonempty sequence of characters that does not start with + `<`, does not include ASCII space or control characters, and + includes parentheses only if (a) they are backslash-escaped or + (b) they are part of a balanced pair of unescaped parentheses. + (Implementations may impose limits on parentheses nesting to + avoid performance issues, but at least three levels of nesting + should be supported.) + +A [link title](@) consists of either + +- a sequence of zero or more characters between straight double-quote + characters (`"`), including a `"` character only if it is + backslash-escaped, or + +- a sequence of zero or more characters between straight single-quote + characters (`'`), including a `'` character only if it is + backslash-escaped, or + +- a sequence of zero or more characters between matching parentheses + (`(...)`), including a `(` or `)` character only if it is + backslash-escaped. + +Although [link titles] may span multiple lines, they may not contain +a [blank line]. + +An [inline link](@) consists of a [link text] followed immediately +by a left parenthesis `(`, optional [whitespace], an optional +[link destination], an optional [link title] separated from the link +destination by [whitespace], optional [whitespace], and a right +parenthesis `)`. The link's text consists of the inlines contained +in the [link text] (excluding the enclosing square brackets). +The link's URI consists of the link destination, excluding enclosing +`<...>` if present, with backslash-escapes in effect as described +above. The link's title consists of the link title, excluding its +enclosing delimiters, with backslash-escapes in effect as described +above. + +Here is a simple inline link: + +```````````````````````````````` example +[link](/uri "title") +. +

                  link

                  +```````````````````````````````` + + +The title may be omitted: + +```````````````````````````````` example +[link](/uri) +. +

                  link

                  +```````````````````````````````` + + +Both the title and the destination may be omitted: + +```````````````````````````````` example +[link]() +. +

                  link

                  +```````````````````````````````` + + +```````````````````````````````` example +[link](<>) +. +

                  link

                  +```````````````````````````````` + +The destination can only contain spaces if it is +enclosed in pointy brackets: + +```````````````````````````````` example +[link](/my uri) +. +

                  [link](/my uri)

                  +```````````````````````````````` + +```````````````````````````````` example +[link](
                  ) +. +

                  link

                  +```````````````````````````````` + +The destination cannot contain line breaks, +even if enclosed in pointy brackets: + +```````````````````````````````` example +[link](foo +bar) +. +

                  [link](foo +bar)

                  +```````````````````````````````` + +```````````````````````````````` example +[link]() +. +

                  [link]()

                  +```````````````````````````````` + +The destination can contain `)` if it is enclosed +in pointy brackets: + +```````````````````````````````` example +[a]() +. +

                  a

                  +```````````````````````````````` + +Pointy brackets that enclose links must be unescaped: + +```````````````````````````````` example +[link]() +. +

                  [link](<foo>)

                  +```````````````````````````````` + +These are not links, because the opening pointy bracket +is not matched properly: + +```````````````````````````````` example +[a]( +[a](c) +. +

                  [a](<b)c +[a](<b)c> +[a](c)

                  +```````````````````````````````` + +Parentheses inside the link destination may be escaped: + +```````````````````````````````` example +[link](\(foo\)) +. +

                  link

                  +```````````````````````````````` + +Any number of parentheses are allowed without escaping, as long as they are +balanced: + +```````````````````````````````` example +[link](foo(and(bar))) +. +

                  link

                  +```````````````````````````````` + +However, if you have unbalanced parentheses, you need to escape or use the +`<...>` form: + +```````````````````````````````` example +[link](foo\(and\(bar\)) +. +

                  link

                  +```````````````````````````````` + + +```````````````````````````````` example +[link]() +. +

                  link

                  +```````````````````````````````` + + +Parentheses and other symbols can also be escaped, as usual +in Markdown: + +```````````````````````````````` example +[link](foo\)\:) +. +

                  link

                  +```````````````````````````````` + + +A link can contain fragment identifiers and queries: + +```````````````````````````````` example +[link](#fragment) + +[link](http://example.com#fragment) + +[link](http://example.com?foo=3#frag) +. +

                  link

                  +

                  link

                  +

                  link

                  +```````````````````````````````` + + +Note that a backslash before a non-escapable character is +just a backslash: + +```````````````````````````````` example +[link](foo\bar) +. +

                  link

                  +```````````````````````````````` + + +URL-escaping should be left alone inside the destination, as all +URL-escaped characters are also valid URL characters. Entity and +numerical character references in the destination will be parsed +into the corresponding Unicode code points, as usual. These may +be optionally URL-escaped when written as HTML, but this spec +does not enforce any particular policy for rendering URLs in +HTML or other formats. Renderers may make different decisions +about how to escape or normalize URLs in the output. + +```````````````````````````````` example +[link](foo%20bä) +. +

                  link

                  +```````````````````````````````` + + +Note that, because titles can often be parsed as destinations, +if you try to omit the destination and keep the title, you'll +get unexpected results: + +```````````````````````````````` example +[link]("title") +. +

                  link

                  +```````````````````````````````` + + +Titles may be in single quotes, double quotes, or parentheses: + +```````````````````````````````` example +[link](/url "title") +[link](/url 'title') +[link](/url (title)) +. +

                  link +link +link

                  +```````````````````````````````` + + +Backslash escapes and entity and numeric character references +may be used in titles: + +```````````````````````````````` example +[link](/url "title \""") +. +

                  link

                  +```````````````````````````````` + + +Titles must be separated from the link using a [whitespace]. +Other [Unicode whitespace] like non-breaking space doesn't work. + +```````````````````````````````` example +[link](/url "title") +. +

                  link

                  +```````````````````````````````` + + +Nested balanced quotes are not allowed without escaping: + +```````````````````````````````` example +[link](/url "title "and" title") +. +

                  [link](/url "title "and" title")

                  +```````````````````````````````` + + +But it is easy to work around this by using a different quote type: + +```````````````````````````````` example +[link](/url 'title "and" title') +. +

                  link

                  +```````````````````````````````` + + +(Note: `Markdown.pl` did allow double quotes inside a double-quoted +title, and its test suite included a test demonstrating this. +But it is hard to see a good rationale for the extra complexity this +brings, since there are already many ways---backslash escaping, +entity and numeric character references, or using a different +quote type for the enclosing title---to write titles containing +double quotes. `Markdown.pl`'s handling of titles has a number +of other strange features. For example, it allows single-quoted +titles in inline links, but not reference links. And, in +reference links but not inline links, it allows a title to begin +with `"` and end with `)`. `Markdown.pl` 1.0.1 even allows +titles with no closing quotation mark, though 1.0.2b8 does not. +It seems preferable to adopt a simple, rational rule that works +the same way in inline links and link reference definitions.) + +[Whitespace] is allowed around the destination and title: + +```````````````````````````````` example +[link]( /uri + "title" ) +. +

                  link

                  +```````````````````````````````` + + +But it is not allowed between the link text and the +following parenthesis: + +```````````````````````````````` example +[link] (/uri) +. +

                  [link] (/uri)

                  +```````````````````````````````` + + +The link text may contain balanced brackets, but not unbalanced ones, +unless they are escaped: + +```````````````````````````````` example +[link [foo [bar]]](/uri) +. +

                  link [foo [bar]]

                  +```````````````````````````````` + + +```````````````````````````````` example +[link] bar](/uri) +. +

                  [link] bar](/uri)

                  +```````````````````````````````` + + +```````````````````````````````` example +[link [bar](/uri) +. +

                  [link bar

                  +```````````````````````````````` + + +```````````````````````````````` example +[link \[bar](/uri) +. +

                  link [bar

                  +```````````````````````````````` + + +The link text may contain inline content: + +```````````````````````````````` example +[link *foo **bar** `#`*](/uri) +. +

                  link foo bar #

                  +```````````````````````````````` + + +```````````````````````````````` example +[![moon](moon.jpg)](/uri) +. +

                  moon

                  +```````````````````````````````` + + +However, links may not contain other links, at any level of nesting. + +```````````````````````````````` example +[foo [bar](/uri)](/uri) +. +

                  [foo bar](/uri)

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo *[bar [baz](/uri)](/uri)*](/uri) +. +

                  [foo [bar baz](/uri)](/uri)

                  +```````````````````````````````` + + +```````````````````````````````` example +![[[foo](uri1)](uri2)](uri3) +. +

                  [foo](uri2)

                  +```````````````````````````````` + + +These cases illustrate the precedence of link text grouping over +emphasis grouping: + +```````````````````````````````` example +*[foo*](/uri) +. +

                  *foo*

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo *bar](baz*) +. +

                  foo *bar

                  +```````````````````````````````` + + +Note that brackets that *aren't* part of links do not take +precedence: + +```````````````````````````````` example +*foo [bar* baz] +. +

                  foo [bar baz]

                  +```````````````````````````````` + + +These cases illustrate the precedence of HTML tags, code spans, +and autolinks over link grouping: + +```````````````````````````````` example +[foo +. +

                  [foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo`](/uri)` +. +

                  [foo](/uri)

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo +. +

                  [foohttp://example.com/?search=](uri)

                  +```````````````````````````````` + + +There are three kinds of [reference link](@)s: +[full](#full-reference-link), [collapsed](#collapsed-reference-link), +and [shortcut](#shortcut-reference-link). + +A [full reference link](@) +consists of a [link text] immediately followed by a [link label] +that [matches] a [link reference definition] elsewhere in the document. + +A [link label](@) begins with a left bracket (`[`) and ends +with the first right bracket (`]`) that is not backslash-escaped. +Between these brackets there must be at least one [non-whitespace character]. +Unescaped square bracket characters are not allowed inside the +opening and closing square brackets of [link labels]. A link +label can have at most 999 characters inside the square +brackets. + +One label [matches](@) +another just in case their normalized forms are equal. To normalize a +label, strip off the opening and closing brackets, +perform the *Unicode case fold*, strip leading and trailing +[whitespace] and collapse consecutive internal +[whitespace] to a single space. If there are multiple +matching reference link definitions, the one that comes first in the +document is used. (It is desirable in such cases to emit a warning.) + +The contents of the first link label are parsed as inlines, which are +used as the link's text. The link's URI and title are provided by the +matching [link reference definition]. + +Here is a simple example: + +```````````````````````````````` example +[foo][bar] + +[bar]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +The rules for the [link text] are the same as with +[inline links]. Thus: + +The link text may contain balanced brackets, but not unbalanced ones, +unless they are escaped: + +```````````````````````````````` example +[link [foo [bar]]][ref] + +[ref]: /uri +. +

                  link [foo [bar]]

                  +```````````````````````````````` + + +```````````````````````````````` example +[link \[bar][ref] + +[ref]: /uri +. +

                  link [bar

                  +```````````````````````````````` + + +The link text may contain inline content: + +```````````````````````````````` example +[link *foo **bar** `#`*][ref] + +[ref]: /uri +. +

                  link foo bar #

                  +```````````````````````````````` + + +```````````````````````````````` example +[![moon](moon.jpg)][ref] + +[ref]: /uri +. +

                  moon

                  +```````````````````````````````` + + +However, links may not contain other links, at any level of nesting. + +```````````````````````````````` example +[foo [bar](/uri)][ref] + +[ref]: /uri +. +

                  [foo bar]ref

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo *bar [baz][ref]*][ref] + +[ref]: /uri +. +

                  [foo bar baz]ref

                  +```````````````````````````````` + + +(In the examples above, we have two [shortcut reference links] +instead of one [full reference link].) + +The following cases illustrate the precedence of link text grouping over +emphasis grouping: + +```````````````````````````````` example +*[foo*][ref] + +[ref]: /uri +. +

                  *foo*

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo *bar][ref] + +[ref]: /uri +. +

                  foo *bar

                  +```````````````````````````````` + + +These cases illustrate the precedence of HTML tags, code spans, +and autolinks over link grouping: + +```````````````````````````````` example +[foo + +[ref]: /uri +. +

                  [foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo`][ref]` + +[ref]: /uri +. +

                  [foo][ref]

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo + +[ref]: /uri +. +

                  [foohttp://example.com/?search=][ref]

                  +```````````````````````````````` + + +Matching is case-insensitive: + +```````````````````````````````` example +[foo][BaR] + +[bar]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +Unicode case fold is used: + +```````````````````````````````` example +[Толпой][Толпой] is a Russian word. + +[ТОЛПОЙ]: /url +. +

                  Толпой is a Russian word.

                  +```````````````````````````````` + + +Consecutive internal [whitespace] is treated as one space for +purposes of determining matching: + +```````````````````````````````` example +[Foo + bar]: /url + +[Baz][Foo bar] +. +

                  Baz

                  +```````````````````````````````` + + +No [whitespace] is allowed between the [link text] and the +[link label]: + +```````````````````````````````` example +[foo] [bar] + +[bar]: /url "title" +. +

                  [foo] bar

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo] +[bar] + +[bar]: /url "title" +. +

                  [foo] +bar

                  +```````````````````````````````` + + +This is a departure from John Gruber's original Markdown syntax +description, which explicitly allows whitespace between the link +text and the link label. It brings reference links in line with +[inline links], which (according to both original Markdown and +this spec) cannot have whitespace after the link text. More +importantly, it prevents inadvertent capture of consecutive +[shortcut reference links]. If whitespace is allowed between the +link text and the link label, then in the following we will have +a single reference link, not two shortcut reference links, as +intended: + +``` markdown +[foo] +[bar] + +[foo]: /url1 +[bar]: /url2 +``` + +(Note that [shortcut reference links] were introduced by Gruber +himself in a beta version of `Markdown.pl`, but never included +in the official syntax description. Without shortcut reference +links, it is harmless to allow space between the link text and +link label; but once shortcut references are introduced, it is +too dangerous to allow this, as it frequently leads to +unintended results.) + +When there are multiple matching [link reference definitions], +the first is used: + +```````````````````````````````` example +[foo]: /url1 + +[foo]: /url2 + +[bar][foo] +. +

                  bar

                  +```````````````````````````````` + + +Note that matching is performed on normalized strings, not parsed +inline content. So the following does not match, even though the +labels define equivalent inline content: + +```````````````````````````````` example +[bar][foo\!] + +[foo!]: /url +. +

                  [bar][foo!]

                  +```````````````````````````````` + + +[Link labels] cannot contain brackets, unless they are +backslash-escaped: + +```````````````````````````````` example +[foo][ref[] + +[ref[]: /uri +. +

                  [foo][ref[]

                  +

                  [ref[]: /uri

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo][ref[bar]] + +[ref[bar]]: /uri +. +

                  [foo][ref[bar]]

                  +

                  [ref[bar]]: /uri

                  +```````````````````````````````` + + +```````````````````````````````` example +[[[foo]]] + +[[[foo]]]: /url +. +

                  [[[foo]]]

                  +

                  [[[foo]]]: /url

                  +```````````````````````````````` + + +```````````````````````````````` example +[foo][ref\[] + +[ref\[]: /uri +. +

                  foo

                  +```````````````````````````````` + + +Note that in this example `]` is not backslash-escaped: + +```````````````````````````````` example +[bar\\]: /uri + +[bar\\] +. +

                  bar\

                  +```````````````````````````````` + + +A [link label] must contain at least one [non-whitespace character]: + +```````````````````````````````` example +[] + +[]: /uri +. +

                  []

                  +

                  []: /uri

                  +```````````````````````````````` + + +```````````````````````````````` example +[ + ] + +[ + ]: /uri +. +

                  [ +]

                  +

                  [ +]: /uri

                  +```````````````````````````````` + + +A [collapsed reference link](@) +consists of a [link label] that [matches] a +[link reference definition] elsewhere in the +document, followed by the string `[]`. +The contents of the first link label are parsed as inlines, +which are used as the link's text. The link's URI and title are +provided by the matching reference link definition. Thus, +`[foo][]` is equivalent to `[foo][foo]`. + +```````````````````````````````` example +[foo][] + +[foo]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[*foo* bar][] + +[*foo* bar]: /url "title" +. +

                  foo bar

                  +```````````````````````````````` + + +The link labels are case-insensitive: + +```````````````````````````````` example +[Foo][] + +[foo]: /url "title" +. +

                  Foo

                  +```````````````````````````````` + + + +As with full reference links, [whitespace] is not +allowed between the two sets of brackets: + +```````````````````````````````` example +[foo] +[] + +[foo]: /url "title" +. +

                  foo +[]

                  +```````````````````````````````` + + +A [shortcut reference link](@) +consists of a [link label] that [matches] a +[link reference definition] elsewhere in the +document and is not followed by `[]` or a link label. +The contents of the first link label are parsed as inlines, +which are used as the link's text. The link's URI and title +are provided by the matching link reference definition. +Thus, `[foo]` is equivalent to `[foo][]`. + +```````````````````````````````` example +[foo] + +[foo]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +[*foo* bar] + +[*foo* bar]: /url "title" +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +[[*foo* bar]] + +[*foo* bar]: /url "title" +. +

                  [foo bar]

                  +```````````````````````````````` + + +```````````````````````````````` example +[[bar [foo] + +[foo]: /url +. +

                  [[bar foo

                  +```````````````````````````````` + + +The link labels are case-insensitive: + +```````````````````````````````` example +[Foo] + +[foo]: /url "title" +. +

                  Foo

                  +```````````````````````````````` + + +A space after the link text should be preserved: + +```````````````````````````````` example +[foo] bar + +[foo]: /url +. +

                  foo bar

                  +```````````````````````````````` + + +If you just want bracketed text, you can backslash-escape the +opening bracket to avoid links: + +```````````````````````````````` example +\[foo] + +[foo]: /url "title" +. +

                  [foo]

                  +```````````````````````````````` + + +Note that this is a link, because a link label ends with the first +following closing bracket: + +```````````````````````````````` example +[foo*]: /url + +*[foo*] +. +

                  *foo*

                  +```````````````````````````````` + + +Full and compact references take precedence over shortcut +references: + +```````````````````````````````` example +[foo][bar] + +[foo]: /url1 +[bar]: /url2 +. +

                  foo

                  +```````````````````````````````` + +```````````````````````````````` example +[foo][] + +[foo]: /url1 +. +

                  foo

                  +```````````````````````````````` + +Inline links also take precedence: + +```````````````````````````````` example +[foo]() + +[foo]: /url1 +. +

                  foo

                  +```````````````````````````````` + +```````````````````````````````` example +[foo](not a link) + +[foo]: /url1 +. +

                  foo(not a link)

                  +```````````````````````````````` + +In the following case `[bar][baz]` is parsed as a reference, +`[foo]` as normal text: + +```````````````````````````````` example +[foo][bar][baz] + +[baz]: /url +. +

                  [foo]bar

                  +```````````````````````````````` + + +Here, though, `[foo][bar]` is parsed as a reference, since +`[bar]` is defined: + +```````````````````````````````` example +[foo][bar][baz] + +[baz]: /url1 +[bar]: /url2 +. +

                  foobaz

                  +```````````````````````````````` + + +Here `[foo]` is not parsed as a shortcut reference, because it +is followed by a link label (even though `[bar]` is not defined): + +```````````````````````````````` example +[foo][bar][baz] + +[baz]: /url1 +[foo]: /url2 +. +

                  [foo]bar

                  +```````````````````````````````` + + + +## Images + +Syntax for images is like the syntax for links, with one +difference. Instead of [link text], we have an +[image description](@). The rules for this are the +same as for [link text], except that (a) an +image description starts with `![` rather than `[`, and +(b) an image description may contain links. +An image description has inline elements +as its contents. When an image is rendered to HTML, +this is standardly used as the image's `alt` attribute. + +```````````````````````````````` example +![foo](/url "title") +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo *bar*] + +[foo *bar*]: train.jpg "train & tracks" +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo ![bar](/url)](/url2) +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo [bar](/url)](/url2) +. +

                  foo bar

                  +```````````````````````````````` + + +Though this spec is concerned with parsing, not rendering, it is +recommended that in rendering to HTML, only the plain string content +of the [image description] be used. Note that in +the above example, the alt attribute's value is `foo bar`, not `foo +[bar](/url)` or `foo bar`. Only the plain string +content is rendered, without formatting. + +```````````````````````````````` example +![foo *bar*][] + +[foo *bar*]: train.jpg "train & tracks" +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo *bar*][foobar] + +[FOOBAR]: train.jpg "train & tracks" +. +

                  foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo](train.jpg) +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +My ![foo bar](/path/to/train.jpg "title" ) +. +

                  My foo bar

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo]() +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +![](/url) +. +

                  +```````````````````````````````` + + +Reference-style: + +```````````````````````````````` example +![foo][bar] + +[bar]: /url +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +![foo][bar] + +[BAR]: /url +. +

                  foo

                  +```````````````````````````````` + + +Collapsed: + +```````````````````````````````` example +![foo][] + +[foo]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +![*foo* bar][] + +[*foo* bar]: /url "title" +. +

                  foo bar

                  +```````````````````````````````` + + +The labels are case-insensitive: + +```````````````````````````````` example +![Foo][] + +[foo]: /url "title" +. +

                  Foo

                  +```````````````````````````````` + + +As with reference links, [whitespace] is not allowed +between the two sets of brackets: + +```````````````````````````````` example +![foo] +[] + +[foo]: /url "title" +. +

                  foo +[]

                  +```````````````````````````````` + + +Shortcut: + +```````````````````````````````` example +![foo] + +[foo]: /url "title" +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +![*foo* bar] + +[*foo* bar]: /url "title" +. +

                  foo bar

                  +```````````````````````````````` + + +Note that link labels cannot contain unescaped brackets: + +```````````````````````````````` example +![[foo]] + +[[foo]]: /url "title" +. +

                  ![[foo]]

                  +

                  [[foo]]: /url "title"

                  +```````````````````````````````` + + +The link labels are case-insensitive: + +```````````````````````````````` example +![Foo] + +[foo]: /url "title" +. +

                  Foo

                  +```````````````````````````````` + + +If you just want a literal `!` followed by bracketed text, you can +backslash-escape the opening `[`: + +```````````````````````````````` example +!\[foo] + +[foo]: /url "title" +. +

                  ![foo]

                  +```````````````````````````````` + + +If you want a link after a literal `!`, backslash-escape the +`!`: + +```````````````````````````````` example +\![foo] + +[foo]: /url "title" +. +

                  !foo

                  +```````````````````````````````` + + +## Autolinks + +[Autolink](@)s are absolute URIs and email addresses inside +`<` and `>`. They are parsed as links, with the URL or email address +as the link label. + +A [URI autolink](@) consists of `<`, followed by an +[absolute URI] followed by `>`. It is parsed as +a link to the URI, with the URI as the link's label. + +An [absolute URI](@), +for these purposes, consists of a [scheme] followed by a colon (`:`) +followed by zero or more characters other than ASCII +[whitespace] and control characters, `<`, and `>`. If +the URI includes these characters, they must be percent-encoded +(e.g. `%20` for a space). + +For purposes of this spec, a [scheme](@) is any sequence +of 2--32 characters beginning with an ASCII letter and followed +by any combination of ASCII letters, digits, or the symbols plus +("+"), period ("."), or hyphen ("-"). + +Here are some valid autolinks: + +```````````````````````````````` example + +. +

                  http://foo.bar.baz

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  http://foo.bar.baz/test?q=hello&id=22&boolean

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  irc://foo.bar:2233/baz

                  +```````````````````````````````` + + +Uppercase is also fine: + +```````````````````````````````` example + +. +

                  MAILTO:FOO@BAR.BAZ

                  +```````````````````````````````` + + +Note that many strings that count as [absolute URIs] for +purposes of this spec are not valid URIs, because their +schemes are not registered or because of other problems +with their syntax: + +```````````````````````````````` example + +. +

                  a+b+c:d

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  made-up-scheme://foo,bar

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  http://../

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  localhost:5001/foo

                  +```````````````````````````````` + + +Spaces are not allowed in autolinks: + +```````````````````````````````` example + +. +

                  <http://foo.bar/baz bim>

                  +```````````````````````````````` + + +Backslash-escapes do not work inside autolinks: + +```````````````````````````````` example + +. +

                  http://example.com/\[\

                  +```````````````````````````````` + + +An [email autolink](@) +consists of `<`, followed by an [email address], +followed by `>`. The link's label is the email address, +and the URL is `mailto:` followed by the email address. + +An [email address](@), +for these purposes, is anything that matches +the [non-normative regex from the HTML5 +spec](https://html.spec.whatwg.org/multipage/forms.html#e-mail-state-(type=email)): + + /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])? + (?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ + +Examples of email autolinks: + +```````````````````````````````` example + +. +

                  foo@bar.example.com

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  foo+special@Bar.baz-bar0.com

                  +```````````````````````````````` + + +Backslash-escapes do not work inside email autolinks: + +```````````````````````````````` example + +. +

                  <foo+@bar.example.com>

                  +```````````````````````````````` + + +These are not autolinks: + +```````````````````````````````` example +<> +. +

                  <>

                  +```````````````````````````````` + + +```````````````````````````````` example +< http://foo.bar > +. +

                  < http://foo.bar >

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  <m:abc>

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  <foo.bar.baz>

                  +```````````````````````````````` + + +```````````````````````````````` example +http://example.com +. +

                  http://example.com

                  +```````````````````````````````` + + +```````````````````````````````` example +foo@bar.example.com +. +

                  foo@bar.example.com

                  +```````````````````````````````` + + +## Raw HTML + +Text between `<` and `>` that looks like an HTML tag is parsed as a +raw HTML tag and will be rendered in HTML without escaping. +Tag and attribute names are not limited to current HTML tags, +so custom tags (and even, say, DocBook tags) may be used. + +Here is the grammar for tags: + +A [tag name](@) consists of an ASCII letter +followed by zero or more ASCII letters, digits, or +hyphens (`-`). + +An [attribute](@) consists of [whitespace], +an [attribute name], and an optional +[attribute value specification]. + +An [attribute name](@) +consists of an ASCII letter, `_`, or `:`, followed by zero or more ASCII +letters, digits, `_`, `.`, `:`, or `-`. (Note: This is the XML +specification restricted to ASCII. HTML5 is laxer.) + +An [attribute value specification](@) +consists of optional [whitespace], +a `=` character, optional [whitespace], and an [attribute +value]. + +An [attribute value](@) +consists of an [unquoted attribute value], +a [single-quoted attribute value], or a [double-quoted attribute value]. + +An [unquoted attribute value](@) +is a nonempty string of characters not +including [whitespace], `"`, `'`, `=`, `<`, `>`, or `` ` ``. + +A [single-quoted attribute value](@) +consists of `'`, zero or more +characters not including `'`, and a final `'`. + +A [double-quoted attribute value](@) +consists of `"`, zero or more +characters not including `"`, and a final `"`. + +An [open tag](@) consists of a `<` character, a [tag name], +zero or more [attributes], optional [whitespace], an optional `/` +character, and a `>` character. + +A [closing tag](@) consists of the string ``. + +An [HTML comment](@) consists of ``, +where *text* does not start with `>` or `->`, does not end with `-`, +and does not contain `--`. (See the +[HTML5 spec](http://www.w3.org/TR/html5/syntax.html#comments).) + +A [processing instruction](@) +consists of the string ``, and the string +`?>`. + +A [declaration](@) consists of the +string ``, and the character `>`. + +A [CDATA section](@) consists of +the string ``, and the string `]]>`. + +An [HTML tag](@) consists of an [open tag], a [closing tag], +an [HTML comment], a [processing instruction], a [declaration], +or a [CDATA section]. + +Here are some simple open tags: + +```````````````````````````````` example + +. +

                  +```````````````````````````````` + + +Empty elements: + +```````````````````````````````` example + +. +

                  +```````````````````````````````` + + +[Whitespace] is allowed: + +```````````````````````````````` example + +. +

                  +```````````````````````````````` + + +With attributes: + +```````````````````````````````` example + +. +

                  +```````````````````````````````` + + +Custom tag names can be used: + +```````````````````````````````` example +Foo +. +

                  Foo

                  +```````````````````````````````` + + +Illegal tag names, not parsed as HTML: + +```````````````````````````````` example +<33> <__> +. +

                  <33> <__>

                  +```````````````````````````````` + + +Illegal attribute names: + +```````````````````````````````` example +
                  +. +

                  <a h*#ref="hi">

                  +```````````````````````````````` + + +Illegal attribute values: + +```````````````````````````````` example +
                  +. +

                  </a href="foo">

                  +```````````````````````````````` + + +Comments: + +```````````````````````````````` example +foo +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +foo +. +

                  foo <!-- not a comment -- two hyphens -->

                  +```````````````````````````````` + + +Not comments: + +```````````````````````````````` example +foo foo --> + +foo +. +

                  foo <!--> foo -->

                  +

                  foo <!-- foo--->

                  +```````````````````````````````` + + +Processing instructions: + +```````````````````````````````` example +foo +. +

                  foo

                  +```````````````````````````````` + + +Declarations: + +```````````````````````````````` example +foo +. +

                  foo

                  +```````````````````````````````` + + +CDATA sections: + +```````````````````````````````` example +foo &<]]> +. +

                  foo &<]]>

                  +```````````````````````````````` + + +Entity and numeric character references are preserved in HTML +attributes: + +```````````````````````````````` example +foo
                  +. +

                  foo

                  +```````````````````````````````` + + +Backslash escapes do not work in HTML attributes: + +```````````````````````````````` example +foo +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  <a href=""">

                  +```````````````````````````````` + + +## Hard line breaks + +A line break (not in a code span or HTML tag) that is preceded +by two or more spaces and does not occur at the end of a block +is parsed as a [hard line break](@) (rendered +in HTML as a `
                  ` tag): + +```````````````````````````````` example +foo +baz +. +

                  foo
                  +baz

                  +```````````````````````````````` + + +For a more visible alternative, a backslash before the +[line ending] may be used instead of two spaces: + +```````````````````````````````` example +foo\ +baz +. +

                  foo
                  +baz

                  +```````````````````````````````` + + +More than two spaces can be used: + +```````````````````````````````` example +foo +baz +. +

                  foo
                  +baz

                  +```````````````````````````````` + + +Leading spaces at the beginning of the next line are ignored: + +```````````````````````````````` example +foo + bar +. +

                  foo
                  +bar

                  +```````````````````````````````` + + +```````````````````````````````` example +foo\ + bar +. +

                  foo
                  +bar

                  +```````````````````````````````` + + +Line breaks can occur inside emphasis, links, and other constructs +that allow inline content: + +```````````````````````````````` example +*foo +bar* +. +

                  foo
                  +bar

                  +```````````````````````````````` + + +```````````````````````````````` example +*foo\ +bar* +. +

                  foo
                  +bar

                  +```````````````````````````````` + + +Line breaks do not occur inside code spans + +```````````````````````````````` example +`code +span` +. +

                  code span

                  +```````````````````````````````` + + +```````````````````````````````` example +`code\ +span` +. +

                  code\ span

                  +```````````````````````````````` + + +or HTML tags: + +```````````````````````````````` example +
                  +. +

                  +```````````````````````````````` + + +```````````````````````````````` example + +. +

                  +```````````````````````````````` + + +Hard line breaks are for separating inline content within a block. +Neither syntax for hard line breaks works at the end of a paragraph or +other block element: + +```````````````````````````````` example +foo\ +. +

                  foo\

                  +```````````````````````````````` + + +```````````````````````````````` example +foo +. +

                  foo

                  +```````````````````````````````` + + +```````````````````````````````` example +### foo\ +. +

                  foo\

                  +```````````````````````````````` + + +```````````````````````````````` example +### foo +. +

                  foo

                  +```````````````````````````````` + + +## Soft line breaks + +A regular line break (not in a code span or HTML tag) that is not +preceded by two or more spaces or a backslash is parsed as a +[softbreak](@). (A softbreak may be rendered in HTML either as a +[line ending] or as a space. The result will be the same in +browsers. In the examples here, a [line ending] will be used.) + +```````````````````````````````` example +foo +baz +. +

                  foo +baz

                  +```````````````````````````````` + + +Spaces at the end of the line and beginning of the next line are +removed: + +```````````````````````````````` example +foo + baz +. +

                  foo +baz

                  +```````````````````````````````` + + +A conforming parser may render a soft line break in HTML either as a +line break or as a space. + +A renderer may also provide an option to render soft line breaks +as hard line breaks. + +## Textual content + +Any characters not given an interpretation by the above rules will +be parsed as plain textual content. + +```````````````````````````````` example +hello $.;'there +. +

                  hello $.;'there

                  +```````````````````````````````` + + +```````````````````````````````` example +Foo χρῆν +. +

                  Foo χρῆν

                  +```````````````````````````````` + + +Internal spaces are preserved verbatim: + +```````````````````````````````` example +Multiple spaces +. +

                  Multiple spaces

                  +```````````````````````````````` + + + + +# Appendix: A parsing strategy + +In this appendix we describe some features of the parsing strategy +used in the CommonMark reference implementations. + +## Overview + +Parsing has two phases: + +1. In the first phase, lines of input are consumed and the block +structure of the document---its division into paragraphs, block quotes, +list items, and so on---is constructed. Text is assigned to these +blocks but not parsed. Link reference definitions are parsed and a +map of links is constructed. + +2. In the second phase, the raw text contents of paragraphs and headings +are parsed into sequences of Markdown inline elements (strings, +code spans, links, emphasis, and so on), using the map of link +references constructed in phase 1. + +At each point in processing, the document is represented as a tree of +**blocks**. The root of the tree is a `document` block. The `document` +may have any number of other blocks as **children**. These children +may, in turn, have other blocks as children. The last child of a block +is normally considered **open**, meaning that subsequent lines of input +can alter its contents. (Blocks that are not open are **closed**.) +Here, for example, is a possible document tree, with the open blocks +marked by arrows: + +``` tree +-> document + -> block_quote + paragraph + "Lorem ipsum dolor\nsit amet." + -> list (type=bullet tight=true bullet_char=-) + list_item + paragraph + "Qui *quodsi iracundia*" + -> list_item + -> paragraph + "aliquando id" +``` + +## Phase 1: block structure + +Each line that is processed has an effect on this tree. The line is +analyzed and, depending on its contents, the document may be altered +in one or more of the following ways: + +1. One or more open blocks may be closed. +2. One or more new blocks may be created as children of the + last open block. +3. Text may be added to the last (deepest) open block remaining + on the tree. + +Once a line has been incorporated into the tree in this way, +it can be discarded, so input can be read in a stream. + +For each line, we follow this procedure: + +1. First we iterate through the open blocks, starting with the +root document, and descending through last children down to the last +open block. Each block imposes a condition that the line must satisfy +if the block is to remain open. For example, a block quote requires a +`>` character. A paragraph requires a non-blank line. +In this phase we may match all or just some of the open +blocks. But we cannot close unmatched blocks yet, because we may have a +[lazy continuation line]. + +2. Next, after consuming the continuation markers for existing +blocks, we look for new block starts (e.g. `>` for a block quote). +If we encounter a new block start, we close any blocks unmatched +in step 1 before creating the new block as a child of the last +matched block. + +3. Finally, we look at the remainder of the line (after block +markers like `>`, list markers, and indentation have been consumed). +This is text that can be incorporated into the last open +block (a paragraph, code block, heading, or raw HTML). + +Setext headings are formed when we see a line of a paragraph +that is a [setext heading underline]. + +Reference link definitions are detected when a paragraph is closed; +the accumulated text lines are parsed to see if they begin with +one or more reference link definitions. Any remainder becomes a +normal paragraph. + +We can see how this works by considering how the tree above is +generated by four lines of Markdown: + +``` markdown +> Lorem ipsum dolor +sit amet. +> - Qui *quodsi iracundia* +> - aliquando id +``` + +At the outset, our document model is just + +``` tree +-> document +``` + +The first line of our text, + +``` markdown +> Lorem ipsum dolor +``` + +causes a `block_quote` block to be created as a child of our +open `document` block, and a `paragraph` block as a child of +the `block_quote`. Then the text is added to the last open +block, the `paragraph`: + +``` tree +-> document + -> block_quote + -> paragraph + "Lorem ipsum dolor" +``` + +The next line, + +``` markdown +sit amet. +``` + +is a "lazy continuation" of the open `paragraph`, so it gets added +to the paragraph's text: + +``` tree +-> document + -> block_quote + -> paragraph + "Lorem ipsum dolor\nsit amet." +``` + +The third line, + +``` markdown +> - Qui *quodsi iracundia* +``` + +causes the `paragraph` block to be closed, and a new `list` block +opened as a child of the `block_quote`. A `list_item` is also +added as a child of the `list`, and a `paragraph` as a child of +the `list_item`. The text is then added to the new `paragraph`: + +``` tree +-> document + -> block_quote + paragraph + "Lorem ipsum dolor\nsit amet." + -> list (type=bullet tight=true bullet_char=-) + -> list_item + -> paragraph + "Qui *quodsi iracundia*" +``` + +The fourth line, + +``` markdown +> - aliquando id +``` + +causes the `list_item` (and its child the `paragraph`) to be closed, +and a new `list_item` opened up as child of the `list`. A `paragraph` +is added as a child of the new `list_item`, to contain the text. +We thus obtain the final tree: + +``` tree +-> document + -> block_quote + paragraph + "Lorem ipsum dolor\nsit amet." + -> list (type=bullet tight=true bullet_char=-) + list_item + paragraph + "Qui *quodsi iracundia*" + -> list_item + -> paragraph + "aliquando id" +``` + +## Phase 2: inline structure + +Once all of the input has been parsed, all open blocks are closed. + +We then "walk the tree," visiting every node, and parse raw +string contents of paragraphs and headings as inlines. At this +point we have seen all the link reference definitions, so we can +resolve reference links as we go. + +``` tree +document + block_quote + paragraph + str "Lorem ipsum dolor" + softbreak + str "sit amet." + list (type=bullet tight=true bullet_char=-) + list_item + paragraph + str "Qui " + emph + str "quodsi iracundia" + list_item + paragraph + str "aliquando id" +``` + +Notice how the [line ending] in the first paragraph has +been parsed as a `softbreak`, and the asterisks in the first list item +have become an `emph`. + +### An algorithm for parsing nested emphasis and links + +By far the trickiest part of inline parsing is handling emphasis, +strong emphasis, links, and images. This is done using the following +algorithm. + +When we're parsing inlines and we hit either + +- a run of `*` or `_` characters, or +- a `[` or `![` + +we insert a text node with these symbols as its literal content, and we +add a pointer to this text node to the [delimiter stack](@). + +The [delimiter stack] is a doubly linked list. Each +element contains a pointer to a text node, plus information about + +- the type of delimiter (`[`, `![`, `*`, `_`) +- the number of delimiters, +- whether the delimiter is "active" (all are active to start), and +- whether the delimiter is a potential opener, a potential closer, + or both (which depends on what sort of characters precede + and follow the delimiters). + +When we hit a `]` character, we call the *look for link or image* +procedure (see below). + +When we hit the end of the input, we call the *process emphasis* +procedure (see below), with `stack_bottom` = NULL. + +#### *look for link or image* + +Starting at the top of the delimiter stack, we look backwards +through the stack for an opening `[` or `![` delimiter. + +- If we don't find one, we return a literal text node `]`. + +- If we do find one, but it's not *active*, we remove the inactive + delimiter from the stack, and return a literal text node `]`. + +- If we find one and it's active, then we parse ahead to see if + we have an inline link/image, reference link/image, compact reference + link/image, or shortcut reference link/image. + + + If we don't, then we remove the opening delimiter from the + delimiter stack and return a literal text node `]`. + + + If we do, then + + * We return a link or image node whose children are the inlines + after the text node pointed to by the opening delimiter. + + * We run *process emphasis* on these inlines, with the `[` opener + as `stack_bottom`. + + * We remove the opening delimiter. + + * If we have a link (and not an image), we also set all + `[` delimiters before the opening delimiter to *inactive*. (This + will prevent us from getting links within links.) + +#### *process emphasis* + +Parameter `stack_bottom` sets a lower bound to how far we +descend in the [delimiter stack]. If it is NULL, we can +go all the way to the bottom. Otherwise, we stop before +visiting `stack_bottom`. + +Let `current_position` point to the element on the [delimiter stack] +just above `stack_bottom` (or the first element if `stack_bottom` +is NULL). + +We keep track of the `openers_bottom` for each delimiter +type (`*`, `_`) and each length of the closing delimiter run +(modulo 3). Initialize this to `stack_bottom`. + +Then we repeat the following until we run out of potential +closers: + +- Move `current_position` forward in the delimiter stack (if needed) + until we find the first potential closer with delimiter `*` or `_`. + (This will be the potential closer closest + to the beginning of the input -- the first one in parse order.) + +- Now, look back in the stack (staying above `stack_bottom` and + the `openers_bottom` for this delimiter type) for the + first matching potential opener ("matching" means same delimiter). + +- If one is found: + + + Figure out whether we have emphasis or strong emphasis: + if both closer and opener spans have length >= 2, we have + strong, otherwise regular. + + + Insert an emph or strong emph node accordingly, after + the text node corresponding to the opener. + + + Remove any delimiters between the opener and closer from + the delimiter stack. + + + Remove 1 (for regular emph) or 2 (for strong emph) delimiters + from the opening and closing text nodes. If they become empty + as a result, remove them and remove the corresponding element + of the delimiter stack. If the closing node is removed, reset + `current_position` to the next element in the stack. + +- If none is found: + + + Set `openers_bottom` to the element before `current_position`. + (We know that there are no openers for this kind of closer up to and + including this point, so this puts a lower bound on future searches.) + + + If the closer at `current_position` is not a potential opener, + remove it from the delimiter stack (since we know it can't + be a closer either). + + + Advance `current_position` to the next element in the stack. + +After we're done, we remove all delimiters above `stack_bottom` from the +delimiter stack. + diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/go/benchmark_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/go/benchmark_test.go new file mode 100644 index 000000000..0addfa49e --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_benchmark/go/benchmark_test.go @@ -0,0 +1,95 @@ +package main + +import ( + "bytes" + "io/ioutil" + "testing" + + gomarkdown "github.com/gomarkdown/markdown" + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/util" + "gitlab.com/golang-commonmark/markdown" + + "github.com/russross/blackfriday/v2" + + "github.com/88250/lute" +) + +func BenchmarkMarkdown(b *testing.B) { + b.Run("Blackfriday-v2", func(b *testing.B) { + r := func(src []byte) ([]byte, error) { + out := blackfriday.Run(src) + return out, nil + } + doBenchmark(b, r) + }) + + b.Run("GoldMark", func(b *testing.B) { + markdown := goldmark.New( + goldmark.WithRendererOptions(html.WithXHTML(), html.WithUnsafe()), + ) + r := func(src []byte) ([]byte, error) { + var out bytes.Buffer + err := markdown.Convert(src, &out) + return out.Bytes(), err + } + doBenchmark(b, r) + }) + + b.Run("CommonMark", func(b *testing.B) { + md := markdown.New(markdown.XHTMLOutput(true)) + r := func(src []byte) ([]byte, error) { + var out bytes.Buffer + err := md.Render(&out, src) + return out.Bytes(), err + } + doBenchmark(b, r) + }) + + b.Run("Lute", func(b *testing.B) { + luteEngine := lute.New() + luteEngine.SetGFMAutoLink(false) + luteEngine.SetGFMStrikethrough(false) + luteEngine.SetGFMTable(false) + luteEngine.SetGFMTaskListItem(false) + luteEngine.SetCodeSyntaxHighlight(false) + luteEngine.SetSoftBreak2HardBreak(false) + luteEngine.SetAutoSpace(false) + luteEngine.SetFixTermTypo(false) + r := func(src []byte) ([]byte, error) { + out, err := luteEngine.MarkdownStr("Benchmark", util.BytesToReadOnlyString(src)) + return util.StringToReadOnlyBytes(out), err + } + doBenchmark(b, r) + }) + + b.Run("GoMarkdown", func(b *testing.B) { + r := func(src []byte) ([]byte, error) { + out := gomarkdown.ToHTML(src, nil, nil) + return out, nil + } + doBenchmark(b, r) + }) + +} + +// The different frameworks have different APIs. Create an adapter that +// should behave the same in the memory department. +func doBenchmark(b *testing.B, render func(src []byte) ([]byte, error)) { + b.StopTimer() + source, err := ioutil.ReadFile("_data.md") + if err != nil { + b.Fatal(err) + } + b.StartTimer() + for i := 0; i < b.N; i++ { + out, err := render(source) + if err != nil { + b.Fatal(err) + } + if len(out) < 100 { + b.Fatal("No result") + } + } +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/extra.txt b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/extra.txt new file mode 100644 index 000000000..3cebcb944 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/extra.txt @@ -0,0 +1,686 @@ +1 +//- - - - - - - - -// +* A + B +//- - - - - - - - -// +
                    +
                  • A +B
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +2 +//- - - - - - - - -// +**test**\ +test**test**\ +**test**test\ +test**test** +//- - - - - - - - -// +

                  test
                  +testtest
                  +testtest
                  +testtest

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +3 +//- - - - - - - - -// +>* > +> 1 +> 2 +>3 +//- - - - - - - - -// +
                  +
                    +
                  • +
                    +
                    +
                  • +
                  +

                  1 +2 +3

                  +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +4 +//- - - - - - - - -// +`test`a`test` +//- - - - - - - - -// +

                  testatest

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +5 +//- - - - - - - - -// +_**TL/DR** - [Go see summary.](#my-summary-area)_ +//- - - - - - - - -// +

                  TL/DR - Go see summary.

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +6 +//- - - - - - - - -// +[This link won't be rendered +correctly](https://geeksocket.in/some-long-link-here "This is the +place where everything breaks") +//- - - - - - - - -// +

                  This link won't be rendered +correctly

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +7 +//- - - - - - - - -// +[](./target.md) +//- - - - - - - - -// +

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +8 +//- - - - - - - - -// +[]() +//- - - - - - - - -// +

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +9 +//- - - - - - - - -// +[daß] is the old german spelling of [dass] + +[daß]: www.das-dass.de +//- - - - - - - - -// +

                  daß is the old german spelling of dass

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +10 +//- - - - - - - - -// +1. First step. + + ~~~ + aaa + --- + bbb + ~~~ + +2. few other steps. +//- - - - - - - - -// +
                    +
                  1. +

                    First step.

                    +
                    aaa
                    +---
                    +bbb
                    +
                    +
                  2. +
                  3. +

                    few other steps.

                    +
                  4. +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +11: delimiters between ascii punctuations should be parsed +//- - - - - - - - -// +`{%`_name_`%}` +//- - - - - - - - -// +

                  {%name%}

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +12: the alt attribute of img should be escaped +//- - - - - - - - -// +!["](quot.jpg) +!['](apos.jpg) +![<](lt.jpg) +![>](gt.jpg) +![&](amp.jpg) +//- - - - - - - - -// +

                  " +' +< +> +&

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +13: fenced code block starting with tab inside list +//- - - - - - - - -// +* foo + ```Makefile + foo + foo + ``` +//- - - - - - - - -// +
                    +
                  • foo +
                    foo
                    +	foo
                    +
                    +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +14: fenced code block inside list, mismatched tab start +//- - - - - - - - -// +* foo + ```Makefile + foo + foo + ``` +//- - - - - - - - -// +
                    +
                  • foo +
                    foo
                    +  foo
                    +
                    +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +15: fenced code block inside nested list +//- - - - - - - - -// +* foo + - bar + ```Makefile + foo + foo + ``` +//- - - - - - - - -// +
                    +
                  • foo +
                      +
                    • bar +
                      foo
                      +	foo
                      +
                      +
                    • +
                    +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +16: indented code block starting with a tab. +//- - - - - - - - -// +* foo + + foo + foo + +//- - - - - - - - -// +
                    +
                  • +

                    foo

                    +
                    foo
                    +	foo
                    +
                    +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +17: fenced code block in list, empty line, spaces on start +//- - - - - - - - -// +* foo + ```Makefile + foo + + foo + ``` +//- - - - - - - - -// +
                    +
                  • foo +
                    foo
                    +
                    +foo
                    +
                    +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +18: fenced code block in list, empty line, no spaces on start +//- - - - - - - - -// +* foo + ```Makefile + foo + + foo + ``` +//- - - - - - - - -// +
                    +
                  • foo +
                    foo
                    +
                    +foo
                    +
                    +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +19: fenced code block inside nested list, empty line, spaces on start +//- - - - - - - - -// +* foo + - bar + ```Makefile + foo + + foo + ``` +//- - - - - - - - -// +
                    +
                  • foo +
                      +
                    • bar +
                      foo
                      +
                      +foo
                      +
                      +
                    • +
                    +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +20: fenced code block inside nested list, empty line, no space on start +//- - - - - - - - -// +* foo + - bar + ```Makefile + foo + + foo + ``` +//- - - - - - - - -// +
                    +
                  • foo +
                      +
                    • bar +
                      foo
                      +
                      +foo
                      +
                      +
                    • +
                    +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +21: Fenced code block within list can start with tab +//- - - - - - - - -// +- List + + ``` + A + B + C + ``` +//- - - - - - - - -// +
                    +
                  • +

                    List

                    +
                    A
                    +	B
                    +C
                    +
                    +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +22: Indented code block within list can start with tab +//- - - - - - - - -// +- List + + A + B + C + +a +//- - - - - - - - -// +
                    +
                  • +

                    List

                    +
                    A
                    +	B
                    +C
                    +
                    +
                  • +
                  +

                  a

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +23: Emphasis corner case(yuin/goldmark#245) +//- - - - - - - - -// +a* b c d *e* +//- - - - - - - - -// +

                  a* b c d e

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +24: HTML block tags can contain trailing spaces +//- - - - - - - - -// + +//- - - - - - - - -// + +//= = = = = = = = = = = = = = = = = = = = = = = =// + +25: Indented code blocks can start with tab +//- - - - - - - - -// + x +//- - - - - - - - -// +
                  	x
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +26: NUL bytes must be replaced with U+FFFD + OPTIONS: {"enableEscape": true} +//- - - - - - - - -// +hello\x00world + +hello\ufffdworld

                  +

                  +

                  x

                  +

                  x

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +28: Single # is a heading level 1 +//- - - - - - - - -// +# +//- - - - - - - - -// +

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +29: An empty list item cannot interrupt a paragraph +//- - - - - - - - -// +x +* +//- - - - - - - - -// +

                  x +*

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +30: A link reference definition followed by a single quote without closer +//- - - - - - - - -// +[x] + +[x]: <> +' +//- - - - - - - - -// +

                  x

                  +

                  '

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +31: A link reference definition followed by a double quote without closer +//- - - - - - - - -// +[x] + +[x]: <> +" +//- - - - - - - - -// +

                  x

                  +

                  "

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +32: Hex character entities must be limited to 6 characters +//- - - - - - - - -// +A +//- - - - - - - - -// +

                  &#x0000041;

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +33: \x01 should be escaped all the time + OPTIONS: {"enableEscape": true} +//- - - - - - - - -// +[x](\x01) +//- - - - - - - - -// +

                  x

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +34: A form feed should not be treated as a space + OPTIONS: {"enableEscape": true} +//- - - - - - - - -// +x \f +//- - - - - - - - -// +

                  x \f

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +35: A link reference definition can contain a new line +//- - - - - - - - -// +This is a [test][foo +bar] 1...2..3... + +[foo bar]: / +//- - - - - - - - -// +

                  This is a test 1...2..3...

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +36: Emphasis and links +//- - - - - - - - -// +_a[b_c_](d) +//- - - - - - - - -// +

                  _ab_c_

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +37: Tabs and spaces + OPTIONS: {"enableEscape": true} +//- - - - - - - - -// +\t\t x\n +//- - - - - - - - -// +
                  \t x\n
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +38: Decimal HTML entity literals should allow 7 digits +//- - - - - - - - -// +� +//- - - - - - - - -// +

                  \uFFFD

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +39: Decimal HTML entities should not be interpreted as octal when starting with a 0 +//- - - - - - - - -// +d +//- - - - - - - - -// +

                  d

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +40: Invalid HTML tag names +//- - - - - - - - -// +<1> + + + + + +< p> +//- - - - - - - - -// +

                  <1>

                  +

                  <a:>

                  +

                  <a\f>

                  +

                  < p>

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +41: Link references can not contain spaces after link label +//- - - - - - - - -// +[x] +:> + +[o] :x +//- - - - - - - - -// +

                  [x] +:>

                  +

                  [o] :x

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +42: Unclosed link reference titles can interrupt link references +//- - - - - - - - -// +[r]: +<> +' + +[o]: +x +' +//- - - - - - - - -// +

                  '

                  +

                  '

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +43: A link containing an image containing a link should disable the outer link +//- - - - - - - - -// +[ ![ [b](c) ](x) ](y) +//- - - - - - - - -// +

                  [  b ](y)

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +44: An empty list item(with trailing spaces) cannot interrupt a paragraph +//- - - - - - - - -// +a +* +//- - - - - - - - -// +

                  a +*

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +45: Multiple empty list items +//- - - - - - - - -// +- + +- +//- - - - - - - - -// +
                    +
                  • +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +46: Vertical tab should not be treated as spaces + OPTIONS: {"enableEscape": true} +//- - - - - - - - -// +\v +//- - - - - - - - -// +

                  \v

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +47: Escape back slashes should not be treated as hard line breaks +//- - - - - - - - -// +\\\\ +a +//- - - - - - - - -// +

                  \ +a

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +48: Multiple paragraphs in tight list +//- - - - - - - - -// +- a + > + b +//- - - - - - - - -// +
                    +
                  • a +
                    +
                    +b
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +49: A list item that is indented up to 3 spaces after an empty list item +//- - - - - - - - -// +1. + + 1. b + +- + + - b +//- - - - - - - - -// +
                    +
                  1. +
                  2. +

                    b

                    +
                  3. +
                  +
                    +
                  • +
                  • +

                    b

                    +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +50: Spaces before a visible hard linebreak should be preserved +//- - - - - - - - -// +a \ +b +//- - - - - - - - -// +

                  a
                  +b

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +51: Empty line in a fenced code block under list items +//- - - - - - - - -// +* This is a list item + ``` + This is a test + + This line will be dropped. + This line will be displayed. + ``` +//- - - - - - - - -// +
                    +
                  • This is a list item +
                    This is a test
                    +
                    +This line will be dropped.
                    +This line will be displayed.
                    +
                    +
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +52: windows-style newline and HTMLs + OPTIONS: {"enableEscape": true} +//- - - - - - - - -// +link + + +//- - - - - - - - -// +

                  link

                  + +//= = = = = = = = = = = = = = = = = = = = = = = =// + diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/options.txt b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/options.txt new file mode 100644 index 000000000..3137b6572 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/options.txt @@ -0,0 +1,78 @@ +1 +//- - - - - - - - -// +## Title 0 + +## Title1 # {#id_1 .class-1} + +## Title2 {#id_2} + +## Title3 ## {#id_3 .class-3} + +## Title4 ## {data-attr3=value3} + +## Title5 ## {#id_5 data-attr5=value5} + +## Title6 ## {#id_6 .class6 data-attr6=value6} + +## Title7 ## {#id_7 data-attr7="value \"7"} + +## Title8 {#id .className data-attrName=attrValue class="class1 class2"} +//- - - - - - - - -// +

                  Title 0

                  +

                  Title1

                  +

                  Title2

                  +

                  Title3

                  +

                  Title4

                  +

                  Title5

                  +

                  Title6

                  +

                  Title7

                  +

                  Title8

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +2 +//- - - - - - - - -// +# +# FOO +//- - - - - - - - -// +

                  +

                  FOO

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +3 +//- - - - - - - - -// +## `records(self, zone, params={})` +//- - - - - - - - -// +

                  records(self, zone, params={})

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +4 +//- - - - - - - - -// +## Test {#hey .sort,class=fine,class=shell} Doesn't matter +//- - - - - - - - -// +

                  Test {#hey .sort,class=fine,class=shell} Doesn't matter

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +5 +//- - - - - - - - -// +## Test ## {#hey .sort,class=fine,class=shell} Doesn't matter +//- - - - - - - - -// +

                  Test ## {#hey .sort,class=fine,class=shell} Doesn't matter

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +6: class must be a string +//- - - - - - - - -// +# Test ## {class=0#.} +//- - - - - - - - -// +

                  Test ## {class=0#.}

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +7: short handed ids can contain hyphens ("-"), underscores ("_"), colons (":"), and periods (".") +//- - - - - - - - -// +# Test ## {#id-foo_bar:baz.qux .foobar} +//- - - - - - - - -// +

                  Test

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/spec.json b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/spec.json new file mode 100644 index 000000000..d742f9413 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_test/spec.json @@ -0,0 +1,5218 @@ +[ + { + "markdown": "\tfoo\tbaz\t\tbim\n", + "html": "
                  foo\tbaz\t\tbim\n
                  \n", + "example": 1, + "start_line": 356, + "end_line": 361, + "section": "Tabs" + }, + { + "markdown": " \tfoo\tbaz\t\tbim\n", + "html": "
                  foo\tbaz\t\tbim\n
                  \n", + "example": 2, + "start_line": 363, + "end_line": 368, + "section": "Tabs" + }, + { + "markdown": " a\ta\n ὐ\ta\n", + "html": "
                  a\ta\nὐ\ta\n
                  \n", + "example": 3, + "start_line": 370, + "end_line": 377, + "section": "Tabs" + }, + { + "markdown": " - foo\n\n\tbar\n", + "html": "
                    \n
                  • \n

                    foo

                    \n

                    bar

                    \n
                  • \n
                  \n", + "example": 4, + "start_line": 383, + "end_line": 394, + "section": "Tabs" + }, + { + "markdown": "- foo\n\n\t\tbar\n", + "html": "
                    \n
                  • \n

                    foo

                    \n
                      bar\n
                    \n
                  • \n
                  \n", + "example": 5, + "start_line": 396, + "end_line": 408, + "section": "Tabs" + }, + { + "markdown": ">\t\tfoo\n", + "html": "
                  \n
                    foo\n
                  \n
                  \n", + "example": 6, + "start_line": 419, + "end_line": 426, + "section": "Tabs" + }, + { + "markdown": "-\t\tfoo\n", + "html": "
                    \n
                  • \n
                      foo\n
                    \n
                  • \n
                  \n", + "example": 7, + "start_line": 428, + "end_line": 437, + "section": "Tabs" + }, + { + "markdown": " foo\n\tbar\n", + "html": "
                  foo\nbar\n
                  \n", + "example": 8, + "start_line": 440, + "end_line": 447, + "section": "Tabs" + }, + { + "markdown": " - foo\n - bar\n\t - baz\n", + "html": "
                    \n
                  • foo\n
                      \n
                    • bar\n
                        \n
                      • baz
                      • \n
                      \n
                    • \n
                    \n
                  • \n
                  \n", + "example": 9, + "start_line": 449, + "end_line": 465, + "section": "Tabs" + }, + { + "markdown": "#\tFoo\n", + "html": "

                  Foo

                  \n", + "example": 10, + "start_line": 467, + "end_line": 471, + "section": "Tabs" + }, + { + "markdown": "*\t*\t*\t\n", + "html": "
                  \n", + "example": 11, + "start_line": 473, + "end_line": 477, + "section": "Tabs" + }, + { + "markdown": "\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\-\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\\\\\]\\^\\_\\`\\{\\|\\}\\~\n", + "html": "

                  !"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~

                  \n", + "example": 12, + "start_line": 490, + "end_line": 494, + "section": "Backslash escapes" + }, + { + "markdown": "\\\t\\A\\a\\ \\3\\φ\\«\n", + "html": "

                  \\\t\\A\\a\\ \\3\\φ\\«

                  \n", + "example": 13, + "start_line": 500, + "end_line": 504, + "section": "Backslash escapes" + }, + { + "markdown": "\\*not emphasized*\n\\
                  not a tag\n\\[not a link](/foo)\n\\`not code`\n1\\. not a list\n\\* not a list\n\\# not a heading\n\\[foo]: /url \"not a reference\"\n\\ö not a character entity\n", + "html": "

                  *not emphasized*\n<br/> not a tag\n[not a link](/foo)\n`not code`\n1. not a list\n* not a list\n# not a heading\n[foo]: /url "not a reference"\n&ouml; not a character entity

                  \n", + "example": 14, + "start_line": 510, + "end_line": 530, + "section": "Backslash escapes" + }, + { + "markdown": "\\\\*emphasis*\n", + "html": "

                  \\emphasis

                  \n", + "example": 15, + "start_line": 535, + "end_line": 539, + "section": "Backslash escapes" + }, + { + "markdown": "foo\\\nbar\n", + "html": "

                  foo
                  \nbar

                  \n", + "example": 16, + "start_line": 544, + "end_line": 550, + "section": "Backslash escapes" + }, + { + "markdown": "`` \\[\\` ``\n", + "html": "

                  \\[\\`

                  \n", + "example": 17, + "start_line": 556, + "end_line": 560, + "section": "Backslash escapes" + }, + { + "markdown": " \\[\\]\n", + "html": "
                  \\[\\]\n
                  \n", + "example": 18, + "start_line": 563, + "end_line": 568, + "section": "Backslash escapes" + }, + { + "markdown": "~~~\n\\[\\]\n~~~\n", + "html": "
                  \\[\\]\n
                  \n", + "example": 19, + "start_line": 571, + "end_line": 578, + "section": "Backslash escapes" + }, + { + "markdown": "\n", + "html": "

                  http://example.com?find=\\*

                  \n", + "example": 20, + "start_line": 581, + "end_line": 585, + "section": "Backslash escapes" + }, + { + "markdown": "\n", + "html": "\n", + "example": 21, + "start_line": 588, + "end_line": 592, + "section": "Backslash escapes" + }, + { + "markdown": "[foo](/bar\\* \"ti\\*tle\")\n", + "html": "

                  foo

                  \n", + "example": 22, + "start_line": 598, + "end_line": 602, + "section": "Backslash escapes" + }, + { + "markdown": "[foo]\n\n[foo]: /bar\\* \"ti\\*tle\"\n", + "html": "

                  foo

                  \n", + "example": 23, + "start_line": 605, + "end_line": 611, + "section": "Backslash escapes" + }, + { + "markdown": "``` foo\\+bar\nfoo\n```\n", + "html": "
                  foo\n
                  \n", + "example": 24, + "start_line": 614, + "end_line": 621, + "section": "Backslash escapes" + }, + { + "markdown": "  & © Æ Ď\n¾ ℋ ⅆ\n∲ ≧̸\n", + "html": "

                    & © Æ Ď\n¾ ℋ ⅆ\n∲ ≧̸

                  \n", + "example": 25, + "start_line": 650, + "end_line": 658, + "section": "Entity and numeric character references" + }, + { + "markdown": "# Ӓ Ϡ �\n", + "html": "

                  # Ӓ Ϡ �

                  \n", + "example": 26, + "start_line": 669, + "end_line": 673, + "section": "Entity and numeric character references" + }, + { + "markdown": "" ആ ಫ\n", + "html": "

                  " ആ ಫ

                  \n", + "example": 27, + "start_line": 682, + "end_line": 686, + "section": "Entity and numeric character references" + }, + { + "markdown": "  &x; &#; &#x;\n�\n&#abcdef0;\n&ThisIsNotDefined; &hi?;\n", + "html": "

                  &nbsp &x; &#; &#x;\n&#87654321;\n&#abcdef0;\n&ThisIsNotDefined; &hi?;

                  \n", + "example": 28, + "start_line": 691, + "end_line": 701, + "section": "Entity and numeric character references" + }, + { + "markdown": "©\n", + "html": "

                  &copy

                  \n", + "example": 29, + "start_line": 708, + "end_line": 712, + "section": "Entity and numeric character references" + }, + { + "markdown": "&MadeUpEntity;\n", + "html": "

                  &MadeUpEntity;

                  \n", + "example": 30, + "start_line": 718, + "end_line": 722, + "section": "Entity and numeric character references" + }, + { + "markdown": "\n", + "html": "\n", + "example": 31, + "start_line": 729, + "end_line": 733, + "section": "Entity and numeric character references" + }, + { + "markdown": "[foo](/föö \"föö\")\n", + "html": "

                  foo

                  \n", + "example": 32, + "start_line": 736, + "end_line": 740, + "section": "Entity and numeric character references" + }, + { + "markdown": "[foo]\n\n[foo]: /föö \"föö\"\n", + "html": "

                  foo

                  \n", + "example": 33, + "start_line": 743, + "end_line": 749, + "section": "Entity and numeric character references" + }, + { + "markdown": "``` föö\nfoo\n```\n", + "html": "
                  foo\n
                  \n", + "example": 34, + "start_line": 752, + "end_line": 759, + "section": "Entity and numeric character references" + }, + { + "markdown": "`föö`\n", + "html": "

                  f&ouml;&ouml;

                  \n", + "example": 35, + "start_line": 765, + "end_line": 769, + "section": "Entity and numeric character references" + }, + { + "markdown": " föfö\n", + "html": "
                  f&ouml;f&ouml;\n
                  \n", + "example": 36, + "start_line": 772, + "end_line": 777, + "section": "Entity and numeric character references" + }, + { + "markdown": "*foo*\n*foo*\n", + "html": "

                  *foo*\nfoo

                  \n", + "example": 37, + "start_line": 784, + "end_line": 790, + "section": "Entity and numeric character references" + }, + { + "markdown": "* foo\n\n* foo\n", + "html": "

                  * foo

                  \n
                    \n
                  • foo
                  • \n
                  \n", + "example": 38, + "start_line": 792, + "end_line": 801, + "section": "Entity and numeric character references" + }, + { + "markdown": "foo bar\n", + "html": "

                  foo\n\nbar

                  \n", + "example": 39, + "start_line": 803, + "end_line": 809, + "section": "Entity and numeric character references" + }, + { + "markdown": " foo\n", + "html": "

                  \tfoo

                  \n", + "example": 40, + "start_line": 811, + "end_line": 815, + "section": "Entity and numeric character references" + }, + { + "markdown": "[a](url "tit")\n", + "html": "

                  [a](url "tit")

                  \n", + "example": 41, + "start_line": 818, + "end_line": 822, + "section": "Entity and numeric character references" + }, + { + "markdown": "- `one\n- two`\n", + "html": "
                    \n
                  • `one
                  • \n
                  • two`
                  • \n
                  \n", + "example": 42, + "start_line": 841, + "end_line": 849, + "section": "Precedence" + }, + { + "markdown": "***\n---\n___\n", + "html": "
                  \n
                  \n
                  \n", + "example": 43, + "start_line": 880, + "end_line": 888, + "section": "Thematic breaks" + }, + { + "markdown": "+++\n", + "html": "

                  +++

                  \n", + "example": 44, + "start_line": 893, + "end_line": 897, + "section": "Thematic breaks" + }, + { + "markdown": "===\n", + "html": "

                  ===

                  \n", + "example": 45, + "start_line": 900, + "end_line": 904, + "section": "Thematic breaks" + }, + { + "markdown": "--\n**\n__\n", + "html": "

                  --\n**\n__

                  \n", + "example": 46, + "start_line": 909, + "end_line": 917, + "section": "Thematic breaks" + }, + { + "markdown": " ***\n ***\n ***\n", + "html": "
                  \n
                  \n
                  \n", + "example": 47, + "start_line": 922, + "end_line": 930, + "section": "Thematic breaks" + }, + { + "markdown": " ***\n", + "html": "
                  ***\n
                  \n", + "example": 48, + "start_line": 935, + "end_line": 940, + "section": "Thematic breaks" + }, + { + "markdown": "Foo\n ***\n", + "html": "

                  Foo\n***

                  \n", + "example": 49, + "start_line": 943, + "end_line": 949, + "section": "Thematic breaks" + }, + { + "markdown": "_____________________________________\n", + "html": "
                  \n", + "example": 50, + "start_line": 954, + "end_line": 958, + "section": "Thematic breaks" + }, + { + "markdown": " - - -\n", + "html": "
                  \n", + "example": 51, + "start_line": 963, + "end_line": 967, + "section": "Thematic breaks" + }, + { + "markdown": " ** * ** * ** * **\n", + "html": "
                  \n", + "example": 52, + "start_line": 970, + "end_line": 974, + "section": "Thematic breaks" + }, + { + "markdown": "- - - -\n", + "html": "
                  \n", + "example": 53, + "start_line": 977, + "end_line": 981, + "section": "Thematic breaks" + }, + { + "markdown": "- - - - \n", + "html": "
                  \n", + "example": 54, + "start_line": 986, + "end_line": 990, + "section": "Thematic breaks" + }, + { + "markdown": "_ _ _ _ a\n\na------\n\n---a---\n", + "html": "

                  _ _ _ _ a

                  \n

                  a------

                  \n

                  ---a---

                  \n", + "example": 55, + "start_line": 995, + "end_line": 1005, + "section": "Thematic breaks" + }, + { + "markdown": " *-*\n", + "html": "

                  -

                  \n", + "example": 56, + "start_line": 1011, + "end_line": 1015, + "section": "Thematic breaks" + }, + { + "markdown": "- foo\n***\n- bar\n", + "html": "
                    \n
                  • foo
                  • \n
                  \n
                  \n
                    \n
                  • bar
                  • \n
                  \n", + "example": 57, + "start_line": 1020, + "end_line": 1032, + "section": "Thematic breaks" + }, + { + "markdown": "Foo\n***\nbar\n", + "html": "

                  Foo

                  \n
                  \n

                  bar

                  \n", + "example": 58, + "start_line": 1037, + "end_line": 1045, + "section": "Thematic breaks" + }, + { + "markdown": "Foo\n---\nbar\n", + "html": "

                  Foo

                  \n

                  bar

                  \n", + "example": 59, + "start_line": 1054, + "end_line": 1061, + "section": "Thematic breaks" + }, + { + "markdown": "* Foo\n* * *\n* Bar\n", + "html": "
                    \n
                  • Foo
                  • \n
                  \n
                  \n
                    \n
                  • Bar
                  • \n
                  \n", + "example": 60, + "start_line": 1067, + "end_line": 1079, + "section": "Thematic breaks" + }, + { + "markdown": "- Foo\n- * * *\n", + "html": "
                    \n
                  • Foo
                  • \n
                  • \n
                    \n
                  • \n
                  \n", + "example": 61, + "start_line": 1084, + "end_line": 1094, + "section": "Thematic breaks" + }, + { + "markdown": "# foo\n## foo\n### foo\n#### foo\n##### foo\n###### foo\n", + "html": "

                  foo

                  \n

                  foo

                  \n

                  foo

                  \n

                  foo

                  \n
                  foo
                  \n
                  foo
                  \n", + "example": 62, + "start_line": 1113, + "end_line": 1127, + "section": "ATX headings" + }, + { + "markdown": "####### foo\n", + "html": "

                  ####### foo

                  \n", + "example": 63, + "start_line": 1132, + "end_line": 1136, + "section": "ATX headings" + }, + { + "markdown": "#5 bolt\n\n#hashtag\n", + "html": "

                  #5 bolt

                  \n

                  #hashtag

                  \n", + "example": 64, + "start_line": 1147, + "end_line": 1154, + "section": "ATX headings" + }, + { + "markdown": "\\## foo\n", + "html": "

                  ## foo

                  \n", + "example": 65, + "start_line": 1159, + "end_line": 1163, + "section": "ATX headings" + }, + { + "markdown": "# foo *bar* \\*baz\\*\n", + "html": "

                  foo bar *baz*

                  \n", + "example": 66, + "start_line": 1168, + "end_line": 1172, + "section": "ATX headings" + }, + { + "markdown": "# foo \n", + "html": "

                  foo

                  \n", + "example": 67, + "start_line": 1177, + "end_line": 1181, + "section": "ATX headings" + }, + { + "markdown": " ### foo\n ## foo\n # foo\n", + "html": "

                  foo

                  \n

                  foo

                  \n

                  foo

                  \n", + "example": 68, + "start_line": 1186, + "end_line": 1194, + "section": "ATX headings" + }, + { + "markdown": " # foo\n", + "html": "
                  # foo\n
                  \n", + "example": 69, + "start_line": 1199, + "end_line": 1204, + "section": "ATX headings" + }, + { + "markdown": "foo\n # bar\n", + "html": "

                  foo\n# bar

                  \n", + "example": 70, + "start_line": 1207, + "end_line": 1213, + "section": "ATX headings" + }, + { + "markdown": "## foo ##\n ### bar ###\n", + "html": "

                  foo

                  \n

                  bar

                  \n", + "example": 71, + "start_line": 1218, + "end_line": 1224, + "section": "ATX headings" + }, + { + "markdown": "# foo ##################################\n##### foo ##\n", + "html": "

                  foo

                  \n
                  foo
                  \n", + "example": 72, + "start_line": 1229, + "end_line": 1235, + "section": "ATX headings" + }, + { + "markdown": "### foo ### \n", + "html": "

                  foo

                  \n", + "example": 73, + "start_line": 1240, + "end_line": 1244, + "section": "ATX headings" + }, + { + "markdown": "### foo ### b\n", + "html": "

                  foo ### b

                  \n", + "example": 74, + "start_line": 1251, + "end_line": 1255, + "section": "ATX headings" + }, + { + "markdown": "# foo#\n", + "html": "

                  foo#

                  \n", + "example": 75, + "start_line": 1260, + "end_line": 1264, + "section": "ATX headings" + }, + { + "markdown": "### foo \\###\n## foo #\\##\n# foo \\#\n", + "html": "

                  foo ###

                  \n

                  foo ###

                  \n

                  foo #

                  \n", + "example": 76, + "start_line": 1270, + "end_line": 1278, + "section": "ATX headings" + }, + { + "markdown": "****\n## foo\n****\n", + "html": "
                  \n

                  foo

                  \n
                  \n", + "example": 77, + "start_line": 1284, + "end_line": 1292, + "section": "ATX headings" + }, + { + "markdown": "Foo bar\n# baz\nBar foo\n", + "html": "

                  Foo bar

                  \n

                  baz

                  \n

                  Bar foo

                  \n", + "example": 78, + "start_line": 1295, + "end_line": 1303, + "section": "ATX headings" + }, + { + "markdown": "## \n#\n### ###\n", + "html": "

                  \n

                  \n

                  \n", + "example": 79, + "start_line": 1308, + "end_line": 1316, + "section": "ATX headings" + }, + { + "markdown": "Foo *bar*\n=========\n\nFoo *bar*\n---------\n", + "html": "

                  Foo bar

                  \n

                  Foo bar

                  \n", + "example": 80, + "start_line": 1351, + "end_line": 1360, + "section": "Setext headings" + }, + { + "markdown": "Foo *bar\nbaz*\n====\n", + "html": "

                  Foo bar\nbaz

                  \n", + "example": 81, + "start_line": 1365, + "end_line": 1372, + "section": "Setext headings" + }, + { + "markdown": " Foo *bar\nbaz*\t\n====\n", + "html": "

                  Foo bar\nbaz

                  \n", + "example": 82, + "start_line": 1379, + "end_line": 1386, + "section": "Setext headings" + }, + { + "markdown": "Foo\n-------------------------\n\nFoo\n=\n", + "html": "

                  Foo

                  \n

                  Foo

                  \n", + "example": 83, + "start_line": 1391, + "end_line": 1400, + "section": "Setext headings" + }, + { + "markdown": " Foo\n---\n\n Foo\n-----\n\n Foo\n ===\n", + "html": "

                  Foo

                  \n

                  Foo

                  \n

                  Foo

                  \n", + "example": 84, + "start_line": 1406, + "end_line": 1419, + "section": "Setext headings" + }, + { + "markdown": " Foo\n ---\n\n Foo\n---\n", + "html": "
                  Foo\n---\n\nFoo\n
                  \n
                  \n", + "example": 85, + "start_line": 1424, + "end_line": 1437, + "section": "Setext headings" + }, + { + "markdown": "Foo\n ---- \n", + "html": "

                  Foo

                  \n", + "example": 86, + "start_line": 1443, + "end_line": 1448, + "section": "Setext headings" + }, + { + "markdown": "Foo\n ---\n", + "html": "

                  Foo\n---

                  \n", + "example": 87, + "start_line": 1453, + "end_line": 1459, + "section": "Setext headings" + }, + { + "markdown": "Foo\n= =\n\nFoo\n--- -\n", + "html": "

                  Foo\n= =

                  \n

                  Foo

                  \n
                  \n", + "example": 88, + "start_line": 1464, + "end_line": 1475, + "section": "Setext headings" + }, + { + "markdown": "Foo \n-----\n", + "html": "

                  Foo

                  \n", + "example": 89, + "start_line": 1480, + "end_line": 1485, + "section": "Setext headings" + }, + { + "markdown": "Foo\\\n----\n", + "html": "

                  Foo\\

                  \n", + "example": 90, + "start_line": 1490, + "end_line": 1495, + "section": "Setext headings" + }, + { + "markdown": "`Foo\n----\n`\n\n\n", + "html": "

                  `Foo

                  \n

                  `

                  \n

                  <a title="a lot

                  \n

                  of dashes"/>

                  \n", + "example": 91, + "start_line": 1501, + "end_line": 1514, + "section": "Setext headings" + }, + { + "markdown": "> Foo\n---\n", + "html": "
                  \n

                  Foo

                  \n
                  \n
                  \n", + "example": 92, + "start_line": 1520, + "end_line": 1528, + "section": "Setext headings" + }, + { + "markdown": "> foo\nbar\n===\n", + "html": "
                  \n

                  foo\nbar\n===

                  \n
                  \n", + "example": 93, + "start_line": 1531, + "end_line": 1541, + "section": "Setext headings" + }, + { + "markdown": "- Foo\n---\n", + "html": "
                    \n
                  • Foo
                  • \n
                  \n
                  \n", + "example": 94, + "start_line": 1544, + "end_line": 1552, + "section": "Setext headings" + }, + { + "markdown": "Foo\nBar\n---\n", + "html": "

                  Foo\nBar

                  \n", + "example": 95, + "start_line": 1559, + "end_line": 1566, + "section": "Setext headings" + }, + { + "markdown": "---\nFoo\n---\nBar\n---\nBaz\n", + "html": "
                  \n

                  Foo

                  \n

                  Bar

                  \n

                  Baz

                  \n", + "example": 96, + "start_line": 1572, + "end_line": 1584, + "section": "Setext headings" + }, + { + "markdown": "\n====\n", + "html": "

                  ====

                  \n", + "example": 97, + "start_line": 1589, + "end_line": 1594, + "section": "Setext headings" + }, + { + "markdown": "---\n---\n", + "html": "
                  \n
                  \n", + "example": 98, + "start_line": 1601, + "end_line": 1607, + "section": "Setext headings" + }, + { + "markdown": "- foo\n-----\n", + "html": "
                    \n
                  • foo
                  • \n
                  \n
                  \n", + "example": 99, + "start_line": 1610, + "end_line": 1618, + "section": "Setext headings" + }, + { + "markdown": " foo\n---\n", + "html": "
                  foo\n
                  \n
                  \n", + "example": 100, + "start_line": 1621, + "end_line": 1628, + "section": "Setext headings" + }, + { + "markdown": "> foo\n-----\n", + "html": "
                  \n

                  foo

                  \n
                  \n
                  \n", + "example": 101, + "start_line": 1631, + "end_line": 1639, + "section": "Setext headings" + }, + { + "markdown": "\\> foo\n------\n", + "html": "

                  > foo

                  \n", + "example": 102, + "start_line": 1645, + "end_line": 1650, + "section": "Setext headings" + }, + { + "markdown": "Foo\n\nbar\n---\nbaz\n", + "html": "

                  Foo

                  \n

                  bar

                  \n

                  baz

                  \n", + "example": 103, + "start_line": 1676, + "end_line": 1686, + "section": "Setext headings" + }, + { + "markdown": "Foo\nbar\n\n---\n\nbaz\n", + "html": "

                  Foo\nbar

                  \n
                  \n

                  baz

                  \n", + "example": 104, + "start_line": 1692, + "end_line": 1704, + "section": "Setext headings" + }, + { + "markdown": "Foo\nbar\n* * *\nbaz\n", + "html": "

                  Foo\nbar

                  \n
                  \n

                  baz

                  \n", + "example": 105, + "start_line": 1710, + "end_line": 1720, + "section": "Setext headings" + }, + { + "markdown": "Foo\nbar\n\\---\nbaz\n", + "html": "

                  Foo\nbar\n---\nbaz

                  \n", + "example": 106, + "start_line": 1725, + "end_line": 1735, + "section": "Setext headings" + }, + { + "markdown": " a simple\n indented code block\n", + "html": "
                  a simple\n  indented code block\n
                  \n", + "example": 107, + "start_line": 1753, + "end_line": 1760, + "section": "Indented code blocks" + }, + { + "markdown": " - foo\n\n bar\n", + "html": "
                    \n
                  • \n

                    foo

                    \n

                    bar

                    \n
                  • \n
                  \n", + "example": 108, + "start_line": 1767, + "end_line": 1778, + "section": "Indented code blocks" + }, + { + "markdown": "1. foo\n\n - bar\n", + "html": "
                    \n
                  1. \n

                    foo

                    \n
                      \n
                    • bar
                    • \n
                    \n
                  2. \n
                  \n", + "example": 109, + "start_line": 1781, + "end_line": 1794, + "section": "Indented code blocks" + }, + { + "markdown": "
                  \n *hi*\n\n - one\n", + "html": "
                  <a/>\n*hi*\n\n- one\n
                  \n", + "example": 110, + "start_line": 1801, + "end_line": 1812, + "section": "Indented code blocks" + }, + { + "markdown": " chunk1\n\n chunk2\n \n \n \n chunk3\n", + "html": "
                  chunk1\n\nchunk2\n\n\n\nchunk3\n
                  \n", + "example": 111, + "start_line": 1817, + "end_line": 1834, + "section": "Indented code blocks" + }, + { + "markdown": " chunk1\n \n chunk2\n", + "html": "
                  chunk1\n  \n  chunk2\n
                  \n", + "example": 112, + "start_line": 1840, + "end_line": 1849, + "section": "Indented code blocks" + }, + { + "markdown": "Foo\n bar\n\n", + "html": "

                  Foo\nbar

                  \n", + "example": 113, + "start_line": 1855, + "end_line": 1862, + "section": "Indented code blocks" + }, + { + "markdown": " foo\nbar\n", + "html": "
                  foo\n
                  \n

                  bar

                  \n", + "example": 114, + "start_line": 1869, + "end_line": 1876, + "section": "Indented code blocks" + }, + { + "markdown": "# Heading\n foo\nHeading\n------\n foo\n----\n", + "html": "

                  Heading

                  \n
                  foo\n
                  \n

                  Heading

                  \n
                  foo\n
                  \n
                  \n", + "example": 115, + "start_line": 1882, + "end_line": 1897, + "section": "Indented code blocks" + }, + { + "markdown": " foo\n bar\n", + "html": "
                      foo\nbar\n
                  \n", + "example": 116, + "start_line": 1902, + "end_line": 1909, + "section": "Indented code blocks" + }, + { + "markdown": "\n \n foo\n \n\n", + "html": "
                  foo\n
                  \n", + "example": 117, + "start_line": 1915, + "end_line": 1924, + "section": "Indented code blocks" + }, + { + "markdown": " foo \n", + "html": "
                  foo  \n
                  \n", + "example": 118, + "start_line": 1929, + "end_line": 1934, + "section": "Indented code blocks" + }, + { + "markdown": "```\n<\n >\n```\n", + "html": "
                  <\n >\n
                  \n", + "example": 119, + "start_line": 1984, + "end_line": 1993, + "section": "Fenced code blocks" + }, + { + "markdown": "~~~\n<\n >\n~~~\n", + "html": "
                  <\n >\n
                  \n", + "example": 120, + "start_line": 1998, + "end_line": 2007, + "section": "Fenced code blocks" + }, + { + "markdown": "``\nfoo\n``\n", + "html": "

                  foo

                  \n", + "example": 121, + "start_line": 2011, + "end_line": 2017, + "section": "Fenced code blocks" + }, + { + "markdown": "```\naaa\n~~~\n```\n", + "html": "
                  aaa\n~~~\n
                  \n", + "example": 122, + "start_line": 2022, + "end_line": 2031, + "section": "Fenced code blocks" + }, + { + "markdown": "~~~\naaa\n```\n~~~\n", + "html": "
                  aaa\n```\n
                  \n", + "example": 123, + "start_line": 2034, + "end_line": 2043, + "section": "Fenced code blocks" + }, + { + "markdown": "````\naaa\n```\n``````\n", + "html": "
                  aaa\n```\n
                  \n", + "example": 124, + "start_line": 2048, + "end_line": 2057, + "section": "Fenced code blocks" + }, + { + "markdown": "~~~~\naaa\n~~~\n~~~~\n", + "html": "
                  aaa\n~~~\n
                  \n", + "example": 125, + "start_line": 2060, + "end_line": 2069, + "section": "Fenced code blocks" + }, + { + "markdown": "```\n", + "html": "
                  \n", + "example": 126, + "start_line": 2075, + "end_line": 2079, + "section": "Fenced code blocks" + }, + { + "markdown": "`````\n\n```\naaa\n", + "html": "
                  \n```\naaa\n
                  \n", + "example": 127, + "start_line": 2082, + "end_line": 2092, + "section": "Fenced code blocks" + }, + { + "markdown": "> ```\n> aaa\n\nbbb\n", + "html": "
                  \n
                  aaa\n
                  \n
                  \n

                  bbb

                  \n", + "example": 128, + "start_line": 2095, + "end_line": 2106, + "section": "Fenced code blocks" + }, + { + "markdown": "```\n\n \n```\n", + "html": "
                  \n  \n
                  \n", + "example": 129, + "start_line": 2111, + "end_line": 2120, + "section": "Fenced code blocks" + }, + { + "markdown": "```\n```\n", + "html": "
                  \n", + "example": 130, + "start_line": 2125, + "end_line": 2130, + "section": "Fenced code blocks" + }, + { + "markdown": " ```\n aaa\naaa\n```\n", + "html": "
                  aaa\naaa\n
                  \n", + "example": 131, + "start_line": 2137, + "end_line": 2146, + "section": "Fenced code blocks" + }, + { + "markdown": " ```\naaa\n aaa\naaa\n ```\n", + "html": "
                  aaa\naaa\naaa\n
                  \n", + "example": 132, + "start_line": 2149, + "end_line": 2160, + "section": "Fenced code blocks" + }, + { + "markdown": " ```\n aaa\n aaa\n aaa\n ```\n", + "html": "
                  aaa\n aaa\naaa\n
                  \n", + "example": 133, + "start_line": 2163, + "end_line": 2174, + "section": "Fenced code blocks" + }, + { + "markdown": " ```\n aaa\n ```\n", + "html": "
                  ```\naaa\n```\n
                  \n", + "example": 134, + "start_line": 2179, + "end_line": 2188, + "section": "Fenced code blocks" + }, + { + "markdown": "```\naaa\n ```\n", + "html": "
                  aaa\n
                  \n", + "example": 135, + "start_line": 2194, + "end_line": 2201, + "section": "Fenced code blocks" + }, + { + "markdown": " ```\naaa\n ```\n", + "html": "
                  aaa\n
                  \n", + "example": 136, + "start_line": 2204, + "end_line": 2211, + "section": "Fenced code blocks" + }, + { + "markdown": "```\naaa\n ```\n", + "html": "
                  aaa\n    ```\n
                  \n", + "example": 137, + "start_line": 2216, + "end_line": 2224, + "section": "Fenced code blocks" + }, + { + "markdown": "``` ```\naaa\n", + "html": "

                  \naaa

                  \n", + "example": 138, + "start_line": 2230, + "end_line": 2236, + "section": "Fenced code blocks" + }, + { + "markdown": "~~~~~~\naaa\n~~~ ~~\n", + "html": "
                  aaa\n~~~ ~~\n
                  \n", + "example": 139, + "start_line": 2239, + "end_line": 2247, + "section": "Fenced code blocks" + }, + { + "markdown": "foo\n```\nbar\n```\nbaz\n", + "html": "

                  foo

                  \n
                  bar\n
                  \n

                  baz

                  \n", + "example": 140, + "start_line": 2253, + "end_line": 2264, + "section": "Fenced code blocks" + }, + { + "markdown": "foo\n---\n~~~\nbar\n~~~\n# baz\n", + "html": "

                  foo

                  \n
                  bar\n
                  \n

                  baz

                  \n", + "example": 141, + "start_line": 2270, + "end_line": 2282, + "section": "Fenced code blocks" + }, + { + "markdown": "```ruby\ndef foo(x)\n return 3\nend\n```\n", + "html": "
                  def foo(x)\n  return 3\nend\n
                  \n", + "example": 142, + "start_line": 2292, + "end_line": 2303, + "section": "Fenced code blocks" + }, + { + "markdown": "~~~~ ruby startline=3 $%@#$\ndef foo(x)\n return 3\nend\n~~~~~~~\n", + "html": "
                  def foo(x)\n  return 3\nend\n
                  \n", + "example": 143, + "start_line": 2306, + "end_line": 2317, + "section": "Fenced code blocks" + }, + { + "markdown": "````;\n````\n", + "html": "
                  \n", + "example": 144, + "start_line": 2320, + "end_line": 2325, + "section": "Fenced code blocks" + }, + { + "markdown": "``` aa ```\nfoo\n", + "html": "

                  aa\nfoo

                  \n", + "example": 145, + "start_line": 2330, + "end_line": 2336, + "section": "Fenced code blocks" + }, + { + "markdown": "~~~ aa ``` ~~~\nfoo\n~~~\n", + "html": "
                  foo\n
                  \n", + "example": 146, + "start_line": 2341, + "end_line": 2348, + "section": "Fenced code blocks" + }, + { + "markdown": "```\n``` aaa\n```\n", + "html": "
                  ``` aaa\n
                  \n", + "example": 147, + "start_line": 2353, + "end_line": 2360, + "section": "Fenced code blocks" + }, + { + "markdown": "
                  \n
                  \n**Hello**,\n\n_world_.\n
                  \n
                  \n", + "html": "
                  \n
                  \n**Hello**,\n

                  world.\n

                  \n
                  \n", + "example": 148, + "start_line": 2432, + "end_line": 2447, + "section": "HTML blocks" + }, + { + "markdown": "\n \n \n \n
                  \n hi\n
                  \n\nokay.\n", + "html": "\n \n \n \n
                  \n hi\n
                  \n

                  okay.

                  \n", + "example": 149, + "start_line": 2461, + "end_line": 2480, + "section": "HTML blocks" + }, + { + "markdown": "
                  \n*foo*\n", + "example": 151, + "start_line": 2496, + "end_line": 2502, + "section": "HTML blocks" + }, + { + "markdown": "
                  \n\n*Markdown*\n\n
                  \n", + "html": "
                  \n

                  Markdown

                  \n
                  \n", + "example": 152, + "start_line": 2507, + "end_line": 2517, + "section": "HTML blocks" + }, + { + "markdown": "
                  \n
                  \n", + "html": "
                  \n
                  \n", + "example": 153, + "start_line": 2523, + "end_line": 2531, + "section": "HTML blocks" + }, + { + "markdown": "
                  \n
                  \n", + "html": "
                  \n
                  \n", + "example": 154, + "start_line": 2534, + "end_line": 2542, + "section": "HTML blocks" + }, + { + "markdown": "
                  \n*foo*\n\n*bar*\n", + "html": "
                  \n*foo*\n

                  bar

                  \n", + "example": 155, + "start_line": 2546, + "end_line": 2555, + "section": "HTML blocks" + }, + { + "markdown": "
                  \n", + "html": "\n", + "example": 159, + "start_line": 2595, + "end_line": 2599, + "section": "HTML blocks" + }, + { + "markdown": "
                  \nfoo\n
                  \n", + "html": "
                  \nfoo\n
                  \n", + "example": 160, + "start_line": 2602, + "end_line": 2610, + "section": "HTML blocks" + }, + { + "markdown": "
                  \n``` c\nint x = 33;\n```\n", + "html": "
                  \n``` c\nint x = 33;\n```\n", + "example": 161, + "start_line": 2619, + "end_line": 2629, + "section": "HTML blocks" + }, + { + "markdown": "\n*bar*\n\n", + "html": "\n*bar*\n\n", + "example": 162, + "start_line": 2636, + "end_line": 2644, + "section": "HTML blocks" + }, + { + "markdown": "\n*bar*\n\n", + "html": "\n*bar*\n\n", + "example": 163, + "start_line": 2649, + "end_line": 2657, + "section": "HTML blocks" + }, + { + "markdown": "\n*bar*\n\n", + "html": "\n*bar*\n\n", + "example": 164, + "start_line": 2660, + "end_line": 2668, + "section": "HTML blocks" + }, + { + "markdown": "\n*bar*\n", + "html": "\n*bar*\n", + "example": 165, + "start_line": 2671, + "end_line": 2677, + "section": "HTML blocks" + }, + { + "markdown": "\n*foo*\n\n", + "html": "\n*foo*\n\n", + "example": 166, + "start_line": 2686, + "end_line": 2694, + "section": "HTML blocks" + }, + { + "markdown": "\n\n*foo*\n\n\n", + "html": "\n

                  foo

                  \n
                  \n", + "example": 167, + "start_line": 2701, + "end_line": 2711, + "section": "HTML blocks" + }, + { + "markdown": "*foo*\n", + "html": "

                  foo

                  \n", + "example": 168, + "start_line": 2719, + "end_line": 2723, + "section": "HTML blocks" + }, + { + "markdown": "
                  \nimport Text.HTML.TagSoup\n\nmain :: IO ()\nmain = print $ parseTags tags\n
                  \nokay\n", + "html": "
                  \nimport Text.HTML.TagSoup\n\nmain :: IO ()\nmain = print $ parseTags tags\n
                  \n

                  okay

                  \n", + "example": 169, + "start_line": 2735, + "end_line": 2751, + "section": "HTML blocks" + }, + { + "markdown": "\nokay\n", + "html": "\n

                  okay

                  \n", + "example": 170, + "start_line": 2756, + "end_line": 2770, + "section": "HTML blocks" + }, + { + "markdown": "\n", + "html": "\n", + "example": 171, + "start_line": 2775, + "end_line": 2791, + "section": "HTML blocks" + }, + { + "markdown": "\nh1 {color:red;}\n\np {color:blue;}\n\nokay\n", + "html": "\nh1 {color:red;}\n\np {color:blue;}\n\n

                  okay

                  \n", + "example": 172, + "start_line": 2795, + "end_line": 2811, + "section": "HTML blocks" + }, + { + "markdown": "\n\nfoo\n", + "html": "\n\nfoo\n", + "example": 173, + "start_line": 2818, + "end_line": 2828, + "section": "HTML blocks" + }, + { + "markdown": ">
                  \n> foo\n\nbar\n", + "html": "
                  \n
                  \nfoo\n
                  \n

                  bar

                  \n", + "example": 174, + "start_line": 2831, + "end_line": 2842, + "section": "HTML blocks" + }, + { + "markdown": "-
                  \n- foo\n", + "html": "
                    \n
                  • \n
                    \n
                  • \n
                  • foo
                  • \n
                  \n", + "example": 175, + "start_line": 2845, + "end_line": 2855, + "section": "HTML blocks" + }, + { + "markdown": "\n*foo*\n", + "html": "\n

                  foo

                  \n", + "example": 176, + "start_line": 2860, + "end_line": 2866, + "section": "HTML blocks" + }, + { + "markdown": "*bar*\n*baz*\n", + "html": "*bar*\n

                  baz

                  \n", + "example": 177, + "start_line": 2869, + "end_line": 2875, + "section": "HTML blocks" + }, + { + "markdown": "1. *bar*\n", + "html": "1. *bar*\n", + "example": 178, + "start_line": 2881, + "end_line": 2889, + "section": "HTML blocks" + }, + { + "markdown": "\nokay\n", + "html": "\n

                  okay

                  \n", + "example": 179, + "start_line": 2894, + "end_line": 2906, + "section": "HTML blocks" + }, + { + "markdown": "';\n\n?>\nokay\n", + "html": "';\n\n?>\n

                  okay

                  \n", + "example": 180, + "start_line": 2912, + "end_line": 2926, + "section": "HTML blocks" + }, + { + "markdown": "\n", + "html": "\n", + "example": 181, + "start_line": 2931, + "end_line": 2935, + "section": "HTML blocks" + }, + { + "markdown": "\nokay\n", + "html": "\n

                  okay

                  \n", + "example": 182, + "start_line": 2940, + "end_line": 2968, + "section": "HTML blocks" + }, + { + "markdown": " \n\n \n", + "html": " \n
                  <!-- foo -->\n
                  \n", + "example": 183, + "start_line": 2974, + "end_line": 2982, + "section": "HTML blocks" + }, + { + "markdown": "
                  \n\n
                  \n", + "html": "
                  \n
                  <div>\n
                  \n", + "example": 184, + "start_line": 2985, + "end_line": 2993, + "section": "HTML blocks" + }, + { + "markdown": "Foo\n
                  \nbar\n
                  \n", + "html": "

                  Foo

                  \n
                  \nbar\n
                  \n", + "example": 185, + "start_line": 2999, + "end_line": 3009, + "section": "HTML blocks" + }, + { + "markdown": "
                  \nbar\n
                  \n*foo*\n", + "html": "
                  \nbar\n
                  \n*foo*\n", + "example": 186, + "start_line": 3016, + "end_line": 3026, + "section": "HTML blocks" + }, + { + "markdown": "Foo\n\nbaz\n", + "html": "

                  Foo\n\nbaz

                  \n", + "example": 187, + "start_line": 3031, + "end_line": 3039, + "section": "HTML blocks" + }, + { + "markdown": "
                  \n\n*Emphasized* text.\n\n
                  \n", + "html": "
                  \n

                  Emphasized text.

                  \n
                  \n", + "example": 188, + "start_line": 3072, + "end_line": 3082, + "section": "HTML blocks" + }, + { + "markdown": "
                  \n*Emphasized* text.\n
                  \n", + "html": "
                  \n*Emphasized* text.\n
                  \n", + "example": 189, + "start_line": 3085, + "end_line": 3093, + "section": "HTML blocks" + }, + { + "markdown": "\n\n\n\n\n\n\n\n
                  \nHi\n
                  \n", + "html": "\n\n\n\n
                  \nHi\n
                  \n", + "example": 190, + "start_line": 3107, + "end_line": 3127, + "section": "HTML blocks" + }, + { + "markdown": "\n\n \n\n \n\n \n\n
                  \n Hi\n
                  \n", + "html": "\n \n
                  <td>\n  Hi\n</td>\n
                  \n \n
                  \n", + "example": 191, + "start_line": 3134, + "end_line": 3155, + "section": "HTML blocks" + }, + { + "markdown": "[foo]: /url \"title\"\n\n[foo]\n", + "html": "

                  foo

                  \n", + "example": 192, + "start_line": 3183, + "end_line": 3189, + "section": "Link reference definitions" + }, + { + "markdown": " [foo]: \n /url \n 'the title' \n\n[foo]\n", + "html": "

                  foo

                  \n", + "example": 193, + "start_line": 3192, + "end_line": 3200, + "section": "Link reference definitions" + }, + { + "markdown": "[Foo*bar\\]]:my_(url) 'title (with parens)'\n\n[Foo*bar\\]]\n", + "html": "

                  Foo*bar]

                  \n", + "example": 194, + "start_line": 3203, + "end_line": 3209, + "section": "Link reference definitions" + }, + { + "markdown": "[Foo bar]:\n\n'title'\n\n[Foo bar]\n", + "html": "

                  Foo bar

                  \n", + "example": 195, + "start_line": 3212, + "end_line": 3220, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]: /url '\ntitle\nline1\nline2\n'\n\n[foo]\n", + "html": "

                  foo

                  \n", + "example": 196, + "start_line": 3225, + "end_line": 3239, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]: /url 'title\n\nwith blank line'\n\n[foo]\n", + "html": "

                  [foo]: /url 'title

                  \n

                  with blank line'

                  \n

                  [foo]

                  \n", + "example": 197, + "start_line": 3244, + "end_line": 3254, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]:\n/url\n\n[foo]\n", + "html": "

                  foo

                  \n", + "example": 198, + "start_line": 3259, + "end_line": 3266, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]:\n\n[foo]\n", + "html": "

                  [foo]:

                  \n

                  [foo]

                  \n", + "example": 199, + "start_line": 3271, + "end_line": 3278, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]: <>\n\n[foo]\n", + "html": "

                  foo

                  \n", + "example": 200, + "start_line": 3283, + "end_line": 3289, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]: (baz)\n\n[foo]\n", + "html": "

                  [foo]: (baz)

                  \n

                  [foo]

                  \n", + "example": 201, + "start_line": 3294, + "end_line": 3301, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]: /url\\bar\\*baz \"foo\\\"bar\\baz\"\n\n[foo]\n", + "html": "

                  foo

                  \n", + "example": 202, + "start_line": 3307, + "end_line": 3313, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]\n\n[foo]: url\n", + "html": "

                  foo

                  \n", + "example": 203, + "start_line": 3318, + "end_line": 3324, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]\n\n[foo]: first\n[foo]: second\n", + "html": "

                  foo

                  \n", + "example": 204, + "start_line": 3330, + "end_line": 3337, + "section": "Link reference definitions" + }, + { + "markdown": "[FOO]: /url\n\n[Foo]\n", + "html": "

                  Foo

                  \n", + "example": 205, + "start_line": 3343, + "end_line": 3349, + "section": "Link reference definitions" + }, + { + "markdown": "[ΑΓΩ]: /φου\n\n[αγω]\n", + "html": "

                  αγω

                  \n", + "example": 206, + "start_line": 3352, + "end_line": 3358, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]: /url\n", + "html": "", + "example": 207, + "start_line": 3367, + "end_line": 3370, + "section": "Link reference definitions" + }, + { + "markdown": "[\nfoo\n]: /url\nbar\n", + "html": "

                  bar

                  \n", + "example": 208, + "start_line": 3375, + "end_line": 3382, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]: /url \"title\" ok\n", + "html": "

                  [foo]: /url "title" ok

                  \n", + "example": 209, + "start_line": 3388, + "end_line": 3392, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]: /url\n\"title\" ok\n", + "html": "

                  "title" ok

                  \n", + "example": 210, + "start_line": 3397, + "end_line": 3402, + "section": "Link reference definitions" + }, + { + "markdown": " [foo]: /url \"title\"\n\n[foo]\n", + "html": "
                  [foo]: /url "title"\n
                  \n

                  [foo]

                  \n", + "example": 211, + "start_line": 3408, + "end_line": 3416, + "section": "Link reference definitions" + }, + { + "markdown": "```\n[foo]: /url\n```\n\n[foo]\n", + "html": "
                  [foo]: /url\n
                  \n

                  [foo]

                  \n", + "example": 212, + "start_line": 3422, + "end_line": 3432, + "section": "Link reference definitions" + }, + { + "markdown": "Foo\n[bar]: /baz\n\n[bar]\n", + "html": "

                  Foo\n[bar]: /baz

                  \n

                  [bar]

                  \n", + "example": 213, + "start_line": 3437, + "end_line": 3446, + "section": "Link reference definitions" + }, + { + "markdown": "# [Foo]\n[foo]: /url\n> bar\n", + "html": "

                  Foo

                  \n
                  \n

                  bar

                  \n
                  \n", + "example": 214, + "start_line": 3452, + "end_line": 3461, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]: /url\nbar\n===\n[foo]\n", + "html": "

                  bar

                  \n

                  foo

                  \n", + "example": 215, + "start_line": 3463, + "end_line": 3471, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]: /url\n===\n[foo]\n", + "html": "

                  ===\nfoo

                  \n", + "example": 216, + "start_line": 3473, + "end_line": 3480, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]: /foo-url \"foo\"\n[bar]: /bar-url\n \"bar\"\n[baz]: /baz-url\n\n[foo],\n[bar],\n[baz]\n", + "html": "

                  foo,\nbar,\nbaz

                  \n", + "example": 217, + "start_line": 3486, + "end_line": 3499, + "section": "Link reference definitions" + }, + { + "markdown": "[foo]\n\n> [foo]: /url\n", + "html": "

                  foo

                  \n
                  \n
                  \n", + "example": 218, + "start_line": 3507, + "end_line": 3515, + "section": "Link reference definitions" + }, + { + "markdown": "aaa\n\nbbb\n", + "html": "

                  aaa

                  \n

                  bbb

                  \n", + "example": 219, + "start_line": 3529, + "end_line": 3536, + "section": "Paragraphs" + }, + { + "markdown": "aaa\nbbb\n\nccc\nddd\n", + "html": "

                  aaa\nbbb

                  \n

                  ccc\nddd

                  \n", + "example": 220, + "start_line": 3541, + "end_line": 3552, + "section": "Paragraphs" + }, + { + "markdown": "aaa\n\n\nbbb\n", + "html": "

                  aaa

                  \n

                  bbb

                  \n", + "example": 221, + "start_line": 3557, + "end_line": 3565, + "section": "Paragraphs" + }, + { + "markdown": " aaa\n bbb\n", + "html": "

                  aaa\nbbb

                  \n", + "example": 222, + "start_line": 3570, + "end_line": 3576, + "section": "Paragraphs" + }, + { + "markdown": "aaa\n bbb\n ccc\n", + "html": "

                  aaa\nbbb\nccc

                  \n", + "example": 223, + "start_line": 3582, + "end_line": 3590, + "section": "Paragraphs" + }, + { + "markdown": " aaa\nbbb\n", + "html": "

                  aaa\nbbb

                  \n", + "example": 224, + "start_line": 3596, + "end_line": 3602, + "section": "Paragraphs" + }, + { + "markdown": " aaa\nbbb\n", + "html": "
                  aaa\n
                  \n

                  bbb

                  \n", + "example": 225, + "start_line": 3605, + "end_line": 3612, + "section": "Paragraphs" + }, + { + "markdown": "aaa \nbbb \n", + "html": "

                  aaa
                  \nbbb

                  \n", + "example": 226, + "start_line": 3619, + "end_line": 3625, + "section": "Paragraphs" + }, + { + "markdown": " \n\naaa\n \n\n# aaa\n\n \n", + "html": "

                  aaa

                  \n

                  aaa

                  \n", + "example": 227, + "start_line": 3636, + "end_line": 3648, + "section": "Blank lines" + }, + { + "markdown": "> # Foo\n> bar\n> baz\n", + "html": "
                  \n

                  Foo

                  \n

                  bar\nbaz

                  \n
                  \n", + "example": 228, + "start_line": 3704, + "end_line": 3714, + "section": "Block quotes" + }, + { + "markdown": "># Foo\n>bar\n> baz\n", + "html": "
                  \n

                  Foo

                  \n

                  bar\nbaz

                  \n
                  \n", + "example": 229, + "start_line": 3719, + "end_line": 3729, + "section": "Block quotes" + }, + { + "markdown": " > # Foo\n > bar\n > baz\n", + "html": "
                  \n

                  Foo

                  \n

                  bar\nbaz

                  \n
                  \n", + "example": 230, + "start_line": 3734, + "end_line": 3744, + "section": "Block quotes" + }, + { + "markdown": " > # Foo\n > bar\n > baz\n", + "html": "
                  > # Foo\n> bar\n> baz\n
                  \n", + "example": 231, + "start_line": 3749, + "end_line": 3758, + "section": "Block quotes" + }, + { + "markdown": "> # Foo\n> bar\nbaz\n", + "html": "
                  \n

                  Foo

                  \n

                  bar\nbaz

                  \n
                  \n", + "example": 232, + "start_line": 3764, + "end_line": 3774, + "section": "Block quotes" + }, + { + "markdown": "> bar\nbaz\n> foo\n", + "html": "
                  \n

                  bar\nbaz\nfoo

                  \n
                  \n", + "example": 233, + "start_line": 3780, + "end_line": 3790, + "section": "Block quotes" + }, + { + "markdown": "> foo\n---\n", + "html": "
                  \n

                  foo

                  \n
                  \n
                  \n", + "example": 234, + "start_line": 3804, + "end_line": 3812, + "section": "Block quotes" + }, + { + "markdown": "> - foo\n- bar\n", + "html": "
                  \n
                    \n
                  • foo
                  • \n
                  \n
                  \n
                    \n
                  • bar
                  • \n
                  \n", + "example": 235, + "start_line": 3824, + "end_line": 3836, + "section": "Block quotes" + }, + { + "markdown": "> foo\n bar\n", + "html": "
                  \n
                  foo\n
                  \n
                  \n
                  bar\n
                  \n", + "example": 236, + "start_line": 3842, + "end_line": 3852, + "section": "Block quotes" + }, + { + "markdown": "> ```\nfoo\n```\n", + "html": "
                  \n
                  \n
                  \n

                  foo

                  \n
                  \n", + "example": 237, + "start_line": 3855, + "end_line": 3865, + "section": "Block quotes" + }, + { + "markdown": "> foo\n - bar\n", + "html": "
                  \n

                  foo\n- bar

                  \n
                  \n", + "example": 238, + "start_line": 3871, + "end_line": 3879, + "section": "Block quotes" + }, + { + "markdown": ">\n", + "html": "
                  \n
                  \n", + "example": 239, + "start_line": 3895, + "end_line": 3900, + "section": "Block quotes" + }, + { + "markdown": ">\n> \n> \n", + "html": "
                  \n
                  \n", + "example": 240, + "start_line": 3903, + "end_line": 3910, + "section": "Block quotes" + }, + { + "markdown": ">\n> foo\n> \n", + "html": "
                  \n

                  foo

                  \n
                  \n", + "example": 241, + "start_line": 3915, + "end_line": 3923, + "section": "Block quotes" + }, + { + "markdown": "> foo\n\n> bar\n", + "html": "
                  \n

                  foo

                  \n
                  \n
                  \n

                  bar

                  \n
                  \n", + "example": 242, + "start_line": 3928, + "end_line": 3939, + "section": "Block quotes" + }, + { + "markdown": "> foo\n> bar\n", + "html": "
                  \n

                  foo\nbar

                  \n
                  \n", + "example": 243, + "start_line": 3950, + "end_line": 3958, + "section": "Block quotes" + }, + { + "markdown": "> foo\n>\n> bar\n", + "html": "
                  \n

                  foo

                  \n

                  bar

                  \n
                  \n", + "example": 244, + "start_line": 3963, + "end_line": 3972, + "section": "Block quotes" + }, + { + "markdown": "foo\n> bar\n", + "html": "

                  foo

                  \n
                  \n

                  bar

                  \n
                  \n", + "example": 245, + "start_line": 3977, + "end_line": 3985, + "section": "Block quotes" + }, + { + "markdown": "> aaa\n***\n> bbb\n", + "html": "
                  \n

                  aaa

                  \n
                  \n
                  \n
                  \n

                  bbb

                  \n
                  \n", + "example": 246, + "start_line": 3991, + "end_line": 4003, + "section": "Block quotes" + }, + { + "markdown": "> bar\nbaz\n", + "html": "
                  \n

                  bar\nbaz

                  \n
                  \n", + "example": 247, + "start_line": 4009, + "end_line": 4017, + "section": "Block quotes" + }, + { + "markdown": "> bar\n\nbaz\n", + "html": "
                  \n

                  bar

                  \n
                  \n

                  baz

                  \n", + "example": 248, + "start_line": 4020, + "end_line": 4029, + "section": "Block quotes" + }, + { + "markdown": "> bar\n>\nbaz\n", + "html": "
                  \n

                  bar

                  \n
                  \n

                  baz

                  \n", + "example": 249, + "start_line": 4032, + "end_line": 4041, + "section": "Block quotes" + }, + { + "markdown": "> > > foo\nbar\n", + "html": "
                  \n
                  \n
                  \n

                  foo\nbar

                  \n
                  \n
                  \n
                  \n", + "example": 250, + "start_line": 4048, + "end_line": 4060, + "section": "Block quotes" + }, + { + "markdown": ">>> foo\n> bar\n>>baz\n", + "html": "
                  \n
                  \n
                  \n

                  foo\nbar\nbaz

                  \n
                  \n
                  \n
                  \n", + "example": 251, + "start_line": 4063, + "end_line": 4077, + "section": "Block quotes" + }, + { + "markdown": "> code\n\n> not code\n", + "html": "
                  \n
                  code\n
                  \n
                  \n
                  \n

                  not code

                  \n
                  \n", + "example": 252, + "start_line": 4085, + "end_line": 4097, + "section": "Block quotes" + }, + { + "markdown": "A paragraph\nwith two lines.\n\n indented code\n\n> A block quote.\n", + "html": "

                  A paragraph\nwith two lines.

                  \n
                  indented code\n
                  \n
                  \n

                  A block quote.

                  \n
                  \n", + "example": 253, + "start_line": 4139, + "end_line": 4154, + "section": "List items" + }, + { + "markdown": "1. A paragraph\n with two lines.\n\n indented code\n\n > A block quote.\n", + "html": "
                    \n
                  1. \n

                    A paragraph\nwith two lines.

                    \n
                    indented code\n
                    \n
                    \n

                    A block quote.

                    \n
                    \n
                  2. \n
                  \n", + "example": 254, + "start_line": 4161, + "end_line": 4180, + "section": "List items" + }, + { + "markdown": "- one\n\n two\n", + "html": "
                    \n
                  • one
                  • \n
                  \n

                  two

                  \n", + "example": 255, + "start_line": 4194, + "end_line": 4203, + "section": "List items" + }, + { + "markdown": "- one\n\n two\n", + "html": "
                    \n
                  • \n

                    one

                    \n

                    two

                    \n
                  • \n
                  \n", + "example": 256, + "start_line": 4206, + "end_line": 4217, + "section": "List items" + }, + { + "markdown": " - one\n\n two\n", + "html": "
                    \n
                  • one
                  • \n
                  \n
                   two\n
                  \n", + "example": 257, + "start_line": 4220, + "end_line": 4230, + "section": "List items" + }, + { + "markdown": " - one\n\n two\n", + "html": "
                    \n
                  • \n

                    one

                    \n

                    two

                    \n
                  • \n
                  \n", + "example": 258, + "start_line": 4233, + "end_line": 4244, + "section": "List items" + }, + { + "markdown": " > > 1. one\n>>\n>> two\n", + "html": "
                  \n
                  \n
                    \n
                  1. \n

                    one

                    \n

                    two

                    \n
                  2. \n
                  \n
                  \n
                  \n", + "example": 259, + "start_line": 4255, + "end_line": 4270, + "section": "List items" + }, + { + "markdown": ">>- one\n>>\n > > two\n", + "html": "
                  \n
                  \n
                    \n
                  • one
                  • \n
                  \n

                  two

                  \n
                  \n
                  \n", + "example": 260, + "start_line": 4282, + "end_line": 4295, + "section": "List items" + }, + { + "markdown": "-one\n\n2.two\n", + "html": "

                  -one

                  \n

                  2.two

                  \n", + "example": 261, + "start_line": 4301, + "end_line": 4308, + "section": "List items" + }, + { + "markdown": "- foo\n\n\n bar\n", + "html": "
                    \n
                  • \n

                    foo

                    \n

                    bar

                    \n
                  • \n
                  \n", + "example": 262, + "start_line": 4314, + "end_line": 4326, + "section": "List items" + }, + { + "markdown": "1. foo\n\n ```\n bar\n ```\n\n baz\n\n > bam\n", + "html": "
                    \n
                  1. \n

                    foo

                    \n
                    bar\n
                    \n

                    baz

                    \n
                    \n

                    bam

                    \n
                    \n
                  2. \n
                  \n", + "example": 263, + "start_line": 4331, + "end_line": 4353, + "section": "List items" + }, + { + "markdown": "- Foo\n\n bar\n\n\n baz\n", + "html": "
                    \n
                  • \n

                    Foo

                    \n
                    bar\n\n\nbaz\n
                    \n
                  • \n
                  \n", + "example": 264, + "start_line": 4359, + "end_line": 4377, + "section": "List items" + }, + { + "markdown": "123456789. ok\n", + "html": "
                    \n
                  1. ok
                  2. \n
                  \n", + "example": 265, + "start_line": 4381, + "end_line": 4387, + "section": "List items" + }, + { + "markdown": "1234567890. not ok\n", + "html": "

                  1234567890. not ok

                  \n", + "example": 266, + "start_line": 4390, + "end_line": 4394, + "section": "List items" + }, + { + "markdown": "0. ok\n", + "html": "
                    \n
                  1. ok
                  2. \n
                  \n", + "example": 267, + "start_line": 4399, + "end_line": 4405, + "section": "List items" + }, + { + "markdown": "003. ok\n", + "html": "
                    \n
                  1. ok
                  2. \n
                  \n", + "example": 268, + "start_line": 4408, + "end_line": 4414, + "section": "List items" + }, + { + "markdown": "-1. not ok\n", + "html": "

                  -1. not ok

                  \n", + "example": 269, + "start_line": 4419, + "end_line": 4423, + "section": "List items" + }, + { + "markdown": "- foo\n\n bar\n", + "html": "
                    \n
                  • \n

                    foo

                    \n
                    bar\n
                    \n
                  • \n
                  \n", + "example": 270, + "start_line": 4442, + "end_line": 4454, + "section": "List items" + }, + { + "markdown": " 10. foo\n\n bar\n", + "html": "
                    \n
                  1. \n

                    foo

                    \n
                    bar\n
                    \n
                  2. \n
                  \n", + "example": 271, + "start_line": 4459, + "end_line": 4471, + "section": "List items" + }, + { + "markdown": " indented code\n\nparagraph\n\n more code\n", + "html": "
                  indented code\n
                  \n

                  paragraph

                  \n
                  more code\n
                  \n", + "example": 272, + "start_line": 4478, + "end_line": 4490, + "section": "List items" + }, + { + "markdown": "1. indented code\n\n paragraph\n\n more code\n", + "html": "
                    \n
                  1. \n
                    indented code\n
                    \n

                    paragraph

                    \n
                    more code\n
                    \n
                  2. \n
                  \n", + "example": 273, + "start_line": 4493, + "end_line": 4509, + "section": "List items" + }, + { + "markdown": "1. indented code\n\n paragraph\n\n more code\n", + "html": "
                    \n
                  1. \n
                     indented code\n
                    \n

                    paragraph

                    \n
                    more code\n
                    \n
                  2. \n
                  \n", + "example": 274, + "start_line": 4515, + "end_line": 4531, + "section": "List items" + }, + { + "markdown": " foo\n\nbar\n", + "html": "

                  foo

                  \n

                  bar

                  \n", + "example": 275, + "start_line": 4542, + "end_line": 4549, + "section": "List items" + }, + { + "markdown": "- foo\n\n bar\n", + "html": "
                    \n
                  • foo
                  • \n
                  \n

                  bar

                  \n", + "example": 276, + "start_line": 4552, + "end_line": 4561, + "section": "List items" + }, + { + "markdown": "- foo\n\n bar\n", + "html": "
                    \n
                  • \n

                    foo

                    \n

                    bar

                    \n
                  • \n
                  \n", + "example": 277, + "start_line": 4569, + "end_line": 4580, + "section": "List items" + }, + { + "markdown": "-\n foo\n-\n ```\n bar\n ```\n-\n baz\n", + "html": "
                    \n
                  • foo
                  • \n
                  • \n
                    bar\n
                    \n
                  • \n
                  • \n
                    baz\n
                    \n
                  • \n
                  \n", + "example": 278, + "start_line": 4596, + "end_line": 4617, + "section": "List items" + }, + { + "markdown": "- \n foo\n", + "html": "
                    \n
                  • foo
                  • \n
                  \n", + "example": 279, + "start_line": 4622, + "end_line": 4629, + "section": "List items" + }, + { + "markdown": "-\n\n foo\n", + "html": "
                    \n
                  • \n
                  \n

                  foo

                  \n", + "example": 280, + "start_line": 4636, + "end_line": 4645, + "section": "List items" + }, + { + "markdown": "- foo\n-\n- bar\n", + "html": "
                    \n
                  • foo
                  • \n
                  • \n
                  • bar
                  • \n
                  \n", + "example": 281, + "start_line": 4650, + "end_line": 4660, + "section": "List items" + }, + { + "markdown": "- foo\n- \n- bar\n", + "html": "
                    \n
                  • foo
                  • \n
                  • \n
                  • bar
                  • \n
                  \n", + "example": 282, + "start_line": 4665, + "end_line": 4675, + "section": "List items" + }, + { + "markdown": "1. foo\n2.\n3. bar\n", + "html": "
                    \n
                  1. foo
                  2. \n
                  3. \n
                  4. bar
                  5. \n
                  \n", + "example": 283, + "start_line": 4680, + "end_line": 4690, + "section": "List items" + }, + { + "markdown": "*\n", + "html": "
                    \n
                  • \n
                  \n", + "example": 284, + "start_line": 4695, + "end_line": 4701, + "section": "List items" + }, + { + "markdown": "foo\n*\n\nfoo\n1.\n", + "html": "

                  foo\n*

                  \n

                  foo\n1.

                  \n", + "example": 285, + "start_line": 4705, + "end_line": 4716, + "section": "List items" + }, + { + "markdown": " 1. A paragraph\n with two lines.\n\n indented code\n\n > A block quote.\n", + "html": "
                    \n
                  1. \n

                    A paragraph\nwith two lines.

                    \n
                    indented code\n
                    \n
                    \n

                    A block quote.

                    \n
                    \n
                  2. \n
                  \n", + "example": 286, + "start_line": 4727, + "end_line": 4746, + "section": "List items" + }, + { + "markdown": " 1. A paragraph\n with two lines.\n\n indented code\n\n > A block quote.\n", + "html": "
                    \n
                  1. \n

                    A paragraph\nwith two lines.

                    \n
                    indented code\n
                    \n
                    \n

                    A block quote.

                    \n
                    \n
                  2. \n
                  \n", + "example": 287, + "start_line": 4751, + "end_line": 4770, + "section": "List items" + }, + { + "markdown": " 1. A paragraph\n with two lines.\n\n indented code\n\n > A block quote.\n", + "html": "
                    \n
                  1. \n

                    A paragraph\nwith two lines.

                    \n
                    indented code\n
                    \n
                    \n

                    A block quote.

                    \n
                    \n
                  2. \n
                  \n", + "example": 288, + "start_line": 4775, + "end_line": 4794, + "section": "List items" + }, + { + "markdown": " 1. A paragraph\n with two lines.\n\n indented code\n\n > A block quote.\n", + "html": "
                  1.  A paragraph\n    with two lines.\n\n        indented code\n\n    > A block quote.\n
                  \n", + "example": 289, + "start_line": 4799, + "end_line": 4814, + "section": "List items" + }, + { + "markdown": " 1. A paragraph\nwith two lines.\n\n indented code\n\n > A block quote.\n", + "html": "
                    \n
                  1. \n

                    A paragraph\nwith two lines.

                    \n
                    indented code\n
                    \n
                    \n

                    A block quote.

                    \n
                    \n
                  2. \n
                  \n", + "example": 290, + "start_line": 4829, + "end_line": 4848, + "section": "List items" + }, + { + "markdown": " 1. A paragraph\n with two lines.\n", + "html": "
                    \n
                  1. A paragraph\nwith two lines.
                  2. \n
                  \n", + "example": 291, + "start_line": 4853, + "end_line": 4861, + "section": "List items" + }, + { + "markdown": "> 1. > Blockquote\ncontinued here.\n", + "html": "
                  \n
                    \n
                  1. \n
                    \n

                    Blockquote\ncontinued here.

                    \n
                    \n
                  2. \n
                  \n
                  \n", + "example": 292, + "start_line": 4866, + "end_line": 4880, + "section": "List items" + }, + { + "markdown": "> 1. > Blockquote\n> continued here.\n", + "html": "
                  \n
                    \n
                  1. \n
                    \n

                    Blockquote\ncontinued here.

                    \n
                    \n
                  2. \n
                  \n
                  \n", + "example": 293, + "start_line": 4883, + "end_line": 4897, + "section": "List items" + }, + { + "markdown": "- foo\n - bar\n - baz\n - boo\n", + "html": "
                    \n
                  • foo\n
                      \n
                    • bar\n
                        \n
                      • baz\n
                          \n
                        • boo
                        • \n
                        \n
                      • \n
                      \n
                    • \n
                    \n
                  • \n
                  \n", + "example": 294, + "start_line": 4911, + "end_line": 4932, + "section": "List items" + }, + { + "markdown": "- foo\n - bar\n - baz\n - boo\n", + "html": "
                    \n
                  • foo
                  • \n
                  • bar
                  • \n
                  • baz
                  • \n
                  • boo
                  • \n
                  \n", + "example": 295, + "start_line": 4937, + "end_line": 4949, + "section": "List items" + }, + { + "markdown": "10) foo\n - bar\n", + "html": "
                    \n
                  1. foo\n
                      \n
                    • bar
                    • \n
                    \n
                  2. \n
                  \n", + "example": 296, + "start_line": 4954, + "end_line": 4965, + "section": "List items" + }, + { + "markdown": "10) foo\n - bar\n", + "html": "
                    \n
                  1. foo
                  2. \n
                  \n
                    \n
                  • bar
                  • \n
                  \n", + "example": 297, + "start_line": 4970, + "end_line": 4980, + "section": "List items" + }, + { + "markdown": "- - foo\n", + "html": "
                    \n
                  • \n
                      \n
                    • foo
                    • \n
                    \n
                  • \n
                  \n", + "example": 298, + "start_line": 4985, + "end_line": 4995, + "section": "List items" + }, + { + "markdown": "1. - 2. foo\n", + "html": "
                    \n
                  1. \n
                      \n
                    • \n
                        \n
                      1. foo
                      2. \n
                      \n
                    • \n
                    \n
                  2. \n
                  \n", + "example": 299, + "start_line": 4998, + "end_line": 5012, + "section": "List items" + }, + { + "markdown": "- # Foo\n- Bar\n ---\n baz\n", + "html": "
                    \n
                  • \n

                    Foo

                    \n
                  • \n
                  • \n

                    Bar

                    \nbaz
                  • \n
                  \n", + "example": 300, + "start_line": 5017, + "end_line": 5031, + "section": "List items" + }, + { + "markdown": "- foo\n- bar\n+ baz\n", + "html": "
                    \n
                  • foo
                  • \n
                  • bar
                  • \n
                  \n
                    \n
                  • baz
                  • \n
                  \n", + "example": 301, + "start_line": 5253, + "end_line": 5265, + "section": "Lists" + }, + { + "markdown": "1. foo\n2. bar\n3) baz\n", + "html": "
                    \n
                  1. foo
                  2. \n
                  3. bar
                  4. \n
                  \n
                    \n
                  1. baz
                  2. \n
                  \n", + "example": 302, + "start_line": 5268, + "end_line": 5280, + "section": "Lists" + }, + { + "markdown": "Foo\n- bar\n- baz\n", + "html": "

                  Foo

                  \n
                    \n
                  • bar
                  • \n
                  • baz
                  • \n
                  \n", + "example": 303, + "start_line": 5287, + "end_line": 5297, + "section": "Lists" + }, + { + "markdown": "The number of windows in my house is\n14. The number of doors is 6.\n", + "html": "

                  The number of windows in my house is\n14. The number of doors is 6.

                  \n", + "example": 304, + "start_line": 5364, + "end_line": 5370, + "section": "Lists" + }, + { + "markdown": "The number of windows in my house is\n1. The number of doors is 6.\n", + "html": "

                  The number of windows in my house is

                  \n
                    \n
                  1. The number of doors is 6.
                  2. \n
                  \n", + "example": 305, + "start_line": 5374, + "end_line": 5382, + "section": "Lists" + }, + { + "markdown": "- foo\n\n- bar\n\n\n- baz\n", + "html": "
                    \n
                  • \n

                    foo

                    \n
                  • \n
                  • \n

                    bar

                    \n
                  • \n
                  • \n

                    baz

                    \n
                  • \n
                  \n", + "example": 306, + "start_line": 5388, + "end_line": 5407, + "section": "Lists" + }, + { + "markdown": "- foo\n - bar\n - baz\n\n\n bim\n", + "html": "
                    \n
                  • foo\n
                      \n
                    • bar\n
                        \n
                      • \n

                        baz

                        \n

                        bim

                        \n
                      • \n
                      \n
                    • \n
                    \n
                  • \n
                  \n", + "example": 307, + "start_line": 5409, + "end_line": 5431, + "section": "Lists" + }, + { + "markdown": "- foo\n- bar\n\n\n\n- baz\n- bim\n", + "html": "
                    \n
                  • foo
                  • \n
                  • bar
                  • \n
                  \n\n
                    \n
                  • baz
                  • \n
                  • bim
                  • \n
                  \n", + "example": 308, + "start_line": 5439, + "end_line": 5457, + "section": "Lists" + }, + { + "markdown": "- foo\n\n notcode\n\n- foo\n\n\n\n code\n", + "html": "
                    \n
                  • \n

                    foo

                    \n

                    notcode

                    \n
                  • \n
                  • \n

                    foo

                    \n
                  • \n
                  \n\n
                  code\n
                  \n", + "example": 309, + "start_line": 5460, + "end_line": 5483, + "section": "Lists" + }, + { + "markdown": "- a\n - b\n - c\n - d\n - e\n - f\n- g\n", + "html": "
                    \n
                  • a
                  • \n
                  • b
                  • \n
                  • c
                  • \n
                  • d
                  • \n
                  • e
                  • \n
                  • f
                  • \n
                  • g
                  • \n
                  \n", + "example": 310, + "start_line": 5491, + "end_line": 5509, + "section": "Lists" + }, + { + "markdown": "1. a\n\n 2. b\n\n 3. c\n", + "html": "
                    \n
                  1. \n

                    a

                    \n
                  2. \n
                  3. \n

                    b

                    \n
                  4. \n
                  5. \n

                    c

                    \n
                  6. \n
                  \n", + "example": 311, + "start_line": 5512, + "end_line": 5530, + "section": "Lists" + }, + { + "markdown": "- a\n - b\n - c\n - d\n - e\n", + "html": "
                    \n
                  • a
                  • \n
                  • b
                  • \n
                  • c
                  • \n
                  • d\n- e
                  • \n
                  \n", + "example": 312, + "start_line": 5536, + "end_line": 5550, + "section": "Lists" + }, + { + "markdown": "1. a\n\n 2. b\n\n 3. c\n", + "html": "
                    \n
                  1. \n

                    a

                    \n
                  2. \n
                  3. \n

                    b

                    \n
                  4. \n
                  \n
                  3. c\n
                  \n", + "example": 313, + "start_line": 5556, + "end_line": 5573, + "section": "Lists" + }, + { + "markdown": "- a\n- b\n\n- c\n", + "html": "
                    \n
                  • \n

                    a

                    \n
                  • \n
                  • \n

                    b

                    \n
                  • \n
                  • \n

                    c

                    \n
                  • \n
                  \n", + "example": 314, + "start_line": 5579, + "end_line": 5596, + "section": "Lists" + }, + { + "markdown": "* a\n*\n\n* c\n", + "html": "
                    \n
                  • \n

                    a

                    \n
                  • \n
                  • \n
                  • \n

                    c

                    \n
                  • \n
                  \n", + "example": 315, + "start_line": 5601, + "end_line": 5616, + "section": "Lists" + }, + { + "markdown": "- a\n- b\n\n c\n- d\n", + "html": "
                    \n
                  • \n

                    a

                    \n
                  • \n
                  • \n

                    b

                    \n

                    c

                    \n
                  • \n
                  • \n

                    d

                    \n
                  • \n
                  \n", + "example": 316, + "start_line": 5623, + "end_line": 5642, + "section": "Lists" + }, + { + "markdown": "- a\n- b\n\n [ref]: /url\n- d\n", + "html": "
                    \n
                  • \n

                    a

                    \n
                  • \n
                  • \n

                    b

                    \n
                  • \n
                  • \n

                    d

                    \n
                  • \n
                  \n", + "example": 317, + "start_line": 5645, + "end_line": 5663, + "section": "Lists" + }, + { + "markdown": "- a\n- ```\n b\n\n\n ```\n- c\n", + "html": "
                    \n
                  • a
                  • \n
                  • \n
                    b\n\n\n
                    \n
                  • \n
                  • c
                  • \n
                  \n", + "example": 318, + "start_line": 5668, + "end_line": 5687, + "section": "Lists" + }, + { + "markdown": "- a\n - b\n\n c\n- d\n", + "html": "
                    \n
                  • a\n
                      \n
                    • \n

                      b

                      \n

                      c

                      \n
                    • \n
                    \n
                  • \n
                  • d
                  • \n
                  \n", + "example": 319, + "start_line": 5694, + "end_line": 5712, + "section": "Lists" + }, + { + "markdown": "* a\n > b\n >\n* c\n", + "html": "
                    \n
                  • a\n
                    \n

                    b

                    \n
                    \n
                  • \n
                  • c
                  • \n
                  \n", + "example": 320, + "start_line": 5718, + "end_line": 5732, + "section": "Lists" + }, + { + "markdown": "- a\n > b\n ```\n c\n ```\n- d\n", + "html": "
                    \n
                  • a\n
                    \n

                    b

                    \n
                    \n
                    c\n
                    \n
                  • \n
                  • d
                  • \n
                  \n", + "example": 321, + "start_line": 5738, + "end_line": 5756, + "section": "Lists" + }, + { + "markdown": "- a\n", + "html": "
                    \n
                  • a
                  • \n
                  \n", + "example": 322, + "start_line": 5761, + "end_line": 5767, + "section": "Lists" + }, + { + "markdown": "- a\n - b\n", + "html": "
                    \n
                  • a\n
                      \n
                    • b
                    • \n
                    \n
                  • \n
                  \n", + "example": 323, + "start_line": 5770, + "end_line": 5781, + "section": "Lists" + }, + { + "markdown": "1. ```\n foo\n ```\n\n bar\n", + "html": "
                    \n
                  1. \n
                    foo\n
                    \n

                    bar

                    \n
                  2. \n
                  \n", + "example": 324, + "start_line": 5787, + "end_line": 5801, + "section": "Lists" + }, + { + "markdown": "* foo\n * bar\n\n baz\n", + "html": "
                    \n
                  • \n

                    foo

                    \n
                      \n
                    • bar
                    • \n
                    \n

                    baz

                    \n
                  • \n
                  \n", + "example": 325, + "start_line": 5806, + "end_line": 5821, + "section": "Lists" + }, + { + "markdown": "- a\n - b\n - c\n\n- d\n - e\n - f\n", + "html": "
                    \n
                  • \n

                    a

                    \n
                      \n
                    • b
                    • \n
                    • c
                    • \n
                    \n
                  • \n
                  • \n

                    d

                    \n
                      \n
                    • e
                    • \n
                    • f
                    • \n
                    \n
                  • \n
                  \n", + "example": 326, + "start_line": 5824, + "end_line": 5849, + "section": "Lists" + }, + { + "markdown": "`hi`lo`\n", + "html": "

                  hilo`

                  \n", + "example": 327, + "start_line": 5858, + "end_line": 5862, + "section": "Inlines" + }, + { + "markdown": "`foo`\n", + "html": "

                  foo

                  \n", + "example": 328, + "start_line": 5890, + "end_line": 5894, + "section": "Code spans" + }, + { + "markdown": "`` foo ` bar ``\n", + "html": "

                  foo ` bar

                  \n", + "example": 329, + "start_line": 5901, + "end_line": 5905, + "section": "Code spans" + }, + { + "markdown": "` `` `\n", + "html": "

                  ``

                  \n", + "example": 330, + "start_line": 5911, + "end_line": 5915, + "section": "Code spans" + }, + { + "markdown": "` `` `\n", + "html": "

                  ``

                  \n", + "example": 331, + "start_line": 5919, + "end_line": 5923, + "section": "Code spans" + }, + { + "markdown": "` a`\n", + "html": "

                  a

                  \n", + "example": 332, + "start_line": 5928, + "end_line": 5932, + "section": "Code spans" + }, + { + "markdown": "` b `\n", + "html": "

                   b 

                  \n", + "example": 333, + "start_line": 5937, + "end_line": 5941, + "section": "Code spans" + }, + { + "markdown": "` `\n` `\n", + "html": "

                   \n

                  \n", + "example": 334, + "start_line": 5945, + "end_line": 5951, + "section": "Code spans" + }, + { + "markdown": "``\nfoo\nbar \nbaz\n``\n", + "html": "

                  foo bar baz

                  \n", + "example": 335, + "start_line": 5956, + "end_line": 5964, + "section": "Code spans" + }, + { + "markdown": "``\nfoo \n``\n", + "html": "

                  foo

                  \n", + "example": 336, + "start_line": 5966, + "end_line": 5972, + "section": "Code spans" + }, + { + "markdown": "`foo bar \nbaz`\n", + "html": "

                  foo bar baz

                  \n", + "example": 337, + "start_line": 5977, + "end_line": 5982, + "section": "Code spans" + }, + { + "markdown": "`foo\\`bar`\n", + "html": "

                  foo\\bar`

                  \n", + "example": 338, + "start_line": 5994, + "end_line": 5998, + "section": "Code spans" + }, + { + "markdown": "``foo`bar``\n", + "html": "

                  foo`bar

                  \n", + "example": 339, + "start_line": 6005, + "end_line": 6009, + "section": "Code spans" + }, + { + "markdown": "` foo `` bar `\n", + "html": "

                  foo `` bar

                  \n", + "example": 340, + "start_line": 6011, + "end_line": 6015, + "section": "Code spans" + }, + { + "markdown": "*foo`*`\n", + "html": "

                  *foo*

                  \n", + "example": 341, + "start_line": 6023, + "end_line": 6027, + "section": "Code spans" + }, + { + "markdown": "[not a `link](/foo`)\n", + "html": "

                  [not a link](/foo)

                  \n", + "example": 342, + "start_line": 6032, + "end_line": 6036, + "section": "Code spans" + }, + { + "markdown": "``\n", + "html": "

                  <a href="">`

                  \n", + "example": 343, + "start_line": 6042, + "end_line": 6046, + "section": "Code spans" + }, + { + "markdown": "
                  `\n", + "html": "

                  `

                  \n", + "example": 344, + "start_line": 6051, + "end_line": 6055, + "section": "Code spans" + }, + { + "markdown": "``\n", + "html": "

                  <http://foo.bar.baz>`

                  \n", + "example": 345, + "start_line": 6060, + "end_line": 6064, + "section": "Code spans" + }, + { + "markdown": "`\n", + "html": "

                  http://foo.bar.`baz`

                  \n", + "example": 346, + "start_line": 6069, + "end_line": 6073, + "section": "Code spans" + }, + { + "markdown": "```foo``\n", + "html": "

                  ```foo``

                  \n", + "example": 347, + "start_line": 6079, + "end_line": 6083, + "section": "Code spans" + }, + { + "markdown": "`foo\n", + "html": "

                  `foo

                  \n", + "example": 348, + "start_line": 6086, + "end_line": 6090, + "section": "Code spans" + }, + { + "markdown": "`foo``bar``\n", + "html": "

                  `foobar

                  \n", + "example": 349, + "start_line": 6095, + "end_line": 6099, + "section": "Code spans" + }, + { + "markdown": "*foo bar*\n", + "html": "

                  foo bar

                  \n", + "example": 350, + "start_line": 6312, + "end_line": 6316, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "a * foo bar*\n", + "html": "

                  a * foo bar*

                  \n", + "example": 351, + "start_line": 6322, + "end_line": 6326, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "a*\"foo\"*\n", + "html": "

                  a*"foo"*

                  \n", + "example": 352, + "start_line": 6333, + "end_line": 6337, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "* a *\n", + "html": "

                  * a *

                  \n", + "example": 353, + "start_line": 6342, + "end_line": 6346, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo*bar*\n", + "html": "

                  foobar

                  \n", + "example": 354, + "start_line": 6351, + "end_line": 6355, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "5*6*78\n", + "html": "

                  5678

                  \n", + "example": 355, + "start_line": 6358, + "end_line": 6362, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_foo bar_\n", + "html": "

                  foo bar

                  \n", + "example": 356, + "start_line": 6367, + "end_line": 6371, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_ foo bar_\n", + "html": "

                  _ foo bar_

                  \n", + "example": 357, + "start_line": 6377, + "end_line": 6381, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "a_\"foo\"_\n", + "html": "

                  a_"foo"_

                  \n", + "example": 358, + "start_line": 6387, + "end_line": 6391, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo_bar_\n", + "html": "

                  foo_bar_

                  \n", + "example": 359, + "start_line": 6396, + "end_line": 6400, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "5_6_78\n", + "html": "

                  5_6_78

                  \n", + "example": 360, + "start_line": 6403, + "end_line": 6407, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "пристаням_стремятся_\n", + "html": "

                  пристаням_стремятся_

                  \n", + "example": 361, + "start_line": 6410, + "end_line": 6414, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "aa_\"bb\"_cc\n", + "html": "

                  aa_"bb"_cc

                  \n", + "example": 362, + "start_line": 6420, + "end_line": 6424, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo-_(bar)_\n", + "html": "

                  foo-(bar)

                  \n", + "example": 363, + "start_line": 6431, + "end_line": 6435, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_foo*\n", + "html": "

                  _foo*

                  \n", + "example": 364, + "start_line": 6443, + "end_line": 6447, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo bar *\n", + "html": "

                  *foo bar *

                  \n", + "example": 365, + "start_line": 6453, + "end_line": 6457, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo bar\n*\n", + "html": "

                  *foo bar\n*

                  \n", + "example": 366, + "start_line": 6462, + "end_line": 6468, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*(*foo)\n", + "html": "

                  *(*foo)

                  \n", + "example": 367, + "start_line": 6475, + "end_line": 6479, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*(*foo*)*\n", + "html": "

                  (foo)

                  \n", + "example": 368, + "start_line": 6485, + "end_line": 6489, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo*bar\n", + "html": "

                  foobar

                  \n", + "example": 369, + "start_line": 6494, + "end_line": 6498, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_foo bar _\n", + "html": "

                  _foo bar _

                  \n", + "example": 370, + "start_line": 6507, + "end_line": 6511, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_(_foo)\n", + "html": "

                  _(_foo)

                  \n", + "example": 371, + "start_line": 6517, + "end_line": 6521, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_(_foo_)_\n", + "html": "

                  (foo)

                  \n", + "example": 372, + "start_line": 6526, + "end_line": 6530, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_foo_bar\n", + "html": "

                  _foo_bar

                  \n", + "example": 373, + "start_line": 6535, + "end_line": 6539, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_пристаням_стремятся\n", + "html": "

                  _пристаням_стремятся

                  \n", + "example": 374, + "start_line": 6542, + "end_line": 6546, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_foo_bar_baz_\n", + "html": "

                  foo_bar_baz

                  \n", + "example": 375, + "start_line": 6549, + "end_line": 6553, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_(bar)_.\n", + "html": "

                  (bar).

                  \n", + "example": 376, + "start_line": 6560, + "end_line": 6564, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo bar**\n", + "html": "

                  foo bar

                  \n", + "example": 377, + "start_line": 6569, + "end_line": 6573, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "** foo bar**\n", + "html": "

                  ** foo bar**

                  \n", + "example": 378, + "start_line": 6579, + "end_line": 6583, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "a**\"foo\"**\n", + "html": "

                  a**"foo"**

                  \n", + "example": 379, + "start_line": 6590, + "end_line": 6594, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo**bar**\n", + "html": "

                  foobar

                  \n", + "example": 380, + "start_line": 6599, + "end_line": 6603, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__foo bar__\n", + "html": "

                  foo bar

                  \n", + "example": 381, + "start_line": 6608, + "end_line": 6612, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__ foo bar__\n", + "html": "

                  __ foo bar__

                  \n", + "example": 382, + "start_line": 6618, + "end_line": 6622, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__\nfoo bar__\n", + "html": "

                  __\nfoo bar__

                  \n", + "example": 383, + "start_line": 6626, + "end_line": 6632, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "a__\"foo\"__\n", + "html": "

                  a__"foo"__

                  \n", + "example": 384, + "start_line": 6638, + "end_line": 6642, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo__bar__\n", + "html": "

                  foo__bar__

                  \n", + "example": 385, + "start_line": 6647, + "end_line": 6651, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "5__6__78\n", + "html": "

                  5__6__78

                  \n", + "example": 386, + "start_line": 6654, + "end_line": 6658, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "пристаням__стремятся__\n", + "html": "

                  пристаням__стремятся__

                  \n", + "example": 387, + "start_line": 6661, + "end_line": 6665, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__foo, __bar__, baz__\n", + "html": "

                  foo, bar, baz

                  \n", + "example": 388, + "start_line": 6668, + "end_line": 6672, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo-__(bar)__\n", + "html": "

                  foo-(bar)

                  \n", + "example": 389, + "start_line": 6679, + "end_line": 6683, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo bar **\n", + "html": "

                  **foo bar **

                  \n", + "example": 390, + "start_line": 6692, + "end_line": 6696, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**(**foo)\n", + "html": "

                  **(**foo)

                  \n", + "example": 391, + "start_line": 6705, + "end_line": 6709, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*(**foo**)*\n", + "html": "

                  (foo)

                  \n", + "example": 392, + "start_line": 6715, + "end_line": 6719, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**Gomphocarpus (*Gomphocarpus physocarpus*, syn.\n*Asclepias physocarpa*)**\n", + "html": "

                  Gomphocarpus (Gomphocarpus physocarpus, syn.\nAsclepias physocarpa)

                  \n", + "example": 393, + "start_line": 6722, + "end_line": 6728, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo \"*bar*\" foo**\n", + "html": "

                  foo "bar" foo

                  \n", + "example": 394, + "start_line": 6731, + "end_line": 6735, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo**bar\n", + "html": "

                  foobar

                  \n", + "example": 395, + "start_line": 6740, + "end_line": 6744, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__foo bar __\n", + "html": "

                  __foo bar __

                  \n", + "example": 396, + "start_line": 6752, + "end_line": 6756, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__(__foo)\n", + "html": "

                  __(__foo)

                  \n", + "example": 397, + "start_line": 6762, + "end_line": 6766, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_(__foo__)_\n", + "html": "

                  (foo)

                  \n", + "example": 398, + "start_line": 6772, + "end_line": 6776, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__foo__bar\n", + "html": "

                  __foo__bar

                  \n", + "example": 399, + "start_line": 6781, + "end_line": 6785, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__пристаням__стремятся\n", + "html": "

                  __пристаням__стремятся

                  \n", + "example": 400, + "start_line": 6788, + "end_line": 6792, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__foo__bar__baz__\n", + "html": "

                  foo__bar__baz

                  \n", + "example": 401, + "start_line": 6795, + "end_line": 6799, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__(bar)__.\n", + "html": "

                  (bar).

                  \n", + "example": 402, + "start_line": 6806, + "end_line": 6810, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo [bar](/url)*\n", + "html": "

                  foo bar

                  \n", + "example": 403, + "start_line": 6818, + "end_line": 6822, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo\nbar*\n", + "html": "

                  foo\nbar

                  \n", + "example": 404, + "start_line": 6825, + "end_line": 6831, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_foo __bar__ baz_\n", + "html": "

                  foo bar baz

                  \n", + "example": 405, + "start_line": 6837, + "end_line": 6841, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_foo _bar_ baz_\n", + "html": "

                  foo bar baz

                  \n", + "example": 406, + "start_line": 6844, + "end_line": 6848, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__foo_ bar_\n", + "html": "

                  foo bar

                  \n", + "example": 407, + "start_line": 6851, + "end_line": 6855, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo *bar**\n", + "html": "

                  foo bar

                  \n", + "example": 408, + "start_line": 6858, + "end_line": 6862, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo **bar** baz*\n", + "html": "

                  foo bar baz

                  \n", + "example": 409, + "start_line": 6865, + "end_line": 6869, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo**bar**baz*\n", + "html": "

                  foobarbaz

                  \n", + "example": 410, + "start_line": 6871, + "end_line": 6875, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo**bar*\n", + "html": "

                  foo**bar

                  \n", + "example": 411, + "start_line": 6895, + "end_line": 6899, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "***foo** bar*\n", + "html": "

                  foo bar

                  \n", + "example": 412, + "start_line": 6908, + "end_line": 6912, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo **bar***\n", + "html": "

                  foo bar

                  \n", + "example": 413, + "start_line": 6915, + "end_line": 6919, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo**bar***\n", + "html": "

                  foobar

                  \n", + "example": 414, + "start_line": 6922, + "end_line": 6926, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo***bar***baz\n", + "html": "

                  foobarbaz

                  \n", + "example": 415, + "start_line": 6933, + "end_line": 6937, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo******bar*********baz\n", + "html": "

                  foobar***baz

                  \n", + "example": 416, + "start_line": 6939, + "end_line": 6943, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo **bar *baz* bim** bop*\n", + "html": "

                  foo bar baz bim bop

                  \n", + "example": 417, + "start_line": 6948, + "end_line": 6952, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo [*bar*](/url)*\n", + "html": "

                  foo bar

                  \n", + "example": 418, + "start_line": 6955, + "end_line": 6959, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "** is not an empty emphasis\n", + "html": "

                  ** is not an empty emphasis

                  \n", + "example": 419, + "start_line": 6964, + "end_line": 6968, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**** is not an empty strong emphasis\n", + "html": "

                  **** is not an empty strong emphasis

                  \n", + "example": 420, + "start_line": 6971, + "end_line": 6975, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo [bar](/url)**\n", + "html": "

                  foo bar

                  \n", + "example": 421, + "start_line": 6984, + "end_line": 6988, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo\nbar**\n", + "html": "

                  foo\nbar

                  \n", + "example": 422, + "start_line": 6991, + "end_line": 6997, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__foo _bar_ baz__\n", + "html": "

                  foo bar baz

                  \n", + "example": 423, + "start_line": 7003, + "end_line": 7007, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__foo __bar__ baz__\n", + "html": "

                  foo bar baz

                  \n", + "example": 424, + "start_line": 7010, + "end_line": 7014, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "____foo__ bar__\n", + "html": "

                  foo bar

                  \n", + "example": 425, + "start_line": 7017, + "end_line": 7021, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo **bar****\n", + "html": "

                  foo bar

                  \n", + "example": 426, + "start_line": 7024, + "end_line": 7028, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo *bar* baz**\n", + "html": "

                  foo bar baz

                  \n", + "example": 427, + "start_line": 7031, + "end_line": 7035, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo*bar*baz**\n", + "html": "

                  foobarbaz

                  \n", + "example": 428, + "start_line": 7038, + "end_line": 7042, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "***foo* bar**\n", + "html": "

                  foo bar

                  \n", + "example": 429, + "start_line": 7045, + "end_line": 7049, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo *bar***\n", + "html": "

                  foo bar

                  \n", + "example": 430, + "start_line": 7052, + "end_line": 7056, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo *bar **baz**\nbim* bop**\n", + "html": "

                  foo bar baz\nbim bop

                  \n", + "example": 431, + "start_line": 7061, + "end_line": 7067, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo [*bar*](/url)**\n", + "html": "

                  foo bar

                  \n", + "example": 432, + "start_line": 7070, + "end_line": 7074, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__ is not an empty emphasis\n", + "html": "

                  __ is not an empty emphasis

                  \n", + "example": 433, + "start_line": 7079, + "end_line": 7083, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "____ is not an empty strong emphasis\n", + "html": "

                  ____ is not an empty strong emphasis

                  \n", + "example": 434, + "start_line": 7086, + "end_line": 7090, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo ***\n", + "html": "

                  foo ***

                  \n", + "example": 435, + "start_line": 7096, + "end_line": 7100, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo *\\**\n", + "html": "

                  foo *

                  \n", + "example": 436, + "start_line": 7103, + "end_line": 7107, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo *_*\n", + "html": "

                  foo _

                  \n", + "example": 437, + "start_line": 7110, + "end_line": 7114, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo *****\n", + "html": "

                  foo *****

                  \n", + "example": 438, + "start_line": 7117, + "end_line": 7121, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo **\\***\n", + "html": "

                  foo *

                  \n", + "example": 439, + "start_line": 7124, + "end_line": 7128, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo **_**\n", + "html": "

                  foo _

                  \n", + "example": 440, + "start_line": 7131, + "end_line": 7135, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo*\n", + "html": "

                  *foo

                  \n", + "example": 441, + "start_line": 7142, + "end_line": 7146, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo**\n", + "html": "

                  foo*

                  \n", + "example": 442, + "start_line": 7149, + "end_line": 7153, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "***foo**\n", + "html": "

                  *foo

                  \n", + "example": 443, + "start_line": 7156, + "end_line": 7160, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "****foo*\n", + "html": "

                  ***foo

                  \n", + "example": 444, + "start_line": 7163, + "end_line": 7167, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo***\n", + "html": "

                  foo*

                  \n", + "example": 445, + "start_line": 7170, + "end_line": 7174, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo****\n", + "html": "

                  foo***

                  \n", + "example": 446, + "start_line": 7177, + "end_line": 7181, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo ___\n", + "html": "

                  foo ___

                  \n", + "example": 447, + "start_line": 7187, + "end_line": 7191, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo _\\__\n", + "html": "

                  foo _

                  \n", + "example": 448, + "start_line": 7194, + "end_line": 7198, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo _*_\n", + "html": "

                  foo *

                  \n", + "example": 449, + "start_line": 7201, + "end_line": 7205, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo _____\n", + "html": "

                  foo _____

                  \n", + "example": 450, + "start_line": 7208, + "end_line": 7212, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo __\\___\n", + "html": "

                  foo _

                  \n", + "example": 451, + "start_line": 7215, + "end_line": 7219, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "foo __*__\n", + "html": "

                  foo *

                  \n", + "example": 452, + "start_line": 7222, + "end_line": 7226, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__foo_\n", + "html": "

                  _foo

                  \n", + "example": 453, + "start_line": 7229, + "end_line": 7233, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_foo__\n", + "html": "

                  foo_

                  \n", + "example": 454, + "start_line": 7240, + "end_line": 7244, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "___foo__\n", + "html": "

                  _foo

                  \n", + "example": 455, + "start_line": 7247, + "end_line": 7251, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "____foo_\n", + "html": "

                  ___foo

                  \n", + "example": 456, + "start_line": 7254, + "end_line": 7258, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__foo___\n", + "html": "

                  foo_

                  \n", + "example": 457, + "start_line": 7261, + "end_line": 7265, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_foo____\n", + "html": "

                  foo___

                  \n", + "example": 458, + "start_line": 7268, + "end_line": 7272, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo**\n", + "html": "

                  foo

                  \n", + "example": 459, + "start_line": 7278, + "end_line": 7282, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*_foo_*\n", + "html": "

                  foo

                  \n", + "example": 460, + "start_line": 7285, + "end_line": 7289, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__foo__\n", + "html": "

                  foo

                  \n", + "example": 461, + "start_line": 7292, + "end_line": 7296, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_*foo*_\n", + "html": "

                  foo

                  \n", + "example": 462, + "start_line": 7299, + "end_line": 7303, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "****foo****\n", + "html": "

                  foo

                  \n", + "example": 463, + "start_line": 7309, + "end_line": 7313, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "____foo____\n", + "html": "

                  foo

                  \n", + "example": 464, + "start_line": 7316, + "end_line": 7320, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "******foo******\n", + "html": "

                  foo

                  \n", + "example": 465, + "start_line": 7327, + "end_line": 7331, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "***foo***\n", + "html": "

                  foo

                  \n", + "example": 466, + "start_line": 7336, + "end_line": 7340, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_____foo_____\n", + "html": "

                  foo

                  \n", + "example": 467, + "start_line": 7343, + "end_line": 7347, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo _bar* baz_\n", + "html": "

                  foo _bar baz_

                  \n", + "example": 468, + "start_line": 7352, + "end_line": 7356, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo __bar *baz bim__ bam*\n", + "html": "

                  foo bar *baz bim bam

                  \n", + "example": 469, + "start_line": 7359, + "end_line": 7363, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**foo **bar baz**\n", + "html": "

                  **foo bar baz

                  \n", + "example": 470, + "start_line": 7368, + "end_line": 7372, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*foo *bar baz*\n", + "html": "

                  *foo bar baz

                  \n", + "example": 471, + "start_line": 7375, + "end_line": 7379, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*[bar*](/url)\n", + "html": "

                  *bar*

                  \n", + "example": 472, + "start_line": 7384, + "end_line": 7388, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_foo [bar_](/url)\n", + "html": "

                  _foo bar_

                  \n", + "example": 473, + "start_line": 7391, + "end_line": 7395, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*\n", + "html": "

                  *

                  \n", + "example": 474, + "start_line": 7398, + "end_line": 7402, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**\n", + "html": "

                  **

                  \n", + "example": 475, + "start_line": 7405, + "end_line": 7409, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__\n", + "html": "

                  __

                  \n", + "example": 476, + "start_line": 7412, + "end_line": 7416, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "*a `*`*\n", + "html": "

                  a *

                  \n", + "example": 477, + "start_line": 7419, + "end_line": 7423, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "_a `_`_\n", + "html": "

                  a _

                  \n", + "example": 478, + "start_line": 7426, + "end_line": 7430, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "**a\n", + "html": "

                  **ahttp://foo.bar/?q=**

                  \n", + "example": 479, + "start_line": 7433, + "end_line": 7437, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "__a\n", + "html": "

                  __ahttp://foo.bar/?q=__

                  \n", + "example": 480, + "start_line": 7440, + "end_line": 7444, + "section": "Emphasis and strong emphasis" + }, + { + "markdown": "[link](/uri \"title\")\n", + "html": "

                  link

                  \n", + "example": 481, + "start_line": 7528, + "end_line": 7532, + "section": "Links" + }, + { + "markdown": "[link](/uri)\n", + "html": "

                  link

                  \n", + "example": 482, + "start_line": 7538, + "end_line": 7542, + "section": "Links" + }, + { + "markdown": "[](./target.md)\n", + "html": "

                  \n", + "example": 483, + "start_line": 7544, + "end_line": 7548, + "section": "Links" + }, + { + "markdown": "[link]()\n", + "html": "

                  link

                  \n", + "example": 484, + "start_line": 7551, + "end_line": 7555, + "section": "Links" + }, + { + "markdown": "[link](<>)\n", + "html": "

                  link

                  \n", + "example": 485, + "start_line": 7558, + "end_line": 7562, + "section": "Links" + }, + { + "markdown": "[]()\n", + "html": "

                  \n", + "example": 486, + "start_line": 7565, + "end_line": 7569, + "section": "Links" + }, + { + "markdown": "[link](/my uri)\n", + "html": "

                  [link](/my uri)

                  \n", + "example": 487, + "start_line": 7574, + "end_line": 7578, + "section": "Links" + }, + { + "markdown": "[link](
                  )\n", + "html": "

                  link

                  \n", + "example": 488, + "start_line": 7580, + "end_line": 7584, + "section": "Links" + }, + { + "markdown": "[link](foo\nbar)\n", + "html": "

                  [link](foo\nbar)

                  \n", + "example": 489, + "start_line": 7589, + "end_line": 7595, + "section": "Links" + }, + { + "markdown": "[link]()\n", + "html": "

                  [link]()

                  \n", + "example": 490, + "start_line": 7597, + "end_line": 7603, + "section": "Links" + }, + { + "markdown": "[a]()\n", + "html": "

                  a

                  \n", + "example": 491, + "start_line": 7608, + "end_line": 7612, + "section": "Links" + }, + { + "markdown": "[link]()\n", + "html": "

                  [link](<foo>)

                  \n", + "example": 492, + "start_line": 7616, + "end_line": 7620, + "section": "Links" + }, + { + "markdown": "[a](\n[a](c)\n", + "html": "

                  [a](<b)c\n[a](<b)c>\n[a](c)

                  \n", + "example": 493, + "start_line": 7625, + "end_line": 7633, + "section": "Links" + }, + { + "markdown": "[link](\\(foo\\))\n", + "html": "

                  link

                  \n", + "example": 494, + "start_line": 7637, + "end_line": 7641, + "section": "Links" + }, + { + "markdown": "[link](foo(and(bar)))\n", + "html": "

                  link

                  \n", + "example": 495, + "start_line": 7646, + "end_line": 7650, + "section": "Links" + }, + { + "markdown": "[link](foo(and(bar))\n", + "html": "

                  [link](foo(and(bar))

                  \n", + "example": 496, + "start_line": 7655, + "end_line": 7659, + "section": "Links" + }, + { + "markdown": "[link](foo\\(and\\(bar\\))\n", + "html": "

                  link

                  \n", + "example": 497, + "start_line": 7662, + "end_line": 7666, + "section": "Links" + }, + { + "markdown": "[link]()\n", + "html": "

                  link

                  \n", + "example": 498, + "start_line": 7669, + "end_line": 7673, + "section": "Links" + }, + { + "markdown": "[link](foo\\)\\:)\n", + "html": "

                  link

                  \n", + "example": 499, + "start_line": 7679, + "end_line": 7683, + "section": "Links" + }, + { + "markdown": "[link](#fragment)\n\n[link](http://example.com#fragment)\n\n[link](http://example.com?foo=3#frag)\n", + "html": "

                  link

                  \n

                  link

                  \n

                  link

                  \n", + "example": 500, + "start_line": 7688, + "end_line": 7698, + "section": "Links" + }, + { + "markdown": "[link](foo\\bar)\n", + "html": "

                  link

                  \n", + "example": 501, + "start_line": 7704, + "end_line": 7708, + "section": "Links" + }, + { + "markdown": "[link](foo%20bä)\n", + "html": "

                  link

                  \n", + "example": 502, + "start_line": 7720, + "end_line": 7724, + "section": "Links" + }, + { + "markdown": "[link](\"title\")\n", + "html": "

                  link

                  \n", + "example": 503, + "start_line": 7731, + "end_line": 7735, + "section": "Links" + }, + { + "markdown": "[link](/url \"title\")\n[link](/url 'title')\n[link](/url (title))\n", + "html": "

                  link\nlink\nlink

                  \n", + "example": 504, + "start_line": 7740, + "end_line": 7748, + "section": "Links" + }, + { + "markdown": "[link](/url \"title \\\""\")\n", + "html": "

                  link

                  \n", + "example": 505, + "start_line": 7754, + "end_line": 7758, + "section": "Links" + }, + { + "markdown": "[link](/url \"title\")\n", + "html": "

                  link

                  \n", + "example": 506, + "start_line": 7765, + "end_line": 7769, + "section": "Links" + }, + { + "markdown": "[link](/url \"title \"and\" title\")\n", + "html": "

                  [link](/url "title "and" title")

                  \n", + "example": 507, + "start_line": 7774, + "end_line": 7778, + "section": "Links" + }, + { + "markdown": "[link](/url 'title \"and\" title')\n", + "html": "

                  link

                  \n", + "example": 508, + "start_line": 7783, + "end_line": 7787, + "section": "Links" + }, + { + "markdown": "[link]( /uri\n \"title\" )\n", + "html": "

                  link

                  \n", + "example": 509, + "start_line": 7808, + "end_line": 7813, + "section": "Links" + }, + { + "markdown": "[link] (/uri)\n", + "html": "

                  [link] (/uri)

                  \n", + "example": 510, + "start_line": 7819, + "end_line": 7823, + "section": "Links" + }, + { + "markdown": "[link [foo [bar]]](/uri)\n", + "html": "

                  link [foo [bar]]

                  \n", + "example": 511, + "start_line": 7829, + "end_line": 7833, + "section": "Links" + }, + { + "markdown": "[link] bar](/uri)\n", + "html": "

                  [link] bar](/uri)

                  \n", + "example": 512, + "start_line": 7836, + "end_line": 7840, + "section": "Links" + }, + { + "markdown": "[link [bar](/uri)\n", + "html": "

                  [link bar

                  \n", + "example": 513, + "start_line": 7843, + "end_line": 7847, + "section": "Links" + }, + { + "markdown": "[link \\[bar](/uri)\n", + "html": "

                  link [bar

                  \n", + "example": 514, + "start_line": 7850, + "end_line": 7854, + "section": "Links" + }, + { + "markdown": "[link *foo **bar** `#`*](/uri)\n", + "html": "

                  link foo bar #

                  \n", + "example": 515, + "start_line": 7859, + "end_line": 7863, + "section": "Links" + }, + { + "markdown": "[![moon](moon.jpg)](/uri)\n", + "html": "

                  \"moon\"

                  \n", + "example": 516, + "start_line": 7866, + "end_line": 7870, + "section": "Links" + }, + { + "markdown": "[foo [bar](/uri)](/uri)\n", + "html": "

                  [foo bar](/uri)

                  \n", + "example": 517, + "start_line": 7875, + "end_line": 7879, + "section": "Links" + }, + { + "markdown": "[foo *[bar [baz](/uri)](/uri)*](/uri)\n", + "html": "

                  [foo [bar baz](/uri)](/uri)

                  \n", + "example": 518, + "start_line": 7882, + "end_line": 7886, + "section": "Links" + }, + { + "markdown": "![[[foo](uri1)](uri2)](uri3)\n", + "html": "

                  \"[foo](uri2)\"

                  \n", + "example": 519, + "start_line": 7889, + "end_line": 7893, + "section": "Links" + }, + { + "markdown": "*[foo*](/uri)\n", + "html": "

                  *foo*

                  \n", + "example": 520, + "start_line": 7899, + "end_line": 7903, + "section": "Links" + }, + { + "markdown": "[foo *bar](baz*)\n", + "html": "

                  foo *bar

                  \n", + "example": 521, + "start_line": 7906, + "end_line": 7910, + "section": "Links" + }, + { + "markdown": "*foo [bar* baz]\n", + "html": "

                  foo [bar baz]

                  \n", + "example": 522, + "start_line": 7916, + "end_line": 7920, + "section": "Links" + }, + { + "markdown": "[foo \n", + "html": "

                  [foo

                  \n", + "example": 523, + "start_line": 7926, + "end_line": 7930, + "section": "Links" + }, + { + "markdown": "[foo`](/uri)`\n", + "html": "

                  [foo](/uri)

                  \n", + "example": 524, + "start_line": 7933, + "end_line": 7937, + "section": "Links" + }, + { + "markdown": "[foo\n", + "html": "

                  [foohttp://example.com/?search=](uri)

                  \n", + "example": 525, + "start_line": 7940, + "end_line": 7944, + "section": "Links" + }, + { + "markdown": "[foo][bar]\n\n[bar]: /url \"title\"\n", + "html": "

                  foo

                  \n", + "example": 526, + "start_line": 7978, + "end_line": 7984, + "section": "Links" + }, + { + "markdown": "[link [foo [bar]]][ref]\n\n[ref]: /uri\n", + "html": "

                  link [foo [bar]]

                  \n", + "example": 527, + "start_line": 7993, + "end_line": 7999, + "section": "Links" + }, + { + "markdown": "[link \\[bar][ref]\n\n[ref]: /uri\n", + "html": "

                  link [bar

                  \n", + "example": 528, + "start_line": 8002, + "end_line": 8008, + "section": "Links" + }, + { + "markdown": "[link *foo **bar** `#`*][ref]\n\n[ref]: /uri\n", + "html": "

                  link foo bar #

                  \n", + "example": 529, + "start_line": 8013, + "end_line": 8019, + "section": "Links" + }, + { + "markdown": "[![moon](moon.jpg)][ref]\n\n[ref]: /uri\n", + "html": "

                  \"moon\"

                  \n", + "example": 530, + "start_line": 8022, + "end_line": 8028, + "section": "Links" + }, + { + "markdown": "[foo [bar](/uri)][ref]\n\n[ref]: /uri\n", + "html": "

                  [foo bar]ref

                  \n", + "example": 531, + "start_line": 8033, + "end_line": 8039, + "section": "Links" + }, + { + "markdown": "[foo *bar [baz][ref]*][ref]\n\n[ref]: /uri\n", + "html": "

                  [foo bar baz]ref

                  \n", + "example": 532, + "start_line": 8042, + "end_line": 8048, + "section": "Links" + }, + { + "markdown": "*[foo*][ref]\n\n[ref]: /uri\n", + "html": "

                  *foo*

                  \n", + "example": 533, + "start_line": 8057, + "end_line": 8063, + "section": "Links" + }, + { + "markdown": "[foo *bar][ref]*\n\n[ref]: /uri\n", + "html": "

                  foo *bar*

                  \n", + "example": 534, + "start_line": 8066, + "end_line": 8072, + "section": "Links" + }, + { + "markdown": "[foo \n\n[ref]: /uri\n", + "html": "

                  [foo

                  \n", + "example": 535, + "start_line": 8078, + "end_line": 8084, + "section": "Links" + }, + { + "markdown": "[foo`][ref]`\n\n[ref]: /uri\n", + "html": "

                  [foo][ref]

                  \n", + "example": 536, + "start_line": 8087, + "end_line": 8093, + "section": "Links" + }, + { + "markdown": "[foo\n\n[ref]: /uri\n", + "html": "

                  [foohttp://example.com/?search=][ref]

                  \n", + "example": 537, + "start_line": 8096, + "end_line": 8102, + "section": "Links" + }, + { + "markdown": "[foo][BaR]\n\n[bar]: /url \"title\"\n", + "html": "

                  foo

                  \n", + "example": 538, + "start_line": 8107, + "end_line": 8113, + "section": "Links" + }, + { + "markdown": "[ẞ]\n\n[SS]: /url\n", + "html": "

                  \n", + "example": 539, + "start_line": 8118, + "end_line": 8124, + "section": "Links" + }, + { + "markdown": "[Foo\n bar]: /url\n\n[Baz][Foo bar]\n", + "html": "

                  Baz

                  \n", + "example": 540, + "start_line": 8130, + "end_line": 8137, + "section": "Links" + }, + { + "markdown": "[foo] [bar]\n\n[bar]: /url \"title\"\n", + "html": "

                  [foo] bar

                  \n", + "example": 541, + "start_line": 8143, + "end_line": 8149, + "section": "Links" + }, + { + "markdown": "[foo]\n[bar]\n\n[bar]: /url \"title\"\n", + "html": "

                  [foo]\nbar

                  \n", + "example": 542, + "start_line": 8152, + "end_line": 8160, + "section": "Links" + }, + { + "markdown": "[foo]: /url1\n\n[foo]: /url2\n\n[bar][foo]\n", + "html": "

                  bar

                  \n", + "example": 543, + "start_line": 8193, + "end_line": 8201, + "section": "Links" + }, + { + "markdown": "[bar][foo\\!]\n\n[foo!]: /url\n", + "html": "

                  [bar][foo!]

                  \n", + "example": 544, + "start_line": 8208, + "end_line": 8214, + "section": "Links" + }, + { + "markdown": "[foo][ref[]\n\n[ref[]: /uri\n", + "html": "

                  [foo][ref[]

                  \n

                  [ref[]: /uri

                  \n", + "example": 545, + "start_line": 8220, + "end_line": 8227, + "section": "Links" + }, + { + "markdown": "[foo][ref[bar]]\n\n[ref[bar]]: /uri\n", + "html": "

                  [foo][ref[bar]]

                  \n

                  [ref[bar]]: /uri

                  \n", + "example": 546, + "start_line": 8230, + "end_line": 8237, + "section": "Links" + }, + { + "markdown": "[[[foo]]]\n\n[[[foo]]]: /url\n", + "html": "

                  [[[foo]]]

                  \n

                  [[[foo]]]: /url

                  \n", + "example": 547, + "start_line": 8240, + "end_line": 8247, + "section": "Links" + }, + { + "markdown": "[foo][ref\\[]\n\n[ref\\[]: /uri\n", + "html": "

                  foo

                  \n", + "example": 548, + "start_line": 8250, + "end_line": 8256, + "section": "Links" + }, + { + "markdown": "[bar\\\\]: /uri\n\n[bar\\\\]\n", + "html": "

                  bar\\

                  \n", + "example": 549, + "start_line": 8261, + "end_line": 8267, + "section": "Links" + }, + { + "markdown": "[]\n\n[]: /uri\n", + "html": "

                  []

                  \n

                  []: /uri

                  \n", + "example": 550, + "start_line": 8273, + "end_line": 8280, + "section": "Links" + }, + { + "markdown": "[\n ]\n\n[\n ]: /uri\n", + "html": "

                  [\n]

                  \n

                  [\n]: /uri

                  \n", + "example": 551, + "start_line": 8283, + "end_line": 8294, + "section": "Links" + }, + { + "markdown": "[foo][]\n\n[foo]: /url \"title\"\n", + "html": "

                  foo

                  \n", + "example": 552, + "start_line": 8306, + "end_line": 8312, + "section": "Links" + }, + { + "markdown": "[*foo* bar][]\n\n[*foo* bar]: /url \"title\"\n", + "html": "

                  foo bar

                  \n", + "example": 553, + "start_line": 8315, + "end_line": 8321, + "section": "Links" + }, + { + "markdown": "[Foo][]\n\n[foo]: /url \"title\"\n", + "html": "

                  Foo

                  \n", + "example": 554, + "start_line": 8326, + "end_line": 8332, + "section": "Links" + }, + { + "markdown": "[foo] \n[]\n\n[foo]: /url \"title\"\n", + "html": "

                  foo\n[]

                  \n", + "example": 555, + "start_line": 8339, + "end_line": 8347, + "section": "Links" + }, + { + "markdown": "[foo]\n\n[foo]: /url \"title\"\n", + "html": "

                  foo

                  \n", + "example": 556, + "start_line": 8359, + "end_line": 8365, + "section": "Links" + }, + { + "markdown": "[*foo* bar]\n\n[*foo* bar]: /url \"title\"\n", + "html": "

                  foo bar

                  \n", + "example": 557, + "start_line": 8368, + "end_line": 8374, + "section": "Links" + }, + { + "markdown": "[[*foo* bar]]\n\n[*foo* bar]: /url \"title\"\n", + "html": "

                  [foo bar]

                  \n", + "example": 558, + "start_line": 8377, + "end_line": 8383, + "section": "Links" + }, + { + "markdown": "[[bar [foo]\n\n[foo]: /url\n", + "html": "

                  [[bar foo

                  \n", + "example": 559, + "start_line": 8386, + "end_line": 8392, + "section": "Links" + }, + { + "markdown": "[Foo]\n\n[foo]: /url \"title\"\n", + "html": "

                  Foo

                  \n", + "example": 560, + "start_line": 8397, + "end_line": 8403, + "section": "Links" + }, + { + "markdown": "[foo] bar\n\n[foo]: /url\n", + "html": "

                  foo bar

                  \n", + "example": 561, + "start_line": 8408, + "end_line": 8414, + "section": "Links" + }, + { + "markdown": "\\[foo]\n\n[foo]: /url \"title\"\n", + "html": "

                  [foo]

                  \n", + "example": 562, + "start_line": 8420, + "end_line": 8426, + "section": "Links" + }, + { + "markdown": "[foo*]: /url\n\n*[foo*]\n", + "html": "

                  *foo*

                  \n", + "example": 563, + "start_line": 8432, + "end_line": 8438, + "section": "Links" + }, + { + "markdown": "[foo][bar]\n\n[foo]: /url1\n[bar]: /url2\n", + "html": "

                  foo

                  \n", + "example": 564, + "start_line": 8444, + "end_line": 8451, + "section": "Links" + }, + { + "markdown": "[foo][]\n\n[foo]: /url1\n", + "html": "

                  foo

                  \n", + "example": 565, + "start_line": 8453, + "end_line": 8459, + "section": "Links" + }, + { + "markdown": "[foo]()\n\n[foo]: /url1\n", + "html": "

                  foo

                  \n", + "example": 566, + "start_line": 8463, + "end_line": 8469, + "section": "Links" + }, + { + "markdown": "[foo](not a link)\n\n[foo]: /url1\n", + "html": "

                  foo(not a link)

                  \n", + "example": 567, + "start_line": 8471, + "end_line": 8477, + "section": "Links" + }, + { + "markdown": "[foo][bar][baz]\n\n[baz]: /url\n", + "html": "

                  [foo]bar

                  \n", + "example": 568, + "start_line": 8482, + "end_line": 8488, + "section": "Links" + }, + { + "markdown": "[foo][bar][baz]\n\n[baz]: /url1\n[bar]: /url2\n", + "html": "

                  foobaz

                  \n", + "example": 569, + "start_line": 8494, + "end_line": 8501, + "section": "Links" + }, + { + "markdown": "[foo][bar][baz]\n\n[baz]: /url1\n[foo]: /url2\n", + "html": "

                  [foo]bar

                  \n", + "example": 570, + "start_line": 8507, + "end_line": 8514, + "section": "Links" + }, + { + "markdown": "![foo](/url \"title\")\n", + "html": "

                  \"foo\"

                  \n", + "example": 571, + "start_line": 8530, + "end_line": 8534, + "section": "Images" + }, + { + "markdown": "![foo *bar*]\n\n[foo *bar*]: train.jpg \"train & tracks\"\n", + "html": "

                  \"foo

                  \n", + "example": 572, + "start_line": 8537, + "end_line": 8543, + "section": "Images" + }, + { + "markdown": "![foo ![bar](/url)](/url2)\n", + "html": "

                  \"foo

                  \n", + "example": 573, + "start_line": 8546, + "end_line": 8550, + "section": "Images" + }, + { + "markdown": "![foo [bar](/url)](/url2)\n", + "html": "

                  \"foo

                  \n", + "example": 574, + "start_line": 8553, + "end_line": 8557, + "section": "Images" + }, + { + "markdown": "![foo *bar*][]\n\n[foo *bar*]: train.jpg \"train & tracks\"\n", + "html": "

                  \"foo

                  \n", + "example": 575, + "start_line": 8567, + "end_line": 8573, + "section": "Images" + }, + { + "markdown": "![foo *bar*][foobar]\n\n[FOOBAR]: train.jpg \"train & tracks\"\n", + "html": "

                  \"foo

                  \n", + "example": 576, + "start_line": 8576, + "end_line": 8582, + "section": "Images" + }, + { + "markdown": "![foo](train.jpg)\n", + "html": "

                  \"foo\"

                  \n", + "example": 577, + "start_line": 8585, + "end_line": 8589, + "section": "Images" + }, + { + "markdown": "My ![foo bar](/path/to/train.jpg \"title\" )\n", + "html": "

                  My \"foo

                  \n", + "example": 578, + "start_line": 8592, + "end_line": 8596, + "section": "Images" + }, + { + "markdown": "![foo]()\n", + "html": "

                  \"foo\"

                  \n", + "example": 579, + "start_line": 8599, + "end_line": 8603, + "section": "Images" + }, + { + "markdown": "![](/url)\n", + "html": "

                  \"\"

                  \n", + "example": 580, + "start_line": 8606, + "end_line": 8610, + "section": "Images" + }, + { + "markdown": "![foo][bar]\n\n[bar]: /url\n", + "html": "

                  \"foo\"

                  \n", + "example": 581, + "start_line": 8615, + "end_line": 8621, + "section": "Images" + }, + { + "markdown": "![foo][bar]\n\n[BAR]: /url\n", + "html": "

                  \"foo\"

                  \n", + "example": 582, + "start_line": 8624, + "end_line": 8630, + "section": "Images" + }, + { + "markdown": "![foo][]\n\n[foo]: /url \"title\"\n", + "html": "

                  \"foo\"

                  \n", + "example": 583, + "start_line": 8635, + "end_line": 8641, + "section": "Images" + }, + { + "markdown": "![*foo* bar][]\n\n[*foo* bar]: /url \"title\"\n", + "html": "

                  \"foo

                  \n", + "example": 584, + "start_line": 8644, + "end_line": 8650, + "section": "Images" + }, + { + "markdown": "![Foo][]\n\n[foo]: /url \"title\"\n", + "html": "

                  \"Foo\"

                  \n", + "example": 585, + "start_line": 8655, + "end_line": 8661, + "section": "Images" + }, + { + "markdown": "![foo] \n[]\n\n[foo]: /url \"title\"\n", + "html": "

                  \"foo\"\n[]

                  \n", + "example": 586, + "start_line": 8667, + "end_line": 8675, + "section": "Images" + }, + { + "markdown": "![foo]\n\n[foo]: /url \"title\"\n", + "html": "

                  \"foo\"

                  \n", + "example": 587, + "start_line": 8680, + "end_line": 8686, + "section": "Images" + }, + { + "markdown": "![*foo* bar]\n\n[*foo* bar]: /url \"title\"\n", + "html": "

                  \"foo

                  \n", + "example": 588, + "start_line": 8689, + "end_line": 8695, + "section": "Images" + }, + { + "markdown": "![[foo]]\n\n[[foo]]: /url \"title\"\n", + "html": "

                  ![[foo]]

                  \n

                  [[foo]]: /url "title"

                  \n", + "example": 589, + "start_line": 8700, + "end_line": 8707, + "section": "Images" + }, + { + "markdown": "![Foo]\n\n[foo]: /url \"title\"\n", + "html": "

                  \"Foo\"

                  \n", + "example": 590, + "start_line": 8712, + "end_line": 8718, + "section": "Images" + }, + { + "markdown": "!\\[foo]\n\n[foo]: /url \"title\"\n", + "html": "

                  ![foo]

                  \n", + "example": 591, + "start_line": 8724, + "end_line": 8730, + "section": "Images" + }, + { + "markdown": "\\![foo]\n\n[foo]: /url \"title\"\n", + "html": "

                  !foo

                  \n", + "example": 592, + "start_line": 8736, + "end_line": 8742, + "section": "Images" + }, + { + "markdown": "\n", + "html": "

                  http://foo.bar.baz

                  \n", + "example": 593, + "start_line": 8769, + "end_line": 8773, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  http://foo.bar.baz/test?q=hello&id=22&boolean

                  \n", + "example": 594, + "start_line": 8776, + "end_line": 8780, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  irc://foo.bar:2233/baz

                  \n", + "example": 595, + "start_line": 8783, + "end_line": 8787, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  MAILTO:FOO@BAR.BAZ

                  \n", + "example": 596, + "start_line": 8792, + "end_line": 8796, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  a+b+c:d

                  \n", + "example": 597, + "start_line": 8804, + "end_line": 8808, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  made-up-scheme://foo,bar

                  \n", + "example": 598, + "start_line": 8811, + "end_line": 8815, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  http://../

                  \n", + "example": 599, + "start_line": 8818, + "end_line": 8822, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  localhost:5001/foo

                  \n", + "example": 600, + "start_line": 8825, + "end_line": 8829, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  <http://foo.bar/baz bim>

                  \n", + "example": 601, + "start_line": 8834, + "end_line": 8838, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  http://example.com/\\[\\

                  \n", + "example": 602, + "start_line": 8843, + "end_line": 8847, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  foo@bar.example.com

                  \n", + "example": 603, + "start_line": 8865, + "end_line": 8869, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  foo+special@Bar.baz-bar0.com

                  \n", + "example": 604, + "start_line": 8872, + "end_line": 8876, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  <foo+@bar.example.com>

                  \n", + "example": 605, + "start_line": 8881, + "end_line": 8885, + "section": "Autolinks" + }, + { + "markdown": "<>\n", + "html": "

                  <>

                  \n", + "example": 606, + "start_line": 8890, + "end_line": 8894, + "section": "Autolinks" + }, + { + "markdown": "< http://foo.bar >\n", + "html": "

                  < http://foo.bar >

                  \n", + "example": 607, + "start_line": 8897, + "end_line": 8901, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  <m:abc>

                  \n", + "example": 608, + "start_line": 8904, + "end_line": 8908, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  <foo.bar.baz>

                  \n", + "example": 609, + "start_line": 8911, + "end_line": 8915, + "section": "Autolinks" + }, + { + "markdown": "http://example.com\n", + "html": "

                  http://example.com

                  \n", + "example": 610, + "start_line": 8918, + "end_line": 8922, + "section": "Autolinks" + }, + { + "markdown": "foo@bar.example.com\n", + "html": "

                  foo@bar.example.com

                  \n", + "example": 611, + "start_line": 8925, + "end_line": 8929, + "section": "Autolinks" + }, + { + "markdown": "\n", + "html": "

                  \n", + "example": 612, + "start_line": 9006, + "end_line": 9010, + "section": "Raw HTML" + }, + { + "markdown": "\n", + "html": "

                  \n", + "example": 613, + "start_line": 9015, + "end_line": 9019, + "section": "Raw HTML" + }, + { + "markdown": "\n", + "html": "

                  \n", + "example": 614, + "start_line": 9024, + "end_line": 9030, + "section": "Raw HTML" + }, + { + "markdown": "\n", + "html": "

                  \n", + "example": 615, + "start_line": 9035, + "end_line": 9041, + "section": "Raw HTML" + }, + { + "markdown": "Foo \n", + "html": "

                  Foo

                  \n", + "example": 616, + "start_line": 9046, + "end_line": 9050, + "section": "Raw HTML" + }, + { + "markdown": "<33> <__>\n", + "html": "

                  <33> <__>

                  \n", + "example": 617, + "start_line": 9055, + "end_line": 9059, + "section": "Raw HTML" + }, + { + "markdown": "
                  \n", + "html": "

                  <a h*#ref="hi">

                  \n", + "example": 618, + "start_line": 9064, + "end_line": 9068, + "section": "Raw HTML" + }, + { + "markdown": "
                  \n", + "html": "

                  <a href="hi'> <a href=hi'>

                  \n", + "example": 619, + "start_line": 9073, + "end_line": 9077, + "section": "Raw HTML" + }, + { + "markdown": "< a><\nfoo>\n\n", + "html": "

                  < a><\nfoo><bar/ >\n<foo bar=baz\nbim!bop />

                  \n", + "example": 620, + "start_line": 9082, + "end_line": 9092, + "section": "Raw HTML" + }, + { + "markdown": "
                  \n", + "html": "

                  <a href='bar'title=title>

                  \n", + "example": 621, + "start_line": 9097, + "end_line": 9101, + "section": "Raw HTML" + }, + { + "markdown": "
                  \n", + "html": "

                  \n", + "example": 622, + "start_line": 9106, + "end_line": 9110, + "section": "Raw HTML" + }, + { + "markdown": "\n", + "html": "

                  </a href="foo">

                  \n", + "example": 623, + "start_line": 9115, + "end_line": 9119, + "section": "Raw HTML" + }, + { + "markdown": "foo \n", + "html": "

                  foo

                  \n", + "example": 624, + "start_line": 9124, + "end_line": 9130, + "section": "Raw HTML" + }, + { + "markdown": "foo \n", + "html": "

                  foo <!-- not a comment -- two hyphens -->

                  \n", + "example": 625, + "start_line": 9133, + "end_line": 9137, + "section": "Raw HTML" + }, + { + "markdown": "foo foo -->\n\nfoo \n", + "html": "

                  foo <!--> foo -->

                  \n

                  foo <!-- foo--->

                  \n", + "example": 626, + "start_line": 9142, + "end_line": 9149, + "section": "Raw HTML" + }, + { + "markdown": "foo \n", + "html": "

                  foo

                  \n", + "example": 627, + "start_line": 9154, + "end_line": 9158, + "section": "Raw HTML" + }, + { + "markdown": "foo \n", + "html": "

                  foo

                  \n", + "example": 628, + "start_line": 9163, + "end_line": 9167, + "section": "Raw HTML" + }, + { + "markdown": "foo &<]]>\n", + "html": "

                  foo &<]]>

                  \n", + "example": 629, + "start_line": 9172, + "end_line": 9176, + "section": "Raw HTML" + }, + { + "markdown": "foo \n", + "html": "

                  foo

                  \n", + "example": 630, + "start_line": 9182, + "end_line": 9186, + "section": "Raw HTML" + }, + { + "markdown": "foo \n", + "html": "

                  foo

                  \n", + "example": 631, + "start_line": 9191, + "end_line": 9195, + "section": "Raw HTML" + }, + { + "markdown": "\n", + "html": "

                  <a href=""">

                  \n", + "example": 632, + "start_line": 9198, + "end_line": 9202, + "section": "Raw HTML" + }, + { + "markdown": "foo \nbaz\n", + "html": "

                  foo
                  \nbaz

                  \n", + "example": 633, + "start_line": 9212, + "end_line": 9218, + "section": "Hard line breaks" + }, + { + "markdown": "foo\\\nbaz\n", + "html": "

                  foo
                  \nbaz

                  \n", + "example": 634, + "start_line": 9224, + "end_line": 9230, + "section": "Hard line breaks" + }, + { + "markdown": "foo \nbaz\n", + "html": "

                  foo
                  \nbaz

                  \n", + "example": 635, + "start_line": 9235, + "end_line": 9241, + "section": "Hard line breaks" + }, + { + "markdown": "foo \n bar\n", + "html": "

                  foo
                  \nbar

                  \n", + "example": 636, + "start_line": 9246, + "end_line": 9252, + "section": "Hard line breaks" + }, + { + "markdown": "foo\\\n bar\n", + "html": "

                  foo
                  \nbar

                  \n", + "example": 637, + "start_line": 9255, + "end_line": 9261, + "section": "Hard line breaks" + }, + { + "markdown": "*foo \nbar*\n", + "html": "

                  foo
                  \nbar

                  \n", + "example": 638, + "start_line": 9267, + "end_line": 9273, + "section": "Hard line breaks" + }, + { + "markdown": "*foo\\\nbar*\n", + "html": "

                  foo
                  \nbar

                  \n", + "example": 639, + "start_line": 9276, + "end_line": 9282, + "section": "Hard line breaks" + }, + { + "markdown": "`code \nspan`\n", + "html": "

                  code span

                  \n", + "example": 640, + "start_line": 9287, + "end_line": 9292, + "section": "Hard line breaks" + }, + { + "markdown": "`code\\\nspan`\n", + "html": "

                  code\\ span

                  \n", + "example": 641, + "start_line": 9295, + "end_line": 9300, + "section": "Hard line breaks" + }, + { + "markdown": "
                  \n", + "html": "

                  \n", + "example": 642, + "start_line": 9305, + "end_line": 9311, + "section": "Hard line breaks" + }, + { + "markdown": "\n", + "html": "

                  \n", + "example": 643, + "start_line": 9314, + "end_line": 9320, + "section": "Hard line breaks" + }, + { + "markdown": "foo\\\n", + "html": "

                  foo\\

                  \n", + "example": 644, + "start_line": 9327, + "end_line": 9331, + "section": "Hard line breaks" + }, + { + "markdown": "foo \n", + "html": "

                  foo

                  \n", + "example": 645, + "start_line": 9334, + "end_line": 9338, + "section": "Hard line breaks" + }, + { + "markdown": "### foo\\\n", + "html": "

                  foo\\

                  \n", + "example": 646, + "start_line": 9341, + "end_line": 9345, + "section": "Hard line breaks" + }, + { + "markdown": "### foo \n", + "html": "

                  foo

                  \n", + "example": 647, + "start_line": 9348, + "end_line": 9352, + "section": "Hard line breaks" + }, + { + "markdown": "foo\nbaz\n", + "html": "

                  foo\nbaz

                  \n", + "example": 648, + "start_line": 9363, + "end_line": 9369, + "section": "Soft line breaks" + }, + { + "markdown": "foo \n baz\n", + "html": "

                  foo\nbaz

                  \n", + "example": 649, + "start_line": 9375, + "end_line": 9381, + "section": "Soft line breaks" + }, + { + "markdown": "hello $.;'there\n", + "html": "

                  hello $.;'there

                  \n", + "example": 650, + "start_line": 9395, + "end_line": 9399, + "section": "Textual content" + }, + { + "markdown": "Foo χρῆν\n", + "html": "

                  Foo χρῆν

                  \n", + "example": 651, + "start_line": 9402, + "end_line": 9406, + "section": "Textual content" + }, + { + "markdown": "Multiple spaces\n", + "html": "

                  Multiple spaces

                  \n", + "example": 652, + "start_line": 9411, + "end_line": 9415, + "section": "Textual content" + } +] \ No newline at end of file diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/_tools/gen-unicode-case-folding-map.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_tools/gen-unicode-case-folding-map.go new file mode 100644 index 000000000..a94b93a3b --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/_tools/gen-unicode-case-folding-map.go @@ -0,0 +1,73 @@ +package main + +import ( + "bufio" + "bytes" + "fmt" + "io/ioutil" + "net/http" + "os" + "strconv" + "strings" +) + +const outPath = "../util/unicode_case_folding.go" + +type caseFolding struct { + Class byte + From rune + To []rune +} + +func main() { + url := "http://www.unicode.org/Public/12.1.0/ucd/CaseFolding.txt" + + resp, err := http.Get(url) + if err != nil { + fmt.Printf("Failed to get CaseFolding.txt: %v\n", err) + os.Exit(1) + } + defer resp.Body.Close() + + bs, err := ioutil.ReadAll(resp.Body) + if err != nil { + fmt.Printf("Failed to get CaseFolding.txt: %v\n", err) + os.Exit(1) + } + + buf := bytes.NewBuffer(bs) + scanner := bufio.NewScanner(buf) + f, err := os.Create(outPath) + if err != nil { + fmt.Printf("Failed to open %s: %v\n", outPath, err) + os.Exit(1) + } + defer f.Close() + _, _ = f.WriteString("package util\n\n") + _, _ = f.WriteString("var unicodeCaseFoldings = map[rune][]rune {\n") + + for scanner.Scan() { + line := scanner.Text() + if strings.HasPrefix(line, "#") || len(strings.TrimSpace(line)) == 0 { + continue + } + line = strings.Split(line, "#")[0] + parts := strings.Split(line, ";") + for i, p := range parts { + parts[i] = strings.TrimSpace(p) + } + cf := caseFolding{} + v, _ := strconv.ParseInt(parts[0], 16, 32) + cf.From = rune(int32(v)) + cf.Class = parts[1][0] + for _, v := range strings.Split(parts[2], " ") { + c, _ := strconv.ParseInt(v, 16, 32) + cf.To = append(cf.To, rune(int32(c))) + } + if cf.Class != 'C' && cf.Class != 'F' { + continue + } + fmt.Fprintf(f, " %#x : %#v,\n", cf.From, cf.To) + } + fmt.Fprintf(f, "}\n") +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/ast.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/ast.go new file mode 100644 index 000000000..3719ebbd8 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/ast.go @@ -0,0 +1,508 @@ +// Package ast defines AST nodes that represent markdown elements. +package ast + +import ( + "bytes" + "fmt" + "strings" + + textm "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +// A NodeType indicates what type a node belongs to. +type NodeType int + +const ( + // TypeBlock indicates that a node is kind of block nodes. + TypeBlock NodeType = iota + 1 + // TypeInline indicates that a node is kind of inline nodes. + TypeInline + // TypeDocument indicates that a node is kind of document nodes. + TypeDocument +) + +// NodeKind indicates more specific type than NodeType. +type NodeKind int + +func (k NodeKind) String() string { + return kindNames[k] +} + +var kindMax NodeKind +var kindNames = []string{""} + +// NewNodeKind returns a new Kind value. +func NewNodeKind(name string) NodeKind { + kindMax++ + kindNames = append(kindNames, name) + return kindMax +} + +// An Attribute is an attribute of the Node +type Attribute struct { + Name []byte + Value interface{} +} + +// A Node interface defines basic AST node functionalities. +type Node interface { + // Type returns a type of this node. + Type() NodeType + + // Kind returns a kind of this node. + Kind() NodeKind + + // NextSibling returns a next sibling node of this node. + NextSibling() Node + + // PreviousSibling returns a previous sibling node of this node. + PreviousSibling() Node + + // Parent returns a parent node of this node. + Parent() Node + + // SetParent sets a parent node to this node. + SetParent(Node) + + // SetPreviousSibling sets a previous sibling node to this node. + SetPreviousSibling(Node) + + // SetNextSibling sets a next sibling node to this node. + SetNextSibling(Node) + + // HasChildren returns true if this node has any children, otherwise false. + HasChildren() bool + + // ChildCount returns a total number of children. + ChildCount() int + + // FirstChild returns a first child of this node. + FirstChild() Node + + // LastChild returns a last child of this node. + LastChild() Node + + // AppendChild append a node child to the tail of the children. + AppendChild(self, child Node) + + // RemoveChild removes a node child from this node. + // If a node child is not children of this node, RemoveChild nothing to do. + RemoveChild(self, child Node) + + // RemoveChildren removes all children from this node. + RemoveChildren(self Node) + + // SortChildren sorts childrens by comparator. + SortChildren(comparator func(n1, n2 Node) int) + + // ReplaceChild replace a node v1 with a node insertee. + // If v1 is not children of this node, ReplaceChild append a insetee to the + // tail of the children. + ReplaceChild(self, v1, insertee Node) + + // InsertBefore inserts a node insertee before a node v1. + // If v1 is not children of this node, InsertBefore append a insetee to the + // tail of the children. + InsertBefore(self, v1, insertee Node) + + // InsertAfterinserts a node insertee after a node v1. + // If v1 is not children of this node, InsertBefore append a insetee to the + // tail of the children. + InsertAfter(self, v1, insertee Node) + + // OwnerDocument returns this node's owner document. + // If this node is not a child of the Document node, OwnerDocument + // returns nil. + OwnerDocument() *Document + + // Dump dumps an AST tree structure to stdout. + // This function completely aimed for debugging. + // level is a indent level. Implementer should indent informations with + // 2 * level spaces. + Dump(source []byte, level int) + + // Text returns text values of this node. + Text(source []byte) []byte + + // HasBlankPreviousLines returns true if the row before this node is blank, + // otherwise false. + // This method is valid only for block nodes. + HasBlankPreviousLines() bool + + // SetBlankPreviousLines sets whether the row before this node is blank. + // This method is valid only for block nodes. + SetBlankPreviousLines(v bool) + + // Lines returns text segments that hold positions in a source. + // This method is valid only for block nodes. + Lines() *textm.Segments + + // SetLines sets text segments that hold positions in a source. + // This method is valid only for block nodes. + SetLines(*textm.Segments) + + // IsRaw returns true if contents should be rendered as 'raw' contents. + IsRaw() bool + + // SetAttribute sets the given value to the attributes. + SetAttribute(name []byte, value interface{}) + + // SetAttributeString sets the given value to the attributes. + SetAttributeString(name string, value interface{}) + + // Attribute returns a (attribute value, true) if an attribute + // associated with the given name is found, otherwise + // (nil, false) + Attribute(name []byte) (interface{}, bool) + + // AttributeString returns a (attribute value, true) if an attribute + // associated with the given name is found, otherwise + // (nil, false) + AttributeString(name string) (interface{}, bool) + + // Attributes returns a list of attributes. + // This may be a nil if there are no attributes. + Attributes() []Attribute + + // RemoveAttributes removes all attributes from this node. + RemoveAttributes() +} + +// A BaseNode struct implements the Node interface partialliy. +type BaseNode struct { + firstChild Node + lastChild Node + parent Node + next Node + prev Node + childCount int + attributes []Attribute +} + +func ensureIsolated(v Node) { + if p := v.Parent(); p != nil { + p.RemoveChild(p, v) + } +} + +// HasChildren implements Node.HasChildren . +func (n *BaseNode) HasChildren() bool { + return n.firstChild != nil +} + +// SetPreviousSibling implements Node.SetPreviousSibling . +func (n *BaseNode) SetPreviousSibling(v Node) { + n.prev = v +} + +// SetNextSibling implements Node.SetNextSibling . +func (n *BaseNode) SetNextSibling(v Node) { + n.next = v +} + +// PreviousSibling implements Node.PreviousSibling . +func (n *BaseNode) PreviousSibling() Node { + return n.prev +} + +// NextSibling implements Node.NextSibling . +func (n *BaseNode) NextSibling() Node { + return n.next +} + +// RemoveChild implements Node.RemoveChild . +func (n *BaseNode) RemoveChild(self, v Node) { + if v.Parent() != self { + return + } + n.childCount-- + prev := v.PreviousSibling() + next := v.NextSibling() + if prev != nil { + prev.SetNextSibling(next) + } else { + n.firstChild = next + } + if next != nil { + next.SetPreviousSibling(prev) + } else { + n.lastChild = prev + } + v.SetParent(nil) + v.SetPreviousSibling(nil) + v.SetNextSibling(nil) +} + +// RemoveChildren implements Node.RemoveChildren . +func (n *BaseNode) RemoveChildren(self Node) { + for c := n.firstChild; c != nil; { + c.SetParent(nil) + c.SetPreviousSibling(nil) + next := c.NextSibling() + c.SetNextSibling(nil) + c = next + } + n.firstChild = nil + n.lastChild = nil + n.childCount = 0 +} + +// SortChildren implements Node.SortChildren +func (n *BaseNode) SortChildren(comparator func(n1, n2 Node) int) { + var sorted Node + current := n.firstChild + for current != nil { + next := current.NextSibling() + if sorted == nil || comparator(sorted, current) >= 0 { + current.SetNextSibling(sorted) + if sorted != nil { + sorted.SetPreviousSibling(current) + } + sorted = current + sorted.SetPreviousSibling(nil) + } else { + c := sorted + for c.NextSibling() != nil && comparator(c.NextSibling(), current) < 0 { + c = c.NextSibling() + } + current.SetNextSibling(c.NextSibling()) + current.SetPreviousSibling(c) + if c.NextSibling() != nil { + c.NextSibling().SetPreviousSibling(current) + } + c.SetNextSibling(current) + } + current = next + } + n.firstChild = sorted + for c := n.firstChild; c != nil; c = c.NextSibling() { + n.lastChild = c + } +} + +// FirstChild implements Node.FirstChild . +func (n *BaseNode) FirstChild() Node { + return n.firstChild +} + +// LastChild implements Node.LastChild . +func (n *BaseNode) LastChild() Node { + return n.lastChild +} + +// ChildCount implements Node.ChildCount . +func (n *BaseNode) ChildCount() int { + return n.childCount +} + +// Parent implements Node.Parent . +func (n *BaseNode) Parent() Node { + return n.parent +} + +// SetParent implements Node.SetParent . +func (n *BaseNode) SetParent(v Node) { + n.parent = v +} + +// AppendChild implements Node.AppendChild . +func (n *BaseNode) AppendChild(self, v Node) { + ensureIsolated(v) + if n.firstChild == nil { + n.firstChild = v + v.SetNextSibling(nil) + v.SetPreviousSibling(nil) + } else { + last := n.lastChild + last.SetNextSibling(v) + v.SetPreviousSibling(last) + } + v.SetParent(self) + n.lastChild = v + n.childCount++ +} + +// ReplaceChild implements Node.ReplaceChild . +func (n *BaseNode) ReplaceChild(self, v1, insertee Node) { + n.InsertBefore(self, v1, insertee) + n.RemoveChild(self, v1) +} + +// InsertAfter implements Node.InsertAfter . +func (n *BaseNode) InsertAfter(self, v1, insertee Node) { + n.InsertBefore(self, v1.NextSibling(), insertee) +} + +// InsertBefore implements Node.InsertBefore . +func (n *BaseNode) InsertBefore(self, v1, insertee Node) { + n.childCount++ + if v1 == nil { + n.AppendChild(self, insertee) + return + } + ensureIsolated(insertee) + if v1.Parent() == self { + c := v1 + prev := c.PreviousSibling() + if prev != nil { + prev.SetNextSibling(insertee) + insertee.SetPreviousSibling(prev) + } else { + n.firstChild = insertee + insertee.SetPreviousSibling(nil) + } + insertee.SetNextSibling(c) + c.SetPreviousSibling(insertee) + insertee.SetParent(self) + } +} + +// OwnerDocument implements Node.OwnerDocument +func (n *BaseNode) OwnerDocument() *Document { + d := n.Parent() + for { + p := d.Parent() + if p == nil { + if v, ok := d.(*Document); ok { + return v + } + break + } + d = p + } + return nil +} + +// Text implements Node.Text . +func (n *BaseNode) Text(source []byte) []byte { + var buf bytes.Buffer + for c := n.firstChild; c != nil; c = c.NextSibling() { + buf.Write(c.Text(source)) + } + return buf.Bytes() +} + +// SetAttribute implements Node.SetAttribute. +func (n *BaseNode) SetAttribute(name []byte, value interface{}) { + if n.attributes == nil { + n.attributes = make([]Attribute, 0, 10) + } else { + for i, a := range n.attributes { + if bytes.Equal(a.Name, name) { + n.attributes[i].Name = name + n.attributes[i].Value = value + return + } + } + } + n.attributes = append(n.attributes, Attribute{name, value}) +} + +// SetAttributeString implements Node.SetAttributeString +func (n *BaseNode) SetAttributeString(name string, value interface{}) { + n.SetAttribute(util.StringToReadOnlyBytes(name), value) +} + +// Attribute implements Node.Attribute. +func (n *BaseNode) Attribute(name []byte) (interface{}, bool) { + if n.attributes == nil { + return nil, false + } + for i, a := range n.attributes { + if bytes.Equal(a.Name, name) { + return n.attributes[i].Value, true + } + } + return nil, false +} + +// AttributeString implements Node.AttributeString. +func (n *BaseNode) AttributeString(s string) (interface{}, bool) { + return n.Attribute(util.StringToReadOnlyBytes(s)) +} + +// Attributes implements Node.Attributes +func (n *BaseNode) Attributes() []Attribute { + return n.attributes +} + +// RemoveAttributes implements Node.RemoveAttributes +func (n *BaseNode) RemoveAttributes() { + n.attributes = nil +} + +// DumpHelper is a helper function to implement Node.Dump. +// kv is pairs of an attribute name and an attribute value. +// cb is a function called after wrote a name and attributes. +func DumpHelper(v Node, source []byte, level int, kv map[string]string, cb func(int)) { + name := v.Kind().String() + indent := strings.Repeat(" ", level) + fmt.Printf("%s%s {\n", indent, name) + indent2 := strings.Repeat(" ", level+1) + if v.Type() == TypeBlock { + fmt.Printf("%sRawText: \"", indent2) + for i := 0; i < v.Lines().Len(); i++ { + line := v.Lines().At(i) + fmt.Printf("%s", line.Value(source)) + } + fmt.Printf("\"\n") + fmt.Printf("%sHasBlankPreviousLines: %v\n", indent2, v.HasBlankPreviousLines()) + } + for name, value := range kv { + fmt.Printf("%s%s: %s\n", indent2, name, value) + } + if cb != nil { + cb(level + 1) + } + for c := v.FirstChild(); c != nil; c = c.NextSibling() { + c.Dump(source, level+1) + } + fmt.Printf("%s}\n", indent) +} + +// WalkStatus represents a current status of the Walk function. +type WalkStatus int + +const ( + // WalkStop indicates no more walking needed. + WalkStop WalkStatus = iota + 1 + + // WalkSkipChildren indicates that Walk wont walk on children of current + // node. + WalkSkipChildren + + // WalkContinue indicates that Walk can continue to walk. + WalkContinue +) + +// Walker is a function that will be called when Walk find a +// new node. +// entering is set true before walks children, false after walked children. +// If Walker returns error, Walk function immediately stop walking. +type Walker func(n Node, entering bool) (WalkStatus, error) + +// Walk walks a AST tree by the depth first search algorithm. +func Walk(n Node, walker Walker) error { + _, err := walkHelper(n, walker) + return err +} + +func walkHelper(n Node, walker Walker) (WalkStatus, error) { + status, err := walker(n, true) + if err != nil || status == WalkStop { + return status, err + } + if status != WalkSkipChildren { + for c := n.FirstChild(); c != nil; c = c.NextSibling() { + if st, err := walkHelper(c, walker); err != nil || st == WalkStop { + return WalkStop, err + } + } + } + status, err = walker(n, false) + if err != nil || status == WalkStop { + return WalkStop, err + } + return WalkContinue, nil +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/ast_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/ast_test.go new file mode 100644 index 000000000..684fbc3dc --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/ast_test.go @@ -0,0 +1,75 @@ +package ast + +import ( + "reflect" + "testing" +) + +func TestRemoveChildren(t *testing.T) { + root := NewDocument() + + node1 := NewDocument() + + node2 := NewDocument() + + root.AppendChild(root, node1) + root.AppendChild(root, node2) + + root.RemoveChildren(root) + + t.Logf("%+v", node2.PreviousSibling()) +} + +func TestWalk(t *testing.T) { + tests := []struct { + name string + node Node + want []NodeKind + action map[NodeKind]WalkStatus + }{ + { + "visits all in depth first order", + node(NewDocument(), node(NewHeading(1), NewText()), NewLink()), + []NodeKind{KindDocument, KindHeading, KindText, KindLink}, + map[NodeKind]WalkStatus{}, + }, + { + "stops after heading", + node(NewDocument(), node(NewHeading(1), NewText()), NewLink()), + []NodeKind{KindDocument, KindHeading}, + map[NodeKind]WalkStatus{KindHeading: WalkStop}, + }, + { + "skip children", + node(NewDocument(), node(NewHeading(1), NewText()), NewLink()), + []NodeKind{KindDocument, KindHeading, KindLink}, + map[NodeKind]WalkStatus{KindHeading: WalkSkipChildren}, + }, + } + for _, tt := range tests { + var kinds []NodeKind + collectKinds := func(n Node, entering bool) (WalkStatus, error) { + if entering { + kinds = append(kinds, n.Kind()) + } + if status, ok := tt.action[n.Kind()]; ok { + return status, nil + } + return WalkContinue, nil + } + t.Run(tt.name, func(t *testing.T) { + if err := Walk(tt.node, collectKinds); err != nil { + t.Errorf("Walk() error = %v", err) + } else if !reflect.DeepEqual(kinds, tt.want) { + t.Errorf("Walk() expected = %v, got = %v", tt.want, kinds) + } + }) + } +} + +func node(n Node, children ...Node) Node { + for _, c := range children { + n.AppendChild(n, c) + } + return n +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/block.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/block.go new file mode 100644 index 000000000..4a504a810 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/block.go @@ -0,0 +1,495 @@ +package ast + +import ( + "fmt" + "strings" + + textm "github.com/yuin/goldmark/text" +) + +// A BaseBlock struct implements the Node interface partialliy. +type BaseBlock struct { + BaseNode + blankPreviousLines bool + lines *textm.Segments +} + +// Type implements Node.Type +func (b *BaseBlock) Type() NodeType { + return TypeBlock +} + +// IsRaw implements Node.IsRaw +func (b *BaseBlock) IsRaw() bool { + return false +} + +// HasBlankPreviousLines implements Node.HasBlankPreviousLines. +func (b *BaseBlock) HasBlankPreviousLines() bool { + return b.blankPreviousLines +} + +// SetBlankPreviousLines implements Node.SetBlankPreviousLines. +func (b *BaseBlock) SetBlankPreviousLines(v bool) { + b.blankPreviousLines = v +} + +// Lines implements Node.Lines +func (b *BaseBlock) Lines() *textm.Segments { + if b.lines == nil { + b.lines = textm.NewSegments() + } + return b.lines +} + +// SetLines implements Node.SetLines +func (b *BaseBlock) SetLines(v *textm.Segments) { + b.lines = v +} + +// A Document struct is a root node of Markdown text. +type Document struct { + BaseBlock + + meta map[string]interface{} +} + +// KindDocument is a NodeKind of the Document node. +var KindDocument = NewNodeKind("Document") + +// Dump implements Node.Dump . +func (n *Document) Dump(source []byte, level int) { + DumpHelper(n, source, level, nil, nil) +} + +// Type implements Node.Type . +func (n *Document) Type() NodeType { + return TypeDocument +} + +// Kind implements Node.Kind. +func (n *Document) Kind() NodeKind { + return KindDocument +} + +// OwnerDocument implements Node.OwnerDocument +func (n *Document) OwnerDocument() *Document { + return n +} + +// Meta returns metadata of this document. +func (n *Document) Meta() map[string]interface{} { + if n.meta == nil { + n.meta = map[string]interface{}{} + } + return n.meta +} + +// SetMeta sets given metadata to this document. +func (n *Document) SetMeta(meta map[string]interface{}) { + n.meta = meta +} + +// NewDocument returns a new Document node. +func NewDocument() *Document { + return &Document{ + BaseBlock: BaseBlock{}, + meta: nil, + } +} + +// A TextBlock struct is a node whose lines +// should be rendered without any containers. +type TextBlock struct { + BaseBlock +} + +// Dump implements Node.Dump . +func (n *TextBlock) Dump(source []byte, level int) { + DumpHelper(n, source, level, nil, nil) +} + +// KindTextBlock is a NodeKind of the TextBlock node. +var KindTextBlock = NewNodeKind("TextBlock") + +// Kind implements Node.Kind. +func (n *TextBlock) Kind() NodeKind { + return KindTextBlock +} + +// NewTextBlock returns a new TextBlock node. +func NewTextBlock() *TextBlock { + return &TextBlock{ + BaseBlock: BaseBlock{}, + } +} + +// A Paragraph struct represents a paragraph of Markdown text. +type Paragraph struct { + BaseBlock +} + +// Dump implements Node.Dump . +func (n *Paragraph) Dump(source []byte, level int) { + DumpHelper(n, source, level, nil, nil) +} + +// KindParagraph is a NodeKind of the Paragraph node. +var KindParagraph = NewNodeKind("Paragraph") + +// Kind implements Node.Kind. +func (n *Paragraph) Kind() NodeKind { + return KindParagraph +} + +// NewParagraph returns a new Paragraph node. +func NewParagraph() *Paragraph { + return &Paragraph{ + BaseBlock: BaseBlock{}, + } +} + +// IsParagraph returns true if the given node implements the Paragraph interface, +// otherwise false. +func IsParagraph(node Node) bool { + _, ok := node.(*Paragraph) + return ok +} + +// A Heading struct represents headings like SetextHeading and ATXHeading. +type Heading struct { + BaseBlock + // Level returns a level of this heading. + // This value is between 1 and 6. + Level int +} + +// Dump implements Node.Dump . +func (n *Heading) Dump(source []byte, level int) { + m := map[string]string{ + "Level": fmt.Sprintf("%d", n.Level), + } + DumpHelper(n, source, level, m, nil) +} + +// KindHeading is a NodeKind of the Heading node. +var KindHeading = NewNodeKind("Heading") + +// Kind implements Node.Kind. +func (n *Heading) Kind() NodeKind { + return KindHeading +} + +// NewHeading returns a new Heading node. +func NewHeading(level int) *Heading { + return &Heading{ + BaseBlock: BaseBlock{}, + Level: level, + } +} + +// A ThematicBreak struct represents a thematic break of Markdown text. +type ThematicBreak struct { + BaseBlock +} + +// Dump implements Node.Dump . +func (n *ThematicBreak) Dump(source []byte, level int) { + DumpHelper(n, source, level, nil, nil) +} + +// KindThematicBreak is a NodeKind of the ThematicBreak node. +var KindThematicBreak = NewNodeKind("ThematicBreak") + +// Kind implements Node.Kind. +func (n *ThematicBreak) Kind() NodeKind { + return KindThematicBreak +} + +// NewThematicBreak returns a new ThematicBreak node. +func NewThematicBreak() *ThematicBreak { + return &ThematicBreak{ + BaseBlock: BaseBlock{}, + } +} + +// A CodeBlock interface represents an indented code block of Markdown text. +type CodeBlock struct { + BaseBlock +} + +// IsRaw implements Node.IsRaw. +func (n *CodeBlock) IsRaw() bool { + return true +} + +// Dump implements Node.Dump . +func (n *CodeBlock) Dump(source []byte, level int) { + DumpHelper(n, source, level, nil, nil) +} + +// KindCodeBlock is a NodeKind of the CodeBlock node. +var KindCodeBlock = NewNodeKind("CodeBlock") + +// Kind implements Node.Kind. +func (n *CodeBlock) Kind() NodeKind { + return KindCodeBlock +} + +// NewCodeBlock returns a new CodeBlock node. +func NewCodeBlock() *CodeBlock { + return &CodeBlock{ + BaseBlock: BaseBlock{}, + } +} + +// A FencedCodeBlock struct represents a fenced code block of Markdown text. +type FencedCodeBlock struct { + BaseBlock + // Info returns a info text of this fenced code block. + Info *Text + + language []byte +} + +// Language returns an language in an info string. +// Language returns nil if this node does not have an info string. +func (n *FencedCodeBlock) Language(source []byte) []byte { + if n.language == nil && n.Info != nil { + segment := n.Info.Segment + info := segment.Value(source) + i := 0 + for ; i < len(info); i++ { + if info[i] == ' ' { + break + } + } + n.language = info[:i] + } + return n.language +} + +// IsRaw implements Node.IsRaw. +func (n *FencedCodeBlock) IsRaw() bool { + return true +} + +// Dump implements Node.Dump . +func (n *FencedCodeBlock) Dump(source []byte, level int) { + m := map[string]string{} + if n.Info != nil { + m["Info"] = fmt.Sprintf("\"%s\"", n.Info.Text(source)) + } + DumpHelper(n, source, level, m, nil) +} + +// KindFencedCodeBlock is a NodeKind of the FencedCodeBlock node. +var KindFencedCodeBlock = NewNodeKind("FencedCodeBlock") + +// Kind implements Node.Kind. +func (n *FencedCodeBlock) Kind() NodeKind { + return KindFencedCodeBlock +} + +// NewFencedCodeBlock return a new FencedCodeBlock node. +func NewFencedCodeBlock(info *Text) *FencedCodeBlock { + return &FencedCodeBlock{ + BaseBlock: BaseBlock{}, + Info: info, + } +} + +// A Blockquote struct represents an blockquote block of Markdown text. +type Blockquote struct { + BaseBlock +} + +// Dump implements Node.Dump . +func (n *Blockquote) Dump(source []byte, level int) { + DumpHelper(n, source, level, nil, nil) +} + +// KindBlockquote is a NodeKind of the Blockquote node. +var KindBlockquote = NewNodeKind("Blockquote") + +// Kind implements Node.Kind. +func (n *Blockquote) Kind() NodeKind { + return KindBlockquote +} + +// NewBlockquote returns a new Blockquote node. +func NewBlockquote() *Blockquote { + return &Blockquote{ + BaseBlock: BaseBlock{}, + } +} + +// A List struct represents a list of Markdown text. +type List struct { + BaseBlock + + // Marker is a marker character like '-', '+', ')' and '.'. + Marker byte + + // IsTight is a true if this list is a 'tight' list. + // See https://spec.commonmark.org/0.30/#loose for details. + IsTight bool + + // Start is an initial number of this ordered list. + // If this list is not an ordered list, Start is 0. + Start int +} + +// IsOrdered returns true if this list is an ordered list, otherwise false. +func (l *List) IsOrdered() bool { + return l.Marker == '.' || l.Marker == ')' +} + +// CanContinue returns true if this list can continue with +// the given mark and a list type, otherwise false. +func (l *List) CanContinue(marker byte, isOrdered bool) bool { + return marker == l.Marker && isOrdered == l.IsOrdered() +} + +// Dump implements Node.Dump. +func (l *List) Dump(source []byte, level int) { + m := map[string]string{ + "Ordered": fmt.Sprintf("%v", l.IsOrdered()), + "Marker": fmt.Sprintf("%c", l.Marker), + "Tight": fmt.Sprintf("%v", l.IsTight), + } + if l.IsOrdered() { + m["Start"] = fmt.Sprintf("%d", l.Start) + } + DumpHelper(l, source, level, m, nil) +} + +// KindList is a NodeKind of the List node. +var KindList = NewNodeKind("List") + +// Kind implements Node.Kind. +func (l *List) Kind() NodeKind { + return KindList +} + +// NewList returns a new List node. +func NewList(marker byte) *List { + return &List{ + BaseBlock: BaseBlock{}, + Marker: marker, + IsTight: true, + } +} + +// A ListItem struct represents a list item of Markdown text. +type ListItem struct { + BaseBlock + + // Offset is an offset position of this item. + Offset int +} + +// Dump implements Node.Dump. +func (n *ListItem) Dump(source []byte, level int) { + m := map[string]string{ + "Offset": fmt.Sprintf("%d", n.Offset), + } + DumpHelper(n, source, level, m, nil) +} + +// KindListItem is a NodeKind of the ListItem node. +var KindListItem = NewNodeKind("ListItem") + +// Kind implements Node.Kind. +func (n *ListItem) Kind() NodeKind { + return KindListItem +} + +// NewListItem returns a new ListItem node. +func NewListItem(offset int) *ListItem { + return &ListItem{ + BaseBlock: BaseBlock{}, + Offset: offset, + } +} + +// HTMLBlockType represents kinds of an html blocks. +// See https://spec.commonmark.org/0.30/#html-blocks +type HTMLBlockType int + +const ( + // HTMLBlockType1 represents type 1 html blocks + HTMLBlockType1 HTMLBlockType = iota + 1 + // HTMLBlockType2 represents type 2 html blocks + HTMLBlockType2 + // HTMLBlockType3 represents type 3 html blocks + HTMLBlockType3 + // HTMLBlockType4 represents type 4 html blocks + HTMLBlockType4 + // HTMLBlockType5 represents type 5 html blocks + HTMLBlockType5 + // HTMLBlockType6 represents type 6 html blocks + HTMLBlockType6 + // HTMLBlockType7 represents type 7 html blocks + HTMLBlockType7 +) + +// An HTMLBlock struct represents an html block of Markdown text. +type HTMLBlock struct { + BaseBlock + + // Type is a type of this html block. + HTMLBlockType HTMLBlockType + + // ClosureLine is a line that closes this html block. + ClosureLine textm.Segment +} + +// IsRaw implements Node.IsRaw. +func (n *HTMLBlock) IsRaw() bool { + return true +} + +// HasClosure returns true if this html block has a closure line, +// otherwise false. +func (n *HTMLBlock) HasClosure() bool { + return n.ClosureLine.Start >= 0 +} + +// Dump implements Node.Dump. +func (n *HTMLBlock) Dump(source []byte, level int) { + indent := strings.Repeat(" ", level) + fmt.Printf("%s%s {\n", indent, "HTMLBlock") + indent2 := strings.Repeat(" ", level+1) + fmt.Printf("%sRawText: \"", indent2) + for i := 0; i < n.Lines().Len(); i++ { + s := n.Lines().At(i) + fmt.Print(string(source[s.Start:s.Stop])) + } + fmt.Printf("\"\n") + for c := n.FirstChild(); c != nil; c = c.NextSibling() { + c.Dump(source, level+1) + } + if n.HasClosure() { + cl := n.ClosureLine + fmt.Printf("%sClosure: \"%s\"\n", indent2, string(cl.Value(source))) + } + fmt.Printf("%s}\n", indent) +} + +// KindHTMLBlock is a NodeKind of the HTMLBlock node. +var KindHTMLBlock = NewNodeKind("HTMLBlock") + +// Kind implements Node.Kind. +func (n *HTMLBlock) Kind() NodeKind { + return KindHTMLBlock +} + +// NewHTMLBlock returns a new HTMLBlock node. +func NewHTMLBlock(typ HTMLBlockType) *HTMLBlock { + return &HTMLBlock{ + BaseBlock: BaseBlock{}, + HTMLBlockType: typ, + ClosureLine: textm.NewSegment(-1, -1), + } +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/inline.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/inline.go new file mode 100644 index 000000000..fa6fc34f9 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/ast/inline.go @@ -0,0 +1,548 @@ +package ast + +import ( + "fmt" + "strings" + + textm "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +// A BaseInline struct implements the Node interface partialliy. +type BaseInline struct { + BaseNode +} + +// Type implements Node.Type +func (b *BaseInline) Type() NodeType { + return TypeInline +} + +// IsRaw implements Node.IsRaw +func (b *BaseInline) IsRaw() bool { + return false +} + +// HasBlankPreviousLines implements Node.HasBlankPreviousLines. +func (b *BaseInline) HasBlankPreviousLines() bool { + panic("can not call with inline nodes.") +} + +// SetBlankPreviousLines implements Node.SetBlankPreviousLines. +func (b *BaseInline) SetBlankPreviousLines(v bool) { + panic("can not call with inline nodes.") +} + +// Lines implements Node.Lines +func (b *BaseInline) Lines() *textm.Segments { + panic("can not call with inline nodes.") +} + +// SetLines implements Node.SetLines +func (b *BaseInline) SetLines(v *textm.Segments) { + panic("can not call with inline nodes.") +} + +// A Text struct represents a textual content of the Markdown text. +type Text struct { + BaseInline + // Segment is a position in a source text. + Segment textm.Segment + + flags uint8 +} + +const ( + textSoftLineBreak = 1 << iota + textHardLineBreak + textRaw + textCode +) + +func textFlagsString(flags uint8) string { + buf := []string{} + if flags&textSoftLineBreak != 0 { + buf = append(buf, "SoftLineBreak") + } + if flags&textHardLineBreak != 0 { + buf = append(buf, "HardLineBreak") + } + if flags&textRaw != 0 { + buf = append(buf, "Raw") + } + if flags&textCode != 0 { + buf = append(buf, "Code") + } + return strings.Join(buf, ", ") +} + +// Inline implements Inline.Inline. +func (n *Text) Inline() { +} + +// SoftLineBreak returns true if this node ends with a new line, +// otherwise false. +func (n *Text) SoftLineBreak() bool { + return n.flags&textSoftLineBreak != 0 +} + +// SetSoftLineBreak sets whether this node ends with a new line. +func (n *Text) SetSoftLineBreak(v bool) { + if v { + n.flags |= textSoftLineBreak + } else { + n.flags = n.flags &^ textHardLineBreak + } +} + +// IsRaw returns true if this text should be rendered without unescaping +// back slash escapes and resolving references. +func (n *Text) IsRaw() bool { + return n.flags&textRaw != 0 +} + +// SetRaw sets whether this text should be rendered as raw contents. +func (n *Text) SetRaw(v bool) { + if v { + n.flags |= textRaw + } else { + n.flags = n.flags &^ textRaw + } +} + +// HardLineBreak returns true if this node ends with a hard line break. +// See https://spec.commonmark.org/0.30/#hard-line-breaks for details. +func (n *Text) HardLineBreak() bool { + return n.flags&textHardLineBreak != 0 +} + +// SetHardLineBreak sets whether this node ends with a hard line break. +func (n *Text) SetHardLineBreak(v bool) { + if v { + n.flags |= textHardLineBreak + } else { + n.flags = n.flags &^ textHardLineBreak + } +} + +// Merge merges a Node n into this node. +// Merge returns true if the given node has been merged, otherwise false. +func (n *Text) Merge(node Node, source []byte) bool { + t, ok := node.(*Text) + if !ok { + return false + } + if n.Segment.Stop != t.Segment.Start || t.Segment.Padding != 0 || source[n.Segment.Stop-1] == '\n' || t.IsRaw() != n.IsRaw() { + return false + } + n.Segment.Stop = t.Segment.Stop + n.SetSoftLineBreak(t.SoftLineBreak()) + n.SetHardLineBreak(t.HardLineBreak()) + return true +} + +// Text implements Node.Text. +func (n *Text) Text(source []byte) []byte { + return n.Segment.Value(source) +} + +// Dump implements Node.Dump. +func (n *Text) Dump(source []byte, level int) { + fs := textFlagsString(n.flags) + if len(fs) != 0 { + fs = "(" + fs + ")" + } + fmt.Printf("%sText%s: \"%s\"\n", strings.Repeat(" ", level), fs, strings.TrimRight(string(n.Text(source)), "\n")) +} + +// KindText is a NodeKind of the Text node. +var KindText = NewNodeKind("Text") + +// Kind implements Node.Kind. +func (n *Text) Kind() NodeKind { + return KindText +} + +// NewText returns a new Text node. +func NewText() *Text { + return &Text{ + BaseInline: BaseInline{}, + } +} + +// NewTextSegment returns a new Text node with the given source position. +func NewTextSegment(v textm.Segment) *Text { + return &Text{ + BaseInline: BaseInline{}, + Segment: v, + } +} + +// NewRawTextSegment returns a new Text node with the given source position. +// The new node should be rendered as raw contents. +func NewRawTextSegment(v textm.Segment) *Text { + t := &Text{ + BaseInline: BaseInline{}, + Segment: v, + } + t.SetRaw(true) + return t +} + +// MergeOrAppendTextSegment merges a given s into the last child of the parent if +// it can be merged, otherwise creates a new Text node and appends it to after current +// last child. +func MergeOrAppendTextSegment(parent Node, s textm.Segment) { + last := parent.LastChild() + t, ok := last.(*Text) + if ok && t.Segment.Stop == s.Start && !t.SoftLineBreak() { + t.Segment = t.Segment.WithStop(s.Stop) + } else { + parent.AppendChild(parent, NewTextSegment(s)) + } +} + +// MergeOrReplaceTextSegment merges a given s into a previous sibling of the node n +// if a previous sibling of the node n is *Text, otherwise replaces Node n with s. +func MergeOrReplaceTextSegment(parent Node, n Node, s textm.Segment) { + prev := n.PreviousSibling() + if t, ok := prev.(*Text); ok && t.Segment.Stop == s.Start && !t.SoftLineBreak() { + t.Segment = t.Segment.WithStop(s.Stop) + parent.RemoveChild(parent, n) + } else { + parent.ReplaceChild(parent, n, NewTextSegment(s)) + } +} + +// A String struct is a textual content that has a concrete value +type String struct { + BaseInline + + Value []byte + flags uint8 +} + +// Inline implements Inline.Inline. +func (n *String) Inline() { +} + +// IsRaw returns true if this text should be rendered without unescaping +// back slash escapes and resolving references. +func (n *String) IsRaw() bool { + return n.flags&textRaw != 0 +} + +// SetRaw sets whether this text should be rendered as raw contents. +func (n *String) SetRaw(v bool) { + if v { + n.flags |= textRaw + } else { + n.flags = n.flags &^ textRaw + } +} + +// IsCode returns true if this text should be rendered without any +// modifications. +func (n *String) IsCode() bool { + return n.flags&textCode != 0 +} + +// SetCode sets whether this text should be rendered without any modifications. +func (n *String) SetCode(v bool) { + if v { + n.flags |= textCode + } else { + n.flags = n.flags &^ textCode + } +} + +// Text implements Node.Text. +func (n *String) Text(source []byte) []byte { + return n.Value +} + +// Dump implements Node.Dump. +func (n *String) Dump(source []byte, level int) { + fs := textFlagsString(n.flags) + if len(fs) != 0 { + fs = "(" + fs + ")" + } + fmt.Printf("%sString%s: \"%s\"\n", strings.Repeat(" ", level), fs, strings.TrimRight(string(n.Value), "\n")) +} + +// KindString is a NodeKind of the String node. +var KindString = NewNodeKind("String") + +// Kind implements Node.Kind. +func (n *String) Kind() NodeKind { + return KindString +} + +// NewString returns a new String node. +func NewString(v []byte) *String { + return &String{ + Value: v, + } +} + +// A CodeSpan struct represents a code span of Markdown text. +type CodeSpan struct { + BaseInline +} + +// Inline implements Inline.Inline . +func (n *CodeSpan) Inline() { +} + +// IsBlank returns true if this node consists of spaces, otherwise false. +func (n *CodeSpan) IsBlank(source []byte) bool { + for c := n.FirstChild(); c != nil; c = c.NextSibling() { + text := c.(*Text).Segment + if !util.IsBlank(text.Value(source)) { + return false + } + } + return true +} + +// Dump implements Node.Dump +func (n *CodeSpan) Dump(source []byte, level int) { + DumpHelper(n, source, level, nil, nil) +} + +// KindCodeSpan is a NodeKind of the CodeSpan node. +var KindCodeSpan = NewNodeKind("CodeSpan") + +// Kind implements Node.Kind. +func (n *CodeSpan) Kind() NodeKind { + return KindCodeSpan +} + +// NewCodeSpan returns a new CodeSpan node. +func NewCodeSpan() *CodeSpan { + return &CodeSpan{ + BaseInline: BaseInline{}, + } +} + +// An Emphasis struct represents an emphasis of Markdown text. +type Emphasis struct { + BaseInline + + // Level is a level of the emphasis. + Level int +} + +// Dump implements Node.Dump. +func (n *Emphasis) Dump(source []byte, level int) { + m := map[string]string{ + "Level": fmt.Sprintf("%v", n.Level), + } + DumpHelper(n, source, level, m, nil) +} + +// KindEmphasis is a NodeKind of the Emphasis node. +var KindEmphasis = NewNodeKind("Emphasis") + +// Kind implements Node.Kind. +func (n *Emphasis) Kind() NodeKind { + return KindEmphasis +} + +// NewEmphasis returns a new Emphasis node with the given level. +func NewEmphasis(level int) *Emphasis { + return &Emphasis{ + BaseInline: BaseInline{}, + Level: level, + } +} + +type baseLink struct { + BaseInline + + // Destination is a destination(URL) of this link. + Destination []byte + + // Title is a title of this link. + Title []byte +} + +// Inline implements Inline.Inline. +func (n *baseLink) Inline() { +} + +// A Link struct represents a link of the Markdown text. +type Link struct { + baseLink +} + +// Dump implements Node.Dump. +func (n *Link) Dump(source []byte, level int) { + m := map[string]string{} + m["Destination"] = string(n.Destination) + m["Title"] = string(n.Title) + DumpHelper(n, source, level, m, nil) +} + +// KindLink is a NodeKind of the Link node. +var KindLink = NewNodeKind("Link") + +// Kind implements Node.Kind. +func (n *Link) Kind() NodeKind { + return KindLink +} + +// NewLink returns a new Link node. +func NewLink() *Link { + c := &Link{ + baseLink: baseLink{ + BaseInline: BaseInline{}, + }, + } + return c +} + +// An Image struct represents an image of the Markdown text. +type Image struct { + baseLink +} + +// Dump implements Node.Dump. +func (n *Image) Dump(source []byte, level int) { + m := map[string]string{} + m["Destination"] = string(n.Destination) + m["Title"] = string(n.Title) + DumpHelper(n, source, level, m, nil) +} + +// KindImage is a NodeKind of the Image node. +var KindImage = NewNodeKind("Image") + +// Kind implements Node.Kind. +func (n *Image) Kind() NodeKind { + return KindImage +} + +// NewImage returns a new Image node. +func NewImage(link *Link) *Image { + c := &Image{ + baseLink: baseLink{ + BaseInline: BaseInline{}, + }, + } + c.Destination = link.Destination + c.Title = link.Title + for n := link.FirstChild(); n != nil; { + next := n.NextSibling() + link.RemoveChild(link, n) + c.AppendChild(c, n) + n = next + } + + return c +} + +// AutoLinkType defines kind of auto links. +type AutoLinkType int + +const ( + // AutoLinkEmail indicates that an autolink is an email address. + AutoLinkEmail AutoLinkType = iota + 1 + // AutoLinkURL indicates that an autolink is a generic URL. + AutoLinkURL +) + +// An AutoLink struct represents an autolink of the Markdown text. +type AutoLink struct { + BaseInline + // Type is a type of this autolink. + AutoLinkType AutoLinkType + + // Protocol specified a protocol of the link. + Protocol []byte + + value *Text +} + +// Inline implements Inline.Inline. +func (n *AutoLink) Inline() {} + +// Dump implements Node.Dump +func (n *AutoLink) Dump(source []byte, level int) { + segment := n.value.Segment + m := map[string]string{ + "Value": string(segment.Value(source)), + } + DumpHelper(n, source, level, m, nil) +} + +// KindAutoLink is a NodeKind of the AutoLink node. +var KindAutoLink = NewNodeKind("AutoLink") + +// Kind implements Node.Kind. +func (n *AutoLink) Kind() NodeKind { + return KindAutoLink +} + +// URL returns an url of this node. +func (n *AutoLink) URL(source []byte) []byte { + if n.Protocol != nil { + s := n.value.Segment + ret := make([]byte, 0, len(n.Protocol)+s.Len()+3) + ret = append(ret, n.Protocol...) + ret = append(ret, ':', '/', '/') + ret = append(ret, n.value.Text(source)...) + return ret + } + return n.value.Text(source) +} + +// Label returns a label of this node. +func (n *AutoLink) Label(source []byte) []byte { + return n.value.Text(source) +} + +// NewAutoLink returns a new AutoLink node. +func NewAutoLink(typ AutoLinkType, value *Text) *AutoLink { + return &AutoLink{ + BaseInline: BaseInline{}, + value: value, + AutoLinkType: typ, + } +} + +// A RawHTML struct represents an inline raw HTML of the Markdown text. +type RawHTML struct { + BaseInline + Segments *textm.Segments +} + +// Inline implements Inline.Inline. +func (n *RawHTML) Inline() {} + +// Dump implements Node.Dump. +func (n *RawHTML) Dump(source []byte, level int) { + m := map[string]string{} + t := []string{} + for i := 0; i < n.Segments.Len(); i++ { + segment := n.Segments.At(i) + t = append(t, string(segment.Value(source))) + } + m["RawText"] = strings.Join(t, "") + DumpHelper(n, source, level, m, nil) +} + +// KindRawHTML is a NodeKind of the RawHTML node. +var KindRawHTML = NewNodeKind("RawHTML") + +// Kind implements Node.Kind. +func (n *RawHTML) Kind() NodeKind { + return KindRawHTML +} + +// NewRawHTML returns a new RawHTML node. +func NewRawHTML() *RawHTML { + return &RawHTML{ + Segments: textm.NewSegments(), + } +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/commonmark_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/commonmark_test.go new file mode 100644 index 000000000..7482ff1da --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/commonmark_test.go @@ -0,0 +1,57 @@ +package goldmark_test + +import ( + "encoding/json" + "io/ioutil" + "testing" + + . "github.com/yuin/goldmark" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/testutil" +) + +type commonmarkSpecTestCase struct { + Markdown string `json:"markdown"` + HTML string `json:"html"` + Example int `json:"example"` + StartLine int `json:"start_line"` + EndLine int `json:"end_line"` + Section string `json:"section"` +} + +func TestSpec(t *testing.T) { + bs, err := ioutil.ReadFile("_test/spec.json") + if err != nil { + panic(err) + } + var testCases []commonmarkSpecTestCase + if err := json.Unmarshal(bs, &testCases); err != nil { + panic(err) + } + cases := []testutil.MarkdownTestCase{} + nos := testutil.ParseCliCaseArg() + for _, c := range testCases { + shouldAdd := len(nos) == 0 + if !shouldAdd { + for _, no := range nos { + if c.Example == no { + shouldAdd = true + break + } + } + } + + if shouldAdd { + cases = append(cases, testutil.MarkdownTestCase{ + No: c.Example, + Markdown: c.Markdown, + Expected: c.HTML, + }) + } + } + markdown := New(WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + )) + testutil.DoTestCases(markdown, cases, t) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/definition_list.txt b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/definition_list.txt new file mode 100644 index 000000000..a6c1c8773 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/definition_list.txt @@ -0,0 +1,156 @@ +1 +//- - - - - - - - -// +Apple +: Pomaceous fruit of plants of the genus Malus in +the family Rosaceae. + +Orange +: The fruit of an evergreen tree of the genus Citrus. +//- - - - - - - - -// +
                  +
                  Apple
                  +
                  Pomaceous fruit of plants of the genus Malus in +the family Rosaceae.
                  +
                  Orange
                  +
                  The fruit of an evergreen tree of the genus Citrus.
                  +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +2 +//- - - - - - - - -// +Apple +: Pomaceous fruit of plants of the genus Malus in + the family Rosaceae. +: An American computer company. + +Orange +: The fruit of an evergreen tree of the genus Citrus. +//- - - - - - - - -// +
                  +
                  Apple
                  +
                  Pomaceous fruit of plants of the genus Malus in +the family Rosaceae.
                  +
                  An American computer company.
                  +
                  Orange
                  +
                  The fruit of an evergreen tree of the genus Citrus.
                  +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +3 +//- - - - - - - - -// +Term 1 +Term 2 +: Definition a + +Term 3 +: Definition b +//- - - - - - - - -// +
                  +
                  Term 1
                  +
                  Term 2
                  +
                  Definition a
                  +
                  Term 3
                  +
                  Definition b
                  +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +4 +//- - - - - - - - -// +Apple + +: Pomaceous fruit of plants of the genus Malus in + the family Rosaceae. + +Orange + +: The fruit of an evergreen tree of the genus Citrus. +//- - - - - - - - -// +
                  +
                  Apple
                  +
                  +

                  Pomaceous fruit of plants of the genus Malus in +the family Rosaceae.

                  +
                  +
                  Orange
                  +
                  +

                  The fruit of an evergreen tree of the genus Citrus.

                  +
                  +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +5 +//- - - - - - - - -// +Term 1 + +: This is a definition with two paragraphs. Lorem ipsum + dolor sit amet, consectetuer adipiscing elit. Aliquam + hendrerit mi posuere lectus. + + Vestibulum enim wisi, viverra nec, fringilla in, laoreet + vitae, risus. + +: Second definition for term 1, also wrapped in a paragraph + because of the blank line preceding it. + +Term 2 + +: This definition has a code block, a blockquote and a list. + + code block. + + > block quote + > on two lines. + + 1. first list item + 2. second list item +//- - - - - - - - -// +
                  +
                  Term 1
                  +
                  +

                  This is a definition with two paragraphs. Lorem ipsum +dolor sit amet, consectetuer adipiscing elit. Aliquam +hendrerit mi posuere lectus.

                  +

                  Vestibulum enim wisi, viverra nec, fringilla in, laoreet +vitae, risus.

                  +
                  +
                  +

                  Second definition for term 1, also wrapped in a paragraph +because of the blank line preceding it.

                  +
                  +
                  Term 2
                  +
                  +

                  This definition has a code block, a blockquote and a list.

                  +
                  code block.
                  +
                  +
                  +

                  block quote +on two lines.

                  +
                  +
                    +
                  1. first list item
                  2. +
                  3. second list item
                  4. +
                  +
                  +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +6: Definition lists indented with tabs +//- - - - - - - - -// +0 +: ``` + 0 +//- - - - - - - - -// +
                  +
                  0
                  +
                  	0
                  +
                  +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/footnote.txt b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/footnote.txt new file mode 100644 index 000000000..48e3a58fc --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/footnote.txt @@ -0,0 +1,68 @@ +1 +//- - - - - - - - -// +That's some text with a footnote.[^1] + +[^1]: And that's the footnote. + + That's the second paragraph. +//- - - - - - - - -// +

                  That's some text with a footnote.1

                  +
                  +
                  +
                    +
                  1. +

                    And that's the footnote.

                    +

                    That's the second paragraph. ↩︎

                    +
                  2. +
                  +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +3 +//- - - - - - - - -// +[^000]:0 [^]: +//- - - - - - - - -// +//= = = = = = = = = = = = = = = = = = = = = = = =// + +4 +//- - - - - - - - -// +This[^3] is[^1] text with footnotes[^2]. + +[^1]: Footnote one +[^2]: Footnote two +[^3]: Footnote three +//- - - - - - - - -// +

                  This1 is2 text with footnotes3.

                  +
                  +
                  +
                    +
                  1. +

                    Footnote three ↩︎

                    +
                  2. +
                  3. +

                    Footnote one ↩︎

                    +
                  4. +
                  5. +

                    Footnote two ↩︎

                    +
                  6. +
                  +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +5 +//- - - - - - - - -// +test![^1] + +[^1]: footnote +//- - - - - - - - -// +

                  test!1

                  +
                  +
                  +
                    +
                  1. +

                    footnote ↩︎

                    +
                  2. +
                  +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/linkify.txt b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/linkify.txt new file mode 100644 index 000000000..4791f3cfc --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/linkify.txt @@ -0,0 +1,193 @@ +1 +//- - - - - - - - -// +www.commonmark.org +//- - - - - - - - -// +

                  www.commonmark.org

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +2 +//- - - - - - - - -// +Visit www.commonmark.org/help for more information. +//- - - - - - - - -// +

                  Visit www.commonmark.org/help for more information.

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +3 +//- - - - - - - - -// +www.google.com/search?q=Markup+(business) + +www.google.com/search?q=Markup+(business))) + +(www.google.com/search?q=Markup+(business)) + +(www.google.com/search?q=Markup+(business) +//- - - - - - - - -// +

                  www.google.com/search?q=Markup+(business)

                  +

                  www.google.com/search?q=Markup+(business)))

                  +

                  (www.google.com/search?q=Markup+(business))

                  +

                  (www.google.com/search?q=Markup+(business)

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +4 +//- - - - - - - - -// +www.google.com/search?q=(business))+ok +//- - - - - - - - -// +

                  www.google.com/search?q=(business))+ok

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +5 +//- - - - - - - - -// +www.google.com/search?q=commonmark&hl=en + +www.google.com/search?q=commonmark&hl; +//- - - - - - - - -// +

                  www.google.com/search?q=commonmark&hl=en

                  +

                  www.google.com/search?q=commonmark&hl;

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +6 +//- - - - - - - - -// +www.commonmark.org/hewww.commonmark.org/he<lp

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +7 +//- - - - - - - - -// +http://commonmark.org + +(Visit https://encrypted.google.com/search?q=Markup+(business)) + +Anonymous FTP is available at ftp://foo.bar.baz. +//- - - - - - - - -// +

                  http://commonmark.org

                  +

                  (Visit https://encrypted.google.com/search?q=Markup+(business))

                  +

                  Anonymous FTP is available at ftp://foo.bar.baz.

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +8 +//- - - - - - - - -// +foo@bar.baz +//- - - - - - - - -// +

                  foo@bar.baz

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +9 +//- - - - - - - - -// +hello@mail+xyz.example isn't valid, but hello+xyz@mail.example is. +//- - - - - - - - -// +

                  hello@mail+xyz.example isn't valid, but hello+xyz@mail.example is.

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +10 +//- - - - - - - - -// +a.b-c_d@a.b + +a.b-c_d@a.b. + +a.b-c_d@a.b- + +a.b-c_d@a.b_ +//- - - - - - - - -// +

                  a.b-c_d@a.b

                  +

                  a.b-c_d@a.b.

                  +

                  a.b-c_d@a.b-

                  +

                  a.b-c_d@a.b_

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +11 +//- - - - - - - - -// +https://github.com#sun,mon +//- - - - - - - - -// +

                  https://github.com#sun,mon

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +12 +//- - - - - - - - -// +https://github.com/sunday's +//- - - - - - - - -// +

                  https://github.com/sunday's

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +13 +//- - - - - - - - -// +https://github.com?q=stars:>1 +//- - - - - - - - -// +

                  https://github.com?q=stars:>1

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +14 +//- - - - - - - - -// +[https://google.com](https://google.com) +//- - - - - - - - -// +

                  https://google.com

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +15 +//- - - - - - - - -// +This is a `git@github.com:vim/vim` +//- - - - - - - - -// +

                  This is a git@github.com:vim/vim

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +16 +//- - - - - - - - -// +https://nic.college +//- - - - - - - - -// +

                  https://nic.college

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +17 +//- - - - - - - - -// +http://server.intranet.acme.com:1313 +//- - - - - - - - -// +

                  http://server.intranet.acme.com:1313

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +18 +//- - - - - - - - -// +https://g.page/foo +//- - - - - - - - -// +

                  https://g.page/foo

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +19: Trailing punctuation (specifically, ?, !, ., ,, :, *, _, and ~) will not be considered part of the autolink +//- - - - - - - - -// +__http://test.com/~/a__ +__http://test.com/~/__ +__http://test.com/~__ +__http://test.com/a/~__ +//- - - - - - - - -// +

                  http://test.com/~/a +http://test.com/~/ +http://test.com/~ +http://test.com/a/~

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/strikethrough.txt b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/strikethrough.txt new file mode 100644 index 000000000..dbb48f651 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/strikethrough.txt @@ -0,0 +1,18 @@ +1 +//- - - - - - - - -// +~~Hi~~ Hello, world! +//- - - - - - - - -// +

                  Hi Hello, world!

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +2 +//- - - - - - - - -// +This ~~has a + +new paragraph~~. +//- - - - - - - - -// +

                  This ~~has a

                  +

                  new paragraph~~.

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/table.txt b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/table.txt new file mode 100644 index 000000000..2dc26f2b6 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/table.txt @@ -0,0 +1,255 @@ +1 +//- - - - - - - - -// +| foo | bar | +| --- | --- | +| baz | bim | +//- - - - - - - - -// + + + + + + + + + + + + + +
                  foobar
                  bazbim
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +2 +//- - - - - - - - -// +| abc | defghi | +:-: | -----------: +bar | baz +//- - - - - - - - -// + + + + + + + + + + + + + +
                  abcdefghi
                  barbaz
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +3 +//- - - - - - - - -// +| f\|oo | +| ------ | +| b `\|` az | +| b **\|** im | +//- - - - - - - - -// + + + + + + + + + + + + + + +
                  f|oo
                  b | az
                  b | im
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +4 +//- - - - - - - - -// +| abc | def | +| --- | --- | +| bar | baz | +> bar +//- - - - - - - - -// + + + + + + + + + + + + + +
                  abcdef
                  barbaz
                  +
                  +

                  bar

                  +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +5 +//- - - - - - - - -// +| abc | def | +| --- | --- | +| bar | baz | +bar + +bar +//- - - - - - - - -// + + + + + + + + + + + + + + + + + +
                  abcdef
                  barbaz
                  bar
                  +

                  bar

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +6 +//- - - - - - - - -// +| abc | def | +| --- | +| bar | +//- - - - - - - - -// +

                  | abc | def | +| --- | +| bar |

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +7 +//- - - - - - - - -// +| abc | def | +| --- | --- | +| bar | +| bar | baz | boo | +//- - - - - - - - -// + + + + + + + + + + + + + + + + + +
                  abcdef
                  bar
                  barbaz
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +8 +//- - - - - - - - -// +| abc | def | +| --- | --- | +//- - - - - - - - -// + + + + + + + +
                  abcdef
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +9 +//- - - - - - - - -// +Foo|Bar +---|--- +`Yoyo`|Dyne +//- - - - - - - - -// + + + + + + + + + + + + + +
                  FooBar
                  YoyoDyne
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +10 +//- - - - - - - - -// +foo|bar +---|--- +`\` | second column +//- - - - - - - - -// + + + + + + + + + + + + + +
                  foobar
                  \second column
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + +11: Tables can interrupt paragraph +//- - - - - - - - -// +**xxx** +| hello | hi | +| :----: | :----:| +//- - - - - - - - -// +

                  xxx

                  + + + + + + + +
                  hellohi
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/tasklist.txt b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/tasklist.txt new file mode 100644 index 000000000..dad65c62b --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/tasklist.txt @@ -0,0 +1,30 @@ +1 +//- - - - - - - - -// +- [ ] foo +- [x] bar +//- - - - - - - - -// +
                    +
                  • foo
                  • +
                  • bar
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + + + +2 +//- - - - - - - - -// +- [x] foo + - [ ] bar + - [x] baz +- [ ] bim +//- - - - - - - - -// +
                    +
                  • foo +
                      +
                    • bar
                    • +
                    • baz
                    • +
                    +
                  • +
                  • bim
                  • +
                  +//= = = = = = = = = = = = = = = = = = = = = = = =// diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/typographer.txt b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/typographer.txt new file mode 100644 index 000000000..ef90bce34 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/_test/typographer.txt @@ -0,0 +1,66 @@ +1 +//- - - - - - - - -// +This should 'be' replaced +//- - - - - - - - -// +

                  This should ‘be’ replaced

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +2 +//- - - - - - - - -// +This should "be" replaced +//- - - - - - - - -// +

                  This should “be” replaced

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +3 +//- - - - - - - - -// +**--** *---* a...<< b>> +//- - - - - - - - -// +

                  a…« b»

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +4 +//- - - - - - - - -// +Some say '90s, others say 90's, but I can't say which is best. +//- - - - - - - - -// +

                  Some say ’90s, others say 90’s, but I can’t say which is best.

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +5: contractions +//- - - - - - - - -// +Alice's, I'm ,Don't, You'd + +I've, I'll, You're + +[Cat][]'s Pajamas + +Yahoo!'s + +[Cat]: http://example.com +//- - - - - - - - -// +

                  Alice’s, I’m ,Don’t, You’d

                  +

                  I’ve, I’ll, You’re

                  +

                  Cat’s Pajamas

                  +

                  Yahoo!’s

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +6: "" after digits are an inch +//- - - - - - - - -// +My height is 5'6"". +//- - - - - - - - -// +

                  My height is 5'6"".

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +7: quote followed by ,.?! and spaces maybe a closer +//- - - - - - - - -// +reported "issue 1 (IE-only)", "issue 2", 'issue3 (FF-only)', 'issue4' +//- - - - - - - - -// +

                  reported “issue 1 (IE-only)”, “issue 2”, ‘issue3 (FF-only)’, ‘issue4’

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// + +8: handle inches in qoutes +//- - - - - - - - -// +"Monitor 21"" and "Monitor"" +//- - - - - - - - -// +

                  “Monitor 21"” and “Monitor”"

                  +//= = = = = = = = = = = = = = = = = = = = = = = =// diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/definition_list.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/definition_list.go new file mode 100644 index 000000000..1beffb3aa --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/definition_list.go @@ -0,0 +1,83 @@ +package ast + +import ( + gast "github.com/yuin/goldmark/ast" +) + +// A DefinitionList struct represents a definition list of Markdown +// (PHPMarkdownExtra) text. +type DefinitionList struct { + gast.BaseBlock + Offset int + TemporaryParagraph *gast.Paragraph +} + +// Dump implements Node.Dump. +func (n *DefinitionList) Dump(source []byte, level int) { + gast.DumpHelper(n, source, level, nil, nil) +} + +// KindDefinitionList is a NodeKind of the DefinitionList node. +var KindDefinitionList = gast.NewNodeKind("DefinitionList") + +// Kind implements Node.Kind. +func (n *DefinitionList) Kind() gast.NodeKind { + return KindDefinitionList +} + +// NewDefinitionList returns a new DefinitionList node. +func NewDefinitionList(offset int, para *gast.Paragraph) *DefinitionList { + return &DefinitionList{ + Offset: offset, + TemporaryParagraph: para, + } +} + +// A DefinitionTerm struct represents a definition list term of Markdown +// (PHPMarkdownExtra) text. +type DefinitionTerm struct { + gast.BaseBlock +} + +// Dump implements Node.Dump. +func (n *DefinitionTerm) Dump(source []byte, level int) { + gast.DumpHelper(n, source, level, nil, nil) +} + +// KindDefinitionTerm is a NodeKind of the DefinitionTerm node. +var KindDefinitionTerm = gast.NewNodeKind("DefinitionTerm") + +// Kind implements Node.Kind. +func (n *DefinitionTerm) Kind() gast.NodeKind { + return KindDefinitionTerm +} + +// NewDefinitionTerm returns a new DefinitionTerm node. +func NewDefinitionTerm() *DefinitionTerm { + return &DefinitionTerm{} +} + +// A DefinitionDescription struct represents a definition list description of Markdown +// (PHPMarkdownExtra) text. +type DefinitionDescription struct { + gast.BaseBlock + IsTight bool +} + +// Dump implements Node.Dump. +func (n *DefinitionDescription) Dump(source []byte, level int) { + gast.DumpHelper(n, source, level, nil, nil) +} + +// KindDefinitionDescription is a NodeKind of the DefinitionDescription node. +var KindDefinitionDescription = gast.NewNodeKind("DefinitionDescription") + +// Kind implements Node.Kind. +func (n *DefinitionDescription) Kind() gast.NodeKind { + return KindDefinitionDescription +} + +// NewDefinitionDescription returns a new DefinitionDescription node. +func NewDefinitionDescription() *DefinitionDescription { + return &DefinitionDescription{} +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/footnote.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/footnote.go new file mode 100644 index 000000000..dedbab4f8 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/footnote.go @@ -0,0 +1,132 @@ +package ast + +import ( + "fmt" + + gast "github.com/yuin/goldmark/ast" +) + +// A FootnoteLink struct represents a link to a footnote of Markdown +// (PHP Markdown Extra) text. +type FootnoteLink struct { + gast.BaseInline + Index int + RefCount int +} + +// Dump implements Node.Dump. +func (n *FootnoteLink) Dump(source []byte, level int) { + m := map[string]string{} + m["Index"] = fmt.Sprintf("%v", n.Index) + m["RefCount"] = fmt.Sprintf("%v", n.RefCount) + gast.DumpHelper(n, source, level, m, nil) +} + +// KindFootnoteLink is a NodeKind of the FootnoteLink node. +var KindFootnoteLink = gast.NewNodeKind("FootnoteLink") + +// Kind implements Node.Kind. +func (n *FootnoteLink) Kind() gast.NodeKind { + return KindFootnoteLink +} + +// NewFootnoteLink returns a new FootnoteLink node. +func NewFootnoteLink(index int) *FootnoteLink { + return &FootnoteLink{ + Index: index, + RefCount: 0, + } +} + +// A FootnoteBacklink struct represents a link to a footnote of Markdown +// (PHP Markdown Extra) text. +type FootnoteBacklink struct { + gast.BaseInline + Index int + RefCount int +} + +// Dump implements Node.Dump. +func (n *FootnoteBacklink) Dump(source []byte, level int) { + m := map[string]string{} + m["Index"] = fmt.Sprintf("%v", n.Index) + m["RefCount"] = fmt.Sprintf("%v", n.RefCount) + gast.DumpHelper(n, source, level, m, nil) +} + +// KindFootnoteBacklink is a NodeKind of the FootnoteBacklink node. +var KindFootnoteBacklink = gast.NewNodeKind("FootnoteBacklink") + +// Kind implements Node.Kind. +func (n *FootnoteBacklink) Kind() gast.NodeKind { + return KindFootnoteBacklink +} + +// NewFootnoteBacklink returns a new FootnoteBacklink node. +func NewFootnoteBacklink(index int) *FootnoteBacklink { + return &FootnoteBacklink{ + Index: index, + RefCount: 0, + } +} + +// A Footnote struct represents a footnote of Markdown +// (PHP Markdown Extra) text. +type Footnote struct { + gast.BaseBlock + Ref []byte + Index int +} + +// Dump implements Node.Dump. +func (n *Footnote) Dump(source []byte, level int) { + m := map[string]string{} + m["Index"] = fmt.Sprintf("%v", n.Index) + m["Ref"] = fmt.Sprintf("%s", n.Ref) + gast.DumpHelper(n, source, level, m, nil) +} + +// KindFootnote is a NodeKind of the Footnote node. +var KindFootnote = gast.NewNodeKind("Footnote") + +// Kind implements Node.Kind. +func (n *Footnote) Kind() gast.NodeKind { + return KindFootnote +} + +// NewFootnote returns a new Footnote node. +func NewFootnote(ref []byte) *Footnote { + return &Footnote{ + Ref: ref, + Index: -1, + } +} + +// A FootnoteList struct represents footnotes of Markdown +// (PHP Markdown Extra) text. +type FootnoteList struct { + gast.BaseBlock + Count int +} + +// Dump implements Node.Dump. +func (n *FootnoteList) Dump(source []byte, level int) { + m := map[string]string{} + m["Count"] = fmt.Sprintf("%v", n.Count) + gast.DumpHelper(n, source, level, m, nil) +} + +// KindFootnoteList is a NodeKind of the FootnoteList node. +var KindFootnoteList = gast.NewNodeKind("FootnoteList") + +// Kind implements Node.Kind. +func (n *FootnoteList) Kind() gast.NodeKind { + return KindFootnoteList +} + +// NewFootnoteList returns a new FootnoteList node. +func NewFootnoteList() *FootnoteList { + return &FootnoteList{ + Count: 0, + } +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/strikethrough.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/strikethrough.go new file mode 100644 index 000000000..a9216b72e --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/strikethrough.go @@ -0,0 +1,29 @@ +// Package ast defines AST nodes that represents extension's elements +package ast + +import ( + gast "github.com/yuin/goldmark/ast" +) + +// A Strikethrough struct represents a strikethrough of GFM text. +type Strikethrough struct { + gast.BaseInline +} + +// Dump implements Node.Dump. +func (n *Strikethrough) Dump(source []byte, level int) { + gast.DumpHelper(n, source, level, nil, nil) +} + +// KindStrikethrough is a NodeKind of the Strikethrough node. +var KindStrikethrough = gast.NewNodeKind("Strikethrough") + +// Kind implements Node.Kind. +func (n *Strikethrough) Kind() gast.NodeKind { + return KindStrikethrough +} + +// NewStrikethrough returns a new Strikethrough node. +func NewStrikethrough() *Strikethrough { + return &Strikethrough{} +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/table.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/table.go new file mode 100644 index 000000000..1d8890b5e --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/table.go @@ -0,0 +1,157 @@ +package ast + +import ( + "fmt" + gast "github.com/yuin/goldmark/ast" + "strings" +) + +// Alignment is a text alignment of table cells. +type Alignment int + +const ( + // AlignLeft indicates text should be left justified. + AlignLeft Alignment = iota + 1 + + // AlignRight indicates text should be right justified. + AlignRight + + // AlignCenter indicates text should be centered. + AlignCenter + + // AlignNone indicates text should be aligned by default manner. + AlignNone +) + +func (a Alignment) String() string { + switch a { + case AlignLeft: + return "left" + case AlignRight: + return "right" + case AlignCenter: + return "center" + case AlignNone: + return "none" + } + return "" +} + +// A Table struct represents a table of Markdown(GFM) text. +type Table struct { + gast.BaseBlock + + // Alignments returns alignments of the columns. + Alignments []Alignment +} + +// Dump implements Node.Dump +func (n *Table) Dump(source []byte, level int) { + gast.DumpHelper(n, source, level, nil, func(level int) { + indent := strings.Repeat(" ", level) + fmt.Printf("%sAlignments {\n", indent) + for i, alignment := range n.Alignments { + indent2 := strings.Repeat(" ", level+1) + fmt.Printf("%s%s", indent2, alignment.String()) + if i != len(n.Alignments)-1 { + fmt.Println("") + } + } + fmt.Printf("\n%s}\n", indent) + }) +} + +// KindTable is a NodeKind of the Table node. +var KindTable = gast.NewNodeKind("Table") + +// Kind implements Node.Kind. +func (n *Table) Kind() gast.NodeKind { + return KindTable +} + +// NewTable returns a new Table node. +func NewTable() *Table { + return &Table{ + Alignments: []Alignment{}, + } +} + +// A TableRow struct represents a table row of Markdown(GFM) text. +type TableRow struct { + gast.BaseBlock + Alignments []Alignment +} + +// Dump implements Node.Dump. +func (n *TableRow) Dump(source []byte, level int) { + gast.DumpHelper(n, source, level, nil, nil) +} + +// KindTableRow is a NodeKind of the TableRow node. +var KindTableRow = gast.NewNodeKind("TableRow") + +// Kind implements Node.Kind. +func (n *TableRow) Kind() gast.NodeKind { + return KindTableRow +} + +// NewTableRow returns a new TableRow node. +func NewTableRow(alignments []Alignment) *TableRow { + return &TableRow{} +} + +// A TableHeader struct represents a table header of Markdown(GFM) text. +type TableHeader struct { + gast.BaseBlock + Alignments []Alignment +} + +// KindTableHeader is a NodeKind of the TableHeader node. +var KindTableHeader = gast.NewNodeKind("TableHeader") + +// Kind implements Node.Kind. +func (n *TableHeader) Kind() gast.NodeKind { + return KindTableHeader +} + +// Dump implements Node.Dump. +func (n *TableHeader) Dump(source []byte, level int) { + gast.DumpHelper(n, source, level, nil, nil) +} + +// NewTableHeader returns a new TableHeader node. +func NewTableHeader(row *TableRow) *TableHeader { + n := &TableHeader{} + for c := row.FirstChild(); c != nil; { + next := c.NextSibling() + n.AppendChild(n, c) + c = next + } + return n +} + +// A TableCell struct represents a table cell of a Markdown(GFM) text. +type TableCell struct { + gast.BaseBlock + Alignment Alignment +} + +// Dump implements Node.Dump. +func (n *TableCell) Dump(source []byte, level int) { + gast.DumpHelper(n, source, level, nil, nil) +} + +// KindTableCell is a NodeKind of the TableCell node. +var KindTableCell = gast.NewNodeKind("TableCell") + +// Kind implements Node.Kind. +func (n *TableCell) Kind() gast.NodeKind { + return KindTableCell +} + +// NewTableCell returns a new TableCell node. +func NewTableCell() *TableCell { + return &TableCell{ + Alignment: AlignNone, + } +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/tasklist.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/tasklist.go new file mode 100644 index 000000000..670cc1495 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/ast/tasklist.go @@ -0,0 +1,35 @@ +package ast + +import ( + "fmt" + gast "github.com/yuin/goldmark/ast" +) + +// A TaskCheckBox struct represents a checkbox of a task list. +type TaskCheckBox struct { + gast.BaseInline + IsChecked bool +} + +// Dump implements Node.Dump. +func (n *TaskCheckBox) Dump(source []byte, level int) { + m := map[string]string{ + "Checked": fmt.Sprintf("%v", n.IsChecked), + } + gast.DumpHelper(n, source, level, m, nil) +} + +// KindTaskCheckBox is a NodeKind of the TaskCheckBox node. +var KindTaskCheckBox = gast.NewNodeKind("TaskCheckBox") + +// Kind implements Node.Kind. +func (n *TaskCheckBox) Kind() gast.NodeKind { + return KindTaskCheckBox +} + +// NewTaskCheckBox returns a new TaskCheckBox node. +func NewTaskCheckBox(checked bool) *TaskCheckBox { + return &TaskCheckBox{ + IsChecked: checked, + } +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/definition_list.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/definition_list.go new file mode 100644 index 000000000..d2f5fecbe --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/definition_list.go @@ -0,0 +1,270 @@ +package extension + +import ( + "github.com/yuin/goldmark" + gast "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/extension/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +type definitionListParser struct { +} + +var defaultDefinitionListParser = &definitionListParser{} + +// NewDefinitionListParser return a new parser.BlockParser that +// can parse PHP Markdown Extra Definition lists. +func NewDefinitionListParser() parser.BlockParser { + return defaultDefinitionListParser +} + +func (b *definitionListParser) Trigger() []byte { + return []byte{':'} +} + +func (b *definitionListParser) Open(parent gast.Node, reader text.Reader, pc parser.Context) (gast.Node, parser.State) { + if _, ok := parent.(*ast.DefinitionList); ok { + return nil, parser.NoChildren + } + line, _ := reader.PeekLine() + pos := pc.BlockOffset() + indent := pc.BlockIndent() + if pos < 0 || line[pos] != ':' || indent != 0 { + return nil, parser.NoChildren + } + + last := parent.LastChild() + // need 1 or more spaces after ':' + w, _ := util.IndentWidth(line[pos+1:], pos+1) + if w < 1 { + return nil, parser.NoChildren + } + if w >= 8 { // starts with indented code + w = 5 + } + w += pos + 1 /* 1 = ':' */ + + para, lastIsParagraph := last.(*gast.Paragraph) + var list *ast.DefinitionList + status := parser.HasChildren + var ok bool + if lastIsParagraph { + list, ok = last.PreviousSibling().(*ast.DefinitionList) + if ok { // is not first item + list.Offset = w + list.TemporaryParagraph = para + } else { // is first item + list = ast.NewDefinitionList(w, para) + status |= parser.RequireParagraph + } + } else if list, ok = last.(*ast.DefinitionList); ok { // multiple description + list.Offset = w + list.TemporaryParagraph = nil + } else { + return nil, parser.NoChildren + } + + return list, status +} + +func (b *definitionListParser) Continue(node gast.Node, reader text.Reader, pc parser.Context) parser.State { + line, _ := reader.PeekLine() + if util.IsBlank(line) { + return parser.Continue | parser.HasChildren + } + list, _ := node.(*ast.DefinitionList) + w, _ := util.IndentWidth(line, reader.LineOffset()) + if w < list.Offset { + return parser.Close + } + pos, padding := util.IndentPosition(line, reader.LineOffset(), list.Offset) + reader.AdvanceAndSetPadding(pos, padding) + return parser.Continue | parser.HasChildren +} + +func (b *definitionListParser) Close(node gast.Node, reader text.Reader, pc parser.Context) { + // nothing to do +} + +func (b *definitionListParser) CanInterruptParagraph() bool { + return true +} + +func (b *definitionListParser) CanAcceptIndentedLine() bool { + return false +} + +type definitionDescriptionParser struct { +} + +var defaultDefinitionDescriptionParser = &definitionDescriptionParser{} + +// NewDefinitionDescriptionParser return a new parser.BlockParser that +// can parse definition description starts with ':'. +func NewDefinitionDescriptionParser() parser.BlockParser { + return defaultDefinitionDescriptionParser +} + +func (b *definitionDescriptionParser) Trigger() []byte { + return []byte{':'} +} + +func (b *definitionDescriptionParser) Open(parent gast.Node, reader text.Reader, pc parser.Context) (gast.Node, parser.State) { + line, _ := reader.PeekLine() + pos := pc.BlockOffset() + indent := pc.BlockIndent() + if pos < 0 || line[pos] != ':' || indent != 0 { + return nil, parser.NoChildren + } + list, _ := parent.(*ast.DefinitionList) + if list == nil { + return nil, parser.NoChildren + } + para := list.TemporaryParagraph + list.TemporaryParagraph = nil + if para != nil { + lines := para.Lines() + l := lines.Len() + for i := 0; i < l; i++ { + term := ast.NewDefinitionTerm() + segment := lines.At(i) + term.Lines().Append(segment.TrimRightSpace(reader.Source())) + list.AppendChild(list, term) + } + para.Parent().RemoveChild(para.Parent(), para) + } + cpos, padding := util.IndentPosition(line[pos+1:], pos+1, list.Offset-pos-1) + reader.AdvanceAndSetPadding(cpos+1, padding) + + return ast.NewDefinitionDescription(), parser.HasChildren +} + +func (b *definitionDescriptionParser) Continue(node gast.Node, reader text.Reader, pc parser.Context) parser.State { + // definitionListParser detects end of the description. + // so this method will never be called. + return parser.Continue | parser.HasChildren +} + +func (b *definitionDescriptionParser) Close(node gast.Node, reader text.Reader, pc parser.Context) { + desc := node.(*ast.DefinitionDescription) + desc.IsTight = !desc.HasBlankPreviousLines() + if desc.IsTight { + for gc := desc.FirstChild(); gc != nil; gc = gc.NextSibling() { + paragraph, ok := gc.(*gast.Paragraph) + if ok { + textBlock := gast.NewTextBlock() + textBlock.SetLines(paragraph.Lines()) + desc.ReplaceChild(desc, paragraph, textBlock) + } + } + } +} + +func (b *definitionDescriptionParser) CanInterruptParagraph() bool { + return true +} + +func (b *definitionDescriptionParser) CanAcceptIndentedLine() bool { + return false +} + +// DefinitionListHTMLRenderer is a renderer.NodeRenderer implementation that +// renders DefinitionList nodes. +type DefinitionListHTMLRenderer struct { + html.Config +} + +// NewDefinitionListHTMLRenderer returns a new DefinitionListHTMLRenderer. +func NewDefinitionListHTMLRenderer(opts ...html.Option) renderer.NodeRenderer { + r := &DefinitionListHTMLRenderer{ + Config: html.NewConfig(), + } + for _, opt := range opts { + opt.SetHTMLOption(&r.Config) + } + return r +} + +// RegisterFuncs implements renderer.NodeRenderer.RegisterFuncs. +func (r *DefinitionListHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) { + reg.Register(ast.KindDefinitionList, r.renderDefinitionList) + reg.Register(ast.KindDefinitionTerm, r.renderDefinitionTerm) + reg.Register(ast.KindDefinitionDescription, r.renderDefinitionDescription) +} + +// DefinitionListAttributeFilter defines attribute names which dl elements can have. +var DefinitionListAttributeFilter = html.GlobalAttributeFilter + +func (r *DefinitionListHTMLRenderer) renderDefinitionList(w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { + if entering { + if n.Attributes() != nil { + _, _ = w.WriteString("\n") + } else { + _, _ = w.WriteString("
                  \n") + } + } else { + _, _ = w.WriteString("
                  \n") + } + return gast.WalkContinue, nil +} + +// DefinitionTermAttributeFilter defines attribute names which dd elements can have. +var DefinitionTermAttributeFilter = html.GlobalAttributeFilter + +func (r *DefinitionListHTMLRenderer) renderDefinitionTerm(w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { + if entering { + if n.Attributes() != nil { + _, _ = w.WriteString("') + } else { + _, _ = w.WriteString("
                  ") + } + } else { + _, _ = w.WriteString("
                  \n") + } + return gast.WalkContinue, nil +} + +// DefinitionDescriptionAttributeFilter defines attribute names which dd elements can have. +var DefinitionDescriptionAttributeFilter = html.GlobalAttributeFilter + +func (r *DefinitionListHTMLRenderer) renderDefinitionDescription(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { + if entering { + n := node.(*ast.DefinitionDescription) + _, _ = w.WriteString("") + } else { + _, _ = w.WriteString(">\n") + } + } else { + _, _ = w.WriteString("\n") + } + return gast.WalkContinue, nil +} + +type definitionList struct { +} + +// DefinitionList is an extension that allow you to use PHP Markdown Extra Definition lists. +var DefinitionList = &definitionList{} + +func (e *definitionList) Extend(m goldmark.Markdown) { + m.Parser().AddOptions(parser.WithBlockParsers( + util.Prioritized(NewDefinitionListParser(), 101), + util.Prioritized(NewDefinitionDescriptionParser(), 102), + )) + m.Renderer().AddOptions(renderer.WithNodeRenderers( + util.Prioritized(NewDefinitionListHTMLRenderer(), 500), + )) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/definition_list_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/definition_list_test.go new file mode 100644 index 000000000..d9dfa6cd8 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/definition_list_test.go @@ -0,0 +1,21 @@ +package extension + +import ( + "testing" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/testutil" +) + +func TestDefinitionList(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + DefinitionList, + ), + ) + testutil.DoTestCaseFile(markdown, "_test/definition_list.txt", t, testutil.ParseCliCaseArg()...) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/footnote.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/footnote.go new file mode 100644 index 000000000..d4552e5a4 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/footnote.go @@ -0,0 +1,670 @@ +package extension + +import ( + "bytes" + "strconv" + + "github.com/yuin/goldmark" + gast "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/extension/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +var footnoteListKey = parser.NewContextKey() +var footnoteLinkListKey = parser.NewContextKey() + +type footnoteBlockParser struct { +} + +var defaultFootnoteBlockParser = &footnoteBlockParser{} + +// NewFootnoteBlockParser returns a new parser.BlockParser that can parse +// footnotes of the Markdown(PHP Markdown Extra) text. +func NewFootnoteBlockParser() parser.BlockParser { + return defaultFootnoteBlockParser +} + +func (b *footnoteBlockParser) Trigger() []byte { + return []byte{'['} +} + +func (b *footnoteBlockParser) Open(parent gast.Node, reader text.Reader, pc parser.Context) (gast.Node, parser.State) { + line, segment := reader.PeekLine() + pos := pc.BlockOffset() + if pos < 0 || line[pos] != '[' { + return nil, parser.NoChildren + } + pos++ + if pos > len(line)-1 || line[pos] != '^' { + return nil, parser.NoChildren + } + open := pos + 1 + closes := 0 + closure := util.FindClosure(line[pos+1:], '[', ']', false, false) + closes = pos + 1 + closure + next := closes + 1 + if closure > -1 { + if next >= len(line) || line[next] != ':' { + return nil, parser.NoChildren + } + } else { + return nil, parser.NoChildren + } + padding := segment.Padding + label := reader.Value(text.NewSegment(segment.Start+open-padding, segment.Start+closes-padding)) + if util.IsBlank(label) { + return nil, parser.NoChildren + } + item := ast.NewFootnote(label) + + pos = next + 1 - padding + if pos >= len(line) { + reader.Advance(pos) + return item, parser.NoChildren + } + reader.AdvanceAndSetPadding(pos, padding) + return item, parser.HasChildren +} + +func (b *footnoteBlockParser) Continue(node gast.Node, reader text.Reader, pc parser.Context) parser.State { + line, _ := reader.PeekLine() + if util.IsBlank(line) { + return parser.Continue | parser.HasChildren + } + childpos, padding := util.IndentPosition(line, reader.LineOffset(), 4) + if childpos < 0 { + return parser.Close + } + reader.AdvanceAndSetPadding(childpos, padding) + return parser.Continue | parser.HasChildren +} + +func (b *footnoteBlockParser) Close(node gast.Node, reader text.Reader, pc parser.Context) { + var list *ast.FootnoteList + if tlist := pc.Get(footnoteListKey); tlist != nil { + list = tlist.(*ast.FootnoteList) + } else { + list = ast.NewFootnoteList() + pc.Set(footnoteListKey, list) + node.Parent().InsertBefore(node.Parent(), node, list) + } + node.Parent().RemoveChild(node.Parent(), node) + list.AppendChild(list, node) +} + +func (b *footnoteBlockParser) CanInterruptParagraph() bool { + return true +} + +func (b *footnoteBlockParser) CanAcceptIndentedLine() bool { + return false +} + +type footnoteParser struct { +} + +var defaultFootnoteParser = &footnoteParser{} + +// NewFootnoteParser returns a new parser.InlineParser that can parse +// footnote links of the Markdown(PHP Markdown Extra) text. +func NewFootnoteParser() parser.InlineParser { + return defaultFootnoteParser +} + +func (s *footnoteParser) Trigger() []byte { + // footnote syntax probably conflict with the image syntax. + // So we need trigger this parser with '!'. + return []byte{'!', '['} +} + +func (s *footnoteParser) Parse(parent gast.Node, block text.Reader, pc parser.Context) gast.Node { + line, segment := block.PeekLine() + pos := 1 + if len(line) > 0 && line[0] == '!' { + pos++ + } + if pos >= len(line) || line[pos] != '^' { + return nil + } + pos++ + if pos >= len(line) { + return nil + } + open := pos + closure := util.FindClosure(line[pos:], '[', ']', false, false) + if closure < 0 { + return nil + } + closes := pos + closure + value := block.Value(text.NewSegment(segment.Start+open, segment.Start+closes)) + block.Advance(closes + 1) + + var list *ast.FootnoteList + if tlist := pc.Get(footnoteListKey); tlist != nil { + list = tlist.(*ast.FootnoteList) + } + if list == nil { + return nil + } + index := 0 + for def := list.FirstChild(); def != nil; def = def.NextSibling() { + d := def.(*ast.Footnote) + if bytes.Equal(d.Ref, value) { + if d.Index < 0 { + list.Count += 1 + d.Index = list.Count + } + index = d.Index + break + } + } + if index == 0 { + return nil + } + + fnlink := ast.NewFootnoteLink(index) + var fnlist []*ast.FootnoteLink + if tmp := pc.Get(footnoteLinkListKey); tmp != nil { + fnlist = tmp.([]*ast.FootnoteLink) + } else { + fnlist = []*ast.FootnoteLink{} + pc.Set(footnoteLinkListKey, fnlist) + } + pc.Set(footnoteLinkListKey, append(fnlist, fnlink)) + if line[0] == '!' { + parent.AppendChild(parent, gast.NewTextSegment(text.NewSegment(segment.Start, segment.Start+1))) + } + + return fnlink +} + +type footnoteASTTransformer struct { +} + +var defaultFootnoteASTTransformer = &footnoteASTTransformer{} + +// NewFootnoteASTTransformer returns a new parser.ASTTransformer that +// insert a footnote list to the last of the document. +func NewFootnoteASTTransformer() parser.ASTTransformer { + return defaultFootnoteASTTransformer +} + +func (a *footnoteASTTransformer) Transform(node *gast.Document, reader text.Reader, pc parser.Context) { + var list *ast.FootnoteList + var fnlist []*ast.FootnoteLink + if tmp := pc.Get(footnoteListKey); tmp != nil { + list = tmp.(*ast.FootnoteList) + } + if tmp := pc.Get(footnoteLinkListKey); tmp != nil { + fnlist = tmp.([]*ast.FootnoteLink) + } + + pc.Set(footnoteListKey, nil) + pc.Set(footnoteLinkListKey, nil) + + if list == nil { + return + } + + counter := map[int]int{} + if fnlist != nil { + for _, fnlink := range fnlist { + if fnlink.Index >= 0 { + counter[fnlink.Index]++ + } + } + for _, fnlink := range fnlist { + fnlink.RefCount = counter[fnlink.Index] + } + } + for footnote := list.FirstChild(); footnote != nil; { + var container gast.Node = footnote + next := footnote.NextSibling() + if fc := container.LastChild(); fc != nil && gast.IsParagraph(fc) { + container = fc + } + fn := footnote.(*ast.Footnote) + index := fn.Index + if index < 0 { + list.RemoveChild(list, footnote) + } else { + backLink := ast.NewFootnoteBacklink(index) + backLink.RefCount = counter[index] + container.AppendChild(container, backLink) + } + footnote = next + } + list.SortChildren(func(n1, n2 gast.Node) int { + if n1.(*ast.Footnote).Index < n2.(*ast.Footnote).Index { + return -1 + } + return 1 + }) + if list.Count <= 0 { + list.Parent().RemoveChild(list.Parent(), list) + return + } + + node.AppendChild(node, list) +} + +// FootnoteConfig holds configuration values for the footnote extension. +// +// Link* and Backlink* configurations have some variables: +// Occurrances of “^^” in the string will be replaced by the +// corresponding footnote number in the HTML output. +// Occurrances of “%%” will be replaced by a number for the +// reference (footnotes can have multiple references). +type FootnoteConfig struct { + html.Config + + // IDPrefix is a prefix for the id attributes generated by footnotes. + IDPrefix []byte + + // IDPrefix is a function that determines the id attribute for given Node. + IDPrefixFunction func(gast.Node) []byte + + // LinkTitle is an optional title attribute for footnote links. + LinkTitle []byte + + // BacklinkTitle is an optional title attribute for footnote backlinks. + BacklinkTitle []byte + + // LinkClass is a class for footnote links. + LinkClass []byte + + // BacklinkClass is a class for footnote backlinks. + BacklinkClass []byte + + // BacklinkHTML is an HTML content for footnote backlinks. + BacklinkHTML []byte +} + +// FootnoteOption interface is a functional option interface for the extension. +type FootnoteOption interface { + renderer.Option + // SetFootnoteOption sets given option to the extension. + SetFootnoteOption(*FootnoteConfig) +} + +// NewFootnoteConfig returns a new Config with defaults. +func NewFootnoteConfig() FootnoteConfig { + return FootnoteConfig{ + Config: html.NewConfig(), + LinkTitle: []byte(""), + BacklinkTitle: []byte(""), + LinkClass: []byte("footnote-ref"), + BacklinkClass: []byte("footnote-backref"), + BacklinkHTML: []byte("↩︎"), + } +} + +// SetOption implements renderer.SetOptioner. +func (c *FootnoteConfig) SetOption(name renderer.OptionName, value interface{}) { + switch name { + case optFootnoteIDPrefixFunction: + c.IDPrefixFunction = value.(func(gast.Node) []byte) + case optFootnoteIDPrefix: + c.IDPrefix = value.([]byte) + case optFootnoteLinkTitle: + c.LinkTitle = value.([]byte) + case optFootnoteBacklinkTitle: + c.BacklinkTitle = value.([]byte) + case optFootnoteLinkClass: + c.LinkClass = value.([]byte) + case optFootnoteBacklinkClass: + c.BacklinkClass = value.([]byte) + case optFootnoteBacklinkHTML: + c.BacklinkHTML = value.([]byte) + default: + c.Config.SetOption(name, value) + } +} + +type withFootnoteHTMLOptions struct { + value []html.Option +} + +func (o *withFootnoteHTMLOptions) SetConfig(c *renderer.Config) { + if o.value != nil { + for _, v := range o.value { + v.(renderer.Option).SetConfig(c) + } + } +} + +func (o *withFootnoteHTMLOptions) SetFootnoteOption(c *FootnoteConfig) { + if o.value != nil { + for _, v := range o.value { + v.SetHTMLOption(&c.Config) + } + } +} + +// WithFootnoteHTMLOptions is functional option that wraps goldmark HTMLRenderer options. +func WithFootnoteHTMLOptions(opts ...html.Option) FootnoteOption { + return &withFootnoteHTMLOptions{opts} +} + +const optFootnoteIDPrefix renderer.OptionName = "FootnoteIDPrefix" + +type withFootnoteIDPrefix struct { + value []byte +} + +func (o *withFootnoteIDPrefix) SetConfig(c *renderer.Config) { + c.Options[optFootnoteIDPrefix] = o.value +} + +func (o *withFootnoteIDPrefix) SetFootnoteOption(c *FootnoteConfig) { + c.IDPrefix = o.value +} + +// WithFootnoteIDPrefix is a functional option that is a prefix for the id attributes generated by footnotes. +func WithFootnoteIDPrefix(a []byte) FootnoteOption { + return &withFootnoteIDPrefix{a} +} + +const optFootnoteIDPrefixFunction renderer.OptionName = "FootnoteIDPrefixFunction" + +type withFootnoteIDPrefixFunction struct { + value func(gast.Node) []byte +} + +func (o *withFootnoteIDPrefixFunction) SetConfig(c *renderer.Config) { + c.Options[optFootnoteIDPrefixFunction] = o.value +} + +func (o *withFootnoteIDPrefixFunction) SetFootnoteOption(c *FootnoteConfig) { + c.IDPrefixFunction = o.value +} + +// WithFootnoteIDPrefixFunction is a functional option that is a prefix for the id attributes generated by footnotes. +func WithFootnoteIDPrefixFunction(a func(gast.Node) []byte) FootnoteOption { + return &withFootnoteIDPrefixFunction{a} +} + +const optFootnoteLinkTitle renderer.OptionName = "FootnoteLinkTitle" + +type withFootnoteLinkTitle struct { + value []byte +} + +func (o *withFootnoteLinkTitle) SetConfig(c *renderer.Config) { + c.Options[optFootnoteLinkTitle] = o.value +} + +func (o *withFootnoteLinkTitle) SetFootnoteOption(c *FootnoteConfig) { + c.LinkTitle = o.value +} + +// WithFootnoteLinkTitle is a functional option that is an optional title attribute for footnote links. +func WithFootnoteLinkTitle(a []byte) FootnoteOption { + return &withFootnoteLinkTitle{a} +} + +const optFootnoteBacklinkTitle renderer.OptionName = "FootnoteBacklinkTitle" + +type withFootnoteBacklinkTitle struct { + value []byte +} + +func (o *withFootnoteBacklinkTitle) SetConfig(c *renderer.Config) { + c.Options[optFootnoteBacklinkTitle] = o.value +} + +func (o *withFootnoteBacklinkTitle) SetFootnoteOption(c *FootnoteConfig) { + c.BacklinkTitle = o.value +} + +// WithFootnoteBacklinkTitle is a functional option that is an optional title attribute for footnote backlinks. +func WithFootnoteBacklinkTitle(a []byte) FootnoteOption { + return &withFootnoteBacklinkTitle{a} +} + +const optFootnoteLinkClass renderer.OptionName = "FootnoteLinkClass" + +type withFootnoteLinkClass struct { + value []byte +} + +func (o *withFootnoteLinkClass) SetConfig(c *renderer.Config) { + c.Options[optFootnoteLinkClass] = o.value +} + +func (o *withFootnoteLinkClass) SetFootnoteOption(c *FootnoteConfig) { + c.LinkClass = o.value +} + +// WithFootnoteLinkClass is a functional option that is a class for footnote links. +func WithFootnoteLinkClass(a []byte) FootnoteOption { + return &withFootnoteLinkClass{a} +} + +const optFootnoteBacklinkClass renderer.OptionName = "FootnoteBacklinkClass" + +type withFootnoteBacklinkClass struct { + value []byte +} + +func (o *withFootnoteBacklinkClass) SetConfig(c *renderer.Config) { + c.Options[optFootnoteBacklinkClass] = o.value +} + +func (o *withFootnoteBacklinkClass) SetFootnoteOption(c *FootnoteConfig) { + c.BacklinkClass = o.value +} + +// WithFootnoteBacklinkClass is a functional option that is a class for footnote backlinks. +func WithFootnoteBacklinkClass(a []byte) FootnoteOption { + return &withFootnoteBacklinkClass{a} +} + +const optFootnoteBacklinkHTML renderer.OptionName = "FootnoteBacklinkHTML" + +type withFootnoteBacklinkHTML struct { + value []byte +} + +func (o *withFootnoteBacklinkHTML) SetConfig(c *renderer.Config) { + c.Options[optFootnoteBacklinkHTML] = o.value +} + +func (o *withFootnoteBacklinkHTML) SetFootnoteOption(c *FootnoteConfig) { + c.BacklinkHTML = o.value +} + +// WithFootnoteBacklinkHTML is an HTML content for footnote backlinks. +func WithFootnoteBacklinkHTML(a []byte) FootnoteOption { + return &withFootnoteBacklinkHTML{a} +} + +// FootnoteHTMLRenderer is a renderer.NodeRenderer implementation that +// renders FootnoteLink nodes. +type FootnoteHTMLRenderer struct { + FootnoteConfig +} + +// NewFootnoteHTMLRenderer returns a new FootnoteHTMLRenderer. +func NewFootnoteHTMLRenderer(opts ...FootnoteOption) renderer.NodeRenderer { + r := &FootnoteHTMLRenderer{ + FootnoteConfig: NewFootnoteConfig(), + } + for _, opt := range opts { + opt.SetFootnoteOption(&r.FootnoteConfig) + } + return r +} + +// RegisterFuncs implements renderer.NodeRenderer.RegisterFuncs. +func (r *FootnoteHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) { + reg.Register(ast.KindFootnoteLink, r.renderFootnoteLink) + reg.Register(ast.KindFootnoteBacklink, r.renderFootnoteBacklink) + reg.Register(ast.KindFootnote, r.renderFootnote) + reg.Register(ast.KindFootnoteList, r.renderFootnoteList) +} + +func (r *FootnoteHTMLRenderer) renderFootnoteLink(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { + if entering { + n := node.(*ast.FootnoteLink) + is := strconv.Itoa(n.Index) + _, _ = w.WriteString(``) + + _, _ = w.WriteString(is) + _, _ = w.WriteString(``) + } + return gast.WalkContinue, nil +} + +func (r *FootnoteHTMLRenderer) renderFootnoteBacklink(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { + if entering { + n := node.(*ast.FootnoteBacklink) + is := strconv.Itoa(n.Index) + _, _ = w.WriteString(` `) + _, _ = w.Write(applyFootnoteTemplate(r.FootnoteConfig.BacklinkHTML, n.Index, n.RefCount)) + _, _ = w.WriteString(``) + } + return gast.WalkContinue, nil +} + +func (r *FootnoteHTMLRenderer) renderFootnote(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { + n := node.(*ast.Footnote) + is := strconv.Itoa(n.Index) + if entering { + _, _ = w.WriteString(`
                • \n") + } else { + _, _ = w.WriteString("
                • \n") + } + return gast.WalkContinue, nil +} + +func (r *FootnoteHTMLRenderer) renderFootnoteList(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { + tag := "section" + if r.Config.XHTML { + tag = "div" + } + if entering { + _, _ = w.WriteString("<") + _, _ = w.WriteString(tag) + _, _ = w.WriteString(` class="footnotes" role="doc-endnotes"`) + if node.Attributes() != nil { + html.RenderAttributes(w, node, html.GlobalAttributeFilter) + } + _ = w.WriteByte('>') + if r.Config.XHTML { + _, _ = w.WriteString("\n
                  \n") + } else { + _, _ = w.WriteString("\n
                  \n") + } + _, _ = w.WriteString("
                    \n") + } else { + _, _ = w.WriteString("
                  \n") + _, _ = w.WriteString("\n") + } + return gast.WalkContinue, nil +} + +func (r *FootnoteHTMLRenderer) idPrefix(node gast.Node) []byte { + if r.FootnoteConfig.IDPrefix != nil { + return r.FootnoteConfig.IDPrefix + } + if r.FootnoteConfig.IDPrefixFunction != nil { + return r.FootnoteConfig.IDPrefixFunction(node) + } + return []byte("") +} + +func applyFootnoteTemplate(b []byte, index, refCount int) []byte { + fast := true + for i, c := range b { + if i != 0 { + if b[i-1] == '^' && c == '^' { + fast = false + break + } + if b[i-1] == '%' && c == '%' { + fast = false + break + } + } + } + if fast { + return b + } + is := []byte(strconv.Itoa(index)) + rs := []byte(strconv.Itoa(refCount)) + ret := bytes.Replace(b, []byte("^^"), is, -1) + return bytes.Replace(ret, []byte("%%"), rs, -1) +} + +type footnote struct { + options []FootnoteOption +} + +// Footnote is an extension that allow you to use PHP Markdown Extra Footnotes. +var Footnote = &footnote{ + options: []FootnoteOption{}, +} + +// NewFootnote returns a new extension with given options. +func NewFootnote(opts ...FootnoteOption) goldmark.Extender { + return &footnote{ + options: opts, + } +} + +func (e *footnote) Extend(m goldmark.Markdown) { + m.Parser().AddOptions( + parser.WithBlockParsers( + util.Prioritized(NewFootnoteBlockParser(), 999), + ), + parser.WithInlineParsers( + util.Prioritized(NewFootnoteParser(), 101), + ), + parser.WithASTTransformers( + util.Prioritized(NewFootnoteASTTransformer(), 999), + ), + ) + m.Renderer().AddOptions(renderer.WithNodeRenderers( + util.Prioritized(NewFootnoteHTMLRenderer(e.options...), 500), + )) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/footnote_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/footnote_test.go new file mode 100644 index 000000000..c3f477066 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/footnote_test.go @@ -0,0 +1,143 @@ +package extension + +import ( + "testing" + + "github.com/yuin/goldmark" + gast "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/testutil" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +func TestFootnote(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + Footnote, + ), + ) + testutil.DoTestCaseFile(markdown, "_test/footnote.txt", t, testutil.ParseCliCaseArg()...) +} + +type footnoteID struct { +} + +func (a *footnoteID) Transform(node *gast.Document, reader text.Reader, pc parser.Context) { + node.Meta()["footnote-prefix"] = "article12-" +} + +func TestFootnoteOptions(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewFootnote( + WithFootnoteIDPrefix([]byte("article12-")), + WithFootnoteLinkClass([]byte("link-class")), + WithFootnoteBacklinkClass([]byte("backlink-class")), + WithFootnoteLinkTitle([]byte("link-title-%%-^^")), + WithFootnoteBacklinkTitle([]byte("backlink-title")), + WithFootnoteBacklinkHTML([]byte("^")), + ), + ), + ) + + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 1, + Description: "Footnote with options", + Markdown: `That's some text with a footnote.[^1] + +Same footnote.[^1] + +Another one.[^2] + +[^1]: And that's the footnote. +[^2]: Another footnote. +`, + Expected: `

                  That's some text with a footnote.1

                  +

                  Same footnote.1

                  +

                  Another one.2

                  +
                  +
                  +
                    +
                  1. +

                    And that's the footnote. ^

                    +
                  2. +
                  3. +

                    Another footnote. ^

                    +
                  4. +
                  +
                  +`, + }, + t, + ) + + markdown = goldmark.New( + goldmark.WithParserOptions( + parser.WithASTTransformers( + util.Prioritized(&footnoteID{}, 100), + ), + ), + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewFootnote( + WithFootnoteIDPrefixFunction(func(n gast.Node) []byte { + v, ok := n.OwnerDocument().Meta()["footnote-prefix"] + if ok { + return util.StringToReadOnlyBytes(v.(string)) + } + return nil + }), + WithFootnoteLinkClass([]byte("link-class")), + WithFootnoteBacklinkClass([]byte("backlink-class")), + WithFootnoteLinkTitle([]byte("link-title-%%-^^")), + WithFootnoteBacklinkTitle([]byte("backlink-title")), + WithFootnoteBacklinkHTML([]byte("^")), + ), + ), + ) + + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 2, + Description: "Footnote with an id prefix function", + Markdown: `That's some text with a footnote.[^1] + +Same footnote.[^1] + +Another one.[^2] + +[^1]: And that's the footnote. +[^2]: Another footnote. +`, + Expected: `

                  That's some text with a footnote.1

                  +

                  Same footnote.1

                  +

                  Another one.2

                  +
                  +
                  +
                    +
                  1. +

                    And that's the footnote. ^

                    +
                  2. +
                  3. +

                    Another footnote. ^

                    +
                  4. +
                  +
                  +`, + }, + t, + ) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/gfm.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/gfm.go new file mode 100644 index 000000000..a570fbdb3 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/gfm.go @@ -0,0 +1,18 @@ +package extension + +import ( + "github.com/yuin/goldmark" +) + +type gfm struct { +} + +// GFM is an extension that provides Github Flavored markdown functionalities. +var GFM = &gfm{} + +func (e *gfm) Extend(m goldmark.Markdown) { + Linkify.Extend(m) + Table.Extend(m) + Strikethrough.Extend(m) + TaskList.Extend(m) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/linkify.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/linkify.go new file mode 100644 index 000000000..2f046eb54 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/linkify.go @@ -0,0 +1,318 @@ +package extension + +import ( + "bytes" + "regexp" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +var wwwURLRegxp = regexp.MustCompile(`^www\.[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-z]+(?:[/#?][-a-zA-Z0-9@:%_\+.~#!?&/=\(\);,'">\^{}\[\]` + "`" + `]*)?`) + +var urlRegexp = regexp.MustCompile(`^(?:http|https|ftp)://[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-z]+(?::\d+)?(?:[/#?][-a-zA-Z0-9@:%_+.~#$!?&/=\(\);,'">\^{}\[\]` + "`" + `]*)?`) + +// An LinkifyConfig struct is a data structure that holds configuration of the +// Linkify extension. +type LinkifyConfig struct { + AllowedProtocols [][]byte + URLRegexp *regexp.Regexp + WWWRegexp *regexp.Regexp + EmailRegexp *regexp.Regexp +} + +const ( + optLinkifyAllowedProtocols parser.OptionName = "LinkifyAllowedProtocols" + optLinkifyURLRegexp parser.OptionName = "LinkifyURLRegexp" + optLinkifyWWWRegexp parser.OptionName = "LinkifyWWWRegexp" + optLinkifyEmailRegexp parser.OptionName = "LinkifyEmailRegexp" +) + +// SetOption implements SetOptioner. +func (c *LinkifyConfig) SetOption(name parser.OptionName, value interface{}) { + switch name { + case optLinkifyAllowedProtocols: + c.AllowedProtocols = value.([][]byte) + case optLinkifyURLRegexp: + c.URLRegexp = value.(*regexp.Regexp) + case optLinkifyWWWRegexp: + c.WWWRegexp = value.(*regexp.Regexp) + case optLinkifyEmailRegexp: + c.EmailRegexp = value.(*regexp.Regexp) + } +} + +// A LinkifyOption interface sets options for the LinkifyOption. +type LinkifyOption interface { + parser.Option + SetLinkifyOption(*LinkifyConfig) +} + +type withLinkifyAllowedProtocols struct { + value [][]byte +} + +func (o *withLinkifyAllowedProtocols) SetParserOption(c *parser.Config) { + c.Options[optLinkifyAllowedProtocols] = o.value +} + +func (o *withLinkifyAllowedProtocols) SetLinkifyOption(p *LinkifyConfig) { + p.AllowedProtocols = o.value +} + +// WithLinkifyAllowedProtocols is a functional option that specify allowed +// protocols in autolinks. Each protocol must end with ':' like +// 'http:' . +func WithLinkifyAllowedProtocols(value [][]byte) LinkifyOption { + return &withLinkifyAllowedProtocols{ + value: value, + } +} + +type withLinkifyURLRegexp struct { + value *regexp.Regexp +} + +func (o *withLinkifyURLRegexp) SetParserOption(c *parser.Config) { + c.Options[optLinkifyURLRegexp] = o.value +} + +func (o *withLinkifyURLRegexp) SetLinkifyOption(p *LinkifyConfig) { + p.URLRegexp = o.value +} + +// WithLinkifyURLRegexp is a functional option that specify +// a pattern of the URL including a protocol. +func WithLinkifyURLRegexp(value *regexp.Regexp) LinkifyOption { + return &withLinkifyURLRegexp{ + value: value, + } +} + +// WithLinkifyWWWRegexp is a functional option that specify +// a pattern of the URL without a protocol. +// This pattern must start with 'www.' . +type withLinkifyWWWRegexp struct { + value *regexp.Regexp +} + +func (o *withLinkifyWWWRegexp) SetParserOption(c *parser.Config) { + c.Options[optLinkifyWWWRegexp] = o.value +} + +func (o *withLinkifyWWWRegexp) SetLinkifyOption(p *LinkifyConfig) { + p.WWWRegexp = o.value +} + +func WithLinkifyWWWRegexp(value *regexp.Regexp) LinkifyOption { + return &withLinkifyWWWRegexp{ + value: value, + } +} + +// WithLinkifyWWWRegexp is a functional otpion that specify +// a pattern of the email address. +type withLinkifyEmailRegexp struct { + value *regexp.Regexp +} + +func (o *withLinkifyEmailRegexp) SetParserOption(c *parser.Config) { + c.Options[optLinkifyEmailRegexp] = o.value +} + +func (o *withLinkifyEmailRegexp) SetLinkifyOption(p *LinkifyConfig) { + p.EmailRegexp = o.value +} + +func WithLinkifyEmailRegexp(value *regexp.Regexp) LinkifyOption { + return &withLinkifyEmailRegexp{ + value: value, + } +} + +type linkifyParser struct { + LinkifyConfig +} + +// NewLinkifyParser return a new InlineParser can parse +// text that seems like a URL. +func NewLinkifyParser(opts ...LinkifyOption) parser.InlineParser { + p := &linkifyParser{ + LinkifyConfig: LinkifyConfig{ + AllowedProtocols: nil, + URLRegexp: urlRegexp, + WWWRegexp: wwwURLRegxp, + }, + } + for _, o := range opts { + o.SetLinkifyOption(&p.LinkifyConfig) + } + return p +} + +func (s *linkifyParser) Trigger() []byte { + // ' ' indicates any white spaces and a line head + return []byte{' ', '*', '_', '~', '('} +} + +var ( + protoHTTP = []byte("http:") + protoHTTPS = []byte("https:") + protoFTP = []byte("ftp:") + domainWWW = []byte("www.") +) + +func (s *linkifyParser) Parse(parent ast.Node, block text.Reader, pc parser.Context) ast.Node { + if pc.IsInLinkLabel() { + return nil + } + line, segment := block.PeekLine() + consumes := 0 + start := segment.Start + c := line[0] + // advance if current position is not a line head. + if c == ' ' || c == '*' || c == '_' || c == '~' || c == '(' { + consumes++ + start++ + line = line[1:] + } + + var m []int + var protocol []byte + var typ ast.AutoLinkType = ast.AutoLinkURL + if s.LinkifyConfig.AllowedProtocols == nil { + if bytes.HasPrefix(line, protoHTTP) || bytes.HasPrefix(line, protoHTTPS) || bytes.HasPrefix(line, protoFTP) { + m = s.LinkifyConfig.URLRegexp.FindSubmatchIndex(line) + } + } else { + for _, prefix := range s.LinkifyConfig.AllowedProtocols { + if bytes.HasPrefix(line, prefix) { + m = s.LinkifyConfig.URLRegexp.FindSubmatchIndex(line) + break + } + } + } + if m == nil && bytes.HasPrefix(line, domainWWW) { + m = s.LinkifyConfig.WWWRegexp.FindSubmatchIndex(line) + protocol = []byte("http") + } + if m != nil && m[0] != 0 { + m = nil + } + if m != nil && m[0] == 0 { + lastChar := line[m[1]-1] + if lastChar == '.' { + m[1]-- + } else if lastChar == ')' { + closing := 0 + for i := m[1] - 1; i >= m[0]; i-- { + if line[i] == ')' { + closing++ + } else if line[i] == '(' { + closing-- + } + } + if closing > 0 { + m[1] -= closing + } + } else if lastChar == ';' { + i := m[1] - 2 + for ; i >= m[0]; i-- { + if util.IsAlphaNumeric(line[i]) { + continue + } + break + } + if i != m[1]-2 { + if line[i] == '&' { + m[1] -= m[1] - i + } + } + } + } + if m == nil { + if len(line) > 0 && util.IsPunct(line[0]) { + return nil + } + typ = ast.AutoLinkEmail + stop := -1 + if s.LinkifyConfig.EmailRegexp == nil { + stop = util.FindEmailIndex(line) + } else { + m := s.LinkifyConfig.EmailRegexp.FindSubmatchIndex(line) + if m != nil && m[0] == 0 { + stop = m[1] + } + } + if stop < 0 { + return nil + } + at := bytes.IndexByte(line, '@') + m = []int{0, stop, at, stop - 1} + if m == nil || bytes.IndexByte(line[m[2]:m[3]], '.') < 0 { + return nil + } + lastChar := line[m[1]-1] + if lastChar == '.' { + m[1]-- + } + if m[1] < len(line) { + nextChar := line[m[1]] + if nextChar == '-' || nextChar == '_' { + return nil + } + } + } + if m == nil { + return nil + } + if consumes != 0 { + s := segment.WithStop(segment.Start + 1) + ast.MergeOrAppendTextSegment(parent, s) + } + i := m[1] - 1 + for ; i > 0; i-- { + c := line[i] + switch c { + case '?', '!', '.', ',', ':', '*', '_', '~': + default: + goto endfor + } + } +endfor: + i++ + consumes += i + block.Advance(consumes) + n := ast.NewTextSegment(text.NewSegment(start, start+i)) + link := ast.NewAutoLink(typ, n) + link.Protocol = protocol + return link +} + +func (s *linkifyParser) CloseBlock(parent ast.Node, pc parser.Context) { + // nothing to do +} + +type linkify struct { + options []LinkifyOption +} + +// Linkify is an extension that allow you to parse text that seems like a URL. +var Linkify = &linkify{} + +func NewLinkify(opts ...LinkifyOption) goldmark.Extender { + return &linkify{ + options: opts, + } +} + +func (e *linkify) Extend(m goldmark.Markdown) { + m.Parser().AddOptions( + parser.WithInlineParsers( + util.Prioritized(NewLinkifyParser(e.options...), 999), + ), + ) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/linkify_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/linkify_test.go new file mode 100644 index 000000000..d096acabc --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/linkify_test.go @@ -0,0 +1,100 @@ +package extension + +import ( + "regexp" + "testing" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/testutil" +) + +func TestLinkify(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + Linkify, + ), + ) + testutil.DoTestCaseFile(markdown, "_test/linkify.txt", t, testutil.ParseCliCaseArg()...) +} + +func TestLinkifyWithAllowedProtocols(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewLinkify( + WithLinkifyAllowedProtocols([][]byte{ + []byte("ssh:"), + }), + WithLinkifyURLRegexp( + regexp.MustCompile(`\w+://[^\s]+`), + ), + ), + ), + ) + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 1, + Markdown: `hoge ssh://user@hoge.com. http://example.com/`, + Expected: `

                  hoge ssh://user@hoge.com. http://example.com/

                  `, + }, + t, + ) +} + +func TestLinkifyWithWWWRegexp(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewLinkify( + WithLinkifyWWWRegexp( + regexp.MustCompile(`www\.example\.com`), + ), + ), + ), + ) + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 1, + Markdown: `www.google.com www.example.com`, + Expected: `

                  www.google.com www.example.com

                  `, + }, + t, + ) +} + +func TestLinkifyWithEmailRegexp(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewLinkify( + WithLinkifyEmailRegexp( + regexp.MustCompile(`user@example\.com`), + ), + ), + ), + ) + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 1, + Markdown: `hoge@example.com user@example.com`, + Expected: `

                  hoge@example.com user@example.com

                  `, + }, + t, + ) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/strikethrough.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/strikethrough.go new file mode 100644 index 000000000..1b629ad8f --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/strikethrough.go @@ -0,0 +1,116 @@ +package extension + +import ( + "github.com/yuin/goldmark" + gast "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/extension/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +type strikethroughDelimiterProcessor struct { +} + +func (p *strikethroughDelimiterProcessor) IsDelimiter(b byte) bool { + return b == '~' +} + +func (p *strikethroughDelimiterProcessor) CanOpenCloser(opener, closer *parser.Delimiter) bool { + return opener.Char == closer.Char +} + +func (p *strikethroughDelimiterProcessor) OnMatch(consumes int) gast.Node { + return ast.NewStrikethrough() +} + +var defaultStrikethroughDelimiterProcessor = &strikethroughDelimiterProcessor{} + +type strikethroughParser struct { +} + +var defaultStrikethroughParser = &strikethroughParser{} + +// NewStrikethroughParser return a new InlineParser that parses +// strikethrough expressions. +func NewStrikethroughParser() parser.InlineParser { + return defaultStrikethroughParser +} + +func (s *strikethroughParser) Trigger() []byte { + return []byte{'~'} +} + +func (s *strikethroughParser) Parse(parent gast.Node, block text.Reader, pc parser.Context) gast.Node { + before := block.PrecendingCharacter() + line, segment := block.PeekLine() + node := parser.ScanDelimiter(line, before, 2, defaultStrikethroughDelimiterProcessor) + if node == nil { + return nil + } + node.Segment = segment.WithStop(segment.Start + node.OriginalLength) + block.Advance(node.OriginalLength) + pc.PushDelimiter(node) + return node +} + +func (s *strikethroughParser) CloseBlock(parent gast.Node, pc parser.Context) { + // nothing to do +} + +// StrikethroughHTMLRenderer is a renderer.NodeRenderer implementation that +// renders Strikethrough nodes. +type StrikethroughHTMLRenderer struct { + html.Config +} + +// NewStrikethroughHTMLRenderer returns a new StrikethroughHTMLRenderer. +func NewStrikethroughHTMLRenderer(opts ...html.Option) renderer.NodeRenderer { + r := &StrikethroughHTMLRenderer{ + Config: html.NewConfig(), + } + for _, opt := range opts { + opt.SetHTMLOption(&r.Config) + } + return r +} + +// RegisterFuncs implements renderer.NodeRenderer.RegisterFuncs. +func (r *StrikethroughHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) { + reg.Register(ast.KindStrikethrough, r.renderStrikethrough) +} + +// StrikethroughAttributeFilter defines attribute names which dd elements can have. +var StrikethroughAttributeFilter = html.GlobalAttributeFilter + +func (r *StrikethroughHTMLRenderer) renderStrikethrough(w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { + if entering { + if n.Attributes() != nil { + _, _ = w.WriteString("') + } else { + _, _ = w.WriteString("") + } + } else { + _, _ = w.WriteString("") + } + return gast.WalkContinue, nil +} + +type strikethrough struct { +} + +// Strikethrough is an extension that allow you to use strikethrough expression like '~~text~~' . +var Strikethrough = &strikethrough{} + +func (e *strikethrough) Extend(m goldmark.Markdown) { + m.Parser().AddOptions(parser.WithInlineParsers( + util.Prioritized(NewStrikethroughParser(), 500), + )) + m.Renderer().AddOptions(renderer.WithNodeRenderers( + util.Prioritized(NewStrikethroughHTMLRenderer(), 500), + )) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/strikethrough_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/strikethrough_test.go new file mode 100644 index 000000000..3274c0e04 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/strikethrough_test.go @@ -0,0 +1,21 @@ +package extension + +import ( + "testing" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/testutil" +) + +func TestStrikethrough(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + Strikethrough, + ), + ) + testutil.DoTestCaseFile(markdown, "_test/strikethrough.txt", t, testutil.ParseCliCaseArg()...) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/table.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/table.go new file mode 100644 index 000000000..c637b99f0 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/table.go @@ -0,0 +1,552 @@ +package extension + +import ( + "bytes" + "fmt" + "regexp" + + "github.com/yuin/goldmark" + gast "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/extension/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +var escapedPipeCellListKey = parser.NewContextKey() + +type escapedPipeCell struct { + Cell *ast.TableCell + Pos []int + Transformed bool +} + +// TableCellAlignMethod indicates how are table cells aligned in HTML format.indicates how are table cells aligned in HTML format. +type TableCellAlignMethod int + +const ( + // TableCellAlignDefault renders alignments by default method. + // With XHTML, alignments are rendered as an align attribute. + // With HTML5, alignments are rendered as a style attribute. + TableCellAlignDefault TableCellAlignMethod = iota + + // TableCellAlignAttribute renders alignments as an align attribute. + TableCellAlignAttribute + + // TableCellAlignStyle renders alignments as a style attribute. + TableCellAlignStyle + + // TableCellAlignNone does not care about alignments. + // If you using classes or other styles, you can add these attributes + // in an ASTTransformer. + TableCellAlignNone +) + +// TableConfig struct holds options for the extension. +type TableConfig struct { + html.Config + + // TableCellAlignMethod indicates how are table celss aligned. + TableCellAlignMethod TableCellAlignMethod +} + +// TableOption interface is a functional option interface for the extension. +type TableOption interface { + renderer.Option + // SetTableOption sets given option to the extension. + SetTableOption(*TableConfig) +} + +// NewTableConfig returns a new Config with defaults. +func NewTableConfig() TableConfig { + return TableConfig{ + Config: html.NewConfig(), + TableCellAlignMethod: TableCellAlignDefault, + } +} + +// SetOption implements renderer.SetOptioner. +func (c *TableConfig) SetOption(name renderer.OptionName, value interface{}) { + switch name { + case optTableCellAlignMethod: + c.TableCellAlignMethod = value.(TableCellAlignMethod) + default: + c.Config.SetOption(name, value) + } +} + +type withTableHTMLOptions struct { + value []html.Option +} + +func (o *withTableHTMLOptions) SetConfig(c *renderer.Config) { + if o.value != nil { + for _, v := range o.value { + v.(renderer.Option).SetConfig(c) + } + } +} + +func (o *withTableHTMLOptions) SetTableOption(c *TableConfig) { + if o.value != nil { + for _, v := range o.value { + v.SetHTMLOption(&c.Config) + } + } +} + +// WithTableHTMLOptions is functional option that wraps goldmark HTMLRenderer options. +func WithTableHTMLOptions(opts ...html.Option) TableOption { + return &withTableHTMLOptions{opts} +} + +const optTableCellAlignMethod renderer.OptionName = "TableTableCellAlignMethod" + +type withTableCellAlignMethod struct { + value TableCellAlignMethod +} + +func (o *withTableCellAlignMethod) SetConfig(c *renderer.Config) { + c.Options[optTableCellAlignMethod] = o.value +} + +func (o *withTableCellAlignMethod) SetTableOption(c *TableConfig) { + c.TableCellAlignMethod = o.value +} + +// WithTableCellAlignMethod is a functional option that indicates how are table cells aligned in HTML format. +func WithTableCellAlignMethod(a TableCellAlignMethod) TableOption { + return &withTableCellAlignMethod{a} +} + +func isTableDelim(bs []byte) bool { + for _, b := range bs { + if !(util.IsSpace(b) || b == '-' || b == '|' || b == ':') { + return false + } + } + return true +} + +var tableDelimLeft = regexp.MustCompile(`^\s*\:\-+\s*$`) +var tableDelimRight = regexp.MustCompile(`^\s*\-+\:\s*$`) +var tableDelimCenter = regexp.MustCompile(`^\s*\:\-+\:\s*$`) +var tableDelimNone = regexp.MustCompile(`^\s*\-+\s*$`) + +type tableParagraphTransformer struct { +} + +var defaultTableParagraphTransformer = &tableParagraphTransformer{} + +// NewTableParagraphTransformer returns a new ParagraphTransformer +// that can transform paragraphs into tables. +func NewTableParagraphTransformer() parser.ParagraphTransformer { + return defaultTableParagraphTransformer +} + +func (b *tableParagraphTransformer) Transform(node *gast.Paragraph, reader text.Reader, pc parser.Context) { + lines := node.Lines() + if lines.Len() < 2 { + return + } + for i := 1; i < lines.Len(); i++ { + alignments := b.parseDelimiter(lines.At(i), reader) + if alignments == nil { + continue + } + header := b.parseRow(lines.At(i-1), alignments, true, reader, pc) + if header == nil || len(alignments) != header.ChildCount() { + return + } + table := ast.NewTable() + table.Alignments = alignments + table.AppendChild(table, ast.NewTableHeader(header)) + for j := i + 1; j < lines.Len(); j++ { + table.AppendChild(table, b.parseRow(lines.At(j), alignments, false, reader, pc)) + } + node.Lines().SetSliced(0, i-1) + node.Parent().InsertAfter(node.Parent(), node, table) + if node.Lines().Len() == 0 { + node.Parent().RemoveChild(node.Parent(), node) + } else { + last := node.Lines().At(i - 2) + last.Stop = last.Stop - 1 // trim last newline(\n) + node.Lines().Set(i-2, last) + } + } +} + +func (b *tableParagraphTransformer) parseRow(segment text.Segment, alignments []ast.Alignment, isHeader bool, reader text.Reader, pc parser.Context) *ast.TableRow { + source := reader.Source() + line := segment.Value(source) + pos := 0 + pos += util.TrimLeftSpaceLength(line) + limit := len(line) + limit -= util.TrimRightSpaceLength(line) + row := ast.NewTableRow(alignments) + if len(line) > 0 && line[pos] == '|' { + pos++ + } + if len(line) > 0 && line[limit-1] == '|' { + limit-- + } + i := 0 + for ; pos < limit; i++ { + alignment := ast.AlignNone + if i >= len(alignments) { + if !isHeader { + return row + } + } else { + alignment = alignments[i] + } + + var escapedCell *escapedPipeCell + node := ast.NewTableCell() + node.Alignment = alignment + hasBacktick := false + closure := pos + for ; closure < limit; closure++ { + if line[closure] == '`' { + hasBacktick = true + } + if line[closure] == '|' { + if closure == 0 || line[closure-1] != '\\' { + break + } else if hasBacktick { + if escapedCell == nil { + escapedCell = &escapedPipeCell{node, []int{}, false} + escapedList := pc.ComputeIfAbsent(escapedPipeCellListKey, + func() interface{} { + return []*escapedPipeCell{} + }).([]*escapedPipeCell) + escapedList = append(escapedList, escapedCell) + pc.Set(escapedPipeCellListKey, escapedList) + } + escapedCell.Pos = append(escapedCell.Pos, segment.Start+closure-1) + } + } + } + seg := text.NewSegment(segment.Start+pos, segment.Start+closure) + seg = seg.TrimLeftSpace(source) + seg = seg.TrimRightSpace(source) + node.Lines().Append(seg) + row.AppendChild(row, node) + pos = closure + 1 + } + for ; i < len(alignments); i++ { + row.AppendChild(row, ast.NewTableCell()) + } + return row +} + +func (b *tableParagraphTransformer) parseDelimiter(segment text.Segment, reader text.Reader) []ast.Alignment { + line := segment.Value(reader.Source()) + if !isTableDelim(line) { + return nil + } + cols := bytes.Split(line, []byte{'|'}) + if util.IsBlank(cols[0]) { + cols = cols[1:] + } + if len(cols) > 0 && util.IsBlank(cols[len(cols)-1]) { + cols = cols[:len(cols)-1] + } + + var alignments []ast.Alignment + for _, col := range cols { + if tableDelimLeft.Match(col) { + alignments = append(alignments, ast.AlignLeft) + } else if tableDelimRight.Match(col) { + alignments = append(alignments, ast.AlignRight) + } else if tableDelimCenter.Match(col) { + alignments = append(alignments, ast.AlignCenter) + } else if tableDelimNone.Match(col) { + alignments = append(alignments, ast.AlignNone) + } else { + return nil + } + } + return alignments +} + +type tableASTTransformer struct { +} + +var defaultTableASTTransformer = &tableASTTransformer{} + +// NewTableASTTransformer returns a parser.ASTTransformer for tables. +func NewTableASTTransformer() parser.ASTTransformer { + return defaultTableASTTransformer +} + +func (a *tableASTTransformer) Transform(node *gast.Document, reader text.Reader, pc parser.Context) { + lst := pc.Get(escapedPipeCellListKey) + if lst == nil { + return + } + pc.Set(escapedPipeCellListKey, nil) + for _, v := range lst.([]*escapedPipeCell) { + if v.Transformed { + continue + } + _ = gast.Walk(v.Cell, func(n gast.Node, entering bool) (gast.WalkStatus, error) { + if !entering || n.Kind() != gast.KindCodeSpan { + return gast.WalkContinue, nil + } + + for c := n.FirstChild(); c != nil; { + next := c.NextSibling() + if c.Kind() != gast.KindText { + c = next + continue + } + parent := c.Parent() + ts := &c.(*gast.Text).Segment + n := c + for _, v := range lst.([]*escapedPipeCell) { + for _, pos := range v.Pos { + if ts.Start <= pos && pos < ts.Stop { + segment := n.(*gast.Text).Segment + n1 := gast.NewRawTextSegment(segment.WithStop(pos)) + n2 := gast.NewRawTextSegment(segment.WithStart(pos + 1)) + parent.InsertAfter(parent, n, n1) + parent.InsertAfter(parent, n1, n2) + parent.RemoveChild(parent, n) + n = n2 + v.Transformed = true + } + } + } + c = next + } + return gast.WalkContinue, nil + }) + } +} + +// TableHTMLRenderer is a renderer.NodeRenderer implementation that +// renders Table nodes. +type TableHTMLRenderer struct { + TableConfig +} + +// NewTableHTMLRenderer returns a new TableHTMLRenderer. +func NewTableHTMLRenderer(opts ...TableOption) renderer.NodeRenderer { + r := &TableHTMLRenderer{ + TableConfig: NewTableConfig(), + } + for _, opt := range opts { + opt.SetTableOption(&r.TableConfig) + } + return r +} + +// RegisterFuncs implements renderer.NodeRenderer.RegisterFuncs. +func (r *TableHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) { + reg.Register(ast.KindTable, r.renderTable) + reg.Register(ast.KindTableHeader, r.renderTableHeader) + reg.Register(ast.KindTableRow, r.renderTableRow) + reg.Register(ast.KindTableCell, r.renderTableCell) +} + +// TableAttributeFilter defines attribute names which table elements can have. +var TableAttributeFilter = html.GlobalAttributeFilter.Extend( + []byte("align"), // [Deprecated] + []byte("bgcolor"), // [Deprecated] + []byte("border"), // [Deprecated] + []byte("cellpadding"), // [Deprecated] + []byte("cellspacing"), // [Deprecated] + []byte("frame"), // [Deprecated] + []byte("rules"), // [Deprecated] + []byte("summary"), // [Deprecated] + []byte("width"), // [Deprecated] +) + +func (r *TableHTMLRenderer) renderTable(w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { + if entering { + _, _ = w.WriteString("\n") + } else { + _, _ = w.WriteString("\n") + } + return gast.WalkContinue, nil +} + +// TableHeaderAttributeFilter defines attribute names which elements can have. +var TableHeaderAttributeFilter = html.GlobalAttributeFilter.Extend( + []byte("align"), // [Deprecated since HTML4] [Obsolete since HTML5] + []byte("bgcolor"), // [Not Standardized] + []byte("char"), // [Deprecated since HTML4] [Obsolete since HTML5] + []byte("charoff"), // [Deprecated since HTML4] [Obsolete since HTML5] + []byte("valign"), // [Deprecated since HTML4] [Obsolete since HTML5] +) + +func (r *TableHTMLRenderer) renderTableHeader(w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { + if entering { + _, _ = w.WriteString("\n") + _, _ = w.WriteString("\n") // Header has no separate handle + } else { + _, _ = w.WriteString("\n") + _, _ = w.WriteString("\n") + if n.NextSibling() != nil { + _, _ = w.WriteString("\n") + } + } + return gast.WalkContinue, nil +} + +// TableRowAttributeFilter defines attribute names which elements can have. +var TableRowAttributeFilter = html.GlobalAttributeFilter.Extend( + []byte("align"), // [Obsolete since HTML5] + []byte("bgcolor"), // [Obsolete since HTML5] + []byte("char"), // [Obsolete since HTML5] + []byte("charoff"), // [Obsolete since HTML5] + []byte("valign"), // [Obsolete since HTML5] +) + +func (r *TableHTMLRenderer) renderTableRow(w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { + if entering { + _, _ = w.WriteString("\n") + } else { + _, _ = w.WriteString("\n") + if n.Parent().LastChild() == n { + _, _ = w.WriteString("\n") + } + } + return gast.WalkContinue, nil +} + +// TableThCellAttributeFilter defines attribute names which table cells can have. +var TableThCellAttributeFilter = html.GlobalAttributeFilter.Extend( + []byte("abbr"), // [OK] Contains a short abbreviated description of the cell's content [NOT OK in ] + + []byte("align"), // [Obsolete since HTML5] + []byte("axis"), // [Obsolete since HTML5] + []byte("bgcolor"), // [Not Standardized] + []byte("char"), // [Obsolete since HTML5] + []byte("charoff"), // [Obsolete since HTML5] + + []byte("colspan"), // [OK] Number of columns that the cell is to span + []byte("headers"), // [OK] This attribute contains a list of space-separated strings, each corresponding to the id attribute of the elements that apply to this element + + []byte("height"), // [Deprecated since HTML4] [Obsolete since HTML5] + + []byte("rowspan"), // [OK] Number of rows that the cell is to span + []byte("scope"), // [OK] This enumerated attribute defines the cells that the header (defined in the ) element relates to [NOT OK in ] + + []byte("valign"), // [Obsolete since HTML5] + []byte("width"), // [Deprecated since HTML4] [Obsolete since HTML5] +) + +// TableTdCellAttributeFilter defines attribute names which table cells can have. +var TableTdCellAttributeFilter = html.GlobalAttributeFilter.Extend( + []byte("abbr"), // [Obsolete since HTML5] [OK in ] + []byte("align"), // [Obsolete since HTML5] + []byte("axis"), // [Obsolete since HTML5] + []byte("bgcolor"), // [Not Standardized] + []byte("char"), // [Obsolete since HTML5] + []byte("charoff"), // [Obsolete since HTML5] + + []byte("colspan"), // [OK] Number of columns that the cell is to span + []byte("headers"), // [OK] This attribute contains a list of space-separated strings, each corresponding to the id attribute of the elements that apply to this element + + []byte("height"), // [Deprecated since HTML4] [Obsolete since HTML5] + + []byte("rowspan"), // [OK] Number of rows that the cell is to span + + []byte("scope"), // [Obsolete since HTML5] [OK in ] + []byte("valign"), // [Obsolete since HTML5] + []byte("width"), // [Deprecated since HTML4] [Obsolete since HTML5] +) + +func (r *TableHTMLRenderer) renderTableCell(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { + n := node.(*ast.TableCell) + tag := "td" + if n.Parent().Kind() == ast.KindTableHeader { + tag = "th" + } + if entering { + fmt.Fprintf(w, "<%s", tag) + if n.Alignment != ast.AlignNone { + amethod := r.TableConfig.TableCellAlignMethod + if amethod == TableCellAlignDefault { + if r.Config.XHTML { + amethod = TableCellAlignAttribute + } else { + amethod = TableCellAlignStyle + } + } + switch amethod { + case TableCellAlignAttribute: + if _, ok := n.AttributeString("align"); !ok { // Skip align render if overridden + fmt.Fprintf(w, ` align="%s"`, n.Alignment.String()) + } + case TableCellAlignStyle: + v, ok := n.AttributeString("style") + var cob util.CopyOnWriteBuffer + if ok { + cob = util.NewCopyOnWriteBuffer(v.([]byte)) + cob.AppendByte(';') + } + style := fmt.Sprintf("text-align:%s", n.Alignment.String()) + cob.AppendString(style) + n.SetAttributeString("style", cob.Bytes()) + } + } + if n.Attributes() != nil { + if tag == "td" { + html.RenderAttributes(w, n, TableTdCellAttributeFilter) // + } else { + html.RenderAttributes(w, n, TableThCellAttributeFilter) // + } + } + _ = w.WriteByte('>') + } else { + fmt.Fprintf(w, "\n", tag) + } + return gast.WalkContinue, nil +} + +type table struct { + options []TableOption +} + +// Table is an extension that allow you to use GFM tables . +var Table = &table{ + options: []TableOption{}, +} + +// NewTable returns a new extension with given options. +func NewTable(opts ...TableOption) goldmark.Extender { + return &table{ + options: opts, + } +} + +func (e *table) Extend(m goldmark.Markdown) { + m.Parser().AddOptions( + parser.WithParagraphTransformers( + util.Prioritized(NewTableParagraphTransformer(), 200), + ), + parser.WithASTTransformers( + util.Prioritized(defaultTableASTTransformer, 0), + ), + ) + m.Renderer().AddOptions(renderer.WithNodeRenderers( + util.Prioritized(NewTableHTMLRenderer(e.options...), 500), + )) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/table_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/table_test.go new file mode 100644 index 000000000..5ee23e935 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/table_test.go @@ -0,0 +1,357 @@ +package extension + +import ( + "testing" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/ast" + east "github.com/yuin/goldmark/extension/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/testutil" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +func TestTable(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithUnsafe(), + html.WithXHTML(), + ), + goldmark.WithExtensions( + Table, + ), + ) + testutil.DoTestCaseFile(markdown, "_test/table.txt", t, testutil.ParseCliCaseArg()...) +} + +func TestTableWithAlignDefault(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewTable( + WithTableCellAlignMethod(TableCellAlignDefault), + ), + ), + ) + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 1, + Description: "Cell with TableCellAlignDefault and XHTML should be rendered as an align attribute", + Markdown: ` +| abc | defghi | +:-: | -----------: +bar | baz +`, + Expected: ` + + + + + + + + + + + + +
                  abcdefghi
                  barbaz
                  `, + }, + t, + ) + + markdown = goldmark.New( + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewTable( + WithTableCellAlignMethod(TableCellAlignDefault), + ), + ), + ) + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 2, + Description: "Cell with TableCellAlignDefault and HTML5 should be rendered as a style attribute", + Markdown: ` +| abc | defghi | +:-: | -----------: +bar | baz +`, + Expected: ` + + + + + + + + + + + + +
                  abcdefghi
                  barbaz
                  `, + }, + t, + ) +} + +func TestTableWithAlignAttribute(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewTable( + WithTableCellAlignMethod(TableCellAlignAttribute), + ), + ), + ) + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 1, + Description: "Cell with TableCellAlignAttribute and XHTML should be rendered as an align attribute", + Markdown: ` +| abc | defghi | +:-: | -----------: +bar | baz +`, + Expected: ` + + + + + + + + + + + + +
                  abcdefghi
                  barbaz
                  `, + }, + t, + ) + + markdown = goldmark.New( + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewTable( + WithTableCellAlignMethod(TableCellAlignAttribute), + ), + ), + ) + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 2, + Description: "Cell with TableCellAlignAttribute and HTML5 should be rendered as an align attribute", + Markdown: ` +| abc | defghi | +:-: | -----------: +bar | baz +`, + Expected: ` + + + + + + + + + + + + +
                  abcdefghi
                  barbaz
                  `, + }, + t, + ) +} + +type tableStyleTransformer struct { +} + +func (a *tableStyleTransformer) Transform(node *ast.Document, reader text.Reader, pc parser.Context) { + cell := node.FirstChild().FirstChild().FirstChild().(*east.TableCell) + cell.SetAttributeString("style", []byte("font-size:1em")) +} + +func TestTableWithAlignStyle(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewTable( + WithTableCellAlignMethod(TableCellAlignStyle), + ), + ), + ) + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 1, + Description: "Cell with TableCellAlignStyle and XHTML should be rendered as a style attribute", + Markdown: ` +| abc | defghi | +:-: | -----------: +bar | baz +`, + Expected: ` + + + + + + + + + + + + +
                  abcdefghi
                  barbaz
                  `, + }, + t, + ) + + markdown = goldmark.New( + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewTable( + WithTableCellAlignMethod(TableCellAlignStyle), + ), + ), + ) + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 2, + Description: "Cell with TableCellAlignStyle and HTML5 should be rendered as a style attribute", + Markdown: ` +| abc | defghi | +:-: | -----------: +bar | baz +`, + Expected: ` + + + + + + + + + + + + +
                  abcdefghi
                  barbaz
                  `, + }, + t, + ) + + markdown = goldmark.New( + goldmark.WithParserOptions( + parser.WithASTTransformers( + util.Prioritized(&tableStyleTransformer{}, 0), + ), + ), + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewTable( + WithTableCellAlignMethod(TableCellAlignStyle), + ), + ), + ) + + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 3, + Description: "Styled cell should not be broken the style by the alignments", + Markdown: ` +| abc | defghi | +:-: | -----------: +bar | baz +`, + Expected: ` + + + + + + + + + + + + +
                  abcdefghi
                  barbaz
                  `, + }, + t, + ) +} + +func TestTableWithAlignNone(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewTable( + WithTableCellAlignMethod(TableCellAlignNone), + ), + ), + ) + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: 1, + Description: "Cell with TableCellAlignStyle and XHTML should not be rendered", + Markdown: ` +| abc | defghi | +:-: | -----------: +bar | baz +`, + Expected: ` + + + + + + + + + + + + +
                  abcdefghi
                  barbaz
                  `, + }, + t, + ) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/tasklist.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/tasklist.go new file mode 100644 index 000000000..1f3e52c20 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/tasklist.go @@ -0,0 +1,115 @@ +package extension + +import ( + "github.com/yuin/goldmark" + gast "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/extension/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" + "regexp" +) + +var taskListRegexp = regexp.MustCompile(`^\[([\sxX])\]\s*`) + +type taskCheckBoxParser struct { +} + +var defaultTaskCheckBoxParser = &taskCheckBoxParser{} + +// NewTaskCheckBoxParser returns a new InlineParser that can parse +// checkboxes in list items. +// This parser must take precedence over the parser.LinkParser. +func NewTaskCheckBoxParser() parser.InlineParser { + return defaultTaskCheckBoxParser +} + +func (s *taskCheckBoxParser) Trigger() []byte { + return []byte{'['} +} + +func (s *taskCheckBoxParser) Parse(parent gast.Node, block text.Reader, pc parser.Context) gast.Node { + // Given AST structure must be like + // - List + // - ListItem : parent.Parent + // - TextBlock : parent + // (current line) + if parent.Parent() == nil || parent.Parent().FirstChild() != parent { + return nil + } + + if _, ok := parent.Parent().(*gast.ListItem); !ok { + return nil + } + line, _ := block.PeekLine() + m := taskListRegexp.FindSubmatchIndex(line) + if m == nil { + return nil + } + value := line[m[2]:m[3]][0] + block.Advance(m[1]) + checked := value == 'x' || value == 'X' + return ast.NewTaskCheckBox(checked) +} + +func (s *taskCheckBoxParser) CloseBlock(parent gast.Node, pc parser.Context) { + // nothing to do +} + +// TaskCheckBoxHTMLRenderer is a renderer.NodeRenderer implementation that +// renders checkboxes in list items. +type TaskCheckBoxHTMLRenderer struct { + html.Config +} + +// NewTaskCheckBoxHTMLRenderer returns a new TaskCheckBoxHTMLRenderer. +func NewTaskCheckBoxHTMLRenderer(opts ...html.Option) renderer.NodeRenderer { + r := &TaskCheckBoxHTMLRenderer{ + Config: html.NewConfig(), + } + for _, opt := range opts { + opt.SetHTMLOption(&r.Config) + } + return r +} + +// RegisterFuncs implements renderer.NodeRenderer.RegisterFuncs. +func (r *TaskCheckBoxHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) { + reg.Register(ast.KindTaskCheckBox, r.renderTaskCheckBox) +} + +func (r *TaskCheckBoxHTMLRenderer) renderTaskCheckBox(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { + if !entering { + return gast.WalkContinue, nil + } + n := node.(*ast.TaskCheckBox) + + if n.IsChecked { + w.WriteString(` ") + } else { + w.WriteString("> ") + } + return gast.WalkContinue, nil +} + +type taskList struct { +} + +// TaskList is an extension that allow you to use GFM task lists. +var TaskList = &taskList{} + +func (e *taskList) Extend(m goldmark.Markdown) { + m.Parser().AddOptions(parser.WithInlineParsers( + util.Prioritized(NewTaskCheckBoxParser(), 0), + )) + m.Renderer().AddOptions(renderer.WithNodeRenderers( + util.Prioritized(NewTaskCheckBoxHTMLRenderer(), 500), + )) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/tasklist_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/tasklist_test.go new file mode 100644 index 000000000..e3762270f --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/tasklist_test.go @@ -0,0 +1,21 @@ +package extension + +import ( + "testing" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/testutil" +) + +func TestTaskList(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + TaskList, + ), + ) + testutil.DoTestCaseFile(markdown, "_test/tasklist.txt", t, testutil.ParseCliCaseArg()...) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/typographer.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/typographer.go new file mode 100644 index 000000000..2c3473094 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/typographer.go @@ -0,0 +1,323 @@ +package extension + +import ( + "unicode" + + "github.com/yuin/goldmark" + gast "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +var uncloseCounterKey = parser.NewContextKey() + +type unclosedCounter struct { + Single int + Double int +} + +func (u *unclosedCounter) Reset() { + u.Single = 0 + u.Double = 0 +} + +func getUnclosedCounter(pc parser.Context) *unclosedCounter { + v := pc.Get(uncloseCounterKey) + if v == nil { + v = &unclosedCounter{} + pc.Set(uncloseCounterKey, v) + } + return v.(*unclosedCounter) +} + +// TypographicPunctuation is a key of the punctuations that can be replaced with +// typographic entities. +type TypographicPunctuation int + +const ( + // LeftSingleQuote is ' + LeftSingleQuote TypographicPunctuation = iota + 1 + // RightSingleQuote is ' + RightSingleQuote + // LeftDoubleQuote is " + LeftDoubleQuote + // RightDoubleQuote is " + RightDoubleQuote + // EnDash is -- + EnDash + // EmDash is --- + EmDash + // Ellipsis is ... + Ellipsis + // LeftAngleQuote is << + LeftAngleQuote + // RightAngleQuote is >> + RightAngleQuote + // Apostrophe is ' + Apostrophe + + typographicPunctuationMax +) + +// An TypographerConfig struct is a data structure that holds configuration of the +// Typographer extension. +type TypographerConfig struct { + Substitutions [][]byte +} + +func newDefaultSubstitutions() [][]byte { + replacements := make([][]byte, typographicPunctuationMax) + replacements[LeftSingleQuote] = []byte("‘") + replacements[RightSingleQuote] = []byte("’") + replacements[LeftDoubleQuote] = []byte("“") + replacements[RightDoubleQuote] = []byte("”") + replacements[EnDash] = []byte("–") + replacements[EmDash] = []byte("—") + replacements[Ellipsis] = []byte("…") + replacements[LeftAngleQuote] = []byte("«") + replacements[RightAngleQuote] = []byte("»") + replacements[Apostrophe] = []byte("’") + + return replacements +} + +// SetOption implements SetOptioner. +func (b *TypographerConfig) SetOption(name parser.OptionName, value interface{}) { + switch name { + case optTypographicSubstitutions: + b.Substitutions = value.([][]byte) + } +} + +// A TypographerOption interface sets options for the TypographerParser. +type TypographerOption interface { + parser.Option + SetTypographerOption(*TypographerConfig) +} + +const optTypographicSubstitutions parser.OptionName = "TypographicSubstitutions" + +// TypographicSubstitutions is a list of the substitutions for the Typographer extension. +type TypographicSubstitutions map[TypographicPunctuation][]byte + +type withTypographicSubstitutions struct { + value [][]byte +} + +func (o *withTypographicSubstitutions) SetParserOption(c *parser.Config) { + c.Options[optTypographicSubstitutions] = o.value +} + +func (o *withTypographicSubstitutions) SetTypographerOption(p *TypographerConfig) { + p.Substitutions = o.value +} + +// WithTypographicSubstitutions is a functional otpion that specify replacement text +// for punctuations. +func WithTypographicSubstitutions(values map[TypographicPunctuation][]byte) TypographerOption { + replacements := newDefaultSubstitutions() + for k, v := range values { + replacements[k] = v + } + + return &withTypographicSubstitutions{replacements} +} + +type typographerDelimiterProcessor struct { +} + +func (p *typographerDelimiterProcessor) IsDelimiter(b byte) bool { + return b == '\'' || b == '"' +} + +func (p *typographerDelimiterProcessor) CanOpenCloser(opener, closer *parser.Delimiter) bool { + return opener.Char == closer.Char +} + +func (p *typographerDelimiterProcessor) OnMatch(consumes int) gast.Node { + return nil +} + +var defaultTypographerDelimiterProcessor = &typographerDelimiterProcessor{} + +type typographerParser struct { + TypographerConfig +} + +// NewTypographerParser return a new InlineParser that parses +// typographer expressions. +func NewTypographerParser(opts ...TypographerOption) parser.InlineParser { + p := &typographerParser{ + TypographerConfig: TypographerConfig{ + Substitutions: newDefaultSubstitutions(), + }, + } + for _, o := range opts { + o.SetTypographerOption(&p.TypographerConfig) + } + return p +} + +func (s *typographerParser) Trigger() []byte { + return []byte{'\'', '"', '-', '.', '<', '>'} +} + +func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser.Context) gast.Node { + line, _ := block.PeekLine() + c := line[0] + if len(line) > 2 { + if c == '-' { + if s.Substitutions[EmDash] != nil && line[1] == '-' && line[2] == '-' { // --- + node := gast.NewString(s.Substitutions[EmDash]) + node.SetCode(true) + block.Advance(3) + return node + } + } else if c == '.' { + if s.Substitutions[Ellipsis] != nil && line[1] == '.' && line[2] == '.' { // ... + node := gast.NewString(s.Substitutions[Ellipsis]) + node.SetCode(true) + block.Advance(3) + return node + } + return nil + } + } + if len(line) > 1 { + if c == '<' { + if s.Substitutions[LeftAngleQuote] != nil && line[1] == '<' { // << + node := gast.NewString(s.Substitutions[LeftAngleQuote]) + node.SetCode(true) + block.Advance(2) + return node + } + return nil + } else if c == '>' { + if s.Substitutions[RightAngleQuote] != nil && line[1] == '>' { // >> + node := gast.NewString(s.Substitutions[RightAngleQuote]) + node.SetCode(true) + block.Advance(2) + return node + } + return nil + } else if s.Substitutions[EnDash] != nil && c == '-' && line[1] == '-' { // -- + node := gast.NewString(s.Substitutions[EnDash]) + node.SetCode(true) + block.Advance(2) + return node + } + } + if c == '\'' || c == '"' { + before := block.PrecendingCharacter() + d := parser.ScanDelimiter(line, before, 1, defaultTypographerDelimiterProcessor) + if d == nil { + return nil + } + counter := getUnclosedCounter(pc) + if c == '\'' { + if s.Substitutions[Apostrophe] != nil { + // Handle decade abbrevations such as '90s + if d.CanOpen && !d.CanClose && len(line) > 3 && util.IsNumeric(line[1]) && util.IsNumeric(line[2]) && line[3] == 's' { + after := rune(' ') + if len(line) > 4 { + after = util.ToRune(line, 4) + } + if len(line) == 3 || util.IsSpaceRune(after) || util.IsPunctRune(after) { + node := gast.NewString(s.Substitutions[Apostrophe]) + node.SetCode(true) + block.Advance(1) + return node + } + } + // Convert normal apostrophes. This is probably more flexible than necessary but + // converts any apostrophe in between two alphanumerics. + if len(line) > 1 && (unicode.IsDigit(before) || unicode.IsLetter(before)) && (unicode.IsLetter(util.ToRune(line, 1))) { + node := gast.NewString(s.Substitutions[Apostrophe]) + node.SetCode(true) + block.Advance(1) + return node + } + } + if s.Substitutions[LeftSingleQuote] != nil && d.CanOpen && !d.CanClose { + nt := LeftSingleQuote + // special cases: Alice's, I'm ,Don't, You'd + if len(line) > 1 && (line[1] == 's' || line[1] == 'm' || line[1] == 't' || line[1] == 'd') && (len(line) < 3 || util.IsPunct(line[2]) || util.IsSpace(line[2])) { + nt = RightSingleQuote + } + // special cases: I've, I'll, You're + if len(line) > 2 && ((line[1] == 'v' && line[2] == 'e') || (line[1] == 'l' && line[2] == 'l') || (line[1] == 'r' && line[2] == 'e')) && (len(line) < 4 || util.IsPunct(line[3]) || util.IsSpace(line[3])) { + nt = RightSingleQuote + } + if nt == LeftSingleQuote { + counter.Single++ + } + + node := gast.NewString(s.Substitutions[nt]) + node.SetCode(true) + block.Advance(1) + return node + } + if s.Substitutions[RightSingleQuote] != nil && counter.Single > 0 { + isClose := d.CanClose && !d.CanOpen + maybeClose := d.CanClose && d.CanOpen && len(line) > 1 && (line[1] == ',' || line[1] == '.' || line[1] == '!' || line[1] == '?') && (len(line) == 2 || (len(line) > 2 && util.IsPunct(line[2]) || util.IsSpace(line[2]))) + if isClose || maybeClose { + node := gast.NewString(s.Substitutions[RightSingleQuote]) + node.SetCode(true) + block.Advance(1) + counter.Single-- + return node + } + } + } + if c == '"' { + if s.Substitutions[LeftDoubleQuote] != nil && d.CanOpen && !d.CanClose { + node := gast.NewString(s.Substitutions[LeftDoubleQuote]) + node.SetCode(true) + block.Advance(1) + counter.Double++ + return node + } + if s.Substitutions[RightDoubleQuote] != nil && counter.Double > 0 { + isClose := d.CanClose && !d.CanOpen + maybeClose := d.CanClose && d.CanOpen && len(line) > 1 && (line[1] == ',' || line[1] == '.' || line[1] == '!' || line[1] == '?') && (len(line) == 2 || (len(line) > 2 && util.IsPunct(line[2]) || util.IsSpace(line[2]))) + if isClose || maybeClose { + // special case: "Monitor 21"" + if len(line) > 1 && line[1] == '"' && unicode.IsDigit(before) { + return nil + } + node := gast.NewString(s.Substitutions[RightDoubleQuote]) + node.SetCode(true) + block.Advance(1) + counter.Double-- + return node + } + } + } + } + return nil +} + +func (s *typographerParser) CloseBlock(parent gast.Node, pc parser.Context) { + getUnclosedCounter(pc).Reset() +} + +type typographer struct { + options []TypographerOption +} + +// Typographer is an extension that replaces punctuations with typographic entities. +var Typographer = &typographer{} + +// NewTypographer returns a new Extender that replaces punctuations with typographic entities. +func NewTypographer(opts ...TypographerOption) goldmark.Extender { + return &typographer{ + options: opts, + } +} + +func (e *typographer) Extend(m goldmark.Markdown) { + m.Parser().AddOptions(parser.WithInlineParsers( + util.Prioritized(NewTypographerParser(e.options...), 9999), + )) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/typographer_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/typographer_test.go new file mode 100644 index 000000000..f8eded105 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extension/typographer_test.go @@ -0,0 +1,21 @@ +package extension + +import ( + "testing" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/testutil" +) + +func TestTypographer(t *testing.T) { + markdown := goldmark.New( + goldmark.WithRendererOptions( + html.WithUnsafe(), + ), + goldmark.WithExtensions( + Typographer, + ), + ) + testutil.DoTestCaseFile(markdown, "_test/typographer.txt", t, testutil.ParseCliCaseArg()...) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/extra_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extra_test.go new file mode 100644 index 000000000..892848e15 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/extra_test.go @@ -0,0 +1,87 @@ +package goldmark_test + +import ( + "bytes" + "testing" + + . "github.com/yuin/goldmark" + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/testutil" +) + +func TestExtras(t *testing.T) { + markdown := New(WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + )) + testutil.DoTestCaseFile(markdown, "_test/extra.txt", t, testutil.ParseCliCaseArg()...) +} + +func TestEndsWithNonSpaceCharacters(t *testing.T) { + markdown := New(WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + )) + source := []byte("```\na\n```") + var b bytes.Buffer + err := markdown.Convert(source, &b) + if err != nil { + t.Error(err.Error()) + } + if b.String() != "
                  a\n
                  \n" { + t.Errorf("%s \n---------\n %s", source, b.String()) + } +} + +func TestWindowsNewLine(t *testing.T) { + markdown := New(WithRendererOptions( + html.WithXHTML(), + )) + source := []byte("a \r\nb\n") + var b bytes.Buffer + err := markdown.Convert(source, &b) + if err != nil { + t.Error(err.Error()) + } + if b.String() != "

                  a
                  \nb

                  \n" { + t.Errorf("%s\n---------\n%s", source, b.String()) + } + + source = []byte("a\\\r\nb\r\n") + var b2 bytes.Buffer + err = markdown.Convert(source, &b2) + if err != nil { + t.Error(err.Error()) + } + if b2.String() != "

                  a
                  \nb

                  \n" { + t.Errorf("\n%s\n---------\n%s", source, b2.String()) + } +} + +type myIDs struct { +} + +func (s *myIDs) Generate(value []byte, kind ast.NodeKind) []byte { + return []byte("my-id") +} + +func (s *myIDs) Put(value []byte) { +} + +func TestAutogeneratedIDs(t *testing.T) { + ctx := parser.NewContext(parser.WithIDs(&myIDs{})) + markdown := New(WithParserOptions(parser.WithAutoHeadingID())) + source := []byte("# Title1\n## Title2") + var b bytes.Buffer + err := markdown.Convert(source, &b, parser.WithContext(ctx)) + if err != nil { + t.Error(err.Error()) + } + if b.String() != `

                  Title1

                  +

                  Title2

                  +` { + t.Errorf("%s\n---------\n%s", source, b.String()) + } +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/fuzz/fuzz.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/fuzz/fuzz.go new file mode 100644 index 000000000..5e72d16c5 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/fuzz/fuzz.go @@ -0,0 +1,39 @@ +package fuzz + +import ( + "bytes" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/extension" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer/html" +) + +// Fuzz runs automated fuzzing against goldmark. +func Fuzz(data []byte) int { + markdown := goldmark.New( + goldmark.WithParserOptions( + parser.WithAutoHeadingID(), + parser.WithAttribute(), + ), + goldmark.WithRendererOptions( + html.WithUnsafe(), + html.WithXHTML(), + ), + goldmark.WithExtensions( + extension.DefinitionList, + extension.Footnote, + extension.GFM, + extension.Linkify, + extension.Table, + extension.TaskList, + extension.Typographer, + ), + ) + var b bytes.Buffer + if err := markdown.Convert(data, &b); err != nil { + return 0 + } + + return 1 +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/fuzz/fuzz_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/fuzz/fuzz_test.go new file mode 100644 index 000000000..c7bfadaa9 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/fuzz/fuzz_test.go @@ -0,0 +1,50 @@ +package fuzz + +import ( + "bytes" + "fmt" + "io/ioutil" + "testing" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/extension" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/util" +) + +var _ = fmt.Printf + +func TestFuzz(t *testing.T) { + crasher := "6dff3d03167cb144d4e2891edac76ee740a77bc7" + data, err := ioutil.ReadFile("crashers/" + crasher) + if err != nil { + return + } + fmt.Printf("%s\n", util.VisualizeSpaces(data)) + fmt.Println("||||||||||||||||||||||") + markdown := goldmark.New( + goldmark.WithParserOptions( + parser.WithAutoHeadingID(), + parser.WithAttribute(), + ), + goldmark.WithRendererOptions( + html.WithUnsafe(), + html.WithXHTML(), + ), + goldmark.WithExtensions( + extension.DefinitionList, + extension.Footnote, + extension.GFM, + extension.Typographer, + extension.Linkify, + extension.Table, + extension.TaskList, + ), + ) + var b bytes.Buffer + if err := markdown.Convert(data, &b); err != nil { + panic(err) + } + fmt.Println(b.String()) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/go.mod b/pkg/mod/github.com/yuin/goldmark@v1.4.4/go.mod new file mode 100644 index 000000000..27712f225 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/go.mod @@ -0,0 +1,3 @@ +module github.com/yuin/goldmark + +go 1.16 diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/go.sum b/pkg/mod/github.com/yuin/goldmark@v1.4.4/go.sum new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/markdown.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/markdown.go new file mode 100644 index 000000000..86d12e225 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/markdown.go @@ -0,0 +1,140 @@ +// Package goldmark implements functions to convert markdown text to a desired format. +package goldmark + +import ( + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" + "io" +) + +// DefaultParser returns a new Parser that is configured by default values. +func DefaultParser() parser.Parser { + return parser.NewParser(parser.WithBlockParsers(parser.DefaultBlockParsers()...), + parser.WithInlineParsers(parser.DefaultInlineParsers()...), + parser.WithParagraphTransformers(parser.DefaultParagraphTransformers()...), + ) +} + +// DefaultRenderer returns a new Renderer that is configured by default values. +func DefaultRenderer() renderer.Renderer { + return renderer.NewRenderer(renderer.WithNodeRenderers(util.Prioritized(html.NewRenderer(), 1000))) +} + +var defaultMarkdown = New() + +// Convert interprets a UTF-8 bytes source in Markdown and +// write rendered contents to a writer w. +func Convert(source []byte, w io.Writer, opts ...parser.ParseOption) error { + return defaultMarkdown.Convert(source, w, opts...) +} + +// A Markdown interface offers functions to convert Markdown text to +// a desired format. +type Markdown interface { + // Convert interprets a UTF-8 bytes source in Markdown and write rendered + // contents to a writer w. + Convert(source []byte, writer io.Writer, opts ...parser.ParseOption) error + + // Parser returns a Parser that will be used for conversion. + Parser() parser.Parser + + // SetParser sets a Parser to this object. + SetParser(parser.Parser) + + // Parser returns a Renderer that will be used for conversion. + Renderer() renderer.Renderer + + // SetRenderer sets a Renderer to this object. + SetRenderer(renderer.Renderer) +} + +// Option is a functional option type for Markdown objects. +type Option func(*markdown) + +// WithExtensions adds extensions. +func WithExtensions(ext ...Extender) Option { + return func(m *markdown) { + m.extensions = append(m.extensions, ext...) + } +} + +// WithParser allows you to override the default parser. +func WithParser(p parser.Parser) Option { + return func(m *markdown) { + m.parser = p + } +} + +// WithParserOptions applies options for the parser. +func WithParserOptions(opts ...parser.Option) Option { + return func(m *markdown) { + m.parser.AddOptions(opts...) + } +} + +// WithRenderer allows you to override the default renderer. +func WithRenderer(r renderer.Renderer) Option { + return func(m *markdown) { + m.renderer = r + } +} + +// WithRendererOptions applies options for the renderer. +func WithRendererOptions(opts ...renderer.Option) Option { + return func(m *markdown) { + m.renderer.AddOptions(opts...) + } +} + +type markdown struct { + parser parser.Parser + renderer renderer.Renderer + extensions []Extender +} + +// New returns a new Markdown with given options. +func New(options ...Option) Markdown { + md := &markdown{ + parser: DefaultParser(), + renderer: DefaultRenderer(), + extensions: []Extender{}, + } + for _, opt := range options { + opt(md) + } + for _, e := range md.extensions { + e.Extend(md) + } + return md +} + +func (m *markdown) Convert(source []byte, writer io.Writer, opts ...parser.ParseOption) error { + reader := text.NewReader(source) + doc := m.parser.Parse(reader, opts...) + return m.renderer.Render(writer, source, doc) +} + +func (m *markdown) Parser() parser.Parser { + return m.parser +} + +func (m *markdown) SetParser(v parser.Parser) { + m.parser = v +} + +func (m *markdown) Renderer() renderer.Renderer { + return m.renderer +} + +func (m *markdown) SetRenderer(v renderer.Renderer) { + m.renderer = v +} + +// An Extender interface is used for extending Markdown. +type Extender interface { + // Extend extends the Markdown. + Extend(Markdown) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/options_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/options_test.go new file mode 100644 index 000000000..9607eb326 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/options_test.go @@ -0,0 +1,19 @@ +package goldmark_test + +import ( + "testing" + + . "github.com/yuin/goldmark" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/testutil" +) + +func TestAttributeAndAutoHeadingID(t *testing.T) { + markdown := New( + WithParserOptions( + parser.WithAttribute(), + parser.WithAutoHeadingID(), + ), + ) + testutil.DoTestCaseFile(markdown, "_test/options.txt", t, testutil.ParseCliCaseArg()...) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/attribute.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/attribute.go new file mode 100644 index 000000000..f86c83610 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/attribute.go @@ -0,0 +1,328 @@ +package parser + +import ( + "bytes" + "io" + "strconv" + + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +var attrNameID = []byte("id") +var attrNameClass = []byte("class") + +// An Attribute is an attribute of the markdown elements +type Attribute struct { + Name []byte + Value interface{} +} + +// An Attributes is a collection of attributes. +type Attributes []Attribute + +// Find returns a (value, true) if an attribute correspond with given name is found, otherwise (nil, false). +func (as Attributes) Find(name []byte) (interface{}, bool) { + for _, a := range as { + if bytes.Equal(a.Name, name) { + return a.Value, true + } + } + return nil, false +} + +func (as Attributes) findUpdate(name []byte, cb func(v interface{}) interface{}) bool { + for i, a := range as { + if bytes.Equal(a.Name, name) { + as[i].Value = cb(a.Value) + return true + } + } + return false +} + +// ParseAttributes parses attributes into a map. +// ParseAttributes returns a parsed attributes and true if could parse +// attributes, otherwise nil and false. +func ParseAttributes(reader text.Reader) (Attributes, bool) { + savedLine, savedPosition := reader.Position() + reader.SkipSpaces() + if reader.Peek() != '{' { + reader.SetPosition(savedLine, savedPosition) + return nil, false + } + reader.Advance(1) + attrs := Attributes{} + for { + if reader.Peek() == '}' { + reader.Advance(1) + return attrs, true + } + attr, ok := parseAttribute(reader) + if !ok { + reader.SetPosition(savedLine, savedPosition) + return nil, false + } + if bytes.Equal(attr.Name, attrNameClass) { + if !attrs.findUpdate(attrNameClass, func(v interface{}) interface{} { + ret := make([]byte, 0, len(v.([]byte))+1+len(attr.Value.([]byte))) + ret = append(ret, v.([]byte)...) + return append(append(ret, ' '), attr.Value.([]byte)...) + }) { + attrs = append(attrs, attr) + } + } else { + attrs = append(attrs, attr) + } + reader.SkipSpaces() + if reader.Peek() == ',' { + reader.Advance(1) + reader.SkipSpaces() + } + } +} + +func parseAttribute(reader text.Reader) (Attribute, bool) { + reader.SkipSpaces() + c := reader.Peek() + if c == '#' || c == '.' { + reader.Advance(1) + line, _ := reader.PeekLine() + i := 0 + // HTML5 allows any kind of characters as id, but XHTML restricts characters for id. + // CommonMark is basically defined for XHTML(even though it is legacy). + // So we restrict id characters. + for ; i < len(line) && !util.IsSpace(line[i]) && + (!util.IsPunct(line[i]) || line[i] == '_' || line[i] == '-' || line[i] == ':' || line[i] == '.'); i++ { + } + name := attrNameClass + if c == '#' { + name = attrNameID + } + reader.Advance(i) + return Attribute{Name: name, Value: line[0:i]}, true + } + line, _ := reader.PeekLine() + if len(line) == 0 { + return Attribute{}, false + } + c = line[0] + if !((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || + c == '_' || c == ':') { + return Attribute{}, false + } + i := 0 + for ; i < len(line); i++ { + c = line[i] + if !((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + c == '_' || c == ':' || c == '.' || c == '-') { + break + } + } + name := line[:i] + reader.Advance(i) + reader.SkipSpaces() + c = reader.Peek() + if c != '=' { + return Attribute{}, false + } + reader.Advance(1) + reader.SkipSpaces() + value, ok := parseAttributeValue(reader) + if !ok { + return Attribute{}, false + } + if bytes.Equal(name, attrNameClass) { + if _, ok = value.([]byte); !ok { + return Attribute{}, false + } + } + return Attribute{Name: name, Value: value}, true +} + +func parseAttributeValue(reader text.Reader) (interface{}, bool) { + reader.SkipSpaces() + c := reader.Peek() + var value interface{} + ok := false + switch c { + case text.EOF: + return Attribute{}, false + case '{': + value, ok = ParseAttributes(reader) + case '[': + value, ok = parseAttributeArray(reader) + case '"': + value, ok = parseAttributeString(reader) + default: + if c == '-' || c == '+' || util.IsNumeric(c) { + value, ok = parseAttributeNumber(reader) + } else { + value, ok = parseAttributeOthers(reader) + } + } + if !ok { + return nil, false + } + return value, true +} + +func parseAttributeArray(reader text.Reader) ([]interface{}, bool) { + reader.Advance(1) // skip [ + ret := []interface{}{} + for i := 0; ; i++ { + c := reader.Peek() + comma := false + if i != 0 && c == ',' { + reader.Advance(1) + comma = true + } + if c == ']' { + if !comma { + reader.Advance(1) + return ret, true + } + return nil, false + } + reader.SkipSpaces() + value, ok := parseAttributeValue(reader) + if !ok { + return nil, false + } + ret = append(ret, value) + reader.SkipSpaces() + } +} + +func parseAttributeString(reader text.Reader) ([]byte, bool) { + reader.Advance(1) // skip " + line, _ := reader.PeekLine() + i := 0 + l := len(line) + var buf bytes.Buffer + for i < l { + c := line[i] + if c == '\\' && i != l-1 { + n := line[i+1] + switch n { + case '"', '/', '\\': + buf.WriteByte(n) + i += 2 + case 'b': + buf.WriteString("\b") + i += 2 + case 'f': + buf.WriteString("\f") + i += 2 + case 'n': + buf.WriteString("\n") + i += 2 + case 'r': + buf.WriteString("\r") + i += 2 + case 't': + buf.WriteString("\t") + i += 2 + default: + buf.WriteByte('\\') + i++ + } + continue + } + if c == '"' { + reader.Advance(i + 1) + return buf.Bytes(), true + } + buf.WriteByte(c) + i++ + } + return nil, false +} + +func scanAttributeDecimal(reader text.Reader, w io.ByteWriter) { + for { + c := reader.Peek() + if util.IsNumeric(c) { + w.WriteByte(c) + } else { + return + } + reader.Advance(1) + } +} + +func parseAttributeNumber(reader text.Reader) (float64, bool) { + sign := 1 + c := reader.Peek() + if c == '-' { + sign = -1 + reader.Advance(1) + } else if c == '+' { + reader.Advance(1) + } + var buf bytes.Buffer + if !util.IsNumeric(reader.Peek()) { + return 0, false + } + scanAttributeDecimal(reader, &buf) + if buf.Len() == 0 { + return 0, false + } + c = reader.Peek() + if c == '.' { + buf.WriteByte(c) + reader.Advance(1) + scanAttributeDecimal(reader, &buf) + } + c = reader.Peek() + if c == 'e' || c == 'E' { + buf.WriteByte(c) + reader.Advance(1) + c = reader.Peek() + if c == '-' || c == '+' { + buf.WriteByte(c) + reader.Advance(1) + } + scanAttributeDecimal(reader, &buf) + } + f, err := strconv.ParseFloat(buf.String(), 10) + if err != nil { + return 0, false + } + return float64(sign) * f, true +} + +var bytesTrue = []byte("true") +var bytesFalse = []byte("false") +var bytesNull = []byte("null") + +func parseAttributeOthers(reader text.Reader) (interface{}, bool) { + line, _ := reader.PeekLine() + c := line[0] + if !((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || + c == '_' || c == ':') { + return nil, false + } + i := 0 + for ; i < len(line); i++ { + c := line[i] + if !((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + c == '_' || c == ':' || c == '.' || c == '-') { + break + } + } + value := line[:i] + reader.Advance(i) + if bytes.Equal(value, bytesTrue) { + return true, true + } + if bytes.Equal(value, bytesFalse) { + return false, true + } + if bytes.Equal(value, bytesNull) { + return nil, true + } + return value, true +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/atx_heading.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/atx_heading.go new file mode 100644 index 000000000..13a198b52 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/atx_heading.go @@ -0,0 +1,246 @@ +package parser + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +// A HeadingConfig struct is a data structure that holds configuration of the renderers related to headings. +type HeadingConfig struct { + AutoHeadingID bool + Attribute bool +} + +// SetOption implements SetOptioner. +func (b *HeadingConfig) SetOption(name OptionName, value interface{}) { + switch name { + case optAutoHeadingID: + b.AutoHeadingID = true + case optAttribute: + b.Attribute = true + } +} + +// A HeadingOption interface sets options for heading parsers. +type HeadingOption interface { + Option + SetHeadingOption(*HeadingConfig) +} + +// AutoHeadingID is an option name that enables auto IDs for headings. +const optAutoHeadingID OptionName = "AutoHeadingID" + +type withAutoHeadingID struct { +} + +func (o *withAutoHeadingID) SetParserOption(c *Config) { + c.Options[optAutoHeadingID] = true +} + +func (o *withAutoHeadingID) SetHeadingOption(p *HeadingConfig) { + p.AutoHeadingID = true +} + +// WithAutoHeadingID is a functional option that enables custom heading ids and +// auto generated heading ids. +func WithAutoHeadingID() HeadingOption { + return &withAutoHeadingID{} +} + +type withHeadingAttribute struct { + Option +} + +func (o *withHeadingAttribute) SetHeadingOption(p *HeadingConfig) { + p.Attribute = true +} + +// WithHeadingAttribute is a functional option that enables custom heading attributes. +func WithHeadingAttribute() HeadingOption { + return &withHeadingAttribute{WithAttribute()} +} + +type atxHeadingParser struct { + HeadingConfig +} + +// NewATXHeadingParser return a new BlockParser that can parse ATX headings. +func NewATXHeadingParser(opts ...HeadingOption) BlockParser { + p := &atxHeadingParser{} + for _, o := range opts { + o.SetHeadingOption(&p.HeadingConfig) + } + return p +} + +func (b *atxHeadingParser) Trigger() []byte { + return []byte{'#'} +} + +func (b *atxHeadingParser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { + line, segment := reader.PeekLine() + pos := pc.BlockOffset() + if pos < 0 { + return nil, NoChildren + } + i := pos + for ; i < len(line) && line[i] == '#'; i++ { + } + level := i - pos + if i == pos || level > 6 { + return nil, NoChildren + } + if i == len(line) { // alone '#' (without a new line character) + return ast.NewHeading(level), NoChildren + } + l := util.TrimLeftSpaceLength(line[i:]) + if l == 0 { + return nil, NoChildren + } + start := i + l + if start >= len(line) { + start = len(line) - 1 + } + origstart := start + stop := len(line) - util.TrimRightSpaceLength(line) + + node := ast.NewHeading(level) + parsed := false + if b.Attribute { // handles special case like ### heading ### {#id} + start-- + closureClose := -1 + closureOpen := -1 + for j := start; j < stop; { + c := line[j] + if util.IsEscapedPunctuation(line, j) { + j += 2 + } else if util.IsSpace(c) && j < stop-1 && line[j+1] == '#' { + closureOpen = j + 1 + k := j + 1 + for ; k < stop && line[k] == '#'; k++ { + } + closureClose = k + break + } else { + j++ + } + } + if closureClose > 0 { + reader.Advance(closureClose) + attrs, ok := ParseAttributes(reader) + rest, _ := reader.PeekLine() + parsed = ok && util.IsBlank(rest) + if parsed { + for _, attr := range attrs { + node.SetAttribute(attr.Name, attr.Value) + } + node.Lines().Append(text.NewSegment(segment.Start+start+1-segment.Padding, segment.Start+closureOpen-segment.Padding)) + } + } + } + if !parsed { + start = origstart + stop := len(line) - util.TrimRightSpaceLength(line) + if stop <= start { // empty headings like '##[space]' + stop = start + } else { + i = stop - 1 + for ; line[i] == '#' && i >= start; i-- { + } + if i != stop-1 && !util.IsSpace(line[i]) { + i = stop - 1 + } + i++ + stop = i + } + + if len(util.TrimRight(line[start:stop], []byte{'#'})) != 0 { // empty heading like '### ###' + node.Lines().Append(text.NewSegment(segment.Start+start-segment.Padding, segment.Start+stop-segment.Padding)) + } + } + return node, NoChildren +} + +func (b *atxHeadingParser) Continue(node ast.Node, reader text.Reader, pc Context) State { + return Close +} + +func (b *atxHeadingParser) Close(node ast.Node, reader text.Reader, pc Context) { + if b.Attribute { + _, ok := node.AttributeString("id") + if !ok { + parseLastLineAttributes(node, reader, pc) + } + } + + if b.AutoHeadingID { + id, ok := node.AttributeString("id") + if !ok { + generateAutoHeadingID(node.(*ast.Heading), reader, pc) + } else { + pc.IDs().Put(id.([]byte)) + } + } +} + +func (b *atxHeadingParser) CanInterruptParagraph() bool { + return true +} + +func (b *atxHeadingParser) CanAcceptIndentedLine() bool { + return false +} + +func generateAutoHeadingID(node *ast.Heading, reader text.Reader, pc Context) { + var line []byte + lastIndex := node.Lines().Len() - 1 + if lastIndex > -1 { + lastLine := node.Lines().At(lastIndex) + line = lastLine.Value(reader.Source()) + } + headingID := pc.IDs().Generate(line, ast.KindHeading) + node.SetAttribute(attrNameID, headingID) +} + +func parseLastLineAttributes(node ast.Node, reader text.Reader, pc Context) { + lastIndex := node.Lines().Len() - 1 + if lastIndex < 0 { // empty headings + return + } + lastLine := node.Lines().At(lastIndex) + line := lastLine.Value(reader.Source()) + lr := text.NewReader(line) + var attrs Attributes + var ok bool + var start text.Segment + var sl int + var end text.Segment + for { + c := lr.Peek() + if c == text.EOF { + break + } + if c == '\\' { + lr.Advance(1) + if lr.Peek() == '{' { + lr.Advance(1) + } + continue + } + if c == '{' { + sl, start = lr.Position() + attrs, ok = ParseAttributes(lr) + _, end = lr.Position() + lr.SetPosition(sl, start) + } + lr.Advance(1) + } + if ok && util.IsBlank(line[end.Start:]) { + for _, attr := range attrs { + node.SetAttribute(attr.Name, attr.Value) + } + lastLine.Stop = lastLine.Start + start.Start + node.Lines().Set(lastIndex, lastLine) + } +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/auto_link.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/auto_link.go new file mode 100644 index 000000000..726a50571 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/auto_link.go @@ -0,0 +1,42 @@ +package parser + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +type autoLinkParser struct { +} + +var defaultAutoLinkParser = &autoLinkParser{} + +// NewAutoLinkParser returns a new InlineParser that parses autolinks +// surrounded by '<' and '>' . +func NewAutoLinkParser() InlineParser { + return defaultAutoLinkParser +} + +func (s *autoLinkParser) Trigger() []byte { + return []byte{'<'} +} + +func (s *autoLinkParser) Parse(parent ast.Node, block text.Reader, pc Context) ast.Node { + line, segment := block.PeekLine() + stop := util.FindEmailIndex(line[1:]) + typ := ast.AutoLinkType(ast.AutoLinkEmail) + if stop < 0 { + stop = util.FindURLIndex(line[1:]) + typ = ast.AutoLinkURL + } + if stop < 0 { + return nil + } + stop++ + if stop >= len(line) || line[stop] != '>' { + return nil + } + value := ast.NewTextSegment(text.NewSegment(segment.Start+1, segment.Start+stop)) + block.Advance(stop + 1) + return ast.NewAutoLink(typ, value) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/blockquote.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/blockquote.go new file mode 100644 index 000000000..e7778dca7 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/blockquote.go @@ -0,0 +1,69 @@ +package parser + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +type blockquoteParser struct { +} + +var defaultBlockquoteParser = &blockquoteParser{} + +// NewBlockquoteParser returns a new BlockParser that +// parses blockquotes. +func NewBlockquoteParser() BlockParser { + return defaultBlockquoteParser +} + +func (b *blockquoteParser) process(reader text.Reader) bool { + line, _ := reader.PeekLine() + w, pos := util.IndentWidth(line, reader.LineOffset()) + if w > 3 || pos >= len(line) || line[pos] != '>' { + return false + } + pos++ + if pos >= len(line) || line[pos] == '\n' { + reader.Advance(pos) + return true + } + if line[pos] == ' ' || line[pos] == '\t' { + pos++ + } + reader.Advance(pos) + if line[pos-1] == '\t' { + reader.SetPadding(2) + } + return true +} + +func (b *blockquoteParser) Trigger() []byte { + return []byte{'>'} +} + +func (b *blockquoteParser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { + if b.process(reader) { + return ast.NewBlockquote(), HasChildren + } + return nil, NoChildren +} + +func (b *blockquoteParser) Continue(node ast.Node, reader text.Reader, pc Context) State { + if b.process(reader) { + return Continue | HasChildren + } + return Close +} + +func (b *blockquoteParser) Close(node ast.Node, reader text.Reader, pc Context) { + // nothing to do +} + +func (b *blockquoteParser) CanInterruptParagraph() bool { + return true +} + +func (b *blockquoteParser) CanAcceptIndentedLine() bool { + return false +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/code_block.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/code_block.go new file mode 100644 index 000000000..732f18c65 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/code_block.go @@ -0,0 +1,100 @@ +package parser + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +type codeBlockParser struct { +} + +// CodeBlockParser is a BlockParser implementation that parses indented code blocks. +var defaultCodeBlockParser = &codeBlockParser{} + +// NewCodeBlockParser returns a new BlockParser that +// parses code blocks. +func NewCodeBlockParser() BlockParser { + return defaultCodeBlockParser +} + +func (b *codeBlockParser) Trigger() []byte { + return nil +} + +func (b *codeBlockParser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { + line, segment := reader.PeekLine() + pos, padding := util.IndentPosition(line, reader.LineOffset(), 4) + if pos < 0 || util.IsBlank(line) { + return nil, NoChildren + } + node := ast.NewCodeBlock() + reader.AdvanceAndSetPadding(pos, padding) + _, segment = reader.PeekLine() + // if code block line starts with a tab, keep a tab as it is. + if segment.Padding != 0 { + preserveLeadingTabInCodeBlock(&segment, reader, 0) + } + node.Lines().Append(segment) + reader.Advance(segment.Len() - 1) + return node, NoChildren + +} + +func (b *codeBlockParser) Continue(node ast.Node, reader text.Reader, pc Context) State { + line, segment := reader.PeekLine() + if util.IsBlank(line) { + node.Lines().Append(segment.TrimLeftSpaceWidth(4, reader.Source())) + return Continue | NoChildren + } + pos, padding := util.IndentPosition(line, reader.LineOffset(), 4) + if pos < 0 { + return Close + } + reader.AdvanceAndSetPadding(pos, padding) + _, segment = reader.PeekLine() + + // if code block line starts with a tab, keep a tab as it is. + if segment.Padding != 0 { + preserveLeadingTabInCodeBlock(&segment, reader, 0) + } + + node.Lines().Append(segment) + reader.Advance(segment.Len() - 1) + return Continue | NoChildren +} + +func (b *codeBlockParser) Close(node ast.Node, reader text.Reader, pc Context) { + // trim trailing blank lines + lines := node.Lines() + length := lines.Len() - 1 + source := reader.Source() + for length >= 0 { + line := lines.At(length) + if util.IsBlank(line.Value(source)) { + length-- + } else { + break + } + } + lines.SetSliced(0, length+1) +} + +func (b *codeBlockParser) CanInterruptParagraph() bool { + return false +} + +func (b *codeBlockParser) CanAcceptIndentedLine() bool { + return true +} + +func preserveLeadingTabInCodeBlock(segment *text.Segment, reader text.Reader, indent int) { + offsetWithPadding := reader.LineOffset() + indent + sl, ss := reader.Position() + reader.SetPosition(sl, text.NewSegment(ss.Start-1, ss.Stop)) + if offsetWithPadding == reader.LineOffset() { + segment.Padding = 0 + segment.Start-- + } + reader.SetPosition(sl, ss) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/code_span.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/code_span.go new file mode 100644 index 000000000..a74b09bc4 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/code_span.go @@ -0,0 +1,84 @@ +package parser + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" +) + +type codeSpanParser struct { +} + +var defaultCodeSpanParser = &codeSpanParser{} + +// NewCodeSpanParser return a new InlineParser that parses inline codes +// surrounded by '`' . +func NewCodeSpanParser() InlineParser { + return defaultCodeSpanParser +} + +func (s *codeSpanParser) Trigger() []byte { + return []byte{'`'} +} + +func (s *codeSpanParser) Parse(parent ast.Node, block text.Reader, pc Context) ast.Node { + line, startSegment := block.PeekLine() + opener := 0 + for ; opener < len(line) && line[opener] == '`'; opener++ { + } + block.Advance(opener) + l, pos := block.Position() + node := ast.NewCodeSpan() + for { + line, segment := block.PeekLine() + if line == nil { + block.SetPosition(l, pos) + return ast.NewTextSegment(startSegment.WithStop(startSegment.Start + opener)) + } + for i := 0; i < len(line); i++ { + c := line[i] + if c == '`' { + oldi := i + for ; i < len(line) && line[i] == '`'; i++ { + } + closure := i - oldi + if closure == opener && (i >= len(line) || line[i] != '`') { + segment = segment.WithStop(segment.Start + i - closure) + if !segment.IsEmpty() { + node.AppendChild(node, ast.NewRawTextSegment(segment)) + } + block.Advance(i) + goto end + } + } + } + node.AppendChild(node, ast.NewRawTextSegment(segment)) + block.AdvanceLine() + } +end: + if !node.IsBlank(block.Source()) { + // trim first halfspace and last halfspace + segment := node.FirstChild().(*ast.Text).Segment + shouldTrimmed := true + if !(!segment.IsEmpty() && isSpaceOrNewline(block.Source()[segment.Start])) { + shouldTrimmed = false + } + segment = node.LastChild().(*ast.Text).Segment + if !(!segment.IsEmpty() && isSpaceOrNewline(block.Source()[segment.Stop-1])) { + shouldTrimmed = false + } + if shouldTrimmed { + t := node.FirstChild().(*ast.Text) + segment := t.Segment + t.Segment = segment.WithStart(segment.Start + 1) + t = node.LastChild().(*ast.Text) + segment = node.LastChild().(*ast.Text).Segment + t.Segment = segment.WithStop(segment.Stop - 1) + } + + } + return node +} + +func isSpaceOrNewline(c byte) bool { + return c == ' ' || c == '\n' +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/delimiter.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/delimiter.go new file mode 100644 index 000000000..eb843af44 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/delimiter.go @@ -0,0 +1,238 @@ +package parser + +import ( + "fmt" + "strings" + + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +// A DelimiterProcessor interface provides a set of functions about +// Delimiter nodes. +type DelimiterProcessor interface { + // IsDelimiter returns true if given character is a delimiter, otherwise false. + IsDelimiter(byte) bool + + // CanOpenCloser returns true if given opener can close given closer, otherwise false. + CanOpenCloser(opener, closer *Delimiter) bool + + // OnMatch will be called when new matched delimiter found. + // OnMatch should return a new Node correspond to the matched delimiter. + OnMatch(consumes int) ast.Node +} + +// A Delimiter struct represents a delimiter like '*' of the Markdown text. +type Delimiter struct { + ast.BaseInline + + Segment text.Segment + + // CanOpen is set true if this delimiter can open a span for a new node. + // See https://spec.commonmark.org/0.30/#can-open-emphasis for details. + CanOpen bool + + // CanClose is set true if this delimiter can close a span for a new node. + // See https://spec.commonmark.org/0.30/#can-open-emphasis for details. + CanClose bool + + // Length is a remaining length of this delimiter. + Length int + + // OriginalLength is a original length of this delimiter. + OriginalLength int + + // Char is a character of this delimiter. + Char byte + + // PreviousDelimiter is a previous sibling delimiter node of this delimiter. + PreviousDelimiter *Delimiter + + // NextDelimiter is a next sibling delimiter node of this delimiter. + NextDelimiter *Delimiter + + // Processor is a DelimiterProcessor associated with this delimiter. + Processor DelimiterProcessor +} + +// Inline implements Inline.Inline. +func (d *Delimiter) Inline() {} + +// Dump implements Node.Dump. +func (d *Delimiter) Dump(source []byte, level int) { + fmt.Printf("%sDelimiter: \"%s\"\n", strings.Repeat(" ", level), string(d.Text(source))) +} + +var kindDelimiter = ast.NewNodeKind("Delimiter") + +// Kind implements Node.Kind +func (d *Delimiter) Kind() ast.NodeKind { + return kindDelimiter +} + +// Text implements Node.Text +func (d *Delimiter) Text(source []byte) []byte { + return d.Segment.Value(source) +} + +// ConsumeCharacters consumes delimiters. +func (d *Delimiter) ConsumeCharacters(n int) { + d.Length -= n + d.Segment = d.Segment.WithStop(d.Segment.Start + d.Length) +} + +// CalcComsumption calculates how many characters should be used for opening +// a new span correspond to given closer. +func (d *Delimiter) CalcComsumption(closer *Delimiter) int { + if (d.CanClose || closer.CanOpen) && (d.OriginalLength+closer.OriginalLength)%3 == 0 && closer.OriginalLength%3 != 0 { + return 0 + } + if d.Length >= 2 && closer.Length >= 2 { + return 2 + } + return 1 +} + +// NewDelimiter returns a new Delimiter node. +func NewDelimiter(canOpen, canClose bool, length int, char byte, processor DelimiterProcessor) *Delimiter { + c := &Delimiter{ + BaseInline: ast.BaseInline{}, + CanOpen: canOpen, + CanClose: canClose, + Length: length, + OriginalLength: length, + Char: char, + PreviousDelimiter: nil, + NextDelimiter: nil, + Processor: processor, + } + return c +} + +// ScanDelimiter scans a delimiter by given DelimiterProcessor. +func ScanDelimiter(line []byte, before rune, min int, processor DelimiterProcessor) *Delimiter { + i := 0 + c := line[i] + j := i + if !processor.IsDelimiter(c) { + return nil + } + for ; j < len(line) && c == line[j]; j++ { + } + if (j - i) >= min { + after := rune(' ') + if j != len(line) { + after = util.ToRune(line, j) + } + + canOpen, canClose := false, false + beforeIsPunctuation := util.IsPunctRune(before) + beforeIsWhitespace := util.IsSpaceRune(before) + afterIsPunctuation := util.IsPunctRune(after) + afterIsWhitespace := util.IsSpaceRune(after) + + isLeft := !afterIsWhitespace && + (!afterIsPunctuation || beforeIsWhitespace || beforeIsPunctuation) + isRight := !beforeIsWhitespace && + (!beforeIsPunctuation || afterIsWhitespace || afterIsPunctuation) + + if line[i] == '_' { + canOpen = isLeft && (!isRight || beforeIsPunctuation) + canClose = isRight && (!isLeft || afterIsPunctuation) + } else { + canOpen = isLeft + canClose = isRight + } + return NewDelimiter(canOpen, canClose, j-i, c, processor) + } + return nil +} + +// ProcessDelimiters processes the delimiter list in the context. +// Processing will be stop when reaching the bottom. +// +// If you implement an inline parser that can have other inline nodes as +// children, you should call this function when nesting span has closed. +func ProcessDelimiters(bottom ast.Node, pc Context) { + lastDelimiter := pc.LastDelimiter() + if lastDelimiter == nil { + return + } + var closer *Delimiter + if bottom != nil { + if bottom != lastDelimiter { + for c := lastDelimiter.PreviousSibling(); c != nil && c != bottom; { + if d, ok := c.(*Delimiter); ok { + closer = d + } + c = c.PreviousSibling() + } + } + } else { + closer = pc.FirstDelimiter() + } + if closer == nil { + pc.ClearDelimiters(bottom) + return + } + for closer != nil { + if !closer.CanClose { + closer = closer.NextDelimiter + continue + } + consume := 0 + found := false + maybeOpener := false + var opener *Delimiter + for opener = closer.PreviousDelimiter; opener != nil && opener != bottom; opener = opener.PreviousDelimiter { + if opener.CanOpen && opener.Processor.CanOpenCloser(opener, closer) { + maybeOpener = true + consume = opener.CalcComsumption(closer) + if consume > 0 { + found = true + break + } + } + } + if !found { + next := closer.NextDelimiter + if !maybeOpener && !closer.CanOpen { + pc.RemoveDelimiter(closer) + } + closer = next + continue + } + opener.ConsumeCharacters(consume) + closer.ConsumeCharacters(consume) + + node := opener.Processor.OnMatch(consume) + + parent := opener.Parent() + child := opener.NextSibling() + + for child != nil && child != closer { + next := child.NextSibling() + node.AppendChild(node, child) + child = next + } + parent.InsertAfter(parent, opener, node) + + for c := opener.NextDelimiter; c != nil && c != closer; { + next := c.NextDelimiter + pc.RemoveDelimiter(c) + c = next + } + + if opener.Length == 0 { + pc.RemoveDelimiter(opener) + } + + if closer.Length == 0 { + next := closer.NextDelimiter + pc.RemoveDelimiter(closer) + closer = next + } + } + pc.ClearDelimiters(bottom) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/emphasis.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/emphasis.go new file mode 100644 index 000000000..488647117 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/emphasis.go @@ -0,0 +1,50 @@ +package parser + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" +) + +type emphasisDelimiterProcessor struct { +} + +func (p *emphasisDelimiterProcessor) IsDelimiter(b byte) bool { + return b == '*' || b == '_' +} + +func (p *emphasisDelimiterProcessor) CanOpenCloser(opener, closer *Delimiter) bool { + return opener.Char == closer.Char +} + +func (p *emphasisDelimiterProcessor) OnMatch(consumes int) ast.Node { + return ast.NewEmphasis(consumes) +} + +var defaultEmphasisDelimiterProcessor = &emphasisDelimiterProcessor{} + +type emphasisParser struct { +} + +var defaultEmphasisParser = &emphasisParser{} + +// NewEmphasisParser return a new InlineParser that parses emphasises. +func NewEmphasisParser() InlineParser { + return defaultEmphasisParser +} + +func (s *emphasisParser) Trigger() []byte { + return []byte{'*', '_'} +} + +func (s *emphasisParser) Parse(parent ast.Node, block text.Reader, pc Context) ast.Node { + before := block.PrecendingCharacter() + line, segment := block.PeekLine() + node := ScanDelimiter(line, before, 1, defaultEmphasisDelimiterProcessor) + if node == nil { + return nil + } + node.Segment = segment.WithStop(segment.Start + node.OriginalLength) + block.Advance(node.OriginalLength) + pc.PushDelimiter(node) + return node +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/fcode_block.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/fcode_block.go new file mode 100644 index 000000000..5914138d3 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/fcode_block.go @@ -0,0 +1,121 @@ +package parser + +import ( + "bytes" + + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +type fencedCodeBlockParser struct { +} + +var defaultFencedCodeBlockParser = &fencedCodeBlockParser{} + +// NewFencedCodeBlockParser returns a new BlockParser that +// parses fenced code blocks. +func NewFencedCodeBlockParser() BlockParser { + return defaultFencedCodeBlockParser +} + +type fenceData struct { + char byte + indent int + length int + node ast.Node +} + +var fencedCodeBlockInfoKey = NewContextKey() + +func (b *fencedCodeBlockParser) Trigger() []byte { + return []byte{'~', '`'} +} + +func (b *fencedCodeBlockParser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { + line, segment := reader.PeekLine() + pos := pc.BlockOffset() + if pos < 0 || (line[pos] != '`' && line[pos] != '~') { + return nil, NoChildren + } + findent := pos + fenceChar := line[pos] + i := pos + for ; i < len(line) && line[i] == fenceChar; i++ { + } + oFenceLength := i - pos + if oFenceLength < 3 { + return nil, NoChildren + } + var info *ast.Text + if i < len(line)-1 { + rest := line[i:] + left := util.TrimLeftSpaceLength(rest) + right := util.TrimRightSpaceLength(rest) + if left < len(rest)-right { + infoStart, infoStop := segment.Start-segment.Padding+i+left, segment.Stop-right + value := rest[left : len(rest)-right] + if fenceChar == '`' && bytes.IndexByte(value, '`') > -1 { + return nil, NoChildren + } else if infoStart != infoStop { + info = ast.NewTextSegment(text.NewSegment(infoStart, infoStop)) + } + } + } + node := ast.NewFencedCodeBlock(info) + pc.Set(fencedCodeBlockInfoKey, &fenceData{fenceChar, findent, oFenceLength, node}) + return node, NoChildren + +} + +func (b *fencedCodeBlockParser) Continue(node ast.Node, reader text.Reader, pc Context) State { + line, segment := reader.PeekLine() + fdata := pc.Get(fencedCodeBlockInfoKey).(*fenceData) + + w, pos := util.IndentWidth(line, reader.LineOffset()) + if w < 4 { + i := pos + for ; i < len(line) && line[i] == fdata.char; i++ { + } + length := i - pos + if length >= fdata.length && util.IsBlank(line[i:]) { + newline := 1 + if line[len(line)-1] != '\n' { + newline = 0 + } + reader.Advance(segment.Stop - segment.Start - newline - segment.Padding) + return Close + } + } + pos, padding := util.IndentPositionPadding(line, reader.LineOffset(), segment.Padding, fdata.indent) + if pos < 0 { + pos = util.FirstNonSpacePosition(line) + if pos < 0 { + pos = 0 + } + padding = 0 + } + seg := text.NewSegmentPadding(segment.Start+pos, segment.Stop, padding) + // if code block line starts with a tab, keep a tab as it is. + if padding != 0 { + preserveLeadingTabInCodeBlock(&seg, reader, fdata.indent) + } + node.Lines().Append(seg) + reader.AdvanceAndSetPadding(segment.Stop-segment.Start-pos-1, padding) + return Continue | NoChildren +} + +func (b *fencedCodeBlockParser) Close(node ast.Node, reader text.Reader, pc Context) { + fdata := pc.Get(fencedCodeBlockInfoKey).(*fenceData) + if fdata.node == node { + pc.Set(fencedCodeBlockInfoKey, nil) + } +} + +func (b *fencedCodeBlockParser) CanInterruptParagraph() bool { + return true +} + +func (b *fencedCodeBlockParser) CanAcceptIndentedLine() bool { + return false +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/html_block.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/html_block.go new file mode 100644 index 000000000..e6f5a3fd9 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/html_block.go @@ -0,0 +1,228 @@ +package parser + +import ( + "bytes" + "regexp" + "strings" + + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +var allowedBlockTags = map[string]bool{ + "address": true, + "article": true, + "aside": true, + "base": true, + "basefont": true, + "blockquote": true, + "body": true, + "caption": true, + "center": true, + "col": true, + "colgroup": true, + "dd": true, + "details": true, + "dialog": true, + "dir": true, + "div": true, + "dl": true, + "dt": true, + "fieldset": true, + "figcaption": true, + "figure": true, + "footer": true, + "form": true, + "frame": true, + "frameset": true, + "h1": true, + "h2": true, + "h3": true, + "h4": true, + "h5": true, + "h6": true, + "head": true, + "header": true, + "hr": true, + "html": true, + "iframe": true, + "legend": true, + "li": true, + "link": true, + "main": true, + "menu": true, + "menuitem": true, + "meta": true, + "nav": true, + "noframes": true, + "ol": true, + "optgroup": true, + "option": true, + "p": true, + "param": true, + "section": true, + "source": true, + "summary": true, + "table": true, + "tbody": true, + "td": true, + "tfoot": true, + "th": true, + "thead": true, + "title": true, + "tr": true, + "track": true, + "ul": true, +} + +var htmlBlockType1OpenRegexp = regexp.MustCompile(`(?i)^[ ]{0,3}<(script|pre|style|textarea)(?:\s.*|>.*|/>.*|)(?:\r\n|\n)?$`) +var htmlBlockType1CloseRegexp = regexp.MustCompile(`(?i)^.*.*`) + +var htmlBlockType2OpenRegexp = regexp.MustCompile(`^[ ]{0,3}'} + +var htmlBlockType3OpenRegexp = regexp.MustCompile(`^[ ]{0,3}<\?`) +var htmlBlockType3Close = []byte{'?', '>'} + +var htmlBlockType4OpenRegexp = regexp.MustCompile(`^[ ]{0,3}'} + +var htmlBlockType5OpenRegexp = regexp.MustCompile(`^[ ]{0,3}<\!\[CDATA\[`) +var htmlBlockType5Close = []byte{']', ']', '>'} + +var htmlBlockType6Regexp = regexp.MustCompile(`^[ ]{0,3}<(?:/[ ]*)?([a-zA-Z]+[a-zA-Z0-9\-]*)(?:[ ].*|>.*|/>.*|)(?:\r\n|\n)?$`) + +var htmlBlockType7Regexp = regexp.MustCompile(`^[ ]{0,3}<(/[ ]*)?([a-zA-Z]+[a-zA-Z0-9\-]*)(` + attributePattern + `*)[ ]*(?:>|/>)[ ]*(?:\r\n|\n)?$`) + +type htmlBlockParser struct { +} + +var defaultHTMLBlockParser = &htmlBlockParser{} + +// NewHTMLBlockParser return a new BlockParser that can parse html +// blocks. +func NewHTMLBlockParser() BlockParser { + return defaultHTMLBlockParser +} + +func (b *htmlBlockParser) Trigger() []byte { + return []byte{'<'} +} + +func (b *htmlBlockParser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { + var node *ast.HTMLBlock + line, segment := reader.PeekLine() + last := pc.LastOpenedBlock().Node + if pos := pc.BlockOffset(); pos < 0 || line[pos] != '<' { + return nil, NoChildren + } + + if m := htmlBlockType1OpenRegexp.FindSubmatchIndex(line); m != nil { + node = ast.NewHTMLBlock(ast.HTMLBlockType1) + } else if htmlBlockType2OpenRegexp.Match(line) { + node = ast.NewHTMLBlock(ast.HTMLBlockType2) + } else if htmlBlockType3OpenRegexp.Match(line) { + node = ast.NewHTMLBlock(ast.HTMLBlockType3) + } else if htmlBlockType4OpenRegexp.Match(line) { + node = ast.NewHTMLBlock(ast.HTMLBlockType4) + } else if htmlBlockType5OpenRegexp.Match(line) { + node = ast.NewHTMLBlock(ast.HTMLBlockType5) + } else if match := htmlBlockType7Regexp.FindSubmatchIndex(line); match != nil { + isCloseTag := match[2] > -1 && bytes.Equal(line[match[2]:match[3]], []byte("/")) + hasAttr := match[6] != match[7] + tagName := strings.ToLower(string(line[match[4]:match[5]])) + _, ok := allowedBlockTags[tagName] + if ok { + node = ast.NewHTMLBlock(ast.HTMLBlockType6) + } else if tagName != "script" && tagName != "style" && tagName != "pre" && !ast.IsParagraph(last) && !(isCloseTag && hasAttr) { // type 7 can not interrupt paragraph + node = ast.NewHTMLBlock(ast.HTMLBlockType7) + } + } + if node == nil { + if match := htmlBlockType6Regexp.FindSubmatchIndex(line); match != nil { + tagName := string(line[match[2]:match[3]]) + _, ok := allowedBlockTags[strings.ToLower(tagName)] + if ok { + node = ast.NewHTMLBlock(ast.HTMLBlockType6) + } + } + } + if node != nil { + reader.Advance(segment.Len() - 1) + node.Lines().Append(segment) + return node, NoChildren + } + return nil, NoChildren +} + +func (b *htmlBlockParser) Continue(node ast.Node, reader text.Reader, pc Context) State { + htmlBlock := node.(*ast.HTMLBlock) + lines := htmlBlock.Lines() + line, segment := reader.PeekLine() + var closurePattern []byte + + switch htmlBlock.HTMLBlockType { + case ast.HTMLBlockType1: + if lines.Len() == 1 { + firstLine := lines.At(0) + if htmlBlockType1CloseRegexp.Match(firstLine.Value(reader.Source())) { + return Close + } + } + if htmlBlockType1CloseRegexp.Match(line) { + htmlBlock.ClosureLine = segment + reader.Advance(segment.Len() - 1) + return Close + } + case ast.HTMLBlockType2: + closurePattern = htmlBlockType2Close + fallthrough + case ast.HTMLBlockType3: + if closurePattern == nil { + closurePattern = htmlBlockType3Close + } + fallthrough + case ast.HTMLBlockType4: + if closurePattern == nil { + closurePattern = htmlBlockType4Close + } + fallthrough + case ast.HTMLBlockType5: + if closurePattern == nil { + closurePattern = htmlBlockType5Close + } + + if lines.Len() == 1 { + firstLine := lines.At(0) + if bytes.Contains(firstLine.Value(reader.Source()), closurePattern) { + return Close + } + } + if bytes.Contains(line, closurePattern) { + htmlBlock.ClosureLine = segment + reader.Advance(segment.Len() - 1) + return Close + } + + case ast.HTMLBlockType6, ast.HTMLBlockType7: + if util.IsBlank(line) { + return Close + } + } + node.Lines().Append(segment) + reader.Advance(segment.Len() - 1) + return Continue | NoChildren +} + +func (b *htmlBlockParser) Close(node ast.Node, reader text.Reader, pc Context) { + // nothing to do +} + +func (b *htmlBlockParser) CanInterruptParagraph() bool { + return true +} + +func (b *htmlBlockParser) CanAcceptIndentedLine() bool { + return false +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/link.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/link.go new file mode 100644 index 000000000..bd96dfb77 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/link.go @@ -0,0 +1,382 @@ +package parser + +import ( + "fmt" + "strings" + + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +var linkLabelStateKey = NewContextKey() + +type linkLabelState struct { + ast.BaseInline + + Segment text.Segment + + IsImage bool + + Prev *linkLabelState + + Next *linkLabelState + + First *linkLabelState + + Last *linkLabelState +} + +func newLinkLabelState(segment text.Segment, isImage bool) *linkLabelState { + return &linkLabelState{ + Segment: segment, + IsImage: isImage, + } +} + +func (s *linkLabelState) Text(source []byte) []byte { + return s.Segment.Value(source) +} + +func (s *linkLabelState) Dump(source []byte, level int) { + fmt.Printf("%slinkLabelState: \"%s\"\n", strings.Repeat(" ", level), s.Text(source)) +} + +var kindLinkLabelState = ast.NewNodeKind("LinkLabelState") + +func (s *linkLabelState) Kind() ast.NodeKind { + return kindLinkLabelState +} + +func pushLinkLabelState(pc Context, v *linkLabelState) { + tlist := pc.Get(linkLabelStateKey) + var list *linkLabelState + if tlist == nil { + list = v + v.First = v + v.Last = v + pc.Set(linkLabelStateKey, list) + } else { + list = tlist.(*linkLabelState) + l := list.Last + list.Last = v + l.Next = v + v.Prev = l + } +} + +func removeLinkLabelState(pc Context, d *linkLabelState) { + tlist := pc.Get(linkLabelStateKey) + var list *linkLabelState + if tlist == nil { + return + } + list = tlist.(*linkLabelState) + + if d.Prev == nil { + list = d.Next + if list != nil { + list.First = d + list.Last = d.Last + list.Prev = nil + pc.Set(linkLabelStateKey, list) + } else { + pc.Set(linkLabelStateKey, nil) + } + } else { + d.Prev.Next = d.Next + if d.Next != nil { + d.Next.Prev = d.Prev + } + } + if list != nil && d.Next == nil { + list.Last = d.Prev + } + d.Next = nil + d.Prev = nil + d.First = nil + d.Last = nil +} + +type linkParser struct { +} + +var defaultLinkParser = &linkParser{} + +// NewLinkParser return a new InlineParser that parses links. +func NewLinkParser() InlineParser { + return defaultLinkParser +} + +func (s *linkParser) Trigger() []byte { + return []byte{'!', '[', ']'} +} + +var linkBottom = NewContextKey() + +func (s *linkParser) Parse(parent ast.Node, block text.Reader, pc Context) ast.Node { + line, segment := block.PeekLine() + if line[0] == '!' { + if len(line) > 1 && line[1] == '[' { + block.Advance(1) + pc.Set(linkBottom, pc.LastDelimiter()) + return processLinkLabelOpen(block, segment.Start+1, true, pc) + } + return nil + } + if line[0] == '[' { + pc.Set(linkBottom, pc.LastDelimiter()) + return processLinkLabelOpen(block, segment.Start, false, pc) + } + + // line[0] == ']' + tlist := pc.Get(linkLabelStateKey) + if tlist == nil { + return nil + } + last := tlist.(*linkLabelState).Last + if last == nil { + return nil + } + block.Advance(1) + removeLinkLabelState(pc, last) + if !last.IsImage && s.containsLink(last) { // a link in a link text is not allowed + ast.MergeOrReplaceTextSegment(last.Parent(), last, last.Segment) + return nil + } + + c := block.Peek() + l, pos := block.Position() + var link *ast.Link + var hasValue bool + if c == '(' { // normal link + link = s.parseLink(parent, last, block, pc) + } else if c == '[' { // reference link + link, hasValue = s.parseReferenceLink(parent, last, block, pc) + if link == nil && hasValue { + ast.MergeOrReplaceTextSegment(last.Parent(), last, last.Segment) + return nil + } + } + + if link == nil { + // maybe shortcut reference link + block.SetPosition(l, pos) + ssegment := text.NewSegment(last.Segment.Stop, segment.Start) + maybeReference := block.Value(ssegment) + ref, ok := pc.Reference(util.ToLinkReference(maybeReference)) + if !ok { + ast.MergeOrReplaceTextSegment(last.Parent(), last, last.Segment) + return nil + } + link = ast.NewLink() + s.processLinkLabel(parent, link, last, pc) + link.Title = ref.Title() + link.Destination = ref.Destination() + } + if last.IsImage { + last.Parent().RemoveChild(last.Parent(), last) + return ast.NewImage(link) + } + last.Parent().RemoveChild(last.Parent(), last) + return link +} + +func (s *linkParser) containsLink(n ast.Node) bool { + if n == nil { + return false + } + for c := n; c != nil; c = c.NextSibling() { + if _, ok := c.(*ast.Link); ok { + return true + } + if s.containsLink(c.FirstChild()) { + return true + } + } + return false +} + +func processLinkLabelOpen(block text.Reader, pos int, isImage bool, pc Context) *linkLabelState { + start := pos + if isImage { + start-- + } + state := newLinkLabelState(text.NewSegment(start, pos+1), isImage) + pushLinkLabelState(pc, state) + block.Advance(1) + return state +} + +func (s *linkParser) processLinkLabel(parent ast.Node, link *ast.Link, last *linkLabelState, pc Context) { + var bottom ast.Node + if v := pc.Get(linkBottom); v != nil { + bottom = v.(ast.Node) + } + pc.Set(linkBottom, nil) + ProcessDelimiters(bottom, pc) + for c := last.NextSibling(); c != nil; { + next := c.NextSibling() + parent.RemoveChild(parent, c) + link.AppendChild(link, c) + c = next + } +} + +var linkFindClosureOptions text.FindClosureOptions = text.FindClosureOptions{ + Nesting: false, + Newline: true, + Advance: true, +} + +func (s *linkParser) parseReferenceLink(parent ast.Node, last *linkLabelState, block text.Reader, pc Context) (*ast.Link, bool) { + _, orgpos := block.Position() + block.Advance(1) // skip '[' + segments, found := block.FindClosure('[', ']', linkFindClosureOptions) + if !found { + return nil, false + } + + var maybeReference []byte + if segments.Len() == 1 { // avoid allocate a new byte slice + maybeReference = block.Value(segments.At(0)) + } else { + maybeReference = []byte{} + for i := 0; i < segments.Len(); i++ { + s := segments.At(i) + maybeReference = append(maybeReference, block.Value(s)...) + } + } + if util.IsBlank(maybeReference) { // collapsed reference link + s := text.NewSegment(last.Segment.Stop, orgpos.Start-1) + maybeReference = block.Value(s) + } + + ref, ok := pc.Reference(util.ToLinkReference(maybeReference)) + if !ok { + return nil, true + } + + link := ast.NewLink() + s.processLinkLabel(parent, link, last, pc) + link.Title = ref.Title() + link.Destination = ref.Destination() + return link, true +} + +func (s *linkParser) parseLink(parent ast.Node, last *linkLabelState, block text.Reader, pc Context) *ast.Link { + block.Advance(1) // skip '(' + block.SkipSpaces() + var title []byte + var destination []byte + var ok bool + if block.Peek() == ')' { // empty link like '[link]()' + block.Advance(1) + } else { + destination, ok = parseLinkDestination(block) + if !ok { + return nil + } + block.SkipSpaces() + if block.Peek() == ')' { + block.Advance(1) + } else { + title, ok = parseLinkTitle(block) + if !ok { + return nil + } + block.SkipSpaces() + if block.Peek() == ')' { + block.Advance(1) + } else { + return nil + } + } + } + + link := ast.NewLink() + s.processLinkLabel(parent, link, last, pc) + link.Destination = destination + link.Title = title + return link +} + +func parseLinkDestination(block text.Reader) ([]byte, bool) { + block.SkipSpaces() + line, _ := block.PeekLine() + if block.Peek() == '<' { + i := 1 + for i < len(line) { + c := line[i] + if c == '\\' && i < len(line)-1 && util.IsPunct(line[i+1]) { + i += 2 + continue + } else if c == '>' { + block.Advance(i + 1) + return line[1:i], true + } + i++ + } + return nil, false + } + opened := 0 + i := 0 + for i < len(line) { + c := line[i] + if c == '\\' && i < len(line)-1 && util.IsPunct(line[i+1]) { + i += 2 + continue + } else if c == '(' { + opened++ + } else if c == ')' { + opened-- + if opened < 0 { + break + } + } else if util.IsSpace(c) { + break + } + i++ + } + block.Advance(i) + return line[:i], len(line[:i]) != 0 +} + +func parseLinkTitle(block text.Reader) ([]byte, bool) { + block.SkipSpaces() + opener := block.Peek() + if opener != '"' && opener != '\'' && opener != '(' { + return nil, false + } + closer := opener + if opener == '(' { + closer = ')' + } + block.Advance(1) + segments, found := block.FindClosure(opener, closer, linkFindClosureOptions) + if found { + if segments.Len() == 1 { + return block.Value(segments.At(0)), true + } + var title []byte + for i := 0; i < segments.Len(); i++ { + s := segments.At(i) + title = append(title, block.Value(s)...) + } + return title, true + } + return nil, false +} + +func (s *linkParser) CloseBlock(parent ast.Node, block text.Reader, pc Context) { + tlist := pc.Get(linkLabelStateKey) + if tlist == nil { + return + } + for s := tlist.(*linkLabelState); s != nil; { + next := s.Next + removeLinkLabelState(pc, s) + s.Parent().ReplaceChild(s.Parent(), s, ast.NewTextSegment(s.Segment)) + s = next + } +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/link_ref.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/link_ref.go new file mode 100644 index 000000000..ea3f6544a --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/link_ref.go @@ -0,0 +1,152 @@ +package parser + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +type linkReferenceParagraphTransformer struct { +} + +// LinkReferenceParagraphTransformer is a ParagraphTransformer implementation +// that parses and extracts link reference from paragraphs. +var LinkReferenceParagraphTransformer = &linkReferenceParagraphTransformer{} + +func (p *linkReferenceParagraphTransformer) Transform(node *ast.Paragraph, reader text.Reader, pc Context) { + lines := node.Lines() + block := text.NewBlockReader(reader.Source(), lines) + removes := [][2]int{} + for { + start, end := parseLinkReferenceDefinition(block, pc) + if start > -1 { + if start == end { + end++ + } + removes = append(removes, [2]int{start, end}) + continue + } + break + } + + offset := 0 + for _, remove := range removes { + if lines.Len() == 0 { + break + } + s := lines.Sliced(remove[1]-offset, lines.Len()) + lines.SetSliced(0, remove[0]-offset) + lines.AppendAll(s) + offset = remove[1] + } + + if lines.Len() == 0 { + t := ast.NewTextBlock() + t.SetBlankPreviousLines(node.HasBlankPreviousLines()) + node.Parent().ReplaceChild(node.Parent(), node, t) + return + } + + node.SetLines(lines) +} + +func parseLinkReferenceDefinition(block text.Reader, pc Context) (int, int) { + block.SkipSpaces() + line, _ := block.PeekLine() + if line == nil { + return -1, -1 + } + startLine, _ := block.Position() + width, pos := util.IndentWidth(line, 0) + if width > 3 { + return -1, -1 + } + if width != 0 { + pos++ + } + if line[pos] != '[' { + return -1, -1 + } + block.Advance(pos + 1) + segments, found := block.FindClosure('[', ']', linkFindClosureOptions) + if !found { + return -1, -1 + } + var label []byte + if segments.Len() == 1 { + label = block.Value(segments.At(0)) + } else { + for i := 0; i < segments.Len(); i++ { + s := segments.At(i) + label = append(label, block.Value(s)...) + } + } + if util.IsBlank(label) { + return -1, -1 + } + if block.Peek() != ':' { + return -1, -1 + } + block.Advance(1) + block.SkipSpaces() + destination, ok := parseLinkDestination(block) + if !ok { + return -1, -1 + } + line, _ = block.PeekLine() + isNewLine := line == nil || util.IsBlank(line) + + endLine, _ := block.Position() + _, spaces, _ := block.SkipSpaces() + opener := block.Peek() + if opener != '"' && opener != '\'' && opener != '(' { + if !isNewLine { + return -1, -1 + } + ref := NewReference(label, destination, nil) + pc.AddReference(ref) + return startLine, endLine + 1 + } + if spaces == 0 { + return -1, -1 + } + block.Advance(1) + closer := opener + if opener == '(' { + closer = ')' + } + segments, found = block.FindClosure(opener, closer, linkFindClosureOptions) + if !found { + if !isNewLine { + return -1, -1 + } + ref := NewReference(label, destination, nil) + pc.AddReference(ref) + block.AdvanceLine() + return startLine, endLine + 1 + } + var title []byte + if segments.Len() == 1 { + title = block.Value(segments.At(0)) + } else { + for i := 0; i < segments.Len(); i++ { + s := segments.At(i) + title = append(title, block.Value(s)...) + } + } + + line, _ = block.PeekLine() + if line != nil && !util.IsBlank(line) { + if !isNewLine { + return -1, -1 + } + ref := NewReference(label, destination, title) + pc.AddReference(ref) + return startLine, endLine + } + + endLine, _ = block.Position() + ref := NewReference(label, destination, title) + pc.AddReference(ref) + return startLine, endLine + 1 +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/list.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/list.go new file mode 100644 index 000000000..2a1c03a9f --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/list.go @@ -0,0 +1,283 @@ +package parser + +import ( + "strconv" + + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +type listItemType int + +const ( + notList listItemType = iota + bulletList + orderedList +) + +var skipListParserKey = NewContextKey() +var emptyListItemWithBlankLines = NewContextKey() +var listItemFlagValue interface{} = true + +// Same as +// `^(([ ]*)([\-\*\+]))(\s+.*)?\n?$`.FindSubmatchIndex or +// `^(([ ]*)(\d{1,9}[\.\)]))(\s+.*)?\n?$`.FindSubmatchIndex +func parseListItem(line []byte) ([6]int, listItemType) { + i := 0 + l := len(line) + ret := [6]int{} + for ; i < l && line[i] == ' '; i++ { + c := line[i] + if c == '\t' { + return ret, notList + } + } + if i > 3 { + return ret, notList + } + ret[0] = 0 + ret[1] = i + ret[2] = i + var typ listItemType + if i < l && (line[i] == '-' || line[i] == '*' || line[i] == '+') { + i++ + ret[3] = i + typ = bulletList + } else if i < l { + for ; i < l && util.IsNumeric(line[i]); i++ { + } + ret[3] = i + if ret[3] == ret[2] || ret[3]-ret[2] > 9 { + return ret, notList + } + if i < l && (line[i] == '.' || line[i] == ')') { + i++ + ret[3] = i + } else { + return ret, notList + } + typ = orderedList + } else { + return ret, notList + } + if i < l && line[i] != '\n' { + w, _ := util.IndentWidth(line[i:], 0) + if w == 0 { + return ret, notList + } + } + if i >= l { + ret[4] = -1 + ret[5] = -1 + return ret, typ + } + ret[4] = i + ret[5] = len(line) + if line[ret[5]-1] == '\n' && line[i] != '\n' { + ret[5]-- + } + return ret, typ +} + +func matchesListItem(source []byte, strict bool) ([6]int, listItemType) { + m, typ := parseListItem(source) + if typ != notList && (!strict || strict && m[1] < 4) { + return m, typ + } + return m, notList +} + +func calcListOffset(source []byte, match [6]int) int { + offset := 0 + if match[4] < 0 || util.IsBlank(source[match[4]:]) { // list item starts with a blank line + offset = 1 + } else { + offset, _ = util.IndentWidth(source[match[4]:], match[4]) + if offset > 4 { // offseted codeblock + offset = 1 + } + } + return offset +} + +func lastOffset(node ast.Node) int { + lastChild := node.LastChild() + if lastChild != nil { + return lastChild.(*ast.ListItem).Offset + } + return 0 +} + +type listParser struct { +} + +var defaultListParser = &listParser{} + +// NewListParser returns a new BlockParser that +// parses lists. +// This parser must take precedence over the ListItemParser. +func NewListParser() BlockParser { + return defaultListParser +} + +func (b *listParser) Trigger() []byte { + return []byte{'-', '+', '*', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'} +} + +func (b *listParser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { + last := pc.LastOpenedBlock().Node + if _, lok := last.(*ast.List); lok || pc.Get(skipListParserKey) != nil { + pc.Set(skipListParserKey, nil) + return nil, NoChildren + } + line, _ := reader.PeekLine() + match, typ := matchesListItem(line, true) + if typ == notList { + return nil, NoChildren + } + start := -1 + if typ == orderedList { + number := line[match[2] : match[3]-1] + start, _ = strconv.Atoi(string(number)) + } + + if ast.IsParagraph(last) && last.Parent() == parent { + // we allow only lists starting with 1 to interrupt paragraphs. + if typ == orderedList && start != 1 { + return nil, NoChildren + } + //an empty list item cannot interrupt a paragraph: + if match[4] < 0 || util.IsBlank(line[match[4]:match[5]]) { + return nil, NoChildren + } + } + + marker := line[match[3]-1] + node := ast.NewList(marker) + if start > -1 { + node.Start = start + } + pc.Set(emptyListItemWithBlankLines, nil) + return node, HasChildren +} + +func (b *listParser) Continue(node ast.Node, reader text.Reader, pc Context) State { + list := node.(*ast.List) + line, _ := reader.PeekLine() + if util.IsBlank(line) { + if node.LastChild().ChildCount() == 0 { + pc.Set(emptyListItemWithBlankLines, listItemFlagValue) + } + return Continue | HasChildren + } + + // "offset" means a width that bar indicates. + // - aaaaaaaa + // |----| + // + // If the indent is less than the last offset like + // - a + // - b <--- current line + // it maybe a new child of the list. + // + // Empty list items can have multiple blanklines + // + // - <--- 1st item is an empty thus "offset" is unknown + // + // + // - <--- current line + // + // -> 1 list with 2 blank items + // + // So if the last item is an empty, it maybe a new child of the list. + // + offset := lastOffset(node) + lastIsEmpty := node.LastChild().ChildCount() == 0 + indent, _ := util.IndentWidth(line, reader.LineOffset()) + + if indent < offset || lastIsEmpty { + if indent < 4 { + match, typ := matchesListItem(line, false) // may have a leading spaces more than 3 + if typ != notList && match[1]-offset < 4 { + marker := line[match[3]-1] + if !list.CanContinue(marker, typ == orderedList) { + return Close + } + // Thematic Breaks take precedence over lists + if isThematicBreak(line[match[3]-1:], 0) { + isHeading := false + last := pc.LastOpenedBlock().Node + if ast.IsParagraph(last) { + c, ok := matchesSetextHeadingBar(line[match[3]-1:]) + if ok && c == '-' { + isHeading = true + } + } + if !isHeading { + return Close + } + } + return Continue | HasChildren + } + } + if !lastIsEmpty { + return Close + } + } + + // Non empty items can not exist next to an empty list item + // with blank lines. So we need to close the current list + // + // - + // + // foo + // + // -> 1 list with 1 blank items and 1 paragraph + if pc.Get(emptyListItemWithBlankLines) != nil { + return Close + } + return Continue | HasChildren +} + +func (b *listParser) Close(node ast.Node, reader text.Reader, pc Context) { + list := node.(*ast.List) + + for c := node.FirstChild(); c != nil && list.IsTight; c = c.NextSibling() { + if c.FirstChild() != nil && c.FirstChild() != c.LastChild() { + for c1 := c.FirstChild().NextSibling(); c1 != nil; c1 = c1.NextSibling() { + if bl, ok := c1.(ast.Node); ok && bl.HasBlankPreviousLines() { + list.IsTight = false + break + } + } + } + if c != node.FirstChild() { + if bl, ok := c.(ast.Node); ok && bl.HasBlankPreviousLines() { + list.IsTight = false + } + } + } + + if list.IsTight { + for child := node.FirstChild(); child != nil; child = child.NextSibling() { + for gc := child.FirstChild(); gc != nil; { + paragraph, ok := gc.(*ast.Paragraph) + gc = gc.NextSibling() + if ok { + textBlock := ast.NewTextBlock() + textBlock.SetLines(paragraph.Lines()) + child.ReplaceChild(child, paragraph, textBlock) + } + } + } + } +} + +func (b *listParser) CanInterruptParagraph() bool { + return true +} + +func (b *listParser) CanAcceptIndentedLine() bool { + return false +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/list_item.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/list_item.go new file mode 100644 index 000000000..81357a9ad --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/list_item.go @@ -0,0 +1,90 @@ +package parser + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +type listItemParser struct { +} + +var defaultListItemParser = &listItemParser{} + +// NewListItemParser returns a new BlockParser that +// parses list items. +func NewListItemParser() BlockParser { + return defaultListItemParser +} + +func (b *listItemParser) Trigger() []byte { + return []byte{'-', '+', '*', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'} +} + +func (b *listItemParser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { + list, lok := parent.(*ast.List) + if !lok { // list item must be a child of a list + return nil, NoChildren + } + offset := lastOffset(list) + line, _ := reader.PeekLine() + match, typ := matchesListItem(line, false) + if typ == notList { + return nil, NoChildren + } + if match[1]-offset > 3 { + return nil, NoChildren + } + + pc.Set(emptyListItemWithBlankLines, nil) + + itemOffset := calcListOffset(line, match) + node := ast.NewListItem(match[3] + itemOffset) + if match[4] < 0 || util.IsBlank(line[match[4]:match[5]]) { + return node, NoChildren + } + + pos, padding := util.IndentPosition(line[match[4]:], match[4], itemOffset) + child := match[3] + pos + reader.AdvanceAndSetPadding(child, padding) + return node, HasChildren +} + +func (b *listItemParser) Continue(node ast.Node, reader text.Reader, pc Context) State { + line, _ := reader.PeekLine() + if util.IsBlank(line) { + reader.Advance(len(line) - 1) + return Continue | HasChildren + } + + offset := lastOffset(node.Parent()) + isEmpty := node.ChildCount() == 0 + indent, _ := util.IndentWidth(line, reader.LineOffset()) + if (isEmpty || indent < offset) && indent < 4 { + _, typ := matchesListItem(line, true) + // new list item found + if typ != notList { + pc.Set(skipListParserKey, listItemFlagValue) + return Close + } + if !isEmpty { + return Close + } + } + pos, padding := util.IndentPosition(line, reader.LineOffset(), offset) + reader.AdvanceAndSetPadding(pos, padding) + + return Continue | HasChildren +} + +func (b *listItemParser) Close(node ast.Node, reader text.Reader, pc Context) { + // nothing to do +} + +func (b *listItemParser) CanInterruptParagraph() bool { + return true +} + +func (b *listItemParser) CanAcceptIndentedLine() bool { + return false +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/paragraph.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/paragraph.go new file mode 100644 index 000000000..2dd2b9a97 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/paragraph.go @@ -0,0 +1,71 @@ +package parser + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" +) + +type paragraphParser struct { +} + +var defaultParagraphParser = ¶graphParser{} + +// NewParagraphParser returns a new BlockParser that +// parses paragraphs. +func NewParagraphParser() BlockParser { + return defaultParagraphParser +} + +func (b *paragraphParser) Trigger() []byte { + return nil +} + +func (b *paragraphParser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { + _, segment := reader.PeekLine() + segment = segment.TrimLeftSpace(reader.Source()) + if segment.IsEmpty() { + return nil, NoChildren + } + node := ast.NewParagraph() + node.Lines().Append(segment) + reader.Advance(segment.Len() - 1) + return node, NoChildren +} + +func (b *paragraphParser) Continue(node ast.Node, reader text.Reader, pc Context) State { + _, segment := reader.PeekLine() + segment = segment.TrimLeftSpace(reader.Source()) + if segment.IsEmpty() { + return Close + } + node.Lines().Append(segment) + reader.Advance(segment.Len() - 1) + return Continue | NoChildren +} + +func (b *paragraphParser) Close(node ast.Node, reader text.Reader, pc Context) { + parent := node.Parent() + if parent == nil { + // paragraph has been transformed + return + } + lines := node.Lines() + if lines.Len() != 0 { + // trim trailing spaces + length := lines.Len() + lastLine := node.Lines().At(length - 1) + node.Lines().Set(length-1, lastLine.TrimRightSpace(reader.Source())) + } + if lines.Len() == 0 { + node.Parent().RemoveChild(node.Parent(), node) + return + } +} + +func (b *paragraphParser) CanInterruptParagraph() bool { + return false +} + +func (b *paragraphParser) CanAcceptIndentedLine() bool { + return false +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/parser.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/parser.go new file mode 100644 index 000000000..bac070452 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/parser.go @@ -0,0 +1,1236 @@ +// Package parser contains stuff that are related to parsing a Markdown text. +package parser + +import ( + "fmt" + "strings" + "sync" + + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +// A Reference interface represents a link reference in Markdown text. +type Reference interface { + // String implements Stringer. + String() string + + // Label returns a label of the reference. + Label() []byte + + // Destination returns a destination(URL) of the reference. + Destination() []byte + + // Title returns a title of the reference. + Title() []byte +} + +type reference struct { + label []byte + destination []byte + title []byte +} + +// NewReference returns a new Reference. +func NewReference(label, destination, title []byte) Reference { + return &reference{label, destination, title} +} + +func (r *reference) Label() []byte { + return r.label +} + +func (r *reference) Destination() []byte { + return r.destination +} + +func (r *reference) Title() []byte { + return r.title +} + +func (r *reference) String() string { + return fmt.Sprintf("Reference{Label:%s, Destination:%s, Title:%s}", r.label, r.destination, r.title) +} + +// An IDs interface is a collection of the element ids. +type IDs interface { + // Generate generates a new element id. + Generate(value []byte, kind ast.NodeKind) []byte + + // Put puts a given element id to the used ids table. + Put(value []byte) +} + +type ids struct { + values map[string]bool +} + +func newIDs() IDs { + return &ids{ + values: map[string]bool{}, + } +} + +func (s *ids) Generate(value []byte, kind ast.NodeKind) []byte { + value = util.TrimLeftSpace(value) + value = util.TrimRightSpace(value) + result := []byte{} + for i := 0; i < len(value); { + v := value[i] + l := util.UTF8Len(v) + i += int(l) + if l != 1 { + continue + } + if util.IsAlphaNumeric(v) { + if 'A' <= v && v <= 'Z' { + v += 'a' - 'A' + } + result = append(result, v) + } else if util.IsSpace(v) || v == '-' || v == '_' { + result = append(result, '-') + } + } + if len(result) == 0 { + if kind == ast.KindHeading { + result = []byte("heading") + } else { + result = []byte("id") + } + } + if _, ok := s.values[util.BytesToReadOnlyString(result)]; !ok { + s.values[util.BytesToReadOnlyString(result)] = true + return result + } + for i := 1; ; i++ { + newResult := fmt.Sprintf("%s-%d", result, i) + if _, ok := s.values[newResult]; !ok { + s.values[newResult] = true + return []byte(newResult) + } + + } +} + +func (s *ids) Put(value []byte) { + s.values[util.BytesToReadOnlyString(value)] = true +} + +// ContextKey is a key that is used to set arbitrary values to the context. +type ContextKey int + +// ContextKeyMax is a maximum value of the ContextKey. +var ContextKeyMax ContextKey + +// NewContextKey return a new ContextKey value. +func NewContextKey() ContextKey { + ContextKeyMax++ + return ContextKeyMax +} + +// A Context interface holds a information that are necessary to parse +// Markdown text. +type Context interface { + // String implements Stringer. + String() string + + // Get returns a value associated with the given key. + Get(ContextKey) interface{} + + // ComputeIfAbsent computes a value if a value associated with the given key is absent and returns the value. + ComputeIfAbsent(ContextKey, func() interface{}) interface{} + + // Set sets the given value to the context. + Set(ContextKey, interface{}) + + // AddReference adds the given reference to this context. + AddReference(Reference) + + // Reference returns (a reference, true) if a reference associated with + // the given label exists, otherwise (nil, false). + Reference(label string) (Reference, bool) + + // References returns a list of references. + References() []Reference + + // IDs returns a collection of the element ids. + IDs() IDs + + // BlockOffset returns a first non-space character position on current line. + // This value is valid only for BlockParser.Open. + // BlockOffset returns -1 if current line is blank. + BlockOffset() int + + // BlockOffset sets a first non-space character position on current line. + // This value is valid only for BlockParser.Open. + SetBlockOffset(int) + + // BlockIndent returns an indent width on current line. + // This value is valid only for BlockParser.Open. + // BlockIndent returns -1 if current line is blank. + BlockIndent() int + + // BlockIndent sets an indent width on current line. + // This value is valid only for BlockParser.Open. + SetBlockIndent(int) + + // FirstDelimiter returns a first delimiter of the current delimiter list. + FirstDelimiter() *Delimiter + + // LastDelimiter returns a last delimiter of the current delimiter list. + LastDelimiter() *Delimiter + + // PushDelimiter appends the given delimiter to the tail of the current + // delimiter list. + PushDelimiter(delimiter *Delimiter) + + // RemoveDelimiter removes the given delimiter from the current delimiter list. + RemoveDelimiter(d *Delimiter) + + // ClearDelimiters clears the current delimiter list. + ClearDelimiters(bottom ast.Node) + + // OpenedBlocks returns a list of nodes that are currently in parsing. + OpenedBlocks() []Block + + // SetOpenedBlocks sets a list of nodes that are currently in parsing. + SetOpenedBlocks([]Block) + + // LastOpenedBlock returns a last node that is currently in parsing. + LastOpenedBlock() Block + + // IsInLinkLabel returns true if current position seems to be in link label. + IsInLinkLabel() bool +} + +// A ContextConfig struct is a data structure that holds configuration of the Context. +type ContextConfig struct { + IDs IDs +} + +// An ContextOption is a functional option type for the Context. +type ContextOption func(*ContextConfig) + +// WithIDs is a functional option for the Context. +func WithIDs(ids IDs) ContextOption { + return func(c *ContextConfig) { + c.IDs = ids + } +} + +type parseContext struct { + store []interface{} + ids IDs + refs map[string]Reference + blockOffset int + blockIndent int + delimiters *Delimiter + lastDelimiter *Delimiter + openedBlocks []Block +} + +// NewContext returns a new Context. +func NewContext(options ...ContextOption) Context { + cfg := &ContextConfig{ + IDs: newIDs(), + } + for _, option := range options { + option(cfg) + } + + return &parseContext{ + store: make([]interface{}, ContextKeyMax+1), + refs: map[string]Reference{}, + ids: cfg.IDs, + blockOffset: -1, + blockIndent: -1, + delimiters: nil, + lastDelimiter: nil, + openedBlocks: []Block{}, + } +} + +func (p *parseContext) Get(key ContextKey) interface{} { + return p.store[key] +} + +func (p *parseContext) ComputeIfAbsent(key ContextKey, f func() interface{}) interface{} { + v := p.store[key] + if v == nil { + v = f() + p.store[key] = v + } + return v +} + +func (p *parseContext) Set(key ContextKey, value interface{}) { + p.store[key] = value +} + +func (p *parseContext) IDs() IDs { + return p.ids +} + +func (p *parseContext) BlockOffset() int { + return p.blockOffset +} + +func (p *parseContext) SetBlockOffset(v int) { + p.blockOffset = v +} + +func (p *parseContext) BlockIndent() int { + return p.blockIndent +} + +func (p *parseContext) SetBlockIndent(v int) { + p.blockIndent = v +} + +func (p *parseContext) LastDelimiter() *Delimiter { + return p.lastDelimiter +} + +func (p *parseContext) FirstDelimiter() *Delimiter { + return p.delimiters +} + +func (p *parseContext) PushDelimiter(d *Delimiter) { + if p.delimiters == nil { + p.delimiters = d + p.lastDelimiter = d + } else { + l := p.lastDelimiter + p.lastDelimiter = d + l.NextDelimiter = d + d.PreviousDelimiter = l + } +} + +func (p *parseContext) RemoveDelimiter(d *Delimiter) { + if d.PreviousDelimiter == nil { + p.delimiters = d.NextDelimiter + } else { + d.PreviousDelimiter.NextDelimiter = d.NextDelimiter + if d.NextDelimiter != nil { + d.NextDelimiter.PreviousDelimiter = d.PreviousDelimiter + } + } + if d.NextDelimiter == nil { + p.lastDelimiter = d.PreviousDelimiter + } + if p.delimiters != nil { + p.delimiters.PreviousDelimiter = nil + } + if p.lastDelimiter != nil { + p.lastDelimiter.NextDelimiter = nil + } + d.NextDelimiter = nil + d.PreviousDelimiter = nil + if d.Length != 0 { + ast.MergeOrReplaceTextSegment(d.Parent(), d, d.Segment) + } else { + d.Parent().RemoveChild(d.Parent(), d) + } +} + +func (p *parseContext) ClearDelimiters(bottom ast.Node) { + if p.lastDelimiter == nil { + return + } + var c ast.Node + for c = p.lastDelimiter; c != nil && c != bottom; { + prev := c.PreviousSibling() + if d, ok := c.(*Delimiter); ok { + p.RemoveDelimiter(d) + } + c = prev + } +} + +func (p *parseContext) AddReference(ref Reference) { + key := util.ToLinkReference(ref.Label()) + if _, ok := p.refs[key]; !ok { + p.refs[key] = ref + } +} + +func (p *parseContext) Reference(label string) (Reference, bool) { + v, ok := p.refs[label] + return v, ok +} + +func (p *parseContext) References() []Reference { + ret := make([]Reference, 0, len(p.refs)) + for _, v := range p.refs { + ret = append(ret, v) + } + return ret +} + +func (p *parseContext) String() string { + refs := []string{} + for _, r := range p.refs { + refs = append(refs, r.String()) + } + + return fmt.Sprintf("Context{Store:%#v, Refs:%s}", p.store, strings.Join(refs, ",")) +} + +func (p *parseContext) OpenedBlocks() []Block { + return p.openedBlocks +} + +func (p *parseContext) SetOpenedBlocks(v []Block) { + p.openedBlocks = v +} + +func (p *parseContext) LastOpenedBlock() Block { + if l := len(p.openedBlocks); l != 0 { + return p.openedBlocks[l-1] + } + return Block{} +} + +func (p *parseContext) IsInLinkLabel() bool { + tlist := p.Get(linkLabelStateKey) + return tlist != nil +} + +// State represents parser's state. +// State is designed to use as a bit flag. +type State int + +const ( + none State = 1 << iota + + // Continue indicates parser can continue parsing. + Continue + + // Close indicates parser cannot parse anymore. + Close + + // HasChildren indicates parser may have child blocks. + HasChildren + + // NoChildren indicates parser does not have child blocks. + NoChildren + + // RequireParagraph indicates parser requires that the last node + // must be a paragraph and is not converted to other nodes by + // ParagraphTransformers. + RequireParagraph +) + +// A Config struct is a data structure that holds configuration of the Parser. +type Config struct { + Options map[OptionName]interface{} + BlockParsers util.PrioritizedSlice /**/ + InlineParsers util.PrioritizedSlice /**/ + ParagraphTransformers util.PrioritizedSlice /**/ + ASTTransformers util.PrioritizedSlice /**/ +} + +// NewConfig returns a new Config. +func NewConfig() *Config { + return &Config{ + Options: map[OptionName]interface{}{}, + BlockParsers: util.PrioritizedSlice{}, + InlineParsers: util.PrioritizedSlice{}, + ParagraphTransformers: util.PrioritizedSlice{}, + ASTTransformers: util.PrioritizedSlice{}, + } +} + +// An Option interface is a functional option type for the Parser. +type Option interface { + SetParserOption(*Config) +} + +// OptionName is a name of parser options. +type OptionName string + +// Attribute is an option name that spacify attributes of elements. +const optAttribute OptionName = "Attribute" + +type withAttribute struct { +} + +func (o *withAttribute) SetParserOption(c *Config) { + c.Options[optAttribute] = true +} + +// WithAttribute is a functional option that enables custom attributes. +func WithAttribute() Option { + return &withAttribute{} +} + +// A Parser interface parses Markdown text into AST nodes. +type Parser interface { + // Parse parses the given Markdown text into AST nodes. + Parse(reader text.Reader, opts ...ParseOption) ast.Node + + // AddOption adds the given option to this parser. + AddOptions(...Option) +} + +// A SetOptioner interface sets the given option to the object. +type SetOptioner interface { + // SetOption sets the given option to the object. + // Unacceptable options may be passed. + // Thus implementations must ignore unacceptable options. + SetOption(name OptionName, value interface{}) +} + +// A BlockParser interface parses a block level element like Paragraph, List, +// Blockquote etc. +type BlockParser interface { + // Trigger returns a list of characters that triggers Parse method of + // this parser. + // If Trigger returns a nil, Open will be called with any lines. + Trigger() []byte + + // Open parses the current line and returns a result of parsing. + // + // Open must not parse beyond the current line. + // If Open has been able to parse the current line, Open must advance a reader + // position by consumed byte length. + // + // If Open has not been able to parse the current line, Open should returns + // (nil, NoChildren). If Open has been able to parse the current line, Open + // should returns a new Block node and returns HasChildren or NoChildren. + Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) + + // Continue parses the current line and returns a result of parsing. + // + // Continue must not parse beyond the current line. + // If Continue has been able to parse the current line, Continue must advance + // a reader position by consumed byte length. + // + // If Continue has not been able to parse the current line, Continue should + // returns Close. If Continue has been able to parse the current line, + // Continue should returns (Continue | NoChildren) or + // (Continue | HasChildren) + Continue(node ast.Node, reader text.Reader, pc Context) State + + // Close will be called when the parser returns Close. + Close(node ast.Node, reader text.Reader, pc Context) + + // CanInterruptParagraph returns true if the parser can interrupt paragraphs, + // otherwise false. + CanInterruptParagraph() bool + + // CanAcceptIndentedLine returns true if the parser can open new node when + // the given line is being indented more than 3 spaces. + CanAcceptIndentedLine() bool +} + +// An InlineParser interface parses an inline level element like CodeSpan, Link etc. +type InlineParser interface { + // Trigger returns a list of characters that triggers Parse method of + // this parser. + // Trigger characters must be a punctuation or a halfspace. + // Halfspaces triggers this parser when character is any spaces characters or + // a head of line + Trigger() []byte + + // Parse parse the given block into an inline node. + // + // Parse can parse beyond the current line. + // If Parse has been able to parse the current line, it must advance a reader + // position by consumed byte length. + Parse(parent ast.Node, block text.Reader, pc Context) ast.Node +} + +// A CloseBlocker interface is a callback function that will be +// called when block is closed in the inline parsing. +type CloseBlocker interface { + // CloseBlock will be called when a block is closed. + CloseBlock(parent ast.Node, block text.Reader, pc Context) +} + +// A ParagraphTransformer transforms parsed Paragraph nodes. +// For example, link references are searched in parsed Paragraphs. +type ParagraphTransformer interface { + // Transform transforms the given paragraph. + Transform(node *ast.Paragraph, reader text.Reader, pc Context) +} + +// ASTTransformer transforms entire Markdown document AST tree. +type ASTTransformer interface { + // Transform transforms the given AST tree. + Transform(node *ast.Document, reader text.Reader, pc Context) +} + +// DefaultBlockParsers returns a new list of default BlockParsers. +// Priorities of default BlockParsers are: +// +// SetextHeadingParser, 100 +// ThematicBreakParser, 200 +// ListParser, 300 +// ListItemParser, 400 +// CodeBlockParser, 500 +// ATXHeadingParser, 600 +// FencedCodeBlockParser, 700 +// BlockquoteParser, 800 +// HTMLBlockParser, 900 +// ParagraphParser, 1000 +func DefaultBlockParsers() []util.PrioritizedValue { + return []util.PrioritizedValue{ + util.Prioritized(NewSetextHeadingParser(), 100), + util.Prioritized(NewThematicBreakParser(), 200), + util.Prioritized(NewListParser(), 300), + util.Prioritized(NewListItemParser(), 400), + util.Prioritized(NewCodeBlockParser(), 500), + util.Prioritized(NewATXHeadingParser(), 600), + util.Prioritized(NewFencedCodeBlockParser(), 700), + util.Prioritized(NewBlockquoteParser(), 800), + util.Prioritized(NewHTMLBlockParser(), 900), + util.Prioritized(NewParagraphParser(), 1000), + } +} + +// DefaultInlineParsers returns a new list of default InlineParsers. +// Priorities of default InlineParsers are: +// +// CodeSpanParser, 100 +// LinkParser, 200 +// AutoLinkParser, 300 +// RawHTMLParser, 400 +// EmphasisParser, 500 +func DefaultInlineParsers() []util.PrioritizedValue { + return []util.PrioritizedValue{ + util.Prioritized(NewCodeSpanParser(), 100), + util.Prioritized(NewLinkParser(), 200), + util.Prioritized(NewAutoLinkParser(), 300), + util.Prioritized(NewRawHTMLParser(), 400), + util.Prioritized(NewEmphasisParser(), 500), + } +} + +// DefaultParagraphTransformers returns a new list of default ParagraphTransformers. +// Priorities of default ParagraphTransformers are: +// +// LinkReferenceParagraphTransformer, 100 +func DefaultParagraphTransformers() []util.PrioritizedValue { + return []util.PrioritizedValue{ + util.Prioritized(LinkReferenceParagraphTransformer, 100), + } +} + +// A Block struct holds a node and correspond parser pair. +type Block struct { + // Node is a BlockNode. + Node ast.Node + // Parser is a BlockParser. + Parser BlockParser +} + +type parser struct { + options map[OptionName]interface{} + blockParsers [256][]BlockParser + freeBlockParsers []BlockParser + inlineParsers [256][]InlineParser + closeBlockers []CloseBlocker + paragraphTransformers []ParagraphTransformer + astTransformers []ASTTransformer + config *Config + initSync sync.Once +} + +type withBlockParsers struct { + value []util.PrioritizedValue +} + +func (o *withBlockParsers) SetParserOption(c *Config) { + c.BlockParsers = append(c.BlockParsers, o.value...) +} + +// WithBlockParsers is a functional option that allow you to add +// BlockParsers to the parser. +func WithBlockParsers(bs ...util.PrioritizedValue) Option { + return &withBlockParsers{bs} +} + +type withInlineParsers struct { + value []util.PrioritizedValue +} + +func (o *withInlineParsers) SetParserOption(c *Config) { + c.InlineParsers = append(c.InlineParsers, o.value...) +} + +// WithInlineParsers is a functional option that allow you to add +// InlineParsers to the parser. +func WithInlineParsers(bs ...util.PrioritizedValue) Option { + return &withInlineParsers{bs} +} + +type withParagraphTransformers struct { + value []util.PrioritizedValue +} + +func (o *withParagraphTransformers) SetParserOption(c *Config) { + c.ParagraphTransformers = append(c.ParagraphTransformers, o.value...) +} + +// WithParagraphTransformers is a functional option that allow you to add +// ParagraphTransformers to the parser. +func WithParagraphTransformers(ps ...util.PrioritizedValue) Option { + return &withParagraphTransformers{ps} +} + +type withASTTransformers struct { + value []util.PrioritizedValue +} + +func (o *withASTTransformers) SetParserOption(c *Config) { + c.ASTTransformers = append(c.ASTTransformers, o.value...) +} + +// WithASTTransformers is a functional option that allow you to add +// ASTTransformers to the parser. +func WithASTTransformers(ps ...util.PrioritizedValue) Option { + return &withASTTransformers{ps} +} + +type withOption struct { + name OptionName + value interface{} +} + +func (o *withOption) SetParserOption(c *Config) { + c.Options[o.name] = o.value +} + +// WithOption is a functional option that allow you to set +// an arbitrary option to the parser. +func WithOption(name OptionName, value interface{}) Option { + return &withOption{name, value} +} + +// NewParser returns a new Parser with given options. +func NewParser(options ...Option) Parser { + config := NewConfig() + for _, opt := range options { + opt.SetParserOption(config) + } + + p := &parser{ + options: map[OptionName]interface{}{}, + config: config, + } + + return p +} + +func (p *parser) AddOptions(opts ...Option) { + for _, opt := range opts { + opt.SetParserOption(p.config) + } +} + +func (p *parser) addBlockParser(v util.PrioritizedValue, options map[OptionName]interface{}) { + bp, ok := v.Value.(BlockParser) + if !ok { + panic(fmt.Sprintf("%v is not a BlockParser", v.Value)) + } + tcs := bp.Trigger() + so, ok := v.Value.(SetOptioner) + if ok { + for oname, ovalue := range options { + so.SetOption(oname, ovalue) + } + } + if tcs == nil { + p.freeBlockParsers = append(p.freeBlockParsers, bp) + } else { + for _, tc := range tcs { + if p.blockParsers[tc] == nil { + p.blockParsers[tc] = []BlockParser{} + } + p.blockParsers[tc] = append(p.blockParsers[tc], bp) + } + } +} + +func (p *parser) addInlineParser(v util.PrioritizedValue, options map[OptionName]interface{}) { + ip, ok := v.Value.(InlineParser) + if !ok { + panic(fmt.Sprintf("%v is not a InlineParser", v.Value)) + } + tcs := ip.Trigger() + so, ok := v.Value.(SetOptioner) + if ok { + for oname, ovalue := range options { + so.SetOption(oname, ovalue) + } + } + if cb, ok := ip.(CloseBlocker); ok { + p.closeBlockers = append(p.closeBlockers, cb) + } + for _, tc := range tcs { + if p.inlineParsers[tc] == nil { + p.inlineParsers[tc] = []InlineParser{} + } + p.inlineParsers[tc] = append(p.inlineParsers[tc], ip) + } +} + +func (p *parser) addParagraphTransformer(v util.PrioritizedValue, options map[OptionName]interface{}) { + pt, ok := v.Value.(ParagraphTransformer) + if !ok { + panic(fmt.Sprintf("%v is not a ParagraphTransformer", v.Value)) + } + so, ok := v.Value.(SetOptioner) + if ok { + for oname, ovalue := range options { + so.SetOption(oname, ovalue) + } + } + p.paragraphTransformers = append(p.paragraphTransformers, pt) +} + +func (p *parser) addASTTransformer(v util.PrioritizedValue, options map[OptionName]interface{}) { + at, ok := v.Value.(ASTTransformer) + if !ok { + panic(fmt.Sprintf("%v is not a ASTTransformer", v.Value)) + } + so, ok := v.Value.(SetOptioner) + if ok { + for oname, ovalue := range options { + so.SetOption(oname, ovalue) + } + } + p.astTransformers = append(p.astTransformers, at) +} + +// A ParseConfig struct is a data structure that holds configuration of the Parser.Parse. +type ParseConfig struct { + Context Context +} + +// A ParseOption is a functional option type for the Parser.Parse. +type ParseOption func(c *ParseConfig) + +// WithContext is a functional option that allow you to override +// a default context. +func WithContext(context Context) ParseOption { + return func(c *ParseConfig) { + c.Context = context + } +} + +func (p *parser) Parse(reader text.Reader, opts ...ParseOption) ast.Node { + p.initSync.Do(func() { + p.config.BlockParsers.Sort() + for _, v := range p.config.BlockParsers { + p.addBlockParser(v, p.config.Options) + } + for i := range p.blockParsers { + if p.blockParsers[i] != nil { + p.blockParsers[i] = append(p.blockParsers[i], p.freeBlockParsers...) + } + } + + p.config.InlineParsers.Sort() + for _, v := range p.config.InlineParsers { + p.addInlineParser(v, p.config.Options) + } + p.config.ParagraphTransformers.Sort() + for _, v := range p.config.ParagraphTransformers { + p.addParagraphTransformer(v, p.config.Options) + } + p.config.ASTTransformers.Sort() + for _, v := range p.config.ASTTransformers { + p.addASTTransformer(v, p.config.Options) + } + p.config = nil + }) + c := &ParseConfig{} + for _, opt := range opts { + opt(c) + } + if c.Context == nil { + c.Context = NewContext() + } + pc := c.Context + root := ast.NewDocument() + p.parseBlocks(root, reader, pc) + + blockReader := text.NewBlockReader(reader.Source(), nil) + p.walkBlock(root, func(node ast.Node) { + p.parseBlock(blockReader, node, pc) + }) + for _, at := range p.astTransformers { + at.Transform(root, reader, pc) + } + // root.Dump(reader.Source(), 0) + return root +} + +func (p *parser) transformParagraph(node *ast.Paragraph, reader text.Reader, pc Context) bool { + for _, pt := range p.paragraphTransformers { + pt.Transform(node, reader, pc) + if node.Parent() == nil { + return true + } + } + return false +} + +func (p *parser) closeBlocks(from, to int, reader text.Reader, pc Context) { + blocks := pc.OpenedBlocks() + for i := from; i >= to; i-- { + node := blocks[i].Node + blocks[i].Parser.Close(blocks[i].Node, reader, pc) + paragraph, ok := node.(*ast.Paragraph) + if ok && node.Parent() != nil { + p.transformParagraph(paragraph, reader, pc) + } + } + if from == len(blocks)-1 { + blocks = blocks[0:to] + } else { + blocks = append(blocks[0:to], blocks[from+1:]...) + } + pc.SetOpenedBlocks(blocks) +} + +type blockOpenResult int + +const ( + paragraphContinuation blockOpenResult = iota + 1 + newBlocksOpened + noBlocksOpened +) + +func (p *parser) openBlocks(parent ast.Node, blankLine bool, reader text.Reader, pc Context) blockOpenResult { + result := blockOpenResult(noBlocksOpened) + continuable := false + lastBlock := pc.LastOpenedBlock() + if lastBlock.Node != nil { + continuable = ast.IsParagraph(lastBlock.Node) + } +retry: + var bps []BlockParser + line, _ := reader.PeekLine() + w, pos := util.IndentWidth(line, reader.LineOffset()) + if w >= len(line) { + pc.SetBlockOffset(-1) + pc.SetBlockIndent(-1) + } else { + pc.SetBlockOffset(pos) + pc.SetBlockIndent(w) + } + if line == nil || line[0] == '\n' { + goto continuable + } + bps = p.freeBlockParsers + if pos < len(line) { + bps = p.blockParsers[line[pos]] + if bps == nil { + bps = p.freeBlockParsers + } + } + if bps == nil { + goto continuable + } + + for _, bp := range bps { + if continuable && result == noBlocksOpened && !bp.CanInterruptParagraph() { + continue + } + if w > 3 && !bp.CanAcceptIndentedLine() { + continue + } + lastBlock = pc.LastOpenedBlock() + last := lastBlock.Node + node, state := bp.Open(parent, reader, pc) + if node != nil { + // Parser requires last node to be a paragraph. + // With table extension: + // + // 0 + // -: + // - + // + // '-' on 3rd line seems a Setext heading because 1st and 2nd lines + // are being paragraph when the Settext heading parser tries to parse the 3rd + // line. + // But 1st line and 2nd line are a table. Thus this paragraph will be transformed + // by a paragraph transformer. So this text should be converted to a table and + // an empty list. + if state&RequireParagraph != 0 { + if last == parent.LastChild() { + // Opened paragraph may be transformed by ParagraphTransformers in + // closeBlocks(). + lastBlock.Parser.Close(last, reader, pc) + blocks := pc.OpenedBlocks() + pc.SetOpenedBlocks(blocks[0 : len(blocks)-1]) + if p.transformParagraph(last.(*ast.Paragraph), reader, pc) { + // Paragraph has been transformed. + // So this parser is considered as failing. + continuable = false + goto retry + } + } + } + node.SetBlankPreviousLines(blankLine) + if last != nil && last.Parent() == nil { + lastPos := len(pc.OpenedBlocks()) - 1 + p.closeBlocks(lastPos, lastPos, reader, pc) + } + parent.AppendChild(parent, node) + result = newBlocksOpened + be := Block{node, bp} + pc.SetOpenedBlocks(append(pc.OpenedBlocks(), be)) + if state&HasChildren != 0 { + parent = node + goto retry // try child block + } + break // no children, can not open more blocks on this line + } + } + +continuable: + if result == noBlocksOpened && continuable { + state := lastBlock.Parser.Continue(lastBlock.Node, reader, pc) + if state&Continue != 0 { + result = paragraphContinuation + } + } + return result +} + +type lineStat struct { + lineNum int + level int + isBlank bool +} + +func isBlankLine(lineNum, level int, stats []lineStat) bool { + ret := true + for i := len(stats) - 1 - level; i >= 0; i-- { + ret = false + s := stats[i] + if s.lineNum == lineNum { + if s.level < level && s.isBlank { + return true + } else if s.level == level { + return s.isBlank + } + } + if s.lineNum < lineNum { + return ret + } + } + return ret +} + +func (p *parser) parseBlocks(parent ast.Node, reader text.Reader, pc Context) { + pc.SetOpenedBlocks([]Block{}) + blankLines := make([]lineStat, 0, 128) + isBlank := false + for { // process blocks separated by blank lines + _, lines, ok := reader.SkipBlankLines() + if !ok { + return + } + lineNum, _ := reader.Position() + if lines != 0 { + blankLines = blankLines[0:0] + l := len(pc.OpenedBlocks()) + for i := 0; i < l; i++ { + blankLines = append(blankLines, lineStat{lineNum - 1, i, lines != 0}) + } + } + isBlank = isBlankLine(lineNum-1, 0, blankLines) + // first, we try to open blocks + if p.openBlocks(parent, isBlank, reader, pc) != newBlocksOpened { + return + } + reader.AdvanceLine() + for { // process opened blocks line by line + openedBlocks := pc.OpenedBlocks() + l := len(openedBlocks) + if l == 0 { + break + } + lastIndex := l - 1 + for i := 0; i < l; i++ { + be := openedBlocks[i] + line, _ := reader.PeekLine() + if line == nil { + p.closeBlocks(lastIndex, 0, reader, pc) + reader.AdvanceLine() + return + } + lineNum, _ := reader.Position() + blankLines = append(blankLines, lineStat{lineNum, i, util.IsBlank(line)}) + // If node is a paragraph, p.openBlocks determines whether it is continuable. + // So we do not process paragraphs here. + if !ast.IsParagraph(be.Node) { + state := be.Parser.Continue(be.Node, reader, pc) + if state&Continue != 0 { + // When current node is a container block and has no children, + // we try to open new child nodes + if state&HasChildren != 0 && i == lastIndex { + isBlank = isBlankLine(lineNum-1, i, blankLines) + p.openBlocks(be.Node, isBlank, reader, pc) + break + } + continue + } + } + // current node may be closed or lazy continuation + isBlank = isBlankLine(lineNum-1, i, blankLines) + thisParent := parent + if i != 0 { + thisParent = openedBlocks[i-1].Node + } + lastNode := openedBlocks[lastIndex].Node + result := p.openBlocks(thisParent, isBlank, reader, pc) + if result != paragraphContinuation { + // lastNode is a paragraph and was transformed by the paragraph + // transformers. + if openedBlocks[lastIndex].Node != lastNode { + lastIndex-- + } + p.closeBlocks(lastIndex, i, reader, pc) + } + break + } + + reader.AdvanceLine() + } + } +} + +func (p *parser) walkBlock(block ast.Node, cb func(node ast.Node)) { + for c := block.FirstChild(); c != nil; c = c.NextSibling() { + p.walkBlock(c, cb) + } + cb(block) +} + +const ( + lineBreakHard uint8 = 1 << iota + lineBreakSoft + lineBreakVisible +) + +func (p *parser) parseBlock(block text.BlockReader, parent ast.Node, pc Context) { + if parent.IsRaw() { + return + } + escaped := false + source := block.Source() + block.Reset(parent.Lines()) + for { + retry: + line, _ := block.PeekLine() + if line == nil { + break + } + lineLength := len(line) + var lineBreakFlags uint8 = 0 + hasNewLine := line[lineLength-1] == '\n' + if ((lineLength >= 3 && line[lineLength-2] == '\\' && line[lineLength-3] != '\\') || (lineLength == 2 && line[lineLength-2] == '\\')) && hasNewLine { // ends with \\n + lineLength -= 2 + lineBreakFlags |= lineBreakHard | lineBreakVisible + } else if ((lineLength >= 4 && line[lineLength-3] == '\\' && line[lineLength-2] == '\r' && line[lineLength-4] != '\\') || (lineLength == 3 && line[lineLength-3] == '\\' && line[lineLength-2] == '\r')) && hasNewLine { // ends with \\r\n + lineLength -= 3 + lineBreakFlags |= lineBreakHard | lineBreakVisible + } else if lineLength >= 3 && line[lineLength-3] == ' ' && line[lineLength-2] == ' ' && hasNewLine { // ends with [space][space]\n + lineLength -= 3 + lineBreakFlags |= lineBreakHard + } else if lineLength >= 4 && line[lineLength-4] == ' ' && line[lineLength-3] == ' ' && line[lineLength-2] == '\r' && hasNewLine { // ends with [space][space]\r\n + lineLength -= 4 + lineBreakFlags |= lineBreakHard + } else if hasNewLine { + // If the line ends with a newline character, but it is not a hardlineBreak, then it is a softLinebreak + // If the line ends with a hardlineBreak, then it cannot end with a softLinebreak + // See https://spec.commonmark.org/0.30/#soft-line-breaks + lineBreakFlags |= lineBreakSoft + } + + l, startPosition := block.Position() + n := 0 + for i := 0; i < lineLength; i++ { + c := line[i] + if c == '\n' { + break + } + isSpace := util.IsSpace(c) + isPunct := util.IsPunct(c) + if (isPunct && !escaped) || isSpace || i == 0 { + parserChar := c + if isSpace || (i == 0 && !isPunct) { + parserChar = ' ' + } + ips := p.inlineParsers[parserChar] + if ips != nil { + block.Advance(n) + n = 0 + savedLine, savedPosition := block.Position() + if i != 0 { + _, currentPosition := block.Position() + ast.MergeOrAppendTextSegment(parent, startPosition.Between(currentPosition)) + _, startPosition = block.Position() + } + var inlineNode ast.Node + for _, ip := range ips { + inlineNode = ip.Parse(parent, block, pc) + if inlineNode != nil { + break + } + block.SetPosition(savedLine, savedPosition) + } + if inlineNode != nil { + parent.AppendChild(parent, inlineNode) + goto retry + } + } + } + if escaped { + escaped = false + n++ + continue + } + + if c == '\\' { + escaped = true + n++ + continue + } + + escaped = false + n++ + } + if n != 0 { + block.Advance(n) + } + currentL, currentPosition := block.Position() + if l != currentL { + continue + } + diff := startPosition.Between(currentPosition) + var text *ast.Text + if lineBreakFlags&(lineBreakHard|lineBreakVisible) == lineBreakHard|lineBreakVisible { + text = ast.NewTextSegment(diff) + } else { + text = ast.NewTextSegment(diff.TrimRightSpace(source)) + } + text.SetSoftLineBreak(lineBreakFlags&lineBreakSoft != 0) + text.SetHardLineBreak(lineBreakFlags&lineBreakHard != 0) + parent.AppendChild(parent, text) + block.AdvanceLine() + } + + ProcessDelimiters(nil, pc) + for _, ip := range p.closeBlockers { + ip.CloseBlock(parent, block, pc) + } +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/raw_html.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/raw_html.go new file mode 100644 index 000000000..1fb6c9748 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/raw_html.go @@ -0,0 +1,104 @@ +package parser + +import ( + "bytes" + "regexp" + + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +type rawHTMLParser struct { +} + +var defaultRawHTMLParser = &rawHTMLParser{} + +// NewRawHTMLParser return a new InlineParser that can parse +// inline htmls +func NewRawHTMLParser() InlineParser { + return defaultRawHTMLParser +} + +func (s *rawHTMLParser) Trigger() []byte { + return []byte{'<'} +} + +func (s *rawHTMLParser) Parse(parent ast.Node, block text.Reader, pc Context) ast.Node { + line, _ := block.PeekLine() + if len(line) > 1 && util.IsAlphaNumeric(line[1]) { + return s.parseMultiLineRegexp(openTagRegexp, block, pc) + } + if len(line) > 2 && line[1] == '/' && util.IsAlphaNumeric(line[2]) { + return s.parseMultiLineRegexp(closeTagRegexp, block, pc) + } + if bytes.HasPrefix(line, []byte("|`) +var processingInstructionRegexp = regexp.MustCompile(`^(?:<\?).*?(?:\?>)`) +var declRegexp = regexp.MustCompile(`^]*>`) +var cdataRegexp = regexp.MustCompile(``) + +func (s *rawHTMLParser) parseSingleLineRegexp(reg *regexp.Regexp, block text.Reader, pc Context) ast.Node { + line, segment := block.PeekLine() + match := reg.FindSubmatchIndex(line) + if match == nil { + return nil + } + node := ast.NewRawHTML() + node.Segments.Append(segment.WithStop(segment.Start + match[1])) + block.Advance(match[1]) + return node +} + +func (s *rawHTMLParser) parseMultiLineRegexp(reg *regexp.Regexp, block text.Reader, pc Context) ast.Node { + sline, ssegment := block.Position() + if block.Match(reg) { + node := ast.NewRawHTML() + eline, esegment := block.Position() + block.SetPosition(sline, ssegment) + for { + line, segment := block.PeekLine() + if line == nil { + break + } + l, _ := block.Position() + start := segment.Start + if l == sline { + start = ssegment.Start + } + end := segment.Stop + if l == eline { + end = esegment.Start + } + + node.Segments.Append(text.NewSegment(start, end)) + if l == eline { + block.Advance(end - start) + break + } else { + block.AdvanceLine() + } + } + return node + } + return nil +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/setext_headings.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/setext_headings.go new file mode 100644 index 000000000..686efe179 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/setext_headings.go @@ -0,0 +1,126 @@ +package parser + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +var temporaryParagraphKey = NewContextKey() + +type setextHeadingParser struct { + HeadingConfig +} + +func matchesSetextHeadingBar(line []byte) (byte, bool) { + start := 0 + end := len(line) + space := util.TrimLeftLength(line, []byte{' '}) + if space > 3 { + return 0, false + } + start += space + level1 := util.TrimLeftLength(line[start:end], []byte{'='}) + c := byte('=') + var level2 int + if level1 == 0 { + level2 = util.TrimLeftLength(line[start:end], []byte{'-'}) + c = '-' + } + if util.IsSpace(line[end-1]) { + end -= util.TrimRightSpaceLength(line[start:end]) + } + if !((level1 > 0 && start+level1 == end) || (level2 > 0 && start+level2 == end)) { + return 0, false + } + return c, true +} + +// NewSetextHeadingParser return a new BlockParser that can parse Setext headings. +func NewSetextHeadingParser(opts ...HeadingOption) BlockParser { + p := &setextHeadingParser{} + for _, o := range opts { + o.SetHeadingOption(&p.HeadingConfig) + } + return p +} + +func (b *setextHeadingParser) Trigger() []byte { + return []byte{'-', '='} +} + +func (b *setextHeadingParser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { + last := pc.LastOpenedBlock().Node + if last == nil { + return nil, NoChildren + } + paragraph, ok := last.(*ast.Paragraph) + if !ok || paragraph.Parent() != parent { + return nil, NoChildren + } + line, segment := reader.PeekLine() + c, ok := matchesSetextHeadingBar(line) + if !ok { + return nil, NoChildren + } + level := 1 + if c == '-' { + level = 2 + } + node := ast.NewHeading(level) + node.Lines().Append(segment) + pc.Set(temporaryParagraphKey, last) + return node, NoChildren | RequireParagraph +} + +func (b *setextHeadingParser) Continue(node ast.Node, reader text.Reader, pc Context) State { + return Close +} + +func (b *setextHeadingParser) Close(node ast.Node, reader text.Reader, pc Context) { + heading := node.(*ast.Heading) + segment := node.Lines().At(0) + heading.Lines().Clear() + tmp := pc.Get(temporaryParagraphKey).(*ast.Paragraph) + pc.Set(temporaryParagraphKey, nil) + if tmp.Lines().Len() == 0 { + next := heading.NextSibling() + segment = segment.TrimLeftSpace(reader.Source()) + if next == nil || !ast.IsParagraph(next) { + para := ast.NewParagraph() + para.Lines().Append(segment) + heading.Parent().InsertAfter(heading.Parent(), heading, para) + } else { + next.(ast.Node).Lines().Unshift(segment) + } + heading.Parent().RemoveChild(heading.Parent(), heading) + } else { + heading.SetLines(tmp.Lines()) + heading.SetBlankPreviousLines(tmp.HasBlankPreviousLines()) + tp := tmp.Parent() + if tp != nil { + tp.RemoveChild(tp, tmp) + } + } + + if b.Attribute { + parseLastLineAttributes(node, reader, pc) + } + + if b.AutoHeadingID { + id, ok := node.AttributeString("id") + if !ok { + generateAutoHeadingID(heading, reader, pc) + } else { + pc.IDs().Put(id.([]byte)) + } + } +} + +func (b *setextHeadingParser) CanInterruptParagraph() bool { + return true +} + +func (b *setextHeadingParser) CanAcceptIndentedLine() bool { + return false +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/thematic_break.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/thematic_break.go new file mode 100644 index 000000000..db20a1e7a --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/parser/thematic_break.go @@ -0,0 +1,75 @@ +package parser + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" +) + +type thematicBreakPraser struct { +} + +var defaultThematicBreakPraser = &thematicBreakPraser{} + +// NewThematicBreakParser returns a new BlockParser that +// parses thematic breaks. +func NewThematicBreakParser() BlockParser { + return defaultThematicBreakPraser +} + +func isThematicBreak(line []byte, offset int) bool { + w, pos := util.IndentWidth(line, offset) + if w > 3 { + return false + } + mark := byte(0) + count := 0 + for i := pos; i < len(line); i++ { + c := line[i] + if util.IsSpace(c) { + continue + } + if mark == 0 { + mark = c + count = 1 + if mark == '*' || mark == '-' || mark == '_' { + continue + } + return false + } + if c != mark { + return false + } + count++ + } + return count > 2 +} + +func (b *thematicBreakPraser) Trigger() []byte { + return []byte{'-', '*', '_'} +} + +func (b *thematicBreakPraser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { + line, segment := reader.PeekLine() + if isThematicBreak(line, reader.LineOffset()) { + reader.Advance(segment.Len() - 1) + return ast.NewThematicBreak(), NoChildren + } + return nil, NoChildren +} + +func (b *thematicBreakPraser) Continue(node ast.Node, reader text.Reader, pc Context) State { + return Close +} + +func (b *thematicBreakPraser) Close(node ast.Node, reader text.Reader, pc Context) { + // nothing to do +} + +func (b *thematicBreakPraser) CanInterruptParagraph() bool { + return true +} + +func (b *thematicBreakPraser) CanAcceptIndentedLine() bool { + return false +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/renderer/html/html.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/renderer/html/html.go new file mode 100644 index 000000000..7f5b9fedc --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/renderer/html/html.go @@ -0,0 +1,831 @@ +package html + +import ( + "bytes" + "fmt" + "strconv" + + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/renderer" + "github.com/yuin/goldmark/util" +) + +// A Config struct has configurations for the HTML based renderers. +type Config struct { + Writer Writer + HardWraps bool + XHTML bool + Unsafe bool +} + +// NewConfig returns a new Config with defaults. +func NewConfig() Config { + return Config{ + Writer: DefaultWriter, + HardWraps: false, + XHTML: false, + Unsafe: false, + } +} + +// SetOption implements renderer.NodeRenderer.SetOption. +func (c *Config) SetOption(name renderer.OptionName, value interface{}) { + switch name { + case optHardWraps: + c.HardWraps = value.(bool) + case optXHTML: + c.XHTML = value.(bool) + case optUnsafe: + c.Unsafe = value.(bool) + case optTextWriter: + c.Writer = value.(Writer) + } +} + +// An Option interface sets options for HTML based renderers. +type Option interface { + SetHTMLOption(*Config) +} + +// TextWriter is an option name used in WithWriter. +const optTextWriter renderer.OptionName = "Writer" + +type withWriter struct { + value Writer +} + +func (o *withWriter) SetConfig(c *renderer.Config) { + c.Options[optTextWriter] = o.value +} + +func (o *withWriter) SetHTMLOption(c *Config) { + c.Writer = o.value +} + +// WithWriter is a functional option that allow you to set the given writer to +// the renderer. +func WithWriter(writer Writer) interface { + renderer.Option + Option +} { + return &withWriter{writer} +} + +// HardWraps is an option name used in WithHardWraps. +const optHardWraps renderer.OptionName = "HardWraps" + +type withHardWraps struct { +} + +func (o *withHardWraps) SetConfig(c *renderer.Config) { + c.Options[optHardWraps] = true +} + +func (o *withHardWraps) SetHTMLOption(c *Config) { + c.HardWraps = true +} + +// WithHardWraps is a functional option that indicates whether softline breaks +// should be rendered as '
                  '. +func WithHardWraps() interface { + renderer.Option + Option +} { + return &withHardWraps{} +} + +// XHTML is an option name used in WithXHTML. +const optXHTML renderer.OptionName = "XHTML" + +type withXHTML struct { +} + +func (o *withXHTML) SetConfig(c *renderer.Config) { + c.Options[optXHTML] = true +} + +func (o *withXHTML) SetHTMLOption(c *Config) { + c.XHTML = true +} + +// WithXHTML is a functional option indicates that nodes should be rendered in +// xhtml instead of HTML5. +func WithXHTML() interface { + Option + renderer.Option +} { + return &withXHTML{} +} + +// Unsafe is an option name used in WithUnsafe. +const optUnsafe renderer.OptionName = "Unsafe" + +type withUnsafe struct { +} + +func (o *withUnsafe) SetConfig(c *renderer.Config) { + c.Options[optUnsafe] = true +} + +func (o *withUnsafe) SetHTMLOption(c *Config) { + c.Unsafe = true +} + +// WithUnsafe is a functional option that renders dangerous contents +// (raw htmls and potentially dangerous links) as it is. +func WithUnsafe() interface { + renderer.Option + Option +} { + return &withUnsafe{} +} + +// A Renderer struct is an implementation of renderer.NodeRenderer that renders +// nodes as (X)HTML. +type Renderer struct { + Config +} + +// NewRenderer returns a new Renderer with given options. +func NewRenderer(opts ...Option) renderer.NodeRenderer { + r := &Renderer{ + Config: NewConfig(), + } + + for _, opt := range opts { + opt.SetHTMLOption(&r.Config) + } + return r +} + +// RegisterFuncs implements NodeRenderer.RegisterFuncs . +func (r *Renderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) { + // blocks + + reg.Register(ast.KindDocument, r.renderDocument) + reg.Register(ast.KindHeading, r.renderHeading) + reg.Register(ast.KindBlockquote, r.renderBlockquote) + reg.Register(ast.KindCodeBlock, r.renderCodeBlock) + reg.Register(ast.KindFencedCodeBlock, r.renderFencedCodeBlock) + reg.Register(ast.KindHTMLBlock, r.renderHTMLBlock) + reg.Register(ast.KindList, r.renderList) + reg.Register(ast.KindListItem, r.renderListItem) + reg.Register(ast.KindParagraph, r.renderParagraph) + reg.Register(ast.KindTextBlock, r.renderTextBlock) + reg.Register(ast.KindThematicBreak, r.renderThematicBreak) + + // inlines + + reg.Register(ast.KindAutoLink, r.renderAutoLink) + reg.Register(ast.KindCodeSpan, r.renderCodeSpan) + reg.Register(ast.KindEmphasis, r.renderEmphasis) + reg.Register(ast.KindImage, r.renderImage) + reg.Register(ast.KindLink, r.renderLink) + reg.Register(ast.KindRawHTML, r.renderRawHTML) + reg.Register(ast.KindText, r.renderText) + reg.Register(ast.KindString, r.renderString) +} + +func (r *Renderer) writeLines(w util.BufWriter, source []byte, n ast.Node) { + l := n.Lines().Len() + for i := 0; i < l; i++ { + line := n.Lines().At(i) + r.Writer.RawWrite(w, line.Value(source)) + } +} + +// GlobalAttributeFilter defines attribute names which any elements can have. +var GlobalAttributeFilter = util.NewBytesFilter( + []byte("accesskey"), + []byte("autocapitalize"), + []byte("class"), + []byte("contenteditable"), + []byte("contextmenu"), + []byte("dir"), + []byte("draggable"), + []byte("dropzone"), + []byte("hidden"), + []byte("id"), + []byte("itemprop"), + []byte("lang"), + []byte("slot"), + []byte("spellcheck"), + []byte("style"), + []byte("tabindex"), + []byte("title"), + []byte("translate"), +) + +func (r *Renderer) renderDocument(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + // nothing to do + return ast.WalkContinue, nil +} + +// HeadingAttributeFilter defines attribute names which heading elements can have +var HeadingAttributeFilter = GlobalAttributeFilter + +func (r *Renderer) renderHeading(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + n := node.(*ast.Heading) + if entering { + _, _ = w.WriteString("') + } else { + _, _ = w.WriteString("\n") + } + return ast.WalkContinue, nil +} + +// BlockquoteAttributeFilter defines attribute names which blockquote elements can have +var BlockquoteAttributeFilter = GlobalAttributeFilter.Extend( + []byte("cite"), +) + +func (r *Renderer) renderBlockquote(w util.BufWriter, source []byte, n ast.Node, entering bool) (ast.WalkStatus, error) { + if entering { + if n.Attributes() != nil { + _, _ = w.WriteString("') + } else { + _, _ = w.WriteString("
                  \n") + } + } else { + _, _ = w.WriteString("
                  \n") + } + return ast.WalkContinue, nil +} + +func (r *Renderer) renderCodeBlock(w util.BufWriter, source []byte, n ast.Node, entering bool) (ast.WalkStatus, error) { + if entering { + _, _ = w.WriteString("
                  ")
                  +		r.writeLines(w, source, n)
                  +	} else {
                  +		_, _ = w.WriteString("
                  \n") + } + return ast.WalkContinue, nil +} + +func (r *Renderer) renderFencedCodeBlock(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + n := node.(*ast.FencedCodeBlock) + if entering { + _, _ = w.WriteString("
                  \n") + } + return ast.WalkContinue, nil +} + +func (r *Renderer) renderHTMLBlock(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + n := node.(*ast.HTMLBlock) + if entering { + if r.Unsafe { + l := n.Lines().Len() + for i := 0; i < l; i++ { + line := n.Lines().At(i) + r.Writer.SecureWrite(w, line.Value(source)) + } + } else { + _, _ = w.WriteString("\n") + } + } else { + if n.HasClosure() { + if r.Unsafe { + closure := n.ClosureLine + r.Writer.SecureWrite(w, closure.Value(source)) + } else { + _, _ = w.WriteString("\n") + } + } + } + return ast.WalkContinue, nil +} + +// ListAttributeFilter defines attribute names which list elements can have. +var ListAttributeFilter = GlobalAttributeFilter.Extend( + []byte("start"), + []byte("reversed"), + []byte("type"), +) + +func (r *Renderer) renderList(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + n := node.(*ast.List) + tag := "ul" + if n.IsOrdered() { + tag = "ol" + } + if entering { + _ = w.WriteByte('<') + _, _ = w.WriteString(tag) + if n.IsOrdered() && n.Start != 1 { + fmt.Fprintf(w, " start=\"%d\"", n.Start) + } + if n.Attributes() != nil { + RenderAttributes(w, n, ListAttributeFilter) + } + _, _ = w.WriteString(">\n") + } else { + _, _ = w.WriteString("\n") + } + return ast.WalkContinue, nil +} + +// ListItemAttributeFilter defines attribute names which list item elements can have. +var ListItemAttributeFilter = GlobalAttributeFilter.Extend( + []byte("value"), +) + +func (r *Renderer) renderListItem(w util.BufWriter, source []byte, n ast.Node, entering bool) (ast.WalkStatus, error) { + if entering { + if n.Attributes() != nil { + _, _ = w.WriteString("') + } else { + _, _ = w.WriteString("
                • ") + } + fc := n.FirstChild() + if fc != nil { + if _, ok := fc.(*ast.TextBlock); !ok { + _ = w.WriteByte('\n') + } + } + } else { + _, _ = w.WriteString("
                • \n") + } + return ast.WalkContinue, nil +} + +// ParagraphAttributeFilter defines attribute names which paragraph elements can have. +var ParagraphAttributeFilter = GlobalAttributeFilter + +func (r *Renderer) renderParagraph(w util.BufWriter, source []byte, n ast.Node, entering bool) (ast.WalkStatus, error) { + if entering { + if n.Attributes() != nil { + _, _ = w.WriteString("') + } else { + _, _ = w.WriteString("

                  ") + } + } else { + _, _ = w.WriteString("

                  \n") + } + return ast.WalkContinue, nil +} + +func (r *Renderer) renderTextBlock(w util.BufWriter, source []byte, n ast.Node, entering bool) (ast.WalkStatus, error) { + if !entering { + if _, ok := n.NextSibling().(ast.Node); ok && n.FirstChild() != nil { + _ = w.WriteByte('\n') + } + } + return ast.WalkContinue, nil +} + +// ThematicAttributeFilter defines attribute names which hr elements can have. +var ThematicAttributeFilter = GlobalAttributeFilter.Extend( + []byte("align"), // [Deprecated] + []byte("color"), // [Not Standardized] + []byte("noshade"), // [Deprecated] + []byte("size"), // [Deprecated] + []byte("width"), // [Deprecated] +) + +func (r *Renderer) renderThematicBreak(w util.BufWriter, source []byte, n ast.Node, entering bool) (ast.WalkStatus, error) { + if !entering { + return ast.WalkContinue, nil + } + _, _ = w.WriteString("\n") + } else { + _, _ = w.WriteString(">\n") + } + return ast.WalkContinue, nil +} + +// LinkAttributeFilter defines attribute names which link elements can have. +var LinkAttributeFilter = GlobalAttributeFilter.Extend( + []byte("download"), + // []byte("href"), + []byte("hreflang"), + []byte("media"), + []byte("ping"), + []byte("referrerpolicy"), + []byte("rel"), + []byte("shape"), + []byte("target"), +) + +func (r *Renderer) renderAutoLink(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + n := node.(*ast.AutoLink) + if !entering { + return ast.WalkContinue, nil + } + _, _ = w.WriteString(`') + } else { + _, _ = w.WriteString(`">`) + } + _, _ = w.Write(util.EscapeHTML(label)) + _, _ = w.WriteString(``) + return ast.WalkContinue, nil +} + +// CodeAttributeFilter defines attribute names which code elements can have. +var CodeAttributeFilter = GlobalAttributeFilter + +func (r *Renderer) renderCodeSpan(w util.BufWriter, source []byte, n ast.Node, entering bool) (ast.WalkStatus, error) { + if entering { + if n.Attributes() != nil { + _, _ = w.WriteString("') + } else { + _, _ = w.WriteString("") + } + for c := n.FirstChild(); c != nil; c = c.NextSibling() { + segment := c.(*ast.Text).Segment + value := segment.Value(source) + if bytes.HasSuffix(value, []byte("\n")) { + r.Writer.RawWrite(w, value[:len(value)-1]) + r.Writer.RawWrite(w, []byte(" ")) + } else { + r.Writer.RawWrite(w, value) + } + } + return ast.WalkSkipChildren, nil + } + _, _ = w.WriteString("") + return ast.WalkContinue, nil +} + +// EmphasisAttributeFilter defines attribute names which emphasis elements can have. +var EmphasisAttributeFilter = GlobalAttributeFilter + +func (r *Renderer) renderEmphasis(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + n := node.(*ast.Emphasis) + tag := "em" + if n.Level == 2 { + tag = "strong" + } + if entering { + _ = w.WriteByte('<') + _, _ = w.WriteString(tag) + if n.Attributes() != nil { + RenderAttributes(w, n, EmphasisAttributeFilter) + } + _ = w.WriteByte('>') + } else { + _, _ = w.WriteString("') + } + return ast.WalkContinue, nil +} + +func (r *Renderer) renderLink(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + n := node.(*ast.Link) + if entering { + _, _ = w.WriteString("') + } else { + _, _ = w.WriteString("") + } + return ast.WalkContinue, nil +} + +// ImageAttributeFilter defines attribute names which image elements can have. +var ImageAttributeFilter = GlobalAttributeFilter.Extend( + []byte("align"), + []byte("border"), + []byte("crossorigin"), + []byte("decoding"), + []byte("height"), + []byte("importance"), + []byte("intrinsicsize"), + []byte("ismap"), + []byte("loading"), + []byte("referrerpolicy"), + []byte("sizes"), + []byte("srcset"), + []byte("usemap"), + []byte("width"), +) + +func (r *Renderer) renderImage(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + if !entering { + return ast.WalkContinue, nil + } + n := node.(*ast.Image) + _, _ = w.WriteString("`)
+	_, _ = w.Write(util.EscapeHTML(n.Text(source)))
+	_ = w.WriteByte('") + } else { + _, _ = w.WriteString(">") + } + return ast.WalkSkipChildren, nil +} + +func (r *Renderer) renderRawHTML(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + if !entering { + return ast.WalkSkipChildren, nil + } + if r.Unsafe { + n := node.(*ast.RawHTML) + l := n.Segments.Len() + for i := 0; i < l; i++ { + segment := n.Segments.At(i) + _, _ = w.Write(segment.Value(source)) + } + return ast.WalkSkipChildren, nil + } + _, _ = w.WriteString("") + return ast.WalkSkipChildren, nil +} + +func (r *Renderer) renderText(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + if !entering { + return ast.WalkContinue, nil + } + n := node.(*ast.Text) + segment := n.Segment + if n.IsRaw() { + r.Writer.RawWrite(w, segment.Value(source)) + } else { + r.Writer.Write(w, segment.Value(source)) + if n.HardLineBreak() || (n.SoftLineBreak() && r.HardWraps) { + if r.XHTML { + _, _ = w.WriteString("
                  \n") + } else { + _, _ = w.WriteString("
                  \n") + } + } else if n.SoftLineBreak() { + _ = w.WriteByte('\n') + } + } + return ast.WalkContinue, nil +} + +func (r *Renderer) renderString(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + if !entering { + return ast.WalkContinue, nil + } + n := node.(*ast.String) + if n.IsCode() { + _, _ = w.Write(n.Value) + } else { + if n.IsRaw() { + r.Writer.RawWrite(w, n.Value) + } else { + r.Writer.Write(w, n.Value) + } + } + return ast.WalkContinue, nil +} + +var dataPrefix = []byte("data-") + +// RenderAttributes renders given node's attributes. +// You can specify attribute names to render by the filter. +// If filter is nil, RenderAttributes renders all attributes. +func RenderAttributes(w util.BufWriter, node ast.Node, filter util.BytesFilter) { + for _, attr := range node.Attributes() { + if filter != nil && !filter.Contains(attr.Name) { + if !bytes.HasPrefix(attr.Name, dataPrefix) { + continue + } + } + _, _ = w.WriteString(" ") + _, _ = w.Write(attr.Name) + _, _ = w.WriteString(`="`) + // TODO: convert numeric values to strings + _, _ = w.Write(util.EscapeHTML(attr.Value.([]byte))) + _ = w.WriteByte('"') + } +} + +// A Writer interface writes textual contents to a writer. +type Writer interface { + // Write writes the given source to writer with resolving references and unescaping + // backslash escaped characters. + Write(writer util.BufWriter, source []byte) + + // RawWrite writes the given source to writer without resolving references and + // unescaping backslash escaped characters. + RawWrite(writer util.BufWriter, source []byte) + + // SecureWrite writes the given source to writer with replacing insecure characters. + SecureWrite(writer util.BufWriter, source []byte) +} + +var replacementCharacter = []byte("\ufffd") + +type defaultWriter struct { +} + +func escapeRune(writer util.BufWriter, r rune) { + if r < 256 { + v := util.EscapeHTMLByte(byte(r)) + if v != nil { + _, _ = writer.Write(v) + return + } + } + _, _ = writer.WriteRune(util.ToValidRune(r)) +} + +func (d *defaultWriter) SecureWrite(writer util.BufWriter, source []byte) { + n := 0 + l := len(source) + for i := 0; i < l; i++ { + if source[i] == '\u0000' { + _, _ = writer.Write(source[i-n : i]) + n = 0 + _, _ = writer.Write(replacementCharacter) + continue + } + n++ + } + if n != 0 { + _, _ = writer.Write(source[l-n:]) + } +} + +func (d *defaultWriter) RawWrite(writer util.BufWriter, source []byte) { + n := 0 + l := len(source) + for i := 0; i < l; i++ { + v := util.EscapeHTMLByte(source[i]) + if v != nil { + _, _ = writer.Write(source[i-n : i]) + n = 0 + _, _ = writer.Write(v) + continue + } + n++ + } + if n != 0 { + _, _ = writer.Write(source[l-n:]) + } +} + +func (d *defaultWriter) Write(writer util.BufWriter, source []byte) { + escaped := false + var ok bool + limit := len(source) + n := 0 + for i := 0; i < limit; i++ { + c := source[i] + if escaped { + if util.IsPunct(c) { + d.RawWrite(writer, source[n:i-1]) + n = i + escaped = false + continue + } + } + if c == '\x00' { + d.RawWrite(writer, source[n:i]) + d.RawWrite(writer, replacementCharacter) + n = i + 1 + continue + } + if c == '&' { + pos := i + next := i + 1 + if next < limit && source[next] == '#' { + nnext := next + 1 + if nnext < limit { + nc := source[nnext] + // code point like #x22; + if nnext < limit && nc == 'x' || nc == 'X' { + start := nnext + 1 + i, ok = util.ReadWhile(source, [2]int{start, limit}, util.IsHexDecimal) + if ok && i < limit && source[i] == ';' && i-start < 7 { + v, _ := strconv.ParseUint(util.BytesToReadOnlyString(source[start:i]), 16, 32) + d.RawWrite(writer, source[n:pos]) + n = i + 1 + escapeRune(writer, rune(v)) + continue + } + // code point like #1234; + } else if nc >= '0' && nc <= '9' { + start := nnext + i, ok = util.ReadWhile(source, [2]int{start, limit}, util.IsNumeric) + if ok && i < limit && i-start < 8 && source[i] == ';' { + v, _ := strconv.ParseUint(util.BytesToReadOnlyString(source[start:i]), 10, 32) + d.RawWrite(writer, source[n:pos]) + n = i + 1 + escapeRune(writer, rune(v)) + continue + } + } + } + } else { + start := next + i, ok = util.ReadWhile(source, [2]int{start, limit}, util.IsAlphaNumeric) + // entity reference + if ok && i < limit && source[i] == ';' { + name := util.BytesToReadOnlyString(source[start:i]) + entity, ok := util.LookUpHTML5EntityByName(name) + if ok { + d.RawWrite(writer, source[n:pos]) + n = i + 1 + d.RawWrite(writer, entity.Characters) + continue + } + } + } + i = next - 1 + } + if c == '\\' { + escaped = true + continue + } + escaped = false + } + d.RawWrite(writer, source[n:]) +} + +// DefaultWriter is a default implementation of the Writer. +var DefaultWriter = &defaultWriter{} + +var bDataImage = []byte("data:image/") +var bPng = []byte("png;") +var bGif = []byte("gif;") +var bJpeg = []byte("jpeg;") +var bWebp = []byte("webp;") +var bJs = []byte("javascript:") +var bVb = []byte("vbscript:") +var bFile = []byte("file:") +var bData = []byte("data:") + +// IsDangerousURL returns true if the given url seems a potentially dangerous url, +// otherwise false. +func IsDangerousURL(url []byte) bool { + if bytes.HasPrefix(url, bDataImage) && len(url) >= 11 { + v := url[11:] + if bytes.HasPrefix(v, bPng) || bytes.HasPrefix(v, bGif) || + bytes.HasPrefix(v, bJpeg) || bytes.HasPrefix(v, bWebp) { + return false + } + return true + } + return bytes.HasPrefix(url, bJs) || bytes.HasPrefix(url, bVb) || + bytes.HasPrefix(url, bFile) || bytes.HasPrefix(url, bData) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/renderer/renderer.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/renderer/renderer.go new file mode 100644 index 000000000..10f6d4010 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/renderer/renderer.go @@ -0,0 +1,174 @@ +// Package renderer renders the given AST to certain formats. +package renderer + +import ( + "bufio" + "io" + "sync" + + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/util" +) + +// A Config struct is a data structure that holds configuration of the Renderer. +type Config struct { + Options map[OptionName]interface{} + NodeRenderers util.PrioritizedSlice +} + +// NewConfig returns a new Config +func NewConfig() *Config { + return &Config{ + Options: map[OptionName]interface{}{}, + NodeRenderers: util.PrioritizedSlice{}, + } +} + +// An OptionName is a name of the option. +type OptionName string + +// An Option interface is a functional option type for the Renderer. +type Option interface { + SetConfig(*Config) +} + +type withNodeRenderers struct { + value []util.PrioritizedValue +} + +func (o *withNodeRenderers) SetConfig(c *Config) { + c.NodeRenderers = append(c.NodeRenderers, o.value...) +} + +// WithNodeRenderers is a functional option that allow you to add +// NodeRenderers to the renderer. +func WithNodeRenderers(ps ...util.PrioritizedValue) Option { + return &withNodeRenderers{ps} +} + +type withOption struct { + name OptionName + value interface{} +} + +func (o *withOption) SetConfig(c *Config) { + c.Options[o.name] = o.value +} + +// WithOption is a functional option that allow you to set +// an arbitrary option to the parser. +func WithOption(name OptionName, value interface{}) Option { + return &withOption{name, value} +} + +// A SetOptioner interface sets given option to the object. +type SetOptioner interface { + // SetOption sets given option to the object. + // Unacceptable options may be passed. + // Thus implementations must ignore unacceptable options. + SetOption(name OptionName, value interface{}) +} + +// NodeRendererFunc is a function that renders a given node. +type NodeRendererFunc func(writer util.BufWriter, source []byte, n ast.Node, entering bool) (ast.WalkStatus, error) + +// A NodeRenderer interface offers NodeRendererFuncs. +type NodeRenderer interface { + // RendererFuncs registers NodeRendererFuncs to given NodeRendererFuncRegisterer. + RegisterFuncs(NodeRendererFuncRegisterer) +} + +// A NodeRendererFuncRegisterer registers +type NodeRendererFuncRegisterer interface { + // Register registers given NodeRendererFunc to this object. + Register(ast.NodeKind, NodeRendererFunc) +} + +// A Renderer interface renders given AST node to given +// writer with given Renderer. +type Renderer interface { + Render(w io.Writer, source []byte, n ast.Node) error + + // AddOptions adds given option to this renderer. + AddOptions(...Option) +} + +type renderer struct { + config *Config + options map[OptionName]interface{} + nodeRendererFuncsTmp map[ast.NodeKind]NodeRendererFunc + maxKind int + nodeRendererFuncs []NodeRendererFunc + initSync sync.Once +} + +// NewRenderer returns a new Renderer with given options. +func NewRenderer(options ...Option) Renderer { + config := NewConfig() + for _, opt := range options { + opt.SetConfig(config) + } + + r := &renderer{ + options: map[OptionName]interface{}{}, + config: config, + nodeRendererFuncsTmp: map[ast.NodeKind]NodeRendererFunc{}, + } + + return r +} + +func (r *renderer) AddOptions(opts ...Option) { + for _, opt := range opts { + opt.SetConfig(r.config) + } +} + +func (r *renderer) Register(kind ast.NodeKind, v NodeRendererFunc) { + r.nodeRendererFuncsTmp[kind] = v + if int(kind) > r.maxKind { + r.maxKind = int(kind) + } +} + +// Render renders the given AST node to the given writer with the given Renderer. +func (r *renderer) Render(w io.Writer, source []byte, n ast.Node) error { + r.initSync.Do(func() { + r.options = r.config.Options + r.config.NodeRenderers.Sort() + l := len(r.config.NodeRenderers) + for i := l - 1; i >= 0; i-- { + v := r.config.NodeRenderers[i] + nr, _ := v.Value.(NodeRenderer) + if se, ok := v.Value.(SetOptioner); ok { + for oname, ovalue := range r.options { + se.SetOption(oname, ovalue) + } + } + nr.RegisterFuncs(r) + } + r.nodeRendererFuncs = make([]NodeRendererFunc, r.maxKind+1) + for kind, nr := range r.nodeRendererFuncsTmp { + r.nodeRendererFuncs[kind] = nr + } + r.config = nil + r.nodeRendererFuncsTmp = nil + }) + writer, ok := w.(util.BufWriter) + if !ok { + writer = bufio.NewWriter(w) + } + err := ast.Walk(n, func(n ast.Node, entering bool) (ast.WalkStatus, error) { + s := ast.WalkStatus(ast.WalkContinue) + var err error + f := r.nodeRendererFuncs[n.Kind()] + if f != nil { + s, err = f(writer, source, n, entering) + } + return s, err + }) + if err != nil { + return err + } + return writer.Flush() +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/testutil/testutil.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/testutil/testutil.go new file mode 100644 index 000000000..4827f5e04 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/testutil/testutil.go @@ -0,0 +1,397 @@ +package testutil + +import ( + "bufio" + "bytes" + "encoding/hex" + "encoding/json" + "fmt" + "os" + "regexp" + "runtime/debug" + "strconv" + "strings" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/util" +) + +// TestingT is a subset of the functionality provided by testing.T. +type TestingT interface { + Logf(string, ...interface{}) + Skipf(string, ...interface{}) + Errorf(string, ...interface{}) + FailNow() +} + +// MarkdownTestCase represents a test case. +type MarkdownTestCase struct { + No int + Description string + Options MarkdownTestCaseOptions + Markdown string + Expected string +} + +func source(t *MarkdownTestCase) string { + if t.Options.EnableEscape { + return string(applyEscapeSequence([]byte(t.Markdown))) + } + return t.Markdown +} + +func expected(t *MarkdownTestCase) string { + if t.Options.EnableEscape { + return string(applyEscapeSequence([]byte(t.Expected))) + } + return t.Expected +} + +// MarkdownTestCaseOptions represents options for each test case. +type MarkdownTestCaseOptions struct { + EnableEscape bool +} + +const attributeSeparator = "//- - - - - - - - -//" +const caseSeparator = "//= = = = = = = = = = = = = = = = = = = = = = = =//" + +var optionsRegexp *regexp.Regexp = regexp.MustCompile(`(?i)\s*options:(.*)`) + +// ParseCliCaseArg parses -case command line args. +func ParseCliCaseArg() []int { + ret := []int{} + for _, a := range os.Args { + if strings.HasPrefix(a, "case=") { + parts := strings.Split(a, "=") + for _, cas := range strings.Split(parts[1], ",") { + value, err := strconv.Atoi(strings.TrimSpace(cas)) + if err == nil { + ret = append(ret, value) + } + } + } + } + return ret +} + +// DoTestCaseFile runs test cases in a given file. +func DoTestCaseFile(m goldmark.Markdown, filename string, t TestingT, no ...int) { + fp, err := os.Open(filename) + if err != nil { + panic(err) + } + defer fp.Close() + + scanner := bufio.NewScanner(fp) + c := MarkdownTestCase{ + No: -1, + Description: "", + Options: MarkdownTestCaseOptions{}, + Markdown: "", + Expected: "", + } + cases := []MarkdownTestCase{} + line := 0 + for scanner.Scan() { + line++ + if util.IsBlank([]byte(scanner.Text())) { + continue + } + header := scanner.Text() + c.Description = "" + if strings.Contains(header, ":") { + parts := strings.Split(header, ":") + c.No, err = strconv.Atoi(strings.TrimSpace(parts[0])) + c.Description = strings.Join(parts[1:], ":") + } else { + c.No, err = strconv.Atoi(scanner.Text()) + } + if err != nil { + panic(fmt.Sprintf("%s: invalid case No at line %d", filename, line)) + } + if !scanner.Scan() { + panic(fmt.Sprintf("%s: invalid case at line %d", filename, line)) + } + line++ + matches := optionsRegexp.FindAllStringSubmatch(scanner.Text(), -1) + if len(matches) != 0 { + err = json.Unmarshal([]byte(matches[0][1]), &c.Options) + if err != nil { + panic(fmt.Sprintf("%s: invalid options at line %d", filename, line)) + } + scanner.Scan() + line++ + } + if scanner.Text() != attributeSeparator { + panic(fmt.Sprintf("%s: invalid separator '%s' at line %d", filename, scanner.Text(), line)) + } + buf := []string{} + for scanner.Scan() { + line++ + text := scanner.Text() + if text == attributeSeparator { + break + } + buf = append(buf, text) + } + c.Markdown = strings.Join(buf, "\n") + buf = []string{} + for scanner.Scan() { + line++ + text := scanner.Text() + if text == caseSeparator { + break + } + buf = append(buf, text) + } + c.Expected = strings.Join(buf, "\n") + if len(c.Expected) != 0 { + c.Expected = c.Expected + "\n" + } + shouldAdd := len(no) == 0 + if !shouldAdd { + for _, n := range no { + if n == c.No { + shouldAdd = true + break + } + } + } + if shouldAdd { + cases = append(cases, c) + } + } + DoTestCases(m, cases, t) +} + +// DoTestCases runs a set of test cases. +func DoTestCases(m goldmark.Markdown, cases []MarkdownTestCase, t TestingT, opts ...parser.ParseOption) { + for _, testCase := range cases { + DoTestCase(m, testCase, t, opts...) + } +} + +// DoTestCase runs a test case. +func DoTestCase(m goldmark.Markdown, testCase MarkdownTestCase, t TestingT, opts ...parser.ParseOption) { + var ok bool + var out bytes.Buffer + defer func() { + description := "" + if len(testCase.Description) != 0 { + description = ": " + testCase.Description + } + if err := recover(); err != nil { + format := `============= case %d%s ================ +Markdown: +----------- +%s + +Expected: +---------- +%s + +Actual +--------- +%v +%s +` + t.Errorf(format, testCase.No, description, source(&testCase), expected(&testCase), err, debug.Stack()) + } else if !ok { + format := `============= case %d%s ================ +Markdown: +----------- +%s + +Expected: +---------- +%s + +Actual +--------- +%s + +Diff +--------- +%s +` + t.Errorf(format, testCase.No, description, source(&testCase), expected(&testCase), out.Bytes(), + DiffPretty([]byte(expected(&testCase)), out.Bytes())) + } + }() + + if err := m.Convert([]byte(source(&testCase)), &out, opts...); err != nil { + panic(err) + } + ok = bytes.Equal(bytes.TrimSpace(out.Bytes()), bytes.TrimSpace([]byte(expected(&testCase)))) +} + +type diffType int + +const ( + diffRemoved diffType = iota + diffAdded + diffNone +) + +type diff struct { + Type diffType + Lines [][]byte +} + +func simpleDiff(v1, v2 []byte) []diff { + return simpleDiffAux( + bytes.Split(v1, []byte("\n")), + bytes.Split(v2, []byte("\n"))) +} + +func simpleDiffAux(v1lines, v2lines [][]byte) []diff { + v1index := map[string][]int{} + for i, line := range v1lines { + key := util.BytesToReadOnlyString(line) + if _, ok := v1index[key]; !ok { + v1index[key] = []int{} + } + v1index[key] = append(v1index[key], i) + } + overlap := map[int]int{} + v1start := 0 + v2start := 0 + length := 0 + for v2pos, line := range v2lines { + newOverlap := map[int]int{} + key := util.BytesToReadOnlyString(line) + if _, ok := v1index[key]; !ok { + v1index[key] = []int{} + } + for _, v1pos := range v1index[key] { + value := 0 + if v1pos != 0 { + if v, ok := overlap[v1pos-1]; ok { + value = v + } + } + newOverlap[v1pos] = value + 1 + if newOverlap[v1pos] > length { + length = newOverlap[v1pos] + v1start = v1pos - length + 1 + v2start = v2pos - length + 1 + } + } + overlap = newOverlap + } + if length == 0 { + diffs := []diff{} + if len(v1lines) != 0 { + diffs = append(diffs, diff{diffRemoved, v1lines}) + } + if len(v2lines) != 0 { + diffs = append(diffs, diff{diffAdded, v2lines}) + } + return diffs + } + diffs := simpleDiffAux(v1lines[:v1start], v2lines[:v2start]) + diffs = append(diffs, diff{diffNone, v2lines[v2start : v2start+length]}) + diffs = append(diffs, simpleDiffAux(v1lines[v1start+length:], + v2lines[v2start+length:])...) + return diffs +} + +// DiffPretty returns pretty formatted diff between given bytes. +func DiffPretty(v1, v2 []byte) []byte { + var b bytes.Buffer + diffs := simpleDiff(v1, v2) + for _, diff := range diffs { + c := " " + switch diff.Type { + case diffAdded: + c = "+" + case diffRemoved: + c = "-" + case diffNone: + c = " " + } + for _, line := range diff.Lines { + if c != " " { + b.WriteString(fmt.Sprintf("%s | %s\n", c, util.VisualizeSpaces(line))) + } else { + b.WriteString(fmt.Sprintf("%s | %s\n", c, line)) + } + } + } + return b.Bytes() +} + +func applyEscapeSequence(b []byte) []byte { + result := make([]byte, 0, len(b)) + for i := 0; i < len(b); i++ { + if b[i] == '\\' && i != len(b)-1 { + switch b[i+1] { + case 'a': + result = append(result, '\a') + i++ + continue + case 'b': + result = append(result, '\b') + i++ + continue + case 'f': + result = append(result, '\f') + i++ + continue + case 'n': + result = append(result, '\n') + i++ + continue + case 'r': + result = append(result, '\r') + i++ + continue + case 't': + result = append(result, '\t') + i++ + continue + case 'v': + result = append(result, '\v') + i++ + continue + case '\\': + result = append(result, '\\') + i++ + continue + case 'x': + if len(b) >= i+3 && util.IsHexDecimal(b[i+2]) && util.IsHexDecimal(b[i+3]) { + v, _ := hex.DecodeString(string(b[i+2 : i+4])) + result = append(result, v[0]) + i += 3 + continue + } + case 'u', 'U': + if len(b) > i+2 { + num := []byte{} + for j := i + 2; j < len(b); j++ { + if util.IsHexDecimal(b[j]) { + num = append(num, b[j]) + continue + } + break + } + if len(num) >= 4 && len(num) < 8 { + v, _ := strconv.ParseInt(string(num[:4]), 16, 32) + result = append(result, []byte(string(rune(v)))...) + i += 5 + continue + } + if len(num) >= 8 { + v, _ := strconv.ParseInt(string(num[:8]), 16, 32) + result = append(result, []byte(string(rune(v)))...) + i += 9 + continue + } + } + } + } + result = append(result, b[i]) + } + return result +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/testutil/testutil_test.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/testutil/testutil_test.go new file mode 100644 index 000000000..2000a00d0 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/testutil/testutil_test.go @@ -0,0 +1,7 @@ +package testutil + +import "testing" + +// This will fail to compile if the TestingT interface is changed in a way +// that doesn't conform to testing.T. +var _ TestingT = (*testing.T)(nil) diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/text/reader.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/text/reader.go new file mode 100644 index 000000000..319f1c8b8 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/text/reader.go @@ -0,0 +1,653 @@ +package text + +import ( + "io" + "regexp" + "unicode/utf8" + + "github.com/yuin/goldmark/util" +) + +const invalidValue = -1 + +// EOF indicates the end of file. +const EOF = byte(0xff) + +// A Reader interface provides abstracted method for reading text. +type Reader interface { + io.RuneReader + + // Source returns a source of the reader. + Source() []byte + + // ResetPosition resets positions. + ResetPosition() + + // Peek returns a byte at current position without advancing the internal pointer. + Peek() byte + + // PeekLine returns the current line without advancing the internal pointer. + PeekLine() ([]byte, Segment) + + // PrecendingCharacter returns a character just before current internal pointer. + PrecendingCharacter() rune + + // Value returns a value of the given segment. + Value(Segment) []byte + + // LineOffset returns a distance from the line head to current position. + LineOffset() int + + // Position returns current line number and position. + Position() (int, Segment) + + // SetPosition sets current line number and position. + SetPosition(int, Segment) + + // SetPadding sets padding to the reader. + SetPadding(int) + + // Advance advances the internal pointer. + Advance(int) + + // AdvanceAndSetPadding advances the internal pointer and add padding to the + // reader. + AdvanceAndSetPadding(int, int) + + // AdvanceLine advances the internal pointer to the next line head. + AdvanceLine() + + // SkipSpaces skips space characters and returns a non-blank line. + // If it reaches EOF, returns false. + SkipSpaces() (Segment, int, bool) + + // SkipSpaces skips blank lines and returns a non-blank line. + // If it reaches EOF, returns false. + SkipBlankLines() (Segment, int, bool) + + // Match performs regular expression matching to current line. + Match(reg *regexp.Regexp) bool + + // Match performs regular expression searching to current line. + FindSubMatch(reg *regexp.Regexp) [][]byte + + // FindClosure finds corresponding closure. + FindClosure(opener, closer byte, options FindClosureOptions) (*Segments, bool) +} + +// FindClosureOptions is options for Reader.FindClosure +type FindClosureOptions struct { + // CodeSpan is a flag for the FindClosure. If this is set to true, + // FindClosure ignores closers in codespans. + CodeSpan bool + + // Nesting is a flag for the FindClosure. If this is set to true, + // FindClosure allows nesting. + Nesting bool + + // Newline is a flag for the FindClosure. If this is set to true, + // FindClosure searches for a closer over multiple lines. + Newline bool + + // Advance is a flag for the FindClosure. If this is set to true, + // FindClosure advances pointers when closer is found. + Advance bool +} + +type reader struct { + source []byte + sourceLength int + line int + peekedLine []byte + pos Segment + head int + lineOffset int +} + +// NewReader return a new Reader that can read UTF-8 bytes . +func NewReader(source []byte) Reader { + r := &reader{ + source: source, + sourceLength: len(source), + } + r.ResetPosition() + return r +} + +func (r *reader) FindClosure(opener, closer byte, options FindClosureOptions) (*Segments, bool) { + return findClosureReader(r, opener, closer, options) +} + +func (r *reader) ResetPosition() { + r.line = -1 + r.head = 0 + r.lineOffset = -1 + r.AdvanceLine() +} + +func (r *reader) Source() []byte { + return r.source +} + +func (r *reader) Value(seg Segment) []byte { + return seg.Value(r.source) +} + +func (r *reader) Peek() byte { + if r.pos.Start >= 0 && r.pos.Start < r.sourceLength { + if r.pos.Padding != 0 { + return space[0] + } + return r.source[r.pos.Start] + } + return EOF +} + +func (r *reader) PeekLine() ([]byte, Segment) { + if r.pos.Start >= 0 && r.pos.Start < r.sourceLength { + if r.peekedLine == nil { + r.peekedLine = r.pos.Value(r.Source()) + } + return r.peekedLine, r.pos + } + return nil, r.pos +} + +// io.RuneReader interface +func (r *reader) ReadRune() (rune, int, error) { + return readRuneReader(r) +} + +func (r *reader) LineOffset() int { + if r.lineOffset < 0 { + v := 0 + for i := r.head; i < r.pos.Start; i++ { + if r.source[i] == '\t' { + v += util.TabWidth(v) + } else { + v++ + } + } + r.lineOffset = v - r.pos.Padding + } + return r.lineOffset +} + +func (r *reader) PrecendingCharacter() rune { + if r.pos.Start <= 0 { + if r.pos.Padding != 0 { + return rune(' ') + } + return rune('\n') + } + i := r.pos.Start - 1 + for ; i >= 0; i-- { + if utf8.RuneStart(r.source[i]) { + break + } + } + rn, _ := utf8.DecodeRune(r.source[i:]) + return rn +} + +func (r *reader) Advance(n int) { + r.lineOffset = -1 + if n < len(r.peekedLine) && r.pos.Padding == 0 { + r.pos.Start += n + r.peekedLine = nil + return + } + r.peekedLine = nil + l := r.sourceLength + for ; n > 0 && r.pos.Start < l; n-- { + if r.pos.Padding != 0 { + r.pos.Padding-- + continue + } + if r.source[r.pos.Start] == '\n' { + r.AdvanceLine() + continue + } + r.pos.Start++ + } +} + +func (r *reader) AdvanceAndSetPadding(n, padding int) { + r.Advance(n) + if padding > r.pos.Padding { + r.SetPadding(padding) + } +} + +func (r *reader) AdvanceLine() { + r.lineOffset = -1 + r.peekedLine = nil + r.pos.Start = r.pos.Stop + r.head = r.pos.Start + if r.pos.Start < 0 { + return + } + r.pos.Stop = r.sourceLength + for i := r.pos.Start; i < r.sourceLength; i++ { + c := r.source[i] + if c == '\n' { + r.pos.Stop = i + 1 + break + } + } + r.line++ + r.pos.Padding = 0 +} + +func (r *reader) Position() (int, Segment) { + return r.line, r.pos +} + +func (r *reader) SetPosition(line int, pos Segment) { + r.lineOffset = -1 + r.line = line + r.pos = pos +} + +func (r *reader) SetPadding(v int) { + r.pos.Padding = v +} + +func (r *reader) SkipSpaces() (Segment, int, bool) { + return skipSpacesReader(r) +} + +func (r *reader) SkipBlankLines() (Segment, int, bool) { + return skipBlankLinesReader(r) +} + +func (r *reader) Match(reg *regexp.Regexp) bool { + return matchReader(r, reg) +} + +func (r *reader) FindSubMatch(reg *regexp.Regexp) [][]byte { + return findSubMatchReader(r, reg) +} + +// A BlockReader interface is a reader that is optimized for Blocks. +type BlockReader interface { + Reader + // Reset resets current state and sets new segments to the reader. + Reset(segment *Segments) +} + +type blockReader struct { + source []byte + segments *Segments + segmentsLength int + line int + pos Segment + head int + last int + lineOffset int +} + +// NewBlockReader returns a new BlockReader. +func NewBlockReader(source []byte, segments *Segments) BlockReader { + r := &blockReader{ + source: source, + } + if segments != nil { + r.Reset(segments) + } + return r +} + +func (r *blockReader) FindClosure(opener, closer byte, options FindClosureOptions) (*Segments, bool) { + return findClosureReader(r, opener, closer, options) +} + +func (r *blockReader) ResetPosition() { + r.line = -1 + r.head = 0 + r.last = 0 + r.lineOffset = -1 + r.pos.Start = -1 + r.pos.Stop = -1 + r.pos.Padding = 0 + if r.segmentsLength > 0 { + last := r.segments.At(r.segmentsLength - 1) + r.last = last.Stop + } + r.AdvanceLine() +} + +func (r *blockReader) Reset(segments *Segments) { + r.segments = segments + r.segmentsLength = segments.Len() + r.ResetPosition() +} + +func (r *blockReader) Source() []byte { + return r.source +} + +func (r *blockReader) Value(seg Segment) []byte { + line := r.segmentsLength - 1 + ret := make([]byte, 0, seg.Stop-seg.Start+1) + for ; line >= 0; line-- { + if seg.Start >= r.segments.At(line).Start { + break + } + } + i := seg.Start + for ; line < r.segmentsLength; line++ { + s := r.segments.At(line) + if i < 0 { + i = s.Start + } + ret = s.ConcatPadding(ret) + for ; i < seg.Stop && i < s.Stop; i++ { + ret = append(ret, r.source[i]) + } + i = -1 + if s.Stop > seg.Stop { + break + } + } + return ret +} + +// io.RuneReader interface +func (r *blockReader) ReadRune() (rune, int, error) { + return readRuneReader(r) +} + +func (r *blockReader) PrecendingCharacter() rune { + if r.pos.Padding != 0 { + return rune(' ') + } + if r.segments.Len() < 1 { + return rune('\n') + } + firstSegment := r.segments.At(0) + if r.line == 0 && r.pos.Start <= firstSegment.Start { + return rune('\n') + } + l := len(r.source) + i := r.pos.Start - 1 + for ; i < l && i >= 0; i-- { + if utf8.RuneStart(r.source[i]) { + break + } + } + if i < 0 || i >= l { + return rune('\n') + } + rn, _ := utf8.DecodeRune(r.source[i:]) + return rn +} + +func (r *blockReader) LineOffset() int { + if r.lineOffset < 0 { + v := 0 + for i := r.head; i < r.pos.Start; i++ { + if r.source[i] == '\t' { + v += util.TabWidth(v) + } else { + v++ + } + } + r.lineOffset = v - r.pos.Padding + } + return r.lineOffset +} + +func (r *blockReader) Peek() byte { + if r.line < r.segmentsLength && r.pos.Start >= 0 && r.pos.Start < r.last { + if r.pos.Padding != 0 { + return space[0] + } + return r.source[r.pos.Start] + } + return EOF +} + +func (r *blockReader) PeekLine() ([]byte, Segment) { + if r.line < r.segmentsLength && r.pos.Start >= 0 && r.pos.Start < r.last { + return r.pos.Value(r.source), r.pos + } + return nil, r.pos +} + +func (r *blockReader) Advance(n int) { + r.lineOffset = -1 + + if n < r.pos.Stop-r.pos.Start && r.pos.Padding == 0 { + r.pos.Start += n + return + } + + for ; n > 0; n-- { + if r.pos.Padding != 0 { + r.pos.Padding-- + continue + } + if r.pos.Start >= r.pos.Stop-1 && r.pos.Stop < r.last { + r.AdvanceLine() + continue + } + r.pos.Start++ + } +} + +func (r *blockReader) AdvanceAndSetPadding(n, padding int) { + r.Advance(n) + if padding > r.pos.Padding { + r.SetPadding(padding) + } +} + +func (r *blockReader) AdvanceLine() { + r.SetPosition(r.line+1, NewSegment(invalidValue, invalidValue)) + r.head = r.pos.Start +} + +func (r *blockReader) Position() (int, Segment) { + return r.line, r.pos +} + +func (r *blockReader) SetPosition(line int, pos Segment) { + r.lineOffset = -1 + r.line = line + if pos.Start == invalidValue { + if r.line < r.segmentsLength { + s := r.segments.At(line) + r.head = s.Start + r.pos = s + } + } else { + r.pos = pos + if r.line < r.segmentsLength { + s := r.segments.At(line) + r.head = s.Start + } + } +} + +func (r *blockReader) SetPadding(v int) { + r.lineOffset = -1 + r.pos.Padding = v +} + +func (r *blockReader) SkipSpaces() (Segment, int, bool) { + return skipSpacesReader(r) +} + +func (r *blockReader) SkipBlankLines() (Segment, int, bool) { + return skipBlankLinesReader(r) +} + +func (r *blockReader) Match(reg *regexp.Regexp) bool { + return matchReader(r, reg) +} + +func (r *blockReader) FindSubMatch(reg *regexp.Regexp) [][]byte { + return findSubMatchReader(r, reg) +} + +func skipBlankLinesReader(r Reader) (Segment, int, bool) { + lines := 0 + for { + line, seg := r.PeekLine() + if line == nil { + return seg, lines, false + } + if util.IsBlank(line) { + lines++ + r.AdvanceLine() + } else { + return seg, lines, true + } + } +} + +func skipSpacesReader(r Reader) (Segment, int, bool) { + chars := 0 + for { + line, segment := r.PeekLine() + if line == nil { + return segment, chars, false + } + for i, c := range line { + if util.IsSpace(c) { + chars++ + r.Advance(1) + continue + } + return segment.WithStart(segment.Start + i + 1), chars, true + } + } +} + +func matchReader(r Reader, reg *regexp.Regexp) bool { + oldline, oldseg := r.Position() + match := reg.FindReaderSubmatchIndex(r) + r.SetPosition(oldline, oldseg) + if match == nil { + return false + } + r.Advance(match[1] - match[0]) + return true +} + +func findSubMatchReader(r Reader, reg *regexp.Regexp) [][]byte { + oldline, oldseg := r.Position() + match := reg.FindReaderSubmatchIndex(r) + r.SetPosition(oldline, oldseg) + if match == nil { + return nil + } + runes := make([]rune, 0, match[1]-match[0]) + for i := 0; i < match[1]; { + r, size, _ := readRuneReader(r) + i += size + runes = append(runes, r) + } + result := [][]byte{} + for i := 0; i < len(match); i += 2 { + result = append(result, []byte(string(runes[match[i]:match[i+1]]))) + } + + r.SetPosition(oldline, oldseg) + r.Advance(match[1] - match[0]) + return result +} + +func readRuneReader(r Reader) (rune, int, error) { + line, _ := r.PeekLine() + if line == nil { + return 0, 0, io.EOF + } + rn, size := utf8.DecodeRune(line) + if rn == utf8.RuneError { + return 0, 0, io.EOF + } + r.Advance(size) + return rn, size, nil +} + +func findClosureReader(r Reader, opener, closer byte, opts FindClosureOptions) (*Segments, bool) { + opened := 1 + codeSpanOpener := 0 + closed := false + orgline, orgpos := r.Position() + var ret *Segments + + for { + bs, seg := r.PeekLine() + if bs == nil { + goto end + } + i := 0 + for i < len(bs) { + c := bs[i] + if opts.CodeSpan && codeSpanOpener != 0 && c == '`' { + codeSpanCloser := 0 + for ; i < len(bs); i++ { + if bs[i] == '`' { + codeSpanCloser++ + } else { + i-- + break + } + } + if codeSpanCloser == codeSpanOpener { + codeSpanOpener = 0 + } + } else if codeSpanOpener == 0 && c == '\\' && i < len(bs)-1 && util.IsPunct(bs[i+1]) { + i += 2 + continue + } else if opts.CodeSpan && codeSpanOpener == 0 && c == '`' { + for ; i < len(bs); i++ { + if bs[i] == '`' { + codeSpanOpener++ + } else { + i-- + break + } + } + } else if (opts.CodeSpan && codeSpanOpener == 0) || !opts.CodeSpan { + if c == closer { + opened-- + if opened == 0 { + if ret == nil { + ret = NewSegments() + } + ret.Append(seg.WithStop(seg.Start + i)) + r.Advance(i + 1) + closed = true + goto end + } + } else if c == opener { + if !opts.Nesting { + goto end + } + opened++ + } + } + i++ + } + if !opts.Newline { + goto end + } + r.AdvanceLine() + if ret == nil { + ret = NewSegments() + } + ret.Append(seg) + } +end: + if !opts.Advance { + r.SetPosition(orgline, orgpos) + } + if closed { + return ret, true + } + return nil, false +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/text/segment.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/text/segment.go new file mode 100644 index 000000000..badd4bc8e --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/text/segment.go @@ -0,0 +1,209 @@ +package text + +import ( + "bytes" + "github.com/yuin/goldmark/util" +) + +var space = []byte(" ") + +// A Segment struct holds information about source positions. +type Segment struct { + // Start is a start position of the segment. + Start int + + // Stop is a stop position of the segment. + // This value should be excluded. + Stop int + + // Padding is a padding length of the segment. + Padding int +} + +// NewSegment return a new Segment. +func NewSegment(start, stop int) Segment { + return Segment{ + Start: start, + Stop: stop, + Padding: 0, + } +} + +// NewSegmentPadding returns a new Segment with the given padding. +func NewSegmentPadding(start, stop, n int) Segment { + return Segment{ + Start: start, + Stop: stop, + Padding: n, + } +} + +// Value returns a value of the segment. +func (t *Segment) Value(buffer []byte) []byte { + if t.Padding == 0 { + return buffer[t.Start:t.Stop] + } + result := make([]byte, 0, t.Padding+t.Stop-t.Start+1) + result = append(result, bytes.Repeat(space, t.Padding)...) + return append(result, buffer[t.Start:t.Stop]...) +} + +// Len returns a length of the segment. +func (t *Segment) Len() int { + return t.Stop - t.Start + t.Padding +} + +// Between returns a segment between this segment and the given segment. +func (t *Segment) Between(other Segment) Segment { + if t.Stop != other.Stop { + panic("invalid state") + } + return NewSegmentPadding( + t.Start, + other.Start, + t.Padding-other.Padding, + ) +} + +// IsEmpty returns true if this segment is empty, otherwise false. +func (t *Segment) IsEmpty() bool { + return t.Start >= t.Stop && t.Padding == 0 +} + +// TrimRightSpace returns a new segment by slicing off all trailing +// space characters. +func (t *Segment) TrimRightSpace(buffer []byte) Segment { + v := buffer[t.Start:t.Stop] + l := util.TrimRightSpaceLength(v) + if l == len(v) { + return NewSegment(t.Start, t.Start) + } + return NewSegmentPadding(t.Start, t.Stop-l, t.Padding) +} + +// TrimLeftSpace returns a new segment by slicing off all leading +// space characters including padding. +func (t *Segment) TrimLeftSpace(buffer []byte) Segment { + v := buffer[t.Start:t.Stop] + l := util.TrimLeftSpaceLength(v) + return NewSegment(t.Start+l, t.Stop) +} + +// TrimLeftSpaceWidth returns a new segment by slicing off leading space +// characters until the given width. +func (t *Segment) TrimLeftSpaceWidth(width int, buffer []byte) Segment { + padding := t.Padding + for ; width > 0; width-- { + if padding == 0 { + break + } + padding-- + } + if width == 0 { + return NewSegmentPadding(t.Start, t.Stop, padding) + } + text := buffer[t.Start:t.Stop] + start := t.Start + for _, c := range text { + if start >= t.Stop-1 || width <= 0 { + break + } + if c == ' ' { + width-- + } else if c == '\t' { + width -= 4 + } else { + break + } + start++ + } + if width < 0 { + padding = width * -1 + } + return NewSegmentPadding(start, t.Stop, padding) +} + +// WithStart returns a new Segment with same value except Start. +func (t *Segment) WithStart(v int) Segment { + return NewSegmentPadding(v, t.Stop, t.Padding) +} + +// WithStop returns a new Segment with same value except Stop. +func (t *Segment) WithStop(v int) Segment { + return NewSegmentPadding(t.Start, v, t.Padding) +} + +// ConcatPadding concats the padding to the given slice. +func (t *Segment) ConcatPadding(v []byte) []byte { + if t.Padding > 0 { + return append(v, bytes.Repeat(space, t.Padding)...) + } + return v +} + +// Segments is a collection of the Segment. +type Segments struct { + values []Segment +} + +// NewSegments return a new Segments. +func NewSegments() *Segments { + return &Segments{ + values: nil, + } +} + +// Append appends the given segment after the tail of the collection. +func (s *Segments) Append(t Segment) { + if s.values == nil { + s.values = make([]Segment, 0, 20) + } + s.values = append(s.values, t) +} + +// AppendAll appends all elements of given segments after the tail of the collection. +func (s *Segments) AppendAll(t []Segment) { + if s.values == nil { + s.values = make([]Segment, 0, 20) + } + s.values = append(s.values, t...) +} + +// Len returns the length of the collection. +func (s *Segments) Len() int { + if s.values == nil { + return 0 + } + return len(s.values) +} + +// At returns a segment at the given index. +func (s *Segments) At(i int) Segment { + return s.values[i] +} + +// Set sets the given Segment. +func (s *Segments) Set(i int, v Segment) { + s.values[i] = v +} + +// SetSliced replace the collection with a subsliced value. +func (s *Segments) SetSliced(lo, hi int) { + s.values = s.values[lo:hi] +} + +// Sliced returns a subslice of the collection. +func (s *Segments) Sliced(lo, hi int) []Segment { + return s.values[lo:hi] +} + +// Clear delete all element of the collection. +func (s *Segments) Clear() { + s.values = nil +} + +// Unshift insert the given Segment to head of the collection. +func (s *Segments) Unshift(v Segment) { + s.values = append(s.values[0:1], s.values[0:]...) + s.values[0] = v +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/html5entities.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/html5entities.go new file mode 100644 index 000000000..b8e00a91b --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/html5entities.go @@ -0,0 +1,2142 @@ +package util + +// An HTML5Entity struct represents HTML5 entitites. +type HTML5Entity struct { + Name string + CodePoints []int + Characters []byte +} + +// LookUpHTML5EntityByName returns (an HTML5Entity, true) if an entity named +// given name is found, otherwise (nil, false) +func LookUpHTML5EntityByName(name string) (*HTML5Entity, bool) { + v, ok := html5entities[name] + return v, ok +} + +var html5entities = map[string]*HTML5Entity{ + "AElig": {Name: "AElig", CodePoints: []int{198}, Characters: []byte{0xc3, 0x86}}, + "AMP": {Name: "AMP", CodePoints: []int{38}, Characters: []byte{0x26}}, + "Aacute": {Name: "Aacute", CodePoints: []int{193}, Characters: []byte{0xc3, 0x81}}, + "Acirc": {Name: "Acirc", CodePoints: []int{194}, Characters: []byte{0xc3, 0x82}}, + "Acy": {Name: "Acy", CodePoints: []int{1040}, Characters: []byte{0xd0, 0x90}}, + "Afr": {Name: "Afr", CodePoints: []int{120068}, Characters: []byte{0xf0, 0x9d, 0x94, 0x84}}, + "Agrave": {Name: "Agrave", CodePoints: []int{192}, Characters: []byte{0xc3, 0x80}}, + "Alpha": {Name: "Alpha", CodePoints: []int{913}, Characters: []byte{0xce, 0x91}}, + "Amacr": {Name: "Amacr", CodePoints: []int{256}, Characters: []byte{0xc4, 0x80}}, + "And": {Name: "And", CodePoints: []int{10835}, Characters: []byte{0xe2, 0xa9, 0x93}}, + "Aogon": {Name: "Aogon", CodePoints: []int{260}, Characters: []byte{0xc4, 0x84}}, + "Aopf": {Name: "Aopf", CodePoints: []int{120120}, Characters: []byte{0xf0, 0x9d, 0x94, 0xb8}}, + "ApplyFunction": {Name: "ApplyFunction", CodePoints: []int{8289}, Characters: []byte{0xe2, 0x81, 0xa1}}, + "Aring": {Name: "Aring", CodePoints: []int{197}, Characters: []byte{0xc3, 0x85}}, + "Ascr": {Name: "Ascr", CodePoints: []int{119964}, Characters: []byte{0xf0, 0x9d, 0x92, 0x9c}}, + "Assign": {Name: "Assign", CodePoints: []int{8788}, Characters: []byte{0xe2, 0x89, 0x94}}, + "Atilde": {Name: "Atilde", CodePoints: []int{195}, Characters: []byte{0xc3, 0x83}}, + "Auml": {Name: "Auml", CodePoints: []int{196}, Characters: []byte{0xc3, 0x84}}, + "Backslash": {Name: "Backslash", CodePoints: []int{8726}, Characters: []byte{0xe2, 0x88, 0x96}}, + "Barv": {Name: "Barv", CodePoints: []int{10983}, Characters: []byte{0xe2, 0xab, 0xa7}}, + "Barwed": {Name: "Barwed", CodePoints: []int{8966}, Characters: []byte{0xe2, 0x8c, 0x86}}, + "Bcy": {Name: "Bcy", CodePoints: []int{1041}, Characters: []byte{0xd0, 0x91}}, + "Because": {Name: "Because", CodePoints: []int{8757}, Characters: []byte{0xe2, 0x88, 0xb5}}, + "Bernoullis": {Name: "Bernoullis", CodePoints: []int{8492}, Characters: []byte{0xe2, 0x84, 0xac}}, + "Beta": {Name: "Beta", CodePoints: []int{914}, Characters: []byte{0xce, 0x92}}, + "Bfr": {Name: "Bfr", CodePoints: []int{120069}, Characters: []byte{0xf0, 0x9d, 0x94, 0x85}}, + "Bopf": {Name: "Bopf", CodePoints: []int{120121}, Characters: []byte{0xf0, 0x9d, 0x94, 0xb9}}, + "Breve": {Name: "Breve", CodePoints: []int{728}, Characters: []byte{0xcb, 0x98}}, + "Bscr": {Name: "Bscr", CodePoints: []int{8492}, Characters: []byte{0xe2, 0x84, 0xac}}, + "Bumpeq": {Name: "Bumpeq", CodePoints: []int{8782}, Characters: []byte{0xe2, 0x89, 0x8e}}, + "CHcy": {Name: "CHcy", CodePoints: []int{1063}, Characters: []byte{0xd0, 0xa7}}, + "COPY": {Name: "COPY", CodePoints: []int{169}, Characters: []byte{0xc2, 0xa9}}, + "Cacute": {Name: "Cacute", CodePoints: []int{262}, Characters: []byte{0xc4, 0x86}}, + "Cap": {Name: "Cap", CodePoints: []int{8914}, Characters: []byte{0xe2, 0x8b, 0x92}}, + "CapitalDifferentialD": {Name: "CapitalDifferentialD", CodePoints: []int{8517}, Characters: []byte{0xe2, 0x85, 0x85}}, + "Cayleys": {Name: "Cayleys", CodePoints: []int{8493}, Characters: []byte{0xe2, 0x84, 0xad}}, + "Ccaron": {Name: "Ccaron", CodePoints: []int{268}, Characters: []byte{0xc4, 0x8c}}, + "Ccedil": {Name: "Ccedil", CodePoints: []int{199}, Characters: []byte{0xc3, 0x87}}, + "Ccirc": {Name: "Ccirc", CodePoints: []int{264}, Characters: []byte{0xc4, 0x88}}, + "Cconint": {Name: "Cconint", CodePoints: []int{8752}, Characters: []byte{0xe2, 0x88, 0xb0}}, + "Cdot": {Name: "Cdot", CodePoints: []int{266}, Characters: []byte{0xc4, 0x8a}}, + "Cedilla": {Name: "Cedilla", CodePoints: []int{184}, Characters: []byte{0xc2, 0xb8}}, + "CenterDot": {Name: "CenterDot", CodePoints: []int{183}, Characters: []byte{0xc2, 0xb7}}, + "Cfr": {Name: "Cfr", CodePoints: []int{8493}, Characters: []byte{0xe2, 0x84, 0xad}}, + "Chi": {Name: "Chi", CodePoints: []int{935}, Characters: []byte{0xce, 0xa7}}, + "CircleDot": {Name: "CircleDot", CodePoints: []int{8857}, Characters: []byte{0xe2, 0x8a, 0x99}}, + "CircleMinus": {Name: "CircleMinus", CodePoints: []int{8854}, Characters: []byte{0xe2, 0x8a, 0x96}}, + "CirclePlus": {Name: "CirclePlus", CodePoints: []int{8853}, Characters: []byte{0xe2, 0x8a, 0x95}}, + "CircleTimes": {Name: "CircleTimes", CodePoints: []int{8855}, Characters: []byte{0xe2, 0x8a, 0x97}}, + "ClockwiseContourIntegral": {Name: "ClockwiseContourIntegral", CodePoints: []int{8754}, Characters: []byte{0xe2, 0x88, 0xb2}}, + "CloseCurlyDoubleQuote": {Name: "CloseCurlyDoubleQuote", CodePoints: []int{8221}, Characters: []byte{0xe2, 0x80, 0x9d}}, + "CloseCurlyQuote": {Name: "CloseCurlyQuote", CodePoints: []int{8217}, Characters: []byte{0xe2, 0x80, 0x99}}, + "Colon": {Name: "Colon", CodePoints: []int{8759}, Characters: []byte{0xe2, 0x88, 0xb7}}, + "Colone": {Name: "Colone", CodePoints: []int{10868}, Characters: []byte{0xe2, 0xa9, 0xb4}}, + "Congruent": {Name: "Congruent", CodePoints: []int{8801}, Characters: []byte{0xe2, 0x89, 0xa1}}, + "Conint": {Name: "Conint", CodePoints: []int{8751}, Characters: []byte{0xe2, 0x88, 0xaf}}, + "ContourIntegral": {Name: "ContourIntegral", CodePoints: []int{8750}, Characters: []byte{0xe2, 0x88, 0xae}}, + "Copf": {Name: "Copf", CodePoints: []int{8450}, Characters: []byte{0xe2, 0x84, 0x82}}, + "Coproduct": {Name: "Coproduct", CodePoints: []int{8720}, Characters: []byte{0xe2, 0x88, 0x90}}, + "CounterClockwiseContourIntegral": {Name: "CounterClockwiseContourIntegral", CodePoints: []int{8755}, Characters: []byte{0xe2, 0x88, 0xb3}}, + "Cross": {Name: "Cross", CodePoints: []int{10799}, Characters: []byte{0xe2, 0xa8, 0xaf}}, + "Cscr": {Name: "Cscr", CodePoints: []int{119966}, Characters: []byte{0xf0, 0x9d, 0x92, 0x9e}}, + "Cup": {Name: "Cup", CodePoints: []int{8915}, Characters: []byte{0xe2, 0x8b, 0x93}}, + "CupCap": {Name: "CupCap", CodePoints: []int{8781}, Characters: []byte{0xe2, 0x89, 0x8d}}, + "DD": {Name: "DD", CodePoints: []int{8517}, Characters: []byte{0xe2, 0x85, 0x85}}, + "DDotrahd": {Name: "DDotrahd", CodePoints: []int{10513}, Characters: []byte{0xe2, 0xa4, 0x91}}, + "DJcy": {Name: "DJcy", CodePoints: []int{1026}, Characters: []byte{0xd0, 0x82}}, + "DScy": {Name: "DScy", CodePoints: []int{1029}, Characters: []byte{0xd0, 0x85}}, + "DZcy": {Name: "DZcy", CodePoints: []int{1039}, Characters: []byte{0xd0, 0x8f}}, + "Dagger": {Name: "Dagger", CodePoints: []int{8225}, Characters: []byte{0xe2, 0x80, 0xa1}}, + "Darr": {Name: "Darr", CodePoints: []int{8609}, Characters: []byte{0xe2, 0x86, 0xa1}}, + "Dashv": {Name: "Dashv", CodePoints: []int{10980}, Characters: []byte{0xe2, 0xab, 0xa4}}, + "Dcaron": {Name: "Dcaron", CodePoints: []int{270}, Characters: []byte{0xc4, 0x8e}}, + "Dcy": {Name: "Dcy", CodePoints: []int{1044}, Characters: []byte{0xd0, 0x94}}, + "Del": {Name: "Del", CodePoints: []int{8711}, Characters: []byte{0xe2, 0x88, 0x87}}, + "Delta": {Name: "Delta", CodePoints: []int{916}, Characters: []byte{0xce, 0x94}}, + "Dfr": {Name: "Dfr", CodePoints: []int{120071}, Characters: []byte{0xf0, 0x9d, 0x94, 0x87}}, + "DiacriticalAcute": {Name: "DiacriticalAcute", CodePoints: []int{180}, Characters: []byte{0xc2, 0xb4}}, + "DiacriticalDot": {Name: "DiacriticalDot", CodePoints: []int{729}, Characters: []byte{0xcb, 0x99}}, + "DiacriticalDoubleAcute": {Name: "DiacriticalDoubleAcute", CodePoints: []int{733}, Characters: []byte{0xcb, 0x9d}}, + "DiacriticalGrave": {Name: "DiacriticalGrave", CodePoints: []int{96}, Characters: []byte{0x60}}, + "DiacriticalTilde": {Name: "DiacriticalTilde", CodePoints: []int{732}, Characters: []byte{0xcb, 0x9c}}, + "Diamond": {Name: "Diamond", CodePoints: []int{8900}, Characters: []byte{0xe2, 0x8b, 0x84}}, + "DifferentialD": {Name: "DifferentialD", CodePoints: []int{8518}, Characters: []byte{0xe2, 0x85, 0x86}}, + "Dopf": {Name: "Dopf", CodePoints: []int{120123}, Characters: []byte{0xf0, 0x9d, 0x94, 0xbb}}, + "Dot": {Name: "Dot", CodePoints: []int{168}, Characters: []byte{0xc2, 0xa8}}, + "DotDot": {Name: "DotDot", CodePoints: []int{8412}, Characters: []byte{0xe2, 0x83, 0x9c}}, + "DotEqual": {Name: "DotEqual", CodePoints: []int{8784}, Characters: []byte{0xe2, 0x89, 0x90}}, + "DoubleContourIntegral": {Name: "DoubleContourIntegral", CodePoints: []int{8751}, Characters: []byte{0xe2, 0x88, 0xaf}}, + "DoubleDot": {Name: "DoubleDot", CodePoints: []int{168}, Characters: []byte{0xc2, 0xa8}}, + "DoubleDownArrow": {Name: "DoubleDownArrow", CodePoints: []int{8659}, Characters: []byte{0xe2, 0x87, 0x93}}, + "DoubleLeftArrow": {Name: "DoubleLeftArrow", CodePoints: []int{8656}, Characters: []byte{0xe2, 0x87, 0x90}}, + "DoubleLeftRightArrow": {Name: "DoubleLeftRightArrow", CodePoints: []int{8660}, Characters: []byte{0xe2, 0x87, 0x94}}, + "DoubleLeftTee": {Name: "DoubleLeftTee", CodePoints: []int{10980}, Characters: []byte{0xe2, 0xab, 0xa4}}, + "DoubleLongLeftArrow": {Name: "DoubleLongLeftArrow", CodePoints: []int{10232}, Characters: []byte{0xe2, 0x9f, 0xb8}}, + "DoubleLongLeftRightArrow": {Name: "DoubleLongLeftRightArrow", CodePoints: []int{10234}, Characters: []byte{0xe2, 0x9f, 0xba}}, + "DoubleLongRightArrow": {Name: "DoubleLongRightArrow", CodePoints: []int{10233}, Characters: []byte{0xe2, 0x9f, 0xb9}}, + "DoubleRightArrow": {Name: "DoubleRightArrow", CodePoints: []int{8658}, Characters: []byte{0xe2, 0x87, 0x92}}, + "DoubleRightTee": {Name: "DoubleRightTee", CodePoints: []int{8872}, Characters: []byte{0xe2, 0x8a, 0xa8}}, + "DoubleUpArrow": {Name: "DoubleUpArrow", CodePoints: []int{8657}, Characters: []byte{0xe2, 0x87, 0x91}}, + "DoubleUpDownArrow": {Name: "DoubleUpDownArrow", CodePoints: []int{8661}, Characters: []byte{0xe2, 0x87, 0x95}}, + "DoubleVerticalBar": {Name: "DoubleVerticalBar", CodePoints: []int{8741}, Characters: []byte{0xe2, 0x88, 0xa5}}, + "DownArrow": {Name: "DownArrow", CodePoints: []int{8595}, Characters: []byte{0xe2, 0x86, 0x93}}, + "DownArrowBar": {Name: "DownArrowBar", CodePoints: []int{10515}, Characters: []byte{0xe2, 0xa4, 0x93}}, + "DownArrowUpArrow": {Name: "DownArrowUpArrow", CodePoints: []int{8693}, Characters: []byte{0xe2, 0x87, 0xb5}}, + "DownBreve": {Name: "DownBreve", CodePoints: []int{785}, Characters: []byte{0xcc, 0x91}}, + "DownLeftRightVector": {Name: "DownLeftRightVector", CodePoints: []int{10576}, Characters: []byte{0xe2, 0xa5, 0x90}}, + "DownLeftTeeVector": {Name: "DownLeftTeeVector", CodePoints: []int{10590}, Characters: []byte{0xe2, 0xa5, 0x9e}}, + "DownLeftVector": {Name: "DownLeftVector", CodePoints: []int{8637}, Characters: []byte{0xe2, 0x86, 0xbd}}, + "DownLeftVectorBar": {Name: "DownLeftVectorBar", CodePoints: []int{10582}, Characters: []byte{0xe2, 0xa5, 0x96}}, + "DownRightTeeVector": {Name: "DownRightTeeVector", CodePoints: []int{10591}, Characters: []byte{0xe2, 0xa5, 0x9f}}, + "DownRightVector": {Name: "DownRightVector", CodePoints: []int{8641}, Characters: []byte{0xe2, 0x87, 0x81}}, + "DownRightVectorBar": {Name: "DownRightVectorBar", CodePoints: []int{10583}, Characters: []byte{0xe2, 0xa5, 0x97}}, + "DownTee": {Name: "DownTee", CodePoints: []int{8868}, Characters: []byte{0xe2, 0x8a, 0xa4}}, + "DownTeeArrow": {Name: "DownTeeArrow", CodePoints: []int{8615}, Characters: []byte{0xe2, 0x86, 0xa7}}, + "Downarrow": {Name: "Downarrow", CodePoints: []int{8659}, Characters: []byte{0xe2, 0x87, 0x93}}, + "Dscr": {Name: "Dscr", CodePoints: []int{119967}, Characters: []byte{0xf0, 0x9d, 0x92, 0x9f}}, + "Dstrok": {Name: "Dstrok", CodePoints: []int{272}, Characters: []byte{0xc4, 0x90}}, + "ENG": {Name: "ENG", CodePoints: []int{330}, Characters: []byte{0xc5, 0x8a}}, + "ETH": {Name: "ETH", CodePoints: []int{208}, Characters: []byte{0xc3, 0x90}}, + "Eacute": {Name: "Eacute", CodePoints: []int{201}, Characters: []byte{0xc3, 0x89}}, + "Ecaron": {Name: "Ecaron", CodePoints: []int{282}, Characters: []byte{0xc4, 0x9a}}, + "Ecirc": {Name: "Ecirc", CodePoints: []int{202}, Characters: []byte{0xc3, 0x8a}}, + "Ecy": {Name: "Ecy", CodePoints: []int{1069}, Characters: []byte{0xd0, 0xad}}, + "Edot": {Name: "Edot", CodePoints: []int{278}, Characters: []byte{0xc4, 0x96}}, + "Efr": {Name: "Efr", CodePoints: []int{120072}, Characters: []byte{0xf0, 0x9d, 0x94, 0x88}}, + "Egrave": {Name: "Egrave", CodePoints: []int{200}, Characters: []byte{0xc3, 0x88}}, + "Element": {Name: "Element", CodePoints: []int{8712}, Characters: []byte{0xe2, 0x88, 0x88}}, + "Emacr": {Name: "Emacr", CodePoints: []int{274}, Characters: []byte{0xc4, 0x92}}, + "EmptySmallSquare": {Name: "EmptySmallSquare", CodePoints: []int{9723}, Characters: []byte{0xe2, 0x97, 0xbb}}, + "EmptyVerySmallSquare": {Name: "EmptyVerySmallSquare", CodePoints: []int{9643}, Characters: []byte{0xe2, 0x96, 0xab}}, + "Eogon": {Name: "Eogon", CodePoints: []int{280}, Characters: []byte{0xc4, 0x98}}, + "Eopf": {Name: "Eopf", CodePoints: []int{120124}, Characters: []byte{0xf0, 0x9d, 0x94, 0xbc}}, + "Epsilon": {Name: "Epsilon", CodePoints: []int{917}, Characters: []byte{0xce, 0x95}}, + "Equal": {Name: "Equal", CodePoints: []int{10869}, Characters: []byte{0xe2, 0xa9, 0xb5}}, + "EqualTilde": {Name: "EqualTilde", CodePoints: []int{8770}, Characters: []byte{0xe2, 0x89, 0x82}}, + "Equilibrium": {Name: "Equilibrium", CodePoints: []int{8652}, Characters: []byte{0xe2, 0x87, 0x8c}}, + "Escr": {Name: "Escr", CodePoints: []int{8496}, Characters: []byte{0xe2, 0x84, 0xb0}}, + "Esim": {Name: "Esim", CodePoints: []int{10867}, Characters: []byte{0xe2, 0xa9, 0xb3}}, + "Eta": {Name: "Eta", CodePoints: []int{919}, Characters: []byte{0xce, 0x97}}, + "Euml": {Name: "Euml", CodePoints: []int{203}, Characters: []byte{0xc3, 0x8b}}, + "Exists": {Name: "Exists", CodePoints: []int{8707}, Characters: []byte{0xe2, 0x88, 0x83}}, + "ExponentialE": {Name: "ExponentialE", CodePoints: []int{8519}, Characters: []byte{0xe2, 0x85, 0x87}}, + "Fcy": {Name: "Fcy", CodePoints: []int{1060}, Characters: []byte{0xd0, 0xa4}}, + "Ffr": {Name: "Ffr", CodePoints: []int{120073}, Characters: []byte{0xf0, 0x9d, 0x94, 0x89}}, + "FilledSmallSquare": {Name: "FilledSmallSquare", CodePoints: []int{9724}, Characters: []byte{0xe2, 0x97, 0xbc}}, + "FilledVerySmallSquare": {Name: "FilledVerySmallSquare", CodePoints: []int{9642}, Characters: []byte{0xe2, 0x96, 0xaa}}, + "Fopf": {Name: "Fopf", CodePoints: []int{120125}, Characters: []byte{0xf0, 0x9d, 0x94, 0xbd}}, + "ForAll": {Name: "ForAll", CodePoints: []int{8704}, Characters: []byte{0xe2, 0x88, 0x80}}, + "Fouriertrf": {Name: "Fouriertrf", CodePoints: []int{8497}, Characters: []byte{0xe2, 0x84, 0xb1}}, + "Fscr": {Name: "Fscr", CodePoints: []int{8497}, Characters: []byte{0xe2, 0x84, 0xb1}}, + "GJcy": {Name: "GJcy", CodePoints: []int{1027}, Characters: []byte{0xd0, 0x83}}, + "GT": {Name: "GT", CodePoints: []int{62}, Characters: []byte{0x3e}}, + "Gamma": {Name: "Gamma", CodePoints: []int{915}, Characters: []byte{0xce, 0x93}}, + "Gammad": {Name: "Gammad", CodePoints: []int{988}, Characters: []byte{0xcf, 0x9c}}, + "Gbreve": {Name: "Gbreve", CodePoints: []int{286}, Characters: []byte{0xc4, 0x9e}}, + "Gcedil": {Name: "Gcedil", CodePoints: []int{290}, Characters: []byte{0xc4, 0xa2}}, + "Gcirc": {Name: "Gcirc", CodePoints: []int{284}, Characters: []byte{0xc4, 0x9c}}, + "Gcy": {Name: "Gcy", CodePoints: []int{1043}, Characters: []byte{0xd0, 0x93}}, + "Gdot": {Name: "Gdot", CodePoints: []int{288}, Characters: []byte{0xc4, 0xa0}}, + "Gfr": {Name: "Gfr", CodePoints: []int{120074}, Characters: []byte{0xf0, 0x9d, 0x94, 0x8a}}, + "Gg": {Name: "Gg", CodePoints: []int{8921}, Characters: []byte{0xe2, 0x8b, 0x99}}, + "Gopf": {Name: "Gopf", CodePoints: []int{120126}, Characters: []byte{0xf0, 0x9d, 0x94, 0xbe}}, + "GreaterEqual": {Name: "GreaterEqual", CodePoints: []int{8805}, Characters: []byte{0xe2, 0x89, 0xa5}}, + "GreaterEqualLess": {Name: "GreaterEqualLess", CodePoints: []int{8923}, Characters: []byte{0xe2, 0x8b, 0x9b}}, + "GreaterFullEqual": {Name: "GreaterFullEqual", CodePoints: []int{8807}, Characters: []byte{0xe2, 0x89, 0xa7}}, + "GreaterGreater": {Name: "GreaterGreater", CodePoints: []int{10914}, Characters: []byte{0xe2, 0xaa, 0xa2}}, + "GreaterLess": {Name: "GreaterLess", CodePoints: []int{8823}, Characters: []byte{0xe2, 0x89, 0xb7}}, + "GreaterSlantEqual": {Name: "GreaterSlantEqual", CodePoints: []int{10878}, Characters: []byte{0xe2, 0xa9, 0xbe}}, + "GreaterTilde": {Name: "GreaterTilde", CodePoints: []int{8819}, Characters: []byte{0xe2, 0x89, 0xb3}}, + "Gscr": {Name: "Gscr", CodePoints: []int{119970}, Characters: []byte{0xf0, 0x9d, 0x92, 0xa2}}, + "Gt": {Name: "Gt", CodePoints: []int{8811}, Characters: []byte{0xe2, 0x89, 0xab}}, + "HARDcy": {Name: "HARDcy", CodePoints: []int{1066}, Characters: []byte{0xd0, 0xaa}}, + "Hacek": {Name: "Hacek", CodePoints: []int{711}, Characters: []byte{0xcb, 0x87}}, + "Hat": {Name: "Hat", CodePoints: []int{94}, Characters: []byte{0x5e}}, + "Hcirc": {Name: "Hcirc", CodePoints: []int{292}, Characters: []byte{0xc4, 0xa4}}, + "Hfr": {Name: "Hfr", CodePoints: []int{8460}, Characters: []byte{0xe2, 0x84, 0x8c}}, + "HilbertSpace": {Name: "HilbertSpace", CodePoints: []int{8459}, Characters: []byte{0xe2, 0x84, 0x8b}}, + "Hopf": {Name: "Hopf", CodePoints: []int{8461}, Characters: []byte{0xe2, 0x84, 0x8d}}, + "HorizontalLine": {Name: "HorizontalLine", CodePoints: []int{9472}, Characters: []byte{0xe2, 0x94, 0x80}}, + "Hscr": {Name: "Hscr", CodePoints: []int{8459}, Characters: []byte{0xe2, 0x84, 0x8b}}, + "Hstrok": {Name: "Hstrok", CodePoints: []int{294}, Characters: []byte{0xc4, 0xa6}}, + "HumpDownHump": {Name: "HumpDownHump", CodePoints: []int{8782}, Characters: []byte{0xe2, 0x89, 0x8e}}, + "HumpEqual": {Name: "HumpEqual", CodePoints: []int{8783}, Characters: []byte{0xe2, 0x89, 0x8f}}, + "IEcy": {Name: "IEcy", CodePoints: []int{1045}, Characters: []byte{0xd0, 0x95}}, + "IJlig": {Name: "IJlig", CodePoints: []int{306}, Characters: []byte{0xc4, 0xb2}}, + "IOcy": {Name: "IOcy", CodePoints: []int{1025}, Characters: []byte{0xd0, 0x81}}, + "Iacute": {Name: "Iacute", CodePoints: []int{205}, Characters: []byte{0xc3, 0x8d}}, + "Icirc": {Name: "Icirc", CodePoints: []int{206}, Characters: []byte{0xc3, 0x8e}}, + "Icy": {Name: "Icy", CodePoints: []int{1048}, Characters: []byte{0xd0, 0x98}}, + "Idot": {Name: "Idot", CodePoints: []int{304}, Characters: []byte{0xc4, 0xb0}}, + "Ifr": {Name: "Ifr", CodePoints: []int{8465}, Characters: []byte{0xe2, 0x84, 0x91}}, + "Igrave": {Name: "Igrave", CodePoints: []int{204}, Characters: []byte{0xc3, 0x8c}}, + "Im": {Name: "Im", CodePoints: []int{8465}, Characters: []byte{0xe2, 0x84, 0x91}}, + "Imacr": {Name: "Imacr", CodePoints: []int{298}, Characters: []byte{0xc4, 0xaa}}, + "ImaginaryI": {Name: "ImaginaryI", CodePoints: []int{8520}, Characters: []byte{0xe2, 0x85, 0x88}}, + "Implies": {Name: "Implies", CodePoints: []int{8658}, Characters: []byte{0xe2, 0x87, 0x92}}, + "Int": {Name: "Int", CodePoints: []int{8748}, Characters: []byte{0xe2, 0x88, 0xac}}, + "Integral": {Name: "Integral", CodePoints: []int{8747}, Characters: []byte{0xe2, 0x88, 0xab}}, + "Intersection": {Name: "Intersection", CodePoints: []int{8898}, Characters: []byte{0xe2, 0x8b, 0x82}}, + "InvisibleComma": {Name: "InvisibleComma", CodePoints: []int{8291}, Characters: []byte{0xe2, 0x81, 0xa3}}, + "InvisibleTimes": {Name: "InvisibleTimes", CodePoints: []int{8290}, Characters: []byte{0xe2, 0x81, 0xa2}}, + "Iogon": {Name: "Iogon", CodePoints: []int{302}, Characters: []byte{0xc4, 0xae}}, + "Iopf": {Name: "Iopf", CodePoints: []int{120128}, Characters: []byte{0xf0, 0x9d, 0x95, 0x80}}, + "Iota": {Name: "Iota", CodePoints: []int{921}, Characters: []byte{0xce, 0x99}}, + "Iscr": {Name: "Iscr", CodePoints: []int{8464}, Characters: []byte{0xe2, 0x84, 0x90}}, + "Itilde": {Name: "Itilde", CodePoints: []int{296}, Characters: []byte{0xc4, 0xa8}}, + "Iukcy": {Name: "Iukcy", CodePoints: []int{1030}, Characters: []byte{0xd0, 0x86}}, + "Iuml": {Name: "Iuml", CodePoints: []int{207}, Characters: []byte{0xc3, 0x8f}}, + "Jcirc": {Name: "Jcirc", CodePoints: []int{308}, Characters: []byte{0xc4, 0xb4}}, + "Jcy": {Name: "Jcy", CodePoints: []int{1049}, Characters: []byte{0xd0, 0x99}}, + "Jfr": {Name: "Jfr", CodePoints: []int{120077}, Characters: []byte{0xf0, 0x9d, 0x94, 0x8d}}, + "Jopf": {Name: "Jopf", CodePoints: []int{120129}, Characters: []byte{0xf0, 0x9d, 0x95, 0x81}}, + "Jscr": {Name: "Jscr", CodePoints: []int{119973}, Characters: []byte{0xf0, 0x9d, 0x92, 0xa5}}, + "Jsercy": {Name: "Jsercy", CodePoints: []int{1032}, Characters: []byte{0xd0, 0x88}}, + "Jukcy": {Name: "Jukcy", CodePoints: []int{1028}, Characters: []byte{0xd0, 0x84}}, + "KHcy": {Name: "KHcy", CodePoints: []int{1061}, Characters: []byte{0xd0, 0xa5}}, + "KJcy": {Name: "KJcy", CodePoints: []int{1036}, Characters: []byte{0xd0, 0x8c}}, + "Kappa": {Name: "Kappa", CodePoints: []int{922}, Characters: []byte{0xce, 0x9a}}, + "Kcedil": {Name: "Kcedil", CodePoints: []int{310}, Characters: []byte{0xc4, 0xb6}}, + "Kcy": {Name: "Kcy", CodePoints: []int{1050}, Characters: []byte{0xd0, 0x9a}}, + "Kfr": {Name: "Kfr", CodePoints: []int{120078}, Characters: []byte{0xf0, 0x9d, 0x94, 0x8e}}, + "Kopf": {Name: "Kopf", CodePoints: []int{120130}, Characters: []byte{0xf0, 0x9d, 0x95, 0x82}}, + "Kscr": {Name: "Kscr", CodePoints: []int{119974}, Characters: []byte{0xf0, 0x9d, 0x92, 0xa6}}, + "LJcy": {Name: "LJcy", CodePoints: []int{1033}, Characters: []byte{0xd0, 0x89}}, + "LT": {Name: "LT", CodePoints: []int{60}, Characters: []byte{0x3c}}, + "Lacute": {Name: "Lacute", CodePoints: []int{313}, Characters: []byte{0xc4, 0xb9}}, + "Lambda": {Name: "Lambda", CodePoints: []int{923}, Characters: []byte{0xce, 0x9b}}, + "Lang": {Name: "Lang", CodePoints: []int{10218}, Characters: []byte{0xe2, 0x9f, 0xaa}}, + "Laplacetrf": {Name: "Laplacetrf", CodePoints: []int{8466}, Characters: []byte{0xe2, 0x84, 0x92}}, + "Larr": {Name: "Larr", CodePoints: []int{8606}, Characters: []byte{0xe2, 0x86, 0x9e}}, + "Lcaron": {Name: "Lcaron", CodePoints: []int{317}, Characters: []byte{0xc4, 0xbd}}, + "Lcedil": {Name: "Lcedil", CodePoints: []int{315}, Characters: []byte{0xc4, 0xbb}}, + "Lcy": {Name: "Lcy", CodePoints: []int{1051}, Characters: []byte{0xd0, 0x9b}}, + "LeftAngleBracket": {Name: "LeftAngleBracket", CodePoints: []int{10216}, Characters: []byte{0xe2, 0x9f, 0xa8}}, + "LeftArrow": {Name: "LeftArrow", CodePoints: []int{8592}, Characters: []byte{0xe2, 0x86, 0x90}}, + "LeftArrowBar": {Name: "LeftArrowBar", CodePoints: []int{8676}, Characters: []byte{0xe2, 0x87, 0xa4}}, + "LeftArrowRightArrow": {Name: "LeftArrowRightArrow", CodePoints: []int{8646}, Characters: []byte{0xe2, 0x87, 0x86}}, + "LeftCeiling": {Name: "LeftCeiling", CodePoints: []int{8968}, Characters: []byte{0xe2, 0x8c, 0x88}}, + "LeftDoubleBracket": {Name: "LeftDoubleBracket", CodePoints: []int{10214}, Characters: []byte{0xe2, 0x9f, 0xa6}}, + "LeftDownTeeVector": {Name: "LeftDownTeeVector", CodePoints: []int{10593}, Characters: []byte{0xe2, 0xa5, 0xa1}}, + "LeftDownVector": {Name: "LeftDownVector", CodePoints: []int{8643}, Characters: []byte{0xe2, 0x87, 0x83}}, + "LeftDownVectorBar": {Name: "LeftDownVectorBar", CodePoints: []int{10585}, Characters: []byte{0xe2, 0xa5, 0x99}}, + "LeftFloor": {Name: "LeftFloor", CodePoints: []int{8970}, Characters: []byte{0xe2, 0x8c, 0x8a}}, + "LeftRightArrow": {Name: "LeftRightArrow", CodePoints: []int{8596}, Characters: []byte{0xe2, 0x86, 0x94}}, + "LeftRightVector": {Name: "LeftRightVector", CodePoints: []int{10574}, Characters: []byte{0xe2, 0xa5, 0x8e}}, + "LeftTee": {Name: "LeftTee", CodePoints: []int{8867}, Characters: []byte{0xe2, 0x8a, 0xa3}}, + "LeftTeeArrow": {Name: "LeftTeeArrow", CodePoints: []int{8612}, Characters: []byte{0xe2, 0x86, 0xa4}}, + "LeftTeeVector": {Name: "LeftTeeVector", CodePoints: []int{10586}, Characters: []byte{0xe2, 0xa5, 0x9a}}, + "LeftTriangle": {Name: "LeftTriangle", CodePoints: []int{8882}, Characters: []byte{0xe2, 0x8a, 0xb2}}, + "LeftTriangleBar": {Name: "LeftTriangleBar", CodePoints: []int{10703}, Characters: []byte{0xe2, 0xa7, 0x8f}}, + "LeftTriangleEqual": {Name: "LeftTriangleEqual", CodePoints: []int{8884}, Characters: []byte{0xe2, 0x8a, 0xb4}}, + "LeftUpDownVector": {Name: "LeftUpDownVector", CodePoints: []int{10577}, Characters: []byte{0xe2, 0xa5, 0x91}}, + "LeftUpTeeVector": {Name: "LeftUpTeeVector", CodePoints: []int{10592}, Characters: []byte{0xe2, 0xa5, 0xa0}}, + "LeftUpVector": {Name: "LeftUpVector", CodePoints: []int{8639}, Characters: []byte{0xe2, 0x86, 0xbf}}, + "LeftUpVectorBar": {Name: "LeftUpVectorBar", CodePoints: []int{10584}, Characters: []byte{0xe2, 0xa5, 0x98}}, + "LeftVector": {Name: "LeftVector", CodePoints: []int{8636}, Characters: []byte{0xe2, 0x86, 0xbc}}, + "LeftVectorBar": {Name: "LeftVectorBar", CodePoints: []int{10578}, Characters: []byte{0xe2, 0xa5, 0x92}}, + "Leftarrow": {Name: "Leftarrow", CodePoints: []int{8656}, Characters: []byte{0xe2, 0x87, 0x90}}, + "Leftrightarrow": {Name: "Leftrightarrow", CodePoints: []int{8660}, Characters: []byte{0xe2, 0x87, 0x94}}, + "LessEqualGreater": {Name: "LessEqualGreater", CodePoints: []int{8922}, Characters: []byte{0xe2, 0x8b, 0x9a}}, + "LessFullEqual": {Name: "LessFullEqual", CodePoints: []int{8806}, Characters: []byte{0xe2, 0x89, 0xa6}}, + "LessGreater": {Name: "LessGreater", CodePoints: []int{8822}, Characters: []byte{0xe2, 0x89, 0xb6}}, + "LessLess": {Name: "LessLess", CodePoints: []int{10913}, Characters: []byte{0xe2, 0xaa, 0xa1}}, + "LessSlantEqual": {Name: "LessSlantEqual", CodePoints: []int{10877}, Characters: []byte{0xe2, 0xa9, 0xbd}}, + "LessTilde": {Name: "LessTilde", CodePoints: []int{8818}, Characters: []byte{0xe2, 0x89, 0xb2}}, + "Lfr": {Name: "Lfr", CodePoints: []int{120079}, Characters: []byte{0xf0, 0x9d, 0x94, 0x8f}}, + "Ll": {Name: "Ll", CodePoints: []int{8920}, Characters: []byte{0xe2, 0x8b, 0x98}}, + "Lleftarrow": {Name: "Lleftarrow", CodePoints: []int{8666}, Characters: []byte{0xe2, 0x87, 0x9a}}, + "Lmidot": {Name: "Lmidot", CodePoints: []int{319}, Characters: []byte{0xc4, 0xbf}}, + "LongLeftArrow": {Name: "LongLeftArrow", CodePoints: []int{10229}, Characters: []byte{0xe2, 0x9f, 0xb5}}, + "LongLeftRightArrow": {Name: "LongLeftRightArrow", CodePoints: []int{10231}, Characters: []byte{0xe2, 0x9f, 0xb7}}, + "LongRightArrow": {Name: "LongRightArrow", CodePoints: []int{10230}, Characters: []byte{0xe2, 0x9f, 0xb6}}, + "Longleftarrow": {Name: "Longleftarrow", CodePoints: []int{10232}, Characters: []byte{0xe2, 0x9f, 0xb8}}, + "Longleftrightarrow": {Name: "Longleftrightarrow", CodePoints: []int{10234}, Characters: []byte{0xe2, 0x9f, 0xba}}, + "Longrightarrow": {Name: "Longrightarrow", CodePoints: []int{10233}, Characters: []byte{0xe2, 0x9f, 0xb9}}, + "Lopf": {Name: "Lopf", CodePoints: []int{120131}, Characters: []byte{0xf0, 0x9d, 0x95, 0x83}}, + "LowerLeftArrow": {Name: "LowerLeftArrow", CodePoints: []int{8601}, Characters: []byte{0xe2, 0x86, 0x99}}, + "LowerRightArrow": {Name: "LowerRightArrow", CodePoints: []int{8600}, Characters: []byte{0xe2, 0x86, 0x98}}, + "Lscr": {Name: "Lscr", CodePoints: []int{8466}, Characters: []byte{0xe2, 0x84, 0x92}}, + "Lsh": {Name: "Lsh", CodePoints: []int{8624}, Characters: []byte{0xe2, 0x86, 0xb0}}, + "Lstrok": {Name: "Lstrok", CodePoints: []int{321}, Characters: []byte{0xc5, 0x81}}, + "Lt": {Name: "Lt", CodePoints: []int{8810}, Characters: []byte{0xe2, 0x89, 0xaa}}, + "Map": {Name: "Map", CodePoints: []int{10501}, Characters: []byte{0xe2, 0xa4, 0x85}}, + "Mcy": {Name: "Mcy", CodePoints: []int{1052}, Characters: []byte{0xd0, 0x9c}}, + "MediumSpace": {Name: "MediumSpace", CodePoints: []int{8287}, Characters: []byte{0xe2, 0x81, 0x9f}}, + "Mellintrf": {Name: "Mellintrf", CodePoints: []int{8499}, Characters: []byte{0xe2, 0x84, 0xb3}}, + "Mfr": {Name: "Mfr", CodePoints: []int{120080}, Characters: []byte{0xf0, 0x9d, 0x94, 0x90}}, + "MinusPlus": {Name: "MinusPlus", CodePoints: []int{8723}, Characters: []byte{0xe2, 0x88, 0x93}}, + "Mopf": {Name: "Mopf", CodePoints: []int{120132}, Characters: []byte{0xf0, 0x9d, 0x95, 0x84}}, + "Mscr": {Name: "Mscr", CodePoints: []int{8499}, Characters: []byte{0xe2, 0x84, 0xb3}}, + "Mu": {Name: "Mu", CodePoints: []int{924}, Characters: []byte{0xce, 0x9c}}, + "NJcy": {Name: "NJcy", CodePoints: []int{1034}, Characters: []byte{0xd0, 0x8a}}, + "Nacute": {Name: "Nacute", CodePoints: []int{323}, Characters: []byte{0xc5, 0x83}}, + "Ncaron": {Name: "Ncaron", CodePoints: []int{327}, Characters: []byte{0xc5, 0x87}}, + "Ncedil": {Name: "Ncedil", CodePoints: []int{325}, Characters: []byte{0xc5, 0x85}}, + "Ncy": {Name: "Ncy", CodePoints: []int{1053}, Characters: []byte{0xd0, 0x9d}}, + "NegativeMediumSpace": {Name: "NegativeMediumSpace", CodePoints: []int{8203}, Characters: []byte{0xe2, 0x80, 0x8b}}, + "NegativeThickSpace": {Name: "NegativeThickSpace", CodePoints: []int{8203}, Characters: []byte{0xe2, 0x80, 0x8b}}, + "NegativeThinSpace": {Name: "NegativeThinSpace", CodePoints: []int{8203}, Characters: []byte{0xe2, 0x80, 0x8b}}, + "NegativeVeryThinSpace": {Name: "NegativeVeryThinSpace", CodePoints: []int{8203}, Characters: []byte{0xe2, 0x80, 0x8b}}, + "NestedGreaterGreater": {Name: "NestedGreaterGreater", CodePoints: []int{8811}, Characters: []byte{0xe2, 0x89, 0xab}}, + "NestedLessLess": {Name: "NestedLessLess", CodePoints: []int{8810}, Characters: []byte{0xe2, 0x89, 0xaa}}, + "NewLine": {Name: "NewLine", CodePoints: []int{10}, Characters: []byte{0xa}}, + "Nfr": {Name: "Nfr", CodePoints: []int{120081}, Characters: []byte{0xf0, 0x9d, 0x94, 0x91}}, + "NoBreak": {Name: "NoBreak", CodePoints: []int{8288}, Characters: []byte{0xe2, 0x81, 0xa0}}, + "NonBreakingSpace": {Name: "NonBreakingSpace", CodePoints: []int{160}, Characters: []byte{0xc2, 0xa0}}, + "Nopf": {Name: "Nopf", CodePoints: []int{8469}, Characters: []byte{0xe2, 0x84, 0x95}}, + "Not": {Name: "Not", CodePoints: []int{10988}, Characters: []byte{0xe2, 0xab, 0xac}}, + "NotCongruent": {Name: "NotCongruent", CodePoints: []int{8802}, Characters: []byte{0xe2, 0x89, 0xa2}}, + "NotCupCap": {Name: "NotCupCap", CodePoints: []int{8813}, Characters: []byte{0xe2, 0x89, 0xad}}, + "NotDoubleVerticalBar": {Name: "NotDoubleVerticalBar", CodePoints: []int{8742}, Characters: []byte{0xe2, 0x88, 0xa6}}, + "NotElement": {Name: "NotElement", CodePoints: []int{8713}, Characters: []byte{0xe2, 0x88, 0x89}}, + "NotEqual": {Name: "NotEqual", CodePoints: []int{8800}, Characters: []byte{0xe2, 0x89, 0xa0}}, + "NotEqualTilde": {Name: "NotEqualTilde", CodePoints: []int{8770, 824}, Characters: []byte{0xe2, 0x89, 0x82, 0xcc, 0xb8}}, + "NotExists": {Name: "NotExists", CodePoints: []int{8708}, Characters: []byte{0xe2, 0x88, 0x84}}, + "NotGreater": {Name: "NotGreater", CodePoints: []int{8815}, Characters: []byte{0xe2, 0x89, 0xaf}}, + "NotGreaterEqual": {Name: "NotGreaterEqual", CodePoints: []int{8817}, Characters: []byte{0xe2, 0x89, 0xb1}}, + "NotGreaterFullEqual": {Name: "NotGreaterFullEqual", CodePoints: []int{8807, 824}, Characters: []byte{0xe2, 0x89, 0xa7, 0xcc, 0xb8}}, + "NotGreaterGreater": {Name: "NotGreaterGreater", CodePoints: []int{8811, 824}, Characters: []byte{0xe2, 0x89, 0xab, 0xcc, 0xb8}}, + "NotGreaterLess": {Name: "NotGreaterLess", CodePoints: []int{8825}, Characters: []byte{0xe2, 0x89, 0xb9}}, + "NotGreaterSlantEqual": {Name: "NotGreaterSlantEqual", CodePoints: []int{10878, 824}, Characters: []byte{0xe2, 0xa9, 0xbe, 0xcc, 0xb8}}, + "NotGreaterTilde": {Name: "NotGreaterTilde", CodePoints: []int{8821}, Characters: []byte{0xe2, 0x89, 0xb5}}, + "NotHumpDownHump": {Name: "NotHumpDownHump", CodePoints: []int{8782, 824}, Characters: []byte{0xe2, 0x89, 0x8e, 0xcc, 0xb8}}, + "NotHumpEqual": {Name: "NotHumpEqual", CodePoints: []int{8783, 824}, Characters: []byte{0xe2, 0x89, 0x8f, 0xcc, 0xb8}}, + "NotLeftTriangle": {Name: "NotLeftTriangle", CodePoints: []int{8938}, Characters: []byte{0xe2, 0x8b, 0xaa}}, + "NotLeftTriangleBar": {Name: "NotLeftTriangleBar", CodePoints: []int{10703, 824}, Characters: []byte{0xe2, 0xa7, 0x8f, 0xcc, 0xb8}}, + "NotLeftTriangleEqual": {Name: "NotLeftTriangleEqual", CodePoints: []int{8940}, Characters: []byte{0xe2, 0x8b, 0xac}}, + "NotLess": {Name: "NotLess", CodePoints: []int{8814}, Characters: []byte{0xe2, 0x89, 0xae}}, + "NotLessEqual": {Name: "NotLessEqual", CodePoints: []int{8816}, Characters: []byte{0xe2, 0x89, 0xb0}}, + "NotLessGreater": {Name: "NotLessGreater", CodePoints: []int{8824}, Characters: []byte{0xe2, 0x89, 0xb8}}, + "NotLessLess": {Name: "NotLessLess", CodePoints: []int{8810, 824}, Characters: []byte{0xe2, 0x89, 0xaa, 0xcc, 0xb8}}, + "NotLessSlantEqual": {Name: "NotLessSlantEqual", CodePoints: []int{10877, 824}, Characters: []byte{0xe2, 0xa9, 0xbd, 0xcc, 0xb8}}, + "NotLessTilde": {Name: "NotLessTilde", CodePoints: []int{8820}, Characters: []byte{0xe2, 0x89, 0xb4}}, + "NotNestedGreaterGreater": {Name: "NotNestedGreaterGreater", CodePoints: []int{10914, 824}, Characters: []byte{0xe2, 0xaa, 0xa2, 0xcc, 0xb8}}, + "NotNestedLessLess": {Name: "NotNestedLessLess", CodePoints: []int{10913, 824}, Characters: []byte{0xe2, 0xaa, 0xa1, 0xcc, 0xb8}}, + "NotPrecedes": {Name: "NotPrecedes", CodePoints: []int{8832}, Characters: []byte{0xe2, 0x8a, 0x80}}, + "NotPrecedesEqual": {Name: "NotPrecedesEqual", CodePoints: []int{10927, 824}, Characters: []byte{0xe2, 0xaa, 0xaf, 0xcc, 0xb8}}, + "NotPrecedesSlantEqual": {Name: "NotPrecedesSlantEqual", CodePoints: []int{8928}, Characters: []byte{0xe2, 0x8b, 0xa0}}, + "NotReverseElement": {Name: "NotReverseElement", CodePoints: []int{8716}, Characters: []byte{0xe2, 0x88, 0x8c}}, + "NotRightTriangle": {Name: "NotRightTriangle", CodePoints: []int{8939}, Characters: []byte{0xe2, 0x8b, 0xab}}, + "NotRightTriangleBar": {Name: "NotRightTriangleBar", CodePoints: []int{10704, 824}, Characters: []byte{0xe2, 0xa7, 0x90, 0xcc, 0xb8}}, + "NotRightTriangleEqual": {Name: "NotRightTriangleEqual", CodePoints: []int{8941}, Characters: []byte{0xe2, 0x8b, 0xad}}, + "NotSquareSubset": {Name: "NotSquareSubset", CodePoints: []int{8847, 824}, Characters: []byte{0xe2, 0x8a, 0x8f, 0xcc, 0xb8}}, + "NotSquareSubsetEqual": {Name: "NotSquareSubsetEqual", CodePoints: []int{8930}, Characters: []byte{0xe2, 0x8b, 0xa2}}, + "NotSquareSuperset": {Name: "NotSquareSuperset", CodePoints: []int{8848, 824}, Characters: []byte{0xe2, 0x8a, 0x90, 0xcc, 0xb8}}, + "NotSquareSupersetEqual": {Name: "NotSquareSupersetEqual", CodePoints: []int{8931}, Characters: []byte{0xe2, 0x8b, 0xa3}}, + "NotSubset": {Name: "NotSubset", CodePoints: []int{8834, 8402}, Characters: []byte{0xe2, 0x8a, 0x82, 0xe2, 0x83, 0x92}}, + "NotSubsetEqual": {Name: "NotSubsetEqual", CodePoints: []int{8840}, Characters: []byte{0xe2, 0x8a, 0x88}}, + "NotSucceeds": {Name: "NotSucceeds", CodePoints: []int{8833}, Characters: []byte{0xe2, 0x8a, 0x81}}, + "NotSucceedsEqual": {Name: "NotSucceedsEqual", CodePoints: []int{10928, 824}, Characters: []byte{0xe2, 0xaa, 0xb0, 0xcc, 0xb8}}, + "NotSucceedsSlantEqual": {Name: "NotSucceedsSlantEqual", CodePoints: []int{8929}, Characters: []byte{0xe2, 0x8b, 0xa1}}, + "NotSucceedsTilde": {Name: "NotSucceedsTilde", CodePoints: []int{8831, 824}, Characters: []byte{0xe2, 0x89, 0xbf, 0xcc, 0xb8}}, + "NotSuperset": {Name: "NotSuperset", CodePoints: []int{8835, 8402}, Characters: []byte{0xe2, 0x8a, 0x83, 0xe2, 0x83, 0x92}}, + "NotSupersetEqual": {Name: "NotSupersetEqual", CodePoints: []int{8841}, Characters: []byte{0xe2, 0x8a, 0x89}}, + "NotTilde": {Name: "NotTilde", CodePoints: []int{8769}, Characters: []byte{0xe2, 0x89, 0x81}}, + "NotTildeEqual": {Name: "NotTildeEqual", CodePoints: []int{8772}, Characters: []byte{0xe2, 0x89, 0x84}}, + "NotTildeFullEqual": {Name: "NotTildeFullEqual", CodePoints: []int{8775}, Characters: []byte{0xe2, 0x89, 0x87}}, + "NotTildeTilde": {Name: "NotTildeTilde", CodePoints: []int{8777}, Characters: []byte{0xe2, 0x89, 0x89}}, + "NotVerticalBar": {Name: "NotVerticalBar", CodePoints: []int{8740}, Characters: []byte{0xe2, 0x88, 0xa4}}, + "Nscr": {Name: "Nscr", CodePoints: []int{119977}, Characters: []byte{0xf0, 0x9d, 0x92, 0xa9}}, + "Ntilde": {Name: "Ntilde", CodePoints: []int{209}, Characters: []byte{0xc3, 0x91}}, + "Nu": {Name: "Nu", CodePoints: []int{925}, Characters: []byte{0xce, 0x9d}}, + "OElig": {Name: "OElig", CodePoints: []int{338}, Characters: []byte{0xc5, 0x92}}, + "Oacute": {Name: "Oacute", CodePoints: []int{211}, Characters: []byte{0xc3, 0x93}}, + "Ocirc": {Name: "Ocirc", CodePoints: []int{212}, Characters: []byte{0xc3, 0x94}}, + "Ocy": {Name: "Ocy", CodePoints: []int{1054}, Characters: []byte{0xd0, 0x9e}}, + "Odblac": {Name: "Odblac", CodePoints: []int{336}, Characters: []byte{0xc5, 0x90}}, + "Ofr": {Name: "Ofr", CodePoints: []int{120082}, Characters: []byte{0xf0, 0x9d, 0x94, 0x92}}, + "Ograve": {Name: "Ograve", CodePoints: []int{210}, Characters: []byte{0xc3, 0x92}}, + "Omacr": {Name: "Omacr", CodePoints: []int{332}, Characters: []byte{0xc5, 0x8c}}, + "Omega": {Name: "Omega", CodePoints: []int{937}, Characters: []byte{0xce, 0xa9}}, + "Omicron": {Name: "Omicron", CodePoints: []int{927}, Characters: []byte{0xce, 0x9f}}, + "Oopf": {Name: "Oopf", CodePoints: []int{120134}, Characters: []byte{0xf0, 0x9d, 0x95, 0x86}}, + "OpenCurlyDoubleQuote": {Name: "OpenCurlyDoubleQuote", CodePoints: []int{8220}, Characters: []byte{0xe2, 0x80, 0x9c}}, + "OpenCurlyQuote": {Name: "OpenCurlyQuote", CodePoints: []int{8216}, Characters: []byte{0xe2, 0x80, 0x98}}, + "Or": {Name: "Or", CodePoints: []int{10836}, Characters: []byte{0xe2, 0xa9, 0x94}}, + "Oscr": {Name: "Oscr", CodePoints: []int{119978}, Characters: []byte{0xf0, 0x9d, 0x92, 0xaa}}, + "Oslash": {Name: "Oslash", CodePoints: []int{216}, Characters: []byte{0xc3, 0x98}}, + "Otilde": {Name: "Otilde", CodePoints: []int{213}, Characters: []byte{0xc3, 0x95}}, + "Otimes": {Name: "Otimes", CodePoints: []int{10807}, Characters: []byte{0xe2, 0xa8, 0xb7}}, + "Ouml": {Name: "Ouml", CodePoints: []int{214}, Characters: []byte{0xc3, 0x96}}, + "OverBar": {Name: "OverBar", CodePoints: []int{8254}, Characters: []byte{0xe2, 0x80, 0xbe}}, + "OverBrace": {Name: "OverBrace", CodePoints: []int{9182}, Characters: []byte{0xe2, 0x8f, 0x9e}}, + "OverBracket": {Name: "OverBracket", CodePoints: []int{9140}, Characters: []byte{0xe2, 0x8e, 0xb4}}, + "OverParenthesis": {Name: "OverParenthesis", CodePoints: []int{9180}, Characters: []byte{0xe2, 0x8f, 0x9c}}, + "PartialD": {Name: "PartialD", CodePoints: []int{8706}, Characters: []byte{0xe2, 0x88, 0x82}}, + "Pcy": {Name: "Pcy", CodePoints: []int{1055}, Characters: []byte{0xd0, 0x9f}}, + "Pfr": {Name: "Pfr", CodePoints: []int{120083}, Characters: []byte{0xf0, 0x9d, 0x94, 0x93}}, + "Phi": {Name: "Phi", CodePoints: []int{934}, Characters: []byte{0xce, 0xa6}}, + "Pi": {Name: "Pi", CodePoints: []int{928}, Characters: []byte{0xce, 0xa0}}, + "PlusMinus": {Name: "PlusMinus", CodePoints: []int{177}, Characters: []byte{0xc2, 0xb1}}, + "Poincareplane": {Name: "Poincareplane", CodePoints: []int{8460}, Characters: []byte{0xe2, 0x84, 0x8c}}, + "Popf": {Name: "Popf", CodePoints: []int{8473}, Characters: []byte{0xe2, 0x84, 0x99}}, + "Pr": {Name: "Pr", CodePoints: []int{10939}, Characters: []byte{0xe2, 0xaa, 0xbb}}, + "Precedes": {Name: "Precedes", CodePoints: []int{8826}, Characters: []byte{0xe2, 0x89, 0xba}}, + "PrecedesEqual": {Name: "PrecedesEqual", CodePoints: []int{10927}, Characters: []byte{0xe2, 0xaa, 0xaf}}, + "PrecedesSlantEqual": {Name: "PrecedesSlantEqual", CodePoints: []int{8828}, Characters: []byte{0xe2, 0x89, 0xbc}}, + "PrecedesTilde": {Name: "PrecedesTilde", CodePoints: []int{8830}, Characters: []byte{0xe2, 0x89, 0xbe}}, + "Prime": {Name: "Prime", CodePoints: []int{8243}, Characters: []byte{0xe2, 0x80, 0xb3}}, + "Product": {Name: "Product", CodePoints: []int{8719}, Characters: []byte{0xe2, 0x88, 0x8f}}, + "Proportion": {Name: "Proportion", CodePoints: []int{8759}, Characters: []byte{0xe2, 0x88, 0xb7}}, + "Proportional": {Name: "Proportional", CodePoints: []int{8733}, Characters: []byte{0xe2, 0x88, 0x9d}}, + "Pscr": {Name: "Pscr", CodePoints: []int{119979}, Characters: []byte{0xf0, 0x9d, 0x92, 0xab}}, + "Psi": {Name: "Psi", CodePoints: []int{936}, Characters: []byte{0xce, 0xa8}}, + "QUOT": {Name: "QUOT", CodePoints: []int{34}, Characters: []byte{0x22}}, + "Qfr": {Name: "Qfr", CodePoints: []int{120084}, Characters: []byte{0xf0, 0x9d, 0x94, 0x94}}, + "Qopf": {Name: "Qopf", CodePoints: []int{8474}, Characters: []byte{0xe2, 0x84, 0x9a}}, + "Qscr": {Name: "Qscr", CodePoints: []int{119980}, Characters: []byte{0xf0, 0x9d, 0x92, 0xac}}, + "RBarr": {Name: "RBarr", CodePoints: []int{10512}, Characters: []byte{0xe2, 0xa4, 0x90}}, + "REG": {Name: "REG", CodePoints: []int{174}, Characters: []byte{0xc2, 0xae}}, + "Racute": {Name: "Racute", CodePoints: []int{340}, Characters: []byte{0xc5, 0x94}}, + "Rang": {Name: "Rang", CodePoints: []int{10219}, Characters: []byte{0xe2, 0x9f, 0xab}}, + "Rarr": {Name: "Rarr", CodePoints: []int{8608}, Characters: []byte{0xe2, 0x86, 0xa0}}, + "Rarrtl": {Name: "Rarrtl", CodePoints: []int{10518}, Characters: []byte{0xe2, 0xa4, 0x96}}, + "Rcaron": {Name: "Rcaron", CodePoints: []int{344}, Characters: []byte{0xc5, 0x98}}, + "Rcedil": {Name: "Rcedil", CodePoints: []int{342}, Characters: []byte{0xc5, 0x96}}, + "Rcy": {Name: "Rcy", CodePoints: []int{1056}, Characters: []byte{0xd0, 0xa0}}, + "Re": {Name: "Re", CodePoints: []int{8476}, Characters: []byte{0xe2, 0x84, 0x9c}}, + "ReverseElement": {Name: "ReverseElement", CodePoints: []int{8715}, Characters: []byte{0xe2, 0x88, 0x8b}}, + "ReverseEquilibrium": {Name: "ReverseEquilibrium", CodePoints: []int{8651}, Characters: []byte{0xe2, 0x87, 0x8b}}, + "ReverseUpEquilibrium": {Name: "ReverseUpEquilibrium", CodePoints: []int{10607}, Characters: []byte{0xe2, 0xa5, 0xaf}}, + "Rfr": {Name: "Rfr", CodePoints: []int{8476}, Characters: []byte{0xe2, 0x84, 0x9c}}, + "Rho": {Name: "Rho", CodePoints: []int{929}, Characters: []byte{0xce, 0xa1}}, + "RightAngleBracket": {Name: "RightAngleBracket", CodePoints: []int{10217}, Characters: []byte{0xe2, 0x9f, 0xa9}}, + "RightArrow": {Name: "RightArrow", CodePoints: []int{8594}, Characters: []byte{0xe2, 0x86, 0x92}}, + "RightArrowBar": {Name: "RightArrowBar", CodePoints: []int{8677}, Characters: []byte{0xe2, 0x87, 0xa5}}, + "RightArrowLeftArrow": {Name: "RightArrowLeftArrow", CodePoints: []int{8644}, Characters: []byte{0xe2, 0x87, 0x84}}, + "RightCeiling": {Name: "RightCeiling", CodePoints: []int{8969}, Characters: []byte{0xe2, 0x8c, 0x89}}, + "RightDoubleBracket": {Name: "RightDoubleBracket", CodePoints: []int{10215}, Characters: []byte{0xe2, 0x9f, 0xa7}}, + "RightDownTeeVector": {Name: "RightDownTeeVector", CodePoints: []int{10589}, Characters: []byte{0xe2, 0xa5, 0x9d}}, + "RightDownVector": {Name: "RightDownVector", CodePoints: []int{8642}, Characters: []byte{0xe2, 0x87, 0x82}}, + "RightDownVectorBar": {Name: "RightDownVectorBar", CodePoints: []int{10581}, Characters: []byte{0xe2, 0xa5, 0x95}}, + "RightFloor": {Name: "RightFloor", CodePoints: []int{8971}, Characters: []byte{0xe2, 0x8c, 0x8b}}, + "RightTee": {Name: "RightTee", CodePoints: []int{8866}, Characters: []byte{0xe2, 0x8a, 0xa2}}, + "RightTeeArrow": {Name: "RightTeeArrow", CodePoints: []int{8614}, Characters: []byte{0xe2, 0x86, 0xa6}}, + "RightTeeVector": {Name: "RightTeeVector", CodePoints: []int{10587}, Characters: []byte{0xe2, 0xa5, 0x9b}}, + "RightTriangle": {Name: "RightTriangle", CodePoints: []int{8883}, Characters: []byte{0xe2, 0x8a, 0xb3}}, + "RightTriangleBar": {Name: "RightTriangleBar", CodePoints: []int{10704}, Characters: []byte{0xe2, 0xa7, 0x90}}, + "RightTriangleEqual": {Name: "RightTriangleEqual", CodePoints: []int{8885}, Characters: []byte{0xe2, 0x8a, 0xb5}}, + "RightUpDownVector": {Name: "RightUpDownVector", CodePoints: []int{10575}, Characters: []byte{0xe2, 0xa5, 0x8f}}, + "RightUpTeeVector": {Name: "RightUpTeeVector", CodePoints: []int{10588}, Characters: []byte{0xe2, 0xa5, 0x9c}}, + "RightUpVector": {Name: "RightUpVector", CodePoints: []int{8638}, Characters: []byte{0xe2, 0x86, 0xbe}}, + "RightUpVectorBar": {Name: "RightUpVectorBar", CodePoints: []int{10580}, Characters: []byte{0xe2, 0xa5, 0x94}}, + "RightVector": {Name: "RightVector", CodePoints: []int{8640}, Characters: []byte{0xe2, 0x87, 0x80}}, + "RightVectorBar": {Name: "RightVectorBar", CodePoints: []int{10579}, Characters: []byte{0xe2, 0xa5, 0x93}}, + "Rightarrow": {Name: "Rightarrow", CodePoints: []int{8658}, Characters: []byte{0xe2, 0x87, 0x92}}, + "Ropf": {Name: "Ropf", CodePoints: []int{8477}, Characters: []byte{0xe2, 0x84, 0x9d}}, + "RoundImplies": {Name: "RoundImplies", CodePoints: []int{10608}, Characters: []byte{0xe2, 0xa5, 0xb0}}, + "Rrightarrow": {Name: "Rrightarrow", CodePoints: []int{8667}, Characters: []byte{0xe2, 0x87, 0x9b}}, + "Rscr": {Name: "Rscr", CodePoints: []int{8475}, Characters: []byte{0xe2, 0x84, 0x9b}}, + "Rsh": {Name: "Rsh", CodePoints: []int{8625}, Characters: []byte{0xe2, 0x86, 0xb1}}, + "RuleDelayed": {Name: "RuleDelayed", CodePoints: []int{10740}, Characters: []byte{0xe2, 0xa7, 0xb4}}, + "SHCHcy": {Name: "SHCHcy", CodePoints: []int{1065}, Characters: []byte{0xd0, 0xa9}}, + "SHcy": {Name: "SHcy", CodePoints: []int{1064}, Characters: []byte{0xd0, 0xa8}}, + "SOFTcy": {Name: "SOFTcy", CodePoints: []int{1068}, Characters: []byte{0xd0, 0xac}}, + "Sacute": {Name: "Sacute", CodePoints: []int{346}, Characters: []byte{0xc5, 0x9a}}, + "Sc": {Name: "Sc", CodePoints: []int{10940}, Characters: []byte{0xe2, 0xaa, 0xbc}}, + "Scaron": {Name: "Scaron", CodePoints: []int{352}, Characters: []byte{0xc5, 0xa0}}, + "Scedil": {Name: "Scedil", CodePoints: []int{350}, Characters: []byte{0xc5, 0x9e}}, + "Scirc": {Name: "Scirc", CodePoints: []int{348}, Characters: []byte{0xc5, 0x9c}}, + "Scy": {Name: "Scy", CodePoints: []int{1057}, Characters: []byte{0xd0, 0xa1}}, + "Sfr": {Name: "Sfr", CodePoints: []int{120086}, Characters: []byte{0xf0, 0x9d, 0x94, 0x96}}, + "ShortDownArrow": {Name: "ShortDownArrow", CodePoints: []int{8595}, Characters: []byte{0xe2, 0x86, 0x93}}, + "ShortLeftArrow": {Name: "ShortLeftArrow", CodePoints: []int{8592}, Characters: []byte{0xe2, 0x86, 0x90}}, + "ShortRightArrow": {Name: "ShortRightArrow", CodePoints: []int{8594}, Characters: []byte{0xe2, 0x86, 0x92}}, + "ShortUpArrow": {Name: "ShortUpArrow", CodePoints: []int{8593}, Characters: []byte{0xe2, 0x86, 0x91}}, + "Sigma": {Name: "Sigma", CodePoints: []int{931}, Characters: []byte{0xce, 0xa3}}, + "SmallCircle": {Name: "SmallCircle", CodePoints: []int{8728}, Characters: []byte{0xe2, 0x88, 0x98}}, + "Sopf": {Name: "Sopf", CodePoints: []int{120138}, Characters: []byte{0xf0, 0x9d, 0x95, 0x8a}}, + "Sqrt": {Name: "Sqrt", CodePoints: []int{8730}, Characters: []byte{0xe2, 0x88, 0x9a}}, + "Square": {Name: "Square", CodePoints: []int{9633}, Characters: []byte{0xe2, 0x96, 0xa1}}, + "SquareIntersection": {Name: "SquareIntersection", CodePoints: []int{8851}, Characters: []byte{0xe2, 0x8a, 0x93}}, + "SquareSubset": {Name: "SquareSubset", CodePoints: []int{8847}, Characters: []byte{0xe2, 0x8a, 0x8f}}, + "SquareSubsetEqual": {Name: "SquareSubsetEqual", CodePoints: []int{8849}, Characters: []byte{0xe2, 0x8a, 0x91}}, + "SquareSuperset": {Name: "SquareSuperset", CodePoints: []int{8848}, Characters: []byte{0xe2, 0x8a, 0x90}}, + "SquareSupersetEqual": {Name: "SquareSupersetEqual", CodePoints: []int{8850}, Characters: []byte{0xe2, 0x8a, 0x92}}, + "SquareUnion": {Name: "SquareUnion", CodePoints: []int{8852}, Characters: []byte{0xe2, 0x8a, 0x94}}, + "Sscr": {Name: "Sscr", CodePoints: []int{119982}, Characters: []byte{0xf0, 0x9d, 0x92, 0xae}}, + "Star": {Name: "Star", CodePoints: []int{8902}, Characters: []byte{0xe2, 0x8b, 0x86}}, + "Sub": {Name: "Sub", CodePoints: []int{8912}, Characters: []byte{0xe2, 0x8b, 0x90}}, + "Subset": {Name: "Subset", CodePoints: []int{8912}, Characters: []byte{0xe2, 0x8b, 0x90}}, + "SubsetEqual": {Name: "SubsetEqual", CodePoints: []int{8838}, Characters: []byte{0xe2, 0x8a, 0x86}}, + "Succeeds": {Name: "Succeeds", CodePoints: []int{8827}, Characters: []byte{0xe2, 0x89, 0xbb}}, + "SucceedsEqual": {Name: "SucceedsEqual", CodePoints: []int{10928}, Characters: []byte{0xe2, 0xaa, 0xb0}}, + "SucceedsSlantEqual": {Name: "SucceedsSlantEqual", CodePoints: []int{8829}, Characters: []byte{0xe2, 0x89, 0xbd}}, + "SucceedsTilde": {Name: "SucceedsTilde", CodePoints: []int{8831}, Characters: []byte{0xe2, 0x89, 0xbf}}, + "SuchThat": {Name: "SuchThat", CodePoints: []int{8715}, Characters: []byte{0xe2, 0x88, 0x8b}}, + "Sum": {Name: "Sum", CodePoints: []int{8721}, Characters: []byte{0xe2, 0x88, 0x91}}, + "Sup": {Name: "Sup", CodePoints: []int{8913}, Characters: []byte{0xe2, 0x8b, 0x91}}, + "Superset": {Name: "Superset", CodePoints: []int{8835}, Characters: []byte{0xe2, 0x8a, 0x83}}, + "SupersetEqual": {Name: "SupersetEqual", CodePoints: []int{8839}, Characters: []byte{0xe2, 0x8a, 0x87}}, + "Supset": {Name: "Supset", CodePoints: []int{8913}, Characters: []byte{0xe2, 0x8b, 0x91}}, + "THORN": {Name: "THORN", CodePoints: []int{222}, Characters: []byte{0xc3, 0x9e}}, + "TRADE": {Name: "TRADE", CodePoints: []int{8482}, Characters: []byte{0xe2, 0x84, 0xa2}}, + "TSHcy": {Name: "TSHcy", CodePoints: []int{1035}, Characters: []byte{0xd0, 0x8b}}, + "TScy": {Name: "TScy", CodePoints: []int{1062}, Characters: []byte{0xd0, 0xa6}}, + "Tab": {Name: "Tab", CodePoints: []int{9}, Characters: []byte{0x9}}, + "Tau": {Name: "Tau", CodePoints: []int{932}, Characters: []byte{0xce, 0xa4}}, + "Tcaron": {Name: "Tcaron", CodePoints: []int{356}, Characters: []byte{0xc5, 0xa4}}, + "Tcedil": {Name: "Tcedil", CodePoints: []int{354}, Characters: []byte{0xc5, 0xa2}}, + "Tcy": {Name: "Tcy", CodePoints: []int{1058}, Characters: []byte{0xd0, 0xa2}}, + "Tfr": {Name: "Tfr", CodePoints: []int{120087}, Characters: []byte{0xf0, 0x9d, 0x94, 0x97}}, + "Therefore": {Name: "Therefore", CodePoints: []int{8756}, Characters: []byte{0xe2, 0x88, 0xb4}}, + "Theta": {Name: "Theta", CodePoints: []int{920}, Characters: []byte{0xce, 0x98}}, + "ThickSpace": {Name: "ThickSpace", CodePoints: []int{8287, 8202}, Characters: []byte{0xe2, 0x81, 0x9f, 0xe2, 0x80, 0x8a}}, + "ThinSpace": {Name: "ThinSpace", CodePoints: []int{8201}, Characters: []byte{0xe2, 0x80, 0x89}}, + "Tilde": {Name: "Tilde", CodePoints: []int{8764}, Characters: []byte{0xe2, 0x88, 0xbc}}, + "TildeEqual": {Name: "TildeEqual", CodePoints: []int{8771}, Characters: []byte{0xe2, 0x89, 0x83}}, + "TildeFullEqual": {Name: "TildeFullEqual", CodePoints: []int{8773}, Characters: []byte{0xe2, 0x89, 0x85}}, + "TildeTilde": {Name: "TildeTilde", CodePoints: []int{8776}, Characters: []byte{0xe2, 0x89, 0x88}}, + "Topf": {Name: "Topf", CodePoints: []int{120139}, Characters: []byte{0xf0, 0x9d, 0x95, 0x8b}}, + "TripleDot": {Name: "TripleDot", CodePoints: []int{8411}, Characters: []byte{0xe2, 0x83, 0x9b}}, + "Tscr": {Name: "Tscr", CodePoints: []int{119983}, Characters: []byte{0xf0, 0x9d, 0x92, 0xaf}}, + "Tstrok": {Name: "Tstrok", CodePoints: []int{358}, Characters: []byte{0xc5, 0xa6}}, + "Uacute": {Name: "Uacute", CodePoints: []int{218}, Characters: []byte{0xc3, 0x9a}}, + "Uarr": {Name: "Uarr", CodePoints: []int{8607}, Characters: []byte{0xe2, 0x86, 0x9f}}, + "Uarrocir": {Name: "Uarrocir", CodePoints: []int{10569}, Characters: []byte{0xe2, 0xa5, 0x89}}, + "Ubrcy": {Name: "Ubrcy", CodePoints: []int{1038}, Characters: []byte{0xd0, 0x8e}}, + "Ubreve": {Name: "Ubreve", CodePoints: []int{364}, Characters: []byte{0xc5, 0xac}}, + "Ucirc": {Name: "Ucirc", CodePoints: []int{219}, Characters: []byte{0xc3, 0x9b}}, + "Ucy": {Name: "Ucy", CodePoints: []int{1059}, Characters: []byte{0xd0, 0xa3}}, + "Udblac": {Name: "Udblac", CodePoints: []int{368}, Characters: []byte{0xc5, 0xb0}}, + "Ufr": {Name: "Ufr", CodePoints: []int{120088}, Characters: []byte{0xf0, 0x9d, 0x94, 0x98}}, + "Ugrave": {Name: "Ugrave", CodePoints: []int{217}, Characters: []byte{0xc3, 0x99}}, + "Umacr": {Name: "Umacr", CodePoints: []int{362}, Characters: []byte{0xc5, 0xaa}}, + "UnderBar": {Name: "UnderBar", CodePoints: []int{95}, Characters: []byte{0x5f}}, + "UnderBrace": {Name: "UnderBrace", CodePoints: []int{9183}, Characters: []byte{0xe2, 0x8f, 0x9f}}, + "UnderBracket": {Name: "UnderBracket", CodePoints: []int{9141}, Characters: []byte{0xe2, 0x8e, 0xb5}}, + "UnderParenthesis": {Name: "UnderParenthesis", CodePoints: []int{9181}, Characters: []byte{0xe2, 0x8f, 0x9d}}, + "Union": {Name: "Union", CodePoints: []int{8899}, Characters: []byte{0xe2, 0x8b, 0x83}}, + "UnionPlus": {Name: "UnionPlus", CodePoints: []int{8846}, Characters: []byte{0xe2, 0x8a, 0x8e}}, + "Uogon": {Name: "Uogon", CodePoints: []int{370}, Characters: []byte{0xc5, 0xb2}}, + "Uopf": {Name: "Uopf", CodePoints: []int{120140}, Characters: []byte{0xf0, 0x9d, 0x95, 0x8c}}, + "UpArrow": {Name: "UpArrow", CodePoints: []int{8593}, Characters: []byte{0xe2, 0x86, 0x91}}, + "UpArrowBar": {Name: "UpArrowBar", CodePoints: []int{10514}, Characters: []byte{0xe2, 0xa4, 0x92}}, + "UpArrowDownArrow": {Name: "UpArrowDownArrow", CodePoints: []int{8645}, Characters: []byte{0xe2, 0x87, 0x85}}, + "UpDownArrow": {Name: "UpDownArrow", CodePoints: []int{8597}, Characters: []byte{0xe2, 0x86, 0x95}}, + "UpEquilibrium": {Name: "UpEquilibrium", CodePoints: []int{10606}, Characters: []byte{0xe2, 0xa5, 0xae}}, + "UpTee": {Name: "UpTee", CodePoints: []int{8869}, Characters: []byte{0xe2, 0x8a, 0xa5}}, + "UpTeeArrow": {Name: "UpTeeArrow", CodePoints: []int{8613}, Characters: []byte{0xe2, 0x86, 0xa5}}, + "Uparrow": {Name: "Uparrow", CodePoints: []int{8657}, Characters: []byte{0xe2, 0x87, 0x91}}, + "Updownarrow": {Name: "Updownarrow", CodePoints: []int{8661}, Characters: []byte{0xe2, 0x87, 0x95}}, + "UpperLeftArrow": {Name: "UpperLeftArrow", CodePoints: []int{8598}, Characters: []byte{0xe2, 0x86, 0x96}}, + "UpperRightArrow": {Name: "UpperRightArrow", CodePoints: []int{8599}, Characters: []byte{0xe2, 0x86, 0x97}}, + "Upsi": {Name: "Upsi", CodePoints: []int{978}, Characters: []byte{0xcf, 0x92}}, + "Upsilon": {Name: "Upsilon", CodePoints: []int{933}, Characters: []byte{0xce, 0xa5}}, + "Uring": {Name: "Uring", CodePoints: []int{366}, Characters: []byte{0xc5, 0xae}}, + "Uscr": {Name: "Uscr", CodePoints: []int{119984}, Characters: []byte{0xf0, 0x9d, 0x92, 0xb0}}, + "Utilde": {Name: "Utilde", CodePoints: []int{360}, Characters: []byte{0xc5, 0xa8}}, + "Uuml": {Name: "Uuml", CodePoints: []int{220}, Characters: []byte{0xc3, 0x9c}}, + "VDash": {Name: "VDash", CodePoints: []int{8875}, Characters: []byte{0xe2, 0x8a, 0xab}}, + "Vbar": {Name: "Vbar", CodePoints: []int{10987}, Characters: []byte{0xe2, 0xab, 0xab}}, + "Vcy": {Name: "Vcy", CodePoints: []int{1042}, Characters: []byte{0xd0, 0x92}}, + "Vdash": {Name: "Vdash", CodePoints: []int{8873}, Characters: []byte{0xe2, 0x8a, 0xa9}}, + "Vdashl": {Name: "Vdashl", CodePoints: []int{10982}, Characters: []byte{0xe2, 0xab, 0xa6}}, + "Vee": {Name: "Vee", CodePoints: []int{8897}, Characters: []byte{0xe2, 0x8b, 0x81}}, + "Verbar": {Name: "Verbar", CodePoints: []int{8214}, Characters: []byte{0xe2, 0x80, 0x96}}, + "Vert": {Name: "Vert", CodePoints: []int{8214}, Characters: []byte{0xe2, 0x80, 0x96}}, + "VerticalBar": {Name: "VerticalBar", CodePoints: []int{8739}, Characters: []byte{0xe2, 0x88, 0xa3}}, + "VerticalLine": {Name: "VerticalLine", CodePoints: []int{124}, Characters: []byte{0x7c}}, + "VerticalSeparator": {Name: "VerticalSeparator", CodePoints: []int{10072}, Characters: []byte{0xe2, 0x9d, 0x98}}, + "VerticalTilde": {Name: "VerticalTilde", CodePoints: []int{8768}, Characters: []byte{0xe2, 0x89, 0x80}}, + "VeryThinSpace": {Name: "VeryThinSpace", CodePoints: []int{8202}, Characters: []byte{0xe2, 0x80, 0x8a}}, + "Vfr": {Name: "Vfr", CodePoints: []int{120089}, Characters: []byte{0xf0, 0x9d, 0x94, 0x99}}, + "Vopf": {Name: "Vopf", CodePoints: []int{120141}, Characters: []byte{0xf0, 0x9d, 0x95, 0x8d}}, + "Vscr": {Name: "Vscr", CodePoints: []int{119985}, Characters: []byte{0xf0, 0x9d, 0x92, 0xb1}}, + "Vvdash": {Name: "Vvdash", CodePoints: []int{8874}, Characters: []byte{0xe2, 0x8a, 0xaa}}, + "Wcirc": {Name: "Wcirc", CodePoints: []int{372}, Characters: []byte{0xc5, 0xb4}}, + "Wedge": {Name: "Wedge", CodePoints: []int{8896}, Characters: []byte{0xe2, 0x8b, 0x80}}, + "Wfr": {Name: "Wfr", CodePoints: []int{120090}, Characters: []byte{0xf0, 0x9d, 0x94, 0x9a}}, + "Wopf": {Name: "Wopf", CodePoints: []int{120142}, Characters: []byte{0xf0, 0x9d, 0x95, 0x8e}}, + "Wscr": {Name: "Wscr", CodePoints: []int{119986}, Characters: []byte{0xf0, 0x9d, 0x92, 0xb2}}, + "Xfr": {Name: "Xfr", CodePoints: []int{120091}, Characters: []byte{0xf0, 0x9d, 0x94, 0x9b}}, + "Xi": {Name: "Xi", CodePoints: []int{926}, Characters: []byte{0xce, 0x9e}}, + "Xopf": {Name: "Xopf", CodePoints: []int{120143}, Characters: []byte{0xf0, 0x9d, 0x95, 0x8f}}, + "Xscr": {Name: "Xscr", CodePoints: []int{119987}, Characters: []byte{0xf0, 0x9d, 0x92, 0xb3}}, + "YAcy": {Name: "YAcy", CodePoints: []int{1071}, Characters: []byte{0xd0, 0xaf}}, + "YIcy": {Name: "YIcy", CodePoints: []int{1031}, Characters: []byte{0xd0, 0x87}}, + "YUcy": {Name: "YUcy", CodePoints: []int{1070}, Characters: []byte{0xd0, 0xae}}, + "Yacute": {Name: "Yacute", CodePoints: []int{221}, Characters: []byte{0xc3, 0x9d}}, + "Ycirc": {Name: "Ycirc", CodePoints: []int{374}, Characters: []byte{0xc5, 0xb6}}, + "Ycy": {Name: "Ycy", CodePoints: []int{1067}, Characters: []byte{0xd0, 0xab}}, + "Yfr": {Name: "Yfr", CodePoints: []int{120092}, Characters: []byte{0xf0, 0x9d, 0x94, 0x9c}}, + "Yopf": {Name: "Yopf", CodePoints: []int{120144}, Characters: []byte{0xf0, 0x9d, 0x95, 0x90}}, + "Yscr": {Name: "Yscr", CodePoints: []int{119988}, Characters: []byte{0xf0, 0x9d, 0x92, 0xb4}}, + "Yuml": {Name: "Yuml", CodePoints: []int{376}, Characters: []byte{0xc5, 0xb8}}, + "ZHcy": {Name: "ZHcy", CodePoints: []int{1046}, Characters: []byte{0xd0, 0x96}}, + "Zacute": {Name: "Zacute", CodePoints: []int{377}, Characters: []byte{0xc5, 0xb9}}, + "Zcaron": {Name: "Zcaron", CodePoints: []int{381}, Characters: []byte{0xc5, 0xbd}}, + "Zcy": {Name: "Zcy", CodePoints: []int{1047}, Characters: []byte{0xd0, 0x97}}, + "Zdot": {Name: "Zdot", CodePoints: []int{379}, Characters: []byte{0xc5, 0xbb}}, + "ZeroWidthSpace": {Name: "ZeroWidthSpace", CodePoints: []int{8203}, Characters: []byte{0xe2, 0x80, 0x8b}}, + "Zeta": {Name: "Zeta", CodePoints: []int{918}, Characters: []byte{0xce, 0x96}}, + "Zfr": {Name: "Zfr", CodePoints: []int{8488}, Characters: []byte{0xe2, 0x84, 0xa8}}, + "Zopf": {Name: "Zopf", CodePoints: []int{8484}, Characters: []byte{0xe2, 0x84, 0xa4}}, + "Zscr": {Name: "Zscr", CodePoints: []int{119989}, Characters: []byte{0xf0, 0x9d, 0x92, 0xb5}}, + "aacute": {Name: "aacute", CodePoints: []int{225}, Characters: []byte{0xc3, 0xa1}}, + "abreve": {Name: "abreve", CodePoints: []int{259}, Characters: []byte{0xc4, 0x83}}, + "ac": {Name: "ac", CodePoints: []int{8766}, Characters: []byte{0xe2, 0x88, 0xbe}}, + "acE": {Name: "acE", CodePoints: []int{8766, 819}, Characters: []byte{0xe2, 0x88, 0xbe, 0xcc, 0xb3}}, + "acd": {Name: "acd", CodePoints: []int{8767}, Characters: []byte{0xe2, 0x88, 0xbf}}, + "acirc": {Name: "acirc", CodePoints: []int{226}, Characters: []byte{0xc3, 0xa2}}, + "acute": {Name: "acute", CodePoints: []int{180}, Characters: []byte{0xc2, 0xb4}}, + "acy": {Name: "acy", CodePoints: []int{1072}, Characters: []byte{0xd0, 0xb0}}, + "aelig": {Name: "aelig", CodePoints: []int{230}, Characters: []byte{0xc3, 0xa6}}, + "af": {Name: "af", CodePoints: []int{8289}, Characters: []byte{0xe2, 0x81, 0xa1}}, + "afr": {Name: "afr", CodePoints: []int{120094}, Characters: []byte{0xf0, 0x9d, 0x94, 0x9e}}, + "agrave": {Name: "agrave", CodePoints: []int{224}, Characters: []byte{0xc3, 0xa0}}, + "alefsym": {Name: "alefsym", CodePoints: []int{8501}, Characters: []byte{0xe2, 0x84, 0xb5}}, + "aleph": {Name: "aleph", CodePoints: []int{8501}, Characters: []byte{0xe2, 0x84, 0xb5}}, + "alpha": {Name: "alpha", CodePoints: []int{945}, Characters: []byte{0xce, 0xb1}}, + "amacr": {Name: "amacr", CodePoints: []int{257}, Characters: []byte{0xc4, 0x81}}, + "amalg": {Name: "amalg", CodePoints: []int{10815}, Characters: []byte{0xe2, 0xa8, 0xbf}}, + "amp": {Name: "amp", CodePoints: []int{38}, Characters: []byte{0x26}}, + "and": {Name: "and", CodePoints: []int{8743}, Characters: []byte{0xe2, 0x88, 0xa7}}, + "andand": {Name: "andand", CodePoints: []int{10837}, Characters: []byte{0xe2, 0xa9, 0x95}}, + "andd": {Name: "andd", CodePoints: []int{10844}, Characters: []byte{0xe2, 0xa9, 0x9c}}, + "andslope": {Name: "andslope", CodePoints: []int{10840}, Characters: []byte{0xe2, 0xa9, 0x98}}, + "andv": {Name: "andv", CodePoints: []int{10842}, Characters: []byte{0xe2, 0xa9, 0x9a}}, + "ang": {Name: "ang", CodePoints: []int{8736}, Characters: []byte{0xe2, 0x88, 0xa0}}, + "ange": {Name: "ange", CodePoints: []int{10660}, Characters: []byte{0xe2, 0xa6, 0xa4}}, + "angle": {Name: "angle", CodePoints: []int{8736}, Characters: []byte{0xe2, 0x88, 0xa0}}, + "angmsd": {Name: "angmsd", CodePoints: []int{8737}, Characters: []byte{0xe2, 0x88, 0xa1}}, + "angmsdaa": {Name: "angmsdaa", CodePoints: []int{10664}, Characters: []byte{0xe2, 0xa6, 0xa8}}, + "angmsdab": {Name: "angmsdab", CodePoints: []int{10665}, Characters: []byte{0xe2, 0xa6, 0xa9}}, + "angmsdac": {Name: "angmsdac", CodePoints: []int{10666}, Characters: []byte{0xe2, 0xa6, 0xaa}}, + "angmsdad": {Name: "angmsdad", CodePoints: []int{10667}, Characters: []byte{0xe2, 0xa6, 0xab}}, + "angmsdae": {Name: "angmsdae", CodePoints: []int{10668}, Characters: []byte{0xe2, 0xa6, 0xac}}, + "angmsdaf": {Name: "angmsdaf", CodePoints: []int{10669}, Characters: []byte{0xe2, 0xa6, 0xad}}, + "angmsdag": {Name: "angmsdag", CodePoints: []int{10670}, Characters: []byte{0xe2, 0xa6, 0xae}}, + "angmsdah": {Name: "angmsdah", CodePoints: []int{10671}, Characters: []byte{0xe2, 0xa6, 0xaf}}, + "angrt": {Name: "angrt", CodePoints: []int{8735}, Characters: []byte{0xe2, 0x88, 0x9f}}, + "angrtvb": {Name: "angrtvb", CodePoints: []int{8894}, Characters: []byte{0xe2, 0x8a, 0xbe}}, + "angrtvbd": {Name: "angrtvbd", CodePoints: []int{10653}, Characters: []byte{0xe2, 0xa6, 0x9d}}, + "angsph": {Name: "angsph", CodePoints: []int{8738}, Characters: []byte{0xe2, 0x88, 0xa2}}, + "angst": {Name: "angst", CodePoints: []int{197}, Characters: []byte{0xc3, 0x85}}, + "angzarr": {Name: "angzarr", CodePoints: []int{9084}, Characters: []byte{0xe2, 0x8d, 0xbc}}, + "aogon": {Name: "aogon", CodePoints: []int{261}, Characters: []byte{0xc4, 0x85}}, + "aopf": {Name: "aopf", CodePoints: []int{120146}, Characters: []byte{0xf0, 0x9d, 0x95, 0x92}}, + "ap": {Name: "ap", CodePoints: []int{8776}, Characters: []byte{0xe2, 0x89, 0x88}}, + "apE": {Name: "apE", CodePoints: []int{10864}, Characters: []byte{0xe2, 0xa9, 0xb0}}, + "apacir": {Name: "apacir", CodePoints: []int{10863}, Characters: []byte{0xe2, 0xa9, 0xaf}}, + "ape": {Name: "ape", CodePoints: []int{8778}, Characters: []byte{0xe2, 0x89, 0x8a}}, + "apid": {Name: "apid", CodePoints: []int{8779}, Characters: []byte{0xe2, 0x89, 0x8b}}, + "apos": {Name: "apos", CodePoints: []int{39}, Characters: []byte{0x27}}, + "approx": {Name: "approx", CodePoints: []int{8776}, Characters: []byte{0xe2, 0x89, 0x88}}, + "approxeq": {Name: "approxeq", CodePoints: []int{8778}, Characters: []byte{0xe2, 0x89, 0x8a}}, + "aring": {Name: "aring", CodePoints: []int{229}, Characters: []byte{0xc3, 0xa5}}, + "ascr": {Name: "ascr", CodePoints: []int{119990}, Characters: []byte{0xf0, 0x9d, 0x92, 0xb6}}, + "ast": {Name: "ast", CodePoints: []int{42}, Characters: []byte{0x2a}}, + "asymp": {Name: "asymp", CodePoints: []int{8776}, Characters: []byte{0xe2, 0x89, 0x88}}, + "asympeq": {Name: "asympeq", CodePoints: []int{8781}, Characters: []byte{0xe2, 0x89, 0x8d}}, + "atilde": {Name: "atilde", CodePoints: []int{227}, Characters: []byte{0xc3, 0xa3}}, + "auml": {Name: "auml", CodePoints: []int{228}, Characters: []byte{0xc3, 0xa4}}, + "awconint": {Name: "awconint", CodePoints: []int{8755}, Characters: []byte{0xe2, 0x88, 0xb3}}, + "awint": {Name: "awint", CodePoints: []int{10769}, Characters: []byte{0xe2, 0xa8, 0x91}}, + "bNot": {Name: "bNot", CodePoints: []int{10989}, Characters: []byte{0xe2, 0xab, 0xad}}, + "backcong": {Name: "backcong", CodePoints: []int{8780}, Characters: []byte{0xe2, 0x89, 0x8c}}, + "backepsilon": {Name: "backepsilon", CodePoints: []int{1014}, Characters: []byte{0xcf, 0xb6}}, + "backprime": {Name: "backprime", CodePoints: []int{8245}, Characters: []byte{0xe2, 0x80, 0xb5}}, + "backsim": {Name: "backsim", CodePoints: []int{8765}, Characters: []byte{0xe2, 0x88, 0xbd}}, + "backsimeq": {Name: "backsimeq", CodePoints: []int{8909}, Characters: []byte{0xe2, 0x8b, 0x8d}}, + "barvee": {Name: "barvee", CodePoints: []int{8893}, Characters: []byte{0xe2, 0x8a, 0xbd}}, + "barwed": {Name: "barwed", CodePoints: []int{8965}, Characters: []byte{0xe2, 0x8c, 0x85}}, + "barwedge": {Name: "barwedge", CodePoints: []int{8965}, Characters: []byte{0xe2, 0x8c, 0x85}}, + "bbrk": {Name: "bbrk", CodePoints: []int{9141}, Characters: []byte{0xe2, 0x8e, 0xb5}}, + "bbrktbrk": {Name: "bbrktbrk", CodePoints: []int{9142}, Characters: []byte{0xe2, 0x8e, 0xb6}}, + "bcong": {Name: "bcong", CodePoints: []int{8780}, Characters: []byte{0xe2, 0x89, 0x8c}}, + "bcy": {Name: "bcy", CodePoints: []int{1073}, Characters: []byte{0xd0, 0xb1}}, + "bdquo": {Name: "bdquo", CodePoints: []int{8222}, Characters: []byte{0xe2, 0x80, 0x9e}}, + "becaus": {Name: "becaus", CodePoints: []int{8757}, Characters: []byte{0xe2, 0x88, 0xb5}}, + "because": {Name: "because", CodePoints: []int{8757}, Characters: []byte{0xe2, 0x88, 0xb5}}, + "bemptyv": {Name: "bemptyv", CodePoints: []int{10672}, Characters: []byte{0xe2, 0xa6, 0xb0}}, + "bepsi": {Name: "bepsi", CodePoints: []int{1014}, Characters: []byte{0xcf, 0xb6}}, + "bernou": {Name: "bernou", CodePoints: []int{8492}, Characters: []byte{0xe2, 0x84, 0xac}}, + "beta": {Name: "beta", CodePoints: []int{946}, Characters: []byte{0xce, 0xb2}}, + "beth": {Name: "beth", CodePoints: []int{8502}, Characters: []byte{0xe2, 0x84, 0xb6}}, + "between": {Name: "between", CodePoints: []int{8812}, Characters: []byte{0xe2, 0x89, 0xac}}, + "bfr": {Name: "bfr", CodePoints: []int{120095}, Characters: []byte{0xf0, 0x9d, 0x94, 0x9f}}, + "bigcap": {Name: "bigcap", CodePoints: []int{8898}, Characters: []byte{0xe2, 0x8b, 0x82}}, + "bigcirc": {Name: "bigcirc", CodePoints: []int{9711}, Characters: []byte{0xe2, 0x97, 0xaf}}, + "bigcup": {Name: "bigcup", CodePoints: []int{8899}, Characters: []byte{0xe2, 0x8b, 0x83}}, + "bigodot": {Name: "bigodot", CodePoints: []int{10752}, Characters: []byte{0xe2, 0xa8, 0x80}}, + "bigoplus": {Name: "bigoplus", CodePoints: []int{10753}, Characters: []byte{0xe2, 0xa8, 0x81}}, + "bigotimes": {Name: "bigotimes", CodePoints: []int{10754}, Characters: []byte{0xe2, 0xa8, 0x82}}, + "bigsqcup": {Name: "bigsqcup", CodePoints: []int{10758}, Characters: []byte{0xe2, 0xa8, 0x86}}, + "bigstar": {Name: "bigstar", CodePoints: []int{9733}, Characters: []byte{0xe2, 0x98, 0x85}}, + "bigtriangledown": {Name: "bigtriangledown", CodePoints: []int{9661}, Characters: []byte{0xe2, 0x96, 0xbd}}, + "bigtriangleup": {Name: "bigtriangleup", CodePoints: []int{9651}, Characters: []byte{0xe2, 0x96, 0xb3}}, + "biguplus": {Name: "biguplus", CodePoints: []int{10756}, Characters: []byte{0xe2, 0xa8, 0x84}}, + "bigvee": {Name: "bigvee", CodePoints: []int{8897}, Characters: []byte{0xe2, 0x8b, 0x81}}, + "bigwedge": {Name: "bigwedge", CodePoints: []int{8896}, Characters: []byte{0xe2, 0x8b, 0x80}}, + "bkarow": {Name: "bkarow", CodePoints: []int{10509}, Characters: []byte{0xe2, 0xa4, 0x8d}}, + "blacklozenge": {Name: "blacklozenge", CodePoints: []int{10731}, Characters: []byte{0xe2, 0xa7, 0xab}}, + "blacksquare": {Name: "blacksquare", CodePoints: []int{9642}, Characters: []byte{0xe2, 0x96, 0xaa}}, + "blacktriangle": {Name: "blacktriangle", CodePoints: []int{9652}, Characters: []byte{0xe2, 0x96, 0xb4}}, + "blacktriangledown": {Name: "blacktriangledown", CodePoints: []int{9662}, Characters: []byte{0xe2, 0x96, 0xbe}}, + "blacktriangleleft": {Name: "blacktriangleleft", CodePoints: []int{9666}, Characters: []byte{0xe2, 0x97, 0x82}}, + "blacktriangleright": {Name: "blacktriangleright", CodePoints: []int{9656}, Characters: []byte{0xe2, 0x96, 0xb8}}, + "blank": {Name: "blank", CodePoints: []int{9251}, Characters: []byte{0xe2, 0x90, 0xa3}}, + "blk12": {Name: "blk12", CodePoints: []int{9618}, Characters: []byte{0xe2, 0x96, 0x92}}, + "blk14": {Name: "blk14", CodePoints: []int{9617}, Characters: []byte{0xe2, 0x96, 0x91}}, + "blk34": {Name: "blk34", CodePoints: []int{9619}, Characters: []byte{0xe2, 0x96, 0x93}}, + "block": {Name: "block", CodePoints: []int{9608}, Characters: []byte{0xe2, 0x96, 0x88}}, + "bne": {Name: "bne", CodePoints: []int{61, 8421}, Characters: []byte{0x3d, 0xe2, 0x83, 0xa5}}, + "bnequiv": {Name: "bnequiv", CodePoints: []int{8801, 8421}, Characters: []byte{0xe2, 0x89, 0xa1, 0xe2, 0x83, 0xa5}}, + "bnot": {Name: "bnot", CodePoints: []int{8976}, Characters: []byte{0xe2, 0x8c, 0x90}}, + "bopf": {Name: "bopf", CodePoints: []int{120147}, Characters: []byte{0xf0, 0x9d, 0x95, 0x93}}, + "bot": {Name: "bot", CodePoints: []int{8869}, Characters: []byte{0xe2, 0x8a, 0xa5}}, + "bottom": {Name: "bottom", CodePoints: []int{8869}, Characters: []byte{0xe2, 0x8a, 0xa5}}, + "bowtie": {Name: "bowtie", CodePoints: []int{8904}, Characters: []byte{0xe2, 0x8b, 0x88}}, + "boxDL": {Name: "boxDL", CodePoints: []int{9559}, Characters: []byte{0xe2, 0x95, 0x97}}, + "boxDR": {Name: "boxDR", CodePoints: []int{9556}, Characters: []byte{0xe2, 0x95, 0x94}}, + "boxDl": {Name: "boxDl", CodePoints: []int{9558}, Characters: []byte{0xe2, 0x95, 0x96}}, + "boxDr": {Name: "boxDr", CodePoints: []int{9555}, Characters: []byte{0xe2, 0x95, 0x93}}, + "boxH": {Name: "boxH", CodePoints: []int{9552}, Characters: []byte{0xe2, 0x95, 0x90}}, + "boxHD": {Name: "boxHD", CodePoints: []int{9574}, Characters: []byte{0xe2, 0x95, 0xa6}}, + "boxHU": {Name: "boxHU", CodePoints: []int{9577}, Characters: []byte{0xe2, 0x95, 0xa9}}, + "boxHd": {Name: "boxHd", CodePoints: []int{9572}, Characters: []byte{0xe2, 0x95, 0xa4}}, + "boxHu": {Name: "boxHu", CodePoints: []int{9575}, Characters: []byte{0xe2, 0x95, 0xa7}}, + "boxUL": {Name: "boxUL", CodePoints: []int{9565}, Characters: []byte{0xe2, 0x95, 0x9d}}, + "boxUR": {Name: "boxUR", CodePoints: []int{9562}, Characters: []byte{0xe2, 0x95, 0x9a}}, + "boxUl": {Name: "boxUl", CodePoints: []int{9564}, Characters: []byte{0xe2, 0x95, 0x9c}}, + "boxUr": {Name: "boxUr", CodePoints: []int{9561}, Characters: []byte{0xe2, 0x95, 0x99}}, + "boxV": {Name: "boxV", CodePoints: []int{9553}, Characters: []byte{0xe2, 0x95, 0x91}}, + "boxVH": {Name: "boxVH", CodePoints: []int{9580}, Characters: []byte{0xe2, 0x95, 0xac}}, + "boxVL": {Name: "boxVL", CodePoints: []int{9571}, Characters: []byte{0xe2, 0x95, 0xa3}}, + "boxVR": {Name: "boxVR", CodePoints: []int{9568}, Characters: []byte{0xe2, 0x95, 0xa0}}, + "boxVh": {Name: "boxVh", CodePoints: []int{9579}, Characters: []byte{0xe2, 0x95, 0xab}}, + "boxVl": {Name: "boxVl", CodePoints: []int{9570}, Characters: []byte{0xe2, 0x95, 0xa2}}, + "boxVr": {Name: "boxVr", CodePoints: []int{9567}, Characters: []byte{0xe2, 0x95, 0x9f}}, + "boxbox": {Name: "boxbox", CodePoints: []int{10697}, Characters: []byte{0xe2, 0xa7, 0x89}}, + "boxdL": {Name: "boxdL", CodePoints: []int{9557}, Characters: []byte{0xe2, 0x95, 0x95}}, + "boxdR": {Name: "boxdR", CodePoints: []int{9554}, Characters: []byte{0xe2, 0x95, 0x92}}, + "boxdl": {Name: "boxdl", CodePoints: []int{9488}, Characters: []byte{0xe2, 0x94, 0x90}}, + "boxdr": {Name: "boxdr", CodePoints: []int{9484}, Characters: []byte{0xe2, 0x94, 0x8c}}, + "boxh": {Name: "boxh", CodePoints: []int{9472}, Characters: []byte{0xe2, 0x94, 0x80}}, + "boxhD": {Name: "boxhD", CodePoints: []int{9573}, Characters: []byte{0xe2, 0x95, 0xa5}}, + "boxhU": {Name: "boxhU", CodePoints: []int{9576}, Characters: []byte{0xe2, 0x95, 0xa8}}, + "boxhd": {Name: "boxhd", CodePoints: []int{9516}, Characters: []byte{0xe2, 0x94, 0xac}}, + "boxhu": {Name: "boxhu", CodePoints: []int{9524}, Characters: []byte{0xe2, 0x94, 0xb4}}, + "boxminus": {Name: "boxminus", CodePoints: []int{8863}, Characters: []byte{0xe2, 0x8a, 0x9f}}, + "boxplus": {Name: "boxplus", CodePoints: []int{8862}, Characters: []byte{0xe2, 0x8a, 0x9e}}, + "boxtimes": {Name: "boxtimes", CodePoints: []int{8864}, Characters: []byte{0xe2, 0x8a, 0xa0}}, + "boxuL": {Name: "boxuL", CodePoints: []int{9563}, Characters: []byte{0xe2, 0x95, 0x9b}}, + "boxuR": {Name: "boxuR", CodePoints: []int{9560}, Characters: []byte{0xe2, 0x95, 0x98}}, + "boxul": {Name: "boxul", CodePoints: []int{9496}, Characters: []byte{0xe2, 0x94, 0x98}}, + "boxur": {Name: "boxur", CodePoints: []int{9492}, Characters: []byte{0xe2, 0x94, 0x94}}, + "boxv": {Name: "boxv", CodePoints: []int{9474}, Characters: []byte{0xe2, 0x94, 0x82}}, + "boxvH": {Name: "boxvH", CodePoints: []int{9578}, Characters: []byte{0xe2, 0x95, 0xaa}}, + "boxvL": {Name: "boxvL", CodePoints: []int{9569}, Characters: []byte{0xe2, 0x95, 0xa1}}, + "boxvR": {Name: "boxvR", CodePoints: []int{9566}, Characters: []byte{0xe2, 0x95, 0x9e}}, + "boxvh": {Name: "boxvh", CodePoints: []int{9532}, Characters: []byte{0xe2, 0x94, 0xbc}}, + "boxvl": {Name: "boxvl", CodePoints: []int{9508}, Characters: []byte{0xe2, 0x94, 0xa4}}, + "boxvr": {Name: "boxvr", CodePoints: []int{9500}, Characters: []byte{0xe2, 0x94, 0x9c}}, + "bprime": {Name: "bprime", CodePoints: []int{8245}, Characters: []byte{0xe2, 0x80, 0xb5}}, + "breve": {Name: "breve", CodePoints: []int{728}, Characters: []byte{0xcb, 0x98}}, + "brvbar": {Name: "brvbar", CodePoints: []int{166}, Characters: []byte{0xc2, 0xa6}}, + "bscr": {Name: "bscr", CodePoints: []int{119991}, Characters: []byte{0xf0, 0x9d, 0x92, 0xb7}}, + "bsemi": {Name: "bsemi", CodePoints: []int{8271}, Characters: []byte{0xe2, 0x81, 0x8f}}, + "bsim": {Name: "bsim", CodePoints: []int{8765}, Characters: []byte{0xe2, 0x88, 0xbd}}, + "bsime": {Name: "bsime", CodePoints: []int{8909}, Characters: []byte{0xe2, 0x8b, 0x8d}}, + "bsol": {Name: "bsol", CodePoints: []int{92}, Characters: []byte{0x5c}}, + "bsolb": {Name: "bsolb", CodePoints: []int{10693}, Characters: []byte{0xe2, 0xa7, 0x85}}, + "bsolhsub": {Name: "bsolhsub", CodePoints: []int{10184}, Characters: []byte{0xe2, 0x9f, 0x88}}, + "bull": {Name: "bull", CodePoints: []int{8226}, Characters: []byte{0xe2, 0x80, 0xa2}}, + "bullet": {Name: "bullet", CodePoints: []int{8226}, Characters: []byte{0xe2, 0x80, 0xa2}}, + "bump": {Name: "bump", CodePoints: []int{8782}, Characters: []byte{0xe2, 0x89, 0x8e}}, + "bumpE": {Name: "bumpE", CodePoints: []int{10926}, Characters: []byte{0xe2, 0xaa, 0xae}}, + "bumpe": {Name: "bumpe", CodePoints: []int{8783}, Characters: []byte{0xe2, 0x89, 0x8f}}, + "bumpeq": {Name: "bumpeq", CodePoints: []int{8783}, Characters: []byte{0xe2, 0x89, 0x8f}}, + "cacute": {Name: "cacute", CodePoints: []int{263}, Characters: []byte{0xc4, 0x87}}, + "cap": {Name: "cap", CodePoints: []int{8745}, Characters: []byte{0xe2, 0x88, 0xa9}}, + "capand": {Name: "capand", CodePoints: []int{10820}, Characters: []byte{0xe2, 0xa9, 0x84}}, + "capbrcup": {Name: "capbrcup", CodePoints: []int{10825}, Characters: []byte{0xe2, 0xa9, 0x89}}, + "capcap": {Name: "capcap", CodePoints: []int{10827}, Characters: []byte{0xe2, 0xa9, 0x8b}}, + "capcup": {Name: "capcup", CodePoints: []int{10823}, Characters: []byte{0xe2, 0xa9, 0x87}}, + "capdot": {Name: "capdot", CodePoints: []int{10816}, Characters: []byte{0xe2, 0xa9, 0x80}}, + "caps": {Name: "caps", CodePoints: []int{8745, 65024}, Characters: []byte{0xe2, 0x88, 0xa9, 0xef, 0xb8, 0x80}}, + "caret": {Name: "caret", CodePoints: []int{8257}, Characters: []byte{0xe2, 0x81, 0x81}}, + "caron": {Name: "caron", CodePoints: []int{711}, Characters: []byte{0xcb, 0x87}}, + "ccaps": {Name: "ccaps", CodePoints: []int{10829}, Characters: []byte{0xe2, 0xa9, 0x8d}}, + "ccaron": {Name: "ccaron", CodePoints: []int{269}, Characters: []byte{0xc4, 0x8d}}, + "ccedil": {Name: "ccedil", CodePoints: []int{231}, Characters: []byte{0xc3, 0xa7}}, + "ccirc": {Name: "ccirc", CodePoints: []int{265}, Characters: []byte{0xc4, 0x89}}, + "ccups": {Name: "ccups", CodePoints: []int{10828}, Characters: []byte{0xe2, 0xa9, 0x8c}}, + "ccupssm": {Name: "ccupssm", CodePoints: []int{10832}, Characters: []byte{0xe2, 0xa9, 0x90}}, + "cdot": {Name: "cdot", CodePoints: []int{267}, Characters: []byte{0xc4, 0x8b}}, + "cedil": {Name: "cedil", CodePoints: []int{184}, Characters: []byte{0xc2, 0xb8}}, + "cemptyv": {Name: "cemptyv", CodePoints: []int{10674}, Characters: []byte{0xe2, 0xa6, 0xb2}}, + "cent": {Name: "cent", CodePoints: []int{162}, Characters: []byte{0xc2, 0xa2}}, + "centerdot": {Name: "centerdot", CodePoints: []int{183}, Characters: []byte{0xc2, 0xb7}}, + "cfr": {Name: "cfr", CodePoints: []int{120096}, Characters: []byte{0xf0, 0x9d, 0x94, 0xa0}}, + "chcy": {Name: "chcy", CodePoints: []int{1095}, Characters: []byte{0xd1, 0x87}}, + "check": {Name: "check", CodePoints: []int{10003}, Characters: []byte{0xe2, 0x9c, 0x93}}, + "checkmark": {Name: "checkmark", CodePoints: []int{10003}, Characters: []byte{0xe2, 0x9c, 0x93}}, + "chi": {Name: "chi", CodePoints: []int{967}, Characters: []byte{0xcf, 0x87}}, + "cir": {Name: "cir", CodePoints: []int{9675}, Characters: []byte{0xe2, 0x97, 0x8b}}, + "cirE": {Name: "cirE", CodePoints: []int{10691}, Characters: []byte{0xe2, 0xa7, 0x83}}, + "circ": {Name: "circ", CodePoints: []int{710}, Characters: []byte{0xcb, 0x86}}, + "circeq": {Name: "circeq", CodePoints: []int{8791}, Characters: []byte{0xe2, 0x89, 0x97}}, + "circlearrowleft": {Name: "circlearrowleft", CodePoints: []int{8634}, Characters: []byte{0xe2, 0x86, 0xba}}, + "circlearrowright": {Name: "circlearrowright", CodePoints: []int{8635}, Characters: []byte{0xe2, 0x86, 0xbb}}, + "circledR": {Name: "circledR", CodePoints: []int{174}, Characters: []byte{0xc2, 0xae}}, + "circledS": {Name: "circledS", CodePoints: []int{9416}, Characters: []byte{0xe2, 0x93, 0x88}}, + "circledast": {Name: "circledast", CodePoints: []int{8859}, Characters: []byte{0xe2, 0x8a, 0x9b}}, + "circledcirc": {Name: "circledcirc", CodePoints: []int{8858}, Characters: []byte{0xe2, 0x8a, 0x9a}}, + "circleddash": {Name: "circleddash", CodePoints: []int{8861}, Characters: []byte{0xe2, 0x8a, 0x9d}}, + "cire": {Name: "cire", CodePoints: []int{8791}, Characters: []byte{0xe2, 0x89, 0x97}}, + "cirfnint": {Name: "cirfnint", CodePoints: []int{10768}, Characters: []byte{0xe2, 0xa8, 0x90}}, + "cirmid": {Name: "cirmid", CodePoints: []int{10991}, Characters: []byte{0xe2, 0xab, 0xaf}}, + "cirscir": {Name: "cirscir", CodePoints: []int{10690}, Characters: []byte{0xe2, 0xa7, 0x82}}, + "clubs": {Name: "clubs", CodePoints: []int{9827}, Characters: []byte{0xe2, 0x99, 0xa3}}, + "clubsuit": {Name: "clubsuit", CodePoints: []int{9827}, Characters: []byte{0xe2, 0x99, 0xa3}}, + "colon": {Name: "colon", CodePoints: []int{58}, Characters: []byte{0x3a}}, + "colone": {Name: "colone", CodePoints: []int{8788}, Characters: []byte{0xe2, 0x89, 0x94}}, + "coloneq": {Name: "coloneq", CodePoints: []int{8788}, Characters: []byte{0xe2, 0x89, 0x94}}, + "comma": {Name: "comma", CodePoints: []int{44}, Characters: []byte{0x2c}}, + "commat": {Name: "commat", CodePoints: []int{64}, Characters: []byte{0x40}}, + "comp": {Name: "comp", CodePoints: []int{8705}, Characters: []byte{0xe2, 0x88, 0x81}}, + "compfn": {Name: "compfn", CodePoints: []int{8728}, Characters: []byte{0xe2, 0x88, 0x98}}, + "complement": {Name: "complement", CodePoints: []int{8705}, Characters: []byte{0xe2, 0x88, 0x81}}, + "complexes": {Name: "complexes", CodePoints: []int{8450}, Characters: []byte{0xe2, 0x84, 0x82}}, + "cong": {Name: "cong", CodePoints: []int{8773}, Characters: []byte{0xe2, 0x89, 0x85}}, + "congdot": {Name: "congdot", CodePoints: []int{10861}, Characters: []byte{0xe2, 0xa9, 0xad}}, + "conint": {Name: "conint", CodePoints: []int{8750}, Characters: []byte{0xe2, 0x88, 0xae}}, + "copf": {Name: "copf", CodePoints: []int{120148}, Characters: []byte{0xf0, 0x9d, 0x95, 0x94}}, + "coprod": {Name: "coprod", CodePoints: []int{8720}, Characters: []byte{0xe2, 0x88, 0x90}}, + "copy": {Name: "copy", CodePoints: []int{169}, Characters: []byte{0xc2, 0xa9}}, + "copysr": {Name: "copysr", CodePoints: []int{8471}, Characters: []byte{0xe2, 0x84, 0x97}}, + "crarr": {Name: "crarr", CodePoints: []int{8629}, Characters: []byte{0xe2, 0x86, 0xb5}}, + "cross": {Name: "cross", CodePoints: []int{10007}, Characters: []byte{0xe2, 0x9c, 0x97}}, + "cscr": {Name: "cscr", CodePoints: []int{119992}, Characters: []byte{0xf0, 0x9d, 0x92, 0xb8}}, + "csub": {Name: "csub", CodePoints: []int{10959}, Characters: []byte{0xe2, 0xab, 0x8f}}, + "csube": {Name: "csube", CodePoints: []int{10961}, Characters: []byte{0xe2, 0xab, 0x91}}, + "csup": {Name: "csup", CodePoints: []int{10960}, Characters: []byte{0xe2, 0xab, 0x90}}, + "csupe": {Name: "csupe", CodePoints: []int{10962}, Characters: []byte{0xe2, 0xab, 0x92}}, + "ctdot": {Name: "ctdot", CodePoints: []int{8943}, Characters: []byte{0xe2, 0x8b, 0xaf}}, + "cudarrl": {Name: "cudarrl", CodePoints: []int{10552}, Characters: []byte{0xe2, 0xa4, 0xb8}}, + "cudarrr": {Name: "cudarrr", CodePoints: []int{10549}, Characters: []byte{0xe2, 0xa4, 0xb5}}, + "cuepr": {Name: "cuepr", CodePoints: []int{8926}, Characters: []byte{0xe2, 0x8b, 0x9e}}, + "cuesc": {Name: "cuesc", CodePoints: []int{8927}, Characters: []byte{0xe2, 0x8b, 0x9f}}, + "cularr": {Name: "cularr", CodePoints: []int{8630}, Characters: []byte{0xe2, 0x86, 0xb6}}, + "cularrp": {Name: "cularrp", CodePoints: []int{10557}, Characters: []byte{0xe2, 0xa4, 0xbd}}, + "cup": {Name: "cup", CodePoints: []int{8746}, Characters: []byte{0xe2, 0x88, 0xaa}}, + "cupbrcap": {Name: "cupbrcap", CodePoints: []int{10824}, Characters: []byte{0xe2, 0xa9, 0x88}}, + "cupcap": {Name: "cupcap", CodePoints: []int{10822}, Characters: []byte{0xe2, 0xa9, 0x86}}, + "cupcup": {Name: "cupcup", CodePoints: []int{10826}, Characters: []byte{0xe2, 0xa9, 0x8a}}, + "cupdot": {Name: "cupdot", CodePoints: []int{8845}, Characters: []byte{0xe2, 0x8a, 0x8d}}, + "cupor": {Name: "cupor", CodePoints: []int{10821}, Characters: []byte{0xe2, 0xa9, 0x85}}, + "cups": {Name: "cups", CodePoints: []int{8746, 65024}, Characters: []byte{0xe2, 0x88, 0xaa, 0xef, 0xb8, 0x80}}, + "curarr": {Name: "curarr", CodePoints: []int{8631}, Characters: []byte{0xe2, 0x86, 0xb7}}, + "curarrm": {Name: "curarrm", CodePoints: []int{10556}, Characters: []byte{0xe2, 0xa4, 0xbc}}, + "curlyeqprec": {Name: "curlyeqprec", CodePoints: []int{8926}, Characters: []byte{0xe2, 0x8b, 0x9e}}, + "curlyeqsucc": {Name: "curlyeqsucc", CodePoints: []int{8927}, Characters: []byte{0xe2, 0x8b, 0x9f}}, + "curlyvee": {Name: "curlyvee", CodePoints: []int{8910}, Characters: []byte{0xe2, 0x8b, 0x8e}}, + "curlywedge": {Name: "curlywedge", CodePoints: []int{8911}, Characters: []byte{0xe2, 0x8b, 0x8f}}, + "curren": {Name: "curren", CodePoints: []int{164}, Characters: []byte{0xc2, 0xa4}}, + "curvearrowleft": {Name: "curvearrowleft", CodePoints: []int{8630}, Characters: []byte{0xe2, 0x86, 0xb6}}, + "curvearrowright": {Name: "curvearrowright", CodePoints: []int{8631}, Characters: []byte{0xe2, 0x86, 0xb7}}, + "cuvee": {Name: "cuvee", CodePoints: []int{8910}, Characters: []byte{0xe2, 0x8b, 0x8e}}, + "cuwed": {Name: "cuwed", CodePoints: []int{8911}, Characters: []byte{0xe2, 0x8b, 0x8f}}, + "cwconint": {Name: "cwconint", CodePoints: []int{8754}, Characters: []byte{0xe2, 0x88, 0xb2}}, + "cwint": {Name: "cwint", CodePoints: []int{8753}, Characters: []byte{0xe2, 0x88, 0xb1}}, + "cylcty": {Name: "cylcty", CodePoints: []int{9005}, Characters: []byte{0xe2, 0x8c, 0xad}}, + "dArr": {Name: "dArr", CodePoints: []int{8659}, Characters: []byte{0xe2, 0x87, 0x93}}, + "dHar": {Name: "dHar", CodePoints: []int{10597}, Characters: []byte{0xe2, 0xa5, 0xa5}}, + "dagger": {Name: "dagger", CodePoints: []int{8224}, Characters: []byte{0xe2, 0x80, 0xa0}}, + "daleth": {Name: "daleth", CodePoints: []int{8504}, Characters: []byte{0xe2, 0x84, 0xb8}}, + "darr": {Name: "darr", CodePoints: []int{8595}, Characters: []byte{0xe2, 0x86, 0x93}}, + "dash": {Name: "dash", CodePoints: []int{8208}, Characters: []byte{0xe2, 0x80, 0x90}}, + "dashv": {Name: "dashv", CodePoints: []int{8867}, Characters: []byte{0xe2, 0x8a, 0xa3}}, + "dbkarow": {Name: "dbkarow", CodePoints: []int{10511}, Characters: []byte{0xe2, 0xa4, 0x8f}}, + "dblac": {Name: "dblac", CodePoints: []int{733}, Characters: []byte{0xcb, 0x9d}}, + "dcaron": {Name: "dcaron", CodePoints: []int{271}, Characters: []byte{0xc4, 0x8f}}, + "dcy": {Name: "dcy", CodePoints: []int{1076}, Characters: []byte{0xd0, 0xb4}}, + "dd": {Name: "dd", CodePoints: []int{8518}, Characters: []byte{0xe2, 0x85, 0x86}}, + "ddagger": {Name: "ddagger", CodePoints: []int{8225}, Characters: []byte{0xe2, 0x80, 0xa1}}, + "ddarr": {Name: "ddarr", CodePoints: []int{8650}, Characters: []byte{0xe2, 0x87, 0x8a}}, + "ddotseq": {Name: "ddotseq", CodePoints: []int{10871}, Characters: []byte{0xe2, 0xa9, 0xb7}}, + "deg": {Name: "deg", CodePoints: []int{176}, Characters: []byte{0xc2, 0xb0}}, + "delta": {Name: "delta", CodePoints: []int{948}, Characters: []byte{0xce, 0xb4}}, + "demptyv": {Name: "demptyv", CodePoints: []int{10673}, Characters: []byte{0xe2, 0xa6, 0xb1}}, + "dfisht": {Name: "dfisht", CodePoints: []int{10623}, Characters: []byte{0xe2, 0xa5, 0xbf}}, + "dfr": {Name: "dfr", CodePoints: []int{120097}, Characters: []byte{0xf0, 0x9d, 0x94, 0xa1}}, + "dharl": {Name: "dharl", CodePoints: []int{8643}, Characters: []byte{0xe2, 0x87, 0x83}}, + "dharr": {Name: "dharr", CodePoints: []int{8642}, Characters: []byte{0xe2, 0x87, 0x82}}, + "diam": {Name: "diam", CodePoints: []int{8900}, Characters: []byte{0xe2, 0x8b, 0x84}}, + "diamond": {Name: "diamond", CodePoints: []int{8900}, Characters: []byte{0xe2, 0x8b, 0x84}}, + "diamondsuit": {Name: "diamondsuit", CodePoints: []int{9830}, Characters: []byte{0xe2, 0x99, 0xa6}}, + "diams": {Name: "diams", CodePoints: []int{9830}, Characters: []byte{0xe2, 0x99, 0xa6}}, + "die": {Name: "die", CodePoints: []int{168}, Characters: []byte{0xc2, 0xa8}}, + "digamma": {Name: "digamma", CodePoints: []int{989}, Characters: []byte{0xcf, 0x9d}}, + "disin": {Name: "disin", CodePoints: []int{8946}, Characters: []byte{0xe2, 0x8b, 0xb2}}, + "div": {Name: "div", CodePoints: []int{247}, Characters: []byte{0xc3, 0xb7}}, + "divide": {Name: "divide", CodePoints: []int{247}, Characters: []byte{0xc3, 0xb7}}, + "divideontimes": {Name: "divideontimes", CodePoints: []int{8903}, Characters: []byte{0xe2, 0x8b, 0x87}}, + "divonx": {Name: "divonx", CodePoints: []int{8903}, Characters: []byte{0xe2, 0x8b, 0x87}}, + "djcy": {Name: "djcy", CodePoints: []int{1106}, Characters: []byte{0xd1, 0x92}}, + "dlcorn": {Name: "dlcorn", CodePoints: []int{8990}, Characters: []byte{0xe2, 0x8c, 0x9e}}, + "dlcrop": {Name: "dlcrop", CodePoints: []int{8973}, Characters: []byte{0xe2, 0x8c, 0x8d}}, + "dollar": {Name: "dollar", CodePoints: []int{36}, Characters: []byte{0x24}}, + "dopf": {Name: "dopf", CodePoints: []int{120149}, Characters: []byte{0xf0, 0x9d, 0x95, 0x95}}, + "dot": {Name: "dot", CodePoints: []int{729}, Characters: []byte{0xcb, 0x99}}, + "doteq": {Name: "doteq", CodePoints: []int{8784}, Characters: []byte{0xe2, 0x89, 0x90}}, + "doteqdot": {Name: "doteqdot", CodePoints: []int{8785}, Characters: []byte{0xe2, 0x89, 0x91}}, + "dotminus": {Name: "dotminus", CodePoints: []int{8760}, Characters: []byte{0xe2, 0x88, 0xb8}}, + "dotplus": {Name: "dotplus", CodePoints: []int{8724}, Characters: []byte{0xe2, 0x88, 0x94}}, + "dotsquare": {Name: "dotsquare", CodePoints: []int{8865}, Characters: []byte{0xe2, 0x8a, 0xa1}}, + "doublebarwedge": {Name: "doublebarwedge", CodePoints: []int{8966}, Characters: []byte{0xe2, 0x8c, 0x86}}, + "downarrow": {Name: "downarrow", CodePoints: []int{8595}, Characters: []byte{0xe2, 0x86, 0x93}}, + "downdownarrows": {Name: "downdownarrows", CodePoints: []int{8650}, Characters: []byte{0xe2, 0x87, 0x8a}}, + "downharpoonleft": {Name: "downharpoonleft", CodePoints: []int{8643}, Characters: []byte{0xe2, 0x87, 0x83}}, + "downharpoonright": {Name: "downharpoonright", CodePoints: []int{8642}, Characters: []byte{0xe2, 0x87, 0x82}}, + "drbkarow": {Name: "drbkarow", CodePoints: []int{10512}, Characters: []byte{0xe2, 0xa4, 0x90}}, + "drcorn": {Name: "drcorn", CodePoints: []int{8991}, Characters: []byte{0xe2, 0x8c, 0x9f}}, + "drcrop": {Name: "drcrop", CodePoints: []int{8972}, Characters: []byte{0xe2, 0x8c, 0x8c}}, + "dscr": {Name: "dscr", CodePoints: []int{119993}, Characters: []byte{0xf0, 0x9d, 0x92, 0xb9}}, + "dscy": {Name: "dscy", CodePoints: []int{1109}, Characters: []byte{0xd1, 0x95}}, + "dsol": {Name: "dsol", CodePoints: []int{10742}, Characters: []byte{0xe2, 0xa7, 0xb6}}, + "dstrok": {Name: "dstrok", CodePoints: []int{273}, Characters: []byte{0xc4, 0x91}}, + "dtdot": {Name: "dtdot", CodePoints: []int{8945}, Characters: []byte{0xe2, 0x8b, 0xb1}}, + "dtri": {Name: "dtri", CodePoints: []int{9663}, Characters: []byte{0xe2, 0x96, 0xbf}}, + "dtrif": {Name: "dtrif", CodePoints: []int{9662}, Characters: []byte{0xe2, 0x96, 0xbe}}, + "duarr": {Name: "duarr", CodePoints: []int{8693}, Characters: []byte{0xe2, 0x87, 0xb5}}, + "duhar": {Name: "duhar", CodePoints: []int{10607}, Characters: []byte{0xe2, 0xa5, 0xaf}}, + "dwangle": {Name: "dwangle", CodePoints: []int{10662}, Characters: []byte{0xe2, 0xa6, 0xa6}}, + "dzcy": {Name: "dzcy", CodePoints: []int{1119}, Characters: []byte{0xd1, 0x9f}}, + "dzigrarr": {Name: "dzigrarr", CodePoints: []int{10239}, Characters: []byte{0xe2, 0x9f, 0xbf}}, + "eDDot": {Name: "eDDot", CodePoints: []int{10871}, Characters: []byte{0xe2, 0xa9, 0xb7}}, + "eDot": {Name: "eDot", CodePoints: []int{8785}, Characters: []byte{0xe2, 0x89, 0x91}}, + "eacute": {Name: "eacute", CodePoints: []int{233}, Characters: []byte{0xc3, 0xa9}}, + "easter": {Name: "easter", CodePoints: []int{10862}, Characters: []byte{0xe2, 0xa9, 0xae}}, + "ecaron": {Name: "ecaron", CodePoints: []int{283}, Characters: []byte{0xc4, 0x9b}}, + "ecir": {Name: "ecir", CodePoints: []int{8790}, Characters: []byte{0xe2, 0x89, 0x96}}, + "ecirc": {Name: "ecirc", CodePoints: []int{234}, Characters: []byte{0xc3, 0xaa}}, + "ecolon": {Name: "ecolon", CodePoints: []int{8789}, Characters: []byte{0xe2, 0x89, 0x95}}, + "ecy": {Name: "ecy", CodePoints: []int{1101}, Characters: []byte{0xd1, 0x8d}}, + "edot": {Name: "edot", CodePoints: []int{279}, Characters: []byte{0xc4, 0x97}}, + "ee": {Name: "ee", CodePoints: []int{8519}, Characters: []byte{0xe2, 0x85, 0x87}}, + "efDot": {Name: "efDot", CodePoints: []int{8786}, Characters: []byte{0xe2, 0x89, 0x92}}, + "efr": {Name: "efr", CodePoints: []int{120098}, Characters: []byte{0xf0, 0x9d, 0x94, 0xa2}}, + "eg": {Name: "eg", CodePoints: []int{10906}, Characters: []byte{0xe2, 0xaa, 0x9a}}, + "egrave": {Name: "egrave", CodePoints: []int{232}, Characters: []byte{0xc3, 0xa8}}, + "egs": {Name: "egs", CodePoints: []int{10902}, Characters: []byte{0xe2, 0xaa, 0x96}}, + "egsdot": {Name: "egsdot", CodePoints: []int{10904}, Characters: []byte{0xe2, 0xaa, 0x98}}, + "el": {Name: "el", CodePoints: []int{10905}, Characters: []byte{0xe2, 0xaa, 0x99}}, + "elinters": {Name: "elinters", CodePoints: []int{9191}, Characters: []byte{0xe2, 0x8f, 0xa7}}, + "ell": {Name: "ell", CodePoints: []int{8467}, Characters: []byte{0xe2, 0x84, 0x93}}, + "els": {Name: "els", CodePoints: []int{10901}, Characters: []byte{0xe2, 0xaa, 0x95}}, + "elsdot": {Name: "elsdot", CodePoints: []int{10903}, Characters: []byte{0xe2, 0xaa, 0x97}}, + "emacr": {Name: "emacr", CodePoints: []int{275}, Characters: []byte{0xc4, 0x93}}, + "empty": {Name: "empty", CodePoints: []int{8709}, Characters: []byte{0xe2, 0x88, 0x85}}, + "emptyset": {Name: "emptyset", CodePoints: []int{8709}, Characters: []byte{0xe2, 0x88, 0x85}}, + "emptyv": {Name: "emptyv", CodePoints: []int{8709}, Characters: []byte{0xe2, 0x88, 0x85}}, + "emsp": {Name: "emsp", CodePoints: []int{8195}, Characters: []byte{0xe2, 0x80, 0x83}}, + "emsp13": {Name: "emsp13", CodePoints: []int{8196}, Characters: []byte{0xe2, 0x80, 0x84}}, + "emsp14": {Name: "emsp14", CodePoints: []int{8197}, Characters: []byte{0xe2, 0x80, 0x85}}, + "eng": {Name: "eng", CodePoints: []int{331}, Characters: []byte{0xc5, 0x8b}}, + "ensp": {Name: "ensp", CodePoints: []int{8194}, Characters: []byte{0xe2, 0x80, 0x82}}, + "eogon": {Name: "eogon", CodePoints: []int{281}, Characters: []byte{0xc4, 0x99}}, + "eopf": {Name: "eopf", CodePoints: []int{120150}, Characters: []byte{0xf0, 0x9d, 0x95, 0x96}}, + "epar": {Name: "epar", CodePoints: []int{8917}, Characters: []byte{0xe2, 0x8b, 0x95}}, + "eparsl": {Name: "eparsl", CodePoints: []int{10723}, Characters: []byte{0xe2, 0xa7, 0xa3}}, + "eplus": {Name: "eplus", CodePoints: []int{10865}, Characters: []byte{0xe2, 0xa9, 0xb1}}, + "epsi": {Name: "epsi", CodePoints: []int{949}, Characters: []byte{0xce, 0xb5}}, + "epsilon": {Name: "epsilon", CodePoints: []int{949}, Characters: []byte{0xce, 0xb5}}, + "epsiv": {Name: "epsiv", CodePoints: []int{1013}, Characters: []byte{0xcf, 0xb5}}, + "eqcirc": {Name: "eqcirc", CodePoints: []int{8790}, Characters: []byte{0xe2, 0x89, 0x96}}, + "eqcolon": {Name: "eqcolon", CodePoints: []int{8789}, Characters: []byte{0xe2, 0x89, 0x95}}, + "eqsim": {Name: "eqsim", CodePoints: []int{8770}, Characters: []byte{0xe2, 0x89, 0x82}}, + "eqslantgtr": {Name: "eqslantgtr", CodePoints: []int{10902}, Characters: []byte{0xe2, 0xaa, 0x96}}, + "eqslantless": {Name: "eqslantless", CodePoints: []int{10901}, Characters: []byte{0xe2, 0xaa, 0x95}}, + "equals": {Name: "equals", CodePoints: []int{61}, Characters: []byte{0x3d}}, + "equest": {Name: "equest", CodePoints: []int{8799}, Characters: []byte{0xe2, 0x89, 0x9f}}, + "equiv": {Name: "equiv", CodePoints: []int{8801}, Characters: []byte{0xe2, 0x89, 0xa1}}, + "equivDD": {Name: "equivDD", CodePoints: []int{10872}, Characters: []byte{0xe2, 0xa9, 0xb8}}, + "eqvparsl": {Name: "eqvparsl", CodePoints: []int{10725}, Characters: []byte{0xe2, 0xa7, 0xa5}}, + "erDot": {Name: "erDot", CodePoints: []int{8787}, Characters: []byte{0xe2, 0x89, 0x93}}, + "erarr": {Name: "erarr", CodePoints: []int{10609}, Characters: []byte{0xe2, 0xa5, 0xb1}}, + "escr": {Name: "escr", CodePoints: []int{8495}, Characters: []byte{0xe2, 0x84, 0xaf}}, + "esdot": {Name: "esdot", CodePoints: []int{8784}, Characters: []byte{0xe2, 0x89, 0x90}}, + "esim": {Name: "esim", CodePoints: []int{8770}, Characters: []byte{0xe2, 0x89, 0x82}}, + "eta": {Name: "eta", CodePoints: []int{951}, Characters: []byte{0xce, 0xb7}}, + "eth": {Name: "eth", CodePoints: []int{240}, Characters: []byte{0xc3, 0xb0}}, + "euml": {Name: "euml", CodePoints: []int{235}, Characters: []byte{0xc3, 0xab}}, + "euro": {Name: "euro", CodePoints: []int{8364}, Characters: []byte{0xe2, 0x82, 0xac}}, + "excl": {Name: "excl", CodePoints: []int{33}, Characters: []byte{0x21}}, + "exist": {Name: "exist", CodePoints: []int{8707}, Characters: []byte{0xe2, 0x88, 0x83}}, + "expectation": {Name: "expectation", CodePoints: []int{8496}, Characters: []byte{0xe2, 0x84, 0xb0}}, + "exponentiale": {Name: "exponentiale", CodePoints: []int{8519}, Characters: []byte{0xe2, 0x85, 0x87}}, + "fallingdotseq": {Name: "fallingdotseq", CodePoints: []int{8786}, Characters: []byte{0xe2, 0x89, 0x92}}, + "fcy": {Name: "fcy", CodePoints: []int{1092}, Characters: []byte{0xd1, 0x84}}, + "female": {Name: "female", CodePoints: []int{9792}, Characters: []byte{0xe2, 0x99, 0x80}}, + "ffilig": {Name: "ffilig", CodePoints: []int{64259}, Characters: []byte{0xef, 0xac, 0x83}}, + "fflig": {Name: "fflig", CodePoints: []int{64256}, Characters: []byte{0xef, 0xac, 0x80}}, + "ffllig": {Name: "ffllig", CodePoints: []int{64260}, Characters: []byte{0xef, 0xac, 0x84}}, + "ffr": {Name: "ffr", CodePoints: []int{120099}, Characters: []byte{0xf0, 0x9d, 0x94, 0xa3}}, + "filig": {Name: "filig", CodePoints: []int{64257}, Characters: []byte{0xef, 0xac, 0x81}}, + "fjlig": {Name: "fjlig", CodePoints: []int{102, 106}, Characters: []byte{0x66, 0x6a}}, + "flat": {Name: "flat", CodePoints: []int{9837}, Characters: []byte{0xe2, 0x99, 0xad}}, + "fllig": {Name: "fllig", CodePoints: []int{64258}, Characters: []byte{0xef, 0xac, 0x82}}, + "fltns": {Name: "fltns", CodePoints: []int{9649}, Characters: []byte{0xe2, 0x96, 0xb1}}, + "fnof": {Name: "fnof", CodePoints: []int{402}, Characters: []byte{0xc6, 0x92}}, + "fopf": {Name: "fopf", CodePoints: []int{120151}, Characters: []byte{0xf0, 0x9d, 0x95, 0x97}}, + "forall": {Name: "forall", CodePoints: []int{8704}, Characters: []byte{0xe2, 0x88, 0x80}}, + "fork": {Name: "fork", CodePoints: []int{8916}, Characters: []byte{0xe2, 0x8b, 0x94}}, + "forkv": {Name: "forkv", CodePoints: []int{10969}, Characters: []byte{0xe2, 0xab, 0x99}}, + "fpartint": {Name: "fpartint", CodePoints: []int{10765}, Characters: []byte{0xe2, 0xa8, 0x8d}}, + "frac12": {Name: "frac12", CodePoints: []int{189}, Characters: []byte{0xc2, 0xbd}}, + "frac13": {Name: "frac13", CodePoints: []int{8531}, Characters: []byte{0xe2, 0x85, 0x93}}, + "frac14": {Name: "frac14", CodePoints: []int{188}, Characters: []byte{0xc2, 0xbc}}, + "frac15": {Name: "frac15", CodePoints: []int{8533}, Characters: []byte{0xe2, 0x85, 0x95}}, + "frac16": {Name: "frac16", CodePoints: []int{8537}, Characters: []byte{0xe2, 0x85, 0x99}}, + "frac18": {Name: "frac18", CodePoints: []int{8539}, Characters: []byte{0xe2, 0x85, 0x9b}}, + "frac23": {Name: "frac23", CodePoints: []int{8532}, Characters: []byte{0xe2, 0x85, 0x94}}, + "frac25": {Name: "frac25", CodePoints: []int{8534}, Characters: []byte{0xe2, 0x85, 0x96}}, + "frac34": {Name: "frac34", CodePoints: []int{190}, Characters: []byte{0xc2, 0xbe}}, + "frac35": {Name: "frac35", CodePoints: []int{8535}, Characters: []byte{0xe2, 0x85, 0x97}}, + "frac38": {Name: "frac38", CodePoints: []int{8540}, Characters: []byte{0xe2, 0x85, 0x9c}}, + "frac45": {Name: "frac45", CodePoints: []int{8536}, Characters: []byte{0xe2, 0x85, 0x98}}, + "frac56": {Name: "frac56", CodePoints: []int{8538}, Characters: []byte{0xe2, 0x85, 0x9a}}, + "frac58": {Name: "frac58", CodePoints: []int{8541}, Characters: []byte{0xe2, 0x85, 0x9d}}, + "frac78": {Name: "frac78", CodePoints: []int{8542}, Characters: []byte{0xe2, 0x85, 0x9e}}, + "frasl": {Name: "frasl", CodePoints: []int{8260}, Characters: []byte{0xe2, 0x81, 0x84}}, + "frown": {Name: "frown", CodePoints: []int{8994}, Characters: []byte{0xe2, 0x8c, 0xa2}}, + "fscr": {Name: "fscr", CodePoints: []int{119995}, Characters: []byte{0xf0, 0x9d, 0x92, 0xbb}}, + "gE": {Name: "gE", CodePoints: []int{8807}, Characters: []byte{0xe2, 0x89, 0xa7}}, + "gEl": {Name: "gEl", CodePoints: []int{10892}, Characters: []byte{0xe2, 0xaa, 0x8c}}, + "gacute": {Name: "gacute", CodePoints: []int{501}, Characters: []byte{0xc7, 0xb5}}, + "gamma": {Name: "gamma", CodePoints: []int{947}, Characters: []byte{0xce, 0xb3}}, + "gammad": {Name: "gammad", CodePoints: []int{989}, Characters: []byte{0xcf, 0x9d}}, + "gap": {Name: "gap", CodePoints: []int{10886}, Characters: []byte{0xe2, 0xaa, 0x86}}, + "gbreve": {Name: "gbreve", CodePoints: []int{287}, Characters: []byte{0xc4, 0x9f}}, + "gcirc": {Name: "gcirc", CodePoints: []int{285}, Characters: []byte{0xc4, 0x9d}}, + "gcy": {Name: "gcy", CodePoints: []int{1075}, Characters: []byte{0xd0, 0xb3}}, + "gdot": {Name: "gdot", CodePoints: []int{289}, Characters: []byte{0xc4, 0xa1}}, + "ge": {Name: "ge", CodePoints: []int{8805}, Characters: []byte{0xe2, 0x89, 0xa5}}, + "gel": {Name: "gel", CodePoints: []int{8923}, Characters: []byte{0xe2, 0x8b, 0x9b}}, + "geq": {Name: "geq", CodePoints: []int{8805}, Characters: []byte{0xe2, 0x89, 0xa5}}, + "geqq": {Name: "geqq", CodePoints: []int{8807}, Characters: []byte{0xe2, 0x89, 0xa7}}, + "geqslant": {Name: "geqslant", CodePoints: []int{10878}, Characters: []byte{0xe2, 0xa9, 0xbe}}, + "ges": {Name: "ges", CodePoints: []int{10878}, Characters: []byte{0xe2, 0xa9, 0xbe}}, + "gescc": {Name: "gescc", CodePoints: []int{10921}, Characters: []byte{0xe2, 0xaa, 0xa9}}, + "gesdot": {Name: "gesdot", CodePoints: []int{10880}, Characters: []byte{0xe2, 0xaa, 0x80}}, + "gesdoto": {Name: "gesdoto", CodePoints: []int{10882}, Characters: []byte{0xe2, 0xaa, 0x82}}, + "gesdotol": {Name: "gesdotol", CodePoints: []int{10884}, Characters: []byte{0xe2, 0xaa, 0x84}}, + "gesl": {Name: "gesl", CodePoints: []int{8923, 65024}, Characters: []byte{0xe2, 0x8b, 0x9b, 0xef, 0xb8, 0x80}}, + "gesles": {Name: "gesles", CodePoints: []int{10900}, Characters: []byte{0xe2, 0xaa, 0x94}}, + "gfr": {Name: "gfr", CodePoints: []int{120100}, Characters: []byte{0xf0, 0x9d, 0x94, 0xa4}}, + "gg": {Name: "gg", CodePoints: []int{8811}, Characters: []byte{0xe2, 0x89, 0xab}}, + "ggg": {Name: "ggg", CodePoints: []int{8921}, Characters: []byte{0xe2, 0x8b, 0x99}}, + "gimel": {Name: "gimel", CodePoints: []int{8503}, Characters: []byte{0xe2, 0x84, 0xb7}}, + "gjcy": {Name: "gjcy", CodePoints: []int{1107}, Characters: []byte{0xd1, 0x93}}, + "gl": {Name: "gl", CodePoints: []int{8823}, Characters: []byte{0xe2, 0x89, 0xb7}}, + "glE": {Name: "glE", CodePoints: []int{10898}, Characters: []byte{0xe2, 0xaa, 0x92}}, + "gla": {Name: "gla", CodePoints: []int{10917}, Characters: []byte{0xe2, 0xaa, 0xa5}}, + "glj": {Name: "glj", CodePoints: []int{10916}, Characters: []byte{0xe2, 0xaa, 0xa4}}, + "gnE": {Name: "gnE", CodePoints: []int{8809}, Characters: []byte{0xe2, 0x89, 0xa9}}, + "gnap": {Name: "gnap", CodePoints: []int{10890}, Characters: []byte{0xe2, 0xaa, 0x8a}}, + "gnapprox": {Name: "gnapprox", CodePoints: []int{10890}, Characters: []byte{0xe2, 0xaa, 0x8a}}, + "gne": {Name: "gne", CodePoints: []int{10888}, Characters: []byte{0xe2, 0xaa, 0x88}}, + "gneq": {Name: "gneq", CodePoints: []int{10888}, Characters: []byte{0xe2, 0xaa, 0x88}}, + "gneqq": {Name: "gneqq", CodePoints: []int{8809}, Characters: []byte{0xe2, 0x89, 0xa9}}, + "gnsim": {Name: "gnsim", CodePoints: []int{8935}, Characters: []byte{0xe2, 0x8b, 0xa7}}, + "gopf": {Name: "gopf", CodePoints: []int{120152}, Characters: []byte{0xf0, 0x9d, 0x95, 0x98}}, + "grave": {Name: "grave", CodePoints: []int{96}, Characters: []byte{0x60}}, + "gscr": {Name: "gscr", CodePoints: []int{8458}, Characters: []byte{0xe2, 0x84, 0x8a}}, + "gsim": {Name: "gsim", CodePoints: []int{8819}, Characters: []byte{0xe2, 0x89, 0xb3}}, + "gsime": {Name: "gsime", CodePoints: []int{10894}, Characters: []byte{0xe2, 0xaa, 0x8e}}, + "gsiml": {Name: "gsiml", CodePoints: []int{10896}, Characters: []byte{0xe2, 0xaa, 0x90}}, + "gt": {Name: "gt", CodePoints: []int{62}, Characters: []byte{0x3e}}, + "gtcc": {Name: "gtcc", CodePoints: []int{10919}, Characters: []byte{0xe2, 0xaa, 0xa7}}, + "gtcir": {Name: "gtcir", CodePoints: []int{10874}, Characters: []byte{0xe2, 0xa9, 0xba}}, + "gtdot": {Name: "gtdot", CodePoints: []int{8919}, Characters: []byte{0xe2, 0x8b, 0x97}}, + "gtlPar": {Name: "gtlPar", CodePoints: []int{10645}, Characters: []byte{0xe2, 0xa6, 0x95}}, + "gtquest": {Name: "gtquest", CodePoints: []int{10876}, Characters: []byte{0xe2, 0xa9, 0xbc}}, + "gtrapprox": {Name: "gtrapprox", CodePoints: []int{10886}, Characters: []byte{0xe2, 0xaa, 0x86}}, + "gtrarr": {Name: "gtrarr", CodePoints: []int{10616}, Characters: []byte{0xe2, 0xa5, 0xb8}}, + "gtrdot": {Name: "gtrdot", CodePoints: []int{8919}, Characters: []byte{0xe2, 0x8b, 0x97}}, + "gtreqless": {Name: "gtreqless", CodePoints: []int{8923}, Characters: []byte{0xe2, 0x8b, 0x9b}}, + "gtreqqless": {Name: "gtreqqless", CodePoints: []int{10892}, Characters: []byte{0xe2, 0xaa, 0x8c}}, + "gtrless": {Name: "gtrless", CodePoints: []int{8823}, Characters: []byte{0xe2, 0x89, 0xb7}}, + "gtrsim": {Name: "gtrsim", CodePoints: []int{8819}, Characters: []byte{0xe2, 0x89, 0xb3}}, + "gvertneqq": {Name: "gvertneqq", CodePoints: []int{8809, 65024}, Characters: []byte{0xe2, 0x89, 0xa9, 0xef, 0xb8, 0x80}}, + "gvnE": {Name: "gvnE", CodePoints: []int{8809, 65024}, Characters: []byte{0xe2, 0x89, 0xa9, 0xef, 0xb8, 0x80}}, + "hArr": {Name: "hArr", CodePoints: []int{8660}, Characters: []byte{0xe2, 0x87, 0x94}}, + "hairsp": {Name: "hairsp", CodePoints: []int{8202}, Characters: []byte{0xe2, 0x80, 0x8a}}, + "half": {Name: "half", CodePoints: []int{189}, Characters: []byte{0xc2, 0xbd}}, + "hamilt": {Name: "hamilt", CodePoints: []int{8459}, Characters: []byte{0xe2, 0x84, 0x8b}}, + "hardcy": {Name: "hardcy", CodePoints: []int{1098}, Characters: []byte{0xd1, 0x8a}}, + "harr": {Name: "harr", CodePoints: []int{8596}, Characters: []byte{0xe2, 0x86, 0x94}}, + "harrcir": {Name: "harrcir", CodePoints: []int{10568}, Characters: []byte{0xe2, 0xa5, 0x88}}, + "harrw": {Name: "harrw", CodePoints: []int{8621}, Characters: []byte{0xe2, 0x86, 0xad}}, + "hbar": {Name: "hbar", CodePoints: []int{8463}, Characters: []byte{0xe2, 0x84, 0x8f}}, + "hcirc": {Name: "hcirc", CodePoints: []int{293}, Characters: []byte{0xc4, 0xa5}}, + "hearts": {Name: "hearts", CodePoints: []int{9829}, Characters: []byte{0xe2, 0x99, 0xa5}}, + "heartsuit": {Name: "heartsuit", CodePoints: []int{9829}, Characters: []byte{0xe2, 0x99, 0xa5}}, + "hellip": {Name: "hellip", CodePoints: []int{8230}, Characters: []byte{0xe2, 0x80, 0xa6}}, + "hercon": {Name: "hercon", CodePoints: []int{8889}, Characters: []byte{0xe2, 0x8a, 0xb9}}, + "hfr": {Name: "hfr", CodePoints: []int{120101}, Characters: []byte{0xf0, 0x9d, 0x94, 0xa5}}, + "hksearow": {Name: "hksearow", CodePoints: []int{10533}, Characters: []byte{0xe2, 0xa4, 0xa5}}, + "hkswarow": {Name: "hkswarow", CodePoints: []int{10534}, Characters: []byte{0xe2, 0xa4, 0xa6}}, + "hoarr": {Name: "hoarr", CodePoints: []int{8703}, Characters: []byte{0xe2, 0x87, 0xbf}}, + "homtht": {Name: "homtht", CodePoints: []int{8763}, Characters: []byte{0xe2, 0x88, 0xbb}}, + "hookleftarrow": {Name: "hookleftarrow", CodePoints: []int{8617}, Characters: []byte{0xe2, 0x86, 0xa9}}, + "hookrightarrow": {Name: "hookrightarrow", CodePoints: []int{8618}, Characters: []byte{0xe2, 0x86, 0xaa}}, + "hopf": {Name: "hopf", CodePoints: []int{120153}, Characters: []byte{0xf0, 0x9d, 0x95, 0x99}}, + "horbar": {Name: "horbar", CodePoints: []int{8213}, Characters: []byte{0xe2, 0x80, 0x95}}, + "hscr": {Name: "hscr", CodePoints: []int{119997}, Characters: []byte{0xf0, 0x9d, 0x92, 0xbd}}, + "hslash": {Name: "hslash", CodePoints: []int{8463}, Characters: []byte{0xe2, 0x84, 0x8f}}, + "hstrok": {Name: "hstrok", CodePoints: []int{295}, Characters: []byte{0xc4, 0xa7}}, + "hybull": {Name: "hybull", CodePoints: []int{8259}, Characters: []byte{0xe2, 0x81, 0x83}}, + "hyphen": {Name: "hyphen", CodePoints: []int{8208}, Characters: []byte{0xe2, 0x80, 0x90}}, + "iacute": {Name: "iacute", CodePoints: []int{237}, Characters: []byte{0xc3, 0xad}}, + "ic": {Name: "ic", CodePoints: []int{8291}, Characters: []byte{0xe2, 0x81, 0xa3}}, + "icirc": {Name: "icirc", CodePoints: []int{238}, Characters: []byte{0xc3, 0xae}}, + "icy": {Name: "icy", CodePoints: []int{1080}, Characters: []byte{0xd0, 0xb8}}, + "iecy": {Name: "iecy", CodePoints: []int{1077}, Characters: []byte{0xd0, 0xb5}}, + "iexcl": {Name: "iexcl", CodePoints: []int{161}, Characters: []byte{0xc2, 0xa1}}, + "iff": {Name: "iff", CodePoints: []int{8660}, Characters: []byte{0xe2, 0x87, 0x94}}, + "ifr": {Name: "ifr", CodePoints: []int{120102}, Characters: []byte{0xf0, 0x9d, 0x94, 0xa6}}, + "igrave": {Name: "igrave", CodePoints: []int{236}, Characters: []byte{0xc3, 0xac}}, + "ii": {Name: "ii", CodePoints: []int{8520}, Characters: []byte{0xe2, 0x85, 0x88}}, + "iiiint": {Name: "iiiint", CodePoints: []int{10764}, Characters: []byte{0xe2, 0xa8, 0x8c}}, + "iiint": {Name: "iiint", CodePoints: []int{8749}, Characters: []byte{0xe2, 0x88, 0xad}}, + "iinfin": {Name: "iinfin", CodePoints: []int{10716}, Characters: []byte{0xe2, 0xa7, 0x9c}}, + "iiota": {Name: "iiota", CodePoints: []int{8489}, Characters: []byte{0xe2, 0x84, 0xa9}}, + "ijlig": {Name: "ijlig", CodePoints: []int{307}, Characters: []byte{0xc4, 0xb3}}, + "imacr": {Name: "imacr", CodePoints: []int{299}, Characters: []byte{0xc4, 0xab}}, + "image": {Name: "image", CodePoints: []int{8465}, Characters: []byte{0xe2, 0x84, 0x91}}, + "imagline": {Name: "imagline", CodePoints: []int{8464}, Characters: []byte{0xe2, 0x84, 0x90}}, + "imagpart": {Name: "imagpart", CodePoints: []int{8465}, Characters: []byte{0xe2, 0x84, 0x91}}, + "imath": {Name: "imath", CodePoints: []int{305}, Characters: []byte{0xc4, 0xb1}}, + "imof": {Name: "imof", CodePoints: []int{8887}, Characters: []byte{0xe2, 0x8a, 0xb7}}, + "imped": {Name: "imped", CodePoints: []int{437}, Characters: []byte{0xc6, 0xb5}}, + "in": {Name: "in", CodePoints: []int{8712}, Characters: []byte{0xe2, 0x88, 0x88}}, + "incare": {Name: "incare", CodePoints: []int{8453}, Characters: []byte{0xe2, 0x84, 0x85}}, + "infin": {Name: "infin", CodePoints: []int{8734}, Characters: []byte{0xe2, 0x88, 0x9e}}, + "infintie": {Name: "infintie", CodePoints: []int{10717}, Characters: []byte{0xe2, 0xa7, 0x9d}}, + "inodot": {Name: "inodot", CodePoints: []int{305}, Characters: []byte{0xc4, 0xb1}}, + "int": {Name: "int", CodePoints: []int{8747}, Characters: []byte{0xe2, 0x88, 0xab}}, + "intcal": {Name: "intcal", CodePoints: []int{8890}, Characters: []byte{0xe2, 0x8a, 0xba}}, + "integers": {Name: "integers", CodePoints: []int{8484}, Characters: []byte{0xe2, 0x84, 0xa4}}, + "intercal": {Name: "intercal", CodePoints: []int{8890}, Characters: []byte{0xe2, 0x8a, 0xba}}, + "intlarhk": {Name: "intlarhk", CodePoints: []int{10775}, Characters: []byte{0xe2, 0xa8, 0x97}}, + "intprod": {Name: "intprod", CodePoints: []int{10812}, Characters: []byte{0xe2, 0xa8, 0xbc}}, + "iocy": {Name: "iocy", CodePoints: []int{1105}, Characters: []byte{0xd1, 0x91}}, + "iogon": {Name: "iogon", CodePoints: []int{303}, Characters: []byte{0xc4, 0xaf}}, + "iopf": {Name: "iopf", CodePoints: []int{120154}, Characters: []byte{0xf0, 0x9d, 0x95, 0x9a}}, + "iota": {Name: "iota", CodePoints: []int{953}, Characters: []byte{0xce, 0xb9}}, + "iprod": {Name: "iprod", CodePoints: []int{10812}, Characters: []byte{0xe2, 0xa8, 0xbc}}, + "iquest": {Name: "iquest", CodePoints: []int{191}, Characters: []byte{0xc2, 0xbf}}, + "iscr": {Name: "iscr", CodePoints: []int{119998}, Characters: []byte{0xf0, 0x9d, 0x92, 0xbe}}, + "isin": {Name: "isin", CodePoints: []int{8712}, Characters: []byte{0xe2, 0x88, 0x88}}, + "isinE": {Name: "isinE", CodePoints: []int{8953}, Characters: []byte{0xe2, 0x8b, 0xb9}}, + "isindot": {Name: "isindot", CodePoints: []int{8949}, Characters: []byte{0xe2, 0x8b, 0xb5}}, + "isins": {Name: "isins", CodePoints: []int{8948}, Characters: []byte{0xe2, 0x8b, 0xb4}}, + "isinsv": {Name: "isinsv", CodePoints: []int{8947}, Characters: []byte{0xe2, 0x8b, 0xb3}}, + "isinv": {Name: "isinv", CodePoints: []int{8712}, Characters: []byte{0xe2, 0x88, 0x88}}, + "it": {Name: "it", CodePoints: []int{8290}, Characters: []byte{0xe2, 0x81, 0xa2}}, + "itilde": {Name: "itilde", CodePoints: []int{297}, Characters: []byte{0xc4, 0xa9}}, + "iukcy": {Name: "iukcy", CodePoints: []int{1110}, Characters: []byte{0xd1, 0x96}}, + "iuml": {Name: "iuml", CodePoints: []int{239}, Characters: []byte{0xc3, 0xaf}}, + "jcirc": {Name: "jcirc", CodePoints: []int{309}, Characters: []byte{0xc4, 0xb5}}, + "jcy": {Name: "jcy", CodePoints: []int{1081}, Characters: []byte{0xd0, 0xb9}}, + "jfr": {Name: "jfr", CodePoints: []int{120103}, Characters: []byte{0xf0, 0x9d, 0x94, 0xa7}}, + "jmath": {Name: "jmath", CodePoints: []int{567}, Characters: []byte{0xc8, 0xb7}}, + "jopf": {Name: "jopf", CodePoints: []int{120155}, Characters: []byte{0xf0, 0x9d, 0x95, 0x9b}}, + "jscr": {Name: "jscr", CodePoints: []int{119999}, Characters: []byte{0xf0, 0x9d, 0x92, 0xbf}}, + "jsercy": {Name: "jsercy", CodePoints: []int{1112}, Characters: []byte{0xd1, 0x98}}, + "jukcy": {Name: "jukcy", CodePoints: []int{1108}, Characters: []byte{0xd1, 0x94}}, + "kappa": {Name: "kappa", CodePoints: []int{954}, Characters: []byte{0xce, 0xba}}, + "kappav": {Name: "kappav", CodePoints: []int{1008}, Characters: []byte{0xcf, 0xb0}}, + "kcedil": {Name: "kcedil", CodePoints: []int{311}, Characters: []byte{0xc4, 0xb7}}, + "kcy": {Name: "kcy", CodePoints: []int{1082}, Characters: []byte{0xd0, 0xba}}, + "kfr": {Name: "kfr", CodePoints: []int{120104}, Characters: []byte{0xf0, 0x9d, 0x94, 0xa8}}, + "kgreen": {Name: "kgreen", CodePoints: []int{312}, Characters: []byte{0xc4, 0xb8}}, + "khcy": {Name: "khcy", CodePoints: []int{1093}, Characters: []byte{0xd1, 0x85}}, + "kjcy": {Name: "kjcy", CodePoints: []int{1116}, Characters: []byte{0xd1, 0x9c}}, + "kopf": {Name: "kopf", CodePoints: []int{120156}, Characters: []byte{0xf0, 0x9d, 0x95, 0x9c}}, + "kscr": {Name: "kscr", CodePoints: []int{120000}, Characters: []byte{0xf0, 0x9d, 0x93, 0x80}}, + "lAarr": {Name: "lAarr", CodePoints: []int{8666}, Characters: []byte{0xe2, 0x87, 0x9a}}, + "lArr": {Name: "lArr", CodePoints: []int{8656}, Characters: []byte{0xe2, 0x87, 0x90}}, + "lAtail": {Name: "lAtail", CodePoints: []int{10523}, Characters: []byte{0xe2, 0xa4, 0x9b}}, + "lBarr": {Name: "lBarr", CodePoints: []int{10510}, Characters: []byte{0xe2, 0xa4, 0x8e}}, + "lE": {Name: "lE", CodePoints: []int{8806}, Characters: []byte{0xe2, 0x89, 0xa6}}, + "lEg": {Name: "lEg", CodePoints: []int{10891}, Characters: []byte{0xe2, 0xaa, 0x8b}}, + "lHar": {Name: "lHar", CodePoints: []int{10594}, Characters: []byte{0xe2, 0xa5, 0xa2}}, + "lacute": {Name: "lacute", CodePoints: []int{314}, Characters: []byte{0xc4, 0xba}}, + "laemptyv": {Name: "laemptyv", CodePoints: []int{10676}, Characters: []byte{0xe2, 0xa6, 0xb4}}, + "lagran": {Name: "lagran", CodePoints: []int{8466}, Characters: []byte{0xe2, 0x84, 0x92}}, + "lambda": {Name: "lambda", CodePoints: []int{955}, Characters: []byte{0xce, 0xbb}}, + "lang": {Name: "lang", CodePoints: []int{10216}, Characters: []byte{0xe2, 0x9f, 0xa8}}, + "langd": {Name: "langd", CodePoints: []int{10641}, Characters: []byte{0xe2, 0xa6, 0x91}}, + "langle": {Name: "langle", CodePoints: []int{10216}, Characters: []byte{0xe2, 0x9f, 0xa8}}, + "lap": {Name: "lap", CodePoints: []int{10885}, Characters: []byte{0xe2, 0xaa, 0x85}}, + "laquo": {Name: "laquo", CodePoints: []int{171}, Characters: []byte{0xc2, 0xab}}, + "larr": {Name: "larr", CodePoints: []int{8592}, Characters: []byte{0xe2, 0x86, 0x90}}, + "larrb": {Name: "larrb", CodePoints: []int{8676}, Characters: []byte{0xe2, 0x87, 0xa4}}, + "larrbfs": {Name: "larrbfs", CodePoints: []int{10527}, Characters: []byte{0xe2, 0xa4, 0x9f}}, + "larrfs": {Name: "larrfs", CodePoints: []int{10525}, Characters: []byte{0xe2, 0xa4, 0x9d}}, + "larrhk": {Name: "larrhk", CodePoints: []int{8617}, Characters: []byte{0xe2, 0x86, 0xa9}}, + "larrlp": {Name: "larrlp", CodePoints: []int{8619}, Characters: []byte{0xe2, 0x86, 0xab}}, + "larrpl": {Name: "larrpl", CodePoints: []int{10553}, Characters: []byte{0xe2, 0xa4, 0xb9}}, + "larrsim": {Name: "larrsim", CodePoints: []int{10611}, Characters: []byte{0xe2, 0xa5, 0xb3}}, + "larrtl": {Name: "larrtl", CodePoints: []int{8610}, Characters: []byte{0xe2, 0x86, 0xa2}}, + "lat": {Name: "lat", CodePoints: []int{10923}, Characters: []byte{0xe2, 0xaa, 0xab}}, + "latail": {Name: "latail", CodePoints: []int{10521}, Characters: []byte{0xe2, 0xa4, 0x99}}, + "late": {Name: "late", CodePoints: []int{10925}, Characters: []byte{0xe2, 0xaa, 0xad}}, + "lates": {Name: "lates", CodePoints: []int{10925, 65024}, Characters: []byte{0xe2, 0xaa, 0xad, 0xef, 0xb8, 0x80}}, + "lbarr": {Name: "lbarr", CodePoints: []int{10508}, Characters: []byte{0xe2, 0xa4, 0x8c}}, + "lbbrk": {Name: "lbbrk", CodePoints: []int{10098}, Characters: []byte{0xe2, 0x9d, 0xb2}}, + "lbrace": {Name: "lbrace", CodePoints: []int{123}, Characters: []byte{0x7b}}, + "lbrack": {Name: "lbrack", CodePoints: []int{91}, Characters: []byte{0x5b}}, + "lbrke": {Name: "lbrke", CodePoints: []int{10635}, Characters: []byte{0xe2, 0xa6, 0x8b}}, + "lbrksld": {Name: "lbrksld", CodePoints: []int{10639}, Characters: []byte{0xe2, 0xa6, 0x8f}}, + "lbrkslu": {Name: "lbrkslu", CodePoints: []int{10637}, Characters: []byte{0xe2, 0xa6, 0x8d}}, + "lcaron": {Name: "lcaron", CodePoints: []int{318}, Characters: []byte{0xc4, 0xbe}}, + "lcedil": {Name: "lcedil", CodePoints: []int{316}, Characters: []byte{0xc4, 0xbc}}, + "lceil": {Name: "lceil", CodePoints: []int{8968}, Characters: []byte{0xe2, 0x8c, 0x88}}, + "lcub": {Name: "lcub", CodePoints: []int{123}, Characters: []byte{0x7b}}, + "lcy": {Name: "lcy", CodePoints: []int{1083}, Characters: []byte{0xd0, 0xbb}}, + "ldca": {Name: "ldca", CodePoints: []int{10550}, Characters: []byte{0xe2, 0xa4, 0xb6}}, + "ldquo": {Name: "ldquo", CodePoints: []int{8220}, Characters: []byte{0xe2, 0x80, 0x9c}}, + "ldquor": {Name: "ldquor", CodePoints: []int{8222}, Characters: []byte{0xe2, 0x80, 0x9e}}, + "ldrdhar": {Name: "ldrdhar", CodePoints: []int{10599}, Characters: []byte{0xe2, 0xa5, 0xa7}}, + "ldrushar": {Name: "ldrushar", CodePoints: []int{10571}, Characters: []byte{0xe2, 0xa5, 0x8b}}, + "ldsh": {Name: "ldsh", CodePoints: []int{8626}, Characters: []byte{0xe2, 0x86, 0xb2}}, + "le": {Name: "le", CodePoints: []int{8804}, Characters: []byte{0xe2, 0x89, 0xa4}}, + "leftarrow": {Name: "leftarrow", CodePoints: []int{8592}, Characters: []byte{0xe2, 0x86, 0x90}}, + "leftarrowtail": {Name: "leftarrowtail", CodePoints: []int{8610}, Characters: []byte{0xe2, 0x86, 0xa2}}, + "leftharpoondown": {Name: "leftharpoondown", CodePoints: []int{8637}, Characters: []byte{0xe2, 0x86, 0xbd}}, + "leftharpoonup": {Name: "leftharpoonup", CodePoints: []int{8636}, Characters: []byte{0xe2, 0x86, 0xbc}}, + "leftleftarrows": {Name: "leftleftarrows", CodePoints: []int{8647}, Characters: []byte{0xe2, 0x87, 0x87}}, + "leftrightarrow": {Name: "leftrightarrow", CodePoints: []int{8596}, Characters: []byte{0xe2, 0x86, 0x94}}, + "leftrightarrows": {Name: "leftrightarrows", CodePoints: []int{8646}, Characters: []byte{0xe2, 0x87, 0x86}}, + "leftrightharpoons": {Name: "leftrightharpoons", CodePoints: []int{8651}, Characters: []byte{0xe2, 0x87, 0x8b}}, + "leftrightsquigarrow": {Name: "leftrightsquigarrow", CodePoints: []int{8621}, Characters: []byte{0xe2, 0x86, 0xad}}, + "leftthreetimes": {Name: "leftthreetimes", CodePoints: []int{8907}, Characters: []byte{0xe2, 0x8b, 0x8b}}, + "leg": {Name: "leg", CodePoints: []int{8922}, Characters: []byte{0xe2, 0x8b, 0x9a}}, + "leq": {Name: "leq", CodePoints: []int{8804}, Characters: []byte{0xe2, 0x89, 0xa4}}, + "leqq": {Name: "leqq", CodePoints: []int{8806}, Characters: []byte{0xe2, 0x89, 0xa6}}, + "leqslant": {Name: "leqslant", CodePoints: []int{10877}, Characters: []byte{0xe2, 0xa9, 0xbd}}, + "les": {Name: "les", CodePoints: []int{10877}, Characters: []byte{0xe2, 0xa9, 0xbd}}, + "lescc": {Name: "lescc", CodePoints: []int{10920}, Characters: []byte{0xe2, 0xaa, 0xa8}}, + "lesdot": {Name: "lesdot", CodePoints: []int{10879}, Characters: []byte{0xe2, 0xa9, 0xbf}}, + "lesdoto": {Name: "lesdoto", CodePoints: []int{10881}, Characters: []byte{0xe2, 0xaa, 0x81}}, + "lesdotor": {Name: "lesdotor", CodePoints: []int{10883}, Characters: []byte{0xe2, 0xaa, 0x83}}, + "lesg": {Name: "lesg", CodePoints: []int{8922, 65024}, Characters: []byte{0xe2, 0x8b, 0x9a, 0xef, 0xb8, 0x80}}, + "lesges": {Name: "lesges", CodePoints: []int{10899}, Characters: []byte{0xe2, 0xaa, 0x93}}, + "lessapprox": {Name: "lessapprox", CodePoints: []int{10885}, Characters: []byte{0xe2, 0xaa, 0x85}}, + "lessdot": {Name: "lessdot", CodePoints: []int{8918}, Characters: []byte{0xe2, 0x8b, 0x96}}, + "lesseqgtr": {Name: "lesseqgtr", CodePoints: []int{8922}, Characters: []byte{0xe2, 0x8b, 0x9a}}, + "lesseqqgtr": {Name: "lesseqqgtr", CodePoints: []int{10891}, Characters: []byte{0xe2, 0xaa, 0x8b}}, + "lessgtr": {Name: "lessgtr", CodePoints: []int{8822}, Characters: []byte{0xe2, 0x89, 0xb6}}, + "lesssim": {Name: "lesssim", CodePoints: []int{8818}, Characters: []byte{0xe2, 0x89, 0xb2}}, + "lfisht": {Name: "lfisht", CodePoints: []int{10620}, Characters: []byte{0xe2, 0xa5, 0xbc}}, + "lfloor": {Name: "lfloor", CodePoints: []int{8970}, Characters: []byte{0xe2, 0x8c, 0x8a}}, + "lfr": {Name: "lfr", CodePoints: []int{120105}, Characters: []byte{0xf0, 0x9d, 0x94, 0xa9}}, + "lg": {Name: "lg", CodePoints: []int{8822}, Characters: []byte{0xe2, 0x89, 0xb6}}, + "lgE": {Name: "lgE", CodePoints: []int{10897}, Characters: []byte{0xe2, 0xaa, 0x91}}, + "lhard": {Name: "lhard", CodePoints: []int{8637}, Characters: []byte{0xe2, 0x86, 0xbd}}, + "lharu": {Name: "lharu", CodePoints: []int{8636}, Characters: []byte{0xe2, 0x86, 0xbc}}, + "lharul": {Name: "lharul", CodePoints: []int{10602}, Characters: []byte{0xe2, 0xa5, 0xaa}}, + "lhblk": {Name: "lhblk", CodePoints: []int{9604}, Characters: []byte{0xe2, 0x96, 0x84}}, + "ljcy": {Name: "ljcy", CodePoints: []int{1113}, Characters: []byte{0xd1, 0x99}}, + "ll": {Name: "ll", CodePoints: []int{8810}, Characters: []byte{0xe2, 0x89, 0xaa}}, + "llarr": {Name: "llarr", CodePoints: []int{8647}, Characters: []byte{0xe2, 0x87, 0x87}}, + "llcorner": {Name: "llcorner", CodePoints: []int{8990}, Characters: []byte{0xe2, 0x8c, 0x9e}}, + "llhard": {Name: "llhard", CodePoints: []int{10603}, Characters: []byte{0xe2, 0xa5, 0xab}}, + "lltri": {Name: "lltri", CodePoints: []int{9722}, Characters: []byte{0xe2, 0x97, 0xba}}, + "lmidot": {Name: "lmidot", CodePoints: []int{320}, Characters: []byte{0xc5, 0x80}}, + "lmoust": {Name: "lmoust", CodePoints: []int{9136}, Characters: []byte{0xe2, 0x8e, 0xb0}}, + "lmoustache": {Name: "lmoustache", CodePoints: []int{9136}, Characters: []byte{0xe2, 0x8e, 0xb0}}, + "lnE": {Name: "lnE", CodePoints: []int{8808}, Characters: []byte{0xe2, 0x89, 0xa8}}, + "lnap": {Name: "lnap", CodePoints: []int{10889}, Characters: []byte{0xe2, 0xaa, 0x89}}, + "lnapprox": {Name: "lnapprox", CodePoints: []int{10889}, Characters: []byte{0xe2, 0xaa, 0x89}}, + "lne": {Name: "lne", CodePoints: []int{10887}, Characters: []byte{0xe2, 0xaa, 0x87}}, + "lneq": {Name: "lneq", CodePoints: []int{10887}, Characters: []byte{0xe2, 0xaa, 0x87}}, + "lneqq": {Name: "lneqq", CodePoints: []int{8808}, Characters: []byte{0xe2, 0x89, 0xa8}}, + "lnsim": {Name: "lnsim", CodePoints: []int{8934}, Characters: []byte{0xe2, 0x8b, 0xa6}}, + "loang": {Name: "loang", CodePoints: []int{10220}, Characters: []byte{0xe2, 0x9f, 0xac}}, + "loarr": {Name: "loarr", CodePoints: []int{8701}, Characters: []byte{0xe2, 0x87, 0xbd}}, + "lobrk": {Name: "lobrk", CodePoints: []int{10214}, Characters: []byte{0xe2, 0x9f, 0xa6}}, + "longleftarrow": {Name: "longleftarrow", CodePoints: []int{10229}, Characters: []byte{0xe2, 0x9f, 0xb5}}, + "longleftrightarrow": {Name: "longleftrightarrow", CodePoints: []int{10231}, Characters: []byte{0xe2, 0x9f, 0xb7}}, + "longmapsto": {Name: "longmapsto", CodePoints: []int{10236}, Characters: []byte{0xe2, 0x9f, 0xbc}}, + "longrightarrow": {Name: "longrightarrow", CodePoints: []int{10230}, Characters: []byte{0xe2, 0x9f, 0xb6}}, + "looparrowleft": {Name: "looparrowleft", CodePoints: []int{8619}, Characters: []byte{0xe2, 0x86, 0xab}}, + "looparrowright": {Name: "looparrowright", CodePoints: []int{8620}, Characters: []byte{0xe2, 0x86, 0xac}}, + "lopar": {Name: "lopar", CodePoints: []int{10629}, Characters: []byte{0xe2, 0xa6, 0x85}}, + "lopf": {Name: "lopf", CodePoints: []int{120157}, Characters: []byte{0xf0, 0x9d, 0x95, 0x9d}}, + "loplus": {Name: "loplus", CodePoints: []int{10797}, Characters: []byte{0xe2, 0xa8, 0xad}}, + "lotimes": {Name: "lotimes", CodePoints: []int{10804}, Characters: []byte{0xe2, 0xa8, 0xb4}}, + "lowast": {Name: "lowast", CodePoints: []int{8727}, Characters: []byte{0xe2, 0x88, 0x97}}, + "lowbar": {Name: "lowbar", CodePoints: []int{95}, Characters: []byte{0x5f}}, + "loz": {Name: "loz", CodePoints: []int{9674}, Characters: []byte{0xe2, 0x97, 0x8a}}, + "lozenge": {Name: "lozenge", CodePoints: []int{9674}, Characters: []byte{0xe2, 0x97, 0x8a}}, + "lozf": {Name: "lozf", CodePoints: []int{10731}, Characters: []byte{0xe2, 0xa7, 0xab}}, + "lpar": {Name: "lpar", CodePoints: []int{40}, Characters: []byte{0x28}}, + "lparlt": {Name: "lparlt", CodePoints: []int{10643}, Characters: []byte{0xe2, 0xa6, 0x93}}, + "lrarr": {Name: "lrarr", CodePoints: []int{8646}, Characters: []byte{0xe2, 0x87, 0x86}}, + "lrcorner": {Name: "lrcorner", CodePoints: []int{8991}, Characters: []byte{0xe2, 0x8c, 0x9f}}, + "lrhar": {Name: "lrhar", CodePoints: []int{8651}, Characters: []byte{0xe2, 0x87, 0x8b}}, + "lrhard": {Name: "lrhard", CodePoints: []int{10605}, Characters: []byte{0xe2, 0xa5, 0xad}}, + "lrm": {Name: "lrm", CodePoints: []int{8206}, Characters: []byte{0xe2, 0x80, 0x8e}}, + "lrtri": {Name: "lrtri", CodePoints: []int{8895}, Characters: []byte{0xe2, 0x8a, 0xbf}}, + "lsaquo": {Name: "lsaquo", CodePoints: []int{8249}, Characters: []byte{0xe2, 0x80, 0xb9}}, + "lscr": {Name: "lscr", CodePoints: []int{120001}, Characters: []byte{0xf0, 0x9d, 0x93, 0x81}}, + "lsh": {Name: "lsh", CodePoints: []int{8624}, Characters: []byte{0xe2, 0x86, 0xb0}}, + "lsim": {Name: "lsim", CodePoints: []int{8818}, Characters: []byte{0xe2, 0x89, 0xb2}}, + "lsime": {Name: "lsime", CodePoints: []int{10893}, Characters: []byte{0xe2, 0xaa, 0x8d}}, + "lsimg": {Name: "lsimg", CodePoints: []int{10895}, Characters: []byte{0xe2, 0xaa, 0x8f}}, + "lsqb": {Name: "lsqb", CodePoints: []int{91}, Characters: []byte{0x5b}}, + "lsquo": {Name: "lsquo", CodePoints: []int{8216}, Characters: []byte{0xe2, 0x80, 0x98}}, + "lsquor": {Name: "lsquor", CodePoints: []int{8218}, Characters: []byte{0xe2, 0x80, 0x9a}}, + "lstrok": {Name: "lstrok", CodePoints: []int{322}, Characters: []byte{0xc5, 0x82}}, + "lt": {Name: "lt", CodePoints: []int{60}, Characters: []byte{0x3c}}, + "ltcc": {Name: "ltcc", CodePoints: []int{10918}, Characters: []byte{0xe2, 0xaa, 0xa6}}, + "ltcir": {Name: "ltcir", CodePoints: []int{10873}, Characters: []byte{0xe2, 0xa9, 0xb9}}, + "ltdot": {Name: "ltdot", CodePoints: []int{8918}, Characters: []byte{0xe2, 0x8b, 0x96}}, + "lthree": {Name: "lthree", CodePoints: []int{8907}, Characters: []byte{0xe2, 0x8b, 0x8b}}, + "ltimes": {Name: "ltimes", CodePoints: []int{8905}, Characters: []byte{0xe2, 0x8b, 0x89}}, + "ltlarr": {Name: "ltlarr", CodePoints: []int{10614}, Characters: []byte{0xe2, 0xa5, 0xb6}}, + "ltquest": {Name: "ltquest", CodePoints: []int{10875}, Characters: []byte{0xe2, 0xa9, 0xbb}}, + "ltrPar": {Name: "ltrPar", CodePoints: []int{10646}, Characters: []byte{0xe2, 0xa6, 0x96}}, + "ltri": {Name: "ltri", CodePoints: []int{9667}, Characters: []byte{0xe2, 0x97, 0x83}}, + "ltrie": {Name: "ltrie", CodePoints: []int{8884}, Characters: []byte{0xe2, 0x8a, 0xb4}}, + "ltrif": {Name: "ltrif", CodePoints: []int{9666}, Characters: []byte{0xe2, 0x97, 0x82}}, + "lurdshar": {Name: "lurdshar", CodePoints: []int{10570}, Characters: []byte{0xe2, 0xa5, 0x8a}}, + "luruhar": {Name: "luruhar", CodePoints: []int{10598}, Characters: []byte{0xe2, 0xa5, 0xa6}}, + "lvertneqq": {Name: "lvertneqq", CodePoints: []int{8808, 65024}, Characters: []byte{0xe2, 0x89, 0xa8, 0xef, 0xb8, 0x80}}, + "lvnE": {Name: "lvnE", CodePoints: []int{8808, 65024}, Characters: []byte{0xe2, 0x89, 0xa8, 0xef, 0xb8, 0x80}}, + "mDDot": {Name: "mDDot", CodePoints: []int{8762}, Characters: []byte{0xe2, 0x88, 0xba}}, + "macr": {Name: "macr", CodePoints: []int{175}, Characters: []byte{0xc2, 0xaf}}, + "male": {Name: "male", CodePoints: []int{9794}, Characters: []byte{0xe2, 0x99, 0x82}}, + "malt": {Name: "malt", CodePoints: []int{10016}, Characters: []byte{0xe2, 0x9c, 0xa0}}, + "maltese": {Name: "maltese", CodePoints: []int{10016}, Characters: []byte{0xe2, 0x9c, 0xa0}}, + "map": {Name: "map", CodePoints: []int{8614}, Characters: []byte{0xe2, 0x86, 0xa6}}, + "mapsto": {Name: "mapsto", CodePoints: []int{8614}, Characters: []byte{0xe2, 0x86, 0xa6}}, + "mapstodown": {Name: "mapstodown", CodePoints: []int{8615}, Characters: []byte{0xe2, 0x86, 0xa7}}, + "mapstoleft": {Name: "mapstoleft", CodePoints: []int{8612}, Characters: []byte{0xe2, 0x86, 0xa4}}, + "mapstoup": {Name: "mapstoup", CodePoints: []int{8613}, Characters: []byte{0xe2, 0x86, 0xa5}}, + "marker": {Name: "marker", CodePoints: []int{9646}, Characters: []byte{0xe2, 0x96, 0xae}}, + "mcomma": {Name: "mcomma", CodePoints: []int{10793}, Characters: []byte{0xe2, 0xa8, 0xa9}}, + "mcy": {Name: "mcy", CodePoints: []int{1084}, Characters: []byte{0xd0, 0xbc}}, + "mdash": {Name: "mdash", CodePoints: []int{8212}, Characters: []byte{0xe2, 0x80, 0x94}}, + "measuredangle": {Name: "measuredangle", CodePoints: []int{8737}, Characters: []byte{0xe2, 0x88, 0xa1}}, + "mfr": {Name: "mfr", CodePoints: []int{120106}, Characters: []byte{0xf0, 0x9d, 0x94, 0xaa}}, + "mho": {Name: "mho", CodePoints: []int{8487}, Characters: []byte{0xe2, 0x84, 0xa7}}, + "micro": {Name: "micro", CodePoints: []int{181}, Characters: []byte{0xc2, 0xb5}}, + "mid": {Name: "mid", CodePoints: []int{8739}, Characters: []byte{0xe2, 0x88, 0xa3}}, + "midast": {Name: "midast", CodePoints: []int{42}, Characters: []byte{0x2a}}, + "midcir": {Name: "midcir", CodePoints: []int{10992}, Characters: []byte{0xe2, 0xab, 0xb0}}, + "middot": {Name: "middot", CodePoints: []int{183}, Characters: []byte{0xc2, 0xb7}}, + "minus": {Name: "minus", CodePoints: []int{8722}, Characters: []byte{0xe2, 0x88, 0x92}}, + "minusb": {Name: "minusb", CodePoints: []int{8863}, Characters: []byte{0xe2, 0x8a, 0x9f}}, + "minusd": {Name: "minusd", CodePoints: []int{8760}, Characters: []byte{0xe2, 0x88, 0xb8}}, + "minusdu": {Name: "minusdu", CodePoints: []int{10794}, Characters: []byte{0xe2, 0xa8, 0xaa}}, + "mlcp": {Name: "mlcp", CodePoints: []int{10971}, Characters: []byte{0xe2, 0xab, 0x9b}}, + "mldr": {Name: "mldr", CodePoints: []int{8230}, Characters: []byte{0xe2, 0x80, 0xa6}}, + "mnplus": {Name: "mnplus", CodePoints: []int{8723}, Characters: []byte{0xe2, 0x88, 0x93}}, + "models": {Name: "models", CodePoints: []int{8871}, Characters: []byte{0xe2, 0x8a, 0xa7}}, + "mopf": {Name: "mopf", CodePoints: []int{120158}, Characters: []byte{0xf0, 0x9d, 0x95, 0x9e}}, + "mp": {Name: "mp", CodePoints: []int{8723}, Characters: []byte{0xe2, 0x88, 0x93}}, + "mscr": {Name: "mscr", CodePoints: []int{120002}, Characters: []byte{0xf0, 0x9d, 0x93, 0x82}}, + "mstpos": {Name: "mstpos", CodePoints: []int{8766}, Characters: []byte{0xe2, 0x88, 0xbe}}, + "mu": {Name: "mu", CodePoints: []int{956}, Characters: []byte{0xce, 0xbc}}, + "multimap": {Name: "multimap", CodePoints: []int{8888}, Characters: []byte{0xe2, 0x8a, 0xb8}}, + "mumap": {Name: "mumap", CodePoints: []int{8888}, Characters: []byte{0xe2, 0x8a, 0xb8}}, + "nGg": {Name: "nGg", CodePoints: []int{8921, 824}, Characters: []byte{0xe2, 0x8b, 0x99, 0xcc, 0xb8}}, + "nGt": {Name: "nGt", CodePoints: []int{8811, 8402}, Characters: []byte{0xe2, 0x89, 0xab, 0xe2, 0x83, 0x92}}, + "nGtv": {Name: "nGtv", CodePoints: []int{8811, 824}, Characters: []byte{0xe2, 0x89, 0xab, 0xcc, 0xb8}}, + "nLeftarrow": {Name: "nLeftarrow", CodePoints: []int{8653}, Characters: []byte{0xe2, 0x87, 0x8d}}, + "nLeftrightarrow": {Name: "nLeftrightarrow", CodePoints: []int{8654}, Characters: []byte{0xe2, 0x87, 0x8e}}, + "nLl": {Name: "nLl", CodePoints: []int{8920, 824}, Characters: []byte{0xe2, 0x8b, 0x98, 0xcc, 0xb8}}, + "nLt": {Name: "nLt", CodePoints: []int{8810, 8402}, Characters: []byte{0xe2, 0x89, 0xaa, 0xe2, 0x83, 0x92}}, + "nLtv": {Name: "nLtv", CodePoints: []int{8810, 824}, Characters: []byte{0xe2, 0x89, 0xaa, 0xcc, 0xb8}}, + "nRightarrow": {Name: "nRightarrow", CodePoints: []int{8655}, Characters: []byte{0xe2, 0x87, 0x8f}}, + "nVDash": {Name: "nVDash", CodePoints: []int{8879}, Characters: []byte{0xe2, 0x8a, 0xaf}}, + "nVdash": {Name: "nVdash", CodePoints: []int{8878}, Characters: []byte{0xe2, 0x8a, 0xae}}, + "nabla": {Name: "nabla", CodePoints: []int{8711}, Characters: []byte{0xe2, 0x88, 0x87}}, + "nacute": {Name: "nacute", CodePoints: []int{324}, Characters: []byte{0xc5, 0x84}}, + "nang": {Name: "nang", CodePoints: []int{8736, 8402}, Characters: []byte{0xe2, 0x88, 0xa0, 0xe2, 0x83, 0x92}}, + "nap": {Name: "nap", CodePoints: []int{8777}, Characters: []byte{0xe2, 0x89, 0x89}}, + "napE": {Name: "napE", CodePoints: []int{10864, 824}, Characters: []byte{0xe2, 0xa9, 0xb0, 0xcc, 0xb8}}, + "napid": {Name: "napid", CodePoints: []int{8779, 824}, Characters: []byte{0xe2, 0x89, 0x8b, 0xcc, 0xb8}}, + "napos": {Name: "napos", CodePoints: []int{329}, Characters: []byte{0xc5, 0x89}}, + "napprox": {Name: "napprox", CodePoints: []int{8777}, Characters: []byte{0xe2, 0x89, 0x89}}, + "natur": {Name: "natur", CodePoints: []int{9838}, Characters: []byte{0xe2, 0x99, 0xae}}, + "natural": {Name: "natural", CodePoints: []int{9838}, Characters: []byte{0xe2, 0x99, 0xae}}, + "naturals": {Name: "naturals", CodePoints: []int{8469}, Characters: []byte{0xe2, 0x84, 0x95}}, + "nbsp": {Name: "nbsp", CodePoints: []int{160}, Characters: []byte{0xc2, 0xa0}}, + "nbump": {Name: "nbump", CodePoints: []int{8782, 824}, Characters: []byte{0xe2, 0x89, 0x8e, 0xcc, 0xb8}}, + "nbumpe": {Name: "nbumpe", CodePoints: []int{8783, 824}, Characters: []byte{0xe2, 0x89, 0x8f, 0xcc, 0xb8}}, + "ncap": {Name: "ncap", CodePoints: []int{10819}, Characters: []byte{0xe2, 0xa9, 0x83}}, + "ncaron": {Name: "ncaron", CodePoints: []int{328}, Characters: []byte{0xc5, 0x88}}, + "ncedil": {Name: "ncedil", CodePoints: []int{326}, Characters: []byte{0xc5, 0x86}}, + "ncong": {Name: "ncong", CodePoints: []int{8775}, Characters: []byte{0xe2, 0x89, 0x87}}, + "ncongdot": {Name: "ncongdot", CodePoints: []int{10861, 824}, Characters: []byte{0xe2, 0xa9, 0xad, 0xcc, 0xb8}}, + "ncup": {Name: "ncup", CodePoints: []int{10818}, Characters: []byte{0xe2, 0xa9, 0x82}}, + "ncy": {Name: "ncy", CodePoints: []int{1085}, Characters: []byte{0xd0, 0xbd}}, + "ndash": {Name: "ndash", CodePoints: []int{8211}, Characters: []byte{0xe2, 0x80, 0x93}}, + "ne": {Name: "ne", CodePoints: []int{8800}, Characters: []byte{0xe2, 0x89, 0xa0}}, + "neArr": {Name: "neArr", CodePoints: []int{8663}, Characters: []byte{0xe2, 0x87, 0x97}}, + "nearhk": {Name: "nearhk", CodePoints: []int{10532}, Characters: []byte{0xe2, 0xa4, 0xa4}}, + "nearr": {Name: "nearr", CodePoints: []int{8599}, Characters: []byte{0xe2, 0x86, 0x97}}, + "nearrow": {Name: "nearrow", CodePoints: []int{8599}, Characters: []byte{0xe2, 0x86, 0x97}}, + "nedot": {Name: "nedot", CodePoints: []int{8784, 824}, Characters: []byte{0xe2, 0x89, 0x90, 0xcc, 0xb8}}, + "nequiv": {Name: "nequiv", CodePoints: []int{8802}, Characters: []byte{0xe2, 0x89, 0xa2}}, + "nesear": {Name: "nesear", CodePoints: []int{10536}, Characters: []byte{0xe2, 0xa4, 0xa8}}, + "nesim": {Name: "nesim", CodePoints: []int{8770, 824}, Characters: []byte{0xe2, 0x89, 0x82, 0xcc, 0xb8}}, + "nexist": {Name: "nexist", CodePoints: []int{8708}, Characters: []byte{0xe2, 0x88, 0x84}}, + "nexists": {Name: "nexists", CodePoints: []int{8708}, Characters: []byte{0xe2, 0x88, 0x84}}, + "nfr": {Name: "nfr", CodePoints: []int{120107}, Characters: []byte{0xf0, 0x9d, 0x94, 0xab}}, + "ngE": {Name: "ngE", CodePoints: []int{8807, 824}, Characters: []byte{0xe2, 0x89, 0xa7, 0xcc, 0xb8}}, + "nge": {Name: "nge", CodePoints: []int{8817}, Characters: []byte{0xe2, 0x89, 0xb1}}, + "ngeq": {Name: "ngeq", CodePoints: []int{8817}, Characters: []byte{0xe2, 0x89, 0xb1}}, + "ngeqq": {Name: "ngeqq", CodePoints: []int{8807, 824}, Characters: []byte{0xe2, 0x89, 0xa7, 0xcc, 0xb8}}, + "ngeqslant": {Name: "ngeqslant", CodePoints: []int{10878, 824}, Characters: []byte{0xe2, 0xa9, 0xbe, 0xcc, 0xb8}}, + "nges": {Name: "nges", CodePoints: []int{10878, 824}, Characters: []byte{0xe2, 0xa9, 0xbe, 0xcc, 0xb8}}, + "ngsim": {Name: "ngsim", CodePoints: []int{8821}, Characters: []byte{0xe2, 0x89, 0xb5}}, + "ngt": {Name: "ngt", CodePoints: []int{8815}, Characters: []byte{0xe2, 0x89, 0xaf}}, + "ngtr": {Name: "ngtr", CodePoints: []int{8815}, Characters: []byte{0xe2, 0x89, 0xaf}}, + "nhArr": {Name: "nhArr", CodePoints: []int{8654}, Characters: []byte{0xe2, 0x87, 0x8e}}, + "nharr": {Name: "nharr", CodePoints: []int{8622}, Characters: []byte{0xe2, 0x86, 0xae}}, + "nhpar": {Name: "nhpar", CodePoints: []int{10994}, Characters: []byte{0xe2, 0xab, 0xb2}}, + "ni": {Name: "ni", CodePoints: []int{8715}, Characters: []byte{0xe2, 0x88, 0x8b}}, + "nis": {Name: "nis", CodePoints: []int{8956}, Characters: []byte{0xe2, 0x8b, 0xbc}}, + "nisd": {Name: "nisd", CodePoints: []int{8954}, Characters: []byte{0xe2, 0x8b, 0xba}}, + "niv": {Name: "niv", CodePoints: []int{8715}, Characters: []byte{0xe2, 0x88, 0x8b}}, + "njcy": {Name: "njcy", CodePoints: []int{1114}, Characters: []byte{0xd1, 0x9a}}, + "nlArr": {Name: "nlArr", CodePoints: []int{8653}, Characters: []byte{0xe2, 0x87, 0x8d}}, + "nlE": {Name: "nlE", CodePoints: []int{8806, 824}, Characters: []byte{0xe2, 0x89, 0xa6, 0xcc, 0xb8}}, + "nlarr": {Name: "nlarr", CodePoints: []int{8602}, Characters: []byte{0xe2, 0x86, 0x9a}}, + "nldr": {Name: "nldr", CodePoints: []int{8229}, Characters: []byte{0xe2, 0x80, 0xa5}}, + "nle": {Name: "nle", CodePoints: []int{8816}, Characters: []byte{0xe2, 0x89, 0xb0}}, + "nleftarrow": {Name: "nleftarrow", CodePoints: []int{8602}, Characters: []byte{0xe2, 0x86, 0x9a}}, + "nleftrightarrow": {Name: "nleftrightarrow", CodePoints: []int{8622}, Characters: []byte{0xe2, 0x86, 0xae}}, + "nleq": {Name: "nleq", CodePoints: []int{8816}, Characters: []byte{0xe2, 0x89, 0xb0}}, + "nleqq": {Name: "nleqq", CodePoints: []int{8806, 824}, Characters: []byte{0xe2, 0x89, 0xa6, 0xcc, 0xb8}}, + "nleqslant": {Name: "nleqslant", CodePoints: []int{10877, 824}, Characters: []byte{0xe2, 0xa9, 0xbd, 0xcc, 0xb8}}, + "nles": {Name: "nles", CodePoints: []int{10877, 824}, Characters: []byte{0xe2, 0xa9, 0xbd, 0xcc, 0xb8}}, + "nless": {Name: "nless", CodePoints: []int{8814}, Characters: []byte{0xe2, 0x89, 0xae}}, + "nlsim": {Name: "nlsim", CodePoints: []int{8820}, Characters: []byte{0xe2, 0x89, 0xb4}}, + "nlt": {Name: "nlt", CodePoints: []int{8814}, Characters: []byte{0xe2, 0x89, 0xae}}, + "nltri": {Name: "nltri", CodePoints: []int{8938}, Characters: []byte{0xe2, 0x8b, 0xaa}}, + "nltrie": {Name: "nltrie", CodePoints: []int{8940}, Characters: []byte{0xe2, 0x8b, 0xac}}, + "nmid": {Name: "nmid", CodePoints: []int{8740}, Characters: []byte{0xe2, 0x88, 0xa4}}, + "nopf": {Name: "nopf", CodePoints: []int{120159}, Characters: []byte{0xf0, 0x9d, 0x95, 0x9f}}, + "not": {Name: "not", CodePoints: []int{172}, Characters: []byte{0xc2, 0xac}}, + "notin": {Name: "notin", CodePoints: []int{8713}, Characters: []byte{0xe2, 0x88, 0x89}}, + "notinE": {Name: "notinE", CodePoints: []int{8953, 824}, Characters: []byte{0xe2, 0x8b, 0xb9, 0xcc, 0xb8}}, + "notindot": {Name: "notindot", CodePoints: []int{8949, 824}, Characters: []byte{0xe2, 0x8b, 0xb5, 0xcc, 0xb8}}, + "notinva": {Name: "notinva", CodePoints: []int{8713}, Characters: []byte{0xe2, 0x88, 0x89}}, + "notinvb": {Name: "notinvb", CodePoints: []int{8951}, Characters: []byte{0xe2, 0x8b, 0xb7}}, + "notinvc": {Name: "notinvc", CodePoints: []int{8950}, Characters: []byte{0xe2, 0x8b, 0xb6}}, + "notni": {Name: "notni", CodePoints: []int{8716}, Characters: []byte{0xe2, 0x88, 0x8c}}, + "notniva": {Name: "notniva", CodePoints: []int{8716}, Characters: []byte{0xe2, 0x88, 0x8c}}, + "notnivb": {Name: "notnivb", CodePoints: []int{8958}, Characters: []byte{0xe2, 0x8b, 0xbe}}, + "notnivc": {Name: "notnivc", CodePoints: []int{8957}, Characters: []byte{0xe2, 0x8b, 0xbd}}, + "npar": {Name: "npar", CodePoints: []int{8742}, Characters: []byte{0xe2, 0x88, 0xa6}}, + "nparallel": {Name: "nparallel", CodePoints: []int{8742}, Characters: []byte{0xe2, 0x88, 0xa6}}, + "nparsl": {Name: "nparsl", CodePoints: []int{11005, 8421}, Characters: []byte{0xe2, 0xab, 0xbd, 0xe2, 0x83, 0xa5}}, + "npart": {Name: "npart", CodePoints: []int{8706, 824}, Characters: []byte{0xe2, 0x88, 0x82, 0xcc, 0xb8}}, + "npolint": {Name: "npolint", CodePoints: []int{10772}, Characters: []byte{0xe2, 0xa8, 0x94}}, + "npr": {Name: "npr", CodePoints: []int{8832}, Characters: []byte{0xe2, 0x8a, 0x80}}, + "nprcue": {Name: "nprcue", CodePoints: []int{8928}, Characters: []byte{0xe2, 0x8b, 0xa0}}, + "npre": {Name: "npre", CodePoints: []int{10927, 824}, Characters: []byte{0xe2, 0xaa, 0xaf, 0xcc, 0xb8}}, + "nprec": {Name: "nprec", CodePoints: []int{8832}, Characters: []byte{0xe2, 0x8a, 0x80}}, + "npreceq": {Name: "npreceq", CodePoints: []int{10927, 824}, Characters: []byte{0xe2, 0xaa, 0xaf, 0xcc, 0xb8}}, + "nrArr": {Name: "nrArr", CodePoints: []int{8655}, Characters: []byte{0xe2, 0x87, 0x8f}}, + "nrarr": {Name: "nrarr", CodePoints: []int{8603}, Characters: []byte{0xe2, 0x86, 0x9b}}, + "nrarrc": {Name: "nrarrc", CodePoints: []int{10547, 824}, Characters: []byte{0xe2, 0xa4, 0xb3, 0xcc, 0xb8}}, + "nrarrw": {Name: "nrarrw", CodePoints: []int{8605, 824}, Characters: []byte{0xe2, 0x86, 0x9d, 0xcc, 0xb8}}, + "nrightarrow": {Name: "nrightarrow", CodePoints: []int{8603}, Characters: []byte{0xe2, 0x86, 0x9b}}, + "nrtri": {Name: "nrtri", CodePoints: []int{8939}, Characters: []byte{0xe2, 0x8b, 0xab}}, + "nrtrie": {Name: "nrtrie", CodePoints: []int{8941}, Characters: []byte{0xe2, 0x8b, 0xad}}, + "nsc": {Name: "nsc", CodePoints: []int{8833}, Characters: []byte{0xe2, 0x8a, 0x81}}, + "nsccue": {Name: "nsccue", CodePoints: []int{8929}, Characters: []byte{0xe2, 0x8b, 0xa1}}, + "nsce": {Name: "nsce", CodePoints: []int{10928, 824}, Characters: []byte{0xe2, 0xaa, 0xb0, 0xcc, 0xb8}}, + "nscr": {Name: "nscr", CodePoints: []int{120003}, Characters: []byte{0xf0, 0x9d, 0x93, 0x83}}, + "nshortmid": {Name: "nshortmid", CodePoints: []int{8740}, Characters: []byte{0xe2, 0x88, 0xa4}}, + "nshortparallel": {Name: "nshortparallel", CodePoints: []int{8742}, Characters: []byte{0xe2, 0x88, 0xa6}}, + "nsim": {Name: "nsim", CodePoints: []int{8769}, Characters: []byte{0xe2, 0x89, 0x81}}, + "nsime": {Name: "nsime", CodePoints: []int{8772}, Characters: []byte{0xe2, 0x89, 0x84}}, + "nsimeq": {Name: "nsimeq", CodePoints: []int{8772}, Characters: []byte{0xe2, 0x89, 0x84}}, + "nsmid": {Name: "nsmid", CodePoints: []int{8740}, Characters: []byte{0xe2, 0x88, 0xa4}}, + "nspar": {Name: "nspar", CodePoints: []int{8742}, Characters: []byte{0xe2, 0x88, 0xa6}}, + "nsqsube": {Name: "nsqsube", CodePoints: []int{8930}, Characters: []byte{0xe2, 0x8b, 0xa2}}, + "nsqsupe": {Name: "nsqsupe", CodePoints: []int{8931}, Characters: []byte{0xe2, 0x8b, 0xa3}}, + "nsub": {Name: "nsub", CodePoints: []int{8836}, Characters: []byte{0xe2, 0x8a, 0x84}}, + "nsubE": {Name: "nsubE", CodePoints: []int{10949, 824}, Characters: []byte{0xe2, 0xab, 0x85, 0xcc, 0xb8}}, + "nsube": {Name: "nsube", CodePoints: []int{8840}, Characters: []byte{0xe2, 0x8a, 0x88}}, + "nsubset": {Name: "nsubset", CodePoints: []int{8834, 8402}, Characters: []byte{0xe2, 0x8a, 0x82, 0xe2, 0x83, 0x92}}, + "nsubseteq": {Name: "nsubseteq", CodePoints: []int{8840}, Characters: []byte{0xe2, 0x8a, 0x88}}, + "nsubseteqq": {Name: "nsubseteqq", CodePoints: []int{10949, 824}, Characters: []byte{0xe2, 0xab, 0x85, 0xcc, 0xb8}}, + "nsucc": {Name: "nsucc", CodePoints: []int{8833}, Characters: []byte{0xe2, 0x8a, 0x81}}, + "nsucceq": {Name: "nsucceq", CodePoints: []int{10928, 824}, Characters: []byte{0xe2, 0xaa, 0xb0, 0xcc, 0xb8}}, + "nsup": {Name: "nsup", CodePoints: []int{8837}, Characters: []byte{0xe2, 0x8a, 0x85}}, + "nsupE": {Name: "nsupE", CodePoints: []int{10950, 824}, Characters: []byte{0xe2, 0xab, 0x86, 0xcc, 0xb8}}, + "nsupe": {Name: "nsupe", CodePoints: []int{8841}, Characters: []byte{0xe2, 0x8a, 0x89}}, + "nsupset": {Name: "nsupset", CodePoints: []int{8835, 8402}, Characters: []byte{0xe2, 0x8a, 0x83, 0xe2, 0x83, 0x92}}, + "nsupseteq": {Name: "nsupseteq", CodePoints: []int{8841}, Characters: []byte{0xe2, 0x8a, 0x89}}, + "nsupseteqq": {Name: "nsupseteqq", CodePoints: []int{10950, 824}, Characters: []byte{0xe2, 0xab, 0x86, 0xcc, 0xb8}}, + "ntgl": {Name: "ntgl", CodePoints: []int{8825}, Characters: []byte{0xe2, 0x89, 0xb9}}, + "ntilde": {Name: "ntilde", CodePoints: []int{241}, Characters: []byte{0xc3, 0xb1}}, + "ntlg": {Name: "ntlg", CodePoints: []int{8824}, Characters: []byte{0xe2, 0x89, 0xb8}}, + "ntriangleleft": {Name: "ntriangleleft", CodePoints: []int{8938}, Characters: []byte{0xe2, 0x8b, 0xaa}}, + "ntrianglelefteq": {Name: "ntrianglelefteq", CodePoints: []int{8940}, Characters: []byte{0xe2, 0x8b, 0xac}}, + "ntriangleright": {Name: "ntriangleright", CodePoints: []int{8939}, Characters: []byte{0xe2, 0x8b, 0xab}}, + "ntrianglerighteq": {Name: "ntrianglerighteq", CodePoints: []int{8941}, Characters: []byte{0xe2, 0x8b, 0xad}}, + "nu": {Name: "nu", CodePoints: []int{957}, Characters: []byte{0xce, 0xbd}}, + "num": {Name: "num", CodePoints: []int{35}, Characters: []byte{0x23}}, + "numero": {Name: "numero", CodePoints: []int{8470}, Characters: []byte{0xe2, 0x84, 0x96}}, + "numsp": {Name: "numsp", CodePoints: []int{8199}, Characters: []byte{0xe2, 0x80, 0x87}}, + "nvDash": {Name: "nvDash", CodePoints: []int{8877}, Characters: []byte{0xe2, 0x8a, 0xad}}, + "nvHarr": {Name: "nvHarr", CodePoints: []int{10500}, Characters: []byte{0xe2, 0xa4, 0x84}}, + "nvap": {Name: "nvap", CodePoints: []int{8781, 8402}, Characters: []byte{0xe2, 0x89, 0x8d, 0xe2, 0x83, 0x92}}, + "nvdash": {Name: "nvdash", CodePoints: []int{8876}, Characters: []byte{0xe2, 0x8a, 0xac}}, + "nvge": {Name: "nvge", CodePoints: []int{8805, 8402}, Characters: []byte{0xe2, 0x89, 0xa5, 0xe2, 0x83, 0x92}}, + "nvgt": {Name: "nvgt", CodePoints: []int{62, 8402}, Characters: []byte{0x3e, 0xe2, 0x83, 0x92}}, + "nvinfin": {Name: "nvinfin", CodePoints: []int{10718}, Characters: []byte{0xe2, 0xa7, 0x9e}}, + "nvlArr": {Name: "nvlArr", CodePoints: []int{10498}, Characters: []byte{0xe2, 0xa4, 0x82}}, + "nvle": {Name: "nvle", CodePoints: []int{8804, 8402}, Characters: []byte{0xe2, 0x89, 0xa4, 0xe2, 0x83, 0x92}}, + "nvlt": {Name: "nvlt", CodePoints: []int{60, 8402}, Characters: []byte{0x3c, 0xe2, 0x83, 0x92}}, + "nvltrie": {Name: "nvltrie", CodePoints: []int{8884, 8402}, Characters: []byte{0xe2, 0x8a, 0xb4, 0xe2, 0x83, 0x92}}, + "nvrArr": {Name: "nvrArr", CodePoints: []int{10499}, Characters: []byte{0xe2, 0xa4, 0x83}}, + "nvrtrie": {Name: "nvrtrie", CodePoints: []int{8885, 8402}, Characters: []byte{0xe2, 0x8a, 0xb5, 0xe2, 0x83, 0x92}}, + "nvsim": {Name: "nvsim", CodePoints: []int{8764, 8402}, Characters: []byte{0xe2, 0x88, 0xbc, 0xe2, 0x83, 0x92}}, + "nwArr": {Name: "nwArr", CodePoints: []int{8662}, Characters: []byte{0xe2, 0x87, 0x96}}, + "nwarhk": {Name: "nwarhk", CodePoints: []int{10531}, Characters: []byte{0xe2, 0xa4, 0xa3}}, + "nwarr": {Name: "nwarr", CodePoints: []int{8598}, Characters: []byte{0xe2, 0x86, 0x96}}, + "nwarrow": {Name: "nwarrow", CodePoints: []int{8598}, Characters: []byte{0xe2, 0x86, 0x96}}, + "nwnear": {Name: "nwnear", CodePoints: []int{10535}, Characters: []byte{0xe2, 0xa4, 0xa7}}, + "oS": {Name: "oS", CodePoints: []int{9416}, Characters: []byte{0xe2, 0x93, 0x88}}, + "oacute": {Name: "oacute", CodePoints: []int{243}, Characters: []byte{0xc3, 0xb3}}, + "oast": {Name: "oast", CodePoints: []int{8859}, Characters: []byte{0xe2, 0x8a, 0x9b}}, + "ocir": {Name: "ocir", CodePoints: []int{8858}, Characters: []byte{0xe2, 0x8a, 0x9a}}, + "ocirc": {Name: "ocirc", CodePoints: []int{244}, Characters: []byte{0xc3, 0xb4}}, + "ocy": {Name: "ocy", CodePoints: []int{1086}, Characters: []byte{0xd0, 0xbe}}, + "odash": {Name: "odash", CodePoints: []int{8861}, Characters: []byte{0xe2, 0x8a, 0x9d}}, + "odblac": {Name: "odblac", CodePoints: []int{337}, Characters: []byte{0xc5, 0x91}}, + "odiv": {Name: "odiv", CodePoints: []int{10808}, Characters: []byte{0xe2, 0xa8, 0xb8}}, + "odot": {Name: "odot", CodePoints: []int{8857}, Characters: []byte{0xe2, 0x8a, 0x99}}, + "odsold": {Name: "odsold", CodePoints: []int{10684}, Characters: []byte{0xe2, 0xa6, 0xbc}}, + "oelig": {Name: "oelig", CodePoints: []int{339}, Characters: []byte{0xc5, 0x93}}, + "ofcir": {Name: "ofcir", CodePoints: []int{10687}, Characters: []byte{0xe2, 0xa6, 0xbf}}, + "ofr": {Name: "ofr", CodePoints: []int{120108}, Characters: []byte{0xf0, 0x9d, 0x94, 0xac}}, + "ogon": {Name: "ogon", CodePoints: []int{731}, Characters: []byte{0xcb, 0x9b}}, + "ograve": {Name: "ograve", CodePoints: []int{242}, Characters: []byte{0xc3, 0xb2}}, + "ogt": {Name: "ogt", CodePoints: []int{10689}, Characters: []byte{0xe2, 0xa7, 0x81}}, + "ohbar": {Name: "ohbar", CodePoints: []int{10677}, Characters: []byte{0xe2, 0xa6, 0xb5}}, + "ohm": {Name: "ohm", CodePoints: []int{937}, Characters: []byte{0xce, 0xa9}}, + "oint": {Name: "oint", CodePoints: []int{8750}, Characters: []byte{0xe2, 0x88, 0xae}}, + "olarr": {Name: "olarr", CodePoints: []int{8634}, Characters: []byte{0xe2, 0x86, 0xba}}, + "olcir": {Name: "olcir", CodePoints: []int{10686}, Characters: []byte{0xe2, 0xa6, 0xbe}}, + "olcross": {Name: "olcross", CodePoints: []int{10683}, Characters: []byte{0xe2, 0xa6, 0xbb}}, + "oline": {Name: "oline", CodePoints: []int{8254}, Characters: []byte{0xe2, 0x80, 0xbe}}, + "olt": {Name: "olt", CodePoints: []int{10688}, Characters: []byte{0xe2, 0xa7, 0x80}}, + "omacr": {Name: "omacr", CodePoints: []int{333}, Characters: []byte{0xc5, 0x8d}}, + "omega": {Name: "omega", CodePoints: []int{969}, Characters: []byte{0xcf, 0x89}}, + "omicron": {Name: "omicron", CodePoints: []int{959}, Characters: []byte{0xce, 0xbf}}, + "omid": {Name: "omid", CodePoints: []int{10678}, Characters: []byte{0xe2, 0xa6, 0xb6}}, + "ominus": {Name: "ominus", CodePoints: []int{8854}, Characters: []byte{0xe2, 0x8a, 0x96}}, + "oopf": {Name: "oopf", CodePoints: []int{120160}, Characters: []byte{0xf0, 0x9d, 0x95, 0xa0}}, + "opar": {Name: "opar", CodePoints: []int{10679}, Characters: []byte{0xe2, 0xa6, 0xb7}}, + "operp": {Name: "operp", CodePoints: []int{10681}, Characters: []byte{0xe2, 0xa6, 0xb9}}, + "oplus": {Name: "oplus", CodePoints: []int{8853}, Characters: []byte{0xe2, 0x8a, 0x95}}, + "or": {Name: "or", CodePoints: []int{8744}, Characters: []byte{0xe2, 0x88, 0xa8}}, + "orarr": {Name: "orarr", CodePoints: []int{8635}, Characters: []byte{0xe2, 0x86, 0xbb}}, + "ord": {Name: "ord", CodePoints: []int{10845}, Characters: []byte{0xe2, 0xa9, 0x9d}}, + "order": {Name: "order", CodePoints: []int{8500}, Characters: []byte{0xe2, 0x84, 0xb4}}, + "orderof": {Name: "orderof", CodePoints: []int{8500}, Characters: []byte{0xe2, 0x84, 0xb4}}, + "ordf": {Name: "ordf", CodePoints: []int{170}, Characters: []byte{0xc2, 0xaa}}, + "ordm": {Name: "ordm", CodePoints: []int{186}, Characters: []byte{0xc2, 0xba}}, + "origof": {Name: "origof", CodePoints: []int{8886}, Characters: []byte{0xe2, 0x8a, 0xb6}}, + "oror": {Name: "oror", CodePoints: []int{10838}, Characters: []byte{0xe2, 0xa9, 0x96}}, + "orslope": {Name: "orslope", CodePoints: []int{10839}, Characters: []byte{0xe2, 0xa9, 0x97}}, + "orv": {Name: "orv", CodePoints: []int{10843}, Characters: []byte{0xe2, 0xa9, 0x9b}}, + "oscr": {Name: "oscr", CodePoints: []int{8500}, Characters: []byte{0xe2, 0x84, 0xb4}}, + "oslash": {Name: "oslash", CodePoints: []int{248}, Characters: []byte{0xc3, 0xb8}}, + "osol": {Name: "osol", CodePoints: []int{8856}, Characters: []byte{0xe2, 0x8a, 0x98}}, + "otilde": {Name: "otilde", CodePoints: []int{245}, Characters: []byte{0xc3, 0xb5}}, + "otimes": {Name: "otimes", CodePoints: []int{8855}, Characters: []byte{0xe2, 0x8a, 0x97}}, + "otimesas": {Name: "otimesas", CodePoints: []int{10806}, Characters: []byte{0xe2, 0xa8, 0xb6}}, + "ouml": {Name: "ouml", CodePoints: []int{246}, Characters: []byte{0xc3, 0xb6}}, + "ovbar": {Name: "ovbar", CodePoints: []int{9021}, Characters: []byte{0xe2, 0x8c, 0xbd}}, + "par": {Name: "par", CodePoints: []int{8741}, Characters: []byte{0xe2, 0x88, 0xa5}}, + "para": {Name: "para", CodePoints: []int{182}, Characters: []byte{0xc2, 0xb6}}, + "parallel": {Name: "parallel", CodePoints: []int{8741}, Characters: []byte{0xe2, 0x88, 0xa5}}, + "parsim": {Name: "parsim", CodePoints: []int{10995}, Characters: []byte{0xe2, 0xab, 0xb3}}, + "parsl": {Name: "parsl", CodePoints: []int{11005}, Characters: []byte{0xe2, 0xab, 0xbd}}, + "part": {Name: "part", CodePoints: []int{8706}, Characters: []byte{0xe2, 0x88, 0x82}}, + "pcy": {Name: "pcy", CodePoints: []int{1087}, Characters: []byte{0xd0, 0xbf}}, + "percnt": {Name: "percnt", CodePoints: []int{37}, Characters: []byte{0x25}}, + "period": {Name: "period", CodePoints: []int{46}, Characters: []byte{0x2e}}, + "permil": {Name: "permil", CodePoints: []int{8240}, Characters: []byte{0xe2, 0x80, 0xb0}}, + "perp": {Name: "perp", CodePoints: []int{8869}, Characters: []byte{0xe2, 0x8a, 0xa5}}, + "pertenk": {Name: "pertenk", CodePoints: []int{8241}, Characters: []byte{0xe2, 0x80, 0xb1}}, + "pfr": {Name: "pfr", CodePoints: []int{120109}, Characters: []byte{0xf0, 0x9d, 0x94, 0xad}}, + "phi": {Name: "phi", CodePoints: []int{966}, Characters: []byte{0xcf, 0x86}}, + "phiv": {Name: "phiv", CodePoints: []int{981}, Characters: []byte{0xcf, 0x95}}, + "phmmat": {Name: "phmmat", CodePoints: []int{8499}, Characters: []byte{0xe2, 0x84, 0xb3}}, + "phone": {Name: "phone", CodePoints: []int{9742}, Characters: []byte{0xe2, 0x98, 0x8e}}, + "pi": {Name: "pi", CodePoints: []int{960}, Characters: []byte{0xcf, 0x80}}, + "pitchfork": {Name: "pitchfork", CodePoints: []int{8916}, Characters: []byte{0xe2, 0x8b, 0x94}}, + "piv": {Name: "piv", CodePoints: []int{982}, Characters: []byte{0xcf, 0x96}}, + "planck": {Name: "planck", CodePoints: []int{8463}, Characters: []byte{0xe2, 0x84, 0x8f}}, + "planckh": {Name: "planckh", CodePoints: []int{8462}, Characters: []byte{0xe2, 0x84, 0x8e}}, + "plankv": {Name: "plankv", CodePoints: []int{8463}, Characters: []byte{0xe2, 0x84, 0x8f}}, + "plus": {Name: "plus", CodePoints: []int{43}, Characters: []byte{0x2b}}, + "plusacir": {Name: "plusacir", CodePoints: []int{10787}, Characters: []byte{0xe2, 0xa8, 0xa3}}, + "plusb": {Name: "plusb", CodePoints: []int{8862}, Characters: []byte{0xe2, 0x8a, 0x9e}}, + "pluscir": {Name: "pluscir", CodePoints: []int{10786}, Characters: []byte{0xe2, 0xa8, 0xa2}}, + "plusdo": {Name: "plusdo", CodePoints: []int{8724}, Characters: []byte{0xe2, 0x88, 0x94}}, + "plusdu": {Name: "plusdu", CodePoints: []int{10789}, Characters: []byte{0xe2, 0xa8, 0xa5}}, + "pluse": {Name: "pluse", CodePoints: []int{10866}, Characters: []byte{0xe2, 0xa9, 0xb2}}, + "plusmn": {Name: "plusmn", CodePoints: []int{177}, Characters: []byte{0xc2, 0xb1}}, + "plussim": {Name: "plussim", CodePoints: []int{10790}, Characters: []byte{0xe2, 0xa8, 0xa6}}, + "plustwo": {Name: "plustwo", CodePoints: []int{10791}, Characters: []byte{0xe2, 0xa8, 0xa7}}, + "pm": {Name: "pm", CodePoints: []int{177}, Characters: []byte{0xc2, 0xb1}}, + "pointint": {Name: "pointint", CodePoints: []int{10773}, Characters: []byte{0xe2, 0xa8, 0x95}}, + "popf": {Name: "popf", CodePoints: []int{120161}, Characters: []byte{0xf0, 0x9d, 0x95, 0xa1}}, + "pound": {Name: "pound", CodePoints: []int{163}, Characters: []byte{0xc2, 0xa3}}, + "pr": {Name: "pr", CodePoints: []int{8826}, Characters: []byte{0xe2, 0x89, 0xba}}, + "prE": {Name: "prE", CodePoints: []int{10931}, Characters: []byte{0xe2, 0xaa, 0xb3}}, + "prap": {Name: "prap", CodePoints: []int{10935}, Characters: []byte{0xe2, 0xaa, 0xb7}}, + "prcue": {Name: "prcue", CodePoints: []int{8828}, Characters: []byte{0xe2, 0x89, 0xbc}}, + "pre": {Name: "pre", CodePoints: []int{10927}, Characters: []byte{0xe2, 0xaa, 0xaf}}, + "prec": {Name: "prec", CodePoints: []int{8826}, Characters: []byte{0xe2, 0x89, 0xba}}, + "precapprox": {Name: "precapprox", CodePoints: []int{10935}, Characters: []byte{0xe2, 0xaa, 0xb7}}, + "preccurlyeq": {Name: "preccurlyeq", CodePoints: []int{8828}, Characters: []byte{0xe2, 0x89, 0xbc}}, + "preceq": {Name: "preceq", CodePoints: []int{10927}, Characters: []byte{0xe2, 0xaa, 0xaf}}, + "precnapprox": {Name: "precnapprox", CodePoints: []int{10937}, Characters: []byte{0xe2, 0xaa, 0xb9}}, + "precneqq": {Name: "precneqq", CodePoints: []int{10933}, Characters: []byte{0xe2, 0xaa, 0xb5}}, + "precnsim": {Name: "precnsim", CodePoints: []int{8936}, Characters: []byte{0xe2, 0x8b, 0xa8}}, + "precsim": {Name: "precsim", CodePoints: []int{8830}, Characters: []byte{0xe2, 0x89, 0xbe}}, + "prime": {Name: "prime", CodePoints: []int{8242}, Characters: []byte{0xe2, 0x80, 0xb2}}, + "primes": {Name: "primes", CodePoints: []int{8473}, Characters: []byte{0xe2, 0x84, 0x99}}, + "prnE": {Name: "prnE", CodePoints: []int{10933}, Characters: []byte{0xe2, 0xaa, 0xb5}}, + "prnap": {Name: "prnap", CodePoints: []int{10937}, Characters: []byte{0xe2, 0xaa, 0xb9}}, + "prnsim": {Name: "prnsim", CodePoints: []int{8936}, Characters: []byte{0xe2, 0x8b, 0xa8}}, + "prod": {Name: "prod", CodePoints: []int{8719}, Characters: []byte{0xe2, 0x88, 0x8f}}, + "profalar": {Name: "profalar", CodePoints: []int{9006}, Characters: []byte{0xe2, 0x8c, 0xae}}, + "profline": {Name: "profline", CodePoints: []int{8978}, Characters: []byte{0xe2, 0x8c, 0x92}}, + "profsurf": {Name: "profsurf", CodePoints: []int{8979}, Characters: []byte{0xe2, 0x8c, 0x93}}, + "prop": {Name: "prop", CodePoints: []int{8733}, Characters: []byte{0xe2, 0x88, 0x9d}}, + "propto": {Name: "propto", CodePoints: []int{8733}, Characters: []byte{0xe2, 0x88, 0x9d}}, + "prsim": {Name: "prsim", CodePoints: []int{8830}, Characters: []byte{0xe2, 0x89, 0xbe}}, + "prurel": {Name: "prurel", CodePoints: []int{8880}, Characters: []byte{0xe2, 0x8a, 0xb0}}, + "pscr": {Name: "pscr", CodePoints: []int{120005}, Characters: []byte{0xf0, 0x9d, 0x93, 0x85}}, + "psi": {Name: "psi", CodePoints: []int{968}, Characters: []byte{0xcf, 0x88}}, + "puncsp": {Name: "puncsp", CodePoints: []int{8200}, Characters: []byte{0xe2, 0x80, 0x88}}, + "qfr": {Name: "qfr", CodePoints: []int{120110}, Characters: []byte{0xf0, 0x9d, 0x94, 0xae}}, + "qint": {Name: "qint", CodePoints: []int{10764}, Characters: []byte{0xe2, 0xa8, 0x8c}}, + "qopf": {Name: "qopf", CodePoints: []int{120162}, Characters: []byte{0xf0, 0x9d, 0x95, 0xa2}}, + "qprime": {Name: "qprime", CodePoints: []int{8279}, Characters: []byte{0xe2, 0x81, 0x97}}, + "qscr": {Name: "qscr", CodePoints: []int{120006}, Characters: []byte{0xf0, 0x9d, 0x93, 0x86}}, + "quaternions": {Name: "quaternions", CodePoints: []int{8461}, Characters: []byte{0xe2, 0x84, 0x8d}}, + "quatint": {Name: "quatint", CodePoints: []int{10774}, Characters: []byte{0xe2, 0xa8, 0x96}}, + "quest": {Name: "quest", CodePoints: []int{63}, Characters: []byte{0x3f}}, + "questeq": {Name: "questeq", CodePoints: []int{8799}, Characters: []byte{0xe2, 0x89, 0x9f}}, + "quot": {Name: "quot", CodePoints: []int{34}, Characters: []byte{0x22}}, + "rAarr": {Name: "rAarr", CodePoints: []int{8667}, Characters: []byte{0xe2, 0x87, 0x9b}}, + "rArr": {Name: "rArr", CodePoints: []int{8658}, Characters: []byte{0xe2, 0x87, 0x92}}, + "rAtail": {Name: "rAtail", CodePoints: []int{10524}, Characters: []byte{0xe2, 0xa4, 0x9c}}, + "rBarr": {Name: "rBarr", CodePoints: []int{10511}, Characters: []byte{0xe2, 0xa4, 0x8f}}, + "rHar": {Name: "rHar", CodePoints: []int{10596}, Characters: []byte{0xe2, 0xa5, 0xa4}}, + "race": {Name: "race", CodePoints: []int{8765, 817}, Characters: []byte{0xe2, 0x88, 0xbd, 0xcc, 0xb1}}, + "racute": {Name: "racute", CodePoints: []int{341}, Characters: []byte{0xc5, 0x95}}, + "radic": {Name: "radic", CodePoints: []int{8730}, Characters: []byte{0xe2, 0x88, 0x9a}}, + "raemptyv": {Name: "raemptyv", CodePoints: []int{10675}, Characters: []byte{0xe2, 0xa6, 0xb3}}, + "rang": {Name: "rang", CodePoints: []int{10217}, Characters: []byte{0xe2, 0x9f, 0xa9}}, + "rangd": {Name: "rangd", CodePoints: []int{10642}, Characters: []byte{0xe2, 0xa6, 0x92}}, + "range": {Name: "range", CodePoints: []int{10661}, Characters: []byte{0xe2, 0xa6, 0xa5}}, + "rangle": {Name: "rangle", CodePoints: []int{10217}, Characters: []byte{0xe2, 0x9f, 0xa9}}, + "raquo": {Name: "raquo", CodePoints: []int{187}, Characters: []byte{0xc2, 0xbb}}, + "rarr": {Name: "rarr", CodePoints: []int{8594}, Characters: []byte{0xe2, 0x86, 0x92}}, + "rarrap": {Name: "rarrap", CodePoints: []int{10613}, Characters: []byte{0xe2, 0xa5, 0xb5}}, + "rarrb": {Name: "rarrb", CodePoints: []int{8677}, Characters: []byte{0xe2, 0x87, 0xa5}}, + "rarrbfs": {Name: "rarrbfs", CodePoints: []int{10528}, Characters: []byte{0xe2, 0xa4, 0xa0}}, + "rarrc": {Name: "rarrc", CodePoints: []int{10547}, Characters: []byte{0xe2, 0xa4, 0xb3}}, + "rarrfs": {Name: "rarrfs", CodePoints: []int{10526}, Characters: []byte{0xe2, 0xa4, 0x9e}}, + "rarrhk": {Name: "rarrhk", CodePoints: []int{8618}, Characters: []byte{0xe2, 0x86, 0xaa}}, + "rarrlp": {Name: "rarrlp", CodePoints: []int{8620}, Characters: []byte{0xe2, 0x86, 0xac}}, + "rarrpl": {Name: "rarrpl", CodePoints: []int{10565}, Characters: []byte{0xe2, 0xa5, 0x85}}, + "rarrsim": {Name: "rarrsim", CodePoints: []int{10612}, Characters: []byte{0xe2, 0xa5, 0xb4}}, + "rarrtl": {Name: "rarrtl", CodePoints: []int{8611}, Characters: []byte{0xe2, 0x86, 0xa3}}, + "rarrw": {Name: "rarrw", CodePoints: []int{8605}, Characters: []byte{0xe2, 0x86, 0x9d}}, + "ratail": {Name: "ratail", CodePoints: []int{10522}, Characters: []byte{0xe2, 0xa4, 0x9a}}, + "ratio": {Name: "ratio", CodePoints: []int{8758}, Characters: []byte{0xe2, 0x88, 0xb6}}, + "rationals": {Name: "rationals", CodePoints: []int{8474}, Characters: []byte{0xe2, 0x84, 0x9a}}, + "rbarr": {Name: "rbarr", CodePoints: []int{10509}, Characters: []byte{0xe2, 0xa4, 0x8d}}, + "rbbrk": {Name: "rbbrk", CodePoints: []int{10099}, Characters: []byte{0xe2, 0x9d, 0xb3}}, + "rbrace": {Name: "rbrace", CodePoints: []int{125}, Characters: []byte{0x7d}}, + "rbrack": {Name: "rbrack", CodePoints: []int{93}, Characters: []byte{0x5d}}, + "rbrke": {Name: "rbrke", CodePoints: []int{10636}, Characters: []byte{0xe2, 0xa6, 0x8c}}, + "rbrksld": {Name: "rbrksld", CodePoints: []int{10638}, Characters: []byte{0xe2, 0xa6, 0x8e}}, + "rbrkslu": {Name: "rbrkslu", CodePoints: []int{10640}, Characters: []byte{0xe2, 0xa6, 0x90}}, + "rcaron": {Name: "rcaron", CodePoints: []int{345}, Characters: []byte{0xc5, 0x99}}, + "rcedil": {Name: "rcedil", CodePoints: []int{343}, Characters: []byte{0xc5, 0x97}}, + "rceil": {Name: "rceil", CodePoints: []int{8969}, Characters: []byte{0xe2, 0x8c, 0x89}}, + "rcub": {Name: "rcub", CodePoints: []int{125}, Characters: []byte{0x7d}}, + "rcy": {Name: "rcy", CodePoints: []int{1088}, Characters: []byte{0xd1, 0x80}}, + "rdca": {Name: "rdca", CodePoints: []int{10551}, Characters: []byte{0xe2, 0xa4, 0xb7}}, + "rdldhar": {Name: "rdldhar", CodePoints: []int{10601}, Characters: []byte{0xe2, 0xa5, 0xa9}}, + "rdquo": {Name: "rdquo", CodePoints: []int{8221}, Characters: []byte{0xe2, 0x80, 0x9d}}, + "rdquor": {Name: "rdquor", CodePoints: []int{8221}, Characters: []byte{0xe2, 0x80, 0x9d}}, + "rdsh": {Name: "rdsh", CodePoints: []int{8627}, Characters: []byte{0xe2, 0x86, 0xb3}}, + "real": {Name: "real", CodePoints: []int{8476}, Characters: []byte{0xe2, 0x84, 0x9c}}, + "realine": {Name: "realine", CodePoints: []int{8475}, Characters: []byte{0xe2, 0x84, 0x9b}}, + "realpart": {Name: "realpart", CodePoints: []int{8476}, Characters: []byte{0xe2, 0x84, 0x9c}}, + "reals": {Name: "reals", CodePoints: []int{8477}, Characters: []byte{0xe2, 0x84, 0x9d}}, + "rect": {Name: "rect", CodePoints: []int{9645}, Characters: []byte{0xe2, 0x96, 0xad}}, + "reg": {Name: "reg", CodePoints: []int{174}, Characters: []byte{0xc2, 0xae}}, + "rfisht": {Name: "rfisht", CodePoints: []int{10621}, Characters: []byte{0xe2, 0xa5, 0xbd}}, + "rfloor": {Name: "rfloor", CodePoints: []int{8971}, Characters: []byte{0xe2, 0x8c, 0x8b}}, + "rfr": {Name: "rfr", CodePoints: []int{120111}, Characters: []byte{0xf0, 0x9d, 0x94, 0xaf}}, + "rhard": {Name: "rhard", CodePoints: []int{8641}, Characters: []byte{0xe2, 0x87, 0x81}}, + "rharu": {Name: "rharu", CodePoints: []int{8640}, Characters: []byte{0xe2, 0x87, 0x80}}, + "rharul": {Name: "rharul", CodePoints: []int{10604}, Characters: []byte{0xe2, 0xa5, 0xac}}, + "rho": {Name: "rho", CodePoints: []int{961}, Characters: []byte{0xcf, 0x81}}, + "rhov": {Name: "rhov", CodePoints: []int{1009}, Characters: []byte{0xcf, 0xb1}}, + "rightarrow": {Name: "rightarrow", CodePoints: []int{8594}, Characters: []byte{0xe2, 0x86, 0x92}}, + "rightarrowtail": {Name: "rightarrowtail", CodePoints: []int{8611}, Characters: []byte{0xe2, 0x86, 0xa3}}, + "rightharpoondown": {Name: "rightharpoondown", CodePoints: []int{8641}, Characters: []byte{0xe2, 0x87, 0x81}}, + "rightharpoonup": {Name: "rightharpoonup", CodePoints: []int{8640}, Characters: []byte{0xe2, 0x87, 0x80}}, + "rightleftarrows": {Name: "rightleftarrows", CodePoints: []int{8644}, Characters: []byte{0xe2, 0x87, 0x84}}, + "rightleftharpoons": {Name: "rightleftharpoons", CodePoints: []int{8652}, Characters: []byte{0xe2, 0x87, 0x8c}}, + "rightrightarrows": {Name: "rightrightarrows", CodePoints: []int{8649}, Characters: []byte{0xe2, 0x87, 0x89}}, + "rightsquigarrow": {Name: "rightsquigarrow", CodePoints: []int{8605}, Characters: []byte{0xe2, 0x86, 0x9d}}, + "rightthreetimes": {Name: "rightthreetimes", CodePoints: []int{8908}, Characters: []byte{0xe2, 0x8b, 0x8c}}, + "ring": {Name: "ring", CodePoints: []int{730}, Characters: []byte{0xcb, 0x9a}}, + "risingdotseq": {Name: "risingdotseq", CodePoints: []int{8787}, Characters: []byte{0xe2, 0x89, 0x93}}, + "rlarr": {Name: "rlarr", CodePoints: []int{8644}, Characters: []byte{0xe2, 0x87, 0x84}}, + "rlhar": {Name: "rlhar", CodePoints: []int{8652}, Characters: []byte{0xe2, 0x87, 0x8c}}, + "rlm": {Name: "rlm", CodePoints: []int{8207}, Characters: []byte{0xe2, 0x80, 0x8f}}, + "rmoust": {Name: "rmoust", CodePoints: []int{9137}, Characters: []byte{0xe2, 0x8e, 0xb1}}, + "rmoustache": {Name: "rmoustache", CodePoints: []int{9137}, Characters: []byte{0xe2, 0x8e, 0xb1}}, + "rnmid": {Name: "rnmid", CodePoints: []int{10990}, Characters: []byte{0xe2, 0xab, 0xae}}, + "roang": {Name: "roang", CodePoints: []int{10221}, Characters: []byte{0xe2, 0x9f, 0xad}}, + "roarr": {Name: "roarr", CodePoints: []int{8702}, Characters: []byte{0xe2, 0x87, 0xbe}}, + "robrk": {Name: "robrk", CodePoints: []int{10215}, Characters: []byte{0xe2, 0x9f, 0xa7}}, + "ropar": {Name: "ropar", CodePoints: []int{10630}, Characters: []byte{0xe2, 0xa6, 0x86}}, + "ropf": {Name: "ropf", CodePoints: []int{120163}, Characters: []byte{0xf0, 0x9d, 0x95, 0xa3}}, + "roplus": {Name: "roplus", CodePoints: []int{10798}, Characters: []byte{0xe2, 0xa8, 0xae}}, + "rotimes": {Name: "rotimes", CodePoints: []int{10805}, Characters: []byte{0xe2, 0xa8, 0xb5}}, + "rpar": {Name: "rpar", CodePoints: []int{41}, Characters: []byte{0x29}}, + "rpargt": {Name: "rpargt", CodePoints: []int{10644}, Characters: []byte{0xe2, 0xa6, 0x94}}, + "rppolint": {Name: "rppolint", CodePoints: []int{10770}, Characters: []byte{0xe2, 0xa8, 0x92}}, + "rrarr": {Name: "rrarr", CodePoints: []int{8649}, Characters: []byte{0xe2, 0x87, 0x89}}, + "rsaquo": {Name: "rsaquo", CodePoints: []int{8250}, Characters: []byte{0xe2, 0x80, 0xba}}, + "rscr": {Name: "rscr", CodePoints: []int{120007}, Characters: []byte{0xf0, 0x9d, 0x93, 0x87}}, + "rsh": {Name: "rsh", CodePoints: []int{8625}, Characters: []byte{0xe2, 0x86, 0xb1}}, + "rsqb": {Name: "rsqb", CodePoints: []int{93}, Characters: []byte{0x5d}}, + "rsquo": {Name: "rsquo", CodePoints: []int{8217}, Characters: []byte{0xe2, 0x80, 0x99}}, + "rsquor": {Name: "rsquor", CodePoints: []int{8217}, Characters: []byte{0xe2, 0x80, 0x99}}, + "rthree": {Name: "rthree", CodePoints: []int{8908}, Characters: []byte{0xe2, 0x8b, 0x8c}}, + "rtimes": {Name: "rtimes", CodePoints: []int{8906}, Characters: []byte{0xe2, 0x8b, 0x8a}}, + "rtri": {Name: "rtri", CodePoints: []int{9657}, Characters: []byte{0xe2, 0x96, 0xb9}}, + "rtrie": {Name: "rtrie", CodePoints: []int{8885}, Characters: []byte{0xe2, 0x8a, 0xb5}}, + "rtrif": {Name: "rtrif", CodePoints: []int{9656}, Characters: []byte{0xe2, 0x96, 0xb8}}, + "rtriltri": {Name: "rtriltri", CodePoints: []int{10702}, Characters: []byte{0xe2, 0xa7, 0x8e}}, + "ruluhar": {Name: "ruluhar", CodePoints: []int{10600}, Characters: []byte{0xe2, 0xa5, 0xa8}}, + "rx": {Name: "rx", CodePoints: []int{8478}, Characters: []byte{0xe2, 0x84, 0x9e}}, + "sacute": {Name: "sacute", CodePoints: []int{347}, Characters: []byte{0xc5, 0x9b}}, + "sbquo": {Name: "sbquo", CodePoints: []int{8218}, Characters: []byte{0xe2, 0x80, 0x9a}}, + "sc": {Name: "sc", CodePoints: []int{8827}, Characters: []byte{0xe2, 0x89, 0xbb}}, + "scE": {Name: "scE", CodePoints: []int{10932}, Characters: []byte{0xe2, 0xaa, 0xb4}}, + "scap": {Name: "scap", CodePoints: []int{10936}, Characters: []byte{0xe2, 0xaa, 0xb8}}, + "scaron": {Name: "scaron", CodePoints: []int{353}, Characters: []byte{0xc5, 0xa1}}, + "sccue": {Name: "sccue", CodePoints: []int{8829}, Characters: []byte{0xe2, 0x89, 0xbd}}, + "sce": {Name: "sce", CodePoints: []int{10928}, Characters: []byte{0xe2, 0xaa, 0xb0}}, + "scedil": {Name: "scedil", CodePoints: []int{351}, Characters: []byte{0xc5, 0x9f}}, + "scirc": {Name: "scirc", CodePoints: []int{349}, Characters: []byte{0xc5, 0x9d}}, + "scnE": {Name: "scnE", CodePoints: []int{10934}, Characters: []byte{0xe2, 0xaa, 0xb6}}, + "scnap": {Name: "scnap", CodePoints: []int{10938}, Characters: []byte{0xe2, 0xaa, 0xba}}, + "scnsim": {Name: "scnsim", CodePoints: []int{8937}, Characters: []byte{0xe2, 0x8b, 0xa9}}, + "scpolint": {Name: "scpolint", CodePoints: []int{10771}, Characters: []byte{0xe2, 0xa8, 0x93}}, + "scsim": {Name: "scsim", CodePoints: []int{8831}, Characters: []byte{0xe2, 0x89, 0xbf}}, + "scy": {Name: "scy", CodePoints: []int{1089}, Characters: []byte{0xd1, 0x81}}, + "sdot": {Name: "sdot", CodePoints: []int{8901}, Characters: []byte{0xe2, 0x8b, 0x85}}, + "sdotb": {Name: "sdotb", CodePoints: []int{8865}, Characters: []byte{0xe2, 0x8a, 0xa1}}, + "sdote": {Name: "sdote", CodePoints: []int{10854}, Characters: []byte{0xe2, 0xa9, 0xa6}}, + "seArr": {Name: "seArr", CodePoints: []int{8664}, Characters: []byte{0xe2, 0x87, 0x98}}, + "searhk": {Name: "searhk", CodePoints: []int{10533}, Characters: []byte{0xe2, 0xa4, 0xa5}}, + "searr": {Name: "searr", CodePoints: []int{8600}, Characters: []byte{0xe2, 0x86, 0x98}}, + "searrow": {Name: "searrow", CodePoints: []int{8600}, Characters: []byte{0xe2, 0x86, 0x98}}, + "sect": {Name: "sect", CodePoints: []int{167}, Characters: []byte{0xc2, 0xa7}}, + "semi": {Name: "semi", CodePoints: []int{59}, Characters: []byte{0x3b}}, + "seswar": {Name: "seswar", CodePoints: []int{10537}, Characters: []byte{0xe2, 0xa4, 0xa9}}, + "setminus": {Name: "setminus", CodePoints: []int{8726}, Characters: []byte{0xe2, 0x88, 0x96}}, + "setmn": {Name: "setmn", CodePoints: []int{8726}, Characters: []byte{0xe2, 0x88, 0x96}}, + "sext": {Name: "sext", CodePoints: []int{10038}, Characters: []byte{0xe2, 0x9c, 0xb6}}, + "sfr": {Name: "sfr", CodePoints: []int{120112}, Characters: []byte{0xf0, 0x9d, 0x94, 0xb0}}, + "sfrown": {Name: "sfrown", CodePoints: []int{8994}, Characters: []byte{0xe2, 0x8c, 0xa2}}, + "sharp": {Name: "sharp", CodePoints: []int{9839}, Characters: []byte{0xe2, 0x99, 0xaf}}, + "shchcy": {Name: "shchcy", CodePoints: []int{1097}, Characters: []byte{0xd1, 0x89}}, + "shcy": {Name: "shcy", CodePoints: []int{1096}, Characters: []byte{0xd1, 0x88}}, + "shortmid": {Name: "shortmid", CodePoints: []int{8739}, Characters: []byte{0xe2, 0x88, 0xa3}}, + "shortparallel": {Name: "shortparallel", CodePoints: []int{8741}, Characters: []byte{0xe2, 0x88, 0xa5}}, + "shy": {Name: "shy", CodePoints: []int{173}, Characters: []byte{0xc2, 0xad}}, + "sigma": {Name: "sigma", CodePoints: []int{963}, Characters: []byte{0xcf, 0x83}}, + "sigmaf": {Name: "sigmaf", CodePoints: []int{962}, Characters: []byte{0xcf, 0x82}}, + "sigmav": {Name: "sigmav", CodePoints: []int{962}, Characters: []byte{0xcf, 0x82}}, + "sim": {Name: "sim", CodePoints: []int{8764}, Characters: []byte{0xe2, 0x88, 0xbc}}, + "simdot": {Name: "simdot", CodePoints: []int{10858}, Characters: []byte{0xe2, 0xa9, 0xaa}}, + "sime": {Name: "sime", CodePoints: []int{8771}, Characters: []byte{0xe2, 0x89, 0x83}}, + "simeq": {Name: "simeq", CodePoints: []int{8771}, Characters: []byte{0xe2, 0x89, 0x83}}, + "simg": {Name: "simg", CodePoints: []int{10910}, Characters: []byte{0xe2, 0xaa, 0x9e}}, + "simgE": {Name: "simgE", CodePoints: []int{10912}, Characters: []byte{0xe2, 0xaa, 0xa0}}, + "siml": {Name: "siml", CodePoints: []int{10909}, Characters: []byte{0xe2, 0xaa, 0x9d}}, + "simlE": {Name: "simlE", CodePoints: []int{10911}, Characters: []byte{0xe2, 0xaa, 0x9f}}, + "simne": {Name: "simne", CodePoints: []int{8774}, Characters: []byte{0xe2, 0x89, 0x86}}, + "simplus": {Name: "simplus", CodePoints: []int{10788}, Characters: []byte{0xe2, 0xa8, 0xa4}}, + "simrarr": {Name: "simrarr", CodePoints: []int{10610}, Characters: []byte{0xe2, 0xa5, 0xb2}}, + "slarr": {Name: "slarr", CodePoints: []int{8592}, Characters: []byte{0xe2, 0x86, 0x90}}, + "smallsetminus": {Name: "smallsetminus", CodePoints: []int{8726}, Characters: []byte{0xe2, 0x88, 0x96}}, + "smashp": {Name: "smashp", CodePoints: []int{10803}, Characters: []byte{0xe2, 0xa8, 0xb3}}, + "smeparsl": {Name: "smeparsl", CodePoints: []int{10724}, Characters: []byte{0xe2, 0xa7, 0xa4}}, + "smid": {Name: "smid", CodePoints: []int{8739}, Characters: []byte{0xe2, 0x88, 0xa3}}, + "smile": {Name: "smile", CodePoints: []int{8995}, Characters: []byte{0xe2, 0x8c, 0xa3}}, + "smt": {Name: "smt", CodePoints: []int{10922}, Characters: []byte{0xe2, 0xaa, 0xaa}}, + "smte": {Name: "smte", CodePoints: []int{10924}, Characters: []byte{0xe2, 0xaa, 0xac}}, + "smtes": {Name: "smtes", CodePoints: []int{10924, 65024}, Characters: []byte{0xe2, 0xaa, 0xac, 0xef, 0xb8, 0x80}}, + "softcy": {Name: "softcy", CodePoints: []int{1100}, Characters: []byte{0xd1, 0x8c}}, + "sol": {Name: "sol", CodePoints: []int{47}, Characters: []byte{0x2f}}, + "solb": {Name: "solb", CodePoints: []int{10692}, Characters: []byte{0xe2, 0xa7, 0x84}}, + "solbar": {Name: "solbar", CodePoints: []int{9023}, Characters: []byte{0xe2, 0x8c, 0xbf}}, + "sopf": {Name: "sopf", CodePoints: []int{120164}, Characters: []byte{0xf0, 0x9d, 0x95, 0xa4}}, + "spades": {Name: "spades", CodePoints: []int{9824}, Characters: []byte{0xe2, 0x99, 0xa0}}, + "spadesuit": {Name: "spadesuit", CodePoints: []int{9824}, Characters: []byte{0xe2, 0x99, 0xa0}}, + "spar": {Name: "spar", CodePoints: []int{8741}, Characters: []byte{0xe2, 0x88, 0xa5}}, + "sqcap": {Name: "sqcap", CodePoints: []int{8851}, Characters: []byte{0xe2, 0x8a, 0x93}}, + "sqcaps": {Name: "sqcaps", CodePoints: []int{8851, 65024}, Characters: []byte{0xe2, 0x8a, 0x93, 0xef, 0xb8, 0x80}}, + "sqcup": {Name: "sqcup", CodePoints: []int{8852}, Characters: []byte{0xe2, 0x8a, 0x94}}, + "sqcups": {Name: "sqcups", CodePoints: []int{8852, 65024}, Characters: []byte{0xe2, 0x8a, 0x94, 0xef, 0xb8, 0x80}}, + "sqsub": {Name: "sqsub", CodePoints: []int{8847}, Characters: []byte{0xe2, 0x8a, 0x8f}}, + "sqsube": {Name: "sqsube", CodePoints: []int{8849}, Characters: []byte{0xe2, 0x8a, 0x91}}, + "sqsubset": {Name: "sqsubset", CodePoints: []int{8847}, Characters: []byte{0xe2, 0x8a, 0x8f}}, + "sqsubseteq": {Name: "sqsubseteq", CodePoints: []int{8849}, Characters: []byte{0xe2, 0x8a, 0x91}}, + "sqsup": {Name: "sqsup", CodePoints: []int{8848}, Characters: []byte{0xe2, 0x8a, 0x90}}, + "sqsupe": {Name: "sqsupe", CodePoints: []int{8850}, Characters: []byte{0xe2, 0x8a, 0x92}}, + "sqsupset": {Name: "sqsupset", CodePoints: []int{8848}, Characters: []byte{0xe2, 0x8a, 0x90}}, + "sqsupseteq": {Name: "sqsupseteq", CodePoints: []int{8850}, Characters: []byte{0xe2, 0x8a, 0x92}}, + "squ": {Name: "squ", CodePoints: []int{9633}, Characters: []byte{0xe2, 0x96, 0xa1}}, + "square": {Name: "square", CodePoints: []int{9633}, Characters: []byte{0xe2, 0x96, 0xa1}}, + "squarf": {Name: "squarf", CodePoints: []int{9642}, Characters: []byte{0xe2, 0x96, 0xaa}}, + "squf": {Name: "squf", CodePoints: []int{9642}, Characters: []byte{0xe2, 0x96, 0xaa}}, + "srarr": {Name: "srarr", CodePoints: []int{8594}, Characters: []byte{0xe2, 0x86, 0x92}}, + "sscr": {Name: "sscr", CodePoints: []int{120008}, Characters: []byte{0xf0, 0x9d, 0x93, 0x88}}, + "ssetmn": {Name: "ssetmn", CodePoints: []int{8726}, Characters: []byte{0xe2, 0x88, 0x96}}, + "ssmile": {Name: "ssmile", CodePoints: []int{8995}, Characters: []byte{0xe2, 0x8c, 0xa3}}, + "sstarf": {Name: "sstarf", CodePoints: []int{8902}, Characters: []byte{0xe2, 0x8b, 0x86}}, + "star": {Name: "star", CodePoints: []int{9734}, Characters: []byte{0xe2, 0x98, 0x86}}, + "starf": {Name: "starf", CodePoints: []int{9733}, Characters: []byte{0xe2, 0x98, 0x85}}, + "straightepsilon": {Name: "straightepsilon", CodePoints: []int{1013}, Characters: []byte{0xcf, 0xb5}}, + "straightphi": {Name: "straightphi", CodePoints: []int{981}, Characters: []byte{0xcf, 0x95}}, + "strns": {Name: "strns", CodePoints: []int{175}, Characters: []byte{0xc2, 0xaf}}, + "sub": {Name: "sub", CodePoints: []int{8834}, Characters: []byte{0xe2, 0x8a, 0x82}}, + "subE": {Name: "subE", CodePoints: []int{10949}, Characters: []byte{0xe2, 0xab, 0x85}}, + "subdot": {Name: "subdot", CodePoints: []int{10941}, Characters: []byte{0xe2, 0xaa, 0xbd}}, + "sube": {Name: "sube", CodePoints: []int{8838}, Characters: []byte{0xe2, 0x8a, 0x86}}, + "subedot": {Name: "subedot", CodePoints: []int{10947}, Characters: []byte{0xe2, 0xab, 0x83}}, + "submult": {Name: "submult", CodePoints: []int{10945}, Characters: []byte{0xe2, 0xab, 0x81}}, + "subnE": {Name: "subnE", CodePoints: []int{10955}, Characters: []byte{0xe2, 0xab, 0x8b}}, + "subne": {Name: "subne", CodePoints: []int{8842}, Characters: []byte{0xe2, 0x8a, 0x8a}}, + "subplus": {Name: "subplus", CodePoints: []int{10943}, Characters: []byte{0xe2, 0xaa, 0xbf}}, + "subrarr": {Name: "subrarr", CodePoints: []int{10617}, Characters: []byte{0xe2, 0xa5, 0xb9}}, + "subset": {Name: "subset", CodePoints: []int{8834}, Characters: []byte{0xe2, 0x8a, 0x82}}, + "subseteq": {Name: "subseteq", CodePoints: []int{8838}, Characters: []byte{0xe2, 0x8a, 0x86}}, + "subseteqq": {Name: "subseteqq", CodePoints: []int{10949}, Characters: []byte{0xe2, 0xab, 0x85}}, + "subsetneq": {Name: "subsetneq", CodePoints: []int{8842}, Characters: []byte{0xe2, 0x8a, 0x8a}}, + "subsetneqq": {Name: "subsetneqq", CodePoints: []int{10955}, Characters: []byte{0xe2, 0xab, 0x8b}}, + "subsim": {Name: "subsim", CodePoints: []int{10951}, Characters: []byte{0xe2, 0xab, 0x87}}, + "subsub": {Name: "subsub", CodePoints: []int{10965}, Characters: []byte{0xe2, 0xab, 0x95}}, + "subsup": {Name: "subsup", CodePoints: []int{10963}, Characters: []byte{0xe2, 0xab, 0x93}}, + "succ": {Name: "succ", CodePoints: []int{8827}, Characters: []byte{0xe2, 0x89, 0xbb}}, + "succapprox": {Name: "succapprox", CodePoints: []int{10936}, Characters: []byte{0xe2, 0xaa, 0xb8}}, + "succcurlyeq": {Name: "succcurlyeq", CodePoints: []int{8829}, Characters: []byte{0xe2, 0x89, 0xbd}}, + "succeq": {Name: "succeq", CodePoints: []int{10928}, Characters: []byte{0xe2, 0xaa, 0xb0}}, + "succnapprox": {Name: "succnapprox", CodePoints: []int{10938}, Characters: []byte{0xe2, 0xaa, 0xba}}, + "succneqq": {Name: "succneqq", CodePoints: []int{10934}, Characters: []byte{0xe2, 0xaa, 0xb6}}, + "succnsim": {Name: "succnsim", CodePoints: []int{8937}, Characters: []byte{0xe2, 0x8b, 0xa9}}, + "succsim": {Name: "succsim", CodePoints: []int{8831}, Characters: []byte{0xe2, 0x89, 0xbf}}, + "sum": {Name: "sum", CodePoints: []int{8721}, Characters: []byte{0xe2, 0x88, 0x91}}, + "sung": {Name: "sung", CodePoints: []int{9834}, Characters: []byte{0xe2, 0x99, 0xaa}}, + "sup": {Name: "sup", CodePoints: []int{8835}, Characters: []byte{0xe2, 0x8a, 0x83}}, + "sup1": {Name: "sup1", CodePoints: []int{185}, Characters: []byte{0xc2, 0xb9}}, + "sup2": {Name: "sup2", CodePoints: []int{178}, Characters: []byte{0xc2, 0xb2}}, + "sup3": {Name: "sup3", CodePoints: []int{179}, Characters: []byte{0xc2, 0xb3}}, + "supE": {Name: "supE", CodePoints: []int{10950}, Characters: []byte{0xe2, 0xab, 0x86}}, + "supdot": {Name: "supdot", CodePoints: []int{10942}, Characters: []byte{0xe2, 0xaa, 0xbe}}, + "supdsub": {Name: "supdsub", CodePoints: []int{10968}, Characters: []byte{0xe2, 0xab, 0x98}}, + "supe": {Name: "supe", CodePoints: []int{8839}, Characters: []byte{0xe2, 0x8a, 0x87}}, + "supedot": {Name: "supedot", CodePoints: []int{10948}, Characters: []byte{0xe2, 0xab, 0x84}}, + "suphsol": {Name: "suphsol", CodePoints: []int{10185}, Characters: []byte{0xe2, 0x9f, 0x89}}, + "suphsub": {Name: "suphsub", CodePoints: []int{10967}, Characters: []byte{0xe2, 0xab, 0x97}}, + "suplarr": {Name: "suplarr", CodePoints: []int{10619}, Characters: []byte{0xe2, 0xa5, 0xbb}}, + "supmult": {Name: "supmult", CodePoints: []int{10946}, Characters: []byte{0xe2, 0xab, 0x82}}, + "supnE": {Name: "supnE", CodePoints: []int{10956}, Characters: []byte{0xe2, 0xab, 0x8c}}, + "supne": {Name: "supne", CodePoints: []int{8843}, Characters: []byte{0xe2, 0x8a, 0x8b}}, + "supplus": {Name: "supplus", CodePoints: []int{10944}, Characters: []byte{0xe2, 0xab, 0x80}}, + "supset": {Name: "supset", CodePoints: []int{8835}, Characters: []byte{0xe2, 0x8a, 0x83}}, + "supseteq": {Name: "supseteq", CodePoints: []int{8839}, Characters: []byte{0xe2, 0x8a, 0x87}}, + "supseteqq": {Name: "supseteqq", CodePoints: []int{10950}, Characters: []byte{0xe2, 0xab, 0x86}}, + "supsetneq": {Name: "supsetneq", CodePoints: []int{8843}, Characters: []byte{0xe2, 0x8a, 0x8b}}, + "supsetneqq": {Name: "supsetneqq", CodePoints: []int{10956}, Characters: []byte{0xe2, 0xab, 0x8c}}, + "supsim": {Name: "supsim", CodePoints: []int{10952}, Characters: []byte{0xe2, 0xab, 0x88}}, + "supsub": {Name: "supsub", CodePoints: []int{10964}, Characters: []byte{0xe2, 0xab, 0x94}}, + "supsup": {Name: "supsup", CodePoints: []int{10966}, Characters: []byte{0xe2, 0xab, 0x96}}, + "swArr": {Name: "swArr", CodePoints: []int{8665}, Characters: []byte{0xe2, 0x87, 0x99}}, + "swarhk": {Name: "swarhk", CodePoints: []int{10534}, Characters: []byte{0xe2, 0xa4, 0xa6}}, + "swarr": {Name: "swarr", CodePoints: []int{8601}, Characters: []byte{0xe2, 0x86, 0x99}}, + "swarrow": {Name: "swarrow", CodePoints: []int{8601}, Characters: []byte{0xe2, 0x86, 0x99}}, + "swnwar": {Name: "swnwar", CodePoints: []int{10538}, Characters: []byte{0xe2, 0xa4, 0xaa}}, + "szlig": {Name: "szlig", CodePoints: []int{223}, Characters: []byte{0xc3, 0x9f}}, + "target": {Name: "target", CodePoints: []int{8982}, Characters: []byte{0xe2, 0x8c, 0x96}}, + "tau": {Name: "tau", CodePoints: []int{964}, Characters: []byte{0xcf, 0x84}}, + "tbrk": {Name: "tbrk", CodePoints: []int{9140}, Characters: []byte{0xe2, 0x8e, 0xb4}}, + "tcaron": {Name: "tcaron", CodePoints: []int{357}, Characters: []byte{0xc5, 0xa5}}, + "tcedil": {Name: "tcedil", CodePoints: []int{355}, Characters: []byte{0xc5, 0xa3}}, + "tcy": {Name: "tcy", CodePoints: []int{1090}, Characters: []byte{0xd1, 0x82}}, + "tdot": {Name: "tdot", CodePoints: []int{8411}, Characters: []byte{0xe2, 0x83, 0x9b}}, + "telrec": {Name: "telrec", CodePoints: []int{8981}, Characters: []byte{0xe2, 0x8c, 0x95}}, + "tfr": {Name: "tfr", CodePoints: []int{120113}, Characters: []byte{0xf0, 0x9d, 0x94, 0xb1}}, + "there4": {Name: "there4", CodePoints: []int{8756}, Characters: []byte{0xe2, 0x88, 0xb4}}, + "therefore": {Name: "therefore", CodePoints: []int{8756}, Characters: []byte{0xe2, 0x88, 0xb4}}, + "theta": {Name: "theta", CodePoints: []int{952}, Characters: []byte{0xce, 0xb8}}, + "thetasym": {Name: "thetasym", CodePoints: []int{977}, Characters: []byte{0xcf, 0x91}}, + "thetav": {Name: "thetav", CodePoints: []int{977}, Characters: []byte{0xcf, 0x91}}, + "thickapprox": {Name: "thickapprox", CodePoints: []int{8776}, Characters: []byte{0xe2, 0x89, 0x88}}, + "thicksim": {Name: "thicksim", CodePoints: []int{8764}, Characters: []byte{0xe2, 0x88, 0xbc}}, + "thinsp": {Name: "thinsp", CodePoints: []int{8201}, Characters: []byte{0xe2, 0x80, 0x89}}, + "thkap": {Name: "thkap", CodePoints: []int{8776}, Characters: []byte{0xe2, 0x89, 0x88}}, + "thksim": {Name: "thksim", CodePoints: []int{8764}, Characters: []byte{0xe2, 0x88, 0xbc}}, + "thorn": {Name: "thorn", CodePoints: []int{254}, Characters: []byte{0xc3, 0xbe}}, + "tilde": {Name: "tilde", CodePoints: []int{732}, Characters: []byte{0xcb, 0x9c}}, + "times": {Name: "times", CodePoints: []int{215}, Characters: []byte{0xc3, 0x97}}, + "timesb": {Name: "timesb", CodePoints: []int{8864}, Characters: []byte{0xe2, 0x8a, 0xa0}}, + "timesbar": {Name: "timesbar", CodePoints: []int{10801}, Characters: []byte{0xe2, 0xa8, 0xb1}}, + "timesd": {Name: "timesd", CodePoints: []int{10800}, Characters: []byte{0xe2, 0xa8, 0xb0}}, + "tint": {Name: "tint", CodePoints: []int{8749}, Characters: []byte{0xe2, 0x88, 0xad}}, + "toea": {Name: "toea", CodePoints: []int{10536}, Characters: []byte{0xe2, 0xa4, 0xa8}}, + "top": {Name: "top", CodePoints: []int{8868}, Characters: []byte{0xe2, 0x8a, 0xa4}}, + "topbot": {Name: "topbot", CodePoints: []int{9014}, Characters: []byte{0xe2, 0x8c, 0xb6}}, + "topcir": {Name: "topcir", CodePoints: []int{10993}, Characters: []byte{0xe2, 0xab, 0xb1}}, + "topf": {Name: "topf", CodePoints: []int{120165}, Characters: []byte{0xf0, 0x9d, 0x95, 0xa5}}, + "topfork": {Name: "topfork", CodePoints: []int{10970}, Characters: []byte{0xe2, 0xab, 0x9a}}, + "tosa": {Name: "tosa", CodePoints: []int{10537}, Characters: []byte{0xe2, 0xa4, 0xa9}}, + "tprime": {Name: "tprime", CodePoints: []int{8244}, Characters: []byte{0xe2, 0x80, 0xb4}}, + "trade": {Name: "trade", CodePoints: []int{8482}, Characters: []byte{0xe2, 0x84, 0xa2}}, + "triangle": {Name: "triangle", CodePoints: []int{9653}, Characters: []byte{0xe2, 0x96, 0xb5}}, + "triangledown": {Name: "triangledown", CodePoints: []int{9663}, Characters: []byte{0xe2, 0x96, 0xbf}}, + "triangleleft": {Name: "triangleleft", CodePoints: []int{9667}, Characters: []byte{0xe2, 0x97, 0x83}}, + "trianglelefteq": {Name: "trianglelefteq", CodePoints: []int{8884}, Characters: []byte{0xe2, 0x8a, 0xb4}}, + "triangleq": {Name: "triangleq", CodePoints: []int{8796}, Characters: []byte{0xe2, 0x89, 0x9c}}, + "triangleright": {Name: "triangleright", CodePoints: []int{9657}, Characters: []byte{0xe2, 0x96, 0xb9}}, + "trianglerighteq": {Name: "trianglerighteq", CodePoints: []int{8885}, Characters: []byte{0xe2, 0x8a, 0xb5}}, + "tridot": {Name: "tridot", CodePoints: []int{9708}, Characters: []byte{0xe2, 0x97, 0xac}}, + "trie": {Name: "trie", CodePoints: []int{8796}, Characters: []byte{0xe2, 0x89, 0x9c}}, + "triminus": {Name: "triminus", CodePoints: []int{10810}, Characters: []byte{0xe2, 0xa8, 0xba}}, + "triplus": {Name: "triplus", CodePoints: []int{10809}, Characters: []byte{0xe2, 0xa8, 0xb9}}, + "trisb": {Name: "trisb", CodePoints: []int{10701}, Characters: []byte{0xe2, 0xa7, 0x8d}}, + "tritime": {Name: "tritime", CodePoints: []int{10811}, Characters: []byte{0xe2, 0xa8, 0xbb}}, + "trpezium": {Name: "trpezium", CodePoints: []int{9186}, Characters: []byte{0xe2, 0x8f, 0xa2}}, + "tscr": {Name: "tscr", CodePoints: []int{120009}, Characters: []byte{0xf0, 0x9d, 0x93, 0x89}}, + "tscy": {Name: "tscy", CodePoints: []int{1094}, Characters: []byte{0xd1, 0x86}}, + "tshcy": {Name: "tshcy", CodePoints: []int{1115}, Characters: []byte{0xd1, 0x9b}}, + "tstrok": {Name: "tstrok", CodePoints: []int{359}, Characters: []byte{0xc5, 0xa7}}, + "twixt": {Name: "twixt", CodePoints: []int{8812}, Characters: []byte{0xe2, 0x89, 0xac}}, + "twoheadleftarrow": {Name: "twoheadleftarrow", CodePoints: []int{8606}, Characters: []byte{0xe2, 0x86, 0x9e}}, + "twoheadrightarrow": {Name: "twoheadrightarrow", CodePoints: []int{8608}, Characters: []byte{0xe2, 0x86, 0xa0}}, + "uArr": {Name: "uArr", CodePoints: []int{8657}, Characters: []byte{0xe2, 0x87, 0x91}}, + "uHar": {Name: "uHar", CodePoints: []int{10595}, Characters: []byte{0xe2, 0xa5, 0xa3}}, + "uacute": {Name: "uacute", CodePoints: []int{250}, Characters: []byte{0xc3, 0xba}}, + "uarr": {Name: "uarr", CodePoints: []int{8593}, Characters: []byte{0xe2, 0x86, 0x91}}, + "ubrcy": {Name: "ubrcy", CodePoints: []int{1118}, Characters: []byte{0xd1, 0x9e}}, + "ubreve": {Name: "ubreve", CodePoints: []int{365}, Characters: []byte{0xc5, 0xad}}, + "ucirc": {Name: "ucirc", CodePoints: []int{251}, Characters: []byte{0xc3, 0xbb}}, + "ucy": {Name: "ucy", CodePoints: []int{1091}, Characters: []byte{0xd1, 0x83}}, + "udarr": {Name: "udarr", CodePoints: []int{8645}, Characters: []byte{0xe2, 0x87, 0x85}}, + "udblac": {Name: "udblac", CodePoints: []int{369}, Characters: []byte{0xc5, 0xb1}}, + "udhar": {Name: "udhar", CodePoints: []int{10606}, Characters: []byte{0xe2, 0xa5, 0xae}}, + "ufisht": {Name: "ufisht", CodePoints: []int{10622}, Characters: []byte{0xe2, 0xa5, 0xbe}}, + "ufr": {Name: "ufr", CodePoints: []int{120114}, Characters: []byte{0xf0, 0x9d, 0x94, 0xb2}}, + "ugrave": {Name: "ugrave", CodePoints: []int{249}, Characters: []byte{0xc3, 0xb9}}, + "uharl": {Name: "uharl", CodePoints: []int{8639}, Characters: []byte{0xe2, 0x86, 0xbf}}, + "uharr": {Name: "uharr", CodePoints: []int{8638}, Characters: []byte{0xe2, 0x86, 0xbe}}, + "uhblk": {Name: "uhblk", CodePoints: []int{9600}, Characters: []byte{0xe2, 0x96, 0x80}}, + "ulcorn": {Name: "ulcorn", CodePoints: []int{8988}, Characters: []byte{0xe2, 0x8c, 0x9c}}, + "ulcorner": {Name: "ulcorner", CodePoints: []int{8988}, Characters: []byte{0xe2, 0x8c, 0x9c}}, + "ulcrop": {Name: "ulcrop", CodePoints: []int{8975}, Characters: []byte{0xe2, 0x8c, 0x8f}}, + "ultri": {Name: "ultri", CodePoints: []int{9720}, Characters: []byte{0xe2, 0x97, 0xb8}}, + "umacr": {Name: "umacr", CodePoints: []int{363}, Characters: []byte{0xc5, 0xab}}, + "uml": {Name: "uml", CodePoints: []int{168}, Characters: []byte{0xc2, 0xa8}}, + "uogon": {Name: "uogon", CodePoints: []int{371}, Characters: []byte{0xc5, 0xb3}}, + "uopf": {Name: "uopf", CodePoints: []int{120166}, Characters: []byte{0xf0, 0x9d, 0x95, 0xa6}}, + "uparrow": {Name: "uparrow", CodePoints: []int{8593}, Characters: []byte{0xe2, 0x86, 0x91}}, + "updownarrow": {Name: "updownarrow", CodePoints: []int{8597}, Characters: []byte{0xe2, 0x86, 0x95}}, + "upharpoonleft": {Name: "upharpoonleft", CodePoints: []int{8639}, Characters: []byte{0xe2, 0x86, 0xbf}}, + "upharpoonright": {Name: "upharpoonright", CodePoints: []int{8638}, Characters: []byte{0xe2, 0x86, 0xbe}}, + "uplus": {Name: "uplus", CodePoints: []int{8846}, Characters: []byte{0xe2, 0x8a, 0x8e}}, + "upsi": {Name: "upsi", CodePoints: []int{965}, Characters: []byte{0xcf, 0x85}}, + "upsih": {Name: "upsih", CodePoints: []int{978}, Characters: []byte{0xcf, 0x92}}, + "upsilon": {Name: "upsilon", CodePoints: []int{965}, Characters: []byte{0xcf, 0x85}}, + "upuparrows": {Name: "upuparrows", CodePoints: []int{8648}, Characters: []byte{0xe2, 0x87, 0x88}}, + "urcorn": {Name: "urcorn", CodePoints: []int{8989}, Characters: []byte{0xe2, 0x8c, 0x9d}}, + "urcorner": {Name: "urcorner", CodePoints: []int{8989}, Characters: []byte{0xe2, 0x8c, 0x9d}}, + "urcrop": {Name: "urcrop", CodePoints: []int{8974}, Characters: []byte{0xe2, 0x8c, 0x8e}}, + "uring": {Name: "uring", CodePoints: []int{367}, Characters: []byte{0xc5, 0xaf}}, + "urtri": {Name: "urtri", CodePoints: []int{9721}, Characters: []byte{0xe2, 0x97, 0xb9}}, + "uscr": {Name: "uscr", CodePoints: []int{120010}, Characters: []byte{0xf0, 0x9d, 0x93, 0x8a}}, + "utdot": {Name: "utdot", CodePoints: []int{8944}, Characters: []byte{0xe2, 0x8b, 0xb0}}, + "utilde": {Name: "utilde", CodePoints: []int{361}, Characters: []byte{0xc5, 0xa9}}, + "utri": {Name: "utri", CodePoints: []int{9653}, Characters: []byte{0xe2, 0x96, 0xb5}}, + "utrif": {Name: "utrif", CodePoints: []int{9652}, Characters: []byte{0xe2, 0x96, 0xb4}}, + "uuarr": {Name: "uuarr", CodePoints: []int{8648}, Characters: []byte{0xe2, 0x87, 0x88}}, + "uuml": {Name: "uuml", CodePoints: []int{252}, Characters: []byte{0xc3, 0xbc}}, + "uwangle": {Name: "uwangle", CodePoints: []int{10663}, Characters: []byte{0xe2, 0xa6, 0xa7}}, + "vArr": {Name: "vArr", CodePoints: []int{8661}, Characters: []byte{0xe2, 0x87, 0x95}}, + "vBar": {Name: "vBar", CodePoints: []int{10984}, Characters: []byte{0xe2, 0xab, 0xa8}}, + "vBarv": {Name: "vBarv", CodePoints: []int{10985}, Characters: []byte{0xe2, 0xab, 0xa9}}, + "vDash": {Name: "vDash", CodePoints: []int{8872}, Characters: []byte{0xe2, 0x8a, 0xa8}}, + "vangrt": {Name: "vangrt", CodePoints: []int{10652}, Characters: []byte{0xe2, 0xa6, 0x9c}}, + "varepsilon": {Name: "varepsilon", CodePoints: []int{1013}, Characters: []byte{0xcf, 0xb5}}, + "varkappa": {Name: "varkappa", CodePoints: []int{1008}, Characters: []byte{0xcf, 0xb0}}, + "varnothing": {Name: "varnothing", CodePoints: []int{8709}, Characters: []byte{0xe2, 0x88, 0x85}}, + "varphi": {Name: "varphi", CodePoints: []int{981}, Characters: []byte{0xcf, 0x95}}, + "varpi": {Name: "varpi", CodePoints: []int{982}, Characters: []byte{0xcf, 0x96}}, + "varpropto": {Name: "varpropto", CodePoints: []int{8733}, Characters: []byte{0xe2, 0x88, 0x9d}}, + "varr": {Name: "varr", CodePoints: []int{8597}, Characters: []byte{0xe2, 0x86, 0x95}}, + "varrho": {Name: "varrho", CodePoints: []int{1009}, Characters: []byte{0xcf, 0xb1}}, + "varsigma": {Name: "varsigma", CodePoints: []int{962}, Characters: []byte{0xcf, 0x82}}, + "varsubsetneq": {Name: "varsubsetneq", CodePoints: []int{8842, 65024}, Characters: []byte{0xe2, 0x8a, 0x8a, 0xef, 0xb8, 0x80}}, + "varsubsetneqq": {Name: "varsubsetneqq", CodePoints: []int{10955, 65024}, Characters: []byte{0xe2, 0xab, 0x8b, 0xef, 0xb8, 0x80}}, + "varsupsetneq": {Name: "varsupsetneq", CodePoints: []int{8843, 65024}, Characters: []byte{0xe2, 0x8a, 0x8b, 0xef, 0xb8, 0x80}}, + "varsupsetneqq": {Name: "varsupsetneqq", CodePoints: []int{10956, 65024}, Characters: []byte{0xe2, 0xab, 0x8c, 0xef, 0xb8, 0x80}}, + "vartheta": {Name: "vartheta", CodePoints: []int{977}, Characters: []byte{0xcf, 0x91}}, + "vartriangleleft": {Name: "vartriangleleft", CodePoints: []int{8882}, Characters: []byte{0xe2, 0x8a, 0xb2}}, + "vartriangleright": {Name: "vartriangleright", CodePoints: []int{8883}, Characters: []byte{0xe2, 0x8a, 0xb3}}, + "vcy": {Name: "vcy", CodePoints: []int{1074}, Characters: []byte{0xd0, 0xb2}}, + "vdash": {Name: "vdash", CodePoints: []int{8866}, Characters: []byte{0xe2, 0x8a, 0xa2}}, + "vee": {Name: "vee", CodePoints: []int{8744}, Characters: []byte{0xe2, 0x88, 0xa8}}, + "veebar": {Name: "veebar", CodePoints: []int{8891}, Characters: []byte{0xe2, 0x8a, 0xbb}}, + "veeeq": {Name: "veeeq", CodePoints: []int{8794}, Characters: []byte{0xe2, 0x89, 0x9a}}, + "vellip": {Name: "vellip", CodePoints: []int{8942}, Characters: []byte{0xe2, 0x8b, 0xae}}, + "verbar": {Name: "verbar", CodePoints: []int{124}, Characters: []byte{0x7c}}, + "vert": {Name: "vert", CodePoints: []int{124}, Characters: []byte{0x7c}}, + "vfr": {Name: "vfr", CodePoints: []int{120115}, Characters: []byte{0xf0, 0x9d, 0x94, 0xb3}}, + "vltri": {Name: "vltri", CodePoints: []int{8882}, Characters: []byte{0xe2, 0x8a, 0xb2}}, + "vnsub": {Name: "vnsub", CodePoints: []int{8834, 8402}, Characters: []byte{0xe2, 0x8a, 0x82, 0xe2, 0x83, 0x92}}, + "vnsup": {Name: "vnsup", CodePoints: []int{8835, 8402}, Characters: []byte{0xe2, 0x8a, 0x83, 0xe2, 0x83, 0x92}}, + "vopf": {Name: "vopf", CodePoints: []int{120167}, Characters: []byte{0xf0, 0x9d, 0x95, 0xa7}}, + "vprop": {Name: "vprop", CodePoints: []int{8733}, Characters: []byte{0xe2, 0x88, 0x9d}}, + "vrtri": {Name: "vrtri", CodePoints: []int{8883}, Characters: []byte{0xe2, 0x8a, 0xb3}}, + "vscr": {Name: "vscr", CodePoints: []int{120011}, Characters: []byte{0xf0, 0x9d, 0x93, 0x8b}}, + "vsubnE": {Name: "vsubnE", CodePoints: []int{10955, 65024}, Characters: []byte{0xe2, 0xab, 0x8b, 0xef, 0xb8, 0x80}}, + "vsubne": {Name: "vsubne", CodePoints: []int{8842, 65024}, Characters: []byte{0xe2, 0x8a, 0x8a, 0xef, 0xb8, 0x80}}, + "vsupnE": {Name: "vsupnE", CodePoints: []int{10956, 65024}, Characters: []byte{0xe2, 0xab, 0x8c, 0xef, 0xb8, 0x80}}, + "vsupne": {Name: "vsupne", CodePoints: []int{8843, 65024}, Characters: []byte{0xe2, 0x8a, 0x8b, 0xef, 0xb8, 0x80}}, + "vzigzag": {Name: "vzigzag", CodePoints: []int{10650}, Characters: []byte{0xe2, 0xa6, 0x9a}}, + "wcirc": {Name: "wcirc", CodePoints: []int{373}, Characters: []byte{0xc5, 0xb5}}, + "wedbar": {Name: "wedbar", CodePoints: []int{10847}, Characters: []byte{0xe2, 0xa9, 0x9f}}, + "wedge": {Name: "wedge", CodePoints: []int{8743}, Characters: []byte{0xe2, 0x88, 0xa7}}, + "wedgeq": {Name: "wedgeq", CodePoints: []int{8793}, Characters: []byte{0xe2, 0x89, 0x99}}, + "weierp": {Name: "weierp", CodePoints: []int{8472}, Characters: []byte{0xe2, 0x84, 0x98}}, + "wfr": {Name: "wfr", CodePoints: []int{120116}, Characters: []byte{0xf0, 0x9d, 0x94, 0xb4}}, + "wopf": {Name: "wopf", CodePoints: []int{120168}, Characters: []byte{0xf0, 0x9d, 0x95, 0xa8}}, + "wp": {Name: "wp", CodePoints: []int{8472}, Characters: []byte{0xe2, 0x84, 0x98}}, + "wr": {Name: "wr", CodePoints: []int{8768}, Characters: []byte{0xe2, 0x89, 0x80}}, + "wreath": {Name: "wreath", CodePoints: []int{8768}, Characters: []byte{0xe2, 0x89, 0x80}}, + "wscr": {Name: "wscr", CodePoints: []int{120012}, Characters: []byte{0xf0, 0x9d, 0x93, 0x8c}}, + "xcap": {Name: "xcap", CodePoints: []int{8898}, Characters: []byte{0xe2, 0x8b, 0x82}}, + "xcirc": {Name: "xcirc", CodePoints: []int{9711}, Characters: []byte{0xe2, 0x97, 0xaf}}, + "xcup": {Name: "xcup", CodePoints: []int{8899}, Characters: []byte{0xe2, 0x8b, 0x83}}, + "xdtri": {Name: "xdtri", CodePoints: []int{9661}, Characters: []byte{0xe2, 0x96, 0xbd}}, + "xfr": {Name: "xfr", CodePoints: []int{120117}, Characters: []byte{0xf0, 0x9d, 0x94, 0xb5}}, + "xhArr": {Name: "xhArr", CodePoints: []int{10234}, Characters: []byte{0xe2, 0x9f, 0xba}}, + "xharr": {Name: "xharr", CodePoints: []int{10231}, Characters: []byte{0xe2, 0x9f, 0xb7}}, + "xi": {Name: "xi", CodePoints: []int{958}, Characters: []byte{0xce, 0xbe}}, + "xlArr": {Name: "xlArr", CodePoints: []int{10232}, Characters: []byte{0xe2, 0x9f, 0xb8}}, + "xlarr": {Name: "xlarr", CodePoints: []int{10229}, Characters: []byte{0xe2, 0x9f, 0xb5}}, + "xmap": {Name: "xmap", CodePoints: []int{10236}, Characters: []byte{0xe2, 0x9f, 0xbc}}, + "xnis": {Name: "xnis", CodePoints: []int{8955}, Characters: []byte{0xe2, 0x8b, 0xbb}}, + "xodot": {Name: "xodot", CodePoints: []int{10752}, Characters: []byte{0xe2, 0xa8, 0x80}}, + "xopf": {Name: "xopf", CodePoints: []int{120169}, Characters: []byte{0xf0, 0x9d, 0x95, 0xa9}}, + "xoplus": {Name: "xoplus", CodePoints: []int{10753}, Characters: []byte{0xe2, 0xa8, 0x81}}, + "xotime": {Name: "xotime", CodePoints: []int{10754}, Characters: []byte{0xe2, 0xa8, 0x82}}, + "xrArr": {Name: "xrArr", CodePoints: []int{10233}, Characters: []byte{0xe2, 0x9f, 0xb9}}, + "xrarr": {Name: "xrarr", CodePoints: []int{10230}, Characters: []byte{0xe2, 0x9f, 0xb6}}, + "xscr": {Name: "xscr", CodePoints: []int{120013}, Characters: []byte{0xf0, 0x9d, 0x93, 0x8d}}, + "xsqcup": {Name: "xsqcup", CodePoints: []int{10758}, Characters: []byte{0xe2, 0xa8, 0x86}}, + "xuplus": {Name: "xuplus", CodePoints: []int{10756}, Characters: []byte{0xe2, 0xa8, 0x84}}, + "xutri": {Name: "xutri", CodePoints: []int{9651}, Characters: []byte{0xe2, 0x96, 0xb3}}, + "xvee": {Name: "xvee", CodePoints: []int{8897}, Characters: []byte{0xe2, 0x8b, 0x81}}, + "xwedge": {Name: "xwedge", CodePoints: []int{8896}, Characters: []byte{0xe2, 0x8b, 0x80}}, + "yacute": {Name: "yacute", CodePoints: []int{253}, Characters: []byte{0xc3, 0xbd}}, + "yacy": {Name: "yacy", CodePoints: []int{1103}, Characters: []byte{0xd1, 0x8f}}, + "ycirc": {Name: "ycirc", CodePoints: []int{375}, Characters: []byte{0xc5, 0xb7}}, + "ycy": {Name: "ycy", CodePoints: []int{1099}, Characters: []byte{0xd1, 0x8b}}, + "yen": {Name: "yen", CodePoints: []int{165}, Characters: []byte{0xc2, 0xa5}}, + "yfr": {Name: "yfr", CodePoints: []int{120118}, Characters: []byte{0xf0, 0x9d, 0x94, 0xb6}}, + "yicy": {Name: "yicy", CodePoints: []int{1111}, Characters: []byte{0xd1, 0x97}}, + "yopf": {Name: "yopf", CodePoints: []int{120170}, Characters: []byte{0xf0, 0x9d, 0x95, 0xaa}}, + "yscr": {Name: "yscr", CodePoints: []int{120014}, Characters: []byte{0xf0, 0x9d, 0x93, 0x8e}}, + "yucy": {Name: "yucy", CodePoints: []int{1102}, Characters: []byte{0xd1, 0x8e}}, + "yuml": {Name: "yuml", CodePoints: []int{255}, Characters: []byte{0xc3, 0xbf}}, + "zacute": {Name: "zacute", CodePoints: []int{378}, Characters: []byte{0xc5, 0xba}}, + "zcaron": {Name: "zcaron", CodePoints: []int{382}, Characters: []byte{0xc5, 0xbe}}, + "zcy": {Name: "zcy", CodePoints: []int{1079}, Characters: []byte{0xd0, 0xb7}}, + "zdot": {Name: "zdot", CodePoints: []int{380}, Characters: []byte{0xc5, 0xbc}}, + "zeetrf": {Name: "zeetrf", CodePoints: []int{8488}, Characters: []byte{0xe2, 0x84, 0xa8}}, + "zeta": {Name: "zeta", CodePoints: []int{950}, Characters: []byte{0xce, 0xb6}}, + "zfr": {Name: "zfr", CodePoints: []int{120119}, Characters: []byte{0xf0, 0x9d, 0x94, 0xb7}}, + "zhcy": {Name: "zhcy", CodePoints: []int{1078}, Characters: []byte{0xd0, 0xb6}}, + "zigrarr": {Name: "zigrarr", CodePoints: []int{8669}, Characters: []byte{0xe2, 0x87, 0x9d}}, + "zopf": {Name: "zopf", CodePoints: []int{120171}, Characters: []byte{0xf0, 0x9d, 0x95, 0xab}}, + "zscr": {Name: "zscr", CodePoints: []int{120015}, Characters: []byte{0xf0, 0x9d, 0x93, 0x8f}}, + "zwj": {Name: "zwj", CodePoints: []int{8205}, Characters: []byte{0xe2, 0x80, 0x8d}}, + "zwnj": {Name: "zwnj", CodePoints: []int{8204}, Characters: []byte{0xe2, 0x80, 0x8c}}, +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/unicode_case_folding.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/unicode_case_folding.go new file mode 100644 index 000000000..f66ee7c43 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/unicode_case_folding.go @@ -0,0 +1,1491 @@ +package util + +var unicodeCaseFoldings = map[rune][]rune{ + 0x41: []int32{97}, + 0x42: []int32{98}, + 0x43: []int32{99}, + 0x44: []int32{100}, + 0x45: []int32{101}, + 0x46: []int32{102}, + 0x47: []int32{103}, + 0x48: []int32{104}, + 0x49: []int32{105}, + 0x4a: []int32{106}, + 0x4b: []int32{107}, + 0x4c: []int32{108}, + 0x4d: []int32{109}, + 0x4e: []int32{110}, + 0x4f: []int32{111}, + 0x50: []int32{112}, + 0x51: []int32{113}, + 0x52: []int32{114}, + 0x53: []int32{115}, + 0x54: []int32{116}, + 0x55: []int32{117}, + 0x56: []int32{118}, + 0x57: []int32{119}, + 0x58: []int32{120}, + 0x59: []int32{121}, + 0x5a: []int32{122}, + 0xb5: []int32{956}, + 0xc0: []int32{224}, + 0xc1: []int32{225}, + 0xc2: []int32{226}, + 0xc3: []int32{227}, + 0xc4: []int32{228}, + 0xc5: []int32{229}, + 0xc6: []int32{230}, + 0xc7: []int32{231}, + 0xc8: []int32{232}, + 0xc9: []int32{233}, + 0xca: []int32{234}, + 0xcb: []int32{235}, + 0xcc: []int32{236}, + 0xcd: []int32{237}, + 0xce: []int32{238}, + 0xcf: []int32{239}, + 0xd0: []int32{240}, + 0xd1: []int32{241}, + 0xd2: []int32{242}, + 0xd3: []int32{243}, + 0xd4: []int32{244}, + 0xd5: []int32{245}, + 0xd6: []int32{246}, + 0xd8: []int32{248}, + 0xd9: []int32{249}, + 0xda: []int32{250}, + 0xdb: []int32{251}, + 0xdc: []int32{252}, + 0xdd: []int32{253}, + 0xde: []int32{254}, + 0xdf: []int32{115, 115}, + 0x100: []int32{257}, + 0x102: []int32{259}, + 0x104: []int32{261}, + 0x106: []int32{263}, + 0x108: []int32{265}, + 0x10a: []int32{267}, + 0x10c: []int32{269}, + 0x10e: []int32{271}, + 0x110: []int32{273}, + 0x112: []int32{275}, + 0x114: []int32{277}, + 0x116: []int32{279}, + 0x118: []int32{281}, + 0x11a: []int32{283}, + 0x11c: []int32{285}, + 0x11e: []int32{287}, + 0x120: []int32{289}, + 0x122: []int32{291}, + 0x124: []int32{293}, + 0x126: []int32{295}, + 0x128: []int32{297}, + 0x12a: []int32{299}, + 0x12c: []int32{301}, + 0x12e: []int32{303}, + 0x130: []int32{105, 775}, + 0x132: []int32{307}, + 0x134: []int32{309}, + 0x136: []int32{311}, + 0x139: []int32{314}, + 0x13b: []int32{316}, + 0x13d: []int32{318}, + 0x13f: []int32{320}, + 0x141: []int32{322}, + 0x143: []int32{324}, + 0x145: []int32{326}, + 0x147: []int32{328}, + 0x149: []int32{700, 110}, + 0x14a: []int32{331}, + 0x14c: []int32{333}, + 0x14e: []int32{335}, + 0x150: []int32{337}, + 0x152: []int32{339}, + 0x154: []int32{341}, + 0x156: []int32{343}, + 0x158: []int32{345}, + 0x15a: []int32{347}, + 0x15c: []int32{349}, + 0x15e: []int32{351}, + 0x160: []int32{353}, + 0x162: []int32{355}, + 0x164: []int32{357}, + 0x166: []int32{359}, + 0x168: []int32{361}, + 0x16a: []int32{363}, + 0x16c: []int32{365}, + 0x16e: []int32{367}, + 0x170: []int32{369}, + 0x172: []int32{371}, + 0x174: []int32{373}, + 0x176: []int32{375}, + 0x178: []int32{255}, + 0x179: []int32{378}, + 0x17b: []int32{380}, + 0x17d: []int32{382}, + 0x17f: []int32{115}, + 0x181: []int32{595}, + 0x182: []int32{387}, + 0x184: []int32{389}, + 0x186: []int32{596}, + 0x187: []int32{392}, + 0x189: []int32{598}, + 0x18a: []int32{599}, + 0x18b: []int32{396}, + 0x18e: []int32{477}, + 0x18f: []int32{601}, + 0x190: []int32{603}, + 0x191: []int32{402}, + 0x193: []int32{608}, + 0x194: []int32{611}, + 0x196: []int32{617}, + 0x197: []int32{616}, + 0x198: []int32{409}, + 0x19c: []int32{623}, + 0x19d: []int32{626}, + 0x19f: []int32{629}, + 0x1a0: []int32{417}, + 0x1a2: []int32{419}, + 0x1a4: []int32{421}, + 0x1a6: []int32{640}, + 0x1a7: []int32{424}, + 0x1a9: []int32{643}, + 0x1ac: []int32{429}, + 0x1ae: []int32{648}, + 0x1af: []int32{432}, + 0x1b1: []int32{650}, + 0x1b2: []int32{651}, + 0x1b3: []int32{436}, + 0x1b5: []int32{438}, + 0x1b7: []int32{658}, + 0x1b8: []int32{441}, + 0x1bc: []int32{445}, + 0x1c4: []int32{454}, + 0x1c5: []int32{454}, + 0x1c7: []int32{457}, + 0x1c8: []int32{457}, + 0x1ca: []int32{460}, + 0x1cb: []int32{460}, + 0x1cd: []int32{462}, + 0x1cf: []int32{464}, + 0x1d1: []int32{466}, + 0x1d3: []int32{468}, + 0x1d5: []int32{470}, + 0x1d7: []int32{472}, + 0x1d9: []int32{474}, + 0x1db: []int32{476}, + 0x1de: []int32{479}, + 0x1e0: []int32{481}, + 0x1e2: []int32{483}, + 0x1e4: []int32{485}, + 0x1e6: []int32{487}, + 0x1e8: []int32{489}, + 0x1ea: []int32{491}, + 0x1ec: []int32{493}, + 0x1ee: []int32{495}, + 0x1f0: []int32{106, 780}, + 0x1f1: []int32{499}, + 0x1f2: []int32{499}, + 0x1f4: []int32{501}, + 0x1f6: []int32{405}, + 0x1f7: []int32{447}, + 0x1f8: []int32{505}, + 0x1fa: []int32{507}, + 0x1fc: []int32{509}, + 0x1fe: []int32{511}, + 0x200: []int32{513}, + 0x202: []int32{515}, + 0x204: []int32{517}, + 0x206: []int32{519}, + 0x208: []int32{521}, + 0x20a: []int32{523}, + 0x20c: []int32{525}, + 0x20e: []int32{527}, + 0x210: []int32{529}, + 0x212: []int32{531}, + 0x214: []int32{533}, + 0x216: []int32{535}, + 0x218: []int32{537}, + 0x21a: []int32{539}, + 0x21c: []int32{541}, + 0x21e: []int32{543}, + 0x220: []int32{414}, + 0x222: []int32{547}, + 0x224: []int32{549}, + 0x226: []int32{551}, + 0x228: []int32{553}, + 0x22a: []int32{555}, + 0x22c: []int32{557}, + 0x22e: []int32{559}, + 0x230: []int32{561}, + 0x232: []int32{563}, + 0x23a: []int32{11365}, + 0x23b: []int32{572}, + 0x23d: []int32{410}, + 0x23e: []int32{11366}, + 0x241: []int32{578}, + 0x243: []int32{384}, + 0x244: []int32{649}, + 0x245: []int32{652}, + 0x246: []int32{583}, + 0x248: []int32{585}, + 0x24a: []int32{587}, + 0x24c: []int32{589}, + 0x24e: []int32{591}, + 0x345: []int32{953}, + 0x370: []int32{881}, + 0x372: []int32{883}, + 0x376: []int32{887}, + 0x37f: []int32{1011}, + 0x386: []int32{940}, + 0x388: []int32{941}, + 0x389: []int32{942}, + 0x38a: []int32{943}, + 0x38c: []int32{972}, + 0x38e: []int32{973}, + 0x38f: []int32{974}, + 0x390: []int32{953, 776, 769}, + 0x391: []int32{945}, + 0x392: []int32{946}, + 0x393: []int32{947}, + 0x394: []int32{948}, + 0x395: []int32{949}, + 0x396: []int32{950}, + 0x397: []int32{951}, + 0x398: []int32{952}, + 0x399: []int32{953}, + 0x39a: []int32{954}, + 0x39b: []int32{955}, + 0x39c: []int32{956}, + 0x39d: []int32{957}, + 0x39e: []int32{958}, + 0x39f: []int32{959}, + 0x3a0: []int32{960}, + 0x3a1: []int32{961}, + 0x3a3: []int32{963}, + 0x3a4: []int32{964}, + 0x3a5: []int32{965}, + 0x3a6: []int32{966}, + 0x3a7: []int32{967}, + 0x3a8: []int32{968}, + 0x3a9: []int32{969}, + 0x3aa: []int32{970}, + 0x3ab: []int32{971}, + 0x3b0: []int32{965, 776, 769}, + 0x3c2: []int32{963}, + 0x3cf: []int32{983}, + 0x3d0: []int32{946}, + 0x3d1: []int32{952}, + 0x3d5: []int32{966}, + 0x3d6: []int32{960}, + 0x3d8: []int32{985}, + 0x3da: []int32{987}, + 0x3dc: []int32{989}, + 0x3de: []int32{991}, + 0x3e0: []int32{993}, + 0x3e2: []int32{995}, + 0x3e4: []int32{997}, + 0x3e6: []int32{999}, + 0x3e8: []int32{1001}, + 0x3ea: []int32{1003}, + 0x3ec: []int32{1005}, + 0x3ee: []int32{1007}, + 0x3f0: []int32{954}, + 0x3f1: []int32{961}, + 0x3f4: []int32{952}, + 0x3f5: []int32{949}, + 0x3f7: []int32{1016}, + 0x3f9: []int32{1010}, + 0x3fa: []int32{1019}, + 0x3fd: []int32{891}, + 0x3fe: []int32{892}, + 0x3ff: []int32{893}, + 0x400: []int32{1104}, + 0x401: []int32{1105}, + 0x402: []int32{1106}, + 0x403: []int32{1107}, + 0x404: []int32{1108}, + 0x405: []int32{1109}, + 0x406: []int32{1110}, + 0x407: []int32{1111}, + 0x408: []int32{1112}, + 0x409: []int32{1113}, + 0x40a: []int32{1114}, + 0x40b: []int32{1115}, + 0x40c: []int32{1116}, + 0x40d: []int32{1117}, + 0x40e: []int32{1118}, + 0x40f: []int32{1119}, + 0x410: []int32{1072}, + 0x411: []int32{1073}, + 0x412: []int32{1074}, + 0x413: []int32{1075}, + 0x414: []int32{1076}, + 0x415: []int32{1077}, + 0x416: []int32{1078}, + 0x417: []int32{1079}, + 0x418: []int32{1080}, + 0x419: []int32{1081}, + 0x41a: []int32{1082}, + 0x41b: []int32{1083}, + 0x41c: []int32{1084}, + 0x41d: []int32{1085}, + 0x41e: []int32{1086}, + 0x41f: []int32{1087}, + 0x420: []int32{1088}, + 0x421: []int32{1089}, + 0x422: []int32{1090}, + 0x423: []int32{1091}, + 0x424: []int32{1092}, + 0x425: []int32{1093}, + 0x426: []int32{1094}, + 0x427: []int32{1095}, + 0x428: []int32{1096}, + 0x429: []int32{1097}, + 0x42a: []int32{1098}, + 0x42b: []int32{1099}, + 0x42c: []int32{1100}, + 0x42d: []int32{1101}, + 0x42e: []int32{1102}, + 0x42f: []int32{1103}, + 0x460: []int32{1121}, + 0x462: []int32{1123}, + 0x464: []int32{1125}, + 0x466: []int32{1127}, + 0x468: []int32{1129}, + 0x46a: []int32{1131}, + 0x46c: []int32{1133}, + 0x46e: []int32{1135}, + 0x470: []int32{1137}, + 0x472: []int32{1139}, + 0x474: []int32{1141}, + 0x476: []int32{1143}, + 0x478: []int32{1145}, + 0x47a: []int32{1147}, + 0x47c: []int32{1149}, + 0x47e: []int32{1151}, + 0x480: []int32{1153}, + 0x48a: []int32{1163}, + 0x48c: []int32{1165}, + 0x48e: []int32{1167}, + 0x490: []int32{1169}, + 0x492: []int32{1171}, + 0x494: []int32{1173}, + 0x496: []int32{1175}, + 0x498: []int32{1177}, + 0x49a: []int32{1179}, + 0x49c: []int32{1181}, + 0x49e: []int32{1183}, + 0x4a0: []int32{1185}, + 0x4a2: []int32{1187}, + 0x4a4: []int32{1189}, + 0x4a6: []int32{1191}, + 0x4a8: []int32{1193}, + 0x4aa: []int32{1195}, + 0x4ac: []int32{1197}, + 0x4ae: []int32{1199}, + 0x4b0: []int32{1201}, + 0x4b2: []int32{1203}, + 0x4b4: []int32{1205}, + 0x4b6: []int32{1207}, + 0x4b8: []int32{1209}, + 0x4ba: []int32{1211}, + 0x4bc: []int32{1213}, + 0x4be: []int32{1215}, + 0x4c0: []int32{1231}, + 0x4c1: []int32{1218}, + 0x4c3: []int32{1220}, + 0x4c5: []int32{1222}, + 0x4c7: []int32{1224}, + 0x4c9: []int32{1226}, + 0x4cb: []int32{1228}, + 0x4cd: []int32{1230}, + 0x4d0: []int32{1233}, + 0x4d2: []int32{1235}, + 0x4d4: []int32{1237}, + 0x4d6: []int32{1239}, + 0x4d8: []int32{1241}, + 0x4da: []int32{1243}, + 0x4dc: []int32{1245}, + 0x4de: []int32{1247}, + 0x4e0: []int32{1249}, + 0x4e2: []int32{1251}, + 0x4e4: []int32{1253}, + 0x4e6: []int32{1255}, + 0x4e8: []int32{1257}, + 0x4ea: []int32{1259}, + 0x4ec: []int32{1261}, + 0x4ee: []int32{1263}, + 0x4f0: []int32{1265}, + 0x4f2: []int32{1267}, + 0x4f4: []int32{1269}, + 0x4f6: []int32{1271}, + 0x4f8: []int32{1273}, + 0x4fa: []int32{1275}, + 0x4fc: []int32{1277}, + 0x4fe: []int32{1279}, + 0x500: []int32{1281}, + 0x502: []int32{1283}, + 0x504: []int32{1285}, + 0x506: []int32{1287}, + 0x508: []int32{1289}, + 0x50a: []int32{1291}, + 0x50c: []int32{1293}, + 0x50e: []int32{1295}, + 0x510: []int32{1297}, + 0x512: []int32{1299}, + 0x514: []int32{1301}, + 0x516: []int32{1303}, + 0x518: []int32{1305}, + 0x51a: []int32{1307}, + 0x51c: []int32{1309}, + 0x51e: []int32{1311}, + 0x520: []int32{1313}, + 0x522: []int32{1315}, + 0x524: []int32{1317}, + 0x526: []int32{1319}, + 0x528: []int32{1321}, + 0x52a: []int32{1323}, + 0x52c: []int32{1325}, + 0x52e: []int32{1327}, + 0x531: []int32{1377}, + 0x532: []int32{1378}, + 0x533: []int32{1379}, + 0x534: []int32{1380}, + 0x535: []int32{1381}, + 0x536: []int32{1382}, + 0x537: []int32{1383}, + 0x538: []int32{1384}, + 0x539: []int32{1385}, + 0x53a: []int32{1386}, + 0x53b: []int32{1387}, + 0x53c: []int32{1388}, + 0x53d: []int32{1389}, + 0x53e: []int32{1390}, + 0x53f: []int32{1391}, + 0x540: []int32{1392}, + 0x541: []int32{1393}, + 0x542: []int32{1394}, + 0x543: []int32{1395}, + 0x544: []int32{1396}, + 0x545: []int32{1397}, + 0x546: []int32{1398}, + 0x547: []int32{1399}, + 0x548: []int32{1400}, + 0x549: []int32{1401}, + 0x54a: []int32{1402}, + 0x54b: []int32{1403}, + 0x54c: []int32{1404}, + 0x54d: []int32{1405}, + 0x54e: []int32{1406}, + 0x54f: []int32{1407}, + 0x550: []int32{1408}, + 0x551: []int32{1409}, + 0x552: []int32{1410}, + 0x553: []int32{1411}, + 0x554: []int32{1412}, + 0x555: []int32{1413}, + 0x556: []int32{1414}, + 0x587: []int32{1381, 1410}, + 0x10a0: []int32{11520}, + 0x10a1: []int32{11521}, + 0x10a2: []int32{11522}, + 0x10a3: []int32{11523}, + 0x10a4: []int32{11524}, + 0x10a5: []int32{11525}, + 0x10a6: []int32{11526}, + 0x10a7: []int32{11527}, + 0x10a8: []int32{11528}, + 0x10a9: []int32{11529}, + 0x10aa: []int32{11530}, + 0x10ab: []int32{11531}, + 0x10ac: []int32{11532}, + 0x10ad: []int32{11533}, + 0x10ae: []int32{11534}, + 0x10af: []int32{11535}, + 0x10b0: []int32{11536}, + 0x10b1: []int32{11537}, + 0x10b2: []int32{11538}, + 0x10b3: []int32{11539}, + 0x10b4: []int32{11540}, + 0x10b5: []int32{11541}, + 0x10b6: []int32{11542}, + 0x10b7: []int32{11543}, + 0x10b8: []int32{11544}, + 0x10b9: []int32{11545}, + 0x10ba: []int32{11546}, + 0x10bb: []int32{11547}, + 0x10bc: []int32{11548}, + 0x10bd: []int32{11549}, + 0x10be: []int32{11550}, + 0x10bf: []int32{11551}, + 0x10c0: []int32{11552}, + 0x10c1: []int32{11553}, + 0x10c2: []int32{11554}, + 0x10c3: []int32{11555}, + 0x10c4: []int32{11556}, + 0x10c5: []int32{11557}, + 0x10c7: []int32{11559}, + 0x10cd: []int32{11565}, + 0x13f8: []int32{5104}, + 0x13f9: []int32{5105}, + 0x13fa: []int32{5106}, + 0x13fb: []int32{5107}, + 0x13fc: []int32{5108}, + 0x13fd: []int32{5109}, + 0x1c80: []int32{1074}, + 0x1c81: []int32{1076}, + 0x1c82: []int32{1086}, + 0x1c83: []int32{1089}, + 0x1c84: []int32{1090}, + 0x1c85: []int32{1090}, + 0x1c86: []int32{1098}, + 0x1c87: []int32{1123}, + 0x1c88: []int32{42571}, + 0x1c90: []int32{4304}, + 0x1c91: []int32{4305}, + 0x1c92: []int32{4306}, + 0x1c93: []int32{4307}, + 0x1c94: []int32{4308}, + 0x1c95: []int32{4309}, + 0x1c96: []int32{4310}, + 0x1c97: []int32{4311}, + 0x1c98: []int32{4312}, + 0x1c99: []int32{4313}, + 0x1c9a: []int32{4314}, + 0x1c9b: []int32{4315}, + 0x1c9c: []int32{4316}, + 0x1c9d: []int32{4317}, + 0x1c9e: []int32{4318}, + 0x1c9f: []int32{4319}, + 0x1ca0: []int32{4320}, + 0x1ca1: []int32{4321}, + 0x1ca2: []int32{4322}, + 0x1ca3: []int32{4323}, + 0x1ca4: []int32{4324}, + 0x1ca5: []int32{4325}, + 0x1ca6: []int32{4326}, + 0x1ca7: []int32{4327}, + 0x1ca8: []int32{4328}, + 0x1ca9: []int32{4329}, + 0x1caa: []int32{4330}, + 0x1cab: []int32{4331}, + 0x1cac: []int32{4332}, + 0x1cad: []int32{4333}, + 0x1cae: []int32{4334}, + 0x1caf: []int32{4335}, + 0x1cb0: []int32{4336}, + 0x1cb1: []int32{4337}, + 0x1cb2: []int32{4338}, + 0x1cb3: []int32{4339}, + 0x1cb4: []int32{4340}, + 0x1cb5: []int32{4341}, + 0x1cb6: []int32{4342}, + 0x1cb7: []int32{4343}, + 0x1cb8: []int32{4344}, + 0x1cb9: []int32{4345}, + 0x1cba: []int32{4346}, + 0x1cbd: []int32{4349}, + 0x1cbe: []int32{4350}, + 0x1cbf: []int32{4351}, + 0x1e00: []int32{7681}, + 0x1e02: []int32{7683}, + 0x1e04: []int32{7685}, + 0x1e06: []int32{7687}, + 0x1e08: []int32{7689}, + 0x1e0a: []int32{7691}, + 0x1e0c: []int32{7693}, + 0x1e0e: []int32{7695}, + 0x1e10: []int32{7697}, + 0x1e12: []int32{7699}, + 0x1e14: []int32{7701}, + 0x1e16: []int32{7703}, + 0x1e18: []int32{7705}, + 0x1e1a: []int32{7707}, + 0x1e1c: []int32{7709}, + 0x1e1e: []int32{7711}, + 0x1e20: []int32{7713}, + 0x1e22: []int32{7715}, + 0x1e24: []int32{7717}, + 0x1e26: []int32{7719}, + 0x1e28: []int32{7721}, + 0x1e2a: []int32{7723}, + 0x1e2c: []int32{7725}, + 0x1e2e: []int32{7727}, + 0x1e30: []int32{7729}, + 0x1e32: []int32{7731}, + 0x1e34: []int32{7733}, + 0x1e36: []int32{7735}, + 0x1e38: []int32{7737}, + 0x1e3a: []int32{7739}, + 0x1e3c: []int32{7741}, + 0x1e3e: []int32{7743}, + 0x1e40: []int32{7745}, + 0x1e42: []int32{7747}, + 0x1e44: []int32{7749}, + 0x1e46: []int32{7751}, + 0x1e48: []int32{7753}, + 0x1e4a: []int32{7755}, + 0x1e4c: []int32{7757}, + 0x1e4e: []int32{7759}, + 0x1e50: []int32{7761}, + 0x1e52: []int32{7763}, + 0x1e54: []int32{7765}, + 0x1e56: []int32{7767}, + 0x1e58: []int32{7769}, + 0x1e5a: []int32{7771}, + 0x1e5c: []int32{7773}, + 0x1e5e: []int32{7775}, + 0x1e60: []int32{7777}, + 0x1e62: []int32{7779}, + 0x1e64: []int32{7781}, + 0x1e66: []int32{7783}, + 0x1e68: []int32{7785}, + 0x1e6a: []int32{7787}, + 0x1e6c: []int32{7789}, + 0x1e6e: []int32{7791}, + 0x1e70: []int32{7793}, + 0x1e72: []int32{7795}, + 0x1e74: []int32{7797}, + 0x1e76: []int32{7799}, + 0x1e78: []int32{7801}, + 0x1e7a: []int32{7803}, + 0x1e7c: []int32{7805}, + 0x1e7e: []int32{7807}, + 0x1e80: []int32{7809}, + 0x1e82: []int32{7811}, + 0x1e84: []int32{7813}, + 0x1e86: []int32{7815}, + 0x1e88: []int32{7817}, + 0x1e8a: []int32{7819}, + 0x1e8c: []int32{7821}, + 0x1e8e: []int32{7823}, + 0x1e90: []int32{7825}, + 0x1e92: []int32{7827}, + 0x1e94: []int32{7829}, + 0x1e96: []int32{104, 817}, + 0x1e97: []int32{116, 776}, + 0x1e98: []int32{119, 778}, + 0x1e99: []int32{121, 778}, + 0x1e9a: []int32{97, 702}, + 0x1e9b: []int32{7777}, + 0x1e9e: []int32{115, 115}, + 0x1ea0: []int32{7841}, + 0x1ea2: []int32{7843}, + 0x1ea4: []int32{7845}, + 0x1ea6: []int32{7847}, + 0x1ea8: []int32{7849}, + 0x1eaa: []int32{7851}, + 0x1eac: []int32{7853}, + 0x1eae: []int32{7855}, + 0x1eb0: []int32{7857}, + 0x1eb2: []int32{7859}, + 0x1eb4: []int32{7861}, + 0x1eb6: []int32{7863}, + 0x1eb8: []int32{7865}, + 0x1eba: []int32{7867}, + 0x1ebc: []int32{7869}, + 0x1ebe: []int32{7871}, + 0x1ec0: []int32{7873}, + 0x1ec2: []int32{7875}, + 0x1ec4: []int32{7877}, + 0x1ec6: []int32{7879}, + 0x1ec8: []int32{7881}, + 0x1eca: []int32{7883}, + 0x1ecc: []int32{7885}, + 0x1ece: []int32{7887}, + 0x1ed0: []int32{7889}, + 0x1ed2: []int32{7891}, + 0x1ed4: []int32{7893}, + 0x1ed6: []int32{7895}, + 0x1ed8: []int32{7897}, + 0x1eda: []int32{7899}, + 0x1edc: []int32{7901}, + 0x1ede: []int32{7903}, + 0x1ee0: []int32{7905}, + 0x1ee2: []int32{7907}, + 0x1ee4: []int32{7909}, + 0x1ee6: []int32{7911}, + 0x1ee8: []int32{7913}, + 0x1eea: []int32{7915}, + 0x1eec: []int32{7917}, + 0x1eee: []int32{7919}, + 0x1ef0: []int32{7921}, + 0x1ef2: []int32{7923}, + 0x1ef4: []int32{7925}, + 0x1ef6: []int32{7927}, + 0x1ef8: []int32{7929}, + 0x1efa: []int32{7931}, + 0x1efc: []int32{7933}, + 0x1efe: []int32{7935}, + 0x1f08: []int32{7936}, + 0x1f09: []int32{7937}, + 0x1f0a: []int32{7938}, + 0x1f0b: []int32{7939}, + 0x1f0c: []int32{7940}, + 0x1f0d: []int32{7941}, + 0x1f0e: []int32{7942}, + 0x1f0f: []int32{7943}, + 0x1f18: []int32{7952}, + 0x1f19: []int32{7953}, + 0x1f1a: []int32{7954}, + 0x1f1b: []int32{7955}, + 0x1f1c: []int32{7956}, + 0x1f1d: []int32{7957}, + 0x1f28: []int32{7968}, + 0x1f29: []int32{7969}, + 0x1f2a: []int32{7970}, + 0x1f2b: []int32{7971}, + 0x1f2c: []int32{7972}, + 0x1f2d: []int32{7973}, + 0x1f2e: []int32{7974}, + 0x1f2f: []int32{7975}, + 0x1f38: []int32{7984}, + 0x1f39: []int32{7985}, + 0x1f3a: []int32{7986}, + 0x1f3b: []int32{7987}, + 0x1f3c: []int32{7988}, + 0x1f3d: []int32{7989}, + 0x1f3e: []int32{7990}, + 0x1f3f: []int32{7991}, + 0x1f48: []int32{8000}, + 0x1f49: []int32{8001}, + 0x1f4a: []int32{8002}, + 0x1f4b: []int32{8003}, + 0x1f4c: []int32{8004}, + 0x1f4d: []int32{8005}, + 0x1f50: []int32{965, 787}, + 0x1f52: []int32{965, 787, 768}, + 0x1f54: []int32{965, 787, 769}, + 0x1f56: []int32{965, 787, 834}, + 0x1f59: []int32{8017}, + 0x1f5b: []int32{8019}, + 0x1f5d: []int32{8021}, + 0x1f5f: []int32{8023}, + 0x1f68: []int32{8032}, + 0x1f69: []int32{8033}, + 0x1f6a: []int32{8034}, + 0x1f6b: []int32{8035}, + 0x1f6c: []int32{8036}, + 0x1f6d: []int32{8037}, + 0x1f6e: []int32{8038}, + 0x1f6f: []int32{8039}, + 0x1f80: []int32{7936, 953}, + 0x1f81: []int32{7937, 953}, + 0x1f82: []int32{7938, 953}, + 0x1f83: []int32{7939, 953}, + 0x1f84: []int32{7940, 953}, + 0x1f85: []int32{7941, 953}, + 0x1f86: []int32{7942, 953}, + 0x1f87: []int32{7943, 953}, + 0x1f88: []int32{7936, 953}, + 0x1f89: []int32{7937, 953}, + 0x1f8a: []int32{7938, 953}, + 0x1f8b: []int32{7939, 953}, + 0x1f8c: []int32{7940, 953}, + 0x1f8d: []int32{7941, 953}, + 0x1f8e: []int32{7942, 953}, + 0x1f8f: []int32{7943, 953}, + 0x1f90: []int32{7968, 953}, + 0x1f91: []int32{7969, 953}, + 0x1f92: []int32{7970, 953}, + 0x1f93: []int32{7971, 953}, + 0x1f94: []int32{7972, 953}, + 0x1f95: []int32{7973, 953}, + 0x1f96: []int32{7974, 953}, + 0x1f97: []int32{7975, 953}, + 0x1f98: []int32{7968, 953}, + 0x1f99: []int32{7969, 953}, + 0x1f9a: []int32{7970, 953}, + 0x1f9b: []int32{7971, 953}, + 0x1f9c: []int32{7972, 953}, + 0x1f9d: []int32{7973, 953}, + 0x1f9e: []int32{7974, 953}, + 0x1f9f: []int32{7975, 953}, + 0x1fa0: []int32{8032, 953}, + 0x1fa1: []int32{8033, 953}, + 0x1fa2: []int32{8034, 953}, + 0x1fa3: []int32{8035, 953}, + 0x1fa4: []int32{8036, 953}, + 0x1fa5: []int32{8037, 953}, + 0x1fa6: []int32{8038, 953}, + 0x1fa7: []int32{8039, 953}, + 0x1fa8: []int32{8032, 953}, + 0x1fa9: []int32{8033, 953}, + 0x1faa: []int32{8034, 953}, + 0x1fab: []int32{8035, 953}, + 0x1fac: []int32{8036, 953}, + 0x1fad: []int32{8037, 953}, + 0x1fae: []int32{8038, 953}, + 0x1faf: []int32{8039, 953}, + 0x1fb2: []int32{8048, 953}, + 0x1fb3: []int32{945, 953}, + 0x1fb4: []int32{940, 953}, + 0x1fb6: []int32{945, 834}, + 0x1fb7: []int32{945, 834, 953}, + 0x1fb8: []int32{8112}, + 0x1fb9: []int32{8113}, + 0x1fba: []int32{8048}, + 0x1fbb: []int32{8049}, + 0x1fbc: []int32{945, 953}, + 0x1fbe: []int32{953}, + 0x1fc2: []int32{8052, 953}, + 0x1fc3: []int32{951, 953}, + 0x1fc4: []int32{942, 953}, + 0x1fc6: []int32{951, 834}, + 0x1fc7: []int32{951, 834, 953}, + 0x1fc8: []int32{8050}, + 0x1fc9: []int32{8051}, + 0x1fca: []int32{8052}, + 0x1fcb: []int32{8053}, + 0x1fcc: []int32{951, 953}, + 0x1fd2: []int32{953, 776, 768}, + 0x1fd3: []int32{953, 776, 769}, + 0x1fd6: []int32{953, 834}, + 0x1fd7: []int32{953, 776, 834}, + 0x1fd8: []int32{8144}, + 0x1fd9: []int32{8145}, + 0x1fda: []int32{8054}, + 0x1fdb: []int32{8055}, + 0x1fe2: []int32{965, 776, 768}, + 0x1fe3: []int32{965, 776, 769}, + 0x1fe4: []int32{961, 787}, + 0x1fe6: []int32{965, 834}, + 0x1fe7: []int32{965, 776, 834}, + 0x1fe8: []int32{8160}, + 0x1fe9: []int32{8161}, + 0x1fea: []int32{8058}, + 0x1feb: []int32{8059}, + 0x1fec: []int32{8165}, + 0x1ff2: []int32{8060, 953}, + 0x1ff3: []int32{969, 953}, + 0x1ff4: []int32{974, 953}, + 0x1ff6: []int32{969, 834}, + 0x1ff7: []int32{969, 834, 953}, + 0x1ff8: []int32{8056}, + 0x1ff9: []int32{8057}, + 0x1ffa: []int32{8060}, + 0x1ffb: []int32{8061}, + 0x1ffc: []int32{969, 953}, + 0x2126: []int32{969}, + 0x212a: []int32{107}, + 0x212b: []int32{229}, + 0x2132: []int32{8526}, + 0x2160: []int32{8560}, + 0x2161: []int32{8561}, + 0x2162: []int32{8562}, + 0x2163: []int32{8563}, + 0x2164: []int32{8564}, + 0x2165: []int32{8565}, + 0x2166: []int32{8566}, + 0x2167: []int32{8567}, + 0x2168: []int32{8568}, + 0x2169: []int32{8569}, + 0x216a: []int32{8570}, + 0x216b: []int32{8571}, + 0x216c: []int32{8572}, + 0x216d: []int32{8573}, + 0x216e: []int32{8574}, + 0x216f: []int32{8575}, + 0x2183: []int32{8580}, + 0x24b6: []int32{9424}, + 0x24b7: []int32{9425}, + 0x24b8: []int32{9426}, + 0x24b9: []int32{9427}, + 0x24ba: []int32{9428}, + 0x24bb: []int32{9429}, + 0x24bc: []int32{9430}, + 0x24bd: []int32{9431}, + 0x24be: []int32{9432}, + 0x24bf: []int32{9433}, + 0x24c0: []int32{9434}, + 0x24c1: []int32{9435}, + 0x24c2: []int32{9436}, + 0x24c3: []int32{9437}, + 0x24c4: []int32{9438}, + 0x24c5: []int32{9439}, + 0x24c6: []int32{9440}, + 0x24c7: []int32{9441}, + 0x24c8: []int32{9442}, + 0x24c9: []int32{9443}, + 0x24ca: []int32{9444}, + 0x24cb: []int32{9445}, + 0x24cc: []int32{9446}, + 0x24cd: []int32{9447}, + 0x24ce: []int32{9448}, + 0x24cf: []int32{9449}, + 0x2c00: []int32{11312}, + 0x2c01: []int32{11313}, + 0x2c02: []int32{11314}, + 0x2c03: []int32{11315}, + 0x2c04: []int32{11316}, + 0x2c05: []int32{11317}, + 0x2c06: []int32{11318}, + 0x2c07: []int32{11319}, + 0x2c08: []int32{11320}, + 0x2c09: []int32{11321}, + 0x2c0a: []int32{11322}, + 0x2c0b: []int32{11323}, + 0x2c0c: []int32{11324}, + 0x2c0d: []int32{11325}, + 0x2c0e: []int32{11326}, + 0x2c0f: []int32{11327}, + 0x2c10: []int32{11328}, + 0x2c11: []int32{11329}, + 0x2c12: []int32{11330}, + 0x2c13: []int32{11331}, + 0x2c14: []int32{11332}, + 0x2c15: []int32{11333}, + 0x2c16: []int32{11334}, + 0x2c17: []int32{11335}, + 0x2c18: []int32{11336}, + 0x2c19: []int32{11337}, + 0x2c1a: []int32{11338}, + 0x2c1b: []int32{11339}, + 0x2c1c: []int32{11340}, + 0x2c1d: []int32{11341}, + 0x2c1e: []int32{11342}, + 0x2c1f: []int32{11343}, + 0x2c20: []int32{11344}, + 0x2c21: []int32{11345}, + 0x2c22: []int32{11346}, + 0x2c23: []int32{11347}, + 0x2c24: []int32{11348}, + 0x2c25: []int32{11349}, + 0x2c26: []int32{11350}, + 0x2c27: []int32{11351}, + 0x2c28: []int32{11352}, + 0x2c29: []int32{11353}, + 0x2c2a: []int32{11354}, + 0x2c2b: []int32{11355}, + 0x2c2c: []int32{11356}, + 0x2c2d: []int32{11357}, + 0x2c2e: []int32{11358}, + 0x2c60: []int32{11361}, + 0x2c62: []int32{619}, + 0x2c63: []int32{7549}, + 0x2c64: []int32{637}, + 0x2c67: []int32{11368}, + 0x2c69: []int32{11370}, + 0x2c6b: []int32{11372}, + 0x2c6d: []int32{593}, + 0x2c6e: []int32{625}, + 0x2c6f: []int32{592}, + 0x2c70: []int32{594}, + 0x2c72: []int32{11379}, + 0x2c75: []int32{11382}, + 0x2c7e: []int32{575}, + 0x2c7f: []int32{576}, + 0x2c80: []int32{11393}, + 0x2c82: []int32{11395}, + 0x2c84: []int32{11397}, + 0x2c86: []int32{11399}, + 0x2c88: []int32{11401}, + 0x2c8a: []int32{11403}, + 0x2c8c: []int32{11405}, + 0x2c8e: []int32{11407}, + 0x2c90: []int32{11409}, + 0x2c92: []int32{11411}, + 0x2c94: []int32{11413}, + 0x2c96: []int32{11415}, + 0x2c98: []int32{11417}, + 0x2c9a: []int32{11419}, + 0x2c9c: []int32{11421}, + 0x2c9e: []int32{11423}, + 0x2ca0: []int32{11425}, + 0x2ca2: []int32{11427}, + 0x2ca4: []int32{11429}, + 0x2ca6: []int32{11431}, + 0x2ca8: []int32{11433}, + 0x2caa: []int32{11435}, + 0x2cac: []int32{11437}, + 0x2cae: []int32{11439}, + 0x2cb0: []int32{11441}, + 0x2cb2: []int32{11443}, + 0x2cb4: []int32{11445}, + 0x2cb6: []int32{11447}, + 0x2cb8: []int32{11449}, + 0x2cba: []int32{11451}, + 0x2cbc: []int32{11453}, + 0x2cbe: []int32{11455}, + 0x2cc0: []int32{11457}, + 0x2cc2: []int32{11459}, + 0x2cc4: []int32{11461}, + 0x2cc6: []int32{11463}, + 0x2cc8: []int32{11465}, + 0x2cca: []int32{11467}, + 0x2ccc: []int32{11469}, + 0x2cce: []int32{11471}, + 0x2cd0: []int32{11473}, + 0x2cd2: []int32{11475}, + 0x2cd4: []int32{11477}, + 0x2cd6: []int32{11479}, + 0x2cd8: []int32{11481}, + 0x2cda: []int32{11483}, + 0x2cdc: []int32{11485}, + 0x2cde: []int32{11487}, + 0x2ce0: []int32{11489}, + 0x2ce2: []int32{11491}, + 0x2ceb: []int32{11500}, + 0x2ced: []int32{11502}, + 0x2cf2: []int32{11507}, + 0xa640: []int32{42561}, + 0xa642: []int32{42563}, + 0xa644: []int32{42565}, + 0xa646: []int32{42567}, + 0xa648: []int32{42569}, + 0xa64a: []int32{42571}, + 0xa64c: []int32{42573}, + 0xa64e: []int32{42575}, + 0xa650: []int32{42577}, + 0xa652: []int32{42579}, + 0xa654: []int32{42581}, + 0xa656: []int32{42583}, + 0xa658: []int32{42585}, + 0xa65a: []int32{42587}, + 0xa65c: []int32{42589}, + 0xa65e: []int32{42591}, + 0xa660: []int32{42593}, + 0xa662: []int32{42595}, + 0xa664: []int32{42597}, + 0xa666: []int32{42599}, + 0xa668: []int32{42601}, + 0xa66a: []int32{42603}, + 0xa66c: []int32{42605}, + 0xa680: []int32{42625}, + 0xa682: []int32{42627}, + 0xa684: []int32{42629}, + 0xa686: []int32{42631}, + 0xa688: []int32{42633}, + 0xa68a: []int32{42635}, + 0xa68c: []int32{42637}, + 0xa68e: []int32{42639}, + 0xa690: []int32{42641}, + 0xa692: []int32{42643}, + 0xa694: []int32{42645}, + 0xa696: []int32{42647}, + 0xa698: []int32{42649}, + 0xa69a: []int32{42651}, + 0xa722: []int32{42787}, + 0xa724: []int32{42789}, + 0xa726: []int32{42791}, + 0xa728: []int32{42793}, + 0xa72a: []int32{42795}, + 0xa72c: []int32{42797}, + 0xa72e: []int32{42799}, + 0xa732: []int32{42803}, + 0xa734: []int32{42805}, + 0xa736: []int32{42807}, + 0xa738: []int32{42809}, + 0xa73a: []int32{42811}, + 0xa73c: []int32{42813}, + 0xa73e: []int32{42815}, + 0xa740: []int32{42817}, + 0xa742: []int32{42819}, + 0xa744: []int32{42821}, + 0xa746: []int32{42823}, + 0xa748: []int32{42825}, + 0xa74a: []int32{42827}, + 0xa74c: []int32{42829}, + 0xa74e: []int32{42831}, + 0xa750: []int32{42833}, + 0xa752: []int32{42835}, + 0xa754: []int32{42837}, + 0xa756: []int32{42839}, + 0xa758: []int32{42841}, + 0xa75a: []int32{42843}, + 0xa75c: []int32{42845}, + 0xa75e: []int32{42847}, + 0xa760: []int32{42849}, + 0xa762: []int32{42851}, + 0xa764: []int32{42853}, + 0xa766: []int32{42855}, + 0xa768: []int32{42857}, + 0xa76a: []int32{42859}, + 0xa76c: []int32{42861}, + 0xa76e: []int32{42863}, + 0xa779: []int32{42874}, + 0xa77b: []int32{42876}, + 0xa77d: []int32{7545}, + 0xa77e: []int32{42879}, + 0xa780: []int32{42881}, + 0xa782: []int32{42883}, + 0xa784: []int32{42885}, + 0xa786: []int32{42887}, + 0xa78b: []int32{42892}, + 0xa78d: []int32{613}, + 0xa790: []int32{42897}, + 0xa792: []int32{42899}, + 0xa796: []int32{42903}, + 0xa798: []int32{42905}, + 0xa79a: []int32{42907}, + 0xa79c: []int32{42909}, + 0xa79e: []int32{42911}, + 0xa7a0: []int32{42913}, + 0xa7a2: []int32{42915}, + 0xa7a4: []int32{42917}, + 0xa7a6: []int32{42919}, + 0xa7a8: []int32{42921}, + 0xa7aa: []int32{614}, + 0xa7ab: []int32{604}, + 0xa7ac: []int32{609}, + 0xa7ad: []int32{620}, + 0xa7ae: []int32{618}, + 0xa7b0: []int32{670}, + 0xa7b1: []int32{647}, + 0xa7b2: []int32{669}, + 0xa7b3: []int32{43859}, + 0xa7b4: []int32{42933}, + 0xa7b6: []int32{42935}, + 0xa7b8: []int32{42937}, + 0xa7ba: []int32{42939}, + 0xa7bc: []int32{42941}, + 0xa7be: []int32{42943}, + 0xa7c2: []int32{42947}, + 0xa7c4: []int32{42900}, + 0xa7c5: []int32{642}, + 0xa7c6: []int32{7566}, + 0xab70: []int32{5024}, + 0xab71: []int32{5025}, + 0xab72: []int32{5026}, + 0xab73: []int32{5027}, + 0xab74: []int32{5028}, + 0xab75: []int32{5029}, + 0xab76: []int32{5030}, + 0xab77: []int32{5031}, + 0xab78: []int32{5032}, + 0xab79: []int32{5033}, + 0xab7a: []int32{5034}, + 0xab7b: []int32{5035}, + 0xab7c: []int32{5036}, + 0xab7d: []int32{5037}, + 0xab7e: []int32{5038}, + 0xab7f: []int32{5039}, + 0xab80: []int32{5040}, + 0xab81: []int32{5041}, + 0xab82: []int32{5042}, + 0xab83: []int32{5043}, + 0xab84: []int32{5044}, + 0xab85: []int32{5045}, + 0xab86: []int32{5046}, + 0xab87: []int32{5047}, + 0xab88: []int32{5048}, + 0xab89: []int32{5049}, + 0xab8a: []int32{5050}, + 0xab8b: []int32{5051}, + 0xab8c: []int32{5052}, + 0xab8d: []int32{5053}, + 0xab8e: []int32{5054}, + 0xab8f: []int32{5055}, + 0xab90: []int32{5056}, + 0xab91: []int32{5057}, + 0xab92: []int32{5058}, + 0xab93: []int32{5059}, + 0xab94: []int32{5060}, + 0xab95: []int32{5061}, + 0xab96: []int32{5062}, + 0xab97: []int32{5063}, + 0xab98: []int32{5064}, + 0xab99: []int32{5065}, + 0xab9a: []int32{5066}, + 0xab9b: []int32{5067}, + 0xab9c: []int32{5068}, + 0xab9d: []int32{5069}, + 0xab9e: []int32{5070}, + 0xab9f: []int32{5071}, + 0xaba0: []int32{5072}, + 0xaba1: []int32{5073}, + 0xaba2: []int32{5074}, + 0xaba3: []int32{5075}, + 0xaba4: []int32{5076}, + 0xaba5: []int32{5077}, + 0xaba6: []int32{5078}, + 0xaba7: []int32{5079}, + 0xaba8: []int32{5080}, + 0xaba9: []int32{5081}, + 0xabaa: []int32{5082}, + 0xabab: []int32{5083}, + 0xabac: []int32{5084}, + 0xabad: []int32{5085}, + 0xabae: []int32{5086}, + 0xabaf: []int32{5087}, + 0xabb0: []int32{5088}, + 0xabb1: []int32{5089}, + 0xabb2: []int32{5090}, + 0xabb3: []int32{5091}, + 0xabb4: []int32{5092}, + 0xabb5: []int32{5093}, + 0xabb6: []int32{5094}, + 0xabb7: []int32{5095}, + 0xabb8: []int32{5096}, + 0xabb9: []int32{5097}, + 0xabba: []int32{5098}, + 0xabbb: []int32{5099}, + 0xabbc: []int32{5100}, + 0xabbd: []int32{5101}, + 0xabbe: []int32{5102}, + 0xabbf: []int32{5103}, + 0xfb00: []int32{102, 102}, + 0xfb01: []int32{102, 105}, + 0xfb02: []int32{102, 108}, + 0xfb03: []int32{102, 102, 105}, + 0xfb04: []int32{102, 102, 108}, + 0xfb05: []int32{115, 116}, + 0xfb06: []int32{115, 116}, + 0xfb13: []int32{1396, 1398}, + 0xfb14: []int32{1396, 1381}, + 0xfb15: []int32{1396, 1387}, + 0xfb16: []int32{1406, 1398}, + 0xfb17: []int32{1396, 1389}, + 0xff21: []int32{65345}, + 0xff22: []int32{65346}, + 0xff23: []int32{65347}, + 0xff24: []int32{65348}, + 0xff25: []int32{65349}, + 0xff26: []int32{65350}, + 0xff27: []int32{65351}, + 0xff28: []int32{65352}, + 0xff29: []int32{65353}, + 0xff2a: []int32{65354}, + 0xff2b: []int32{65355}, + 0xff2c: []int32{65356}, + 0xff2d: []int32{65357}, + 0xff2e: []int32{65358}, + 0xff2f: []int32{65359}, + 0xff30: []int32{65360}, + 0xff31: []int32{65361}, + 0xff32: []int32{65362}, + 0xff33: []int32{65363}, + 0xff34: []int32{65364}, + 0xff35: []int32{65365}, + 0xff36: []int32{65366}, + 0xff37: []int32{65367}, + 0xff38: []int32{65368}, + 0xff39: []int32{65369}, + 0xff3a: []int32{65370}, + 0x10400: []int32{66600}, + 0x10401: []int32{66601}, + 0x10402: []int32{66602}, + 0x10403: []int32{66603}, + 0x10404: []int32{66604}, + 0x10405: []int32{66605}, + 0x10406: []int32{66606}, + 0x10407: []int32{66607}, + 0x10408: []int32{66608}, + 0x10409: []int32{66609}, + 0x1040a: []int32{66610}, + 0x1040b: []int32{66611}, + 0x1040c: []int32{66612}, + 0x1040d: []int32{66613}, + 0x1040e: []int32{66614}, + 0x1040f: []int32{66615}, + 0x10410: []int32{66616}, + 0x10411: []int32{66617}, + 0x10412: []int32{66618}, + 0x10413: []int32{66619}, + 0x10414: []int32{66620}, + 0x10415: []int32{66621}, + 0x10416: []int32{66622}, + 0x10417: []int32{66623}, + 0x10418: []int32{66624}, + 0x10419: []int32{66625}, + 0x1041a: []int32{66626}, + 0x1041b: []int32{66627}, + 0x1041c: []int32{66628}, + 0x1041d: []int32{66629}, + 0x1041e: []int32{66630}, + 0x1041f: []int32{66631}, + 0x10420: []int32{66632}, + 0x10421: []int32{66633}, + 0x10422: []int32{66634}, + 0x10423: []int32{66635}, + 0x10424: []int32{66636}, + 0x10425: []int32{66637}, + 0x10426: []int32{66638}, + 0x10427: []int32{66639}, + 0x104b0: []int32{66776}, + 0x104b1: []int32{66777}, + 0x104b2: []int32{66778}, + 0x104b3: []int32{66779}, + 0x104b4: []int32{66780}, + 0x104b5: []int32{66781}, + 0x104b6: []int32{66782}, + 0x104b7: []int32{66783}, + 0x104b8: []int32{66784}, + 0x104b9: []int32{66785}, + 0x104ba: []int32{66786}, + 0x104bb: []int32{66787}, + 0x104bc: []int32{66788}, + 0x104bd: []int32{66789}, + 0x104be: []int32{66790}, + 0x104bf: []int32{66791}, + 0x104c0: []int32{66792}, + 0x104c1: []int32{66793}, + 0x104c2: []int32{66794}, + 0x104c3: []int32{66795}, + 0x104c4: []int32{66796}, + 0x104c5: []int32{66797}, + 0x104c6: []int32{66798}, + 0x104c7: []int32{66799}, + 0x104c8: []int32{66800}, + 0x104c9: []int32{66801}, + 0x104ca: []int32{66802}, + 0x104cb: []int32{66803}, + 0x104cc: []int32{66804}, + 0x104cd: []int32{66805}, + 0x104ce: []int32{66806}, + 0x104cf: []int32{66807}, + 0x104d0: []int32{66808}, + 0x104d1: []int32{66809}, + 0x104d2: []int32{66810}, + 0x104d3: []int32{66811}, + 0x10c80: []int32{68800}, + 0x10c81: []int32{68801}, + 0x10c82: []int32{68802}, + 0x10c83: []int32{68803}, + 0x10c84: []int32{68804}, + 0x10c85: []int32{68805}, + 0x10c86: []int32{68806}, + 0x10c87: []int32{68807}, + 0x10c88: []int32{68808}, + 0x10c89: []int32{68809}, + 0x10c8a: []int32{68810}, + 0x10c8b: []int32{68811}, + 0x10c8c: []int32{68812}, + 0x10c8d: []int32{68813}, + 0x10c8e: []int32{68814}, + 0x10c8f: []int32{68815}, + 0x10c90: []int32{68816}, + 0x10c91: []int32{68817}, + 0x10c92: []int32{68818}, + 0x10c93: []int32{68819}, + 0x10c94: []int32{68820}, + 0x10c95: []int32{68821}, + 0x10c96: []int32{68822}, + 0x10c97: []int32{68823}, + 0x10c98: []int32{68824}, + 0x10c99: []int32{68825}, + 0x10c9a: []int32{68826}, + 0x10c9b: []int32{68827}, + 0x10c9c: []int32{68828}, + 0x10c9d: []int32{68829}, + 0x10c9e: []int32{68830}, + 0x10c9f: []int32{68831}, + 0x10ca0: []int32{68832}, + 0x10ca1: []int32{68833}, + 0x10ca2: []int32{68834}, + 0x10ca3: []int32{68835}, + 0x10ca4: []int32{68836}, + 0x10ca5: []int32{68837}, + 0x10ca6: []int32{68838}, + 0x10ca7: []int32{68839}, + 0x10ca8: []int32{68840}, + 0x10ca9: []int32{68841}, + 0x10caa: []int32{68842}, + 0x10cab: []int32{68843}, + 0x10cac: []int32{68844}, + 0x10cad: []int32{68845}, + 0x10cae: []int32{68846}, + 0x10caf: []int32{68847}, + 0x10cb0: []int32{68848}, + 0x10cb1: []int32{68849}, + 0x10cb2: []int32{68850}, + 0x118a0: []int32{71872}, + 0x118a1: []int32{71873}, + 0x118a2: []int32{71874}, + 0x118a3: []int32{71875}, + 0x118a4: []int32{71876}, + 0x118a5: []int32{71877}, + 0x118a6: []int32{71878}, + 0x118a7: []int32{71879}, + 0x118a8: []int32{71880}, + 0x118a9: []int32{71881}, + 0x118aa: []int32{71882}, + 0x118ab: []int32{71883}, + 0x118ac: []int32{71884}, + 0x118ad: []int32{71885}, + 0x118ae: []int32{71886}, + 0x118af: []int32{71887}, + 0x118b0: []int32{71888}, + 0x118b1: []int32{71889}, + 0x118b2: []int32{71890}, + 0x118b3: []int32{71891}, + 0x118b4: []int32{71892}, + 0x118b5: []int32{71893}, + 0x118b6: []int32{71894}, + 0x118b7: []int32{71895}, + 0x118b8: []int32{71896}, + 0x118b9: []int32{71897}, + 0x118ba: []int32{71898}, + 0x118bb: []int32{71899}, + 0x118bc: []int32{71900}, + 0x118bd: []int32{71901}, + 0x118be: []int32{71902}, + 0x118bf: []int32{71903}, + 0x16e40: []int32{93792}, + 0x16e41: []int32{93793}, + 0x16e42: []int32{93794}, + 0x16e43: []int32{93795}, + 0x16e44: []int32{93796}, + 0x16e45: []int32{93797}, + 0x16e46: []int32{93798}, + 0x16e47: []int32{93799}, + 0x16e48: []int32{93800}, + 0x16e49: []int32{93801}, + 0x16e4a: []int32{93802}, + 0x16e4b: []int32{93803}, + 0x16e4c: []int32{93804}, + 0x16e4d: []int32{93805}, + 0x16e4e: []int32{93806}, + 0x16e4f: []int32{93807}, + 0x16e50: []int32{93808}, + 0x16e51: []int32{93809}, + 0x16e52: []int32{93810}, + 0x16e53: []int32{93811}, + 0x16e54: []int32{93812}, + 0x16e55: []int32{93813}, + 0x16e56: []int32{93814}, + 0x16e57: []int32{93815}, + 0x16e58: []int32{93816}, + 0x16e59: []int32{93817}, + 0x16e5a: []int32{93818}, + 0x16e5b: []int32{93819}, + 0x16e5c: []int32{93820}, + 0x16e5d: []int32{93821}, + 0x16e5e: []int32{93822}, + 0x16e5f: []int32{93823}, + 0x1e900: []int32{125218}, + 0x1e901: []int32{125219}, + 0x1e902: []int32{125220}, + 0x1e903: []int32{125221}, + 0x1e904: []int32{125222}, + 0x1e905: []int32{125223}, + 0x1e906: []int32{125224}, + 0x1e907: []int32{125225}, + 0x1e908: []int32{125226}, + 0x1e909: []int32{125227}, + 0x1e90a: []int32{125228}, + 0x1e90b: []int32{125229}, + 0x1e90c: []int32{125230}, + 0x1e90d: []int32{125231}, + 0x1e90e: []int32{125232}, + 0x1e90f: []int32{125233}, + 0x1e910: []int32{125234}, + 0x1e911: []int32{125235}, + 0x1e912: []int32{125236}, + 0x1e913: []int32{125237}, + 0x1e914: []int32{125238}, + 0x1e915: []int32{125239}, + 0x1e916: []int32{125240}, + 0x1e917: []int32{125241}, + 0x1e918: []int32{125242}, + 0x1e919: []int32{125243}, + 0x1e91a: []int32{125244}, + 0x1e91b: []int32{125245}, + 0x1e91c: []int32{125246}, + 0x1e91d: []int32{125247}, + 0x1e91e: []int32{125248}, + 0x1e91f: []int32{125249}, + 0x1e920: []int32{125250}, + 0x1e921: []int32{125251}, +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util.go new file mode 100644 index 000000000..a817ec630 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util.go @@ -0,0 +1,980 @@ +// Package util provides utility functions for the goldmark. +package util + +import ( + "bytes" + "io" + "net/url" + "regexp" + "sort" + "strconv" + "unicode" + "unicode/utf8" +) + +// A CopyOnWriteBuffer is a byte buffer that copies buffer when +// it need to be changed. +type CopyOnWriteBuffer struct { + buffer []byte + copied bool +} + +// NewCopyOnWriteBuffer returns a new CopyOnWriteBuffer. +func NewCopyOnWriteBuffer(buffer []byte) CopyOnWriteBuffer { + return CopyOnWriteBuffer{ + buffer: buffer, + copied: false, + } +} + +// Write writes given bytes to the buffer. +// Write allocate new buffer and clears it at the first time. +func (b *CopyOnWriteBuffer) Write(value []byte) { + if !b.copied { + b.buffer = make([]byte, 0, len(b.buffer)+20) + b.copied = true + } + b.buffer = append(b.buffer, value...) +} + +// WriteString writes given string to the buffer. +// WriteString allocate new buffer and clears it at the first time. +func (b *CopyOnWriteBuffer) WriteString(value string) { + b.Write(StringToReadOnlyBytes(value)) +} + +// Append appends given bytes to the buffer. +// Append copy buffer at the first time. +func (b *CopyOnWriteBuffer) Append(value []byte) { + if !b.copied { + tmp := make([]byte, len(b.buffer), len(b.buffer)+20) + copy(tmp, b.buffer) + b.buffer = tmp + b.copied = true + } + b.buffer = append(b.buffer, value...) +} + +// AppendString appends given string to the buffer. +// AppendString copy buffer at the first time. +func (b *CopyOnWriteBuffer) AppendString(value string) { + b.Append(StringToReadOnlyBytes(value)) +} + +// WriteByte writes the given byte to the buffer. +// WriteByte allocate new buffer and clears it at the first time. +func (b *CopyOnWriteBuffer) WriteByte(c byte) { + if !b.copied { + b.buffer = make([]byte, 0, len(b.buffer)+20) + b.copied = true + } + b.buffer = append(b.buffer, c) +} + +// AppendByte appends given bytes to the buffer. +// AppendByte copy buffer at the first time. +func (b *CopyOnWriteBuffer) AppendByte(c byte) { + if !b.copied { + tmp := make([]byte, len(b.buffer), len(b.buffer)+20) + copy(tmp, b.buffer) + b.buffer = tmp + b.copied = true + } + b.buffer = append(b.buffer, c) +} + +// Bytes returns bytes of this buffer. +func (b *CopyOnWriteBuffer) Bytes() []byte { + return b.buffer +} + +// IsCopied returns true if buffer has been copied, otherwise false. +func (b *CopyOnWriteBuffer) IsCopied() bool { + return b.copied +} + +// IsEscapedPunctuation returns true if character at a given index i +// is an escaped punctuation, otherwise false. +func IsEscapedPunctuation(source []byte, i int) bool { + return source[i] == '\\' && i < len(source)-1 && IsPunct(source[i+1]) +} + +// ReadWhile read the given source while pred is true. +func ReadWhile(source []byte, index [2]int, pred func(byte) bool) (int, bool) { + j := index[0] + ok := false + for ; j < index[1]; j++ { + c1 := source[j] + if pred(c1) { + ok = true + continue + } + break + } + return j, ok +} + +// IsBlank returns true if the given string is all space characters. +func IsBlank(bs []byte) bool { + for _, b := range bs { + if !IsSpace(b) { + return false + } + } + return true +} + +// VisualizeSpaces visualize invisible space characters. +func VisualizeSpaces(bs []byte) []byte { + bs = bytes.Replace(bs, []byte(" "), []byte("[SPACE]"), -1) + bs = bytes.Replace(bs, []byte("\t"), []byte("[TAB]"), -1) + bs = bytes.Replace(bs, []byte("\n"), []byte("[NEWLINE]\n"), -1) + bs = bytes.Replace(bs, []byte("\r"), []byte("[CR]"), -1) + bs = bytes.Replace(bs, []byte("\v"), []byte("[VTAB]"), -1) + bs = bytes.Replace(bs, []byte("\x00"), []byte("[NUL]"), -1) + bs = bytes.Replace(bs, []byte("\ufffd"), []byte("[U+FFFD]"), -1) + return bs +} + +// TabWidth calculates actual width of a tab at the given position. +func TabWidth(currentPos int) int { + return 4 - currentPos%4 +} + +// IndentPosition searches an indent position with the given width for the given line. +// If the line contains tab characters, paddings may be not zero. +// currentPos==0 and width==2: +// +// position: 0 1 +// [TAB]aaaa +// width: 1234 5678 +// +// width=2 is in the tab character. In this case, IndentPosition returns +// (pos=1, padding=2) +func IndentPosition(bs []byte, currentPos, width int) (pos, padding int) { + return IndentPositionPadding(bs, currentPos, 0, width) +} + +// IndentPositionPadding searches an indent position with the given width for the given line. +// This function is mostly same as IndentPosition except this function +// takes account into additional paddings. +func IndentPositionPadding(bs []byte, currentPos, paddingv, width int) (pos, padding int) { + if width == 0 { + return 0, paddingv + } + w := 0 + i := 0 + l := len(bs) + for ; i < l; i++ { + if bs[i] == '\t' && w < width { + w += TabWidth(currentPos + w) + } else if bs[i] == ' ' && w < width { + w++ + } else { + break + } + } + if w >= width { + return i - paddingv, w - width + } + return -1, -1 +} + +// DedentPosition dedents lines by the given width. +// +// Deprecated: This function has bugs. Use util.IndentPositionPadding and util.FirstNonSpacePosition. +func DedentPosition(bs []byte, currentPos, width int) (pos, padding int) { + if width == 0 { + return 0, 0 + } + w := 0 + l := len(bs) + i := 0 + for ; i < l; i++ { + if bs[i] == '\t' { + w += TabWidth(currentPos + w) + } else if bs[i] == ' ' { + w++ + } else { + break + } + } + if w >= width { + return i, w - width + } + return i, 0 +} + +// DedentPositionPadding dedents lines by the given width. +// This function is mostly same as DedentPosition except this function +// takes account into additional paddings. +// +// Deprecated: This function has bugs. Use util.IndentPositionPadding and util.FirstNonSpacePosition. +func DedentPositionPadding(bs []byte, currentPos, paddingv, width int) (pos, padding int) { + if width == 0 { + return 0, paddingv + } + + w := 0 + i := 0 + l := len(bs) + for ; i < l; i++ { + if bs[i] == '\t' { + w += TabWidth(currentPos + w) + } else if bs[i] == ' ' { + w++ + } else { + break + } + } + if w >= width { + return i - paddingv, w - width + } + return i - paddingv, 0 +} + +// IndentWidth calculate an indent width for the given line. +func IndentWidth(bs []byte, currentPos int) (width, pos int) { + l := len(bs) + for i := 0; i < l; i++ { + b := bs[i] + if b == ' ' { + width++ + pos++ + } else if b == '\t' { + width += TabWidth(currentPos + width) + pos++ + } else { + break + } + } + return +} + +// FirstNonSpacePosition returns a position line that is a first nonspace +// character. +func FirstNonSpacePosition(bs []byte) int { + i := 0 + for ; i < len(bs); i++ { + c := bs[i] + if c == ' ' || c == '\t' { + continue + } + if c == '\n' { + return -1 + } + return i + } + return -1 +} + +// FindClosure returns a position that closes the given opener. +// If codeSpan is set true, it ignores characters in code spans. +// If allowNesting is set true, closures correspond to nested opener will be +// ignored. +// +// Deprecated: This function can not handle newlines. Many elements +// can be existed over multiple lines(e.g. link labels). +// Use text.Reader.FindClosure. +func FindClosure(bs []byte, opener, closure byte, codeSpan, allowNesting bool) int { + i := 0 + opened := 1 + codeSpanOpener := 0 + for i < len(bs) { + c := bs[i] + if codeSpan && codeSpanOpener != 0 && c == '`' { + codeSpanCloser := 0 + for ; i < len(bs); i++ { + if bs[i] == '`' { + codeSpanCloser++ + } else { + i-- + break + } + } + if codeSpanCloser == codeSpanOpener { + codeSpanOpener = 0 + } + } else if codeSpanOpener == 0 && c == '\\' && i < len(bs)-1 && IsPunct(bs[i+1]) { + i += 2 + continue + } else if codeSpan && codeSpanOpener == 0 && c == '`' { + for ; i < len(bs); i++ { + if bs[i] == '`' { + codeSpanOpener++ + } else { + i-- + break + } + } + } else if (codeSpan && codeSpanOpener == 0) || !codeSpan { + if c == closure { + opened-- + if opened == 0 { + return i + } + } else if c == opener { + if !allowNesting { + return -1 + } + opened++ + } + } + i++ + } + return -1 +} + +// TrimLeft trims characters in the given s from head of the source. +// bytes.TrimLeft offers same functionalities, but bytes.TrimLeft +// allocates new buffer for the result. +func TrimLeft(source, b []byte) []byte { + i := 0 + for ; i < len(source); i++ { + c := source[i] + found := false + for j := 0; j < len(b); j++ { + if c == b[j] { + found = true + break + } + } + if !found { + break + } + } + return source[i:] +} + +// TrimRight trims characters in the given s from tail of the source. +func TrimRight(source, b []byte) []byte { + i := len(source) - 1 + for ; i >= 0; i-- { + c := source[i] + found := false + for j := 0; j < len(b); j++ { + if c == b[j] { + found = true + break + } + } + if !found { + break + } + } + return source[:i+1] +} + +// TrimLeftLength returns a length of leading specified characters. +func TrimLeftLength(source, s []byte) int { + return len(source) - len(TrimLeft(source, s)) +} + +// TrimRightLength returns a length of trailing specified characters. +func TrimRightLength(source, s []byte) int { + return len(source) - len(TrimRight(source, s)) +} + +// TrimLeftSpaceLength returns a length of leading space characters. +func TrimLeftSpaceLength(source []byte) int { + i := 0 + for ; i < len(source); i++ { + if !IsSpace(source[i]) { + break + } + } + return i +} + +// TrimRightSpaceLength returns a length of trailing space characters. +func TrimRightSpaceLength(source []byte) int { + l := len(source) + i := l - 1 + for ; i >= 0; i-- { + if !IsSpace(source[i]) { + break + } + } + if i < 0 { + return l + } + return l - 1 - i +} + +// TrimLeftSpace returns a subslice of the given string by slicing off all leading +// space characters. +func TrimLeftSpace(source []byte) []byte { + return TrimLeft(source, spaces) +} + +// TrimRightSpace returns a subslice of the given string by slicing off all trailing +// space characters. +func TrimRightSpace(source []byte) []byte { + return TrimRight(source, spaces) +} + +// DoFullUnicodeCaseFolding performs full unicode case folding to given bytes. +func DoFullUnicodeCaseFolding(v []byte) []byte { + var rbuf []byte + cob := NewCopyOnWriteBuffer(v) + n := 0 + for i := 0; i < len(v); i++ { + c := v[i] + if c < 0xb5 { + if c >= 0x41 && c <= 0x5a { + // A-Z to a-z + cob.Write(v[n:i]) + cob.WriteByte(c + 32) + n = i + 1 + } + continue + } + + if !utf8.RuneStart(c) { + continue + } + r, length := utf8.DecodeRune(v[i:]) + if r == utf8.RuneError { + continue + } + folded, ok := unicodeCaseFoldings[r] + if !ok { + continue + } + + cob.Write(v[n:i]) + if rbuf == nil { + rbuf = make([]byte, 4) + } + for _, f := range folded { + l := utf8.EncodeRune(rbuf, f) + cob.Write(rbuf[:l]) + } + i += length - 1 + n = i + 1 + } + if cob.IsCopied() { + cob.Write(v[n:]) + } + return cob.Bytes() +} + +// ReplaceSpaces replaces sequence of spaces with the given repl. +func ReplaceSpaces(source []byte, repl byte) []byte { + var ret []byte + start := -1 + for i, c := range source { + iss := IsSpace(c) + if start < 0 && iss { + start = i + continue + } else if start >= 0 && iss { + continue + } else if start >= 0 { + if ret == nil { + ret = make([]byte, 0, len(source)) + ret = append(ret, source[:start]...) + } + ret = append(ret, repl) + start = -1 + } + if ret != nil { + ret = append(ret, c) + } + } + if start >= 0 && ret != nil { + ret = append(ret, repl) + } + if ret == nil { + return source + } + return ret +} + +// ToRune decode given bytes start at pos and returns a rune. +func ToRune(source []byte, pos int) rune { + i := pos + for ; i >= 0; i-- { + if utf8.RuneStart(source[i]) { + break + } + } + r, _ := utf8.DecodeRune(source[i:]) + return r +} + +// ToValidRune returns 0xFFFD if the given rune is invalid, otherwise v. +func ToValidRune(v rune) rune { + if v == 0 || !utf8.ValidRune(v) { + return rune(0xFFFD) + } + return v +} + +// ToLinkReference converts given bytes into a valid link reference string. +// ToLinkReference performs unicode case folding, trims leading and trailing spaces, converts into lower +// case and replace spaces with a single space character. +func ToLinkReference(v []byte) string { + v = TrimLeftSpace(v) + v = TrimRightSpace(v) + v = DoFullUnicodeCaseFolding(v) + return string(ReplaceSpaces(v, ' ')) +} + +var htmlEscapeTable = [256][]byte{nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, []byte("""), nil, nil, nil, []byte("&"), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, []byte("<"), nil, []byte(">"), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil} + +// EscapeHTMLByte returns HTML escaped bytes if the given byte should be escaped, +// otherwise nil. +func EscapeHTMLByte(b byte) []byte { + return htmlEscapeTable[b] +} + +// EscapeHTML escapes characters that should be escaped in HTML text. +func EscapeHTML(v []byte) []byte { + cob := NewCopyOnWriteBuffer(v) + n := 0 + for i := 0; i < len(v); i++ { + c := v[i] + escaped := htmlEscapeTable[c] + if escaped != nil { + cob.Write(v[n:i]) + cob.Write(escaped) + n = i + 1 + } + } + if cob.IsCopied() { + cob.Write(v[n:]) + } + return cob.Bytes() +} + +// UnescapePunctuations unescapes blackslash escaped punctuations. +func UnescapePunctuations(source []byte) []byte { + cob := NewCopyOnWriteBuffer(source) + limit := len(source) + n := 0 + for i := 0; i < limit; { + c := source[i] + if i < limit-1 && c == '\\' && IsPunct(source[i+1]) { + cob.Write(source[n:i]) + cob.WriteByte(source[i+1]) + i += 2 + n = i + continue + } + i++ + } + if cob.IsCopied() { + cob.Write(source[n:]) + } + return cob.Bytes() +} + +// ResolveNumericReferences resolve numeric references like 'Ӓ" . +func ResolveNumericReferences(source []byte) []byte { + cob := NewCopyOnWriteBuffer(source) + buf := make([]byte, 6, 6) + limit := len(source) + ok := false + n := 0 + for i := 0; i < limit; i++ { + if source[i] == '&' { + pos := i + next := i + 1 + if next < limit && source[next] == '#' { + nnext := next + 1 + if nnext < limit { + nc := source[nnext] + // code point like #x22; + if nnext < limit && nc == 'x' || nc == 'X' { + start := nnext + 1 + i, ok = ReadWhile(source, [2]int{start, limit}, IsHexDecimal) + if ok && i < limit && source[i] == ';' { + v, _ := strconv.ParseUint(BytesToReadOnlyString(source[start:i]), 16, 32) + cob.Write(source[n:pos]) + n = i + 1 + runeSize := utf8.EncodeRune(buf, ToValidRune(rune(v))) + cob.Write(buf[:runeSize]) + continue + } + // code point like #1234; + } else if nc >= '0' && nc <= '9' { + start := nnext + i, ok = ReadWhile(source, [2]int{start, limit}, IsNumeric) + if ok && i < limit && i-start < 8 && source[i] == ';' { + v, _ := strconv.ParseUint(BytesToReadOnlyString(source[start:i]), 0, 32) + cob.Write(source[n:pos]) + n = i + 1 + runeSize := utf8.EncodeRune(buf, ToValidRune(rune(v))) + cob.Write(buf[:runeSize]) + continue + } + } + } + } + i = next - 1 + } + } + if cob.IsCopied() { + cob.Write(source[n:]) + } + return cob.Bytes() +} + +// ResolveEntityNames resolve entity references like 'ö" . +func ResolveEntityNames(source []byte) []byte { + cob := NewCopyOnWriteBuffer(source) + limit := len(source) + ok := false + n := 0 + for i := 0; i < limit; i++ { + if source[i] == '&' { + pos := i + next := i + 1 + if !(next < limit && source[next] == '#') { + start := next + i, ok = ReadWhile(source, [2]int{start, limit}, IsAlphaNumeric) + if ok && i < limit && source[i] == ';' { + name := BytesToReadOnlyString(source[start:i]) + entity, ok := LookUpHTML5EntityByName(name) + if ok { + cob.Write(source[n:pos]) + n = i + 1 + cob.Write(entity.Characters) + continue + } + } + } + i = next - 1 + } + } + if cob.IsCopied() { + cob.Write(source[n:]) + } + return cob.Bytes() +} + +var htmlSpace = []byte("%20") + +// URLEscape escape the given URL. +// If resolveReference is set true: +// 1. unescape punctuations +// 2. resolve numeric references +// 3. resolve entity references +// +// URL encoded values (%xx) are kept as is. +func URLEscape(v []byte, resolveReference bool) []byte { + if resolveReference { + v = UnescapePunctuations(v) + v = ResolveNumericReferences(v) + v = ResolveEntityNames(v) + } + cob := NewCopyOnWriteBuffer(v) + limit := len(v) + n := 0 + + for i := 0; i < limit; { + c := v[i] + if urlEscapeTable[c] == 1 { + i++ + continue + } + if c == '%' && i+2 < limit && IsHexDecimal(v[i+1]) && IsHexDecimal(v[i+1]) { + i += 3 + continue + } + u8len := utf8lenTable[c] + if u8len == 99 { // invalid utf8 leading byte, skip it + i++ + continue + } + if c == ' ' { + cob.Write(v[n:i]) + cob.Write(htmlSpace) + i++ + n = i + continue + } + if int(u8len) > len(v) { + u8len = int8(len(v) - 1) + } + if u8len == 0 { + i++ + n = i + continue + } + cob.Write(v[n:i]) + stop := i + int(u8len) + if stop > len(v) { + i++ + n = i + continue + } + cob.Write(StringToReadOnlyBytes(url.QueryEscape(string(v[i:stop])))) + i += int(u8len) + n = i + } + if cob.IsCopied() && n < limit { + cob.Write(v[n:]) + } + return cob.Bytes() +} + +// FindURLIndex returns a stop index value if the given bytes seem an URL. +// This function is equivalent to [A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]* . +func FindURLIndex(b []byte) int { + i := 0 + if !(len(b) > 0 && urlTable[b[i]]&7 == 7) { + return -1 + } + i++ + for ; i < len(b); i++ { + c := b[i] + if urlTable[c]&4 != 4 { + break + } + } + if i == 1 || i > 33 || i >= len(b) { + return -1 + } + if b[i] != ':' { + return -1 + } + i++ + for ; i < len(b); i++ { + c := b[i] + if urlTable[c]&1 != 1 { + break + } + } + return i +} + +var emailDomainRegexp = regexp.MustCompile(`^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*`) + +// FindEmailIndex returns a stop index value if the given bytes seem an email address. +func FindEmailIndex(b []byte) int { + // TODO: eliminate regexps + i := 0 + for ; i < len(b); i++ { + c := b[i] + if emailTable[c]&1 != 1 { + break + } + } + if i == 0 { + return -1 + } + if i >= len(b) || b[i] != '@' { + return -1 + } + i++ + if i >= len(b) { + return -1 + } + match := emailDomainRegexp.FindSubmatchIndex(b[i:]) + if match == nil { + return -1 + } + return i + match[1] +} + +var spaces = []byte(" \t\n\x0b\x0c\x0d") + +var spaceTable = [256]int8{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + +var punctTable = [256]int8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + +// a-zA-Z0-9, ;/?:@&=+$,-_.!~*'()# +var urlEscapeTable = [256]int8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + +var utf8lenTable = [256]int8{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 99, 99, 99, 99, 99, 99, 99, 99} + +var urlTable = [256]uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 0, 1, 0, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} + +var emailTable = [256]uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + +// UTF8Len returns a byte length of the utf-8 character. +func UTF8Len(b byte) int8 { + return utf8lenTable[b] +} + +// IsPunct returns true if the given character is a punctuation, otherwise false. +func IsPunct(c byte) bool { + return punctTable[c] == 1 +} + +// IsPunctRune returns true if the given rune is a punctuation, otherwise false. +func IsPunctRune(r rune) bool { + return int32(r) <= 256 && IsPunct(byte(r)) || unicode.IsPunct(r) +} + +// IsSpace returns true if the given character is a space, otherwise false. +func IsSpace(c byte) bool { + return spaceTable[c] == 1 +} + +// IsSpaceRune returns true if the given rune is a space, otherwise false. +func IsSpaceRune(r rune) bool { + return int32(r) <= 256 && IsSpace(byte(r)) || unicode.IsSpace(r) +} + +// IsNumeric returns true if the given character is a numeric, otherwise false. +func IsNumeric(c byte) bool { + return c >= '0' && c <= '9' +} + +// IsHexDecimal returns true if the given character is a hexdecimal, otherwise false. +func IsHexDecimal(c byte) bool { + return c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F' +} + +// IsAlphaNumeric returns true if the given character is a alphabet or a numeric, otherwise false. +func IsAlphaNumeric(c byte) bool { + return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' +} + +// A BufWriter is a subset of the bufio.Writer . +type BufWriter interface { + io.Writer + Available() int + Buffered() int + Flush() error + WriteByte(c byte) error + WriteRune(r rune) (size int, err error) + WriteString(s string) (int, error) +} + +// A PrioritizedValue struct holds pair of an arbitrary value and a priority. +type PrioritizedValue struct { + // Value is an arbitrary value that you want to prioritize. + Value interface{} + // Priority is a priority of the value. + Priority int +} + +// PrioritizedSlice is a slice of the PrioritizedValues +type PrioritizedSlice []PrioritizedValue + +// Sort sorts the PrioritizedSlice in ascending order. +func (s PrioritizedSlice) Sort() { + sort.Slice(s, func(i, j int) bool { + return s[i].Priority < s[j].Priority + }) +} + +// Remove removes the given value from this slice. +func (s PrioritizedSlice) Remove(v interface{}) PrioritizedSlice { + i := 0 + found := false + for ; i < len(s); i++ { + if s[i].Value == v { + found = true + break + } + } + if !found { + return s + } + return append(s[:i], s[i+1:]...) +} + +// Prioritized returns a new PrioritizedValue. +func Prioritized(v interface{}, priority int) PrioritizedValue { + return PrioritizedValue{v, priority} +} + +func bytesHash(b []byte) uint64 { + var hash uint64 = 5381 + for _, c := range b { + hash = ((hash << 5) + hash) + uint64(c) + } + return hash +} + +// BytesFilter is a efficient data structure for checking whether bytes exist or not. +// BytesFilter is thread-safe. +type BytesFilter interface { + // Add adds given bytes to this set. + Add([]byte) + + // Contains return true if this set contains given bytes, otherwise false. + Contains([]byte) bool + + // Extend copies this filter and adds given bytes to new filter. + Extend(...[]byte) BytesFilter +} + +type bytesFilter struct { + chars [256]uint8 + threshold int + slots [][][]byte +} + +// NewBytesFilter returns a new BytesFilter. +func NewBytesFilter(elements ...[]byte) BytesFilter { + s := &bytesFilter{ + threshold: 3, + slots: make([][][]byte, 64), + } + for _, element := range elements { + s.Add(element) + } + return s +} + +func (s *bytesFilter) Add(b []byte) { + l := len(b) + m := s.threshold + if l < s.threshold { + m = l + } + for i := 0; i < m; i++ { + s.chars[b[i]] |= 1 << uint8(i) + } + h := bytesHash(b) % uint64(len(s.slots)) + slot := s.slots[h] + if slot == nil { + slot = [][]byte{} + } + s.slots[h] = append(slot, b) +} + +func (s *bytesFilter) Extend(bs ...[]byte) BytesFilter { + newFilter := NewBytesFilter().(*bytesFilter) + newFilter.chars = s.chars + newFilter.threshold = s.threshold + for k, v := range s.slots { + newSlot := make([][]byte, len(v)) + copy(newSlot, v) + newFilter.slots[k] = v + } + for _, b := range bs { + newFilter.Add(b) + } + return newFilter +} + +func (s *bytesFilter) Contains(b []byte) bool { + l := len(b) + m := s.threshold + if l < s.threshold { + m = l + } + for i := 0; i < m; i++ { + if (s.chars[b[i]] & (1 << uint8(i))) == 0 { + return false + } + } + h := bytesHash(b) % uint64(len(s.slots)) + slot := s.slots[h] + if slot == nil || len(slot) == 0 { + return false + } + for _, element := range slot { + if bytes.Equal(element, b) { + return true + } + } + return false +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util_safe.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util_safe.go new file mode 100644 index 000000000..507a9d029 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util_safe.go @@ -0,0 +1,13 @@ +// +build appengine js + +package util + +// BytesToReadOnlyString returns a string converted from given bytes. +func BytesToReadOnlyString(b []byte) string { + return string(b) +} + +// StringToReadOnlyBytes returns bytes converted from given string. +func StringToReadOnlyBytes(s string) []byte { + return []byte(s) +} diff --git a/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util_unsafe.go b/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util_unsafe.go new file mode 100644 index 000000000..d09881104 --- /dev/null +++ b/pkg/mod/github.com/yuin/goldmark@v1.4.4/util/util_unsafe.go @@ -0,0 +1,23 @@ +// +build !appengine,!js + +package util + +import ( + "reflect" + "unsafe" +) + +// BytesToReadOnlyString returns a string converted from given bytes. +func BytesToReadOnlyString(b []byte) string { + return *(*string)(unsafe.Pointer(&b)) +} + +// StringToReadOnlyBytes returns bytes converted from given string. +func StringToReadOnlyBytes(s string) (bs []byte) { + sh := (*reflect.StringHeader)(unsafe.Pointer(&s)) + bh := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) + bh.Data = sh.Data + bh.Cap = sh.Len + bh.Len = sh.Len + return +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/.gitattributes b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/.gitattributes new file mode 100644 index 000000000..d2f212e5d --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/.gitattributes @@ -0,0 +1,10 @@ +# Treat all files in this repo as binary, with no git magic updating +# line endings. Windows users contributing to Go will need to use a +# modern version of git and editors capable of LF line endings. +# +# We'll prevent accidental CRLF line endings from entering the repo +# via the git-review gofmt checks. +# +# See golang.org/issue/9281 + +* -text diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/.gitignore b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/.gitignore new file mode 100644 index 000000000..5a9d62efd --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/.gitignore @@ -0,0 +1,2 @@ +# Add no patterns to .gitignore except for files generated by the build. +last-change diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/AUTHORS b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/AUTHORS new file mode 100644 index 000000000..15167cd74 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/AUTHORS @@ -0,0 +1,3 @@ +# This source code refers to The Go Authors for copyright purposes. +# The master list of authors is in the main Go distribution, +# visible at http://tip.golang.org/AUTHORS. diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/CONTRIBUTING.md b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/CONTRIBUTING.md new file mode 100644 index 000000000..d0485e887 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/CONTRIBUTING.md @@ -0,0 +1,26 @@ +# Contributing to Go + +Go is an open source project. + +It is the work of hundreds of contributors. We appreciate your help! + +## Filing issues + +When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions: + +1. What version of Go are you using (`go version`)? +2. What operating system and processor architecture are you using? +3. What did you do? +4. What did you expect to see? +5. What did you see instead? + +General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker. +The gophers there will answer or ask you to file an issue if you've tripped over a bug. + +## Contributing code + +Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html) +before sending patches. + +Unless otherwise noted, the Go source files are distributed under +the BSD-style license found in the LICENSE file. diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/CONTRIBUTORS b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/CONTRIBUTORS new file mode 100644 index 000000000..1c4577e96 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/CONTRIBUTORS @@ -0,0 +1,3 @@ +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/LICENSE b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/LICENSE new file mode 100644 index 000000000..6a66aea5e --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/PATENTS b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/PATENTS new file mode 100644 index 000000000..733099041 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/README.md b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/README.md new file mode 100644 index 000000000..a15f253df --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/README.md @@ -0,0 +1,18 @@ +# Go Networking + +[![Go Reference](https://pkg.go.dev/badge/golang.org/x/net.svg)](https://pkg.go.dev/golang.org/x/net) + +This repository holds supplementary Go networking libraries. + +## Download/Install + +The easiest way to install is to run `go get -u golang.org/x/net`. You can +also manually git clone the repository to `$GOPATH/src/golang.org/x/net`. + +## Report Issues / Send Patches + +This repository uses Gerrit for code changes. To learn how to submit +changes to this repository, see https://golang.org/doc/contribute.html. +The main issue tracker for the net repository is located at +https://github.com/golang/go/issues. Prefix your issue with "x/net:" in the +subject line, so it is easy to find. diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/asm.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/asm.go new file mode 100644 index 000000000..15e21b181 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/asm.go @@ -0,0 +1,41 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import "fmt" + +// Assemble converts insts into raw instructions suitable for loading +// into a BPF virtual machine. +// +// Currently, no optimization is attempted, the assembled program flow +// is exactly as provided. +func Assemble(insts []Instruction) ([]RawInstruction, error) { + ret := make([]RawInstruction, len(insts)) + var err error + for i, inst := range insts { + ret[i], err = inst.Assemble() + if err != nil { + return nil, fmt.Errorf("assembling instruction %d: %s", i+1, err) + } + } + return ret, nil +} + +// Disassemble attempts to parse raw back into +// Instructions. Unrecognized RawInstructions are assumed to be an +// extension not implemented by this package, and are passed through +// unchanged to the output. The allDecoded value reports whether insts +// contains no RawInstructions. +func Disassemble(raw []RawInstruction) (insts []Instruction, allDecoded bool) { + insts = make([]Instruction, len(raw)) + allDecoded = true + for i, r := range raw { + insts[i] = r.Disassemble() + if _, ok := insts[i].(RawInstruction); ok { + allDecoded = false + } + } + return insts, allDecoded +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/constants.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/constants.go new file mode 100644 index 000000000..12f3ee835 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/constants.go @@ -0,0 +1,222 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +// A Register is a register of the BPF virtual machine. +type Register uint16 + +const ( + // RegA is the accumulator register. RegA is always the + // destination register of ALU operations. + RegA Register = iota + // RegX is the indirection register, used by LoadIndirect + // operations. + RegX +) + +// An ALUOp is an arithmetic or logic operation. +type ALUOp uint16 + +// ALU binary operation types. +const ( + ALUOpAdd ALUOp = iota << 4 + ALUOpSub + ALUOpMul + ALUOpDiv + ALUOpOr + ALUOpAnd + ALUOpShiftLeft + ALUOpShiftRight + aluOpNeg // Not exported because it's the only unary ALU operation, and gets its own instruction type. + ALUOpMod + ALUOpXor +) + +// A JumpTest is a comparison operator used in conditional jumps. +type JumpTest uint16 + +// Supported operators for conditional jumps. +// K can be RegX for JumpIfX +const ( + // K == A + JumpEqual JumpTest = iota + // K != A + JumpNotEqual + // K > A + JumpGreaterThan + // K < A + JumpLessThan + // K >= A + JumpGreaterOrEqual + // K <= A + JumpLessOrEqual + // K & A != 0 + JumpBitsSet + // K & A == 0 + JumpBitsNotSet +) + +// An Extension is a function call provided by the kernel that +// performs advanced operations that are expensive or impossible +// within the BPF virtual machine. +// +// Extensions are only implemented by the Linux kernel. +// +// TODO: should we prune this list? Some of these extensions seem +// either broken or near-impossible to use correctly, whereas other +// (len, random, ifindex) are quite useful. +type Extension int + +// Extension functions available in the Linux kernel. +const ( + // extOffset is the negative maximum number of instructions used + // to load instructions by overloading the K argument. + extOffset = -0x1000 + // ExtLen returns the length of the packet. + ExtLen Extension = 1 + // ExtProto returns the packet's L3 protocol type. + ExtProto Extension = 0 + // ExtType returns the packet's type (skb->pkt_type in the kernel) + // + // TODO: better documentation. How nice an API do we want to + // provide for these esoteric extensions? + ExtType Extension = 4 + // ExtPayloadOffset returns the offset of the packet payload, or + // the first protocol header that the kernel does not know how to + // parse. + ExtPayloadOffset Extension = 52 + // ExtInterfaceIndex returns the index of the interface on which + // the packet was received. + ExtInterfaceIndex Extension = 8 + // ExtNetlinkAttr returns the netlink attribute of type X at + // offset A. + ExtNetlinkAttr Extension = 12 + // ExtNetlinkAttrNested returns the nested netlink attribute of + // type X at offset A. + ExtNetlinkAttrNested Extension = 16 + // ExtMark returns the packet's mark value. + ExtMark Extension = 20 + // ExtQueue returns the packet's assigned hardware queue. + ExtQueue Extension = 24 + // ExtLinkLayerType returns the packet's hardware address type + // (e.g. Ethernet, Infiniband). + ExtLinkLayerType Extension = 28 + // ExtRXHash returns the packets receive hash. + // + // TODO: figure out what this rxhash actually is. + ExtRXHash Extension = 32 + // ExtCPUID returns the ID of the CPU processing the current + // packet. + ExtCPUID Extension = 36 + // ExtVLANTag returns the packet's VLAN tag. + ExtVLANTag Extension = 44 + // ExtVLANTagPresent returns non-zero if the packet has a VLAN + // tag. + // + // TODO: I think this might be a lie: it reads bit 0x1000 of the + // VLAN header, which changed meaning in recent revisions of the + // spec - this extension may now return meaningless information. + ExtVLANTagPresent Extension = 48 + // ExtVLANProto returns 0x8100 if the frame has a VLAN header, + // 0x88a8 if the frame has a "Q-in-Q" double VLAN header, or some + // other value if no VLAN information is present. + ExtVLANProto Extension = 60 + // ExtRand returns a uniformly random uint32. + ExtRand Extension = 56 +) + +// The following gives names to various bit patterns used in opcode construction. + +const ( + opMaskCls uint16 = 0x7 + // opClsLoad masks + opMaskLoadDest = 0x01 + opMaskLoadWidth = 0x18 + opMaskLoadMode = 0xe0 + // opClsALU & opClsJump + opMaskOperand = 0x08 + opMaskOperator = 0xf0 +) + +const ( + // +---------------+-----------------+---+---+---+ + // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 0 | + // +---------------+-----------------+---+---+---+ + opClsLoadA uint16 = iota + // +---------------+-----------------+---+---+---+ + // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 1 | + // +---------------+-----------------+---+---+---+ + opClsLoadX + // +---+---+---+---+---+---+---+---+ + // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | + // +---+---+---+---+---+---+---+---+ + opClsStoreA + // +---+---+---+---+---+---+---+---+ + // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | + // +---+---+---+---+---+---+---+---+ + opClsStoreX + // +---------------+-----------------+---+---+---+ + // | Operator (4b) | OperandSrc (1b) | 1 | 0 | 0 | + // +---------------+-----------------+---+---+---+ + opClsALU + // +-----------------------------+---+---+---+---+ + // | TestOperator (4b) | 0 | 1 | 0 | 1 | + // +-----------------------------+---+---+---+---+ + opClsJump + // +---+-------------------------+---+---+---+---+ + // | 0 | 0 | 0 | RetSrc (1b) | 0 | 1 | 1 | 0 | + // +---+-------------------------+---+---+---+---+ + opClsReturn + // +---+-------------------------+---+---+---+---+ + // | 0 | 0 | 0 | TXAorTAX (1b) | 0 | 1 | 1 | 1 | + // +---+-------------------------+---+---+---+---+ + opClsMisc +) + +const ( + opAddrModeImmediate uint16 = iota << 5 + opAddrModeAbsolute + opAddrModeIndirect + opAddrModeScratch + opAddrModePacketLen // actually an extension, not an addressing mode. + opAddrModeMemShift +) + +const ( + opLoadWidth4 uint16 = iota << 3 + opLoadWidth2 + opLoadWidth1 +) + +// Operand for ALU and Jump instructions +type opOperand uint16 + +// Supported operand sources. +const ( + opOperandConstant opOperand = iota << 3 + opOperandX +) + +// An jumpOp is a conditional jump condition. +type jumpOp uint16 + +// Supported jump conditions. +const ( + opJumpAlways jumpOp = iota << 4 + opJumpEqual + opJumpGT + opJumpGE + opJumpSet +) + +const ( + opRetSrcConstant uint16 = iota << 4 + opRetSrcA +) + +const ( + opMiscTAX = 0x00 + opMiscTXA = 0x80 +) diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/doc.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/doc.go new file mode 100644 index 000000000..ae62feb53 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/doc.go @@ -0,0 +1,82 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* + +Package bpf implements marshaling and unmarshaling of programs for the +Berkeley Packet Filter virtual machine, and provides a Go implementation +of the virtual machine. + +BPF's main use is to specify a packet filter for network taps, so that +the kernel doesn't have to expensively copy every packet it sees to +userspace. However, it's been repurposed to other areas where running +user code in-kernel is needed. For example, Linux's seccomp uses BPF +to apply security policies to system calls. For simplicity, this +documentation refers only to packets, but other uses of BPF have their +own data payloads. + +BPF programs run in a restricted virtual machine. It has almost no +access to kernel functions, and while conditional branches are +allowed, they can only jump forwards, to guarantee that there are no +infinite loops. + +The virtual machine + +The BPF VM is an accumulator machine. Its main register, called +register A, is an implicit source and destination in all arithmetic +and logic operations. The machine also has 16 scratch registers for +temporary storage, and an indirection register (register X) for +indirect memory access. All registers are 32 bits wide. + +Each run of a BPF program is given one packet, which is placed in the +VM's read-only "main memory". LoadAbsolute and LoadIndirect +instructions can fetch up to 32 bits at a time into register A for +examination. + +The goal of a BPF program is to produce and return a verdict (uint32), +which tells the kernel what to do with the packet. In the context of +packet filtering, the returned value is the number of bytes of the +packet to forward to userspace, or 0 to ignore the packet. Other +contexts like seccomp define their own return values. + +In order to simplify programs, attempts to read past the end of the +packet terminate the program execution with a verdict of 0 (ignore +packet). This means that the vast majority of BPF programs don't need +to do any explicit bounds checking. + +In addition to the bytes of the packet, some BPF programs have access +to extensions, which are essentially calls to kernel utility +functions. Currently, the only extensions supported by this package +are the Linux packet filter extensions. + +Examples + +This packet filter selects all ARP packets. + + bpf.Assemble([]bpf.Instruction{ + // Load "EtherType" field from the ethernet header. + bpf.LoadAbsolute{Off: 12, Size: 2}, + // Skip over the next instruction if EtherType is not ARP. + bpf.JumpIf{Cond: bpf.JumpNotEqual, Val: 0x0806, SkipTrue: 1}, + // Verdict is "send up to 4k of the packet to userspace." + bpf.RetConstant{Val: 4096}, + // Verdict is "ignore packet." + bpf.RetConstant{Val: 0}, + }) + +This packet filter captures a random 1% sample of traffic. + + bpf.Assemble([]bpf.Instruction{ + // Get a 32-bit random number from the Linux kernel. + bpf.LoadExtension{Num: bpf.ExtRand}, + // 1% dice roll? + bpf.JumpIf{Cond: bpf.JumpLessThan, Val: 2^32/100, SkipFalse: 1}, + // Capture. + bpf.RetConstant{Val: 4096}, + // Ignore. + bpf.RetConstant{Val: 0}, + }) + +*/ +package bpf // import "golang.org/x/net/bpf" diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/instructions.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/instructions.go new file mode 100644 index 000000000..3cffcaa01 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/instructions.go @@ -0,0 +1,726 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import "fmt" + +// An Instruction is one instruction executed by the BPF virtual +// machine. +type Instruction interface { + // Assemble assembles the Instruction into a RawInstruction. + Assemble() (RawInstruction, error) +} + +// A RawInstruction is a raw BPF virtual machine instruction. +type RawInstruction struct { + // Operation to execute. + Op uint16 + // For conditional jump instructions, the number of instructions + // to skip if the condition is true/false. + Jt uint8 + Jf uint8 + // Constant parameter. The meaning depends on the Op. + K uint32 +} + +// Assemble implements the Instruction Assemble method. +func (ri RawInstruction) Assemble() (RawInstruction, error) { return ri, nil } + +// Disassemble parses ri into an Instruction and returns it. If ri is +// not recognized by this package, ri itself is returned. +func (ri RawInstruction) Disassemble() Instruction { + switch ri.Op & opMaskCls { + case opClsLoadA, opClsLoadX: + reg := Register(ri.Op & opMaskLoadDest) + sz := 0 + switch ri.Op & opMaskLoadWidth { + case opLoadWidth4: + sz = 4 + case opLoadWidth2: + sz = 2 + case opLoadWidth1: + sz = 1 + default: + return ri + } + switch ri.Op & opMaskLoadMode { + case opAddrModeImmediate: + if sz != 4 { + return ri + } + return LoadConstant{Dst: reg, Val: ri.K} + case opAddrModeScratch: + if sz != 4 || ri.K > 15 { + return ri + } + return LoadScratch{Dst: reg, N: int(ri.K)} + case opAddrModeAbsolute: + if ri.K > extOffset+0xffffffff { + return LoadExtension{Num: Extension(-extOffset + ri.K)} + } + return LoadAbsolute{Size: sz, Off: ri.K} + case opAddrModeIndirect: + return LoadIndirect{Size: sz, Off: ri.K} + case opAddrModePacketLen: + if sz != 4 { + return ri + } + return LoadExtension{Num: ExtLen} + case opAddrModeMemShift: + return LoadMemShift{Off: ri.K} + default: + return ri + } + + case opClsStoreA: + if ri.Op != opClsStoreA || ri.K > 15 { + return ri + } + return StoreScratch{Src: RegA, N: int(ri.K)} + + case opClsStoreX: + if ri.Op != opClsStoreX || ri.K > 15 { + return ri + } + return StoreScratch{Src: RegX, N: int(ri.K)} + + case opClsALU: + switch op := ALUOp(ri.Op & opMaskOperator); op { + case ALUOpAdd, ALUOpSub, ALUOpMul, ALUOpDiv, ALUOpOr, ALUOpAnd, ALUOpShiftLeft, ALUOpShiftRight, ALUOpMod, ALUOpXor: + switch operand := opOperand(ri.Op & opMaskOperand); operand { + case opOperandX: + return ALUOpX{Op: op} + case opOperandConstant: + return ALUOpConstant{Op: op, Val: ri.K} + default: + return ri + } + case aluOpNeg: + return NegateA{} + default: + return ri + } + + case opClsJump: + switch op := jumpOp(ri.Op & opMaskOperator); op { + case opJumpAlways: + return Jump{Skip: ri.K} + case opJumpEqual, opJumpGT, opJumpGE, opJumpSet: + cond, skipTrue, skipFalse := jumpOpToTest(op, ri.Jt, ri.Jf) + switch operand := opOperand(ri.Op & opMaskOperand); operand { + case opOperandX: + return JumpIfX{Cond: cond, SkipTrue: skipTrue, SkipFalse: skipFalse} + case opOperandConstant: + return JumpIf{Cond: cond, Val: ri.K, SkipTrue: skipTrue, SkipFalse: skipFalse} + default: + return ri + } + default: + return ri + } + + case opClsReturn: + switch ri.Op { + case opClsReturn | opRetSrcA: + return RetA{} + case opClsReturn | opRetSrcConstant: + return RetConstant{Val: ri.K} + default: + return ri + } + + case opClsMisc: + switch ri.Op { + case opClsMisc | opMiscTAX: + return TAX{} + case opClsMisc | opMiscTXA: + return TXA{} + default: + return ri + } + + default: + panic("unreachable") // switch is exhaustive on the bit pattern + } +} + +func jumpOpToTest(op jumpOp, skipTrue uint8, skipFalse uint8) (JumpTest, uint8, uint8) { + var test JumpTest + + // Decode "fake" jump conditions that don't appear in machine code + // Ensures the Assemble -> Disassemble stage recreates the same instructions + // See https://github.com/golang/go/issues/18470 + if skipTrue == 0 { + switch op { + case opJumpEqual: + test = JumpNotEqual + case opJumpGT: + test = JumpLessOrEqual + case opJumpGE: + test = JumpLessThan + case opJumpSet: + test = JumpBitsNotSet + } + + return test, skipFalse, 0 + } + + switch op { + case opJumpEqual: + test = JumpEqual + case opJumpGT: + test = JumpGreaterThan + case opJumpGE: + test = JumpGreaterOrEqual + case opJumpSet: + test = JumpBitsSet + } + + return test, skipTrue, skipFalse +} + +// LoadConstant loads Val into register Dst. +type LoadConstant struct { + Dst Register + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadConstant) Assemble() (RawInstruction, error) { + return assembleLoad(a.Dst, 4, opAddrModeImmediate, a.Val) +} + +// String returns the instruction in assembler notation. +func (a LoadConstant) String() string { + switch a.Dst { + case RegA: + return fmt.Sprintf("ld #%d", a.Val) + case RegX: + return fmt.Sprintf("ldx #%d", a.Val) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadScratch loads scratch[N] into register Dst. +type LoadScratch struct { + Dst Register + N int // 0-15 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadScratch) Assemble() (RawInstruction, error) { + if a.N < 0 || a.N > 15 { + return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) + } + return assembleLoad(a.Dst, 4, opAddrModeScratch, uint32(a.N)) +} + +// String returns the instruction in assembler notation. +func (a LoadScratch) String() string { + switch a.Dst { + case RegA: + return fmt.Sprintf("ld M[%d]", a.N) + case RegX: + return fmt.Sprintf("ldx M[%d]", a.N) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadAbsolute loads packet[Off:Off+Size] as an integer value into +// register A. +type LoadAbsolute struct { + Off uint32 + Size int // 1, 2 or 4 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadAbsolute) Assemble() (RawInstruction, error) { + return assembleLoad(RegA, a.Size, opAddrModeAbsolute, a.Off) +} + +// String returns the instruction in assembler notation. +func (a LoadAbsolute) String() string { + switch a.Size { + case 1: // byte + return fmt.Sprintf("ldb [%d]", a.Off) + case 2: // half word + return fmt.Sprintf("ldh [%d]", a.Off) + case 4: // word + if a.Off > extOffset+0xffffffff { + return LoadExtension{Num: Extension(a.Off + 0x1000)}.String() + } + return fmt.Sprintf("ld [%d]", a.Off) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadIndirect loads packet[X+Off:X+Off+Size] as an integer value +// into register A. +type LoadIndirect struct { + Off uint32 + Size int // 1, 2 or 4 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadIndirect) Assemble() (RawInstruction, error) { + return assembleLoad(RegA, a.Size, opAddrModeIndirect, a.Off) +} + +// String returns the instruction in assembler notation. +func (a LoadIndirect) String() string { + switch a.Size { + case 1: // byte + return fmt.Sprintf("ldb [x + %d]", a.Off) + case 2: // half word + return fmt.Sprintf("ldh [x + %d]", a.Off) + case 4: // word + return fmt.Sprintf("ld [x + %d]", a.Off) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadMemShift multiplies the first 4 bits of the byte at packet[Off] +// by 4 and stores the result in register X. +// +// This instruction is mainly useful to load into X the length of an +// IPv4 packet header in a single instruction, rather than have to do +// the arithmetic on the header's first byte by hand. +type LoadMemShift struct { + Off uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadMemShift) Assemble() (RawInstruction, error) { + return assembleLoad(RegX, 1, opAddrModeMemShift, a.Off) +} + +// String returns the instruction in assembler notation. +func (a LoadMemShift) String() string { + return fmt.Sprintf("ldx 4*([%d]&0xf)", a.Off) +} + +// LoadExtension invokes a linux-specific extension and stores the +// result in register A. +type LoadExtension struct { + Num Extension +} + +// Assemble implements the Instruction Assemble method. +func (a LoadExtension) Assemble() (RawInstruction, error) { + if a.Num == ExtLen { + return assembleLoad(RegA, 4, opAddrModePacketLen, 0) + } + return assembleLoad(RegA, 4, opAddrModeAbsolute, uint32(extOffset+a.Num)) +} + +// String returns the instruction in assembler notation. +func (a LoadExtension) String() string { + switch a.Num { + case ExtLen: + return "ld #len" + case ExtProto: + return "ld #proto" + case ExtType: + return "ld #type" + case ExtPayloadOffset: + return "ld #poff" + case ExtInterfaceIndex: + return "ld #ifidx" + case ExtNetlinkAttr: + return "ld #nla" + case ExtNetlinkAttrNested: + return "ld #nlan" + case ExtMark: + return "ld #mark" + case ExtQueue: + return "ld #queue" + case ExtLinkLayerType: + return "ld #hatype" + case ExtRXHash: + return "ld #rxhash" + case ExtCPUID: + return "ld #cpu" + case ExtVLANTag: + return "ld #vlan_tci" + case ExtVLANTagPresent: + return "ld #vlan_avail" + case ExtVLANProto: + return "ld #vlan_tpid" + case ExtRand: + return "ld #rand" + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// StoreScratch stores register Src into scratch[N]. +type StoreScratch struct { + Src Register + N int // 0-15 +} + +// Assemble implements the Instruction Assemble method. +func (a StoreScratch) Assemble() (RawInstruction, error) { + if a.N < 0 || a.N > 15 { + return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) + } + var op uint16 + switch a.Src { + case RegA: + op = opClsStoreA + case RegX: + op = opClsStoreX + default: + return RawInstruction{}, fmt.Errorf("invalid source register %v", a.Src) + } + + return RawInstruction{ + Op: op, + K: uint32(a.N), + }, nil +} + +// String returns the instruction in assembler notation. +func (a StoreScratch) String() string { + switch a.Src { + case RegA: + return fmt.Sprintf("st M[%d]", a.N) + case RegX: + return fmt.Sprintf("stx M[%d]", a.N) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// ALUOpConstant executes A = A Val. +type ALUOpConstant struct { + Op ALUOp + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a ALUOpConstant) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | uint16(opOperandConstant) | uint16(a.Op), + K: a.Val, + }, nil +} + +// String returns the instruction in assembler notation. +func (a ALUOpConstant) String() string { + switch a.Op { + case ALUOpAdd: + return fmt.Sprintf("add #%d", a.Val) + case ALUOpSub: + return fmt.Sprintf("sub #%d", a.Val) + case ALUOpMul: + return fmt.Sprintf("mul #%d", a.Val) + case ALUOpDiv: + return fmt.Sprintf("div #%d", a.Val) + case ALUOpMod: + return fmt.Sprintf("mod #%d", a.Val) + case ALUOpAnd: + return fmt.Sprintf("and #%d", a.Val) + case ALUOpOr: + return fmt.Sprintf("or #%d", a.Val) + case ALUOpXor: + return fmt.Sprintf("xor #%d", a.Val) + case ALUOpShiftLeft: + return fmt.Sprintf("lsh #%d", a.Val) + case ALUOpShiftRight: + return fmt.Sprintf("rsh #%d", a.Val) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// ALUOpX executes A = A X +type ALUOpX struct { + Op ALUOp +} + +// Assemble implements the Instruction Assemble method. +func (a ALUOpX) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | uint16(opOperandX) | uint16(a.Op), + }, nil +} + +// String returns the instruction in assembler notation. +func (a ALUOpX) String() string { + switch a.Op { + case ALUOpAdd: + return "add x" + case ALUOpSub: + return "sub x" + case ALUOpMul: + return "mul x" + case ALUOpDiv: + return "div x" + case ALUOpMod: + return "mod x" + case ALUOpAnd: + return "and x" + case ALUOpOr: + return "or x" + case ALUOpXor: + return "xor x" + case ALUOpShiftLeft: + return "lsh x" + case ALUOpShiftRight: + return "rsh x" + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// NegateA executes A = -A. +type NegateA struct{} + +// Assemble implements the Instruction Assemble method. +func (a NegateA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | uint16(aluOpNeg), + }, nil +} + +// String returns the instruction in assembler notation. +func (a NegateA) String() string { + return fmt.Sprintf("neg") +} + +// Jump skips the following Skip instructions in the program. +type Jump struct { + Skip uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a Jump) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsJump | uint16(opJumpAlways), + K: a.Skip, + }, nil +} + +// String returns the instruction in assembler notation. +func (a Jump) String() string { + return fmt.Sprintf("ja %d", a.Skip) +} + +// JumpIf skips the following Skip instructions in the program if A +// Val is true. +type JumpIf struct { + Cond JumpTest + Val uint32 + SkipTrue uint8 + SkipFalse uint8 +} + +// Assemble implements the Instruction Assemble method. +func (a JumpIf) Assemble() (RawInstruction, error) { + return jumpToRaw(a.Cond, opOperandConstant, a.Val, a.SkipTrue, a.SkipFalse) +} + +// String returns the instruction in assembler notation. +func (a JumpIf) String() string { + return jumpToString(a.Cond, fmt.Sprintf("#%d", a.Val), a.SkipTrue, a.SkipFalse) +} + +// JumpIfX skips the following Skip instructions in the program if A +// X is true. +type JumpIfX struct { + Cond JumpTest + SkipTrue uint8 + SkipFalse uint8 +} + +// Assemble implements the Instruction Assemble method. +func (a JumpIfX) Assemble() (RawInstruction, error) { + return jumpToRaw(a.Cond, opOperandX, 0, a.SkipTrue, a.SkipFalse) +} + +// String returns the instruction in assembler notation. +func (a JumpIfX) String() string { + return jumpToString(a.Cond, "x", a.SkipTrue, a.SkipFalse) +} + +// jumpToRaw assembles a jump instruction into a RawInstruction +func jumpToRaw(test JumpTest, operand opOperand, k uint32, skipTrue, skipFalse uint8) (RawInstruction, error) { + var ( + cond jumpOp + flip bool + ) + switch test { + case JumpEqual: + cond = opJumpEqual + case JumpNotEqual: + cond, flip = opJumpEqual, true + case JumpGreaterThan: + cond = opJumpGT + case JumpLessThan: + cond, flip = opJumpGE, true + case JumpGreaterOrEqual: + cond = opJumpGE + case JumpLessOrEqual: + cond, flip = opJumpGT, true + case JumpBitsSet: + cond = opJumpSet + case JumpBitsNotSet: + cond, flip = opJumpSet, true + default: + return RawInstruction{}, fmt.Errorf("unknown JumpTest %v", test) + } + jt, jf := skipTrue, skipFalse + if flip { + jt, jf = jf, jt + } + return RawInstruction{ + Op: opClsJump | uint16(cond) | uint16(operand), + Jt: jt, + Jf: jf, + K: k, + }, nil +} + +// jumpToString converts a jump instruction to assembler notation +func jumpToString(cond JumpTest, operand string, skipTrue, skipFalse uint8) string { + switch cond { + // K == A + case JumpEqual: + return conditionalJump(operand, skipTrue, skipFalse, "jeq", "jneq") + // K != A + case JumpNotEqual: + return fmt.Sprintf("jneq %s,%d", operand, skipTrue) + // K > A + case JumpGreaterThan: + return conditionalJump(operand, skipTrue, skipFalse, "jgt", "jle") + // K < A + case JumpLessThan: + return fmt.Sprintf("jlt %s,%d", operand, skipTrue) + // K >= A + case JumpGreaterOrEqual: + return conditionalJump(operand, skipTrue, skipFalse, "jge", "jlt") + // K <= A + case JumpLessOrEqual: + return fmt.Sprintf("jle %s,%d", operand, skipTrue) + // K & A != 0 + case JumpBitsSet: + if skipFalse > 0 { + return fmt.Sprintf("jset %s,%d,%d", operand, skipTrue, skipFalse) + } + return fmt.Sprintf("jset %s,%d", operand, skipTrue) + // K & A == 0, there is no assembler instruction for JumpBitNotSet, use JumpBitSet and invert skips + case JumpBitsNotSet: + return jumpToString(JumpBitsSet, operand, skipFalse, skipTrue) + default: + return fmt.Sprintf("unknown JumpTest %#v", cond) + } +} + +func conditionalJump(operand string, skipTrue, skipFalse uint8, positiveJump, negativeJump string) string { + if skipTrue > 0 { + if skipFalse > 0 { + return fmt.Sprintf("%s %s,%d,%d", positiveJump, operand, skipTrue, skipFalse) + } + return fmt.Sprintf("%s %s,%d", positiveJump, operand, skipTrue) + } + return fmt.Sprintf("%s %s,%d", negativeJump, operand, skipFalse) +} + +// RetA exits the BPF program, returning the value of register A. +type RetA struct{} + +// Assemble implements the Instruction Assemble method. +func (a RetA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsReturn | opRetSrcA, + }, nil +} + +// String returns the instruction in assembler notation. +func (a RetA) String() string { + return fmt.Sprintf("ret a") +} + +// RetConstant exits the BPF program, returning a constant value. +type RetConstant struct { + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a RetConstant) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsReturn | opRetSrcConstant, + K: a.Val, + }, nil +} + +// String returns the instruction in assembler notation. +func (a RetConstant) String() string { + return fmt.Sprintf("ret #%d", a.Val) +} + +// TXA copies the value of register X to register A. +type TXA struct{} + +// Assemble implements the Instruction Assemble method. +func (a TXA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsMisc | opMiscTXA, + }, nil +} + +// String returns the instruction in assembler notation. +func (a TXA) String() string { + return fmt.Sprintf("txa") +} + +// TAX copies the value of register A to register X. +type TAX struct{} + +// Assemble implements the Instruction Assemble method. +func (a TAX) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsMisc | opMiscTAX, + }, nil +} + +// String returns the instruction in assembler notation. +func (a TAX) String() string { + return fmt.Sprintf("tax") +} + +func assembleLoad(dst Register, loadSize int, mode uint16, k uint32) (RawInstruction, error) { + var ( + cls uint16 + sz uint16 + ) + switch dst { + case RegA: + cls = opClsLoadA + case RegX: + cls = opClsLoadX + default: + return RawInstruction{}, fmt.Errorf("invalid target register %v", dst) + } + switch loadSize { + case 1: + sz = opLoadWidth1 + case 2: + sz = opLoadWidth2 + case 4: + sz = opLoadWidth4 + default: + return RawInstruction{}, fmt.Errorf("invalid load byte length %d", sz) + } + return RawInstruction{ + Op: cls | sz | mode, + K: k, + }, nil +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/instructions_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/instructions_test.go new file mode 100644 index 000000000..69b25c541 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/instructions_test.go @@ -0,0 +1,593 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import ( + "fmt" + "io/ioutil" + "reflect" + "strconv" + "strings" + "testing" +) + +// This is a direct translation of the program in +// testdata/all_instructions.txt. +var allInstructions = []Instruction{ + LoadConstant{Dst: RegA, Val: 42}, + LoadConstant{Dst: RegX, Val: 42}, + + LoadScratch{Dst: RegA, N: 3}, + LoadScratch{Dst: RegX, N: 3}, + + LoadAbsolute{Off: 42, Size: 1}, + LoadAbsolute{Off: 42, Size: 2}, + LoadAbsolute{Off: 42, Size: 4}, + + LoadIndirect{Off: 42, Size: 1}, + LoadIndirect{Off: 42, Size: 2}, + LoadIndirect{Off: 42, Size: 4}, + + LoadMemShift{Off: 42}, + + LoadExtension{Num: ExtLen}, + LoadExtension{Num: ExtProto}, + LoadExtension{Num: ExtType}, + LoadExtension{Num: ExtRand}, + + StoreScratch{Src: RegA, N: 3}, + StoreScratch{Src: RegX, N: 3}, + + ALUOpConstant{Op: ALUOpAdd, Val: 42}, + ALUOpConstant{Op: ALUOpSub, Val: 42}, + ALUOpConstant{Op: ALUOpMul, Val: 42}, + ALUOpConstant{Op: ALUOpDiv, Val: 42}, + ALUOpConstant{Op: ALUOpOr, Val: 42}, + ALUOpConstant{Op: ALUOpAnd, Val: 42}, + ALUOpConstant{Op: ALUOpShiftLeft, Val: 42}, + ALUOpConstant{Op: ALUOpShiftRight, Val: 42}, + ALUOpConstant{Op: ALUOpMod, Val: 42}, + ALUOpConstant{Op: ALUOpXor, Val: 42}, + + ALUOpX{Op: ALUOpAdd}, + ALUOpX{Op: ALUOpSub}, + ALUOpX{Op: ALUOpMul}, + ALUOpX{Op: ALUOpDiv}, + ALUOpX{Op: ALUOpOr}, + ALUOpX{Op: ALUOpAnd}, + ALUOpX{Op: ALUOpShiftLeft}, + ALUOpX{Op: ALUOpShiftRight}, + ALUOpX{Op: ALUOpMod}, + ALUOpX{Op: ALUOpXor}, + + NegateA{}, + + Jump{Skip: 17}, + JumpIf{Cond: JumpEqual, Val: 42, SkipTrue: 15, SkipFalse: 16}, + JumpIf{Cond: JumpNotEqual, Val: 42, SkipTrue: 15}, + JumpIf{Cond: JumpLessThan, Val: 42, SkipTrue: 14}, + JumpIf{Cond: JumpLessOrEqual, Val: 42, SkipTrue: 13}, + JumpIf{Cond: JumpGreaterThan, Val: 42, SkipTrue: 11, SkipFalse: 12}, + JumpIf{Cond: JumpGreaterOrEqual, Val: 42, SkipTrue: 10, SkipFalse: 11}, + JumpIf{Cond: JumpBitsSet, Val: 42, SkipTrue: 9, SkipFalse: 10}, + + JumpIfX{Cond: JumpEqual, SkipTrue: 8, SkipFalse: 9}, + JumpIfX{Cond: JumpNotEqual, SkipTrue: 8}, + JumpIfX{Cond: JumpLessThan, SkipTrue: 7}, + JumpIfX{Cond: JumpLessOrEqual, SkipTrue: 6}, + JumpIfX{Cond: JumpGreaterThan, SkipTrue: 4, SkipFalse: 5}, + JumpIfX{Cond: JumpGreaterOrEqual, SkipTrue: 3, SkipFalse: 4}, + JumpIfX{Cond: JumpBitsSet, SkipTrue: 2, SkipFalse: 3}, + + TAX{}, + TXA{}, + + RetA{}, + RetConstant{Val: 42}, +} +var allInstructionsExpected = "testdata/all_instructions.bpf" + +// Check that we produce the same output as the canonical bpf_asm +// linux kernel tool. +func TestInterop(t *testing.T) { + out, err := Assemble(allInstructions) + if err != nil { + t.Fatalf("assembly of allInstructions program failed: %s", err) + } + t.Logf("Assembled program is %d instructions long", len(out)) + + bs, err := ioutil.ReadFile(allInstructionsExpected) + if err != nil { + t.Fatalf("reading %s: %s", allInstructionsExpected, err) + } + // First statement is the number of statements, last statement is + // empty. We just ignore both and rely on slice length. + stmts := strings.Split(string(bs), ",") + if len(stmts)-2 != len(out) { + t.Fatalf("test program lengths don't match: %s has %d, Go implementation has %d", allInstructionsExpected, len(stmts)-2, len(allInstructions)) + } + + for i, stmt := range stmts[1 : len(stmts)-2] { + nums := strings.Split(stmt, " ") + if len(nums) != 4 { + t.Fatalf("malformed instruction %d in %s: %s", i+1, allInstructionsExpected, stmt) + } + + actual := out[i] + + op, err := strconv.ParseUint(nums[0], 10, 16) + if err != nil { + t.Fatalf("malformed opcode %s in instruction %d of %s", nums[0], i+1, allInstructionsExpected) + } + if actual.Op != uint16(op) { + t.Errorf("opcode mismatch on instruction %d (%#v): got 0x%02x, want 0x%02x", i+1, allInstructions[i], actual.Op, op) + } + + jt, err := strconv.ParseUint(nums[1], 10, 8) + if err != nil { + t.Fatalf("malformed jt offset %s in instruction %d of %s", nums[1], i+1, allInstructionsExpected) + } + if actual.Jt != uint8(jt) { + t.Errorf("jt mismatch on instruction %d (%#v): got %d, want %d", i+1, allInstructions[i], actual.Jt, jt) + } + + jf, err := strconv.ParseUint(nums[2], 10, 8) + if err != nil { + t.Fatalf("malformed jf offset %s in instruction %d of %s", nums[2], i+1, allInstructionsExpected) + } + if actual.Jf != uint8(jf) { + t.Errorf("jf mismatch on instruction %d (%#v): got %d, want %d", i+1, allInstructions[i], actual.Jf, jf) + } + + k, err := strconv.ParseUint(nums[3], 10, 32) + if err != nil { + t.Fatalf("malformed constant %s in instruction %d of %s", nums[3], i+1, allInstructionsExpected) + } + if actual.K != uint32(k) { + t.Errorf("constant mismatch on instruction %d (%#v): got %d, want %d", i+1, allInstructions[i], actual.K, k) + } + } +} + +// Check that assembly and disassembly match each other. +func TestAsmDisasm(t *testing.T) { + prog1, err := Assemble(allInstructions) + if err != nil { + t.Fatalf("assembly of allInstructions program failed: %s", err) + } + t.Logf("Assembled program is %d instructions long", len(prog1)) + + got, allDecoded := Disassemble(prog1) + if !allDecoded { + t.Errorf("Disassemble(Assemble(allInstructions)) produced unrecognized instructions:") + for i, inst := range got { + if r, ok := inst.(RawInstruction); ok { + t.Logf(" insn %d, %#v --> %#v", i+1, allInstructions[i], r) + } + } + } + + if len(allInstructions) != len(got) { + t.Fatalf("disassembly changed program size: %d insns before, %d insns after", len(allInstructions), len(got)) + } + if !reflect.DeepEqual(allInstructions, got) { + t.Errorf("program mutated by disassembly:") + for i := range got { + if !reflect.DeepEqual(allInstructions[i], got[i]) { + t.Logf(" insn %d, s: %#v, p1: %#v, got: %#v", i+1, allInstructions[i], prog1[i], got[i]) + } + } + } +} + +type InvalidInstruction struct{} + +func (a InvalidInstruction) Assemble() (RawInstruction, error) { + return RawInstruction{}, fmt.Errorf("Invalid Instruction") +} + +func (a InvalidInstruction) String() string { + return fmt.Sprintf("unknown instruction: %#v", a) +} + +func TestString(t *testing.T) { + testCases := []struct { + instruction Instruction + assembler string + }{ + { + instruction: LoadConstant{Dst: RegA, Val: 42}, + assembler: "ld #42", + }, + { + instruction: LoadConstant{Dst: RegX, Val: 42}, + assembler: "ldx #42", + }, + { + instruction: LoadConstant{Dst: 0xffff, Val: 42}, + assembler: "unknown instruction: bpf.LoadConstant{Dst:0xffff, Val:0x2a}", + }, + { + instruction: LoadScratch{Dst: RegA, N: 3}, + assembler: "ld M[3]", + }, + { + instruction: LoadScratch{Dst: RegX, N: 3}, + assembler: "ldx M[3]", + }, + { + instruction: LoadScratch{Dst: 0xffff, N: 3}, + assembler: "unknown instruction: bpf.LoadScratch{Dst:0xffff, N:3}", + }, + { + instruction: LoadAbsolute{Off: 42, Size: 1}, + assembler: "ldb [42]", + }, + { + instruction: LoadAbsolute{Off: 42, Size: 2}, + assembler: "ldh [42]", + }, + { + instruction: LoadAbsolute{Off: 42, Size: 4}, + assembler: "ld [42]", + }, + { + instruction: LoadAbsolute{Off: 42, Size: -1}, + assembler: "unknown instruction: bpf.LoadAbsolute{Off:0x2a, Size:-1}", + }, + { + instruction: LoadIndirect{Off: 42, Size: 1}, + assembler: "ldb [x + 42]", + }, + { + instruction: LoadIndirect{Off: 42, Size: 2}, + assembler: "ldh [x + 42]", + }, + { + instruction: LoadIndirect{Off: 42, Size: 4}, + assembler: "ld [x + 42]", + }, + { + instruction: LoadIndirect{Off: 42, Size: -1}, + assembler: "unknown instruction: bpf.LoadIndirect{Off:0x2a, Size:-1}", + }, + { + instruction: LoadMemShift{Off: 42}, + assembler: "ldx 4*([42]&0xf)", + }, + { + instruction: LoadExtension{Num: ExtLen}, + assembler: "ld #len", + }, + { + instruction: LoadExtension{Num: ExtProto}, + assembler: "ld #proto", + }, + { + instruction: LoadExtension{Num: ExtType}, + assembler: "ld #type", + }, + { + instruction: LoadExtension{Num: ExtPayloadOffset}, + assembler: "ld #poff", + }, + { + instruction: LoadExtension{Num: ExtInterfaceIndex}, + assembler: "ld #ifidx", + }, + { + instruction: LoadExtension{Num: ExtNetlinkAttr}, + assembler: "ld #nla", + }, + { + instruction: LoadExtension{Num: ExtNetlinkAttrNested}, + assembler: "ld #nlan", + }, + { + instruction: LoadExtension{Num: ExtMark}, + assembler: "ld #mark", + }, + { + instruction: LoadExtension{Num: ExtQueue}, + assembler: "ld #queue", + }, + { + instruction: LoadExtension{Num: ExtLinkLayerType}, + assembler: "ld #hatype", + }, + { + instruction: LoadExtension{Num: ExtRXHash}, + assembler: "ld #rxhash", + }, + { + instruction: LoadExtension{Num: ExtCPUID}, + assembler: "ld #cpu", + }, + { + instruction: LoadExtension{Num: ExtVLANTag}, + assembler: "ld #vlan_tci", + }, + { + instruction: LoadExtension{Num: ExtVLANTagPresent}, + assembler: "ld #vlan_avail", + }, + { + instruction: LoadExtension{Num: ExtVLANProto}, + assembler: "ld #vlan_tpid", + }, + { + instruction: LoadExtension{Num: ExtRand}, + assembler: "ld #rand", + }, + { + instruction: LoadAbsolute{Off: 0xfffff038, Size: 4}, + assembler: "ld #rand", + }, + { + instruction: LoadExtension{Num: 0xfff}, + assembler: "unknown instruction: bpf.LoadExtension{Num:4095}", + }, + { + instruction: StoreScratch{Src: RegA, N: 3}, + assembler: "st M[3]", + }, + { + instruction: StoreScratch{Src: RegX, N: 3}, + assembler: "stx M[3]", + }, + { + instruction: StoreScratch{Src: 0xffff, N: 3}, + assembler: "unknown instruction: bpf.StoreScratch{Src:0xffff, N:3}", + }, + { + instruction: ALUOpConstant{Op: ALUOpAdd, Val: 42}, + assembler: "add #42", + }, + { + instruction: ALUOpConstant{Op: ALUOpSub, Val: 42}, + assembler: "sub #42", + }, + { + instruction: ALUOpConstant{Op: ALUOpMul, Val: 42}, + assembler: "mul #42", + }, + { + instruction: ALUOpConstant{Op: ALUOpDiv, Val: 42}, + assembler: "div #42", + }, + { + instruction: ALUOpConstant{Op: ALUOpOr, Val: 42}, + assembler: "or #42", + }, + { + instruction: ALUOpConstant{Op: ALUOpAnd, Val: 42}, + assembler: "and #42", + }, + { + instruction: ALUOpConstant{Op: ALUOpShiftLeft, Val: 42}, + assembler: "lsh #42", + }, + { + instruction: ALUOpConstant{Op: ALUOpShiftRight, Val: 42}, + assembler: "rsh #42", + }, + { + instruction: ALUOpConstant{Op: ALUOpMod, Val: 42}, + assembler: "mod #42", + }, + { + instruction: ALUOpConstant{Op: ALUOpXor, Val: 42}, + assembler: "xor #42", + }, + { + instruction: ALUOpConstant{Op: 0xffff, Val: 42}, + assembler: "unknown instruction: bpf.ALUOpConstant{Op:0xffff, Val:0x2a}", + }, + { + instruction: ALUOpX{Op: ALUOpAdd}, + assembler: "add x", + }, + { + instruction: ALUOpX{Op: ALUOpSub}, + assembler: "sub x", + }, + { + instruction: ALUOpX{Op: ALUOpMul}, + assembler: "mul x", + }, + { + instruction: ALUOpX{Op: ALUOpDiv}, + assembler: "div x", + }, + { + instruction: ALUOpX{Op: ALUOpOr}, + assembler: "or x", + }, + { + instruction: ALUOpX{Op: ALUOpAnd}, + assembler: "and x", + }, + { + instruction: ALUOpX{Op: ALUOpShiftLeft}, + assembler: "lsh x", + }, + { + instruction: ALUOpX{Op: ALUOpShiftRight}, + assembler: "rsh x", + }, + { + instruction: ALUOpX{Op: ALUOpMod}, + assembler: "mod x", + }, + { + instruction: ALUOpX{Op: ALUOpXor}, + assembler: "xor x", + }, + { + instruction: ALUOpX{Op: 0xffff}, + assembler: "unknown instruction: bpf.ALUOpX{Op:0xffff}", + }, + { + instruction: NegateA{}, + assembler: "neg", + }, + { + instruction: Jump{Skip: 10}, + assembler: "ja 10", + }, + { + instruction: JumpIf{Cond: JumpEqual, Val: 42, SkipTrue: 8, SkipFalse: 9}, + assembler: "jeq #42,8,9", + }, + { + instruction: JumpIf{Cond: JumpEqual, Val: 42, SkipTrue: 8}, + assembler: "jeq #42,8", + }, + { + instruction: JumpIf{Cond: JumpEqual, Val: 42, SkipFalse: 8}, + assembler: "jneq #42,8", + }, + { + instruction: JumpIf{Cond: JumpNotEqual, Val: 42, SkipTrue: 8}, + assembler: "jneq #42,8", + }, + { + instruction: JumpIf{Cond: JumpLessThan, Val: 42, SkipTrue: 7}, + assembler: "jlt #42,7", + }, + { + instruction: JumpIf{Cond: JumpLessOrEqual, Val: 42, SkipTrue: 6}, + assembler: "jle #42,6", + }, + { + instruction: JumpIf{Cond: JumpGreaterThan, Val: 42, SkipTrue: 4, SkipFalse: 5}, + assembler: "jgt #42,4,5", + }, + { + instruction: JumpIf{Cond: JumpGreaterThan, Val: 42, SkipTrue: 4}, + assembler: "jgt #42,4", + }, + { + instruction: JumpIf{Cond: JumpGreaterOrEqual, Val: 42, SkipTrue: 3, SkipFalse: 4}, + assembler: "jge #42,3,4", + }, + { + instruction: JumpIf{Cond: JumpGreaterOrEqual, Val: 42, SkipTrue: 3}, + assembler: "jge #42,3", + }, + { + instruction: JumpIf{Cond: JumpBitsSet, Val: 42, SkipTrue: 2, SkipFalse: 3}, + assembler: "jset #42,2,3", + }, + { + instruction: JumpIf{Cond: JumpBitsSet, Val: 42, SkipTrue: 2}, + assembler: "jset #42,2", + }, + { + instruction: JumpIf{Cond: JumpBitsNotSet, Val: 42, SkipTrue: 2, SkipFalse: 3}, + assembler: "jset #42,3,2", + }, + { + instruction: JumpIf{Cond: JumpBitsNotSet, Val: 42, SkipTrue: 2}, + assembler: "jset #42,0,2", + }, + { + instruction: JumpIf{Cond: 0xffff, Val: 42, SkipTrue: 1, SkipFalse: 2}, + assembler: "unknown JumpTest 0xffff", + }, + { + instruction: JumpIfX{Cond: JumpEqual, SkipTrue: 8, SkipFalse: 9}, + assembler: "jeq x,8,9", + }, + { + instruction: JumpIfX{Cond: JumpEqual, SkipTrue: 8}, + assembler: "jeq x,8", + }, + { + instruction: JumpIfX{Cond: JumpEqual, SkipFalse: 8}, + assembler: "jneq x,8", + }, + { + instruction: JumpIfX{Cond: JumpNotEqual, SkipTrue: 8}, + assembler: "jneq x,8", + }, + { + instruction: JumpIfX{Cond: JumpLessThan, SkipTrue: 7}, + assembler: "jlt x,7", + }, + { + instruction: JumpIfX{Cond: JumpLessOrEqual, SkipTrue: 6}, + assembler: "jle x,6", + }, + { + instruction: JumpIfX{Cond: JumpGreaterThan, SkipTrue: 4, SkipFalse: 5}, + assembler: "jgt x,4,5", + }, + { + instruction: JumpIfX{Cond: JumpGreaterThan, SkipTrue: 4}, + assembler: "jgt x,4", + }, + { + instruction: JumpIfX{Cond: JumpGreaterOrEqual, SkipTrue: 3, SkipFalse: 4}, + assembler: "jge x,3,4", + }, + { + instruction: JumpIfX{Cond: JumpGreaterOrEqual, SkipTrue: 3}, + assembler: "jge x,3", + }, + { + instruction: JumpIfX{Cond: JumpBitsSet, SkipTrue: 2, SkipFalse: 3}, + assembler: "jset x,2,3", + }, + { + instruction: JumpIfX{Cond: JumpBitsSet, SkipTrue: 2}, + assembler: "jset x,2", + }, + { + instruction: JumpIfX{Cond: JumpBitsNotSet, SkipTrue: 2, SkipFalse: 3}, + assembler: "jset x,3,2", + }, + { + instruction: JumpIfX{Cond: JumpBitsNotSet, SkipTrue: 2}, + assembler: "jset x,0,2", + }, + { + instruction: JumpIfX{Cond: 0xffff, SkipTrue: 1, SkipFalse: 2}, + assembler: "unknown JumpTest 0xffff", + }, + { + instruction: TAX{}, + assembler: "tax", + }, + { + instruction: TXA{}, + assembler: "txa", + }, + { + instruction: RetA{}, + assembler: "ret a", + }, + { + instruction: RetConstant{Val: 42}, + assembler: "ret #42", + }, + // Invalid instruction + { + instruction: InvalidInstruction{}, + assembler: "unknown instruction: bpf.InvalidInstruction{}", + }, + } + + for _, testCase := range testCases { + if input, ok := testCase.instruction.(fmt.Stringer); ok { + got := input.String() + if got != testCase.assembler { + t.Errorf("String did not return expected assembler notation, expected: %s, got: %s", testCase.assembler, got) + } + } else { + t.Errorf("Instruction %#v is not a fmt.Stringer", testCase.instruction) + } + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/setter.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/setter.go new file mode 100644 index 000000000..43e35f0ac --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/setter.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +// A Setter is a type which can attach a compiled BPF filter to itself. +type Setter interface { + SetBPF(filter []RawInstruction) error +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/testdata/all_instructions.bpf b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/testdata/all_instructions.bpf new file mode 100644 index 000000000..929eb25ac --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/testdata/all_instructions.bpf @@ -0,0 +1 @@ +57,0 0 0 42,1 0 0 42,96 0 0 3,97 0 0 3,48 0 0 42,40 0 0 42,32 0 0 42,80 0 0 42,72 0 0 42,64 0 0 42,177 0 0 42,128 0 0 0,32 0 0 4294963200,32 0 0 4294963204,32 0 0 4294963256,2 0 0 3,3 0 0 3,4 0 0 42,20 0 0 42,36 0 0 42,52 0 0 42,68 0 0 42,84 0 0 42,100 0 0 42,116 0 0 42,148 0 0 42,164 0 0 42,12 0 0 0,28 0 0 0,44 0 0 0,60 0 0 0,76 0 0 0,92 0 0 0,108 0 0 0,124 0 0 0,156 0 0 0,172 0 0 0,132 0 0 0,5 0 0 17,21 15 16 42,21 0 15 42,53 0 14 42,37 0 13 42,37 11 12 42,53 10 11 42,69 9 10 42,29 8 9 0,29 0 8 0,61 0 7 0,45 0 6 0,45 4 5 0,61 3 4 0,77 2 3 0,7 0 0 0,135 0 0 0,22 0 0 0,6 0 0 42, diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/testdata/all_instructions.txt b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/testdata/all_instructions.txt new file mode 100644 index 000000000..8e4d7587c --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/testdata/all_instructions.txt @@ -0,0 +1,88 @@ +# This filter is compiled to all_instructions.bpf by the `bpf_asm` +# tool, which can be found in the linux kernel source tree under +# tools/bpf. + +# Load immediate +ld #42 +ldx #42 + +# Load scratch +ld M[3] +ldx M[3] + +# Load absolute +ldb [42] +ldh [42] +ld [42] + +# Load indirect +ldb [x + 42] +ldh [x + 42] +ld [x + 42] + +# Load IPv4 header length +ldx 4*([42]&0xf) + +# Run extension function +ld #len +ld #proto +ld #type +ld #rand + +# Store scratch +st M[3] +stx M[3] + +# A constant +add #42 +sub #42 +mul #42 +div #42 +or #42 +and #42 +lsh #42 +rsh #42 +mod #42 +xor #42 + +# A X +add x +sub x +mul x +div x +or x +and x +lsh x +rsh x +mod x +xor x + +# !A +neg + +# Jump A constant +ja end +jeq #42,prev,end +jne #42,end +jlt #42,end +jle #42,end +jgt #42,prev,end +jge #42,prev,end +jset #42,prev,end + +# Jump A X +jeq x,prev,end +jne x,end +jlt x,end +jle x,end +jgt x,prev,end +jge x,prev,end +jset x,prev,end + +# Register transfers +tax +txa + +# Returns +prev: ret a +end: ret #42 diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm.go new file mode 100644 index 000000000..73f57f1f7 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm.go @@ -0,0 +1,150 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import ( + "errors" + "fmt" +) + +// A VM is an emulated BPF virtual machine. +type VM struct { + filter []Instruction +} + +// NewVM returns a new VM using the input BPF program. +func NewVM(filter []Instruction) (*VM, error) { + if len(filter) == 0 { + return nil, errors.New("one or more Instructions must be specified") + } + + for i, ins := range filter { + check := len(filter) - (i + 1) + switch ins := ins.(type) { + // Check for out-of-bounds jumps in instructions + case Jump: + if check <= int(ins.Skip) { + return nil, fmt.Errorf("cannot jump %d instructions; jumping past program bounds", ins.Skip) + } + case JumpIf: + if check <= int(ins.SkipTrue) { + return nil, fmt.Errorf("cannot jump %d instructions in true case; jumping past program bounds", ins.SkipTrue) + } + if check <= int(ins.SkipFalse) { + return nil, fmt.Errorf("cannot jump %d instructions in false case; jumping past program bounds", ins.SkipFalse) + } + case JumpIfX: + if check <= int(ins.SkipTrue) { + return nil, fmt.Errorf("cannot jump %d instructions in true case; jumping past program bounds", ins.SkipTrue) + } + if check <= int(ins.SkipFalse) { + return nil, fmt.Errorf("cannot jump %d instructions in false case; jumping past program bounds", ins.SkipFalse) + } + // Check for division or modulus by zero + case ALUOpConstant: + if ins.Val != 0 { + break + } + + switch ins.Op { + case ALUOpDiv, ALUOpMod: + return nil, errors.New("cannot divide by zero using ALUOpConstant") + } + // Check for unknown extensions + case LoadExtension: + switch ins.Num { + case ExtLen: + default: + return nil, fmt.Errorf("extension %d not implemented", ins.Num) + } + } + } + + // Make sure last instruction is a return instruction + switch filter[len(filter)-1].(type) { + case RetA, RetConstant: + default: + return nil, errors.New("BPF program must end with RetA or RetConstant") + } + + // Though our VM works using disassembled instructions, we + // attempt to assemble the input filter anyway to ensure it is compatible + // with an operating system VM. + _, err := Assemble(filter) + + return &VM{ + filter: filter, + }, err +} + +// Run runs the VM's BPF program against the input bytes. +// Run returns the number of bytes accepted by the BPF program, and any errors +// which occurred while processing the program. +func (v *VM) Run(in []byte) (int, error) { + var ( + // Registers of the virtual machine + regA uint32 + regX uint32 + regScratch [16]uint32 + + // OK is true if the program should continue processing the next + // instruction, or false if not, causing the loop to break + ok = true + ) + + // TODO(mdlayher): implement: + // - NegateA: + // - would require a change from uint32 registers to int32 + // registers + + // TODO(mdlayher): add interop tests that check signedness of ALU + // operations against kernel implementation, and make sure Go + // implementation matches behavior + + for i := 0; i < len(v.filter) && ok; i++ { + ins := v.filter[i] + + switch ins := ins.(type) { + case ALUOpConstant: + regA = aluOpConstant(ins, regA) + case ALUOpX: + regA, ok = aluOpX(ins, regA, regX) + case Jump: + i += int(ins.Skip) + case JumpIf: + jump := jumpIf(ins, regA) + i += jump + case JumpIfX: + jump := jumpIfX(ins, regA, regX) + i += jump + case LoadAbsolute: + regA, ok = loadAbsolute(ins, in) + case LoadConstant: + regA, regX = loadConstant(ins, regA, regX) + case LoadExtension: + regA = loadExtension(ins, in) + case LoadIndirect: + regA, ok = loadIndirect(ins, in, regX) + case LoadMemShift: + regX, ok = loadMemShift(ins, in) + case LoadScratch: + regA, regX = loadScratch(ins, regScratch, regA, regX) + case RetA: + return int(regA), nil + case RetConstant: + return int(ins.Val), nil + case StoreScratch: + regScratch = storeScratch(ins, regScratch, regA, regX) + case TAX: + regX = regA + case TXA: + regA = regX + default: + return 0, fmt.Errorf("unknown Instruction at index %d: %T", i, ins) + } + } + + return 0, nil +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_aluop_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_aluop_test.go new file mode 100644 index 000000000..16678244a --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_aluop_test.go @@ -0,0 +1,512 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf_test + +import ( + "testing" + + "golang.org/x/net/bpf" +) + +func TestVMALUOpAdd(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.ALUOpConstant{ + Op: bpf.ALUOpAdd, + Val: 3, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 8, 2, 3, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 3, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpSub(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.TAX{}, + bpf.ALUOpX{ + Op: bpf.ALUOpSub, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 1, 2, 3, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 0, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpMul(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.ALUOpConstant{ + Op: bpf.ALUOpMul, + Val: 2, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 6, 2, 3, 4, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 4, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpDiv(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.ALUOpConstant{ + Op: bpf.ALUOpDiv, + Val: 2, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 20, 2, 3, 4, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 2, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpDivByZeroALUOpConstant(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.ALUOpConstant{ + Op: bpf.ALUOpDiv, + Val: 0, + }, + bpf.RetA{}, + }) + if errStr(err) != "cannot divide by zero using ALUOpConstant" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMALUOpDivByZeroALUOpX(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + // Load byte 0 into X + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.TAX{}, + // Load byte 1 into A + bpf.LoadAbsolute{ + Off: 9, + Size: 1, + }, + // Attempt to perform 1/0 + bpf.ALUOpX{ + Op: bpf.ALUOpDiv, + }, + // Return 4 bytes if program does not terminate + bpf.LoadConstant{ + Val: 12, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 3, 4, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 0, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpOr(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 2, + }, + bpf.ALUOpConstant{ + Op: bpf.ALUOpOr, + Val: 0x01, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x00, 0x10, 0x03, 0x04, + 0x05, 0x06, 0x07, 0x08, + 0x09, 0xff, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 9, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpAnd(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 2, + }, + bpf.ALUOpConstant{ + Op: bpf.ALUOpAnd, + Val: 0x0019, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xaa, 0x09, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpShiftLeft(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.ALUOpConstant{ + Op: bpf.ALUOpShiftLeft, + Val: 0x01, + }, + bpf.JumpIf{ + Cond: bpf.JumpEqual, + Val: 0x02, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 9, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x01, 0xaa, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpShiftRight(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.ALUOpConstant{ + Op: bpf.ALUOpShiftRight, + Val: 0x01, + }, + bpf.JumpIf{ + Cond: bpf.JumpEqual, + Val: 0x04, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 9, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x08, 0xff, 0xff, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpMod(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.ALUOpConstant{ + Op: bpf.ALUOpMod, + Val: 20, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 30, 0, 0, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 2, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpModByZeroALUOpConstant(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.ALUOpConstant{ + Op: bpf.ALUOpMod, + Val: 0, + }, + bpf.RetA{}, + }) + if errStr(err) != "cannot divide by zero using ALUOpConstant" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMALUOpModByZeroALUOpX(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + // Load byte 0 into X + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.TAX{}, + // Load byte 1 into A + bpf.LoadAbsolute{ + Off: 9, + Size: 1, + }, + // Attempt to perform 1%0 + bpf.ALUOpX{ + Op: bpf.ALUOpMod, + }, + // Return 4 bytes if program does not terminate + bpf.LoadConstant{ + Val: 12, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 3, 4, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 0, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpXor(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.ALUOpConstant{ + Op: bpf.ALUOpXor, + Val: 0x0a, + }, + bpf.JumpIf{ + Cond: bpf.JumpEqual, + Val: 0x01, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 9, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x0b, 0x00, 0x00, 0x00, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMALUOpUnknown(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.ALUOpConstant{ + Op: bpf.ALUOpAdd, + Val: 1, + }, + // Verify that an unknown operation is a no-op + bpf.ALUOpConstant{ + Op: 100, + }, + bpf.JumpIf{ + Cond: bpf.JumpEqual, + Val: 0x02, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 9, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 1, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_bpf_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_bpf_test.go new file mode 100644 index 000000000..137eea160 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_bpf_test.go @@ -0,0 +1,199 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf_test + +import ( + "net" + "runtime" + "testing" + "time" + + "golang.org/x/net/bpf" + "golang.org/x/net/ipv4" + "golang.org/x/net/ipv6" + "golang.org/x/net/nettest" +) + +// A virtualMachine is a BPF virtual machine which can process an +// input packet against a BPF program and render a verdict. +type virtualMachine interface { + Run(in []byte) (int, error) +} + +// canUseOSVM indicates if the OS BPF VM is available on this platform. +func canUseOSVM() bool { + // OS BPF VM can only be used on platforms where x/net/ipv4 supports + // attaching a BPF program to a socket. + switch runtime.GOOS { + case "linux": + return true + } + + return false +} + +// All BPF tests against both the Go VM and OS VM are assumed to +// be used with a UDP socket. As a result, the entire contents +// of a UDP datagram is sent through the BPF program, but only +// the body after the UDP header will ever be returned in output. + +// testVM sets up a Go BPF VM, and if available, a native OS BPF VM +// for integration testing. +func testVM(t *testing.T, filter []bpf.Instruction) (virtualMachine, func(), error) { + goVM, err := bpf.NewVM(filter) + if err != nil { + // Some tests expect an error, so this error must be returned + // instead of fatally exiting the test + return nil, nil, err + } + + mvm := &multiVirtualMachine{ + goVM: goVM, + + t: t, + } + + // If available, add the OS VM for tests which verify that both the Go + // VM and OS VM have exactly the same output for the same input program + // and packet. + done := func() {} + if canUseOSVM() { + osVM, osVMDone := testOSVM(t, filter) + done = func() { osVMDone() } + mvm.osVM = osVM + } + + return mvm, done, nil +} + +// udpHeaderLen is the length of a UDP header. +const udpHeaderLen = 8 + +// A multiVirtualMachine is a virtualMachine which can call out to both the Go VM +// and the native OS VM, if the OS VM is available. +type multiVirtualMachine struct { + goVM virtualMachine + osVM virtualMachine + + t *testing.T +} + +func (mvm *multiVirtualMachine) Run(in []byte) (int, error) { + if len(in) < udpHeaderLen { + mvm.t.Fatalf("input must be at least length of UDP header (%d), got: %d", + udpHeaderLen, len(in)) + } + + // All tests have a UDP header as part of input, because the OS VM + // packets always will. For the Go VM, this output is trimmed before + // being sent back to tests. + goOut, goErr := mvm.goVM.Run(in) + if goOut >= udpHeaderLen { + goOut -= udpHeaderLen + } + + // If Go output is larger than the size of the packet, packet filtering + // interop tests must trim the output bytes to the length of the packet. + // The BPF VM should not do this on its own, as other uses of it do + // not trim the output byte count. + trim := len(in) - udpHeaderLen + if goOut > trim { + goOut = trim + } + + // When the OS VM is not available, process using the Go VM alone + if mvm.osVM == nil { + return goOut, goErr + } + + // The OS VM will apply its own UDP header, so remove the pseudo header + // that the Go VM needs. + osOut, err := mvm.osVM.Run(in[udpHeaderLen:]) + if err != nil { + mvm.t.Fatalf("error while running OS VM: %v", err) + } + + // Verify both VMs return same number of bytes + var mismatch bool + if goOut != osOut { + mismatch = true + mvm.t.Logf("output byte count does not match:\n- go: %v\n- os: %v", goOut, osOut) + } + + if mismatch { + mvm.t.Fatal("Go BPF and OS BPF packet outputs do not match") + } + + return goOut, goErr +} + +// An osVirtualMachine is a virtualMachine which uses the OS's BPF VM for +// processing BPF programs. +type osVirtualMachine struct { + l net.PacketConn + s net.Conn +} + +// testOSVM creates a virtualMachine which uses the OS's BPF VM by injecting +// packets into a UDP listener with a BPF program attached to it. +func testOSVM(t *testing.T, filter []bpf.Instruction) (virtualMachine, func()) { + l, err := nettest.NewLocalPacketListener("udp") + if err != nil { + t.Fatalf("failed to open OS VM UDP listener: %v", err) + } + + prog, err := bpf.Assemble(filter) + if err != nil { + t.Fatalf("failed to compile BPF program: %v", err) + } + + ip := l.LocalAddr().(*net.UDPAddr).IP + if ip.To4() != nil && ip.To16() == nil { + err = ipv4.NewPacketConn(l).SetBPF(prog) + } else { + err = ipv6.NewPacketConn(l).SetBPF(prog) + } + if err != nil { + t.Fatalf("failed to attach BPF program to listener: %v", err) + } + + s, err := net.Dial(l.LocalAddr().Network(), l.LocalAddr().String()) + if err != nil { + t.Fatalf("failed to dial connection to listener: %v", err) + } + + done := func() { + _ = s.Close() + _ = l.Close() + } + + return &osVirtualMachine{ + l: l, + s: s, + }, done +} + +// Run sends the input bytes into the OS's BPF VM and returns its verdict. +func (vm *osVirtualMachine) Run(in []byte) (int, error) { + go func() { + _, _ = vm.s.Write(in) + }() + + vm.l.SetDeadline(time.Now().Add(50 * time.Millisecond)) + + var b [512]byte + n, _, err := vm.l.ReadFrom(b[:]) + if err != nil { + // A timeout indicates that BPF filtered out the packet, and thus, + // no input should be returned. + if nerr, ok := err.(net.Error); ok && nerr.Timeout() { + return n, nil + } + + return n, err + } + + return n, nil +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_extension_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_extension_test.go new file mode 100644 index 000000000..7a48c82f3 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_extension_test.go @@ -0,0 +1,49 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf_test + +import ( + "testing" + + "golang.org/x/net/bpf" +) + +func TestVMLoadExtensionNotImplemented(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.LoadExtension{ + Num: 100, + }, + bpf.RetA{}, + }) + if errStr(err) != "extension 100 not implemented" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMLoadExtensionExtLen(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadExtension{ + Num: bpf.ExtLen, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 2, 3, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 4, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_instructions.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_instructions.go new file mode 100644 index 000000000..cf8947c33 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_instructions.go @@ -0,0 +1,182 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import ( + "encoding/binary" + "fmt" +) + +func aluOpConstant(ins ALUOpConstant, regA uint32) uint32 { + return aluOpCommon(ins.Op, regA, ins.Val) +} + +func aluOpX(ins ALUOpX, regA uint32, regX uint32) (uint32, bool) { + // Guard against division or modulus by zero by terminating + // the program, as the OS BPF VM does + if regX == 0 { + switch ins.Op { + case ALUOpDiv, ALUOpMod: + return 0, false + } + } + + return aluOpCommon(ins.Op, regA, regX), true +} + +func aluOpCommon(op ALUOp, regA uint32, value uint32) uint32 { + switch op { + case ALUOpAdd: + return regA + value + case ALUOpSub: + return regA - value + case ALUOpMul: + return regA * value + case ALUOpDiv: + // Division by zero not permitted by NewVM and aluOpX checks + return regA / value + case ALUOpOr: + return regA | value + case ALUOpAnd: + return regA & value + case ALUOpShiftLeft: + return regA << value + case ALUOpShiftRight: + return regA >> value + case ALUOpMod: + // Modulus by zero not permitted by NewVM and aluOpX checks + return regA % value + case ALUOpXor: + return regA ^ value + default: + return regA + } +} + +func jumpIf(ins JumpIf, regA uint32) int { + return jumpIfCommon(ins.Cond, ins.SkipTrue, ins.SkipFalse, regA, ins.Val) +} + +func jumpIfX(ins JumpIfX, regA uint32, regX uint32) int { + return jumpIfCommon(ins.Cond, ins.SkipTrue, ins.SkipFalse, regA, regX) +} + +func jumpIfCommon(cond JumpTest, skipTrue, skipFalse uint8, regA uint32, value uint32) int { + var ok bool + + switch cond { + case JumpEqual: + ok = regA == value + case JumpNotEqual: + ok = regA != value + case JumpGreaterThan: + ok = regA > value + case JumpLessThan: + ok = regA < value + case JumpGreaterOrEqual: + ok = regA >= value + case JumpLessOrEqual: + ok = regA <= value + case JumpBitsSet: + ok = (regA & value) != 0 + case JumpBitsNotSet: + ok = (regA & value) == 0 + } + + if ok { + return int(skipTrue) + } + + return int(skipFalse) +} + +func loadAbsolute(ins LoadAbsolute, in []byte) (uint32, bool) { + offset := int(ins.Off) + size := int(ins.Size) + + return loadCommon(in, offset, size) +} + +func loadConstant(ins LoadConstant, regA uint32, regX uint32) (uint32, uint32) { + switch ins.Dst { + case RegA: + regA = ins.Val + case RegX: + regX = ins.Val + } + + return regA, regX +} + +func loadExtension(ins LoadExtension, in []byte) uint32 { + switch ins.Num { + case ExtLen: + return uint32(len(in)) + default: + panic(fmt.Sprintf("unimplemented extension: %d", ins.Num)) + } +} + +func loadIndirect(ins LoadIndirect, in []byte, regX uint32) (uint32, bool) { + offset := int(ins.Off) + int(regX) + size := int(ins.Size) + + return loadCommon(in, offset, size) +} + +func loadMemShift(ins LoadMemShift, in []byte) (uint32, bool) { + offset := int(ins.Off) + + // Size of LoadMemShift is always 1 byte + if !inBounds(len(in), offset, 1) { + return 0, false + } + + // Mask off high 4 bits and multiply low 4 bits by 4 + return uint32(in[offset]&0x0f) * 4, true +} + +func inBounds(inLen int, offset int, size int) bool { + return offset+size <= inLen +} + +func loadCommon(in []byte, offset int, size int) (uint32, bool) { + if !inBounds(len(in), offset, size) { + return 0, false + } + + switch size { + case 1: + return uint32(in[offset]), true + case 2: + return uint32(binary.BigEndian.Uint16(in[offset : offset+size])), true + case 4: + return uint32(binary.BigEndian.Uint32(in[offset : offset+size])), true + default: + panic(fmt.Sprintf("invalid load size: %d", size)) + } +} + +func loadScratch(ins LoadScratch, regScratch [16]uint32, regA uint32, regX uint32) (uint32, uint32) { + switch ins.Dst { + case RegA: + regA = regScratch[ins.N] + case RegX: + regX = regScratch[ins.N] + } + + return regA, regX +} + +func storeScratch(ins StoreScratch, regScratch [16]uint32, regA uint32, regX uint32) [16]uint32 { + switch ins.Src { + case RegA: + regScratch[ins.N] = regA + case RegX: + regScratch[ins.N] = regX + } + + return regScratch +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_jump_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_jump_test.go new file mode 100644 index 000000000..77a2d4703 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_jump_test.go @@ -0,0 +1,726 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf_test + +import ( + "testing" + + "golang.org/x/net/bpf" +) + +func TestVMJumpOne(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.Jump{ + Skip: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 9, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 1, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpOutOfProgram(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.Jump{ + Skip: 1, + }, + bpf.RetA{}, + }) + if errStr(err) != "cannot jump 1 instructions; jumping past program bounds" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMJumpIfTrueOutOfProgram(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.JumpIf{ + Cond: bpf.JumpEqual, + SkipTrue: 2, + }, + bpf.RetA{}, + }) + if errStr(err) != "cannot jump 2 instructions in true case; jumping past program bounds" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMJumpIfFalseOutOfProgram(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.JumpIf{ + Cond: bpf.JumpEqual, + SkipFalse: 3, + }, + bpf.RetA{}, + }) + if errStr(err) != "cannot jump 3 instructions in false case; jumping past program bounds" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMJumpIfXTrueOutOfProgram(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.JumpIfX{ + Cond: bpf.JumpEqual, + SkipTrue: 2, + }, + bpf.RetA{}, + }) + if errStr(err) != "cannot jump 2 instructions in true case; jumping past program bounds" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMJumpIfXFalseOutOfProgram(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.JumpIfX{ + Cond: bpf.JumpEqual, + SkipFalse: 3, + }, + bpf.RetA{}, + }) + if errStr(err) != "cannot jump 3 instructions in false case; jumping past program bounds" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMJumpIfEqual(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.JumpIf{ + Cond: bpf.JumpEqual, + Val: 1, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 9, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 1, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfNotEqual(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.JumpIf{ + Cond: bpf.JumpNotEqual, + Val: 1, + SkipFalse: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 9, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 1, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfGreaterThan(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 4, + }, + bpf.JumpIf{ + Cond: bpf.JumpGreaterThan, + Val: 0x00010202, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 12, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 2, 3, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 4, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfLessThan(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 4, + }, + bpf.JumpIf{ + Cond: bpf.JumpLessThan, + Val: 0xff010203, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 12, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 2, 3, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 4, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfGreaterOrEqual(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 4, + }, + bpf.JumpIf{ + Cond: bpf.JumpGreaterOrEqual, + Val: 0x00010203, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 12, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 2, 3, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 4, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfLessOrEqual(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 4, + }, + bpf.JumpIf{ + Cond: bpf.JumpLessOrEqual, + Val: 0xff010203, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 12, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 2, 3, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 4, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfBitsSet(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 2, + }, + bpf.JumpIf{ + Cond: bpf.JumpBitsSet, + Val: 0x1122, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 10, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x01, 0x02, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 2, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfBitsNotSet(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 2, + }, + bpf.JumpIf{ + Cond: bpf.JumpBitsNotSet, + Val: 0x1221, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 10, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x01, 0x02, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 2, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfXEqual(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.LoadConstant{ + Dst: bpf.RegX, + Val: 1, + }, + bpf.JumpIfX{ + Cond: bpf.JumpEqual, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 9, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 1, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfXNotEqual(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.LoadConstant{ + Dst: bpf.RegX, + Val: 1, + }, + bpf.JumpIfX{ + Cond: bpf.JumpNotEqual, + SkipFalse: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 9, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 1, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfXGreaterThan(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 4, + }, + bpf.LoadConstant{ + Dst: bpf.RegX, + Val: 0x00010202, + }, + bpf.JumpIfX{ + Cond: bpf.JumpGreaterThan, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 12, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 2, 3, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 4, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfXLessThan(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 4, + }, + bpf.LoadConstant{ + Dst: bpf.RegX, + Val: 0xff010203, + }, + bpf.JumpIfX{ + Cond: bpf.JumpLessThan, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 12, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 2, 3, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 4, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfXGreaterOrEqual(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 4, + }, + bpf.LoadConstant{ + Dst: bpf.RegX, + Val: 0x00010203, + }, + bpf.JumpIfX{ + Cond: bpf.JumpGreaterOrEqual, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 12, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 2, 3, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 4, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfXLessOrEqual(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 4, + }, + bpf.LoadConstant{ + Dst: bpf.RegX, + Val: 0xff010203, + }, + bpf.JumpIfX{ + Cond: bpf.JumpLessOrEqual, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 12, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 2, 3, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 4, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfXBitsSet(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 2, + }, + bpf.LoadConstant{ + Dst: bpf.RegX, + Val: 0x1122, + }, + bpf.JumpIfX{ + Cond: bpf.JumpBitsSet, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 10, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x01, 0x02, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 2, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMJumpIfXBitsNotSet(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 2, + }, + bpf.LoadConstant{ + Dst: bpf.RegX, + Val: 0x1221, + }, + bpf.JumpIfX{ + Cond: bpf.JumpBitsNotSet, + SkipTrue: 1, + }, + bpf.RetConstant{ + Val: 0, + }, + bpf.RetConstant{ + Val: 10, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x01, 0x02, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 2, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_load_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_load_test.go new file mode 100644 index 000000000..d57e4af1e --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_load_test.go @@ -0,0 +1,258 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf_test + +import ( + "net" + "testing" + + "golang.org/x/net/bpf" + "golang.org/x/net/ipv4" +) + +func TestVMLoadAbsoluteOffsetOutOfBounds(t *testing.T) { + pkt := []byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, 2, 3, + } + + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: uint32(len(pkt)), + Size: 1, + }, + // Out of bounds should return 0, return 1 to tell if execution continued + bpf.RetConstant{Val: 1}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run(pkt) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 0, out; want != got { + t.Fatalf("unexpected result:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMLoadAbsoluteOffsetPlusSizeOutOfBounds(t *testing.T) { + pkt := []byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, + } + + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: uint32(len(pkt) - 1), + Size: 2, + }, + // Out of bounds should return 0, return 1 to tell if execution continued + bpf.RetConstant{Val: 1}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run(pkt) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 0, out; want != got { + t.Fatalf("unexpected result:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMLoadAbsoluteBadInstructionSize(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Size: 5, + }, + bpf.RetA{}, + }) + if errStr(err) != "assembling instruction 1: invalid load byte length 0" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMLoadConstantOK(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadConstant{ + Dst: bpf.RegX, + Val: 9, + }, + bpf.TXA{}, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMLoadIndirectOutOfBounds(t *testing.T) { + pkt := []byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, + } + + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadIndirect{ + Off: uint32(len(pkt)), + Size: 1, + }, + // Out of bounds should return 0, return 1 to tell if execution continued + bpf.RetConstant{Val: 1}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run(pkt) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 0, out; want != got { + t.Fatalf("unexpected result:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMLoadMemShiftOutOfBounds(t *testing.T) { + pkt := []byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, + } + + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadMemShift{ + Off: uint32(len(pkt)), + }, + // Out of bounds should return 0, return 1 to tell if execution continued + bpf.RetConstant{Val: 1}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run(pkt) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 0, out; want != got { + t.Fatalf("unexpected result:\n- want: %d\n- got: %d", + want, got) + } +} + +const ( + dhcp4Port = 53 +) + +func TestVMLoadMemShiftLoadIndirectNoResult(t *testing.T) { + vm, in, done := testDHCPv4(t) + defer done() + + // Append mostly empty UDP header with incorrect DHCPv4 port + in = append(in, []byte{ + 0, 0, + 0, dhcp4Port + 1, + 0, 0, + 0, 0, + }...) + + out, err := vm.Run(in) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 0, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMLoadMemShiftLoadIndirectOK(t *testing.T) { + vm, in, done := testDHCPv4(t) + defer done() + + // Append mostly empty UDP header with correct DHCPv4 port + in = append(in, []byte{ + 0, 0, + 0, dhcp4Port, + 0, 0, + 0, 0, + }...) + + out, err := vm.Run(in) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := len(in)-8, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func testDHCPv4(t *testing.T) (virtualMachine, []byte, func()) { + // DHCPv4 test data courtesy of David Anderson: + // https://github.com/google/netboot/blob/master/dhcp4/conn_linux.go#L59-L70 + vm, done, err := testVM(t, []bpf.Instruction{ + // Load IPv4 packet length + bpf.LoadMemShift{Off: 8}, + // Get UDP dport + bpf.LoadIndirect{Off: 8 + 2, Size: 2}, + // Correct dport? + bpf.JumpIf{Cond: bpf.JumpEqual, Val: dhcp4Port, SkipFalse: 1}, + // Accept + bpf.RetConstant{Val: 1500}, + // Ignore + bpf.RetConstant{Val: 0}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + + // Minimal requirements to make a valid IPv4 header + h := &ipv4.Header{ + Len: ipv4.HeaderLen, + Src: net.IPv4(192, 168, 1, 1), + Dst: net.IPv4(192, 168, 1, 2), + } + hb, err := h.Marshal() + if err != nil { + t.Fatalf("failed to marshal IPv4 header: %v", err) + } + + hb = append([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + }, hb...) + + return vm, hb, done +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_ret_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_ret_test.go new file mode 100644 index 000000000..2d86eae3e --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_ret_test.go @@ -0,0 +1,115 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf_test + +import ( + "testing" + + "golang.org/x/net/bpf" +) + +func TestVMRetA(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 9, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMRetALargerThanInput(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadAbsolute{ + Off: 8, + Size: 2, + }, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 255, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 2, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMRetConstant(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.RetConstant{ + Val: 9, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 1, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMRetConstantLargerThanInput(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.RetConstant{ + Val: 16, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0, 1, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 2, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_scratch_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_scratch_test.go new file mode 100644 index 000000000..e600e3c28 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_scratch_test.go @@ -0,0 +1,247 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf_test + +import ( + "testing" + + "golang.org/x/net/bpf" +) + +func TestVMStoreScratchInvalidScratchRegisterTooSmall(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.StoreScratch{ + Src: bpf.RegA, + N: -1, + }, + bpf.RetA{}, + }) + if errStr(err) != "assembling instruction 1: invalid scratch slot -1" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMStoreScratchInvalidScratchRegisterTooLarge(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.StoreScratch{ + Src: bpf.RegA, + N: 16, + }, + bpf.RetA{}, + }) + if errStr(err) != "assembling instruction 1: invalid scratch slot 16" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMStoreScratchUnknownSourceRegister(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.StoreScratch{ + Src: 100, + N: 0, + }, + bpf.RetA{}, + }) + if errStr(err) != "assembling instruction 1: invalid source register 100" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMLoadScratchInvalidScratchRegisterTooSmall(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.LoadScratch{ + Dst: bpf.RegX, + N: -1, + }, + bpf.RetA{}, + }) + if errStr(err) != "assembling instruction 1: invalid scratch slot -1" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMLoadScratchInvalidScratchRegisterTooLarge(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.LoadScratch{ + Dst: bpf.RegX, + N: 16, + }, + bpf.RetA{}, + }) + if errStr(err) != "assembling instruction 1: invalid scratch slot 16" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMLoadScratchUnknownDestinationRegister(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.LoadScratch{ + Dst: 100, + N: 0, + }, + bpf.RetA{}, + }) + if errStr(err) != "assembling instruction 1: invalid target register 100" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMStoreScratchLoadScratchOneValue(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + // Load byte 255 + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + // Copy to X and store in scratch[0] + bpf.TAX{}, + bpf.StoreScratch{ + Src: bpf.RegX, + N: 0, + }, + // Load byte 1 + bpf.LoadAbsolute{ + Off: 9, + Size: 1, + }, + // Overwrite 1 with 255 from scratch[0] + bpf.LoadScratch{ + Dst: bpf.RegA, + N: 0, + }, + // Return 255 + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 255, 1, 2, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 3, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} + +func TestVMStoreScratchLoadScratchMultipleValues(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + // Load byte 10 + bpf.LoadAbsolute{ + Off: 8, + Size: 1, + }, + // Store in scratch[0] + bpf.StoreScratch{ + Src: bpf.RegA, + N: 0, + }, + // Load byte 20 + bpf.LoadAbsolute{ + Off: 9, + Size: 1, + }, + // Store in scratch[1] + bpf.StoreScratch{ + Src: bpf.RegA, + N: 1, + }, + // Load byte 30 + bpf.LoadAbsolute{ + Off: 10, + Size: 1, + }, + // Store in scratch[2] + bpf.StoreScratch{ + Src: bpf.RegA, + N: 2, + }, + // Load byte 1 + bpf.LoadAbsolute{ + Off: 11, + Size: 1, + }, + // Store in scratch[3] + bpf.StoreScratch{ + Src: bpf.RegA, + N: 3, + }, + // Load in byte 10 to X + bpf.LoadScratch{ + Dst: bpf.RegX, + N: 0, + }, + // Copy X -> A + bpf.TXA{}, + // Verify value is 10 + bpf.JumpIf{ + Cond: bpf.JumpEqual, + Val: 10, + SkipTrue: 1, + }, + // Fail test if incorrect + bpf.RetConstant{ + Val: 0, + }, + // Load in byte 20 to A + bpf.LoadScratch{ + Dst: bpf.RegA, + N: 1, + }, + // Verify value is 20 + bpf.JumpIf{ + Cond: bpf.JumpEqual, + Val: 20, + SkipTrue: 1, + }, + // Fail test if incorrect + bpf.RetConstant{ + Val: 0, + }, + // Load in byte 30 to A + bpf.LoadScratch{ + Dst: bpf.RegA, + N: 2, + }, + // Verify value is 30 + bpf.JumpIf{ + Cond: bpf.JumpEqual, + Val: 30, + SkipTrue: 1, + }, + // Fail test if incorrect + bpf.RetConstant{ + Val: 0, + }, + // Return first two bytes on success + bpf.RetConstant{ + Val: 10, + }, + }) + if err != nil { + t.Fatalf("failed to load BPF program: %v", err) + } + defer done() + + out, err := vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 10, 20, 30, 1, + }) + if err != nil { + t.Fatalf("unexpected error while running program: %v", err) + } + if want, got := 2, out; want != got { + t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", + want, got) + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_test.go new file mode 100644 index 000000000..6bd4dd5c3 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/bpf/vm_test.go @@ -0,0 +1,144 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf_test + +import ( + "fmt" + "testing" + + "golang.org/x/net/bpf" +) + +var _ bpf.Instruction = unknown{} + +type unknown struct{} + +func (unknown) Assemble() (bpf.RawInstruction, error) { + return bpf.RawInstruction{}, nil +} + +func TestVMUnknownInstruction(t *testing.T) { + vm, done, err := testVM(t, []bpf.Instruction{ + bpf.LoadConstant{ + Dst: bpf.RegA, + Val: 100, + }, + // Should terminate the program with an error immediately + unknown{}, + bpf.RetA{}, + }) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + defer done() + + _, err = vm.Run([]byte{ + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, + }) + if errStr(err) != "unknown Instruction at index 1: bpf_test.unknown" { + t.Fatalf("unexpected error while running program: %v", err) + } +} + +func TestVMNoReturnInstruction(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{ + bpf.LoadConstant{ + Dst: bpf.RegA, + Val: 1, + }, + }) + if errStr(err) != "BPF program must end with RetA or RetConstant" { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestVMNoInputInstructions(t *testing.T) { + _, _, err := testVM(t, []bpf.Instruction{}) + if errStr(err) != "one or more Instructions must be specified" { + t.Fatalf("unexpected error: %v", err) + } +} + +// ExampleNewVM demonstrates usage of a VM, using an Ethernet frame +// as input and checking its EtherType to determine if it should be accepted. +func ExampleNewVM() { + // Offset | Length | Comment + // ------------------------- + // 00 | 06 | Ethernet destination MAC address + // 06 | 06 | Ethernet source MAC address + // 12 | 02 | Ethernet EtherType + const ( + etOff = 12 + etLen = 2 + + etARP = 0x0806 + ) + + // Set up a VM to filter traffic based on if its EtherType + // matches the ARP EtherType. + vm, err := bpf.NewVM([]bpf.Instruction{ + // Load EtherType value from Ethernet header + bpf.LoadAbsolute{ + Off: etOff, + Size: etLen, + }, + // If EtherType is equal to the ARP EtherType, jump to allow + // packet to be accepted + bpf.JumpIf{ + Cond: bpf.JumpEqual, + Val: etARP, + SkipTrue: 1, + }, + // EtherType does not match the ARP EtherType + bpf.RetConstant{ + Val: 0, + }, + // EtherType matches the ARP EtherType, accept up to 1500 + // bytes of packet + bpf.RetConstant{ + Val: 1500, + }, + }) + if err != nil { + panic(fmt.Sprintf("failed to load BPF program: %v", err)) + } + + // Create an Ethernet frame with the ARP EtherType for testing + frame := []byte{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, + 0x08, 0x06, + // Payload omitted for brevity + } + + // Run our VM's BPF program using the Ethernet frame as input + out, err := vm.Run(frame) + if err != nil { + panic(fmt.Sprintf("failed to accept Ethernet frame: %v", err)) + } + + // BPF VM can return a byte count greater than the number of input + // bytes, so trim the output to match the input byte length + if out > len(frame) { + out = len(frame) + } + + fmt.Printf("out: %d bytes", out) + + // Output: + // out: 14 bytes +} + +// errStr returns the string representation of an error, or +// "" if it is nil. +func errStr(err error) string { + if err == nil { + return "" + } + + return err.Error() +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/codereview.cfg b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/codereview.cfg new file mode 100644 index 000000000..3f8b14b64 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/codereview.cfg @@ -0,0 +1 @@ +issuerepo: golang/go diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/context.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/context.go new file mode 100644 index 000000000..a3c021d3f --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/context.go @@ -0,0 +1,56 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package context defines the Context type, which carries deadlines, +// cancelation signals, and other request-scoped values across API boundaries +// and between processes. +// As of Go 1.7 this package is available in the standard library under the +// name context. https://golang.org/pkg/context. +// +// Incoming requests to a server should create a Context, and outgoing calls to +// servers should accept a Context. The chain of function calls between must +// propagate the Context, optionally replacing it with a modified copy created +// using WithDeadline, WithTimeout, WithCancel, or WithValue. +// +// Programs that use Contexts should follow these rules to keep interfaces +// consistent across packages and enable static analysis tools to check context +// propagation: +// +// Do not store Contexts inside a struct type; instead, pass a Context +// explicitly to each function that needs it. The Context should be the first +// parameter, typically named ctx: +// +// func DoSomething(ctx context.Context, arg Arg) error { +// // ... use ctx ... +// } +// +// Do not pass a nil Context, even if a function permits it. Pass context.TODO +// if you are unsure about which Context to use. +// +// Use context Values only for request-scoped data that transits processes and +// APIs, not for passing optional parameters to functions. +// +// The same Context may be passed to functions running in different goroutines; +// Contexts are safe for simultaneous use by multiple goroutines. +// +// See http://blog.golang.org/context for example code for a server that uses +// Contexts. +package context // import "golang.org/x/net/context" + +// Background returns a non-nil, empty Context. It is never canceled, has no +// values, and has no deadline. It is typically used by the main function, +// initialization, and tests, and as the top-level Context for incoming +// requests. +func Background() Context { + return background +} + +// TODO returns a non-nil, empty Context. Code should use context.TODO when +// it's unclear which Context to use or it is not yet available (because the +// surrounding function has not yet been extended to accept a Context +// parameter). TODO is recognized by static analysis tools that determine +// whether Contexts are propagated correctly in a program. +func TODO() Context { + return todo +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/context_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/context_test.go new file mode 100644 index 000000000..e7bf0acc2 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/context_test.go @@ -0,0 +1,584 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.7 +// +build !go1.7 + +package context + +import ( + "fmt" + "math/rand" + "runtime" + "strings" + "sync" + "testing" + "time" +) + +// otherContext is a Context that's not one of the types defined in context.go. +// This lets us test code paths that differ based on the underlying type of the +// Context. +type otherContext struct { + Context +} + +func TestBackground(t *testing.T) { + c := Background() + if c == nil { + t.Fatalf("Background returned nil") + } + select { + case x := <-c.Done(): + t.Errorf("<-c.Done() == %v want nothing (it should block)", x) + default: + } + if got, want := fmt.Sprint(c), "context.Background"; got != want { + t.Errorf("Background().String() = %q want %q", got, want) + } +} + +func TestTODO(t *testing.T) { + c := TODO() + if c == nil { + t.Fatalf("TODO returned nil") + } + select { + case x := <-c.Done(): + t.Errorf("<-c.Done() == %v want nothing (it should block)", x) + default: + } + if got, want := fmt.Sprint(c), "context.TODO"; got != want { + t.Errorf("TODO().String() = %q want %q", got, want) + } +} + +func TestWithCancel(t *testing.T) { + c1, cancel := WithCancel(Background()) + + if got, want := fmt.Sprint(c1), "context.Background.WithCancel"; got != want { + t.Errorf("c1.String() = %q want %q", got, want) + } + + o := otherContext{c1} + c2, _ := WithCancel(o) + contexts := []Context{c1, o, c2} + + for i, c := range contexts { + if d := c.Done(); d == nil { + t.Errorf("c[%d].Done() == %v want non-nil", i, d) + } + if e := c.Err(); e != nil { + t.Errorf("c[%d].Err() == %v want nil", i, e) + } + + select { + case x := <-c.Done(): + t.Errorf("<-c.Done() == %v want nothing (it should block)", x) + default: + } + } + + cancel() + time.Sleep(100 * time.Millisecond) // let cancelation propagate + + for i, c := range contexts { + select { + case <-c.Done(): + default: + t.Errorf("<-c[%d].Done() blocked, but shouldn't have", i) + } + if e := c.Err(); e != Canceled { + t.Errorf("c[%d].Err() == %v want %v", i, e, Canceled) + } + } +} + +func TestParentFinishesChild(t *testing.T) { + // Context tree: + // parent -> cancelChild + // parent -> valueChild -> timerChild + parent, cancel := WithCancel(Background()) + cancelChild, stop := WithCancel(parent) + defer stop() + valueChild := WithValue(parent, "key", "value") + timerChild, stop := WithTimeout(valueChild, 10000*time.Hour) + defer stop() + + select { + case x := <-parent.Done(): + t.Errorf("<-parent.Done() == %v want nothing (it should block)", x) + case x := <-cancelChild.Done(): + t.Errorf("<-cancelChild.Done() == %v want nothing (it should block)", x) + case x := <-timerChild.Done(): + t.Errorf("<-timerChild.Done() == %v want nothing (it should block)", x) + case x := <-valueChild.Done(): + t.Errorf("<-valueChild.Done() == %v want nothing (it should block)", x) + default: + } + + // The parent's children should contain the two cancelable children. + pc := parent.(*cancelCtx) + cc := cancelChild.(*cancelCtx) + tc := timerChild.(*timerCtx) + pc.mu.Lock() + if len(pc.children) != 2 || !pc.children[cc] || !pc.children[tc] { + t.Errorf("bad linkage: pc.children = %v, want %v and %v", + pc.children, cc, tc) + } + pc.mu.Unlock() + + if p, ok := parentCancelCtx(cc.Context); !ok || p != pc { + t.Errorf("bad linkage: parentCancelCtx(cancelChild.Context) = %v, %v want %v, true", p, ok, pc) + } + if p, ok := parentCancelCtx(tc.Context); !ok || p != pc { + t.Errorf("bad linkage: parentCancelCtx(timerChild.Context) = %v, %v want %v, true", p, ok, pc) + } + + cancel() + + pc.mu.Lock() + if len(pc.children) != 0 { + t.Errorf("pc.cancel didn't clear pc.children = %v", pc.children) + } + pc.mu.Unlock() + + // parent and children should all be finished. + check := func(ctx Context, name string) { + select { + case <-ctx.Done(): + default: + t.Errorf("<-%s.Done() blocked, but shouldn't have", name) + } + if e := ctx.Err(); e != Canceled { + t.Errorf("%s.Err() == %v want %v", name, e, Canceled) + } + } + check(parent, "parent") + check(cancelChild, "cancelChild") + check(valueChild, "valueChild") + check(timerChild, "timerChild") + + // WithCancel should return a canceled context on a canceled parent. + precanceledChild := WithValue(parent, "key", "value") + select { + case <-precanceledChild.Done(): + default: + t.Errorf("<-precanceledChild.Done() blocked, but shouldn't have") + } + if e := precanceledChild.Err(); e != Canceled { + t.Errorf("precanceledChild.Err() == %v want %v", e, Canceled) + } +} + +func TestChildFinishesFirst(t *testing.T) { + cancelable, stop := WithCancel(Background()) + defer stop() + for _, parent := range []Context{Background(), cancelable} { + child, cancel := WithCancel(parent) + + select { + case x := <-parent.Done(): + t.Errorf("<-parent.Done() == %v want nothing (it should block)", x) + case x := <-child.Done(): + t.Errorf("<-child.Done() == %v want nothing (it should block)", x) + default: + } + + cc := child.(*cancelCtx) + pc, pcok := parent.(*cancelCtx) // pcok == false when parent == Background() + if p, ok := parentCancelCtx(cc.Context); ok != pcok || (ok && pc != p) { + t.Errorf("bad linkage: parentCancelCtx(cc.Context) = %v, %v want %v, %v", p, ok, pc, pcok) + } + + if pcok { + pc.mu.Lock() + if len(pc.children) != 1 || !pc.children[cc] { + t.Errorf("bad linkage: pc.children = %v, cc = %v", pc.children, cc) + } + pc.mu.Unlock() + } + + cancel() + + if pcok { + pc.mu.Lock() + if len(pc.children) != 0 { + t.Errorf("child's cancel didn't remove self from pc.children = %v", pc.children) + } + pc.mu.Unlock() + } + + // child should be finished. + select { + case <-child.Done(): + default: + t.Errorf("<-child.Done() blocked, but shouldn't have") + } + if e := child.Err(); e != Canceled { + t.Errorf("child.Err() == %v want %v", e, Canceled) + } + + // parent should not be finished. + select { + case x := <-parent.Done(): + t.Errorf("<-parent.Done() == %v want nothing (it should block)", x) + default: + } + if e := parent.Err(); e != nil { + t.Errorf("parent.Err() == %v want nil", e) + } + } +} + +func testDeadline(c Context, wait time.Duration, t *testing.T) { + select { + case <-time.After(wait): + t.Fatalf("context should have timed out") + case <-c.Done(): + } + if e := c.Err(); e != DeadlineExceeded { + t.Errorf("c.Err() == %v want %v", e, DeadlineExceeded) + } +} + +func TestDeadline(t *testing.T) { + t.Parallel() + const timeUnit = 500 * time.Millisecond + c, _ := WithDeadline(Background(), time.Now().Add(1*timeUnit)) + if got, prefix := fmt.Sprint(c), "context.Background.WithDeadline("; !strings.HasPrefix(got, prefix) { + t.Errorf("c.String() = %q want prefix %q", got, prefix) + } + testDeadline(c, 2*timeUnit, t) + + c, _ = WithDeadline(Background(), time.Now().Add(1*timeUnit)) + o := otherContext{c} + testDeadline(o, 2*timeUnit, t) + + c, _ = WithDeadline(Background(), time.Now().Add(1*timeUnit)) + o = otherContext{c} + c, _ = WithDeadline(o, time.Now().Add(3*timeUnit)) + testDeadline(c, 2*timeUnit, t) +} + +func TestTimeout(t *testing.T) { + t.Parallel() + const timeUnit = 500 * time.Millisecond + c, _ := WithTimeout(Background(), 1*timeUnit) + if got, prefix := fmt.Sprint(c), "context.Background.WithDeadline("; !strings.HasPrefix(got, prefix) { + t.Errorf("c.String() = %q want prefix %q", got, prefix) + } + testDeadline(c, 2*timeUnit, t) + + c, _ = WithTimeout(Background(), 1*timeUnit) + o := otherContext{c} + testDeadline(o, 2*timeUnit, t) + + c, _ = WithTimeout(Background(), 1*timeUnit) + o = otherContext{c} + c, _ = WithTimeout(o, 3*timeUnit) + testDeadline(c, 2*timeUnit, t) +} + +func TestCanceledTimeout(t *testing.T) { + t.Parallel() + const timeUnit = 500 * time.Millisecond + c, _ := WithTimeout(Background(), 2*timeUnit) + o := otherContext{c} + c, cancel := WithTimeout(o, 4*timeUnit) + cancel() + time.Sleep(1 * timeUnit) // let cancelation propagate + select { + case <-c.Done(): + default: + t.Errorf("<-c.Done() blocked, but shouldn't have") + } + if e := c.Err(); e != Canceled { + t.Errorf("c.Err() == %v want %v", e, Canceled) + } +} + +type key1 int +type key2 int + +var k1 = key1(1) +var k2 = key2(1) // same int as k1, different type +var k3 = key2(3) // same type as k2, different int + +func TestValues(t *testing.T) { + check := func(c Context, nm, v1, v2, v3 string) { + if v, ok := c.Value(k1).(string); ok == (len(v1) == 0) || v != v1 { + t.Errorf(`%s.Value(k1).(string) = %q, %t want %q, %t`, nm, v, ok, v1, len(v1) != 0) + } + if v, ok := c.Value(k2).(string); ok == (len(v2) == 0) || v != v2 { + t.Errorf(`%s.Value(k2).(string) = %q, %t want %q, %t`, nm, v, ok, v2, len(v2) != 0) + } + if v, ok := c.Value(k3).(string); ok == (len(v3) == 0) || v != v3 { + t.Errorf(`%s.Value(k3).(string) = %q, %t want %q, %t`, nm, v, ok, v3, len(v3) != 0) + } + } + + c0 := Background() + check(c0, "c0", "", "", "") + + c1 := WithValue(Background(), k1, "c1k1") + check(c1, "c1", "c1k1", "", "") + + if got, want := fmt.Sprint(c1), `context.Background.WithValue(1, "c1k1")`; got != want { + t.Errorf("c.String() = %q want %q", got, want) + } + + c2 := WithValue(c1, k2, "c2k2") + check(c2, "c2", "c1k1", "c2k2", "") + + c3 := WithValue(c2, k3, "c3k3") + check(c3, "c2", "c1k1", "c2k2", "c3k3") + + c4 := WithValue(c3, k1, nil) + check(c4, "c4", "", "c2k2", "c3k3") + + o0 := otherContext{Background()} + check(o0, "o0", "", "", "") + + o1 := otherContext{WithValue(Background(), k1, "c1k1")} + check(o1, "o1", "c1k1", "", "") + + o2 := WithValue(o1, k2, "o2k2") + check(o2, "o2", "c1k1", "o2k2", "") + + o3 := otherContext{c4} + check(o3, "o3", "", "c2k2", "c3k3") + + o4 := WithValue(o3, k3, nil) + check(o4, "o4", "", "c2k2", "") +} + +func TestAllocs(t *testing.T) { + bg := Background() + for _, test := range []struct { + desc string + f func() + limit float64 + gccgoLimit float64 + }{ + { + desc: "Background()", + f: func() { Background() }, + limit: 0, + gccgoLimit: 0, + }, + { + desc: fmt.Sprintf("WithValue(bg, %v, nil)", k1), + f: func() { + c := WithValue(bg, k1, nil) + c.Value(k1) + }, + limit: 3, + gccgoLimit: 3, + }, + { + desc: "WithTimeout(bg, 15*time.Millisecond)", + f: func() { + c, _ := WithTimeout(bg, 15*time.Millisecond) + <-c.Done() + }, + limit: 8, + gccgoLimit: 16, + }, + { + desc: "WithCancel(bg)", + f: func() { + c, cancel := WithCancel(bg) + cancel() + <-c.Done() + }, + limit: 5, + gccgoLimit: 8, + }, + { + desc: "WithTimeout(bg, 100*time.Millisecond)", + f: func() { + c, cancel := WithTimeout(bg, 100*time.Millisecond) + cancel() + <-c.Done() + }, + limit: 8, + gccgoLimit: 25, + }, + } { + limit := test.limit + if runtime.Compiler == "gccgo" { + // gccgo does not yet do escape analysis. + // TODO(iant): Remove this when gccgo does do escape analysis. + limit = test.gccgoLimit + } + if n := testing.AllocsPerRun(100, test.f); n > limit { + t.Errorf("%s allocs = %f want %d", test.desc, n, int(limit)) + } + } +} + +func TestSimultaneousCancels(t *testing.T) { + root, cancel := WithCancel(Background()) + m := map[Context]CancelFunc{root: cancel} + q := []Context{root} + // Create a tree of contexts. + for len(q) != 0 && len(m) < 100 { + parent := q[0] + q = q[1:] + for i := 0; i < 4; i++ { + ctx, cancel := WithCancel(parent) + m[ctx] = cancel + q = append(q, ctx) + } + } + // Start all the cancels in a random order. + var wg sync.WaitGroup + wg.Add(len(m)) + for _, cancel := range m { + go func(cancel CancelFunc) { + cancel() + wg.Done() + }(cancel) + } + // Wait on all the contexts in a random order. + for ctx := range m { + select { + case <-ctx.Done(): + case <-time.After(1 * time.Second): + buf := make([]byte, 10<<10) + n := runtime.Stack(buf, true) + t.Fatalf("timed out waiting for <-ctx.Done(); stacks:\n%s", buf[:n]) + } + } + // Wait for all the cancel functions to return. + done := make(chan struct{}) + go func() { + wg.Wait() + close(done) + }() + select { + case <-done: + case <-time.After(1 * time.Second): + buf := make([]byte, 10<<10) + n := runtime.Stack(buf, true) + t.Fatalf("timed out waiting for cancel functions; stacks:\n%s", buf[:n]) + } +} + +func TestInterlockedCancels(t *testing.T) { + parent, cancelParent := WithCancel(Background()) + child, cancelChild := WithCancel(parent) + go func() { + parent.Done() + cancelChild() + }() + cancelParent() + select { + case <-child.Done(): + case <-time.After(1 * time.Second): + buf := make([]byte, 10<<10) + n := runtime.Stack(buf, true) + t.Fatalf("timed out waiting for child.Done(); stacks:\n%s", buf[:n]) + } +} + +func TestLayersCancel(t *testing.T) { + testLayers(t, time.Now().UnixNano(), false) +} + +func TestLayersTimeout(t *testing.T) { + testLayers(t, time.Now().UnixNano(), true) +} + +func testLayers(t *testing.T, seed int64, testTimeout bool) { + rand.Seed(seed) + errorf := func(format string, a ...interface{}) { + t.Errorf(fmt.Sprintf("seed=%d: %s", seed, format), a...) + } + const ( + timeout = 200 * time.Millisecond + minLayers = 30 + ) + type value int + var ( + vals []*value + cancels []CancelFunc + numTimers int + ctx = Background() + ) + for i := 0; i < minLayers || numTimers == 0 || len(cancels) == 0 || len(vals) == 0; i++ { + switch rand.Intn(3) { + case 0: + v := new(value) + ctx = WithValue(ctx, v, v) + vals = append(vals, v) + case 1: + var cancel CancelFunc + ctx, cancel = WithCancel(ctx) + cancels = append(cancels, cancel) + case 2: + var cancel CancelFunc + ctx, cancel = WithTimeout(ctx, timeout) + cancels = append(cancels, cancel) + numTimers++ + } + } + checkValues := func(when string) { + for _, key := range vals { + if val := ctx.Value(key).(*value); key != val { + errorf("%s: ctx.Value(%p) = %p want %p", when, key, val, key) + } + } + } + select { + case <-ctx.Done(): + errorf("ctx should not be canceled yet") + default: + } + if s, prefix := fmt.Sprint(ctx), "context.Background."; !strings.HasPrefix(s, prefix) { + t.Errorf("ctx.String() = %q want prefix %q", s, prefix) + } + t.Log(ctx) + checkValues("before cancel") + if testTimeout { + select { + case <-ctx.Done(): + case <-time.After(timeout + 100*time.Millisecond): + errorf("ctx should have timed out") + } + checkValues("after timeout") + } else { + cancel := cancels[rand.Intn(len(cancels))] + cancel() + select { + case <-ctx.Done(): + default: + errorf("ctx should be canceled") + } + checkValues("after cancel") + } +} + +func TestCancelRemoves(t *testing.T) { + checkChildren := func(when string, ctx Context, want int) { + if got := len(ctx.(*cancelCtx).children); got != want { + t.Errorf("%s: context has %d children, want %d", when, got, want) + } + } + + ctx, _ := WithCancel(Background()) + checkChildren("after creation", ctx, 0) + _, cancel := WithCancel(ctx) + checkChildren("with WithCancel child ", ctx, 1) + cancel() + checkChildren("after cancelling WithCancel child", ctx, 0) + + ctx, _ = WithCancel(Background()) + checkChildren("after creation", ctx, 0) + _, cancel = WithTimeout(ctx, 60*time.Minute) + checkChildren("with WithTimeout child ", ctx, 1) + cancel() + checkChildren("after cancelling WithTimeout child", ctx, 0) +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/ctxhttp/ctxhttp.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/ctxhttp/ctxhttp.go new file mode 100644 index 000000000..37dc0cfdb --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/ctxhttp/ctxhttp.go @@ -0,0 +1,71 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package ctxhttp provides helper functions for performing context-aware HTTP requests. +package ctxhttp // import "golang.org/x/net/context/ctxhttp" + +import ( + "context" + "io" + "net/http" + "net/url" + "strings" +) + +// Do sends an HTTP request with the provided http.Client and returns +// an HTTP response. +// +// If the client is nil, http.DefaultClient is used. +// +// The provided ctx must be non-nil. If it is canceled or times out, +// ctx.Err() will be returned. +func Do(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) { + if client == nil { + client = http.DefaultClient + } + resp, err := client.Do(req.WithContext(ctx)) + // If we got an error, and the context has been canceled, + // the context's error is probably more useful. + if err != nil { + select { + case <-ctx.Done(): + err = ctx.Err() + default: + } + } + return resp, err +} + +// Get issues a GET request via the Do function. +func Get(ctx context.Context, client *http.Client, url string) (*http.Response, error) { + req, err := http.NewRequest("GET", url, nil) + if err != nil { + return nil, err + } + return Do(ctx, client, req) +} + +// Head issues a HEAD request via the Do function. +func Head(ctx context.Context, client *http.Client, url string) (*http.Response, error) { + req, err := http.NewRequest("HEAD", url, nil) + if err != nil { + return nil, err + } + return Do(ctx, client, req) +} + +// Post issues a POST request via the Do function. +func Post(ctx context.Context, client *http.Client, url string, bodyType string, body io.Reader) (*http.Response, error) { + req, err := http.NewRequest("POST", url, body) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", bodyType) + return Do(ctx, client, req) +} + +// PostForm issues a POST request via the Do function. +func PostForm(ctx context.Context, client *http.Client, url string, data url.Values) (*http.Response, error) { + return Post(ctx, client, url, "application/x-www-form-urlencoded", strings.NewReader(data.Encode())) +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/ctxhttp/ctxhttp_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/ctxhttp/ctxhttp_test.go new file mode 100644 index 000000000..21f7599cc --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/ctxhttp/ctxhttp_test.go @@ -0,0 +1,118 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !plan9 +// +build !plan9 + +package ctxhttp + +import ( + "context" + "io" + "io/ioutil" + "net/http" + "net/http/httptest" + "testing" + "time" +) + +func TestGo17Context(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + io.WriteString(w, "ok") + })) + defer ts.Close() + ctx := context.Background() + resp, err := Get(ctx, http.DefaultClient, ts.URL) + if resp == nil || err != nil { + t.Fatalf("error received from client: %v %v", err, resp) + } + resp.Body.Close() +} + +const ( + requestDuration = 100 * time.Millisecond + requestBody = "ok" +) + +func okHandler(w http.ResponseWriter, r *http.Request) { + time.Sleep(requestDuration) + io.WriteString(w, requestBody) +} + +func TestNoTimeout(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(okHandler)) + defer ts.Close() + + ctx := context.Background() + res, err := Get(ctx, nil, ts.URL) + if err != nil { + t.Fatal(err) + } + defer res.Body.Close() + slurp, err := ioutil.ReadAll(res.Body) + if err != nil { + t.Fatal(err) + } + if string(slurp) != requestBody { + t.Errorf("body = %q; want %q", slurp, requestBody) + } +} + +func TestCancelBeforeHeaders(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + + blockServer := make(chan struct{}) + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + cancel() + <-blockServer + io.WriteString(w, requestBody) + })) + defer ts.Close() + defer close(blockServer) + + res, err := Get(ctx, nil, ts.URL) + if err == nil { + res.Body.Close() + t.Fatal("Get returned unexpected nil error") + } + if err != context.Canceled { + t.Errorf("err = %v; want %v", err, context.Canceled) + } +} + +func TestCancelAfterHangingRequest(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + w.(http.Flusher).Flush() + <-w.(http.CloseNotifier).CloseNotify() + })) + defer ts.Close() + + ctx, cancel := context.WithCancel(context.Background()) + resp, err := Get(ctx, nil, ts.URL) + if err != nil { + t.Fatalf("unexpected error in Get: %v", err) + } + + // Cancel befer reading the body. + // Reading Request.Body should fail, since the request was + // canceled before anything was written. + cancel() + + done := make(chan struct{}) + + go func() { + b, err := ioutil.ReadAll(resp.Body) + if len(b) != 0 || err == nil { + t.Errorf(`Read got (%q, %v); want ("", error)`, b, err) + } + close(done) + }() + + select { + case <-time.After(1 * time.Second): + t.Errorf("Test timed out") + case <-done: + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/go17.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/go17.go new file mode 100644 index 000000000..344bd1433 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/go17.go @@ -0,0 +1,73 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.7 +// +build go1.7 + +package context + +import ( + "context" // standard library's context, as of Go 1.7 + "time" +) + +var ( + todo = context.TODO() + background = context.Background() +) + +// Canceled is the error returned by Context.Err when the context is canceled. +var Canceled = context.Canceled + +// DeadlineExceeded is the error returned by Context.Err when the context's +// deadline passes. +var DeadlineExceeded = context.DeadlineExceeded + +// WithCancel returns a copy of parent with a new Done channel. The returned +// context's Done channel is closed when the returned cancel function is called +// or when the parent context's Done channel is closed, whichever happens first. +// +// Canceling this context releases resources associated with it, so code should +// call cancel as soon as the operations running in this Context complete. +func WithCancel(parent Context) (ctx Context, cancel CancelFunc) { + ctx, f := context.WithCancel(parent) + return ctx, CancelFunc(f) +} + +// WithDeadline returns a copy of the parent context with the deadline adjusted +// to be no later than d. If the parent's deadline is already earlier than d, +// WithDeadline(parent, d) is semantically equivalent to parent. The returned +// context's Done channel is closed when the deadline expires, when the returned +// cancel function is called, or when the parent context's Done channel is +// closed, whichever happens first. +// +// Canceling this context releases resources associated with it, so code should +// call cancel as soon as the operations running in this Context complete. +func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) { + ctx, f := context.WithDeadline(parent, deadline) + return ctx, CancelFunc(f) +} + +// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)). +// +// Canceling this context releases resources associated with it, so code should +// call cancel as soon as the operations running in this Context complete: +// +// func slowOperationWithTimeout(ctx context.Context) (Result, error) { +// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) +// defer cancel() // releases resources if slowOperation completes before timeout elapses +// return slowOperation(ctx) +// } +func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) { + return WithDeadline(parent, time.Now().Add(timeout)) +} + +// WithValue returns a copy of parent in which the value associated with key is +// val. +// +// Use context Values only for request-scoped data that transits processes and +// APIs, not for passing optional parameters to functions. +func WithValue(parent Context, key interface{}, val interface{}) Context { + return context.WithValue(parent, key, val) +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/go19.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/go19.go new file mode 100644 index 000000000..64d31ecc3 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/go19.go @@ -0,0 +1,21 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.9 +// +build go1.9 + +package context + +import "context" // standard library's context, as of Go 1.7 + +// A Context carries a deadline, a cancelation signal, and other values across +// API boundaries. +// +// Context's methods may be called by multiple goroutines simultaneously. +type Context = context.Context + +// A CancelFunc tells an operation to abandon its work. +// A CancelFunc does not wait for the work to stop. +// After the first call, subsequent calls to a CancelFunc do nothing. +type CancelFunc = context.CancelFunc diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/pre_go17.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/pre_go17.go new file mode 100644 index 000000000..5270db5db --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/pre_go17.go @@ -0,0 +1,301 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.7 +// +build !go1.7 + +package context + +import ( + "errors" + "fmt" + "sync" + "time" +) + +// An emptyCtx is never canceled, has no values, and has no deadline. It is not +// struct{}, since vars of this type must have distinct addresses. +type emptyCtx int + +func (*emptyCtx) Deadline() (deadline time.Time, ok bool) { + return +} + +func (*emptyCtx) Done() <-chan struct{} { + return nil +} + +func (*emptyCtx) Err() error { + return nil +} + +func (*emptyCtx) Value(key interface{}) interface{} { + return nil +} + +func (e *emptyCtx) String() string { + switch e { + case background: + return "context.Background" + case todo: + return "context.TODO" + } + return "unknown empty Context" +} + +var ( + background = new(emptyCtx) + todo = new(emptyCtx) +) + +// Canceled is the error returned by Context.Err when the context is canceled. +var Canceled = errors.New("context canceled") + +// DeadlineExceeded is the error returned by Context.Err when the context's +// deadline passes. +var DeadlineExceeded = errors.New("context deadline exceeded") + +// WithCancel returns a copy of parent with a new Done channel. The returned +// context's Done channel is closed when the returned cancel function is called +// or when the parent context's Done channel is closed, whichever happens first. +// +// Canceling this context releases resources associated with it, so code should +// call cancel as soon as the operations running in this Context complete. +func WithCancel(parent Context) (ctx Context, cancel CancelFunc) { + c := newCancelCtx(parent) + propagateCancel(parent, c) + return c, func() { c.cancel(true, Canceled) } +} + +// newCancelCtx returns an initialized cancelCtx. +func newCancelCtx(parent Context) *cancelCtx { + return &cancelCtx{ + Context: parent, + done: make(chan struct{}), + } +} + +// propagateCancel arranges for child to be canceled when parent is. +func propagateCancel(parent Context, child canceler) { + if parent.Done() == nil { + return // parent is never canceled + } + if p, ok := parentCancelCtx(parent); ok { + p.mu.Lock() + if p.err != nil { + // parent has already been canceled + child.cancel(false, p.err) + } else { + if p.children == nil { + p.children = make(map[canceler]bool) + } + p.children[child] = true + } + p.mu.Unlock() + } else { + go func() { + select { + case <-parent.Done(): + child.cancel(false, parent.Err()) + case <-child.Done(): + } + }() + } +} + +// parentCancelCtx follows a chain of parent references until it finds a +// *cancelCtx. This function understands how each of the concrete types in this +// package represents its parent. +func parentCancelCtx(parent Context) (*cancelCtx, bool) { + for { + switch c := parent.(type) { + case *cancelCtx: + return c, true + case *timerCtx: + return c.cancelCtx, true + case *valueCtx: + parent = c.Context + default: + return nil, false + } + } +} + +// removeChild removes a context from its parent. +func removeChild(parent Context, child canceler) { + p, ok := parentCancelCtx(parent) + if !ok { + return + } + p.mu.Lock() + if p.children != nil { + delete(p.children, child) + } + p.mu.Unlock() +} + +// A canceler is a context type that can be canceled directly. The +// implementations are *cancelCtx and *timerCtx. +type canceler interface { + cancel(removeFromParent bool, err error) + Done() <-chan struct{} +} + +// A cancelCtx can be canceled. When canceled, it also cancels any children +// that implement canceler. +type cancelCtx struct { + Context + + done chan struct{} // closed by the first cancel call. + + mu sync.Mutex + children map[canceler]bool // set to nil by the first cancel call + err error // set to non-nil by the first cancel call +} + +func (c *cancelCtx) Done() <-chan struct{} { + return c.done +} + +func (c *cancelCtx) Err() error { + c.mu.Lock() + defer c.mu.Unlock() + return c.err +} + +func (c *cancelCtx) String() string { + return fmt.Sprintf("%v.WithCancel", c.Context) +} + +// cancel closes c.done, cancels each of c's children, and, if +// removeFromParent is true, removes c from its parent's children. +func (c *cancelCtx) cancel(removeFromParent bool, err error) { + if err == nil { + panic("context: internal error: missing cancel error") + } + c.mu.Lock() + if c.err != nil { + c.mu.Unlock() + return // already canceled + } + c.err = err + close(c.done) + for child := range c.children { + // NOTE: acquiring the child's lock while holding parent's lock. + child.cancel(false, err) + } + c.children = nil + c.mu.Unlock() + + if removeFromParent { + removeChild(c.Context, c) + } +} + +// WithDeadline returns a copy of the parent context with the deadline adjusted +// to be no later than d. If the parent's deadline is already earlier than d, +// WithDeadline(parent, d) is semantically equivalent to parent. The returned +// context's Done channel is closed when the deadline expires, when the returned +// cancel function is called, or when the parent context's Done channel is +// closed, whichever happens first. +// +// Canceling this context releases resources associated with it, so code should +// call cancel as soon as the operations running in this Context complete. +func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) { + if cur, ok := parent.Deadline(); ok && cur.Before(deadline) { + // The current deadline is already sooner than the new one. + return WithCancel(parent) + } + c := &timerCtx{ + cancelCtx: newCancelCtx(parent), + deadline: deadline, + } + propagateCancel(parent, c) + d := deadline.Sub(time.Now()) + if d <= 0 { + c.cancel(true, DeadlineExceeded) // deadline has already passed + return c, func() { c.cancel(true, Canceled) } + } + c.mu.Lock() + defer c.mu.Unlock() + if c.err == nil { + c.timer = time.AfterFunc(d, func() { + c.cancel(true, DeadlineExceeded) + }) + } + return c, func() { c.cancel(true, Canceled) } +} + +// A timerCtx carries a timer and a deadline. It embeds a cancelCtx to +// implement Done and Err. It implements cancel by stopping its timer then +// delegating to cancelCtx.cancel. +type timerCtx struct { + *cancelCtx + timer *time.Timer // Under cancelCtx.mu. + + deadline time.Time +} + +func (c *timerCtx) Deadline() (deadline time.Time, ok bool) { + return c.deadline, true +} + +func (c *timerCtx) String() string { + return fmt.Sprintf("%v.WithDeadline(%s [%s])", c.cancelCtx.Context, c.deadline, c.deadline.Sub(time.Now())) +} + +func (c *timerCtx) cancel(removeFromParent bool, err error) { + c.cancelCtx.cancel(false, err) + if removeFromParent { + // Remove this timerCtx from its parent cancelCtx's children. + removeChild(c.cancelCtx.Context, c) + } + c.mu.Lock() + if c.timer != nil { + c.timer.Stop() + c.timer = nil + } + c.mu.Unlock() +} + +// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)). +// +// Canceling this context releases resources associated with it, so code should +// call cancel as soon as the operations running in this Context complete: +// +// func slowOperationWithTimeout(ctx context.Context) (Result, error) { +// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) +// defer cancel() // releases resources if slowOperation completes before timeout elapses +// return slowOperation(ctx) +// } +func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) { + return WithDeadline(parent, time.Now().Add(timeout)) +} + +// WithValue returns a copy of parent in which the value associated with key is +// val. +// +// Use context Values only for request-scoped data that transits processes and +// APIs, not for passing optional parameters to functions. +func WithValue(parent Context, key interface{}, val interface{}) Context { + return &valueCtx{parent, key, val} +} + +// A valueCtx carries a key-value pair. It implements Value for that key and +// delegates all other calls to the embedded Context. +type valueCtx struct { + Context + key, val interface{} +} + +func (c *valueCtx) String() string { + return fmt.Sprintf("%v.WithValue(%#v, %#v)", c.Context, c.key, c.val) +} + +func (c *valueCtx) Value(key interface{}) interface{} { + if c.key == key { + return c.val + } + return c.Context.Value(key) +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/pre_go19.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/pre_go19.go new file mode 100644 index 000000000..1f9715341 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/pre_go19.go @@ -0,0 +1,110 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.9 +// +build !go1.9 + +package context + +import "time" + +// A Context carries a deadline, a cancelation signal, and other values across +// API boundaries. +// +// Context's methods may be called by multiple goroutines simultaneously. +type Context interface { + // Deadline returns the time when work done on behalf of this context + // should be canceled. Deadline returns ok==false when no deadline is + // set. Successive calls to Deadline return the same results. + Deadline() (deadline time.Time, ok bool) + + // Done returns a channel that's closed when work done on behalf of this + // context should be canceled. Done may return nil if this context can + // never be canceled. Successive calls to Done return the same value. + // + // WithCancel arranges for Done to be closed when cancel is called; + // WithDeadline arranges for Done to be closed when the deadline + // expires; WithTimeout arranges for Done to be closed when the timeout + // elapses. + // + // Done is provided for use in select statements: + // + // // Stream generates values with DoSomething and sends them to out + // // until DoSomething returns an error or ctx.Done is closed. + // func Stream(ctx context.Context, out chan<- Value) error { + // for { + // v, err := DoSomething(ctx) + // if err != nil { + // return err + // } + // select { + // case <-ctx.Done(): + // return ctx.Err() + // case out <- v: + // } + // } + // } + // + // See http://blog.golang.org/pipelines for more examples of how to use + // a Done channel for cancelation. + Done() <-chan struct{} + + // Err returns a non-nil error value after Done is closed. Err returns + // Canceled if the context was canceled or DeadlineExceeded if the + // context's deadline passed. No other values for Err are defined. + // After Done is closed, successive calls to Err return the same value. + Err() error + + // Value returns the value associated with this context for key, or nil + // if no value is associated with key. Successive calls to Value with + // the same key returns the same result. + // + // Use context values only for request-scoped data that transits + // processes and API boundaries, not for passing optional parameters to + // functions. + // + // A key identifies a specific value in a Context. Functions that wish + // to store values in Context typically allocate a key in a global + // variable then use that key as the argument to context.WithValue and + // Context.Value. A key can be any type that supports equality; + // packages should define keys as an unexported type to avoid + // collisions. + // + // Packages that define a Context key should provide type-safe accessors + // for the values stores using that key: + // + // // Package user defines a User type that's stored in Contexts. + // package user + // + // import "golang.org/x/net/context" + // + // // User is the type of value stored in the Contexts. + // type User struct {...} + // + // // key is an unexported type for keys defined in this package. + // // This prevents collisions with keys defined in other packages. + // type key int + // + // // userKey is the key for user.User values in Contexts. It is + // // unexported; clients use user.NewContext and user.FromContext + // // instead of using this key directly. + // var userKey key = 0 + // + // // NewContext returns a new Context that carries value u. + // func NewContext(ctx context.Context, u *User) context.Context { + // return context.WithValue(ctx, userKey, u) + // } + // + // // FromContext returns the User value stored in ctx, if any. + // func FromContext(ctx context.Context) (*User, bool) { + // u, ok := ctx.Value(userKey).(*User) + // return u, ok + // } + Value(key interface{}) interface{} +} + +// A CancelFunc tells an operation to abandon its work. +// A CancelFunc does not wait for the work to stop. +// After the first call, subsequent calls to a CancelFunc do nothing. +type CancelFunc func() diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/withtimeout_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/withtimeout_test.go new file mode 100644 index 000000000..e6f56691d --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/context/withtimeout_test.go @@ -0,0 +1,31 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package context_test + +import ( + "fmt" + "time" + + "golang.org/x/net/context" +) + +// This example passes a context with a timeout to tell a blocking function that +// it should abandon its work after the timeout elapses. +func ExampleWithTimeout() { + // Pass a context with a timeout to tell a blocking function that it + // should abandon its work after the timeout elapses. + ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond) + defer cancel() + + select { + case <-time.After(1 * time.Second): + fmt.Println("overslept") + case <-ctx.Done(): + fmt.Println(ctx.Err()) // prints "context deadline exceeded" + } + + // Output: + // context deadline exceeded +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dict/dict.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dict/dict.go new file mode 100644 index 000000000..93e65c03c --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dict/dict.go @@ -0,0 +1,210 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package dict implements the Dictionary Server Protocol +// as defined in RFC 2229. +package dict // import "golang.org/x/net/dict" + +import ( + "net/textproto" + "strconv" + "strings" +) + +// A Client represents a client connection to a dictionary server. +type Client struct { + text *textproto.Conn +} + +// Dial returns a new client connected to a dictionary server at +// addr on the given network. +func Dial(network, addr string) (*Client, error) { + text, err := textproto.Dial(network, addr) + if err != nil { + return nil, err + } + _, _, err = text.ReadCodeLine(220) + if err != nil { + text.Close() + return nil, err + } + return &Client{text: text}, nil +} + +// Close closes the connection to the dictionary server. +func (c *Client) Close() error { + return c.text.Close() +} + +// A Dict represents a dictionary available on the server. +type Dict struct { + Name string // short name of dictionary + Desc string // long description +} + +// Dicts returns a list of the dictionaries available on the server. +func (c *Client) Dicts() ([]Dict, error) { + id, err := c.text.Cmd("SHOW DB") + if err != nil { + return nil, err + } + + c.text.StartResponse(id) + defer c.text.EndResponse(id) + + _, _, err = c.text.ReadCodeLine(110) + if err != nil { + return nil, err + } + lines, err := c.text.ReadDotLines() + if err != nil { + return nil, err + } + _, _, err = c.text.ReadCodeLine(250) + + dicts := make([]Dict, len(lines)) + for i := range dicts { + d := &dicts[i] + a, _ := fields(lines[i]) + if len(a) < 2 { + return nil, textproto.ProtocolError("invalid dictionary: " + lines[i]) + } + d.Name = a[0] + d.Desc = a[1] + } + return dicts, err +} + +// A Defn represents a definition. +type Defn struct { + Dict Dict // Dict where definition was found + Word string // Word being defined + Text []byte // Definition text, typically multiple lines +} + +// Define requests the definition of the given word. +// The argument dict names the dictionary to use, +// the Name field of a Dict returned by Dicts. +// +// The special dictionary name "*" means to look in all the +// server's dictionaries. +// The special dictionary name "!" means to look in all the +// server's dictionaries in turn, stopping after finding the word +// in one of them. +func (c *Client) Define(dict, word string) ([]*Defn, error) { + id, err := c.text.Cmd("DEFINE %s %q", dict, word) + if err != nil { + return nil, err + } + + c.text.StartResponse(id) + defer c.text.EndResponse(id) + + _, line, err := c.text.ReadCodeLine(150) + if err != nil { + return nil, err + } + a, _ := fields(line) + if len(a) < 1 { + return nil, textproto.ProtocolError("malformed response: " + line) + } + n, err := strconv.Atoi(a[0]) + if err != nil { + return nil, textproto.ProtocolError("invalid definition count: " + a[0]) + } + def := make([]*Defn, n) + for i := 0; i < n; i++ { + _, line, err = c.text.ReadCodeLine(151) + if err != nil { + return nil, err + } + a, _ := fields(line) + if len(a) < 3 { + // skip it, to keep protocol in sync + i-- + n-- + def = def[0:n] + continue + } + d := &Defn{Word: a[0], Dict: Dict{a[1], a[2]}} + d.Text, err = c.text.ReadDotBytes() + if err != nil { + return nil, err + } + def[i] = d + } + _, _, err = c.text.ReadCodeLine(250) + return def, err +} + +// Fields returns the fields in s. +// Fields are space separated unquoted words +// or quoted with single or double quote. +func fields(s string) ([]string, error) { + var v []string + i := 0 + for { + for i < len(s) && (s[i] == ' ' || s[i] == '\t') { + i++ + } + if i >= len(s) { + break + } + if s[i] == '"' || s[i] == '\'' { + q := s[i] + // quoted string + var j int + for j = i + 1; ; j++ { + if j >= len(s) { + return nil, textproto.ProtocolError("malformed quoted string") + } + if s[j] == '\\' { + j++ + continue + } + if s[j] == q { + j++ + break + } + } + v = append(v, unquote(s[i+1:j-1])) + i = j + } else { + // atom + var j int + for j = i; j < len(s); j++ { + if s[j] == ' ' || s[j] == '\t' || s[j] == '\\' || s[j] == '"' || s[j] == '\'' { + break + } + } + v = append(v, s[i:j]) + i = j + } + if i < len(s) { + c := s[i] + if c != ' ' && c != '\t' { + return nil, textproto.ProtocolError("quotes not on word boundaries") + } + } + } + return v, nil +} + +func unquote(s string) string { + if strings.Index(s, "\\") < 0 { + return s + } + b := []byte(s) + w := 0 + for r := 0; r < len(b); r++ { + c := b[r] + if c == '\\' { + r++ + c = b[r] + } + b[w] = c + w++ + } + return string(b[0:w]) +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/example_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/example_test.go new file mode 100644 index 000000000..8600a6bc4 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/example_test.go @@ -0,0 +1,132 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package dnsmessage_test + +import ( + "fmt" + "net" + "strings" + + "golang.org/x/net/dns/dnsmessage" +) + +func mustNewName(name string) dnsmessage.Name { + n, err := dnsmessage.NewName(name) + if err != nil { + panic(err) + } + return n +} + +func ExampleParser() { + msg := dnsmessage.Message{ + Header: dnsmessage.Header{Response: true, Authoritative: true}, + Questions: []dnsmessage.Question{ + { + Name: mustNewName("foo.bar.example.com."), + Type: dnsmessage.TypeA, + Class: dnsmessage.ClassINET, + }, + { + Name: mustNewName("bar.example.com."), + Type: dnsmessage.TypeA, + Class: dnsmessage.ClassINET, + }, + }, + Answers: []dnsmessage.Resource{ + { + Header: dnsmessage.ResourceHeader{ + Name: mustNewName("foo.bar.example.com."), + Type: dnsmessage.TypeA, + Class: dnsmessage.ClassINET, + }, + Body: &dnsmessage.AResource{A: [4]byte{127, 0, 0, 1}}, + }, + { + Header: dnsmessage.ResourceHeader{ + Name: mustNewName("bar.example.com."), + Type: dnsmessage.TypeA, + Class: dnsmessage.ClassINET, + }, + Body: &dnsmessage.AResource{A: [4]byte{127, 0, 0, 2}}, + }, + }, + } + + buf, err := msg.Pack() + if err != nil { + panic(err) + } + + wantName := "bar.example.com." + + var p dnsmessage.Parser + if _, err := p.Start(buf); err != nil { + panic(err) + } + + for { + q, err := p.Question() + if err == dnsmessage.ErrSectionDone { + break + } + if err != nil { + panic(err) + } + + if q.Name.String() != wantName { + continue + } + + fmt.Println("Found question for name", wantName) + if err := p.SkipAllQuestions(); err != nil { + panic(err) + } + break + } + + var gotIPs []net.IP + for { + h, err := p.AnswerHeader() + if err == dnsmessage.ErrSectionDone { + break + } + if err != nil { + panic(err) + } + + if (h.Type != dnsmessage.TypeA && h.Type != dnsmessage.TypeAAAA) || h.Class != dnsmessage.ClassINET { + continue + } + + if !strings.EqualFold(h.Name.String(), wantName) { + if err := p.SkipAnswer(); err != nil { + panic(err) + } + continue + } + + switch h.Type { + case dnsmessage.TypeA: + r, err := p.AResource() + if err != nil { + panic(err) + } + gotIPs = append(gotIPs, r.A[:]) + case dnsmessage.TypeAAAA: + r, err := p.AAAAResource() + if err != nil { + panic(err) + } + gotIPs = append(gotIPs, r.AAAA[:]) + } + } + + fmt.Printf("Found A/AAAA records for name %s: %v\n", wantName, gotIPs) + + // Output: + // Found question for name bar.example.com. + // Found A/AAAA records for name bar.example.com.: [127.0.0.2] +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/message.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/message.go new file mode 100644 index 000000000..1736fc5d1 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/message.go @@ -0,0 +1,2664 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package dnsmessage provides a mostly RFC 1035 compliant implementation of +// DNS message packing and unpacking. +// +// The package also supports messages with Extension Mechanisms for DNS +// (EDNS(0)) as defined in RFC 6891. +// +// This implementation is designed to minimize heap allocations and avoid +// unnecessary packing and unpacking as much as possible. +package dnsmessage + +import ( + "errors" +) + +// Message formats + +// A Type is a type of DNS request and response. +type Type uint16 + +const ( + // ResourceHeader.Type and Question.Type + TypeA Type = 1 + TypeNS Type = 2 + TypeCNAME Type = 5 + TypeSOA Type = 6 + TypePTR Type = 12 + TypeMX Type = 15 + TypeTXT Type = 16 + TypeAAAA Type = 28 + TypeSRV Type = 33 + TypeOPT Type = 41 + + // Question.Type + TypeWKS Type = 11 + TypeHINFO Type = 13 + TypeMINFO Type = 14 + TypeAXFR Type = 252 + TypeALL Type = 255 +) + +var typeNames = map[Type]string{ + TypeA: "TypeA", + TypeNS: "TypeNS", + TypeCNAME: "TypeCNAME", + TypeSOA: "TypeSOA", + TypePTR: "TypePTR", + TypeMX: "TypeMX", + TypeTXT: "TypeTXT", + TypeAAAA: "TypeAAAA", + TypeSRV: "TypeSRV", + TypeOPT: "TypeOPT", + TypeWKS: "TypeWKS", + TypeHINFO: "TypeHINFO", + TypeMINFO: "TypeMINFO", + TypeAXFR: "TypeAXFR", + TypeALL: "TypeALL", +} + +// String implements fmt.Stringer.String. +func (t Type) String() string { + if n, ok := typeNames[t]; ok { + return n + } + return printUint16(uint16(t)) +} + +// GoString implements fmt.GoStringer.GoString. +func (t Type) GoString() string { + if n, ok := typeNames[t]; ok { + return "dnsmessage." + n + } + return printUint16(uint16(t)) +} + +// A Class is a type of network. +type Class uint16 + +const ( + // ResourceHeader.Class and Question.Class + ClassINET Class = 1 + ClassCSNET Class = 2 + ClassCHAOS Class = 3 + ClassHESIOD Class = 4 + + // Question.Class + ClassANY Class = 255 +) + +var classNames = map[Class]string{ + ClassINET: "ClassINET", + ClassCSNET: "ClassCSNET", + ClassCHAOS: "ClassCHAOS", + ClassHESIOD: "ClassHESIOD", + ClassANY: "ClassANY", +} + +// String implements fmt.Stringer.String. +func (c Class) String() string { + if n, ok := classNames[c]; ok { + return n + } + return printUint16(uint16(c)) +} + +// GoString implements fmt.GoStringer.GoString. +func (c Class) GoString() string { + if n, ok := classNames[c]; ok { + return "dnsmessage." + n + } + return printUint16(uint16(c)) +} + +// An OpCode is a DNS operation code. +type OpCode uint16 + +// GoString implements fmt.GoStringer.GoString. +func (o OpCode) GoString() string { + return printUint16(uint16(o)) +} + +// An RCode is a DNS response status code. +type RCode uint16 + +const ( + // Message.Rcode + RCodeSuccess RCode = 0 + RCodeFormatError RCode = 1 + RCodeServerFailure RCode = 2 + RCodeNameError RCode = 3 + RCodeNotImplemented RCode = 4 + RCodeRefused RCode = 5 +) + +var rCodeNames = map[RCode]string{ + RCodeSuccess: "RCodeSuccess", + RCodeFormatError: "RCodeFormatError", + RCodeServerFailure: "RCodeServerFailure", + RCodeNameError: "RCodeNameError", + RCodeNotImplemented: "RCodeNotImplemented", + RCodeRefused: "RCodeRefused", +} + +// String implements fmt.Stringer.String. +func (r RCode) String() string { + if n, ok := rCodeNames[r]; ok { + return n + } + return printUint16(uint16(r)) +} + +// GoString implements fmt.GoStringer.GoString. +func (r RCode) GoString() string { + if n, ok := rCodeNames[r]; ok { + return "dnsmessage." + n + } + return printUint16(uint16(r)) +} + +func printPaddedUint8(i uint8) string { + b := byte(i) + return string([]byte{ + b/100 + '0', + b/10%10 + '0', + b%10 + '0', + }) +} + +func printUint8Bytes(buf []byte, i uint8) []byte { + b := byte(i) + if i >= 100 { + buf = append(buf, b/100+'0') + } + if i >= 10 { + buf = append(buf, b/10%10+'0') + } + return append(buf, b%10+'0') +} + +func printByteSlice(b []byte) string { + if len(b) == 0 { + return "" + } + buf := make([]byte, 0, 5*len(b)) + buf = printUint8Bytes(buf, uint8(b[0])) + for _, n := range b[1:] { + buf = append(buf, ',', ' ') + buf = printUint8Bytes(buf, uint8(n)) + } + return string(buf) +} + +const hexDigits = "0123456789abcdef" + +func printString(str []byte) string { + buf := make([]byte, 0, len(str)) + for i := 0; i < len(str); i++ { + c := str[i] + if c == '.' || c == '-' || c == ' ' || + 'A' <= c && c <= 'Z' || + 'a' <= c && c <= 'z' || + '0' <= c && c <= '9' { + buf = append(buf, c) + continue + } + + upper := c >> 4 + lower := (c << 4) >> 4 + buf = append( + buf, + '\\', + 'x', + hexDigits[upper], + hexDigits[lower], + ) + } + return string(buf) +} + +func printUint16(i uint16) string { + return printUint32(uint32(i)) +} + +func printUint32(i uint32) string { + // Max value is 4294967295. + buf := make([]byte, 10) + for b, d := buf, uint32(1000000000); d > 0; d /= 10 { + b[0] = byte(i/d%10 + '0') + if b[0] == '0' && len(b) == len(buf) && len(buf) > 1 { + buf = buf[1:] + } + b = b[1:] + i %= d + } + return string(buf) +} + +func printBool(b bool) string { + if b { + return "true" + } + return "false" +} + +var ( + // ErrNotStarted indicates that the prerequisite information isn't + // available yet because the previous records haven't been appropriately + // parsed, skipped or finished. + ErrNotStarted = errors.New("parsing/packing of this type isn't available yet") + + // ErrSectionDone indicated that all records in the section have been + // parsed or finished. + ErrSectionDone = errors.New("parsing/packing of this section has completed") + + errBaseLen = errors.New("insufficient data for base length type") + errCalcLen = errors.New("insufficient data for calculated length type") + errReserved = errors.New("segment prefix is reserved") + errTooManyPtr = errors.New("too many pointers (>10)") + errInvalidPtr = errors.New("invalid pointer") + errNilResouceBody = errors.New("nil resource body") + errResourceLen = errors.New("insufficient data for resource body length") + errSegTooLong = errors.New("segment length too long") + errZeroSegLen = errors.New("zero length segment") + errResTooLong = errors.New("resource length too long") + errTooManyQuestions = errors.New("too many Questions to pack (>65535)") + errTooManyAnswers = errors.New("too many Answers to pack (>65535)") + errTooManyAuthorities = errors.New("too many Authorities to pack (>65535)") + errTooManyAdditionals = errors.New("too many Additionals to pack (>65535)") + errNonCanonicalName = errors.New("name is not in canonical format (it must end with a .)") + errStringTooLong = errors.New("character string exceeds maximum length (255)") + errCompressedSRV = errors.New("compressed name in SRV resource data") +) + +// Internal constants. +const ( + // packStartingCap is the default initial buffer size allocated during + // packing. + // + // The starting capacity doesn't matter too much, but most DNS responses + // Will be <= 512 bytes as it is the limit for DNS over UDP. + packStartingCap = 512 + + // uint16Len is the length (in bytes) of a uint16. + uint16Len = 2 + + // uint32Len is the length (in bytes) of a uint32. + uint32Len = 4 + + // headerLen is the length (in bytes) of a DNS header. + // + // A header is comprised of 6 uint16s and no padding. + headerLen = 6 * uint16Len +) + +type nestedError struct { + // s is the current level's error message. + s string + + // err is the nested error. + err error +} + +// nestedError implements error.Error. +func (e *nestedError) Error() string { + return e.s + ": " + e.err.Error() +} + +// Header is a representation of a DNS message header. +type Header struct { + ID uint16 + Response bool + OpCode OpCode + Authoritative bool + Truncated bool + RecursionDesired bool + RecursionAvailable bool + RCode RCode +} + +func (m *Header) pack() (id uint16, bits uint16) { + id = m.ID + bits = uint16(m.OpCode)<<11 | uint16(m.RCode) + if m.RecursionAvailable { + bits |= headerBitRA + } + if m.RecursionDesired { + bits |= headerBitRD + } + if m.Truncated { + bits |= headerBitTC + } + if m.Authoritative { + bits |= headerBitAA + } + if m.Response { + bits |= headerBitQR + } + return +} + +// GoString implements fmt.GoStringer.GoString. +func (m *Header) GoString() string { + return "dnsmessage.Header{" + + "ID: " + printUint16(m.ID) + ", " + + "Response: " + printBool(m.Response) + ", " + + "OpCode: " + m.OpCode.GoString() + ", " + + "Authoritative: " + printBool(m.Authoritative) + ", " + + "Truncated: " + printBool(m.Truncated) + ", " + + "RecursionDesired: " + printBool(m.RecursionDesired) + ", " + + "RecursionAvailable: " + printBool(m.RecursionAvailable) + ", " + + "RCode: " + m.RCode.GoString() + "}" +} + +// Message is a representation of a DNS message. +type Message struct { + Header + Questions []Question + Answers []Resource + Authorities []Resource + Additionals []Resource +} + +type section uint8 + +const ( + sectionNotStarted section = iota + sectionHeader + sectionQuestions + sectionAnswers + sectionAuthorities + sectionAdditionals + sectionDone + + headerBitQR = 1 << 15 // query/response (response=1) + headerBitAA = 1 << 10 // authoritative + headerBitTC = 1 << 9 // truncated + headerBitRD = 1 << 8 // recursion desired + headerBitRA = 1 << 7 // recursion available +) + +var sectionNames = map[section]string{ + sectionHeader: "header", + sectionQuestions: "Question", + sectionAnswers: "Answer", + sectionAuthorities: "Authority", + sectionAdditionals: "Additional", +} + +// header is the wire format for a DNS message header. +type header struct { + id uint16 + bits uint16 + questions uint16 + answers uint16 + authorities uint16 + additionals uint16 +} + +func (h *header) count(sec section) uint16 { + switch sec { + case sectionQuestions: + return h.questions + case sectionAnswers: + return h.answers + case sectionAuthorities: + return h.authorities + case sectionAdditionals: + return h.additionals + } + return 0 +} + +// pack appends the wire format of the header to msg. +func (h *header) pack(msg []byte) []byte { + msg = packUint16(msg, h.id) + msg = packUint16(msg, h.bits) + msg = packUint16(msg, h.questions) + msg = packUint16(msg, h.answers) + msg = packUint16(msg, h.authorities) + return packUint16(msg, h.additionals) +} + +func (h *header) unpack(msg []byte, off int) (int, error) { + newOff := off + var err error + if h.id, newOff, err = unpackUint16(msg, newOff); err != nil { + return off, &nestedError{"id", err} + } + if h.bits, newOff, err = unpackUint16(msg, newOff); err != nil { + return off, &nestedError{"bits", err} + } + if h.questions, newOff, err = unpackUint16(msg, newOff); err != nil { + return off, &nestedError{"questions", err} + } + if h.answers, newOff, err = unpackUint16(msg, newOff); err != nil { + return off, &nestedError{"answers", err} + } + if h.authorities, newOff, err = unpackUint16(msg, newOff); err != nil { + return off, &nestedError{"authorities", err} + } + if h.additionals, newOff, err = unpackUint16(msg, newOff); err != nil { + return off, &nestedError{"additionals", err} + } + return newOff, nil +} + +func (h *header) header() Header { + return Header{ + ID: h.id, + Response: (h.bits & headerBitQR) != 0, + OpCode: OpCode(h.bits>>11) & 0xF, + Authoritative: (h.bits & headerBitAA) != 0, + Truncated: (h.bits & headerBitTC) != 0, + RecursionDesired: (h.bits & headerBitRD) != 0, + RecursionAvailable: (h.bits & headerBitRA) != 0, + RCode: RCode(h.bits & 0xF), + } +} + +// A Resource is a DNS resource record. +type Resource struct { + Header ResourceHeader + Body ResourceBody +} + +func (r *Resource) GoString() string { + return "dnsmessage.Resource{" + + "Header: " + r.Header.GoString() + + ", Body: &" + r.Body.GoString() + + "}" +} + +// A ResourceBody is a DNS resource record minus the header. +type ResourceBody interface { + // pack packs a Resource except for its header. + pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) + + // realType returns the actual type of the Resource. This is used to + // fill in the header Type field. + realType() Type + + // GoString implements fmt.GoStringer.GoString. + GoString() string +} + +// pack appends the wire format of the Resource to msg. +func (r *Resource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + if r.Body == nil { + return msg, errNilResouceBody + } + oldMsg := msg + r.Header.Type = r.Body.realType() + msg, lenOff, err := r.Header.pack(msg, compression, compressionOff) + if err != nil { + return msg, &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + msg, err = r.Body.pack(msg, compression, compressionOff) + if err != nil { + return msg, &nestedError{"content", err} + } + if err := r.Header.fixLen(msg, lenOff, preLen); err != nil { + return oldMsg, err + } + return msg, nil +} + +// A Parser allows incrementally parsing a DNS message. +// +// When parsing is started, the Header is parsed. Next, each Question can be +// either parsed or skipped. Alternatively, all Questions can be skipped at +// once. When all Questions have been parsed, attempting to parse Questions +// will return (nil, nil) and attempting to skip Questions will return +// (true, nil). After all Questions have been either parsed or skipped, all +// Answers, Authorities and Additionals can be either parsed or skipped in the +// same way, and each type of Resource must be fully parsed or skipped before +// proceeding to the next type of Resource. +// +// Note that there is no requirement to fully skip or parse the message. +type Parser struct { + msg []byte + header header + + section section + off int + index int + resHeaderValid bool + resHeader ResourceHeader +} + +// Start parses the header and enables the parsing of Questions. +func (p *Parser) Start(msg []byte) (Header, error) { + if p.msg != nil { + *p = Parser{} + } + p.msg = msg + var err error + if p.off, err = p.header.unpack(msg, 0); err != nil { + return Header{}, &nestedError{"unpacking header", err} + } + p.section = sectionQuestions + return p.header.header(), nil +} + +func (p *Parser) checkAdvance(sec section) error { + if p.section < sec { + return ErrNotStarted + } + if p.section > sec { + return ErrSectionDone + } + p.resHeaderValid = false + if p.index == int(p.header.count(sec)) { + p.index = 0 + p.section++ + return ErrSectionDone + } + return nil +} + +func (p *Parser) resource(sec section) (Resource, error) { + var r Resource + var err error + r.Header, err = p.resourceHeader(sec) + if err != nil { + return r, err + } + p.resHeaderValid = false + r.Body, p.off, err = unpackResourceBody(p.msg, p.off, r.Header) + if err != nil { + return Resource{}, &nestedError{"unpacking " + sectionNames[sec], err} + } + p.index++ + return r, nil +} + +func (p *Parser) resourceHeader(sec section) (ResourceHeader, error) { + if p.resHeaderValid { + return p.resHeader, nil + } + if err := p.checkAdvance(sec); err != nil { + return ResourceHeader{}, err + } + var hdr ResourceHeader + off, err := hdr.unpack(p.msg, p.off) + if err != nil { + return ResourceHeader{}, err + } + p.resHeaderValid = true + p.resHeader = hdr + p.off = off + return hdr, nil +} + +func (p *Parser) skipResource(sec section) error { + if p.resHeaderValid { + newOff := p.off + int(p.resHeader.Length) + if newOff > len(p.msg) { + return errResourceLen + } + p.off = newOff + p.resHeaderValid = false + p.index++ + return nil + } + if err := p.checkAdvance(sec); err != nil { + return err + } + var err error + p.off, err = skipResource(p.msg, p.off) + if err != nil { + return &nestedError{"skipping: " + sectionNames[sec], err} + } + p.index++ + return nil +} + +// Question parses a single Question. +func (p *Parser) Question() (Question, error) { + if err := p.checkAdvance(sectionQuestions); err != nil { + return Question{}, err + } + var name Name + off, err := name.unpack(p.msg, p.off) + if err != nil { + return Question{}, &nestedError{"unpacking Question.Name", err} + } + typ, off, err := unpackType(p.msg, off) + if err != nil { + return Question{}, &nestedError{"unpacking Question.Type", err} + } + class, off, err := unpackClass(p.msg, off) + if err != nil { + return Question{}, &nestedError{"unpacking Question.Class", err} + } + p.off = off + p.index++ + return Question{name, typ, class}, nil +} + +// AllQuestions parses all Questions. +func (p *Parser) AllQuestions() ([]Question, error) { + // Multiple questions are valid according to the spec, + // but servers don't actually support them. There will + // be at most one question here. + // + // Do not pre-allocate based on info in p.header, since + // the data is untrusted. + qs := []Question{} + for { + q, err := p.Question() + if err == ErrSectionDone { + return qs, nil + } + if err != nil { + return nil, err + } + qs = append(qs, q) + } +} + +// SkipQuestion skips a single Question. +func (p *Parser) SkipQuestion() error { + if err := p.checkAdvance(sectionQuestions); err != nil { + return err + } + off, err := skipName(p.msg, p.off) + if err != nil { + return &nestedError{"skipping Question Name", err} + } + if off, err = skipType(p.msg, off); err != nil { + return &nestedError{"skipping Question Type", err} + } + if off, err = skipClass(p.msg, off); err != nil { + return &nestedError{"skipping Question Class", err} + } + p.off = off + p.index++ + return nil +} + +// SkipAllQuestions skips all Questions. +func (p *Parser) SkipAllQuestions() error { + for { + if err := p.SkipQuestion(); err == ErrSectionDone { + return nil + } else if err != nil { + return err + } + } +} + +// AnswerHeader parses a single Answer ResourceHeader. +func (p *Parser) AnswerHeader() (ResourceHeader, error) { + return p.resourceHeader(sectionAnswers) +} + +// Answer parses a single Answer Resource. +func (p *Parser) Answer() (Resource, error) { + return p.resource(sectionAnswers) +} + +// AllAnswers parses all Answer Resources. +func (p *Parser) AllAnswers() ([]Resource, error) { + // The most common query is for A/AAAA, which usually returns + // a handful of IPs. + // + // Pre-allocate up to a certain limit, since p.header is + // untrusted data. + n := int(p.header.answers) + if n > 20 { + n = 20 + } + as := make([]Resource, 0, n) + for { + a, err := p.Answer() + if err == ErrSectionDone { + return as, nil + } + if err != nil { + return nil, err + } + as = append(as, a) + } +} + +// SkipAnswer skips a single Answer Resource. +func (p *Parser) SkipAnswer() error { + return p.skipResource(sectionAnswers) +} + +// SkipAllAnswers skips all Answer Resources. +func (p *Parser) SkipAllAnswers() error { + for { + if err := p.SkipAnswer(); err == ErrSectionDone { + return nil + } else if err != nil { + return err + } + } +} + +// AuthorityHeader parses a single Authority ResourceHeader. +func (p *Parser) AuthorityHeader() (ResourceHeader, error) { + return p.resourceHeader(sectionAuthorities) +} + +// Authority parses a single Authority Resource. +func (p *Parser) Authority() (Resource, error) { + return p.resource(sectionAuthorities) +} + +// AllAuthorities parses all Authority Resources. +func (p *Parser) AllAuthorities() ([]Resource, error) { + // Authorities contains SOA in case of NXDOMAIN and friends, + // otherwise it is empty. + // + // Pre-allocate up to a certain limit, since p.header is + // untrusted data. + n := int(p.header.authorities) + if n > 10 { + n = 10 + } + as := make([]Resource, 0, n) + for { + a, err := p.Authority() + if err == ErrSectionDone { + return as, nil + } + if err != nil { + return nil, err + } + as = append(as, a) + } +} + +// SkipAuthority skips a single Authority Resource. +func (p *Parser) SkipAuthority() error { + return p.skipResource(sectionAuthorities) +} + +// SkipAllAuthorities skips all Authority Resources. +func (p *Parser) SkipAllAuthorities() error { + for { + if err := p.SkipAuthority(); err == ErrSectionDone { + return nil + } else if err != nil { + return err + } + } +} + +// AdditionalHeader parses a single Additional ResourceHeader. +func (p *Parser) AdditionalHeader() (ResourceHeader, error) { + return p.resourceHeader(sectionAdditionals) +} + +// Additional parses a single Additional Resource. +func (p *Parser) Additional() (Resource, error) { + return p.resource(sectionAdditionals) +} + +// AllAdditionals parses all Additional Resources. +func (p *Parser) AllAdditionals() ([]Resource, error) { + // Additionals usually contain OPT, and sometimes A/AAAA + // glue records. + // + // Pre-allocate up to a certain limit, since p.header is + // untrusted data. + n := int(p.header.additionals) + if n > 10 { + n = 10 + } + as := make([]Resource, 0, n) + for { + a, err := p.Additional() + if err == ErrSectionDone { + return as, nil + } + if err != nil { + return nil, err + } + as = append(as, a) + } +} + +// SkipAdditional skips a single Additional Resource. +func (p *Parser) SkipAdditional() error { + return p.skipResource(sectionAdditionals) +} + +// SkipAllAdditionals skips all Additional Resources. +func (p *Parser) SkipAllAdditionals() error { + for { + if err := p.SkipAdditional(); err == ErrSectionDone { + return nil + } else if err != nil { + return err + } + } +} + +// CNAMEResource parses a single CNAMEResource. +// +// One of the XXXHeader methods must have been called before calling this +// method. +func (p *Parser) CNAMEResource() (CNAMEResource, error) { + if !p.resHeaderValid || p.resHeader.Type != TypeCNAME { + return CNAMEResource{}, ErrNotStarted + } + r, err := unpackCNAMEResource(p.msg, p.off) + if err != nil { + return CNAMEResource{}, err + } + p.off += int(p.resHeader.Length) + p.resHeaderValid = false + p.index++ + return r, nil +} + +// MXResource parses a single MXResource. +// +// One of the XXXHeader methods must have been called before calling this +// method. +func (p *Parser) MXResource() (MXResource, error) { + if !p.resHeaderValid || p.resHeader.Type != TypeMX { + return MXResource{}, ErrNotStarted + } + r, err := unpackMXResource(p.msg, p.off) + if err != nil { + return MXResource{}, err + } + p.off += int(p.resHeader.Length) + p.resHeaderValid = false + p.index++ + return r, nil +} + +// NSResource parses a single NSResource. +// +// One of the XXXHeader methods must have been called before calling this +// method. +func (p *Parser) NSResource() (NSResource, error) { + if !p.resHeaderValid || p.resHeader.Type != TypeNS { + return NSResource{}, ErrNotStarted + } + r, err := unpackNSResource(p.msg, p.off) + if err != nil { + return NSResource{}, err + } + p.off += int(p.resHeader.Length) + p.resHeaderValid = false + p.index++ + return r, nil +} + +// PTRResource parses a single PTRResource. +// +// One of the XXXHeader methods must have been called before calling this +// method. +func (p *Parser) PTRResource() (PTRResource, error) { + if !p.resHeaderValid || p.resHeader.Type != TypePTR { + return PTRResource{}, ErrNotStarted + } + r, err := unpackPTRResource(p.msg, p.off) + if err != nil { + return PTRResource{}, err + } + p.off += int(p.resHeader.Length) + p.resHeaderValid = false + p.index++ + return r, nil +} + +// SOAResource parses a single SOAResource. +// +// One of the XXXHeader methods must have been called before calling this +// method. +func (p *Parser) SOAResource() (SOAResource, error) { + if !p.resHeaderValid || p.resHeader.Type != TypeSOA { + return SOAResource{}, ErrNotStarted + } + r, err := unpackSOAResource(p.msg, p.off) + if err != nil { + return SOAResource{}, err + } + p.off += int(p.resHeader.Length) + p.resHeaderValid = false + p.index++ + return r, nil +} + +// TXTResource parses a single TXTResource. +// +// One of the XXXHeader methods must have been called before calling this +// method. +func (p *Parser) TXTResource() (TXTResource, error) { + if !p.resHeaderValid || p.resHeader.Type != TypeTXT { + return TXTResource{}, ErrNotStarted + } + r, err := unpackTXTResource(p.msg, p.off, p.resHeader.Length) + if err != nil { + return TXTResource{}, err + } + p.off += int(p.resHeader.Length) + p.resHeaderValid = false + p.index++ + return r, nil +} + +// SRVResource parses a single SRVResource. +// +// One of the XXXHeader methods must have been called before calling this +// method. +func (p *Parser) SRVResource() (SRVResource, error) { + if !p.resHeaderValid || p.resHeader.Type != TypeSRV { + return SRVResource{}, ErrNotStarted + } + r, err := unpackSRVResource(p.msg, p.off) + if err != nil { + return SRVResource{}, err + } + p.off += int(p.resHeader.Length) + p.resHeaderValid = false + p.index++ + return r, nil +} + +// AResource parses a single AResource. +// +// One of the XXXHeader methods must have been called before calling this +// method. +func (p *Parser) AResource() (AResource, error) { + if !p.resHeaderValid || p.resHeader.Type != TypeA { + return AResource{}, ErrNotStarted + } + r, err := unpackAResource(p.msg, p.off) + if err != nil { + return AResource{}, err + } + p.off += int(p.resHeader.Length) + p.resHeaderValid = false + p.index++ + return r, nil +} + +// AAAAResource parses a single AAAAResource. +// +// One of the XXXHeader methods must have been called before calling this +// method. +func (p *Parser) AAAAResource() (AAAAResource, error) { + if !p.resHeaderValid || p.resHeader.Type != TypeAAAA { + return AAAAResource{}, ErrNotStarted + } + r, err := unpackAAAAResource(p.msg, p.off) + if err != nil { + return AAAAResource{}, err + } + p.off += int(p.resHeader.Length) + p.resHeaderValid = false + p.index++ + return r, nil +} + +// OPTResource parses a single OPTResource. +// +// One of the XXXHeader methods must have been called before calling this +// method. +func (p *Parser) OPTResource() (OPTResource, error) { + if !p.resHeaderValid || p.resHeader.Type != TypeOPT { + return OPTResource{}, ErrNotStarted + } + r, err := unpackOPTResource(p.msg, p.off, p.resHeader.Length) + if err != nil { + return OPTResource{}, err + } + p.off += int(p.resHeader.Length) + p.resHeaderValid = false + p.index++ + return r, nil +} + +// UnknownResource parses a single UnknownResource. +// +// One of the XXXHeader methods must have been called before calling this +// method. +func (p *Parser) UnknownResource() (UnknownResource, error) { + if !p.resHeaderValid { + return UnknownResource{}, ErrNotStarted + } + r, err := unpackUnknownResource(p.resHeader.Type, p.msg, p.off, p.resHeader.Length) + if err != nil { + return UnknownResource{}, err + } + p.off += int(p.resHeader.Length) + p.resHeaderValid = false + p.index++ + return r, nil +} + +// Unpack parses a full Message. +func (m *Message) Unpack(msg []byte) error { + var p Parser + var err error + if m.Header, err = p.Start(msg); err != nil { + return err + } + if m.Questions, err = p.AllQuestions(); err != nil { + return err + } + if m.Answers, err = p.AllAnswers(); err != nil { + return err + } + if m.Authorities, err = p.AllAuthorities(); err != nil { + return err + } + if m.Additionals, err = p.AllAdditionals(); err != nil { + return err + } + return nil +} + +// Pack packs a full Message. +func (m *Message) Pack() ([]byte, error) { + return m.AppendPack(make([]byte, 0, packStartingCap)) +} + +// AppendPack is like Pack but appends the full Message to b and returns the +// extended buffer. +func (m *Message) AppendPack(b []byte) ([]byte, error) { + // Validate the lengths. It is very unlikely that anyone will try to + // pack more than 65535 of any particular type, but it is possible and + // we should fail gracefully. + if len(m.Questions) > int(^uint16(0)) { + return nil, errTooManyQuestions + } + if len(m.Answers) > int(^uint16(0)) { + return nil, errTooManyAnswers + } + if len(m.Authorities) > int(^uint16(0)) { + return nil, errTooManyAuthorities + } + if len(m.Additionals) > int(^uint16(0)) { + return nil, errTooManyAdditionals + } + + var h header + h.id, h.bits = m.Header.pack() + + h.questions = uint16(len(m.Questions)) + h.answers = uint16(len(m.Answers)) + h.authorities = uint16(len(m.Authorities)) + h.additionals = uint16(len(m.Additionals)) + + compressionOff := len(b) + msg := h.pack(b) + + // RFC 1035 allows (but does not require) compression for packing. RFC + // 1035 requires unpacking implementations to support compression, so + // unconditionally enabling it is fine. + // + // DNS lookups are typically done over UDP, and RFC 1035 states that UDP + // DNS messages can be a maximum of 512 bytes long. Without compression, + // many DNS response messages are over this limit, so enabling + // compression will help ensure compliance. + compression := map[string]int{} + + for i := range m.Questions { + var err error + if msg, err = m.Questions[i].pack(msg, compression, compressionOff); err != nil { + return nil, &nestedError{"packing Question", err} + } + } + for i := range m.Answers { + var err error + if msg, err = m.Answers[i].pack(msg, compression, compressionOff); err != nil { + return nil, &nestedError{"packing Answer", err} + } + } + for i := range m.Authorities { + var err error + if msg, err = m.Authorities[i].pack(msg, compression, compressionOff); err != nil { + return nil, &nestedError{"packing Authority", err} + } + } + for i := range m.Additionals { + var err error + if msg, err = m.Additionals[i].pack(msg, compression, compressionOff); err != nil { + return nil, &nestedError{"packing Additional", err} + } + } + + return msg, nil +} + +// GoString implements fmt.GoStringer.GoString. +func (m *Message) GoString() string { + s := "dnsmessage.Message{Header: " + m.Header.GoString() + ", " + + "Questions: []dnsmessage.Question{" + if len(m.Questions) > 0 { + s += m.Questions[0].GoString() + for _, q := range m.Questions[1:] { + s += ", " + q.GoString() + } + } + s += "}, Answers: []dnsmessage.Resource{" + if len(m.Answers) > 0 { + s += m.Answers[0].GoString() + for _, a := range m.Answers[1:] { + s += ", " + a.GoString() + } + } + s += "}, Authorities: []dnsmessage.Resource{" + if len(m.Authorities) > 0 { + s += m.Authorities[0].GoString() + for _, a := range m.Authorities[1:] { + s += ", " + a.GoString() + } + } + s += "}, Additionals: []dnsmessage.Resource{" + if len(m.Additionals) > 0 { + s += m.Additionals[0].GoString() + for _, a := range m.Additionals[1:] { + s += ", " + a.GoString() + } + } + return s + "}}" +} + +// A Builder allows incrementally packing a DNS message. +// +// Example usage: +// buf := make([]byte, 2, 514) +// b := NewBuilder(buf, Header{...}) +// b.EnableCompression() +// // Optionally start a section and add things to that section. +// // Repeat adding sections as necessary. +// buf, err := b.Finish() +// // If err is nil, buf[2:] will contain the built bytes. +type Builder struct { + // msg is the storage for the message being built. + msg []byte + + // section keeps track of the current section being built. + section section + + // header keeps track of what should go in the header when Finish is + // called. + header header + + // start is the starting index of the bytes allocated in msg for header. + start int + + // compression is a mapping from name suffixes to their starting index + // in msg. + compression map[string]int +} + +// NewBuilder creates a new builder with compression disabled. +// +// Note: Most users will want to immediately enable compression with the +// EnableCompression method. See that method's comment for why you may or may +// not want to enable compression. +// +// The DNS message is appended to the provided initial buffer buf (which may be +// nil) as it is built. The final message is returned by the (*Builder).Finish +// method, which may return the same underlying array if there was sufficient +// capacity in the slice. +func NewBuilder(buf []byte, h Header) Builder { + if buf == nil { + buf = make([]byte, 0, packStartingCap) + } + b := Builder{msg: buf, start: len(buf)} + b.header.id, b.header.bits = h.pack() + var hb [headerLen]byte + b.msg = append(b.msg, hb[:]...) + b.section = sectionHeader + return b +} + +// EnableCompression enables compression in the Builder. +// +// Leaving compression disabled avoids compression related allocations, but can +// result in larger message sizes. Be careful with this mode as it can cause +// messages to exceed the UDP size limit. +// +// According to RFC 1035, section 4.1.4, the use of compression is optional, but +// all implementations must accept both compressed and uncompressed DNS +// messages. +// +// Compression should be enabled before any sections are added for best results. +func (b *Builder) EnableCompression() { + b.compression = map[string]int{} +} + +func (b *Builder) startCheck(s section) error { + if b.section <= sectionNotStarted { + return ErrNotStarted + } + if b.section > s { + return ErrSectionDone + } + return nil +} + +// StartQuestions prepares the builder for packing Questions. +func (b *Builder) StartQuestions() error { + if err := b.startCheck(sectionQuestions); err != nil { + return err + } + b.section = sectionQuestions + return nil +} + +// StartAnswers prepares the builder for packing Answers. +func (b *Builder) StartAnswers() error { + if err := b.startCheck(sectionAnswers); err != nil { + return err + } + b.section = sectionAnswers + return nil +} + +// StartAuthorities prepares the builder for packing Authorities. +func (b *Builder) StartAuthorities() error { + if err := b.startCheck(sectionAuthorities); err != nil { + return err + } + b.section = sectionAuthorities + return nil +} + +// StartAdditionals prepares the builder for packing Additionals. +func (b *Builder) StartAdditionals() error { + if err := b.startCheck(sectionAdditionals); err != nil { + return err + } + b.section = sectionAdditionals + return nil +} + +func (b *Builder) incrementSectionCount() error { + var count *uint16 + var err error + switch b.section { + case sectionQuestions: + count = &b.header.questions + err = errTooManyQuestions + case sectionAnswers: + count = &b.header.answers + err = errTooManyAnswers + case sectionAuthorities: + count = &b.header.authorities + err = errTooManyAuthorities + case sectionAdditionals: + count = &b.header.additionals + err = errTooManyAdditionals + } + if *count == ^uint16(0) { + return err + } + *count++ + return nil +} + +// Question adds a single Question. +func (b *Builder) Question(q Question) error { + if b.section < sectionQuestions { + return ErrNotStarted + } + if b.section > sectionQuestions { + return ErrSectionDone + } + msg, err := q.pack(b.msg, b.compression, b.start) + if err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +func (b *Builder) checkResourceSection() error { + if b.section < sectionAnswers { + return ErrNotStarted + } + if b.section > sectionAdditionals { + return ErrSectionDone + } + return nil +} + +// CNAMEResource adds a single CNAMEResource. +func (b *Builder) CNAMEResource(h ResourceHeader, r CNAMEResource) error { + if err := b.checkResourceSection(); err != nil { + return err + } + h.Type = r.realType() + msg, lenOff, err := h.pack(b.msg, b.compression, b.start) + if err != nil { + return &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + if msg, err = r.pack(msg, b.compression, b.start); err != nil { + return &nestedError{"CNAMEResource body", err} + } + if err := h.fixLen(msg, lenOff, preLen); err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +// MXResource adds a single MXResource. +func (b *Builder) MXResource(h ResourceHeader, r MXResource) error { + if err := b.checkResourceSection(); err != nil { + return err + } + h.Type = r.realType() + msg, lenOff, err := h.pack(b.msg, b.compression, b.start) + if err != nil { + return &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + if msg, err = r.pack(msg, b.compression, b.start); err != nil { + return &nestedError{"MXResource body", err} + } + if err := h.fixLen(msg, lenOff, preLen); err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +// NSResource adds a single NSResource. +func (b *Builder) NSResource(h ResourceHeader, r NSResource) error { + if err := b.checkResourceSection(); err != nil { + return err + } + h.Type = r.realType() + msg, lenOff, err := h.pack(b.msg, b.compression, b.start) + if err != nil { + return &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + if msg, err = r.pack(msg, b.compression, b.start); err != nil { + return &nestedError{"NSResource body", err} + } + if err := h.fixLen(msg, lenOff, preLen); err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +// PTRResource adds a single PTRResource. +func (b *Builder) PTRResource(h ResourceHeader, r PTRResource) error { + if err := b.checkResourceSection(); err != nil { + return err + } + h.Type = r.realType() + msg, lenOff, err := h.pack(b.msg, b.compression, b.start) + if err != nil { + return &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + if msg, err = r.pack(msg, b.compression, b.start); err != nil { + return &nestedError{"PTRResource body", err} + } + if err := h.fixLen(msg, lenOff, preLen); err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +// SOAResource adds a single SOAResource. +func (b *Builder) SOAResource(h ResourceHeader, r SOAResource) error { + if err := b.checkResourceSection(); err != nil { + return err + } + h.Type = r.realType() + msg, lenOff, err := h.pack(b.msg, b.compression, b.start) + if err != nil { + return &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + if msg, err = r.pack(msg, b.compression, b.start); err != nil { + return &nestedError{"SOAResource body", err} + } + if err := h.fixLen(msg, lenOff, preLen); err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +// TXTResource adds a single TXTResource. +func (b *Builder) TXTResource(h ResourceHeader, r TXTResource) error { + if err := b.checkResourceSection(); err != nil { + return err + } + h.Type = r.realType() + msg, lenOff, err := h.pack(b.msg, b.compression, b.start) + if err != nil { + return &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + if msg, err = r.pack(msg, b.compression, b.start); err != nil { + return &nestedError{"TXTResource body", err} + } + if err := h.fixLen(msg, lenOff, preLen); err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +// SRVResource adds a single SRVResource. +func (b *Builder) SRVResource(h ResourceHeader, r SRVResource) error { + if err := b.checkResourceSection(); err != nil { + return err + } + h.Type = r.realType() + msg, lenOff, err := h.pack(b.msg, b.compression, b.start) + if err != nil { + return &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + if msg, err = r.pack(msg, b.compression, b.start); err != nil { + return &nestedError{"SRVResource body", err} + } + if err := h.fixLen(msg, lenOff, preLen); err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +// AResource adds a single AResource. +func (b *Builder) AResource(h ResourceHeader, r AResource) error { + if err := b.checkResourceSection(); err != nil { + return err + } + h.Type = r.realType() + msg, lenOff, err := h.pack(b.msg, b.compression, b.start) + if err != nil { + return &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + if msg, err = r.pack(msg, b.compression, b.start); err != nil { + return &nestedError{"AResource body", err} + } + if err := h.fixLen(msg, lenOff, preLen); err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +// AAAAResource adds a single AAAAResource. +func (b *Builder) AAAAResource(h ResourceHeader, r AAAAResource) error { + if err := b.checkResourceSection(); err != nil { + return err + } + h.Type = r.realType() + msg, lenOff, err := h.pack(b.msg, b.compression, b.start) + if err != nil { + return &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + if msg, err = r.pack(msg, b.compression, b.start); err != nil { + return &nestedError{"AAAAResource body", err} + } + if err := h.fixLen(msg, lenOff, preLen); err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +// OPTResource adds a single OPTResource. +func (b *Builder) OPTResource(h ResourceHeader, r OPTResource) error { + if err := b.checkResourceSection(); err != nil { + return err + } + h.Type = r.realType() + msg, lenOff, err := h.pack(b.msg, b.compression, b.start) + if err != nil { + return &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + if msg, err = r.pack(msg, b.compression, b.start); err != nil { + return &nestedError{"OPTResource body", err} + } + if err := h.fixLen(msg, lenOff, preLen); err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +// UnknownResource adds a single UnknownResource. +func (b *Builder) UnknownResource(h ResourceHeader, r UnknownResource) error { + if err := b.checkResourceSection(); err != nil { + return err + } + h.Type = r.realType() + msg, lenOff, err := h.pack(b.msg, b.compression, b.start) + if err != nil { + return &nestedError{"ResourceHeader", err} + } + preLen := len(msg) + if msg, err = r.pack(msg, b.compression, b.start); err != nil { + return &nestedError{"UnknownResource body", err} + } + if err := h.fixLen(msg, lenOff, preLen); err != nil { + return err + } + if err := b.incrementSectionCount(); err != nil { + return err + } + b.msg = msg + return nil +} + +// Finish ends message building and generates a binary message. +func (b *Builder) Finish() ([]byte, error) { + if b.section < sectionHeader { + return nil, ErrNotStarted + } + b.section = sectionDone + // Space for the header was allocated in NewBuilder. + b.header.pack(b.msg[b.start:b.start]) + return b.msg, nil +} + +// A ResourceHeader is the header of a DNS resource record. There are +// many types of DNS resource records, but they all share the same header. +type ResourceHeader struct { + // Name is the domain name for which this resource record pertains. + Name Name + + // Type is the type of DNS resource record. + // + // This field will be set automatically during packing. + Type Type + + // Class is the class of network to which this DNS resource record + // pertains. + Class Class + + // TTL is the length of time (measured in seconds) which this resource + // record is valid for (time to live). All Resources in a set should + // have the same TTL (RFC 2181 Section 5.2). + TTL uint32 + + // Length is the length of data in the resource record after the header. + // + // This field will be set automatically during packing. + Length uint16 +} + +// GoString implements fmt.GoStringer.GoString. +func (h *ResourceHeader) GoString() string { + return "dnsmessage.ResourceHeader{" + + "Name: " + h.Name.GoString() + ", " + + "Type: " + h.Type.GoString() + ", " + + "Class: " + h.Class.GoString() + ", " + + "TTL: " + printUint32(h.TTL) + ", " + + "Length: " + printUint16(h.Length) + "}" +} + +// pack appends the wire format of the ResourceHeader to oldMsg. +// +// lenOff is the offset in msg where the Length field was packed. +func (h *ResourceHeader) pack(oldMsg []byte, compression map[string]int, compressionOff int) (msg []byte, lenOff int, err error) { + msg = oldMsg + if msg, err = h.Name.pack(msg, compression, compressionOff); err != nil { + return oldMsg, 0, &nestedError{"Name", err} + } + msg = packType(msg, h.Type) + msg = packClass(msg, h.Class) + msg = packUint32(msg, h.TTL) + lenOff = len(msg) + msg = packUint16(msg, h.Length) + return msg, lenOff, nil +} + +func (h *ResourceHeader) unpack(msg []byte, off int) (int, error) { + newOff := off + var err error + if newOff, err = h.Name.unpack(msg, newOff); err != nil { + return off, &nestedError{"Name", err} + } + if h.Type, newOff, err = unpackType(msg, newOff); err != nil { + return off, &nestedError{"Type", err} + } + if h.Class, newOff, err = unpackClass(msg, newOff); err != nil { + return off, &nestedError{"Class", err} + } + if h.TTL, newOff, err = unpackUint32(msg, newOff); err != nil { + return off, &nestedError{"TTL", err} + } + if h.Length, newOff, err = unpackUint16(msg, newOff); err != nil { + return off, &nestedError{"Length", err} + } + return newOff, nil +} + +// fixLen updates a packed ResourceHeader to include the length of the +// ResourceBody. +// +// lenOff is the offset of the ResourceHeader.Length field in msg. +// +// preLen is the length that msg was before the ResourceBody was packed. +func (h *ResourceHeader) fixLen(msg []byte, lenOff int, preLen int) error { + conLen := len(msg) - preLen + if conLen > int(^uint16(0)) { + return errResTooLong + } + + // Fill in the length now that we know how long the content is. + packUint16(msg[lenOff:lenOff], uint16(conLen)) + h.Length = uint16(conLen) + + return nil +} + +// EDNS(0) wire constants. +const ( + edns0Version = 0 + + edns0DNSSECOK = 0x00008000 + ednsVersionMask = 0x00ff0000 + edns0DNSSECOKMask = 0x00ff8000 +) + +// SetEDNS0 configures h for EDNS(0). +// +// The provided extRCode must be an extedned RCode. +func (h *ResourceHeader) SetEDNS0(udpPayloadLen int, extRCode RCode, dnssecOK bool) error { + h.Name = Name{Data: [nameLen]byte{'.'}, Length: 1} // RFC 6891 section 6.1.2 + h.Type = TypeOPT + h.Class = Class(udpPayloadLen) + h.TTL = uint32(extRCode) >> 4 << 24 + if dnssecOK { + h.TTL |= edns0DNSSECOK + } + return nil +} + +// DNSSECAllowed reports whether the DNSSEC OK bit is set. +func (h *ResourceHeader) DNSSECAllowed() bool { + return h.TTL&edns0DNSSECOKMask == edns0DNSSECOK // RFC 6891 section 6.1.3 +} + +// ExtendedRCode returns an extended RCode. +// +// The provided rcode must be the RCode in DNS message header. +func (h *ResourceHeader) ExtendedRCode(rcode RCode) RCode { + if h.TTL&ednsVersionMask == edns0Version { // RFC 6891 section 6.1.3 + return RCode(h.TTL>>24<<4) | rcode + } + return rcode +} + +func skipResource(msg []byte, off int) (int, error) { + newOff, err := skipName(msg, off) + if err != nil { + return off, &nestedError{"Name", err} + } + if newOff, err = skipType(msg, newOff); err != nil { + return off, &nestedError{"Type", err} + } + if newOff, err = skipClass(msg, newOff); err != nil { + return off, &nestedError{"Class", err} + } + if newOff, err = skipUint32(msg, newOff); err != nil { + return off, &nestedError{"TTL", err} + } + length, newOff, err := unpackUint16(msg, newOff) + if err != nil { + return off, &nestedError{"Length", err} + } + if newOff += int(length); newOff > len(msg) { + return off, errResourceLen + } + return newOff, nil +} + +// packUint16 appends the wire format of field to msg. +func packUint16(msg []byte, field uint16) []byte { + return append(msg, byte(field>>8), byte(field)) +} + +func unpackUint16(msg []byte, off int) (uint16, int, error) { + if off+uint16Len > len(msg) { + return 0, off, errBaseLen + } + return uint16(msg[off])<<8 | uint16(msg[off+1]), off + uint16Len, nil +} + +func skipUint16(msg []byte, off int) (int, error) { + if off+uint16Len > len(msg) { + return off, errBaseLen + } + return off + uint16Len, nil +} + +// packType appends the wire format of field to msg. +func packType(msg []byte, field Type) []byte { + return packUint16(msg, uint16(field)) +} + +func unpackType(msg []byte, off int) (Type, int, error) { + t, o, err := unpackUint16(msg, off) + return Type(t), o, err +} + +func skipType(msg []byte, off int) (int, error) { + return skipUint16(msg, off) +} + +// packClass appends the wire format of field to msg. +func packClass(msg []byte, field Class) []byte { + return packUint16(msg, uint16(field)) +} + +func unpackClass(msg []byte, off int) (Class, int, error) { + c, o, err := unpackUint16(msg, off) + return Class(c), o, err +} + +func skipClass(msg []byte, off int) (int, error) { + return skipUint16(msg, off) +} + +// packUint32 appends the wire format of field to msg. +func packUint32(msg []byte, field uint32) []byte { + return append( + msg, + byte(field>>24), + byte(field>>16), + byte(field>>8), + byte(field), + ) +} + +func unpackUint32(msg []byte, off int) (uint32, int, error) { + if off+uint32Len > len(msg) { + return 0, off, errBaseLen + } + v := uint32(msg[off])<<24 | uint32(msg[off+1])<<16 | uint32(msg[off+2])<<8 | uint32(msg[off+3]) + return v, off + uint32Len, nil +} + +func skipUint32(msg []byte, off int) (int, error) { + if off+uint32Len > len(msg) { + return off, errBaseLen + } + return off + uint32Len, nil +} + +// packText appends the wire format of field to msg. +func packText(msg []byte, field string) ([]byte, error) { + l := len(field) + if l > 255 { + return nil, errStringTooLong + } + msg = append(msg, byte(l)) + msg = append(msg, field...) + + return msg, nil +} + +func unpackText(msg []byte, off int) (string, int, error) { + if off >= len(msg) { + return "", off, errBaseLen + } + beginOff := off + 1 + endOff := beginOff + int(msg[off]) + if endOff > len(msg) { + return "", off, errCalcLen + } + return string(msg[beginOff:endOff]), endOff, nil +} + +// packBytes appends the wire format of field to msg. +func packBytes(msg []byte, field []byte) []byte { + return append(msg, field...) +} + +func unpackBytes(msg []byte, off int, field []byte) (int, error) { + newOff := off + len(field) + if newOff > len(msg) { + return off, errBaseLen + } + copy(field, msg[off:newOff]) + return newOff, nil +} + +const nameLen = 255 + +// A Name is a non-encoded domain name. It is used instead of strings to avoid +// allocations. +type Name struct { + Data [nameLen]byte + Length uint8 +} + +// NewName creates a new Name from a string. +func NewName(name string) (Name, error) { + if len([]byte(name)) > nameLen { + return Name{}, errCalcLen + } + n := Name{Length: uint8(len(name))} + copy(n.Data[:], []byte(name)) + return n, nil +} + +// MustNewName creates a new Name from a string and panics on error. +func MustNewName(name string) Name { + n, err := NewName(name) + if err != nil { + panic("creating name: " + err.Error()) + } + return n +} + +// String implements fmt.Stringer.String. +func (n Name) String() string { + return string(n.Data[:n.Length]) +} + +// GoString implements fmt.GoStringer.GoString. +func (n *Name) GoString() string { + return `dnsmessage.MustNewName("` + printString(n.Data[:n.Length]) + `")` +} + +// pack appends the wire format of the Name to msg. +// +// Domain names are a sequence of counted strings split at the dots. They end +// with a zero-length string. Compression can be used to reuse domain suffixes. +// +// The compression map will be updated with new domain suffixes. If compression +// is nil, compression will not be used. +func (n *Name) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + oldMsg := msg + + // Add a trailing dot to canonicalize name. + if n.Length == 0 || n.Data[n.Length-1] != '.' { + return oldMsg, errNonCanonicalName + } + + // Allow root domain. + if n.Data[0] == '.' && n.Length == 1 { + return append(msg, 0), nil + } + + // Emit sequence of counted strings, chopping at dots. + for i, begin := 0, 0; i < int(n.Length); i++ { + // Check for the end of the segment. + if n.Data[i] == '.' { + // The two most significant bits have special meaning. + // It isn't allowed for segments to be long enough to + // need them. + if i-begin >= 1<<6 { + return oldMsg, errSegTooLong + } + + // Segments must have a non-zero length. + if i-begin == 0 { + return oldMsg, errZeroSegLen + } + + msg = append(msg, byte(i-begin)) + + for j := begin; j < i; j++ { + msg = append(msg, n.Data[j]) + } + + begin = i + 1 + continue + } + + // We can only compress domain suffixes starting with a new + // segment. A pointer is two bytes with the two most significant + // bits set to 1 to indicate that it is a pointer. + if (i == 0 || n.Data[i-1] == '.') && compression != nil { + if ptr, ok := compression[string(n.Data[i:])]; ok { + // Hit. Emit a pointer instead of the rest of + // the domain. + return append(msg, byte(ptr>>8|0xC0), byte(ptr)), nil + } + + // Miss. Add the suffix to the compression table if the + // offset can be stored in the available 14 bytes. + if len(msg) <= int(^uint16(0)>>2) { + compression[string(n.Data[i:])] = len(msg) - compressionOff + } + } + } + return append(msg, 0), nil +} + +// unpack unpacks a domain name. +func (n *Name) unpack(msg []byte, off int) (int, error) { + return n.unpackCompressed(msg, off, true /* allowCompression */) +} + +func (n *Name) unpackCompressed(msg []byte, off int, allowCompression bool) (int, error) { + // currOff is the current working offset. + currOff := off + + // newOff is the offset where the next record will start. Pointers lead + // to data that belongs to other names and thus doesn't count towards to + // the usage of this name. + newOff := off + + // ptr is the number of pointers followed. + var ptr int + + // Name is a slice representation of the name data. + name := n.Data[:0] + +Loop: + for { + if currOff >= len(msg) { + return off, errBaseLen + } + c := int(msg[currOff]) + currOff++ + switch c & 0xC0 { + case 0x00: // String segment + if c == 0x00 { + // A zero length signals the end of the name. + break Loop + } + endOff := currOff + c + if endOff > len(msg) { + return off, errCalcLen + } + name = append(name, msg[currOff:endOff]...) + name = append(name, '.') + currOff = endOff + case 0xC0: // Pointer + if !allowCompression { + return off, errCompressedSRV + } + if currOff >= len(msg) { + return off, errInvalidPtr + } + c1 := msg[currOff] + currOff++ + if ptr == 0 { + newOff = currOff + } + // Don't follow too many pointers, maybe there's a loop. + if ptr++; ptr > 10 { + return off, errTooManyPtr + } + currOff = (c^0xC0)<<8 | int(c1) + default: + // Prefixes 0x80 and 0x40 are reserved. + return off, errReserved + } + } + if len(name) == 0 { + name = append(name, '.') + } + if len(name) > len(n.Data) { + return off, errCalcLen + } + n.Length = uint8(len(name)) + if ptr == 0 { + newOff = currOff + } + return newOff, nil +} + +func skipName(msg []byte, off int) (int, error) { + // newOff is the offset where the next record will start. Pointers lead + // to data that belongs to other names and thus doesn't count towards to + // the usage of this name. + newOff := off + +Loop: + for { + if newOff >= len(msg) { + return off, errBaseLen + } + c := int(msg[newOff]) + newOff++ + switch c & 0xC0 { + case 0x00: + if c == 0x00 { + // A zero length signals the end of the name. + break Loop + } + // literal string + newOff += c + if newOff > len(msg) { + return off, errCalcLen + } + case 0xC0: + // Pointer to somewhere else in msg. + + // Pointers are two bytes. + newOff++ + + // Don't follow the pointer as the data here has ended. + break Loop + default: + // Prefixes 0x80 and 0x40 are reserved. + return off, errReserved + } + } + + return newOff, nil +} + +// A Question is a DNS query. +type Question struct { + Name Name + Type Type + Class Class +} + +// pack appends the wire format of the Question to msg. +func (q *Question) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + msg, err := q.Name.pack(msg, compression, compressionOff) + if err != nil { + return msg, &nestedError{"Name", err} + } + msg = packType(msg, q.Type) + return packClass(msg, q.Class), nil +} + +// GoString implements fmt.GoStringer.GoString. +func (q *Question) GoString() string { + return "dnsmessage.Question{" + + "Name: " + q.Name.GoString() + ", " + + "Type: " + q.Type.GoString() + ", " + + "Class: " + q.Class.GoString() + "}" +} + +func unpackResourceBody(msg []byte, off int, hdr ResourceHeader) (ResourceBody, int, error) { + var ( + r ResourceBody + err error + name string + ) + switch hdr.Type { + case TypeA: + var rb AResource + rb, err = unpackAResource(msg, off) + r = &rb + name = "A" + case TypeNS: + var rb NSResource + rb, err = unpackNSResource(msg, off) + r = &rb + name = "NS" + case TypeCNAME: + var rb CNAMEResource + rb, err = unpackCNAMEResource(msg, off) + r = &rb + name = "CNAME" + case TypeSOA: + var rb SOAResource + rb, err = unpackSOAResource(msg, off) + r = &rb + name = "SOA" + case TypePTR: + var rb PTRResource + rb, err = unpackPTRResource(msg, off) + r = &rb + name = "PTR" + case TypeMX: + var rb MXResource + rb, err = unpackMXResource(msg, off) + r = &rb + name = "MX" + case TypeTXT: + var rb TXTResource + rb, err = unpackTXTResource(msg, off, hdr.Length) + r = &rb + name = "TXT" + case TypeAAAA: + var rb AAAAResource + rb, err = unpackAAAAResource(msg, off) + r = &rb + name = "AAAA" + case TypeSRV: + var rb SRVResource + rb, err = unpackSRVResource(msg, off) + r = &rb + name = "SRV" + case TypeOPT: + var rb OPTResource + rb, err = unpackOPTResource(msg, off, hdr.Length) + r = &rb + name = "OPT" + default: + var rb UnknownResource + rb, err = unpackUnknownResource(hdr.Type, msg, off, hdr.Length) + r = &rb + name = "Unknown" + } + if err != nil { + return nil, off, &nestedError{name + " record", err} + } + return r, off + int(hdr.Length), nil +} + +// A CNAMEResource is a CNAME Resource record. +type CNAMEResource struct { + CNAME Name +} + +func (r *CNAMEResource) realType() Type { + return TypeCNAME +} + +// pack appends the wire format of the CNAMEResource to msg. +func (r *CNAMEResource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + return r.CNAME.pack(msg, compression, compressionOff) +} + +// GoString implements fmt.GoStringer.GoString. +func (r *CNAMEResource) GoString() string { + return "dnsmessage.CNAMEResource{CNAME: " + r.CNAME.GoString() + "}" +} + +func unpackCNAMEResource(msg []byte, off int) (CNAMEResource, error) { + var cname Name + if _, err := cname.unpack(msg, off); err != nil { + return CNAMEResource{}, err + } + return CNAMEResource{cname}, nil +} + +// An MXResource is an MX Resource record. +type MXResource struct { + Pref uint16 + MX Name +} + +func (r *MXResource) realType() Type { + return TypeMX +} + +// pack appends the wire format of the MXResource to msg. +func (r *MXResource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + oldMsg := msg + msg = packUint16(msg, r.Pref) + msg, err := r.MX.pack(msg, compression, compressionOff) + if err != nil { + return oldMsg, &nestedError{"MXResource.MX", err} + } + return msg, nil +} + +// GoString implements fmt.GoStringer.GoString. +func (r *MXResource) GoString() string { + return "dnsmessage.MXResource{" + + "Pref: " + printUint16(r.Pref) + ", " + + "MX: " + r.MX.GoString() + "}" +} + +func unpackMXResource(msg []byte, off int) (MXResource, error) { + pref, off, err := unpackUint16(msg, off) + if err != nil { + return MXResource{}, &nestedError{"Pref", err} + } + var mx Name + if _, err := mx.unpack(msg, off); err != nil { + return MXResource{}, &nestedError{"MX", err} + } + return MXResource{pref, mx}, nil +} + +// An NSResource is an NS Resource record. +type NSResource struct { + NS Name +} + +func (r *NSResource) realType() Type { + return TypeNS +} + +// pack appends the wire format of the NSResource to msg. +func (r *NSResource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + return r.NS.pack(msg, compression, compressionOff) +} + +// GoString implements fmt.GoStringer.GoString. +func (r *NSResource) GoString() string { + return "dnsmessage.NSResource{NS: " + r.NS.GoString() + "}" +} + +func unpackNSResource(msg []byte, off int) (NSResource, error) { + var ns Name + if _, err := ns.unpack(msg, off); err != nil { + return NSResource{}, err + } + return NSResource{ns}, nil +} + +// A PTRResource is a PTR Resource record. +type PTRResource struct { + PTR Name +} + +func (r *PTRResource) realType() Type { + return TypePTR +} + +// pack appends the wire format of the PTRResource to msg. +func (r *PTRResource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + return r.PTR.pack(msg, compression, compressionOff) +} + +// GoString implements fmt.GoStringer.GoString. +func (r *PTRResource) GoString() string { + return "dnsmessage.PTRResource{PTR: " + r.PTR.GoString() + "}" +} + +func unpackPTRResource(msg []byte, off int) (PTRResource, error) { + var ptr Name + if _, err := ptr.unpack(msg, off); err != nil { + return PTRResource{}, err + } + return PTRResource{ptr}, nil +} + +// An SOAResource is an SOA Resource record. +type SOAResource struct { + NS Name + MBox Name + Serial uint32 + Refresh uint32 + Retry uint32 + Expire uint32 + + // MinTTL the is the default TTL of Resources records which did not + // contain a TTL value and the TTL of negative responses. (RFC 2308 + // Section 4) + MinTTL uint32 +} + +func (r *SOAResource) realType() Type { + return TypeSOA +} + +// pack appends the wire format of the SOAResource to msg. +func (r *SOAResource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + oldMsg := msg + msg, err := r.NS.pack(msg, compression, compressionOff) + if err != nil { + return oldMsg, &nestedError{"SOAResource.NS", err} + } + msg, err = r.MBox.pack(msg, compression, compressionOff) + if err != nil { + return oldMsg, &nestedError{"SOAResource.MBox", err} + } + msg = packUint32(msg, r.Serial) + msg = packUint32(msg, r.Refresh) + msg = packUint32(msg, r.Retry) + msg = packUint32(msg, r.Expire) + return packUint32(msg, r.MinTTL), nil +} + +// GoString implements fmt.GoStringer.GoString. +func (r *SOAResource) GoString() string { + return "dnsmessage.SOAResource{" + + "NS: " + r.NS.GoString() + ", " + + "MBox: " + r.MBox.GoString() + ", " + + "Serial: " + printUint32(r.Serial) + ", " + + "Refresh: " + printUint32(r.Refresh) + ", " + + "Retry: " + printUint32(r.Retry) + ", " + + "Expire: " + printUint32(r.Expire) + ", " + + "MinTTL: " + printUint32(r.MinTTL) + "}" +} + +func unpackSOAResource(msg []byte, off int) (SOAResource, error) { + var ns Name + off, err := ns.unpack(msg, off) + if err != nil { + return SOAResource{}, &nestedError{"NS", err} + } + var mbox Name + if off, err = mbox.unpack(msg, off); err != nil { + return SOAResource{}, &nestedError{"MBox", err} + } + serial, off, err := unpackUint32(msg, off) + if err != nil { + return SOAResource{}, &nestedError{"Serial", err} + } + refresh, off, err := unpackUint32(msg, off) + if err != nil { + return SOAResource{}, &nestedError{"Refresh", err} + } + retry, off, err := unpackUint32(msg, off) + if err != nil { + return SOAResource{}, &nestedError{"Retry", err} + } + expire, off, err := unpackUint32(msg, off) + if err != nil { + return SOAResource{}, &nestedError{"Expire", err} + } + minTTL, _, err := unpackUint32(msg, off) + if err != nil { + return SOAResource{}, &nestedError{"MinTTL", err} + } + return SOAResource{ns, mbox, serial, refresh, retry, expire, minTTL}, nil +} + +// A TXTResource is a TXT Resource record. +type TXTResource struct { + TXT []string +} + +func (r *TXTResource) realType() Type { + return TypeTXT +} + +// pack appends the wire format of the TXTResource to msg. +func (r *TXTResource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + oldMsg := msg + for _, s := range r.TXT { + var err error + msg, err = packText(msg, s) + if err != nil { + return oldMsg, err + } + } + return msg, nil +} + +// GoString implements fmt.GoStringer.GoString. +func (r *TXTResource) GoString() string { + s := "dnsmessage.TXTResource{TXT: []string{" + if len(r.TXT) == 0 { + return s + "}}" + } + s += `"` + printString([]byte(r.TXT[0])) + for _, t := range r.TXT[1:] { + s += `", "` + printString([]byte(t)) + } + return s + `"}}` +} + +func unpackTXTResource(msg []byte, off int, length uint16) (TXTResource, error) { + txts := make([]string, 0, 1) + for n := uint16(0); n < length; { + var t string + var err error + if t, off, err = unpackText(msg, off); err != nil { + return TXTResource{}, &nestedError{"text", err} + } + // Check if we got too many bytes. + if length-n < uint16(len(t))+1 { + return TXTResource{}, errCalcLen + } + n += uint16(len(t)) + 1 + txts = append(txts, t) + } + return TXTResource{txts}, nil +} + +// An SRVResource is an SRV Resource record. +type SRVResource struct { + Priority uint16 + Weight uint16 + Port uint16 + Target Name // Not compressed as per RFC 2782. +} + +func (r *SRVResource) realType() Type { + return TypeSRV +} + +// pack appends the wire format of the SRVResource to msg. +func (r *SRVResource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + oldMsg := msg + msg = packUint16(msg, r.Priority) + msg = packUint16(msg, r.Weight) + msg = packUint16(msg, r.Port) + msg, err := r.Target.pack(msg, nil, compressionOff) + if err != nil { + return oldMsg, &nestedError{"SRVResource.Target", err} + } + return msg, nil +} + +// GoString implements fmt.GoStringer.GoString. +func (r *SRVResource) GoString() string { + return "dnsmessage.SRVResource{" + + "Priority: " + printUint16(r.Priority) + ", " + + "Weight: " + printUint16(r.Weight) + ", " + + "Port: " + printUint16(r.Port) + ", " + + "Target: " + r.Target.GoString() + "}" +} + +func unpackSRVResource(msg []byte, off int) (SRVResource, error) { + priority, off, err := unpackUint16(msg, off) + if err != nil { + return SRVResource{}, &nestedError{"Priority", err} + } + weight, off, err := unpackUint16(msg, off) + if err != nil { + return SRVResource{}, &nestedError{"Weight", err} + } + port, off, err := unpackUint16(msg, off) + if err != nil { + return SRVResource{}, &nestedError{"Port", err} + } + var target Name + if _, err := target.unpackCompressed(msg, off, false /* allowCompression */); err != nil { + return SRVResource{}, &nestedError{"Target", err} + } + return SRVResource{priority, weight, port, target}, nil +} + +// An AResource is an A Resource record. +type AResource struct { + A [4]byte +} + +func (r *AResource) realType() Type { + return TypeA +} + +// pack appends the wire format of the AResource to msg. +func (r *AResource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + return packBytes(msg, r.A[:]), nil +} + +// GoString implements fmt.GoStringer.GoString. +func (r *AResource) GoString() string { + return "dnsmessage.AResource{" + + "A: [4]byte{" + printByteSlice(r.A[:]) + "}}" +} + +func unpackAResource(msg []byte, off int) (AResource, error) { + var a [4]byte + if _, err := unpackBytes(msg, off, a[:]); err != nil { + return AResource{}, err + } + return AResource{a}, nil +} + +// An AAAAResource is an AAAA Resource record. +type AAAAResource struct { + AAAA [16]byte +} + +func (r *AAAAResource) realType() Type { + return TypeAAAA +} + +// GoString implements fmt.GoStringer.GoString. +func (r *AAAAResource) GoString() string { + return "dnsmessage.AAAAResource{" + + "AAAA: [16]byte{" + printByteSlice(r.AAAA[:]) + "}}" +} + +// pack appends the wire format of the AAAAResource to msg. +func (r *AAAAResource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + return packBytes(msg, r.AAAA[:]), nil +} + +func unpackAAAAResource(msg []byte, off int) (AAAAResource, error) { + var aaaa [16]byte + if _, err := unpackBytes(msg, off, aaaa[:]); err != nil { + return AAAAResource{}, err + } + return AAAAResource{aaaa}, nil +} + +// An OPTResource is an OPT pseudo Resource record. +// +// The pseudo resource record is part of the extension mechanisms for DNS +// as defined in RFC 6891. +type OPTResource struct { + Options []Option +} + +// An Option represents a DNS message option within OPTResource. +// +// The message option is part of the extension mechanisms for DNS as +// defined in RFC 6891. +type Option struct { + Code uint16 // option code + Data []byte +} + +// GoString implements fmt.GoStringer.GoString. +func (o *Option) GoString() string { + return "dnsmessage.Option{" + + "Code: " + printUint16(o.Code) + ", " + + "Data: []byte{" + printByteSlice(o.Data) + "}}" +} + +func (r *OPTResource) realType() Type { + return TypeOPT +} + +func (r *OPTResource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + for _, opt := range r.Options { + msg = packUint16(msg, opt.Code) + l := uint16(len(opt.Data)) + msg = packUint16(msg, l) + msg = packBytes(msg, opt.Data) + } + return msg, nil +} + +// GoString implements fmt.GoStringer.GoString. +func (r *OPTResource) GoString() string { + s := "dnsmessage.OPTResource{Options: []dnsmessage.Option{" + if len(r.Options) == 0 { + return s + "}}" + } + s += r.Options[0].GoString() + for _, o := range r.Options[1:] { + s += ", " + o.GoString() + } + return s + "}}" +} + +func unpackOPTResource(msg []byte, off int, length uint16) (OPTResource, error) { + var opts []Option + for oldOff := off; off < oldOff+int(length); { + var err error + var o Option + o.Code, off, err = unpackUint16(msg, off) + if err != nil { + return OPTResource{}, &nestedError{"Code", err} + } + var l uint16 + l, off, err = unpackUint16(msg, off) + if err != nil { + return OPTResource{}, &nestedError{"Data", err} + } + o.Data = make([]byte, l) + if copy(o.Data, msg[off:]) != int(l) { + return OPTResource{}, &nestedError{"Data", errCalcLen} + } + off += int(l) + opts = append(opts, o) + } + return OPTResource{opts}, nil +} + +// An UnknownResource is a catch-all container for unknown record types. +type UnknownResource struct { + Type Type + Data []byte +} + +func (r *UnknownResource) realType() Type { + return r.Type +} + +// pack appends the wire format of the UnknownResource to msg. +func (r *UnknownResource) pack(msg []byte, compression map[string]int, compressionOff int) ([]byte, error) { + return packBytes(msg, r.Data[:]), nil +} + +// GoString implements fmt.GoStringer.GoString. +func (r *UnknownResource) GoString() string { + return "dnsmessage.UnknownResource{" + + "Type: " + r.Type.GoString() + ", " + + "Data: []byte{" + printByteSlice(r.Data) + "}}" +} + +func unpackUnknownResource(recordType Type, msg []byte, off int, length uint16) (UnknownResource, error) { + parsed := UnknownResource{ + Type: recordType, + Data: make([]byte, length), + } + if _, err := unpackBytes(msg, off, parsed.Data); err != nil { + return UnknownResource{}, err + } + return parsed, nil +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/message_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/message_test.go new file mode 100644 index 000000000..3cddfca99 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/dns/dnsmessage/message_test.go @@ -0,0 +1,1601 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package dnsmessage + +import ( + "bytes" + "fmt" + "io/ioutil" + "path/filepath" + "reflect" + "strings" + "testing" +) + +const ( + // This type was selected randomly from the IANA-assigned private use + // range of RR TYPEs. + privateUseType Type = 65362 +) + +func TestPrintPaddedUint8(t *testing.T) { + tests := []struct { + num uint8 + want string + }{ + {0, "000"}, + {1, "001"}, + {9, "009"}, + {10, "010"}, + {99, "099"}, + {100, "100"}, + {124, "124"}, + {104, "104"}, + {120, "120"}, + {255, "255"}, + } + + for _, test := range tests { + if got := printPaddedUint8(test.num); got != test.want { + t.Errorf("got printPaddedUint8(%d) = %s, want = %s", test.num, got, test.want) + } + } +} + +func TestPrintUint8Bytes(t *testing.T) { + tests := []uint8{ + 0, + 1, + 9, + 10, + 99, + 100, + 124, + 104, + 120, + 255, + } + + for _, test := range tests { + if got, want := string(printUint8Bytes(nil, test)), fmt.Sprint(test); got != want { + t.Errorf("got printUint8Bytes(%d) = %s, want = %s", test, got, want) + } + } +} + +func TestPrintUint16(t *testing.T) { + tests := []uint16{ + 65535, + 0, + 1, + 10, + 100, + 1000, + 10000, + 324, + 304, + 320, + } + + for _, test := range tests { + if got, want := printUint16(test), fmt.Sprint(test); got != want { + t.Errorf("got printUint16(%d) = %s, want = %s", test, got, want) + } + } +} + +func TestPrintUint32(t *testing.T) { + tests := []uint32{ + 4294967295, + 65535, + 0, + 1, + 10, + 100, + 1000, + 10000, + 100000, + 1000000, + 10000000, + 100000000, + 1000000000, + 324, + 304, + 320, + } + + for _, test := range tests { + if got, want := printUint32(test), fmt.Sprint(test); got != want { + t.Errorf("got printUint32(%d) = %s, want = %s", test, got, want) + } + } +} + +func mustEDNS0ResourceHeader(l int, extrc RCode, do bool) ResourceHeader { + h := ResourceHeader{Class: ClassINET} + if err := h.SetEDNS0(l, extrc, do); err != nil { + panic(err) + } + return h +} + +func (m *Message) String() string { + s := fmt.Sprintf("Message: %#v\n", &m.Header) + if len(m.Questions) > 0 { + s += "-- Questions\n" + for _, q := range m.Questions { + s += fmt.Sprintf("%#v\n", q) + } + } + if len(m.Answers) > 0 { + s += "-- Answers\n" + for _, a := range m.Answers { + s += fmt.Sprintf("%#v\n", a) + } + } + if len(m.Authorities) > 0 { + s += "-- Authorities\n" + for _, ns := range m.Authorities { + s += fmt.Sprintf("%#v\n", ns) + } + } + if len(m.Additionals) > 0 { + s += "-- Additionals\n" + for _, e := range m.Additionals { + s += fmt.Sprintf("%#v\n", e) + } + } + return s +} + +func TestNameString(t *testing.T) { + want := "foo" + name := MustNewName(want) + if got := fmt.Sprint(name); got != want { + t.Errorf("got fmt.Sprint(%#v) = %s, want = %s", name, got, want) + } +} + +func TestQuestionPackUnpack(t *testing.T) { + want := Question{ + Name: MustNewName("."), + Type: TypeA, + Class: ClassINET, + } + buf, err := want.pack(make([]byte, 1, 50), map[string]int{}, 1) + if err != nil { + t.Fatal("Question.pack() =", err) + } + var p Parser + p.msg = buf + p.header.questions = 1 + p.section = sectionQuestions + p.off = 1 + got, err := p.Question() + if err != nil { + t.Fatalf("Parser{%q}.Question() = %v", string(buf[1:]), err) + } + if p.off != len(buf) { + t.Errorf("unpacked different amount than packed: got = %d, want = %d", p.off, len(buf)) + } + if !reflect.DeepEqual(got, want) { + t.Errorf("got from Parser.Question() = %+v, want = %+v", got, want) + } +} + +func TestName(t *testing.T) { + tests := []string{ + "", + ".", + "google..com", + "google.com", + "google..com.", + "google.com.", + ".google.com.", + "www..google.com.", + "www.google.com.", + } + + for _, test := range tests { + n, err := NewName(test) + if err != nil { + t.Errorf("NewName(%q) = %v", test, err) + continue + } + if ns := n.String(); ns != test { + t.Errorf("got %#v.String() = %q, want = %q", n, ns, test) + continue + } + } +} + +func TestNamePackUnpack(t *testing.T) { + tests := []struct { + in string + want string + err error + }{ + {"", "", errNonCanonicalName}, + {".", ".", nil}, + {"google..com", "", errNonCanonicalName}, + {"google.com", "", errNonCanonicalName}, + {"google..com.", "", errZeroSegLen}, + {"google.com.", "google.com.", nil}, + {".google.com.", "", errZeroSegLen}, + {"www..google.com.", "", errZeroSegLen}, + {"www.google.com.", "www.google.com.", nil}, + } + + for _, test := range tests { + in := MustNewName(test.in) + want := MustNewName(test.want) + buf, err := in.pack(make([]byte, 0, 30), map[string]int{}, 0) + if err != test.err { + t.Errorf("got %q.pack() = %v, want = %v", test.in, err, test.err) + continue + } + if test.err != nil { + continue + } + var got Name + n, err := got.unpack(buf, 0) + if err != nil { + t.Errorf("%q.unpack() = %v", test.in, err) + continue + } + if n != len(buf) { + t.Errorf( + "unpacked different amount than packed for %q: got = %d, want = %d", + test.in, + n, + len(buf), + ) + } + if got != want { + t.Errorf("unpacking packing of %q: got = %#v, want = %#v", test.in, got, want) + } + } +} + +func TestIncompressibleName(t *testing.T) { + name := MustNewName("example.com.") + compression := map[string]int{} + buf, err := name.pack(make([]byte, 0, 100), compression, 0) + if err != nil { + t.Fatal("first Name.pack() =", err) + } + buf, err = name.pack(buf, compression, 0) + if err != nil { + t.Fatal("second Name.pack() =", err) + } + var n1 Name + off, err := n1.unpackCompressed(buf, 0, false /* allowCompression */) + if err != nil { + t.Fatal("unpacking incompressible name without pointers failed:", err) + } + var n2 Name + if _, err := n2.unpackCompressed(buf, off, false /* allowCompression */); err != errCompressedSRV { + t.Errorf("unpacking compressed incompressible name with pointers: got %v, want = %v", err, errCompressedSRV) + } +} + +func checkErrorPrefix(err error, prefix string) bool { + e, ok := err.(*nestedError) + return ok && e.s == prefix +} + +func TestHeaderUnpackError(t *testing.T) { + wants := []string{ + "id", + "bits", + "questions", + "answers", + "authorities", + "additionals", + } + var buf []byte + var h header + for _, want := range wants { + n, err := h.unpack(buf, 0) + if n != 0 || !checkErrorPrefix(err, want) { + t.Errorf("got header.unpack([%d]byte, 0) = %d, %v, want = 0, %s", len(buf), n, err, want) + } + buf = append(buf, 0, 0) + } +} + +func TestParserStart(t *testing.T) { + const want = "unpacking header" + var p Parser + for i := 0; i <= 1; i++ { + _, err := p.Start([]byte{}) + if !checkErrorPrefix(err, want) { + t.Errorf("got Parser.Start(nil) = _, %v, want = _, %s", err, want) + } + } +} + +func TestResourceNotStarted(t *testing.T) { + tests := []struct { + name string + fn func(*Parser) error + }{ + {"CNAMEResource", func(p *Parser) error { _, err := p.CNAMEResource(); return err }}, + {"MXResource", func(p *Parser) error { _, err := p.MXResource(); return err }}, + {"NSResource", func(p *Parser) error { _, err := p.NSResource(); return err }}, + {"PTRResource", func(p *Parser) error { _, err := p.PTRResource(); return err }}, + {"SOAResource", func(p *Parser) error { _, err := p.SOAResource(); return err }}, + {"TXTResource", func(p *Parser) error { _, err := p.TXTResource(); return err }}, + {"SRVResource", func(p *Parser) error { _, err := p.SRVResource(); return err }}, + {"AResource", func(p *Parser) error { _, err := p.AResource(); return err }}, + {"AAAAResource", func(p *Parser) error { _, err := p.AAAAResource(); return err }}, + {"UnknownResource", func(p *Parser) error { _, err := p.UnknownResource(); return err }}, + } + + for _, test := range tests { + if err := test.fn(&Parser{}); err != ErrNotStarted { + t.Errorf("got Parser.%s() = _ , %v, want = _, %v", test.name, err, ErrNotStarted) + } + } +} + +func TestDNSPackUnpack(t *testing.T) { + wants := []Message{ + { + Questions: []Question{ + { + Name: MustNewName("."), + Type: TypeAAAA, + Class: ClassINET, + }, + }, + Answers: []Resource{}, + Authorities: []Resource{}, + Additionals: []Resource{}, + }, + largeTestMsg(), + } + for i, want := range wants { + b, err := want.Pack() + if err != nil { + t.Fatalf("%d: Message.Pack() = %v", i, err) + } + var got Message + err = got.Unpack(b) + if err != nil { + t.Fatalf("%d: Message.Unapck() = %v", i, err) + } + if !reflect.DeepEqual(got, want) { + t.Errorf("%d: Message.Pack/Unpack() roundtrip: got = %+v, want = %+v", i, &got, &want) + } + } +} + +func TestDNSAppendPackUnpack(t *testing.T) { + wants := []Message{ + { + Questions: []Question{ + { + Name: MustNewName("."), + Type: TypeAAAA, + Class: ClassINET, + }, + }, + Answers: []Resource{}, + Authorities: []Resource{}, + Additionals: []Resource{}, + }, + largeTestMsg(), + } + for i, want := range wants { + b := make([]byte, 2, 514) + b, err := want.AppendPack(b) + if err != nil { + t.Fatalf("%d: Message.AppendPack() = %v", i, err) + } + b = b[2:] + var got Message + err = got.Unpack(b) + if err != nil { + t.Fatalf("%d: Message.Unapck() = %v", i, err) + } + if !reflect.DeepEqual(got, want) { + t.Errorf("%d: Message.AppendPack/Unpack() roundtrip: got = %+v, want = %+v", i, &got, &want) + } + } +} + +func TestSkipAll(t *testing.T) { + msg := largeTestMsg() + buf, err := msg.Pack() + if err != nil { + t.Fatal("Message.Pack() =", err) + } + var p Parser + if _, err := p.Start(buf); err != nil { + t.Fatal("Parser.Start(non-nil) =", err) + } + + tests := []struct { + name string + f func() error + }{ + {"SkipAllQuestions", p.SkipAllQuestions}, + {"SkipAllAnswers", p.SkipAllAnswers}, + {"SkipAllAuthorities", p.SkipAllAuthorities}, + {"SkipAllAdditionals", p.SkipAllAdditionals}, + } + for _, test := range tests { + for i := 1; i <= 3; i++ { + if err := test.f(); err != nil { + t.Errorf("%d: Parser.%s() = %v", i, test.name, err) + } + } + } +} + +func TestSkipEach(t *testing.T) { + msg := smallTestMsg() + + buf, err := msg.Pack() + if err != nil { + t.Fatal("Message.Pack() =", err) + } + var p Parser + if _, err := p.Start(buf); err != nil { + t.Fatal("Parser.Start(non-nil) =", err) + } + + tests := []struct { + name string + f func() error + }{ + {"SkipQuestion", p.SkipQuestion}, + {"SkipAnswer", p.SkipAnswer}, + {"SkipAuthority", p.SkipAuthority}, + {"SkipAdditional", p.SkipAdditional}, + } + for _, test := range tests { + if err := test.f(); err != nil { + t.Errorf("first Parser.%s() = %v, want = nil", test.name, err) + } + if err := test.f(); err != ErrSectionDone { + t.Errorf("second Parser.%s() = %v, want = %v", test.name, err, ErrSectionDone) + } + } +} + +func TestSkipAfterRead(t *testing.T) { + msg := smallTestMsg() + + buf, err := msg.Pack() + if err != nil { + t.Fatal("Message.Pack() =", err) + } + var p Parser + if _, err := p.Start(buf); err != nil { + t.Fatal("Parser.Srart(non-nil) =", err) + } + + tests := []struct { + name string + skip func() error + read func() error + }{ + {"Question", p.SkipQuestion, func() error { _, err := p.Question(); return err }}, + {"Answer", p.SkipAnswer, func() error { _, err := p.Answer(); return err }}, + {"Authority", p.SkipAuthority, func() error { _, err := p.Authority(); return err }}, + {"Additional", p.SkipAdditional, func() error { _, err := p.Additional(); return err }}, + } + for _, test := range tests { + if err := test.read(); err != nil { + t.Errorf("got Parser.%s() = _, %v, want = _, nil", test.name, err) + } + if err := test.skip(); err != ErrSectionDone { + t.Errorf("got Parser.Skip%s() = %v, want = %v", test.name, err, ErrSectionDone) + } + } +} + +func TestSkipNotStarted(t *testing.T) { + var p Parser + + tests := []struct { + name string + f func() error + }{ + {"SkipAllQuestions", p.SkipAllQuestions}, + {"SkipAllAnswers", p.SkipAllAnswers}, + {"SkipAllAuthorities", p.SkipAllAuthorities}, + {"SkipAllAdditionals", p.SkipAllAdditionals}, + } + for _, test := range tests { + if err := test.f(); err != ErrNotStarted { + t.Errorf("got Parser.%s() = %v, want = %v", test.name, err, ErrNotStarted) + } + } +} + +func TestTooManyRecords(t *testing.T) { + const recs = int(^uint16(0)) + 1 + tests := []struct { + name string + msg Message + want error + }{ + { + "Questions", + Message{ + Questions: make([]Question, recs), + }, + errTooManyQuestions, + }, + { + "Answers", + Message{ + Answers: make([]Resource, recs), + }, + errTooManyAnswers, + }, + { + "Authorities", + Message{ + Authorities: make([]Resource, recs), + }, + errTooManyAuthorities, + }, + { + "Additionals", + Message{ + Additionals: make([]Resource, recs), + }, + errTooManyAdditionals, + }, + } + + for _, test := range tests { + if _, got := test.msg.Pack(); got != test.want { + t.Errorf("got Message.Pack() for %d %s = %v, want = %v", recs, test.name, got, test.want) + } + } +} + +func TestVeryLongTxt(t *testing.T) { + want := Resource{ + ResourceHeader{ + Name: MustNewName("foo.bar.example.com."), + Type: TypeTXT, + Class: ClassINET, + }, + &TXTResource{[]string{ + "", + "", + "foo bar", + "", + "www.example.com", + "www.example.com.", + strings.Repeat(".", 255), + }}, + } + buf, err := want.pack(make([]byte, 0, 8000), map[string]int{}, 0) + if err != nil { + t.Fatal("Resource.pack() =", err) + } + var got Resource + off, err := got.Header.unpack(buf, 0) + if err != nil { + t.Fatal("ResourceHeader.unpack() =", err) + } + body, n, err := unpackResourceBody(buf, off, got.Header) + if err != nil { + t.Fatal("unpackResourceBody() =", err) + } + got.Body = body + if n != len(buf) { + t.Errorf("unpacked different amount than packed: got = %d, want = %d", n, len(buf)) + } + if !reflect.DeepEqual(got, want) { + t.Errorf("Resource.pack/unpack() roundtrip: got = %#v, want = %#v", got, want) + } +} + +func TestTooLongTxt(t *testing.T) { + rb := TXTResource{[]string{strings.Repeat(".", 256)}} + if _, err := rb.pack(make([]byte, 0, 8000), map[string]int{}, 0); err != errStringTooLong { + t.Errorf("packing TXTResource with 256 character string: got err = %v, want = %v", err, errStringTooLong) + } +} + +func TestStartAppends(t *testing.T) { + buf := make([]byte, 2, 514) + wantBuf := []byte{4, 44} + copy(buf, wantBuf) + + b := NewBuilder(buf, Header{}) + b.EnableCompression() + + buf, err := b.Finish() + if err != nil { + t.Fatal("Builder.Finish() =", err) + } + if got, want := len(buf), headerLen+2; got != want { + t.Errorf("got len(buf) = %d, want = %d", got, want) + } + if string(buf[:2]) != string(wantBuf) { + t.Errorf("original data not preserved, got = %#v, want = %#v", buf[:2], wantBuf) + } +} + +func TestStartError(t *testing.T) { + tests := []struct { + name string + fn func(*Builder) error + }{ + {"Questions", func(b *Builder) error { return b.StartQuestions() }}, + {"Answers", func(b *Builder) error { return b.StartAnswers() }}, + {"Authorities", func(b *Builder) error { return b.StartAuthorities() }}, + {"Additionals", func(b *Builder) error { return b.StartAdditionals() }}, + } + + envs := []struct { + name string + fn func() *Builder + want error + }{ + {"sectionNotStarted", func() *Builder { return &Builder{section: sectionNotStarted} }, ErrNotStarted}, + {"sectionDone", func() *Builder { return &Builder{section: sectionDone} }, ErrSectionDone}, + } + + for _, env := range envs { + for _, test := range tests { + if got := test.fn(env.fn()); got != env.want { + t.Errorf("got Builder{%s}.Start%s() = %v, want = %v", env.name, test.name, got, env.want) + } + } + } +} + +func TestBuilderResourceError(t *testing.T) { + tests := []struct { + name string + fn func(*Builder) error + }{ + {"CNAMEResource", func(b *Builder) error { return b.CNAMEResource(ResourceHeader{}, CNAMEResource{}) }}, + {"MXResource", func(b *Builder) error { return b.MXResource(ResourceHeader{}, MXResource{}) }}, + {"NSResource", func(b *Builder) error { return b.NSResource(ResourceHeader{}, NSResource{}) }}, + {"PTRResource", func(b *Builder) error { return b.PTRResource(ResourceHeader{}, PTRResource{}) }}, + {"SOAResource", func(b *Builder) error { return b.SOAResource(ResourceHeader{}, SOAResource{}) }}, + {"TXTResource", func(b *Builder) error { return b.TXTResource(ResourceHeader{}, TXTResource{}) }}, + {"SRVResource", func(b *Builder) error { return b.SRVResource(ResourceHeader{}, SRVResource{}) }}, + {"AResource", func(b *Builder) error { return b.AResource(ResourceHeader{}, AResource{}) }}, + {"AAAAResource", func(b *Builder) error { return b.AAAAResource(ResourceHeader{}, AAAAResource{}) }}, + {"OPTResource", func(b *Builder) error { return b.OPTResource(ResourceHeader{}, OPTResource{}) }}, + {"UnknownResource", func(b *Builder) error { return b.UnknownResource(ResourceHeader{}, UnknownResource{}) }}, + } + + envs := []struct { + name string + fn func() *Builder + want error + }{ + {"sectionNotStarted", func() *Builder { return &Builder{section: sectionNotStarted} }, ErrNotStarted}, + {"sectionHeader", func() *Builder { return &Builder{section: sectionHeader} }, ErrNotStarted}, + {"sectionQuestions", func() *Builder { return &Builder{section: sectionQuestions} }, ErrNotStarted}, + {"sectionDone", func() *Builder { return &Builder{section: sectionDone} }, ErrSectionDone}, + } + + for _, env := range envs { + for _, test := range tests { + if got := test.fn(env.fn()); got != env.want { + t.Errorf("got Builder{%s}.%s() = %v, want = %v", env.name, test.name, got, env.want) + } + } + } +} + +func TestFinishError(t *testing.T) { + var b Builder + want := ErrNotStarted + if _, got := b.Finish(); got != want { + t.Errorf("got Builder.Finish() = %v, want = %v", got, want) + } +} + +func TestBuilder(t *testing.T) { + msg := largeTestMsg() + want, err := msg.Pack() + if err != nil { + t.Fatal("Message.Pack() =", err) + } + + b := NewBuilder(nil, msg.Header) + b.EnableCompression() + + if err := b.StartQuestions(); err != nil { + t.Fatal("Builder.StartQuestions() =", err) + } + for _, q := range msg.Questions { + if err := b.Question(q); err != nil { + t.Fatalf("Builder.Question(%#v) = %v", q, err) + } + } + + if err := b.StartAnswers(); err != nil { + t.Fatal("Builder.StartAnswers() =", err) + } + for _, a := range msg.Answers { + switch a.Header.Type { + case TypeA: + if err := b.AResource(a.Header, *a.Body.(*AResource)); err != nil { + t.Fatalf("Builder.AResource(%#v) = %v", a, err) + } + case TypeNS: + if err := b.NSResource(a.Header, *a.Body.(*NSResource)); err != nil { + t.Fatalf("Builder.NSResource(%#v) = %v", a, err) + } + case TypeCNAME: + if err := b.CNAMEResource(a.Header, *a.Body.(*CNAMEResource)); err != nil { + t.Fatalf("Builder.CNAMEResource(%#v) = %v", a, err) + } + case TypeSOA: + if err := b.SOAResource(a.Header, *a.Body.(*SOAResource)); err != nil { + t.Fatalf("Builder.SOAResource(%#v) = %v", a, err) + } + case TypePTR: + if err := b.PTRResource(a.Header, *a.Body.(*PTRResource)); err != nil { + t.Fatalf("Builder.PTRResource(%#v) = %v", a, err) + } + case TypeMX: + if err := b.MXResource(a.Header, *a.Body.(*MXResource)); err != nil { + t.Fatalf("Builder.MXResource(%#v) = %v", a, err) + } + case TypeTXT: + if err := b.TXTResource(a.Header, *a.Body.(*TXTResource)); err != nil { + t.Fatalf("Builder.TXTResource(%#v) = %v", a, err) + } + case TypeAAAA: + if err := b.AAAAResource(a.Header, *a.Body.(*AAAAResource)); err != nil { + t.Fatalf("Builder.AAAAResource(%#v) = %v", a, err) + } + case TypeSRV: + if err := b.SRVResource(a.Header, *a.Body.(*SRVResource)); err != nil { + t.Fatalf("Builder.SRVResource(%#v) = %v", a, err) + } + case privateUseType: + if err := b.UnknownResource(a.Header, *a.Body.(*UnknownResource)); err != nil { + t.Fatalf("Builder.UnknownResource(%#v) = %v", a, err) + } + } + } + + if err := b.StartAuthorities(); err != nil { + t.Fatal("Builder.StartAuthorities() =", err) + } + for _, a := range msg.Authorities { + if err := b.NSResource(a.Header, *a.Body.(*NSResource)); err != nil { + t.Fatalf("Builder.NSResource(%#v) = %v", a, err) + } + } + + if err := b.StartAdditionals(); err != nil { + t.Fatal("Builder.StartAdditionals() =", err) + } + for _, a := range msg.Additionals { + switch a.Body.(type) { + case *TXTResource: + if err := b.TXTResource(a.Header, *a.Body.(*TXTResource)); err != nil { + t.Fatalf("Builder.TXTResource(%#v) = %v", a, err) + } + case *OPTResource: + if err := b.OPTResource(a.Header, *a.Body.(*OPTResource)); err != nil { + t.Fatalf("Builder.OPTResource(%#v) = %v", a, err) + } + } + } + + got, err := b.Finish() + if err != nil { + t.Fatal("Builder.Finish() =", err) + } + if !bytes.Equal(got, want) { + t.Fatalf("got from Builder.Finish() = %#v\nwant = %#v", got, want) + } +} + +func TestResourcePack(t *testing.T) { + for _, tt := range []struct { + m Message + err error + }{ + { + Message{ + Questions: []Question{ + { + Name: MustNewName("."), + Type: TypeAAAA, + Class: ClassINET, + }, + }, + Answers: []Resource{{ResourceHeader{}, nil}}, + }, + &nestedError{"packing Answer", errNilResouceBody}, + }, + { + Message{ + Questions: []Question{ + { + Name: MustNewName("."), + Type: TypeAAAA, + Class: ClassINET, + }, + }, + Authorities: []Resource{{ResourceHeader{}, (*NSResource)(nil)}}, + }, + &nestedError{"packing Authority", + &nestedError{"ResourceHeader", + &nestedError{"Name", errNonCanonicalName}, + }, + }, + }, + { + Message{ + Questions: []Question{ + { + Name: MustNewName("."), + Type: TypeA, + Class: ClassINET, + }, + }, + Additionals: []Resource{{ResourceHeader{}, nil}}, + }, + &nestedError{"packing Additional", errNilResouceBody}, + }, + } { + _, err := tt.m.Pack() + if !reflect.DeepEqual(err, tt.err) { + t.Errorf("got Message{%v}.Pack() = %v, want %v", tt.m, err, tt.err) + } + } +} + +func TestResourcePackLength(t *testing.T) { + r := Resource{ + ResourceHeader{ + Name: MustNewName("."), + Type: TypeA, + Class: ClassINET, + }, + &AResource{[4]byte{127, 0, 0, 2}}, + } + + hb, _, err := r.Header.pack(nil, nil, 0) + if err != nil { + t.Fatal("ResourceHeader.pack() =", err) + } + buf := make([]byte, 0, len(hb)) + buf, err = r.pack(buf, nil, 0) + if err != nil { + t.Fatal("Resource.pack() =", err) + } + + var hdr ResourceHeader + if _, err := hdr.unpack(buf, 0); err != nil { + t.Fatal("ResourceHeader.unpack() =", err) + } + + if got, want := int(hdr.Length), len(buf)-len(hb); got != want { + t.Errorf("got hdr.Length = %d, want = %d", got, want) + } +} + +func TestOptionPackUnpack(t *testing.T) { + for _, tt := range []struct { + name string + w []byte // wire format of m.Additionals + m Message + dnssecOK bool + extRCode RCode + }{ + { + name: "without EDNS(0) options", + w: []byte{ + 0x00, 0x00, 0x29, 0x10, 0x00, 0xfe, 0x00, 0x80, + 0x00, 0x00, 0x00, + }, + m: Message{ + Header: Header{RCode: RCodeFormatError}, + Questions: []Question{ + { + Name: MustNewName("."), + Type: TypeA, + Class: ClassINET, + }, + }, + Additionals: []Resource{ + { + mustEDNS0ResourceHeader(4096, 0xfe0|RCodeFormatError, true), + &OPTResource{}, + }, + }, + }, + dnssecOK: true, + extRCode: 0xfe0 | RCodeFormatError, + }, + { + name: "with EDNS(0) options", + w: []byte{ + 0x00, 0x00, 0x29, 0x10, 0x00, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x0b, 0x00, 0x02, 0x12, 0x34, + }, + m: Message{ + Header: Header{RCode: RCodeServerFailure}, + Questions: []Question{ + { + Name: MustNewName("."), + Type: TypeAAAA, + Class: ClassINET, + }, + }, + Additionals: []Resource{ + { + mustEDNS0ResourceHeader(4096, 0xff0|RCodeServerFailure, false), + &OPTResource{ + Options: []Option{ + { + Code: 12, // see RFC 7828 + Data: []byte{0x00, 0x00}, + }, + { + Code: 11, // see RFC 7830 + Data: []byte{0x12, 0x34}, + }, + }, + }, + }, + }, + }, + dnssecOK: false, + extRCode: 0xff0 | RCodeServerFailure, + }, + { + // Containing multiple OPT resources in a + // message is invalid, but it's necessary for + // protocol conformance testing. + name: "with multiple OPT resources", + w: []byte{ + 0x00, 0x00, 0x29, 0x10, 0x00, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x02, 0x12, + 0x34, 0x00, 0x00, 0x29, 0x10, 0x00, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x02, + 0x00, 0x00, + }, + m: Message{ + Header: Header{RCode: RCodeNameError}, + Questions: []Question{ + { + Name: MustNewName("."), + Type: TypeAAAA, + Class: ClassINET, + }, + }, + Additionals: []Resource{ + { + mustEDNS0ResourceHeader(4096, 0xff0|RCodeNameError, false), + &OPTResource{ + Options: []Option{ + { + Code: 11, // see RFC 7830 + Data: []byte{0x12, 0x34}, + }, + }, + }, + }, + { + mustEDNS0ResourceHeader(4096, 0xff0|RCodeNameError, false), + &OPTResource{ + Options: []Option{ + { + Code: 12, // see RFC 7828 + Data: []byte{0x00, 0x00}, + }, + }, + }, + }, + }, + }, + }, + } { + w, err := tt.m.Pack() + if err != nil { + t.Errorf("Message.Pack() for %s = %v", tt.name, err) + continue + } + if !bytes.Equal(w[len(w)-len(tt.w):], tt.w) { + t.Errorf("got Message.Pack() for %s = %#v, want %#v", tt.name, w[len(w)-len(tt.w):], tt.w) + continue + } + var m Message + if err := m.Unpack(w); err != nil { + t.Errorf("Message.Unpack() for %s = %v", tt.name, err) + continue + } + if !reflect.DeepEqual(m.Additionals, tt.m.Additionals) { + t.Errorf("got Message.Pack/Unpack() roundtrip for %s = %+v, want %+v", tt.name, m, tt.m) + continue + } + } +} + +func smallTestMsgWithUnknownResource() Message { + return Message{ + Questions: []Question{}, + Answers: []Resource{ + { + Header: ResourceHeader{ + Name: MustNewName("."), + Type: privateUseType, + Class: ClassINET, + TTL: uint32(123), + }, + Body: &UnknownResource{ + // The realType() method is called, when + // packing, so Type must match the type + // claimed by the Header above. + Type: privateUseType, + Data: []byte{42, 42, 42, 42}, + }, + }, + }, + } +} + +func TestUnknownPackUnpack(t *testing.T) { + msg := smallTestMsgWithUnknownResource() + packed, err := msg.Pack() + if err != nil { + t.Fatalf("Failed to pack UnknownResource: %v", err) + } + + var receivedMsg Message + err = receivedMsg.Unpack(packed) + if err != nil { + t.Fatalf("Failed to unpack UnknownResource: %v", err) + } + + if len(receivedMsg.Answers) != 1 { + t.Fatalf("Got %d answers, wanted 1", len(receivedMsg.Answers)) + } + + unknownResource, ok := receivedMsg.Answers[0].Body.(*UnknownResource) + if !ok { + t.Fatalf("Parsed a %T, wanted an UnknownResource", receivedMsg.Answers[0].Body) + } + + wantBody := msg.Answers[0].Body + if !reflect.DeepEqual(wantBody, unknownResource) { + t.Fatalf("Unpacked resource does not match: %v vs %v", wantBody, unknownResource) + } +} + +func TestParseUnknownResource(t *testing.T) { + msg := smallTestMsgWithUnknownResource() + packed, err := msg.Pack() + if err != nil { + t.Fatalf("Failed to pack UnknownResource: %v", err) + } + + var p Parser + if _, err = p.Start(packed); err != nil { + t.Fatalf("Parser failed to start: %s", err) + } + if _, err = p.AllQuestions(); err != nil { + t.Fatalf("Failed to parse questions: %s", err) + } + + parsedHeader, err := p.AnswerHeader() + if err != nil { + t.Fatalf("Error reading answer header: %s", err) + } + wantHeader := msg.Answers[0].Header + if !reflect.DeepEqual(wantHeader, parsedHeader) { + t.Fatalf("Parsed header does not match: %v vs %v", wantHeader, wantHeader) + } + + parsedUnknownResource, err := p.UnknownResource() + if err != nil { + t.Fatalf("Failed to parse UnknownResource: %s", err) + } + wantBody := msg.Answers[0].Body + if !reflect.DeepEqual(wantBody, &parsedUnknownResource) { + t.Fatalf("Parsed resource does not match: %v vs %v", wantBody, &parsedUnknownResource) + } + + // Finish parsing the rest of the message to ensure that + // (*Parser).UnknownResource() leaves the parser in a consistent state. + if _, err = p.AnswerHeader(); err != ErrSectionDone { + t.Fatalf("Answer section should be fully parsed") + } + if _, err = p.AllAuthorities(); err != nil { + t.Fatalf("Failed to parse authorities: %s", err) + } + if _, err = p.AllAdditionals(); err != nil { + t.Fatalf("Failed to parse additionals: %s", err) + } +} + +// TestGoString tests that Message.GoString produces Go code that compiles to +// reproduce the Message. +// +// This test was produced as follows: +// 1. Run (*Message).GoString on largeTestMsg(). +// 2. Remove "dnsmessage." from the output. +// 3. Paste the result in the test to store it in msg. +// 4. Also put the original output in the test to store in want. +func TestGoString(t *testing.T) { + msg := Message{Header: Header{ID: 0, Response: true, OpCode: 0, Authoritative: true, Truncated: false, RecursionDesired: false, RecursionAvailable: false, RCode: RCodeSuccess}, Questions: []Question{Question{Name: MustNewName("foo.bar.example.com."), Type: TypeA, Class: ClassINET}}, Answers: []Resource{Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypeA, Class: ClassINET, TTL: 0, Length: 0}, Body: &AResource{A: [4]byte{127, 0, 0, 1}}}, Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypeA, Class: ClassINET, TTL: 0, Length: 0}, Body: &AResource{A: [4]byte{127, 0, 0, 2}}}, Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypeAAAA, Class: ClassINET, TTL: 0, Length: 0}, Body: &AAAAResource{AAAA: [16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}}, Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypeCNAME, Class: ClassINET, TTL: 0, Length: 0}, Body: &CNAMEResource{CNAME: MustNewName("alias.example.com.")}}, Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypeSOA, Class: ClassINET, TTL: 0, Length: 0}, Body: &SOAResource{NS: MustNewName("ns1.example.com."), MBox: MustNewName("mb.example.com."), Serial: 1, Refresh: 2, Retry: 3, Expire: 4, MinTTL: 5}}, Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypePTR, Class: ClassINET, TTL: 0, Length: 0}, Body: &PTRResource{PTR: MustNewName("ptr.example.com.")}}, Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypeMX, Class: ClassINET, TTL: 0, Length: 0}, Body: &MXResource{Pref: 7, MX: MustNewName("mx.example.com.")}}, Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypeSRV, Class: ClassINET, TTL: 0, Length: 0}, Body: &SRVResource{Priority: 8, Weight: 9, Port: 11, Target: MustNewName("srv.example.com.")}}, Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: 65362, Class: ClassINET, TTL: 0, Length: 0}, Body: &UnknownResource{Type: 65362, Data: []byte{42, 0, 43, 44}}}}, Authorities: []Resource{Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypeNS, Class: ClassINET, TTL: 0, Length: 0}, Body: &NSResource{NS: MustNewName("ns1.example.com.")}}, Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypeNS, Class: ClassINET, TTL: 0, Length: 0}, Body: &NSResource{NS: MustNewName("ns2.example.com.")}}}, Additionals: []Resource{Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypeTXT, Class: ClassINET, TTL: 0, Length: 0}, Body: &TXTResource{TXT: []string{"So Long\x2c and Thanks for All the Fish"}}}, Resource{Header: ResourceHeader{Name: MustNewName("foo.bar.example.com."), Type: TypeTXT, Class: ClassINET, TTL: 0, Length: 0}, Body: &TXTResource{TXT: []string{"Hamster Huey and the Gooey Kablooie"}}}, Resource{Header: ResourceHeader{Name: MustNewName("."), Type: TypeOPT, Class: 4096, TTL: 4261412864, Length: 0}, Body: &OPTResource{Options: []Option{Option{Code: 10, Data: []byte{1, 35, 69, 103, 137, 171, 205, 239}}}}}}} + + if !reflect.DeepEqual(msg, largeTestMsg()) { + t.Error("Message.GoString lost information or largeTestMsg changed: msg != largeTestMsg()") + } + got := msg.GoString() + + want := `dnsmessage.Message{Header: dnsmessage.Header{ID: 0, Response: true, OpCode: 0, Authoritative: true, Truncated: false, RecursionDesired: false, RecursionAvailable: false, RCode: dnsmessage.RCodeSuccess}, Questions: []dnsmessage.Question{dnsmessage.Question{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeA, Class: dnsmessage.ClassINET}}, Answers: []dnsmessage.Resource{dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeA, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.AResource{A: [4]byte{127, 0, 0, 1}}}, dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeA, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.AResource{A: [4]byte{127, 0, 0, 2}}}, dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeAAAA, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.AAAAResource{AAAA: [16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}}, dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeCNAME, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.CNAMEResource{CNAME: dnsmessage.MustNewName("alias.example.com.")}}, dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeSOA, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.SOAResource{NS: dnsmessage.MustNewName("ns1.example.com."), MBox: dnsmessage.MustNewName("mb.example.com."), Serial: 1, Refresh: 2, Retry: 3, Expire: 4, MinTTL: 5}}, dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypePTR, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.PTRResource{PTR: dnsmessage.MustNewName("ptr.example.com.")}}, dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeMX, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.MXResource{Pref: 7, MX: dnsmessage.MustNewName("mx.example.com.")}}, dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeSRV, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.SRVResource{Priority: 8, Weight: 9, Port: 11, Target: dnsmessage.MustNewName("srv.example.com.")}}, dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: 65362, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.UnknownResource{Type: 65362, Data: []byte{42, 0, 43, 44}}}}, Authorities: []dnsmessage.Resource{dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeNS, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.NSResource{NS: dnsmessage.MustNewName("ns1.example.com.")}}, dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeNS, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.NSResource{NS: dnsmessage.MustNewName("ns2.example.com.")}}}, Additionals: []dnsmessage.Resource{dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeTXT, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.TXTResource{TXT: []string{"So Long\x2c and Thanks for All the Fish"}}}, dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("foo.bar.example.com."), Type: dnsmessage.TypeTXT, Class: dnsmessage.ClassINET, TTL: 0, Length: 0}, Body: &dnsmessage.TXTResource{TXT: []string{"Hamster Huey and the Gooey Kablooie"}}}, dnsmessage.Resource{Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("."), Type: dnsmessage.TypeOPT, Class: 4096, TTL: 4261412864, Length: 0}, Body: &dnsmessage.OPTResource{Options: []dnsmessage.Option{dnsmessage.Option{Code: 10, Data: []byte{1, 35, 69, 103, 137, 171, 205, 239}}}}}}}` + + if got != want { + t.Errorf("got msg1.GoString() = %s\nwant = %s", got, want) + } +} + +func benchmarkParsingSetup() ([]byte, error) { + name := MustNewName("foo.bar.example.com.") + msg := Message{ + Header: Header{Response: true, Authoritative: true}, + Questions: []Question{ + { + Name: name, + Type: TypeA, + Class: ClassINET, + }, + }, + Answers: []Resource{ + { + ResourceHeader{ + Name: name, + Class: ClassINET, + }, + &AResource{[4]byte{}}, + }, + { + ResourceHeader{ + Name: name, + Class: ClassINET, + }, + &AAAAResource{[16]byte{}}, + }, + { + ResourceHeader{ + Name: name, + Class: ClassINET, + }, + &CNAMEResource{name}, + }, + { + ResourceHeader{ + Name: name, + Class: ClassINET, + }, + &NSResource{name}, + }, + }, + } + + buf, err := msg.Pack() + if err != nil { + return nil, fmt.Errorf("Message.Pack() = %v", err) + } + return buf, nil +} + +func benchmarkParsing(tb testing.TB, buf []byte) { + var p Parser + if _, err := p.Start(buf); err != nil { + tb.Fatal("Parser.Start(non-nil) =", err) + } + + for { + _, err := p.Question() + if err == ErrSectionDone { + break + } + if err != nil { + tb.Fatal("Parser.Question() =", err) + } + } + + for { + h, err := p.AnswerHeader() + if err == ErrSectionDone { + break + } + if err != nil { + tb.Fatal("Parser.AnswerHeader() =", err) + } + + switch h.Type { + case TypeA: + if _, err := p.AResource(); err != nil { + tb.Fatal("Parser.AResource() =", err) + } + case TypeAAAA: + if _, err := p.AAAAResource(); err != nil { + tb.Fatal("Parser.AAAAResource() =", err) + } + case TypeCNAME: + if _, err := p.CNAMEResource(); err != nil { + tb.Fatal("Parser.CNAMEResource() =", err) + } + case TypeNS: + if _, err := p.NSResource(); err != nil { + tb.Fatal("Parser.NSResource() =", err) + } + case TypeOPT: + if _, err := p.OPTResource(); err != nil { + tb.Fatal("Parser.OPTResource() =", err) + } + default: + tb.Fatalf("got unknown type: %T", h) + } + } +} + +func BenchmarkParsing(b *testing.B) { + buf, err := benchmarkParsingSetup() + if err != nil { + b.Fatal(err) + } + + b.ReportAllocs() + for i := 0; i < b.N; i++ { + benchmarkParsing(b, buf) + } +} + +func TestParsingAllocs(t *testing.T) { + buf, err := benchmarkParsingSetup() + if err != nil { + t.Fatal(err) + } + + if allocs := testing.AllocsPerRun(100, func() { benchmarkParsing(t, buf) }); allocs > 0.5 { + t.Errorf("allocations during parsing: got = %f, want ~0", allocs) + } +} + +func benchmarkBuildingSetup() (Name, []byte) { + name := MustNewName("foo.bar.example.com.") + buf := make([]byte, 0, packStartingCap) + return name, buf +} + +func benchmarkBuilding(tb testing.TB, name Name, buf []byte) { + bld := NewBuilder(buf, Header{Response: true, Authoritative: true}) + + if err := bld.StartQuestions(); err != nil { + tb.Fatal("Builder.StartQuestions() =", err) + } + q := Question{ + Name: name, + Type: TypeA, + Class: ClassINET, + } + if err := bld.Question(q); err != nil { + tb.Fatalf("Builder.Question(%+v) = %v", q, err) + } + + hdr := ResourceHeader{ + Name: name, + Class: ClassINET, + } + if err := bld.StartAnswers(); err != nil { + tb.Fatal("Builder.StartQuestions() =", err) + } + + ar := AResource{[4]byte{}} + if err := bld.AResource(hdr, ar); err != nil { + tb.Fatalf("Builder.AResource(%+v, %+v) = %v", hdr, ar, err) + } + + aaar := AAAAResource{[16]byte{}} + if err := bld.AAAAResource(hdr, aaar); err != nil { + tb.Fatalf("Builder.AAAAResource(%+v, %+v) = %v", hdr, aaar, err) + } + + cnr := CNAMEResource{name} + if err := bld.CNAMEResource(hdr, cnr); err != nil { + tb.Fatalf("Builder.CNAMEResource(%+v, %+v) = %v", hdr, cnr, err) + } + + nsr := NSResource{name} + if err := bld.NSResource(hdr, nsr); err != nil { + tb.Fatalf("Builder.NSResource(%+v, %+v) = %v", hdr, nsr, err) + } + + extrc := 0xfe0 | RCodeNotImplemented + if err := (&hdr).SetEDNS0(4096, extrc, true); err != nil { + tb.Fatalf("ResourceHeader.SetEDNS0(4096, %#x, true) = %v", extrc, err) + } + optr := OPTResource{} + if err := bld.OPTResource(hdr, optr); err != nil { + tb.Fatalf("Builder.OPTResource(%+v, %+v) = %v", hdr, optr, err) + } + + if _, err := bld.Finish(); err != nil { + tb.Fatal("Builder.Finish() =", err) + } +} + +func BenchmarkBuilding(b *testing.B) { + name, buf := benchmarkBuildingSetup() + b.ReportAllocs() + for i := 0; i < b.N; i++ { + benchmarkBuilding(b, name, buf) + } +} + +func TestBuildingAllocs(t *testing.T) { + name, buf := benchmarkBuildingSetup() + if allocs := testing.AllocsPerRun(100, func() { benchmarkBuilding(t, name, buf) }); allocs > 0.5 { + t.Errorf("allocations during building: got = %f, want ~0", allocs) + } +} + +func smallTestMsg() Message { + name := MustNewName("example.com.") + return Message{ + Header: Header{Response: true, Authoritative: true}, + Questions: []Question{ + { + Name: name, + Type: TypeA, + Class: ClassINET, + }, + }, + Answers: []Resource{ + { + ResourceHeader{ + Name: name, + Type: TypeA, + Class: ClassINET, + }, + &AResource{[4]byte{127, 0, 0, 1}}, + }, + }, + Authorities: []Resource{ + { + ResourceHeader{ + Name: name, + Type: TypeA, + Class: ClassINET, + }, + &AResource{[4]byte{127, 0, 0, 1}}, + }, + }, + Additionals: []Resource{ + { + ResourceHeader{ + Name: name, + Type: TypeA, + Class: ClassINET, + }, + &AResource{[4]byte{127, 0, 0, 1}}, + }, + }, + } +} + +func BenchmarkPack(b *testing.B) { + msg := largeTestMsg() + + b.ReportAllocs() + + for i := 0; i < b.N; i++ { + if _, err := msg.Pack(); err != nil { + b.Fatal("Message.Pack() =", err) + } + } +} + +func BenchmarkAppendPack(b *testing.B) { + msg := largeTestMsg() + buf := make([]byte, 0, packStartingCap) + + b.ReportAllocs() + + for i := 0; i < b.N; i++ { + if _, err := msg.AppendPack(buf[:0]); err != nil { + b.Fatal("Message.AppendPack() = ", err) + } + } +} + +func largeTestMsg() Message { + name := MustNewName("foo.bar.example.com.") + return Message{ + Header: Header{Response: true, Authoritative: true}, + Questions: []Question{ + { + Name: name, + Type: TypeA, + Class: ClassINET, + }, + }, + Answers: []Resource{ + { + ResourceHeader{ + Name: name, + Type: TypeA, + Class: ClassINET, + }, + &AResource{[4]byte{127, 0, 0, 1}}, + }, + { + ResourceHeader{ + Name: name, + Type: TypeA, + Class: ClassINET, + }, + &AResource{[4]byte{127, 0, 0, 2}}, + }, + { + ResourceHeader{ + Name: name, + Type: TypeAAAA, + Class: ClassINET, + }, + &AAAAResource{[16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}, + }, + { + ResourceHeader{ + Name: name, + Type: TypeCNAME, + Class: ClassINET, + }, + &CNAMEResource{MustNewName("alias.example.com.")}, + }, + { + ResourceHeader{ + Name: name, + Type: TypeSOA, + Class: ClassINET, + }, + &SOAResource{ + NS: MustNewName("ns1.example.com."), + MBox: MustNewName("mb.example.com."), + Serial: 1, + Refresh: 2, + Retry: 3, + Expire: 4, + MinTTL: 5, + }, + }, + { + ResourceHeader{ + Name: name, + Type: TypePTR, + Class: ClassINET, + }, + &PTRResource{MustNewName("ptr.example.com.")}, + }, + { + ResourceHeader{ + Name: name, + Type: TypeMX, + Class: ClassINET, + }, + &MXResource{ + 7, + MustNewName("mx.example.com."), + }, + }, + { + ResourceHeader{ + Name: name, + Type: TypeSRV, + Class: ClassINET, + }, + &SRVResource{ + 8, + 9, + 11, + MustNewName("srv.example.com."), + }, + }, + { + ResourceHeader{ + Name: name, + Type: privateUseType, + Class: ClassINET, + }, + &UnknownResource{ + Type: privateUseType, + Data: []byte{42, 0, 43, 44}, + }, + }, + }, + Authorities: []Resource{ + { + ResourceHeader{ + Name: name, + Type: TypeNS, + Class: ClassINET, + }, + &NSResource{MustNewName("ns1.example.com.")}, + }, + { + ResourceHeader{ + Name: name, + Type: TypeNS, + Class: ClassINET, + }, + &NSResource{MustNewName("ns2.example.com.")}, + }, + }, + Additionals: []Resource{ + { + ResourceHeader{ + Name: name, + Type: TypeTXT, + Class: ClassINET, + }, + &TXTResource{[]string{"So Long, and Thanks for All the Fish"}}, + }, + { + ResourceHeader{ + Name: name, + Type: TypeTXT, + Class: ClassINET, + }, + &TXTResource{[]string{"Hamster Huey and the Gooey Kablooie"}}, + }, + { + mustEDNS0ResourceHeader(4096, 0xfe0|RCodeSuccess, false), + &OPTResource{ + Options: []Option{ + { + Code: 10, // see RFC 7873 + Data: []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, + }, + }, + }, + }, + }, + } +} + +// This package is imported by the standard library net package +// and therefore must not use fmt. We'll catch a mistake when vendored +// into the standard library, but this test catches the mistake earlier. +func TestNoFmt(t *testing.T) { + files, err := filepath.Glob("*.go") + if err != nil { + t.Fatal(err) + } + for _, file := range files { + if strings.HasSuffix(file, "_test.go") { + continue + } + // Could use something complex like go/build or x/tools/go/packages, + // but there's no reason for "fmt" to appear (in quotes) in the source + // otherwise, so just use a simple substring search. + data, err := ioutil.ReadFile(file) + if err != nil { + t.Fatal(err) + } + if bytes.Contains(data, []byte(`"fmt"`)) { + t.Errorf(`%s: cannot import "fmt"`, file) + } + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/go.mod b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/go.mod new file mode 100644 index 000000000..7fd3c796a --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/go.mod @@ -0,0 +1,9 @@ +module golang.org/x/net + +go 1.17 + +require ( + golang.org/x/sys v0.0.0-20210423082822-04245dca01da + golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 + golang.org/x/text v0.3.6 +) diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/go.sum b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/go.sum new file mode 100644 index 000000000..634dd68c5 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/go.sum @@ -0,0 +1,8 @@ +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/atom.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/atom.go new file mode 100644 index 000000000..cd0a8ac15 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/atom.go @@ -0,0 +1,78 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package atom provides integer codes (also known as atoms) for a fixed set of +// frequently occurring HTML strings: tag names and attribute keys such as "p" +// and "id". +// +// Sharing an atom's name between all elements with the same tag can result in +// fewer string allocations when tokenizing and parsing HTML. Integer +// comparisons are also generally faster than string comparisons. +// +// The value of an atom's particular code is not guaranteed to stay the same +// between versions of this package. Neither is any ordering guaranteed: +// whether atom.H1 < atom.H2 may also change. The codes are not guaranteed to +// be dense. The only guarantees are that e.g. looking up "div" will yield +// atom.Div, calling atom.Div.String will return "div", and atom.Div != 0. +package atom // import "golang.org/x/net/html/atom" + +// Atom is an integer code for a string. The zero value maps to "". +type Atom uint32 + +// String returns the atom's name. +func (a Atom) String() string { + start := uint32(a >> 8) + n := uint32(a & 0xff) + if start+n > uint32(len(atomText)) { + return "" + } + return atomText[start : start+n] +} + +func (a Atom) string() string { + return atomText[a>>8 : a>>8+a&0xff] +} + +// fnv computes the FNV hash with an arbitrary starting value h. +func fnv(h uint32, s []byte) uint32 { + for i := range s { + h ^= uint32(s[i]) + h *= 16777619 + } + return h +} + +func match(s string, t []byte) bool { + for i, c := range t { + if s[i] != c { + return false + } + } + return true +} + +// Lookup returns the atom whose name is s. It returns zero if there is no +// such atom. The lookup is case sensitive. +func Lookup(s []byte) Atom { + if len(s) == 0 || len(s) > maxAtomLen { + return 0 + } + h := fnv(hash0, s) + if a := table[h&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) { + return a + } + if a := table[(h>>16)&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) { + return a + } + return 0 +} + +// String returns a string whose contents are equal to s. In that sense, it is +// equivalent to string(s) but may be more efficient. +func String(s []byte) string { + if a := Lookup(s); a != 0 { + return a.String() + } + return string(s) +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/atom_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/atom_test.go new file mode 100644 index 000000000..6e33704dd --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/atom_test.go @@ -0,0 +1,109 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package atom + +import ( + "sort" + "testing" +) + +func TestKnown(t *testing.T) { + for _, s := range testAtomList { + if atom := Lookup([]byte(s)); atom.String() != s { + t.Errorf("Lookup(%q) = %#x (%q)", s, uint32(atom), atom.String()) + } + } +} + +func TestHits(t *testing.T) { + for _, a := range table { + if a == 0 { + continue + } + got := Lookup([]byte(a.String())) + if got != a { + t.Errorf("Lookup(%q) = %#x, want %#x", a.String(), uint32(got), uint32(a)) + } + } +} + +func TestMisses(t *testing.T) { + testCases := []string{ + "", + "\x00", + "\xff", + "A", + "DIV", + "Div", + "dIV", + "aa", + "a\x00", + "ab", + "abb", + "abbr0", + "abbr ", + " abbr", + " a", + "acceptcharset", + "acceptCharset", + "accept_charset", + "h0", + "h1h2", + "h7", + "onClick", + "λ", + // The following string has the same hash (0xa1d7fab7) as "onmouseover". + "\x00\x00\x00\x00\x00\x50\x18\xae\x38\xd0\xb7", + } + for _, tc := range testCases { + got := Lookup([]byte(tc)) + if got != 0 { + t.Errorf("Lookup(%q): got %d, want 0", tc, got) + } + } +} + +func TestForeignObject(t *testing.T) { + const ( + afo = Foreignobject + afO = ForeignObject + sfo = "foreignobject" + sfO = "foreignObject" + ) + if got := Lookup([]byte(sfo)); got != afo { + t.Errorf("Lookup(%q): got %#v, want %#v", sfo, got, afo) + } + if got := Lookup([]byte(sfO)); got != afO { + t.Errorf("Lookup(%q): got %#v, want %#v", sfO, got, afO) + } + if got := afo.String(); got != sfo { + t.Errorf("Atom(%#v).String(): got %q, want %q", afo, got, sfo) + } + if got := afO.String(); got != sfO { + t.Errorf("Atom(%#v).String(): got %q, want %q", afO, got, sfO) + } +} + +func BenchmarkLookup(b *testing.B) { + sortedTable := make([]string, 0, len(table)) + for _, a := range table { + if a != 0 { + sortedTable = append(sortedTable, a.String()) + } + } + sort.Strings(sortedTable) + + x := make([][]byte, 1000) + for i := range x { + x[i] = []byte(sortedTable[i%len(sortedTable)]) + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + for _, s := range x { + Lookup(s) + } + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/gen.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/gen.go new file mode 100644 index 000000000..5b0aaf737 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/gen.go @@ -0,0 +1,713 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build ignore +// +build ignore + +//go:generate go run gen.go +//go:generate go run gen.go -test + +package main + +import ( + "bytes" + "flag" + "fmt" + "go/format" + "io/ioutil" + "math/rand" + "os" + "sort" + "strings" +) + +// identifier converts s to a Go exported identifier. +// It converts "div" to "Div" and "accept-charset" to "AcceptCharset". +func identifier(s string) string { + b := make([]byte, 0, len(s)) + cap := true + for _, c := range s { + if c == '-' { + cap = true + continue + } + if cap && 'a' <= c && c <= 'z' { + c -= 'a' - 'A' + } + cap = false + b = append(b, byte(c)) + } + return string(b) +} + +var test = flag.Bool("test", false, "generate table_test.go") + +func genFile(name string, buf *bytes.Buffer) { + b, err := format.Source(buf.Bytes()) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + if err := ioutil.WriteFile(name, b, 0644); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func main() { + flag.Parse() + + var all []string + all = append(all, elements...) + all = append(all, attributes...) + all = append(all, eventHandlers...) + all = append(all, extra...) + sort.Strings(all) + + // uniq - lists have dups + w := 0 + for _, s := range all { + if w == 0 || all[w-1] != s { + all[w] = s + w++ + } + } + all = all[:w] + + if *test { + var buf bytes.Buffer + fmt.Fprintln(&buf, "// Code generated by go generate gen.go; DO NOT EDIT.\n") + fmt.Fprintln(&buf, "//go:generate go run gen.go -test\n") + fmt.Fprintln(&buf, "package atom\n") + fmt.Fprintln(&buf, "var testAtomList = []string{") + for _, s := range all { + fmt.Fprintf(&buf, "\t%q,\n", s) + } + fmt.Fprintln(&buf, "}") + + genFile("table_test.go", &buf) + return + } + + // Find hash that minimizes table size. + var best *table + for i := 0; i < 1000000; i++ { + if best != nil && 1<<(best.k-1) < len(all) { + break + } + h := rand.Uint32() + for k := uint(0); k <= 16; k++ { + if best != nil && k >= best.k { + break + } + var t table + if t.init(h, k, all) { + best = &t + break + } + } + } + if best == nil { + fmt.Fprintf(os.Stderr, "failed to construct string table\n") + os.Exit(1) + } + + // Lay out strings, using overlaps when possible. + layout := append([]string{}, all...) + + // Remove strings that are substrings of other strings + for changed := true; changed; { + changed = false + for i, s := range layout { + if s == "" { + continue + } + for j, t := range layout { + if i != j && t != "" && strings.Contains(s, t) { + changed = true + layout[j] = "" + } + } + } + } + + // Join strings where one suffix matches another prefix. + for { + // Find best i, j, k such that layout[i][len-k:] == layout[j][:k], + // maximizing overlap length k. + besti := -1 + bestj := -1 + bestk := 0 + for i, s := range layout { + if s == "" { + continue + } + for j, t := range layout { + if i == j { + continue + } + for k := bestk + 1; k <= len(s) && k <= len(t); k++ { + if s[len(s)-k:] == t[:k] { + besti = i + bestj = j + bestk = k + } + } + } + } + if bestk > 0 { + layout[besti] += layout[bestj][bestk:] + layout[bestj] = "" + continue + } + break + } + + text := strings.Join(layout, "") + + atom := map[string]uint32{} + for _, s := range all { + off := strings.Index(text, s) + if off < 0 { + panic("lost string " + s) + } + atom[s] = uint32(off<<8 | len(s)) + } + + var buf bytes.Buffer + // Generate the Go code. + fmt.Fprintln(&buf, "// Code generated by go generate gen.go; DO NOT EDIT.\n") + fmt.Fprintln(&buf, "//go:generate go run gen.go\n") + fmt.Fprintln(&buf, "package atom\n\nconst (") + + // compute max len + maxLen := 0 + for _, s := range all { + if maxLen < len(s) { + maxLen = len(s) + } + fmt.Fprintf(&buf, "\t%s Atom = %#x\n", identifier(s), atom[s]) + } + fmt.Fprintln(&buf, ")\n") + + fmt.Fprintf(&buf, "const hash0 = %#x\n\n", best.h0) + fmt.Fprintf(&buf, "const maxAtomLen = %d\n\n", maxLen) + + fmt.Fprintf(&buf, "var table = [1<<%d]Atom{\n", best.k) + for i, s := range best.tab { + if s == "" { + continue + } + fmt.Fprintf(&buf, "\t%#x: %#x, // %s\n", i, atom[s], s) + } + fmt.Fprintf(&buf, "}\n") + datasize := (1 << best.k) * 4 + + fmt.Fprintln(&buf, "const atomText =") + textsize := len(text) + for len(text) > 60 { + fmt.Fprintf(&buf, "\t%q +\n", text[:60]) + text = text[60:] + } + fmt.Fprintf(&buf, "\t%q\n\n", text) + + genFile("table.go", &buf) + + fmt.Fprintf(os.Stdout, "%d atoms; %d string bytes + %d tables = %d total data\n", len(all), textsize, datasize, textsize+datasize) +} + +type byLen []string + +func (x byLen) Less(i, j int) bool { return len(x[i]) > len(x[j]) } +func (x byLen) Swap(i, j int) { x[i], x[j] = x[j], x[i] } +func (x byLen) Len() int { return len(x) } + +// fnv computes the FNV hash with an arbitrary starting value h. +func fnv(h uint32, s string) uint32 { + for i := 0; i < len(s); i++ { + h ^= uint32(s[i]) + h *= 16777619 + } + return h +} + +// A table represents an attempt at constructing the lookup table. +// The lookup table uses cuckoo hashing, meaning that each string +// can be found in one of two positions. +type table struct { + h0 uint32 + k uint + mask uint32 + tab []string +} + +// hash returns the two hashes for s. +func (t *table) hash(s string) (h1, h2 uint32) { + h := fnv(t.h0, s) + h1 = h & t.mask + h2 = (h >> 16) & t.mask + return +} + +// init initializes the table with the given parameters. +// h0 is the initial hash value, +// k is the number of bits of hash value to use, and +// x is the list of strings to store in the table. +// init returns false if the table cannot be constructed. +func (t *table) init(h0 uint32, k uint, x []string) bool { + t.h0 = h0 + t.k = k + t.tab = make([]string, 1< len(t.tab) { + return false + } + s := t.tab[i] + h1, h2 := t.hash(s) + j := h1 + h2 - i + if t.tab[j] != "" && !t.push(j, depth+1) { + return false + } + t.tab[j] = s + return true +} + +// The lists of element names and attribute keys were taken from +// https://html.spec.whatwg.org/multipage/indices.html#index +// as of the "HTML Living Standard - Last Updated 16 April 2018" version. + +// "command", "keygen" and "menuitem" have been removed from the spec, +// but are kept here for backwards compatibility. +var elements = []string{ + "a", + "abbr", + "address", + "area", + "article", + "aside", + "audio", + "b", + "base", + "bdi", + "bdo", + "blockquote", + "body", + "br", + "button", + "canvas", + "caption", + "cite", + "code", + "col", + "colgroup", + "command", + "data", + "datalist", + "dd", + "del", + "details", + "dfn", + "dialog", + "div", + "dl", + "dt", + "em", + "embed", + "fieldset", + "figcaption", + "figure", + "footer", + "form", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "head", + "header", + "hgroup", + "hr", + "html", + "i", + "iframe", + "img", + "input", + "ins", + "kbd", + "keygen", + "label", + "legend", + "li", + "link", + "main", + "map", + "mark", + "menu", + "menuitem", + "meta", + "meter", + "nav", + "noscript", + "object", + "ol", + "optgroup", + "option", + "output", + "p", + "param", + "picture", + "pre", + "progress", + "q", + "rp", + "rt", + "ruby", + "s", + "samp", + "script", + "section", + "select", + "slot", + "small", + "source", + "span", + "strong", + "style", + "sub", + "summary", + "sup", + "table", + "tbody", + "td", + "template", + "textarea", + "tfoot", + "th", + "thead", + "time", + "title", + "tr", + "track", + "u", + "ul", + "var", + "video", + "wbr", +} + +// https://html.spec.whatwg.org/multipage/indices.html#attributes-3 +// +// "challenge", "command", "contextmenu", "dropzone", "icon", "keytype", "mediagroup", +// "radiogroup", "spellcheck", "scoped", "seamless", "sortable" and "sorted" have been removed from the spec, +// but are kept here for backwards compatibility. +var attributes = []string{ + "abbr", + "accept", + "accept-charset", + "accesskey", + "action", + "allowfullscreen", + "allowpaymentrequest", + "allowusermedia", + "alt", + "as", + "async", + "autocomplete", + "autofocus", + "autoplay", + "challenge", + "charset", + "checked", + "cite", + "class", + "color", + "cols", + "colspan", + "command", + "content", + "contenteditable", + "contextmenu", + "controls", + "coords", + "crossorigin", + "data", + "datetime", + "default", + "defer", + "dir", + "dirname", + "disabled", + "download", + "draggable", + "dropzone", + "enctype", + "for", + "form", + "formaction", + "formenctype", + "formmethod", + "formnovalidate", + "formtarget", + "headers", + "height", + "hidden", + "high", + "href", + "hreflang", + "http-equiv", + "icon", + "id", + "inputmode", + "integrity", + "is", + "ismap", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "keytype", + "kind", + "label", + "lang", + "list", + "loop", + "low", + "manifest", + "max", + "maxlength", + "media", + "mediagroup", + "method", + "min", + "minlength", + "multiple", + "muted", + "name", + "nomodule", + "nonce", + "novalidate", + "open", + "optimum", + "pattern", + "ping", + "placeholder", + "playsinline", + "poster", + "preload", + "radiogroup", + "readonly", + "referrerpolicy", + "rel", + "required", + "reversed", + "rows", + "rowspan", + "sandbox", + "spellcheck", + "scope", + "scoped", + "seamless", + "selected", + "shape", + "size", + "sizes", + "sortable", + "sorted", + "slot", + "span", + "spellcheck", + "src", + "srcdoc", + "srclang", + "srcset", + "start", + "step", + "style", + "tabindex", + "target", + "title", + "translate", + "type", + "typemustmatch", + "updateviacache", + "usemap", + "value", + "width", + "workertype", + "wrap", +} + +// "onautocomplete", "onautocompleteerror", "onmousewheel", +// "onshow" and "onsort" have been removed from the spec, +// but are kept here for backwards compatibility. +var eventHandlers = []string{ + "onabort", + "onautocomplete", + "onautocompleteerror", + "onauxclick", + "onafterprint", + "onbeforeprint", + "onbeforeunload", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncopy", + "oncuechange", + "oncut", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragexit", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onhashchange", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onlanguagechange", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadend", + "onloadstart", + "onmessage", + "onmessageerror", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onwheel", + "onoffline", + "ononline", + "onpagehide", + "onpageshow", + "onpaste", + "onpause", + "onplay", + "onplaying", + "onpopstate", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onrejectionhandled", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onsort", + "onstalled", + "onstorage", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onunhandledrejection", + "onunload", + "onvolumechange", + "onwaiting", +} + +// extra are ad-hoc values not covered by any of the lists above. +var extra = []string{ + "acronym", + "align", + "annotation", + "annotation-xml", + "applet", + "basefont", + "bgsound", + "big", + "blink", + "center", + "color", + "desc", + "face", + "font", + "foreignObject", // HTML is case-insensitive, but SVG-embedded-in-HTML is case-sensitive. + "foreignobject", + "frame", + "frameset", + "image", + "isindex", // "isindex" has been removed from the spec, but are kept here for backwards compatibility. + "listing", + "malignmark", + "marquee", + "math", + "mglyph", + "mi", + "mn", + "mo", + "ms", + "mtext", + "nobr", + "noembed", + "noframes", + "plaintext", + "prompt", + "public", + "rb", + "rtc", + "spacer", + "strike", + "svg", + "system", + "tt", + "xmp", +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/table.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/table.go new file mode 100644 index 000000000..2a938864c --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/table.go @@ -0,0 +1,783 @@ +// Code generated by go generate gen.go; DO NOT EDIT. + +//go:generate go run gen.go + +package atom + +const ( + A Atom = 0x1 + Abbr Atom = 0x4 + Accept Atom = 0x1a06 + AcceptCharset Atom = 0x1a0e + Accesskey Atom = 0x2c09 + Acronym Atom = 0xaa07 + Action Atom = 0x27206 + Address Atom = 0x6f307 + Align Atom = 0xb105 + Allowfullscreen Atom = 0x2080f + Allowpaymentrequest Atom = 0xc113 + Allowusermedia Atom = 0xdd0e + Alt Atom = 0xf303 + Annotation Atom = 0x1c90a + AnnotationXml Atom = 0x1c90e + Applet Atom = 0x31906 + Area Atom = 0x35604 + Article Atom = 0x3fc07 + As Atom = 0x3c02 + Aside Atom = 0x10705 + Async Atom = 0xff05 + Audio Atom = 0x11505 + Autocomplete Atom = 0x2780c + Autofocus Atom = 0x12109 + Autoplay Atom = 0x13c08 + B Atom = 0x101 + Base Atom = 0x3b04 + Basefont Atom = 0x3b08 + Bdi Atom = 0xba03 + Bdo Atom = 0x14b03 + Bgsound Atom = 0x15e07 + Big Atom = 0x17003 + Blink Atom = 0x17305 + Blockquote Atom = 0x1870a + Body Atom = 0x2804 + Br Atom = 0x202 + Button Atom = 0x19106 + Canvas Atom = 0x10306 + Caption Atom = 0x23107 + Center Atom = 0x22006 + Challenge Atom = 0x29b09 + Charset Atom = 0x2107 + Checked Atom = 0x47907 + Cite Atom = 0x19c04 + Class Atom = 0x56405 + Code Atom = 0x5c504 + Col Atom = 0x1ab03 + Colgroup Atom = 0x1ab08 + Color Atom = 0x1bf05 + Cols Atom = 0x1c404 + Colspan Atom = 0x1c407 + Command Atom = 0x1d707 + Content Atom = 0x58b07 + Contenteditable Atom = 0x58b0f + Contextmenu Atom = 0x3800b + Controls Atom = 0x1de08 + Coords Atom = 0x1ea06 + Crossorigin Atom = 0x1fb0b + Data Atom = 0x4a504 + Datalist Atom = 0x4a508 + Datetime Atom = 0x2b808 + Dd Atom = 0x2d702 + Default Atom = 0x10a07 + Defer Atom = 0x5c705 + Del Atom = 0x45203 + Desc Atom = 0x56104 + Details Atom = 0x7207 + Dfn Atom = 0x8703 + Dialog Atom = 0xbb06 + Dir Atom = 0x9303 + Dirname Atom = 0x9307 + Disabled Atom = 0x16408 + Div Atom = 0x16b03 + Dl Atom = 0x5e602 + Download Atom = 0x46308 + Draggable Atom = 0x17a09 + Dropzone Atom = 0x40508 + Dt Atom = 0x64b02 + Em Atom = 0x6e02 + Embed Atom = 0x6e05 + Enctype Atom = 0x28d07 + Face Atom = 0x21e04 + Fieldset Atom = 0x22608 + Figcaption Atom = 0x22e0a + Figure Atom = 0x24806 + Font Atom = 0x3f04 + Footer Atom = 0xf606 + For Atom = 0x25403 + ForeignObject Atom = 0x2540d + Foreignobject Atom = 0x2610d + Form Atom = 0x26e04 + Formaction Atom = 0x26e0a + Formenctype Atom = 0x2890b + Formmethod Atom = 0x2a40a + Formnovalidate Atom = 0x2ae0e + Formtarget Atom = 0x2c00a + Frame Atom = 0x8b05 + Frameset Atom = 0x8b08 + H1 Atom = 0x15c02 + H2 Atom = 0x2de02 + H3 Atom = 0x30d02 + H4 Atom = 0x34502 + H5 Atom = 0x34f02 + H6 Atom = 0x64d02 + Head Atom = 0x33104 + Header Atom = 0x33106 + Headers Atom = 0x33107 + Height Atom = 0x5206 + Hgroup Atom = 0x2ca06 + Hidden Atom = 0x2d506 + High Atom = 0x2db04 + Hr Atom = 0x15702 + Href Atom = 0x2e004 + Hreflang Atom = 0x2e008 + Html Atom = 0x5604 + HttpEquiv Atom = 0x2e80a + I Atom = 0x601 + Icon Atom = 0x58a04 + Id Atom = 0x10902 + Iframe Atom = 0x2fc06 + Image Atom = 0x30205 + Img Atom = 0x30703 + Input Atom = 0x44b05 + Inputmode Atom = 0x44b09 + Ins Atom = 0x20403 + Integrity Atom = 0x23f09 + Is Atom = 0x16502 + Isindex Atom = 0x30f07 + Ismap Atom = 0x31605 + Itemid Atom = 0x38b06 + Itemprop Atom = 0x19d08 + Itemref Atom = 0x3cd07 + Itemscope Atom = 0x67109 + Itemtype Atom = 0x31f08 + Kbd Atom = 0xb903 + Keygen Atom = 0x3206 + Keytype Atom = 0xd607 + Kind Atom = 0x17704 + Label Atom = 0x5905 + Lang Atom = 0x2e404 + Legend Atom = 0x18106 + Li Atom = 0xb202 + Link Atom = 0x17404 + List Atom = 0x4a904 + Listing Atom = 0x4a907 + Loop Atom = 0x5d04 + Low Atom = 0xc303 + Main Atom = 0x1004 + Malignmark Atom = 0xb00a + Manifest Atom = 0x6d708 + Map Atom = 0x31803 + Mark Atom = 0xb604 + Marquee Atom = 0x32707 + Math Atom = 0x32e04 + Max Atom = 0x33d03 + Maxlength Atom = 0x33d09 + Media Atom = 0xe605 + Mediagroup Atom = 0xe60a + Menu Atom = 0x38704 + Menuitem Atom = 0x38708 + Meta Atom = 0x4b804 + Meter Atom = 0x9805 + Method Atom = 0x2a806 + Mglyph Atom = 0x30806 + Mi Atom = 0x34702 + Min Atom = 0x34703 + Minlength Atom = 0x34709 + Mn Atom = 0x2b102 + Mo Atom = 0xa402 + Ms Atom = 0x67402 + Mtext Atom = 0x35105 + Multiple Atom = 0x35f08 + Muted Atom = 0x36705 + Name Atom = 0x9604 + Nav Atom = 0x1303 + Nobr Atom = 0x3704 + Noembed Atom = 0x6c07 + Noframes Atom = 0x8908 + Nomodule Atom = 0xa208 + Nonce Atom = 0x1a605 + Noscript Atom = 0x21608 + Novalidate Atom = 0x2b20a + Object Atom = 0x26806 + Ol Atom = 0x13702 + Onabort Atom = 0x19507 + Onafterprint Atom = 0x2360c + Onautocomplete Atom = 0x2760e + Onautocompleteerror Atom = 0x27613 + Onauxclick Atom = 0x61f0a + Onbeforeprint Atom = 0x69e0d + Onbeforeunload Atom = 0x6e70e + Onblur Atom = 0x56d06 + Oncancel Atom = 0x11908 + Oncanplay Atom = 0x14d09 + Oncanplaythrough Atom = 0x14d10 + Onchange Atom = 0x41b08 + Onclick Atom = 0x2f507 + Onclose Atom = 0x36c07 + Oncontextmenu Atom = 0x37e0d + Oncopy Atom = 0x39106 + Oncuechange Atom = 0x3970b + Oncut Atom = 0x3a205 + Ondblclick Atom = 0x3a70a + Ondrag Atom = 0x3b106 + Ondragend Atom = 0x3b109 + Ondragenter Atom = 0x3ba0b + Ondragexit Atom = 0x3c50a + Ondragleave Atom = 0x3df0b + Ondragover Atom = 0x3ea0a + Ondragstart Atom = 0x3f40b + Ondrop Atom = 0x40306 + Ondurationchange Atom = 0x41310 + Onemptied Atom = 0x40a09 + Onended Atom = 0x42307 + Onerror Atom = 0x42a07 + Onfocus Atom = 0x43107 + Onhashchange Atom = 0x43d0c + Oninput Atom = 0x44907 + Oninvalid Atom = 0x45509 + Onkeydown Atom = 0x45e09 + Onkeypress Atom = 0x46b0a + Onkeyup Atom = 0x48007 + Onlanguagechange Atom = 0x48d10 + Onload Atom = 0x49d06 + Onloadeddata Atom = 0x49d0c + Onloadedmetadata Atom = 0x4b010 + Onloadend Atom = 0x4c609 + Onloadstart Atom = 0x4cf0b + Onmessage Atom = 0x4da09 + Onmessageerror Atom = 0x4da0e + Onmousedown Atom = 0x4e80b + Onmouseenter Atom = 0x4f30c + Onmouseleave Atom = 0x4ff0c + Onmousemove Atom = 0x50b0b + Onmouseout Atom = 0x5160a + Onmouseover Atom = 0x5230b + Onmouseup Atom = 0x52e09 + Onmousewheel Atom = 0x53c0c + Onoffline Atom = 0x54809 + Ononline Atom = 0x55108 + Onpagehide Atom = 0x5590a + Onpageshow Atom = 0x5730a + Onpaste Atom = 0x57f07 + Onpause Atom = 0x59a07 + Onplay Atom = 0x5a406 + Onplaying Atom = 0x5a409 + Onpopstate Atom = 0x5ad0a + Onprogress Atom = 0x5b70a + Onratechange Atom = 0x5cc0c + Onrejectionhandled Atom = 0x5d812 + Onreset Atom = 0x5ea07 + Onresize Atom = 0x5f108 + Onscroll Atom = 0x60008 + Onsecuritypolicyviolation Atom = 0x60819 + Onseeked Atom = 0x62908 + Onseeking Atom = 0x63109 + Onselect Atom = 0x63a08 + Onshow Atom = 0x64406 + Onsort Atom = 0x64f06 + Onstalled Atom = 0x65909 + Onstorage Atom = 0x66209 + Onsubmit Atom = 0x66b08 + Onsuspend Atom = 0x67b09 + Ontimeupdate Atom = 0x400c + Ontoggle Atom = 0x68408 + Onunhandledrejection Atom = 0x68c14 + Onunload Atom = 0x6ab08 + Onvolumechange Atom = 0x6b30e + Onwaiting Atom = 0x6c109 + Onwheel Atom = 0x6ca07 + Open Atom = 0x1a304 + Optgroup Atom = 0x5f08 + Optimum Atom = 0x6d107 + Option Atom = 0x6e306 + Output Atom = 0x51d06 + P Atom = 0xc01 + Param Atom = 0xc05 + Pattern Atom = 0x6607 + Picture Atom = 0x7b07 + Ping Atom = 0xef04 + Placeholder Atom = 0x1310b + Plaintext Atom = 0x1b209 + Playsinline Atom = 0x1400b + Poster Atom = 0x2cf06 + Pre Atom = 0x47003 + Preload Atom = 0x48607 + Progress Atom = 0x5b908 + Prompt Atom = 0x53606 + Public Atom = 0x58606 + Q Atom = 0xcf01 + Radiogroup Atom = 0x30a + Rb Atom = 0x3a02 + Readonly Atom = 0x35708 + Referrerpolicy Atom = 0x3d10e + Rel Atom = 0x48703 + Required Atom = 0x24c08 + Reversed Atom = 0x8008 + Rows Atom = 0x9c04 + Rowspan Atom = 0x9c07 + Rp Atom = 0x23c02 + Rt Atom = 0x19a02 + Rtc Atom = 0x19a03 + Ruby Atom = 0xfb04 + S Atom = 0x2501 + Samp Atom = 0x7804 + Sandbox Atom = 0x12907 + Scope Atom = 0x67505 + Scoped Atom = 0x67506 + Script Atom = 0x21806 + Seamless Atom = 0x37108 + Section Atom = 0x56807 + Select Atom = 0x63c06 + Selected Atom = 0x63c08 + Shape Atom = 0x1e505 + Size Atom = 0x5f504 + Sizes Atom = 0x5f505 + Slot Atom = 0x1ef04 + Small Atom = 0x20605 + Sortable Atom = 0x65108 + Sorted Atom = 0x33706 + Source Atom = 0x37806 + Spacer Atom = 0x43706 + Span Atom = 0x9f04 + Spellcheck Atom = 0x4740a + Src Atom = 0x5c003 + Srcdoc Atom = 0x5c006 + Srclang Atom = 0x5f907 + Srcset Atom = 0x6f906 + Start Atom = 0x3fa05 + Step Atom = 0x58304 + Strike Atom = 0xd206 + Strong Atom = 0x6dd06 + Style Atom = 0x6ff05 + Sub Atom = 0x66d03 + Summary Atom = 0x70407 + Sup Atom = 0x70b03 + Svg Atom = 0x70e03 + System Atom = 0x71106 + Tabindex Atom = 0x4be08 + Table Atom = 0x59505 + Target Atom = 0x2c406 + Tbody Atom = 0x2705 + Td Atom = 0x9202 + Template Atom = 0x71408 + Textarea Atom = 0x35208 + Tfoot Atom = 0xf505 + Th Atom = 0x15602 + Thead Atom = 0x33005 + Time Atom = 0x4204 + Title Atom = 0x11005 + Tr Atom = 0xcc02 + Track Atom = 0x1ba05 + Translate Atom = 0x1f209 + Tt Atom = 0x6802 + Type Atom = 0xd904 + Typemustmatch Atom = 0x2900d + U Atom = 0xb01 + Ul Atom = 0xa702 + Updateviacache Atom = 0x460e + Usemap Atom = 0x59e06 + Value Atom = 0x1505 + Var Atom = 0x16d03 + Video Atom = 0x2f105 + Wbr Atom = 0x57c03 + Width Atom = 0x64905 + Workertype Atom = 0x71c0a + Wrap Atom = 0x72604 + Xmp Atom = 0x12f03 +) + +const hash0 = 0x81cdf10e + +const maxAtomLen = 25 + +var table = [1 << 9]Atom{ + 0x1: 0xe60a, // mediagroup + 0x2: 0x2e404, // lang + 0x4: 0x2c09, // accesskey + 0x5: 0x8b08, // frameset + 0x7: 0x63a08, // onselect + 0x8: 0x71106, // system + 0xa: 0x64905, // width + 0xc: 0x2890b, // formenctype + 0xd: 0x13702, // ol + 0xe: 0x3970b, // oncuechange + 0x10: 0x14b03, // bdo + 0x11: 0x11505, // audio + 0x12: 0x17a09, // draggable + 0x14: 0x2f105, // video + 0x15: 0x2b102, // mn + 0x16: 0x38704, // menu + 0x17: 0x2cf06, // poster + 0x19: 0xf606, // footer + 0x1a: 0x2a806, // method + 0x1b: 0x2b808, // datetime + 0x1c: 0x19507, // onabort + 0x1d: 0x460e, // updateviacache + 0x1e: 0xff05, // async + 0x1f: 0x49d06, // onload + 0x21: 0x11908, // oncancel + 0x22: 0x62908, // onseeked + 0x23: 0x30205, // image + 0x24: 0x5d812, // onrejectionhandled + 0x26: 0x17404, // link + 0x27: 0x51d06, // output + 0x28: 0x33104, // head + 0x29: 0x4ff0c, // onmouseleave + 0x2a: 0x57f07, // onpaste + 0x2b: 0x5a409, // onplaying + 0x2c: 0x1c407, // colspan + 0x2f: 0x1bf05, // color + 0x30: 0x5f504, // size + 0x31: 0x2e80a, // http-equiv + 0x33: 0x601, // i + 0x34: 0x5590a, // onpagehide + 0x35: 0x68c14, // onunhandledrejection + 0x37: 0x42a07, // onerror + 0x3a: 0x3b08, // basefont + 0x3f: 0x1303, // nav + 0x40: 0x17704, // kind + 0x41: 0x35708, // readonly + 0x42: 0x30806, // mglyph + 0x44: 0xb202, // li + 0x46: 0x2d506, // hidden + 0x47: 0x70e03, // svg + 0x48: 0x58304, // step + 0x49: 0x23f09, // integrity + 0x4a: 0x58606, // public + 0x4c: 0x1ab03, // col + 0x4d: 0x1870a, // blockquote + 0x4e: 0x34f02, // h5 + 0x50: 0x5b908, // progress + 0x51: 0x5f505, // sizes + 0x52: 0x34502, // h4 + 0x56: 0x33005, // thead + 0x57: 0xd607, // keytype + 0x58: 0x5b70a, // onprogress + 0x59: 0x44b09, // inputmode + 0x5a: 0x3b109, // ondragend + 0x5d: 0x3a205, // oncut + 0x5e: 0x43706, // spacer + 0x5f: 0x1ab08, // colgroup + 0x62: 0x16502, // is + 0x65: 0x3c02, // as + 0x66: 0x54809, // onoffline + 0x67: 0x33706, // sorted + 0x69: 0x48d10, // onlanguagechange + 0x6c: 0x43d0c, // onhashchange + 0x6d: 0x9604, // name + 0x6e: 0xf505, // tfoot + 0x6f: 0x56104, // desc + 0x70: 0x33d03, // max + 0x72: 0x1ea06, // coords + 0x73: 0x30d02, // h3 + 0x74: 0x6e70e, // onbeforeunload + 0x75: 0x9c04, // rows + 0x76: 0x63c06, // select + 0x77: 0x9805, // meter + 0x78: 0x38b06, // itemid + 0x79: 0x53c0c, // onmousewheel + 0x7a: 0x5c006, // srcdoc + 0x7d: 0x1ba05, // track + 0x7f: 0x31f08, // itemtype + 0x82: 0xa402, // mo + 0x83: 0x41b08, // onchange + 0x84: 0x33107, // headers + 0x85: 0x5cc0c, // onratechange + 0x86: 0x60819, // onsecuritypolicyviolation + 0x88: 0x4a508, // datalist + 0x89: 0x4e80b, // onmousedown + 0x8a: 0x1ef04, // slot + 0x8b: 0x4b010, // onloadedmetadata + 0x8c: 0x1a06, // accept + 0x8d: 0x26806, // object + 0x91: 0x6b30e, // onvolumechange + 0x92: 0x2107, // charset + 0x93: 0x27613, // onautocompleteerror + 0x94: 0xc113, // allowpaymentrequest + 0x95: 0x2804, // body + 0x96: 0x10a07, // default + 0x97: 0x63c08, // selected + 0x98: 0x21e04, // face + 0x99: 0x1e505, // shape + 0x9b: 0x68408, // ontoggle + 0x9e: 0x64b02, // dt + 0x9f: 0xb604, // mark + 0xa1: 0xb01, // u + 0xa4: 0x6ab08, // onunload + 0xa5: 0x5d04, // loop + 0xa6: 0x16408, // disabled + 0xaa: 0x42307, // onended + 0xab: 0xb00a, // malignmark + 0xad: 0x67b09, // onsuspend + 0xae: 0x35105, // mtext + 0xaf: 0x64f06, // onsort + 0xb0: 0x19d08, // itemprop + 0xb3: 0x67109, // itemscope + 0xb4: 0x17305, // blink + 0xb6: 0x3b106, // ondrag + 0xb7: 0xa702, // ul + 0xb8: 0x26e04, // form + 0xb9: 0x12907, // sandbox + 0xba: 0x8b05, // frame + 0xbb: 0x1505, // value + 0xbc: 0x66209, // onstorage + 0xbf: 0xaa07, // acronym + 0xc0: 0x19a02, // rt + 0xc2: 0x202, // br + 0xc3: 0x22608, // fieldset + 0xc4: 0x2900d, // typemustmatch + 0xc5: 0xa208, // nomodule + 0xc6: 0x6c07, // noembed + 0xc7: 0x69e0d, // onbeforeprint + 0xc8: 0x19106, // button + 0xc9: 0x2f507, // onclick + 0xca: 0x70407, // summary + 0xcd: 0xfb04, // ruby + 0xce: 0x56405, // class + 0xcf: 0x3f40b, // ondragstart + 0xd0: 0x23107, // caption + 0xd4: 0xdd0e, // allowusermedia + 0xd5: 0x4cf0b, // onloadstart + 0xd9: 0x16b03, // div + 0xda: 0x4a904, // list + 0xdb: 0x32e04, // math + 0xdc: 0x44b05, // input + 0xdf: 0x3ea0a, // ondragover + 0xe0: 0x2de02, // h2 + 0xe2: 0x1b209, // plaintext + 0xe4: 0x4f30c, // onmouseenter + 0xe7: 0x47907, // checked + 0xe8: 0x47003, // pre + 0xea: 0x35f08, // multiple + 0xeb: 0xba03, // bdi + 0xec: 0x33d09, // maxlength + 0xed: 0xcf01, // q + 0xee: 0x61f0a, // onauxclick + 0xf0: 0x57c03, // wbr + 0xf2: 0x3b04, // base + 0xf3: 0x6e306, // option + 0xf5: 0x41310, // ondurationchange + 0xf7: 0x8908, // noframes + 0xf9: 0x40508, // dropzone + 0xfb: 0x67505, // scope + 0xfc: 0x8008, // reversed + 0xfd: 0x3ba0b, // ondragenter + 0xfe: 0x3fa05, // start + 0xff: 0x12f03, // xmp + 0x100: 0x5f907, // srclang + 0x101: 0x30703, // img + 0x104: 0x101, // b + 0x105: 0x25403, // for + 0x106: 0x10705, // aside + 0x107: 0x44907, // oninput + 0x108: 0x35604, // area + 0x109: 0x2a40a, // formmethod + 0x10a: 0x72604, // wrap + 0x10c: 0x23c02, // rp + 0x10d: 0x46b0a, // onkeypress + 0x10e: 0x6802, // tt + 0x110: 0x34702, // mi + 0x111: 0x36705, // muted + 0x112: 0xf303, // alt + 0x113: 0x5c504, // code + 0x114: 0x6e02, // em + 0x115: 0x3c50a, // ondragexit + 0x117: 0x9f04, // span + 0x119: 0x6d708, // manifest + 0x11a: 0x38708, // menuitem + 0x11b: 0x58b07, // content + 0x11d: 0x6c109, // onwaiting + 0x11f: 0x4c609, // onloadend + 0x121: 0x37e0d, // oncontextmenu + 0x123: 0x56d06, // onblur + 0x124: 0x3fc07, // article + 0x125: 0x9303, // dir + 0x126: 0xef04, // ping + 0x127: 0x24c08, // required + 0x128: 0x45509, // oninvalid + 0x129: 0xb105, // align + 0x12b: 0x58a04, // icon + 0x12c: 0x64d02, // h6 + 0x12d: 0x1c404, // cols + 0x12e: 0x22e0a, // figcaption + 0x12f: 0x45e09, // onkeydown + 0x130: 0x66b08, // onsubmit + 0x131: 0x14d09, // oncanplay + 0x132: 0x70b03, // sup + 0x133: 0xc01, // p + 0x135: 0x40a09, // onemptied + 0x136: 0x39106, // oncopy + 0x137: 0x19c04, // cite + 0x138: 0x3a70a, // ondblclick + 0x13a: 0x50b0b, // onmousemove + 0x13c: 0x66d03, // sub + 0x13d: 0x48703, // rel + 0x13e: 0x5f08, // optgroup + 0x142: 0x9c07, // rowspan + 0x143: 0x37806, // source + 0x144: 0x21608, // noscript + 0x145: 0x1a304, // open + 0x146: 0x20403, // ins + 0x147: 0x2540d, // foreignObject + 0x148: 0x5ad0a, // onpopstate + 0x14a: 0x28d07, // enctype + 0x14b: 0x2760e, // onautocomplete + 0x14c: 0x35208, // textarea + 0x14e: 0x2780c, // autocomplete + 0x14f: 0x15702, // hr + 0x150: 0x1de08, // controls + 0x151: 0x10902, // id + 0x153: 0x2360c, // onafterprint + 0x155: 0x2610d, // foreignobject + 0x156: 0x32707, // marquee + 0x157: 0x59a07, // onpause + 0x158: 0x5e602, // dl + 0x159: 0x5206, // height + 0x15a: 0x34703, // min + 0x15b: 0x9307, // dirname + 0x15c: 0x1f209, // translate + 0x15d: 0x5604, // html + 0x15e: 0x34709, // minlength + 0x15f: 0x48607, // preload + 0x160: 0x71408, // template + 0x161: 0x3df0b, // ondragleave + 0x162: 0x3a02, // rb + 0x164: 0x5c003, // src + 0x165: 0x6dd06, // strong + 0x167: 0x7804, // samp + 0x168: 0x6f307, // address + 0x169: 0x55108, // ononline + 0x16b: 0x1310b, // placeholder + 0x16c: 0x2c406, // target + 0x16d: 0x20605, // small + 0x16e: 0x6ca07, // onwheel + 0x16f: 0x1c90a, // annotation + 0x170: 0x4740a, // spellcheck + 0x171: 0x7207, // details + 0x172: 0x10306, // canvas + 0x173: 0x12109, // autofocus + 0x174: 0xc05, // param + 0x176: 0x46308, // download + 0x177: 0x45203, // del + 0x178: 0x36c07, // onclose + 0x179: 0xb903, // kbd + 0x17a: 0x31906, // applet + 0x17b: 0x2e004, // href + 0x17c: 0x5f108, // onresize + 0x17e: 0x49d0c, // onloadeddata + 0x180: 0xcc02, // tr + 0x181: 0x2c00a, // formtarget + 0x182: 0x11005, // title + 0x183: 0x6ff05, // style + 0x184: 0xd206, // strike + 0x185: 0x59e06, // usemap + 0x186: 0x2fc06, // iframe + 0x187: 0x1004, // main + 0x189: 0x7b07, // picture + 0x18c: 0x31605, // ismap + 0x18e: 0x4a504, // data + 0x18f: 0x5905, // label + 0x191: 0x3d10e, // referrerpolicy + 0x192: 0x15602, // th + 0x194: 0x53606, // prompt + 0x195: 0x56807, // section + 0x197: 0x6d107, // optimum + 0x198: 0x2db04, // high + 0x199: 0x15c02, // h1 + 0x19a: 0x65909, // onstalled + 0x19b: 0x16d03, // var + 0x19c: 0x4204, // time + 0x19e: 0x67402, // ms + 0x19f: 0x33106, // header + 0x1a0: 0x4da09, // onmessage + 0x1a1: 0x1a605, // nonce + 0x1a2: 0x26e0a, // formaction + 0x1a3: 0x22006, // center + 0x1a4: 0x3704, // nobr + 0x1a5: 0x59505, // table + 0x1a6: 0x4a907, // listing + 0x1a7: 0x18106, // legend + 0x1a9: 0x29b09, // challenge + 0x1aa: 0x24806, // figure + 0x1ab: 0xe605, // media + 0x1ae: 0xd904, // type + 0x1af: 0x3f04, // font + 0x1b0: 0x4da0e, // onmessageerror + 0x1b1: 0x37108, // seamless + 0x1b2: 0x8703, // dfn + 0x1b3: 0x5c705, // defer + 0x1b4: 0xc303, // low + 0x1b5: 0x19a03, // rtc + 0x1b6: 0x5230b, // onmouseover + 0x1b7: 0x2b20a, // novalidate + 0x1b8: 0x71c0a, // workertype + 0x1ba: 0x3cd07, // itemref + 0x1bd: 0x1, // a + 0x1be: 0x31803, // map + 0x1bf: 0x400c, // ontimeupdate + 0x1c0: 0x15e07, // bgsound + 0x1c1: 0x3206, // keygen + 0x1c2: 0x2705, // tbody + 0x1c5: 0x64406, // onshow + 0x1c7: 0x2501, // s + 0x1c8: 0x6607, // pattern + 0x1cc: 0x14d10, // oncanplaythrough + 0x1ce: 0x2d702, // dd + 0x1cf: 0x6f906, // srcset + 0x1d0: 0x17003, // big + 0x1d2: 0x65108, // sortable + 0x1d3: 0x48007, // onkeyup + 0x1d5: 0x5a406, // onplay + 0x1d7: 0x4b804, // meta + 0x1d8: 0x40306, // ondrop + 0x1da: 0x60008, // onscroll + 0x1db: 0x1fb0b, // crossorigin + 0x1dc: 0x5730a, // onpageshow + 0x1dd: 0x4, // abbr + 0x1de: 0x9202, // td + 0x1df: 0x58b0f, // contenteditable + 0x1e0: 0x27206, // action + 0x1e1: 0x1400b, // playsinline + 0x1e2: 0x43107, // onfocus + 0x1e3: 0x2e008, // hreflang + 0x1e5: 0x5160a, // onmouseout + 0x1e6: 0x5ea07, // onreset + 0x1e7: 0x13c08, // autoplay + 0x1e8: 0x63109, // onseeking + 0x1ea: 0x67506, // scoped + 0x1ec: 0x30a, // radiogroup + 0x1ee: 0x3800b, // contextmenu + 0x1ef: 0x52e09, // onmouseup + 0x1f1: 0x2ca06, // hgroup + 0x1f2: 0x2080f, // allowfullscreen + 0x1f3: 0x4be08, // tabindex + 0x1f6: 0x30f07, // isindex + 0x1f7: 0x1a0e, // accept-charset + 0x1f8: 0x2ae0e, // formnovalidate + 0x1fb: 0x1c90e, // annotation-xml + 0x1fc: 0x6e05, // embed + 0x1fd: 0x21806, // script + 0x1fe: 0xbb06, // dialog + 0x1ff: 0x1d707, // command +} + +const atomText = "abbradiogrouparamainavalueaccept-charsetbodyaccesskeygenobrb" + + "asefontimeupdateviacacheightmlabelooptgroupatternoembedetail" + + "sampictureversedfnoframesetdirnameterowspanomoduleacronymali" + + "gnmarkbdialogallowpaymentrequestrikeytypeallowusermediagroup" + + "ingaltfooterubyasyncanvasidefaultitleaudioncancelautofocusan" + + "dboxmplaceholderautoplaysinlinebdoncanplaythrough1bgsoundisa" + + "bledivarbigblinkindraggablegendblockquotebuttonabortcitempro" + + "penoncecolgrouplaintextrackcolorcolspannotation-xmlcommandco" + + "ntrolshapecoordslotranslatecrossoriginsmallowfullscreenoscri" + + "ptfacenterfieldsetfigcaptionafterprintegrityfigurequiredfore" + + "ignObjectforeignobjectformactionautocompleteerrorformenctype" + + "mustmatchallengeformmethodformnovalidatetimeformtargethgroup" + + "osterhiddenhigh2hreflanghttp-equivideonclickiframeimageimgly" + + "ph3isindexismappletitemtypemarqueematheadersortedmaxlength4m" + + "inlength5mtextareadonlymultiplemutedoncloseamlessourceoncont" + + "extmenuitemidoncopyoncuechangeoncutondblclickondragendondrag" + + "enterondragexitemreferrerpolicyondragleaveondragoverondragst" + + "articleondropzonemptiedondurationchangeonendedonerroronfocus" + + "paceronhashchangeoninputmodeloninvalidonkeydownloadonkeypres" + + "spellcheckedonkeyupreloadonlanguagechangeonloadeddatalisting" + + "onloadedmetadatabindexonloadendonloadstartonmessageerroronmo" + + "usedownonmouseenteronmouseleaveonmousemoveonmouseoutputonmou" + + "seoveronmouseupromptonmousewheelonofflineononlineonpagehides" + + "classectionbluronpageshowbronpastepublicontenteditableonpaus" + + "emaponplayingonpopstateonprogressrcdocodeferonratechangeonre" + + "jectionhandledonresetonresizesrclangonscrollonsecuritypolicy" + + "violationauxclickonseekedonseekingonselectedonshowidth6onsor" + + "tableonstalledonstorageonsubmitemscopedonsuspendontoggleonun" + + "handledrejectionbeforeprintonunloadonvolumechangeonwaitingon" + + "wheeloptimumanifestrongoptionbeforeunloaddressrcsetstylesumm" + + "arysupsvgsystemplateworkertypewrap" diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/table_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/table_test.go new file mode 100644 index 000000000..8a30762ec --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/atom/table_test.go @@ -0,0 +1,376 @@ +// Code generated by go generate gen.go; DO NOT EDIT. + +//go:generate go run gen.go -test + +package atom + +var testAtomList = []string{ + "a", + "abbr", + "accept", + "accept-charset", + "accesskey", + "acronym", + "action", + "address", + "align", + "allowfullscreen", + "allowpaymentrequest", + "allowusermedia", + "alt", + "annotation", + "annotation-xml", + "applet", + "area", + "article", + "as", + "aside", + "async", + "audio", + "autocomplete", + "autofocus", + "autoplay", + "b", + "base", + "basefont", + "bdi", + "bdo", + "bgsound", + "big", + "blink", + "blockquote", + "body", + "br", + "button", + "canvas", + "caption", + "center", + "challenge", + "charset", + "checked", + "cite", + "class", + "code", + "col", + "colgroup", + "color", + "cols", + "colspan", + "command", + "content", + "contenteditable", + "contextmenu", + "controls", + "coords", + "crossorigin", + "data", + "datalist", + "datetime", + "dd", + "default", + "defer", + "del", + "desc", + "details", + "dfn", + "dialog", + "dir", + "dirname", + "disabled", + "div", + "dl", + "download", + "draggable", + "dropzone", + "dt", + "em", + "embed", + "enctype", + "face", + "fieldset", + "figcaption", + "figure", + "font", + "footer", + "for", + "foreignObject", + "foreignobject", + "form", + "formaction", + "formenctype", + "formmethod", + "formnovalidate", + "formtarget", + "frame", + "frameset", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "head", + "header", + "headers", + "height", + "hgroup", + "hidden", + "high", + "hr", + "href", + "hreflang", + "html", + "http-equiv", + "i", + "icon", + "id", + "iframe", + "image", + "img", + "input", + "inputmode", + "ins", + "integrity", + "is", + "isindex", + "ismap", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "kbd", + "keygen", + "keytype", + "kind", + "label", + "lang", + "legend", + "li", + "link", + "list", + "listing", + "loop", + "low", + "main", + "malignmark", + "manifest", + "map", + "mark", + "marquee", + "math", + "max", + "maxlength", + "media", + "mediagroup", + "menu", + "menuitem", + "meta", + "meter", + "method", + "mglyph", + "mi", + "min", + "minlength", + "mn", + "mo", + "ms", + "mtext", + "multiple", + "muted", + "name", + "nav", + "nobr", + "noembed", + "noframes", + "nomodule", + "nonce", + "noscript", + "novalidate", + "object", + "ol", + "onabort", + "onafterprint", + "onautocomplete", + "onautocompleteerror", + "onauxclick", + "onbeforeprint", + "onbeforeunload", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncopy", + "oncuechange", + "oncut", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragexit", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onhashchange", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onlanguagechange", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadend", + "onloadstart", + "onmessage", + "onmessageerror", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onoffline", + "ononline", + "onpagehide", + "onpageshow", + "onpaste", + "onpause", + "onplay", + "onplaying", + "onpopstate", + "onprogress", + "onratechange", + "onrejectionhandled", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onsort", + "onstalled", + "onstorage", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onunhandledrejection", + "onunload", + "onvolumechange", + "onwaiting", + "onwheel", + "open", + "optgroup", + "optimum", + "option", + "output", + "p", + "param", + "pattern", + "picture", + "ping", + "placeholder", + "plaintext", + "playsinline", + "poster", + "pre", + "preload", + "progress", + "prompt", + "public", + "q", + "radiogroup", + "rb", + "readonly", + "referrerpolicy", + "rel", + "required", + "reversed", + "rows", + "rowspan", + "rp", + "rt", + "rtc", + "ruby", + "s", + "samp", + "sandbox", + "scope", + "scoped", + "script", + "seamless", + "section", + "select", + "selected", + "shape", + "size", + "sizes", + "slot", + "small", + "sortable", + "sorted", + "source", + "spacer", + "span", + "spellcheck", + "src", + "srcdoc", + "srclang", + "srcset", + "start", + "step", + "strike", + "strong", + "style", + "sub", + "summary", + "sup", + "svg", + "system", + "tabindex", + "table", + "target", + "tbody", + "td", + "template", + "textarea", + "tfoot", + "th", + "thead", + "time", + "title", + "tr", + "track", + "translate", + "tt", + "type", + "typemustmatch", + "u", + "ul", + "updateviacache", + "usemap", + "value", + "var", + "video", + "wbr", + "width", + "workertype", + "wrap", + "xmp", +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/charset.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/charset.go new file mode 100644 index 000000000..13bed1599 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/charset.go @@ -0,0 +1,257 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package charset provides common text encodings for HTML documents. +// +// The mapping from encoding labels to encodings is defined at +// https://encoding.spec.whatwg.org/. +package charset // import "golang.org/x/net/html/charset" + +import ( + "bytes" + "fmt" + "io" + "mime" + "strings" + "unicode/utf8" + + "golang.org/x/net/html" + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/charmap" + "golang.org/x/text/encoding/htmlindex" + "golang.org/x/text/transform" +) + +// Lookup returns the encoding with the specified label, and its canonical +// name. It returns nil and the empty string if label is not one of the +// standard encodings for HTML. Matching is case-insensitive and ignores +// leading and trailing whitespace. Encoders will use HTML escape sequences for +// runes that are not supported by the character set. +func Lookup(label string) (e encoding.Encoding, name string) { + e, err := htmlindex.Get(label) + if err != nil { + return nil, "" + } + name, _ = htmlindex.Name(e) + return &htmlEncoding{e}, name +} + +type htmlEncoding struct{ encoding.Encoding } + +func (h *htmlEncoding) NewEncoder() *encoding.Encoder { + // HTML requires a non-terminating legacy encoder. We use HTML escapes to + // substitute unsupported code points. + return encoding.HTMLEscapeUnsupported(h.Encoding.NewEncoder()) +} + +// DetermineEncoding determines the encoding of an HTML document by examining +// up to the first 1024 bytes of content and the declared Content-Type. +// +// See http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#determining-the-character-encoding +func DetermineEncoding(content []byte, contentType string) (e encoding.Encoding, name string, certain bool) { + if len(content) > 1024 { + content = content[:1024] + } + + for _, b := range boms { + if bytes.HasPrefix(content, b.bom) { + e, name = Lookup(b.enc) + return e, name, true + } + } + + if _, params, err := mime.ParseMediaType(contentType); err == nil { + if cs, ok := params["charset"]; ok { + if e, name = Lookup(cs); e != nil { + return e, name, true + } + } + } + + if len(content) > 0 { + e, name = prescan(content) + if e != nil { + return e, name, false + } + } + + // Try to detect UTF-8. + // First eliminate any partial rune at the end. + for i := len(content) - 1; i >= 0 && i > len(content)-4; i-- { + b := content[i] + if b < 0x80 { + break + } + if utf8.RuneStart(b) { + content = content[:i] + break + } + } + hasHighBit := false + for _, c := range content { + if c >= 0x80 { + hasHighBit = true + break + } + } + if hasHighBit && utf8.Valid(content) { + return encoding.Nop, "utf-8", false + } + + // TODO: change default depending on user's locale? + return charmap.Windows1252, "windows-1252", false +} + +// NewReader returns an io.Reader that converts the content of r to UTF-8. +// It calls DetermineEncoding to find out what r's encoding is. +func NewReader(r io.Reader, contentType string) (io.Reader, error) { + preview := make([]byte, 1024) + n, err := io.ReadFull(r, preview) + switch { + case err == io.ErrUnexpectedEOF: + preview = preview[:n] + r = bytes.NewReader(preview) + case err != nil: + return nil, err + default: + r = io.MultiReader(bytes.NewReader(preview), r) + } + + if e, _, _ := DetermineEncoding(preview, contentType); e != encoding.Nop { + r = transform.NewReader(r, e.NewDecoder()) + } + return r, nil +} + +// NewReaderLabel returns a reader that converts from the specified charset to +// UTF-8. It uses Lookup to find the encoding that corresponds to label, and +// returns an error if Lookup returns nil. It is suitable for use as +// encoding/xml.Decoder's CharsetReader function. +func NewReaderLabel(label string, input io.Reader) (io.Reader, error) { + e, _ := Lookup(label) + if e == nil { + return nil, fmt.Errorf("unsupported charset: %q", label) + } + return transform.NewReader(input, e.NewDecoder()), nil +} + +func prescan(content []byte) (e encoding.Encoding, name string) { + z := html.NewTokenizer(bytes.NewReader(content)) + for { + switch z.Next() { + case html.ErrorToken: + return nil, "" + + case html.StartTagToken, html.SelfClosingTagToken: + tagName, hasAttr := z.TagName() + if !bytes.Equal(tagName, []byte("meta")) { + continue + } + attrList := make(map[string]bool) + gotPragma := false + + const ( + dontKnow = iota + doNeedPragma + doNotNeedPragma + ) + needPragma := dontKnow + + name = "" + e = nil + for hasAttr { + var key, val []byte + key, val, hasAttr = z.TagAttr() + ks := string(key) + if attrList[ks] { + continue + } + attrList[ks] = true + for i, c := range val { + if 'A' <= c && c <= 'Z' { + val[i] = c + 0x20 + } + } + + switch ks { + case "http-equiv": + if bytes.Equal(val, []byte("content-type")) { + gotPragma = true + } + + case "content": + if e == nil { + name = fromMetaElement(string(val)) + if name != "" { + e, name = Lookup(name) + if e != nil { + needPragma = doNeedPragma + } + } + } + + case "charset": + e, name = Lookup(string(val)) + needPragma = doNotNeedPragma + } + } + + if needPragma == dontKnow || needPragma == doNeedPragma && !gotPragma { + continue + } + + if strings.HasPrefix(name, "utf-16") { + name = "utf-8" + e = encoding.Nop + } + + if e != nil { + return e, name + } + } + } +} + +func fromMetaElement(s string) string { + for s != "" { + csLoc := strings.Index(s, "charset") + if csLoc == -1 { + return "" + } + s = s[csLoc+len("charset"):] + s = strings.TrimLeft(s, " \t\n\f\r") + if !strings.HasPrefix(s, "=") { + continue + } + s = s[1:] + s = strings.TrimLeft(s, " \t\n\f\r") + if s == "" { + return "" + } + if q := s[0]; q == '"' || q == '\'' { + s = s[1:] + closeQuote := strings.IndexRune(s, rune(q)) + if closeQuote == -1 { + return "" + } + return s[:closeQuote] + } + + end := strings.IndexAny(s, "; \t\n\f\r") + if end == -1 { + end = len(s) + } + return s[:end] + } + return "" +} + +var boms = []struct { + bom []byte + enc string +}{ + {[]byte{0xfe, 0xff}, "utf-16be"}, + {[]byte{0xff, 0xfe}, "utf-16le"}, + {[]byte{0xef, 0xbb, 0xbf}, "utf-8"}, +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/charset_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/charset_test.go new file mode 100644 index 000000000..b71eb43f7 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/charset_test.go @@ -0,0 +1,236 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package charset + +import ( + "bytes" + "encoding/xml" + "io/ioutil" + "runtime" + "strings" + "testing" + + "golang.org/x/text/transform" +) + +func transformString(t transform.Transformer, s string) (string, error) { + r := transform.NewReader(strings.NewReader(s), t) + b, err := ioutil.ReadAll(r) + return string(b), err +} + +type testCase struct { + utf8, other, otherEncoding string +} + +// testCases for encoding and decoding. +var testCases = []testCase{ + {"Résumé", "Résumé", "utf8"}, + {"Résumé", "R\xe9sum\xe9", "latin1"}, + {"これは漢字です。", "S0\x8c0o0\"oW[g0Y0\x020", "UTF-16LE"}, + {"これは漢字です。", "0S0\x8c0oo\"[W0g0Y0\x02", "UTF-16BE"}, + {"Hello, world", "Hello, world", "ASCII"}, + {"Gdańsk", "Gda\xf1sk", "ISO-8859-2"}, + {"Ââ Čč Đđ Ŋŋ Õõ Šš Žž Åå Ää", "\xc2\xe2 \xc8\xe8 \xa9\xb9 \xaf\xbf \xd5\xf5 \xaa\xba \xac\xbc \xc5\xe5 \xc4\xe4", "ISO-8859-10"}, + {"สำหรับ", "\xca\xd3\xcb\xc3\u047a", "ISO-8859-11"}, + {"latviešu", "latvie\xf0u", "ISO-8859-13"}, + {"Seònaid", "Se\xf2naid", "ISO-8859-14"}, + {"€1 is cheap", "\xa41 is cheap", "ISO-8859-15"}, + {"românește", "rom\xe2ne\xbate", "ISO-8859-16"}, + {"nutraĵo", "nutra\xbco", "ISO-8859-3"}, + {"Kalâdlit", "Kal\xe2dlit", "ISO-8859-4"}, + {"русский", "\xe0\xe3\xe1\xe1\xda\xd8\xd9", "ISO-8859-5"}, + {"ελληνικά", "\xe5\xeb\xeb\xe7\xed\xe9\xea\xdc", "ISO-8859-7"}, + {"Kağan", "Ka\xf0an", "ISO-8859-9"}, + {"Résumé", "R\x8esum\x8e", "macintosh"}, + {"Gdańsk", "Gda\xf1sk", "windows-1250"}, + {"русский", "\xf0\xf3\xf1\xf1\xea\xe8\xe9", "windows-1251"}, + {"Résumé", "R\xe9sum\xe9", "windows-1252"}, + {"ελληνικά", "\xe5\xeb\xeb\xe7\xed\xe9\xea\xdc", "windows-1253"}, + {"Kağan", "Ka\xf0an", "windows-1254"}, + {"עִבְרִית", "\xf2\xc4\xe1\xc0\xf8\xc4\xe9\xfa", "windows-1255"}, + {"العربية", "\xc7\xe1\xda\xd1\xc8\xed\xc9", "windows-1256"}, + {"latviešu", "latvie\xf0u", "windows-1257"}, + {"Việt", "Vi\xea\xf2t", "windows-1258"}, + {"สำหรับ", "\xca\xd3\xcb\xc3\u047a", "windows-874"}, + {"русский", "\xd2\xd5\xd3\xd3\xcb\xc9\xca", "KOI8-R"}, + {"українська", "\xd5\xcb\xd2\xc1\xa7\xce\xd3\xd8\xcb\xc1", "KOI8-U"}, + {"Hello 常用國字標準字體表", "Hello \xb1`\xa5\u03b0\xea\xa6r\xbc\u0437\u01e6r\xc5\xe9\xaa\xed", "big5"}, + {"Hello 常用國字標準字體表", "Hello \xb3\xa3\xd3\xc3\x87\xf8\xd7\xd6\x98\xcb\x9c\xca\xd7\xd6\xf3\x77\xb1\xed", "gbk"}, + {"Hello 常用國字標準字體表", "Hello \xb3\xa3\xd3\xc3\x87\xf8\xd7\xd6\x98\xcb\x9c\xca\xd7\xd6\xf3\x77\xb1\xed", "gb18030"}, + {"עִבְרִית", "\x81\x30\xfb\x30\x81\x30\xf6\x34\x81\x30\xf9\x33\x81\x30\xf6\x30\x81\x30\xfb\x36\x81\x30\xf6\x34\x81\x30\xfa\x31\x81\x30\xfb\x38", "gb18030"}, + {"㧯", "\x82\x31\x89\x38", "gb18030"}, + {"これは漢字です。", "\x82\xb1\x82\xea\x82\xcd\x8a\xbf\x8e\x9a\x82\xc5\x82\xb7\x81B", "SJIS"}, + {"Hello, 世界!", "Hello, \x90\xa2\x8aE!", "SJIS"}, + {"イウエオカ", "\xb2\xb3\xb4\xb5\xb6", "SJIS"}, + {"これは漢字です。", "\xa4\xb3\xa4\xec\xa4\u03f4\xc1\xbb\xfa\xa4\u01e4\xb9\xa1\xa3", "EUC-JP"}, + {"Hello, 世界!", "Hello, \x1b$B@$3&\x1b(B!", "ISO-2022-JP"}, + {"다음과 같은 조건을 따라야 합니다: 저작자표시", "\xb4\xd9\xc0\xbd\xb0\xfa \xb0\xb0\xc0\xba \xc1\xb6\xb0\xc7\xc0\xbb \xb5\xfb\xb6\xf3\xbe\xdf \xc7մϴ\xd9: \xc0\xfa\xc0\xdb\xc0\xdaǥ\xbd\xc3", "EUC-KR"}, +} + +func TestDecode(t *testing.T) { + testCases := append(testCases, []testCase{ + // Replace multi-byte maximum subpart of ill-formed subsequence with + // single replacement character (WhatWG requirement). + {"Rés\ufffdumé", "Rés\xe1\x80umé", "utf8"}, + }...) + for _, tc := range testCases { + e, _ := Lookup(tc.otherEncoding) + if e == nil { + t.Errorf("%s: not found", tc.otherEncoding) + continue + } + s, err := transformString(e.NewDecoder(), tc.other) + if err != nil { + t.Errorf("%s: decode %q: %v", tc.otherEncoding, tc.other, err) + continue + } + if s != tc.utf8 { + t.Errorf("%s: got %q, want %q", tc.otherEncoding, s, tc.utf8) + } + } +} + +func TestEncode(t *testing.T) { + testCases := append(testCases, []testCase{ + // Use Go-style replacement. + {"Rés\xe1\x80umé", "Rés\ufffd\ufffdumé", "utf8"}, + // U+0144 LATIN SMALL LETTER N WITH ACUTE not supported by encoding. + {"Gdańsk", "Gdańsk", "ISO-8859-11"}, + {"\ufffd", "�", "ISO-8859-11"}, + {"a\xe1\x80b", "a��b", "ISO-8859-11"}, + }...) + for _, tc := range testCases { + e, _ := Lookup(tc.otherEncoding) + if e == nil { + t.Errorf("%s: not found", tc.otherEncoding) + continue + } + s, err := transformString(e.NewEncoder(), tc.utf8) + if err != nil { + t.Errorf("%s: encode %q: %s", tc.otherEncoding, tc.utf8, err) + continue + } + if s != tc.other { + t.Errorf("%s: got %q, want %q", tc.otherEncoding, s, tc.other) + } + } +} + +var sniffTestCases = []struct { + filename, declared, want string +}{ + {"HTTP-charset.html", "text/html; charset=iso-8859-15", "iso-8859-15"}, + {"UTF-16LE-BOM.html", "", "utf-16le"}, + {"UTF-16BE-BOM.html", "", "utf-16be"}, + {"meta-content-attribute.html", "text/html", "iso-8859-15"}, + {"meta-charset-attribute.html", "text/html", "iso-8859-15"}, + {"No-encoding-declaration.html", "text/html", "utf-8"}, + {"HTTP-vs-UTF-8-BOM.html", "text/html; charset=iso-8859-15", "utf-8"}, + {"HTTP-vs-meta-content.html", "text/html; charset=iso-8859-15", "iso-8859-15"}, + {"HTTP-vs-meta-charset.html", "text/html; charset=iso-8859-15", "iso-8859-15"}, + {"UTF-8-BOM-vs-meta-content.html", "text/html", "utf-8"}, + {"UTF-8-BOM-vs-meta-charset.html", "text/html", "utf-8"}, +} + +func TestSniff(t *testing.T) { + switch runtime.GOOS { + case "nacl": // platforms that don't permit direct file system access + t.Skipf("not supported on %q", runtime.GOOS) + } + + for _, tc := range sniffTestCases { + content, err := ioutil.ReadFile("testdata/" + tc.filename) + if err != nil { + t.Errorf("%s: error reading file: %v", tc.filename, err) + continue + } + + _, name, _ := DetermineEncoding(content, tc.declared) + if name != tc.want { + t.Errorf("%s: got %q, want %q", tc.filename, name, tc.want) + continue + } + } +} + +func TestReader(t *testing.T) { + switch runtime.GOOS { + case "nacl": // platforms that don't permit direct file system access + t.Skipf("not supported on %q", runtime.GOOS) + } + + for _, tc := range sniffTestCases { + content, err := ioutil.ReadFile("testdata/" + tc.filename) + if err != nil { + t.Errorf("%s: error reading file: %v", tc.filename, err) + continue + } + + r, err := NewReader(bytes.NewReader(content), tc.declared) + if err != nil { + t.Errorf("%s: error creating reader: %v", tc.filename, err) + continue + } + + got, err := ioutil.ReadAll(r) + if err != nil { + t.Errorf("%s: error reading from charset.NewReader: %v", tc.filename, err) + continue + } + + e, _ := Lookup(tc.want) + want, err := ioutil.ReadAll(transform.NewReader(bytes.NewReader(content), e.NewDecoder())) + if err != nil { + t.Errorf("%s: error decoding with hard-coded charset name: %v", tc.filename, err) + continue + } + + if !bytes.Equal(got, want) { + t.Errorf("%s: got %q, want %q", tc.filename, got, want) + continue + } + } +} + +var metaTestCases = []struct { + meta, want string +}{ + {"", ""}, + {"text/html", ""}, + {"text/html; charset utf-8", ""}, + {"text/html; charset=latin-2", "latin-2"}, + {"text/html; charset; charset = utf-8", "utf-8"}, + {`charset="big5"`, "big5"}, + {"charset='shift_jis'", "shift_jis"}, +} + +func TestFromMeta(t *testing.T) { + for _, tc := range metaTestCases { + got := fromMetaElement(tc.meta) + if got != tc.want { + t.Errorf("%q: got %q, want %q", tc.meta, got, tc.want) + } + } +} + +func TestXML(t *testing.T) { + const s = "r\xe9sum\xe9" + + d := xml.NewDecoder(strings.NewReader(s)) + d.CharsetReader = NewReaderLabel + + var a struct { + Word string + } + if err := d.Decode(&a); err != nil { + t.Fatalf("Decode: %v", err) + } + + want := "résumé" + if a.Word != want { + t.Errorf("got %q, want %q", a.Word, want) + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-charset.html b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-charset.html new file mode 100644 index 000000000..9915fa0ee --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-charset.html @@ -0,0 +1,48 @@ + + + + HTTP charset + + + + + + + + + + + +

                  HTTP charset

                  + + +
                  + + +
                   
                  + + + + + +
                  +

                  The character encoding of a page can be set using the HTTP header charset declaration.

                  +

                  The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ÜÀÚ. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.

                  The only character encoding declaration for this HTML file is in the HTTP header, which sets the encoding to ISO 8859-15.

                  +
                  +
                  +
                  HTML5
                  +

                  the-input-byte-stream-001
                  Result summary & related tests
                  Detailed results for this test
                  Link to spec

                  +
                  Assumptions:
                  • The default encoding for the browser you are testing is not set to ISO 8859-15.
                  • +
                  • The test is read from a server that supports HTTP.
                  +
                  + + + + + + diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-UTF-8-BOM.html b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-UTF-8-BOM.html new file mode 100644 index 000000000..26e5d8b4e --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-UTF-8-BOM.html @@ -0,0 +1,48 @@ + + + + HTTP vs UTF-8 BOM + + + + + + + + + + + +

                  HTTP vs UTF-8 BOM

                  + + +
                  + + +
                   
                  + + + + + +
                  +

                  A character encoding set in the HTTP header has lower precedence than the UTF-8 signature.

                  +

                  The HTTP header attempts to set the character encoding to ISO 8859-15. The page starts with a UTF-8 signature.

                  The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ýäè. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.

                  If the test is unsuccessful, the characters  should appear at the top of the page. These represent the bytes that make up the UTF-8 signature when encountered in the ISO 8859-15 encoding.

                  +
                  +
                  +
                  HTML5
                  +

                  the-input-byte-stream-034
                  Result summary & related tests
                  Detailed results for this test
                  Link to spec

                  +
                  Assumptions:
                  • The default encoding for the browser you are testing is not set to ISO 8859-15.
                  • +
                  • The test is read from a server that supports HTTP.
                  +
                  + + + + + + diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-meta-charset.html b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-meta-charset.html new file mode 100644 index 000000000..2f07e9515 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-meta-charset.html @@ -0,0 +1,49 @@ + + + + HTTP vs meta charset + + + + + + + + + + + +

                  HTTP vs meta charset

                  + + +
                  + + +
                   
                  + + + + + +
                  +

                  The HTTP header has a higher precedence than an encoding declaration in a meta charset attribute.

                  +

                  The HTTP header attempts to set the character encoding to ISO 8859-15. The page contains an encoding declaration in a meta charset attribute that attempts to set the character encoding to ISO 8859-1.

                  The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ÜÀÚ. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.

                  +
                  +
                  +
                  HTML5
                  +

                  the-input-byte-stream-018
                  Result summary & related tests
                  Detailed results for this test
                  Link to spec

                  +
                  Assumptions:
                  • The default encoding for the browser you are testing is not set to ISO 8859-15.
                  • +
                  • The test is read from a server that supports HTTP.
                  +
                  + + + + + + diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-meta-content.html b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-meta-content.html new file mode 100644 index 000000000..6853cddec --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/HTTP-vs-meta-content.html @@ -0,0 +1,49 @@ + + + + HTTP vs meta content + + + + + + + + + + + +

                  HTTP vs meta content

                  + + +
                  + + +
                   
                  + + + + + +
                  +

                  The HTTP header has a higher precedence than an encoding declaration in a meta content attribute.

                  +

                  The HTTP header attempts to set the character encoding to ISO 8859-15. The page contains an encoding declaration in a meta content attribute that attempts to set the character encoding to ISO 8859-1.

                  The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ÜÀÚ. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.

                  +
                  +
                  +
                  HTML5
                  +

                  the-input-byte-stream-016
                  Result summary & related tests
                  Detailed results for this test
                  Link to spec

                  +
                  Assumptions:
                  • The default encoding for the browser you are testing is not set to ISO 8859-15.
                  • +
                  • The test is read from a server that supports HTTP.
                  +
                  + + + + + + diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/No-encoding-declaration.html b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/No-encoding-declaration.html new file mode 100644 index 000000000..612e26c6c --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/No-encoding-declaration.html @@ -0,0 +1,47 @@ + + + + No encoding declaration + + + + + + + + + + + +

                  No encoding declaration

                  + + +
                  + + +
                   
                  + + + + + +
                  +

                  A page with no encoding information in HTTP, BOM, XML declaration or meta element will be treated as UTF-8.

                  +

                  The test on this page contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ýäè. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.

                  +
                  +
                  +
                  HTML5
                  +

                  the-input-byte-stream-015
                  Result summary & related tests
                  Detailed results for this test
                  Link to spec

                  +
                  Assumptions:
                  • The test is read from a server that supports HTTP.
                  +
                  + + + + + + diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/README b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/README new file mode 100644 index 000000000..38ef0f9f1 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/README @@ -0,0 +1,9 @@ +These test cases come from +http://www.w3.org/International/tests/repository/html5/the-input-byte-stream/results-basics + +Distributed under both the W3C Test Suite License +(http://www.w3.org/Consortium/Legal/2008/04-testsuite-license) +and the W3C 3-clause BSD License +(http://www.w3.org/Consortium/Legal/2008/03-bsd-license). +To contribute to a W3C Test Suite, see the policies and contribution +forms (http://www.w3.org/2004/10/27-testcases). diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-16BE-BOM.html b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-16BE-BOM.html new file mode 100644 index 0000000000000000000000000000000000000000..3abf7a9343c20518e57dfea58b374fb0f4fb58a1 GIT binary patch literal 2670 zcmcJR?QRoS5Qc}JAoU&=BQ-(7b^;2j8i*i3RV1JlO@;VXIsPurV!WHiDdLW}i`*CO z^UnC>tih=KsVr;H&Y7?C&O3AV(?534uG?e##U9y_y|!QNi4``n+D>d{2lky^LnFNx z?9HrarH$>rwQR_$g)Hk0*&STI*EYq|47~&U9sfUB+ji})9eR{QqCUra7oDsZ5obtB zdxP%<)-$4Q;rSHJiM>U(#ZI=;?n^BC?Dp6lu=~_1-lnX3u03&2BlmQIY>L+!Uq7XoytKw^Q#oZSM?3*J?)&ojG&yzQRkC!Ml5JE?ax;lp_NYEcdUht`ZswOviB~L5hmJ|pXI71nn20w;>vG! zQGB$EE9&wC``&J#_Ym~PgRu-Bd>1!pOp0||k`kr=VJ zfH6I6rmRaeHA7U-A^OTsT+|d2a^i(>DePzZ{)ibXoCBvJnuYrd-3kkN$uy{qQK;=*Y;S87ro12aTgu^i*%f8zC3>a}9DIe4cfxOzsCw&(cqvP9{ud{N6f` z#TNDY(B6@Gpr|uN+%&x^XZjBHdc@2vsM(Tyc2=vshHQ5w+obmp>tuWT(t4BTUGAQw zxeI$UGSLUBg=WFbF;4f@4=^P2AgY@CFn8A`bcC=_&~)fiDe)#cUARRBzJ^k|%X)69 z+{Cb`wq}Rsg%B62CC_tK!AV(W{(MV?#mndR46CU#BUN<{8e?*oT+!pE5wF#O#TR#a z$9qRT)tpbw8zAI~QQJg2C3|6$I%(T(;`zOMy6SO+&;pG=c#2P|P-WZn$$DpWJlC3U z3*nvmz zwP{u~r$L?-m3uqp9I1+#3yE|3M$(s-BEtih=LQ>`qYoiktOop(wi%!;yh%+Rm z{e|xntY<{q!1F1Z6MKtngPm-p-4|H&+3m4AVE3_AyiHm6Tzlf4M(*ht*%YrezJ6kr zHGj45pc?64*$Cm%-zseWMA`x;)v*~jA=i}szqts9xmQkS`M11|(H7bTXAycsXU53+ zJ?120SRZeyiFjW7enPN`bxk$IaWV3o48oJF7D&2ysoY;6(s6%6vVfaYd&mC=erK!) zNGI^7upQgN)53OHe_VE<@J+G8*Y|p*)zB2Thdi}+YR<5QWHm!|a_*AoZXuv7)$xe| zm3Q$D7{|#}{m4X&UY!6(ZhyYi2(5JLzGE$H)W6BQklnjPMwn<Yvv7Z*TVWwD*=E3QpH37* z#lqXJA0A~J9T_<^W5smspmDg2p6ac5Bjn+~LAoow%1TCdZ*$K8`O zw_$HaCi+0N&@7la#_7KL5r$+QL{)Pi=I&aDjt~|Knht#`CEi4*3%97i_fSfASlwUz0=3V0GCxY}z81UC-nP=CGt2OqYV$ zoRCo+qM9YX*3FFORLC=E3B~S@+KROyk4r5 yX7?DaslDfIebqXgC!KKp4IYy+W~X?ddE6o=`A+x#x0AK&6MF#W&AXxbRrv+SX}PNa literal 0 HcmV?d00001 diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html new file mode 100644 index 000000000..83de43338 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html @@ -0,0 +1,49 @@ + + + + UTF-8 BOM vs meta charset + + + + + + + + + + + +

                  UTF-8 BOM vs meta charset

                  + + +
                  + + +
                   
                  + + + + + +
                  +

                  A page with a UTF-8 BOM will be recognized as UTF-8 even if the meta charset attribute declares a different encoding.

                  +

                  The page contains an encoding declaration in a meta charset attribute that attempts to set the character encoding to ISO 8859-15, but the file starts with a UTF-8 signature.

                  The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ýäè. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.

                  +
                  +
                  +
                  HTML5
                  +

                  the-input-byte-stream-038
                  Result summary & related tests
                  Detailed results for this test
                  Link to spec

                  +
                  Assumptions:
                  • The default encoding for the browser you are testing is not set to ISO 8859-15.
                  • +
                  • The test is read from a server that supports HTTP.
                  +
                  + + + + + + diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-8-BOM-vs-meta-content.html b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-8-BOM-vs-meta-content.html new file mode 100644 index 000000000..501aac2d6 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/UTF-8-BOM-vs-meta-content.html @@ -0,0 +1,48 @@ + + + + UTF-8 BOM vs meta content + + + + + + + + + + + +

                  UTF-8 BOM vs meta content

                  + + +
                  + + +
                   
                  + + + + + +
                  +

                  A page with a UTF-8 BOM will be recognized as UTF-8 even if the meta content attribute declares a different encoding.

                  +

                  The page contains an encoding declaration in a meta content attribute that attempts to set the character encoding to ISO 8859-15, but the file starts with a UTF-8 signature.

                  The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ýäè. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.

                  +
                  +
                  +
                  HTML5
                  +

                  the-input-byte-stream-037
                  Result summary & related tests
                  Detailed results for this test
                  Link to spec

                  +
                  Assumptions:
                  • The default encoding for the browser you are testing is not set to ISO 8859-15.
                  • +
                  • The test is read from a server that supports HTTP.
                  +
                  + + + + + + diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/meta-charset-attribute.html b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/meta-charset-attribute.html new file mode 100644 index 000000000..2d7d25aba --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/meta-charset-attribute.html @@ -0,0 +1,48 @@ + + + + meta charset attribute + + + + + + + + + + + +

                  meta charset attribute

                  + + +
                  + + +
                   
                  + + + + + +
                  +

                  The character encoding of the page can be set by a meta element with charset attribute.

                  +

                  The only character encoding declaration for this HTML file is in the charset attribute of the meta element, which declares the encoding to be ISO 8859-15.

                  The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ÜÀÚ. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.

                  +
                  +
                  +
                  HTML5
                  +

                  the-input-byte-stream-009
                  Result summary & related tests
                  Detailed results for this test
                  Link to spec

                  +
                  Assumptions:
                  • The default encoding for the browser you are testing is not set to ISO 8859-15.
                  • +
                  • The test is read from a server that supports HTTP.
                  +
                  + + + + + + diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/meta-content-attribute.html b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/meta-content-attribute.html new file mode 100644 index 000000000..1c3f228e7 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/charset/testdata/meta-content-attribute.html @@ -0,0 +1,48 @@ + + + + meta content attribute + + + + + + + + + + + +

                  meta content attribute

                  + + +
                  + + +
                   
                  + + + + + +
                  +

                  The character encoding of the page can be set by a meta element with http-equiv and content attributes.

                  +

                  The only character encoding declaration for this HTML file is in the content attribute of the meta element, which declares the encoding to be ISO 8859-15.

                  The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ÜÀÚ. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.

                  +
                  +
                  +
                  HTML5
                  +

                  the-input-byte-stream-007
                  Result summary & related tests
                  Detailed results for this test
                  Link to spec

                  +
                  Assumptions:
                  • The default encoding for the browser you are testing is not set to ISO 8859-15.
                  • +
                  • The test is read from a server that supports HTTP.
                  +
                  + + + + + + diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/const.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/const.go new file mode 100644 index 000000000..ff7acf2d5 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/const.go @@ -0,0 +1,111 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +// Section 12.2.4.2 of the HTML5 specification says "The following elements +// have varying levels of special parsing rules". +// https://html.spec.whatwg.org/multipage/syntax.html#the-stack-of-open-elements +var isSpecialElementMap = map[string]bool{ + "address": true, + "applet": true, + "area": true, + "article": true, + "aside": true, + "base": true, + "basefont": true, + "bgsound": true, + "blockquote": true, + "body": true, + "br": true, + "button": true, + "caption": true, + "center": true, + "col": true, + "colgroup": true, + "dd": true, + "details": true, + "dir": true, + "div": true, + "dl": true, + "dt": true, + "embed": true, + "fieldset": true, + "figcaption": true, + "figure": true, + "footer": true, + "form": true, + "frame": true, + "frameset": true, + "h1": true, + "h2": true, + "h3": true, + "h4": true, + "h5": true, + "h6": true, + "head": true, + "header": true, + "hgroup": true, + "hr": true, + "html": true, + "iframe": true, + "img": true, + "input": true, + "keygen": true, // "keygen" has been removed from the spec, but are kept here for backwards compatibility. + "li": true, + "link": true, + "listing": true, + "main": true, + "marquee": true, + "menu": true, + "meta": true, + "nav": true, + "noembed": true, + "noframes": true, + "noscript": true, + "object": true, + "ol": true, + "p": true, + "param": true, + "plaintext": true, + "pre": true, + "script": true, + "section": true, + "select": true, + "source": true, + "style": true, + "summary": true, + "table": true, + "tbody": true, + "td": true, + "template": true, + "textarea": true, + "tfoot": true, + "th": true, + "thead": true, + "title": true, + "tr": true, + "track": true, + "ul": true, + "wbr": true, + "xmp": true, +} + +func isSpecialElement(element *Node) bool { + switch element.Namespace { + case "", "html": + return isSpecialElementMap[element.Data] + case "math": + switch element.Data { + case "mi", "mo", "mn", "ms", "mtext", "annotation-xml": + return true + } + case "svg": + switch element.Data { + case "foreignObject", "desc", "title": + return true + } + } + return false +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/doc.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/doc.go new file mode 100644 index 000000000..822ed42a0 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/doc.go @@ -0,0 +1,106 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package html implements an HTML5-compliant tokenizer and parser. + +Tokenization is done by creating a Tokenizer for an io.Reader r. It is the +caller's responsibility to ensure that r provides UTF-8 encoded HTML. + + z := html.NewTokenizer(r) + +Given a Tokenizer z, the HTML is tokenized by repeatedly calling z.Next(), +which parses the next token and returns its type, or an error: + + for { + tt := z.Next() + if tt == html.ErrorToken { + // ... + return ... + } + // Process the current token. + } + +There are two APIs for retrieving the current token. The high-level API is to +call Token; the low-level API is to call Text or TagName / TagAttr. Both APIs +allow optionally calling Raw after Next but before Token, Text, TagName, or +TagAttr. In EBNF notation, the valid call sequence per token is: + + Next {Raw} [ Token | Text | TagName {TagAttr} ] + +Token returns an independent data structure that completely describes a token. +Entities (such as "<") are unescaped, tag names and attribute keys are +lower-cased, and attributes are collected into a []Attribute. For example: + + for { + if z.Next() == html.ErrorToken { + // Returning io.EOF indicates success. + return z.Err() + } + emitToken(z.Token()) + } + +The low-level API performs fewer allocations and copies, but the contents of +the []byte values returned by Text, TagName and TagAttr may change on the next +call to Next. For example, to extract an HTML page's anchor text: + + depth := 0 + for { + tt := z.Next() + switch tt { + case html.ErrorToken: + return z.Err() + case html.TextToken: + if depth > 0 { + // emitBytes should copy the []byte it receives, + // if it doesn't process it immediately. + emitBytes(z.Text()) + } + case html.StartTagToken, html.EndTagToken: + tn, _ := z.TagName() + if len(tn) == 1 && tn[0] == 'a' { + if tt == html.StartTagToken { + depth++ + } else { + depth-- + } + } + } + } + +Parsing is done by calling Parse with an io.Reader, which returns the root of +the parse tree (the document element) as a *Node. It is the caller's +responsibility to ensure that the Reader provides UTF-8 encoded HTML. For +example, to process each anchor node in depth-first order: + + doc, err := html.Parse(r) + if err != nil { + // ... + } + var f func(*html.Node) + f = func(n *html.Node) { + if n.Type == html.ElementNode && n.Data == "a" { + // Do something with n... + } + for c := n.FirstChild; c != nil; c = c.NextSibling { + f(c) + } + } + f(doc) + +The relevant specifications include: +https://html.spec.whatwg.org/multipage/syntax.html and +https://html.spec.whatwg.org/multipage/syntax.html#tokenization +*/ +package html // import "golang.org/x/net/html" + +// The tokenization algorithm implemented by this package is not a line-by-line +// transliteration of the relatively verbose state-machine in the WHATWG +// specification. A more direct approach is used instead, where the program +// counter implies the state, such as whether it is tokenizing a tag or a text +// node. Specification compliance is verified by checking expected and actual +// outputs over a test suite rather than aiming for algorithmic fidelity. + +// TODO(nigeltao): Does a DOM API belong in this package or a separate one? +// TODO(nigeltao): How does parsing interact with a JavaScript engine? diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/doctype.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/doctype.go new file mode 100644 index 000000000..c484e5a94 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/doctype.go @@ -0,0 +1,156 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "strings" +) + +// parseDoctype parses the data from a DoctypeToken into a name, +// public identifier, and system identifier. It returns a Node whose Type +// is DoctypeNode, whose Data is the name, and which has attributes +// named "system" and "public" for the two identifiers if they were present. +// quirks is whether the document should be parsed in "quirks mode". +func parseDoctype(s string) (n *Node, quirks bool) { + n = &Node{Type: DoctypeNode} + + // Find the name. + space := strings.IndexAny(s, whitespace) + if space == -1 { + space = len(s) + } + n.Data = s[:space] + // The comparison to "html" is case-sensitive. + if n.Data != "html" { + quirks = true + } + n.Data = strings.ToLower(n.Data) + s = strings.TrimLeft(s[space:], whitespace) + + if len(s) < 6 { + // It can't start with "PUBLIC" or "SYSTEM". + // Ignore the rest of the string. + return n, quirks || s != "" + } + + key := strings.ToLower(s[:6]) + s = s[6:] + for key == "public" || key == "system" { + s = strings.TrimLeft(s, whitespace) + if s == "" { + break + } + quote := s[0] + if quote != '"' && quote != '\'' { + break + } + s = s[1:] + q := strings.IndexRune(s, rune(quote)) + var id string + if q == -1 { + id = s + s = "" + } else { + id = s[:q] + s = s[q+1:] + } + n.Attr = append(n.Attr, Attribute{Key: key, Val: id}) + if key == "public" { + key = "system" + } else { + key = "" + } + } + + if key != "" || s != "" { + quirks = true + } else if len(n.Attr) > 0 { + if n.Attr[0].Key == "public" { + public := strings.ToLower(n.Attr[0].Val) + switch public { + case "-//w3o//dtd w3 html strict 3.0//en//", "-/w3d/dtd html 4.0 transitional/en", "html": + quirks = true + default: + for _, q := range quirkyIDs { + if strings.HasPrefix(public, q) { + quirks = true + break + } + } + } + // The following two public IDs only cause quirks mode if there is no system ID. + if len(n.Attr) == 1 && (strings.HasPrefix(public, "-//w3c//dtd html 4.01 frameset//") || + strings.HasPrefix(public, "-//w3c//dtd html 4.01 transitional//")) { + quirks = true + } + } + if lastAttr := n.Attr[len(n.Attr)-1]; lastAttr.Key == "system" && + strings.ToLower(lastAttr.Val) == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" { + quirks = true + } + } + + return n, quirks +} + +// quirkyIDs is a list of public doctype identifiers that cause a document +// to be interpreted in quirks mode. The identifiers should be in lower case. +var quirkyIDs = []string{ + "+//silmaril//dtd html pro v0r11 19970101//", + "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", + "-//as//dtd html 3.0 aswedit + extensions//", + "-//ietf//dtd html 2.0 level 1//", + "-//ietf//dtd html 2.0 level 2//", + "-//ietf//dtd html 2.0 strict level 1//", + "-//ietf//dtd html 2.0 strict level 2//", + "-//ietf//dtd html 2.0 strict//", + "-//ietf//dtd html 2.0//", + "-//ietf//dtd html 2.1e//", + "-//ietf//dtd html 3.0//", + "-//ietf//dtd html 3.2 final//", + "-//ietf//dtd html 3.2//", + "-//ietf//dtd html 3//", + "-//ietf//dtd html level 0//", + "-//ietf//dtd html level 1//", + "-//ietf//dtd html level 2//", + "-//ietf//dtd html level 3//", + "-//ietf//dtd html strict level 0//", + "-//ietf//dtd html strict level 1//", + "-//ietf//dtd html strict level 2//", + "-//ietf//dtd html strict level 3//", + "-//ietf//dtd html strict//", + "-//ietf//dtd html//", + "-//metrius//dtd metrius presentational//", + "-//microsoft//dtd internet explorer 2.0 html strict//", + "-//microsoft//dtd internet explorer 2.0 html//", + "-//microsoft//dtd internet explorer 2.0 tables//", + "-//microsoft//dtd internet explorer 3.0 html strict//", + "-//microsoft//dtd internet explorer 3.0 html//", + "-//microsoft//dtd internet explorer 3.0 tables//", + "-//netscape comm. corp.//dtd html//", + "-//netscape comm. corp.//dtd strict html//", + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//o'reilly and associates//dtd html extended relaxed 1.0//", + "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", + "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", + "-//spyglass//dtd html 2.0 extended//", + "-//sq//dtd html 2.0 hotmetal + extensions//", + "-//sun microsystems corp.//dtd hotjava html//", + "-//sun microsystems corp.//dtd hotjava strict html//", + "-//w3c//dtd html 3 1995-03-24//", + "-//w3c//dtd html 3.2 draft//", + "-//w3c//dtd html 3.2 final//", + "-//w3c//dtd html 3.2//", + "-//w3c//dtd html 3.2s draft//", + "-//w3c//dtd html 4.0 frameset//", + "-//w3c//dtd html 4.0 transitional//", + "-//w3c//dtd html experimental 19960712//", + "-//w3c//dtd html experimental 970421//", + "-//w3c//dtd w3 html//", + "-//w3o//dtd w3 html 3.0//", + "-//webtechs//dtd mozilla html 2.0//", + "-//webtechs//dtd mozilla html//", +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/entity.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/entity.go new file mode 100644 index 000000000..b628880a0 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/entity.go @@ -0,0 +1,2253 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +// All entities that do not end with ';' are 6 or fewer bytes long. +const longestEntityWithoutSemicolon = 6 + +// entity is a map from HTML entity names to their values. The semicolon matters: +// https://html.spec.whatwg.org/multipage/syntax.html#named-character-references +// lists both "amp" and "amp;" as two separate entries. +// +// Note that the HTML5 list is larger than the HTML4 list at +// http://www.w3.org/TR/html4/sgml/entities.html +var entity = map[string]rune{ + "AElig;": '\U000000C6', + "AMP;": '\U00000026', + "Aacute;": '\U000000C1', + "Abreve;": '\U00000102', + "Acirc;": '\U000000C2', + "Acy;": '\U00000410', + "Afr;": '\U0001D504', + "Agrave;": '\U000000C0', + "Alpha;": '\U00000391', + "Amacr;": '\U00000100', + "And;": '\U00002A53', + "Aogon;": '\U00000104', + "Aopf;": '\U0001D538', + "ApplyFunction;": '\U00002061', + "Aring;": '\U000000C5', + "Ascr;": '\U0001D49C', + "Assign;": '\U00002254', + "Atilde;": '\U000000C3', + "Auml;": '\U000000C4', + "Backslash;": '\U00002216', + "Barv;": '\U00002AE7', + "Barwed;": '\U00002306', + "Bcy;": '\U00000411', + "Because;": '\U00002235', + "Bernoullis;": '\U0000212C', + "Beta;": '\U00000392', + "Bfr;": '\U0001D505', + "Bopf;": '\U0001D539', + "Breve;": '\U000002D8', + "Bscr;": '\U0000212C', + "Bumpeq;": '\U0000224E', + "CHcy;": '\U00000427', + "COPY;": '\U000000A9', + "Cacute;": '\U00000106', + "Cap;": '\U000022D2', + "CapitalDifferentialD;": '\U00002145', + "Cayleys;": '\U0000212D', + "Ccaron;": '\U0000010C', + "Ccedil;": '\U000000C7', + "Ccirc;": '\U00000108', + "Cconint;": '\U00002230', + "Cdot;": '\U0000010A', + "Cedilla;": '\U000000B8', + "CenterDot;": '\U000000B7', + "Cfr;": '\U0000212D', + "Chi;": '\U000003A7', + "CircleDot;": '\U00002299', + "CircleMinus;": '\U00002296', + "CirclePlus;": '\U00002295', + "CircleTimes;": '\U00002297', + "ClockwiseContourIntegral;": '\U00002232', + "CloseCurlyDoubleQuote;": '\U0000201D', + "CloseCurlyQuote;": '\U00002019', + "Colon;": '\U00002237', + "Colone;": '\U00002A74', + "Congruent;": '\U00002261', + "Conint;": '\U0000222F', + "ContourIntegral;": '\U0000222E', + "Copf;": '\U00002102', + "Coproduct;": '\U00002210', + "CounterClockwiseContourIntegral;": '\U00002233', + "Cross;": '\U00002A2F', + "Cscr;": '\U0001D49E', + "Cup;": '\U000022D3', + "CupCap;": '\U0000224D', + "DD;": '\U00002145', + "DDotrahd;": '\U00002911', + "DJcy;": '\U00000402', + "DScy;": '\U00000405', + "DZcy;": '\U0000040F', + "Dagger;": '\U00002021', + "Darr;": '\U000021A1', + "Dashv;": '\U00002AE4', + "Dcaron;": '\U0000010E', + "Dcy;": '\U00000414', + "Del;": '\U00002207', + "Delta;": '\U00000394', + "Dfr;": '\U0001D507', + "DiacriticalAcute;": '\U000000B4', + "DiacriticalDot;": '\U000002D9', + "DiacriticalDoubleAcute;": '\U000002DD', + "DiacriticalGrave;": '\U00000060', + "DiacriticalTilde;": '\U000002DC', + "Diamond;": '\U000022C4', + "DifferentialD;": '\U00002146', + "Dopf;": '\U0001D53B', + "Dot;": '\U000000A8', + "DotDot;": '\U000020DC', + "DotEqual;": '\U00002250', + "DoubleContourIntegral;": '\U0000222F', + "DoubleDot;": '\U000000A8', + "DoubleDownArrow;": '\U000021D3', + "DoubleLeftArrow;": '\U000021D0', + "DoubleLeftRightArrow;": '\U000021D4', + "DoubleLeftTee;": '\U00002AE4', + "DoubleLongLeftArrow;": '\U000027F8', + "DoubleLongLeftRightArrow;": '\U000027FA', + "DoubleLongRightArrow;": '\U000027F9', + "DoubleRightArrow;": '\U000021D2', + "DoubleRightTee;": '\U000022A8', + "DoubleUpArrow;": '\U000021D1', + "DoubleUpDownArrow;": '\U000021D5', + "DoubleVerticalBar;": '\U00002225', + "DownArrow;": '\U00002193', + "DownArrowBar;": '\U00002913', + "DownArrowUpArrow;": '\U000021F5', + "DownBreve;": '\U00000311', + "DownLeftRightVector;": '\U00002950', + "DownLeftTeeVector;": '\U0000295E', + "DownLeftVector;": '\U000021BD', + "DownLeftVectorBar;": '\U00002956', + "DownRightTeeVector;": '\U0000295F', + "DownRightVector;": '\U000021C1', + "DownRightVectorBar;": '\U00002957', + "DownTee;": '\U000022A4', + "DownTeeArrow;": '\U000021A7', + "Downarrow;": '\U000021D3', + "Dscr;": '\U0001D49F', + "Dstrok;": '\U00000110', + "ENG;": '\U0000014A', + "ETH;": '\U000000D0', + "Eacute;": '\U000000C9', + "Ecaron;": '\U0000011A', + "Ecirc;": '\U000000CA', + "Ecy;": '\U0000042D', + "Edot;": '\U00000116', + "Efr;": '\U0001D508', + "Egrave;": '\U000000C8', + "Element;": '\U00002208', + "Emacr;": '\U00000112', + "EmptySmallSquare;": '\U000025FB', + "EmptyVerySmallSquare;": '\U000025AB', + "Eogon;": '\U00000118', + "Eopf;": '\U0001D53C', + "Epsilon;": '\U00000395', + "Equal;": '\U00002A75', + "EqualTilde;": '\U00002242', + "Equilibrium;": '\U000021CC', + "Escr;": '\U00002130', + "Esim;": '\U00002A73', + "Eta;": '\U00000397', + "Euml;": '\U000000CB', + "Exists;": '\U00002203', + "ExponentialE;": '\U00002147', + "Fcy;": '\U00000424', + "Ffr;": '\U0001D509', + "FilledSmallSquare;": '\U000025FC', + "FilledVerySmallSquare;": '\U000025AA', + "Fopf;": '\U0001D53D', + "ForAll;": '\U00002200', + "Fouriertrf;": '\U00002131', + "Fscr;": '\U00002131', + "GJcy;": '\U00000403', + "GT;": '\U0000003E', + "Gamma;": '\U00000393', + "Gammad;": '\U000003DC', + "Gbreve;": '\U0000011E', + "Gcedil;": '\U00000122', + "Gcirc;": '\U0000011C', + "Gcy;": '\U00000413', + "Gdot;": '\U00000120', + "Gfr;": '\U0001D50A', + "Gg;": '\U000022D9', + "Gopf;": '\U0001D53E', + "GreaterEqual;": '\U00002265', + "GreaterEqualLess;": '\U000022DB', + "GreaterFullEqual;": '\U00002267', + "GreaterGreater;": '\U00002AA2', + "GreaterLess;": '\U00002277', + "GreaterSlantEqual;": '\U00002A7E', + "GreaterTilde;": '\U00002273', + "Gscr;": '\U0001D4A2', + "Gt;": '\U0000226B', + "HARDcy;": '\U0000042A', + "Hacek;": '\U000002C7', + "Hat;": '\U0000005E', + "Hcirc;": '\U00000124', + "Hfr;": '\U0000210C', + "HilbertSpace;": '\U0000210B', + "Hopf;": '\U0000210D', + "HorizontalLine;": '\U00002500', + "Hscr;": '\U0000210B', + "Hstrok;": '\U00000126', + "HumpDownHump;": '\U0000224E', + "HumpEqual;": '\U0000224F', + "IEcy;": '\U00000415', + "IJlig;": '\U00000132', + "IOcy;": '\U00000401', + "Iacute;": '\U000000CD', + "Icirc;": '\U000000CE', + "Icy;": '\U00000418', + "Idot;": '\U00000130', + "Ifr;": '\U00002111', + "Igrave;": '\U000000CC', + "Im;": '\U00002111', + "Imacr;": '\U0000012A', + "ImaginaryI;": '\U00002148', + "Implies;": '\U000021D2', + "Int;": '\U0000222C', + "Integral;": '\U0000222B', + "Intersection;": '\U000022C2', + "InvisibleComma;": '\U00002063', + "InvisibleTimes;": '\U00002062', + "Iogon;": '\U0000012E', + "Iopf;": '\U0001D540', + "Iota;": '\U00000399', + "Iscr;": '\U00002110', + "Itilde;": '\U00000128', + "Iukcy;": '\U00000406', + "Iuml;": '\U000000CF', + "Jcirc;": '\U00000134', + "Jcy;": '\U00000419', + "Jfr;": '\U0001D50D', + "Jopf;": '\U0001D541', + "Jscr;": '\U0001D4A5', + "Jsercy;": '\U00000408', + "Jukcy;": '\U00000404', + "KHcy;": '\U00000425', + "KJcy;": '\U0000040C', + "Kappa;": '\U0000039A', + "Kcedil;": '\U00000136', + "Kcy;": '\U0000041A', + "Kfr;": '\U0001D50E', + "Kopf;": '\U0001D542', + "Kscr;": '\U0001D4A6', + "LJcy;": '\U00000409', + "LT;": '\U0000003C', + "Lacute;": '\U00000139', + "Lambda;": '\U0000039B', + "Lang;": '\U000027EA', + "Laplacetrf;": '\U00002112', + "Larr;": '\U0000219E', + "Lcaron;": '\U0000013D', + "Lcedil;": '\U0000013B', + "Lcy;": '\U0000041B', + "LeftAngleBracket;": '\U000027E8', + "LeftArrow;": '\U00002190', + "LeftArrowBar;": '\U000021E4', + "LeftArrowRightArrow;": '\U000021C6', + "LeftCeiling;": '\U00002308', + "LeftDoubleBracket;": '\U000027E6', + "LeftDownTeeVector;": '\U00002961', + "LeftDownVector;": '\U000021C3', + "LeftDownVectorBar;": '\U00002959', + "LeftFloor;": '\U0000230A', + "LeftRightArrow;": '\U00002194', + "LeftRightVector;": '\U0000294E', + "LeftTee;": '\U000022A3', + "LeftTeeArrow;": '\U000021A4', + "LeftTeeVector;": '\U0000295A', + "LeftTriangle;": '\U000022B2', + "LeftTriangleBar;": '\U000029CF', + "LeftTriangleEqual;": '\U000022B4', + "LeftUpDownVector;": '\U00002951', + "LeftUpTeeVector;": '\U00002960', + "LeftUpVector;": '\U000021BF', + "LeftUpVectorBar;": '\U00002958', + "LeftVector;": '\U000021BC', + "LeftVectorBar;": '\U00002952', + "Leftarrow;": '\U000021D0', + "Leftrightarrow;": '\U000021D4', + "LessEqualGreater;": '\U000022DA', + "LessFullEqual;": '\U00002266', + "LessGreater;": '\U00002276', + "LessLess;": '\U00002AA1', + "LessSlantEqual;": '\U00002A7D', + "LessTilde;": '\U00002272', + "Lfr;": '\U0001D50F', + "Ll;": '\U000022D8', + "Lleftarrow;": '\U000021DA', + "Lmidot;": '\U0000013F', + "LongLeftArrow;": '\U000027F5', + "LongLeftRightArrow;": '\U000027F7', + "LongRightArrow;": '\U000027F6', + "Longleftarrow;": '\U000027F8', + "Longleftrightarrow;": '\U000027FA', + "Longrightarrow;": '\U000027F9', + "Lopf;": '\U0001D543', + "LowerLeftArrow;": '\U00002199', + "LowerRightArrow;": '\U00002198', + "Lscr;": '\U00002112', + "Lsh;": '\U000021B0', + "Lstrok;": '\U00000141', + "Lt;": '\U0000226A', + "Map;": '\U00002905', + "Mcy;": '\U0000041C', + "MediumSpace;": '\U0000205F', + "Mellintrf;": '\U00002133', + "Mfr;": '\U0001D510', + "MinusPlus;": '\U00002213', + "Mopf;": '\U0001D544', + "Mscr;": '\U00002133', + "Mu;": '\U0000039C', + "NJcy;": '\U0000040A', + "Nacute;": '\U00000143', + "Ncaron;": '\U00000147', + "Ncedil;": '\U00000145', + "Ncy;": '\U0000041D', + "NegativeMediumSpace;": '\U0000200B', + "NegativeThickSpace;": '\U0000200B', + "NegativeThinSpace;": '\U0000200B', + "NegativeVeryThinSpace;": '\U0000200B', + "NestedGreaterGreater;": '\U0000226B', + "NestedLessLess;": '\U0000226A', + "NewLine;": '\U0000000A', + "Nfr;": '\U0001D511', + "NoBreak;": '\U00002060', + "NonBreakingSpace;": '\U000000A0', + "Nopf;": '\U00002115', + "Not;": '\U00002AEC', + "NotCongruent;": '\U00002262', + "NotCupCap;": '\U0000226D', + "NotDoubleVerticalBar;": '\U00002226', + "NotElement;": '\U00002209', + "NotEqual;": '\U00002260', + "NotExists;": '\U00002204', + "NotGreater;": '\U0000226F', + "NotGreaterEqual;": '\U00002271', + "NotGreaterLess;": '\U00002279', + "NotGreaterTilde;": '\U00002275', + "NotLeftTriangle;": '\U000022EA', + "NotLeftTriangleEqual;": '\U000022EC', + "NotLess;": '\U0000226E', + "NotLessEqual;": '\U00002270', + "NotLessGreater;": '\U00002278', + "NotLessTilde;": '\U00002274', + "NotPrecedes;": '\U00002280', + "NotPrecedesSlantEqual;": '\U000022E0', + "NotReverseElement;": '\U0000220C', + "NotRightTriangle;": '\U000022EB', + "NotRightTriangleEqual;": '\U000022ED', + "NotSquareSubsetEqual;": '\U000022E2', + "NotSquareSupersetEqual;": '\U000022E3', + "NotSubsetEqual;": '\U00002288', + "NotSucceeds;": '\U00002281', + "NotSucceedsSlantEqual;": '\U000022E1', + "NotSupersetEqual;": '\U00002289', + "NotTilde;": '\U00002241', + "NotTildeEqual;": '\U00002244', + "NotTildeFullEqual;": '\U00002247', + "NotTildeTilde;": '\U00002249', + "NotVerticalBar;": '\U00002224', + "Nscr;": '\U0001D4A9', + "Ntilde;": '\U000000D1', + "Nu;": '\U0000039D', + "OElig;": '\U00000152', + "Oacute;": '\U000000D3', + "Ocirc;": '\U000000D4', + "Ocy;": '\U0000041E', + "Odblac;": '\U00000150', + "Ofr;": '\U0001D512', + "Ograve;": '\U000000D2', + "Omacr;": '\U0000014C', + "Omega;": '\U000003A9', + "Omicron;": '\U0000039F', + "Oopf;": '\U0001D546', + "OpenCurlyDoubleQuote;": '\U0000201C', + "OpenCurlyQuote;": '\U00002018', + "Or;": '\U00002A54', + "Oscr;": '\U0001D4AA', + "Oslash;": '\U000000D8', + "Otilde;": '\U000000D5', + "Otimes;": '\U00002A37', + "Ouml;": '\U000000D6', + "OverBar;": '\U0000203E', + "OverBrace;": '\U000023DE', + "OverBracket;": '\U000023B4', + "OverParenthesis;": '\U000023DC', + "PartialD;": '\U00002202', + "Pcy;": '\U0000041F', + "Pfr;": '\U0001D513', + "Phi;": '\U000003A6', + "Pi;": '\U000003A0', + "PlusMinus;": '\U000000B1', + "Poincareplane;": '\U0000210C', + "Popf;": '\U00002119', + "Pr;": '\U00002ABB', + "Precedes;": '\U0000227A', + "PrecedesEqual;": '\U00002AAF', + "PrecedesSlantEqual;": '\U0000227C', + "PrecedesTilde;": '\U0000227E', + "Prime;": '\U00002033', + "Product;": '\U0000220F', + "Proportion;": '\U00002237', + "Proportional;": '\U0000221D', + "Pscr;": '\U0001D4AB', + "Psi;": '\U000003A8', + "QUOT;": '\U00000022', + "Qfr;": '\U0001D514', + "Qopf;": '\U0000211A', + "Qscr;": '\U0001D4AC', + "RBarr;": '\U00002910', + "REG;": '\U000000AE', + "Racute;": '\U00000154', + "Rang;": '\U000027EB', + "Rarr;": '\U000021A0', + "Rarrtl;": '\U00002916', + "Rcaron;": '\U00000158', + "Rcedil;": '\U00000156', + "Rcy;": '\U00000420', + "Re;": '\U0000211C', + "ReverseElement;": '\U0000220B', + "ReverseEquilibrium;": '\U000021CB', + "ReverseUpEquilibrium;": '\U0000296F', + "Rfr;": '\U0000211C', + "Rho;": '\U000003A1', + "RightAngleBracket;": '\U000027E9', + "RightArrow;": '\U00002192', + "RightArrowBar;": '\U000021E5', + "RightArrowLeftArrow;": '\U000021C4', + "RightCeiling;": '\U00002309', + "RightDoubleBracket;": '\U000027E7', + "RightDownTeeVector;": '\U0000295D', + "RightDownVector;": '\U000021C2', + "RightDownVectorBar;": '\U00002955', + "RightFloor;": '\U0000230B', + "RightTee;": '\U000022A2', + "RightTeeArrow;": '\U000021A6', + "RightTeeVector;": '\U0000295B', + "RightTriangle;": '\U000022B3', + "RightTriangleBar;": '\U000029D0', + "RightTriangleEqual;": '\U000022B5', + "RightUpDownVector;": '\U0000294F', + "RightUpTeeVector;": '\U0000295C', + "RightUpVector;": '\U000021BE', + "RightUpVectorBar;": '\U00002954', + "RightVector;": '\U000021C0', + "RightVectorBar;": '\U00002953', + "Rightarrow;": '\U000021D2', + "Ropf;": '\U0000211D', + "RoundImplies;": '\U00002970', + "Rrightarrow;": '\U000021DB', + "Rscr;": '\U0000211B', + "Rsh;": '\U000021B1', + "RuleDelayed;": '\U000029F4', + "SHCHcy;": '\U00000429', + "SHcy;": '\U00000428', + "SOFTcy;": '\U0000042C', + "Sacute;": '\U0000015A', + "Sc;": '\U00002ABC', + "Scaron;": '\U00000160', + "Scedil;": '\U0000015E', + "Scirc;": '\U0000015C', + "Scy;": '\U00000421', + "Sfr;": '\U0001D516', + "ShortDownArrow;": '\U00002193', + "ShortLeftArrow;": '\U00002190', + "ShortRightArrow;": '\U00002192', + "ShortUpArrow;": '\U00002191', + "Sigma;": '\U000003A3', + "SmallCircle;": '\U00002218', + "Sopf;": '\U0001D54A', + "Sqrt;": '\U0000221A', + "Square;": '\U000025A1', + "SquareIntersection;": '\U00002293', + "SquareSubset;": '\U0000228F', + "SquareSubsetEqual;": '\U00002291', + "SquareSuperset;": '\U00002290', + "SquareSupersetEqual;": '\U00002292', + "SquareUnion;": '\U00002294', + "Sscr;": '\U0001D4AE', + "Star;": '\U000022C6', + "Sub;": '\U000022D0', + "Subset;": '\U000022D0', + "SubsetEqual;": '\U00002286', + "Succeeds;": '\U0000227B', + "SucceedsEqual;": '\U00002AB0', + "SucceedsSlantEqual;": '\U0000227D', + "SucceedsTilde;": '\U0000227F', + "SuchThat;": '\U0000220B', + "Sum;": '\U00002211', + "Sup;": '\U000022D1', + "Superset;": '\U00002283', + "SupersetEqual;": '\U00002287', + "Supset;": '\U000022D1', + "THORN;": '\U000000DE', + "TRADE;": '\U00002122', + "TSHcy;": '\U0000040B', + "TScy;": '\U00000426', + "Tab;": '\U00000009', + "Tau;": '\U000003A4', + "Tcaron;": '\U00000164', + "Tcedil;": '\U00000162', + "Tcy;": '\U00000422', + "Tfr;": '\U0001D517', + "Therefore;": '\U00002234', + "Theta;": '\U00000398', + "ThinSpace;": '\U00002009', + "Tilde;": '\U0000223C', + "TildeEqual;": '\U00002243', + "TildeFullEqual;": '\U00002245', + "TildeTilde;": '\U00002248', + "Topf;": '\U0001D54B', + "TripleDot;": '\U000020DB', + "Tscr;": '\U0001D4AF', + "Tstrok;": '\U00000166', + "Uacute;": '\U000000DA', + "Uarr;": '\U0000219F', + "Uarrocir;": '\U00002949', + "Ubrcy;": '\U0000040E', + "Ubreve;": '\U0000016C', + "Ucirc;": '\U000000DB', + "Ucy;": '\U00000423', + "Udblac;": '\U00000170', + "Ufr;": '\U0001D518', + "Ugrave;": '\U000000D9', + "Umacr;": '\U0000016A', + "UnderBar;": '\U0000005F', + "UnderBrace;": '\U000023DF', + "UnderBracket;": '\U000023B5', + "UnderParenthesis;": '\U000023DD', + "Union;": '\U000022C3', + "UnionPlus;": '\U0000228E', + "Uogon;": '\U00000172', + "Uopf;": '\U0001D54C', + "UpArrow;": '\U00002191', + "UpArrowBar;": '\U00002912', + "UpArrowDownArrow;": '\U000021C5', + "UpDownArrow;": '\U00002195', + "UpEquilibrium;": '\U0000296E', + "UpTee;": '\U000022A5', + "UpTeeArrow;": '\U000021A5', + "Uparrow;": '\U000021D1', + "Updownarrow;": '\U000021D5', + "UpperLeftArrow;": '\U00002196', + "UpperRightArrow;": '\U00002197', + "Upsi;": '\U000003D2', + "Upsilon;": '\U000003A5', + "Uring;": '\U0000016E', + "Uscr;": '\U0001D4B0', + "Utilde;": '\U00000168', + "Uuml;": '\U000000DC', + "VDash;": '\U000022AB', + "Vbar;": '\U00002AEB', + "Vcy;": '\U00000412', + "Vdash;": '\U000022A9', + "Vdashl;": '\U00002AE6', + "Vee;": '\U000022C1', + "Verbar;": '\U00002016', + "Vert;": '\U00002016', + "VerticalBar;": '\U00002223', + "VerticalLine;": '\U0000007C', + "VerticalSeparator;": '\U00002758', + "VerticalTilde;": '\U00002240', + "VeryThinSpace;": '\U0000200A', + "Vfr;": '\U0001D519', + "Vopf;": '\U0001D54D', + "Vscr;": '\U0001D4B1', + "Vvdash;": '\U000022AA', + "Wcirc;": '\U00000174', + "Wedge;": '\U000022C0', + "Wfr;": '\U0001D51A', + "Wopf;": '\U0001D54E', + "Wscr;": '\U0001D4B2', + "Xfr;": '\U0001D51B', + "Xi;": '\U0000039E', + "Xopf;": '\U0001D54F', + "Xscr;": '\U0001D4B3', + "YAcy;": '\U0000042F', + "YIcy;": '\U00000407', + "YUcy;": '\U0000042E', + "Yacute;": '\U000000DD', + "Ycirc;": '\U00000176', + "Ycy;": '\U0000042B', + "Yfr;": '\U0001D51C', + "Yopf;": '\U0001D550', + "Yscr;": '\U0001D4B4', + "Yuml;": '\U00000178', + "ZHcy;": '\U00000416', + "Zacute;": '\U00000179', + "Zcaron;": '\U0000017D', + "Zcy;": '\U00000417', + "Zdot;": '\U0000017B', + "ZeroWidthSpace;": '\U0000200B', + "Zeta;": '\U00000396', + "Zfr;": '\U00002128', + "Zopf;": '\U00002124', + "Zscr;": '\U0001D4B5', + "aacute;": '\U000000E1', + "abreve;": '\U00000103', + "ac;": '\U0000223E', + "acd;": '\U0000223F', + "acirc;": '\U000000E2', + "acute;": '\U000000B4', + "acy;": '\U00000430', + "aelig;": '\U000000E6', + "af;": '\U00002061', + "afr;": '\U0001D51E', + "agrave;": '\U000000E0', + "alefsym;": '\U00002135', + "aleph;": '\U00002135', + "alpha;": '\U000003B1', + "amacr;": '\U00000101', + "amalg;": '\U00002A3F', + "amp;": '\U00000026', + "and;": '\U00002227', + "andand;": '\U00002A55', + "andd;": '\U00002A5C', + "andslope;": '\U00002A58', + "andv;": '\U00002A5A', + "ang;": '\U00002220', + "ange;": '\U000029A4', + "angle;": '\U00002220', + "angmsd;": '\U00002221', + "angmsdaa;": '\U000029A8', + "angmsdab;": '\U000029A9', + "angmsdac;": '\U000029AA', + "angmsdad;": '\U000029AB', + "angmsdae;": '\U000029AC', + "angmsdaf;": '\U000029AD', + "angmsdag;": '\U000029AE', + "angmsdah;": '\U000029AF', + "angrt;": '\U0000221F', + "angrtvb;": '\U000022BE', + "angrtvbd;": '\U0000299D', + "angsph;": '\U00002222', + "angst;": '\U000000C5', + "angzarr;": '\U0000237C', + "aogon;": '\U00000105', + "aopf;": '\U0001D552', + "ap;": '\U00002248', + "apE;": '\U00002A70', + "apacir;": '\U00002A6F', + "ape;": '\U0000224A', + "apid;": '\U0000224B', + "apos;": '\U00000027', + "approx;": '\U00002248', + "approxeq;": '\U0000224A', + "aring;": '\U000000E5', + "ascr;": '\U0001D4B6', + "ast;": '\U0000002A', + "asymp;": '\U00002248', + "asympeq;": '\U0000224D', + "atilde;": '\U000000E3', + "auml;": '\U000000E4', + "awconint;": '\U00002233', + "awint;": '\U00002A11', + "bNot;": '\U00002AED', + "backcong;": '\U0000224C', + "backepsilon;": '\U000003F6', + "backprime;": '\U00002035', + "backsim;": '\U0000223D', + "backsimeq;": '\U000022CD', + "barvee;": '\U000022BD', + "barwed;": '\U00002305', + "barwedge;": '\U00002305', + "bbrk;": '\U000023B5', + "bbrktbrk;": '\U000023B6', + "bcong;": '\U0000224C', + "bcy;": '\U00000431', + "bdquo;": '\U0000201E', + "becaus;": '\U00002235', + "because;": '\U00002235', + "bemptyv;": '\U000029B0', + "bepsi;": '\U000003F6', + "bernou;": '\U0000212C', + "beta;": '\U000003B2', + "beth;": '\U00002136', + "between;": '\U0000226C', + "bfr;": '\U0001D51F', + "bigcap;": '\U000022C2', + "bigcirc;": '\U000025EF', + "bigcup;": '\U000022C3', + "bigodot;": '\U00002A00', + "bigoplus;": '\U00002A01', + "bigotimes;": '\U00002A02', + "bigsqcup;": '\U00002A06', + "bigstar;": '\U00002605', + "bigtriangledown;": '\U000025BD', + "bigtriangleup;": '\U000025B3', + "biguplus;": '\U00002A04', + "bigvee;": '\U000022C1', + "bigwedge;": '\U000022C0', + "bkarow;": '\U0000290D', + "blacklozenge;": '\U000029EB', + "blacksquare;": '\U000025AA', + "blacktriangle;": '\U000025B4', + "blacktriangledown;": '\U000025BE', + "blacktriangleleft;": '\U000025C2', + "blacktriangleright;": '\U000025B8', + "blank;": '\U00002423', + "blk12;": '\U00002592', + "blk14;": '\U00002591', + "blk34;": '\U00002593', + "block;": '\U00002588', + "bnot;": '\U00002310', + "bopf;": '\U0001D553', + "bot;": '\U000022A5', + "bottom;": '\U000022A5', + "bowtie;": '\U000022C8', + "boxDL;": '\U00002557', + "boxDR;": '\U00002554', + "boxDl;": '\U00002556', + "boxDr;": '\U00002553', + "boxH;": '\U00002550', + "boxHD;": '\U00002566', + "boxHU;": '\U00002569', + "boxHd;": '\U00002564', + "boxHu;": '\U00002567', + "boxUL;": '\U0000255D', + "boxUR;": '\U0000255A', + "boxUl;": '\U0000255C', + "boxUr;": '\U00002559', + "boxV;": '\U00002551', + "boxVH;": '\U0000256C', + "boxVL;": '\U00002563', + "boxVR;": '\U00002560', + "boxVh;": '\U0000256B', + "boxVl;": '\U00002562', + "boxVr;": '\U0000255F', + "boxbox;": '\U000029C9', + "boxdL;": '\U00002555', + "boxdR;": '\U00002552', + "boxdl;": '\U00002510', + "boxdr;": '\U0000250C', + "boxh;": '\U00002500', + "boxhD;": '\U00002565', + "boxhU;": '\U00002568', + "boxhd;": '\U0000252C', + "boxhu;": '\U00002534', + "boxminus;": '\U0000229F', + "boxplus;": '\U0000229E', + "boxtimes;": '\U000022A0', + "boxuL;": '\U0000255B', + "boxuR;": '\U00002558', + "boxul;": '\U00002518', + "boxur;": '\U00002514', + "boxv;": '\U00002502', + "boxvH;": '\U0000256A', + "boxvL;": '\U00002561', + "boxvR;": '\U0000255E', + "boxvh;": '\U0000253C', + "boxvl;": '\U00002524', + "boxvr;": '\U0000251C', + "bprime;": '\U00002035', + "breve;": '\U000002D8', + "brvbar;": '\U000000A6', + "bscr;": '\U0001D4B7', + "bsemi;": '\U0000204F', + "bsim;": '\U0000223D', + "bsime;": '\U000022CD', + "bsol;": '\U0000005C', + "bsolb;": '\U000029C5', + "bsolhsub;": '\U000027C8', + "bull;": '\U00002022', + "bullet;": '\U00002022', + "bump;": '\U0000224E', + "bumpE;": '\U00002AAE', + "bumpe;": '\U0000224F', + "bumpeq;": '\U0000224F', + "cacute;": '\U00000107', + "cap;": '\U00002229', + "capand;": '\U00002A44', + "capbrcup;": '\U00002A49', + "capcap;": '\U00002A4B', + "capcup;": '\U00002A47', + "capdot;": '\U00002A40', + "caret;": '\U00002041', + "caron;": '\U000002C7', + "ccaps;": '\U00002A4D', + "ccaron;": '\U0000010D', + "ccedil;": '\U000000E7', + "ccirc;": '\U00000109', + "ccups;": '\U00002A4C', + "ccupssm;": '\U00002A50', + "cdot;": '\U0000010B', + "cedil;": '\U000000B8', + "cemptyv;": '\U000029B2', + "cent;": '\U000000A2', + "centerdot;": '\U000000B7', + "cfr;": '\U0001D520', + "chcy;": '\U00000447', + "check;": '\U00002713', + "checkmark;": '\U00002713', + "chi;": '\U000003C7', + "cir;": '\U000025CB', + "cirE;": '\U000029C3', + "circ;": '\U000002C6', + "circeq;": '\U00002257', + "circlearrowleft;": '\U000021BA', + "circlearrowright;": '\U000021BB', + "circledR;": '\U000000AE', + "circledS;": '\U000024C8', + "circledast;": '\U0000229B', + "circledcirc;": '\U0000229A', + "circleddash;": '\U0000229D', + "cire;": '\U00002257', + "cirfnint;": '\U00002A10', + "cirmid;": '\U00002AEF', + "cirscir;": '\U000029C2', + "clubs;": '\U00002663', + "clubsuit;": '\U00002663', + "colon;": '\U0000003A', + "colone;": '\U00002254', + "coloneq;": '\U00002254', + "comma;": '\U0000002C', + "commat;": '\U00000040', + "comp;": '\U00002201', + "compfn;": '\U00002218', + "complement;": '\U00002201', + "complexes;": '\U00002102', + "cong;": '\U00002245', + "congdot;": '\U00002A6D', + "conint;": '\U0000222E', + "copf;": '\U0001D554', + "coprod;": '\U00002210', + "copy;": '\U000000A9', + "copysr;": '\U00002117', + "crarr;": '\U000021B5', + "cross;": '\U00002717', + "cscr;": '\U0001D4B8', + "csub;": '\U00002ACF', + "csube;": '\U00002AD1', + "csup;": '\U00002AD0', + "csupe;": '\U00002AD2', + "ctdot;": '\U000022EF', + "cudarrl;": '\U00002938', + "cudarrr;": '\U00002935', + "cuepr;": '\U000022DE', + "cuesc;": '\U000022DF', + "cularr;": '\U000021B6', + "cularrp;": '\U0000293D', + "cup;": '\U0000222A', + "cupbrcap;": '\U00002A48', + "cupcap;": '\U00002A46', + "cupcup;": '\U00002A4A', + "cupdot;": '\U0000228D', + "cupor;": '\U00002A45', + "curarr;": '\U000021B7', + "curarrm;": '\U0000293C', + "curlyeqprec;": '\U000022DE', + "curlyeqsucc;": '\U000022DF', + "curlyvee;": '\U000022CE', + "curlywedge;": '\U000022CF', + "curren;": '\U000000A4', + "curvearrowleft;": '\U000021B6', + "curvearrowright;": '\U000021B7', + "cuvee;": '\U000022CE', + "cuwed;": '\U000022CF', + "cwconint;": '\U00002232', + "cwint;": '\U00002231', + "cylcty;": '\U0000232D', + "dArr;": '\U000021D3', + "dHar;": '\U00002965', + "dagger;": '\U00002020', + "daleth;": '\U00002138', + "darr;": '\U00002193', + "dash;": '\U00002010', + "dashv;": '\U000022A3', + "dbkarow;": '\U0000290F', + "dblac;": '\U000002DD', + "dcaron;": '\U0000010F', + "dcy;": '\U00000434', + "dd;": '\U00002146', + "ddagger;": '\U00002021', + "ddarr;": '\U000021CA', + "ddotseq;": '\U00002A77', + "deg;": '\U000000B0', + "delta;": '\U000003B4', + "demptyv;": '\U000029B1', + "dfisht;": '\U0000297F', + "dfr;": '\U0001D521', + "dharl;": '\U000021C3', + "dharr;": '\U000021C2', + "diam;": '\U000022C4', + "diamond;": '\U000022C4', + "diamondsuit;": '\U00002666', + "diams;": '\U00002666', + "die;": '\U000000A8', + "digamma;": '\U000003DD', + "disin;": '\U000022F2', + "div;": '\U000000F7', + "divide;": '\U000000F7', + "divideontimes;": '\U000022C7', + "divonx;": '\U000022C7', + "djcy;": '\U00000452', + "dlcorn;": '\U0000231E', + "dlcrop;": '\U0000230D', + "dollar;": '\U00000024', + "dopf;": '\U0001D555', + "dot;": '\U000002D9', + "doteq;": '\U00002250', + "doteqdot;": '\U00002251', + "dotminus;": '\U00002238', + "dotplus;": '\U00002214', + "dotsquare;": '\U000022A1', + "doublebarwedge;": '\U00002306', + "downarrow;": '\U00002193', + "downdownarrows;": '\U000021CA', + "downharpoonleft;": '\U000021C3', + "downharpoonright;": '\U000021C2', + "drbkarow;": '\U00002910', + "drcorn;": '\U0000231F', + "drcrop;": '\U0000230C', + "dscr;": '\U0001D4B9', + "dscy;": '\U00000455', + "dsol;": '\U000029F6', + "dstrok;": '\U00000111', + "dtdot;": '\U000022F1', + "dtri;": '\U000025BF', + "dtrif;": '\U000025BE', + "duarr;": '\U000021F5', + "duhar;": '\U0000296F', + "dwangle;": '\U000029A6', + "dzcy;": '\U0000045F', + "dzigrarr;": '\U000027FF', + "eDDot;": '\U00002A77', + "eDot;": '\U00002251', + "eacute;": '\U000000E9', + "easter;": '\U00002A6E', + "ecaron;": '\U0000011B', + "ecir;": '\U00002256', + "ecirc;": '\U000000EA', + "ecolon;": '\U00002255', + "ecy;": '\U0000044D', + "edot;": '\U00000117', + "ee;": '\U00002147', + "efDot;": '\U00002252', + "efr;": '\U0001D522', + "eg;": '\U00002A9A', + "egrave;": '\U000000E8', + "egs;": '\U00002A96', + "egsdot;": '\U00002A98', + "el;": '\U00002A99', + "elinters;": '\U000023E7', + "ell;": '\U00002113', + "els;": '\U00002A95', + "elsdot;": '\U00002A97', + "emacr;": '\U00000113', + "empty;": '\U00002205', + "emptyset;": '\U00002205', + "emptyv;": '\U00002205', + "emsp;": '\U00002003', + "emsp13;": '\U00002004', + "emsp14;": '\U00002005', + "eng;": '\U0000014B', + "ensp;": '\U00002002', + "eogon;": '\U00000119', + "eopf;": '\U0001D556', + "epar;": '\U000022D5', + "eparsl;": '\U000029E3', + "eplus;": '\U00002A71', + "epsi;": '\U000003B5', + "epsilon;": '\U000003B5', + "epsiv;": '\U000003F5', + "eqcirc;": '\U00002256', + "eqcolon;": '\U00002255', + "eqsim;": '\U00002242', + "eqslantgtr;": '\U00002A96', + "eqslantless;": '\U00002A95', + "equals;": '\U0000003D', + "equest;": '\U0000225F', + "equiv;": '\U00002261', + "equivDD;": '\U00002A78', + "eqvparsl;": '\U000029E5', + "erDot;": '\U00002253', + "erarr;": '\U00002971', + "escr;": '\U0000212F', + "esdot;": '\U00002250', + "esim;": '\U00002242', + "eta;": '\U000003B7', + "eth;": '\U000000F0', + "euml;": '\U000000EB', + "euro;": '\U000020AC', + "excl;": '\U00000021', + "exist;": '\U00002203', + "expectation;": '\U00002130', + "exponentiale;": '\U00002147', + "fallingdotseq;": '\U00002252', + "fcy;": '\U00000444', + "female;": '\U00002640', + "ffilig;": '\U0000FB03', + "fflig;": '\U0000FB00', + "ffllig;": '\U0000FB04', + "ffr;": '\U0001D523', + "filig;": '\U0000FB01', + "flat;": '\U0000266D', + "fllig;": '\U0000FB02', + "fltns;": '\U000025B1', + "fnof;": '\U00000192', + "fopf;": '\U0001D557', + "forall;": '\U00002200', + "fork;": '\U000022D4', + "forkv;": '\U00002AD9', + "fpartint;": '\U00002A0D', + "frac12;": '\U000000BD', + "frac13;": '\U00002153', + "frac14;": '\U000000BC', + "frac15;": '\U00002155', + "frac16;": '\U00002159', + "frac18;": '\U0000215B', + "frac23;": '\U00002154', + "frac25;": '\U00002156', + "frac34;": '\U000000BE', + "frac35;": '\U00002157', + "frac38;": '\U0000215C', + "frac45;": '\U00002158', + "frac56;": '\U0000215A', + "frac58;": '\U0000215D', + "frac78;": '\U0000215E', + "frasl;": '\U00002044', + "frown;": '\U00002322', + "fscr;": '\U0001D4BB', + "gE;": '\U00002267', + "gEl;": '\U00002A8C', + "gacute;": '\U000001F5', + "gamma;": '\U000003B3', + "gammad;": '\U000003DD', + "gap;": '\U00002A86', + "gbreve;": '\U0000011F', + "gcirc;": '\U0000011D', + "gcy;": '\U00000433', + "gdot;": '\U00000121', + "ge;": '\U00002265', + "gel;": '\U000022DB', + "geq;": '\U00002265', + "geqq;": '\U00002267', + "geqslant;": '\U00002A7E', + "ges;": '\U00002A7E', + "gescc;": '\U00002AA9', + "gesdot;": '\U00002A80', + "gesdoto;": '\U00002A82', + "gesdotol;": '\U00002A84', + "gesles;": '\U00002A94', + "gfr;": '\U0001D524', + "gg;": '\U0000226B', + "ggg;": '\U000022D9', + "gimel;": '\U00002137', + "gjcy;": '\U00000453', + "gl;": '\U00002277', + "glE;": '\U00002A92', + "gla;": '\U00002AA5', + "glj;": '\U00002AA4', + "gnE;": '\U00002269', + "gnap;": '\U00002A8A', + "gnapprox;": '\U00002A8A', + "gne;": '\U00002A88', + "gneq;": '\U00002A88', + "gneqq;": '\U00002269', + "gnsim;": '\U000022E7', + "gopf;": '\U0001D558', + "grave;": '\U00000060', + "gscr;": '\U0000210A', + "gsim;": '\U00002273', + "gsime;": '\U00002A8E', + "gsiml;": '\U00002A90', + "gt;": '\U0000003E', + "gtcc;": '\U00002AA7', + "gtcir;": '\U00002A7A', + "gtdot;": '\U000022D7', + "gtlPar;": '\U00002995', + "gtquest;": '\U00002A7C', + "gtrapprox;": '\U00002A86', + "gtrarr;": '\U00002978', + "gtrdot;": '\U000022D7', + "gtreqless;": '\U000022DB', + "gtreqqless;": '\U00002A8C', + "gtrless;": '\U00002277', + "gtrsim;": '\U00002273', + "hArr;": '\U000021D4', + "hairsp;": '\U0000200A', + "half;": '\U000000BD', + "hamilt;": '\U0000210B', + "hardcy;": '\U0000044A', + "harr;": '\U00002194', + "harrcir;": '\U00002948', + "harrw;": '\U000021AD', + "hbar;": '\U0000210F', + "hcirc;": '\U00000125', + "hearts;": '\U00002665', + "heartsuit;": '\U00002665', + "hellip;": '\U00002026', + "hercon;": '\U000022B9', + "hfr;": '\U0001D525', + "hksearow;": '\U00002925', + "hkswarow;": '\U00002926', + "hoarr;": '\U000021FF', + "homtht;": '\U0000223B', + "hookleftarrow;": '\U000021A9', + "hookrightarrow;": '\U000021AA', + "hopf;": '\U0001D559', + "horbar;": '\U00002015', + "hscr;": '\U0001D4BD', + "hslash;": '\U0000210F', + "hstrok;": '\U00000127', + "hybull;": '\U00002043', + "hyphen;": '\U00002010', + "iacute;": '\U000000ED', + "ic;": '\U00002063', + "icirc;": '\U000000EE', + "icy;": '\U00000438', + "iecy;": '\U00000435', + "iexcl;": '\U000000A1', + "iff;": '\U000021D4', + "ifr;": '\U0001D526', + "igrave;": '\U000000EC', + "ii;": '\U00002148', + "iiiint;": '\U00002A0C', + "iiint;": '\U0000222D', + "iinfin;": '\U000029DC', + "iiota;": '\U00002129', + "ijlig;": '\U00000133', + "imacr;": '\U0000012B', + "image;": '\U00002111', + "imagline;": '\U00002110', + "imagpart;": '\U00002111', + "imath;": '\U00000131', + "imof;": '\U000022B7', + "imped;": '\U000001B5', + "in;": '\U00002208', + "incare;": '\U00002105', + "infin;": '\U0000221E', + "infintie;": '\U000029DD', + "inodot;": '\U00000131', + "int;": '\U0000222B', + "intcal;": '\U000022BA', + "integers;": '\U00002124', + "intercal;": '\U000022BA', + "intlarhk;": '\U00002A17', + "intprod;": '\U00002A3C', + "iocy;": '\U00000451', + "iogon;": '\U0000012F', + "iopf;": '\U0001D55A', + "iota;": '\U000003B9', + "iprod;": '\U00002A3C', + "iquest;": '\U000000BF', + "iscr;": '\U0001D4BE', + "isin;": '\U00002208', + "isinE;": '\U000022F9', + "isindot;": '\U000022F5', + "isins;": '\U000022F4', + "isinsv;": '\U000022F3', + "isinv;": '\U00002208', + "it;": '\U00002062', + "itilde;": '\U00000129', + "iukcy;": '\U00000456', + "iuml;": '\U000000EF', + "jcirc;": '\U00000135', + "jcy;": '\U00000439', + "jfr;": '\U0001D527', + "jmath;": '\U00000237', + "jopf;": '\U0001D55B', + "jscr;": '\U0001D4BF', + "jsercy;": '\U00000458', + "jukcy;": '\U00000454', + "kappa;": '\U000003BA', + "kappav;": '\U000003F0', + "kcedil;": '\U00000137', + "kcy;": '\U0000043A', + "kfr;": '\U0001D528', + "kgreen;": '\U00000138', + "khcy;": '\U00000445', + "kjcy;": '\U0000045C', + "kopf;": '\U0001D55C', + "kscr;": '\U0001D4C0', + "lAarr;": '\U000021DA', + "lArr;": '\U000021D0', + "lAtail;": '\U0000291B', + "lBarr;": '\U0000290E', + "lE;": '\U00002266', + "lEg;": '\U00002A8B', + "lHar;": '\U00002962', + "lacute;": '\U0000013A', + "laemptyv;": '\U000029B4', + "lagran;": '\U00002112', + "lambda;": '\U000003BB', + "lang;": '\U000027E8', + "langd;": '\U00002991', + "langle;": '\U000027E8', + "lap;": '\U00002A85', + "laquo;": '\U000000AB', + "larr;": '\U00002190', + "larrb;": '\U000021E4', + "larrbfs;": '\U0000291F', + "larrfs;": '\U0000291D', + "larrhk;": '\U000021A9', + "larrlp;": '\U000021AB', + "larrpl;": '\U00002939', + "larrsim;": '\U00002973', + "larrtl;": '\U000021A2', + "lat;": '\U00002AAB', + "latail;": '\U00002919', + "late;": '\U00002AAD', + "lbarr;": '\U0000290C', + "lbbrk;": '\U00002772', + "lbrace;": '\U0000007B', + "lbrack;": '\U0000005B', + "lbrke;": '\U0000298B', + "lbrksld;": '\U0000298F', + "lbrkslu;": '\U0000298D', + "lcaron;": '\U0000013E', + "lcedil;": '\U0000013C', + "lceil;": '\U00002308', + "lcub;": '\U0000007B', + "lcy;": '\U0000043B', + "ldca;": '\U00002936', + "ldquo;": '\U0000201C', + "ldquor;": '\U0000201E', + "ldrdhar;": '\U00002967', + "ldrushar;": '\U0000294B', + "ldsh;": '\U000021B2', + "le;": '\U00002264', + "leftarrow;": '\U00002190', + "leftarrowtail;": '\U000021A2', + "leftharpoondown;": '\U000021BD', + "leftharpoonup;": '\U000021BC', + "leftleftarrows;": '\U000021C7', + "leftrightarrow;": '\U00002194', + "leftrightarrows;": '\U000021C6', + "leftrightharpoons;": '\U000021CB', + "leftrightsquigarrow;": '\U000021AD', + "leftthreetimes;": '\U000022CB', + "leg;": '\U000022DA', + "leq;": '\U00002264', + "leqq;": '\U00002266', + "leqslant;": '\U00002A7D', + "les;": '\U00002A7D', + "lescc;": '\U00002AA8', + "lesdot;": '\U00002A7F', + "lesdoto;": '\U00002A81', + "lesdotor;": '\U00002A83', + "lesges;": '\U00002A93', + "lessapprox;": '\U00002A85', + "lessdot;": '\U000022D6', + "lesseqgtr;": '\U000022DA', + "lesseqqgtr;": '\U00002A8B', + "lessgtr;": '\U00002276', + "lesssim;": '\U00002272', + "lfisht;": '\U0000297C', + "lfloor;": '\U0000230A', + "lfr;": '\U0001D529', + "lg;": '\U00002276', + "lgE;": '\U00002A91', + "lhard;": '\U000021BD', + "lharu;": '\U000021BC', + "lharul;": '\U0000296A', + "lhblk;": '\U00002584', + "ljcy;": '\U00000459', + "ll;": '\U0000226A', + "llarr;": '\U000021C7', + "llcorner;": '\U0000231E', + "llhard;": '\U0000296B', + "lltri;": '\U000025FA', + "lmidot;": '\U00000140', + "lmoust;": '\U000023B0', + "lmoustache;": '\U000023B0', + "lnE;": '\U00002268', + "lnap;": '\U00002A89', + "lnapprox;": '\U00002A89', + "lne;": '\U00002A87', + "lneq;": '\U00002A87', + "lneqq;": '\U00002268', + "lnsim;": '\U000022E6', + "loang;": '\U000027EC', + "loarr;": '\U000021FD', + "lobrk;": '\U000027E6', + "longleftarrow;": '\U000027F5', + "longleftrightarrow;": '\U000027F7', + "longmapsto;": '\U000027FC', + "longrightarrow;": '\U000027F6', + "looparrowleft;": '\U000021AB', + "looparrowright;": '\U000021AC', + "lopar;": '\U00002985', + "lopf;": '\U0001D55D', + "loplus;": '\U00002A2D', + "lotimes;": '\U00002A34', + "lowast;": '\U00002217', + "lowbar;": '\U0000005F', + "loz;": '\U000025CA', + "lozenge;": '\U000025CA', + "lozf;": '\U000029EB', + "lpar;": '\U00000028', + "lparlt;": '\U00002993', + "lrarr;": '\U000021C6', + "lrcorner;": '\U0000231F', + "lrhar;": '\U000021CB', + "lrhard;": '\U0000296D', + "lrm;": '\U0000200E', + "lrtri;": '\U000022BF', + "lsaquo;": '\U00002039', + "lscr;": '\U0001D4C1', + "lsh;": '\U000021B0', + "lsim;": '\U00002272', + "lsime;": '\U00002A8D', + "lsimg;": '\U00002A8F', + "lsqb;": '\U0000005B', + "lsquo;": '\U00002018', + "lsquor;": '\U0000201A', + "lstrok;": '\U00000142', + "lt;": '\U0000003C', + "ltcc;": '\U00002AA6', + "ltcir;": '\U00002A79', + "ltdot;": '\U000022D6', + "lthree;": '\U000022CB', + "ltimes;": '\U000022C9', + "ltlarr;": '\U00002976', + "ltquest;": '\U00002A7B', + "ltrPar;": '\U00002996', + "ltri;": '\U000025C3', + "ltrie;": '\U000022B4', + "ltrif;": '\U000025C2', + "lurdshar;": '\U0000294A', + "luruhar;": '\U00002966', + "mDDot;": '\U0000223A', + "macr;": '\U000000AF', + "male;": '\U00002642', + "malt;": '\U00002720', + "maltese;": '\U00002720', + "map;": '\U000021A6', + "mapsto;": '\U000021A6', + "mapstodown;": '\U000021A7', + "mapstoleft;": '\U000021A4', + "mapstoup;": '\U000021A5', + "marker;": '\U000025AE', + "mcomma;": '\U00002A29', + "mcy;": '\U0000043C', + "mdash;": '\U00002014', + "measuredangle;": '\U00002221', + "mfr;": '\U0001D52A', + "mho;": '\U00002127', + "micro;": '\U000000B5', + "mid;": '\U00002223', + "midast;": '\U0000002A', + "midcir;": '\U00002AF0', + "middot;": '\U000000B7', + "minus;": '\U00002212', + "minusb;": '\U0000229F', + "minusd;": '\U00002238', + "minusdu;": '\U00002A2A', + "mlcp;": '\U00002ADB', + "mldr;": '\U00002026', + "mnplus;": '\U00002213', + "models;": '\U000022A7', + "mopf;": '\U0001D55E', + "mp;": '\U00002213', + "mscr;": '\U0001D4C2', + "mstpos;": '\U0000223E', + "mu;": '\U000003BC', + "multimap;": '\U000022B8', + "mumap;": '\U000022B8', + "nLeftarrow;": '\U000021CD', + "nLeftrightarrow;": '\U000021CE', + "nRightarrow;": '\U000021CF', + "nVDash;": '\U000022AF', + "nVdash;": '\U000022AE', + "nabla;": '\U00002207', + "nacute;": '\U00000144', + "nap;": '\U00002249', + "napos;": '\U00000149', + "napprox;": '\U00002249', + "natur;": '\U0000266E', + "natural;": '\U0000266E', + "naturals;": '\U00002115', + "nbsp;": '\U000000A0', + "ncap;": '\U00002A43', + "ncaron;": '\U00000148', + "ncedil;": '\U00000146', + "ncong;": '\U00002247', + "ncup;": '\U00002A42', + "ncy;": '\U0000043D', + "ndash;": '\U00002013', + "ne;": '\U00002260', + "neArr;": '\U000021D7', + "nearhk;": '\U00002924', + "nearr;": '\U00002197', + "nearrow;": '\U00002197', + "nequiv;": '\U00002262', + "nesear;": '\U00002928', + "nexist;": '\U00002204', + "nexists;": '\U00002204', + "nfr;": '\U0001D52B', + "nge;": '\U00002271', + "ngeq;": '\U00002271', + "ngsim;": '\U00002275', + "ngt;": '\U0000226F', + "ngtr;": '\U0000226F', + "nhArr;": '\U000021CE', + "nharr;": '\U000021AE', + "nhpar;": '\U00002AF2', + "ni;": '\U0000220B', + "nis;": '\U000022FC', + "nisd;": '\U000022FA', + "niv;": '\U0000220B', + "njcy;": '\U0000045A', + "nlArr;": '\U000021CD', + "nlarr;": '\U0000219A', + "nldr;": '\U00002025', + "nle;": '\U00002270', + "nleftarrow;": '\U0000219A', + "nleftrightarrow;": '\U000021AE', + "nleq;": '\U00002270', + "nless;": '\U0000226E', + "nlsim;": '\U00002274', + "nlt;": '\U0000226E', + "nltri;": '\U000022EA', + "nltrie;": '\U000022EC', + "nmid;": '\U00002224', + "nopf;": '\U0001D55F', + "not;": '\U000000AC', + "notin;": '\U00002209', + "notinva;": '\U00002209', + "notinvb;": '\U000022F7', + "notinvc;": '\U000022F6', + "notni;": '\U0000220C', + "notniva;": '\U0000220C', + "notnivb;": '\U000022FE', + "notnivc;": '\U000022FD', + "npar;": '\U00002226', + "nparallel;": '\U00002226', + "npolint;": '\U00002A14', + "npr;": '\U00002280', + "nprcue;": '\U000022E0', + "nprec;": '\U00002280', + "nrArr;": '\U000021CF', + "nrarr;": '\U0000219B', + "nrightarrow;": '\U0000219B', + "nrtri;": '\U000022EB', + "nrtrie;": '\U000022ED', + "nsc;": '\U00002281', + "nsccue;": '\U000022E1', + "nscr;": '\U0001D4C3', + "nshortmid;": '\U00002224', + "nshortparallel;": '\U00002226', + "nsim;": '\U00002241', + "nsime;": '\U00002244', + "nsimeq;": '\U00002244', + "nsmid;": '\U00002224', + "nspar;": '\U00002226', + "nsqsube;": '\U000022E2', + "nsqsupe;": '\U000022E3', + "nsub;": '\U00002284', + "nsube;": '\U00002288', + "nsubseteq;": '\U00002288', + "nsucc;": '\U00002281', + "nsup;": '\U00002285', + "nsupe;": '\U00002289', + "nsupseteq;": '\U00002289', + "ntgl;": '\U00002279', + "ntilde;": '\U000000F1', + "ntlg;": '\U00002278', + "ntriangleleft;": '\U000022EA', + "ntrianglelefteq;": '\U000022EC', + "ntriangleright;": '\U000022EB', + "ntrianglerighteq;": '\U000022ED', + "nu;": '\U000003BD', + "num;": '\U00000023', + "numero;": '\U00002116', + "numsp;": '\U00002007', + "nvDash;": '\U000022AD', + "nvHarr;": '\U00002904', + "nvdash;": '\U000022AC', + "nvinfin;": '\U000029DE', + "nvlArr;": '\U00002902', + "nvrArr;": '\U00002903', + "nwArr;": '\U000021D6', + "nwarhk;": '\U00002923', + "nwarr;": '\U00002196', + "nwarrow;": '\U00002196', + "nwnear;": '\U00002927', + "oS;": '\U000024C8', + "oacute;": '\U000000F3', + "oast;": '\U0000229B', + "ocir;": '\U0000229A', + "ocirc;": '\U000000F4', + "ocy;": '\U0000043E', + "odash;": '\U0000229D', + "odblac;": '\U00000151', + "odiv;": '\U00002A38', + "odot;": '\U00002299', + "odsold;": '\U000029BC', + "oelig;": '\U00000153', + "ofcir;": '\U000029BF', + "ofr;": '\U0001D52C', + "ogon;": '\U000002DB', + "ograve;": '\U000000F2', + "ogt;": '\U000029C1', + "ohbar;": '\U000029B5', + "ohm;": '\U000003A9', + "oint;": '\U0000222E', + "olarr;": '\U000021BA', + "olcir;": '\U000029BE', + "olcross;": '\U000029BB', + "oline;": '\U0000203E', + "olt;": '\U000029C0', + "omacr;": '\U0000014D', + "omega;": '\U000003C9', + "omicron;": '\U000003BF', + "omid;": '\U000029B6', + "ominus;": '\U00002296', + "oopf;": '\U0001D560', + "opar;": '\U000029B7', + "operp;": '\U000029B9', + "oplus;": '\U00002295', + "or;": '\U00002228', + "orarr;": '\U000021BB', + "ord;": '\U00002A5D', + "order;": '\U00002134', + "orderof;": '\U00002134', + "ordf;": '\U000000AA', + "ordm;": '\U000000BA', + "origof;": '\U000022B6', + "oror;": '\U00002A56', + "orslope;": '\U00002A57', + "orv;": '\U00002A5B', + "oscr;": '\U00002134', + "oslash;": '\U000000F8', + "osol;": '\U00002298', + "otilde;": '\U000000F5', + "otimes;": '\U00002297', + "otimesas;": '\U00002A36', + "ouml;": '\U000000F6', + "ovbar;": '\U0000233D', + "par;": '\U00002225', + "para;": '\U000000B6', + "parallel;": '\U00002225', + "parsim;": '\U00002AF3', + "parsl;": '\U00002AFD', + "part;": '\U00002202', + "pcy;": '\U0000043F', + "percnt;": '\U00000025', + "period;": '\U0000002E', + "permil;": '\U00002030', + "perp;": '\U000022A5', + "pertenk;": '\U00002031', + "pfr;": '\U0001D52D', + "phi;": '\U000003C6', + "phiv;": '\U000003D5', + "phmmat;": '\U00002133', + "phone;": '\U0000260E', + "pi;": '\U000003C0', + "pitchfork;": '\U000022D4', + "piv;": '\U000003D6', + "planck;": '\U0000210F', + "planckh;": '\U0000210E', + "plankv;": '\U0000210F', + "plus;": '\U0000002B', + "plusacir;": '\U00002A23', + "plusb;": '\U0000229E', + "pluscir;": '\U00002A22', + "plusdo;": '\U00002214', + "plusdu;": '\U00002A25', + "pluse;": '\U00002A72', + "plusmn;": '\U000000B1', + "plussim;": '\U00002A26', + "plustwo;": '\U00002A27', + "pm;": '\U000000B1', + "pointint;": '\U00002A15', + "popf;": '\U0001D561', + "pound;": '\U000000A3', + "pr;": '\U0000227A', + "prE;": '\U00002AB3', + "prap;": '\U00002AB7', + "prcue;": '\U0000227C', + "pre;": '\U00002AAF', + "prec;": '\U0000227A', + "precapprox;": '\U00002AB7', + "preccurlyeq;": '\U0000227C', + "preceq;": '\U00002AAF', + "precnapprox;": '\U00002AB9', + "precneqq;": '\U00002AB5', + "precnsim;": '\U000022E8', + "precsim;": '\U0000227E', + "prime;": '\U00002032', + "primes;": '\U00002119', + "prnE;": '\U00002AB5', + "prnap;": '\U00002AB9', + "prnsim;": '\U000022E8', + "prod;": '\U0000220F', + "profalar;": '\U0000232E', + "profline;": '\U00002312', + "profsurf;": '\U00002313', + "prop;": '\U0000221D', + "propto;": '\U0000221D', + "prsim;": '\U0000227E', + "prurel;": '\U000022B0', + "pscr;": '\U0001D4C5', + "psi;": '\U000003C8', + "puncsp;": '\U00002008', + "qfr;": '\U0001D52E', + "qint;": '\U00002A0C', + "qopf;": '\U0001D562', + "qprime;": '\U00002057', + "qscr;": '\U0001D4C6', + "quaternions;": '\U0000210D', + "quatint;": '\U00002A16', + "quest;": '\U0000003F', + "questeq;": '\U0000225F', + "quot;": '\U00000022', + "rAarr;": '\U000021DB', + "rArr;": '\U000021D2', + "rAtail;": '\U0000291C', + "rBarr;": '\U0000290F', + "rHar;": '\U00002964', + "racute;": '\U00000155', + "radic;": '\U0000221A', + "raemptyv;": '\U000029B3', + "rang;": '\U000027E9', + "rangd;": '\U00002992', + "range;": '\U000029A5', + "rangle;": '\U000027E9', + "raquo;": '\U000000BB', + "rarr;": '\U00002192', + "rarrap;": '\U00002975', + "rarrb;": '\U000021E5', + "rarrbfs;": '\U00002920', + "rarrc;": '\U00002933', + "rarrfs;": '\U0000291E', + "rarrhk;": '\U000021AA', + "rarrlp;": '\U000021AC', + "rarrpl;": '\U00002945', + "rarrsim;": '\U00002974', + "rarrtl;": '\U000021A3', + "rarrw;": '\U0000219D', + "ratail;": '\U0000291A', + "ratio;": '\U00002236', + "rationals;": '\U0000211A', + "rbarr;": '\U0000290D', + "rbbrk;": '\U00002773', + "rbrace;": '\U0000007D', + "rbrack;": '\U0000005D', + "rbrke;": '\U0000298C', + "rbrksld;": '\U0000298E', + "rbrkslu;": '\U00002990', + "rcaron;": '\U00000159', + "rcedil;": '\U00000157', + "rceil;": '\U00002309', + "rcub;": '\U0000007D', + "rcy;": '\U00000440', + "rdca;": '\U00002937', + "rdldhar;": '\U00002969', + "rdquo;": '\U0000201D', + "rdquor;": '\U0000201D', + "rdsh;": '\U000021B3', + "real;": '\U0000211C', + "realine;": '\U0000211B', + "realpart;": '\U0000211C', + "reals;": '\U0000211D', + "rect;": '\U000025AD', + "reg;": '\U000000AE', + "rfisht;": '\U0000297D', + "rfloor;": '\U0000230B', + "rfr;": '\U0001D52F', + "rhard;": '\U000021C1', + "rharu;": '\U000021C0', + "rharul;": '\U0000296C', + "rho;": '\U000003C1', + "rhov;": '\U000003F1', + "rightarrow;": '\U00002192', + "rightarrowtail;": '\U000021A3', + "rightharpoondown;": '\U000021C1', + "rightharpoonup;": '\U000021C0', + "rightleftarrows;": '\U000021C4', + "rightleftharpoons;": '\U000021CC', + "rightrightarrows;": '\U000021C9', + "rightsquigarrow;": '\U0000219D', + "rightthreetimes;": '\U000022CC', + "ring;": '\U000002DA', + "risingdotseq;": '\U00002253', + "rlarr;": '\U000021C4', + "rlhar;": '\U000021CC', + "rlm;": '\U0000200F', + "rmoust;": '\U000023B1', + "rmoustache;": '\U000023B1', + "rnmid;": '\U00002AEE', + "roang;": '\U000027ED', + "roarr;": '\U000021FE', + "robrk;": '\U000027E7', + "ropar;": '\U00002986', + "ropf;": '\U0001D563', + "roplus;": '\U00002A2E', + "rotimes;": '\U00002A35', + "rpar;": '\U00000029', + "rpargt;": '\U00002994', + "rppolint;": '\U00002A12', + "rrarr;": '\U000021C9', + "rsaquo;": '\U0000203A', + "rscr;": '\U0001D4C7', + "rsh;": '\U000021B1', + "rsqb;": '\U0000005D', + "rsquo;": '\U00002019', + "rsquor;": '\U00002019', + "rthree;": '\U000022CC', + "rtimes;": '\U000022CA', + "rtri;": '\U000025B9', + "rtrie;": '\U000022B5', + "rtrif;": '\U000025B8', + "rtriltri;": '\U000029CE', + "ruluhar;": '\U00002968', + "rx;": '\U0000211E', + "sacute;": '\U0000015B', + "sbquo;": '\U0000201A', + "sc;": '\U0000227B', + "scE;": '\U00002AB4', + "scap;": '\U00002AB8', + "scaron;": '\U00000161', + "sccue;": '\U0000227D', + "sce;": '\U00002AB0', + "scedil;": '\U0000015F', + "scirc;": '\U0000015D', + "scnE;": '\U00002AB6', + "scnap;": '\U00002ABA', + "scnsim;": '\U000022E9', + "scpolint;": '\U00002A13', + "scsim;": '\U0000227F', + "scy;": '\U00000441', + "sdot;": '\U000022C5', + "sdotb;": '\U000022A1', + "sdote;": '\U00002A66', + "seArr;": '\U000021D8', + "searhk;": '\U00002925', + "searr;": '\U00002198', + "searrow;": '\U00002198', + "sect;": '\U000000A7', + "semi;": '\U0000003B', + "seswar;": '\U00002929', + "setminus;": '\U00002216', + "setmn;": '\U00002216', + "sext;": '\U00002736', + "sfr;": '\U0001D530', + "sfrown;": '\U00002322', + "sharp;": '\U0000266F', + "shchcy;": '\U00000449', + "shcy;": '\U00000448', + "shortmid;": '\U00002223', + "shortparallel;": '\U00002225', + "shy;": '\U000000AD', + "sigma;": '\U000003C3', + "sigmaf;": '\U000003C2', + "sigmav;": '\U000003C2', + "sim;": '\U0000223C', + "simdot;": '\U00002A6A', + "sime;": '\U00002243', + "simeq;": '\U00002243', + "simg;": '\U00002A9E', + "simgE;": '\U00002AA0', + "siml;": '\U00002A9D', + "simlE;": '\U00002A9F', + "simne;": '\U00002246', + "simplus;": '\U00002A24', + "simrarr;": '\U00002972', + "slarr;": '\U00002190', + "smallsetminus;": '\U00002216', + "smashp;": '\U00002A33', + "smeparsl;": '\U000029E4', + "smid;": '\U00002223', + "smile;": '\U00002323', + "smt;": '\U00002AAA', + "smte;": '\U00002AAC', + "softcy;": '\U0000044C', + "sol;": '\U0000002F', + "solb;": '\U000029C4', + "solbar;": '\U0000233F', + "sopf;": '\U0001D564', + "spades;": '\U00002660', + "spadesuit;": '\U00002660', + "spar;": '\U00002225', + "sqcap;": '\U00002293', + "sqcup;": '\U00002294', + "sqsub;": '\U0000228F', + "sqsube;": '\U00002291', + "sqsubset;": '\U0000228F', + "sqsubseteq;": '\U00002291', + "sqsup;": '\U00002290', + "sqsupe;": '\U00002292', + "sqsupset;": '\U00002290', + "sqsupseteq;": '\U00002292', + "squ;": '\U000025A1', + "square;": '\U000025A1', + "squarf;": '\U000025AA', + "squf;": '\U000025AA', + "srarr;": '\U00002192', + "sscr;": '\U0001D4C8', + "ssetmn;": '\U00002216', + "ssmile;": '\U00002323', + "sstarf;": '\U000022C6', + "star;": '\U00002606', + "starf;": '\U00002605', + "straightepsilon;": '\U000003F5', + "straightphi;": '\U000003D5', + "strns;": '\U000000AF', + "sub;": '\U00002282', + "subE;": '\U00002AC5', + "subdot;": '\U00002ABD', + "sube;": '\U00002286', + "subedot;": '\U00002AC3', + "submult;": '\U00002AC1', + "subnE;": '\U00002ACB', + "subne;": '\U0000228A', + "subplus;": '\U00002ABF', + "subrarr;": '\U00002979', + "subset;": '\U00002282', + "subseteq;": '\U00002286', + "subseteqq;": '\U00002AC5', + "subsetneq;": '\U0000228A', + "subsetneqq;": '\U00002ACB', + "subsim;": '\U00002AC7', + "subsub;": '\U00002AD5', + "subsup;": '\U00002AD3', + "succ;": '\U0000227B', + "succapprox;": '\U00002AB8', + "succcurlyeq;": '\U0000227D', + "succeq;": '\U00002AB0', + "succnapprox;": '\U00002ABA', + "succneqq;": '\U00002AB6', + "succnsim;": '\U000022E9', + "succsim;": '\U0000227F', + "sum;": '\U00002211', + "sung;": '\U0000266A', + "sup;": '\U00002283', + "sup1;": '\U000000B9', + "sup2;": '\U000000B2', + "sup3;": '\U000000B3', + "supE;": '\U00002AC6', + "supdot;": '\U00002ABE', + "supdsub;": '\U00002AD8', + "supe;": '\U00002287', + "supedot;": '\U00002AC4', + "suphsol;": '\U000027C9', + "suphsub;": '\U00002AD7', + "suplarr;": '\U0000297B', + "supmult;": '\U00002AC2', + "supnE;": '\U00002ACC', + "supne;": '\U0000228B', + "supplus;": '\U00002AC0', + "supset;": '\U00002283', + "supseteq;": '\U00002287', + "supseteqq;": '\U00002AC6', + "supsetneq;": '\U0000228B', + "supsetneqq;": '\U00002ACC', + "supsim;": '\U00002AC8', + "supsub;": '\U00002AD4', + "supsup;": '\U00002AD6', + "swArr;": '\U000021D9', + "swarhk;": '\U00002926', + "swarr;": '\U00002199', + "swarrow;": '\U00002199', + "swnwar;": '\U0000292A', + "szlig;": '\U000000DF', + "target;": '\U00002316', + "tau;": '\U000003C4', + "tbrk;": '\U000023B4', + "tcaron;": '\U00000165', + "tcedil;": '\U00000163', + "tcy;": '\U00000442', + "tdot;": '\U000020DB', + "telrec;": '\U00002315', + "tfr;": '\U0001D531', + "there4;": '\U00002234', + "therefore;": '\U00002234', + "theta;": '\U000003B8', + "thetasym;": '\U000003D1', + "thetav;": '\U000003D1', + "thickapprox;": '\U00002248', + "thicksim;": '\U0000223C', + "thinsp;": '\U00002009', + "thkap;": '\U00002248', + "thksim;": '\U0000223C', + "thorn;": '\U000000FE', + "tilde;": '\U000002DC', + "times;": '\U000000D7', + "timesb;": '\U000022A0', + "timesbar;": '\U00002A31', + "timesd;": '\U00002A30', + "tint;": '\U0000222D', + "toea;": '\U00002928', + "top;": '\U000022A4', + "topbot;": '\U00002336', + "topcir;": '\U00002AF1', + "topf;": '\U0001D565', + "topfork;": '\U00002ADA', + "tosa;": '\U00002929', + "tprime;": '\U00002034', + "trade;": '\U00002122', + "triangle;": '\U000025B5', + "triangledown;": '\U000025BF', + "triangleleft;": '\U000025C3', + "trianglelefteq;": '\U000022B4', + "triangleq;": '\U0000225C', + "triangleright;": '\U000025B9', + "trianglerighteq;": '\U000022B5', + "tridot;": '\U000025EC', + "trie;": '\U0000225C', + "triminus;": '\U00002A3A', + "triplus;": '\U00002A39', + "trisb;": '\U000029CD', + "tritime;": '\U00002A3B', + "trpezium;": '\U000023E2', + "tscr;": '\U0001D4C9', + "tscy;": '\U00000446', + "tshcy;": '\U0000045B', + "tstrok;": '\U00000167', + "twixt;": '\U0000226C', + "twoheadleftarrow;": '\U0000219E', + "twoheadrightarrow;": '\U000021A0', + "uArr;": '\U000021D1', + "uHar;": '\U00002963', + "uacute;": '\U000000FA', + "uarr;": '\U00002191', + "ubrcy;": '\U0000045E', + "ubreve;": '\U0000016D', + "ucirc;": '\U000000FB', + "ucy;": '\U00000443', + "udarr;": '\U000021C5', + "udblac;": '\U00000171', + "udhar;": '\U0000296E', + "ufisht;": '\U0000297E', + "ufr;": '\U0001D532', + "ugrave;": '\U000000F9', + "uharl;": '\U000021BF', + "uharr;": '\U000021BE', + "uhblk;": '\U00002580', + "ulcorn;": '\U0000231C', + "ulcorner;": '\U0000231C', + "ulcrop;": '\U0000230F', + "ultri;": '\U000025F8', + "umacr;": '\U0000016B', + "uml;": '\U000000A8', + "uogon;": '\U00000173', + "uopf;": '\U0001D566', + "uparrow;": '\U00002191', + "updownarrow;": '\U00002195', + "upharpoonleft;": '\U000021BF', + "upharpoonright;": '\U000021BE', + "uplus;": '\U0000228E', + "upsi;": '\U000003C5', + "upsih;": '\U000003D2', + "upsilon;": '\U000003C5', + "upuparrows;": '\U000021C8', + "urcorn;": '\U0000231D', + "urcorner;": '\U0000231D', + "urcrop;": '\U0000230E', + "uring;": '\U0000016F', + "urtri;": '\U000025F9', + "uscr;": '\U0001D4CA', + "utdot;": '\U000022F0', + "utilde;": '\U00000169', + "utri;": '\U000025B5', + "utrif;": '\U000025B4', + "uuarr;": '\U000021C8', + "uuml;": '\U000000FC', + "uwangle;": '\U000029A7', + "vArr;": '\U000021D5', + "vBar;": '\U00002AE8', + "vBarv;": '\U00002AE9', + "vDash;": '\U000022A8', + "vangrt;": '\U0000299C', + "varepsilon;": '\U000003F5', + "varkappa;": '\U000003F0', + "varnothing;": '\U00002205', + "varphi;": '\U000003D5', + "varpi;": '\U000003D6', + "varpropto;": '\U0000221D', + "varr;": '\U00002195', + "varrho;": '\U000003F1', + "varsigma;": '\U000003C2', + "vartheta;": '\U000003D1', + "vartriangleleft;": '\U000022B2', + "vartriangleright;": '\U000022B3', + "vcy;": '\U00000432', + "vdash;": '\U000022A2', + "vee;": '\U00002228', + "veebar;": '\U000022BB', + "veeeq;": '\U0000225A', + "vellip;": '\U000022EE', + "verbar;": '\U0000007C', + "vert;": '\U0000007C', + "vfr;": '\U0001D533', + "vltri;": '\U000022B2', + "vopf;": '\U0001D567', + "vprop;": '\U0000221D', + "vrtri;": '\U000022B3', + "vscr;": '\U0001D4CB', + "vzigzag;": '\U0000299A', + "wcirc;": '\U00000175', + "wedbar;": '\U00002A5F', + "wedge;": '\U00002227', + "wedgeq;": '\U00002259', + "weierp;": '\U00002118', + "wfr;": '\U0001D534', + "wopf;": '\U0001D568', + "wp;": '\U00002118', + "wr;": '\U00002240', + "wreath;": '\U00002240', + "wscr;": '\U0001D4CC', + "xcap;": '\U000022C2', + "xcirc;": '\U000025EF', + "xcup;": '\U000022C3', + "xdtri;": '\U000025BD', + "xfr;": '\U0001D535', + "xhArr;": '\U000027FA', + "xharr;": '\U000027F7', + "xi;": '\U000003BE', + "xlArr;": '\U000027F8', + "xlarr;": '\U000027F5', + "xmap;": '\U000027FC', + "xnis;": '\U000022FB', + "xodot;": '\U00002A00', + "xopf;": '\U0001D569', + "xoplus;": '\U00002A01', + "xotime;": '\U00002A02', + "xrArr;": '\U000027F9', + "xrarr;": '\U000027F6', + "xscr;": '\U0001D4CD', + "xsqcup;": '\U00002A06', + "xuplus;": '\U00002A04', + "xutri;": '\U000025B3', + "xvee;": '\U000022C1', + "xwedge;": '\U000022C0', + "yacute;": '\U000000FD', + "yacy;": '\U0000044F', + "ycirc;": '\U00000177', + "ycy;": '\U0000044B', + "yen;": '\U000000A5', + "yfr;": '\U0001D536', + "yicy;": '\U00000457', + "yopf;": '\U0001D56A', + "yscr;": '\U0001D4CE', + "yucy;": '\U0000044E', + "yuml;": '\U000000FF', + "zacute;": '\U0000017A', + "zcaron;": '\U0000017E', + "zcy;": '\U00000437', + "zdot;": '\U0000017C', + "zeetrf;": '\U00002128', + "zeta;": '\U000003B6', + "zfr;": '\U0001D537', + "zhcy;": '\U00000436', + "zigrarr;": '\U000021DD', + "zopf;": '\U0001D56B', + "zscr;": '\U0001D4CF', + "zwj;": '\U0000200D', + "zwnj;": '\U0000200C', + "AElig": '\U000000C6', + "AMP": '\U00000026', + "Aacute": '\U000000C1', + "Acirc": '\U000000C2', + "Agrave": '\U000000C0', + "Aring": '\U000000C5', + "Atilde": '\U000000C3', + "Auml": '\U000000C4', + "COPY": '\U000000A9', + "Ccedil": '\U000000C7', + "ETH": '\U000000D0', + "Eacute": '\U000000C9', + "Ecirc": '\U000000CA', + "Egrave": '\U000000C8', + "Euml": '\U000000CB', + "GT": '\U0000003E', + "Iacute": '\U000000CD', + "Icirc": '\U000000CE', + "Igrave": '\U000000CC', + "Iuml": '\U000000CF', + "LT": '\U0000003C', + "Ntilde": '\U000000D1', + "Oacute": '\U000000D3', + "Ocirc": '\U000000D4', + "Ograve": '\U000000D2', + "Oslash": '\U000000D8', + "Otilde": '\U000000D5', + "Ouml": '\U000000D6', + "QUOT": '\U00000022', + "REG": '\U000000AE', + "THORN": '\U000000DE', + "Uacute": '\U000000DA', + "Ucirc": '\U000000DB', + "Ugrave": '\U000000D9', + "Uuml": '\U000000DC', + "Yacute": '\U000000DD', + "aacute": '\U000000E1', + "acirc": '\U000000E2', + "acute": '\U000000B4', + "aelig": '\U000000E6', + "agrave": '\U000000E0', + "amp": '\U00000026', + "aring": '\U000000E5', + "atilde": '\U000000E3', + "auml": '\U000000E4', + "brvbar": '\U000000A6', + "ccedil": '\U000000E7', + "cedil": '\U000000B8', + "cent": '\U000000A2', + "copy": '\U000000A9', + "curren": '\U000000A4', + "deg": '\U000000B0', + "divide": '\U000000F7', + "eacute": '\U000000E9', + "ecirc": '\U000000EA', + "egrave": '\U000000E8', + "eth": '\U000000F0', + "euml": '\U000000EB', + "frac12": '\U000000BD', + "frac14": '\U000000BC', + "frac34": '\U000000BE', + "gt": '\U0000003E', + "iacute": '\U000000ED', + "icirc": '\U000000EE', + "iexcl": '\U000000A1', + "igrave": '\U000000EC', + "iquest": '\U000000BF', + "iuml": '\U000000EF', + "laquo": '\U000000AB', + "lt": '\U0000003C', + "macr": '\U000000AF', + "micro": '\U000000B5', + "middot": '\U000000B7', + "nbsp": '\U000000A0', + "not": '\U000000AC', + "ntilde": '\U000000F1', + "oacute": '\U000000F3', + "ocirc": '\U000000F4', + "ograve": '\U000000F2', + "ordf": '\U000000AA', + "ordm": '\U000000BA', + "oslash": '\U000000F8', + "otilde": '\U000000F5', + "ouml": '\U000000F6', + "para": '\U000000B6', + "plusmn": '\U000000B1', + "pound": '\U000000A3', + "quot": '\U00000022', + "raquo": '\U000000BB', + "reg": '\U000000AE', + "sect": '\U000000A7', + "shy": '\U000000AD', + "sup1": '\U000000B9', + "sup2": '\U000000B2', + "sup3": '\U000000B3', + "szlig": '\U000000DF', + "thorn": '\U000000FE', + "times": '\U000000D7', + "uacute": '\U000000FA', + "ucirc": '\U000000FB', + "ugrave": '\U000000F9', + "uml": '\U000000A8', + "uuml": '\U000000FC', + "yacute": '\U000000FD', + "yen": '\U000000A5', + "yuml": '\U000000FF', +} + +// HTML entities that are two unicode codepoints. +var entity2 = map[string][2]rune{ + // TODO(nigeltao): Handle replacements that are wider than their names. + // "nLt;": {'\u226A', '\u20D2'}, + // "nGt;": {'\u226B', '\u20D2'}, + "NotEqualTilde;": {'\u2242', '\u0338'}, + "NotGreaterFullEqual;": {'\u2267', '\u0338'}, + "NotGreaterGreater;": {'\u226B', '\u0338'}, + "NotGreaterSlantEqual;": {'\u2A7E', '\u0338'}, + "NotHumpDownHump;": {'\u224E', '\u0338'}, + "NotHumpEqual;": {'\u224F', '\u0338'}, + "NotLeftTriangleBar;": {'\u29CF', '\u0338'}, + "NotLessLess;": {'\u226A', '\u0338'}, + "NotLessSlantEqual;": {'\u2A7D', '\u0338'}, + "NotNestedGreaterGreater;": {'\u2AA2', '\u0338'}, + "NotNestedLessLess;": {'\u2AA1', '\u0338'}, + "NotPrecedesEqual;": {'\u2AAF', '\u0338'}, + "NotRightTriangleBar;": {'\u29D0', '\u0338'}, + "NotSquareSubset;": {'\u228F', '\u0338'}, + "NotSquareSuperset;": {'\u2290', '\u0338'}, + "NotSubset;": {'\u2282', '\u20D2'}, + "NotSucceedsEqual;": {'\u2AB0', '\u0338'}, + "NotSucceedsTilde;": {'\u227F', '\u0338'}, + "NotSuperset;": {'\u2283', '\u20D2'}, + "ThickSpace;": {'\u205F', '\u200A'}, + "acE;": {'\u223E', '\u0333'}, + "bne;": {'\u003D', '\u20E5'}, + "bnequiv;": {'\u2261', '\u20E5'}, + "caps;": {'\u2229', '\uFE00'}, + "cups;": {'\u222A', '\uFE00'}, + "fjlig;": {'\u0066', '\u006A'}, + "gesl;": {'\u22DB', '\uFE00'}, + "gvertneqq;": {'\u2269', '\uFE00'}, + "gvnE;": {'\u2269', '\uFE00'}, + "lates;": {'\u2AAD', '\uFE00'}, + "lesg;": {'\u22DA', '\uFE00'}, + "lvertneqq;": {'\u2268', '\uFE00'}, + "lvnE;": {'\u2268', '\uFE00'}, + "nGg;": {'\u22D9', '\u0338'}, + "nGtv;": {'\u226B', '\u0338'}, + "nLl;": {'\u22D8', '\u0338'}, + "nLtv;": {'\u226A', '\u0338'}, + "nang;": {'\u2220', '\u20D2'}, + "napE;": {'\u2A70', '\u0338'}, + "napid;": {'\u224B', '\u0338'}, + "nbump;": {'\u224E', '\u0338'}, + "nbumpe;": {'\u224F', '\u0338'}, + "ncongdot;": {'\u2A6D', '\u0338'}, + "nedot;": {'\u2250', '\u0338'}, + "nesim;": {'\u2242', '\u0338'}, + "ngE;": {'\u2267', '\u0338'}, + "ngeqq;": {'\u2267', '\u0338'}, + "ngeqslant;": {'\u2A7E', '\u0338'}, + "nges;": {'\u2A7E', '\u0338'}, + "nlE;": {'\u2266', '\u0338'}, + "nleqq;": {'\u2266', '\u0338'}, + "nleqslant;": {'\u2A7D', '\u0338'}, + "nles;": {'\u2A7D', '\u0338'}, + "notinE;": {'\u22F9', '\u0338'}, + "notindot;": {'\u22F5', '\u0338'}, + "nparsl;": {'\u2AFD', '\u20E5'}, + "npart;": {'\u2202', '\u0338'}, + "npre;": {'\u2AAF', '\u0338'}, + "npreceq;": {'\u2AAF', '\u0338'}, + "nrarrc;": {'\u2933', '\u0338'}, + "nrarrw;": {'\u219D', '\u0338'}, + "nsce;": {'\u2AB0', '\u0338'}, + "nsubE;": {'\u2AC5', '\u0338'}, + "nsubset;": {'\u2282', '\u20D2'}, + "nsubseteqq;": {'\u2AC5', '\u0338'}, + "nsucceq;": {'\u2AB0', '\u0338'}, + "nsupE;": {'\u2AC6', '\u0338'}, + "nsupset;": {'\u2283', '\u20D2'}, + "nsupseteqq;": {'\u2AC6', '\u0338'}, + "nvap;": {'\u224D', '\u20D2'}, + "nvge;": {'\u2265', '\u20D2'}, + "nvgt;": {'\u003E', '\u20D2'}, + "nvle;": {'\u2264', '\u20D2'}, + "nvlt;": {'\u003C', '\u20D2'}, + "nvltrie;": {'\u22B4', '\u20D2'}, + "nvrtrie;": {'\u22B5', '\u20D2'}, + "nvsim;": {'\u223C', '\u20D2'}, + "race;": {'\u223D', '\u0331'}, + "smtes;": {'\u2AAC', '\uFE00'}, + "sqcaps;": {'\u2293', '\uFE00'}, + "sqcups;": {'\u2294', '\uFE00'}, + "varsubsetneq;": {'\u228A', '\uFE00'}, + "varsubsetneqq;": {'\u2ACB', '\uFE00'}, + "varsupsetneq;": {'\u228B', '\uFE00'}, + "varsupsetneqq;": {'\u2ACC', '\uFE00'}, + "vnsub;": {'\u2282', '\u20D2'}, + "vnsup;": {'\u2283', '\u20D2'}, + "vsubnE;": {'\u2ACB', '\uFE00'}, + "vsubne;": {'\u228A', '\uFE00'}, + "vsupnE;": {'\u2ACC', '\uFE00'}, + "vsupne;": {'\u228B', '\uFE00'}, +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/entity_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/entity_test.go new file mode 100644 index 000000000..b53f866fa --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/entity_test.go @@ -0,0 +1,29 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "testing" + "unicode/utf8" +) + +func TestEntityLength(t *testing.T) { + // We verify that the length of UTF-8 encoding of each value is <= 1 + len(key). + // The +1 comes from the leading "&". This property implies that the length of + // unescaped text is <= the length of escaped text. + for k, v := range entity { + if 1+len(k) < utf8.RuneLen(v) { + t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v)) + } + if len(k) > longestEntityWithoutSemicolon && k[len(k)-1] != ';' { + t.Errorf("entity name %s is %d characters, but longestEntityWithoutSemicolon=%d", k, len(k), longestEntityWithoutSemicolon) + } + } + for k, v := range entity2 { + if 1+len(k) < utf8.RuneLen(v[0])+utf8.RuneLen(v[1]) { + t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v[0]) + string(v[1])) + } + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/escape.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/escape.go new file mode 100644 index 000000000..d85613962 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/escape.go @@ -0,0 +1,258 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "bytes" + "strings" + "unicode/utf8" +) + +// These replacements permit compatibility with old numeric entities that +// assumed Windows-1252 encoding. +// https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference +var replacementTable = [...]rune{ + '\u20AC', // First entry is what 0x80 should be replaced with. + '\u0081', + '\u201A', + '\u0192', + '\u201E', + '\u2026', + '\u2020', + '\u2021', + '\u02C6', + '\u2030', + '\u0160', + '\u2039', + '\u0152', + '\u008D', + '\u017D', + '\u008F', + '\u0090', + '\u2018', + '\u2019', + '\u201C', + '\u201D', + '\u2022', + '\u2013', + '\u2014', + '\u02DC', + '\u2122', + '\u0161', + '\u203A', + '\u0153', + '\u009D', + '\u017E', + '\u0178', // Last entry is 0x9F. + // 0x00->'\uFFFD' is handled programmatically. + // 0x0D->'\u000D' is a no-op. +} + +// unescapeEntity reads an entity like "<" from b[src:] and writes the +// corresponding "<" to b[dst:], returning the incremented dst and src cursors. +// Precondition: b[src] == '&' && dst <= src. +// attribute should be true if parsing an attribute value. +func unescapeEntity(b []byte, dst, src int, attribute bool) (dst1, src1 int) { + // https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference + + // i starts at 1 because we already know that s[0] == '&'. + i, s := 1, b[src:] + + if len(s) <= 1 { + b[dst] = b[src] + return dst + 1, src + 1 + } + + if s[i] == '#' { + if len(s) <= 3 { // We need to have at least "&#.". + b[dst] = b[src] + return dst + 1, src + 1 + } + i++ + c := s[i] + hex := false + if c == 'x' || c == 'X' { + hex = true + i++ + } + + x := '\x00' + for i < len(s) { + c = s[i] + i++ + if hex { + if '0' <= c && c <= '9' { + x = 16*x + rune(c) - '0' + continue + } else if 'a' <= c && c <= 'f' { + x = 16*x + rune(c) - 'a' + 10 + continue + } else if 'A' <= c && c <= 'F' { + x = 16*x + rune(c) - 'A' + 10 + continue + } + } else if '0' <= c && c <= '9' { + x = 10*x + rune(c) - '0' + continue + } + if c != ';' { + i-- + } + break + } + + if i <= 3 { // No characters matched. + b[dst] = b[src] + return dst + 1, src + 1 + } + + if 0x80 <= x && x <= 0x9F { + // Replace characters from Windows-1252 with UTF-8 equivalents. + x = replacementTable[x-0x80] + } else if x == 0 || (0xD800 <= x && x <= 0xDFFF) || x > 0x10FFFF { + // Replace invalid characters with the replacement character. + x = '\uFFFD' + } + + return dst + utf8.EncodeRune(b[dst:], x), src + i + } + + // Consume the maximum number of characters possible, with the + // consumed characters matching one of the named references. + + for i < len(s) { + c := s[i] + i++ + // Lower-cased characters are more common in entities, so we check for them first. + if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' { + continue + } + if c != ';' { + i-- + } + break + } + + entityName := string(s[1:i]) + if entityName == "" { + // No-op. + } else if attribute && entityName[len(entityName)-1] != ';' && len(s) > i && s[i] == '=' { + // No-op. + } else if x := entity[entityName]; x != 0 { + return dst + utf8.EncodeRune(b[dst:], x), src + i + } else if x := entity2[entityName]; x[0] != 0 { + dst1 := dst + utf8.EncodeRune(b[dst:], x[0]) + return dst1 + utf8.EncodeRune(b[dst1:], x[1]), src + i + } else if !attribute { + maxLen := len(entityName) - 1 + if maxLen > longestEntityWithoutSemicolon { + maxLen = longestEntityWithoutSemicolon + } + for j := maxLen; j > 1; j-- { + if x := entity[entityName[:j]]; x != 0 { + return dst + utf8.EncodeRune(b[dst:], x), src + j + 1 + } + } + } + + dst1, src1 = dst+i, src+i + copy(b[dst:dst1], b[src:src1]) + return dst1, src1 +} + +// unescape unescapes b's entities in-place, so that "a<b" becomes "a': + esc = ">" + case '"': + // """ is shorter than """. + esc = """ + case '\r': + esc = " " + default: + panic("unrecognized escape character") + } + s = s[i+1:] + if _, err := w.WriteString(esc); err != nil { + return err + } + i = strings.IndexAny(s, escapedChars) + } + _, err := w.WriteString(s) + return err +} + +// EscapeString escapes special characters like "<" to become "<". It +// escapes only five such characters: <, >, &, ' and ". +// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't +// always true. +func EscapeString(s string) string { + if strings.IndexAny(s, escapedChars) == -1 { + return s + } + var buf bytes.Buffer + escape(&buf, s) + return buf.String() +} + +// UnescapeString unescapes entities like "<" to become "<". It unescapes a +// larger range of entities than EscapeString escapes. For example, "á" +// unescapes to "á", as does "á" and "&xE1;". +// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't +// always true. +func UnescapeString(s string) string { + for _, c := range s { + if c == '&' { + return string(unescape([]byte(s), false)) + } + } + return s +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/escape_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/escape_test.go new file mode 100644 index 000000000..b405d4b4a --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/escape_test.go @@ -0,0 +1,97 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import "testing" + +type unescapeTest struct { + // A short description of the test case. + desc string + // The HTML text. + html string + // The unescaped text. + unescaped string +} + +var unescapeTests = []unescapeTest{ + // Handle no entities. + { + "copy", + "A\ttext\nstring", + "A\ttext\nstring", + }, + // Handle simple named entities. + { + "simple", + "& > <", + "& > <", + }, + // Handle hitting the end of the string. + { + "stringEnd", + "& &", + "& &", + }, + // Handle entities with two codepoints. + { + "multiCodepoint", + "text ⋛︀ blah", + "text \u22db\ufe00 blah", + }, + // Handle decimal numeric entities. + { + "decimalEntity", + "Delta = Δ ", + "Delta = Δ ", + }, + // Handle hexadecimal numeric entities. + { + "hexadecimalEntity", + "Lambda = λ = λ ", + "Lambda = λ = λ ", + }, + // Handle numeric early termination. + { + "numericEnds", + "&# &#x €43 © = ©f = ©", + "&# &#x €43 © = ©f = ©", + }, + // Handle numeric ISO-8859-1 entity replacements. + { + "numericReplacements", + "Footnote‡", + "Footnote‡", + }, +} + +func TestUnescape(t *testing.T) { + for _, tt := range unescapeTests { + unescaped := UnescapeString(tt.html) + if unescaped != tt.unescaped { + t.Errorf("TestUnescape %s: want %q, got %q", tt.desc, tt.unescaped, unescaped) + } + } +} + +func TestUnescapeEscape(t *testing.T) { + ss := []string{ + ``, + `abc def`, + `a & b`, + `a&b`, + `a & b`, + `"`, + `"`, + `"<&>"`, + `"<&>"`, + `3&5==1 && 0<1, "0<1", a+acute=á`, + `The special characters are: <, >, &, ' and "`, + } + for _, s := range ss { + if got := UnescapeString(EscapeString(s)); got != s { + t.Errorf("got %q want %q", got, s) + } + } +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/example_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/example_test.go new file mode 100644 index 000000000..0b06ed773 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/example_test.go @@ -0,0 +1,40 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This example demonstrates parsing HTML data and walking the resulting tree. +package html_test + +import ( + "fmt" + "log" + "strings" + + "golang.org/x/net/html" +) + +func ExampleParse() { + s := `

                  Links:

                  ` + doc, err := html.Parse(strings.NewReader(s)) + if err != nil { + log.Fatal(err) + } + var f func(*html.Node) + f = func(n *html.Node) { + if n.Type == html.ElementNode && n.Data == "a" { + for _, a := range n.Attr { + if a.Key == "href" { + fmt.Println(a.Val) + break + } + } + } + for c := n.FirstChild; c != nil; c = c.NextSibling { + f(c) + } + } + f(doc) + // Output: + // foo + // /bar/baz +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/foreign.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/foreign.go new file mode 100644 index 000000000..9da9e9dc4 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/foreign.go @@ -0,0 +1,222 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "strings" +) + +func adjustAttributeNames(aa []Attribute, nameMap map[string]string) { + for i := range aa { + if newName, ok := nameMap[aa[i].Key]; ok { + aa[i].Key = newName + } + } +} + +func adjustForeignAttributes(aa []Attribute) { + for i, a := range aa { + if a.Key == "" || a.Key[0] != 'x' { + continue + } + switch a.Key { + case "xlink:actuate", "xlink:arcrole", "xlink:href", "xlink:role", "xlink:show", + "xlink:title", "xlink:type", "xml:base", "xml:lang", "xml:space", "xmlns:xlink": + j := strings.Index(a.Key, ":") + aa[i].Namespace = a.Key[:j] + aa[i].Key = a.Key[j+1:] + } + } +} + +func htmlIntegrationPoint(n *Node) bool { + if n.Type != ElementNode { + return false + } + switch n.Namespace { + case "math": + if n.Data == "annotation-xml" { + for _, a := range n.Attr { + if a.Key == "encoding" { + val := strings.ToLower(a.Val) + if val == "text/html" || val == "application/xhtml+xml" { + return true + } + } + } + } + case "svg": + switch n.Data { + case "desc", "foreignObject", "title": + return true + } + } + return false +} + +func mathMLTextIntegrationPoint(n *Node) bool { + if n.Namespace != "math" { + return false + } + switch n.Data { + case "mi", "mo", "mn", "ms", "mtext": + return true + } + return false +} + +// Section 12.2.6.5. +var breakout = map[string]bool{ + "b": true, + "big": true, + "blockquote": true, + "body": true, + "br": true, + "center": true, + "code": true, + "dd": true, + "div": true, + "dl": true, + "dt": true, + "em": true, + "embed": true, + "h1": true, + "h2": true, + "h3": true, + "h4": true, + "h5": true, + "h6": true, + "head": true, + "hr": true, + "i": true, + "img": true, + "li": true, + "listing": true, + "menu": true, + "meta": true, + "nobr": true, + "ol": true, + "p": true, + "pre": true, + "ruby": true, + "s": true, + "small": true, + "span": true, + "strong": true, + "strike": true, + "sub": true, + "sup": true, + "table": true, + "tt": true, + "u": true, + "ul": true, + "var": true, +} + +// Section 12.2.6.5. +var svgTagNameAdjustments = map[string]string{ + "altglyph": "altGlyph", + "altglyphdef": "altGlyphDef", + "altglyphitem": "altGlyphItem", + "animatecolor": "animateColor", + "animatemotion": "animateMotion", + "animatetransform": "animateTransform", + "clippath": "clipPath", + "feblend": "feBlend", + "fecolormatrix": "feColorMatrix", + "fecomponenttransfer": "feComponentTransfer", + "fecomposite": "feComposite", + "feconvolvematrix": "feConvolveMatrix", + "fediffuselighting": "feDiffuseLighting", + "fedisplacementmap": "feDisplacementMap", + "fedistantlight": "feDistantLight", + "feflood": "feFlood", + "fefunca": "feFuncA", + "fefuncb": "feFuncB", + "fefuncg": "feFuncG", + "fefuncr": "feFuncR", + "fegaussianblur": "feGaussianBlur", + "feimage": "feImage", + "femerge": "feMerge", + "femergenode": "feMergeNode", + "femorphology": "feMorphology", + "feoffset": "feOffset", + "fepointlight": "fePointLight", + "fespecularlighting": "feSpecularLighting", + "fespotlight": "feSpotLight", + "fetile": "feTile", + "feturbulence": "feTurbulence", + "foreignobject": "foreignObject", + "glyphref": "glyphRef", + "lineargradient": "linearGradient", + "radialgradient": "radialGradient", + "textpath": "textPath", +} + +// Section 12.2.6.1 +var mathMLAttributeAdjustments = map[string]string{ + "definitionurl": "definitionURL", +} + +var svgAttributeAdjustments = map[string]string{ + "attributename": "attributeName", + "attributetype": "attributeType", + "basefrequency": "baseFrequency", + "baseprofile": "baseProfile", + "calcmode": "calcMode", + "clippathunits": "clipPathUnits", + "diffuseconstant": "diffuseConstant", + "edgemode": "edgeMode", + "filterunits": "filterUnits", + "glyphref": "glyphRef", + "gradienttransform": "gradientTransform", + "gradientunits": "gradientUnits", + "kernelmatrix": "kernelMatrix", + "kernelunitlength": "kernelUnitLength", + "keypoints": "keyPoints", + "keysplines": "keySplines", + "keytimes": "keyTimes", + "lengthadjust": "lengthAdjust", + "limitingconeangle": "limitingConeAngle", + "markerheight": "markerHeight", + "markerunits": "markerUnits", + "markerwidth": "markerWidth", + "maskcontentunits": "maskContentUnits", + "maskunits": "maskUnits", + "numoctaves": "numOctaves", + "pathlength": "pathLength", + "patterncontentunits": "patternContentUnits", + "patterntransform": "patternTransform", + "patternunits": "patternUnits", + "pointsatx": "pointsAtX", + "pointsaty": "pointsAtY", + "pointsatz": "pointsAtZ", + "preservealpha": "preserveAlpha", + "preserveaspectratio": "preserveAspectRatio", + "primitiveunits": "primitiveUnits", + "refx": "refX", + "refy": "refY", + "repeatcount": "repeatCount", + "repeatdur": "repeatDur", + "requiredextensions": "requiredExtensions", + "requiredfeatures": "requiredFeatures", + "specularconstant": "specularConstant", + "specularexponent": "specularExponent", + "spreadmethod": "spreadMethod", + "startoffset": "startOffset", + "stddeviation": "stdDeviation", + "stitchtiles": "stitchTiles", + "surfacescale": "surfaceScale", + "systemlanguage": "systemLanguage", + "tablevalues": "tableValues", + "targetx": "targetX", + "targety": "targetY", + "textlength": "textLength", + "viewbox": "viewBox", + "viewtarget": "viewTarget", + "xchannelselector": "xChannelSelector", + "ychannelselector": "yChannelSelector", + "zoomandpan": "zoomAndPan", +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/node.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/node.go new file mode 100644 index 000000000..1350eef22 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/node.go @@ -0,0 +1,225 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "golang.org/x/net/html/atom" +) + +// A NodeType is the type of a Node. +type NodeType uint32 + +const ( + ErrorNode NodeType = iota + TextNode + DocumentNode + ElementNode + CommentNode + DoctypeNode + // RawNode nodes are not returned by the parser, but can be part of the + // Node tree passed to func Render to insert raw HTML (without escaping). + // If so, this package makes no guarantee that the rendered HTML is secure + // (from e.g. Cross Site Scripting attacks) or well-formed. + RawNode + scopeMarkerNode +) + +// Section 12.2.4.3 says "The markers are inserted when entering applet, +// object, marquee, template, td, th, and caption elements, and are used +// to prevent formatting from "leaking" into applet, object, marquee, +// template, td, th, and caption elements". +var scopeMarker = Node{Type: scopeMarkerNode} + +// A Node consists of a NodeType and some Data (tag name for element nodes, +// content for text) and are part of a tree of Nodes. Element nodes may also +// have a Namespace and contain a slice of Attributes. Data is unescaped, so +// that it looks like "a 0 { + return (*s)[i-1] + } + return nil +} + +// index returns the index of the top-most occurrence of n in the stack, or -1 +// if n is not present. +func (s *nodeStack) index(n *Node) int { + for i := len(*s) - 1; i >= 0; i-- { + if (*s)[i] == n { + return i + } + } + return -1 +} + +// contains returns whether a is within s. +func (s *nodeStack) contains(a atom.Atom) bool { + for _, n := range *s { + if n.DataAtom == a && n.Namespace == "" { + return true + } + } + return false +} + +// insert inserts a node at the given index. +func (s *nodeStack) insert(i int, n *Node) { + (*s) = append(*s, nil) + copy((*s)[i+1:], (*s)[i:]) + (*s)[i] = n +} + +// remove removes a node from the stack. It is a no-op if n is not present. +func (s *nodeStack) remove(n *Node) { + i := s.index(n) + if i == -1 { + return + } + copy((*s)[i:], (*s)[i+1:]) + j := len(*s) - 1 + (*s)[j] = nil + *s = (*s)[:j] +} + +type insertionModeStack []insertionMode + +func (s *insertionModeStack) pop() (im insertionMode) { + i := len(*s) + im = (*s)[i-1] + *s = (*s)[:i-1] + return im +} + +func (s *insertionModeStack) top() insertionMode { + if i := len(*s); i > 0 { + return (*s)[i-1] + } + return nil +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/node_test.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/node_test.go new file mode 100644 index 000000000..471102f3a --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/node_test.go @@ -0,0 +1,146 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "fmt" +) + +// checkTreeConsistency checks that a node and its descendants are all +// consistent in their parent/child/sibling relationships. +func checkTreeConsistency(n *Node) error { + return checkTreeConsistency1(n, 0) +} + +func checkTreeConsistency1(n *Node, depth int) error { + if depth == 1e4 { + return fmt.Errorf("html: tree looks like it contains a cycle") + } + if err := checkNodeConsistency(n); err != nil { + return err + } + for c := n.FirstChild; c != nil; c = c.NextSibling { + if err := checkTreeConsistency1(c, depth+1); err != nil { + return err + } + } + return nil +} + +// checkNodeConsistency checks that a node's parent/child/sibling relationships +// are consistent. +func checkNodeConsistency(n *Node) error { + if n == nil { + return nil + } + + nParent := 0 + for p := n.Parent; p != nil; p = p.Parent { + nParent++ + if nParent == 1e4 { + return fmt.Errorf("html: parent list looks like an infinite loop") + } + } + + nForward := 0 + for c := n.FirstChild; c != nil; c = c.NextSibling { + nForward++ + if nForward == 1e6 { + return fmt.Errorf("html: forward list of children looks like an infinite loop") + } + if c.Parent != n { + return fmt.Errorf("html: inconsistent child/parent relationship") + } + } + + nBackward := 0 + for c := n.LastChild; c != nil; c = c.PrevSibling { + nBackward++ + if nBackward == 1e6 { + return fmt.Errorf("html: backward list of children looks like an infinite loop") + } + if c.Parent != n { + return fmt.Errorf("html: inconsistent child/parent relationship") + } + } + + if n.Parent != nil { + if n.Parent == n { + return fmt.Errorf("html: inconsistent parent relationship") + } + if n.Parent == n.FirstChild { + return fmt.Errorf("html: inconsistent parent/first relationship") + } + if n.Parent == n.LastChild { + return fmt.Errorf("html: inconsistent parent/last relationship") + } + if n.Parent == n.PrevSibling { + return fmt.Errorf("html: inconsistent parent/prev relationship") + } + if n.Parent == n.NextSibling { + return fmt.Errorf("html: inconsistent parent/next relationship") + } + + parentHasNAsAChild := false + for c := n.Parent.FirstChild; c != nil; c = c.NextSibling { + if c == n { + parentHasNAsAChild = true + break + } + } + if !parentHasNAsAChild { + return fmt.Errorf("html: inconsistent parent/child relationship") + } + } + + if n.PrevSibling != nil && n.PrevSibling.NextSibling != n { + return fmt.Errorf("html: inconsistent prev/next relationship") + } + if n.NextSibling != nil && n.NextSibling.PrevSibling != n { + return fmt.Errorf("html: inconsistent next/prev relationship") + } + + if (n.FirstChild == nil) != (n.LastChild == nil) { + return fmt.Errorf("html: inconsistent first/last relationship") + } + if n.FirstChild != nil && n.FirstChild == n.LastChild { + // We have a sole child. + if n.FirstChild.PrevSibling != nil || n.FirstChild.NextSibling != nil { + return fmt.Errorf("html: inconsistent sole child's sibling relationship") + } + } + + seen := map[*Node]bool{} + + var last *Node + for c := n.FirstChild; c != nil; c = c.NextSibling { + if seen[c] { + return fmt.Errorf("html: inconsistent repeated child") + } + seen[c] = true + last = c + } + if last != n.LastChild { + return fmt.Errorf("html: inconsistent last relationship") + } + + var first *Node + for c := n.LastChild; c != nil; c = c.PrevSibling { + if !seen[c] { + return fmt.Errorf("html: inconsistent missing child") + } + delete(seen, c) + first = c + } + if first != n.FirstChild { + return fmt.Errorf("html: inconsistent first relationship") + } + + if len(seen) != 0 { + return fmt.Errorf("html: inconsistent forwards/backwards child list") + } + + return nil +} diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/parse.go b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/parse.go new file mode 100644 index 000000000..038941d70 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/parse.go @@ -0,0 +1,2460 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "errors" + "fmt" + "io" + "strings" + + a "golang.org/x/net/html/atom" +) + +// A parser implements the HTML5 parsing algorithm: +// https://html.spec.whatwg.org/multipage/syntax.html#tree-construction +type parser struct { + // tokenizer provides the tokens for the parser. + tokenizer *Tokenizer + // tok is the most recently read token. + tok Token + // Self-closing tags like
                  are treated as start tags, except that + // hasSelfClosingToken is set while they are being processed. + hasSelfClosingToken bool + // doc is the document root element. + doc *Node + // The stack of open elements (section 12.2.4.2) and active formatting + // elements (section 12.2.4.3). + oe, afe nodeStack + // Element pointers (section 12.2.4.4). + head, form *Node + // Other parsing state flags (section 12.2.4.5). + scripting, framesetOK bool + // The stack of template insertion modes + templateStack insertionModeStack + // im is the current insertion mode. + im insertionMode + // originalIM is the insertion mode to go back to after completing a text + // or inTableText insertion mode. + originalIM insertionMode + // fosterParenting is whether new elements should be inserted according to + // the foster parenting rules (section 12.2.6.1). + fosterParenting bool + // quirks is whether the parser is operating in "quirks mode." + quirks bool + // fragment is whether the parser is parsing an HTML fragment. + fragment bool + // context is the context element when parsing an HTML fragment + // (section 12.4). + context *Node +} + +func (p *parser) top() *Node { + if n := p.oe.top(); n != nil { + return n + } + return p.doc +} + +// Stop tags for use in popUntil. These come from section 12.2.4.2. +var ( + defaultScopeStopTags = map[string][]a.Atom{ + "": {a.Applet, a.Caption, a.Html, a.Table, a.Td, a.Th, a.Marquee, a.Object, a.Template}, + "math": {a.AnnotationXml, a.Mi, a.Mn, a.Mo, a.Ms, a.Mtext}, + "svg": {a.Desc, a.ForeignObject, a.Title}, + } +) + +type scope int + +const ( + defaultScope scope = iota + listItemScope + buttonScope + tableScope + tableRowScope + tableBodyScope + selectScope +) + +// popUntil pops the stack of open elements at the highest element whose tag +// is in matchTags, provided there is no higher element in the scope's stop +// tags (as defined in section 12.2.4.2). It returns whether or not there was +// such an element. If there was not, popUntil leaves the stack unchanged. +// +// For example, the set of stop tags for table scope is: "html", "table". If +// the stack was: +// ["html", "body", "font", "table", "b", "i", "u"] +// then popUntil(tableScope, "font") would return false, but +// popUntil(tableScope, "i") would return true and the stack would become: +// ["html", "body", "font", "table", "b"] +// +// If an element's tag is in both the stop tags and matchTags, then the stack +// will be popped and the function returns true (provided, of course, there was +// no higher element in the stack that was also in the stop tags). For example, +// popUntil(tableScope, "table") returns true and leaves: +// ["html", "body", "font"] +func (p *parser) popUntil(s scope, matchTags ...a.Atom) bool { + if i := p.indexOfElementInScope(s, matchTags...); i != -1 { + p.oe = p.oe[:i] + return true + } + return false +} + +// indexOfElementInScope returns the index in p.oe of the highest element whose +// tag is in matchTags that is in scope. If no matching element is in scope, it +// returns -1. +func (p *parser) indexOfElementInScope(s scope, matchTags ...a.Atom) int { + for i := len(p.oe) - 1; i >= 0; i-- { + tagAtom := p.oe[i].DataAtom + if p.oe[i].Namespace == "" { + for _, t := range matchTags { + if t == tagAtom { + return i + } + } + switch s { + case defaultScope: + // No-op. + case listItemScope: + if tagAtom == a.Ol || tagAtom == a.Ul { + return -1 + } + case buttonScope: + if tagAtom == a.Button { + return -1 + } + case tableScope: + if tagAtom == a.Html || tagAtom == a.Table || tagAtom == a.Template { + return -1 + } + case selectScope: + if tagAtom != a.Optgroup && tagAtom != a.Option { + return -1 + } + default: + panic("unreachable") + } + } + switch s { + case defaultScope, listItemScope, buttonScope: + for _, t := range defaultScopeStopTags[p.oe[i].Namespace] { + if t == tagAtom { + return -1 + } + } + } + } + return -1 +} + +// elementInScope is like popUntil, except that it doesn't modify the stack of +// open elements. +func (p *parser) elementInScope(s scope, matchTags ...a.Atom) bool { + return p.indexOfElementInScope(s, matchTags...) != -1 +} + +// clearStackToContext pops elements off the stack of open elements until a +// scope-defined element is found. +func (p *parser) clearStackToContext(s scope) { + for i := len(p.oe) - 1; i >= 0; i-- { + tagAtom := p.oe[i].DataAtom + switch s { + case tableScope: + if tagAtom == a.Html || tagAtom == a.Table || tagAtom == a.Template { + p.oe = p.oe[:i+1] + return + } + case tableRowScope: + if tagAtom == a.Html || tagAtom == a.Tr || tagAtom == a.Template { + p.oe = p.oe[:i+1] + return + } + case tableBodyScope: + if tagAtom == a.Html || tagAtom == a.Tbody || tagAtom == a.Tfoot || tagAtom == a.Thead || tagAtom == a.Template { + p.oe = p.oe[:i+1] + return + } + default: + panic("unreachable") + } + } +} + +// parseGenericRawTextElements implements the generic raw text element parsing +// algorithm defined in 12.2.6.2. +// https://html.spec.whatwg.org/multipage/parsing.html#parsing-elements-that-contain-only-text +// TODO: Since both RAWTEXT and RCDATA states are treated as tokenizer's part +// officially, need to make tokenizer consider both states. +func (p *parser) parseGenericRawTextElement() { + p.addElement() + p.originalIM = p.im + p.im = textIM +} + +// generateImpliedEndTags pops nodes off the stack of open elements as long as +// the top node has a tag name of dd, dt, li, optgroup, option, p, rb, rp, rt or rtc. +// If exceptions are specified, nodes with that name will not be popped off. +func (p *parser) generateImpliedEndTags(exceptions ...string) { + var i int +loop: + for i = len(p.oe) - 1; i >= 0; i-- { + n := p.oe[i] + if n.Type != ElementNode { + break + } + switch n.DataAtom { + case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc: + for _, except := range exceptions { + if n.Data == except { + break loop + } + } + continue + } + break + } + + p.oe = p.oe[:i+1] +} + +// addChild adds a child node n to the top element, and pushes n onto the stack +// of open elements if it is an element node. +func (p *parser) addChild(n *Node) { + if p.shouldFosterParent() { + p.fosterParent(n) + } else { + p.top().AppendChild(n) + } + + if n.Type == ElementNode { + p.oe = append(p.oe, n) + } +} + +// shouldFosterParent returns whether the next node to be added should be +// foster parented. +func (p *parser) shouldFosterParent() bool { + if p.fosterParenting { + switch p.top().DataAtom { + case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr: + return true + } + } + return false +} + +// fosterParent adds a child node according to the foster parenting rules. +// Section 12.2.6.1, "foster parenting". +func (p *parser) fosterParent(n *Node) { + var table, parent, prev, template *Node + var i int + for i = len(p.oe) - 1; i >= 0; i-- { + if p.oe[i].DataAtom == a.Table { + table = p.oe[i] + break + } + } + + var j int + for j = len(p.oe) - 1; j >= 0; j-- { + if p.oe[j].DataAtom == a.Template { + template = p.oe[j] + break + } + } + + if template != nil && (table == nil || j > i) { + template.AppendChild(n) + return + } + + if table == nil { + // The foster parent is the html element. + parent = p.oe[0] + } else { + parent = table.Parent + } + if parent == nil { + parent = p.oe[i-1] + } + + if table != nil { + prev = table.PrevSibling + } else { + prev = parent.LastChild + } + if prev != nil && prev.Type == TextNode && n.Type == TextNode { + prev.Data += n.Data + return + } + + parent.InsertBefore(n, table) +} + +// addText adds text to the preceding node if it is a text node, or else it +// calls addChild with a new text node. +func (p *parser) addText(text string) { + if text == "" { + return + } + + if p.shouldFosterParent() { + p.fosterParent(&Node{ + Type: TextNode, + Data: text, + }) + return + } + + t := p.top() + if n := t.LastChild; n != nil && n.Type == TextNode { + n.Data += text + return + } + p.addChild(&Node{ + Type: TextNode, + Data: text, + }) +} + +// addElement adds a child element based on the current token. +func (p *parser) addElement() { + p.addChild(&Node{ + Type: ElementNode, + DataAtom: p.tok.DataAtom, + Data: p.tok.Data, + Attr: p.tok.Attr, + }) +} + +// Section 12.2.4.3. +func (p *parser) addFormattingElement() { + tagAtom, attr := p.tok.DataAtom, p.tok.Attr + p.addElement() + + // Implement the Noah's Ark clause, but with three per family instead of two. + identicalElements := 0 +findIdenticalElements: + for i := len(p.afe) - 1; i >= 0; i-- { + n := p.afe[i] + if n.Type == scopeMarkerNode { + break + } + if n.Type != ElementNode { + continue + } + if n.Namespace != "" { + continue + } + if n.DataAtom != tagAtom { + continue + } + if len(n.Attr) != len(attr) { + continue + } + compareAttributes: + for _, t0 := range n.Attr { + for _, t1 := range attr { + if t0.Key == t1.Key && t0.Namespace == t1.Namespace && t0.Val == t1.Val { + // Found a match for this attribute, continue with the next attribute. + continue compareAttributes + } + } + // If we get here, there is no attribute that matches a. + // Therefore the element is not identical to the new one. + continue findIdenticalElements + } + + identicalElements++ + if identicalElements >= 3 { + p.afe.remove(n) + } + } + + p.afe = append(p.afe, p.top()) +} + +// Section 12.2.4.3. +func (p *parser) clearActiveFormattingElements() { + for { + if n := p.afe.pop(); len(p.afe) == 0 || n.Type == scopeMarkerNode { + return + } + } +} + +// Section 12.2.4.3. +func (p *parser) reconstructActiveFormattingElements() { + n := p.afe.top() + if n == nil { + return + } + if n.Type == scopeMarkerNode || p.oe.index(n) != -1 { + return + } + i := len(p.afe) - 1 + for n.Type != scopeMarkerNode && p.oe.index(n) == -1 { + if i == 0 { + i = -1 + break + } + i-- + n = p.afe[i] + } + for { + i++ + clone := p.afe[i].clone() + p.addChild(clone) + p.afe[i] = clone + if i == len(p.afe)-1 { + break + } + } +} + +// Section 12.2.5. +func (p *parser) acknowledgeSelfClosingTag() { + p.hasSelfClosingToken = false +} + +// An insertion mode (section 12.2.4.1) is the state transition function from +// a particular state in the HTML5 parser's state machine. It updates the +// parser's fields depending on parser.tok (where ErrorToken means EOF). +// It returns whether the token was consumed. +type insertionMode func(*parser) bool + +// setOriginalIM sets the insertion mode to return to after completing a text or +// inTableText insertion mode. +// Section 12.2.4.1, "using the rules for". +func (p *parser) setOriginalIM() { + if p.originalIM != nil { + panic("html: bad parser state: originalIM was set twice") + } + p.originalIM = p.im +} + +// Section 12.2.4.1, "reset the insertion mode". +func (p *parser) resetInsertionMode() { + for i := len(p.oe) - 1; i >= 0; i-- { + n := p.oe[i] + last := i == 0 + if last && p.context != nil { + n = p.context + } + + switch n.DataAtom { + case a.Select: + if !last { + for ancestor, first := n, p.oe[0]; ancestor != first; { + ancestor = p.oe[p.oe.index(ancestor)-1] + switch ancestor.DataAtom { + case a.Template: + p.im = inSelectIM + return + case a.Table: + p.im = inSelectInTableIM + return + } + } + } + p.im = inSelectIM + case a.Td, a.Th: + // TODO: remove this divergence from the HTML5 spec. + // + // See https://bugs.chromium.org/p/chromium/issues/detail?id=829668 + p.im = inCellIM + case a.Tr: + p.im = inRowIM + case a.Tbody, a.Thead, a.Tfoot: + p.im = inTableBodyIM + case a.Caption: + p.im = inCaptionIM + case a.Colgroup: + p.im = inColumnGroupIM + case a.Table: + p.im = inTableIM + case a.Template: + // TODO: remove this divergence from the HTML5 spec. + if n.Namespace != "" { + continue + } + p.im = p.templateStack.top() + case a.Head: + // TODO: remove this divergence from the HTML5 spec. + // + // See https://bugs.chromium.org/p/chromium/issues/detail?id=829668 + p.im = inHeadIM + case a.Body: + p.im = inBodyIM + case a.Frameset: + p.im = inFramesetIM + case a.Html: + if p.head == nil { + p.im = beforeHeadIM + } else { + p.im = afterHeadIM + } + default: + if last { + p.im = inBodyIM + return + } + continue + } + return + } +} + +const whitespace = " \t\r\n\f" + +// Section 12.2.6.4.1. +func initialIM(p *parser) bool { + switch p.tok.Type { + case TextToken: + p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) + if len(p.tok.Data) == 0 { + // It was all whitespace, so ignore it. + return true + } + case CommentToken: + p.doc.AppendChild(&Node{ + Type: CommentNode, + Data: p.tok.Data, + }) + return true + case DoctypeToken: + n, quirks := parseDoctype(p.tok.Data) + p.doc.AppendChild(n) + p.quirks = quirks + p.im = beforeHTMLIM + return true + } + p.quirks = true + p.im = beforeHTMLIM + return false +} + +// Section 12.2.6.4.2. +func beforeHTMLIM(p *parser) bool { + switch p.tok.Type { + case DoctypeToken: + // Ignore the token. + return true + case TextToken: + p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) + if len(p.tok.Data) == 0 { + // It was all whitespace, so ignore it. + return true + } + case StartTagToken: + if p.tok.DataAtom == a.Html { + p.addElement() + p.im = beforeHeadIM + return true + } + case EndTagToken: + switch p.tok.DataAtom { + case a.Head, a.Body, a.Html, a.Br: + p.parseImpliedToken(StartTagToken, a.Html, a.Html.String()) + return false + default: + // Ignore the token. + return true + } + case CommentToken: + p.doc.AppendChild(&Node{ + Type: CommentNode, + Data: p.tok.Data, + }) + return true + } + p.parseImpliedToken(StartTagToken, a.Html, a.Html.String()) + return false +} + +// Section 12.2.6.4.3. +func beforeHeadIM(p *parser) bool { + switch p.tok.Type { + case TextToken: + p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) + if len(p.tok.Data) == 0 { + // It was all whitespace, so ignore it. + return true + } + case StartTagToken: + switch p.tok.DataAtom { + case a.Head: + p.addElement() + p.head = p.top() + p.im = inHeadIM + return true + case a.Html: + return inBodyIM(p) + } + case EndTagToken: + switch p.tok.DataAtom { + case a.Head, a.Body, a.Html, a.Br: + p.parseImpliedToken(StartTagToken, a.Head, a.Head.String()) + return false + default: + // Ignore the token. + return true + } + case CommentToken: + p.addChild(&Node{ + Type: CommentNode, + Data: p.tok.Data, + }) + return true + case DoctypeToken: + // Ignore the token. + return true + } + + p.parseImpliedToken(StartTagToken, a.Head, a.Head.String()) + return false +} + +// Section 12.2.6.4.4. +func inHeadIM(p *parser) bool { + switch p.tok.Type { + case TextToken: + s := strings.TrimLeft(p.tok.Data, whitespace) + if len(s) < len(p.tok.Data) { + // Add the initial whitespace to the current node. + p.addText(p.tok.Data[:len(p.tok.Data)-len(s)]) + if s == "" { + return true + } + p.tok.Data = s + } + case StartTagToken: + switch p.tok.DataAtom { + case a.Html: + return inBodyIM(p) + case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta: + p.addElement() + p.oe.pop() + p.acknowledgeSelfClosingTag() + return true + case a.Noscript: + if p.scripting { + p.parseGenericRawTextElement() + return true + } + p.addElement() + p.im = inHeadNoscriptIM + // Don't let the tokenizer go into raw text mode when scripting is disabled. + p.tokenizer.NextIsNotRawText() + return true + case a.Script, a.Title: + p.addElement() + p.setOriginalIM() + p.im = textIM + return true + case a.Noframes, a.Style: + p.parseGenericRawTextElement() + return true + case a.Head: + // Ignore the token. + return true + case a.Template: + // TODO: remove this divergence from the HTML5 spec. + // + // We don't handle all of the corner cases when mixing foreign + // content (i.e. or ) with tag. + case a.Template: + return inHeadIM(p) + default: + // Ignore the token. + return true + } + case CommentToken: + p.addChild(&Node{ + Type: CommentNode, + Data: p.tok.Data, + }) + return true + case DoctypeToken: + // Ignore the token. + return true + } + + p.parseImpliedToken(StartTagToken, a.Body, a.Body.String()) + p.framesetOK = true + return false +} + +// copyAttributes copies attributes of src not found on dst to dst. +func copyAttributes(dst *Node, src Token) { + if len(src.Attr) == 0 { + return + } + attr := map[string]string{} + for _, t := range dst.Attr { + attr[t.Key] = t.Val + } + for _, t := range src.Attr { + if _, ok := attr[t.Key]; !ok { + dst.Attr = append(dst.Attr, t) + attr[t.Key] = t.Val + } + } +} + +// Section 12.2.6.4.7. +func inBodyIM(p *parser) bool { + switch p.tok.Type { + case TextToken: + d := p.tok.Data + switch n := p.oe.top(); n.DataAtom { + case a.Pre, a.Listing: + if n.FirstChild == nil { + // Ignore a newline at the start of a
                   block.
                  +				if d != "" && d[0] == '\r' {
                  +					d = d[1:]
                  +				}
                  +				if d != "" && d[0] == '\n' {
                  +					d = d[1:]
                  +				}
                  +			}
                  +		}
                  +		d = strings.Replace(d, "\x00", "", -1)
                  +		if d == "" {
                  +			return true
                  +		}
                  +		p.reconstructActiveFormattingElements()
                  +		p.addText(d)
                  +		if p.framesetOK && strings.TrimLeft(d, whitespace) != "" {
                  +			// There were non-whitespace characters inserted.
                  +			p.framesetOK = false
                  +		}
                  +	case StartTagToken:
                  +		switch p.tok.DataAtom {
                  +		case a.Html:
                  +			if p.oe.contains(a.Template) {
                  +				return true
                  +			}
                  +			copyAttributes(p.oe[0], p.tok)
                  +		case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Template, a.Title:
                  +			return inHeadIM(p)
                  +		case a.Body:
                  +			if p.oe.contains(a.Template) {
                  +				return true
                  +			}
                  +			if len(p.oe) >= 2 {
                  +				body := p.oe[1]
                  +				if body.Type == ElementNode && body.DataAtom == a.Body {
                  +					p.framesetOK = false
                  +					copyAttributes(body, p.tok)
                  +				}
                  +			}
                  +		case a.Frameset:
                  +			if !p.framesetOK || len(p.oe) < 2 || p.oe[1].DataAtom != a.Body {
                  +				// Ignore the token.
                  +				return true
                  +			}
                  +			body := p.oe[1]
                  +			if body.Parent != nil {
                  +				body.Parent.RemoveChild(body)
                  +			}
                  +			p.oe = p.oe[:1]
                  +			p.addElement()
                  +			p.im = inFramesetIM
                  +			return true
                  +		case a.Address, a.Article, a.Aside, a.Blockquote, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Main, a.Menu, a.Nav, a.Ol, a.P, a.Section, a.Summary, a.Ul:
                  +			p.popUntil(buttonScope, a.P)
                  +			p.addElement()
                  +		case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:
                  +			p.popUntil(buttonScope, a.P)
                  +			switch n := p.top(); n.DataAtom {
                  +			case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:
                  +				p.oe.pop()
                  +			}
                  +			p.addElement()
                  +		case a.Pre, a.Listing:
                  +			p.popUntil(buttonScope, a.P)
                  +			p.addElement()
                  +			// The newline, if any, will be dealt with by the TextToken case.
                  +			p.framesetOK = false
                  +		case a.Form:
                  +			if p.form != nil && !p.oe.contains(a.Template) {
                  +				// Ignore the token
                  +				return true
                  +			}
                  +			p.popUntil(buttonScope, a.P)
                  +			p.addElement()
                  +			if !p.oe.contains(a.Template) {
                  +				p.form = p.top()
                  +			}
                  +		case a.Li:
                  +			p.framesetOK = false
                  +			for i := len(p.oe) - 1; i >= 0; i-- {
                  +				node := p.oe[i]
                  +				switch node.DataAtom {
                  +				case a.Li:
                  +					p.oe = p.oe[:i]
                  +				case a.Address, a.Div, a.P:
                  +					continue
                  +				default:
                  +					if !isSpecialElement(node) {
                  +						continue
                  +					}
                  +				}
                  +				break
                  +			}
                  +			p.popUntil(buttonScope, a.P)
                  +			p.addElement()
                  +		case a.Dd, a.Dt:
                  +			p.framesetOK = false
                  +			for i := len(p.oe) - 1; i >= 0; i-- {
                  +				node := p.oe[i]
                  +				switch node.DataAtom {
                  +				case a.Dd, a.Dt:
                  +					p.oe = p.oe[:i]
                  +				case a.Address, a.Div, a.P:
                  +					continue
                  +				default:
                  +					if !isSpecialElement(node) {
                  +						continue
                  +					}
                  +				}
                  +				break
                  +			}
                  +			p.popUntil(buttonScope, a.P)
                  +			p.addElement()
                  +		case a.Plaintext:
                  +			p.popUntil(buttonScope, a.P)
                  +			p.addElement()
                  +		case a.Button:
                  +			p.popUntil(defaultScope, a.Button)
                  +			p.reconstructActiveFormattingElements()
                  +			p.addElement()
                  +			p.framesetOK = false
                  +		case a.A:
                  +			for i := len(p.afe) - 1; i >= 0 && p.afe[i].Type != scopeMarkerNode; i-- {
                  +				if n := p.afe[i]; n.Type == ElementNode && n.DataAtom == a.A {
                  +					p.inBodyEndTagFormatting(a.A, "a")
                  +					p.oe.remove(n)
                  +					p.afe.remove(n)
                  +					break
                  +				}
                  +			}
                  +			p.reconstructActiveFormattingElements()
                  +			p.addFormattingElement()
                  +		case a.B, a.Big, a.Code, a.Em, a.Font, a.I, a.S, a.Small, a.Strike, a.Strong, a.Tt, a.U:
                  +			p.reconstructActiveFormattingElements()
                  +			p.addFormattingElement()
                  +		case a.Nobr:
                  +			p.reconstructActiveFormattingElements()
                  +			if p.elementInScope(defaultScope, a.Nobr) {
                  +				p.inBodyEndTagFormatting(a.Nobr, "nobr")
                  +				p.reconstructActiveFormattingElements()
                  +			}
                  +			p.addFormattingElement()
                  +		case a.Applet, a.Marquee, a.Object:
                  +			p.reconstructActiveFormattingElements()
                  +			p.addElement()
                  +			p.afe = append(p.afe, &scopeMarker)
                  +			p.framesetOK = false
                  +		case a.Table:
                  +			if !p.quirks {
                  +				p.popUntil(buttonScope, a.P)
                  +			}
                  +			p.addElement()
                  +			p.framesetOK = false
                  +			p.im = inTableIM
                  +			return true
                  +		case a.Area, a.Br, a.Embed, a.Img, a.Input, a.Keygen, a.Wbr:
                  +			p.reconstructActiveFormattingElements()
                  +			p.addElement()
                  +			p.oe.pop()
                  +			p.acknowledgeSelfClosingTag()
                  +			if p.tok.DataAtom == a.Input {
                  +				for _, t := range p.tok.Attr {
                  +					if t.Key == "type" {
                  +						if strings.ToLower(t.Val) == "hidden" {
                  +							// Skip setting framesetOK = false
                  +							return true
                  +						}
                  +					}
                  +				}
                  +			}
                  +			p.framesetOK = false
                  +		case a.Param, a.Source, a.Track:
                  +			p.addElement()
                  +			p.oe.pop()
                  +			p.acknowledgeSelfClosingTag()
                  +		case a.Hr:
                  +			p.popUntil(buttonScope, a.P)
                  +			p.addElement()
                  +			p.oe.pop()
                  +			p.acknowledgeSelfClosingTag()
                  +			p.framesetOK = false
                  +		case a.Image:
                  +			p.tok.DataAtom = a.Img
                  +			p.tok.Data = a.Img.String()
                  +			return false
                  +		case a.Textarea:
                  +			p.addElement()
                  +			p.setOriginalIM()
                  +			p.framesetOK = false
                  +			p.im = textIM
                  +		case a.Xmp:
                  +			p.popUntil(buttonScope, a.P)
                  +			p.reconstructActiveFormattingElements()
                  +			p.framesetOK = false
                  +			p.parseGenericRawTextElement()
                  +		case a.Iframe:
                  +			p.framesetOK = false
                  +			p.parseGenericRawTextElement()
                  +		case a.Noembed:
                  +			p.parseGenericRawTextElement()
                  +		case a.Noscript:
                  +			if p.scripting {
                  +				p.parseGenericRawTextElement()
                  +				return true
                  +			}
                  +			p.reconstructActiveFormattingElements()
                  +			p.addElement()
                  +			// Don't let the tokenizer go into raw text mode when scripting is disabled.
                  +			p.tokenizer.NextIsNotRawText()
                  +		case a.Select:
                  +			p.reconstructActiveFormattingElements()
                  +			p.addElement()
                  +			p.framesetOK = false
                  +			p.im = inSelectIM
                  +			return true
                  +		case a.Optgroup, a.Option:
                  +			if p.top().DataAtom == a.Option {
                  +				p.oe.pop()
                  +			}
                  +			p.reconstructActiveFormattingElements()
                  +			p.addElement()
                  +		case a.Rb, a.Rtc:
                  +			if p.elementInScope(defaultScope, a.Ruby) {
                  +				p.generateImpliedEndTags()
                  +			}
                  +			p.addElement()
                  +		case a.Rp, a.Rt:
                  +			if p.elementInScope(defaultScope, a.Ruby) {
                  +				p.generateImpliedEndTags("rtc")
                  +			}
                  +			p.addElement()
                  +		case a.Math, a.Svg:
                  +			p.reconstructActiveFormattingElements()
                  +			if p.tok.DataAtom == a.Math {
                  +				adjustAttributeNames(p.tok.Attr, mathMLAttributeAdjustments)
                  +			} else {
                  +				adjustAttributeNames(p.tok.Attr, svgAttributeAdjustments)
                  +			}
                  +			adjustForeignAttributes(p.tok.Attr)
                  +			p.addElement()
                  +			p.top().Namespace = p.tok.Data
                  +			if p.hasSelfClosingToken {
                  +				p.oe.pop()
                  +				p.acknowledgeSelfClosingTag()
                  +			}
                  +			return true
                  +		case a.Caption, a.Col, a.Colgroup, a.Frame, a.Head, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr:
                  +			// Ignore the token.
                  +		default:
                  +			p.reconstructActiveFormattingElements()
                  +			p.addElement()
                  +		}
                  +	case EndTagToken:
                  +		switch p.tok.DataAtom {
                  +		case a.Body:
                  +			if p.elementInScope(defaultScope, a.Body) {
                  +				p.im = afterBodyIM
                  +			}
                  +		case a.Html:
                  +			if p.elementInScope(defaultScope, a.Body) {
                  +				p.parseImpliedToken(EndTagToken, a.Body, a.Body.String())
                  +				return false
                  +			}
                  +			return true
                  +		case a.Address, a.Article, a.Aside, a.Blockquote, a.Button, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Listing, a.Main, a.Menu, a.Nav, a.Ol, a.Pre, a.Section, a.Summary, a.Ul:
                  +			p.popUntil(defaultScope, p.tok.DataAtom)
                  +		case a.Form:
                  +			if p.oe.contains(a.Template) {
                  +				i := p.indexOfElementInScope(defaultScope, a.Form)
                  +				if i == -1 {
                  +					// Ignore the token.
                  +					return true
                  +				}
                  +				p.generateImpliedEndTags()
                  +				if p.oe[i].DataAtom != a.Form {
                  +					// Ignore the token.
                  +					return true
                  +				}
                  +				p.popUntil(defaultScope, a.Form)
                  +			} else {
                  +				node := p.form
                  +				p.form = nil
                  +				i := p.indexOfElementInScope(defaultScope, a.Form)
                  +				if node == nil || i == -1 || p.oe[i] != node {
                  +					// Ignore the token.
                  +					return true
                  +				}
                  +				p.generateImpliedEndTags()
                  +				p.oe.remove(node)
                  +			}
                  +		case a.P:
                  +			if !p.elementInScope(buttonScope, a.P) {
                  +				p.parseImpliedToken(StartTagToken, a.P, a.P.String())
                  +			}
                  +			p.popUntil(buttonScope, a.P)
                  +		case a.Li:
                  +			p.popUntil(listItemScope, a.Li)
                  +		case a.Dd, a.Dt:
                  +			p.popUntil(defaultScope, p.tok.DataAtom)
                  +		case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:
                  +			p.popUntil(defaultScope, a.H1, a.H2, a.H3, a.H4, a.H5, a.H6)
                  +		case a.A, a.B, a.Big, a.Code, a.Em, a.Font, a.I, a.Nobr, a.S, a.Small, a.Strike, a.Strong, a.Tt, a.U:
                  +			p.inBodyEndTagFormatting(p.tok.DataAtom, p.tok.Data)
                  +		case a.Applet, a.Marquee, a.Object:
                  +			if p.popUntil(defaultScope, p.tok.DataAtom) {
                  +				p.clearActiveFormattingElements()
                  +			}
                  +		case a.Br:
                  +			p.tok.Type = StartTagToken
                  +			return false
                  +		case a.Template:
                  +			return inHeadIM(p)
                  +		default:
                  +			p.inBodyEndTagOther(p.tok.DataAtom, p.tok.Data)
                  +		}
                  +	case CommentToken:
                  +		p.addChild(&Node{
                  +			Type: CommentNode,
                  +			Data: p.tok.Data,
                  +		})
                  +	case ErrorToken:
                  +		// TODO: remove this divergence from the HTML5 spec.
                  +		if len(p.templateStack) > 0 {
                  +			p.im = inTemplateIM
                  +			return false
                  +		}
                  +		for _, e := range p.oe {
                  +			switch e.DataAtom {
                  +			case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc, a.Tbody, a.Td, a.Tfoot, a.Th,
                  +				a.Thead, a.Tr, a.Body, a.Html:
                  +			default:
                  +				return true
                  +			}
                  +		}
                  +	}
                  +
                  +	return true
                  +}
                  +
                  +func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) {
                  +	// This is the "adoption agency" algorithm, described at
                  +	// https://html.spec.whatwg.org/multipage/syntax.html#adoptionAgency
                  +
                  +	// TODO: this is a fairly literal line-by-line translation of that algorithm.
                  +	// Once the code successfully parses the comprehensive test suite, we should
                  +	// refactor this code to be more idiomatic.
                  +
                  +	// Steps 1-2
                  +	if current := p.oe.top(); current.Data == tagName && p.afe.index(current) == -1 {
                  +		p.oe.pop()
                  +		return
                  +	}
                  +
                  +	// Steps 3-5. The outer loop.
                  +	for i := 0; i < 8; i++ {
                  +		// Step 6. Find the formatting element.
                  +		var formattingElement *Node
                  +		for j := len(p.afe) - 1; j >= 0; j-- {
                  +			if p.afe[j].Type == scopeMarkerNode {
                  +				break
                  +			}
                  +			if p.afe[j].DataAtom == tagAtom {
                  +				formattingElement = p.afe[j]
                  +				break
                  +			}
                  +		}
                  +		if formattingElement == nil {
                  +			p.inBodyEndTagOther(tagAtom, tagName)
                  +			return
                  +		}
                  +
                  +		// Step 7. Ignore the tag if formatting element is not in the stack of open elements.
                  +		feIndex := p.oe.index(formattingElement)
                  +		if feIndex == -1 {
                  +			p.afe.remove(formattingElement)
                  +			return
                  +		}
                  +		// Step 8. Ignore the tag if formatting element is not in the scope.
                  +		if !p.elementInScope(defaultScope, tagAtom) {
                  +			// Ignore the tag.
                  +			return
                  +		}
                  +
                  +		// Step 9. This step is omitted because it's just a parse error but no need to return.
                  +
                  +		// Steps 10-11. Find the furthest block.
                  +		var furthestBlock *Node
                  +		for _, e := range p.oe[feIndex:] {
                  +			if isSpecialElement(e) {
                  +				furthestBlock = e
                  +				break
                  +			}
                  +		}
                  +		if furthestBlock == nil {
                  +			e := p.oe.pop()
                  +			for e != formattingElement {
                  +				e = p.oe.pop()
                  +			}
                  +			p.afe.remove(e)
                  +			return
                  +		}
                  +
                  +		// Steps 12-13. Find the common ancestor and bookmark node.
                  +		commonAncestor := p.oe[feIndex-1]
                  +		bookmark := p.afe.index(formattingElement)
                  +
                  +		// Step 14. The inner loop. Find the lastNode to reparent.
                  +		lastNode := furthestBlock
                  +		node := furthestBlock
                  +		x := p.oe.index(node)
                  +		// Step 14.1.
                  +		j := 0
                  +		for {
                  +			// Step 14.2.
                  +			j++
                  +			// Step. 14.3.
                  +			x--
                  +			node = p.oe[x]
                  +			// Step 14.4. Go to the next step if node is formatting element.
                  +			if node == formattingElement {
                  +				break
                  +			}
                  +			// Step 14.5. Remove node from the list of active formatting elements if
                  +			// inner loop counter is greater than three and node is in the list of
                  +			// active formatting elements.
                  +			if ni := p.afe.index(node); j > 3 && ni > -1 {
                  +				p.afe.remove(node)
                  +				// If any element of the list of active formatting elements is removed,
                  +				// we need to take care whether bookmark should be decremented or not.
                  +				// This is because the value of bookmark may exceed the size of the
                  +				// list by removing elements from the list.
                  +				if ni <= bookmark {
                  +					bookmark--
                  +				}
                  +				continue
                  +			}
                  +			// Step 14.6. Continue the next inner loop if node is not in the list of
                  +			// active formatting elements.
                  +			if p.afe.index(node) == -1 {
                  +				p.oe.remove(node)
                  +				continue
                  +			}
                  +			// Step 14.7.
                  +			clone := node.clone()
                  +			p.afe[p.afe.index(node)] = clone
                  +			p.oe[p.oe.index(node)] = clone
                  +			node = clone
                  +			// Step 14.8.
                  +			if lastNode == furthestBlock {
                  +				bookmark = p.afe.index(node) + 1
                  +			}
                  +			// Step 14.9.
                  +			if lastNode.Parent != nil {
                  +				lastNode.Parent.RemoveChild(lastNode)
                  +			}
                  +			node.AppendChild(lastNode)
                  +			// Step 14.10.
                  +			lastNode = node
                  +		}
                  +
                  +		// Step 15. Reparent lastNode to the common ancestor,
                  +		// or for misnested table nodes, to the foster parent.
                  +		if lastNode.Parent != nil {
                  +			lastNode.Parent.RemoveChild(lastNode)
                  +		}
                  +		switch commonAncestor.DataAtom {
                  +		case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:
                  +			p.fosterParent(lastNode)
                  +		default:
                  +			commonAncestor.AppendChild(lastNode)
                  +		}
                  +
                  +		// Steps 16-18. Reparent nodes from the furthest block's children
                  +		// to a clone of the formatting element.
                  +		clone := formattingElement.clone()
                  +		reparentChildren(clone, furthestBlock)
                  +		furthestBlock.AppendChild(clone)
                  +
                  +		// Step 19. Fix up the list of active formatting elements.
                  +		if oldLoc := p.afe.index(formattingElement); oldLoc != -1 && oldLoc < bookmark {
                  +			// Move the bookmark with the rest of the list.
                  +			bookmark--
                  +		}
                  +		p.afe.remove(formattingElement)
                  +		p.afe.insert(bookmark, clone)
                  +
                  +		// Step 20. Fix up the stack of open elements.
                  +		p.oe.remove(formattingElement)
                  +		p.oe.insert(p.oe.index(furthestBlock)+1, clone)
                  +	}
                  +}
                  +
                  +// inBodyEndTagOther performs the "any other end tag" algorithm for inBodyIM.
                  +// "Any other end tag" handling from 12.2.6.5 The rules for parsing tokens in foreign content
                  +// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inforeign
                  +func (p *parser) inBodyEndTagOther(tagAtom a.Atom, tagName string) {
                  +	for i := len(p.oe) - 1; i >= 0; i-- {
                  +		// Two element nodes have the same tag if they have the same Data (a
                  +		// string-typed field). As an optimization, for common HTML tags, each
                  +		// Data string is assigned a unique, non-zero DataAtom (a uint32-typed
                  +		// field), since integer comparison is faster than string comparison.
                  +		// Uncommon (custom) tags get a zero DataAtom.
                  +		//
                  +		// The if condition here is equivalent to (p.oe[i].Data == tagName).
                  +		if (p.oe[i].DataAtom == tagAtom) &&
                  +			((tagAtom != 0) || (p.oe[i].Data == tagName)) {
                  +			p.oe = p.oe[:i]
                  +			break
                  +		}
                  +		if isSpecialElement(p.oe[i]) {
                  +			break
                  +		}
                  +	}
                  +}
                  +
                  +// Section 12.2.6.4.8.
                  +func textIM(p *parser) bool {
                  +	switch p.tok.Type {
                  +	case ErrorToken:
                  +		p.oe.pop()
                  +	case TextToken:
                  +		d := p.tok.Data
                  +		if n := p.oe.top(); n.DataAtom == a.Textarea && n.FirstChild == nil {
                  +			// Ignore a newline at the start of a -->
                  +#errors
                  +(1,10): expected-doctype-but-got-start-tag
                  +(1,39): unexpected-end-tag
                  +#document
                  +| 
                  +|   
                  +|   
                  +|     -->
                  +#errors
                  +(1,10): expected-doctype-but-got-start-tag
                  +#document
                  +| 
                  +|   
                  +|   
                  +|     
                  +#errors
                  +(1,10): expected-doctype-but-got-start-tag
                  +#document
                  +| 
                  +|   
                  +|   
                  +|     
                  +#errors
                  +(1,9): expected-doctype-but-got-end-tag
                  +(1,9): unexpected-end-tag-before-html
                  +(1,13): unexpected-end-tag-before-html
                  +(1,18): unexpected-end-tag-before-html
                  +(1,22): unexpected-end-tag-before-html
                  +(1,26): unexpected-end-tag-before-html
                  +(1,35): unexpected-end-tag-before-html
                  +(1,39): unexpected-end-tag-before-html
                  +(1,47): unexpected-end-tag-before-html
                  +(1,52): unexpected-end-tag-before-html
                  +(1,58): unexpected-end-tag-before-html
                  +(1,64): unexpected-end-tag-before-html
                  +(1,72): unexpected-end-tag-before-html
                  +(1,79): unexpected-end-tag-before-html
                  +(1,88): unexpected-end-tag-before-html
                  +(1,93): unexpected-end-tag-before-html
                  +(1,98): unexpected-end-tag-before-html
                  +(1,103): unexpected-end-tag-before-html
                  +(1,108): unexpected-end-tag-before-html
                  +(1,113): unexpected-end-tag-before-html
                  +(1,118): unexpected-end-tag-before-html
                  +(1,130): unexpected-end-tag-after-body
                  +(1,130): unexpected-end-tag-treated-as
                  +(1,134): unexpected-end-tag
                  +(1,140): unexpected-end-tag
                  +(1,148): unexpected-end-tag
                  +(1,155): unexpected-end-tag
                  +(1,163): unexpected-end-tag
                  +(1,172): unexpected-end-tag
                  +(1,180): unexpected-end-tag
                  +(1,185): unexpected-end-tag
                  +(1,190): unexpected-end-tag
                  +(1,195): unexpected-end-tag
                  +(1,203): unexpected-end-tag
                  +(1,210): unexpected-end-tag
                  +(1,217): unexpected-end-tag
                  +(1,225): unexpected-end-tag
                  +(1,230): unexpected-end-tag
                  +(1,238): unexpected-end-tag
                  +(1,244): unexpected-end-tag
                  +(1,251): unexpected-end-tag
                  +(1,258): unexpected-end-tag
                  +(1,269): unexpected-end-tag
                  +(1,279): unexpected-end-tag
                  +(1,287): unexpected-end-tag
                  +(1,296): unexpected-end-tag
                  +(1,300): unexpected-end-tag
                  +(1,305): unexpected-end-tag
                  +(1,310): unexpected-end-tag
                  +(1,320): unexpected-end-tag
                  +(1,331): unexpected-end-tag
                  +(1,339): unexpected-end-tag
                  +(1,347): unexpected-end-tag
                  +(1,355): unexpected-end-tag
                  +(1,365): end-tag-too-early
                  +(1,378): end-tag-too-early
                  +(1,387): end-tag-too-early
                  +(1,393): end-tag-too-early
                  +(1,399): end-tag-too-early
                  +(1,404): end-tag-too-early
                  +(1,415): end-tag-too-early
                  +(1,425): end-tag-too-early
                  +(1,432): end-tag-too-early
                  +(1,437): end-tag-too-early
                  +(1,442): end-tag-too-early
                  +(1,447): unexpected-end-tag
                  +(1,454): unexpected-end-tag
                  +(1,460): unexpected-end-tag
                  +(1,467): unexpected-end-tag
                  +(1,476): end-tag-too-early
                  +(1,486): end-tag-too-early
                  +(1,495): end-tag-too-early
                  +(1,513): expected-eof-but-got-end-tag
                  +(1,513): unexpected-end-tag
                  +(1,520): unexpected-end-tag
                  +(1,529): unexpected-end-tag
                  +(1,537): unexpected-end-tag
                  +(1,547): unexpected-end-tag
                  +(1,557): unexpected-end-tag
                  +(1,568): unexpected-end-tag
                  +(1,579): unexpected-end-tag
                  +(1,590): unexpected-end-tag
                  +(1,599): unexpected-end-tag
                  +(1,611): unexpected-end-tag
                  +(1,622): unexpected-end-tag
                  +#document
                  +| 
                  +|   
                  +|   
                  +|     
                  +|

                  + +#data +

                  ')
                  +		r.writeLines(w, source, n)
                  +	} else {
                  +		_, _ = w.WriteString("

            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 v0k5cSq?Q`I3z=5x1x`@xAE+#*< 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 JaCD|As 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 z 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/golang.org/x/net/@v/v0.0.0-20210916014120-12bc252f5db8.ziphash b/pkg/mod/cache/download/golang.org/x/net/@v/v0.0.0-20210916014120-12bc252f5db8.ziphash new file mode 100644 index 000000000..b4ce0d1db --- /dev/null +++ b/pkg/mod/cache/download/golang.org/x/net/@v/v0.0.0-20210916014120-12bc252f5db8.ziphash @@ -0,0 +1 @@ +h1:/6y1LfuqNuQdHAm0jjtPtgRcxIxjVZgm5OTu8/QhZvk= \ No newline at end of file diff --git a/pkg/mod/cache/download/golang.org/x/sys/@v/list b/pkg/mod/cache/download/golang.org/x/sys/@v/list new file mode 100644 index 000000000..652865fd2 --- /dev/null +++ b/pkg/mod/cache/download/golang.org/x/sys/@v/list @@ -0,0 +1,2 @@ +v0.0.0-20201119102817-f84b799fce68 +v0.0.0-20210423082822-04245dca01da diff --git a/pkg/mod/cache/download/golang.org/x/sys/@v/v0.0.0-20201119102817-f84b799fce68.mod b/pkg/mod/cache/download/golang.org/x/sys/@v/v0.0.0-20201119102817-f84b799fce68.mod new file mode 100644 index 000000000..b12171fdc --- /dev/null +++ b/pkg/mod/cache/download/golang.org/x/sys/@v/v0.0.0-20201119102817-f84b799fce68.mod @@ -0,0 +1,3 @@ +module golang.org/x/sys + +go 1.12 diff --git a/pkg/mod/cache/download/golang.org/x/sys/@v/v0.0.0-20210423082822-04245dca01da.mod b/pkg/mod/cache/download/golang.org/x/sys/@v/v0.0.0-20210423082822-04245dca01da.mod new file mode 100644 index 000000000..b12171fdc --- /dev/null +++ b/pkg/mod/cache/download/golang.org/x/sys/@v/v0.0.0-20210423082822-04245dca01da.mod @@ -0,0 +1,3 @@ +module golang.org/x/sys + +go 1.12 diff --git a/pkg/mod/cache/download/golang.org/x/term/@v/list b/pkg/mod/cache/download/golang.org/x/term/@v/list new file mode 100644 index 000000000..df2ac0ba1 --- /dev/null +++ b/pkg/mod/cache/download/golang.org/x/term/@v/list @@ -0,0 +1 @@ +v0.0.0-20201126162022-7de9c90e9dd1 diff --git a/pkg/mod/cache/download/golang.org/x/term/@v/v0.0.0-20201126162022-7de9c90e9dd1.mod b/pkg/mod/cache/download/golang.org/x/term/@v/v0.0.0-20201126162022-7de9c90e9dd1.mod new file mode 100644 index 000000000..d45f52851 --- /dev/null +++ b/pkg/mod/cache/download/golang.org/x/term/@v/v0.0.0-20201126162022-7de9c90e9dd1.mod @@ -0,0 +1,5 @@ +module golang.org/x/term + +go 1.11 + +require golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 diff --git a/pkg/mod/cache/download/golang.org/x/text/@v/list b/pkg/mod/cache/download/golang.org/x/text/@v/list new file mode 100644 index 000000000..d379b578a --- /dev/null +++ b/pkg/mod/cache/download/golang.org/x/text/@v/list @@ -0,0 +1 @@ +v0.3.6 diff --git a/pkg/mod/cache/download/golang.org/x/text/@v/v0.3.6.mod b/pkg/mod/cache/download/golang.org/x/text/@v/v0.3.6.mod new file mode 100644 index 000000000..8ff7ecb6f --- /dev/null +++ b/pkg/mod/cache/download/golang.org/x/text/@v/v0.3.6.mod @@ -0,0 +1,5 @@ +module golang.org/x/text + +require golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e + +go 1.11 diff --git a/pkg/mod/cache/download/golang.org/x/tools/@v/list b/pkg/mod/cache/download/golang.org/x/tools/@v/list new file mode 100644 index 000000000..1676b10df --- /dev/null +++ b/pkg/mod/cache/download/golang.org/x/tools/@v/list @@ -0,0 +1 @@ +v0.0.0-20180917221912-90fa682c2a6e diff --git a/pkg/mod/cache/download/golang.org/x/tools/@v/v0.0.0-20180917221912-90fa682c2a6e.mod b/pkg/mod/cache/download/golang.org/x/tools/@v/v0.0.0-20180917221912-90fa682c2a6e.mod new file mode 100644 index 000000000..552f8783c --- /dev/null +++ b/pkg/mod/cache/download/golang.org/x/tools/@v/v0.0.0-20180917221912-90fa682c2a6e.mod @@ -0,0 +1 @@ +module golang.org/x/tools diff --git a/pkg/mod/cache/download/gopkg.in/check.v1/@v/list b/pkg/mod/cache/download/gopkg.in/check.v1/@v/list new file mode 100644 index 000000000..d4c3e4343 --- /dev/null +++ b/pkg/mod/cache/download/gopkg.in/check.v1/@v/list @@ -0,0 +1 @@ +v0.0.0-20161208181325-20d25e280405 diff --git a/pkg/mod/cache/download/gopkg.in/check.v1/@v/v0.0.0-20161208181325-20d25e280405.mod b/pkg/mod/cache/download/gopkg.in/check.v1/@v/v0.0.0-20161208181325-20d25e280405.mod new file mode 100644 index 000000000..7cec6a030 --- /dev/null +++ b/pkg/mod/cache/download/gopkg.in/check.v1/@v/v0.0.0-20161208181325-20d25e280405.mod @@ -0,0 +1 @@ +module gopkg.in/check.v1 diff --git a/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/list b/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/list new file mode 100644 index 000000000..8721bbc46 --- /dev/null +++ b/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/list @@ -0,0 +1 @@ +v2.4.0 diff --git a/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.info b/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.info new file mode 100644 index 000000000..8df9e64d0 --- /dev/null +++ b/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.info @@ -0,0 +1 @@ +{"Version":"v2.4.0","Time":"2020-11-17T15:46:20Z"} \ No newline at end of file diff --git a/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.lock b/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.lock new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.mod b/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.mod new file mode 100644 index 000000000..2cbb85aea --- /dev/null +++ b/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.mod @@ -0,0 +1,5 @@ +module gopkg.in/yaml.v2 + +go 1.15 + +require gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 diff --git a/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.zip b/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..3d41c723ca97a692974695ef047ba52bdc796f05 GIT binary patch literal 81183 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 D$rw`Z literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.ziphash b/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.ziphash new file mode 100644 index 000000000..91a236b93 --- /dev/null +++ b/pkg/mod/cache/download/gopkg.in/yaml.v2/@v/v2.4.0.ziphash @@ -0,0 +1 @@ +h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= \ No newline at end of file diff --git a/pkg/mod/cache/download/gopkg.in/yaml.v3/@v/list b/pkg/mod/cache/download/gopkg.in/yaml.v3/@v/list new file mode 100644 index 000000000..ab6b93918 --- /dev/null +++ b/pkg/mod/cache/download/gopkg.in/yaml.v3/@v/list @@ -0,0 +1,2 @@ +v3.0.0-20200313102051-9f266ea9e77c +v3.0.0-20210107192922-496545a6307b diff --git a/pkg/mod/cache/download/gopkg.in/yaml.v3/@v/v3.0.0-20200313102051-9f266ea9e77c.mod b/pkg/mod/cache/download/gopkg.in/yaml.v3/@v/v3.0.0-20200313102051-9f266ea9e77c.mod new file mode 100644 index 000000000..f407ea321 --- /dev/null +++ b/pkg/mod/cache/download/gopkg.in/yaml.v3/@v/v3.0.0-20200313102051-9f266ea9e77c.mod @@ -0,0 +1,5 @@ +module "gopkg.in/yaml.v3" + +require ( + "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405 +) diff --git a/pkg/mod/cache/download/gopkg.in/yaml.v3/@v/v3.0.0-20210107192922-496545a6307b.mod b/pkg/mod/cache/download/gopkg.in/yaml.v3/@v/v3.0.0-20210107192922-496545a6307b.mod new file mode 100644 index 000000000..f407ea321 --- /dev/null +++ b/pkg/mod/cache/download/gopkg.in/yaml.v3/@v/v3.0.0-20210107192922-496545a6307b.mod @@ -0,0 +1,5 @@ +module "gopkg.in/yaml.v3" + +require ( + "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405 +) diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/!burnt!sushi/toml@v0.4.1 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/!burnt!sushi/toml@v0.4.1 new file mode 100644 index 000000000..f12a2385b --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/!burnt!sushi/toml@v0.4.1 @@ -0,0 +1,9 @@ +6386277 +github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw= +github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= + +go.sum database tree +10367076 +fBTXt8pWUZw478GH68rGELcW+pFvGEUY/iEQL9mU/BU= + +— sum.golang.org Az3gruFEZBicRqOTPD85x9yQmTFD3QYTvuCvJXrt4euSokOHpgzlq7XD7BmnysmQSi3AlPQRSALanx9j6xQ2PSTW6As= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/!puerkito!bio/goquery@v1.8.0 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/!puerkito!bio/goquery@v1.8.0 new file mode 100644 index 000000000..8817ca109 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/!puerkito!bio/goquery@v1.8.0 @@ -0,0 +1,9 @@ +7428479 +github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U= +github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI= + +go.sum database tree +10367335 +zHd3JL3wynQXMhcR2wzzCm6kmRAUzQK3o7kiIG7mPl0= + +— sum.golang.org Az3grmnVqYFN2TFOrHdbxAr3LpbJP+SvXwMlq5l+g6yOt9hU0uP5EokPhh3Ug3NV8TJL3/pz1cjhqGDYSJAIiU+Zpgw= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/abhinav/goldmark-wikilink@v0.3.0 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/abhinav/goldmark-wikilink@v0.3.0 new file mode 100644 index 000000000..2f33f2ca4 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/abhinav/goldmark-wikilink@v0.3.0 @@ -0,0 +1,9 @@ +3467230 +github.com/abhinav/goldmark-wikilink v0.3.0 h1:ry8CBaULn410PKCSkwLz/WVI2f/g7EB+yqY7LKHDcPQ= +github.com/abhinav/goldmark-wikilink v0.3.0/go.mod h1:MHRZiLRE1ZDZDjHCFYwKEEgITXGbB7N0Yr00dbmfHM8= + +go.sum database tree +10367586 +392S2hhc8e66YbVx153qW7Lx+E2+pa1TFIaTVYvyp8Q= + +— sum.golang.org Az3grsf5OXXz1jOoGFAUz1IT2cys8hkxESXHxiqUN2w6V5nSwac7qtCI8YxPLDhG1Irc3s0yNPAeBI1j9FX0VhHm1Qs= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/andybalholm/cascadia@v1.3.1 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/andybalholm/cascadia@v1.3.1 new file mode 100644 index 000000000..270af00d1 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/andybalholm/cascadia@v1.3.1 @@ -0,0 +1,9 @@ +7023271 +github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= +github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= + +go.sum database tree +10367336 +LdTyiFDFPefLG+tOlARecrNkZ3hwkyVT7jj9RnhNF6k= + +— sum.golang.org Az3grmKjos63FwkvyAFh4YmMMzsU9K7F2964W2I9rfaZpRX91Y+1yYrrFWkaW5GVy2McGLGlAwkPHvPD72h34s71SQI= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/davecgh/go-spew@v1.1.0 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/davecgh/go-spew@v1.1.0 new file mode 100644 index 000000000..ef691908c --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/davecgh/go-spew@v1.1.0 @@ -0,0 +1,9 @@ +422 +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= + +go.sum database tree +10366527 +/ZwiTbszhwURiQd6o24JUcHrCsY1XfYgPPlb46p7Mz4= + +— sum.golang.org Az3gruSS/D+tGi1hhQxgupq7zVHQ8y1CotijyujHD5ZSxv4x0CU1n8hpDTcH9vviSTpQ4cgP/zA+7uAZbEgOkVZrzAw= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a new file mode 100644 index 000000000..20601ceb7 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/gernest/front@v0.0.0-20210301115436-8a0b0a782d0a @@ -0,0 +1,9 @@ +3113885 +github.com/gernest/front v0.0.0-20210301115436-8a0b0a782d0a h1:z7BePknRd4Nz3CeWDhcmCkuCliM2YY/RnjWpdPUuQQo= +github.com/gernest/front v0.0.0-20210301115436-8a0b0a782d0a/go.mod h1:FwEMwQ5+xky8tbzDLj72k2RAqXnFByLNwxg+9UZDtqU= + +go.sum database tree +10367586 +392S2hhc8e66YbVx153qW7Lx+E2+pa1TFIaTVYvyp8Q= + +— sum.golang.org Az3grsf5OXXz1jOoGFAUz1IT2cys8hkxESXHxiqUN2w6V5nSwac7qtCI8YxPLDhG1Irc3s0yNPAeBI1j9FX0VhHm1Qs= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3 new file mode 100644 index 000000000..45d04223e --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/jackyzha0/hugo-obsidian@v0.0.0-20220403030921-3ce308411ee3 @@ -0,0 +1,9 @@ +9963028 +github.com/jackyzha0/hugo-obsidian v0.0.0-20220403030921-3ce308411ee3 h1:MovdN2bkRb6YEAYarv6yNsKhSIYiI9FAeKhDcBwPvak= +github.com/jackyzha0/hugo-obsidian v0.0.0-20220403030921-3ce308411ee3/go.mod h1:qwvdGfxIYQnKtH4WTfmpY1TRbg8iP0La3vLZv+HFCac= + +go.sum database tree +10367586 +392S2hhc8e66YbVx153qW7Lx+E2+pa1TFIaTVYvyp8Q= + +— sum.golang.org Az3grsf5OXXz1jOoGFAUz1IT2cys8hkxESXHxiqUN2w6V5nSwac7qtCI8YxPLDhG1Irc3s0yNPAeBI1j9FX0VhHm1Qs= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/pmezard/go-difflib@v1.0.0 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/pmezard/go-difflib@v1.0.0 new file mode 100644 index 000000000..a0cad9f6d --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/pmezard/go-difflib@v1.0.0 @@ -0,0 +1,9 @@ +176 +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= + +go.sum database tree +10366483 +AhWglonbLKdjQk3nlFitHzslyX104PH20Ox5t4tMt4w= + +— sum.golang.org Az3grrEHhC/Ilb4GA14FapMo4qjLKMv8Ln/o2vqeq+zftYi8ZQsPv4PZ04YfhShmXOjMC2A3SofV5eFlWnpsn7oRPQI= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/stretchr/objx@v0.1.0 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/stretchr/objx@v0.1.0 new file mode 100644 index 000000000..1f950caea --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/stretchr/objx@v0.1.0 @@ -0,0 +1,9 @@ +574 +github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= + +go.sum database tree +10366527 +/ZwiTbszhwURiQd6o24JUcHrCsY1XfYgPPlb46p7Mz4= + +— sum.golang.org Az3gruSS/D+tGi1hhQxgupq7zVHQ8y1CotijyujHD5ZSxv4x0CU1n8hpDTcH9vviSTpQ4cgP/zA+7uAZbEgOkVZrzAw= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/stretchr/testify@v1.7.0 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/stretchr/testify@v1.7.0 new file mode 100644 index 000000000..b540ab7db --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/stretchr/testify@v1.7.0 @@ -0,0 +1,9 @@ +2491589 +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= + +go.sum database tree +10366508 +/bhzJE60Ob5XPe3lotCVp+AtGBuBdUHlpEeuI5cjvrQ= + +— sum.golang.org Az3gro0Pc5p09PfqjKbgB3/kMbc0+ECPbGVCyDZ4p4KBo13S4s++SN7kbUzy2w27oM6lk959CErb6n+a93Qxt1A4ggA= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/yuin/goldmark@v1.1.32 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/yuin/goldmark@v1.1.32 new file mode 100644 index 000000000..d9c25af49 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/yuin/goldmark@v1.1.32 @@ -0,0 +1,9 @@ +1275590 +github.com/yuin/goldmark v1.1.32 h1:5tjfNdR2ki3yYQ842+eX2sQHeiwpKJ0RnHO4IYOc4V8= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= + +go.sum database tree +10367391 +7NjWyvuUUy7aBF3K407v2/iQqkx2/QO00Sc30fR2YoQ= + +— sum.golang.org Az3grtZEZHZN3hef9ZUOGzZOpBi7hzvTjtUvo4Fcd/xkdn0GFrPlaK7zGuCImMC4pxPoDKQpIeftbHJOBMkEaseHGgY= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/yuin/goldmark@v1.4.4 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/yuin/goldmark@v1.4.4 new file mode 100644 index 000000000..2e731e369 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/yuin/goldmark@v1.4.4 @@ -0,0 +1,9 @@ +7892938 +github.com/yuin/goldmark v1.4.4 h1:zNWRjYUW32G9KirMXYHQHVNFkXvMI7LpgNW2AgYAoIs= +github.com/yuin/goldmark v1.4.4/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg= + +go.sum database tree +10367586 +392S2hhc8e66YbVx153qW7Lx+E2+pa1TFIaTVYvyp8Q= + +— sum.golang.org Az3grsf5OXXz1jOoGFAUz1IT2cys8hkxESXHxiqUN2w6V5nSwac7qtCI8YxPLDhG1Irc3s0yNPAeBI1j9FX0VhHm1Qs= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8 new file mode 100644 index 000000000..82f308904 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8 @@ -0,0 +1,9 @@ +6939558 +golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 h1:/6y1LfuqNuQdHAm0jjtPtgRcxIxjVZgm5OTu8/QhZvk= +golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= + +go.sum database tree +10367586 +392S2hhc8e66YbVx153qW7Lx+E2+pa1TFIaTVYvyp8Q= + +— sum.golang.org Az3grsf5OXXz1jOoGFAUz1IT2cys8hkxESXHxiqUN2w6V5nSwac7qtCI8YxPLDhG1Irc3s0yNPAeBI1j9FX0VhHm1Qs= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/sys@v0.0.0-20201119102817-f84b799fce68 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/sys@v0.0.0-20201119102817-f84b799fce68 new file mode 100644 index 000000000..9b4837849 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/sys@v0.0.0-20201119102817-f84b799fce68 @@ -0,0 +1,9 @@ +1855921 +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + +go.sum database tree +10366484 +OcdWiwqlXv1VUyE0swSKUmtFLmjeNoR7IikUDxFWpe4= + +— sum.golang.org Az3groPvmRS89Po8ktR/N1Tdm/qVTxGWqXRhdC6fxZhfaoKraLmBz1p6okQL1dLjGLuOMH0gy5jINfESCGJF2Dz0wQw= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/sys@v0.0.0-20210423082822-04245dca01da b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/sys@v0.0.0-20210423082822-04245dca01da new file mode 100644 index 000000000..b8ae86a5d --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/sys@v0.0.0-20210423082822-04245dca01da @@ -0,0 +1,9 @@ +3968026 +golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + +go.sum database tree +10366484 +OcdWiwqlXv1VUyE0swSKUmtFLmjeNoR7IikUDxFWpe4= + +— sum.golang.org Az3groPvmRS89Po8ktR/N1Tdm/qVTxGWqXRhdC6fxZhfaoKraLmBz1p6okQL1dLjGLuOMH0gy5jINfESCGJF2Dz0wQw= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1 new file mode 100644 index 000000000..13a38c6a6 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1 @@ -0,0 +1,9 @@ +1928783 +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= + +go.sum database tree +10368238 +bI47ic/mwqP9S2NlYi+rtp3ZKoM2SWebhY74D/A6Pxc= + +— sum.golang.org Az3grpBPnh7HeBSWxT7xHj3v7XR9rAdSZ6+gHeq7MH/+yCQtfAT6jkeudljxFmS4NfePB5sZjeSfnQaXm3k+hgcPogo= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/text@v0.3.6 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/text@v0.3.6 new file mode 100644 index 000000000..2cf93999b --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/text@v0.3.6 @@ -0,0 +1,9 @@ +3563748 +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= + +go.sum database tree +10366484 +OcdWiwqlXv1VUyE0swSKUmtFLmjeNoR7IikUDxFWpe4= + +— sum.golang.org Az3groPvmRS89Po8ktR/N1Tdm/qVTxGWqXRhdC6fxZhfaoKraLmBz1p6okQL1dLjGLuOMH0gy5jINfESCGJF2Dz0wQw= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e new file mode 100644 index 000000000..d71f1fa2c --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e @@ -0,0 +1,9 @@ +1175 +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e h1:FDhOuMEY4JVRztM/gsbk+IKUQ8kj74bxZrgw87eMMVc= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= + +go.sum database tree +10366484 +OcdWiwqlXv1VUyE0swSKUmtFLmjeNoR7IikUDxFWpe4= + +— sum.golang.org Az3groPvmRS89Po8ktR/N1Tdm/qVTxGWqXRhdC6fxZhfaoKraLmBz1p6okQL1dLjGLuOMH0gy5jINfESCGJF2Dz0wQw= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405 new file mode 100644 index 000000000..1d3e51312 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405 @@ -0,0 +1,9 @@ +409 +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= + +go.sum database tree +10366527 +/ZwiTbszhwURiQd6o24JUcHrCsY1XfYgPPlb46p7Mz4= + +— sum.golang.org Az3gruSS/D+tGi1hhQxgupq7zVHQ8y1CotijyujHD5ZSxv4x0CU1n8hpDTcH9vviSTpQ4cgP/zA+7uAZbEgOkVZrzAw= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v2@v2.4.0 b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v2@v2.4.0 new file mode 100644 index 000000000..2d90912cc --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v2@v2.4.0 @@ -0,0 +1,9 @@ +1908176 +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= + +go.sum database tree +10366508 +/bhzJE60Ob5XPe3lotCVp+AtGBuBdUHlpEeuI5cjvrQ= + +— sum.golang.org Az3gro0Pc5p09PfqjKbgB3/kMbc0+ECPbGVCyDZ4p4KBo13S4s++SN7kbUzy2w27oM6lk959CErb6n+a93Qxt1A4ggA= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c new file mode 100644 index 000000000..6cd11ae24 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c @@ -0,0 +1,9 @@ +867903 +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= + +go.sum database tree +10366505 +Cttq1EagdqcNMo6B3i59dh7Jdwfc6wkMh4lzUZaa1Gw= + +— sum.golang.org Az3grjYRhZWeuFxm/oYe63WUsSQLGMR7wG4X7wuh1H8jevDOyMDLSODH5ULCwF5VR5LbdnmIwERuq5+Aatw7L+VnkgI= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b new file mode 100644 index 000000000..ec3afe7c1 --- /dev/null +++ b/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b @@ -0,0 +1,9 @@ +2423492 +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= + +go.sum database tree +10367442 +dqXRoYiLpsGB7yjKIZCReHQ4hu0YHP8zpY3bh3QFPQo= + +— sum.golang.org Az3grupKQx6fufBPRFpSt4fCNM1+sECVXpChP3VM8Rf/a8iTgQi89D9sdk/nOfVk/yTXugIBUqLO7bKxtqAwMIaBbQM= diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/000 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/000 new file mode 100644 index 0000000000000000000000000000000000000000..2a373459bb07ee55a648a63d1aa84fbd662d0721 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/002 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/002 new file mode 100644 index 0000000000000000000000000000000000000000..57e89610989500a855c0936c0b8fbd66c9503147 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/004 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/004 new file mode 100644 index 0000000000000000000000000000000000000000..bda471a18f6833342757adae753d97f1903c0018 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x003/390 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x003/390 new file mode 100644 index 0000000000000000000000000000000000000000..72b81813e77b4863526ab68164cc8f63dac141bc GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x004/982 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x004/982 new file mode 100644 index 0000000000000000000000000000000000000000..bbdea9a8da916a33a4e4caafb8e6d9fdbca619d3 GIT binary patch literal 8192 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 mqN|2&=CH=;xDrq^E7wz@U{J$Vc;}fO; literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x007/249 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x007/249 new file mode 100644 index 0000000000000000000000000000000000000000..a794ccfb21c1d376a2b9c8c1ee7804d7e0b5bf0f GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x007/453 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x007/453 new file mode 100644 index 0000000000000000000000000000000000000000..f523e27618662df6bacec96d11c37bcb28fa4ba1 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x007/534 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x007/534 new file mode 100644 index 0000000000000000000000000000000000000000..4cbb5d5a14f85a6017ba80b52b9a8031dfb6de3f GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x013/920 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x013/920 new file mode 100644 index 0000000000000000000000000000000000000000..8e3ebf662990072af828aeb1ebc92f8076bb1e98 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x015/500 b/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x015/500 new file mode 100644 index 0000000000000000000000000000000000000000..18fc656b144fda46e23fda0b517b4fed1f93541c GIT binary patch literal 8192 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

          -

          {{ .Site.Data.config.page_title }}

          +

          {{ .Site.Data.config.page_title }}

          Search IconIcon to open search
          {{partial "darkmode.html" .}} @@ -15,7 +15,7 @@
          {{if .Title}}

          {{ .Title }}

          {{end}}

          - Last updated {{if ne .Date .Lastmod}}{{ .Lastmod.Format "January 2, 2006" }}{{else}}Unknown{{end}} + Ostatnia aktualizacja: {{if ne .Date .Lastmod}} {{ .Lastmod.Format "02/01/2006" }}{{else}} nieznana {{end}}

            {{ range (.GetTerms "tags") }} diff --git a/layouts/index.html b/layouts/index.html index ee33d7cc8..51c69ea46 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -1,7 +1,6 @@ {{ partial "head.html" . }} - {{partial "search.html" .}}
            diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 6d4ef17b9..317372d24 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -8,4 +8,22 @@
        3. +#errors +(1,7): expected-doctype-but-got-start-tag +(1,20): unexpected-end-tag-implies-table-voodoo +(1,20): unexpected-end-tag +(1,24): unexpected-end-tag-implies-table-voodoo +(1,24): unexpected-end-tag +(1,29): unexpected-end-tag-implies-table-voodoo +(1,29): unexpected-end-tag +(1,33): unexpected-end-tag-implies-table-voodoo +(1,33): unexpected-end-tag +(1,37): unexpected-end-tag-implies-table-voodoo +(1,37): unexpected-end-tag +(1,46): unexpected-end-tag-implies-table-voodoo +(1,46): unexpected-end-tag +(1,50): unexpected-end-tag-implies-table-voodoo +(1,50): unexpected-end-tag +(1,58): unexpected-end-tag-implies-table-voodoo +(1,58): unexpected-end-tag +(1,63): unexpected-end-tag-implies-table-voodoo +(1,63): unexpected-end-tag +(1,69): unexpected-end-tag-implies-table-voodoo +(1,69): end-tag-too-early +(1,75): unexpected-end-tag-implies-table-voodoo +(1,75): unexpected-end-tag +(1,83): unexpected-end-tag-implies-table-voodoo +(1,83): unexpected-end-tag +(1,90): unexpected-end-tag-implies-table-voodoo +(1,90): unexpected-end-tag +(1,99): unexpected-end-tag-implies-table-voodoo +(1,99): unexpected-end-tag +(1,104): unexpected-end-tag-implies-table-voodoo +(1,104): end-tag-too-early +(1,109): unexpected-end-tag-implies-table-voodoo +(1,109): end-tag-too-early +(1,114): unexpected-end-tag-implies-table-voodoo +(1,114): end-tag-too-early +(1,119): unexpected-end-tag-implies-table-voodoo +(1,119): end-tag-too-early +(1,124): unexpected-end-tag-implies-table-voodoo +(1,124): end-tag-too-early +(1,129): unexpected-end-tag-implies-table-voodoo +(1,129): end-tag-too-early +(1,136): unexpected-end-tag-in-table-row +(1,141): unexpected-end-tag-implies-table-voodoo +(1,141): unexpected-end-tag-treated-as +(1,145): unexpected-end-tag-implies-table-voodoo +(1,145): unexpected-end-tag +(1,151): unexpected-end-tag-implies-table-voodoo +(1,151): unexpected-end-tag +(1,159): unexpected-end-tag-implies-table-voodoo +(1,159): unexpected-end-tag +(1,166): unexpected-end-tag-implies-table-voodoo +(1,166): unexpected-end-tag +(1,174): unexpected-end-tag-implies-table-voodoo +(1,174): unexpected-end-tag +(1,183): unexpected-end-tag-implies-table-voodoo +(1,183): unexpected-end-tag +(1,196): unexpected-end-tag +(1,201): unexpected-end-tag +(1,206): unexpected-end-tag +(1,214): unexpected-end-tag +(1,221): unexpected-end-tag +(1,228): unexpected-end-tag +(1,236): unexpected-end-tag +(1,241): unexpected-end-tag +(1,249): unexpected-end-tag +(1,255): unexpected-end-tag +(1,262): unexpected-end-tag +(1,269): unexpected-end-tag +(1,280): unexpected-end-tag +(1,290): unexpected-end-tag +(1,298): unexpected-end-tag +(1,307): unexpected-end-tag +(1,311): unexpected-end-tag +(1,316): unexpected-end-tag +(1,321): unexpected-end-tag +(1,331): unexpected-end-tag +(1,342): unexpected-end-tag +(1,350): unexpected-end-tag +(1,358): unexpected-end-tag +(1,366): unexpected-end-tag +(1,376): end-tag-too-early +(1,389): end-tag-too-early +(1,398): end-tag-too-early +(1,404): end-tag-too-early +(1,410): end-tag-too-early +(1,415): end-tag-too-early +(1,426): end-tag-too-early +(1,436): end-tag-too-early +(1,443): end-tag-too-early +(1,448): end-tag-too-early +(1,453): end-tag-too-early +(1,458): unexpected-end-tag +(1,465): unexpected-end-tag +(1,471): unexpected-end-tag +(1,478): unexpected-end-tag +(1,487): end-tag-too-early +(1,497): end-tag-too-early +(1,506): end-tag-too-early +(1,524): expected-eof-but-got-end-tag +(1,524): unexpected-end-tag +(1,531): unexpected-end-tag +(1,540): unexpected-end-tag +(1,548): unexpected-end-tag +(1,558): unexpected-end-tag +(1,568): unexpected-end-tag +(1,579): unexpected-end-tag +(1,590): unexpected-end-tag +(1,601): unexpected-end-tag +(1,610): unexpected-end-tag +(1,622): unexpected-end-tag +(1,633): unexpected-end-tag +#document +| +| +| +|
          +| +| +| +|

          + +#data + +#errors +(1,10): expected-doctype-but-got-start-tag +(1,10): eof-in-frameset +#document +| +| +| diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests10.dat b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests10.dat new file mode 100644 index 000000000..f84e2d546 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests10.dat @@ -0,0 +1,849 @@ +#data + +#errors +#document +| +| +| +| +| + +#data +a +#errors +(1,28) expected-dashes-or-doctype +#new-errors +(1:35) cdata-in-html-content +#document +| +| +| +| +| +| + +#data + +#errors +#document +| +| +| +| +| + +#data + +#errors +(1,34) unexpected-start-tag-in-select +(1,40) unexpected-end-tag-in-select +#document +| +| +| +| +| +#errors +(1,42) unexpected-start-tag-in-select +(1,48) unexpected-end-tag-in-select +#document +| +| +| +| +|

          +#errors +(1,33) foster-parenting-start-tag +#document +| +| +| +| +| +| + +#data +
          foo
          +#errors +(1,33) foster-parenting-start-tag +#document +| +| +| +| +| +| +| "foo" +| + +#data +
          foobar
          +#errors +(1,33) foster-parenting-start-tag +#document +| +| +| +| +| +| +| "foo" +| +| "bar" +| + +#data +
          foobar
          +#errors +(1,40) foster-parenting-start-tag +#document +| +| +| +| +| +| +| "foo" +| +| "bar" +| +| + +#data +
          foobar
          +#errors +(1,44) foster-parenting-start-tag +#document +| +| +| +| +| +| +| "foo" +| +| "bar" +| +| +| + +#data +
          foobar
          +#errors +#document +| +| +| +| +| +| +| +|
          +| +| +| "foo" +| +| "bar" + +#data +
          foobar

          baz

          +#errors +#document +| +| +| +| +| +| +| +|
          +| +| +| "foo" +| +| "bar" +|

          +| "baz" + +#data +
          foobar

          baz

          +#errors +#document +| +| +| +| +| +|
          +| +| +| "foo" +| +| "bar" +|

          +| "baz" + +#data +
          foobar

          baz

          quux +#errors +(1,65) unexpected-html-element-in-foreign-content +#document +| +| +| +| +| +|
          +| +| +| "foo" +| +| "bar" +|

          +| "baz" +|

          +| "quux" + +#data +
          foobarbaz

          quux +#errors +(1,73) unexpected-end-tag +(1,73) expected-one-end-tag-but-got-another +#document +| +| +| +| +| +|
          +| +| +| "foo" +| +| "bar" +| "baz" +|

          +| "quux" + +#data +foobar

          baz

          quux +#errors +(1,43) foster-parenting-start-tag svg +(1,66) unexpected HTML-like start tag token in foreign content +(1,66) foster-parenting-start-tag +(1,67) foster-parenting-character +(1,68) foster-parenting-character +(1,69) foster-parenting-character +#document +| +| +| +| +| +| +| "foo" +| +| "bar" +|

          +| "baz" +| +| +|

          +| "quux" + +#data +

          quux +#errors +(1,49) unexpected-start-tag-in-select +(1,52) unexpected-start-tag-in-select +(1,59) unexpected-end-tag-in-select +(1,62) unexpected-start-tag-in-select +(1,69) unexpected-end-tag-in-select +(1,72) unexpected-start-tag-in-select +(1,83) unexpected-table-element-end-tag-in-select-in-table +#document +| +| +| +| +| +| +| +|
          +|

          quux +#errors +(1,36) unexpected-start-tag-implies-table-voodoo +(1,41) unexpected-start-tag-in-select +(1,44) unexpected-start-tag-in-select +(1,51) unexpected-end-tag-in-select +(1,54) unexpected-start-tag-in-select +(1,61) unexpected-end-tag-in-select +(1,64) unexpected-start-tag-in-select +(1,75) unexpected-table-element-end-tag-in-select-in-table +#document +| +| +| +| +| +|

          +| "quux" + +#data +foobar

          baz +#errors +(1,40) expected-eof-but-got-start-tag +(1,63) unexpected-html-element-in-foreign-content +#document +| +| +| +| +| +| +| "foo" +| +| "bar" +|

          +| "baz" + +#data +foobar

          baz +#errors +(1,33) unexpected-start-tag-after-body +(1,56) unexpected-html-element-in-foreign-content +#document +| +| +| +| +| +| +| "foo" +| +| "bar" +|

          +| "baz" + +#data +

          +#errors +(1,30) unexpected-start-tag-in-frameset +(1,33) unexpected-start-tag-in-frameset +(1,37) unexpected-end-tag-in-frameset +(1,40) unexpected-start-tag-in-frameset +(1,44) unexpected-end-tag-in-frameset +(1,47) unexpected-start-tag-in-frameset +(1,53) unexpected-start-tag-in-frameset +(1,53) eof-in-frameset +#document +| +| +| +| + +#data +

          +#errors +(1,41) unexpected-start-tag-after-frameset +(1,44) unexpected-start-tag-after-frameset +(1,48) unexpected-end-tag-after-frameset +(1,51) unexpected-start-tag-after-frameset +(1,55) unexpected-end-tag-after-frameset +(1,58) unexpected-start-tag-after-frameset +(1,64) unexpected-start-tag-after-frameset +#document +| +| +| +| + +#data + +#errors +#document +| +| +| +| +| xlink:href="foo" +| +| xlink href="foo" + +#data + +#errors +#document +| +| +| +| +| xlink:href="foo" +| xml:lang="en" +| +| +| xlink href="foo" +| xml lang="en" + +#data + +#errors +#document +| +| +| +| +| xlink:href="foo" +| xml:lang="en" +| +| +| xlink href="foo" +| xml lang="en" + +#data +bar +#errors +#document +| +| +| +| +| xlink:href="foo" +| xml:lang="en" +| +| +| xlink href="foo" +| xml lang="en" +| "bar" + +#data + +#errors +(1,5) expected-doctype-but-got-start-tag +(1,12) unexpected-end-tag +(1,12) unexpected-end-tag +(1,12) expected-closing-tag-but-got-eof +#document +| +| +| +| + +#data +

          a +#errors +(1,5) expected-doctype-but-got-start-tag +(1,16) unexpected-end-tag +(1,16) end-tag-too-early +#document +| +| +| +|
          +| +| "a" + +#data +
          a +#errors +(1,5) expected-doctype-but-got-start-tag +(1,22) unexpected-end-tag +(1,22) end-tag-too-early +#document +| +| +| +|
          +| +| +| "a" + +#data +
          +#errors +(1,5) expected-doctype-but-got-start-tag +(1,22) unexpected-end-tag +(1,28) expected-closing-tag-but-got-eof +#document +| +| +| +|
          +| +| +| + +#data +
          a +#errors +(1,5) expected-doctype-but-got-start-tag +(1,43) unexpected-end-tag +(1,43) end-tag-too-early +(1,44) expected-closing-tag-but-got-eof +#document +| +| +| +|
          +| +| +| +| +| "a" + +#data +

          a +#errors +(1,5) expected-doctype-but-got-start-tag +(1,40) end-tag-too-early +(1,41) expected-closing-tag-but-got-eof +#document +| +| +| +|

          +| +| +| +|

          +| "a" + +#data +
            a +#errors +(1,40) unexpected-html-element-in-foreign-content +(1,41) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| +|
            +| +|
              +| "a" + +#data +
                a +#errors +(1,35) unexpected-html-element-in-foreign-content +(1,36) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| +| +|
                  +| "a" + +#data +

                  +#errors +(1,32) expected-closing-tag-but-got-eof +#document +| +| +| +| +|

                  +| +| +|

                  + +#data +

                  +#errors +(1,33) expected-closing-tag-but-got-eof +#document +| +| +| +| +|

                  +| +| +|

                  + +#data +

                  +#errors +(1,5) expected-doctype-but-got-start-tag +(1,50) unexpected-end-tag +(1,53) expected-closing-tag-but-got-eof +#document +| +| +| +|

                  +| +| +| +|

                  +|

                  + +#data +
                  +#errors +(1,6) expected-doctype-but-got-start-tag +(1,71) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +|
                  +| +|
                  +| +| + +#data +
                  +#errors +(1,6) expected-doctype-but-got-start-tag +(1,83) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| +| +|
                  +|
                  +| + +#data + +#errors +(1,5) expected-doctype-but-got-start-tag +(1,28) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| + +#data +

          +#errors +(1,7) expected-doctype-but-got-start-tag +(1,12) unexpected-start-tag-implies-table-voodoo +(1,22) eof-in-table +#document +| +| +| +| +|
          +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,18) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,22) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,18) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,22) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,18) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,22) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,18) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,22) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,21) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,25) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,54) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| +| + +#data +
          +#errors +(1,6) expected-doctype-but-got-start-tag +(1,144) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| +| +|
          +| +| +| +| +| + +#data + +#errors +(1,6) expected-doctype-but-got-start-tag +(1,153) expected-closing-tag-but-got-eof +#document +| +| +| +| +| +| +| +| +| +| +| +| +| +| diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests11.dat b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests11.dat new file mode 100644 index 000000000..b9901e79e --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests11.dat @@ -0,0 +1,523 @@ +#data + +#errors +#document +| +| +| +| +| +| attributeName="" +| attributeType="" +| baseFrequency="" +| baseProfile="" +| calcMode="" +| clipPathUnits="" +| diffuseConstant="" +| edgeMode="" +| filterUnits="" +| glyphRef="" +| gradientTransform="" +| gradientUnits="" +| kernelMatrix="" +| kernelUnitLength="" +| keyPoints="" +| keySplines="" +| keyTimes="" +| lengthAdjust="" +| limitingConeAngle="" +| markerHeight="" +| markerUnits="" +| markerWidth="" +| maskContentUnits="" +| maskUnits="" +| numOctaves="" +| pathLength="" +| patternContentUnits="" +| patternTransform="" +| patternUnits="" +| pointsAtX="" +| pointsAtY="" +| pointsAtZ="" +| preserveAlpha="" +| preserveAspectRatio="" +| primitiveUnits="" +| refX="" +| refY="" +| repeatCount="" +| repeatDur="" +| requiredExtensions="" +| requiredFeatures="" +| specularConstant="" +| specularExponent="" +| spreadMethod="" +| startOffset="" +| stdDeviation="" +| stitchTiles="" +| surfaceScale="" +| systemLanguage="" +| tableValues="" +| targetX="" +| targetY="" +| textLength="" +| viewBox="" +| viewTarget="" +| xChannelSelector="" +| yChannelSelector="" +| zoomAndPan="" + +#data + +#errors +#document +| +| +| +| +| +| attributeName="" +| attributeType="" +| baseFrequency="" +| baseProfile="" +| calcMode="" +| clipPathUnits="" +| diffuseConstant="" +| edgeMode="" +| filterUnits="" +| glyphRef="" +| gradientTransform="" +| gradientUnits="" +| kernelMatrix="" +| kernelUnitLength="" +| keyPoints="" +| keySplines="" +| keyTimes="" +| lengthAdjust="" +| limitingConeAngle="" +| markerHeight="" +| markerUnits="" +| markerWidth="" +| maskContentUnits="" +| maskUnits="" +| numOctaves="" +| pathLength="" +| patternContentUnits="" +| patternTransform="" +| patternUnits="" +| pointsAtX="" +| pointsAtY="" +| pointsAtZ="" +| preserveAlpha="" +| preserveAspectRatio="" +| primitiveUnits="" +| refX="" +| refY="" +| repeatCount="" +| repeatDur="" +| requiredExtensions="" +| requiredFeatures="" +| specularConstant="" +| specularExponent="" +| spreadMethod="" +| startOffset="" +| stdDeviation="" +| stitchTiles="" +| surfaceScale="" +| systemLanguage="" +| tableValues="" +| targetX="" +| targetY="" +| textLength="" +| viewBox="" +| viewTarget="" +| xChannelSelector="" +| yChannelSelector="" +| zoomAndPan="" + +#data + +#errors +#document +| +| +| +| +| +| attributeName="" +| attributeType="" +| baseFrequency="" +| baseProfile="" +| calcMode="" +| clipPathUnits="" +| diffuseConstant="" +| edgeMode="" +| filterUnits="" +| filterres="" +| glyphRef="" +| gradientTransform="" +| gradientUnits="" +| kernelMatrix="" +| kernelUnitLength="" +| keyPoints="" +| keySplines="" +| keyTimes="" +| lengthAdjust="" +| limitingConeAngle="" +| markerHeight="" +| markerUnits="" +| markerWidth="" +| maskContentUnits="" +| maskUnits="" +| numOctaves="" +| pathLength="" +| patternContentUnits="" +| patternTransform="" +| patternUnits="" +| pointsAtX="" +| pointsAtY="" +| pointsAtZ="" +| preserveAlpha="" +| preserveAspectRatio="" +| primitiveUnits="" +| refX="" +| refY="" +| repeatCount="" +| repeatDur="" +| requiredExtensions="" +| requiredFeatures="" +| specularConstant="" +| specularExponent="" +| spreadMethod="" +| startOffset="" +| stdDeviation="" +| stitchTiles="" +| surfaceScale="" +| systemLanguage="" +| tableValues="" +| targetX="" +| targetY="" +| textLength="" +| viewBox="" +| viewTarget="" +| xChannelSelector="" +| yChannelSelector="" +| zoomAndPan="" + +#data + +#errors +#document +| +| +| +| +| +| attributename="" +| attributetype="" +| basefrequency="" +| baseprofile="" +| calcmode="" +| clippathunits="" +| diffuseconstant="" +| edgemode="" +| filterunits="" +| glyphref="" +| gradienttransform="" +| gradientunits="" +| kernelmatrix="" +| kernelunitlength="" +| keypoints="" +| keysplines="" +| keytimes="" +| lengthadjust="" +| limitingconeangle="" +| markerheight="" +| markerunits="" +| markerwidth="" +| maskcontentunits="" +| maskunits="" +| numoctaves="" +| pathlength="" +| patterncontentunits="" +| patterntransform="" +| patternunits="" +| pointsatx="" +| pointsaty="" +| pointsatz="" +| preservealpha="" +| preserveaspectratio="" +| primitiveunits="" +| refx="" +| refy="" +| repeatcount="" +| repeatdur="" +| requiredextensions="" +| requiredfeatures="" +| specularconstant="" +| specularexponent="" +| spreadmethod="" +| startoffset="" +| stddeviation="" +| stitchtiles="" +| surfacescale="" +| systemlanguage="" +| tablevalues="" +| targetx="" +| targety="" +| textlength="" +| viewbox="" +| viewtarget="" +| xchannelselector="" +| ychannelselector="" +| zoomandpan="" + +#data + +#errors +#document +| +| +| +| +| +| contentscripttype="" +| contentstyletype="" +| externalresourcesrequired="" +| filterres="" + +#data + +#errors +#document +| +| +| +| +| +| contentscripttype="" +| contentstyletype="" +| externalresourcesrequired="" +| filterres="" + +#data + +#errors +#document +| +| +| +| +| +| contentscripttype="" +| contentstyletype="" +| externalresourcesrequired="" +| filterres="" + +#data + +#errors +#document +| +| +| +| +| +| contentscripttype="" +| contentstyletype="" +| externalresourcesrequired="" +| filterres="" + +#data + +#errors +#document +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| + +#data + +#errors +#document +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| + +#data + +#errors +#document +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| + +#data + +#errors +#document +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| + +#data + +#errors +#document +| +| +| +| +| +| diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests12.dat b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests12.dat new file mode 100644 index 000000000..63107d277 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests12.dat @@ -0,0 +1,62 @@ +#data +

          foobazeggs

          spam

          quuxbar +#errors +#document +| +| +| +| +|

          +| "foo" +| +| +| +| "baz" +| +| +| +| +| "eggs" +| +| +|

          +| "spam" +| +| +| +|
          +| +| +| "quux" +| "bar" + +#data +foobazeggs

          spam
          quuxbar +#errors +#document +| +| +| +| +| "foo" +| +| +| +| "baz" +| +| +| +| +| "eggs" +| +| +|

          +| "spam" +| +| +| +|
          +| +| +| "quux" +| "bar" diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests14.dat b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests14.dat new file mode 100644 index 000000000..a08b7649e --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests14.dat @@ -0,0 +1,75 @@ +#data + +#errors +#document +| +| +| +| +| + +#data + +#errors +#document +| +| +| +| +| +| + +#data + +#errors +(1,38): non-html-root +#document +| +| +| abc:def="gh" +| +| +| + +#data + +#errors +(1,53): non-html-root +#document +| +| +| xml:lang="bar" +| +| + +#data + +#errors +#document +| +| +| 123="456" +| +| + +#data + +#errors +(1,43): non-html-root +#document +| +| +| 123="456" +| 789="012" +| +| + +#data + +#errors +#document +| +| +| +| +| 789="012" diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests15.dat b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests15.dat new file mode 100644 index 000000000..93d06a871 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests15.dat @@ -0,0 +1,216 @@ +#data +

          X +#errors +(1,31): unexpected-end-tag +(1,36): expected-closing-tag-but-got-eof +#document +| +| +| +| +|

          +| +| +| +| +| +| +| " " +|

          +| "X" + +#data +

          +

          X +#errors +(1,3): expected-doctype-but-got-start-tag +(1,16): unexpected-end-tag +(2,4): expected-closing-tag-but-got-eof +#document +| +| +| +|

          +| +| +| +| +| +| +| " +" +|

          +| "X" + +#data + +#errors +(1,29): expected-eof-but-got-start-tag +(1,29): unexpected-start-tag-ignored +#document +| +| +| +| +| " " + +#data + +#errors +(1,28): unexpected-start-tag-after-body +#document +| +| +| +| +| + +#data + +#errors +(1,6): expected-doctype-but-got-start-tag +#document +| +| +| +| + +#data +X +#errors +(1,29): unexpected-start-tag-after-body +#document +| +| +| +| +| +| "X" + +#data +<!doctype html><table> X<meta></table> +#errors +(1,23): foster-parenting-character +(1,24): foster-parenting-character +(1,30): foster-parenting-start-character +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| " X" +| <meta> +| <table> + +#data +<!doctype html><table> x</table> +#errors +(1,23): foster-parenting-character +(1,24): foster-parenting-character +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| " x" +| <table> + +#data +<!doctype html><table> x </table> +#errors +(1,23): foster-parenting-character +(1,24): foster-parenting-character +(1,25): foster-parenting-character +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| " x " +| <table> + +#data +<!doctype html><table><tr> x</table> +#errors +(1,27): foster-parenting-character +(1,28): foster-parenting-character +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| " x" +| <table> +| <tbody> +| <tr> + +#data +<!doctype html><table>X<style> <tr>x </style> </table> +#errors +(1,23): foster-parenting-character +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| "X" +| <table> +| <style> +| " <tr>x " +| " " + +#data +<!doctype html><div><table><a>foo</a> <tr><td>bar</td> </tr></table></div> +#errors +(1,30): foster-parenting-start-tag +(1,31): foster-parenting-character +(1,32): foster-parenting-character +(1,33): foster-parenting-character +(1,37): foster-parenting-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <div> +| <a> +| "foo" +| <table> +| " " +| <tbody> +| <tr> +| <td> +| "bar" +| " " + +#data +<frame></frame></frame><frameset><frame><frameset><frame></frameset><noframes></frameset><noframes> +#errors +(1,7): expected-doctype-but-got-start-tag +(1,7): unexpected-start-tag-ignored +(1,15): unexpected-end-tag +(1,23): unexpected-end-tag +(1,33): unexpected-start-tag +(1,99): expected-named-closing-tag-but-got-eof +(1,99): eof-in-frameset +#document +| <html> +| <head> +| <frameset> +| <frame> +| <frameset> +| <frame> +| <noframes> +| "</frameset><noframes>" + +#data +<!DOCTYPE html><object></html> +#errors +(1,30): expected-body-in-scope +(1,30): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <object> diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests16.dat b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests16.dat new file mode 100644 index 000000000..cea7340a0 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests16.dat @@ -0,0 +1,2604 @@ +#data +<!doctype html><script> +#errors +(1,23): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| <body> + +#data +<!doctype html><script>a +#errors +(1,24): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "a" +| <body> + +#data +<!doctype html><script>< +#errors +(1,24): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<" +| <body> + +#data +<!doctype html><script></ +#errors +(1,25): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</" +| <body> + +#data +<!doctype html><script></S +#errors +(1,26): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</S" +| <body> + +#data +<!doctype html><script></SC +#errors +(1,27): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</SC" +| <body> + +#data +<!doctype html><script></SCR +#errors +(1,28): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</SCR" +| <body> + +#data +<!doctype html><script></SCRI +#errors +(1,29): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</SCRI" +| <body> + +#data +<!doctype html><script></SCRIP +#errors +(1,30): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</SCRIP" +| <body> + +#data +<!doctype html><script></SCRIPT +#errors +(1,31): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</SCRIPT" +| <body> + +#data +<!doctype html><script></SCRIPT +#errors +(1,32): expected-attribute-name-but-got-eof +(1,32): expected-named-closing-tag-but-got-eof +#new-errors +(1:33) eof-in-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| <body> + +#data +<!doctype html><script></s +#errors +(1,26): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</s" +| <body> + +#data +<!doctype html><script></sc +#errors +(1,27): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</sc" +| <body> + +#data +<!doctype html><script></scr +#errors +(1,28): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</scr" +| <body> + +#data +<!doctype html><script></scri +#errors +(1,29): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</scri" +| <body> + +#data +<!doctype html><script></scrip +#errors +(1,30): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</scrip" +| <body> + +#data +<!doctype html><script></script +#errors +(1,31): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "</script" +| <body> + +#data +<!doctype html><script></script +#errors +(1,32): expected-attribute-name-but-got-eof +(1,32): expected-named-closing-tag-but-got-eof +#new-errors +(1:33) eof-in-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| <body> + +#data +<!doctype html><script><! +#errors +(1,25): expected-script-data-but-got-eof +(1,25): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!" +| <body> + +#data +<!doctype html><script><!a +#errors +(1,26): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!a" +| <body> + +#data +<!doctype html><script><!- +#errors +(1,26): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!-" +| <body> + +#data +<!doctype html><script><!-a +#errors +(1,27): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!-a" +| <body> + +#data +<!doctype html><script><!-- +#errors +(1,27): expected-named-closing-tag-but-got-eof +(1,27): unexpected-eof-in-text-mode +#new-errors +(1:28) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--" +| <body> + +#data +<!doctype html><script><!--a +#errors +(1,28): expected-named-closing-tag-but-got-eof +(1,28): unexpected-eof-in-text-mode +#new-errors +(1:29) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--a" +| <body> + +#data +<!doctype html><script><!--< +#errors +(1,28): expected-named-closing-tag-but-got-eof +(1,28): unexpected-eof-in-text-mode +#new-errors +(1:29) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<" +| <body> + +#data +<!doctype html><script><!--<a +#errors +(1,29): expected-named-closing-tag-but-got-eof +(1,29): unexpected-eof-in-text-mode +#new-errors +(1:30) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<a" +| <body> + +#data +<!doctype html><script><!--</ +#errors +(1,29): expected-named-closing-tag-but-got-eof +(1,29): unexpected-eof-in-text-mode +#new-errors +(1:30) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--</" +| <body> + +#data +<!doctype html><script><!--</script +#errors +(1,35): expected-named-closing-tag-but-got-eof +(1,35): unexpected-eof-in-text-mode +#new-errors +(1:36) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--</script" +| <body> + +#data +<!doctype html><script><!--</script +#errors +(1,36): expected-attribute-name-but-got-eof +(1,36): expected-named-closing-tag-but-got-eof +#new-errors +(1:37) eof-in-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--" +| <body> + +#data +<!doctype html><script><!--<s +#errors +(1,29): expected-named-closing-tag-but-got-eof +(1,29): unexpected-eof-in-text-mode +#new-errors +(1:30) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<s" +| <body> + +#data +<!doctype html><script><!--<script +#errors +(1,34): expected-named-closing-tag-but-got-eof +(1,34): unexpected-eof-in-text-mode +#new-errors +(1:35) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script" +| <body> + +#data +<!doctype html><script><!--<script +#errors +(1,35): eof-in-script-in-script +(1,35): expected-named-closing-tag-but-got-eof +#new-errors +(1:36) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script " +| <body> + +#data +<!doctype html><script><!--<script < +#errors +(1,36): eof-in-script-in-script +(1,36): expected-named-closing-tag-but-got-eof +#new-errors +(1:37) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script <" +| <body> + +#data +<!doctype html><script><!--<script <a +#errors +(1,37): eof-in-script-in-script +(1,37): expected-named-closing-tag-but-got-eof +#new-errors +(1:38) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script <a" +| <body> + +#data +<!doctype html><script><!--<script </ +#errors +(1,37): eof-in-script-in-script +(1,37): expected-named-closing-tag-but-got-eof +#new-errors +(1:38) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </" +| <body> + +#data +<!doctype html><script><!--<script </s +#errors +(1,38): eof-in-script-in-script +(1,38): expected-named-closing-tag-but-got-eof +#new-errors +(1:39) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </s" +| <body> + +#data +<!doctype html><script><!--<script </script +#errors +(1,43): eof-in-script-in-script +(1,43): expected-named-closing-tag-but-got-eof +#new-errors +(1:44) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </script" +| <body> + +#data +<!doctype html><script><!--<script </scripta +#errors +(1,44): eof-in-script-in-script +(1,44): expected-named-closing-tag-but-got-eof +#new-errors +(1:45) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </scripta" +| <body> + +#data +<!doctype html><script><!--<script </script +#errors +(1,44): expected-named-closing-tag-but-got-eof +(1,44): unexpected-eof-in-text-mode +#new-errors +(1:45) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </script " +| <body> + +#data +<!doctype html><script><!--<script </script> +#errors +(1,44): expected-named-closing-tag-but-got-eof +(1,44): unexpected-eof-in-text-mode +#new-errors +(1:45) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </script>" +| <body> + +#data +<!doctype html><script><!--<script </script/ +#errors +(1,44): expected-named-closing-tag-but-got-eof +(1,44): unexpected-eof-in-text-mode +#new-errors +(1:45) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </script/" +| <body> + +#data +<!doctype html><script><!--<script </script < +#errors +(1,45): expected-named-closing-tag-but-got-eof +(1,45): unexpected-eof-in-text-mode +#new-errors +(1:46) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </script <" +| <body> + +#data +<!doctype html><script><!--<script </script <a +#errors +(1,46): expected-named-closing-tag-but-got-eof +(1,46): unexpected-eof-in-text-mode +#new-errors +(1:47) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </script <a" +| <body> + +#data +<!doctype html><script><!--<script </script </ +#errors +(1,46): expected-named-closing-tag-but-got-eof +(1,46): unexpected-eof-in-text-mode +#new-errors +(1:47) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </script </" +| <body> + +#data +<!doctype html><script><!--<script </script </script +#errors +(1,52): expected-named-closing-tag-but-got-eof +(1,52): unexpected-eof-in-text-mode +#new-errors +(1:53) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </script </script" +| <body> + +#data +<!doctype html><script><!--<script </script </script +#errors +(1,53): expected-attribute-name-but-got-eof +(1,53): expected-named-closing-tag-but-got-eof +#new-errors +(1:54) eof-in-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </script " +| <body> + +#data +<!doctype html><script><!--<script </script </script/ +#errors +(1,53): unexpected-EOF-after-solidus-in-tag +(1,53): expected-named-closing-tag-but-got-eof +#new-errors +(1:54) eof-in-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </script " +| <body> + +#data +<!doctype html><script><!--<script </script </script> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script </script " +| <body> + +#data +<!doctype html><script><!--<script - +#errors +(1,36): eof-in-script-in-script +(1,36): expected-named-closing-tag-but-got-eof +#new-errors +(1:37) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script -" +| <body> + +#data +<!doctype html><script><!--<script -a +#errors +(1,37): eof-in-script-in-script +(1,37): expected-named-closing-tag-but-got-eof +#new-errors +(1:38) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script -a" +| <body> + +#data +<!doctype html><script><!--<script -< +#errors +(1,37): eof-in-script-in-script +(1,37): expected-named-closing-tag-but-got-eof +#new-errors +(1:38) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script -<" +| <body> + +#data +<!doctype html><script><!--<script -- +#errors +(1,37): eof-in-script-in-script +(1,37): expected-named-closing-tag-but-got-eof +#new-errors +(1:38) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script --" +| <body> + +#data +<!doctype html><script><!--<script --a +#errors +(1,38): eof-in-script-in-script +(1,38): expected-named-closing-tag-but-got-eof +#new-errors +(1:39) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script --a" +| <body> + +#data +<!doctype html><script><!--<script --< +#errors +(1,38): eof-in-script-in-script +(1,38): expected-named-closing-tag-but-got-eof +#new-errors +(1:39) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script --<" +| <body> + +#data +<!doctype html><script><!--<script --> +#errors +(1,38): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script -->" +| <body> + +#data +<!doctype html><script><!--<script -->< +#errors +(1,39): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script --><" +| <body> + +#data +<!doctype html><script><!--<script --></ +#errors +(1,40): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script --></" +| <body> + +#data +<!doctype html><script><!--<script --></script +#errors +(1,46): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script --></script" +| <body> + +#data +<!doctype html><script><!--<script --></script +#errors +(1,47): expected-attribute-name-but-got-eof +(1,47): expected-named-closing-tag-but-got-eof +#new-errors +(1:48) eof-in-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script -->" +| <body> + +#data +<!doctype html><script><!--<script --></script/ +#errors +(1,47): unexpected-EOF-after-solidus-in-tag +(1,47): expected-named-closing-tag-but-got-eof +#new-errors +(1:48) eof-in-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script -->" +| <body> + +#data +<!doctype html><script><!--<script --></script> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script -->" +| <body> + +#data +<!doctype html><script><!--<script><\/script>--></script> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script><\/script>-->" +| <body> + +#data +<!doctype html><script><!--<script></scr'+'ipt>--></script> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script></scr'+'ipt>-->" +| <body> + +#data +<!doctype html><script><!--<script></script><script></script></script> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>" +| <body> + +#data +<!doctype html><script><!--<script></script><script></script>--><!--</script> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>--><!--" +| <body> + +#data +<!doctype html><script><!--<script></script><script></script>-- ></script> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>-- >" +| <body> + +#data +<!doctype html><script><!--<script></script><script></script>- -></script> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>- ->" +| <body> + +#data +<!doctype html><script><!--<script></script><script></script>- - ></script> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>- - >" +| <body> + +#data +<!doctype html><script><!--<script></script><script></script>-></script> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>->" +| <body> + +#data +<!doctype html><script><!--<script>--!></script>X +#errors +(1,49): expected-named-closing-tag-but-got-eof +(1,49): unexpected-EOF-in-text-mode +#new-errors +(1:50) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script>--!></script>X" +| <body> + +#data +<!doctype html><script><!--<scr'+'ipt></script>--></script> +#errors +(1,59): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<scr'+'ipt>" +| <body> +| "-->" + +#data +<!doctype html><script><!--<script></scr'+'ipt></script>X +#errors +(1,57): expected-named-closing-tag-but-got-eof +(1,57): unexpected-eof-in-text-mode +#new-errors +(1:58) eof-in-script-html-comment-like-text +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| "<!--<script></scr'+'ipt></script>X" +| <body> + +#data +<!doctype html><style><!--<style></style>--></style> +#errors +(1,52): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <style> +| "<!--<style>" +| <body> +| "-->" + +#data +<!doctype html><style><!--</style>X +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <style> +| "<!--" +| <body> +| "X" + +#data +<!doctype html><style><!--...</style>...--></style> +#errors +(1,51): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <style> +| "<!--..." +| <body> +| "...-->" + +#data +<!doctype html><style><!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style></style>X +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <style> +| "<!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style>" +| <body> +| "X" + +#data +<!doctype html><style><!--...<style><!--...--!></style>--></style> +#errors +(1,66): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <style> +| "<!--...<style><!--...--!>" +| <body> +| "-->" + +#data +<!doctype html><style><!--...</style><!-- --><style>@import ...</style> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <style> +| "<!--..." +| <!-- --> +| <style> +| "@import ..." +| <body> + +#data +<!doctype html><style>...<style><!--...</style><!-- --></style> +#errors +(1,63): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <style> +| "...<style><!--..." +| <!-- --> +| <body> + +#data +<!doctype html><style>...<!--[if IE]><style>...</style>X +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <style> +| "...<!--[if IE]><style>..." +| <body> +| "X" + +#data +<!doctype html><title><!--<title>--> +#errors +(1,52): unexpected-end-tag +#document +| +| +| +| +| "<!--<title>" +| <body> +| "-->" + +#data +<!doctype html><title></title> +#errors +#document +| +| +| +| +| "" +| + +#data +foo/title><link></head><body>X +#errors +(1,52): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <title> +| "foo/title><link></head><body>X" +| <body> + +#data +<!doctype html><noscript><!--<noscript></noscript>--></noscript> +#errors +(1,64): unexpected-end-tag +#script-on +#document +| <!DOCTYPE html> +| <html> +| <head> +| <noscript> +| "<!--<noscript>" +| <body> +| "-->" + +#data +<!doctype html><noscript><!--<noscript></noscript>--></noscript> +#errors +#script-off +#document +| <!DOCTYPE html> +| <html> +| <head> +| <noscript> +| <!-- <noscript></noscript> --> +| <body> + +#data +<!doctype html><noscript><!--</noscript>X<noscript>--></noscript> +#errors +#script-on +#document +| <!DOCTYPE html> +| <html> +| <head> +| <noscript> +| "<!--" +| <body> +| "X" +| <noscript> +| "-->" + +#data +<!doctype html><noscript><!--</noscript>X<noscript>--></noscript> +#errors +#script-off +#document +| <!DOCTYPE html> +| <html> +| <head> +| <noscript> +| <!-- </noscript>X<noscript> --> +| <body> + +#data +<!doctype html><noscript><iframe></noscript>X +#errors +#script-on +#document +| <!DOCTYPE html> +| <html> +| <head> +| <noscript> +| "<iframe>" +| <body> +| "X" + +#data +<!doctype html><noscript><iframe></noscript>X +#errors + * (1,34) unexpected token in head noscript + * (1,46) unexpected EOF +#script-off +#document +| <!DOCTYPE html> +| <html> +| <head> +| <noscript> +| <body> +| <iframe> +| "</noscript>X" + +#data +<!doctype html><noframes><!--<noframes></noframes>--></noframes> +#errors +(1,64): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <noframes> +| "<!--<noframes>" +| <body> +| "-->" + +#data +<!doctype html><noframes><body><script><!--...</script></body></noframes></html> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <noframes> +| "<body><script><!--...</script></body>" +| <body> + +#data +<!doctype html><textarea><!--<textarea></textarea>--></textarea> +#errors +(1,64): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <textarea> +| "<!--<textarea>" +| "-->" + +#data +<!doctype html><textarea></textarea></textarea> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <textarea> +| "</textarea>" + +#data +<!doctype html><textarea><</textarea> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <textarea> +| "<" + +#data +<!doctype html><textarea>a<b</textarea> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <textarea> +| "a<b" + +#data +<!doctype html><iframe><!--<iframe></iframe>--></iframe> +#errors +(1,56): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <iframe> +| "<!--<iframe>" +| "-->" + +#data +<!doctype html><iframe>...<!--X->...<!--/X->...</iframe> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <iframe> +| "...<!--X->...<!--/X->..." + +#data +<!doctype html><xmp><!--<xmp></xmp>--></xmp> +#errors +(1,44): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <xmp> +| "<!--<xmp>" +| "-->" + +#data +<!doctype html><noembed><!--<noembed></noembed>--></noembed> +#errors +(1,60): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <noembed> +| "<!--<noembed>" +| "-->" + +#data +<script> +#errors +(1,8): expected-doctype-but-got-start-tag +(1,8): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| <body> + +#data +<script>a +#errors +(1,8): expected-doctype-but-got-start-tag +(1,9): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "a" +| <body> + +#data +<script>< +#errors +(1,8): expected-doctype-but-got-start-tag +(1,9): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "<" +| <body> + +#data +<script></ +#errors +(1,8): expected-doctype-but-got-start-tag +(1,10): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</" +| <body> + +#data +<script></S +#errors +(1,8): expected-doctype-but-got-start-tag +(1,11): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</S" +| <body> + +#data +<script></SC +#errors +(1,8): expected-doctype-but-got-start-tag +(1,12): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</SC" +| <body> + +#data +<script></SCR +#errors +(1,8): expected-doctype-but-got-start-tag +(1,13): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</SCR" +| <body> + +#data +<script></SCRI +#errors +(1,8): expected-doctype-but-got-start-tag +(1,14): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</SCRI" +| <body> + +#data +<script></SCRIP +#errors +(1,8): expected-doctype-but-got-start-tag +(1,15): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</SCRIP" +| <body> + +#data +<script></SCRIPT +#errors +(1,8): expected-doctype-but-got-start-tag +(1,16): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</SCRIPT" +| <body> + +#data +<script></SCRIPT +#errors +(1,8): expected-doctype-but-got-start-tag +(1,17): expected-attribute-name-but-got-eof +(1,17): expected-named-closing-tag-but-got-eof +#new-errors +(1:18) eof-in-tag +#document +| <html> +| <head> +| <script> +| <body> + +#data +<script></s +#errors +(1,8): expected-doctype-but-got-start-tag +(1,11): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</s" +| <body> + +#data +<script></sc +#errors +(1,8): expected-doctype-but-got-start-tag +(1,12): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</sc" +| <body> + +#data +<script></scr +#errors +(1,8): expected-doctype-but-got-start-tag +(1,13): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</scr" +| <body> + +#data +<script></scri +#errors +(1,8): expected-doctype-but-got-start-tag +(1,14): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</scri" +| <body> + +#data +<script></scrip +#errors +(1,8): expected-doctype-but-got-start-tag +(1,15): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</scrip" +| <body> + +#data +<script></script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,16): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</script" +| <body> + +#data +<script></script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,17): expected-attribute-name-but-got-eof +(1,17): expected-named-closing-tag-but-got-eof +#new-errors +(1:18) eof-in-tag +#document +| <html> +| <head> +| <script> +| <body> + +#data +<script><! +#errors +(1,8): expected-doctype-but-got-start-tag +(1,10): expected-script-data-but-got-eof +(1,10): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "<!" +| <body> + +#data +<script><!a +#errors +(1,8): expected-doctype-but-got-start-tag +(1,11): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "<!a" +| <body> + +#data +<script><!- +#errors +(1,8): expected-doctype-but-got-start-tag +(1,11): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "<!-" +| <body> + +#data +<script><!-a +#errors +(1,8): expected-doctype-but-got-start-tag +(1,12): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "<!-a" +| <body> + +#data +<script><!-- +#errors +(1,8): expected-doctype-but-got-start-tag +(1,12): expected-named-closing-tag-but-got-eof +(1,12): unexpected-eof-in-text-mode +#new-errors +(1:13) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--" +| <body> + +#data +<script><!--a +#errors +(1,8): expected-doctype-but-got-start-tag +(1,13): expected-named-closing-tag-but-got-eof +(1,13): unexpected-eof-in-text-mode +#new-errors +(1:14) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--a" +| <body> + +#data +<script><!--< +#errors +(1,8): expected-doctype-but-got-start-tag +(1,13): expected-named-closing-tag-but-got-eof +(1,13): unexpected-eof-in-text-mode +#new-errors +(1:14) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<" +| <body> + +#data +<script><!--<a +#errors +(1,8): expected-doctype-but-got-start-tag +(1,14): expected-named-closing-tag-but-got-eof +(1,14): unexpected-eof-in-text-mode +#new-errors +(1:15) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<a" +| <body> + +#data +<script><!--</ +#errors +(1,8): expected-doctype-but-got-start-tag +(1,14): expected-named-closing-tag-but-got-eof +(1,14): unexpected-eof-in-text-mode +#new-errors +(1:15) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--</" +| <body> + +#data +<script><!--</script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,20): expected-named-closing-tag-but-got-eof +(1,20): unexpected-eof-in-text-mode +#new-errors +(1:21) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--</script" +| <body> + +#data +<script><!--</script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,21): expected-attribute-name-but-got-eof +(1,21): expected-named-closing-tag-but-got-eof +#new-errors +(1:22) eof-in-tag +#document +| <html> +| <head> +| <script> +| "<!--" +| <body> + +#data +<script><!--<s +#errors +(1,8): expected-doctype-but-got-start-tag +(1,14): expected-named-closing-tag-but-got-eof +(1,14): unexpected-eof-in-text-mode +#new-errors +(1:15) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<s" +| <body> + +#data +<script><!--<script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,19): expected-named-closing-tag-but-got-eof +(1,19): unexpected-eof-in-text-mode +#new-errors +(1:20) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script" +| <body> + +#data +<script><!--<script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,20): eof-in-script-in-script +(1,20): expected-named-closing-tag-but-got-eof +#new-errors +(1:21) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script " +| <body> + +#data +<script><!--<script < +#errors +(1,8): expected-doctype-but-got-start-tag +(1,21): eof-in-script-in-script +(1,21): expected-named-closing-tag-but-got-eof +#new-errors +(1:22) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script <" +| <body> + +#data +<script><!--<script <a +#errors +(1,8): expected-doctype-but-got-start-tag +(1,22): eof-in-script-in-script +(1,22): expected-named-closing-tag-but-got-eof +#new-errors +(1:23) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script <a" +| <body> + +#data +<script><!--<script </ +#errors +(1,8): expected-doctype-but-got-start-tag +(1,22): eof-in-script-in-script +(1,22): expected-named-closing-tag-but-got-eof +#new-errors +(1:23) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script </" +| <body> + +#data +<script><!--<script </s +#errors +(1,8): expected-doctype-but-got-start-tag +(1,23): eof-in-script-in-script +(1,23): expected-named-closing-tag-but-got-eof +#new-errors +(1:24) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script </s" +| <body> + +#data +<script><!--<script </script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,28): eof-in-script-in-script +(1,28): expected-named-closing-tag-but-got-eof +#new-errors +(1:29) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script </script" +| <body> + +#data +<script><!--<script </scripta +#errors +(1,8): expected-doctype-but-got-start-tag +(1,29): eof-in-script-in-script +(1,29): expected-named-closing-tag-but-got-eof +#new-errors +(1:30) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script </scripta" +| <body> + +#data +<script><!--<script </script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,29): expected-named-closing-tag-but-got-eof +(1,29): unexpected-eof-in-text-mode +#new-errors +(1:30) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script </script " +| <body> + +#data +<script><!--<script </script> +#errors +(1,8): expected-doctype-but-got-start-tag +(1,29): expected-named-closing-tag-but-got-eof +(1,29): unexpected-eof-in-text-mode +#new-errors +(1:30) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script </script>" +| <body> + +#data +<script><!--<script </script/ +#errors +(1,8): expected-doctype-but-got-start-tag +(1,29): expected-named-closing-tag-but-got-eof +(1,29): unexpected-eof-in-text-mode +#new-errors +(1:30) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script </script/" +| <body> + +#data +<script><!--<script </script < +#errors +(1,8): expected-doctype-but-got-start-tag +(1,30): expected-named-closing-tag-but-got-eof +(1,30): unexpected-eof-in-text-mode +#new-errors +(1:31) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script </script <" +| <body> + +#data +<script><!--<script </script <a +#errors +(1,8): expected-doctype-but-got-start-tag +(1,31): expected-named-closing-tag-but-got-eof +(1,31): unexpected-eof-in-text-mode +#new-errors +(1:32) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script </script <a" +| <body> + +#data +<script><!--<script </script </ +#errors +(1,8): expected-doctype-but-got-start-tag +(1,31): expected-named-closing-tag-but-got-eof +(1,31): unexpected-eof-in-text-mode +#new-errors +(1:32) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script </script </" +| <body> + +#data +<script><!--<script </script </script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,37): expected-named-closing-tag-but-got-eof +(1,37): unexpected-eof-in-text-mode +#new-errors +(1:38) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script </script </script" +| <body> + +#data +<script><!--<script </script </script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,38): expected-attribute-name-but-got-eof +(1,38): expected-named-closing-tag-but-got-eof +#new-errors +(1:39) eof-in-tag +#document +| <html> +| <head> +| <script> +| "<!--<script </script " +| <body> + +#data +<script><!--<script </script </script/ +#errors +(1,8): expected-doctype-but-got-start-tag +(1,38): unexpected-EOF-after-solidus-in-tag +(1,38): expected-named-closing-tag-but-got-eof +#new-errors +(1:39) eof-in-tag +#document +| <html> +| <head> +| <script> +| "<!--<script </script " +| <body> + +#data +<script><!--<script </script </script> +#errors +(1,8): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <script> +| "<!--<script </script " +| <body> + +#data +<script><!--<script - +#errors +(1,8): expected-doctype-but-got-start-tag +(1,21): eof-in-script-in-script +(1,21): expected-named-closing-tag-but-got-eof +#new-errors +(1:22) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script -" +| <body> + +#data +<script><!--<script -a +#errors +(1,8): expected-doctype-but-got-start-tag +(1,22): eof-in-script-in-script +(1,22): expected-named-closing-tag-but-got-eof +#new-errors +(1:23) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script -a" +| <body> + +#data +<script><!--<script -- +#errors +(1,8): expected-doctype-but-got-start-tag +(1,22): eof-in-script-in-script +(1,22): expected-named-closing-tag-but-got-eof +#new-errors +(1:23) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script --" +| <body> + +#data +<script><!--<script --a +#errors +(1,8): expected-doctype-but-got-start-tag +(1,23): eof-in-script-in-script +(1,23): expected-named-closing-tag-but-got-eof +#new-errors +(1:24) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script --a" +| <body> + +#data +<script><!--<script --> +#errors +(1,8): expected-doctype-but-got-start-tag +(1,23): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "<!--<script -->" +| <body> + +#data +<script><!--<script -->< +#errors +(1,8): expected-doctype-but-got-start-tag +(1,24): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "<!--<script --><" +| <body> + +#data +<script><!--<script --></ +#errors +(1,8): expected-doctype-but-got-start-tag +(1,25): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "<!--<script --></" +| <body> + +#data +<script><!--<script --></script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,31): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "<!--<script --></script" +| <body> + +#data +<script><!--<script --></script +#errors +(1,8): expected-doctype-but-got-start-tag +(1,32): expected-attribute-name-but-got-eof +(1,32): expected-named-closing-tag-but-got-eof +#new-errors +(1:33) eof-in-tag +#document +| <html> +| <head> +| <script> +| "<!--<script -->" +| <body> + +#data +<script><!--<script --></script/ +#errors +(1,8): expected-doctype-but-got-start-tag +(1,32): unexpected-EOF-after-solidus-in-tag +(1,32): expected-named-closing-tag-but-got-eof +#new-errors +(1:33) eof-in-tag +#document +| <html> +| <head> +| <script> +| "<!--<script -->" +| <body> + +#data +<script><!--<script --></script> +#errors +(1,8): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <script> +| "<!--<script -->" +| <body> + +#data +<script><!--<script><\/script>--></script> +#errors +(1,8): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <script> +| "<!--<script><\/script>-->" +| <body> + +#data +<script><!--<script></scr'+'ipt>--></script> +#errors +(1,8): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <script> +| "<!--<script></scr'+'ipt>-->" +| <body> + +#data +<script><!--<script></script><script></script></script> +#errors +(1,8): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>" +| <body> + +#data +<script><!--<script></script><script></script>--><!--</script> +#errors +(1,8): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>--><!--" +| <body> + +#data +<script><!--<script></script><script></script>-- ></script> +#errors +(1,8): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>-- >" +| <body> + +#data +<script><!--<script></script><script></script>- -></script> +#errors +(1,8): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>- ->" +| <body> + +#data +<script><!--<script></script><script></script>- - ></script> +#errors +(1,8): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>- - >" +| <body> + +#data +<script><!--<script></script><script></script>-></script> +#errors +(1,8): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <script> +| "<!--<script></script><script></script>->" +| <body> + +#data +<script><!--<script>--!></script>X +#errors +(1,8): expected-doctype-but-got-start-tag +(1,34): expected-named-closing-tag-but-got-eof +(1,34): unexpected-eof-in-text-mode +#new-errors +(1:35) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script>--!></script>X" +| <body> + +#data +<script><!--<scr'+'ipt></script>--></script> +#errors +(1,8): expected-doctype-but-got-start-tag +(1,44): unexpected-end-tag +#document +| <html> +| <head> +| <script> +| "<!--<scr'+'ipt>" +| <body> +| "-->" + +#data +<script><!--<script></scr'+'ipt></script>X +#errors +(1,8): expected-doctype-but-got-start-tag +(1,42): expected-named-closing-tag-but-got-eof +(1,42): unexpected-eof-in-text-mode +#new-errors +(1:43) eof-in-script-html-comment-like-text +#document +| <html> +| <head> +| <script> +| "<!--<script></scr'+'ipt></script>X" +| <body> + +#data +<style><!--<style></style>--></style> +#errors +(1,7): expected-doctype-but-got-start-tag +(1,37): unexpected-end-tag +#document +| <html> +| <head> +| <style> +| "<!--<style>" +| <body> +| "-->" + +#data +<style><!--</style>X +#errors +(1,7): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <style> +| "<!--" +| <body> +| "X" + +#data +<style><!--...</style>...--></style> +#errors +(1,7): expected-doctype-but-got-start-tag +(1,36): unexpected-end-tag +#document +| <html> +| <head> +| <style> +| "<!--..." +| <body> +| "...-->" + +#data +<style><!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style></style>X +#errors +(1,7): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <style> +| "<!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style>" +| <body> +| "X" + +#data +<style><!--...<style><!--...--!></style>--></style> +#errors +(1,7): expected-doctype-but-got-start-tag +(1,51): unexpected-end-tag +#document +| <html> +| <head> +| <style> +| "<!--...<style><!--...--!>" +| <body> +| "-->" + +#data +<style><!--...</style><!-- --><style>@import ...</style> +#errors +(1,7): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <style> +| "<!--..." +| <!-- --> +| <style> +| "@import ..." +| <body> + +#data +<style>...<style><!--...</style><!-- --></style> +#errors +(1,7): expected-doctype-but-got-start-tag +(1,48): unexpected-end-tag +#document +| <html> +| <head> +| <style> +| "...<style><!--..." +| <!-- --> +| <body> + +#data +<style>...<!--[if IE]><style>...</style>X +#errors +(1,7): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <style> +| "...<!--[if IE]><style>..." +| <body> +| "X" + +#data +<title><!--<title>--> +#errors +(1,7): expected-doctype-but-got-start-tag +(1,37): unexpected-end-tag +#document +| +| +| +| "<!--<title>" +| <body> +| "-->" + +#data +<title></title> +#errors +(1,7): expected-doctype-but-got-start-tag +#document +| +| +| +| "" +| + +#data +foo/title><link></head><body>X +#errors +(1,7): expected-doctype-but-got-start-tag +(1,37): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <title> +| "foo/title><link></head><body>X" +| <body> + +#data +<noscript><!--<noscript></noscript>--></noscript> +#errors +(1,10): expected-doctype-but-got-start-tag +(1,49): unexpected-end-tag +#script-on +#document +| <html> +| <head> +| <noscript> +| "<!--<noscript>" +| <body> +| "-->" + +#data +<noscript><!--<noscript></noscript>--></noscript> +#errors + * (1,11) missing DOCTYPE +#script-off +#document +| <html> +| <head> +| <noscript> +| <!-- <noscript></noscript> --> +| <body> + +#data +<noscript><!--</noscript>X<noscript>--></noscript> +#errors +(1,10): expected-doctype-but-got-start-tag +#script-on +#document +| <html> +| <head> +| <noscript> +| "<!--" +| <body> +| "X" +| <noscript> +| "-->" + +#data +<noscript><!--</noscript>X<noscript>--></noscript> +#errors +(1,10): expected-doctype-but-got-start-tag +#script-off +#document +| <html> +| <head> +| <noscript> +| <!-- </noscript>X<noscript> --> +| <body> + +#data +<noscript><iframe></noscript>X +#errors +(1,10): expected-doctype-but-got-start-tag +#script-on +#document +| <html> +| <head> +| <noscript> +| "<iframe>" +| <body> +| "X" + +#data +<noscript><iframe></noscript>X +#errors + * (1,11) missing DOCTYPE + * (1,19) unexpected token in head noscript + * (1,31) unexpected EOF +#script-off +#document +| <html> +| <head> +| <noscript> +| <body> +| <iframe> +| "</noscript>X" + +#data +<noframes><!--<noframes></noframes>--></noframes> +#errors +(1,10): expected-doctype-but-got-start-tag +(1,49): unexpected-end-tag +#document +| <html> +| <head> +| <noframes> +| "<!--<noframes>" +| <body> +| "-->" + +#data +<noframes><body><script><!--...</script></body></noframes></html> +#errors +(1,10): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <noframes> +| "<body><script><!--...</script></body>" +| <body> + +#data +<textarea><!--<textarea></textarea>--></textarea> +#errors +(1,10): expected-doctype-but-got-start-tag +(1,49): unexpected-end-tag +#document +| <html> +| <head> +| <body> +| <textarea> +| "<!--<textarea>" +| "-->" + +#data +<textarea></textarea></textarea> +#errors +(1,10): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <body> +| <textarea> +| "</textarea>" + +#data +<iframe><!--<iframe></iframe>--></iframe> +#errors +(1,8): expected-doctype-but-got-start-tag +(1,41): unexpected-end-tag +#document +| <html> +| <head> +| <body> +| <iframe> +| "<!--<iframe>" +| "-->" + +#data +<iframe>...<!--X->...<!--/X->...</iframe> +#errors +(1,8): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <body> +| <iframe> +| "...<!--X->...<!--/X->..." + +#data +<xmp><!--<xmp></xmp>--></xmp> +#errors +(1,5): expected-doctype-but-got-start-tag +(1,29): unexpected-end-tag +#document +| <html> +| <head> +| <body> +| <xmp> +| "<!--<xmp>" +| "-->" + +#data +<noembed><!--<noembed></noembed>--></noembed> +#errors +(1,9): expected-doctype-but-got-start-tag +(1,45): unexpected-end-tag +#document +| <html> +| <head> +| <body> +| <noembed> +| "<!--<noembed>" +| "-->" + +#data +<!doctype html><table> + +#errors +(2,0): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| " +" + +#data +<!doctype html><table><td><span><font></span><span> +#errors +(1,26): unexpected-cell-in-table-body +(1,45): unexpected-end-tag +(1,51): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <tbody> +| <tr> +| <td> +| <span> +| <font> +| <font> +| <span> + +#data +<!doctype html><form><table></form><form></table></form> +#errors +(1,35): unexpected-end-tag-implies-table-voodoo +(1,35): unexpected-end-tag +(1,41): unexpected-form-in-table +(1,56): unexpected-end-tag +(1,56): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <form> +| <table> +| <form> diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests17.dat b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests17.dat new file mode 100644 index 000000000..e49bcf031 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests17.dat @@ -0,0 +1,179 @@ +#data +<!doctype html><table><tbody><select><tr> +#errors +(1,37): unexpected-start-tag-implies-table-voodoo +(1,41): unexpected-table-element-start-tag-in-select-in-table +(1,41): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <table> +| <tbody> +| <tr> + +#data +<!doctype html><table><tr><select><td> +#errors +(1,34): unexpected-start-tag-implies-table-voodoo +(1,38): unexpected-table-element-start-tag-in-select-in-table +(1,38): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <table> +| <tbody> +| <tr> +| <td> + +#data +<!doctype html><table><tr><td><select><td> +#errors +(1,42): unexpected-table-element-start-tag-in-select-in-table +(1,42): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <tbody> +| <tr> +| <td> +| <select> +| <td> + +#data +<!doctype html><table><tr><th><select><td> +#errors +(1,42): unexpected-table-element-start-tag-in-select-in-table +(1,42): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <tbody> +| <tr> +| <th> +| <select> +| <td> + +#data +<!doctype html><table><caption><select><tr> +#errors +(1,43): unexpected-table-element-start-tag-in-select-in-table +(1,43): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <caption> +| <select> +| <tbody> +| <tr> + +#data +<!doctype html><select><tr> +#errors +(1,27): unexpected-start-tag-in-select +(1,27): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> + +#data +<!doctype html><select><td> +#errors +(1,27): unexpected-start-tag-in-select +(1,27): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> + +#data +<!doctype html><select><th> +#errors +(1,27): unexpected-start-tag-in-select +(1,27): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> + +#data +<!doctype html><select><tbody> +#errors +(1,30): unexpected-start-tag-in-select +(1,30): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> + +#data +<!doctype html><select><thead> +#errors +(1,30): unexpected-start-tag-in-select +(1,30): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> + +#data +<!doctype html><select><tfoot> +#errors +(1,30): unexpected-start-tag-in-select +(1,30): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> + +#data +<!doctype html><select><caption> +#errors +(1,32): unexpected-start-tag-in-select +(1,32): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> + +#data +<!doctype html><table><tr></table>a +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <tbody> +| <tr> +| "a" diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests18.dat b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests18.dat new file mode 100644 index 000000000..05363b392 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests18.dat @@ -0,0 +1,534 @@ +#data +<plaintext></plaintext> +#errors +11: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”. +23: End of file seen and there were open elements. +11: Unclosed element “plaintext”. +#document +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" + +#data +<!doctype html><plaintext></plaintext> +#errors +(1,38): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" + +#data +<!doctype html><html><plaintext></plaintext> +#errors +44: End of file seen and there were open elements. +32: Unclosed element “plaintext”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" + +#data +<!doctype html><head><plaintext></plaintext> +#errors +44: End of file seen and there were open elements. +32: Unclosed element “plaintext”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" + +#data +<!doctype html><html><noscript><plaintext></plaintext> +#errors +42: Bad start tag in “plaintext” in “head”. +54: End of file seen and there were open elements. +42: Unclosed element “plaintext”. +#script-off +#document +| <!DOCTYPE html> +| <html> +| <head> +| <noscript> +| <body> +| <plaintext> +| "</plaintext>" + +#data +<!doctype html></head><plaintext></plaintext> +#errors +45: End of file seen and there were open elements. +33: Unclosed element “plaintext”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" + +#data +<!doctype html><body><plaintext></plaintext> +#errors +44: End of file seen and there were open elements. +32: Unclosed element “plaintext”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" + +#data +<!doctype html><table><plaintext></plaintext> +#errors +(1,33): foster-parenting-start-tag +(1,45): foster-parenting-character +(1,45): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" +| <table> + +#data +<!doctype html><table><tbody><plaintext></plaintext> +#errors +(1,40): foster-parenting-start-tag +(1,41): foster-parenting-character +(1,52): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" +| <table> +| <tbody> + +#data +<!doctype html><table><tbody><tr><plaintext></plaintext> +#errors +(1,44): foster-parenting-start-tag +(1,56): foster-parenting-character +(1,56): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" +| <table> +| <tbody> +| <tr> + +#data +<!doctype html><table><td><plaintext></plaintext> +#errors +(1,26): unexpected-cell-in-table-body +(1,49): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <tbody> +| <tr> +| <td> +| <plaintext> +| "</plaintext>" + +#data +<!doctype html><table><caption><plaintext></plaintext> +#errors +(1,54): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <caption> +| <plaintext> +| "</plaintext>" + +#data +<!doctype html><table><colgroup><plaintext></plaintext> +#errors +43: Start tag “plaintext” seen in “table”. +55: Misplaced non-space characters inside a table. +55: End of file seen and there were open elements. +43: Unclosed element “plaintext”. +22: Unclosed element “table”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" +| <table> +| <colgroup> + +#data +<!doctype html><select><plaintext></plaintext>X +#errors +34: Stray start tag “plaintext”. +46: Stray end tag “plaintext”. +47: End of file seen and there were open elements. +23: Unclosed element “select”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| "X" + +#data +<!doctype html><table><select><plaintext>a<caption>b +#errors +30: Start tag “select” seen in “table”. +41: Stray start tag “plaintext”. +51: “caption” start tag with “select” open. +52: End of file seen and there were open elements. +51: Unclosed element “caption”. +22: Unclosed element “table”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| "a" +| <table> +| <caption> +| "b" + +#data +<!doctype html><template><plaintext>a</template>b +#errors +49: End of file seen and there were open elements. +36: Unclosed element “plaintext”. +25: Unclosed element “template”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <template> +| content +| <plaintext> +| "a</template>b" +| <body> + +#data +<!doctype html><body></body><plaintext></plaintext> +#errors +39: Stray start tag “plaintext”. +51: End of file seen and there were open elements. +39: Unclosed element “plaintext”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" + +#data +<!doctype html><frameset><plaintext></plaintext> +#errors +36: Stray start tag “plaintext”. +48: Stray end tag “plaintext”. +48: End of file seen and there were open elements. +25: Unclosed element “frameset”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> + +#data +<!doctype html><frameset></frameset><plaintext></plaintext> +#errors +47: Stray start tag “plaintext”. +59: Stray end tag “plaintext”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> + +#data +<!doctype html><body></body></html><plaintext></plaintext> +#errors +46: Stray start tag “plaintext”. +58: End of file seen and there were open elements. +46: Unclosed element “plaintext”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" + +#data +<!doctype html><frameset></frameset></html><plaintext></plaintext> +#errors +54: Stray start tag “plaintext”. +66: Stray end tag “plaintext”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> + +#data +<!doctype html><svg><plaintext>a</plaintext>b +#errors +45: End of file seen and there were open elements. +20: Unclosed element “svg”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <svg svg> +| <svg plaintext> +| "a" +| "b" + +#data +<!doctype html><svg><title><plaintext>a</plaintext>b +#errors +52: End of file seen and there were open elements. +38: Unclosed element “plaintext”. +27: Unclosed element “title”. +20: Unclosed element “svg”. +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <svg svg> +| <svg title> +| <plaintext> +| "a</plaintext>b" + +#data +<!doctype html><table><tr><style></script></style>abc +#errors +(1,51): foster-parenting-character +(1,52): foster-parenting-character +(1,53): foster-parenting-character +(1,53): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| "abc" +| <table> +| <tbody> +| <tr> +| <style> +| "</script>" + +#data +<!doctype html><table><tr><script></style></script>abc +#errors +(1,52): foster-parenting-character +(1,53): foster-parenting-character +(1,54): foster-parenting-character +(1,54): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| "abc" +| <table> +| <tbody> +| <tr> +| <script> +| "</style>" + +#data +<!doctype html><table><caption><style></script></style>abc +#errors +(1,58): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <caption> +| <style> +| "</script>" +| "abc" + +#data +<!doctype html><table><td><style></script></style>abc +#errors +(1,26): unexpected-cell-in-table-body +(1,53): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <tbody> +| <tr> +| <td> +| <style> +| "</script>" +| "abc" + +#data +<!doctype html><select><script></style></script>abc +#errors +(1,51): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <script> +| "</style>" +| "abc" + +#data +<!doctype html><table><select><script></style></script>abc +#errors +(1,30): unexpected-start-tag-implies-table-voodoo +(1,58): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <script> +| "</style>" +| "abc" +| <table> + +#data +<!doctype html><table><tr><select><script></style></script>abc +#errors +(1,34): unexpected-start-tag-implies-table-voodoo +(1,62): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <script> +| "</style>" +| "abc" +| <table> +| <tbody> +| <tr> + +#data +<!doctype html><frameset></frameset><noframes>abc +#errors +(1,49): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| <noframes> +| "abc" + +#data +<!doctype html><frameset></frameset><noframes>abc</noframes><!--abc--> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| <noframes> +| "abc" +| <!-- abc --> + +#data +<!doctype html><frameset></frameset></html><noframes>abc +#errors +(1,56): expected-named-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| <noframes> +| "abc" + +#data +<!doctype html><frameset></frameset></html><noframes>abc</noframes><!--abc--> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| <noframes> +| "abc" +| <!-- abc --> + +#data +<!doctype html><table><tr></tbody><tfoot> +#errors +(1,41): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <tbody> +| <tr> +| <tfoot> + +#data +<!doctype html><table><td><svg></svg>abc<td> +#errors +(1,26): unexpected-cell-in-table-body +(1,44): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <tbody> +| <tr> +| <td> +| <svg svg> +| "abc" +| <td> diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests19.dat b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests19.dat new file mode 100644 index 000000000..a1897774d --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests19.dat @@ -0,0 +1,1454 @@ +#data +<!doctype html><math><mn DefinitionUrl="foo"> +#errors +(1,45): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <math math> +| <math mn> +| definitionURL="foo" + +#data +<!doctype html><html></p><!--foo--> +#errors +(1,25): end-tag-after-implied-root +#document +| <!DOCTYPE html> +| <html> +| <!-- foo --> +| <head> +| <body> + +#data +<!doctype html><head></head></p><!--foo--> +#errors +(1,32): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <!-- foo --> +| <body> + +#data +<!doctype html><body><p><pre> +#errors +(1,29): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <pre> + +#data +<!doctype html><body><p><listing> +#errors +(1,33): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <listing> + +#data +<!doctype html><p><plaintext> +#errors +(1,29): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <plaintext> + +#data +<!doctype html><p><h1> +#errors +(1,22): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <h1> + +#data +<!doctype html><isindex type="hidden"> +#errors +(1,38): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <isindex> +| type="hidden" + +#data +<!doctype html><ruby><p><rp> +#errors +(1,28): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <ruby> +| <p> +| <rp> + +#data +<!doctype html><ruby><div><span><rp> +#errors +(1,36): XXX-undefined-error +(1,36): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <ruby> +| <div> +| <span> +| <rp> + +#data +<!doctype html><ruby><div><p><rp> +#errors +(1,33): XXX-undefined-error +(1,33): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <ruby> +| <div> +| <p> +| <rp> + +#data +<!doctype html><ruby><p><rt> +#errors +(1,28): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <ruby> +| <p> +| <rt> + +#data +<!doctype html><ruby><div><span><rt> +#errors +(1,36): XXX-undefined-error +(1,36): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <ruby> +| <div> +| <span> +| <rt> + +#data +<!doctype html><ruby><div><p><rt> +#errors +(1,33): XXX-undefined-error +(1,33): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <ruby> +| <div> +| <p> +| <rt> + +#data +<html><ruby>a<rb>b<rt></ruby></html> +#errors +(1,6): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <body> +| <ruby> +| "a" +| <rb> +| "b" +| <rt> + +#data +<html><ruby>a<rp>b<rt></ruby></html> +#errors +(1,6): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <body> +| <ruby> +| "a" +| <rp> +| "b" +| <rt> + +#data +<html><ruby>a<rt>b<rt></ruby></html> +#errors +(1,6): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <body> +| <ruby> +| "a" +| <rt> +| "b" +| <rt> + +#data +<html><ruby>a<rtc>b<rt>c<rb>d</ruby></html> +#errors +(1,6): expected-doctype-but-got-start-tag +#document +| <html> +| <head> +| <body> +| <ruby> +| "a" +| <rtc> +| "b" +| <rt> +| "c" +| <rb> +| "d" + +#data +<!doctype html><math/><foo> +#errors +(1,27): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <math math> +| <foo> + +#data +<!doctype html><svg/><foo> +#errors +(1,26): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <svg svg> +| <foo> + +#data +<!doctype html><div></body><!--foo--> +#errors +(1,27): expected-one-end-tag-but-got-another +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <div> +| <!-- foo --> + +#data +<!doctype html><h1><div><h3><span></h1>foo +#errors +(1,39): end-tag-too-early +(1,42): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <h1> +| <div> +| <h3> +| <span> +| "foo" + +#data +<!doctype html><p></h3>foo +#errors +(1,23): end-tag-too-early +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| "foo" + +#data +<!doctype html><h3><li>abc</h2>foo +#errors +(1,31): end-tag-too-early +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <h3> +| <li> +| "abc" +| "foo" + +#data +<!doctype html><table>abc<!--foo--> +#errors +(1,23): foster-parenting-character +(1,24): foster-parenting-character +(1,25): foster-parenting-character +(1,35): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| "abc" +| <table> +| <!-- foo --> + +#data +<!doctype html><table> <!--foo--> +#errors +(1,34): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| " " +| <!-- foo --> + +#data +<!doctype html><table> b <!--foo--> +#errors +(1,23): foster-parenting-character +(1,24): foster-parenting-character +(1,25): foster-parenting-character +(1,35): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| " b " +| <table> +| <!-- foo --> + +#data +<!doctype html><select><option><option> +#errors +(1,39): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <option> +| <option> + +#data +<!doctype html><select><option></optgroup> +#errors +(1,42): unexpected-end-tag-in-select +(1,42): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <option> + +#data +<!doctype html><select><option></optgroup> +#errors +(1,42): unexpected-end-tag-in-select +(1,42): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <option> + +#data +<!doctype html><dd><optgroup><dd> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <dd> +| <optgroup> +| <dd> + +#data +<!doctype html><p><math><mi><p><h1> +#errors +(1,35): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <math math> +| <math mi> +| <p> +| <h1> + +#data +<!doctype html><p><math><mo><p><h1> +#errors +(1,35): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <math math> +| <math mo> +| <p> +| <h1> + +#data +<!doctype html><p><math><mn><p><h1> +#errors +(1,35): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <math math> +| <math mn> +| <p> +| <h1> + +#data +<!doctype html><p><math><ms><p><h1> +#errors +(1,35): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <math math> +| <math ms> +| <p> +| <h1> + +#data +<!doctype html><p><math><mtext><p><h1> +#errors +(1,38): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <math math> +| <math mtext> +| <p> +| <h1> + +#data +<!doctype html><frameset></noframes> +#errors +(1,36): unexpected-end-tag-in-frameset +(1,36): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> + +#data +<!doctype html><html c=d><body></html><html a=b> +#errors +(1,48): non-html-root +#document +| <!DOCTYPE html> +| <html> +| a="b" +| c="d" +| <head> +| <body> + +#data +<!doctype html><html c=d><frameset></frameset></html><html a=b> +#errors +(1,63): non-html-root +#document +| <!DOCTYPE html> +| <html> +| a="b" +| c="d" +| <head> +| <frameset> + +#data +<!doctype html><html><frameset></frameset></html><!--foo--> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| <!-- foo --> + +#data +<!doctype html><html><frameset></frameset></html> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| " " + +#data +<!doctype html><html><frameset></frameset></html>abc +#errors +(1,50): expected-eof-but-got-char +(1,51): expected-eof-but-got-char +(1,52): expected-eof-but-got-char +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> + +#data +<!doctype html><html><frameset></frameset></html><p> +#errors +(1,52): expected-eof-but-got-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> + +#data +<!doctype html><html><frameset></frameset></html></p> +#errors +(1,53): expected-eof-but-got-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> + +#data +<html><frameset></frameset></html><!doctype html> +#errors +(1,6): expected-doctype-but-got-start-tag +(1,49): unexpected-doctype +#document +| <html> +| <head> +| <frameset> + +#data +<!doctype html><body><frameset> +#errors +(1,31): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> + +#data +<!doctype html><p><frameset><frame> +#errors +(1,28): unexpected-start-tag +(1,35): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| <frame> + +#data +<!doctype html><p>a<frameset> +#errors +(1,29): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| "a" + +#data +<!doctype html><p> <frameset><frame> +#errors +(1,29): unexpected-start-tag +(1,36): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| <frame> + +#data +<!doctype html><pre><frameset> +#errors +(1,30): unexpected-start-tag +(1,30): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <pre> + +#data +<!doctype html><listing><frameset> +#errors +(1,34): unexpected-start-tag +(1,34): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <listing> + +#data +<!doctype html><li><frameset> +#errors +(1,29): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <li> + +#data +<!doctype html><dd><frameset> +#errors +(1,29): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <dd> + +#data +<!doctype html><dt><frameset> +#errors +(1,29): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <dt> + +#data +<!doctype html><button><frameset> +#errors +(1,33): unexpected-start-tag +(1,33): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <button> + +#data +<!doctype html><applet><frameset> +#errors +(1,33): unexpected-start-tag +(1,33): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <applet> + +#data +<!doctype html><marquee><frameset> +#errors +(1,34): unexpected-start-tag +(1,34): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <marquee> + +#data +<!doctype html><object><frameset> +#errors +(1,33): unexpected-start-tag +(1,33): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <object> + +#data +<!doctype html><table><frameset> +#errors +(1,32): unexpected-start-tag-implies-table-voodoo +(1,32): unexpected-start-tag +(1,32): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> + +#data +<!doctype html><area><frameset> +#errors +(1,31): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <area> + +#data +<!doctype html><basefont><frameset> +#errors +(1,35): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <basefont> +| <frameset> + +#data +<!doctype html><bgsound><frameset> +#errors +(1,34): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <bgsound> +| <frameset> + +#data +<!doctype html><br><frameset> +#errors +(1,29): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <br> + +#data +<!doctype html><embed><frameset> +#errors +(1,32): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <embed> + +#data +<!doctype html><img><frameset> +#errors +(1,30): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <img> + +#data +<!doctype html><input><frameset> +#errors +(1,32): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <input> + +#data +<!doctype html><keygen><frameset> +#errors +(1,33): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <keygen> + +#data +<!doctype html><wbr><frameset> +#errors +(1,30): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <wbr> + +#data +<!doctype html><hr><frameset> +#errors +(1,29): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <hr> + +#data +<!doctype html><textarea></textarea><frameset> +#errors +(1,46): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <textarea> + +#data +<!doctype html><xmp></xmp><frameset> +#errors +(1,36): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <xmp> + +#data +<!doctype html><iframe></iframe><frameset> +#errors +(1,42): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <iframe> + +#data +<!doctype html><select></select><frameset> +#errors +(1,42): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> + +#data +<!doctype html><svg></svg><frameset><frame> +#errors +(1,36): unexpected-start-tag +(1,43): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| <frame> + +#data +<!doctype html><math></math><frameset><frame> +#errors +(1,38): unexpected-start-tag +(1,45): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| <frame> + +#data +<!doctype html><svg><foreignObject><div> <frameset><frame> +#errors +(1,51): unexpected-start-tag +(1,58): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| <frame> + +#data +<!doctype html><svg>a</svg><frameset><frame> +#errors +(1,37): unexpected-start-tag +(1,44): unexpected-start-tag-ignored +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <svg svg> +| "a" + +#data +<!doctype html><svg> </svg><frameset><frame> +#errors +(1,37): unexpected-start-tag +(1,44): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| <frame> + +#data +<html>aaa<frameset></frameset> +#errors +(1,6): expected-doctype-but-got-start-tag +(1,19): unexpected-start-tag +(1,30): unexpected-end-tag +#document +| <html> +| <head> +| <body> +| "aaa" + +#data +<html> a <frameset></frameset> +#errors +(1,6): expected-doctype-but-got-start-tag +(1,19): unexpected-start-tag +(1,30): unexpected-end-tag +#document +| <html> +| <head> +| <body> +| "a " + +#data +<!doctype html><div><frameset> +#errors +(1,30): unexpected-start-tag +(1,30): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> + +#data +<!doctype html><div><body><frameset> +#errors +(1,26): unexpected-start-tag +(1,36): unexpected-start-tag +(1,36): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <div> + +#data +<!doctype html><p><math></p>a +#errors +(1,28): unexpected-end-tag +(1,28): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <math math> +| "a" + +#data +<!doctype html><p><math><mn><span></p>a +#errors +(1,38): unexpected-end-tag +(1,39): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <math math> +| <math mn> +| <span> +| <p> +| "a" + +#data +<!doctype html><math></html> +#errors +(1,28): unexpected-end-tag +(1,28): expected-one-end-tag-but-got-another +(1,28): unexpected-end-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <math math> + +#data +<!doctype html><meta charset="ascii"> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <meta> +| charset="ascii" +| <body> + +#data +<!doctype html><meta http-equiv="content-type" content="text/html;charset=ascii"> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <meta> +| content="text/html;charset=ascii" +| http-equiv="content-type" +| <body> + +#data +<!doctype html><head><!--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa--><meta charset="utf8"> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <!-- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --> +| <meta> +| charset="utf8" +| <body> + +#data +<!doctype html><html a=b><head></head><html c=d> +#errors +(1,48): non-html-root +#document +| <!DOCTYPE html> +| <html> +| a="b" +| c="d" +| <head> +| <body> + +#data +<!doctype html><image/> +#errors +(1,23): image-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <img> + +#data +<!doctype html>a<i>b<table>c<b>d</i>e</b>f +#errors +(1,28): foster-parenting-character +(1,31): foster-parenting-start-tag +(1,32): foster-parenting-character +(1,36): foster-parenting-end-tag +(1,36): adoption-agency-1.3 +(1,37): foster-parenting-character +(1,41): foster-parenting-end-tag +(1,42): foster-parenting-character +(1,42): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| "a" +| <i> +| "bc" +| <b> +| "de" +| "f" +| <table> + +#data +<!doctype html><table><i>a<b>b<div>c<a>d</i>e</b>f +#errors +(1,25): foster-parenting-start-tag +(1,26): foster-parenting-character +(1,29): foster-parenting-start-tag +(1,30): foster-parenting-character +(1,35): foster-parenting-start-tag +(1,36): foster-parenting-character +(1,39): foster-parenting-start-tag +(1,40): foster-parenting-character +(1,44): foster-parenting-end-tag +(1,44): adoption-agency-1.3 +(1,44): adoption-agency-1.3 +(1,45): foster-parenting-character +(1,49): foster-parenting-end-tag +(1,49): adoption-agency-1.3 +(1,49): adoption-agency-1.3 +(1,50): foster-parenting-character +(1,50): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <i> +| "a" +| <b> +| "b" +| <b> +| <div> +| <b> +| <i> +| "c" +| <a> +| "d" +| <a> +| "e" +| <a> +| "f" +| <table> + +#data +<!doctype html><i>a<b>b<div>c<a>d</i>e</b>f +#errors +(1,37): adoption-agency-1.3 +(1,37): adoption-agency-1.3 +(1,42): adoption-agency-1.3 +(1,42): adoption-agency-1.3 +(1,43): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <i> +| "a" +| <b> +| "b" +| <b> +| <div> +| <b> +| <i> +| "c" +| <a> +| "d" +| <a> +| "e" +| <a> +| "f" + +#data +<!doctype html><table><i>a<b>b<div>c</i> +#errors +(1,25): foster-parenting-start-tag +(1,26): foster-parenting-character +(1,29): foster-parenting-start-tag +(1,30): foster-parenting-character +(1,35): foster-parenting-start-tag +(1,36): foster-parenting-character +(1,40): foster-parenting-end-tag +(1,40): adoption-agency-1.3 +(1,40): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <i> +| "a" +| <b> +| "b" +| <b> +| <div> +| <i> +| "c" +| <table> + +#data +<!doctype html><table><i>a<b>b<div>c<a>d</i>e</b>f +#errors +(1,25): foster-parenting-start-tag +(1,26): foster-parenting-character +(1,29): foster-parenting-start-tag +(1,30): foster-parenting-character +(1,35): foster-parenting-start-tag +(1,36): foster-parenting-character +(1,39): foster-parenting-start-tag +(1,40): foster-parenting-character +(1,44): foster-parenting-end-tag +(1,44): adoption-agency-1.3 +(1,44): adoption-agency-1.3 +(1,45): foster-parenting-character +(1,49): foster-parenting-end-tag +(1,44): adoption-agency-1.3 +(1,44): adoption-agency-1.3 +(1,50): foster-parenting-character +(1,50): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <i> +| "a" +| <b> +| "b" +| <b> +| <div> +| <b> +| <i> +| "c" +| <a> +| "d" +| <a> +| "e" +| <a> +| "f" +| <table> + +#data +<!doctype html><table><i>a<div>b<tr>c<b>d</i>e +#errors +(1,25): foster-parenting-start-tag +(1,26): foster-parenting-character +(1,31): foster-parenting-start-tag +(1,32): foster-parenting-character +(1,37): foster-parenting-character +(1,40): foster-parenting-start-tag +(1,41): foster-parenting-character +(1,45): foster-parenting-end-tag +(1,45): adoption-agency-1.3 +(1,46): foster-parenting-character +(1,46): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <i> +| "a" +| <div> +| "b" +| <i> +| "c" +| <b> +| "d" +| <b> +| "e" +| <table> +| <tbody> +| <tr> + +#data +<!doctype html><table><td><table><i>a<div>b<b>c</i>d +#errors +(1,26): unexpected-cell-in-table-body +(1,36): foster-parenting-start-tag +(1,37): foster-parenting-character +(1,42): foster-parenting-start-tag +(1,43): foster-parenting-character +(1,46): foster-parenting-start-tag +(1,47): foster-parenting-character +(1,51): foster-parenting-end-tag +(1,51): adoption-agency-1.3 +(1,51): adoption-agency-1.3 +(1,52): foster-parenting-character +(1,52): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <tbody> +| <tr> +| <td> +| <i> +| "a" +| <div> +| <i> +| "b" +| <b> +| "c" +| <b> +| "d" +| <table> + +#data +<!doctype html><body><bgsound> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <bgsound> + +#data +<!doctype html><body><basefont> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <basefont> + +#data +<!doctype html><a><b></a><basefont> +#errors +(1,25): adoption-agency-1.3 +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <a> +| <b> +| <basefont> + +#data +<!doctype html><a><b></a><bgsound> +#errors +(1,25): adoption-agency-1.3 +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <a> +| <b> +| <bgsound> + +#data +<!doctype html><figcaption><article></figcaption>a +#errors +(1,49): end-tag-too-early +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <figcaption> +| <article> +| "a" + +#data +<!doctype html><summary><article></summary>a +#errors +(1,43): end-tag-too-early +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <summary> +| <article> +| "a" + +#data +<!doctype html><p><a><plaintext>b +#errors +(1,32): unexpected-end-tag +(1,33): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <a> +| <plaintext> +| <a> +| "b" + +#data +<!DOCTYPE html><div>a<a></div>b<p>c</p>d +#errors +(1,30): end-tag-too-early +(1,40): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <div> +| "a" +| <a> +| <a> +| "b" +| <p> +| "c" +| "d" diff --git a/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests2.dat b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests2.dat new file mode 100644 index 000000000..b44fec4d7 --- /dev/null +++ b/pkg/mod/golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8/html/testdata/webkit/tests2.dat @@ -0,0 +1,821 @@ +#data +<!DOCTYPE html>Test +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| "Test" + +#data +<textarea>test</div>test +#errors +(1,10): expected-doctype-but-got-start-tag +(1,24): expected-closing-tag-but-got-eof +#document +| <html> +| <head> +| <body> +| <textarea> +| "test</div>test" + +#data +<table><td> +#errors +(1,7): expected-doctype-but-got-start-tag +(1,11): unexpected-cell-in-table-body +(1,11): expected-closing-tag-but-got-eof +#document +| <html> +| <head> +| <body> +| <table> +| <tbody> +| <tr> +| <td> + +#data +<table><td>test</tbody></table> +#errors +(1,7): expected-doctype-but-got-start-tag +(1,11): unexpected-cell-in-table-body +#document +| <html> +| <head> +| <body> +| <table> +| <tbody> +| <tr> +| <td> +| "test" + +#data +<frame>test +#errors +(1,7): expected-doctype-but-got-start-tag +(1,7): unexpected-start-tag-ignored +#document +| <html> +| <head> +| <body> +| "test" + +#data +<!DOCTYPE html><frameset>test +#errors +(1,29): unexpected-char-in-frameset +(1,29): unexpected-char-in-frameset +(1,29): unexpected-char-in-frameset +(1,29): unexpected-char-in-frameset +(1,29): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> + +#data +<!DOCTYPE html><frameset> te st +#errors +(1,29): unexpected-char-in-frameset +(1,29): unexpected-char-in-frameset +(1,29): unexpected-char-in-frameset +(1,29): unexpected-char-in-frameset +(1,29): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| " " + +#data +<!DOCTYPE html><frameset></frameset> te st +#errors +(1,29): unexpected-char-after-frameset +(1,29): unexpected-char-after-frameset +(1,29): unexpected-char-after-frameset +(1,29): unexpected-char-after-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> +| " " + +#data +<!DOCTYPE html><frameset><!DOCTYPE html> +#errors +(1,40): unexpected-doctype +(1,40): eof-in-frameset +#document +| <!DOCTYPE html> +| <html> +| <head> +| <frameset> + +#data +<!DOCTYPE html><font><p><b>test</font> +#errors +(1,38): adoption-agency-1.3 +(1,38): adoption-agency-1.3 +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <font> +| <p> +| <font> +| <b> +| "test" + +#data +<!DOCTYPE html><dt><div><dd> +#errors +(1,28): end-tag-too-early +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <dt> +| <div> +| <dd> + +#data +<script></x +#errors +(1,8): expected-doctype-but-got-start-tag +(1,11): expected-named-closing-tag-but-got-eof +#document +| <html> +| <head> +| <script> +| "</x" +| <body> + +#data +<table><plaintext><td> +#errors +(1,7): expected-doctype-but-got-start-tag +(1,18): unexpected-start-tag-implies-table-voodoo +(1,22): foster-parenting-character-in-table +(1,22): foster-parenting-character-in-table +(1,22): foster-parenting-character-in-table +(1,22): foster-parenting-character-in-table +(1,22): eof-in-table +#document +| <html> +| <head> +| <body> +| <plaintext> +| "<td>" +| <table> + +#data +<plaintext></plaintext> +#errors +(1,11): expected-doctype-but-got-start-tag +(1,23): expected-closing-tag-but-got-eof +#document +| <html> +| <head> +| <body> +| <plaintext> +| "</plaintext>" + +#data +<!DOCTYPE html><table><tr>TEST +#errors +(1,30): foster-parenting-character-in-table +(1,30): foster-parenting-character-in-table +(1,30): foster-parenting-character-in-table +(1,30): foster-parenting-character-in-table +(1,30): eof-in-table +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| "TEST" +| <table> +| <tbody> +| <tr> + +#data +<!DOCTYPE html><body t1=1><body t2=2><body t3=3 t4=4> +#errors +(1,37): unexpected-start-tag +(1,53): unexpected-start-tag +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| t1="1" +| t2="2" +| t3="3" +| t4="4" + +#data +</b test +#errors +(1,8): eof-in-attribute-name +(1,8): expected-doctype-but-got-eof +#new-errors +(1:9) eof-in-tag +#document +| <html> +| <head> +| <body> + +#data +<!DOCTYPE html></b test<b &=&>X +#errors +(1,24): invalid-character-in-attribute-name +(1,32): named-entity-without-semicolon +(1,33): attributes-in-end-tag +(1,33): unexpected-end-tag-before-html +#new-errors +(1:24) unexpected-character-in-attribute-name +(1:33) missing-semicolon-after-character-reference +(1:33) end-tag-with-attributes +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| "X" + +#data +<!doctypehtml><scrIPt type=text/x-foobar;baz>X</SCRipt +#errors +(1,9): need-space-after-doctype +(1,54): expected-named-closing-tag-but-got-eof +#new-errors +(1:10) missing-whitespace-before-doctype-name +#document +| <!DOCTYPE html> +| <html> +| <head> +| <script> +| type="text/x-foobar;baz" +| "X</SCRipt" +| <body> + +#data +& +#errors +(1,1): expected-doctype-but-got-chars +#document +| <html> +| <head> +| <body> +| "&" + +#data +&# +#errors +(1,2): expected-numeric-entity +(1,2): expected-doctype-but-got-chars +#new-errors +(1:3) absence-of-digits-in-numeric-character-reference +#document +| <html> +| <head> +| <body> +| "&#" + +#data +&#X +#errors +(1,3): expected-numeric-entity +(1,3): expected-doctype-but-got-chars +#new-errors +(1:4) absence-of-digits-in-numeric-character-reference +#document +| <html> +| <head> +| <body> +| "&#X" + +#data +&#x +#errors +(1,3): expected-numeric-entity +(1,3): expected-doctype-but-got-chars +#new-errors +(1:4) absence-of-digits-in-numeric-character-reference +#document +| <html> +| <head> +| <body> +| "&#x" + +#data +- +#errors +(1,4): numeric-entity-without-semicolon +(1,4): expected-doctype-but-got-chars +#new-errors +(1:5) missing-semicolon-after-character-reference +#document +| <html> +| <head> +| <body> +| "-" + +#data +&x-test +#errors +(1,2): expected-doctype-but-got-chars +#document +| <html> +| <head> +| <body> +| "&x-test" + +#data +<!doctypehtml><p><li> +#errors +(1,9): need-space-after-doctype +#new-errors +(1:10) missing-whitespace-before-doctype-name +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <li> + +#data +<!doctypehtml><p><dt> +#errors +(1,9): need-space-after-doctype +#new-errors +(1:10) missing-whitespace-before-doctype-name +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <dt> + +#data +<!doctypehtml><p><dd> +#errors +(1,9): need-space-after-doctype +#new-errors +(1:10) missing-whitespace-before-doctype-name +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <dd> + +#data +<!doctypehtml><p><form> +#errors +(1,9): need-space-after-doctype +(1,23): expected-closing-tag-but-got-eof +#new-errors +(1:10) missing-whitespace-before-doctype-name +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| <form> + +#data +<!DOCTYPE html><p></P>X +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <p> +| "X" + +#data +& +#errors +(1,4): named-entity-without-semicolon +(1,4): expected-doctype-but-got-chars +#new-errors +(1:5) missing-semicolon-after-character-reference +#document +| <html> +| <head> +| <body> +| "&" + +#data +&AMp; +#errors +(1,3): expected-named-entity +(1,3): expected-doctype-but-got-chars +#new-errors +(1:5) unknown-named-character-reference +#document +| <html> +| <head> +| <body> +| "&AMp;" + +#data +<!DOCTYPE html><html><head></head><body><thisISasillyTESTelementNameToMakeSureCrazyTagNamesArePARSEDcorrectLY> +#errors +(1,110): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <thisisasillytestelementnametomakesurecrazytagnamesareparsedcorrectly> + +#data +<!DOCTYPE html>X</body>X +#errors +(1,24): unexpected-char-after-body +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| "XX" + +#data +<!DOCTYPE html><!-- X +#errors +(1,21): eof-in-comment +#new-errors +(1:22) eof-in-comment +#document +| <!DOCTYPE html> +| <!-- X --> +| <html> +| <head> +| <body> + +#data +<!DOCTYPE html><table><caption>test TEST</caption><td>test +#errors +(1,54): unexpected-cell-in-table-body +(1,58): expected-closing-tag-but-got-eof +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <table> +| <caption> +| "test TEST" +| <tbody> +| <tr> +| <td> +| "test" + +#data +<!DOCTYPE html><select><option><optgroup> +#errors +(1,41): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <option> +| <optgroup> + +#data +<!DOCTYPE html><select><optgroup><option></optgroup><option><select><option> +#errors +(1,68): unexpected-select-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <optgroup> +| <option> +| <option> +| <option> + +#data +<!DOCTYPE html><select><optgroup><option><optgroup> +#errors +(1,51): eof-in-select +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <optgroup> +| <option> +| <optgroup> + +#data +<!DOCTYPE html><datalist><option>foo</datalist>bar +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <datalist> +| <option> +| "foo" +| "bar" + +#data +<!DOCTYPE html><font><input><input></font> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <font> +| <input> +| <input> + +#data +<!DOCTYPE html><!-- XXX - XXX --> +#errors +#document +| <!DOCTYPE html> +| <!-- XXX - XXX --> +| <html> +| <head> +| <body> + +#data +<!DOCTYPE html><!-- XXX - XXX +#errors +(1,29): eof-in-comment +#new-errors +(1:30) eof-in-comment +#document +| <!DOCTYPE html> +| <!-- XXX - XXX --> +| <html> +| <head> +| <body> + +#data +<!DOCTYPE html><!-- XXX - XXX - XXX --> +#errors +#document +| <!DOCTYPE html> +| <!-- XXX - XXX - XXX --> +| <html> +| <head> +| <body> + +#data +test +test +#errors +(2,4): expected-doctype-but-got-chars +#document +| <html> +| <head> +| <body> +| "test +test" + +#data +<!DOCTYPE html><body><title>test</body> +#errors +#document +| +| +| +| +| +| "test</body>" + +#data +<!DOCTYPE html><body><title>X +#errors +#document +| +| +| +| +| +| "X" +| <meta> +| name="z" +| <link> +| rel="foo" +| <style> +| " +x { content:"</style" } " + +#data +<!DOCTYPE html><select><optgroup></optgroup></select> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> +| <select> +| <optgroup> + +#data + + +#errors +(2,1): expected-doctype-but-got-eof +#document +| <html> +| <head> +| <body> + +#data +<!DOCTYPE html> <html> +#errors +#document +| <!DOCTYPE html> +| <html> +| <head> +| <body> + +#data +<!DOCTYPE html><script> +</script> <title>x +#errors +#document +| +| +| +| +#errors +(1,6): expected-doctype-but-got-start-tag +(1,21): unexpected-start-tag-out-of-my-head +#document +| +| +| +#errors +(1,6): expected-doctype-but-got-start-tag +(1,28): unexpected-start-tag-out-of-my-head +(1,52): unexpected-start-tag-out-of-my-head +#document +| +| +| +#errors +(1,6): expected-doctype-but-got-start-tag +#document +| +| +| +| +| "x" +| x +#errors +(1,7): expected-doctype-but-got-start-tag +#document +| +| +| --> x +#errors +(1,7): expected-doctype-but-got-start-tag +(1,34): unexpected-end-tag +#document +| +| +| x +#errors +(1,7): expected-doctype-but-got-start-tag +#document +| +| +| x +#errors +(1,7): expected-doctype-but-got-start-tag +#document +| +| +| x +#errors +(1,7): expected-doctype-but-got-start-tag +#document +| +| +|

          +#errors +#document +| +| +| +| +| +| ddd +#errors +(1,6): expected-doctype-but-got-start-tag +(1,21): unexpected-start-tag-out-of-my-head +#document +| +| +| +#errors +(1,3): expected-doctype-but-got-start-tag +(1,41): adoption-agency-1.3 +#document +| +| +| +| +|
        4. +| +| ", + "