{"version":3,"file":"TeapotGeometry.cjs","sources":["../../src/geometries/TeapotGeometry.js"],"sourcesContent":["import { BufferAttribute, BufferGeometry, Matrix4, Vector3, Vector4 } from 'three'\n\n/**\n * Tessellates the famous Utah teapot database by Martin Newell into triangles.\n *\n * Parameters: size = 50, segments = 10, bottom = true, lid = true, body = true,\n *   fitLid = false, blinn = true\n *\n * size is a relative scale: I've scaled the teapot to fit vertically between -1 and 1.\n * Think of it as a \"radius\".\n * segments - number of line segments to subdivide each patch edge;\n *   1 is possible but gives degenerates, so two is the real minimum.\n * bottom - boolean, if true (default) then the bottom patches are added. Some consider\n *   adding the bottom heresy, so set this to \"false\" to adhere to the One True Way.\n * lid - to remove the lid and look inside, set to true.\n * body - to remove the body and leave the lid, set this and \"bottom\" to false.\n * fitLid - the lid is a tad small in the original. This stretches it a bit so you can't\n *   see the teapot's insides through the gap.\n * blinn - Jim Blinn scaled the original data vertically by dividing by about 1.3 to look\n *   nicer. If you want to see the original teapot, similar to the real-world model, set\n *   this to false. True by default.\n *   See http://en.wikipedia.org/wiki/File:Original_Utah_Teapot.jpg for the original\n *   real-world teapot (from http://en.wikipedia.org/wiki/Utah_teapot).\n *\n * Note that the bottom (the last four patches) is not flat - blame Frank Crow, not me.\n *\n * The teapot should normally be rendered as a double sided object, since for some\n * patches both sides can be seen, e.g., the gap around the lid and inside the spout.\n *\n * Segments 'n' determines the number of triangles output.\n *   Total triangles = 32*2*n*n - 8*n    [degenerates at the top and bottom cusps are deleted]\n *\n *   size_factor   # triangles\n *       1          56\n *       2         240\n *       3         552\n *       4         992\n *\n *      10        6320\n *      20       25440\n *      30       57360\n *\n * Code converted from my ancient SPD software, http://tog.acm.org/resources/SPD/\n * Created for the Udacity course \"Interactive Rendering\", http://bit.ly/ericity\n * Lesson: https://www.udacity.com/course/viewer#!/c-cs291/l-68866048/m-106482448\n * YouTube video on teapot history: https://www.youtube.com/watch?v=DxMfblPzFNc\n *\n * See https://en.wikipedia.org/wiki/Utah_teapot for the history of the teapot\n *\n */\n\nclass TeapotGeometry extends BufferGeometry {\n  constructor(size, segments, bottom, lid, body, fitLid, blinn) {\n    // 32 * 4 * 4 Bezier spline patches\n    const teapotPatches = [\n      /*rim*/\n      0,\n      1,\n      2,\n      3,\n      4,\n      5,\n      6,\n      7,\n      8,\n      9,\n      10,\n      11,\n      12,\n      13,\n      14,\n      15,\n      3,\n      16,\n      17,\n      18,\n      7,\n      19,\n      20,\n      21,\n      11,\n      22,\n      23,\n      24,\n      15,\n      25,\n      26,\n      27,\n      18,\n      28,\n      29,\n      30,\n      21,\n      31,\n      32,\n      33,\n      24,\n      34,\n      35,\n      36,\n      27,\n      37,\n      38,\n      39,\n      30,\n      40,\n      41,\n      0,\n      33,\n      42,\n      43,\n      4,\n      36,\n      44,\n      45,\n      8,\n      39,\n      46,\n      47,\n      12,\n      /*body*/\n      12,\n      13,\n      14,\n      15,\n      48,\n      49,\n      50,\n      51,\n      52,\n      53,\n      54,\n      55,\n      56,\n      57,\n      58,\n      59,\n      15,\n      25,\n      26,\n      27,\n      51,\n      60,\n      61,\n      62,\n      55,\n      63,\n      64,\n      65,\n      59,\n      66,\n      67,\n      68,\n      27,\n      37,\n      38,\n      39,\n      62,\n      69,\n      70,\n      71,\n      65,\n      72,\n      73,\n      74,\n      68,\n      75,\n      76,\n      77,\n      39,\n      46,\n      47,\n      12,\n      71,\n      78,\n      79,\n      48,\n      74,\n      80,\n      81,\n      52,\n      77,\n      82,\n      83,\n      56,\n      56,\n      57,\n      58,\n      59,\n      84,\n      85,\n      86,\n      87,\n      88,\n      89,\n      90,\n      91,\n      92,\n      93,\n      94,\n      95,\n      59,\n      66,\n      67,\n      68,\n      87,\n      96,\n      97,\n      98,\n      91,\n      99,\n      100,\n      101,\n      95,\n      102,\n      103,\n      104,\n      68,\n      75,\n      76,\n      77,\n      98,\n      105,\n      106,\n      107,\n      101,\n      108,\n      109,\n      110,\n      104,\n      111,\n      112,\n      113,\n      77,\n      82,\n      83,\n      56,\n      107,\n      114,\n      115,\n      84,\n      110,\n      116,\n      117,\n      88,\n      113,\n      118,\n      119,\n      92,\n      /*handle*/\n      120,\n      121,\n      122,\n      123,\n      124,\n      125,\n      126,\n      127,\n      128,\n      129,\n      130,\n      131,\n      132,\n      133,\n      134,\n      135,\n      123,\n      136,\n      137,\n      120,\n      127,\n      138,\n      139,\n      124,\n      131,\n      140,\n      141,\n      128,\n      135,\n      142,\n      143,\n      132,\n      132,\n      133,\n      134,\n      135,\n      144,\n      145,\n      146,\n      147,\n      148,\n      149,\n      150,\n      151,\n      68,\n      152,\n      153,\n      154,\n      135,\n      142,\n      143,\n      132,\n      147,\n      155,\n      156,\n      144,\n      151,\n      157,\n      158,\n      148,\n      154,\n      159,\n      160,\n      68,\n      /*spout*/\n      161,\n      162,\n      163,\n      164,\n      165,\n      166,\n      167,\n      168,\n      169,\n      170,\n      171,\n      172,\n      173,\n      174,\n      175,\n      176,\n      164,\n      177,\n      178,\n      161,\n      168,\n      179,\n      180,\n      165,\n      172,\n      181,\n      182,\n      169,\n      176,\n      183,\n      184,\n      173,\n      173,\n      174,\n      175,\n      176,\n      185,\n      186,\n      187,\n      188,\n      189,\n      190,\n      191,\n      192,\n      193,\n      194,\n      195,\n      196,\n      176,\n      183,\n      184,\n      173,\n      188,\n      197,\n      198,\n      185,\n      192,\n      199,\n      200,\n      189,\n      196,\n      201,\n      202,\n      193,\n      /*lid*/\n      203,\n      203,\n      203,\n      203,\n      204,\n      205,\n      206,\n      207,\n      208,\n      208,\n      208,\n      208,\n      209,\n      210,\n      211,\n      212,\n      203,\n      203,\n      203,\n      203,\n      207,\n      213,\n      214,\n      215,\n      208,\n      208,\n      208,\n      208,\n      212,\n      216,\n      217,\n      218,\n      203,\n      203,\n      203,\n      203,\n      215,\n      219,\n      220,\n      221,\n      208,\n      208,\n      208,\n      208,\n      218,\n      222,\n      223,\n      224,\n      203,\n      203,\n      203,\n      203,\n      221,\n      225,\n      226,\n      204,\n      208,\n      208,\n      208,\n      208,\n      224,\n      227,\n      228,\n      209,\n      209,\n      210,\n      211,\n      212,\n      229,\n      230,\n      231,\n      232,\n      233,\n      234,\n      235,\n      236,\n      237,\n      238,\n      239,\n      240,\n      212,\n      216,\n      217,\n      218,\n      232,\n      241,\n      242,\n      243,\n      236,\n      244,\n      245,\n      246,\n      240,\n      247,\n      248,\n      249,\n      218,\n      222,\n      223,\n      224,\n      243,\n      250,\n      251,\n      252,\n      246,\n      253,\n      254,\n      255,\n      249,\n      256,\n      257,\n      258,\n      224,\n      227,\n      228,\n      209,\n      252,\n      259,\n      260,\n      229,\n      255,\n      261,\n      262,\n      233,\n      258,\n      263,\n      264,\n      237,\n      /*bottom*/\n      265,\n      265,\n      265,\n      265,\n      266,\n      267,\n      268,\n      269,\n      270,\n      271,\n      272,\n      273,\n      92,\n      119,\n      118,\n      113,\n      265,\n      265,\n      265,\n      265,\n      269,\n      274,\n      275,\n      276,\n      273,\n      277,\n      278,\n      279,\n      113,\n      112,\n      111,\n      104,\n      265,\n      265,\n      265,\n      265,\n      276,\n      280,\n      281,\n      282,\n      279,\n      283,\n      284,\n      285,\n      104,\n      103,\n      102,\n      95,\n      265,\n      265,\n      265,\n      265,\n      282,\n      286,\n      287,\n      266,\n      285,\n      288,\n      289,\n      270,\n      95,\n      94,\n      93,\n      92,\n    ]\n\n    const teapotVertices = [\n      1.4,\n      0,\n      2.4,\n      1.4,\n      -0.784,\n      2.4,\n      0.784,\n      -1.4,\n      2.4,\n      0,\n      -1.4,\n      2.4,\n      1.3375,\n      0,\n      2.53125,\n      1.3375,\n      -0.749,\n      2.53125,\n      0.749,\n      -1.3375,\n      2.53125,\n      0,\n      -1.3375,\n      2.53125,\n      1.4375,\n      0,\n      2.53125,\n      1.4375,\n      -0.805,\n      2.53125,\n      0.805,\n      -1.4375,\n      2.53125,\n      0,\n      -1.4375,\n      2.53125,\n      1.5,\n      0,\n      2.4,\n      1.5,\n      -0.84,\n      2.4,\n      0.84,\n      -1.5,\n      2.4,\n      0,\n      -1.5,\n      2.4,\n      -0.784,\n      -1.4,\n      2.4,\n      -1.4,\n      -0.784,\n      2.4,\n      -1.4,\n      0,\n      2.4,\n      -0.749,\n      -1.3375,\n      2.53125,\n      -1.3375,\n      -0.749,\n      2.53125,\n      -1.3375,\n      0,\n      2.53125,\n      -0.805,\n      -1.4375,\n      2.53125,\n      -1.4375,\n      -0.805,\n      2.53125,\n      -1.4375,\n      0,\n      2.53125,\n      -0.84,\n      -1.5,\n      2.4,\n      -1.5,\n      -0.84,\n      2.4,\n      -1.5,\n      0,\n      2.4,\n      -1.4,\n      0.784,\n      2.4,\n      -0.784,\n      1.4,\n      2.4,\n      0,\n      1.4,\n      2.4,\n      -1.3375,\n      0.749,\n      2.53125,\n      -0.749,\n      1.3375,\n      2.53125,\n      0,\n      1.3375,\n      2.53125,\n      -1.4375,\n      0.805,\n      2.53125,\n      -0.805,\n      1.4375,\n      2.53125,\n      0,\n      1.4375,\n      2.53125,\n      -1.5,\n      0.84,\n      2.4,\n      -0.84,\n      1.5,\n      2.4,\n      0,\n      1.5,\n      2.4,\n      0.784,\n      1.4,\n      2.4,\n      1.4,\n      0.784,\n      2.4,\n      0.749,\n      1.3375,\n      2.53125,\n      1.3375,\n      0.749,\n      2.53125,\n      0.805,\n      1.4375,\n      2.53125,\n      1.4375,\n      0.805,\n      2.53125,\n      0.84,\n      1.5,\n      2.4,\n      1.5,\n      0.84,\n      2.4,\n      1.75,\n      0,\n      1.875,\n      1.75,\n      -0.98,\n      1.875,\n      0.98,\n      -1.75,\n      1.875,\n      0,\n      -1.75,\n      1.875,\n      2,\n      0,\n      1.35,\n      2,\n      -1.12,\n      1.35,\n      1.12,\n      -2,\n      1.35,\n      0,\n      -2,\n      1.35,\n      2,\n      0,\n      0.9,\n      2,\n      -1.12,\n      0.9,\n      1.12,\n      -2,\n      0.9,\n      0,\n      -2,\n      0.9,\n      -0.98,\n      -1.75,\n      1.875,\n      -1.75,\n      -0.98,\n      1.875,\n      -1.75,\n      0,\n      1.875,\n      -1.12,\n      -2,\n      1.35,\n      -2,\n      -1.12,\n      1.35,\n      -2,\n      0,\n      1.35,\n      -1.12,\n      -2,\n      0.9,\n      -2,\n      -1.12,\n      0.9,\n      -2,\n      0,\n      0.9,\n      -1.75,\n      0.98,\n      1.875,\n      -0.98,\n      1.75,\n      1.875,\n      0,\n      1.75,\n      1.875,\n      -2,\n      1.12,\n      1.35,\n      -1.12,\n      2,\n      1.35,\n      0,\n      2,\n      1.35,\n      -2,\n      1.12,\n      0.9,\n      -1.12,\n      2,\n      0.9,\n      0,\n      2,\n      0.9,\n      0.98,\n      1.75,\n      1.875,\n      1.75,\n      0.98,\n      1.875,\n      1.12,\n      2,\n      1.35,\n      2,\n      1.12,\n      1.35,\n      1.12,\n      2,\n      0.9,\n      2,\n      1.12,\n      0.9,\n      2,\n      0,\n      0.45,\n      2,\n      -1.12,\n      0.45,\n      1.12,\n      -2,\n      0.45,\n      0,\n      -2,\n      0.45,\n      1.5,\n      0,\n      0.225,\n      1.5,\n      -0.84,\n      0.225,\n      0.84,\n      -1.5,\n      0.225,\n      0,\n      -1.5,\n      0.225,\n      1.5,\n      0,\n      0.15,\n      1.5,\n      -0.84,\n      0.15,\n      0.84,\n      -1.5,\n      0.15,\n      0,\n      -1.5,\n      0.15,\n      -1.12,\n      -2,\n      0.45,\n      -2,\n      -1.12,\n      0.45,\n      -2,\n      0,\n      0.45,\n      -0.84,\n      -1.5,\n      0.225,\n      -1.5,\n      -0.84,\n      0.225,\n      -1.5,\n      0,\n      0.225,\n      -0.84,\n      -1.5,\n      0.15,\n      -1.5,\n      -0.84,\n      0.15,\n      -1.5,\n      0,\n      0.15,\n      -2,\n      1.12,\n      0.45,\n      -1.12,\n      2,\n      0.45,\n      0,\n      2,\n      0.45,\n      -1.5,\n      0.84,\n      0.225,\n      -0.84,\n      1.5,\n      0.225,\n      0,\n      1.5,\n      0.225,\n      -1.5,\n      0.84,\n      0.15,\n      -0.84,\n      1.5,\n      0.15,\n      0,\n      1.5,\n      0.15,\n      1.12,\n      2,\n      0.45,\n      2,\n      1.12,\n      0.45,\n      0.84,\n      1.5,\n      0.225,\n      1.5,\n      0.84,\n      0.225,\n      0.84,\n      1.5,\n      0.15,\n      1.5,\n      0.84,\n      0.15,\n      -1.6,\n      0,\n      2.025,\n      -1.6,\n      -0.3,\n      2.025,\n      -1.5,\n      -0.3,\n      2.25,\n      -1.5,\n      0,\n      2.25,\n      -2.3,\n      0,\n      2.025,\n      -2.3,\n      -0.3,\n      2.025,\n      -2.5,\n      -0.3,\n      2.25,\n      -2.5,\n      0,\n      2.25,\n      -2.7,\n      0,\n      2.025,\n      -2.7,\n      -0.3,\n      2.025,\n      -3,\n      -0.3,\n      2.25,\n      -3,\n      0,\n      2.25,\n      -2.7,\n      0,\n      1.8,\n      -2.7,\n      -0.3,\n      1.8,\n      -3,\n      -0.3,\n      1.8,\n      -3,\n      0,\n      1.8,\n      -1.5,\n      0.3,\n      2.25,\n      -1.6,\n      0.3,\n      2.025,\n      -2.5,\n      0.3,\n      2.25,\n      -2.3,\n      0.3,\n      2.025,\n      -3,\n      0.3,\n      2.25,\n      -2.7,\n      0.3,\n      2.025,\n      -3,\n      0.3,\n      1.8,\n      -2.7,\n      0.3,\n      1.8,\n      -2.7,\n      0,\n      1.575,\n      -2.7,\n      -0.3,\n      1.575,\n      -3,\n      -0.3,\n      1.35,\n      -3,\n      0,\n      1.35,\n      -2.5,\n      0,\n      1.125,\n      -2.5,\n      -0.3,\n      1.125,\n      -2.65,\n      -0.3,\n      0.9375,\n      -2.65,\n      0,\n      0.9375,\n      -2,\n      -0.3,\n      0.9,\n      -1.9,\n      -0.3,\n      0.6,\n      -1.9,\n      0,\n      0.6,\n      -3,\n      0.3,\n      1.35,\n      -2.7,\n      0.3,\n      1.575,\n      -2.65,\n      0.3,\n      0.9375,\n      -2.5,\n      0.3,\n      1.125,\n      -1.9,\n      0.3,\n      0.6,\n      -2,\n      0.3,\n      0.9,\n      1.7,\n      0,\n      1.425,\n      1.7,\n      -0.66,\n      1.425,\n      1.7,\n      -0.66,\n      0.6,\n      1.7,\n      0,\n      0.6,\n      2.6,\n      0,\n      1.425,\n      2.6,\n      -0.66,\n      1.425,\n      3.1,\n      -0.66,\n      0.825,\n      3.1,\n      0,\n      0.825,\n      2.3,\n      0,\n      2.1,\n      2.3,\n      -0.25,\n      2.1,\n      2.4,\n      -0.25,\n      2.025,\n      2.4,\n      0,\n      2.025,\n      2.7,\n      0,\n      2.4,\n      2.7,\n      -0.25,\n      2.4,\n      3.3,\n      -0.25,\n      2.4,\n      3.3,\n      0,\n      2.4,\n      1.7,\n      0.66,\n      0.6,\n      1.7,\n      0.66,\n      1.425,\n      3.1,\n      0.66,\n      0.825,\n      2.6,\n      0.66,\n      1.425,\n      2.4,\n      0.25,\n      2.025,\n      2.3,\n      0.25,\n      2.1,\n      3.3,\n      0.25,\n      2.4,\n      2.7,\n      0.25,\n      2.4,\n      2.8,\n      0,\n      2.475,\n      2.8,\n      -0.25,\n      2.475,\n      3.525,\n      -0.25,\n      2.49375,\n      3.525,\n      0,\n      2.49375,\n      2.9,\n      0,\n      2.475,\n      2.9,\n      -0.15,\n      2.475,\n      3.45,\n      -0.15,\n      2.5125,\n      3.45,\n      0,\n      2.5125,\n      2.8,\n      0,\n      2.4,\n      2.8,\n      -0.15,\n      2.4,\n      3.2,\n      -0.15,\n      2.4,\n      3.2,\n      0,\n      2.4,\n      3.525,\n      0.25,\n      2.49375,\n      2.8,\n      0.25,\n      2.475,\n      3.45,\n      0.15,\n      2.5125,\n      2.9,\n      0.15,\n      2.475,\n      3.2,\n      0.15,\n      2.4,\n      2.8,\n      0.15,\n      2.4,\n      0,\n      0,\n      3.15,\n      0.8,\n      0,\n      3.15,\n      0.8,\n      -0.45,\n      3.15,\n      0.45,\n      -0.8,\n      3.15,\n      0,\n      -0.8,\n      3.15,\n      0,\n      0,\n      2.85,\n      0.2,\n      0,\n      2.7,\n      0.2,\n      -0.112,\n      2.7,\n      0.112,\n      -0.2,\n      2.7,\n      0,\n      -0.2,\n      2.7,\n      -0.45,\n      -0.8,\n      3.15,\n      -0.8,\n      -0.45,\n      3.15,\n      -0.8,\n      0,\n      3.15,\n      -0.112,\n      -0.2,\n      2.7,\n      -0.2,\n      -0.112,\n      2.7,\n      -0.2,\n      0,\n      2.7,\n      -0.8,\n      0.45,\n      3.15,\n      -0.45,\n      0.8,\n      3.15,\n      0,\n      0.8,\n      3.15,\n      -0.2,\n      0.112,\n      2.7,\n      -0.112,\n      0.2,\n      2.7,\n      0,\n      0.2,\n      2.7,\n      0.45,\n      0.8,\n      3.15,\n      0.8,\n      0.45,\n      3.15,\n      0.112,\n      0.2,\n      2.7,\n      0.2,\n      0.112,\n      2.7,\n      0.4,\n      0,\n      2.55,\n      0.4,\n      -0.224,\n      2.55,\n      0.224,\n      -0.4,\n      2.55,\n      0,\n      -0.4,\n      2.55,\n      1.3,\n      0,\n      2.55,\n      1.3,\n      -0.728,\n      2.55,\n      0.728,\n      -1.3,\n      2.55,\n      0,\n      -1.3,\n      2.55,\n      1.3,\n      0,\n      2.4,\n      1.3,\n      -0.728,\n      2.4,\n      0.728,\n      -1.3,\n      2.4,\n      0,\n      -1.3,\n      2.4,\n      -0.224,\n      -0.4,\n      2.55,\n      -0.4,\n      -0.224,\n      2.55,\n      -0.4,\n      0,\n      2.55,\n      -0.728,\n      -1.3,\n      2.55,\n      -1.3,\n      -0.728,\n      2.55,\n      -1.3,\n      0,\n      2.55,\n      -0.728,\n      -1.3,\n      2.4,\n      -1.3,\n      -0.728,\n      2.4,\n      -1.3,\n      0,\n      2.4,\n      -0.4,\n      0.224,\n      2.55,\n      -0.224,\n      0.4,\n      2.55,\n      0,\n      0.4,\n      2.55,\n      -1.3,\n      0.728,\n      2.55,\n      -0.728,\n      1.3,\n      2.55,\n      0,\n      1.3,\n      2.55,\n      -1.3,\n      0.728,\n      2.4,\n      -0.728,\n      1.3,\n      2.4,\n      0,\n      1.3,\n      2.4,\n      0.224,\n      0.4,\n      2.55,\n      0.4,\n      0.224,\n      2.55,\n      0.728,\n      1.3,\n      2.55,\n      1.3,\n      0.728,\n      2.55,\n      0.728,\n      1.3,\n      2.4,\n      1.3,\n      0.728,\n      2.4,\n      0,\n      0,\n      0,\n      1.425,\n      0,\n      0,\n      1.425,\n      0.798,\n      0,\n      0.798,\n      1.425,\n      0,\n      0,\n      1.425,\n      0,\n      1.5,\n      0,\n      0.075,\n      1.5,\n      0.84,\n      0.075,\n      0.84,\n      1.5,\n      0.075,\n      0,\n      1.5,\n      0.075,\n      -0.798,\n      1.425,\n      0,\n      -1.425,\n      0.798,\n      0,\n      -1.425,\n      0,\n      0,\n      -0.84,\n      1.5,\n      0.075,\n      -1.5,\n      0.84,\n      0.075,\n      -1.5,\n      0,\n      0.075,\n      -1.425,\n      -0.798,\n      0,\n      -0.798,\n      -1.425,\n      0,\n      0,\n      -1.425,\n      0,\n      -1.5,\n      -0.84,\n      0.075,\n      -0.84,\n      -1.5,\n      0.075,\n      0,\n      -1.5,\n      0.075,\n      0.798,\n      -1.425,\n      0,\n      1.425,\n      -0.798,\n      0,\n      0.84,\n      -1.5,\n      0.075,\n      1.5,\n      -0.84,\n      0.075,\n    ]\n\n    super()\n\n    size = size || 50\n\n    // number of segments per patch\n    segments = segments !== undefined ? Math.max(2, Math.floor(segments) || 10) : 10\n\n    // which parts should be visible\n    bottom = bottom === undefined ? true : bottom\n    lid = lid === undefined ? true : lid\n    body = body === undefined ? true : body\n\n    // Should the lid be snug? It's not traditional, but we make it snug by default\n    fitLid = fitLid === undefined ? true : fitLid\n\n    // Jim Blinn scaled the teapot down in size by about 1.3 for\n    // some rendering tests. He liked the new proportions that he kept\n    // the data in this form. The model was distributed with these new\n    // proportions and became the norm. Trivia: comparing images of the\n    // real teapot and the computer model, the ratio for the bowl of the\n    // real teapot is more like 1.25, but since 1.3 is the traditional\n    // value given, we use it here.\n    const blinnScale = 1.3\n    blinn = blinn === undefined ? true : blinn\n\n    // scale the size to be the real scaling factor\n    const maxHeight = 3.15 * (blinn ? 1 : blinnScale)\n\n    const maxHeight2 = maxHeight / 2\n    const trueSize = size / maxHeight2\n\n    // Number of elements depends on what is needed. Subtract degenerate\n    // triangles at tip of bottom and lid out in advance.\n    let numTriangles = bottom ? (8 * segments - 4) * segments : 0\n    numTriangles += lid ? (16 * segments - 4) * segments : 0\n    numTriangles += body ? 40 * segments * segments : 0\n\n    const indices = new Uint32Array(numTriangles * 3)\n\n    let numVertices = bottom ? 4 : 0\n    numVertices += lid ? 8 : 0\n    numVertices += body ? 20 : 0\n    numVertices *= (segments + 1) * (segments + 1)\n\n    const vertices = new Float32Array(numVertices * 3)\n    const normals = new Float32Array(numVertices * 3)\n    const uvs = new Float32Array(numVertices * 2)\n\n    // Bezier form\n    const ms = new Matrix4()\n    ms.set(-1.0, 3.0, -3.0, 1.0, 3.0, -6.0, 3.0, 0.0, -3.0, 3.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0)\n\n    const g = []\n    let i, r, c\n\n    const sp = []\n    const tp = []\n    const dsp = []\n    const dtp = []\n\n    // M * G * M matrix, sort of see\n    // http://www.cs.helsinki.fi/group/goa/mallinnus/curves/surfaces.html\n    const mgm = []\n\n    const vert = []\n    const sdir = []\n    const tdir = []\n\n    const norm = new Vector3()\n\n    let tcoord\n\n    let sstep, tstep\n    let vertPerRow\n\n    let s, t, sval, tval, p\n    let dsval = 0\n    let dtval = 0\n\n    const normOut = new Vector3()\n    let v1, v2, v3, v4\n\n    const gmx = new Matrix4()\n    const tmtx = new Matrix4()\n\n    const vsp = new Vector4()\n    const vtp = new Vector4()\n    const vdsp = new Vector4()\n    const vdtp = new Vector4()\n\n    const vsdir = new Vector3()\n    const vtdir = new Vector3()\n\n    const mst = ms.clone()\n    mst.transpose()\n\n    // internal function: test if triangle has any matching vertices;\n    // if so, don't save triangle, since it won't display anything.\n    const notDegenerate = (\n      vtx1,\n      vtx2,\n      vtx3, // if any vertex matches, return false\n    ) =>\n      !(\n        (vertices[vtx1 * 3] === vertices[vtx2 * 3] &&\n          vertices[vtx1 * 3 + 1] === vertices[vtx2 * 3 + 1] &&\n          vertices[vtx1 * 3 + 2] === vertices[vtx2 * 3 + 2]) ||\n        (vertices[vtx1 * 3] === vertices[vtx3 * 3] &&\n          vertices[vtx1 * 3 + 1] === vertices[vtx3 * 3 + 1] &&\n          vertices[vtx1 * 3 + 2] === vertices[vtx3 * 3 + 2]) ||\n        (vertices[vtx2 * 3] === vertices[vtx3 * 3] &&\n          vertices[vtx2 * 3 + 1] === vertices[vtx3 * 3 + 1] &&\n          vertices[vtx2 * 3 + 2] === vertices[vtx3 * 3 + 2])\n      )\n\n    for (i = 0; i < 3; i++) {\n      mgm[i] = new Matrix4()\n    }\n\n    const minPatches = body ? 0 : 20\n    const maxPatches = bottom ? 32 : 28\n\n    vertPerRow = segments + 1\n\n    let surfCount = 0\n\n    let vertCount = 0\n    let normCount = 0\n    let uvCount = 0\n\n    let indexCount = 0\n\n    for (let surf = minPatches; surf < maxPatches; surf++) {\n      // lid is in the middle of the data, patches 20-27,\n      // so ignore it for this part of the loop if the lid is not desired\n      if (lid || surf < 20 || surf >= 28) {\n        // get M * G * M matrix for x,y,z\n        for (i = 0; i < 3; i++) {\n          // get control patches\n          for (r = 0; r < 4; r++) {\n            for (c = 0; c < 4; c++) {\n              // transposed\n              g[c * 4 + r] = teapotVertices[teapotPatches[surf * 16 + r * 4 + c] * 3 + i]\n\n              // is the lid to be made larger, and is this a point on the lid\n              // that is X or Y?\n              if (fitLid && surf >= 20 && surf < 28 && i !== 2) {\n                // increase XY size by 7.7%, found empirically. I don't\n                // increase Z so that the teapot will continue to fit in the\n                // space -1 to 1 for Y (Y is up for the final model).\n                g[c * 4 + r] *= 1.077\n              }\n\n              // Blinn \"fixed\" the teapot by dividing Z by blinnScale, and that's the\n              // data we now use. The original teapot is taller. Fix it:\n              if (!blinn && i === 2) {\n                g[c * 4 + r] *= blinnScale\n              }\n            }\n          }\n\n          gmx.set(g[0], g[1], g[2], g[3], g[4], g[5], g[6], g[7], g[8], g[9], g[10], g[11], g[12], g[13], g[14], g[15])\n\n          tmtx.multiplyMatrices(gmx, ms)\n          mgm[i].multiplyMatrices(mst, tmtx)\n        }\n\n        // step along, get points, and output\n        for (sstep = 0; sstep <= segments; sstep++) {\n          s = sstep / segments\n\n          for (tstep = 0; tstep <= segments; tstep++) {\n            t = tstep / segments\n\n            // point from basis\n            // get power vectors and their derivatives\n            for (p = 4, sval = tval = 1.0; p--; ) {\n              sp[p] = sval\n              tp[p] = tval\n              sval *= s\n              tval *= t\n\n              if (p === 3) {\n                dsp[p] = dtp[p] = 0.0\n                dsval = dtval = 1.0\n              } else {\n                dsp[p] = dsval * (3 - p)\n                dtp[p] = dtval * (3 - p)\n                dsval *= s\n                dtval *= t\n              }\n            }\n\n            vsp.fromArray(sp)\n            vtp.fromArray(tp)\n            vdsp.fromArray(dsp)\n            vdtp.fromArray(dtp)\n\n            // do for x,y,z\n            for (i = 0; i < 3; i++) {\n              // multiply power vectors times matrix to get value\n              tcoord = vsp.clone()\n              tcoord.applyMatrix4(mgm[i])\n              vert[i] = tcoord.dot(vtp)\n\n              // get s and t tangent vectors\n              tcoord = vdsp.clone()\n              tcoord.applyMatrix4(mgm[i])\n              sdir[i] = tcoord.dot(vtp)\n\n              tcoord = vsp.clone()\n              tcoord.applyMatrix4(mgm[i])\n              tdir[i] = tcoord.dot(vdtp)\n            }\n\n            // find normal\n            vsdir.fromArray(sdir)\n            vtdir.fromArray(tdir)\n            norm.crossVectors(vtdir, vsdir)\n            norm.normalize()\n\n            // if X and Z length is 0, at the cusp, so point the normal up or down, depending on patch number\n            if (vert[0] === 0 && vert[1] === 0) {\n              // if above the middle of the teapot, normal points up, else down\n              normOut.set(0, vert[2] > maxHeight2 ? 1 : -1, 0)\n            } else {\n              // standard output: rotate on X axis\n              normOut.set(norm.x, norm.z, -norm.y)\n            }\n\n            // store it all\n            vertices[vertCount++] = trueSize * vert[0]\n            vertices[vertCount++] = trueSize * (vert[2] - maxHeight2)\n            vertices[vertCount++] = -trueSize * vert[1]\n\n            normals[normCount++] = normOut.x\n            normals[normCount++] = normOut.y\n            normals[normCount++] = normOut.z\n\n            uvs[uvCount++] = 1 - t\n            uvs[uvCount++] = 1 - s\n          }\n        }\n\n        // save the faces\n        for (sstep = 0; sstep < segments; sstep++) {\n          for (tstep = 0; tstep < segments; tstep++) {\n            v1 = surfCount * vertPerRow * vertPerRow + sstep * vertPerRow + tstep\n            v2 = v1 + 1\n            v3 = v2 + vertPerRow\n            v4 = v1 + vertPerRow\n\n            // Normals and UVs cannot be shared. Without clone(), you can see the consequences\n            // of sharing if you call geometry.applyMatrix4( matrix ).\n            if (notDegenerate(v1, v2, v3)) {\n              indices[indexCount++] = v1\n              indices[indexCount++] = v2\n              indices[indexCount++] = v3\n            }\n\n            if (notDegenerate(v1, v3, v4)) {\n              indices[indexCount++] = v1\n              indices[indexCount++] = v3\n              indices[indexCount++] = v4\n            }\n          }\n        }\n\n        // increment only if a surface was used\n        surfCount++\n      }\n    }\n\n    this.setIndex(new BufferAttribute(indices, 1))\n    this.setAttribute('position', new BufferAttribute(vertices, 3))\n    this.setAttribute('normal', new BufferAttribute(normals, 3))\n    this.setAttribute('uv', new BufferAttribute(uvs, 2))\n\n    this.computeBoundingSphere()\n  }\n}\n\nexport { TeapotGeometry }\n"],"names":["BufferGeometry","Matrix4","Vector3","Vector4","BufferAttribute"],"mappings":";;;AAmDA,MAAM,uBAAuBA,MAAAA,eAAe;AAAA,EAC1C,YAAY,MAAM,UAAU,QAAQ,KAAK,MAAM,QAAQ,OAAO;AAE5D,UAAM,gBAAgB;AAAA;AAAA,MAEpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAED,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA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"}