https://wutheringwaves.gg/wp-content/plugins/dotgg-game/common/js/async/4857.649f48d84717385194aa.js
1"use strict";(self.webpackChunkallyourbasedotgg=self.webpackChunkallyourbasedotgg||[]).push([[4857],{38841(e,t,a){a.d(t,{DJ:()=>s,UR:()=>h,vR:()=>p,xd:()=>c});var r=a(51700),o=a(79063),n=a(86031),i=a(55612),d=a(81616),l=a(12434);async function c(){0===n.SA.core.metaDataVersion&&await(0,r.Dn)();const e=`/cgfw/getarchetypes?game=${l.Ay.TheGame}&cache=${n.SA.core.metaDataVersion}`,t=await i.A.get(e,void 0,{url:`https://api.dotgg.gg${e}`}),a=(0,o.YK)(t,"getarchetypes");return d.un.updateState(a),a}async function s(){0===n.SA.core.metaDataVersion&&await(0,r.Dn)();const e=`/cgfw/gettierlist?game=${l.Ay.TheGame}&cache=${n.SA.core.metaDataVersion}`,t=await i.A.get(e,void 0,{url:`https://api.dotgg.gg${e}`}),a=(0,o.YK)(t,"gettierlist");return d.as.updateState(a),a}async function p(){0===n.SA.core.metaDataVersion&&await(0,r.Dn)();const e=`/cgfw/getstatspoints?game=${l.Ay.TheGame}&cache=${n.SA.core.metaDataVersion}`;return await i.A.get(e,void 0,{url:`https://api.dotgg.gg${e}`})}async function h(e){0===n.SA.core.metaDataVersion&&await(0,r.Dn)();const t=`/cgfw/getarchetypesstat?game=${l.Ay.TheGame}${e?`&date=${e}`:""}&cache=${n.SA.core.metaDataVersion}`,a=await i.A.get(t,void 0,{url:`https://api.dotgg.gg${t}`}),c=(0,o.YK)(a,"getarchetypesstat").map(e=>({...e,cards:e.cards??{}}));return d.lG.updateState(c),c}},79063(e,t,a){a.d(t,{ST:()=>s,YK:()=>c,z7:()=>p});var r=a(8879),o=a(89629);const n=e=>"string"==typeof e||"number"==typeof e||"boolean"==typeof e,i=(e,t)=>r.lqM(r.FsL(r.L5J(),r.pdi(e)),t),d=(e,t)=>{const a="number"==typeof e?e:parseFloat(String(e));return Number.isFinite(a)?a:t},l=(e,t)=>t.flatMap(t=>{const a=r.xLC(e,t);return a.success?[a.output]:[]});function c(e,t){return Array.isArray(e)?e:(""!==e&&null!=e&&(0,o.yb)(t,`expected array, got ${typeof e}: ${String(e).slice(0,60)}`),[])}function s(e,t){return null==e||"object"!=typeof e||Array.isArray(e)?(""!==e&&null!=e&&(0,o.yb)(t,`expected object, got ${typeof e}: ${String(e).slice(0,60)}`),null):e}function p(e,t,a){if(!Array.isArray(t))return""!==t&&null!=t&&(0,o.yb)(a,"expected array, got "+(null===t?"null":typeof t)),[];const n=[];let i=0;for(const a of t){const t=r.xLC(e,a);if(t.success){n.push(t.output);continue}const o=r.xLC(e,{});o.success&&(n.push(o.output),i++)}return i>0&&(0,o.yb)(a,`${i}/${t.length} rows coerced to defaults`),n}a.d(t,["IW",0,()=>i(e=>Array.isArray(e)?e.filter(e=>null!=e).map(e=>String(e)):[],()=>[]),"RJ",0,()=>i(e=>null==e?null:"string"==typeof e?e:n(e)?String(e):null,()=>null),"RY",0,()=>i(e=>{const t={};if("object"==typeof e&&null!==e&&!Array.isArray(e))for(const[a,r]of Object.entries(e)){const e=d(r,NaN);Number.isFinite(e)&&(t[a]=e)}return t},()=>({})),"SA",0,(e=!1)=>i(t=>!0===t||"1"===t||1===t||!1!==t&&"0"!==t&&0!==t&&null!=t&&e,()=>e),"Sb",0,e=>i(t=>Array.isArray(t)?l(e,t):null,()=>null),"ax",0,e=>i(t=>Array.isArray(t)?l(e,t):[],()=>[]),"mg",0,(e,t)=>i(a=>{const o=r.xLC(e,a);return o.success?o.output:t()},t),"n0",0,(e="")=>i(t=>"string"==typeof t?t:n(t)?String(t):e,()=>e),"sX",0,(e=0)=>i(t=>d(t,e),()=>e),"vH",0,e=>i(t=>{const a=r.xLC(e,t);return a.success?a.output:null},()=>null),"vY",0,(e=0)=>i(t=>Array.isArray(t)?t.map(t=>d(t,e)):[],()=>[]),"wG",0,()=>i(e=>Array.isArray(e)||"string"==typeof e?e:null,()=>null)])},42895(e,t,a){var r=a(63679),o=a(28297);const n=r.Ay.div``,i=r.Ay.li``,d=r.Ay.div` 2 display: flex; 3 gap: 10px; 4 font-size: 0.8em; 5 font-weight: normal; 6 flex-basis: 100%; 7 @media only screen and (max-width: 560px) { 8 font-size: 0.6em; 9 } 10`,l=r.Ay.div` 11 display: flex; 12 flex-direction: column; 13`,c=r.Ay.div` 14 background-color: var(--theme-palette-color-8); 15 border-radius: 6px; 16 padding: 10px; 17`,s=r.Ay.div` 18 display: flex; 19 flex-direction: column; 20 gap: 10px; 21 width: ${e=>e.$fullWidth?"100%":"75%"}; 22 @media only screen and (max-width: 1200px) { 23 width: 100%; 24 } 25 ${e=>e.$landscapeSplit?`@media only screen and ${o.MZ} {\n width: calc(100% - 260px);\n min-width: 0;\n }`:""} 26`,p=r.Ay.div` 27 display: flex; 28 align-items: center; 29 gap: 10px; 30`;a.d(t,["DF",0,p,"Ho",0,s,"Rc",0,d,"dQ",0,c,"lE",0,i,"mH",0,n,"vh",0,l])},13530(e,t,a){var r=a(63679),o=a(28297),n=a(32013),i=(a(42895),a(10392));r.Ay.div` 31 display: flex; 32 gap: 10px; 33 width: 440px; 34 flex-wrap: wrap; 35 align-content: flex-start; 36 @media only screen and (max-width: 750px) { 37 gap: 5px; 38 width: 100%; 39 } 40`;const d=r.Ay.textarea` 41 width: 100%; 42 height: 170px; 43 color: var(--theme-palette-color-4) !important; 44 border-top: none;
45 border-right: none; 46 border-bottom: 1px solid var(--theme-palette-color-5); 47 border-left: none; 48 border-radius: 0; 49 background-color: var(--theme-palette-color-6) !important; 50 font-size: 16px; 51 :focus-visible { 52 outline: none; 53 border-bottom: 1px solid var(--theme-palette-color-3); 54 } 55`,l=(0,r.Ay)(n.p)` 56 width: 100%; 57 height: 32px; 58 /* In the phone ⯠sheet (an OverflowSheet, not a PromptWnd, so the modal's 59 16px input rule does not reach it): 16px is what stops iOS zooming the 60 page on focus, 44 is the tap floor (round 5, 5d). */ 61 @media only screen and ${o.E0} { 62 height: 44px; 63 font-size: 16px !important; 64 } 65`,c=r.Ay.div` 66 display: flex; 67 flex-wrap: wrap; 68 69 width: 290px; 70 flex-direction: row; 71 align-content: flex-start; 72 gap: 10px; 73 74 position: sticky; 75 top: 70px; 76 height: fit-content; 77 78 /* Hide when there's no content (empty children) */ 79 &:empty { 80 display: none; 81 } 82 83 /* Use :has() to hide when only containing empty elements - modern browsers */ 84 &:not(:has(> *:not(:empty))) { 85 display: none; 86 } 87 88 @media only screen and (max-width: 750px) { 89 flex-basis: 100%; 90 width: 100%; 91 } 92 93 ${e=>e.$landscapeRail?`@media only screen and ${o.MZ} {\n flex-basis: 250px;\n width: 250px;\n position: static;\n overflow-y: auto;\n max-height: 100vh;\n }`:""} 94`,s=r.i7` 95 0% { width: 90%; } 96 100% { width: 0; } 97`,p=(r.Ay.div` 98 animation-name: ${s}; 99 animation-duration: 3s; 100 height: 2px; 101 background-color: ${(0,i.u)(70)}; 102 border-radius: 0 0 6px 6px; 103`,r.Ay.div` 104 padding: 8px 12px; 105 font-size: 14px; 106`,r.Ay.div` 107 display: flex; 108 flex-direction: column; 109 justify-content: space-between; 110 align-items: stretch; 111 background-color: ${(0,i.u)(15)}; 112 color: var(--theme-palette-color-4); 113 border-radius: 8px; 114 font-size: 0.9em; 115 cursor: pointer; 116 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 117 border: 1px solid ${(0,i.u)(10)}; 118 min-width: 200px; 119 max-width: 400px; 120`,r.Ay.div` 121 position: fixed; 122 bottom: calc(20px + var(--dotgg-bottom-obstruction, 0px)); 123 right: 20px; 124 z-index: 9999; 125 pointer-events: ${e=>e.children?"auto":"none"}; 126`,r.Ay.div` 127 width: 100%; 128 display: flex; 129 flex-wrap: wrap; 130 justify-content: space-between; 131 row-gap: 10px; 132 133 @media only screen and (max-width: 750px) { 134 gap: 10px; 135 } 136`);a.d(t,["Gf",0,c,"OH",0,l,"TW",0,d,"Z6",0,p])},84857(e,t,a){a.r(t),a.d(t,{TierListManual:()=>ae,TierListManualDetails:()=>re});var r=a(15073),o=a(58468),n=a(9299),i=a(38841),d=a(33530),l=a(22197),c=a(30053),s=a(92475),p=a(60083),h=a(50960),x=a(61204),m=a(86031),u=a(81616),f=a(48887),g=a(13530),y=a(43626),w=a(89629),v=a(12434),b=a(63679),$=a(10392);const A="color-mix(in oklab, var(--theme-palette-color-3) 50%, var(--theme-palette-color-8))",k=b.I4.div` 137 display: flex; 138 gap: 10px; 139 @media only screen and (max-width: 750px) { 140 justify-content: space-between; 141 } 142`,D=b.I4.div` 143 display: flex; 144 gap: 10px; 145`,I=b.I4.div` 146 display: flex; 147 border-top: solid 1px var(--theme-palette-color-5); 148 padding-top: 10px; 149 @media only screen and (max-width: 750px) { 150 display: none; 151 } 152`,S=b.I4.div` 153 color: var(--theme-palette-color-4); 154`,C=b.I4.div` 155 color: ${A}; 156 font-size: 0.8em; 157 line-height: 0.8em; 158`,F=b.I4.div` 159 display: flex; 160 justify-content: center; 161 align-items: center; 162 align-content: center; 163 flex-direction: column; 164 @media only screen and (max-width: 380px) { 165 font-size: 0.95em; 166 } 167`,Y=b.I4.div` 168 padding: 2px; 169 color: ${A}; 170 font-size: 0.8em; 171 line-height: 0.8em; 172`,L=b.I4.div` 173 display: flex; 174 gap: 15px; 175 width: 100%; 176 margin-bottom: 10px; 177 border-radius: 6px; 178 justify-content: space-between; 179 background-color: var(--theme-palette-color-6); 180 181 padding: 10px 15px; 182 flex-wrap: wrap; 183 @media only screen and (max-width: 750px) { 184 justify-content: center; 185 } 186`,j=b.I4.div` 187 display: flex; 188 gap: 10px; 189 @media only screen and (max-width: 750px) { 190 display: flex; 191 flex-wrap: wrap; 192 justify-content: center; 193 } 194`,z=b.I4.a` 195 color: var(--dotgg-accent-text, var(--theme-palette-color-1)); 196 padding: 5px; 197 cursor: pointer; 198 border-radius: 6px; 199 font-size: 0.8em; 200 @media only screen and (max-width: 750px) { 201 padding: 0px; 202 } 203`,_=b.I4.div` 204 display: flex; 205 gap: 10px; 206 flex-basis: 100%; 207 justify-content: space-between; 208 @media only screen and (max-width: 750px) { 209 flex-direction: column; 210 font-size: 0.9em; 211 gap: 5px; 212 width: 100%; 213 padding: 10px 10px 0px 10px; 214 } 215`,E=b.I4.div` 216 width: 300px; 217 display: inline-flex; 218 flex-direction: column; 219 cursor: pointer; 220 &:hover { 221 background-color: ${(0,$.u)(2.5)}; 222 } 223 @media only screen and (max-width: 750px) { 224 width: 100%; 225 } 226`,O=b.I4.div` 227 display: flex; 228 gap: 10px; 229 justify-content: space-between; 230 width: 100%; 231 @media only screen and (max-width: 750px) { 232 justify-content: flex-start; 233 flex-direction: column; 234 align-items: center; 235 } 236`,T=b.I4.div` 237 display: flex; 238 gap: 10px; 239 padding: 10px; 240 flex-direction: column; 241 width: 100%; 242 @media only screen and (max-width: 750px) { 243 padding: 0; 244 } 245`,J=b.I4.div` 246 background-color: ${e=>e.$active?"var(--theme-palette-color-1)":"transparent"}; 247 border-radius: 6px; 248 padding: 5px; 249 color: ${e=>e.$active?"var(--dotgg-on-accent, var(--theme-palette-color-8))":"var(--dotgg-accent-text, var(--theme-palette-color-1))"}; 250 display: flex; 251 align-items: center; 252 justify-content: center; 253 cursor: pointer; 254 &:hover { 255 color: var(--dotgg-accent-text, var(--theme-palette-color-1)); 256 background-color: ${(0,$.u)(10)}; 257 } 258`,M=b.I4.div` 259 background-color: ${e=>e.$color}; 260 border-radius: 5px 0 0 5px; 261 color: var(--theme-palette-color-4); 262 font-weight: bold; 263 padding: 10px; 264 text-align: center; 265 font-size: 1.3em; 266 @media only screen and (max-width: 750px) { 267 font-size: 0.8em; 268 } 269`,B=b.I4.div` 270 padding: 0 20px; 271 column-count: 2; 272 @media only screen and (max-width: 750px) { 273 column-count: 1; 274 display: flex; 275 flex-direction: column; 276 align-items: center; 277 padding: 0px 0px 20px 10px; 278 } 279`,G=b.I4.div` 280 display: flex; 281 gap: 10px; 282 @media only screen and (max-width: 750px) { 283 flex-basis: 100%; 284 } 285`,R=b.I4.div` 286 display: flex; 287 flex-direction: column; 288`,V=b.I4.div` 289 display: flex; 290 justify-content: start; 291 gap: 3px; 292 align-items: center; 293 color: var(--theme-palette-color-4); 294 min-width: 160px; 295 font-size: 1.3em; 296 @media only screen and (max-width: 750px) { 297 min-width: auto; 298 } 299 @media only screen and (max-width: 380px) { 300 font-size: 0.9em; 301 } 302`,W=b.I4.div` 303 display: flex; 304 flex-basis: 100%; 305 background-color: var(--theme-palette-color-6); 306 307 border-radius: 6px; 308 gap: 10px; 309 @media only screen and (max-width: 750px) { 310 gap: 2px; 311 } 312`,H=({format:e})=>{const t={format:e?e.toLowerCase():m.SA.decks.defaultMetaFormat.toLowerCase()},[a,n]=(0,o.J0)("full"),b=(0,u.hP)();(0,o.vJ)(()=>{(0,i.DJ)().then(e=>{const a=[];e.filter(e=>
312e.format.toLowerCase()===t.format.toLowerCase()).forEach(e=>{e?.cards&&Object.keys(e.cards).forEach(e=>{a.includes(e)||a.push(e)})}),(0,d.Ev)(a,"get")}).catch(e=>{(0,w.N7)(e,"tierListManual")})},[t.format]);const $=["S","A","B","C","D"],A=p.KX;let H=[];const N=[];let K=0;return b&&(b.forEach(e=>{N.includes(e.format)||N.push(e.format),e.format.toLowerCase()===t.format.toLowerCase()&&(K+=+e.total_decks)}),H=b.filter(e=>e.format.toLowerCase()===t.format.toLowerCase()),H.sort((e,t)=>+t.points-+e.points)),(0,r.FD)(f.BQ,{children:[(0,r.FD)(L,{children:[(0,r.Y)(j,{children:N.sort((e,t)=>e>t?-1:1).map(e=>(0,r.Y)(J,{onClick:()=>{window.location.href=`/tier-list/${e.toLowerCase()}`},$active:t.format.toLowerCase()===e.toLowerCase(),children:e},e))}),(0,r.FD)(y.Zz,{children:[(0,r.FD)(y.Oq,{children:[(0,r.Y)("input",{type:"checkbox",checked:"full"===a,onChange:()=>{n("full"===a?"condensed":"full")}}),(0,r.Y)(y.wL,{})]}),(0,r.Y)("div",{onClick:()=>{n("full"===a?"condensed":"full")},children:"full"===a?"Show all cards. Click for short mode":"Short mode. Click to see all cards"})]})]}),(0,r.Y)(g.Z6,{children:$.map((e,t)=>H.filter(t=>t?.tier?.toLowerCase()===e?.toLowerCase()).sort((e,t)=>+t.eval===+e.eval?+t.total_decks-+e.total_decks:+t.eval-+e.eval).map((e,o)=>{const n=[];if(!e.cards)return null;
312Object.entries(e.cards).forEach(([e,t])=>{n.push({cardId:e,in_deck:+t.in_deck,weight:parseFloat(t.weight)})}),n.sort((e,t)=>t.weight-e.weight);const i=[],d=e;return Object.keys(m.SA.core.gameColors).forEach(e=>{d[e]&&+d[e]>0&&i.push(e)}),(0,r.FD)(W,{children:[(0,r.Y)(M,{$color:A[t],children:$[t]}),(0,r.FD)(T,{children:[(0,r.Y)(O,{children:(0,r.FD)(_,{children:[(0,r.FD)(k,{children:[(0,r.FD)(R,{children:[(0,r.FD)(V,{children:[i.map((e,t)=>(0,r.Y)(s.D,{$width:window.innerWidth<=380?"14px":"18px",$height:window.innerWidth<=380?"14px":"18px",src:m.SA.core.gameColors[e].icon},t)),e.name]}),(0,r.FD)(C,{children:[e.format," ",m.SA.decks.metaSupertypes[e.supertype]]})]}),(0,r.FD)(F,{children:[(0,r.FD)(S,{children:[(100*+e.total_decks/K).toFixed(1),"%"]}),(0,r.Y)(C,{children:"Meta Share"})]})]}),(0,r.Y)(D,{children:(0,r.FD)(z,{href:`${v.Ay.BASE_FOLDER}decks/?at=${e.slug}`,"data-native":!0,children:[(0,r.Y)(x.g,{icon:h.C})," Get ",e.name," Decks"]})})]})}),"condensed"===a?(0,r.Y)(I,{children:n.slice(0,4).map((e,t)=>(0,r.FD)(E,{children:[(0,r.Y)(c._,{cardId:e.cardId,hidePrice:!0,quantity:e.in_deck,noBorderBottom:!0,narrow:!0}),(0,r.FD)(Y,{children:["In ",(100*e.weight).toFixed(0),"% of decks"]})]},t))}):(0,r.FD)(O,{style:{borderTop:"solid 1px var(--theme-palette-color-5)",paddingTop:"10px"},children:[(0,r.Y)(G,{children:n.slice(0,2).map(e=>(0,r.Y)(l.Uc,{cardId:e.cardId,width:window.innerWidth<=750?window.innerWidth<=370?120:140:200,clickable:!0,withBackside:m.SA.cards.cardsHasBackside}))}),(0,r.Y)(B,{children:n.slice(2).map((e,t)=>(0,r.FD)(E,{children:[(0,r.Y)(c._,{cardId:e.cardId,hidePrice:!0,quantity:e.in_deck,noBorderBottom:!0,narrow:!0}),(0,r.FD)(Y,{children:["In ",(100*e.weight).toFixed(0),"% of decks"]})]},t))})]})]})]},`${t}${o}`)}))})]})},N=()=>{const[e,t]=(0,o.J0)([]),a=(0,u.hP)();return(0,o.vJ)(()=>{(0,i.DJ)().catch(e=>{(0,w.N7)(e,"getArchetypesManual")})},[]),(0,o.vJ)(()=>{const e=[];a?.sort((e,t)=>+t.total_decks-+e.total_decks),a?.forEach(t=>{t?.cards&&(e.includes(t.format)||e.push(t.format))}),t(e)},[a]),(0,r.Y)(K,{children:e.map((e,t)=>{const o=[],n=a?.filter(t=>t.format.toLowerCase()===e.toLowerCase())?.[0];
312return n&&Object.entries(n.cards).forEach(([e,t])=>{o.push({cardId:e,in_deck:+t.in_deck,weight:parseFloat(t.weight)})}),o.sort((e,t)=>t.weight-e.weight),(0,r.Y)(X,{$bgID:o[0]?.cardId??"",$game:v.Ay.TheGame.toLowerCase(),$folder:m.SA.decks.cardFolder,href:`/tier-list/${e.toLowerCase()}`,children:(0,r.FD)(ee,{children:[(0,r.Y)(Z,{children:e}),(0,r.Y)(P,{children:a?.filter(t=>t.format.toLowerCase()===e.toLowerCase()).slice(0,5).map((e,t)=>{const a=[],o=e;return Object.keys(m.SA.core.gameColors).forEach(e=>{o[e]&&+o[e]>0&&a.push(e)}),(0,r.Y)(q,{$opacity:.8/(t/5+1),children:(0,r.FD)(Q,{children:[a.map((e,t)=>(0,r.Y)(s.D,{$width:"15px",$height:"15px",src:m.SA.core.gameColors[e].icon},t)),e.name]})},t)})})]})},t)})})},K=b.I4.section` 313 display: flex; 314 flex-wrap: wrap; 315 gap: 12px; 316 border-radius: 6px; 317 justify-content: start; 318 @media only screen and (max-width: 700px) { 319 padding: 10px 0 0 0; 320 } 321`,P=b.I4.div``,Z=b.I4.div` 322 font-size: 1.3em; 323`,q=b.I4.div` 324 opacity: ${e=>e.$opacity}; 325`,Q=b.I4.div` 326 display: flex; 327 gap: 3px; 328 align-items: center; 329 color: var(--theme-palette-color-4); 330 align-items: center; 331 min-width: 160px; 332 @media only screen and (max-width: 750px) { 333 min-width: auto; 334 } 335`,U=b.I4.a` 336 display: flex; 337 flex-direction: row; 338 justify-content: flex-start; 339 align-items: flex-start; 340 341 background-color: var(--theme-palette-color-6); 342 border-radius: 6px; 343 padding: 0; 344 cursor: pointer; 345 height: 200px; 346 width: 24%; 347 &:hover { 348 box-shadow: 0px 0px 2px 1px var(--theme-palette-color-1); 349 filter: brightness(1.1); 350 } 351 @media only screen and (max-width: 1340px) { 352 width: 32%; 353 } 354 @media only screen and (max-width: 940px) { 355 width: 49%; 356 } 357 @media only screen and (max-width: 768px) { 358 width: 100%; 359 flex-basis: 100%; 360 flex-wrap: wrap; 361 } 362`,X=(0,b.I4)(U)` 363 background-image: ${e=>e.$bgID?`url(https://static.dotgg.gg/${e.$game}/${e.$folder?e.$folder:"cards"}/${e.$bgID}.webp)`:""}; 364 background-size: 130%; 365 background-position: 50% 21%; 366`,ee=b.I4.div` 367 width: 100%; 368 height: 100%; 369 display: flex; 370 flex-direction: column; 371 justify-content: space-between; 372 border-radius: 6px; 373 padding: 20px; 374 background: linear-gradient(180deg, ${(0,$.f)(100)} 5%, ${(0,$.f)(30)} 60%, transparent); 375`;var te=a(70994);function ae(){const e=(0,te.RQ)("/tier-list/:formatSlug");return e?.params.formatSlug?(0,r.Y)(re,{format:e?.params.formatSlug}):(0,r.Y)(N,{})}class re extends o.Ay.Component{render(){return(0,r.Y)(o.Ay.Fragment,{children:(0,r.Y)(n.t,{children:(0,r.Y)(H,{format:this.props.format})})})}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.