window['packerplugin'] = { 'textures': ['texture'] }; window['packerplugin']['json'] = {}; window['packerplugin']['json']['texture'] = '{\x22frames\x22:\x20{\x22media/graphics/sprites/button-continue.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x202,\x20\x22x\x22:\x201962,\x20\x22w\x22:\x2084,\x20\x22h\x22:\x2079},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2079,\x20\x22w\x22:\x2084},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2084,\x20\x22h\x22:\x2079}},\x20\x22media/graphics/sprites/button-reset-game.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x201931,\x20\x22x\x22:\x20676,\x20\x22w\x22:\x20120,\x20\x22h\x22:\x20113},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20113,\x20\x22w\x22:\x20120},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20120,\x20\x22h\x22:\x20113}},\x20\x22media/graphics/sprites/icon-sfx.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20128,\x20\x22x\x22:\x20808,\x20\x22w\x22:\x2038,\x20\x22h\x22:\x2037},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2037,\x20\x22w\x22:\x2038},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2038,\x20\x22h\x22:\x2037}},\x20\x22media/graphics/opening/kittytitle.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20640,\x20\x22x\x22:\x20546,\x20\x22w\x22:\x20380,\x20\x22h\x22:\x20296},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20296,\x20\x22w\x22:\x20380},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20380,\x20\x22h\x22:\x20296}},\x20\x22media/graphics/sprites/coin.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20364,\x20\x22x\x22:\x20546,\x20\x22w\x22:\x2051,\x20\x22h\x22:\x2054},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2054,\x20\x22w\x22:\x2051},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2051,\x20\x22h\x22:\x2054}},\x20\x22media/graphics/sprites/gameover-bg.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x202,\x20\x22x\x22:\x201535,\x20\x22w\x22:\x20423,\x20\x22h\x22:\x20147},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20147,\x20\x22w\x22:\x20423},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20423,\x20\x22h\x22:\x20147}},\x20\x22media/graphics/sprites/button-exit.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20128,\x20\x22x\x22:\x20724,\x20\x22w\x22:\x2040,\x20\x22h\x22:\x2040},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2040,\x20\x22w\x22:\x2040},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2040,\x20\x22h\x22:\x2040}},\x20\x22media/graphics/sprites/icon-bgm.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20128,\x20\x22x\x22:\x20768,\x20\x22w\x22:\x2036,\x20\x22h\x22:\x2039},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2039,\x20\x22w\x22:\x2036},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2036,\x20\x22h\x22:\x2039}},\x20\x22media/graphics/sprites/title.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20353,\x20\x22x\x22:\x20924,\x20\x22w\x22:\x20389,\x20\x22h\x22:\x20242},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20242,\x20\x22w\x22:\x20389},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20389,\x20\x22h\x22:\x20242}},\x20\x22media/graphics/sprites/button-reward-collect.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20435,\x20\x22x\x22:\x201944,\x20\x22w\x22:\x2090,\x20\x22h\x22:\x2031},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2031,\x20\x22w\x22:\x2090},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2090,\x20\x22h\x22:\x2031}},\x20\x22media/graphics/sprites/booster-popup.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x201620,\x20\x22x\x22:\x20552,\x20\x22w\x22:\x20467,\x20\x22h\x22:\x20307},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20307,\x20\x22w\x22:\x20467},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20467,\x20\x22h\x22:\x20307}},\x20\x22media/graphics/sprites/button-play.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x202,\x20\x22x\x22:\x20546,\x20\x22w\x22:\x20174,\x20\x22h\x22:\x20164},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20164,\x20\x22w\x22:\x20174},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20174,\x20\x22h\x22:\x20164}},\x20\x22media/graphics/sprites/button-buy.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20305,\x20\x22x\x22:\x20546,\x20\x22w\x22:\x20120,\x20\x22h\x22:\x2055},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2055,\x20\x22w\x22:\x20120},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20120,\x20\x22h\x22:\x2055}},\x20\x22media/graphics/sprites/hand.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20470,\x20\x22x\x22:\x201944,\x20\x22w\x22:\x2078,\x20\x22h\x22:\x2092},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2092,\x20\x22w\x22:\x2078},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2078,\x20\x22h\x22:\x2092}},\x20\x22media/graphics/sprites/button-more-games.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x201931,\x20\x22x\x22:\x20552,\x20\x22w\x22:\x20120,\x20\x22h\x22:\x20113},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20113,\x20\x22w\x22:\x20120},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20120,\x20\x22h\x22:\x20113}},\x20\x22media/graphics/sprites/button-booster-2.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20501,\x20\x22x\x22:\x20672,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x20122},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20122,\x20\x22w\x22:\x20122},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x20122}},\x20\x22media/graphics/sprites/game-over.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20153,\x20\x22x\x22:\x201535,\x20\x22w\x22:\x20418,\x20\x22h\x22:\x2070},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2070,\x20\x22w\x22:\x20418},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20418,\x20\x22h\x22:\x2070}},\x20\x22media/graphics/sprites/extra-life-splash.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x202,\x20\x22x\x22:\x20878,\x20\x22w\x22:\x20150,\x20\x22h\x22:\x20166},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20166,\x20\x22w\x22:\x20150},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20150,\x20\x22h\x22:\x20166}},\x20\x22media/graphics/sprites/icon-booster-2.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20305,\x20\x22x\x22:\x20798,\x20\x22w\x22:\x2070,\x20\x22h\x22:\x2070},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2070,\x20\x22w\x22:\x2070},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2070,\x20\x22h\x22:\x2070}},\x20\x22media/graphics/sprites/button-pause.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20245,\x20\x22x\x22:\x201256,\x20\x22w\x22:\x2057,\x20\x22h\x22:\x2062},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2062,\x20\x22w\x22:\x2057},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2057,\x20\x22h\x22:\x2062}},\x20\x22media/graphics/sprites/lock.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20245,\x20\x22x\x22:\x201078,\x20\x22w\x22:\x2050,\x20\x22h\x22:\x2070},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2070,\x20\x22w\x22:\x2050},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2050,\x20\x22h\x22:\x2070}},\x20\x22media/graphics/sprites/dot.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20227,\x20\x22x\x22:\x201004,\x20\x22w\x22:\x2028,\x20\x22h\x22:\x2032},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2032,\x20\x22w\x22:\x2028},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2028,\x20\x22h\x22:\x2032}},\x20\x22media/graphics/sprites/button-home.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x2085,\x20\x22x\x22:\x201962,\x20\x22w\x22:\x2084,\x20\x22h\x22:\x2079},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2079,\x20\x22w\x22:\x2084},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2084,\x20\x22h\x22:\x2079}},\x20\x22media/graphics/sprites/tutorial-bg.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x202,\x20\x22x\x22:\x201047,\x20\x22w\x22:\x20484,\x20\x22h\x22:\x20239},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20239,\x20\x22w\x22:\x20484},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20484,\x20\x22h\x22:\x20239}},\x20\x22media/graphics/sprites/icon-booster-1.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20566,\x20\x22x\x22:\x201944,\x20\x22w\x22:\x2076,\x20\x22h\x22:\x2070},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2070,\x20\x22w\x22:\x2076},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2076,\x20\x22h\x22:\x2070}},\x20\x22media/graphics/sprites/button-start-drift.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20227,\x20\x22x\x22:\x20546,\x20\x22w\x22:\x20303,\x20\x22h\x22:\x2074},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2074,\x20\x22w\x22:\x20303},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20303,\x20\x22h\x22:\x2074}},\x20\x22media/graphics/sprites/reward-box.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20251,\x20\x22x\x22:\x201944,\x20\x22w\x22:\x20100,\x20\x22h\x22:\x20180},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20180,\x20\x22w\x22:\x20100},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20100,\x20\x22h\x22:\x20180}},\x20\x22media/graphics/sprites/select-boosters.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20172,\x20\x22x\x22:\x20546,\x20\x22w\x22:\x20477,\x20\x22h\x22:\x2051},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2051,\x20\x22w\x22:\x20477},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20477,\x20\x22h\x22:\x2051}},\x20\x22media/graphics/sprites/dailyreward-popup.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x201620,\x20\x22x\x22:\x202,\x20\x22w\x22:\x20546,\x20\x22h\x22:\x20402},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20402,\x20\x22w\x22:\x20546},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20546,\x20\x22h\x22:\x20402}},\x20\x22media/graphics/sprites/buy-disable.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20362,\x20\x22x\x22:\x20670,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x2053},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2053,\x20\x22w\x22:\x20122},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x2053}},\x20\x22media/graphics/sprites/button-reward.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x201931,\x20\x22x\x22:\x20800,\x20\x22w\x22:\x20120,\x20\x22h\x22:\x20113},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20113,\x20\x22w\x22:\x20120},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20120,\x20\x22h\x22:\x20113}},\x20\x22media/graphics/sprites/button-minimize.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20245,\x20\x22x\x22:\x201194,\x20\x22w\x22:\x2058,\x20\x22h\x22:\x2062},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2062,\x20\x22w\x22:\x2058},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2058,\x20\x22h\x22:\x2062}},\x20\x22media/graphics/sprites/slider.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20453,\x20\x22x\x22:\x20546,\x20\x22w\x22:\x20210,\x20\x22h\x22:\x2027},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2027,\x20\x22w\x22:\x20210},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20210,\x20\x22h\x22:\x2027}},\x20\x22media/graphics/splash/loading.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x202,\x20\x22x\x22:\x202,\x20\x22w\x22:\x20540,\x20\x22h\x22:\x20960},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20960,\x20\x22w\x22:\x20540},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20540,\x20\x22h\x22:\x20960}},\x20\x22media/graphics/sprites/booster-disable.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x202,\x20\x22x\x22:\x20724,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x20122},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20122,\x20\x22w\x22:\x20122},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x20122}},\x20\x22media/graphics/sprites/bg-popup.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20227,\x20\x22x\x22:\x201535,\x20\x22w\x22:\x20405,\x20\x22h\x22:\x20270},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20270,\x20\x22w\x22:\x20405},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20405,\x20\x22h\x22:\x20270}},\x20\x22media/graphics/opening/kitty.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20966,\x20\x22x\x22:\x202,\x20\x22w\x22:\x20872,\x20\x22h\x22:\x20650},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20650,\x20\x22w\x22:\x20872},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20872,\x20\x22h\x22:\x20650}},\x20\x22media/graphics/sprites/button-buy-booster.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20305,\x20\x22x\x22:\x20670,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x2053},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2053,\x20\x22w\x22:\x20122},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x2053}},\x20\x22media/graphics/sprites/button-maximize.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20245,\x20\x22x\x22:\x201132,\x20\x22w\x22:\x2058,\x20\x22h\x22:\x2062},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2062,\x20\x22w\x22:\x2058},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2058,\x20\x22h\x22:\x2062}},\x20\x22media/graphics/sprites/icon-check.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20263,\x20\x22x\x22:\x201004,\x20\x22w\x22:\x2070,\x20\x22h\x22:\x2070},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2070,\x20\x22w\x22:\x2070},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2070,\x20\x22h\x22:\x2070}},\x20\x22media/graphics/sprites/left.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20353,\x20\x22x\x22:\x20872,\x20\x22w\x22:\x2040,\x20\x22h\x22:\x2060},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2060,\x20\x22w\x22:\x2040},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2040,\x20\x22h\x22:\x2060}},\x20\x22media/graphics/sprites/button-booster-3.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20501,\x20\x22x\x22:\x20798,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x20122},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20122,\x20\x22w\x22:\x20122},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x20122}},\x20\x22media/graphics/sprites/booster-selected.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20227,\x20\x22x\x22:\x20878,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x20122},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20122,\x20\x22w\x22:\x20122},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x20122}},\x20\x22media/graphics/sprites/button-settings.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x201931,\x20\x22x\x22:\x20924,\x20\x22w\x22:\x20119,\x20\x22h\x22:\x20113},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20113,\x20\x22w\x22:\x20119},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20119,\x20\x22h\x22:\x20113}},\x20\x22media/graphics/sprites/button-restart.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20168,\x20\x22x\x22:\x201957,\x20\x22w\x22:\x2084,\x20\x22h\x22:\x2079},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2079,\x20\x22w\x22:\x2084},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2084,\x20\x22h\x22:\x2079}},\x20\x22media/graphics/sprites/button-booster-1.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20501,\x20\x22x\x22:\x20546,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x20122},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x20122,\x20\x22w\x22:\x20122},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x20122,\x20\x22h\x22:\x20122}},\x20\x22media/graphics/sprites/icon-booster-3.png\x22:\x20{\x22frame\x22:\x20{\x22y\x22:\x20379,\x20\x22x\x22:\x20798,\x20\x22w\x22:\x2070,\x20\x22h\x22:\x2070},\x20\x22rotated\x22:\x20false,\x20\x22trimmed\x22:\x20false,\x20\x22pivot\x22:\x20{\x22y\x22:\x200.5,\x20\x22x\x22:\x200.5},\x20\x22sourceSize\x22:\x20{\x22h\x22:\x2070,\x20\x22w\x22:\x2070},\x20\x22spriteSourceSize\x22:\x20{\x22y\x22:\x200,\x20\x22x\x22:\x200,\x20\x22w\x22:\x2070,\x20\x22h\x22:\x2070}}},\x20\x22meta\x22:\x20{\x22scale\x22:\x201,\x20\x22format\x22:\x20\x22RGBA8888\x22,\x20\x22app\x22:\x20\x22http://github.com/odrick/free-tex-packer-cli\x22,\x20\x22version\x22:\x20\x220.3.0\x22,\x20\x22image\x22:\x20\x22texture.png\x22,\x20\x22size\x22:\x20{\x22h\x22:\x202046,\x20\x22w\x22:\x202048}}}'; !function(_0x4d69d3, _0x142339) { 'object' == typeof exports && 'object' == typeof module ? module['exports'] = _0x142339() : 'function' == typeof define && define['amd'] ? define('babylonjs', [], _0x142339) : 'object' == typeof exports ? exports['babylonjs'] = _0x142339() : _0x4d69d3['BABYLON'] = _0x142339(); }('undefined' != typeof self ? self : 'undefined' != typeof global ? global : this, function() { return function(_0x2a84bf) { var _0x41f161 = {}; function _0x142f48(_0xf01f76) { if (_0x41f161[_0xf01f76]) return _0x41f161[_0xf01f76]['exports']; var _0x4fd0f2 = _0x41f161[_0xf01f76] = { 'i': _0xf01f76, 'l': !0x1, 'exports': {} }; return _0x2a84bf[_0xf01f76]['call'](_0x4fd0f2['exports'], _0x4fd0f2, _0x4fd0f2['exports'], _0x142f48), _0x4fd0f2['l'] = !0x0, _0x4fd0f2['exports']; } return _0x142f48['m'] = _0x2a84bf, _0x142f48['c'] = _0x41f161, _0x142f48['d'] = function(_0x53b9da, _0x20d078, _0x526c5a) { _0x142f48['o'](_0x53b9da, _0x20d078) || Object['defineProperty'](_0x53b9da, _0x20d078, { 'enumerable': !0x0, 'get': _0x526c5a }); } , _0x142f48['r'] = function(_0x4facea) { 'undefined' != typeof Symbol && Symbol['toStringTag'] && Object['defineProperty'](_0x4facea, Symbol['toStringTag'], { 'value': 'Module' }), Object['defineProperty'](_0x4facea, '__esModule', { 'value': !0x0 }); } , _0x142f48['t'] = function(_0x3f142d, _0x40532d) { if (0x1 & _0x40532d && (_0x3f142d = _0x142f48(_0x3f142d)), 0x8 & _0x40532d) return _0x3f142d; if (0x4 & _0x40532d && 'object' == typeof _0x3f142d && _0x3f142d && _0x3f142d['__esModule']) return _0x3f142d; var _0x35b2ac = Object['create'](null); if (_0x142f48['r'](_0x35b2ac), Object['defineProperty'](_0x35b2ac, 'default', { 'enumerable': !0x0, 'value': _0x3f142d }), 0x2 & _0x40532d && 'string' != typeof _0x3f142d) for (var _0x4f630e in _0x3f142d) _0x142f48['d'](_0x35b2ac, _0x4f630e, function(_0x3f7c61) { return _0x3f142d[_0x3f7c61]; } ['bind'](null, _0x4f630e)); return _0x35b2ac; } , _0x142f48['n'] = function(_0x2922b3) { var _0x1a0505 = _0x2922b3 && _0x2922b3['__esModule'] ? function() { return _0x2922b3['default']; } : function() { return _0x2922b3; } ; return _0x142f48['d'](_0x1a0505, 'a', _0x1a0505), _0x1a0505; } , _0x142f48['o'] = function(_0x25e1a0, _0x2bf4bd) { return Object['prototype']['hasOwnProperty']['call'](_0x25e1a0, _0x2bf4bd); } , _0x142f48['p'] = '', _0x142f48(_0x142f48['s'] = 0x81); }([function(_0x41b357, _0x9cec24, _0x229f34) { 'use strict'; _0x229f34['d'](_0x9cec24, 'u', function() { return _0x53f190; }), _0x229f34['d'](_0x9cec24, 'v', function() { return _0x5e9455; }), _0x229f34['d'](_0x9cec24, 'h', function() { return _0x3e57e9; }), _0x229f34['d'](_0x9cec24, 'e', function() { return _0x30c94a; }), _0x229f34['d'](_0x9cec24, 'f', function() { return _0x3acf15; }), _0x229f34['d'](_0x9cec24, 'w', function() { return _0x461b0a; }), _0x229f34['d'](_0x9cec24, 'x', function() { return _0x3fbe20; }), _0x229f34['d'](_0x9cec24, 'y', function() { return _0x298fee; }), _0x229f34['d'](_0x9cec24, 'r', function() { return _0x1232e4; }), _0x229f34['d'](_0x9cec24, 'q', function() { return _0x897ad5; }), _0x229f34['d'](_0x9cec24, 'j', function() { return _0x5e57bc; }), _0x229f34['d'](_0x9cec24, 'n', function() { return _0x289f15; }), _0x229f34['d'](_0x9cec24, 'z', function() { return _0x34efa7; }), _0x229f34['d'](_0x9cec24, 'i', function() { return _0x4a31f7; }), _0x229f34['d'](_0x9cec24, 's', function() { return _0x51c4bf; }), _0x229f34['d'](_0x9cec24, 'c', function() { return _0x5cc191; }), _0x229f34['d'](_0x9cec24, 'd', function() { return _0x36e0cc; }), _0x229f34['d'](_0x9cec24, 'k', function() { return _0x388ee5; }), _0x229f34['d'](_0x9cec24, 'a', function() { return _0x21c421; }), _0x229f34['d'](_0x9cec24, 'b', function() { return _0x2333b1; }), _0x229f34['d'](_0x9cec24, 'l', function() { return _0x23ab56; }), _0x229f34['d'](_0x9cec24, 'm', function() { return _0x1679c4; }), _0x229f34['d'](_0x9cec24, 'g', function() { return _0x4c8767; }), _0x229f34['d'](_0x9cec24, 'p', function() { return _0x251d0b; }), _0x229f34['d'](_0x9cec24, 'o', function() { return _0x1a40e0; }), _0x229f34['d'](_0x9cec24, 't', function() { return _0x503241; }); var _0x51c4bf, _0x1528c3 = _0x229f34(0x22), _0x15f609 = _0x229f34(0xc), _0x53f190 = 0x1 / 2.2, _0x5e9455 = 2.2, _0x3e57e9 = 0.001, _0x30c94a = function() { function _0x4f9672(_0xfa3b0, _0x3322e1, _0x2a6e1d) { void 0x0 === _0xfa3b0 && (_0xfa3b0 = 0x0), void 0x0 === _0x3322e1 && (_0x3322e1 = 0x0), void 0x0 === _0x2a6e1d && (_0x2a6e1d = 0x0), this['r'] = _0xfa3b0, this['g'] = _0x3322e1, this['b'] = _0x2a6e1d; } return _0x4f9672['prototype']['toString'] = function() { return '{R:\x20' + this['r'] + '\x20G:' + this['g'] + '\x20B:' + this['b'] + '}'; } , _0x4f9672['prototype']['getClassName'] = function() { return 'Color3'; } , _0x4f9672['prototype']['getHashCode'] = function() { var _0x51beae = this['r'] || 0x0; return _0x51beae = 0x18d * (_0x51beae = 0x18d * _0x51beae ^ (this['g'] || 0x0)) ^ (this['b'] || 0x0); } , _0x4f9672['prototype']['toArray'] = function(_0x46ffe8, _0x53fd33) { return void 0x0 === _0x53fd33 && (_0x53fd33 = 0x0), _0x46ffe8[_0x53fd33] = this['r'], _0x46ffe8[_0x53fd33 + 0x1] = this['g'], _0x46ffe8[_0x53fd33 + 0x2] = this['b'], this; } , _0x4f9672['prototype']['toColor4'] = function(_0x4b2a94) { return void 0x0 === _0x4b2a94 && (_0x4b2a94 = 0x1), new _0x3acf15(this['r'],this['g'],this['b'],_0x4b2a94); } , _0x4f9672['prototype']['asArray'] = function() { var _0x78c971 = new Array(); return this['toArray'](_0x78c971, 0x0), _0x78c971; } , _0x4f9672['prototype']['toLuminance'] = function() { return 0.3 * this['r'] + 0.59 * this['g'] + 0.11 * this['b']; } , _0x4f9672['prototype']['multiply'] = function(_0x5a83a4) { return new _0x4f9672(this['r'] * _0x5a83a4['r'],this['g'] * _0x5a83a4['g'],this['b'] * _0x5a83a4['b']); } , _0x4f9672['prototype']['multiplyToRef'] = function(_0x20801c, _0x23cfaf) { return _0x23cfaf['r'] = this['r'] * _0x20801c['r'], _0x23cfaf['g'] = this['g'] * _0x20801c['g'], _0x23cfaf['b'] = this['b'] * _0x20801c['b'], this; } , _0x4f9672['prototype']['equals'] = function(_0x2a3896) { return _0x2a3896 && this['r'] === _0x2a3896['r'] && this['g'] === _0x2a3896['g'] && this['b'] === _0x2a3896['b']; } , _0x4f9672['prototype']['equalsFloats'] = function(_0x513f2b, _0x20a623, _0x497da8) { return this['r'] === _0x513f2b && this['g'] === _0x20a623 && this['b'] === _0x497da8; } , _0x4f9672['prototype']['scale'] = function(_0x5e8b1d) { return new _0x4f9672(this['r'] * _0x5e8b1d,this['g'] * _0x5e8b1d,this['b'] * _0x5e8b1d); } , _0x4f9672['prototype']['scaleToRef'] = function(_0x52c4d0, _0x23f75d) { return _0x23f75d['r'] = this['r'] * _0x52c4d0, _0x23f75d['g'] = this['g'] * _0x52c4d0, _0x23f75d['b'] = this['b'] * _0x52c4d0, this; } , _0x4f9672['prototype']['scaleAndAddToRef'] = function(_0x6c7a9b, _0x49411f) { return _0x49411f['r'] += this['r'] * _0x6c7a9b, _0x49411f['g'] += this['g'] * _0x6c7a9b, _0x49411f['b'] += this['b'] * _0x6c7a9b, this; } , _0x4f9672['prototype']['clampToRef'] = function(_0x434477, _0x5cbc79, _0x59db6c) { return void 0x0 === _0x434477 && (_0x434477 = 0x0), void 0x0 === _0x5cbc79 && (_0x5cbc79 = 0x1), _0x59db6c['r'] = _0x15f609['a']['Clamp'](this['r'], _0x434477, _0x5cbc79), _0x59db6c['g'] = _0x15f609['a']['Clamp'](this['g'], _0x434477, _0x5cbc79), _0x59db6c['b'] = _0x15f609['a']['Clamp'](this['b'], _0x434477, _0x5cbc79), this; } , _0x4f9672['prototype']['add'] = function(_0x43ded7) { return new _0x4f9672(this['r'] + _0x43ded7['r'],this['g'] + _0x43ded7['g'],this['b'] + _0x43ded7['b']); } , _0x4f9672['prototype']['addToRef'] = function(_0x471f2d, _0x3469ea) { return _0x3469ea['r'] = this['r'] + _0x471f2d['r'], _0x3469ea['g'] = this['g'] + _0x471f2d['g'], _0x3469ea['b'] = this['b'] + _0x471f2d['b'], this; } , _0x4f9672['prototype']['subtract'] = function(_0x54daf9) { return new _0x4f9672(this['r'] - _0x54daf9['r'],this['g'] - _0x54daf9['g'],this['b'] - _0x54daf9['b']); } , _0x4f9672['prototype']['subtractToRef'] = function(_0x24a62c, _0x43cbf6) { return _0x43cbf6['r'] = this['r'] - _0x24a62c['r'], _0x43cbf6['g'] = this['g'] - _0x24a62c['g'], _0x43cbf6['b'] = this['b'] - _0x24a62c['b'], this; } , _0x4f9672['prototype']['clone'] = function() { return new _0x4f9672(this['r'],this['g'],this['b']); } , _0x4f9672['prototype']['copyFrom'] = function(_0x4e0552) { return this['r'] = _0x4e0552['r'], this['g'] = _0x4e0552['g'], this['b'] = _0x4e0552['b'], this; } , _0x4f9672['prototype']['copyFromFloats'] = function(_0x1cfa38, _0x5bbbd9, _0x590820) { return this['r'] = _0x1cfa38, this['g'] = _0x5bbbd9, this['b'] = _0x590820, this; } , _0x4f9672['prototype']['set'] = function(_0x3e4175, _0x599cc3, _0x59cab3) { return this['copyFromFloats'](_0x3e4175, _0x599cc3, _0x59cab3); } , _0x4f9672['prototype']['toHexString'] = function() { var _0x458aa9 = 0xff * this['r'] | 0x0 , _0x46f22b = 0xff * this['g'] | 0x0 , _0x14b11b = 0xff * this['b'] | 0x0; return '#' + _0x15f609['a']['ToHex'](_0x458aa9) + _0x15f609['a']['ToHex'](_0x46f22b) + _0x15f609['a']['ToHex'](_0x14b11b); } , _0x4f9672['prototype']['toLinearSpace'] = function() { var _0x2929ac = new _0x4f9672(); return this['toLinearSpaceToRef'](_0x2929ac), _0x2929ac; } , _0x4f9672['prototype']['toLinearSpaceToRef'] = function(_0x290dbe) { return _0x290dbe['r'] = Math['pow'](this['r'], _0x5e9455), _0x290dbe['g'] = Math['pow'](this['g'], _0x5e9455), _0x290dbe['b'] = Math['pow'](this['b'], _0x5e9455), this; } , _0x4f9672['prototype']['toGammaSpace'] = function() { var _0x4ba4d8 = new _0x4f9672(); return this['toGammaSpaceToRef'](_0x4ba4d8), _0x4ba4d8; } , _0x4f9672['prototype']['toGammaSpaceToRef'] = function(_0x4b2ad9) { return _0x4b2ad9['r'] = Math['pow'](this['r'], _0x53f190), _0x4b2ad9['g'] = Math['pow'](this['g'], _0x53f190), _0x4b2ad9['b'] = Math['pow'](this['b'], _0x53f190), this; } , _0x4f9672['FromHexString'] = function(_0x56fcf4) { if ('#' !== _0x56fcf4['substring'](0x0, 0x1) || 0x7 !== _0x56fcf4['length']) return new _0x4f9672(0x0,0x0,0x0); var _0x10b989 = parseInt(_0x56fcf4['substring'](0x1, 0x3), 0x10) , _0x5ecf63 = parseInt(_0x56fcf4['substring'](0x3, 0x5), 0x10) , _0x89b802 = parseInt(_0x56fcf4['substring'](0x5, 0x7), 0x10); return _0x4f9672['FromInts'](_0x10b989, _0x5ecf63, _0x89b802); } , _0x4f9672['FromArray'] = function(_0x486564, _0x245f53) { return void 0x0 === _0x245f53 && (_0x245f53 = 0x0), new _0x4f9672(_0x486564[_0x245f53],_0x486564[_0x245f53 + 0x1],_0x486564[_0x245f53 + 0x2]); } , _0x4f9672['FromInts'] = function(_0x13c730, _0x1f9379, _0x3c5e44) { return new _0x4f9672(_0x13c730 / 0xff,_0x1f9379 / 0xff,_0x3c5e44 / 0xff); } , _0x4f9672['Lerp'] = function(_0xa8ac60, _0x245c2b, _0x2fa242) { var _0x33f0bd = new _0x4f9672(0x0,0x0,0x0); return _0x4f9672['LerpToRef'](_0xa8ac60, _0x245c2b, _0x2fa242, _0x33f0bd), _0x33f0bd; } , _0x4f9672['LerpToRef'] = function(_0x501556, _0x36d5c2, _0x5ca683, _0x401603) { _0x401603['r'] = _0x501556['r'] + (_0x36d5c2['r'] - _0x501556['r']) * _0x5ca683, _0x401603['g'] = _0x501556['g'] + (_0x36d5c2['g'] - _0x501556['g']) * _0x5ca683, _0x401603['b'] = _0x501556['b'] + (_0x36d5c2['b'] - _0x501556['b']) * _0x5ca683; } , _0x4f9672['Red'] = function() { return new _0x4f9672(0x1,0x0,0x0); } , _0x4f9672['Green'] = function() { return new _0x4f9672(0x0,0x1,0x0); } , _0x4f9672['Blue'] = function() { return new _0x4f9672(0x0,0x0,0x1); } , _0x4f9672['Black'] = function() { return new _0x4f9672(0x0,0x0,0x0); } , Object['defineProperty'](_0x4f9672, 'BlackReadOnly', { 'get': function() { return _0x4f9672['_BlackReadOnly']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4f9672['White'] = function() { return new _0x4f9672(0x1,0x1,0x1); } , _0x4f9672['Purple'] = function() { return new _0x4f9672(0.5,0x0,0.5); } , _0x4f9672['Magenta'] = function() { return new _0x4f9672(0x1,0x0,0x1); } , _0x4f9672['Yellow'] = function() { return new _0x4f9672(0x1,0x1,0x0); } , _0x4f9672['Gray'] = function() { return new _0x4f9672(0.5,0.5,0.5); } , _0x4f9672['Teal'] = function() { return new _0x4f9672(0x0,0x1,0x1); } , _0x4f9672['Random'] = function() { return new _0x4f9672(Math['random'](),Math['random'](),Math['random']()); } , _0x4f9672['_BlackReadOnly'] = _0x4f9672['Black'](), _0x4f9672; }(), _0x3acf15 = function() { function _0x132738(_0x32a795, _0x3d30af, _0x17f9fe, _0x39ccbc) { void 0x0 === _0x32a795 && (_0x32a795 = 0x0), void 0x0 === _0x3d30af && (_0x3d30af = 0x0), void 0x0 === _0x17f9fe && (_0x17f9fe = 0x0), void 0x0 === _0x39ccbc && (_0x39ccbc = 0x1), this['r'] = _0x32a795, this['g'] = _0x3d30af, this['b'] = _0x17f9fe, this['a'] = _0x39ccbc; } return _0x132738['prototype']['addInPlace'] = function(_0x27be62) { return this['r'] += _0x27be62['r'], this['g'] += _0x27be62['g'], this['b'] += _0x27be62['b'], this['a'] += _0x27be62['a'], this; } , _0x132738['prototype']['asArray'] = function() { var _0x532e05 = new Array(); return this['toArray'](_0x532e05, 0x0), _0x532e05; } , _0x132738['prototype']['toArray'] = function(_0x3cda33, _0x450b6b) { return void 0x0 === _0x450b6b && (_0x450b6b = 0x0), _0x3cda33[_0x450b6b] = this['r'], _0x3cda33[_0x450b6b + 0x1] = this['g'], _0x3cda33[_0x450b6b + 0x2] = this['b'], _0x3cda33[_0x450b6b + 0x3] = this['a'], this; } , _0x132738['prototype']['equals'] = function(_0xb67894) { return _0xb67894 && this['r'] === _0xb67894['r'] && this['g'] === _0xb67894['g'] && this['b'] === _0xb67894['b'] && this['a'] === _0xb67894['a']; } , _0x132738['prototype']['add'] = function(_0x527d11) { return new _0x132738(this['r'] + _0x527d11['r'],this['g'] + _0x527d11['g'],this['b'] + _0x527d11['b'],this['a'] + _0x527d11['a']); } , _0x132738['prototype']['subtract'] = function(_0x3c7269) { return new _0x132738(this['r'] - _0x3c7269['r'],this['g'] - _0x3c7269['g'],this['b'] - _0x3c7269['b'],this['a'] - _0x3c7269['a']); } , _0x132738['prototype']['subtractToRef'] = function(_0x12a340, _0x537a6d) { return _0x537a6d['r'] = this['r'] - _0x12a340['r'], _0x537a6d['g'] = this['g'] - _0x12a340['g'], _0x537a6d['b'] = this['b'] - _0x12a340['b'], _0x537a6d['a'] = this['a'] - _0x12a340['a'], this; } , _0x132738['prototype']['scale'] = function(_0x1a7678) { return new _0x132738(this['r'] * _0x1a7678,this['g'] * _0x1a7678,this['b'] * _0x1a7678,this['a'] * _0x1a7678); } , _0x132738['prototype']['scaleToRef'] = function(_0x4eab2b, _0x5df3f3) { return _0x5df3f3['r'] = this['r'] * _0x4eab2b, _0x5df3f3['g'] = this['g'] * _0x4eab2b, _0x5df3f3['b'] = this['b'] * _0x4eab2b, _0x5df3f3['a'] = this['a'] * _0x4eab2b, this; } , _0x132738['prototype']['scaleAndAddToRef'] = function(_0x41b748, _0x35cd67) { return _0x35cd67['r'] += this['r'] * _0x41b748, _0x35cd67['g'] += this['g'] * _0x41b748, _0x35cd67['b'] += this['b'] * _0x41b748, _0x35cd67['a'] += this['a'] * _0x41b748, this; } , _0x132738['prototype']['clampToRef'] = function(_0x5d580b, _0x369d4e, _0x5acf53) { return void 0x0 === _0x5d580b && (_0x5d580b = 0x0), void 0x0 === _0x369d4e && (_0x369d4e = 0x1), _0x5acf53['r'] = _0x15f609['a']['Clamp'](this['r'], _0x5d580b, _0x369d4e), _0x5acf53['g'] = _0x15f609['a']['Clamp'](this['g'], _0x5d580b, _0x369d4e), _0x5acf53['b'] = _0x15f609['a']['Clamp'](this['b'], _0x5d580b, _0x369d4e), _0x5acf53['a'] = _0x15f609['a']['Clamp'](this['a'], _0x5d580b, _0x369d4e), this; } , _0x132738['prototype']['multiply'] = function(_0x25c6c0) { return new _0x132738(this['r'] * _0x25c6c0['r'],this['g'] * _0x25c6c0['g'],this['b'] * _0x25c6c0['b'],this['a'] * _0x25c6c0['a']); } , _0x132738['prototype']['multiplyToRef'] = function(_0x2357d4, _0x36d647) { return _0x36d647['r'] = this['r'] * _0x2357d4['r'], _0x36d647['g'] = this['g'] * _0x2357d4['g'], _0x36d647['b'] = this['b'] * _0x2357d4['b'], _0x36d647['a'] = this['a'] * _0x2357d4['a'], _0x36d647; } , _0x132738['prototype']['toString'] = function() { return '{R:\x20' + this['r'] + '\x20G:' + this['g'] + '\x20B:' + this['b'] + '\x20A:' + this['a'] + '}'; } , _0x132738['prototype']['getClassName'] = function() { return 'Color4'; } , _0x132738['prototype']['getHashCode'] = function() { var _0xafd598 = this['r'] || 0x0; return _0xafd598 = 0x18d * (_0xafd598 = 0x18d * (_0xafd598 = 0x18d * _0xafd598 ^ (this['g'] || 0x0)) ^ (this['b'] || 0x0)) ^ (this['a'] || 0x0); } , _0x132738['prototype']['clone'] = function() { return new _0x132738(this['r'],this['g'],this['b'],this['a']); } , _0x132738['prototype']['copyFrom'] = function(_0x4a461a) { return this['r'] = _0x4a461a['r'], this['g'] = _0x4a461a['g'], this['b'] = _0x4a461a['b'], this['a'] = _0x4a461a['a'], this; } , _0x132738['prototype']['copyFromFloats'] = function(_0x14ffff, _0x4af04a, _0x539a9e, _0x4b2816) { return this['r'] = _0x14ffff, this['g'] = _0x4af04a, this['b'] = _0x539a9e, this['a'] = _0x4b2816, this; } , _0x132738['prototype']['set'] = function(_0x4c8c99, _0x4b289c, _0xd77e81, _0x2d7fd8) { return this['copyFromFloats'](_0x4c8c99, _0x4b289c, _0xd77e81, _0x2d7fd8); } , _0x132738['prototype']['toHexString'] = function() { var _0x4cd1e8 = 0xff * this['r'] | 0x0 , _0x29b4e8 = 0xff * this['g'] | 0x0 , _0x442277 = 0xff * this['b'] | 0x0 , _0x4836c5 = 0xff * this['a'] | 0x0; return '#' + _0x15f609['a']['ToHex'](_0x4cd1e8) + _0x15f609['a']['ToHex'](_0x29b4e8) + _0x15f609['a']['ToHex'](_0x442277) + _0x15f609['a']['ToHex'](_0x4836c5); } , _0x132738['prototype']['toLinearSpace'] = function() { var _0x185154 = new _0x132738(); return this['toLinearSpaceToRef'](_0x185154), _0x185154; } , _0x132738['prototype']['toLinearSpaceToRef'] = function(_0x3e7732) { return _0x3e7732['r'] = Math['pow'](this['r'], _0x5e9455), _0x3e7732['g'] = Math['pow'](this['g'], _0x5e9455), _0x3e7732['b'] = Math['pow'](this['b'], _0x5e9455), _0x3e7732['a'] = this['a'], this; } , _0x132738['prototype']['toGammaSpace'] = function() { var _0x359162 = new _0x132738(); return this['toGammaSpaceToRef'](_0x359162), _0x359162; } , _0x132738['prototype']['toGammaSpaceToRef'] = function(_0x1547b0) { return _0x1547b0['r'] = Math['pow'](this['r'], _0x53f190), _0x1547b0['g'] = Math['pow'](this['g'], _0x53f190), _0x1547b0['b'] = Math['pow'](this['b'], _0x53f190), _0x1547b0['a'] = this['a'], this; } , _0x132738['FromHexString'] = function(_0x473115) { if ('#' !== _0x473115['substring'](0x0, 0x1) || 0x9 !== _0x473115['length']) return new _0x132738(0x0,0x0,0x0,0x0); var _0xc3590f = parseInt(_0x473115['substring'](0x1, 0x3), 0x10) , _0x510f97 = parseInt(_0x473115['substring'](0x3, 0x5), 0x10) , _0x5f174b = parseInt(_0x473115['substring'](0x5, 0x7), 0x10) , _0x2b4f90 = parseInt(_0x473115['substring'](0x7, 0x9), 0x10); return _0x132738['FromInts'](_0xc3590f, _0x510f97, _0x5f174b, _0x2b4f90); } , _0x132738['Lerp'] = function(_0x35e6c5, _0x4d5b47, _0x59bfa8) { var _0xe7ae8b = new _0x132738(0x0,0x0,0x0,0x0); return _0x132738['LerpToRef'](_0x35e6c5, _0x4d5b47, _0x59bfa8, _0xe7ae8b), _0xe7ae8b; } , _0x132738['LerpToRef'] = function(_0x5c58bd, _0x177f66, _0x58b4ee, _0x2848b0) { _0x2848b0['r'] = _0x5c58bd['r'] + (_0x177f66['r'] - _0x5c58bd['r']) * _0x58b4ee, _0x2848b0['g'] = _0x5c58bd['g'] + (_0x177f66['g'] - _0x5c58bd['g']) * _0x58b4ee, _0x2848b0['b'] = _0x5c58bd['b'] + (_0x177f66['b'] - _0x5c58bd['b']) * _0x58b4ee, _0x2848b0['a'] = _0x5c58bd['a'] + (_0x177f66['a'] - _0x5c58bd['a']) * _0x58b4ee; } , _0x132738['FromColor3'] = function(_0x31defe, _0x28d212) { return void 0x0 === _0x28d212 && (_0x28d212 = 0x1), new _0x132738(_0x31defe['r'],_0x31defe['g'],_0x31defe['b'],_0x28d212); } , _0x132738['FromArray'] = function(_0x6dd738, _0x405d1e) { return void 0x0 === _0x405d1e && (_0x405d1e = 0x0), new _0x132738(_0x6dd738[_0x405d1e],_0x6dd738[_0x405d1e + 0x1],_0x6dd738[_0x405d1e + 0x2],_0x6dd738[_0x405d1e + 0x3]); } , _0x132738['FromInts'] = function(_0x5738c5, _0x11859c, _0x58bc11, _0x160553) { return new _0x132738(_0x5738c5 / 0xff,_0x11859c / 0xff,_0x58bc11 / 0xff,_0x160553 / 0xff); } , _0x132738['CheckColors4'] = function(_0x2d9b5d, _0xda9b67) { if (_0x2d9b5d['length'] === 0x3 * _0xda9b67) { for (var _0x374601 = [], _0xdecbd0 = 0x0; _0xdecbd0 < _0x2d9b5d['length']; _0xdecbd0 += 0x3) { var _0x215651 = _0xdecbd0 / 0x3 * 0x4; _0x374601[_0x215651] = _0x2d9b5d[_0xdecbd0], _0x374601[_0x215651 + 0x1] = _0x2d9b5d[_0xdecbd0 + 0x1], _0x374601[_0x215651 + 0x2] = _0x2d9b5d[_0xdecbd0 + 0x2], _0x374601[_0x215651 + 0x3] = 0x1; } return _0x374601; } return _0x2d9b5d; } , _0x132738; }(), _0x461b0a = function() { function _0x1169e8(_0x2eac08, _0x26e9b0) { void 0x0 === _0x2eac08 && (_0x2eac08 = 0x0), void 0x0 === _0x26e9b0 && (_0x26e9b0 = 0x0), this['x'] = _0x2eac08, this['y'] = _0x26e9b0; } return _0x1169e8['prototype']['toString'] = function() { return '{X:\x20' + this['x'] + '\x20Y:' + this['y'] + '}'; } , _0x1169e8['prototype']['getClassName'] = function() { return 'Vector2'; } , _0x1169e8['prototype']['getHashCode'] = function() { var _0x5ba962 = this['x'] || 0x0; return _0x5ba962 = 0x18d * _0x5ba962 ^ (this['y'] || 0x0); } , _0x1169e8['prototype']['toArray'] = function(_0xa48e20, _0x3d95ca) { return void 0x0 === _0x3d95ca && (_0x3d95ca = 0x0), _0xa48e20[_0x3d95ca] = this['x'], _0xa48e20[_0x3d95ca + 0x1] = this['y'], this; } , _0x1169e8['prototype']['asArray'] = function() { var _0x5cfdc7 = new Array(); return this['toArray'](_0x5cfdc7, 0x0), _0x5cfdc7; } , _0x1169e8['prototype']['copyFrom'] = function(_0x2d24d3) { return this['x'] = _0x2d24d3['x'], this['y'] = _0x2d24d3['y'], this; } , _0x1169e8['prototype']['copyFromFloats'] = function(_0x559dbc, _0x38bec4) { return this['x'] = _0x559dbc, this['y'] = _0x38bec4, this; } , _0x1169e8['prototype']['set'] = function(_0x189ad3, _0x39e136) { return this['copyFromFloats'](_0x189ad3, _0x39e136); } , _0x1169e8['prototype']['add'] = function(_0x18af3c) { return new _0x1169e8(this['x'] + _0x18af3c['x'],this['y'] + _0x18af3c['y']); } , _0x1169e8['prototype']['addToRef'] = function(_0x2eb834, _0x1d17b1) { return _0x1d17b1['x'] = this['x'] + _0x2eb834['x'], _0x1d17b1['y'] = this['y'] + _0x2eb834['y'], this; } , _0x1169e8['prototype']['addInPlace'] = function(_0x1c2e66) { return this['x'] += _0x1c2e66['x'], this['y'] += _0x1c2e66['y'], this; } , _0x1169e8['prototype']['addVector3'] = function(_0x45d625) { return new _0x1169e8(this['x'] + _0x45d625['x'],this['y'] + _0x45d625['y']); } , _0x1169e8['prototype']['subtract'] = function(_0x222615) { return new _0x1169e8(this['x'] - _0x222615['x'],this['y'] - _0x222615['y']); } , _0x1169e8['prototype']['subtractToRef'] = function(_0x383517, _0x1ea2d1) { return _0x1ea2d1['x'] = this['x'] - _0x383517['x'], _0x1ea2d1['y'] = this['y'] - _0x383517['y'], this; } , _0x1169e8['prototype']['subtractInPlace'] = function(_0x3f984b) { return this['x'] -= _0x3f984b['x'], this['y'] -= _0x3f984b['y'], this; } , _0x1169e8['prototype']['multiplyInPlace'] = function(_0x27bf21) { return this['x'] *= _0x27bf21['x'], this['y'] *= _0x27bf21['y'], this; } , _0x1169e8['prototype']['multiply'] = function(_0x28919f) { return new _0x1169e8(this['x'] * _0x28919f['x'],this['y'] * _0x28919f['y']); } , _0x1169e8['prototype']['multiplyToRef'] = function(_0x51cd97, _0x39a024) { return _0x39a024['x'] = this['x'] * _0x51cd97['x'], _0x39a024['y'] = this['y'] * _0x51cd97['y'], this; } , _0x1169e8['prototype']['multiplyByFloats'] = function(_0x58ff13, _0x26ab28) { return new _0x1169e8(this['x'] * _0x58ff13,this['y'] * _0x26ab28); } , _0x1169e8['prototype']['divide'] = function(_0x1e5a39) { return new _0x1169e8(this['x'] / _0x1e5a39['x'],this['y'] / _0x1e5a39['y']); } , _0x1169e8['prototype']['divideToRef'] = function(_0x305a3c, _0x557245) { return _0x557245['x'] = this['x'] / _0x305a3c['x'], _0x557245['y'] = this['y'] / _0x305a3c['y'], this; } , _0x1169e8['prototype']['divideInPlace'] = function(_0x5ad31c) { return this['divideToRef'](_0x5ad31c, this); } , _0x1169e8['prototype']['negate'] = function() { return new _0x1169e8(-this['x'],-this['y']); } , _0x1169e8['prototype']['scaleInPlace'] = function(_0x104b7f) { return this['x'] *= _0x104b7f, this['y'] *= _0x104b7f, this; } , _0x1169e8['prototype']['scale'] = function(_0xb316c0) { var _0x4614d7 = new _0x1169e8(0x0,0x0); return this['scaleToRef'](_0xb316c0, _0x4614d7), _0x4614d7; } , _0x1169e8['prototype']['scaleToRef'] = function(_0x37a449, _0x3b1b62) { return _0x3b1b62['x'] = this['x'] * _0x37a449, _0x3b1b62['y'] = this['y'] * _0x37a449, this; } , _0x1169e8['prototype']['scaleAndAddToRef'] = function(_0x2343c8, _0x427918) { return _0x427918['x'] += this['x'] * _0x2343c8, _0x427918['y'] += this['y'] * _0x2343c8, this; } , _0x1169e8['prototype']['equals'] = function(_0x40126d) { return _0x40126d && this['x'] === _0x40126d['x'] && this['y'] === _0x40126d['y']; } , _0x1169e8['prototype']['equalsWithEpsilon'] = function(_0x520151, _0x24f935) { return void 0x0 === _0x24f935 && (_0x24f935 = _0x3e57e9), _0x520151 && _0x15f609['a']['WithinEpsilon'](this['x'], _0x520151['x'], _0x24f935) && _0x15f609['a']['WithinEpsilon'](this['y'], _0x520151['y'], _0x24f935); } , _0x1169e8['prototype']['floor'] = function() { return new _0x1169e8(Math['floor'](this['x']),Math['floor'](this['y'])); } , _0x1169e8['prototype']['fract'] = function() { return new _0x1169e8(this['x'] - Math['floor'](this['x']),this['y'] - Math['floor'](this['y'])); } , _0x1169e8['prototype']['length'] = function() { return Math['sqrt'](this['x'] * this['x'] + this['y'] * this['y']); } , _0x1169e8['prototype']['lengthSquared'] = function() { return this['x'] * this['x'] + this['y'] * this['y']; } , _0x1169e8['prototype']['normalize'] = function() { var _0x54d026 = this['length'](); if (0x0 === _0x54d026) return this; var _0x1ae35a = 0x1 / _0x54d026; return this['x'] *= _0x1ae35a, this['y'] *= _0x1ae35a, this; } , _0x1169e8['prototype']['clone'] = function() { return new _0x1169e8(this['x'],this['y']); } , _0x1169e8['Zero'] = function() { return new _0x1169e8(0x0,0x0); } , _0x1169e8['One'] = function() { return new _0x1169e8(0x1,0x1); } , _0x1169e8['FromArray'] = function(_0xc9bc9c, _0x120904) { return void 0x0 === _0x120904 && (_0x120904 = 0x0), new _0x1169e8(_0xc9bc9c[_0x120904],_0xc9bc9c[_0x120904 + 0x1]); } , _0x1169e8['FromArrayToRef'] = function(_0x2cbe47, _0x35fe8d, _0x55ee91) { _0x55ee91['x'] = _0x2cbe47[_0x35fe8d], _0x55ee91['y'] = _0x2cbe47[_0x35fe8d + 0x1]; } , _0x1169e8['CatmullRom'] = function(_0x48100f, _0x949b7, _0x37957b, _0x1a7a95, _0x11c704) { var _0x29ed7d = _0x11c704 * _0x11c704 , _0x54fdd8 = _0x11c704 * _0x29ed7d; return new _0x1169e8(0.5 * (0x2 * _0x949b7['x'] + (-_0x48100f['x'] + _0x37957b['x']) * _0x11c704 + (0x2 * _0x48100f['x'] - 0x5 * _0x949b7['x'] + 0x4 * _0x37957b['x'] - _0x1a7a95['x']) * _0x29ed7d + (-_0x48100f['x'] + 0x3 * _0x949b7['x'] - 0x3 * _0x37957b['x'] + _0x1a7a95['x']) * _0x54fdd8),0.5 * (0x2 * _0x949b7['y'] + (-_0x48100f['y'] + _0x37957b['y']) * _0x11c704 + (0x2 * _0x48100f['y'] - 0x5 * _0x949b7['y'] + 0x4 * _0x37957b['y'] - _0x1a7a95['y']) * _0x29ed7d + (-_0x48100f['y'] + 0x3 * _0x949b7['y'] - 0x3 * _0x37957b['y'] + _0x1a7a95['y']) * _0x54fdd8)); } , _0x1169e8['Clamp'] = function(_0x1c4f8c, _0xb23fba, _0x5582e5) { var _0x363d11 = _0x1c4f8c['x']; _0x363d11 = (_0x363d11 = _0x363d11 > _0x5582e5['x'] ? _0x5582e5['x'] : _0x363d11) < _0xb23fba['x'] ? _0xb23fba['x'] : _0x363d11; var _0x3d9588 = _0x1c4f8c['y']; return new _0x1169e8(_0x363d11,_0x3d9588 = (_0x3d9588 = _0x3d9588 > _0x5582e5['y'] ? _0x5582e5['y'] : _0x3d9588) < _0xb23fba['y'] ? _0xb23fba['y'] : _0x3d9588); } , _0x1169e8['Hermite'] = function(_0x54dc2b, _0x1b5aa1, _0x5370d5, _0xcaff48, _0x13efd3) { var _0x1995ef = _0x13efd3 * _0x13efd3 , _0x3ec5c1 = _0x13efd3 * _0x1995ef , _0x3e2637 = 0x2 * _0x3ec5c1 - 0x3 * _0x1995ef + 0x1 , _0x241d6f = -0x2 * _0x3ec5c1 + 0x3 * _0x1995ef , _0x5d2dd8 = _0x3ec5c1 - 0x2 * _0x1995ef + _0x13efd3 , _0x46623a = _0x3ec5c1 - _0x1995ef; return new _0x1169e8(_0x54dc2b['x'] * _0x3e2637 + _0x5370d5['x'] * _0x241d6f + _0x1b5aa1['x'] * _0x5d2dd8 + _0xcaff48['x'] * _0x46623a,_0x54dc2b['y'] * _0x3e2637 + _0x5370d5['y'] * _0x241d6f + _0x1b5aa1['y'] * _0x5d2dd8 + _0xcaff48['y'] * _0x46623a); } , _0x1169e8['Lerp'] = function(_0x2bb04d, _0x1aca11, _0x4cc8d9) { return new _0x1169e8(_0x2bb04d['x'] + (_0x1aca11['x'] - _0x2bb04d['x']) * _0x4cc8d9,_0x2bb04d['y'] + (_0x1aca11['y'] - _0x2bb04d['y']) * _0x4cc8d9); } , _0x1169e8['Dot'] = function(_0x2e66b9, _0x7baf20) { return _0x2e66b9['x'] * _0x7baf20['x'] + _0x2e66b9['y'] * _0x7baf20['y']; } , _0x1169e8['Normalize'] = function(_0x485eb7) { var _0x49f99b = _0x485eb7['clone'](); return _0x49f99b['normalize'](), _0x49f99b; } , _0x1169e8['Minimize'] = function(_0x304d16, _0x305d82) { return new _0x1169e8(_0x304d16['x'] < _0x305d82['x'] ? _0x304d16['x'] : _0x305d82['x'],_0x304d16['y'] < _0x305d82['y'] ? _0x304d16['y'] : _0x305d82['y']); } , _0x1169e8['Maximize'] = function(_0xe48c92, _0x4dec8a) { return new _0x1169e8(_0xe48c92['x'] > _0x4dec8a['x'] ? _0xe48c92['x'] : _0x4dec8a['x'],_0xe48c92['y'] > _0x4dec8a['y'] ? _0xe48c92['y'] : _0x4dec8a['y']); } , _0x1169e8['Transform'] = function(_0x44a180, _0x40e521) { var _0x4ba883 = _0x1169e8['Zero'](); return _0x1169e8['TransformToRef'](_0x44a180, _0x40e521, _0x4ba883), _0x4ba883; } , _0x1169e8['TransformToRef'] = function(_0x1f6882, _0x33a949, _0x2c1310) { var _0x79b633 = _0x33a949['m'] , _0x132493 = _0x1f6882['x'] * _0x79b633[0x0] + _0x1f6882['y'] * _0x79b633[0x4] + _0x79b633[0xc] , _0x38b36d = _0x1f6882['x'] * _0x79b633[0x1] + _0x1f6882['y'] * _0x79b633[0x5] + _0x79b633[0xd]; _0x2c1310['x'] = _0x132493, _0x2c1310['y'] = _0x38b36d; } , _0x1169e8['PointInTriangle'] = function(_0x6c0452, _0x47d139, _0x5d3434, _0x15f8e4) { var _0x3b3692 = 0.5 * (-_0x5d3434['y'] * _0x15f8e4['x'] + _0x47d139['y'] * (-_0x5d3434['x'] + _0x15f8e4['x']) + _0x47d139['x'] * (_0x5d3434['y'] - _0x15f8e4['y']) + _0x5d3434['x'] * _0x15f8e4['y']) , _0x359d19 = _0x3b3692 < 0x0 ? -0x1 : 0x1 , _0x58a045 = (_0x47d139['y'] * _0x15f8e4['x'] - _0x47d139['x'] * _0x15f8e4['y'] + (_0x15f8e4['y'] - _0x47d139['y']) * _0x6c0452['x'] + (_0x47d139['x'] - _0x15f8e4['x']) * _0x6c0452['y']) * _0x359d19 , _0x512525 = (_0x47d139['x'] * _0x5d3434['y'] - _0x47d139['y'] * _0x5d3434['x'] + (_0x47d139['y'] - _0x5d3434['y']) * _0x6c0452['x'] + (_0x5d3434['x'] - _0x47d139['x']) * _0x6c0452['y']) * _0x359d19; return _0x58a045 > 0x0 && _0x512525 > 0x0 && _0x58a045 + _0x512525 < 0x2 * _0x3b3692 * _0x359d19; } , _0x1169e8['Distance'] = function(_0x538565, _0xa02de2) { return Math['sqrt'](_0x1169e8['DistanceSquared'](_0x538565, _0xa02de2)); } , _0x1169e8['DistanceSquared'] = function(_0x1bec07, _0x11f129) { var _0x160c53 = _0x1bec07['x'] - _0x11f129['x'] , _0x5880fc = _0x1bec07['y'] - _0x11f129['y']; return _0x160c53 * _0x160c53 + _0x5880fc * _0x5880fc; } , _0x1169e8['Center'] = function(_0x219864, _0x15d105) { var _0x1f5e57 = _0x219864['add'](_0x15d105); return _0x1f5e57['scaleInPlace'](0.5), _0x1f5e57; } , _0x1169e8['DistanceOfPointFromSegment'] = function(_0x2b7b03, _0x1858a7, _0x4e0fbd) { var _0x420a8b = _0x1169e8['DistanceSquared'](_0x1858a7, _0x4e0fbd); if (0x0 === _0x420a8b) return _0x1169e8['Distance'](_0x2b7b03, _0x1858a7); var _0x1f983d = _0x4e0fbd['subtract'](_0x1858a7) , _0x43fff8 = Math['max'](0x0, Math['min'](0x1, _0x1169e8['Dot'](_0x2b7b03['subtract'](_0x1858a7), _0x1f983d) / _0x420a8b)) , _0xf6f717 = _0x1858a7['add'](_0x1f983d['multiplyByFloats'](_0x43fff8, _0x43fff8)); return _0x1169e8['Distance'](_0x2b7b03, _0xf6f717); } , _0x1169e8; }(), _0x3fbe20 = function() { function _0x367725(_0xaa2282, _0x13a6ee, _0x32eb4b) { void 0x0 === _0xaa2282 && (_0xaa2282 = 0x0), void 0x0 === _0x13a6ee && (_0x13a6ee = 0x0), void 0x0 === _0x32eb4b && (_0x32eb4b = 0x0), this['x'] = _0xaa2282, this['y'] = _0x13a6ee, this['z'] = _0x32eb4b; } return _0x367725['prototype']['toString'] = function() { return '{X:\x20' + this['x'] + '\x20Y:' + this['y'] + '\x20Z:' + this['z'] + '}'; } , _0x367725['prototype']['getClassName'] = function() { return 'Vector3'; } , _0x367725['prototype']['getHashCode'] = function() { var _0x522680 = this['x'] || 0x0; return _0x522680 = 0x18d * (_0x522680 = 0x18d * _0x522680 ^ (this['y'] || 0x0)) ^ (this['z'] || 0x0); } , _0x367725['prototype']['asArray'] = function() { var _0x347a48 = []; return this['toArray'](_0x347a48, 0x0), _0x347a48; } , _0x367725['prototype']['toArray'] = function(_0x2dcf08, _0x4be278) { return void 0x0 === _0x4be278 && (_0x4be278 = 0x0), _0x2dcf08[_0x4be278] = this['x'], _0x2dcf08[_0x4be278 + 0x1] = this['y'], _0x2dcf08[_0x4be278 + 0x2] = this['z'], this; } , _0x367725['prototype']['toQuaternion'] = function() { return _0x897ad5['RotationYawPitchRoll'](this['y'], this['x'], this['z']); } , _0x367725['prototype']['addInPlace'] = function(_0x2a53a0) { return this['addInPlaceFromFloats'](_0x2a53a0['x'], _0x2a53a0['y'], _0x2a53a0['z']); } , _0x367725['prototype']['addInPlaceFromFloats'] = function(_0x114bc7, _0x3d15a9, _0x4c13aa) { return this['x'] += _0x114bc7, this['y'] += _0x3d15a9, this['z'] += _0x4c13aa, this; } , _0x367725['prototype']['add'] = function(_0x26d9f4) { return new _0x367725(this['x'] + _0x26d9f4['x'],this['y'] + _0x26d9f4['y'],this['z'] + _0x26d9f4['z']); } , _0x367725['prototype']['addToRef'] = function(_0x20df15, _0x318c5d) { return _0x318c5d['copyFromFloats'](this['x'] + _0x20df15['x'], this['y'] + _0x20df15['y'], this['z'] + _0x20df15['z']); } , _0x367725['prototype']['subtractInPlace'] = function(_0x3a08df) { return this['x'] -= _0x3a08df['x'], this['y'] -= _0x3a08df['y'], this['z'] -= _0x3a08df['z'], this; } , _0x367725['prototype']['subtract'] = function(_0xe65f59) { return new _0x367725(this['x'] - _0xe65f59['x'],this['y'] - _0xe65f59['y'],this['z'] - _0xe65f59['z']); } , _0x367725['prototype']['subtractToRef'] = function(_0x13594d, _0x3df64a) { return this['subtractFromFloatsToRef'](_0x13594d['x'], _0x13594d['y'], _0x13594d['z'], _0x3df64a); } , _0x367725['prototype']['subtractFromFloats'] = function(_0x1693e4, _0x21578b, _0x930c3e) { return new _0x367725(this['x'] - _0x1693e4,this['y'] - _0x21578b,this['z'] - _0x930c3e); } , _0x367725['prototype']['subtractFromFloatsToRef'] = function(_0x4d65a9, _0x4ec48e, _0x35d200, _0x101007) { return _0x101007['copyFromFloats'](this['x'] - _0x4d65a9, this['y'] - _0x4ec48e, this['z'] - _0x35d200); } , _0x367725['prototype']['negate'] = function() { return new _0x367725(-this['x'],-this['y'],-this['z']); } , _0x367725['prototype']['scaleInPlace'] = function(_0x16fc5e) { return this['x'] *= _0x16fc5e, this['y'] *= _0x16fc5e, this['z'] *= _0x16fc5e, this; } , _0x367725['prototype']['scale'] = function(_0x5700ce) { return new _0x367725(this['x'] * _0x5700ce,this['y'] * _0x5700ce,this['z'] * _0x5700ce); } , _0x367725['prototype']['scaleToRef'] = function(_0x7d1f2f, _0x1df097) { return _0x1df097['copyFromFloats'](this['x'] * _0x7d1f2f, this['y'] * _0x7d1f2f, this['z'] * _0x7d1f2f); } , _0x367725['prototype']['scaleAndAddToRef'] = function(_0x25d8c8, _0x5c9ddb) { return _0x5c9ddb['addInPlaceFromFloats'](this['x'] * _0x25d8c8, this['y'] * _0x25d8c8, this['z'] * _0x25d8c8); } , _0x367725['prototype']['equals'] = function(_0x408722) { return _0x408722 && this['x'] === _0x408722['x'] && this['y'] === _0x408722['y'] && this['z'] === _0x408722['z']; } , _0x367725['prototype']['equalsWithEpsilon'] = function(_0x47e511, _0x35ef26) { return void 0x0 === _0x35ef26 && (_0x35ef26 = _0x3e57e9), _0x47e511 && _0x15f609['a']['WithinEpsilon'](this['x'], _0x47e511['x'], _0x35ef26) && _0x15f609['a']['WithinEpsilon'](this['y'], _0x47e511['y'], _0x35ef26) && _0x15f609['a']['WithinEpsilon'](this['z'], _0x47e511['z'], _0x35ef26); } , _0x367725['prototype']['equalsToFloats'] = function(_0x8f06c1, _0xf79a47, _0x48de7f) { return this['x'] === _0x8f06c1 && this['y'] === _0xf79a47 && this['z'] === _0x48de7f; } , _0x367725['prototype']['multiplyInPlace'] = function(_0x301df8) { return this['x'] *= _0x301df8['x'], this['y'] *= _0x301df8['y'], this['z'] *= _0x301df8['z'], this; } , _0x367725['prototype']['multiply'] = function(_0x413a73) { return this['multiplyByFloats'](_0x413a73['x'], _0x413a73['y'], _0x413a73['z']); } , _0x367725['prototype']['multiplyToRef'] = function(_0x449905, _0x52178b) { return _0x52178b['copyFromFloats'](this['x'] * _0x449905['x'], this['y'] * _0x449905['y'], this['z'] * _0x449905['z']); } , _0x367725['prototype']['multiplyByFloats'] = function(_0x395e97, _0x2e10eb, _0x436003) { return new _0x367725(this['x'] * _0x395e97,this['y'] * _0x2e10eb,this['z'] * _0x436003); } , _0x367725['prototype']['divide'] = function(_0x3ab294) { return new _0x367725(this['x'] / _0x3ab294['x'],this['y'] / _0x3ab294['y'],this['z'] / _0x3ab294['z']); } , _0x367725['prototype']['divideToRef'] = function(_0x287af5, _0x6b38d7) { return _0x6b38d7['copyFromFloats'](this['x'] / _0x287af5['x'], this['y'] / _0x287af5['y'], this['z'] / _0x287af5['z']); } , _0x367725['prototype']['divideInPlace'] = function(_0x2ffe86) { return this['divideToRef'](_0x2ffe86, this); } , _0x367725['prototype']['minimizeInPlace'] = function(_0x2c2e43) { return this['minimizeInPlaceFromFloats'](_0x2c2e43['x'], _0x2c2e43['y'], _0x2c2e43['z']); } , _0x367725['prototype']['maximizeInPlace'] = function(_0x36cc58) { return this['maximizeInPlaceFromFloats'](_0x36cc58['x'], _0x36cc58['y'], _0x36cc58['z']); } , _0x367725['prototype']['minimizeInPlaceFromFloats'] = function(_0x505901, _0x1c8c7e, _0x482fad) { return _0x505901 < this['x'] && (this['x'] = _0x505901), _0x1c8c7e < this['y'] && (this['y'] = _0x1c8c7e), _0x482fad < this['z'] && (this['z'] = _0x482fad), this; } , _0x367725['prototype']['maximizeInPlaceFromFloats'] = function(_0x53088a, _0x57c6d7, _0x120a2a) { return _0x53088a > this['x'] && (this['x'] = _0x53088a), _0x57c6d7 > this['y'] && (this['y'] = _0x57c6d7), _0x120a2a > this['z'] && (this['z'] = _0x120a2a), this; } , _0x367725['prototype']['isNonUniformWithinEpsilon'] = function(_0x408b50) { var _0x3e14ac = Math['abs'](this['x']) , _0x413b64 = Math['abs'](this['y']); if (!_0x15f609['a']['WithinEpsilon'](_0x3e14ac, _0x413b64, _0x408b50)) return !0x0; var _0x3bbec2 = Math['abs'](this['z']); return !_0x15f609['a']['WithinEpsilon'](_0x3e14ac, _0x3bbec2, _0x408b50) || !_0x15f609['a']['WithinEpsilon'](_0x413b64, _0x3bbec2, _0x408b50); } , Object['defineProperty'](_0x367725['prototype'], 'isNonUniform', { 'get': function() { var _0x256f49 = Math['abs'](this['x']) , _0x3f18b7 = Math['abs'](this['y']); if (_0x256f49 !== _0x3f18b7) return !0x0; var _0x26baf7 = Math['abs'](this['z']); return _0x256f49 !== _0x26baf7 || _0x3f18b7 !== _0x26baf7; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x367725['prototype']['floor'] = function() { return new _0x367725(Math['floor'](this['x']),Math['floor'](this['y']),Math['floor'](this['z'])); } , _0x367725['prototype']['fract'] = function() { return new _0x367725(this['x'] - Math['floor'](this['x']),this['y'] - Math['floor'](this['y']),this['z'] - Math['floor'](this['z'])); } , _0x367725['prototype']['length'] = function() { return Math['sqrt'](this['x'] * this['x'] + this['y'] * this['y'] + this['z'] * this['z']); } , _0x367725['prototype']['lengthSquared'] = function() { return this['x'] * this['x'] + this['y'] * this['y'] + this['z'] * this['z']; } , _0x367725['prototype']['normalize'] = function() { return this['normalizeFromLength'](this['length']()); } , _0x367725['prototype']['reorderInPlace'] = function(_0x18c312) { var _0x515710 = this; return 'xyz' === (_0x18c312 = _0x18c312['toLowerCase']()) ? this : (_0x53a116['Vector3'][0x0]['copyFrom'](this), ['x', 'y', 'z']['forEach'](function(_0x3c403a, _0x545e8e) { _0x515710[_0x3c403a] = _0x53a116['Vector3'][0x0][_0x18c312[_0x545e8e]]; }), this); } , _0x367725['prototype']['rotateByQuaternionToRef'] = function(_0x283764, _0xb776ae) { return _0x283764['toRotationMatrix'](_0x53a116['Matrix'][0x0]), _0x367725['TransformCoordinatesToRef'](this, _0x53a116['Matrix'][0x0], _0xb776ae), _0xb776ae; } , _0x367725['prototype']['rotateByQuaternionAroundPointToRef'] = function(_0x49cd49, _0x166c59, _0x3de905) { return this['subtractToRef'](_0x166c59, _0x53a116['Vector3'][0x0]), _0x53a116['Vector3'][0x0]['rotateByQuaternionToRef'](_0x49cd49, _0x53a116['Vector3'][0x0]), _0x166c59['addToRef'](_0x53a116['Vector3'][0x0], _0x3de905), _0x3de905; } , _0x367725['prototype']['normalizeFromLength'] = function(_0x39935d) { return 0x0 === _0x39935d || 0x1 === _0x39935d ? this : this['scaleInPlace'](0x1 / _0x39935d); } , _0x367725['prototype']['normalizeToNew'] = function() { var _0xbd11eb = new _0x367725(0x0,0x0,0x0); return this['normalizeToRef'](_0xbd11eb), _0xbd11eb; } , _0x367725['prototype']['normalizeToRef'] = function(_0x28af7b) { var _0xa74a9f = this['length'](); return 0x0 === _0xa74a9f || 0x1 === _0xa74a9f ? _0x28af7b['copyFromFloats'](this['x'], this['y'], this['z']) : this['scaleToRef'](0x1 / _0xa74a9f, _0x28af7b); } , _0x367725['prototype']['clone'] = function() { return new _0x367725(this['x'],this['y'],this['z']); } , _0x367725['prototype']['copyFrom'] = function(_0x23a0b6) { return this['copyFromFloats'](_0x23a0b6['x'], _0x23a0b6['y'], _0x23a0b6['z']); } , _0x367725['prototype']['copyFromFloats'] = function(_0x270b6a, _0x575633, _0x5c561d) { return this['x'] = _0x270b6a, this['y'] = _0x575633, this['z'] = _0x5c561d, this; } , _0x367725['prototype']['set'] = function(_0x2dcb00, _0x1a65ba, _0x223820) { return this['copyFromFloats'](_0x2dcb00, _0x1a65ba, _0x223820); } , _0x367725['prototype']['setAll'] = function(_0x37abdc) { return this['x'] = this['y'] = this['z'] = _0x37abdc, this; } , _0x367725['GetClipFactor'] = function(_0x344bdb, _0x8b7fe0, _0x3a7183, _0x30dd02) { var _0x3483d9 = _0x367725['Dot'](_0x344bdb, _0x3a7183) - _0x30dd02; return _0x3483d9 / (_0x3483d9 - (_0x367725['Dot'](_0x8b7fe0, _0x3a7183) - _0x30dd02)); } , _0x367725['GetAngleBetweenVectors'] = function(_0x2dbf12, _0x1c3f8a, _0x2d5fc3) { var _0x5f7b92 = _0x2dbf12['normalizeToRef'](_0x53a116['Vector3'][0x1]) , _0x484ec6 = _0x1c3f8a['normalizeToRef'](_0x53a116['Vector3'][0x2]) , _0x218bf6 = _0x367725['Dot'](_0x5f7b92, _0x484ec6) , _0x467724 = _0x53a116['Vector3'][0x3]; return _0x367725['CrossToRef'](_0x5f7b92, _0x484ec6, _0x467724), _0x367725['Dot'](_0x467724, _0x2d5fc3) > 0x0 ? Math['acos'](_0x218bf6) : -Math['acos'](_0x218bf6); } , _0x367725['FromArray'] = function(_0x465c74, _0x82331a) { return void 0x0 === _0x82331a && (_0x82331a = 0x0), new _0x367725(_0x465c74[_0x82331a],_0x465c74[_0x82331a + 0x1],_0x465c74[_0x82331a + 0x2]); } , _0x367725['FromFloatArray'] = function(_0x29322d, _0x13fde7) { return _0x367725['FromArray'](_0x29322d, _0x13fde7); } , _0x367725['FromArrayToRef'] = function(_0x30e7fd, _0x2fa21e, _0x5c0446) { _0x5c0446['x'] = _0x30e7fd[_0x2fa21e], _0x5c0446['y'] = _0x30e7fd[_0x2fa21e + 0x1], _0x5c0446['z'] = _0x30e7fd[_0x2fa21e + 0x2]; } , _0x367725['FromFloatArrayToRef'] = function(_0x1b5b1f, _0x322212, _0x2f569d) { return _0x367725['FromArrayToRef'](_0x1b5b1f, _0x322212, _0x2f569d); } , _0x367725['FromFloatsToRef'] = function(_0x323dda, _0x20b240, _0x493944, _0x174d2a) { _0x174d2a['copyFromFloats'](_0x323dda, _0x20b240, _0x493944); } , _0x367725['Zero'] = function() { return new _0x367725(0x0,0x0,0x0); } , _0x367725['One'] = function() { return new _0x367725(0x1,0x1,0x1); } , _0x367725['Up'] = function() { return new _0x367725(0x0,0x1,0x0); } , Object['defineProperty'](_0x367725, 'UpReadOnly', { 'get': function() { return _0x367725['_UpReadOnly']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x367725['Down'] = function() { return new _0x367725(0x0,-0x1,0x0); } , _0x367725['Forward'] = function() { return new _0x367725(0x0,0x0,0x1); } , _0x367725['Backward'] = function() { return new _0x367725(0x0,0x0,-0x1); } , _0x367725['Right'] = function() { return new _0x367725(0x1,0x0,0x0); } , _0x367725['Left'] = function() { return new _0x367725(-0x1,0x0,0x0); } , _0x367725['TransformCoordinates'] = function(_0x5c41ff, _0x361c3d) { var _0x12838d = _0x367725['Zero'](); return _0x367725['TransformCoordinatesToRef'](_0x5c41ff, _0x361c3d, _0x12838d), _0x12838d; } , _0x367725['TransformCoordinatesToRef'] = function(_0xf6e46f, _0x3244f9, _0x23e99f) { _0x367725['TransformCoordinatesFromFloatsToRef'](_0xf6e46f['x'], _0xf6e46f['y'], _0xf6e46f['z'], _0x3244f9, _0x23e99f); } , _0x367725['TransformCoordinatesFromFloatsToRef'] = function(_0xd49762, _0x2a2dc9, _0x285659, _0x4337ec, _0x360949) { var _0x43d7c = _0x4337ec['m'] , _0x551c5d = _0xd49762 * _0x43d7c[0x0] + _0x2a2dc9 * _0x43d7c[0x4] + _0x285659 * _0x43d7c[0x8] + _0x43d7c[0xc] , _0x4d63f4 = _0xd49762 * _0x43d7c[0x1] + _0x2a2dc9 * _0x43d7c[0x5] + _0x285659 * _0x43d7c[0x9] + _0x43d7c[0xd] , _0xd5fb2 = _0xd49762 * _0x43d7c[0x2] + _0x2a2dc9 * _0x43d7c[0x6] + _0x285659 * _0x43d7c[0xa] + _0x43d7c[0xe] , _0x460bbd = 0x1 / (_0xd49762 * _0x43d7c[0x3] + _0x2a2dc9 * _0x43d7c[0x7] + _0x285659 * _0x43d7c[0xb] + _0x43d7c[0xf]); _0x360949['x'] = _0x551c5d * _0x460bbd, _0x360949['y'] = _0x4d63f4 * _0x460bbd, _0x360949['z'] = _0xd5fb2 * _0x460bbd; } , _0x367725['TransformNormal'] = function(_0x53b2b4, _0x43442d) { var _0x250f92 = _0x367725['Zero'](); return _0x367725['TransformNormalToRef'](_0x53b2b4, _0x43442d, _0x250f92), _0x250f92; } , _0x367725['TransformNormalToRef'] = function(_0x37c0ee, _0x118745, _0x1acd40) { this['TransformNormalFromFloatsToRef'](_0x37c0ee['x'], _0x37c0ee['y'], _0x37c0ee['z'], _0x118745, _0x1acd40); } , _0x367725['TransformNormalFromFloatsToRef'] = function(_0x360b63, _0x27dd31, _0x16e765, _0x431d96, _0x5740af) { var _0x3b4b03 = _0x431d96['m']; _0x5740af['x'] = _0x360b63 * _0x3b4b03[0x0] + _0x27dd31 * _0x3b4b03[0x4] + _0x16e765 * _0x3b4b03[0x8], _0x5740af['y'] = _0x360b63 * _0x3b4b03[0x1] + _0x27dd31 * _0x3b4b03[0x5] + _0x16e765 * _0x3b4b03[0x9], _0x5740af['z'] = _0x360b63 * _0x3b4b03[0x2] + _0x27dd31 * _0x3b4b03[0x6] + _0x16e765 * _0x3b4b03[0xa]; } , _0x367725['CatmullRom'] = function(_0xa05058, _0x4c3cb6, _0x11a1d6, _0x2fa461, _0x4d86a7) { var _0x1df388 = _0x4d86a7 * _0x4d86a7 , _0x1c384b = _0x4d86a7 * _0x1df388; return new _0x367725(0.5 * (0x2 * _0x4c3cb6['x'] + (-_0xa05058['x'] + _0x11a1d6['x']) * _0x4d86a7 + (0x2 * _0xa05058['x'] - 0x5 * _0x4c3cb6['x'] + 0x4 * _0x11a1d6['x'] - _0x2fa461['x']) * _0x1df388 + (-_0xa05058['x'] + 0x3 * _0x4c3cb6['x'] - 0x3 * _0x11a1d6['x'] + _0x2fa461['x']) * _0x1c384b),0.5 * (0x2 * _0x4c3cb6['y'] + (-_0xa05058['y'] + _0x11a1d6['y']) * _0x4d86a7 + (0x2 * _0xa05058['y'] - 0x5 * _0x4c3cb6['y'] + 0x4 * _0x11a1d6['y'] - _0x2fa461['y']) * _0x1df388 + (-_0xa05058['y'] + 0x3 * _0x4c3cb6['y'] - 0x3 * _0x11a1d6['y'] + _0x2fa461['y']) * _0x1c384b),0.5 * (0x2 * _0x4c3cb6['z'] + (-_0xa05058['z'] + _0x11a1d6['z']) * _0x4d86a7 + (0x2 * _0xa05058['z'] - 0x5 * _0x4c3cb6['z'] + 0x4 * _0x11a1d6['z'] - _0x2fa461['z']) * _0x1df388 + (-_0xa05058['z'] + 0x3 * _0x4c3cb6['z'] - 0x3 * _0x11a1d6['z'] + _0x2fa461['z']) * _0x1c384b)); } , _0x367725['Clamp'] = function(_0x3477d3, _0x2ca7a6, _0xa86798) { var _0x2fb97d = new _0x367725(); return _0x367725['ClampToRef'](_0x3477d3, _0x2ca7a6, _0xa86798, _0x2fb97d), _0x2fb97d; } , _0x367725['ClampToRef'] = function(_0x49e1c6, _0x461d78, _0x382a4d, _0x10ccb1) { var _0x1c57c0 = _0x49e1c6['x']; _0x1c57c0 = (_0x1c57c0 = _0x1c57c0 > _0x382a4d['x'] ? _0x382a4d['x'] : _0x1c57c0) < _0x461d78['x'] ? _0x461d78['x'] : _0x1c57c0; var _0x391569 = _0x49e1c6['y']; _0x391569 = (_0x391569 = _0x391569 > _0x382a4d['y'] ? _0x382a4d['y'] : _0x391569) < _0x461d78['y'] ? _0x461d78['y'] : _0x391569; var _0xf91b05 = _0x49e1c6['z']; _0xf91b05 = (_0xf91b05 = _0xf91b05 > _0x382a4d['z'] ? _0x382a4d['z'] : _0xf91b05) < _0x461d78['z'] ? _0x461d78['z'] : _0xf91b05, _0x10ccb1['copyFromFloats'](_0x1c57c0, _0x391569, _0xf91b05); } , _0x367725['Hermite'] = function(_0x3c335d, _0x501b18, _0x1e979c, _0x2110a, _0x247783) { var _0x28bce7 = _0x247783 * _0x247783 , _0x9040de = _0x247783 * _0x28bce7 , _0x2ff6c7 = 0x2 * _0x9040de - 0x3 * _0x28bce7 + 0x1 , _0x235104 = -0x2 * _0x9040de + 0x3 * _0x28bce7 , _0x377f1a = _0x9040de - 0x2 * _0x28bce7 + _0x247783 , _0x3c0a8d = _0x9040de - _0x28bce7; return new _0x367725(_0x3c335d['x'] * _0x2ff6c7 + _0x1e979c['x'] * _0x235104 + _0x501b18['x'] * _0x377f1a + _0x2110a['x'] * _0x3c0a8d,_0x3c335d['y'] * _0x2ff6c7 + _0x1e979c['y'] * _0x235104 + _0x501b18['y'] * _0x377f1a + _0x2110a['y'] * _0x3c0a8d,_0x3c335d['z'] * _0x2ff6c7 + _0x1e979c['z'] * _0x235104 + _0x501b18['z'] * _0x377f1a + _0x2110a['z'] * _0x3c0a8d); } , _0x367725['Lerp'] = function(_0x3748de, _0x44c518, _0x45df36) { var _0x5745bb = new _0x367725(0x0,0x0,0x0); return _0x367725['LerpToRef'](_0x3748de, _0x44c518, _0x45df36, _0x5745bb), _0x5745bb; } , _0x367725['LerpToRef'] = function(_0xf0a160, _0xe8f39e, _0x311505, _0x47b36f) { _0x47b36f['x'] = _0xf0a160['x'] + (_0xe8f39e['x'] - _0xf0a160['x']) * _0x311505, _0x47b36f['y'] = _0xf0a160['y'] + (_0xe8f39e['y'] - _0xf0a160['y']) * _0x311505, _0x47b36f['z'] = _0xf0a160['z'] + (_0xe8f39e['z'] - _0xf0a160['z']) * _0x311505; } , _0x367725['Dot'] = function(_0x534252, _0x237530) { return _0x534252['x'] * _0x237530['x'] + _0x534252['y'] * _0x237530['y'] + _0x534252['z'] * _0x237530['z']; } , _0x367725['Cross'] = function(_0x1b655e, _0x5bf251) { var _0x363515 = _0x367725['Zero'](); return _0x367725['CrossToRef'](_0x1b655e, _0x5bf251, _0x363515), _0x363515; } , _0x367725['CrossToRef'] = function(_0x3dc151, _0x35b48b, _0x1ca844) { var _0xad855 = _0x3dc151['y'] * _0x35b48b['z'] - _0x3dc151['z'] * _0x35b48b['y'] , _0x21bd62 = _0x3dc151['z'] * _0x35b48b['x'] - _0x3dc151['x'] * _0x35b48b['z'] , _0x50e42b = _0x3dc151['x'] * _0x35b48b['y'] - _0x3dc151['y'] * _0x35b48b['x']; _0x1ca844['copyFromFloats'](_0xad855, _0x21bd62, _0x50e42b); } , _0x367725['Normalize'] = function(_0x27e20d) { var _0x33cbab = _0x367725['Zero'](); return _0x367725['NormalizeToRef'](_0x27e20d, _0x33cbab), _0x33cbab; } , _0x367725['NormalizeToRef'] = function(_0x5e3ea6, _0x4f1ab2) { _0x5e3ea6['normalizeToRef'](_0x4f1ab2); } , _0x367725['Project'] = function(_0x432f70, _0x55bd19, _0x4c5899, _0x3712c1) { var _0x227505 = _0x3712c1['width'] , _0x179d52 = _0x3712c1['height'] , _0x544461 = _0x3712c1['x'] , _0x1fa15d = _0x3712c1['y'] , _0x4b1e51 = _0x53a116['Matrix'][0x1]; _0x5e57bc['FromValuesToRef'](_0x227505 / 0x2, 0x0, 0x0, 0x0, 0x0, -_0x179d52 / 0x2, 0x0, 0x0, 0x0, 0x0, 0.5, 0x0, _0x544461 + _0x227505 / 0x2, _0x179d52 / 0x2 + _0x1fa15d, 0.5, 0x1, _0x4b1e51); var _0x14b400 = _0x53a116['Matrix'][0x0]; return _0x55bd19['multiplyToRef'](_0x4c5899, _0x14b400), _0x14b400['multiplyToRef'](_0x4b1e51, _0x14b400), _0x367725['TransformCoordinates'](_0x432f70, _0x14b400); } , _0x367725['_UnprojectFromInvertedMatrixToRef'] = function(_0x18354b, _0x22b75d, _0x7a331f) { _0x367725['TransformCoordinatesToRef'](_0x18354b, _0x22b75d, _0x7a331f); var _0x13a7d1 = _0x22b75d['m'] , _0x23299d = _0x18354b['x'] * _0x13a7d1[0x3] + _0x18354b['y'] * _0x13a7d1[0x7] + _0x18354b['z'] * _0x13a7d1[0xb] + _0x13a7d1[0xf]; _0x15f609['a']['WithinEpsilon'](_0x23299d, 0x1) && _0x7a331f['scaleInPlace'](0x1 / _0x23299d); } , _0x367725['UnprojectFromTransform'] = function(_0x1d86ea, _0x4d232d, _0x3d15cd, _0x5f3050, _0x5c9aec) { var _0x23a7dc = _0x53a116['Matrix'][0x0]; _0x5f3050['multiplyToRef'](_0x5c9aec, _0x23a7dc), _0x23a7dc['invert'](), _0x1d86ea['x'] = _0x1d86ea['x'] / _0x4d232d * 0x2 - 0x1, _0x1d86ea['y'] = -(_0x1d86ea['y'] / _0x3d15cd * 0x2 - 0x1); var _0x1a54ae = new _0x367725(); return _0x367725['_UnprojectFromInvertedMatrixToRef'](_0x1d86ea, _0x23a7dc, _0x1a54ae), _0x1a54ae; } , _0x367725['Unproject'] = function(_0x63dba8, _0x3db620, _0x80e6cf, _0x1ef847, _0x2c06f8, _0xea2bb2) { var _0x49e6b6 = _0x367725['Zero'](); return _0x367725['UnprojectToRef'](_0x63dba8, _0x3db620, _0x80e6cf, _0x1ef847, _0x2c06f8, _0xea2bb2, _0x49e6b6), _0x49e6b6; } , _0x367725['UnprojectToRef'] = function(_0x1f1985, _0x1d97c3, _0x150b04, _0x2374f0, _0x42b47a, _0x59517e, _0x2079d4) { _0x367725['UnprojectFloatsToRef'](_0x1f1985['x'], _0x1f1985['y'], _0x1f1985['z'], _0x1d97c3, _0x150b04, _0x2374f0, _0x42b47a, _0x59517e, _0x2079d4); } , _0x367725['UnprojectFloatsToRef'] = function(_0x440175, _0x41cfdc, _0x2b4fc9, _0x512640, _0x29f41f, _0x18bf7a, _0x41eba7, _0x497176, _0x426695) { var _0x31237b = _0x53a116['Matrix'][0x0]; _0x18bf7a['multiplyToRef'](_0x41eba7, _0x31237b), _0x31237b['multiplyToRef'](_0x497176, _0x31237b), _0x31237b['invert'](); var _0x25f284 = _0x53a116['Vector3'][0x0]; _0x25f284['x'] = _0x440175 / _0x512640 * 0x2 - 0x1, _0x25f284['y'] = -(_0x41cfdc / _0x29f41f * 0x2 - 0x1), _0x25f284['z'] = 0x2 * _0x2b4fc9 - 0x1, _0x367725['_UnprojectFromInvertedMatrixToRef'](_0x25f284, _0x31237b, _0x426695); } , _0x367725['Minimize'] = function(_0x1e7104, _0x37e34e) { var _0x1deb13 = _0x1e7104['clone'](); return _0x1deb13['minimizeInPlace'](_0x37e34e), _0x1deb13; } , _0x367725['Maximize'] = function(_0xe43313, _0x7319a6) { var _0x3a5411 = _0xe43313['clone'](); return _0x3a5411['maximizeInPlace'](_0x7319a6), _0x3a5411; } , _0x367725['Distance'] = function(_0x10f7e8, _0x4d4e64) { return Math['sqrt'](_0x367725['DistanceSquared'](_0x10f7e8, _0x4d4e64)); } , _0x367725['DistanceSquared'] = function(_0x2c2a52, _0x1286cd) { var _0x23f958 = _0x2c2a52['x'] - _0x1286cd['x'] , _0x3b740b = _0x2c2a52['y'] - _0x1286cd['y'] , _0x561577 = _0x2c2a52['z'] - _0x1286cd['z']; return _0x23f958 * _0x23f958 + _0x3b740b * _0x3b740b + _0x561577 * _0x561577; } , _0x367725['Center'] = function(_0x3a3383, _0x8a4c1b) { var _0x472893 = _0x3a3383['add'](_0x8a4c1b); return _0x472893['scaleInPlace'](0.5), _0x472893; } , _0x367725['RotationFromAxis'] = function(_0x5e154e, _0xa5efec, _0x41b686) { var _0x32ea12 = _0x367725['Zero'](); return _0x367725['RotationFromAxisToRef'](_0x5e154e, _0xa5efec, _0x41b686, _0x32ea12), _0x32ea12; } , _0x367725['RotationFromAxisToRef'] = function(_0xcb2e14, _0x4cbc0c, _0x3518fa, _0x4ed092) { var _0x4fe5f0 = _0x53a116['Quaternion'][0x0]; _0x897ad5['RotationQuaternionFromAxisToRef'](_0xcb2e14, _0x4cbc0c, _0x3518fa, _0x4fe5f0), _0x4fe5f0['toEulerAnglesToRef'](_0x4ed092); } , _0x367725['_UpReadOnly'] = _0x367725['Up'](), _0x367725; }(), _0x298fee = function() { function _0x4edeb2(_0x5658a7, _0x2a6e81, _0x298214, _0x1c15a1) { this['x'] = _0x5658a7, this['y'] = _0x2a6e81, this['z'] = _0x298214, this['w'] = _0x1c15a1; } return _0x4edeb2['prototype']['toString'] = function() { return '{X:\x20' + this['x'] + '\x20Y:' + this['y'] + '\x20Z:' + this['z'] + '\x20W:' + this['w'] + '}'; } , _0x4edeb2['prototype']['getClassName'] = function() { return 'Vector4'; } , _0x4edeb2['prototype']['getHashCode'] = function() { var _0x5c81a3 = this['x'] || 0x0; return _0x5c81a3 = 0x18d * (_0x5c81a3 = 0x18d * (_0x5c81a3 = 0x18d * _0x5c81a3 ^ (this['y'] || 0x0)) ^ (this['z'] || 0x0)) ^ (this['w'] || 0x0); } , _0x4edeb2['prototype']['asArray'] = function() { var _0x698960 = new Array(); return this['toArray'](_0x698960, 0x0), _0x698960; } , _0x4edeb2['prototype']['toArray'] = function(_0x1352a0, _0x5064c7) { return void 0x0 === _0x5064c7 && (_0x5064c7 = 0x0), _0x1352a0[_0x5064c7] = this['x'], _0x1352a0[_0x5064c7 + 0x1] = this['y'], _0x1352a0[_0x5064c7 + 0x2] = this['z'], _0x1352a0[_0x5064c7 + 0x3] = this['w'], this; } , _0x4edeb2['prototype']['addInPlace'] = function(_0x46524e) { return this['x'] += _0x46524e['x'], this['y'] += _0x46524e['y'], this['z'] += _0x46524e['z'], this['w'] += _0x46524e['w'], this; } , _0x4edeb2['prototype']['add'] = function(_0x2b8451) { return new _0x4edeb2(this['x'] + _0x2b8451['x'],this['y'] + _0x2b8451['y'],this['z'] + _0x2b8451['z'],this['w'] + _0x2b8451['w']); } , _0x4edeb2['prototype']['addToRef'] = function(_0x9a0194, _0x137192) { return _0x137192['x'] = this['x'] + _0x9a0194['x'], _0x137192['y'] = this['y'] + _0x9a0194['y'], _0x137192['z'] = this['z'] + _0x9a0194['z'], _0x137192['w'] = this['w'] + _0x9a0194['w'], this; } , _0x4edeb2['prototype']['subtractInPlace'] = function(_0x394dda) { return this['x'] -= _0x394dda['x'], this['y'] -= _0x394dda['y'], this['z'] -= _0x394dda['z'], this['w'] -= _0x394dda['w'], this; } , _0x4edeb2['prototype']['subtract'] = function(_0x432c60) { return new _0x4edeb2(this['x'] - _0x432c60['x'],this['y'] - _0x432c60['y'],this['z'] - _0x432c60['z'],this['w'] - _0x432c60['w']); } , _0x4edeb2['prototype']['subtractToRef'] = function(_0x2bf5cf, _0x15177b) { return _0x15177b['x'] = this['x'] - _0x2bf5cf['x'], _0x15177b['y'] = this['y'] - _0x2bf5cf['y'], _0x15177b['z'] = this['z'] - _0x2bf5cf['z'], _0x15177b['w'] = this['w'] - _0x2bf5cf['w'], this; } , _0x4edeb2['prototype']['subtractFromFloats'] = function(_0x3f7140, _0x253d60, _0x9706c9, _0x12b1ac) { return new _0x4edeb2(this['x'] - _0x3f7140,this['y'] - _0x253d60,this['z'] - _0x9706c9,this['w'] - _0x12b1ac); } , _0x4edeb2['prototype']['subtractFromFloatsToRef'] = function(_0x25e2e9, _0x36880f, _0x55ae3c, _0x5f423f, _0x1407c2) { return _0x1407c2['x'] = this['x'] - _0x25e2e9, _0x1407c2['y'] = this['y'] - _0x36880f, _0x1407c2['z'] = this['z'] - _0x55ae3c, _0x1407c2['w'] = this['w'] - _0x5f423f, this; } , _0x4edeb2['prototype']['negate'] = function() { return new _0x4edeb2(-this['x'],-this['y'],-this['z'],-this['w']); } , _0x4edeb2['prototype']['scaleInPlace'] = function(_0x522864) { return this['x'] *= _0x522864, this['y'] *= _0x522864, this['z'] *= _0x522864, this['w'] *= _0x522864, this; } , _0x4edeb2['prototype']['scale'] = function(_0x1b2dcf) { return new _0x4edeb2(this['x'] * _0x1b2dcf,this['y'] * _0x1b2dcf,this['z'] * _0x1b2dcf,this['w'] * _0x1b2dcf); } , _0x4edeb2['prototype']['scaleToRef'] = function(_0xd536ca, _0x383513) { return _0x383513['x'] = this['x'] * _0xd536ca, _0x383513['y'] = this['y'] * _0xd536ca, _0x383513['z'] = this['z'] * _0xd536ca, _0x383513['w'] = this['w'] * _0xd536ca, this; } , _0x4edeb2['prototype']['scaleAndAddToRef'] = function(_0x31b65a, _0x1e79ec) { return _0x1e79ec['x'] += this['x'] * _0x31b65a, _0x1e79ec['y'] += this['y'] * _0x31b65a, _0x1e79ec['z'] += this['z'] * _0x31b65a, _0x1e79ec['w'] += this['w'] * _0x31b65a, this; } , _0x4edeb2['prototype']['equals'] = function(_0x2d0833) { return _0x2d0833 && this['x'] === _0x2d0833['x'] && this['y'] === _0x2d0833['y'] && this['z'] === _0x2d0833['z'] && this['w'] === _0x2d0833['w']; } , _0x4edeb2['prototype']['equalsWithEpsilon'] = function(_0x1e4516, _0x2f31a9) { return void 0x0 === _0x2f31a9 && (_0x2f31a9 = _0x3e57e9), _0x1e4516 && _0x15f609['a']['WithinEpsilon'](this['x'], _0x1e4516['x'], _0x2f31a9) && _0x15f609['a']['WithinEpsilon'](this['y'], _0x1e4516['y'], _0x2f31a9) && _0x15f609['a']['WithinEpsilon'](this['z'], _0x1e4516['z'], _0x2f31a9) && _0x15f609['a']['WithinEpsilon'](this['w'], _0x1e4516['w'], _0x2f31a9); } , _0x4edeb2['prototype']['equalsToFloats'] = function(_0x148720, _0x5ea0c2, _0x59fbd1, _0x1fd262) { return this['x'] === _0x148720 && this['y'] === _0x5ea0c2 && this['z'] === _0x59fbd1 && this['w'] === _0x1fd262; } , _0x4edeb2['prototype']['multiplyInPlace'] = function(_0x4d9256) { return this['x'] *= _0x4d9256['x'], this['y'] *= _0x4d9256['y'], this['z'] *= _0x4d9256['z'], this['w'] *= _0x4d9256['w'], this; } , _0x4edeb2['prototype']['multiply'] = function(_0x396d62) { return new _0x4edeb2(this['x'] * _0x396d62['x'],this['y'] * _0x396d62['y'],this['z'] * _0x396d62['z'],this['w'] * _0x396d62['w']); } , _0x4edeb2['prototype']['multiplyToRef'] = function(_0xd7f71c, _0x1837ee) { return _0x1837ee['x'] = this['x'] * _0xd7f71c['x'], _0x1837ee['y'] = this['y'] * _0xd7f71c['y'], _0x1837ee['z'] = this['z'] * _0xd7f71c['z'], _0x1837ee['w'] = this['w'] * _0xd7f71c['w'], this; } , _0x4edeb2['prototype']['multiplyByFloats'] = function(_0x1ad9d4, _0x9caea4, _0xfe04c6, _0x8dfa05) { return new _0x4edeb2(this['x'] * _0x1ad9d4,this['y'] * _0x9caea4,this['z'] * _0xfe04c6,this['w'] * _0x8dfa05); } , _0x4edeb2['prototype']['divide'] = function(_0x2b0645) { return new _0x4edeb2(this['x'] / _0x2b0645['x'],this['y'] / _0x2b0645['y'],this['z'] / _0x2b0645['z'],this['w'] / _0x2b0645['w']); } , _0x4edeb2['prototype']['divideToRef'] = function(_0x274f42, _0x2e6277) { return _0x2e6277['x'] = this['x'] / _0x274f42['x'], _0x2e6277['y'] = this['y'] / _0x274f42['y'], _0x2e6277['z'] = this['z'] / _0x274f42['z'], _0x2e6277['w'] = this['w'] / _0x274f42['w'], this; } , _0x4edeb2['prototype']['divideInPlace'] = function(_0x433d92) { return this['divideToRef'](_0x433d92, this); } , _0x4edeb2['prototype']['minimizeInPlace'] = function(_0x232d10) { return _0x232d10['x'] < this['x'] && (this['x'] = _0x232d10['x']), _0x232d10['y'] < this['y'] && (this['y'] = _0x232d10['y']), _0x232d10['z'] < this['z'] && (this['z'] = _0x232d10['z']), _0x232d10['w'] < this['w'] && (this['w'] = _0x232d10['w']), this; } , _0x4edeb2['prototype']['maximizeInPlace'] = function(_0x227c6b) { return _0x227c6b['x'] > this['x'] && (this['x'] = _0x227c6b['x']), _0x227c6b['y'] > this['y'] && (this['y'] = _0x227c6b['y']), _0x227c6b['z'] > this['z'] && (this['z'] = _0x227c6b['z']), _0x227c6b['w'] > this['w'] && (this['w'] = _0x227c6b['w']), this; } , _0x4edeb2['prototype']['floor'] = function() { return new _0x4edeb2(Math['floor'](this['x']),Math['floor'](this['y']),Math['floor'](this['z']),Math['floor'](this['w'])); } , _0x4edeb2['prototype']['fract'] = function() { return new _0x4edeb2(this['x'] - Math['floor'](this['x']),this['y'] - Math['floor'](this['y']),this['z'] - Math['floor'](this['z']),this['w'] - Math['floor'](this['w'])); } , _0x4edeb2['prototype']['length'] = function() { return Math['sqrt'](this['x'] * this['x'] + this['y'] * this['y'] + this['z'] * this['z'] + this['w'] * this['w']); } , _0x4edeb2['prototype']['lengthSquared'] = function() { return this['x'] * this['x'] + this['y'] * this['y'] + this['z'] * this['z'] + this['w'] * this['w']; } , _0x4edeb2['prototype']['normalize'] = function() { var _0x43fdda = this['length'](); return 0x0 === _0x43fdda ? this : this['scaleInPlace'](0x1 / _0x43fdda); } , _0x4edeb2['prototype']['toVector3'] = function() { return new _0x3fbe20(this['x'],this['y'],this['z']); } , _0x4edeb2['prototype']['clone'] = function() { return new _0x4edeb2(this['x'],this['y'],this['z'],this['w']); } , _0x4edeb2['prototype']['copyFrom'] = function(_0xe583e4) { return this['x'] = _0xe583e4['x'], this['y'] = _0xe583e4['y'], this['z'] = _0xe583e4['z'], this['w'] = _0xe583e4['w'], this; } , _0x4edeb2['prototype']['copyFromFloats'] = function(_0x5c6782, _0x4aba38, _0x2884cb, _0x4d086c) { return this['x'] = _0x5c6782, this['y'] = _0x4aba38, this['z'] = _0x2884cb, this['w'] = _0x4d086c, this; } , _0x4edeb2['prototype']['set'] = function(_0x5dd74d, _0xcf541f, _0x9a3ff9, _0x2889d5) { return this['copyFromFloats'](_0x5dd74d, _0xcf541f, _0x9a3ff9, _0x2889d5); } , _0x4edeb2['prototype']['setAll'] = function(_0x213f8c) { return this['x'] = this['y'] = this['z'] = this['w'] = _0x213f8c, this; } , _0x4edeb2['FromArray'] = function(_0x2a596c, _0x293a99) { return _0x293a99 || (_0x293a99 = 0x0), new _0x4edeb2(_0x2a596c[_0x293a99],_0x2a596c[_0x293a99 + 0x1],_0x2a596c[_0x293a99 + 0x2],_0x2a596c[_0x293a99 + 0x3]); } , _0x4edeb2['FromArrayToRef'] = function(_0x30df50, _0x5c808a, _0x380bf1) { _0x380bf1['x'] = _0x30df50[_0x5c808a], _0x380bf1['y'] = _0x30df50[_0x5c808a + 0x1], _0x380bf1['z'] = _0x30df50[_0x5c808a + 0x2], _0x380bf1['w'] = _0x30df50[_0x5c808a + 0x3]; } , _0x4edeb2['FromFloatArrayToRef'] = function(_0x3dfced, _0x11a21c, _0x1eba8e) { _0x4edeb2['FromArrayToRef'](_0x3dfced, _0x11a21c, _0x1eba8e); } , _0x4edeb2['FromFloatsToRef'] = function(_0x574586, _0x11a7c6, _0x26c433, _0x1dd9ce, _0x34bb1c) { _0x34bb1c['x'] = _0x574586, _0x34bb1c['y'] = _0x11a7c6, _0x34bb1c['z'] = _0x26c433, _0x34bb1c['w'] = _0x1dd9ce; } , _0x4edeb2['Zero'] = function() { return new _0x4edeb2(0x0,0x0,0x0,0x0); } , _0x4edeb2['One'] = function() { return new _0x4edeb2(0x1,0x1,0x1,0x1); } , _0x4edeb2['Normalize'] = function(_0x4ac056) { var _0x58ad06 = _0x4edeb2['Zero'](); return _0x4edeb2['NormalizeToRef'](_0x4ac056, _0x58ad06), _0x58ad06; } , _0x4edeb2['NormalizeToRef'] = function(_0xc8e59c, _0x4f0aa) { _0x4f0aa['copyFrom'](_0xc8e59c), _0x4f0aa['normalize'](); } , _0x4edeb2['Minimize'] = function(_0x411bec, _0x317eb5) { var _0xdc5a72 = _0x411bec['clone'](); return _0xdc5a72['minimizeInPlace'](_0x317eb5), _0xdc5a72; } , _0x4edeb2['Maximize'] = function(_0x477031, _0x39100d) { var _0x31d943 = _0x477031['clone'](); return _0x31d943['maximizeInPlace'](_0x39100d), _0x31d943; } , _0x4edeb2['Distance'] = function(_0x49c0c1, _0x1d4513) { return Math['sqrt'](_0x4edeb2['DistanceSquared'](_0x49c0c1, _0x1d4513)); } , _0x4edeb2['DistanceSquared'] = function(_0x37d8c9, _0x309937) { var _0x34b8ee = _0x37d8c9['x'] - _0x309937['x'] , _0x15cf57 = _0x37d8c9['y'] - _0x309937['y'] , _0x4d1d56 = _0x37d8c9['z'] - _0x309937['z'] , _0x370dfa = _0x37d8c9['w'] - _0x309937['w']; return _0x34b8ee * _0x34b8ee + _0x15cf57 * _0x15cf57 + _0x4d1d56 * _0x4d1d56 + _0x370dfa * _0x370dfa; } , _0x4edeb2['Center'] = function(_0x2b4fe3, _0x56dee7) { var _0x1d8cdf = _0x2b4fe3['add'](_0x56dee7); return _0x1d8cdf['scaleInPlace'](0.5), _0x1d8cdf; } , _0x4edeb2['TransformNormal'] = function(_0x4e3c64, _0x8968de) { var _0x3c1510 = _0x4edeb2['Zero'](); return _0x4edeb2['TransformNormalToRef'](_0x4e3c64, _0x8968de, _0x3c1510), _0x3c1510; } , _0x4edeb2['TransformNormalToRef'] = function(_0x566093, _0x188881, _0xb819d8) { var _0x502f27 = _0x188881['m'] , _0x3ad505 = _0x566093['x'] * _0x502f27[0x0] + _0x566093['y'] * _0x502f27[0x4] + _0x566093['z'] * _0x502f27[0x8] , _0x50828b = _0x566093['x'] * _0x502f27[0x1] + _0x566093['y'] * _0x502f27[0x5] + _0x566093['z'] * _0x502f27[0x9] , _0x581b6a = _0x566093['x'] * _0x502f27[0x2] + _0x566093['y'] * _0x502f27[0x6] + _0x566093['z'] * _0x502f27[0xa]; _0xb819d8['x'] = _0x3ad505, _0xb819d8['y'] = _0x50828b, _0xb819d8['z'] = _0x581b6a, _0xb819d8['w'] = _0x566093['w']; } , _0x4edeb2['TransformNormalFromFloatsToRef'] = function(_0x591cbb, _0x2cbd96, _0x314db0, _0x110d0e, _0x1bc70c, _0xbf787c) { var _0x1eac41 = _0x1bc70c['m']; _0xbf787c['x'] = _0x591cbb * _0x1eac41[0x0] + _0x2cbd96 * _0x1eac41[0x4] + _0x314db0 * _0x1eac41[0x8], _0xbf787c['y'] = _0x591cbb * _0x1eac41[0x1] + _0x2cbd96 * _0x1eac41[0x5] + _0x314db0 * _0x1eac41[0x9], _0xbf787c['z'] = _0x591cbb * _0x1eac41[0x2] + _0x2cbd96 * _0x1eac41[0x6] + _0x314db0 * _0x1eac41[0xa], _0xbf787c['w'] = _0x110d0e; } , _0x4edeb2['FromVector3'] = function(_0x533793, _0xe4875b) { return void 0x0 === _0xe4875b && (_0xe4875b = 0x0), new _0x4edeb2(_0x533793['x'],_0x533793['y'],_0x533793['z'],_0xe4875b); } , _0x4edeb2; }(), _0x1232e4 = function() { function _0xdacaea(_0x24f48a, _0x4d0511) { this['width'] = _0x24f48a, this['height'] = _0x4d0511; } return _0xdacaea['prototype']['toString'] = function() { return '{W:\x20' + this['width'] + ',\x20H:\x20' + this['height'] + '}'; } , _0xdacaea['prototype']['getClassName'] = function() { return 'Size'; } , _0xdacaea['prototype']['getHashCode'] = function() { var _0x1ccf2f = this['width'] || 0x0; return _0x1ccf2f = 0x18d * _0x1ccf2f ^ (this['height'] || 0x0); } , _0xdacaea['prototype']['copyFrom'] = function(_0x477bea) { this['width'] = _0x477bea['width'], this['height'] = _0x477bea['height']; } , _0xdacaea['prototype']['copyFromFloats'] = function(_0x24ae96, _0xf54019) { return this['width'] = _0x24ae96, this['height'] = _0xf54019, this; } , _0xdacaea['prototype']['set'] = function(_0x3204a1, _0x3b9f33) { return this['copyFromFloats'](_0x3204a1, _0x3b9f33); } , _0xdacaea['prototype']['multiplyByFloats'] = function(_0x55053c, _0x1d4d31) { return new _0xdacaea(this['width'] * _0x55053c,this['height'] * _0x1d4d31); } , _0xdacaea['prototype']['clone'] = function() { return new _0xdacaea(this['width'],this['height']); } , _0xdacaea['prototype']['equals'] = function(_0x239164) { return !!_0x239164 && (this['width'] === _0x239164['width'] && this['height'] === _0x239164['height']); } , Object['defineProperty'](_0xdacaea['prototype'], 'surface', { 'get': function() { return this['width'] * this['height']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xdacaea['Zero'] = function() { return new _0xdacaea(0x0,0x0); } , _0xdacaea['prototype']['add'] = function(_0x111ff9) { return new _0xdacaea(this['width'] + _0x111ff9['width'],this['height'] + _0x111ff9['height']); } , _0xdacaea['prototype']['subtract'] = function(_0x5e12fa) { return new _0xdacaea(this['width'] - _0x5e12fa['width'],this['height'] - _0x5e12fa['height']); } , _0xdacaea['Lerp'] = function(_0x58ff4e, _0x3cd087, _0x4fe305) { return new _0xdacaea(_0x58ff4e['width'] + (_0x3cd087['width'] - _0x58ff4e['width']) * _0x4fe305,_0x58ff4e['height'] + (_0x3cd087['height'] - _0x58ff4e['height']) * _0x4fe305); } , _0xdacaea; }(), _0x897ad5 = function() { function _0x260207(_0x2aaf7c, _0x1a3132, _0x5d082e, _0x30fcee) { void 0x0 === _0x2aaf7c && (_0x2aaf7c = 0x0), void 0x0 === _0x1a3132 && (_0x1a3132 = 0x0), void 0x0 === _0x5d082e && (_0x5d082e = 0x0), void 0x0 === _0x30fcee && (_0x30fcee = 0x1), this['x'] = _0x2aaf7c, this['y'] = _0x1a3132, this['z'] = _0x5d082e, this['w'] = _0x30fcee; } return _0x260207['prototype']['toString'] = function() { return '{X:\x20' + this['x'] + '\x20Y:' + this['y'] + '\x20Z:' + this['z'] + '\x20W:' + this['w'] + '}'; } , _0x260207['prototype']['getClassName'] = function() { return 'Quaternion'; } , _0x260207['prototype']['getHashCode'] = function() { var _0x202156 = this['x'] || 0x0; return _0x202156 = 0x18d * (_0x202156 = 0x18d * (_0x202156 = 0x18d * _0x202156 ^ (this['y'] || 0x0)) ^ (this['z'] || 0x0)) ^ (this['w'] || 0x0); } , _0x260207['prototype']['asArray'] = function() { return [this['x'], this['y'], this['z'], this['w']]; } , _0x260207['prototype']['equals'] = function(_0x50573e) { return _0x50573e && this['x'] === _0x50573e['x'] && this['y'] === _0x50573e['y'] && this['z'] === _0x50573e['z'] && this['w'] === _0x50573e['w']; } , _0x260207['prototype']['clone'] = function() { return new _0x260207(this['x'],this['y'],this['z'],this['w']); } , _0x260207['prototype']['copyFrom'] = function(_0x5d3847) { return this['x'] = _0x5d3847['x'], this['y'] = _0x5d3847['y'], this['z'] = _0x5d3847['z'], this['w'] = _0x5d3847['w'], this; } , _0x260207['prototype']['copyFromFloats'] = function(_0x3e6ec9, _0x1a3b0d, _0x3b4e9a, _0x421925) { return this['x'] = _0x3e6ec9, this['y'] = _0x1a3b0d, this['z'] = _0x3b4e9a, this['w'] = _0x421925, this; } , _0x260207['prototype']['set'] = function(_0x3fbeff, _0x4b4e8d, _0x2af6d9, _0x3fba47) { return this['copyFromFloats'](_0x3fbeff, _0x4b4e8d, _0x2af6d9, _0x3fba47); } , _0x260207['prototype']['add'] = function(_0x4c9334) { return new _0x260207(this['x'] + _0x4c9334['x'],this['y'] + _0x4c9334['y'],this['z'] + _0x4c9334['z'],this['w'] + _0x4c9334['w']); } , _0x260207['prototype']['addInPlace'] = function(_0x40d20d) { return this['x'] += _0x40d20d['x'], this['y'] += _0x40d20d['y'], this['z'] += _0x40d20d['z'], this['w'] += _0x40d20d['w'], this; } , _0x260207['prototype']['subtract'] = function(_0x47a6d) { return new _0x260207(this['x'] - _0x47a6d['x'],this['y'] - _0x47a6d['y'],this['z'] - _0x47a6d['z'],this['w'] - _0x47a6d['w']); } , _0x260207['prototype']['scale'] = function(_0x346553) { return new _0x260207(this['x'] * _0x346553,this['y'] * _0x346553,this['z'] * _0x346553,this['w'] * _0x346553); } , _0x260207['prototype']['scaleToRef'] = function(_0x41c9b3, _0x1418eb) { return _0x1418eb['x'] = this['x'] * _0x41c9b3, _0x1418eb['y'] = this['y'] * _0x41c9b3, _0x1418eb['z'] = this['z'] * _0x41c9b3, _0x1418eb['w'] = this['w'] * _0x41c9b3, this; } , _0x260207['prototype']['scaleInPlace'] = function(_0x3db4f8) { return this['x'] *= _0x3db4f8, this['y'] *= _0x3db4f8, this['z'] *= _0x3db4f8, this['w'] *= _0x3db4f8, this; } , _0x260207['prototype']['scaleAndAddToRef'] = function(_0x32856d, _0x259036) { return _0x259036['x'] += this['x'] * _0x32856d, _0x259036['y'] += this['y'] * _0x32856d, _0x259036['z'] += this['z'] * _0x32856d, _0x259036['w'] += this['w'] * _0x32856d, this; } , _0x260207['prototype']['multiply'] = function(_0x21b883) { var _0x1d5502 = new _0x260207(0x0,0x0,0x0,0x1); return this['multiplyToRef'](_0x21b883, _0x1d5502), _0x1d5502; } , _0x260207['prototype']['multiplyToRef'] = function(_0x2ebd26, _0x3f94d0) { var _0x12f85e = this['x'] * _0x2ebd26['w'] + this['y'] * _0x2ebd26['z'] - this['z'] * _0x2ebd26['y'] + this['w'] * _0x2ebd26['x'] , _0x302186 = -this['x'] * _0x2ebd26['z'] + this['y'] * _0x2ebd26['w'] + this['z'] * _0x2ebd26['x'] + this['w'] * _0x2ebd26['y'] , _0x56b563 = this['x'] * _0x2ebd26['y'] - this['y'] * _0x2ebd26['x'] + this['z'] * _0x2ebd26['w'] + this['w'] * _0x2ebd26['z'] , _0x4f7073 = -this['x'] * _0x2ebd26['x'] - this['y'] * _0x2ebd26['y'] - this['z'] * _0x2ebd26['z'] + this['w'] * _0x2ebd26['w']; return _0x3f94d0['copyFromFloats'](_0x12f85e, _0x302186, _0x56b563, _0x4f7073), this; } , _0x260207['prototype']['multiplyInPlace'] = function(_0x4b3899) { return this['multiplyToRef'](_0x4b3899, this), this; } , _0x260207['prototype']['conjugateToRef'] = function(_0x3f855c) { return _0x3f855c['copyFromFloats'](-this['x'], -this['y'], -this['z'], this['w']), this; } , _0x260207['prototype']['conjugateInPlace'] = function() { return this['x'] *= -0x1, this['y'] *= -0x1, this['z'] *= -0x1, this; } , _0x260207['prototype']['conjugate'] = function() { return new _0x260207(-this['x'],-this['y'],-this['z'],this['w']); } , _0x260207['prototype']['length'] = function() { return Math['sqrt'](this['x'] * this['x'] + this['y'] * this['y'] + this['z'] * this['z'] + this['w'] * this['w']); } , _0x260207['prototype']['normalize'] = function() { var _0x1ca130 = this['length'](); if (0x0 === _0x1ca130) return this; var _0xc9b773 = 0x1 / _0x1ca130; return this['x'] *= _0xc9b773, this['y'] *= _0xc9b773, this['z'] *= _0xc9b773, this['w'] *= _0xc9b773, this; } , _0x260207['prototype']['toEulerAngles'] = function(_0xc6e200) { void 0x0 === _0xc6e200 && (_0xc6e200 = 'YZX'); var _0x1bde49 = _0x3fbe20['Zero'](); return this['toEulerAnglesToRef'](_0x1bde49), _0x1bde49; } , _0x260207['prototype']['toEulerAnglesToRef'] = function(_0xdde1a1) { var _0x1dfe2d = this['z'] , _0x19eeae = this['x'] , _0x5d1661 = this['y'] , _0x572b56 = this['w'] , _0x45007c = _0x572b56 * _0x572b56 , _0x3b256a = _0x1dfe2d * _0x1dfe2d , _0x5e772c = _0x19eeae * _0x19eeae , _0xa40a67 = _0x5d1661 * _0x5d1661 , _0x1f9b33 = _0x5d1661 * _0x1dfe2d - _0x19eeae * _0x572b56; return _0x1f9b33 < -0.4999999 ? (_0xdde1a1['y'] = 0x2 * Math['atan2'](_0x5d1661, _0x572b56), _0xdde1a1['x'] = Math['PI'] / 0x2, _0xdde1a1['z'] = 0x0) : _0x1f9b33 > 0.4999999 ? (_0xdde1a1['y'] = 0x2 * Math['atan2'](_0x5d1661, _0x572b56), _0xdde1a1['x'] = -Math['PI'] / 0x2, _0xdde1a1['z'] = 0x0) : (_0xdde1a1['z'] = Math['atan2'](0x2 * (_0x19eeae * _0x5d1661 + _0x1dfe2d * _0x572b56), -_0x3b256a - _0x5e772c + _0xa40a67 + _0x45007c), _0xdde1a1['x'] = Math['asin'](-0x2 * (_0x1dfe2d * _0x5d1661 - _0x19eeae * _0x572b56)), _0xdde1a1['y'] = Math['atan2'](0x2 * (_0x1dfe2d * _0x19eeae + _0x5d1661 * _0x572b56), _0x3b256a - _0x5e772c - _0xa40a67 + _0x45007c)), this; } , _0x260207['prototype']['toRotationMatrix'] = function(_0x13c412) { return _0x5e57bc['FromQuaternionToRef'](this, _0x13c412), this; } , _0x260207['prototype']['fromRotationMatrix'] = function(_0x15c6fa) { return _0x260207['FromRotationMatrixToRef'](_0x15c6fa, this), this; } , _0x260207['FromRotationMatrix'] = function(_0x151f66) { var _0x393806 = new _0x260207(); return _0x260207['FromRotationMatrixToRef'](_0x151f66, _0x393806), _0x393806; } , _0x260207['FromRotationMatrixToRef'] = function(_0x4d8e58, _0x1efca4) { var _0x123450, _0x324480 = _0x4d8e58['m'], _0x478539 = _0x324480[0x0], _0x4f17eb = _0x324480[0x4], _0x514883 = _0x324480[0x8], _0x12ab62 = _0x324480[0x1], _0x510d22 = _0x324480[0x5], _0x5b7f76 = _0x324480[0x9], _0x43dd48 = _0x324480[0x2], _0x42ad7e = _0x324480[0x6], _0x3d9a7e = _0x324480[0xa], _0x4273b9 = _0x478539 + _0x510d22 + _0x3d9a7e; _0x4273b9 > 0x0 ? (_0x123450 = 0.5 / Math['sqrt'](_0x4273b9 + 0x1), _0x1efca4['w'] = 0.25 / _0x123450, _0x1efca4['x'] = (_0x42ad7e - _0x5b7f76) * _0x123450, _0x1efca4['y'] = (_0x514883 - _0x43dd48) * _0x123450, _0x1efca4['z'] = (_0x12ab62 - _0x4f17eb) * _0x123450) : _0x478539 > _0x510d22 && _0x478539 > _0x3d9a7e ? (_0x123450 = 0x2 * Math['sqrt'](0x1 + _0x478539 - _0x510d22 - _0x3d9a7e), _0x1efca4['w'] = (_0x42ad7e - _0x5b7f76) / _0x123450, _0x1efca4['x'] = 0.25 * _0x123450, _0x1efca4['y'] = (_0x4f17eb + _0x12ab62) / _0x123450, _0x1efca4['z'] = (_0x514883 + _0x43dd48) / _0x123450) : _0x510d22 > _0x3d9a7e ? (_0x123450 = 0x2 * Math['sqrt'](0x1 + _0x510d22 - _0x478539 - _0x3d9a7e), _0x1efca4['w'] = (_0x514883 - _0x43dd48) / _0x123450, _0x1efca4['x'] = (_0x4f17eb + _0x12ab62) / _0x123450, _0x1efca4['y'] = 0.25 * _0x123450, _0x1efca4['z'] = (_0x5b7f76 + _0x42ad7e) / _0x123450) : (_0x123450 = 0x2 * Math['sqrt'](0x1 + _0x3d9a7e - _0x478539 - _0x510d22), _0x1efca4['w'] = (_0x12ab62 - _0x4f17eb) / _0x123450, _0x1efca4['x'] = (_0x514883 + _0x43dd48) / _0x123450, _0x1efca4['y'] = (_0x5b7f76 + _0x42ad7e) / _0x123450, _0x1efca4['z'] = 0.25 * _0x123450); } , _0x260207['Dot'] = function(_0x4253c9, _0x54feea) { return _0x4253c9['x'] * _0x54feea['x'] + _0x4253c9['y'] * _0x54feea['y'] + _0x4253c9['z'] * _0x54feea['z'] + _0x4253c9['w'] * _0x54feea['w']; } , _0x260207['AreClose'] = function(_0x1254b4, _0x22f1bc) { return _0x260207['Dot'](_0x1254b4, _0x22f1bc) >= 0x0; } , _0x260207['Zero'] = function() { return new _0x260207(0x0,0x0,0x0,0x0); } , _0x260207['Inverse'] = function(_0x4a393a) { return new _0x260207(-_0x4a393a['x'],-_0x4a393a['y'],-_0x4a393a['z'],_0x4a393a['w']); } , _0x260207['InverseToRef'] = function(_0x342a80, _0x5e176e) { return _0x5e176e['set'](-_0x342a80['x'], -_0x342a80['y'], -_0x342a80['z'], _0x342a80['w']), _0x5e176e; } , _0x260207['Identity'] = function() { return new _0x260207(0x0,0x0,0x0,0x1); } , _0x260207['IsIdentity'] = function(_0x2b8e50) { return _0x2b8e50 && 0x0 === _0x2b8e50['x'] && 0x0 === _0x2b8e50['y'] && 0x0 === _0x2b8e50['z'] && 0x1 === _0x2b8e50['w']; } , _0x260207['RotationAxis'] = function(_0xbb986f, _0x421f39) { return _0x260207['RotationAxisToRef'](_0xbb986f, _0x421f39, new _0x260207()); } , _0x260207['RotationAxisToRef'] = function(_0x41acd7, _0x5b1c74, _0x59b902) { var _0x10310e = Math['sin'](_0x5b1c74 / 0x2); return _0x41acd7['normalize'](), _0x59b902['w'] = Math['cos'](_0x5b1c74 / 0x2), _0x59b902['x'] = _0x41acd7['x'] * _0x10310e, _0x59b902['y'] = _0x41acd7['y'] * _0x10310e, _0x59b902['z'] = _0x41acd7['z'] * _0x10310e, _0x59b902; } , _0x260207['FromArray'] = function(_0x55cd4f, _0x3e2723) { return _0x3e2723 || (_0x3e2723 = 0x0), new _0x260207(_0x55cd4f[_0x3e2723],_0x55cd4f[_0x3e2723 + 0x1],_0x55cd4f[_0x3e2723 + 0x2],_0x55cd4f[_0x3e2723 + 0x3]); } , _0x260207['FromEulerAngles'] = function(_0x416b9e, _0x17de6d, _0x1d8d5a) { var _0x3e8f92 = new _0x260207(); return _0x260207['RotationYawPitchRollToRef'](_0x17de6d, _0x416b9e, _0x1d8d5a, _0x3e8f92), _0x3e8f92; } , _0x260207['FromEulerAnglesToRef'] = function(_0x115a29, _0x5481d2, _0x360b27, _0x5a652f) { return _0x260207['RotationYawPitchRollToRef'](_0x5481d2, _0x115a29, _0x360b27, _0x5a652f), _0x5a652f; } , _0x260207['FromEulerVector'] = function(_0x372ec3) { var _0x2fba2c = new _0x260207(); return _0x260207['RotationYawPitchRollToRef'](_0x372ec3['y'], _0x372ec3['x'], _0x372ec3['z'], _0x2fba2c), _0x2fba2c; } , _0x260207['FromEulerVectorToRef'] = function(_0x2a2ba8, _0x1960f0) { return _0x260207['RotationYawPitchRollToRef'](_0x2a2ba8['y'], _0x2a2ba8['x'], _0x2a2ba8['z'], _0x1960f0), _0x1960f0; } , _0x260207['RotationYawPitchRoll'] = function(_0x3d9d54, _0x572a65, _0x51be9f) { var _0xd862f9 = new _0x260207(); return _0x260207['RotationYawPitchRollToRef'](_0x3d9d54, _0x572a65, _0x51be9f, _0xd862f9), _0xd862f9; } , _0x260207['RotationYawPitchRollToRef'] = function(_0x260143, _0x494108, _0x2879f5, _0x38a94d) { var _0x1c2ff9 = 0.5 * _0x2879f5 , _0x28fb34 = 0.5 * _0x494108 , _0xbf1cf4 = 0.5 * _0x260143 , _0x4facf0 = Math['sin'](_0x1c2ff9) , _0x414db0 = Math['cos'](_0x1c2ff9) , _0x159373 = Math['sin'](_0x28fb34) , _0x221f73 = Math['cos'](_0x28fb34) , _0x1be32f = Math['sin'](_0xbf1cf4) , _0x2def53 = Math['cos'](_0xbf1cf4); _0x38a94d['x'] = _0x2def53 * _0x159373 * _0x414db0 + _0x1be32f * _0x221f73 * _0x4facf0, _0x38a94d['y'] = _0x1be32f * _0x221f73 * _0x414db0 - _0x2def53 * _0x159373 * _0x4facf0, _0x38a94d['z'] = _0x2def53 * _0x221f73 * _0x4facf0 - _0x1be32f * _0x159373 * _0x414db0, _0x38a94d['w'] = _0x2def53 * _0x221f73 * _0x414db0 + _0x1be32f * _0x159373 * _0x4facf0; } , _0x260207['RotationAlphaBetaGamma'] = function(_0x59dcd0, _0x464a65, _0x4973b1) { var _0x48d612 = new _0x260207(); return _0x260207['RotationAlphaBetaGammaToRef'](_0x59dcd0, _0x464a65, _0x4973b1, _0x48d612), _0x48d612; } , _0x260207['RotationAlphaBetaGammaToRef'] = function(_0x4a4265, _0x28367c, _0x2e64df, _0x2772f6) { var _0x27472a = 0.5 * (_0x2e64df + _0x4a4265) , _0x5db8fe = 0.5 * (_0x2e64df - _0x4a4265) , _0x16f81e = 0.5 * _0x28367c; _0x2772f6['x'] = Math['cos'](_0x5db8fe) * Math['sin'](_0x16f81e), _0x2772f6['y'] = Math['sin'](_0x5db8fe) * Math['sin'](_0x16f81e), _0x2772f6['z'] = Math['sin'](_0x27472a) * Math['cos'](_0x16f81e), _0x2772f6['w'] = Math['cos'](_0x27472a) * Math['cos'](_0x16f81e); } , _0x260207['RotationQuaternionFromAxis'] = function(_0x5bb73c, _0x5e01d8, _0x41cd31) { var _0x439a84 = new _0x260207(0x0,0x0,0x0,0x0); return _0x260207['RotationQuaternionFromAxisToRef'](_0x5bb73c, _0x5e01d8, _0x41cd31, _0x439a84), _0x439a84; } , _0x260207['RotationQuaternionFromAxisToRef'] = function(_0x28bafa, _0x247ae5, _0x1a47bc, _0x2b3b58) { var _0x5cb0fe = _0x53a116['Matrix'][0x0]; _0x5e57bc['FromXYZAxesToRef'](_0x28bafa['normalize'](), _0x247ae5['normalize'](), _0x1a47bc['normalize'](), _0x5cb0fe), _0x260207['FromRotationMatrixToRef'](_0x5cb0fe, _0x2b3b58); } , _0x260207['Slerp'] = function(_0x581c09, _0x47896d, _0xb25d62) { var _0x1ef552 = _0x260207['Identity'](); return _0x260207['SlerpToRef'](_0x581c09, _0x47896d, _0xb25d62, _0x1ef552), _0x1ef552; } , _0x260207['SlerpToRef'] = function(_0x293937, _0x481ddd, _0xb89408, _0x32af89) { var _0x408347, _0x31be83, _0x2269b0 = _0x293937['x'] * _0x481ddd['x'] + _0x293937['y'] * _0x481ddd['y'] + _0x293937['z'] * _0x481ddd['z'] + _0x293937['w'] * _0x481ddd['w'], _0x2af898 = !0x1; if (_0x2269b0 < 0x0 && (_0x2af898 = !0x0, _0x2269b0 = -_0x2269b0), _0x2269b0 > 0.999999) _0x31be83 = 0x1 - _0xb89408, _0x408347 = _0x2af898 ? -_0xb89408 : _0xb89408; else { var _0x272b05 = Math['acos'](_0x2269b0) , _0x583e19 = 0x1 / Math['sin'](_0x272b05); _0x31be83 = Math['sin']((0x1 - _0xb89408) * _0x272b05) * _0x583e19, _0x408347 = _0x2af898 ? -Math['sin'](_0xb89408 * _0x272b05) * _0x583e19 : Math['sin'](_0xb89408 * _0x272b05) * _0x583e19; } _0x32af89['x'] = _0x31be83 * _0x293937['x'] + _0x408347 * _0x481ddd['x'], _0x32af89['y'] = _0x31be83 * _0x293937['y'] + _0x408347 * _0x481ddd['y'], _0x32af89['z'] = _0x31be83 * _0x293937['z'] + _0x408347 * _0x481ddd['z'], _0x32af89['w'] = _0x31be83 * _0x293937['w'] + _0x408347 * _0x481ddd['w']; } , _0x260207['Hermite'] = function(_0x11f961, _0x1208b5, _0x2f6648, _0xcb40ac, _0x35293a) { var _0x20b0ed = _0x35293a * _0x35293a , _0x1c676e = _0x35293a * _0x20b0ed , _0x112137 = 0x2 * _0x1c676e - 0x3 * _0x20b0ed + 0x1 , _0xb4c8b1 = -0x2 * _0x1c676e + 0x3 * _0x20b0ed , _0x9ce56b = _0x1c676e - 0x2 * _0x20b0ed + _0x35293a , _0x3df0ba = _0x1c676e - _0x20b0ed; return new _0x260207(_0x11f961['x'] * _0x112137 + _0x2f6648['x'] * _0xb4c8b1 + _0x1208b5['x'] * _0x9ce56b + _0xcb40ac['x'] * _0x3df0ba,_0x11f961['y'] * _0x112137 + _0x2f6648['y'] * _0xb4c8b1 + _0x1208b5['y'] * _0x9ce56b + _0xcb40ac['y'] * _0x3df0ba,_0x11f961['z'] * _0x112137 + _0x2f6648['z'] * _0xb4c8b1 + _0x1208b5['z'] * _0x9ce56b + _0xcb40ac['z'] * _0x3df0ba,_0x11f961['w'] * _0x112137 + _0x2f6648['w'] * _0xb4c8b1 + _0x1208b5['w'] * _0x9ce56b + _0xcb40ac['w'] * _0x3df0ba); } , _0x260207; }(), _0x5e57bc = function() { function _0xb313f9() { this['_isIdentity'] = !0x1, this['_isIdentityDirty'] = !0x0, this['_isIdentity3x2'] = !0x0, this['_isIdentity3x2Dirty'] = !0x0, this['updateFlag'] = -0x1, this['_m'] = new Float32Array(0x10), this['_updateIdentityStatus'](!0x1); } return Object['defineProperty'](_0xb313f9['prototype'], 'm', { 'get': function() { return this['_m']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xb313f9['prototype']['_markAsUpdated'] = function() { this['updateFlag'] = _0xb313f9['_updateFlagSeed']++, this['_isIdentity'] = !0x1, this['_isIdentity3x2'] = !0x1, this['_isIdentityDirty'] = !0x0, this['_isIdentity3x2Dirty'] = !0x0; } , _0xb313f9['prototype']['_updateIdentityStatus'] = function(_0x135b68, _0x4807b0, _0x3d08b3, _0x1c5d52) { void 0x0 === _0x4807b0 && (_0x4807b0 = !0x1), void 0x0 === _0x3d08b3 && (_0x3d08b3 = !0x1), void 0x0 === _0x1c5d52 && (_0x1c5d52 = !0x0), this['updateFlag'] = _0xb313f9['_updateFlagSeed']++, this['_isIdentity'] = _0x135b68, this['_isIdentity3x2'] = _0x135b68 || _0x3d08b3, this['_isIdentityDirty'] = !this['_isIdentity'] && _0x4807b0, this['_isIdentity3x2Dirty'] = !this['_isIdentity3x2'] && _0x1c5d52; } , _0xb313f9['prototype']['isIdentity'] = function() { if (this['_isIdentityDirty']) { this['_isIdentityDirty'] = !0x1; var _0x559560 = this['_m']; this['_isIdentity'] = 0x1 === _0x559560[0x0] && 0x0 === _0x559560[0x1] && 0x0 === _0x559560[0x2] && 0x0 === _0x559560[0x3] && 0x0 === _0x559560[0x4] && 0x1 === _0x559560[0x5] && 0x0 === _0x559560[0x6] && 0x0 === _0x559560[0x7] && 0x0 === _0x559560[0x8] && 0x0 === _0x559560[0x9] && 0x1 === _0x559560[0xa] && 0x0 === _0x559560[0xb] && 0x0 === _0x559560[0xc] && 0x0 === _0x559560[0xd] && 0x0 === _0x559560[0xe] && 0x1 === _0x559560[0xf]; } return this['_isIdentity']; } , _0xb313f9['prototype']['isIdentityAs3x2'] = function() { return this['_isIdentity3x2Dirty'] && (this['_isIdentity3x2Dirty'] = !0x1, 0x1 !== this['_m'][0x0] || 0x1 !== this['_m'][0x5] || 0x1 !== this['_m'][0xf] ? this['_isIdentity3x2'] = !0x1 : 0x0 !== this['_m'][0x1] || 0x0 !== this['_m'][0x2] || 0x0 !== this['_m'][0x3] || 0x0 !== this['_m'][0x4] || 0x0 !== this['_m'][0x6] || 0x0 !== this['_m'][0x7] || 0x0 !== this['_m'][0x8] || 0x0 !== this['_m'][0x9] || 0x0 !== this['_m'][0xa] || 0x0 !== this['_m'][0xb] || 0x0 !== this['_m'][0xc] || 0x0 !== this['_m'][0xd] || 0x0 !== this['_m'][0xe] ? this['_isIdentity3x2'] = !0x1 : this['_isIdentity3x2'] = !0x0), this['_isIdentity3x2']; } , _0xb313f9['prototype']['determinant'] = function() { if (!0x0 === this['_isIdentity']) return 0x1; var _0x27f097 = this['_m'] , _0x502395 = _0x27f097[0x0] , _0x282e4a = _0x27f097[0x1] , _0x899010 = _0x27f097[0x2] , _0x196e45 = _0x27f097[0x3] , _0x1c787b = _0x27f097[0x4] , _0x61935a = _0x27f097[0x5] , _0x164d92 = _0x27f097[0x6] , _0x26dcb8 = _0x27f097[0x7] , _0x432b75 = _0x27f097[0x8] , _0x37dfdb = _0x27f097[0x9] , _0x1ec816 = _0x27f097[0xa] , _0x3e8470 = _0x27f097[0xb] , _0x37ed58 = _0x27f097[0xc] , _0x27eca5 = _0x27f097[0xd] , _0x59424f = _0x27f097[0xe] , _0x504877 = _0x27f097[0xf] , _0x47bf26 = _0x1ec816 * _0x504877 - _0x59424f * _0x3e8470 , _0x54fc93 = _0x37dfdb * _0x504877 - _0x27eca5 * _0x3e8470 , _0x5bd5cc = _0x37dfdb * _0x59424f - _0x27eca5 * _0x1ec816 , _0x1aec64 = _0x432b75 * _0x504877 - _0x37ed58 * _0x3e8470 , _0x195fcc = _0x432b75 * _0x59424f - _0x1ec816 * _0x37ed58 , _0x3b98f8 = _0x432b75 * _0x27eca5 - _0x37ed58 * _0x37dfdb; return _0x502395 * +(_0x61935a * _0x47bf26 - _0x164d92 * _0x54fc93 + _0x26dcb8 * _0x5bd5cc) + _0x282e4a * -(_0x1c787b * _0x47bf26 - _0x164d92 * _0x1aec64 + _0x26dcb8 * _0x195fcc) + _0x899010 * +(_0x1c787b * _0x54fc93 - _0x61935a * _0x1aec64 + _0x26dcb8 * _0x3b98f8) + _0x196e45 * -(_0x1c787b * _0x5bd5cc - _0x61935a * _0x195fcc + _0x164d92 * _0x3b98f8); } , _0xb313f9['prototype']['toArray'] = function() { return this['_m']; } , _0xb313f9['prototype']['asArray'] = function() { return this['_m']; } , _0xb313f9['prototype']['invert'] = function() { return this['invertToRef'](this), this; } , _0xb313f9['prototype']['reset'] = function() { return _0xb313f9['FromValuesToRef'](0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, this), this['_updateIdentityStatus'](!0x1), this; } , _0xb313f9['prototype']['add'] = function(_0x3d2e98) { var _0x5c0742 = new _0xb313f9(); return this['addToRef'](_0x3d2e98, _0x5c0742), _0x5c0742; } , _0xb313f9['prototype']['addToRef'] = function(_0x7b4a8c, _0x169195) { for (var _0x430ff4 = this['_m'], _0x1f3ffc = _0x169195['_m'], _0x1c7628 = _0x7b4a8c['m'], _0x16faa5 = 0x0; _0x16faa5 < 0x10; _0x16faa5++) _0x1f3ffc[_0x16faa5] = _0x430ff4[_0x16faa5] + _0x1c7628[_0x16faa5]; return _0x169195['_markAsUpdated'](), this; } , _0xb313f9['prototype']['addToSelf'] = function(_0x7f68bf) { for (var _0x148eb9 = this['_m'], _0x1b8592 = _0x7f68bf['m'], _0x45d178 = 0x0; _0x45d178 < 0x10; _0x45d178++) _0x148eb9[_0x45d178] += _0x1b8592[_0x45d178]; return this['_markAsUpdated'](), this; } , _0xb313f9['prototype']['invertToRef'] = function(_0x3263bf) { if (!0x0 === this['_isIdentity']) return _0xb313f9['IdentityToRef'](_0x3263bf), this; var _0x864525 = this['_m'] , _0x2d8588 = _0x864525[0x0] , _0x3c10a5 = _0x864525[0x1] , _0x2bf53d = _0x864525[0x2] , _0x339529 = _0x864525[0x3] , _0x1439b0 = _0x864525[0x4] , _0x5834ae = _0x864525[0x5] , _0x4f9d2b = _0x864525[0x6] , _0x38b1b4 = _0x864525[0x7] , _0x2faa64 = _0x864525[0x8] , _0x21f508 = _0x864525[0x9] , _0x141f9c = _0x864525[0xa] , _0x2a59fc = _0x864525[0xb] , _0x357e7f = _0x864525[0xc] , _0xdd488d = _0x864525[0xd] , _0x1a8898 = _0x864525[0xe] , _0x42e888 = _0x864525[0xf] , _0x8e28cd = _0x141f9c * _0x42e888 - _0x1a8898 * _0x2a59fc , _0x346cf5 = _0x21f508 * _0x42e888 - _0xdd488d * _0x2a59fc , _0x2b1726 = _0x21f508 * _0x1a8898 - _0xdd488d * _0x141f9c , _0x5df2b7 = _0x2faa64 * _0x42e888 - _0x357e7f * _0x2a59fc , _0x3215b1 = _0x2faa64 * _0x1a8898 - _0x141f9c * _0x357e7f , _0x8f63d0 = _0x2faa64 * _0xdd488d - _0x357e7f * _0x21f508 , _0x1f8566 = +(_0x5834ae * _0x8e28cd - _0x4f9d2b * _0x346cf5 + _0x38b1b4 * _0x2b1726) , _0x40198b = -(_0x1439b0 * _0x8e28cd - _0x4f9d2b * _0x5df2b7 + _0x38b1b4 * _0x3215b1) , _0x1d9d19 = +(_0x1439b0 * _0x346cf5 - _0x5834ae * _0x5df2b7 + _0x38b1b4 * _0x8f63d0) , _0x465246 = -(_0x1439b0 * _0x2b1726 - _0x5834ae * _0x3215b1 + _0x4f9d2b * _0x8f63d0) , _0x2abb5d = _0x2d8588 * _0x1f8566 + _0x3c10a5 * _0x40198b + _0x2bf53d * _0x1d9d19 + _0x339529 * _0x465246; if (0x0 === _0x2abb5d) return _0x3263bf['copyFrom'](this), this; var _0x11fe38 = 0x1 / _0x2abb5d , _0x3f2894 = _0x4f9d2b * _0x42e888 - _0x1a8898 * _0x38b1b4 , _0x58be2a = _0x5834ae * _0x42e888 - _0xdd488d * _0x38b1b4 , _0x18383e = _0x5834ae * _0x1a8898 - _0xdd488d * _0x4f9d2b , _0x21828b = _0x1439b0 * _0x42e888 - _0x357e7f * _0x38b1b4 , _0x3d2686 = _0x1439b0 * _0x1a8898 - _0x357e7f * _0x4f9d2b , _0x511add = _0x1439b0 * _0xdd488d - _0x357e7f * _0x5834ae , _0x27b019 = _0x4f9d2b * _0x2a59fc - _0x141f9c * _0x38b1b4 , _0x151a18 = _0x5834ae * _0x2a59fc - _0x21f508 * _0x38b1b4 , _0x5b0086 = _0x5834ae * _0x141f9c - _0x21f508 * _0x4f9d2b , _0x399297 = _0x1439b0 * _0x2a59fc - _0x2faa64 * _0x38b1b4 , _0x6b9597 = _0x1439b0 * _0x141f9c - _0x2faa64 * _0x4f9d2b , _0x3c1d49 = _0x1439b0 * _0x21f508 - _0x2faa64 * _0x5834ae , _0x5ab461 = -(_0x3c10a5 * _0x8e28cd - _0x2bf53d * _0x346cf5 + _0x339529 * _0x2b1726) , _0xac0613 = +(_0x2d8588 * _0x8e28cd - _0x2bf53d * _0x5df2b7 + _0x339529 * _0x3215b1) , _0x4dbde4 = -(_0x2d8588 * _0x346cf5 - _0x3c10a5 * _0x5df2b7 + _0x339529 * _0x8f63d0) , _0x132da4 = +(_0x2d8588 * _0x2b1726 - _0x3c10a5 * _0x3215b1 + _0x2bf53d * _0x8f63d0) , _0x514d8f = +(_0x3c10a5 * _0x3f2894 - _0x2bf53d * _0x58be2a + _0x339529 * _0x18383e) , _0x3ec500 = -(_0x2d8588 * _0x3f2894 - _0x2bf53d * _0x21828b + _0x339529 * _0x3d2686) , _0x1ba604 = +(_0x2d8588 * _0x58be2a - _0x3c10a5 * _0x21828b + _0x339529 * _0x511add) , _0x5c0ce4 = -(_0x2d8588 * _0x18383e - _0x3c10a5 * _0x3d2686 + _0x2bf53d * _0x511add) , _0x10ff06 = -(_0x3c10a5 * _0x27b019 - _0x2bf53d * _0x151a18 + _0x339529 * _0x5b0086) , _0x3c9470 = +(_0x2d8588 * _0x27b019 - _0x2bf53d * _0x399297 + _0x339529 * _0x6b9597) , _0x209c41 = -(_0x2d8588 * _0x151a18 - _0x3c10a5 * _0x399297 + _0x339529 * _0x3c1d49) , _0x2915f3 = +(_0x2d8588 * _0x5b0086 - _0x3c10a5 * _0x6b9597 + _0x2bf53d * _0x3c1d49); return _0xb313f9['FromValuesToRef'](_0x1f8566 * _0x11fe38, _0x5ab461 * _0x11fe38, _0x514d8f * _0x11fe38, _0x10ff06 * _0x11fe38, _0x40198b * _0x11fe38, _0xac0613 * _0x11fe38, _0x3ec500 * _0x11fe38, _0x3c9470 * _0x11fe38, _0x1d9d19 * _0x11fe38, _0x4dbde4 * _0x11fe38, _0x1ba604 * _0x11fe38, _0x209c41 * _0x11fe38, _0x465246 * _0x11fe38, _0x132da4 * _0x11fe38, _0x5c0ce4 * _0x11fe38, _0x2915f3 * _0x11fe38, _0x3263bf), this; } , _0xb313f9['prototype']['addAtIndex'] = function(_0x3a9dec, _0x27409b) { return this['_m'][_0x3a9dec] += _0x27409b, this['_markAsUpdated'](), this; } , _0xb313f9['prototype']['multiplyAtIndex'] = function(_0x1d016b, _0x263ea8) { return this['_m'][_0x1d016b] *= _0x263ea8, this['_markAsUpdated'](), this; } , _0xb313f9['prototype']['setTranslationFromFloats'] = function(_0x229c0b, _0x2c5700, _0x33dd67) { return this['_m'][0xc] = _0x229c0b, this['_m'][0xd] = _0x2c5700, this['_m'][0xe] = _0x33dd67, this['_markAsUpdated'](), this; } , _0xb313f9['prototype']['addTranslationFromFloats'] = function(_0x182e3f, _0x354301, _0x2b4992) { return this['_m'][0xc] += _0x182e3f, this['_m'][0xd] += _0x354301, this['_m'][0xe] += _0x2b4992, this['_markAsUpdated'](), this; } , _0xb313f9['prototype']['setTranslation'] = function(_0x1aa1df) { return this['setTranslationFromFloats'](_0x1aa1df['x'], _0x1aa1df['y'], _0x1aa1df['z']); } , _0xb313f9['prototype']['getTranslation'] = function() { return new _0x3fbe20(this['_m'][0xc],this['_m'][0xd],this['_m'][0xe]); } , _0xb313f9['prototype']['getTranslationToRef'] = function(_0x323424) { return _0x323424['x'] = this['_m'][0xc], _0x323424['y'] = this['_m'][0xd], _0x323424['z'] = this['_m'][0xe], this; } , _0xb313f9['prototype']['removeRotationAndScaling'] = function() { var _0x3a060e = this['m']; return _0xb313f9['FromValuesToRef'](0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, _0x3a060e[0xc], _0x3a060e[0xd], _0x3a060e[0xe], _0x3a060e[0xf], this), this['_updateIdentityStatus'](0x0 === _0x3a060e[0xc] && 0x0 === _0x3a060e[0xd] && 0x0 === _0x3a060e[0xe] && 0x1 === _0x3a060e[0xf]), this; } , _0xb313f9['prototype']['multiply'] = function(_0x18d0d5) { var _0x373f53 = new _0xb313f9(); return this['multiplyToRef'](_0x18d0d5, _0x373f53), _0x373f53; } , _0xb313f9['prototype']['copyFrom'] = function(_0x8312f1) { _0x8312f1['copyToArray'](this['_m']); var _0x2492d1 = _0x8312f1; return this['_updateIdentityStatus'](_0x2492d1['_isIdentity'], _0x2492d1['_isIdentityDirty'], _0x2492d1['_isIdentity3x2'], _0x2492d1['_isIdentity3x2Dirty']), this; } , _0xb313f9['prototype']['copyToArray'] = function(_0xdd940c, _0x7b8a79) { void 0x0 === _0x7b8a79 && (_0x7b8a79 = 0x0); for (var _0x4f8881 = 0x0; _0x4f8881 < 0x10; _0x4f8881++) _0xdd940c[_0x7b8a79 + _0x4f8881] = this['_m'][_0x4f8881]; return this; } , _0xb313f9['prototype']['multiplyToRef'] = function(_0x4db02d, _0x324ca1) { return this['_isIdentity'] ? (_0x324ca1['copyFrom'](_0x4db02d), this) : _0x4db02d['_isIdentity'] ? (_0x324ca1['copyFrom'](this), this) : (this['multiplyToArray'](_0x4db02d, _0x324ca1['_m'], 0x0), _0x324ca1['_markAsUpdated'](), this); } , _0xb313f9['prototype']['multiplyToArray'] = function(_0x5eb8cf, _0x2cd594, _0x137581) { var _0xffcc3e = this['_m'] , _0x434e89 = _0x5eb8cf['m'] , _0x33c2e4 = _0xffcc3e[0x0] , _0x831565 = _0xffcc3e[0x1] , _0x55e322 = _0xffcc3e[0x2] , _0x212287 = _0xffcc3e[0x3] , _0x25dc3f = _0xffcc3e[0x4] , _0x1b09bb = _0xffcc3e[0x5] , _0x4b30a1 = _0xffcc3e[0x6] , _0x2c2bfe = _0xffcc3e[0x7] , _0x21768a = _0xffcc3e[0x8] , _0x4c8f3f = _0xffcc3e[0x9] , _0x55a9b8 = _0xffcc3e[0xa] , _0x1f9b53 = _0xffcc3e[0xb] , _0x5ef596 = _0xffcc3e[0xc] , _0x2e8de9 = _0xffcc3e[0xd] , _0x498d53 = _0xffcc3e[0xe] , _0x4db4fc = _0xffcc3e[0xf] , _0x450c77 = _0x434e89[0x0] , _0x56f2dd = _0x434e89[0x1] , _0x396e76 = _0x434e89[0x2] , _0x373ea9 = _0x434e89[0x3] , _0x2dede9 = _0x434e89[0x4] , _0x4bfda2 = _0x434e89[0x5] , _0x1ad9b6 = _0x434e89[0x6] , _0x3f10c6 = _0x434e89[0x7] , _0x3cd38a = _0x434e89[0x8] , _0x1bd079 = _0x434e89[0x9] , _0x1ccd76 = _0x434e89[0xa] , _0x25bcfb = _0x434e89[0xb] , _0x31fba8 = _0x434e89[0xc] , _0x5d9412 = _0x434e89[0xd] , _0x4cf098 = _0x434e89[0xe] , _0x3d1a92 = _0x434e89[0xf]; return _0x2cd594[_0x137581] = _0x33c2e4 * _0x450c77 + _0x831565 * _0x2dede9 + _0x55e322 * _0x3cd38a + _0x212287 * _0x31fba8, _0x2cd594[_0x137581 + 0x1] = _0x33c2e4 * _0x56f2dd + _0x831565 * _0x4bfda2 + _0x55e322 * _0x1bd079 + _0x212287 * _0x5d9412, _0x2cd594[_0x137581 + 0x2] = _0x33c2e4 * _0x396e76 + _0x831565 * _0x1ad9b6 + _0x55e322 * _0x1ccd76 + _0x212287 * _0x4cf098, _0x2cd594[_0x137581 + 0x3] = _0x33c2e4 * _0x373ea9 + _0x831565 * _0x3f10c6 + _0x55e322 * _0x25bcfb + _0x212287 * _0x3d1a92, _0x2cd594[_0x137581 + 0x4] = _0x25dc3f * _0x450c77 + _0x1b09bb * _0x2dede9 + _0x4b30a1 * _0x3cd38a + _0x2c2bfe * _0x31fba8, _0x2cd594[_0x137581 + 0x5] = _0x25dc3f * _0x56f2dd + _0x1b09bb * _0x4bfda2 + _0x4b30a1 * _0x1bd079 + _0x2c2bfe * _0x5d9412, _0x2cd594[_0x137581 + 0x6] = _0x25dc3f * _0x396e76 + _0x1b09bb * _0x1ad9b6 + _0x4b30a1 * _0x1ccd76 + _0x2c2bfe * _0x4cf098, _0x2cd594[_0x137581 + 0x7] = _0x25dc3f * _0x373ea9 + _0x1b09bb * _0x3f10c6 + _0x4b30a1 * _0x25bcfb + _0x2c2bfe * _0x3d1a92, _0x2cd594[_0x137581 + 0x8] = _0x21768a * _0x450c77 + _0x4c8f3f * _0x2dede9 + _0x55a9b8 * _0x3cd38a + _0x1f9b53 * _0x31fba8, _0x2cd594[_0x137581 + 0x9] = _0x21768a * _0x56f2dd + _0x4c8f3f * _0x4bfda2 + _0x55a9b8 * _0x1bd079 + _0x1f9b53 * _0x5d9412, _0x2cd594[_0x137581 + 0xa] = _0x21768a * _0x396e76 + _0x4c8f3f * _0x1ad9b6 + _0x55a9b8 * _0x1ccd76 + _0x1f9b53 * _0x4cf098, _0x2cd594[_0x137581 + 0xb] = _0x21768a * _0x373ea9 + _0x4c8f3f * _0x3f10c6 + _0x55a9b8 * _0x25bcfb + _0x1f9b53 * _0x3d1a92, _0x2cd594[_0x137581 + 0xc] = _0x5ef596 * _0x450c77 + _0x2e8de9 * _0x2dede9 + _0x498d53 * _0x3cd38a + _0x4db4fc * _0x31fba8, _0x2cd594[_0x137581 + 0xd] = _0x5ef596 * _0x56f2dd + _0x2e8de9 * _0x4bfda2 + _0x498d53 * _0x1bd079 + _0x4db4fc * _0x5d9412, _0x2cd594[_0x137581 + 0xe] = _0x5ef596 * _0x396e76 + _0x2e8de9 * _0x1ad9b6 + _0x498d53 * _0x1ccd76 + _0x4db4fc * _0x4cf098, _0x2cd594[_0x137581 + 0xf] = _0x5ef596 * _0x373ea9 + _0x2e8de9 * _0x3f10c6 + _0x498d53 * _0x25bcfb + _0x4db4fc * _0x3d1a92, this; } , _0xb313f9['prototype']['equals'] = function(_0x34d738) { var _0x2d2605 = _0x34d738; if (!_0x2d2605) return !0x1; if ((this['_isIdentity'] || _0x2d2605['_isIdentity']) && !this['_isIdentityDirty'] && !_0x2d2605['_isIdentityDirty']) return this['_isIdentity'] && _0x2d2605['_isIdentity']; var _0xdc5dad = this['m'] , _0x59a34f = _0x2d2605['m']; return _0xdc5dad[0x0] === _0x59a34f[0x0] && _0xdc5dad[0x1] === _0x59a34f[0x1] && _0xdc5dad[0x2] === _0x59a34f[0x2] && _0xdc5dad[0x3] === _0x59a34f[0x3] && _0xdc5dad[0x4] === _0x59a34f[0x4] && _0xdc5dad[0x5] === _0x59a34f[0x5] && _0xdc5dad[0x6] === _0x59a34f[0x6] && _0xdc5dad[0x7] === _0x59a34f[0x7] && _0xdc5dad[0x8] === _0x59a34f[0x8] && _0xdc5dad[0x9] === _0x59a34f[0x9] && _0xdc5dad[0xa] === _0x59a34f[0xa] && _0xdc5dad[0xb] === _0x59a34f[0xb] && _0xdc5dad[0xc] === _0x59a34f[0xc] && _0xdc5dad[0xd] === _0x59a34f[0xd] && _0xdc5dad[0xe] === _0x59a34f[0xe] && _0xdc5dad[0xf] === _0x59a34f[0xf]; } , _0xb313f9['prototype']['clone'] = function() { var _0x1a9df2 = new _0xb313f9(); return _0x1a9df2['copyFrom'](this), _0x1a9df2; } , _0xb313f9['prototype']['getClassName'] = function() { return 'Matrix'; } , _0xb313f9['prototype']['getHashCode'] = function() { for (var _0x292a03 = this['_m'][0x0] || 0x0, _0x51a9df = 0x1; _0x51a9df < 0x10; _0x51a9df++) _0x292a03 = 0x18d * _0x292a03 ^ (this['_m'][_0x51a9df] || 0x0); return _0x292a03; } , _0xb313f9['prototype']['decompose'] = function(_0xeca2fe, _0x100faa, _0x35ff84) { if (this['_isIdentity']) return _0x35ff84 && _0x35ff84['setAll'](0x0), _0xeca2fe && _0xeca2fe['setAll'](0x1), _0x100faa && _0x100faa['copyFromFloats'](0x0, 0x0, 0x0, 0x1), !0x0; var _0x1ad6fa = this['_m']; if (_0x35ff84 && _0x35ff84['copyFromFloats'](_0x1ad6fa[0xc], _0x1ad6fa[0xd], _0x1ad6fa[0xe]), (_0xeca2fe = _0xeca2fe || _0x53a116['Vector3'][0x0])['x'] = Math['sqrt'](_0x1ad6fa[0x0] * _0x1ad6fa[0x0] + _0x1ad6fa[0x1] * _0x1ad6fa[0x1] + _0x1ad6fa[0x2] * _0x1ad6fa[0x2]), _0xeca2fe['y'] = Math['sqrt'](_0x1ad6fa[0x4] * _0x1ad6fa[0x4] + _0x1ad6fa[0x5] * _0x1ad6fa[0x5] + _0x1ad6fa[0x6] * _0x1ad6fa[0x6]), _0xeca2fe['z'] = Math['sqrt'](_0x1ad6fa[0x8] * _0x1ad6fa[0x8] + _0x1ad6fa[0x9] * _0x1ad6fa[0x9] + _0x1ad6fa[0xa] * _0x1ad6fa[0xa]), this['determinant']() <= 0x0 && (_0xeca2fe['y'] *= -0x1), 0x0 === _0xeca2fe['x'] || 0x0 === _0xeca2fe['y'] || 0x0 === _0xeca2fe['z']) return _0x100faa && _0x100faa['copyFromFloats'](0x0, 0x0, 0x0, 0x1), !0x1; if (_0x100faa) { var _0x1bd7f9 = 0x1 / _0xeca2fe['x'] , _0x9bfb3b = 0x1 / _0xeca2fe['y'] , _0x429acf = 0x1 / _0xeca2fe['z']; _0xb313f9['FromValuesToRef'](_0x1ad6fa[0x0] * _0x1bd7f9, _0x1ad6fa[0x1] * _0x1bd7f9, _0x1ad6fa[0x2] * _0x1bd7f9, 0x0, _0x1ad6fa[0x4] * _0x9bfb3b, _0x1ad6fa[0x5] * _0x9bfb3b, _0x1ad6fa[0x6] * _0x9bfb3b, 0x0, _0x1ad6fa[0x8] * _0x429acf, _0x1ad6fa[0x9] * _0x429acf, _0x1ad6fa[0xa] * _0x429acf, 0x0, 0x0, 0x0, 0x0, 0x1, _0x53a116['Matrix'][0x0]), _0x897ad5['FromRotationMatrixToRef'](_0x53a116['Matrix'][0x0], _0x100faa); } return !0x0; } , _0xb313f9['prototype']['getRow'] = function(_0x331c50) { if (_0x331c50 < 0x0 || _0x331c50 > 0x3) return null; var _0x1993ed = 0x4 * _0x331c50; return new _0x298fee(this['_m'][_0x1993ed + 0x0],this['_m'][_0x1993ed + 0x1],this['_m'][_0x1993ed + 0x2],this['_m'][_0x1993ed + 0x3]); } , _0xb313f9['prototype']['setRow'] = function(_0x444667, _0x5ce568) { return this['setRowFromFloats'](_0x444667, _0x5ce568['x'], _0x5ce568['y'], _0x5ce568['z'], _0x5ce568['w']); } , _0xb313f9['prototype']['transpose'] = function() { return _0xb313f9['Transpose'](this); } , _0xb313f9['prototype']['transposeToRef'] = function(_0x341c0b) { return _0xb313f9['TransposeToRef'](this, _0x341c0b), this; } , _0xb313f9['prototype']['setRowFromFloats'] = function(_0x4be31f, _0x2f7a91, _0x38b613, _0x2e3f80, _0x41bf35) { if (_0x4be31f < 0x0 || _0x4be31f > 0x3) return this; var _0x34a42a = 0x4 * _0x4be31f; return this['_m'][_0x34a42a + 0x0] = _0x2f7a91, this['_m'][_0x34a42a + 0x1] = _0x38b613, this['_m'][_0x34a42a + 0x2] = _0x2e3f80, this['_m'][_0x34a42a + 0x3] = _0x41bf35, this['_markAsUpdated'](), this; } , _0xb313f9['prototype']['scale'] = function(_0x274786) { var _0x45d9e3 = new _0xb313f9(); return this['scaleToRef'](_0x274786, _0x45d9e3), _0x45d9e3; } , _0xb313f9['prototype']['scaleToRef'] = function(_0x316602, _0x503805) { for (var _0x165cbc = 0x0; _0x165cbc < 0x10; _0x165cbc++) _0x503805['_m'][_0x165cbc] = this['_m'][_0x165cbc] * _0x316602; return _0x503805['_markAsUpdated'](), this; } , _0xb313f9['prototype']['scaleAndAddToRef'] = function(_0x4bc6ba, _0x32d77a) { for (var _0x46988e = 0x0; _0x46988e < 0x10; _0x46988e++) _0x32d77a['_m'][_0x46988e] += this['_m'][_0x46988e] * _0x4bc6ba; return _0x32d77a['_markAsUpdated'](), this; } , _0xb313f9['prototype']['toNormalMatrix'] = function(_0x30dde8) { var _0x58a130 = _0x53a116['Matrix'][0x0]; this['invertToRef'](_0x58a130), _0x58a130['transposeToRef'](_0x30dde8); var _0x39cef5 = _0x30dde8['_m']; _0xb313f9['FromValuesToRef'](_0x39cef5[0x0], _0x39cef5[0x1], _0x39cef5[0x2], 0x0, _0x39cef5[0x4], _0x39cef5[0x5], _0x39cef5[0x6], 0x0, _0x39cef5[0x8], _0x39cef5[0x9], _0x39cef5[0xa], 0x0, 0x0, 0x0, 0x0, 0x1, _0x30dde8); } , _0xb313f9['prototype']['getRotationMatrix'] = function() { var _0x3ff2b0 = new _0xb313f9(); return this['getRotationMatrixToRef'](_0x3ff2b0), _0x3ff2b0; } , _0xb313f9['prototype']['getRotationMatrixToRef'] = function(_0x4710ad) { var _0xb0468 = _0x53a116['Vector3'][0x0]; if (!this['decompose'](_0xb0468)) return _0xb313f9['IdentityToRef'](_0x4710ad), this; var _0x8ebe86 = this['_m'] , _0x217c3c = 0x1 / _0xb0468['x'] , _0x4dfbfe = 0x1 / _0xb0468['y'] , _0x285053 = 0x1 / _0xb0468['z']; return _0xb313f9['FromValuesToRef'](_0x8ebe86[0x0] * _0x217c3c, _0x8ebe86[0x1] * _0x217c3c, _0x8ebe86[0x2] * _0x217c3c, 0x0, _0x8ebe86[0x4] * _0x4dfbfe, _0x8ebe86[0x5] * _0x4dfbfe, _0x8ebe86[0x6] * _0x4dfbfe, 0x0, _0x8ebe86[0x8] * _0x285053, _0x8ebe86[0x9] * _0x285053, _0x8ebe86[0xa] * _0x285053, 0x0, 0x0, 0x0, 0x0, 0x1, _0x4710ad), this; } , _0xb313f9['prototype']['toggleModelMatrixHandInPlace'] = function() { var _0x51bf5a = this['_m']; _0x51bf5a[0x2] *= -0x1, _0x51bf5a[0x6] *= -0x1, _0x51bf5a[0x8] *= -0x1, _0x51bf5a[0x9] *= -0x1, _0x51bf5a[0xe] *= -0x1, this['_markAsUpdated'](); } , _0xb313f9['prototype']['toggleProjectionMatrixHandInPlace'] = function() { var _0x3a8729 = this['_m']; _0x3a8729[0x8] *= -0x1, _0x3a8729[0x9] *= -0x1, _0x3a8729[0xa] *= -0x1, _0x3a8729[0xb] *= -0x1, this['_markAsUpdated'](); } , _0xb313f9['FromArray'] = function(_0x4f5eea, _0x1d61b5) { void 0x0 === _0x1d61b5 && (_0x1d61b5 = 0x0); var _0x1a6936 = new _0xb313f9(); return _0xb313f9['FromArrayToRef'](_0x4f5eea, _0x1d61b5, _0x1a6936), _0x1a6936; } , _0xb313f9['FromArrayToRef'] = function(_0xb14bf8, _0x14d2aa, _0x3475d4) { for (var _0x77d356 = 0x0; _0x77d356 < 0x10; _0x77d356++) _0x3475d4['_m'][_0x77d356] = _0xb14bf8[_0x77d356 + _0x14d2aa]; _0x3475d4['_markAsUpdated'](); } , _0xb313f9['FromFloat32ArrayToRefScaled'] = function(_0x34c7ed, _0x284eef, _0x40e994, _0x1d37ac) { for (var _0x10f076 = 0x0; _0x10f076 < 0x10; _0x10f076++) _0x1d37ac['_m'][_0x10f076] = _0x34c7ed[_0x10f076 + _0x284eef] * _0x40e994; _0x1d37ac['_markAsUpdated'](); } , Object['defineProperty'](_0xb313f9, 'IdentityReadOnly', { 'get': function() { return _0xb313f9['_identityReadOnly']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xb313f9['FromValuesToRef'] = function(_0x159938, _0x252296, _0x1844b6, _0x30c7e1, _0x25d114, _0x448ec6, _0x28c129, _0x27a173, _0x2c048d, _0x404308, _0x1e8833, _0x3f3a87, _0x52955f, _0x429d32, _0x5d8e3d, _0x39a4ad, _0x30547b) { var _0x445030 = _0x30547b['_m']; _0x445030[0x0] = _0x159938, _0x445030[0x1] = _0x252296, _0x445030[0x2] = _0x1844b6, _0x445030[0x3] = _0x30c7e1, _0x445030[0x4] = _0x25d114, _0x445030[0x5] = _0x448ec6, _0x445030[0x6] = _0x28c129, _0x445030[0x7] = _0x27a173, _0x445030[0x8] = _0x2c048d, _0x445030[0x9] = _0x404308, _0x445030[0xa] = _0x1e8833, _0x445030[0xb] = _0x3f3a87, _0x445030[0xc] = _0x52955f, _0x445030[0xd] = _0x429d32, _0x445030[0xe] = _0x5d8e3d, _0x445030[0xf] = _0x39a4ad, _0x30547b['_markAsUpdated'](); } , _0xb313f9['FromValues'] = function(_0x42c867, _0xee1142, _0x17fd5a, _0x101709, _0x1e072f, _0x45493a, _0x37b36b, _0x392645, _0x41d92d, _0x1c0456, _0x1306c9, _0x1a129a, _0x2da3d7, _0xeb5a1, _0x10a604, _0x3da289) { var _0xc2f166 = new _0xb313f9() , _0x49602c = _0xc2f166['_m']; return _0x49602c[0x0] = _0x42c867, _0x49602c[0x1] = _0xee1142, _0x49602c[0x2] = _0x17fd5a, _0x49602c[0x3] = _0x101709, _0x49602c[0x4] = _0x1e072f, _0x49602c[0x5] = _0x45493a, _0x49602c[0x6] = _0x37b36b, _0x49602c[0x7] = _0x392645, _0x49602c[0x8] = _0x41d92d, _0x49602c[0x9] = _0x1c0456, _0x49602c[0xa] = _0x1306c9, _0x49602c[0xb] = _0x1a129a, _0x49602c[0xc] = _0x2da3d7, _0x49602c[0xd] = _0xeb5a1, _0x49602c[0xe] = _0x10a604, _0x49602c[0xf] = _0x3da289, _0xc2f166['_markAsUpdated'](), _0xc2f166; } , _0xb313f9['Compose'] = function(_0x5c58ac, _0x3f340a, _0x36e48b) { var _0x366e71 = new _0xb313f9(); return _0xb313f9['ComposeToRef'](_0x5c58ac, _0x3f340a, _0x36e48b, _0x366e71), _0x366e71; } , _0xb313f9['ComposeToRef'] = function(_0x589e13, _0x2f65d, _0x117423, _0x47b528) { var _0x509100 = _0x47b528['_m'] , _0x2b7417 = _0x2f65d['x'] , _0x3128bb = _0x2f65d['y'] , _0x56425f = _0x2f65d['z'] , _0x4387f4 = _0x2f65d['w'] , _0x266071 = _0x2b7417 + _0x2b7417 , _0x3c2598 = _0x3128bb + _0x3128bb , _0x56713c = _0x56425f + _0x56425f , _0x29040f = _0x2b7417 * _0x266071 , _0x28c9e4 = _0x2b7417 * _0x3c2598 , _0x50f35d = _0x2b7417 * _0x56713c , _0x177f17 = _0x3128bb * _0x3c2598 , _0x40a987 = _0x3128bb * _0x56713c , _0x175823 = _0x56425f * _0x56713c , _0x166cd3 = _0x4387f4 * _0x266071 , _0x365a14 = _0x4387f4 * _0x3c2598 , _0x456b38 = _0x4387f4 * _0x56713c , _0x55ff71 = _0x589e13['x'] , _0x15caf0 = _0x589e13['y'] , _0x57bdfd = _0x589e13['z']; _0x509100[0x0] = (0x1 - (_0x177f17 + _0x175823)) * _0x55ff71, _0x509100[0x1] = (_0x28c9e4 + _0x456b38) * _0x55ff71, _0x509100[0x2] = (_0x50f35d - _0x365a14) * _0x55ff71, _0x509100[0x3] = 0x0, _0x509100[0x4] = (_0x28c9e4 - _0x456b38) * _0x15caf0, _0x509100[0x5] = (0x1 - (_0x29040f + _0x175823)) * _0x15caf0, _0x509100[0x6] = (_0x40a987 + _0x166cd3) * _0x15caf0, _0x509100[0x7] = 0x0, _0x509100[0x8] = (_0x50f35d + _0x365a14) * _0x57bdfd, _0x509100[0x9] = (_0x40a987 - _0x166cd3) * _0x57bdfd, _0x509100[0xa] = (0x1 - (_0x29040f + _0x177f17)) * _0x57bdfd, _0x509100[0xb] = 0x0, _0x509100[0xc] = _0x117423['x'], _0x509100[0xd] = _0x117423['y'], _0x509100[0xe] = _0x117423['z'], _0x509100[0xf] = 0x1, _0x47b528['_markAsUpdated'](); } , _0xb313f9['Identity'] = function() { var _0x541938 = _0xb313f9['FromValues'](0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1); return _0x541938['_updateIdentityStatus'](!0x0), _0x541938; } , _0xb313f9['IdentityToRef'] = function(_0x4163d8) { _0xb313f9['FromValuesToRef'](0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, _0x4163d8), _0x4163d8['_updateIdentityStatus'](!0x0); } , _0xb313f9['Zero'] = function() { var _0x9a7774 = _0xb313f9['FromValues'](0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0); return _0x9a7774['_updateIdentityStatus'](!0x1), _0x9a7774; } , _0xb313f9['RotationX'] = function(_0x519ade) { var _0x374a43 = new _0xb313f9(); return _0xb313f9['RotationXToRef'](_0x519ade, _0x374a43), _0x374a43; } , _0xb313f9['Invert'] = function(_0x3a34b3) { var _0x92ad5b = new _0xb313f9(); return _0x3a34b3['invertToRef'](_0x92ad5b), _0x92ad5b; } , _0xb313f9['RotationXToRef'] = function(_0x23fed0, _0x4e9b04) { var _0x358d3f = Math['sin'](_0x23fed0) , _0x25b2f4 = Math['cos'](_0x23fed0); _0xb313f9['FromValuesToRef'](0x1, 0x0, 0x0, 0x0, 0x0, _0x25b2f4, _0x358d3f, 0x0, 0x0, -_0x358d3f, _0x25b2f4, 0x0, 0x0, 0x0, 0x0, 0x1, _0x4e9b04), _0x4e9b04['_updateIdentityStatus'](0x1 === _0x25b2f4 && 0x0 === _0x358d3f); } , _0xb313f9['RotationY'] = function(_0x330290) { var _0x16f469 = new _0xb313f9(); return _0xb313f9['RotationYToRef'](_0x330290, _0x16f469), _0x16f469; } , _0xb313f9['RotationYToRef'] = function(_0x5e1091, _0xec8cac) { var _0x538bf1 = Math['sin'](_0x5e1091) , _0x2995cb = Math['cos'](_0x5e1091); _0xb313f9['FromValuesToRef'](_0x2995cb, 0x0, -_0x538bf1, 0x0, 0x0, 0x1, 0x0, 0x0, _0x538bf1, 0x0, _0x2995cb, 0x0, 0x0, 0x0, 0x0, 0x1, _0xec8cac), _0xec8cac['_updateIdentityStatus'](0x1 === _0x2995cb && 0x0 === _0x538bf1); } , _0xb313f9['RotationZ'] = function(_0x39f02a) { var _0x416160 = new _0xb313f9(); return _0xb313f9['RotationZToRef'](_0x39f02a, _0x416160), _0x416160; } , _0xb313f9['RotationZToRef'] = function(_0x3d9df5, _0x1eccd4) { var _0x9027b0 = Math['sin'](_0x3d9df5) , _0x45610d = Math['cos'](_0x3d9df5); _0xb313f9['FromValuesToRef'](_0x45610d, _0x9027b0, 0x0, 0x0, -_0x9027b0, _0x45610d, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, _0x1eccd4), _0x1eccd4['_updateIdentityStatus'](0x1 === _0x45610d && 0x0 === _0x9027b0); } , _0xb313f9['RotationAxis'] = function(_0x10e793, _0x446ae5) { var _0x5ea287 = new _0xb313f9(); return _0xb313f9['RotationAxisToRef'](_0x10e793, _0x446ae5, _0x5ea287), _0x5ea287; } , _0xb313f9['RotationAxisToRef'] = function(_0x5039bd, _0x44254b, _0x8a386) { var _0x86b216 = Math['sin'](-_0x44254b) , _0x222a97 = Math['cos'](-_0x44254b) , _0xef433f = 0x1 - _0x222a97; _0x5039bd['normalize'](); var _0x46760d = _0x8a386['_m']; _0x46760d[0x0] = _0x5039bd['x'] * _0x5039bd['x'] * _0xef433f + _0x222a97, _0x46760d[0x1] = _0x5039bd['x'] * _0x5039bd['y'] * _0xef433f - _0x5039bd['z'] * _0x86b216, _0x46760d[0x2] = _0x5039bd['x'] * _0x5039bd['z'] * _0xef433f + _0x5039bd['y'] * _0x86b216, _0x46760d[0x3] = 0x0, _0x46760d[0x4] = _0x5039bd['y'] * _0x5039bd['x'] * _0xef433f + _0x5039bd['z'] * _0x86b216, _0x46760d[0x5] = _0x5039bd['y'] * _0x5039bd['y'] * _0xef433f + _0x222a97, _0x46760d[0x6] = _0x5039bd['y'] * _0x5039bd['z'] * _0xef433f - _0x5039bd['x'] * _0x86b216, _0x46760d[0x7] = 0x0, _0x46760d[0x8] = _0x5039bd['z'] * _0x5039bd['x'] * _0xef433f - _0x5039bd['y'] * _0x86b216, _0x46760d[0x9] = _0x5039bd['z'] * _0x5039bd['y'] * _0xef433f + _0x5039bd['x'] * _0x86b216, _0x46760d[0xa] = _0x5039bd['z'] * _0x5039bd['z'] * _0xef433f + _0x222a97, _0x46760d[0xb] = 0x0, _0x46760d[0xc] = 0x0, _0x46760d[0xd] = 0x0, _0x46760d[0xe] = 0x0, _0x46760d[0xf] = 0x1, _0x8a386['_markAsUpdated'](); } , _0xb313f9['RotationAlignToRef'] = function(_0x21b6ac, _0x309b9d, _0x502408) { var _0x3f511f = _0x3fbe20['Cross'](_0x309b9d, _0x21b6ac) , _0x1f150c = _0x3fbe20['Dot'](_0x309b9d, _0x21b6ac) , _0x1d985c = 0x1 / (0x1 + _0x1f150c) , _0x4db787 = _0x502408['_m']; _0x4db787[0x0] = _0x3f511f['x'] * _0x3f511f['x'] * _0x1d985c + _0x1f150c, _0x4db787[0x1] = _0x3f511f['y'] * _0x3f511f['x'] * _0x1d985c - _0x3f511f['z'], _0x4db787[0x2] = _0x3f511f['z'] * _0x3f511f['x'] * _0x1d985c + _0x3f511f['y'], _0x4db787[0x3] = 0x0, _0x4db787[0x4] = _0x3f511f['x'] * _0x3f511f['y'] * _0x1d985c + _0x3f511f['z'], _0x4db787[0x5] = _0x3f511f['y'] * _0x3f511f['y'] * _0x1d985c + _0x1f150c, _0x4db787[0x6] = _0x3f511f['z'] * _0x3f511f['y'] * _0x1d985c - _0x3f511f['x'], _0x4db787[0x7] = 0x0, _0x4db787[0x8] = _0x3f511f['x'] * _0x3f511f['z'] * _0x1d985c - _0x3f511f['y'], _0x4db787[0x9] = _0x3f511f['y'] * _0x3f511f['z'] * _0x1d985c + _0x3f511f['x'], _0x4db787[0xa] = _0x3f511f['z'] * _0x3f511f['z'] * _0x1d985c + _0x1f150c, _0x4db787[0xb] = 0x0, _0x4db787[0xc] = 0x0, _0x4db787[0xd] = 0x0, _0x4db787[0xe] = 0x0, _0x4db787[0xf] = 0x1, _0x502408['_markAsUpdated'](); } , _0xb313f9['RotationYawPitchRoll'] = function(_0x5da873, _0x4a09ac, _0x5a4097) { var _0x2ad84e = new _0xb313f9(); return _0xb313f9['RotationYawPitchRollToRef'](_0x5da873, _0x4a09ac, _0x5a4097, _0x2ad84e), _0x2ad84e; } , _0xb313f9['RotationYawPitchRollToRef'] = function(_0x5f1fd4, _0x4e6927, _0x293469, _0x463f24) { _0x897ad5['RotationYawPitchRollToRef'](_0x5f1fd4, _0x4e6927, _0x293469, _0x53a116['Quaternion'][0x0]), _0x53a116['Quaternion'][0x0]['toRotationMatrix'](_0x463f24); } , _0xb313f9['Scaling'] = function(_0x1164c2, _0x551253, _0x94d04a) { var _0x5731b7 = new _0xb313f9(); return _0xb313f9['ScalingToRef'](_0x1164c2, _0x551253, _0x94d04a, _0x5731b7), _0x5731b7; } , _0xb313f9['ScalingToRef'] = function(_0x1469a9, _0x3fb313, _0x5d2a57, _0xeaa32b) { _0xb313f9['FromValuesToRef'](_0x1469a9, 0x0, 0x0, 0x0, 0x0, _0x3fb313, 0x0, 0x0, 0x0, 0x0, _0x5d2a57, 0x0, 0x0, 0x0, 0x0, 0x1, _0xeaa32b), _0xeaa32b['_updateIdentityStatus'](0x1 === _0x1469a9 && 0x1 === _0x3fb313 && 0x1 === _0x5d2a57); } , _0xb313f9['Translation'] = function(_0x1f8610, _0x3931e4, _0x4eba97) { var _0x2e0a65 = new _0xb313f9(); return _0xb313f9['TranslationToRef'](_0x1f8610, _0x3931e4, _0x4eba97, _0x2e0a65), _0x2e0a65; } , _0xb313f9['TranslationToRef'] = function(_0x1a3705, _0x8e9e26, _0x3ec455, _0x3e8c1f) { _0xb313f9['FromValuesToRef'](0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, _0x1a3705, _0x8e9e26, _0x3ec455, 0x1, _0x3e8c1f), _0x3e8c1f['_updateIdentityStatus'](0x0 === _0x1a3705 && 0x0 === _0x8e9e26 && 0x0 === _0x3ec455); } , _0xb313f9['Lerp'] = function(_0x588c62, _0x2ec6ba, _0x358da1) { var _0x113230 = new _0xb313f9(); return _0xb313f9['LerpToRef'](_0x588c62, _0x2ec6ba, _0x358da1, _0x113230), _0x113230; } , _0xb313f9['LerpToRef'] = function(_0x439e01, _0x1d9fa1, _0x110f58, _0x3c5bd8) { for (var _0x573ae3 = _0x3c5bd8['_m'], _0x2f8b85 = _0x439e01['m'], _0x3b48dd = _0x1d9fa1['m'], _0x4f5fb6 = 0x0; _0x4f5fb6 < 0x10; _0x4f5fb6++) _0x573ae3[_0x4f5fb6] = _0x2f8b85[_0x4f5fb6] * (0x1 - _0x110f58) + _0x3b48dd[_0x4f5fb6] * _0x110f58; _0x3c5bd8['_markAsUpdated'](); } , _0xb313f9['DecomposeLerp'] = function(_0x4d58c7, _0x140e5a, _0x4b1876) { var _0x105fe3 = new _0xb313f9(); return _0xb313f9['DecomposeLerpToRef'](_0x4d58c7, _0x140e5a, _0x4b1876, _0x105fe3), _0x105fe3; } , _0xb313f9['DecomposeLerpToRef'] = function(_0x172647, _0x288f84, _0xd1955d, _0x16246c) { var _0x501163 = _0x53a116['Vector3'][0x0] , _0x15360b = _0x53a116['Quaternion'][0x0] , _0x16b638 = _0x53a116['Vector3'][0x1]; _0x172647['decompose'](_0x501163, _0x15360b, _0x16b638); var _0x13a284 = _0x53a116['Vector3'][0x2] , _0x469b56 = _0x53a116['Quaternion'][0x1] , _0x2c5879 = _0x53a116['Vector3'][0x3]; _0x288f84['decompose'](_0x13a284, _0x469b56, _0x2c5879); var _0x5007c9 = _0x53a116['Vector3'][0x4]; _0x3fbe20['LerpToRef'](_0x501163, _0x13a284, _0xd1955d, _0x5007c9); var _0x183185 = _0x53a116['Quaternion'][0x2]; _0x897ad5['SlerpToRef'](_0x15360b, _0x469b56, _0xd1955d, _0x183185); var _0x3adb05 = _0x53a116['Vector3'][0x5]; _0x3fbe20['LerpToRef'](_0x16b638, _0x2c5879, _0xd1955d, _0x3adb05), _0xb313f9['ComposeToRef'](_0x5007c9, _0x183185, _0x3adb05, _0x16246c); } , _0xb313f9['LookAtLH'] = function(_0x1d855c, _0x3d200f, _0xb1750b) { var _0x3e82b8 = new _0xb313f9(); return _0xb313f9['LookAtLHToRef'](_0x1d855c, _0x3d200f, _0xb1750b, _0x3e82b8), _0x3e82b8; } , _0xb313f9['LookAtLHToRef'] = function(_0x17430e, _0x2ba432, _0xf61387, _0x2f80) { var _0x2ebd51 = _0x53a116['Vector3'][0x0] , _0x163c6a = _0x53a116['Vector3'][0x1] , _0x172ef7 = _0x53a116['Vector3'][0x2]; _0x2ba432['subtractToRef'](_0x17430e, _0x172ef7), _0x172ef7['normalize'](), _0x3fbe20['CrossToRef'](_0xf61387, _0x172ef7, _0x2ebd51); var _0x5a8b21 = _0x2ebd51['lengthSquared'](); 0x0 === _0x5a8b21 ? _0x2ebd51['x'] = 0x1 : _0x2ebd51['normalizeFromLength'](Math['sqrt'](_0x5a8b21)), _0x3fbe20['CrossToRef'](_0x172ef7, _0x2ebd51, _0x163c6a), _0x163c6a['normalize'](); var _0x389cd2 = -_0x3fbe20['Dot'](_0x2ebd51, _0x17430e) , _0x5b844a = -_0x3fbe20['Dot'](_0x163c6a, _0x17430e) , _0x25dd55 = -_0x3fbe20['Dot'](_0x172ef7, _0x17430e); _0xb313f9['FromValuesToRef'](_0x2ebd51['x'], _0x163c6a['x'], _0x172ef7['x'], 0x0, _0x2ebd51['y'], _0x163c6a['y'], _0x172ef7['y'], 0x0, _0x2ebd51['z'], _0x163c6a['z'], _0x172ef7['z'], 0x0, _0x389cd2, _0x5b844a, _0x25dd55, 0x1, _0x2f80); } , _0xb313f9['LookAtRH'] = function(_0x40ede6, _0x35a594, _0x3c2fb6) { var _0x46bb4d = new _0xb313f9(); return _0xb313f9['LookAtRHToRef'](_0x40ede6, _0x35a594, _0x3c2fb6, _0x46bb4d), _0x46bb4d; } , _0xb313f9['LookAtRHToRef'] = function(_0x223fa7, _0x25665b, _0x43269d, _0x22274a) { var _0x4dd27b = _0x53a116['Vector3'][0x0] , _0xdc400d = _0x53a116['Vector3'][0x1] , _0x235951 = _0x53a116['Vector3'][0x2]; _0x223fa7['subtractToRef'](_0x25665b, _0x235951), _0x235951['normalize'](), _0x3fbe20['CrossToRef'](_0x43269d, _0x235951, _0x4dd27b); var _0x1bf742 = _0x4dd27b['lengthSquared'](); 0x0 === _0x1bf742 ? _0x4dd27b['x'] = 0x1 : _0x4dd27b['normalizeFromLength'](Math['sqrt'](_0x1bf742)), _0x3fbe20['CrossToRef'](_0x235951, _0x4dd27b, _0xdc400d), _0xdc400d['normalize'](); var _0x12b2c7 = -_0x3fbe20['Dot'](_0x4dd27b, _0x223fa7) , _0x47172c = -_0x3fbe20['Dot'](_0xdc400d, _0x223fa7) , _0x1d1e8c = -_0x3fbe20['Dot'](_0x235951, _0x223fa7); _0xb313f9['FromValuesToRef'](_0x4dd27b['x'], _0xdc400d['x'], _0x235951['x'], 0x0, _0x4dd27b['y'], _0xdc400d['y'], _0x235951['y'], 0x0, _0x4dd27b['z'], _0xdc400d['z'], _0x235951['z'], 0x0, _0x12b2c7, _0x47172c, _0x1d1e8c, 0x1, _0x22274a); } , _0xb313f9['OrthoLH'] = function(_0x5dc47f, _0x4b0a74, _0x716677, _0x19630d) { var _0x5b12cc = new _0xb313f9(); return _0xb313f9['OrthoLHToRef'](_0x5dc47f, _0x4b0a74, _0x716677, _0x19630d, _0x5b12cc), _0x5b12cc; } , _0xb313f9['OrthoLHToRef'] = function(_0x4286db, _0x4291b8, _0x7eaa89, _0x3f36a2, _0x39869f) { var _0x270c24 = 0x2 / _0x4286db , _0x3356e2 = 0x2 / _0x4291b8 , _0x227443 = 0x2 / (_0x3f36a2 - _0x7eaa89) , _0x49bdd5 = -(_0x3f36a2 + _0x7eaa89) / (_0x3f36a2 - _0x7eaa89); _0xb313f9['FromValuesToRef'](_0x270c24, 0x0, 0x0, 0x0, 0x0, _0x3356e2, 0x0, 0x0, 0x0, 0x0, _0x227443, 0x0, 0x0, 0x0, _0x49bdd5, 0x1, _0x39869f), _0x39869f['_updateIdentityStatus'](0x1 === _0x270c24 && 0x1 === _0x3356e2 && 0x1 === _0x227443 && 0x0 === _0x49bdd5); } , _0xb313f9['OrthoOffCenterLH'] = function(_0x300fef, _0x67bd1e, _0x9ea3a7, _0x5de03d, _0x27f7fc, _0x5b28bb) { var _0x21bfe8 = new _0xb313f9(); return _0xb313f9['OrthoOffCenterLHToRef'](_0x300fef, _0x67bd1e, _0x9ea3a7, _0x5de03d, _0x27f7fc, _0x5b28bb, _0x21bfe8), _0x21bfe8; } , _0xb313f9['OrthoOffCenterLHToRef'] = function(_0x7026b9, _0x5b7a6f, _0x35d033, _0x3832a7, _0x31e349, _0x4e1b1b, _0x36fa60) { var _0x278009 = 0x2 / (_0x5b7a6f - _0x7026b9) , _0xf9de30 = 0x2 / (_0x3832a7 - _0x35d033) , _0x1c3ec5 = 0x2 / (_0x4e1b1b - _0x31e349) , _0x5ac4d2 = -(_0x4e1b1b + _0x31e349) / (_0x4e1b1b - _0x31e349) , _0x7fd514 = (_0x7026b9 + _0x5b7a6f) / (_0x7026b9 - _0x5b7a6f) , _0x1d8f98 = (_0x3832a7 + _0x35d033) / (_0x35d033 - _0x3832a7); _0xb313f9['FromValuesToRef'](_0x278009, 0x0, 0x0, 0x0, 0x0, _0xf9de30, 0x0, 0x0, 0x0, 0x0, _0x1c3ec5, 0x0, _0x7fd514, _0x1d8f98, _0x5ac4d2, 0x1, _0x36fa60), _0x36fa60['_markAsUpdated'](); } , _0xb313f9['OrthoOffCenterRH'] = function(_0x52f7e1, _0x22261f, _0x22c420, _0x405a86, _0x483a70, _0x4bde30) { var _0x2813dd = new _0xb313f9(); return _0xb313f9['OrthoOffCenterRHToRef'](_0x52f7e1, _0x22261f, _0x22c420, _0x405a86, _0x483a70, _0x4bde30, _0x2813dd), _0x2813dd; } , _0xb313f9['OrthoOffCenterRHToRef'] = function(_0x4297f7, _0x5760f6, _0x335829, _0x5a7e30, _0x380a63, _0x81e138, _0x2fdff3) { _0xb313f9['OrthoOffCenterLHToRef'](_0x4297f7, _0x5760f6, _0x335829, _0x5a7e30, _0x380a63, _0x81e138, _0x2fdff3), _0x2fdff3['_m'][0xa] *= -0x1; } , _0xb313f9['PerspectiveLH'] = function(_0x4173ce, _0xfd4594, _0x46ce16, _0x537f24) { var _0xf325a8 = new _0xb313f9() , _0x2f226a = 0x2 * _0x46ce16 / _0x4173ce , _0x240fb8 = 0x2 * _0x46ce16 / _0xfd4594 , _0x5b8743 = (_0x537f24 + _0x46ce16) / (_0x537f24 - _0x46ce16) , _0x5e9875 = -0x2 * _0x537f24 * _0x46ce16 / (_0x537f24 - _0x46ce16); return _0xb313f9['FromValuesToRef'](_0x2f226a, 0x0, 0x0, 0x0, 0x0, _0x240fb8, 0x0, 0x0, 0x0, 0x0, _0x5b8743, 0x1, 0x0, 0x0, _0x5e9875, 0x0, _0xf325a8), _0xf325a8['_updateIdentityStatus'](!0x1), _0xf325a8; } , _0xb313f9['PerspectiveFovLH'] = function(_0x461624, _0x3c8cb4, _0x1690c9, _0x1f9d58) { var _0x3be8f2 = new _0xb313f9(); return _0xb313f9['PerspectiveFovLHToRef'](_0x461624, _0x3c8cb4, _0x1690c9, _0x1f9d58, _0x3be8f2), _0x3be8f2; } , _0xb313f9['PerspectiveFovLHToRef'] = function(_0x586182, _0x53da88, _0x324447, _0x1bceaf, _0x2854f8, _0x1f75a6) { void 0x0 === _0x1f75a6 && (_0x1f75a6 = !0x0); var _0x399db4 = _0x324447 , _0x36f997 = _0x1bceaf , _0x3cb8f3 = 0x1 / Math['tan'](0.5 * _0x586182) , _0xfa56dd = _0x1f75a6 ? _0x3cb8f3 / _0x53da88 : _0x3cb8f3 , _0x58817e = _0x1f75a6 ? _0x3cb8f3 : _0x3cb8f3 * _0x53da88 , _0x4d6e1f = (_0x36f997 + _0x399db4) / (_0x36f997 - _0x399db4) , _0x59267c = -0x2 * _0x36f997 * _0x399db4 / (_0x36f997 - _0x399db4); _0xb313f9['FromValuesToRef'](_0xfa56dd, 0x0, 0x0, 0x0, 0x0, _0x58817e, 0x0, 0x0, 0x0, 0x0, _0x4d6e1f, 0x1, 0x0, 0x0, _0x59267c, 0x0, _0x2854f8), _0x2854f8['_updateIdentityStatus'](!0x1); } , _0xb313f9['PerspectiveFovRH'] = function(_0x476948, _0x2d6e58, _0x1318ea, _0x18b625) { var _0x449c9a = new _0xb313f9(); return _0xb313f9['PerspectiveFovRHToRef'](_0x476948, _0x2d6e58, _0x1318ea, _0x18b625, _0x449c9a), _0x449c9a; } , _0xb313f9['PerspectiveFovRHToRef'] = function(_0x226a70, _0x3abb77, _0x40634f, _0x3a47c5, _0x3ccd8a, _0x38c4d1) { void 0x0 === _0x38c4d1 && (_0x38c4d1 = !0x0); var _0x527e31 = _0x40634f , _0x4c19ca = _0x3a47c5 , _0x45aad0 = 0x1 / Math['tan'](0.5 * _0x226a70) , _0x1c02cb = _0x38c4d1 ? _0x45aad0 / _0x3abb77 : _0x45aad0 , _0x1d9c36 = _0x38c4d1 ? _0x45aad0 : _0x45aad0 * _0x3abb77 , _0x294880 = -(_0x4c19ca + _0x527e31) / (_0x4c19ca - _0x527e31) , _0x37adcd = -0x2 * _0x4c19ca * _0x527e31 / (_0x4c19ca - _0x527e31); _0xb313f9['FromValuesToRef'](_0x1c02cb, 0x0, 0x0, 0x0, 0x0, _0x1d9c36, 0x0, 0x0, 0x0, 0x0, _0x294880, -0x1, 0x0, 0x0, _0x37adcd, 0x0, _0x3ccd8a), _0x3ccd8a['_updateIdentityStatus'](!0x1); } , _0xb313f9['PerspectiveFovWebVRToRef'] = function(_0x3a926e, _0x2cf05c, _0xf1f6ef, _0x91862b, _0x4e4071) { void 0x0 === _0x4e4071 && (_0x4e4071 = !0x1); var _0x22859c = _0x4e4071 ? -0x1 : 0x1 , _0x30dc74 = Math['tan'](_0x3a926e['upDegrees'] * Math['PI'] / 0xb4) , _0x5f233e = Math['tan'](_0x3a926e['downDegrees'] * Math['PI'] / 0xb4) , _0x27da41 = Math['tan'](_0x3a926e['leftDegrees'] * Math['PI'] / 0xb4) , _0x500d74 = Math['tan'](_0x3a926e['rightDegrees'] * Math['PI'] / 0xb4) , _0x5228d4 = 0x2 / (_0x27da41 + _0x500d74) , _0x215719 = 0x2 / (_0x30dc74 + _0x5f233e) , _0x24eb4c = _0x91862b['_m']; _0x24eb4c[0x0] = _0x5228d4, _0x24eb4c[0x1] = _0x24eb4c[0x2] = _0x24eb4c[0x3] = _0x24eb4c[0x4] = 0x0, _0x24eb4c[0x5] = _0x215719, _0x24eb4c[0x6] = _0x24eb4c[0x7] = 0x0, _0x24eb4c[0x8] = (_0x27da41 - _0x500d74) * _0x5228d4 * 0.5, _0x24eb4c[0x9] = -(_0x30dc74 - _0x5f233e) * _0x215719 * 0.5, _0x24eb4c[0xa] = -_0xf1f6ef / (_0x2cf05c - _0xf1f6ef), _0x24eb4c[0xb] = 0x1 * _0x22859c, _0x24eb4c[0xc] = _0x24eb4c[0xd] = _0x24eb4c[0xf] = 0x0, _0x24eb4c[0xe] = -0x2 * _0xf1f6ef * _0x2cf05c / (_0xf1f6ef - _0x2cf05c), _0x91862b['_markAsUpdated'](); } , _0xb313f9['GetFinalMatrix'] = function(_0x5d7678, _0xd18c63, _0x34a5f5, _0x28a430, _0x477117, _0x13f1c5) { var _0x2a28ac = _0x5d7678['width'] , _0x1492dd = _0x5d7678['height'] , _0xe05e3f = _0x5d7678['x'] , _0x13ddcb = _0x5d7678['y'] , _0x284823 = _0xb313f9['FromValues'](_0x2a28ac / 0x2, 0x0, 0x0, 0x0, 0x0, -_0x1492dd / 0x2, 0x0, 0x0, 0x0, 0x0, _0x13f1c5 - _0x477117, 0x0, _0xe05e3f + _0x2a28ac / 0x2, _0x1492dd / 0x2 + _0x13ddcb, _0x477117, 0x1) , _0x355dae = _0x53a116['Matrix'][0x0]; return _0xd18c63['multiplyToRef'](_0x34a5f5, _0x355dae), _0x355dae['multiplyToRef'](_0x28a430, _0x355dae), _0x355dae['multiply'](_0x284823); } , _0xb313f9['GetAsMatrix2x2'] = function(_0x4b4d57) { var _0x2c00f1 = _0x4b4d57['m']; return new Float32Array([_0x2c00f1[0x0], _0x2c00f1[0x1], _0x2c00f1[0x4], _0x2c00f1[0x5]]); } , _0xb313f9['GetAsMatrix3x3'] = function(_0x132d8a) { var _0x200d81 = _0x132d8a['m']; return new Float32Array([_0x200d81[0x0], _0x200d81[0x1], _0x200d81[0x2], _0x200d81[0x4], _0x200d81[0x5], _0x200d81[0x6], _0x200d81[0x8], _0x200d81[0x9], _0x200d81[0xa]]); } , _0xb313f9['Transpose'] = function(_0x56e14e) { var _0x1556ca = new _0xb313f9(); return _0xb313f9['TransposeToRef'](_0x56e14e, _0x1556ca), _0x1556ca; } , _0xb313f9['TransposeToRef'] = function(_0x3a2a83, _0x3cd0a3) { var _0x97b076 = _0x3cd0a3['_m'] , _0x146b3f = _0x3a2a83['m']; _0x97b076[0x0] = _0x146b3f[0x0], _0x97b076[0x1] = _0x146b3f[0x4], _0x97b076[0x2] = _0x146b3f[0x8], _0x97b076[0x3] = _0x146b3f[0xc], _0x97b076[0x4] = _0x146b3f[0x1], _0x97b076[0x5] = _0x146b3f[0x5], _0x97b076[0x6] = _0x146b3f[0x9], _0x97b076[0x7] = _0x146b3f[0xd], _0x97b076[0x8] = _0x146b3f[0x2], _0x97b076[0x9] = _0x146b3f[0x6], _0x97b076[0xa] = _0x146b3f[0xa], _0x97b076[0xb] = _0x146b3f[0xe], _0x97b076[0xc] = _0x146b3f[0x3], _0x97b076[0xd] = _0x146b3f[0x7], _0x97b076[0xe] = _0x146b3f[0xb], _0x97b076[0xf] = _0x146b3f[0xf], _0x3cd0a3['_updateIdentityStatus'](_0x3a2a83['_isIdentity'], _0x3a2a83['_isIdentityDirty']); } , _0xb313f9['Reflection'] = function(_0x5c10a7) { var _0x32f076 = new _0xb313f9(); return _0xb313f9['ReflectionToRef'](_0x5c10a7, _0x32f076), _0x32f076; } , _0xb313f9['ReflectionToRef'] = function(_0x368ed7, _0x2fffcb) { _0x368ed7['normalize'](); var _0x53d79e = _0x368ed7['normal']['x'] , _0x451522 = _0x368ed7['normal']['y'] , _0x195e05 = _0x368ed7['normal']['z'] , _0x396a01 = -0x2 * _0x53d79e , _0xade407 = -0x2 * _0x451522 , _0x2fba0e = -0x2 * _0x195e05; _0xb313f9['FromValuesToRef'](_0x396a01 * _0x53d79e + 0x1, _0xade407 * _0x53d79e, _0x2fba0e * _0x53d79e, 0x0, _0x396a01 * _0x451522, _0xade407 * _0x451522 + 0x1, _0x2fba0e * _0x451522, 0x0, _0x396a01 * _0x195e05, _0xade407 * _0x195e05, _0x2fba0e * _0x195e05 + 0x1, 0x0, _0x396a01 * _0x368ed7['d'], _0xade407 * _0x368ed7['d'], _0x2fba0e * _0x368ed7['d'], 0x1, _0x2fffcb); } , _0xb313f9['FromXYZAxesToRef'] = function(_0x5c9f54, _0x36c707, _0x54fc44, _0xcec883) { _0xb313f9['FromValuesToRef'](_0x5c9f54['x'], _0x5c9f54['y'], _0x5c9f54['z'], 0x0, _0x36c707['x'], _0x36c707['y'], _0x36c707['z'], 0x0, _0x54fc44['x'], _0x54fc44['y'], _0x54fc44['z'], 0x0, 0x0, 0x0, 0x0, 0x1, _0xcec883); } , _0xb313f9['FromQuaternionToRef'] = function(_0x3f89c0, _0x4ea172) { var _0x3df0ea = _0x3f89c0['x'] * _0x3f89c0['x'] , _0x58c931 = _0x3f89c0['y'] * _0x3f89c0['y'] , _0x321528 = _0x3f89c0['z'] * _0x3f89c0['z'] , _0x4487db = _0x3f89c0['x'] * _0x3f89c0['y'] , _0x5e05cb = _0x3f89c0['z'] * _0x3f89c0['w'] , _0x118d1c = _0x3f89c0['z'] * _0x3f89c0['x'] , _0x2e604e = _0x3f89c0['y'] * _0x3f89c0['w'] , _0x520ec0 = _0x3f89c0['y'] * _0x3f89c0['z'] , _0xb6e002 = _0x3f89c0['x'] * _0x3f89c0['w']; _0x4ea172['_m'][0x0] = 0x1 - 0x2 * (_0x58c931 + _0x321528), _0x4ea172['_m'][0x1] = 0x2 * (_0x4487db + _0x5e05cb), _0x4ea172['_m'][0x2] = 0x2 * (_0x118d1c - _0x2e604e), _0x4ea172['_m'][0x3] = 0x0, _0x4ea172['_m'][0x4] = 0x2 * (_0x4487db - _0x5e05cb), _0x4ea172['_m'][0x5] = 0x1 - 0x2 * (_0x321528 + _0x3df0ea), _0x4ea172['_m'][0x6] = 0x2 * (_0x520ec0 + _0xb6e002), _0x4ea172['_m'][0x7] = 0x0, _0x4ea172['_m'][0x8] = 0x2 * (_0x118d1c + _0x2e604e), _0x4ea172['_m'][0x9] = 0x2 * (_0x520ec0 - _0xb6e002), _0x4ea172['_m'][0xa] = 0x1 - 0x2 * (_0x58c931 + _0x3df0ea), _0x4ea172['_m'][0xb] = 0x0, _0x4ea172['_m'][0xc] = 0x0, _0x4ea172['_m'][0xd] = 0x0, _0x4ea172['_m'][0xe] = 0x0, _0x4ea172['_m'][0xf] = 0x1, _0x4ea172['_markAsUpdated'](); } , _0xb313f9['_updateFlagSeed'] = 0x0, _0xb313f9['_identityReadOnly'] = _0xb313f9['Identity'](), _0xb313f9; }(), _0x289f15 = function() { function _0x456689(_0x11b867, _0x1cd9db, _0x12fcdd, _0x108a35) { this['normal'] = new _0x3fbe20(_0x11b867,_0x1cd9db,_0x12fcdd), this['d'] = _0x108a35; } return _0x456689['prototype']['asArray'] = function() { return [this['normal']['x'], this['normal']['y'], this['normal']['z'], this['d']]; } , _0x456689['prototype']['clone'] = function() { return new _0x456689(this['normal']['x'],this['normal']['y'],this['normal']['z'],this['d']); } , _0x456689['prototype']['getClassName'] = function() { return 'Plane'; } , _0x456689['prototype']['getHashCode'] = function() { var _0x1c2b34 = this['normal']['getHashCode'](); return _0x1c2b34 = 0x18d * _0x1c2b34 ^ (this['d'] || 0x0); } , _0x456689['prototype']['normalize'] = function() { var _0xbe0f4e = Math['sqrt'](this['normal']['x'] * this['normal']['x'] + this['normal']['y'] * this['normal']['y'] + this['normal']['z'] * this['normal']['z']) , _0x363208 = 0x0; return 0x0 !== _0xbe0f4e && (_0x363208 = 0x1 / _0xbe0f4e), this['normal']['x'] *= _0x363208, this['normal']['y'] *= _0x363208, this['normal']['z'] *= _0x363208, this['d'] *= _0x363208, this; } , _0x456689['prototype']['transform'] = function(_0x5628a7) { var _0x214218 = _0x53a116['Matrix'][0x0]; _0x5e57bc['TransposeToRef'](_0x5628a7, _0x214218); var _0x5622ce = _0x214218['m'] , _0x13b6cf = this['normal']['x'] , _0x23fdd4 = this['normal']['y'] , _0x4afd8f = this['normal']['z'] , _0x50743b = this['d']; return new _0x456689(_0x13b6cf * _0x5622ce[0x0] + _0x23fdd4 * _0x5622ce[0x1] + _0x4afd8f * _0x5622ce[0x2] + _0x50743b * _0x5622ce[0x3],_0x13b6cf * _0x5622ce[0x4] + _0x23fdd4 * _0x5622ce[0x5] + _0x4afd8f * _0x5622ce[0x6] + _0x50743b * _0x5622ce[0x7],_0x13b6cf * _0x5622ce[0x8] + _0x23fdd4 * _0x5622ce[0x9] + _0x4afd8f * _0x5622ce[0xa] + _0x50743b * _0x5622ce[0xb],_0x13b6cf * _0x5622ce[0xc] + _0x23fdd4 * _0x5622ce[0xd] + _0x4afd8f * _0x5622ce[0xe] + _0x50743b * _0x5622ce[0xf]); } , _0x456689['prototype']['dotCoordinate'] = function(_0x1c4cdb) { return this['normal']['x'] * _0x1c4cdb['x'] + this['normal']['y'] * _0x1c4cdb['y'] + this['normal']['z'] * _0x1c4cdb['z'] + this['d']; } , _0x456689['prototype']['copyFromPoints'] = function(_0x3131d5, _0x485fcc, _0x179272) { var _0x45a747, _0x16cf9c = _0x485fcc['x'] - _0x3131d5['x'], _0x12dc68 = _0x485fcc['y'] - _0x3131d5['y'], _0x3213bb = _0x485fcc['z'] - _0x3131d5['z'], _0x33929c = _0x179272['x'] - _0x3131d5['x'], _0x4bb030 = _0x179272['y'] - _0x3131d5['y'], _0x2e406b = _0x179272['z'] - _0x3131d5['z'], _0x33cf92 = _0x12dc68 * _0x2e406b - _0x3213bb * _0x4bb030, _0x1a13e3 = _0x3213bb * _0x33929c - _0x16cf9c * _0x2e406b, _0x48c071 = _0x16cf9c * _0x4bb030 - _0x12dc68 * _0x33929c, _0x1cac68 = Math['sqrt'](_0x33cf92 * _0x33cf92 + _0x1a13e3 * _0x1a13e3 + _0x48c071 * _0x48c071); return _0x45a747 = 0x0 !== _0x1cac68 ? 0x1 / _0x1cac68 : 0x0, this['normal']['x'] = _0x33cf92 * _0x45a747, this['normal']['y'] = _0x1a13e3 * _0x45a747, this['normal']['z'] = _0x48c071 * _0x45a747, this['d'] = -(this['normal']['x'] * _0x3131d5['x'] + this['normal']['y'] * _0x3131d5['y'] + this['normal']['z'] * _0x3131d5['z']), this; } , _0x456689['prototype']['isFrontFacingTo'] = function(_0x19bd42, _0x29b11f) { return _0x3fbe20['Dot'](this['normal'], _0x19bd42) <= _0x29b11f; } , _0x456689['prototype']['signedDistanceTo'] = function(_0x501fd5) { return _0x3fbe20['Dot'](_0x501fd5, this['normal']) + this['d']; } , _0x456689['FromArray'] = function(_0x44c527) { return new _0x456689(_0x44c527[0x0],_0x44c527[0x1],_0x44c527[0x2],_0x44c527[0x3]); } , _0x456689['FromPoints'] = function(_0x1bbe96, _0x1d048c, _0x883699) { var _0x4e5de8 = new _0x456689(0x0,0x0,0x0,0x0); return _0x4e5de8['copyFromPoints'](_0x1bbe96, _0x1d048c, _0x883699), _0x4e5de8; } , _0x456689['FromPositionAndNormal'] = function(_0x47dc3b, _0x41f00d) { var _0x481ffe = new _0x456689(0x0,0x0,0x0,0x0); return _0x41f00d['normalize'](), _0x481ffe['normal'] = _0x41f00d, _0x481ffe['d'] = -(_0x41f00d['x'] * _0x47dc3b['x'] + _0x41f00d['y'] * _0x47dc3b['y'] + _0x41f00d['z'] * _0x47dc3b['z']), _0x481ffe; } , _0x456689['SignedDistanceToPlaneFromPositionAndNormal'] = function(_0x13c656, _0x3f75dd, _0x4aee49) { var _0x1e5e8b = -(_0x3f75dd['x'] * _0x13c656['x'] + _0x3f75dd['y'] * _0x13c656['y'] + _0x3f75dd['z'] * _0x13c656['z']); return _0x3fbe20['Dot'](_0x4aee49, _0x3f75dd) + _0x1e5e8b; } , _0x456689; }(), _0x34efa7 = function() { function _0x383f20(_0x5bdff1, _0x25138a, _0x43b075, _0x53d302) { this['x'] = _0x5bdff1, this['y'] = _0x25138a, this['width'] = _0x43b075, this['height'] = _0x53d302; } return _0x383f20['prototype']['toGlobal'] = function(_0x497b11, _0x53a5dd) { return new _0x383f20(this['x'] * _0x497b11,this['y'] * _0x53a5dd,this['width'] * _0x497b11,this['height'] * _0x53a5dd); } , _0x383f20['prototype']['toGlobalToRef'] = function(_0x39a80c, _0x351df6, _0x40ce39) { return _0x40ce39['x'] = this['x'] * _0x39a80c, _0x40ce39['y'] = this['y'] * _0x351df6, _0x40ce39['width'] = this['width'] * _0x39a80c, _0x40ce39['height'] = this['height'] * _0x351df6, this; } , _0x383f20['prototype']['clone'] = function() { return new _0x383f20(this['x'],this['y'],this['width'],this['height']); } , _0x383f20; }(), _0x4a31f7 = function() { function _0x1b23ff() {} return _0x1b23ff['GetPlanes'] = function(_0x21bd1e) { for (var _0x55ff31 = [], _0xcef724 = 0x0; _0xcef724 < 0x6; _0xcef724++) _0x55ff31['push'](new _0x289f15(0x0,0x0,0x0,0x0)); return _0x1b23ff['GetPlanesToRef'](_0x21bd1e, _0x55ff31), _0x55ff31; } , _0x1b23ff['GetNearPlaneToRef'] = function(_0x23ec6e, _0x59722d) { var _0x181950 = _0x23ec6e['m']; _0x59722d['normal']['x'] = _0x181950[0x3] + _0x181950[0x2], _0x59722d['normal']['y'] = _0x181950[0x7] + _0x181950[0x6], _0x59722d['normal']['z'] = _0x181950[0xb] + _0x181950[0xa], _0x59722d['d'] = _0x181950[0xf] + _0x181950[0xe], _0x59722d['normalize'](); } , _0x1b23ff['GetFarPlaneToRef'] = function(_0x3d4980, _0x9272f4) { var _0x46695c = _0x3d4980['m']; _0x9272f4['normal']['x'] = _0x46695c[0x3] - _0x46695c[0x2], _0x9272f4['normal']['y'] = _0x46695c[0x7] - _0x46695c[0x6], _0x9272f4['normal']['z'] = _0x46695c[0xb] - _0x46695c[0xa], _0x9272f4['d'] = _0x46695c[0xf] - _0x46695c[0xe], _0x9272f4['normalize'](); } , _0x1b23ff['GetLeftPlaneToRef'] = function(_0x1ed586, _0x50ee26) { var _0x115310 = _0x1ed586['m']; _0x50ee26['normal']['x'] = _0x115310[0x3] + _0x115310[0x0], _0x50ee26['normal']['y'] = _0x115310[0x7] + _0x115310[0x4], _0x50ee26['normal']['z'] = _0x115310[0xb] + _0x115310[0x8], _0x50ee26['d'] = _0x115310[0xf] + _0x115310[0xc], _0x50ee26['normalize'](); } , _0x1b23ff['GetRightPlaneToRef'] = function(_0x323764, _0x5703ec) { var _0x232f71 = _0x323764['m']; _0x5703ec['normal']['x'] = _0x232f71[0x3] - _0x232f71[0x0], _0x5703ec['normal']['y'] = _0x232f71[0x7] - _0x232f71[0x4], _0x5703ec['normal']['z'] = _0x232f71[0xb] - _0x232f71[0x8], _0x5703ec['d'] = _0x232f71[0xf] - _0x232f71[0xc], _0x5703ec['normalize'](); } , _0x1b23ff['GetTopPlaneToRef'] = function(_0x128c81, _0x3afccd) { var _0x1b2405 = _0x128c81['m']; _0x3afccd['normal']['x'] = _0x1b2405[0x3] - _0x1b2405[0x1], _0x3afccd['normal']['y'] = _0x1b2405[0x7] - _0x1b2405[0x5], _0x3afccd['normal']['z'] = _0x1b2405[0xb] - _0x1b2405[0x9], _0x3afccd['d'] = _0x1b2405[0xf] - _0x1b2405[0xd], _0x3afccd['normalize'](); } , _0x1b23ff['GetBottomPlaneToRef'] = function(_0x58519c, _0x5f2c1e) { var _0xddc4db = _0x58519c['m']; _0x5f2c1e['normal']['x'] = _0xddc4db[0x3] + _0xddc4db[0x1], _0x5f2c1e['normal']['y'] = _0xddc4db[0x7] + _0xddc4db[0x5], _0x5f2c1e['normal']['z'] = _0xddc4db[0xb] + _0xddc4db[0x9], _0x5f2c1e['d'] = _0xddc4db[0xf] + _0xddc4db[0xd], _0x5f2c1e['normalize'](); } , _0x1b23ff['GetPlanesToRef'] = function(_0x976a74, _0x34dc19) { _0x1b23ff['GetNearPlaneToRef'](_0x976a74, _0x34dc19[0x0]), _0x1b23ff['GetFarPlaneToRef'](_0x976a74, _0x34dc19[0x1]), _0x1b23ff['GetLeftPlaneToRef'](_0x976a74, _0x34dc19[0x2]), _0x1b23ff['GetRightPlaneToRef'](_0x976a74, _0x34dc19[0x3]), _0x1b23ff['GetTopPlaneToRef'](_0x976a74, _0x34dc19[0x4]), _0x1b23ff['GetBottomPlaneToRef'](_0x976a74, _0x34dc19[0x5]); } , _0x1b23ff; }(); !function(_0x5b5472) { _0x5b5472[_0x5b5472['LOCAL'] = 0x0] = 'LOCAL', _0x5b5472[_0x5b5472['WORLD'] = 0x1] = 'WORLD', _0x5b5472[_0x5b5472['BONE'] = 0x2] = 'BONE'; }(_0x51c4bf || (_0x51c4bf = {})); var _0x388ee5, _0x5cc191 = function() { function _0x5a4d97() {} return _0x5a4d97['X'] = new _0x3fbe20(0x1,0x0,0x0), _0x5a4d97['Y'] = new _0x3fbe20(0x0,0x1,0x0), _0x5a4d97['Z'] = new _0x3fbe20(0x0,0x0,0x1), _0x5a4d97; }(), _0x36e0cc = function() { function _0x2ad63d() {} return _0x2ad63d['Interpolate'] = function(_0x4979ff, _0x17170c, _0x2b7282, _0x62a80e, _0x38dbb0) { for (var _0x2cbaef = 0x1 - 0x3 * _0x62a80e + 0x3 * _0x17170c, _0x998cc8 = 0x3 * _0x62a80e - 0x6 * _0x17170c, _0x5dfabf = 0x3 * _0x17170c, _0x462f44 = _0x4979ff, _0x1ca694 = 0x0; _0x1ca694 < 0x5; _0x1ca694++) { var _0x44a167 = _0x462f44 * _0x462f44; _0x462f44 -= (_0x2cbaef * (_0x44a167 * _0x462f44) + _0x998cc8 * _0x44a167 + _0x5dfabf * _0x462f44 - _0x4979ff) * (0x1 / (0x3 * _0x2cbaef * _0x44a167 + 0x2 * _0x998cc8 * _0x462f44 + _0x5dfabf)), _0x462f44 = Math['min'](0x1, Math['max'](0x0, _0x462f44)); } return 0x3 * Math['pow'](0x1 - _0x462f44, 0x2) * _0x462f44 * _0x2b7282 + 0x3 * (0x1 - _0x462f44) * Math['pow'](_0x462f44, 0x2) * _0x38dbb0 + Math['pow'](_0x462f44, 0x3); } , _0x2ad63d; }(); !function(_0x442152) { _0x442152[_0x442152['CW'] = 0x0] = 'CW', _0x442152[_0x442152['CCW'] = 0x1] = 'CCW'; }(_0x388ee5 || (_0x388ee5 = {})); var _0x21c421 = function() { function _0x5d6929(_0x3a33b7) { this['_radians'] = _0x3a33b7, this['_radians'] < 0x0 && (this['_radians'] += 0x2 * Math['PI']); } return _0x5d6929['prototype']['degrees'] = function() { return 0xb4 * this['_radians'] / Math['PI']; } , _0x5d6929['prototype']['radians'] = function() { return this['_radians']; } , _0x5d6929['BetweenTwoPoints'] = function(_0x16a409, _0x2c08b9) { var _0x5300a2 = _0x2c08b9['subtract'](_0x16a409); return new _0x5d6929(Math['atan2'](_0x5300a2['y'], _0x5300a2['x'])); } , _0x5d6929['FromRadians'] = function(_0x47a3a3) { return new _0x5d6929(_0x47a3a3); } , _0x5d6929['FromDegrees'] = function(_0x2c4c85) { return new _0x5d6929(_0x2c4c85 * Math['PI'] / 0xb4); } , _0x5d6929; }() , _0x2333b1 = function() { return function(_0x57d2e1, _0x3d6fc0, _0x3344d6) { this['startPoint'] = _0x57d2e1, this['midPoint'] = _0x3d6fc0, this['endPoint'] = _0x3344d6; var _0x172d19 = Math['pow'](_0x3d6fc0['x'], 0x2) + Math['pow'](_0x3d6fc0['y'], 0x2) , _0x1e27a7 = (Math['pow'](_0x57d2e1['x'], 0x2) + Math['pow'](_0x57d2e1['y'], 0x2) - _0x172d19) / 0x2 , _0x2e279a = (_0x172d19 - Math['pow'](_0x3344d6['x'], 0x2) - Math['pow'](_0x3344d6['y'], 0x2)) / 0x2 , _0x20e54e = (_0x57d2e1['x'] - _0x3d6fc0['x']) * (_0x3d6fc0['y'] - _0x3344d6['y']) - (_0x3d6fc0['x'] - _0x3344d6['x']) * (_0x57d2e1['y'] - _0x3d6fc0['y']); this['centerPoint'] = new _0x461b0a((_0x1e27a7 * (_0x3d6fc0['y'] - _0x3344d6['y']) - _0x2e279a * (_0x57d2e1['y'] - _0x3d6fc0['y'])) / _0x20e54e,((_0x57d2e1['x'] - _0x3d6fc0['x']) * _0x2e279a - (_0x3d6fc0['x'] - _0x3344d6['x']) * _0x1e27a7) / _0x20e54e), this['radius'] = this['centerPoint']['subtract'](this['startPoint'])['length'](), this['startAngle'] = _0x21c421['BetweenTwoPoints'](this['centerPoint'], this['startPoint']); var _0x5cb5e3 = this['startAngle']['degrees']() , _0x303904 = _0x21c421['BetweenTwoPoints'](this['centerPoint'], this['midPoint'])['degrees']() , _0x134da1 = _0x21c421['BetweenTwoPoints'](this['centerPoint'], this['endPoint'])['degrees'](); _0x303904 - _0x5cb5e3 > 0xb4 && (_0x303904 -= 0x168), _0x303904 - _0x5cb5e3 < -0xb4 && (_0x303904 += 0x168), _0x134da1 - _0x303904 > 0xb4 && (_0x134da1 -= 0x168), _0x134da1 - _0x303904 < -0xb4 && (_0x134da1 += 0x168), this['orientation'] = _0x303904 - _0x5cb5e3 < 0x0 ? _0x388ee5['CW'] : _0x388ee5['CCW'], this['angle'] = _0x21c421['FromDegrees'](this['orientation'] === _0x388ee5['CW'] ? _0x5cb5e3 - _0x134da1 : _0x134da1 - _0x5cb5e3); } ; }() , _0x23ab56 = function() { function _0x35e658(_0x1a5984, _0x57d161) { this['_points'] = new Array(), this['_length'] = 0x0, this['closed'] = !0x1, this['_points']['push'](new _0x461b0a(_0x1a5984,_0x57d161)); } return _0x35e658['prototype']['addLineTo'] = function(_0x730fad, _0x46b235) { if (this['closed']) return this; var _0x2e3e16 = new _0x461b0a(_0x730fad,_0x46b235) , _0x4c93df = this['_points'][this['_points']['length'] - 0x1]; return this['_points']['push'](_0x2e3e16), this['_length'] += _0x2e3e16['subtract'](_0x4c93df)['length'](), this; } , _0x35e658['prototype']['addArcTo'] = function(_0x1fbdce, _0x6e7690, _0x29c810, _0x285ee5, _0x9720ed) { if (void 0x0 === _0x9720ed && (_0x9720ed = 0x24), this['closed']) return this; var _0x5b9664 = this['_points'][this['_points']['length'] - 0x1] , _0x3fdc2b = new _0x461b0a(_0x1fbdce,_0x6e7690) , _0x20738d = new _0x461b0a(_0x29c810,_0x285ee5) , _0xa07cb8 = new _0x2333b1(_0x5b9664,_0x3fdc2b,_0x20738d) , _0xee164c = _0xa07cb8['angle']['radians']() / _0x9720ed; _0xa07cb8['orientation'] === _0x388ee5['CW'] && (_0xee164c *= -0x1); for (var _0x48ed9a = _0xa07cb8['startAngle']['radians']() + _0xee164c, _0x574663 = 0x0; _0x574663 < _0x9720ed; _0x574663++) { var _0x2e6f63 = Math['cos'](_0x48ed9a) * _0xa07cb8['radius'] + _0xa07cb8['centerPoint']['x'] , _0x23add7 = Math['sin'](_0x48ed9a) * _0xa07cb8['radius'] + _0xa07cb8['centerPoint']['y']; this['addLineTo'](_0x2e6f63, _0x23add7), _0x48ed9a += _0xee164c; } return this; } , _0x35e658['prototype']['close'] = function() { return this['closed'] = !0x0, this; } , _0x35e658['prototype']['length'] = function() { var _0x532d76 = this['_length']; if (!this['closed']) { var _0x88a043 = this['_points'][this['_points']['length'] - 0x1]; _0x532d76 += this['_points'][0x0]['subtract'](_0x88a043)['length'](); } return _0x532d76; } , _0x35e658['prototype']['getPoints'] = function() { return this['_points']; } , _0x35e658['prototype']['getPointAtLengthPosition'] = function(_0x533c6c) { if (_0x533c6c < 0x0 || _0x533c6c > 0x1) return _0x461b0a['Zero'](); for (var _0x5aa48e = _0x533c6c * this['length'](), _0xeeaad1 = 0x0, _0xb1105b = 0x0; _0xb1105b < this['_points']['length']; _0xb1105b++) { var _0x235b69 = (_0xb1105b + 0x1) % this['_points']['length'] , _0x416a65 = this['_points'][_0xb1105b] , _0x3751d7 = this['_points'][_0x235b69]['subtract'](_0x416a65) , _0x4217ca = _0x3751d7['length']() + _0xeeaad1; if (_0x5aa48e >= _0xeeaad1 && _0x5aa48e <= _0x4217ca) { var _0x31a562 = _0x3751d7['normalize']() , _0x1092b8 = _0x5aa48e - _0xeeaad1; return new _0x461b0a(_0x416a65['x'] + _0x31a562['x'] * _0x1092b8,_0x416a65['y'] + _0x31a562['y'] * _0x1092b8); } _0xeeaad1 = _0x4217ca; } return _0x461b0a['Zero'](); } , _0x35e658['StartingAt'] = function(_0x113f70, _0x21a12b) { return new _0x35e658(_0x113f70,_0x21a12b); } , _0x35e658; }() , _0x1679c4 = function() { function _0x3a2e58(_0x50be3d, _0x1198c6, _0x5e5f21) { void 0x0 === _0x1198c6 && (_0x1198c6 = null), this['path'] = _0x50be3d, this['_curve'] = new Array(), this['_distances'] = new Array(), this['_tangents'] = new Array(), this['_normals'] = new Array(), this['_binormals'] = new Array(); for (var _0x3524ad = 0x0; _0x3524ad < _0x50be3d['length']; _0x3524ad++) this['_curve'][_0x3524ad] = _0x50be3d[_0x3524ad]['clone'](); this['_raw'] = _0x5e5f21 || !0x1, this['_compute'](_0x1198c6); } return _0x3a2e58['prototype']['getCurve'] = function() { return this['_curve']; } , _0x3a2e58['prototype']['getTangents'] = function() { return this['_tangents']; } , _0x3a2e58['prototype']['getNormals'] = function() { return this['_normals']; } , _0x3a2e58['prototype']['getBinormals'] = function() { return this['_binormals']; } , _0x3a2e58['prototype']['getDistances'] = function() { return this['_distances']; } , _0x3a2e58['prototype']['update'] = function(_0x5a95db, _0x1257d6) { void 0x0 === _0x1257d6 && (_0x1257d6 = null); for (var _0x4c0581 = 0x0; _0x4c0581 < _0x5a95db['length']; _0x4c0581++) this['_curve'][_0x4c0581]['x'] = _0x5a95db[_0x4c0581]['x'], this['_curve'][_0x4c0581]['y'] = _0x5a95db[_0x4c0581]['y'], this['_curve'][_0x4c0581]['z'] = _0x5a95db[_0x4c0581]['z']; return this['_compute'](_0x1257d6), this; } , _0x3a2e58['prototype']['_compute'] = function(_0x2797e6) { var _0x37c6d8 = this['_curve']['length']; this['_tangents'][0x0] = this['_getFirstNonNullVector'](0x0), this['_raw'] || this['_tangents'][0x0]['normalize'](), this['_tangents'][_0x37c6d8 - 0x1] = this['_curve'][_0x37c6d8 - 0x1]['subtract'](this['_curve'][_0x37c6d8 - 0x2]), this['_raw'] || this['_tangents'][_0x37c6d8 - 0x1]['normalize'](); var _0x39dd16, _0x5d744c, _0x5c5b4b, _0x3cd036, _0x340dc8 = this['_tangents'][0x0], _0x1a6b54 = this['_normalVector'](_0x340dc8, _0x2797e6); this['_normals'][0x0] = _0x1a6b54, this['_raw'] || this['_normals'][0x0]['normalize'](), this['_binormals'][0x0] = _0x3fbe20['Cross'](_0x340dc8, this['_normals'][0x0]), this['_raw'] || this['_binormals'][0x0]['normalize'](), this['_distances'][0x0] = 0x0; for (var _0x2907aa = 0x1; _0x2907aa < _0x37c6d8; _0x2907aa++) _0x39dd16 = this['_getLastNonNullVector'](_0x2907aa), _0x2907aa < _0x37c6d8 - 0x1 && (_0x5d744c = this['_getFirstNonNullVector'](_0x2907aa), this['_tangents'][_0x2907aa] = _0x39dd16['add'](_0x5d744c), this['_tangents'][_0x2907aa]['normalize']()), this['_distances'][_0x2907aa] = this['_distances'][_0x2907aa - 0x1] + _0x39dd16['length'](), _0x5c5b4b = this['_tangents'][_0x2907aa], _0x3cd036 = this['_binormals'][_0x2907aa - 0x1], this['_normals'][_0x2907aa] = _0x3fbe20['Cross'](_0x3cd036, _0x5c5b4b), this['_raw'] || this['_normals'][_0x2907aa]['normalize'](), this['_binormals'][_0x2907aa] = _0x3fbe20['Cross'](_0x5c5b4b, this['_normals'][_0x2907aa]), this['_raw'] || this['_binormals'][_0x2907aa]['normalize'](); } , _0x3a2e58['prototype']['_getFirstNonNullVector'] = function(_0x970b79) { for (var _0x2b9627 = 0x1, _0xe96e54 = this['_curve'][_0x970b79 + _0x2b9627]['subtract'](this['_curve'][_0x970b79]); 0x0 === _0xe96e54['length']() && _0x970b79 + _0x2b9627 + 0x1 < this['_curve']['length']; ) _0x2b9627++, _0xe96e54 = this['_curve'][_0x970b79 + _0x2b9627]['subtract'](this['_curve'][_0x970b79]); return _0xe96e54; } , _0x3a2e58['prototype']['_getLastNonNullVector'] = function(_0x52e743) { for (var _0x2d7645 = 0x1, _0x36656e = this['_curve'][_0x52e743]['subtract'](this['_curve'][_0x52e743 - _0x2d7645]); 0x0 === _0x36656e['length']() && _0x52e743 > _0x2d7645 + 0x1; ) _0x2d7645++, _0x36656e = this['_curve'][_0x52e743]['subtract'](this['_curve'][_0x52e743 - _0x2d7645]); return _0x36656e; } , _0x3a2e58['prototype']['_normalVector'] = function(_0x4471a8, _0x574dfb) { var _0x2d7e2e, _0x30dbf1, _0x3f72ee = _0x4471a8['length'](); (0x0 === _0x3f72ee && (_0x3f72ee = 0x1), null == _0x574dfb) ? (_0x30dbf1 = _0x15f609['a']['WithinEpsilon'](Math['abs'](_0x4471a8['y']) / _0x3f72ee, 0x1, _0x3e57e9) ? _0x15f609['a']['WithinEpsilon'](Math['abs'](_0x4471a8['x']) / _0x3f72ee, 0x1, _0x3e57e9) ? _0x15f609['a']['WithinEpsilon'](Math['abs'](_0x4471a8['z']) / _0x3f72ee, 0x1, _0x3e57e9) ? _0x3fbe20['Zero']() : new _0x3fbe20(0x0,0x0,0x1) : new _0x3fbe20(0x1,0x0,0x0) : new _0x3fbe20(0x0,-0x1,0x0), _0x2d7e2e = _0x3fbe20['Cross'](_0x4471a8, _0x30dbf1)) : (_0x2d7e2e = _0x3fbe20['Cross'](_0x4471a8, _0x574dfb), _0x3fbe20['CrossToRef'](_0x2d7e2e, _0x4471a8, _0x2d7e2e)); return _0x2d7e2e['normalize'](), _0x2d7e2e; } , _0x3a2e58; }() , _0x4c8767 = function() { function _0x489112(_0x189423) { this['_length'] = 0x0, this['_points'] = _0x189423, this['_length'] = this['_computeLength'](_0x189423); } return _0x489112['CreateQuadraticBezier'] = function(_0x1a7509, _0x313b4b, _0x2b7f33, _0x5ec5b4) { _0x5ec5b4 = _0x5ec5b4 > 0x2 ? _0x5ec5b4 : 0x3; for (var _0x4f0bea = new Array(), _0x30ab70 = function(_0xff9a69, _0x55a28f, _0x4c5d51, _0x3fd489) { return (0x1 - _0xff9a69) * (0x1 - _0xff9a69) * _0x55a28f + 0x2 * _0xff9a69 * (0x1 - _0xff9a69) * _0x4c5d51 + _0xff9a69 * _0xff9a69 * _0x3fd489; }, _0x34b41 = 0x0; _0x34b41 <= _0x5ec5b4; _0x34b41++) _0x4f0bea['push'](new _0x3fbe20(_0x30ab70(_0x34b41 / _0x5ec5b4, _0x1a7509['x'], _0x313b4b['x'], _0x2b7f33['x']),_0x30ab70(_0x34b41 / _0x5ec5b4, _0x1a7509['y'], _0x313b4b['y'], _0x2b7f33['y']),_0x30ab70(_0x34b41 / _0x5ec5b4, _0x1a7509['z'], _0x313b4b['z'], _0x2b7f33['z']))); return new _0x489112(_0x4f0bea); } , _0x489112['CreateCubicBezier'] = function(_0x198092, _0x568f29, _0x26cc36, _0x3d08ad, _0x348dd2) { _0x348dd2 = _0x348dd2 > 0x3 ? _0x348dd2 : 0x4; for (var _0x4c1fb2 = new Array(), _0x37181e = function(_0x4b1f43, _0x303c96, _0x3baf91, _0x2a220e, _0x329d90) { return (0x1 - _0x4b1f43) * (0x1 - _0x4b1f43) * (0x1 - _0x4b1f43) * _0x303c96 + 0x3 * _0x4b1f43 * (0x1 - _0x4b1f43) * (0x1 - _0x4b1f43) * _0x3baf91 + 0x3 * _0x4b1f43 * _0x4b1f43 * (0x1 - _0x4b1f43) * _0x2a220e + _0x4b1f43 * _0x4b1f43 * _0x4b1f43 * _0x329d90; }, _0x450e1f = 0x0; _0x450e1f <= _0x348dd2; _0x450e1f++) _0x4c1fb2['push'](new _0x3fbe20(_0x37181e(_0x450e1f / _0x348dd2, _0x198092['x'], _0x568f29['x'], _0x26cc36['x'], _0x3d08ad['x']),_0x37181e(_0x450e1f / _0x348dd2, _0x198092['y'], _0x568f29['y'], _0x26cc36['y'], _0x3d08ad['y']),_0x37181e(_0x450e1f / _0x348dd2, _0x198092['z'], _0x568f29['z'], _0x26cc36['z'], _0x3d08ad['z']))); return new _0x489112(_0x4c1fb2); } , _0x489112['CreateHermiteSpline'] = function(_0xf1dc62, _0x2b4e07, _0x1e226c, _0x19338b, _0xe0a411) { for (var _0x56a377 = new Array(), _0x56825a = 0x1 / _0xe0a411, _0x55af47 = 0x0; _0x55af47 <= _0xe0a411; _0x55af47++) _0x56a377['push'](_0x3fbe20['Hermite'](_0xf1dc62, _0x2b4e07, _0x1e226c, _0x19338b, _0x55af47 * _0x56825a)); return new _0x489112(_0x56a377); } , _0x489112['CreateCatmullRomSpline'] = function(_0x4408e8, _0x2ece40, _0xbc879) { var _0x4b7a52 = new Array() , _0x22e9b9 = 0x1 / _0x2ece40 , _0x3ca45f = 0x0; if (_0xbc879) { for (var _0x3bb68d = _0x4408e8['length'], _0x30b031 = 0x0; _0x30b031 < _0x3bb68d; _0x30b031++) { _0x3ca45f = 0x0; for (var _0x559b3c = 0x0; _0x559b3c < _0x2ece40; _0x559b3c++) _0x4b7a52['push'](_0x3fbe20['CatmullRom'](_0x4408e8[_0x30b031 % _0x3bb68d], _0x4408e8[(_0x30b031 + 0x1) % _0x3bb68d], _0x4408e8[(_0x30b031 + 0x2) % _0x3bb68d], _0x4408e8[(_0x30b031 + 0x3) % _0x3bb68d], _0x3ca45f)), _0x3ca45f += _0x22e9b9; } _0x4b7a52['push'](_0x4b7a52[0x0]); } else { var _0x3d694b = new Array(); _0x3d694b['push'](_0x4408e8[0x0]['clone']()), Array['prototype']['push']['apply'](_0x3d694b, _0x4408e8), _0x3d694b['push'](_0x4408e8[_0x4408e8['length'] - 0x1]['clone']()); for (_0x30b031 = 0x0; _0x30b031 < _0x3d694b['length'] - 0x3; _0x30b031++) { _0x3ca45f = 0x0; for (_0x559b3c = 0x0; _0x559b3c < _0x2ece40; _0x559b3c++) _0x4b7a52['push'](_0x3fbe20['CatmullRom'](_0x3d694b[_0x30b031], _0x3d694b[_0x30b031 + 0x1], _0x3d694b[_0x30b031 + 0x2], _0x3d694b[_0x30b031 + 0x3], _0x3ca45f)), _0x3ca45f += _0x22e9b9; } _0x30b031--, _0x4b7a52['push'](_0x3fbe20['CatmullRom'](_0x3d694b[_0x30b031], _0x3d694b[_0x30b031 + 0x1], _0x3d694b[_0x30b031 + 0x2], _0x3d694b[_0x30b031 + 0x3], _0x3ca45f)); } return new _0x489112(_0x4b7a52); } , _0x489112['prototype']['getPoints'] = function() { return this['_points']; } , _0x489112['prototype']['length'] = function() { return this['_length']; } , _0x489112['prototype']['continue'] = function(_0x2585fa) { for (var _0x4561cd = this['_points'][this['_points']['length'] - 0x1], _0x5c2558 = this['_points']['slice'](), _0x79e852 = _0x2585fa['getPoints'](), _0x58ac7a = 0x1; _0x58ac7a < _0x79e852['length']; _0x58ac7a++) _0x5c2558['push'](_0x79e852[_0x58ac7a]['subtract'](_0x79e852[0x0])['add'](_0x4561cd)); return new _0x489112(_0x5c2558); } , _0x489112['prototype']['_computeLength'] = function(_0x30f1a1) { for (var _0x121703 = 0x0, _0x4c026d = 0x1; _0x4c026d < _0x30f1a1['length']; _0x4c026d++) _0x121703 += _0x30f1a1[_0x4c026d]['subtract'](_0x30f1a1[_0x4c026d - 0x1])['length'](); return _0x121703; } , _0x489112; }() , _0x251d0b = function() { function _0x380c35(_0x148726, _0x54b55a) { void 0x0 === _0x148726 && (_0x148726 = _0x3fbe20['Zero']()), void 0x0 === _0x54b55a && (_0x54b55a = _0x3fbe20['Up']()), this['position'] = _0x148726, this['normal'] = _0x54b55a; } return _0x380c35['prototype']['clone'] = function() { return new _0x380c35(this['position']['clone'](),this['normal']['clone']()); } , _0x380c35; }() , _0x1a40e0 = function() { function _0x79d303(_0x5b0f6a, _0xf84458, _0x4e1523) { void 0x0 === _0x5b0f6a && (_0x5b0f6a = _0x3fbe20['Zero']()), void 0x0 === _0xf84458 && (_0xf84458 = _0x3fbe20['Up']()), void 0x0 === _0x4e1523 && (_0x4e1523 = _0x461b0a['Zero']()), this['position'] = _0x5b0f6a, this['normal'] = _0xf84458, this['uv'] = _0x4e1523; } return _0x79d303['prototype']['clone'] = function() { return new _0x79d303(this['position']['clone'](),this['normal']['clone'](),this['uv']['clone']()); } , _0x79d303; }() , _0x503241 = function() { function _0x5302f2() {} return _0x5302f2['Color3'] = _0x1528c3['a']['BuildArray'](0x3, _0x30c94a['Black']), _0x5302f2['Color4'] = _0x1528c3['a']['BuildArray'](0x3, function() { return new _0x3acf15(0x0,0x0,0x0,0x0); }), _0x5302f2['Vector2'] = _0x1528c3['a']['BuildArray'](0x3, _0x461b0a['Zero']), _0x5302f2['Vector3'] = _0x1528c3['a']['BuildArray'](0xd, _0x3fbe20['Zero']), _0x5302f2['Vector4'] = _0x1528c3['a']['BuildArray'](0x3, _0x298fee['Zero']), _0x5302f2['Quaternion'] = _0x1528c3['a']['BuildArray'](0x2, _0x897ad5['Zero']), _0x5302f2['Matrix'] = _0x1528c3['a']['BuildArray'](0x8, _0x5e57bc['Identity']), _0x5302f2; }() , _0x53a116 = function() { function _0x4dae3e() {} return _0x4dae3e['Vector3'] = _0x1528c3['a']['BuildArray'](0x6, _0x3fbe20['Zero']), _0x4dae3e['Matrix'] = _0x1528c3['a']['BuildArray'](0x2, _0x5e57bc['Identity']), _0x4dae3e['Quaternion'] = _0x1528c3['a']['BuildArray'](0x3, _0x897ad5['Zero']), _0x4dae3e; }(); } , function(_0x1ee7e7, _0x1b580e, _0xaa40ef) { 'use strict'; _0xaa40ef['d'](_0x1b580e, 'd', function() { return _0x3895cd; }), _0xaa40ef['d'](_0x1b580e, 'a', function() { return _0x1d4edb; }), _0xaa40ef['d'](_0x1b580e, 'c', function() { return _0x15a921; }), _0xaa40ef['d'](_0x1b580e, 'b', function() { return _0x5839d9; }), _0xaa40ef['d'](_0x1b580e, 'e', function() { return _0x5cb60d; }); var _0x36502e = function(_0x53e90d, _0x32f708) { return (_0x36502e = Object['setPrototypeOf'] || { '__proto__': [] }instanceof Array && function(_0x4e90d1, _0x3cf896) { _0x4e90d1['__proto__'] = _0x3cf896; } || function(_0x238d36, _0x3620a3) { for (var _0x447320 in _0x3620a3) _0x3620a3['hasOwnProperty'](_0x447320) && (_0x238d36[_0x447320] = _0x3620a3[_0x447320]); } )(_0x53e90d, _0x32f708); }; function _0x3895cd(_0xf4a5ad, _0x344846) { function _0x1aabcf() { this['constructor'] = _0xf4a5ad; } _0x36502e(_0xf4a5ad, _0x344846), _0xf4a5ad['prototype'] = null === _0x344846 ? Object['create'](_0x344846) : (_0x1aabcf['prototype'] = _0x344846['prototype'], new _0x1aabcf()); } var _0x1d4edb = function() { return (_0x1d4edb = Object['assign'] || function(_0x51eaca) { for (var _0x291b6e, _0x240d3b = 0x1, _0x367e0a = arguments['length']; _0x240d3b < _0x367e0a; _0x240d3b++) for (var _0x7243d9 in _0x291b6e = arguments[_0x240d3b]) Object['prototype']['hasOwnProperty']['call'](_0x291b6e, _0x7243d9) && (_0x51eaca[_0x7243d9] = _0x291b6e[_0x7243d9]); return _0x51eaca; } )['apply'](this, arguments); }; function _0x15a921(_0x4ec9c8, _0x56f125, _0x194314, _0x4fed38) { var _0x2d532, _0x311215 = arguments['length'], _0x3fe3c1 = _0x311215 < 0x3 ? _0x56f125 : null === _0x4fed38 ? _0x4fed38 = Object['getOwnPropertyDescriptor'](_0x56f125, _0x194314) : _0x4fed38; if ('object' == typeof Reflect && 'function' == typeof Reflect['decorate']) _0x3fe3c1 = Reflect['decorate'](_0x4ec9c8, _0x56f125, _0x194314, _0x4fed38); else for (var _0x1edf25 = _0x4ec9c8['length'] - 0x1; _0x1edf25 >= 0x0; _0x1edf25--) (_0x2d532 = _0x4ec9c8[_0x1edf25]) && (_0x3fe3c1 = (_0x311215 < 0x3 ? _0x2d532(_0x3fe3c1) : _0x311215 > 0x3 ? _0x2d532(_0x56f125, _0x194314, _0x3fe3c1) : _0x2d532(_0x56f125, _0x194314)) || _0x3fe3c1); return _0x311215 > 0x3 && _0x3fe3c1 && Object['defineProperty'](_0x56f125, _0x194314, _0x3fe3c1), _0x3fe3c1; } function _0x5839d9(_0x365464, _0x1213c7, _0x5b6811, _0x2d31b3) { return new (_0x5b6811 || (_0x5b6811 = Promise))(function(_0x382ef4, _0x39a6d6) { function _0xe20faa(_0x3392f3) { try { _0xac2dfe(_0x2d31b3['next'](_0x3392f3)); } catch (_0x2620e3) { _0x39a6d6(_0x2620e3); } } function _0x148b6e(_0xf6cf9f) { try { _0xac2dfe(_0x2d31b3['throw'](_0xf6cf9f)); } catch (_0x348410) { _0x39a6d6(_0x348410); } } function _0xac2dfe(_0x5cc7a5) { _0x5cc7a5['done'] ? _0x382ef4(_0x5cc7a5['value']) : new _0x5b6811(function(_0x31ce19) { _0x31ce19(_0x5cc7a5['value']); } )['then'](_0xe20faa, _0x148b6e); } _0xac2dfe((_0x2d31b3 = _0x2d31b3['apply'](_0x365464, _0x1213c7 || []))['next']()); } ); } function _0x5cb60d(_0x16ccdf, _0x19a431) { var _0x4216a0, _0x5d4322, _0x442dc5, _0x48f13c, _0x344e75 = { 'label': 0x0, 'sent': function() { if (0x1 & _0x442dc5[0x0]) throw _0x442dc5[0x1]; return _0x442dc5[0x1]; }, 'trys': [], 'ops': [] }; return _0x48f13c = { 'next': _0x8cfde2(0x0), 'throw': _0x8cfde2(0x1), 'return': _0x8cfde2(0x2) }, 'function' == typeof Symbol && (_0x48f13c[Symbol['iterator']] = function() { return this; } ), _0x48f13c; function _0x8cfde2(_0x275d20) { return function(_0x109002) { return function(_0xe589a) { if (_0x4216a0) throw new TypeError('Generator\x20is\x20already\x20executing.'); for (; _0x344e75; ) try { if (_0x4216a0 = 0x1, _0x5d4322 && (_0x442dc5 = 0x2 & _0xe589a[0x0] ? _0x5d4322['return'] : _0xe589a[0x0] ? _0x5d4322['throw'] || ((_0x442dc5 = _0x5d4322['return']) && _0x442dc5['call'](_0x5d4322), 0x0) : _0x5d4322['next']) && !(_0x442dc5 = _0x442dc5['call'](_0x5d4322, _0xe589a[0x1]))['done']) return _0x442dc5; switch (_0x5d4322 = 0x0, _0x442dc5 && (_0xe589a = [0x2 & _0xe589a[0x0], _0x442dc5['value']]), _0xe589a[0x0]) { case 0x0: case 0x1: _0x442dc5 = _0xe589a; break; case 0x4: return _0x344e75['label']++, { 'value': _0xe589a[0x1], 'done': !0x1 }; case 0x5: _0x344e75['label']++, _0x5d4322 = _0xe589a[0x1], _0xe589a = [0x0]; continue; case 0x7: _0xe589a = _0x344e75['ops']['pop'](), _0x344e75['trys']['pop'](); continue; default: if (!(_0x442dc5 = (_0x442dc5 = _0x344e75['trys'])['length'] > 0x0 && _0x442dc5[_0x442dc5['length'] - 0x1]) && (0x6 === _0xe589a[0x0] || 0x2 === _0xe589a[0x0])) { _0x344e75 = 0x0; continue; } if (0x3 === _0xe589a[0x0] && (!_0x442dc5 || _0xe589a[0x1] > _0x442dc5[0x0] && _0xe589a[0x1] < _0x442dc5[0x3])) { _0x344e75['label'] = _0xe589a[0x1]; break; } if (0x6 === _0xe589a[0x0] && _0x344e75['label'] < _0x442dc5[0x1]) { _0x344e75['label'] = _0x442dc5[0x1], _0x442dc5 = _0xe589a; break; } if (_0x442dc5 && _0x344e75['label'] < _0x442dc5[0x2]) { _0x344e75['label'] = _0x442dc5[0x2], _0x344e75['ops']['push'](_0xe589a); break; } _0x442dc5[0x2] && _0x344e75['ops']['pop'](), _0x344e75['trys']['pop'](); continue; } _0xe589a = _0x19a431['call'](_0x16ccdf, _0x344e75); } catch (_0x5c5d68) { _0xe589a = [0x6, _0x5c5d68], _0x5d4322 = 0x0; } finally { _0x4216a0 = _0x442dc5 = 0x0; } if (0x5 & _0xe589a[0x0]) throw _0xe589a[0x1]; return { 'value': _0xe589a[0x0] ? _0xe589a[0x1] : void 0x0, 'done': !0x0 }; }([_0x275d20, _0x109002]); } ; } } } , function(_0x52917b, _0x1fff53, _0x4edc04) { 'use strict'; _0x4edc04['d'](_0x1fff53, 'b', function() { return _0x2d3906; }), _0x4edc04['d'](_0x1fff53, 'c', function() { return _0x34d352; }), _0x4edc04['d'](_0x1fff53, 'm', function() { return _0x2437f4; }), _0x4edc04['d'](_0x1fff53, 'e', function() { return _0x226a27; }), _0x4edc04['d'](_0x1fff53, 'h', function() { return _0xaeb87d; }), _0x4edc04['d'](_0x1fff53, 'n', function() { return _0x252d33; }), _0x4edc04['d'](_0x1fff53, 'o', function() { return _0x3e9b80; }), _0x4edc04['d'](_0x1fff53, 'k', function() { return _0x5e47cf; }), _0x4edc04['d'](_0x1fff53, 'g', function() { return _0x3af95a; }), _0x4edc04['d'](_0x1fff53, 'f', function() { return _0x1cae37; }), _0x4edc04['d'](_0x1fff53, 'i', function() { return _0x4e5269; }), _0x4edc04['d'](_0x1fff53, 'l', function() { return _0x4aaf5a; }), _0x4edc04['d'](_0x1fff53, 'j', function() { return _0x4279cd; }), _0x4edc04['d'](_0x1fff53, 'd', function() { return _0x31a72b; }), _0x4edc04['d'](_0x1fff53, 'a', function() { return _0x189625; }); var _0x4725dc = _0x4edc04(0x1d) , _0x1b63dc = _0x4edc04(0x0) , _0x445abe = _0x4edc04(0x13) , _0xda6ab3 = {} , _0x46885e = {} , _0x2cebb2 = function(_0x398a2e, _0x1d9976, _0x507c43) { var _0x29a1e6 = _0x398a2e(); _0x4725dc['a'] && _0x4725dc['a']['AddTagsTo'](_0x29a1e6, _0x1d9976['tags']); var _0x1323fc = _0x4ed30f(_0x29a1e6); for (var _0x461768 in _0x1323fc) { var _0x31f1c5 = _0x1323fc[_0x461768] , _0x104949 = _0x1d9976[_0x461768] , _0x1f5b3c = _0x31f1c5['type']; if (null != _0x104949 && 'uniqueId' !== _0x461768) switch (_0x1f5b3c) { case 0x0: case 0x6: case 0xb: _0x29a1e6[_0x461768] = _0x104949; break; case 0x1: _0x29a1e6[_0x461768] = _0x507c43 || _0x104949['isRenderTarget'] ? _0x104949 : _0x104949['clone'](); break; case 0x2: case 0x3: case 0x4: case 0x5: case 0x7: case 0xa: case 0xc: _0x29a1e6[_0x461768] = _0x507c43 ? _0x104949 : _0x104949['clone'](); } } return _0x29a1e6; }; function _0x4ed30f(_0x44c842) { var _0x203b09 = _0x44c842['getClassName'](); if (_0x46885e[_0x203b09]) return _0x46885e[_0x203b09]; _0x46885e[_0x203b09] = {}; for (var _0x438409 = _0x46885e[_0x203b09], _0x5af7ed = _0x44c842, _0x3d18b1 = _0x203b09; _0x3d18b1; ) { var _0x14d832 = _0xda6ab3[_0x3d18b1]; for (var _0x362cc2 in _0x14d832) _0x438409[_0x362cc2] = _0x14d832[_0x362cc2]; var _0x43ca31 = void 0x0 , _0x43ab43 = !0x1; do { if (!(_0x43ca31 = Object['getPrototypeOf'](_0x5af7ed))['getClassName']) { _0x43ab43 = !0x0; break; } if (_0x43ca31['getClassName']() !== _0x3d18b1) break; _0x5af7ed = _0x43ca31; } while (_0x43ca31); if (_0x43ab43) break; _0x3d18b1 = _0x43ca31['getClassName'](), _0x5af7ed = _0x43ca31; } return _0x438409; } function _0x68bae3(_0x5008f3, _0x1b49a0) { return function(_0x343837, _0x4fff56) { var _0x14bdeb = function(_0x2c6a7b) { var _0x34c0d1 = _0x2c6a7b['getClassName'](); return _0xda6ab3[_0x34c0d1] || (_0xda6ab3[_0x34c0d1] = {}), _0xda6ab3[_0x34c0d1]; }(_0x343837); _0x14bdeb[_0x4fff56] || (_0x14bdeb[_0x4fff56] = { 'type': _0x5008f3, 'sourceName': _0x1b49a0 }); } ; } function _0x2d3906(_0x2e1f81, _0x4adef9) { return void 0x0 === _0x4adef9 && (_0x4adef9 = null), function(_0x3d121b, _0x45a65e) { return void 0x0 === _0x45a65e && (_0x45a65e = null), function(_0x3b7bbe, _0x6e0318) { var _0x1bcf27 = _0x45a65e || '_' + _0x6e0318; Object['defineProperty'](_0x3b7bbe, _0x6e0318, { 'get': function() { return this[_0x1bcf27]; }, 'set': function(_0x7da32a) { this[_0x1bcf27] !== _0x7da32a && (this[_0x1bcf27] = _0x7da32a, _0x3b7bbe[_0x3d121b]['apply'](this)); }, 'enumerable': !0x0, 'configurable': !0x0 }); } ; }(_0x2e1f81, _0x4adef9); } function _0x34d352(_0x1a4cfa) { return _0x68bae3(0x0, _0x1a4cfa); } function _0x2437f4(_0x4b8da4) { return _0x68bae3(0x1, _0x4b8da4); } function _0x226a27(_0x252a61) { return _0x68bae3(0x2, _0x252a61); } function _0xaeb87d(_0x4afe33) { return _0x68bae3(0x3, _0x4afe33); } function _0x252d33(_0x141be5) { return _0x68bae3(0x4, _0x141be5); } function _0x3e9b80(_0x568c25) { return _0x68bae3(0x5, _0x568c25); } function _0x5e47cf(_0x38c9ff) { return _0x68bae3(0x6, _0x38c9ff); } function _0x3af95a(_0x3e8645) { return _0x68bae3(0x7, _0x3e8645); } function _0x1cae37(_0x42f5b1) { return _0x68bae3(0x8, _0x42f5b1); } function _0x4e5269(_0xd47b30) { return _0x68bae3(0x9, _0xd47b30); } function _0x4aaf5a(_0x2a7eed) { return _0x68bae3(0xa, _0x2a7eed); } function _0x4279cd(_0x4573ca) { return _0x68bae3(0xc, _0x4573ca); } function _0x31a72b(_0x2adec7) { return _0x68bae3(0xb, _0x2adec7); } var _0x189625 = function() { function _0xcb0708() {} return _0xcb0708['AppendSerializedAnimations'] = function(_0x54533e, _0x26502e) { if (_0x54533e['animations']) { _0x26502e['animations'] = []; for (var _0x5e55a4 = 0x0; _0x5e55a4 < _0x54533e['animations']['length']; _0x5e55a4++) { var _0x163cc6 = _0x54533e['animations'][_0x5e55a4]; _0x26502e['animations']['push'](_0x163cc6['serialize']()); } } } , _0xcb0708['Serialize'] = function(_0x2891e9, _0x5895e4) { _0x5895e4 || (_0x5895e4 = {}), _0x4725dc['a'] && (_0x5895e4['tags'] = _0x4725dc['a']['GetTags'](_0x2891e9)); var _0x36f753 = _0x4ed30f(_0x2891e9); for (var _0x9e71d4 in _0x36f753) { var _0x13e11c = _0x36f753[_0x9e71d4] , _0xc4fbdc = _0x13e11c['sourceName'] || _0x9e71d4 , _0x4f99ae = _0x13e11c['type'] , _0x2514d3 = _0x2891e9[_0x9e71d4]; if (null != _0x2514d3) switch (_0x4f99ae) { case 0x0: _0x5895e4[_0xc4fbdc] = _0x2514d3; break; case 0x1: _0x5895e4[_0xc4fbdc] = _0x2514d3['serialize'](); break; case 0x2: _0x5895e4[_0xc4fbdc] = _0x2514d3['asArray'](); break; case 0x3: _0x5895e4[_0xc4fbdc] = _0x2514d3['serialize'](); break; case 0x4: case 0x5: _0x5895e4[_0xc4fbdc] = _0x2514d3['asArray'](); break; case 0x6: _0x5895e4[_0xc4fbdc] = _0x2514d3['id']; break; case 0x7: _0x5895e4[_0xc4fbdc] = _0x2514d3['serialize'](); break; case 0x8: _0x5895e4[_0xc4fbdc] = _0x2514d3['asArray'](); break; case 0x9: _0x5895e4[_0xc4fbdc] = _0x2514d3['serialize'](); break; case 0xa: _0x5895e4[_0xc4fbdc] = _0x2514d3['asArray'](); break; case 0xb: _0x5895e4[_0xc4fbdc] = _0x2514d3['id']; case 0xc: _0x5895e4[_0xc4fbdc] = _0x2514d3['asArray'](); } } return _0x5895e4; } , _0xcb0708['Parse'] = function(_0x176ec6, _0x2f3a0f, _0x1238b4, _0x54122f) { void 0x0 === _0x54122f && (_0x54122f = null); var _0xb99be2 = _0x176ec6(); _0x54122f || (_0x54122f = ''), _0x4725dc['a'] && _0x4725dc['a']['AddTagsTo'](_0xb99be2, _0x2f3a0f['tags']); var _0xaa1727 = _0x4ed30f(_0xb99be2); for (var _0x26e1a2 in _0xaa1727) { var _0x34a295 = _0xaa1727[_0x26e1a2] , _0x1b181b = _0x2f3a0f[_0x34a295['sourceName'] || _0x26e1a2] , _0x451718 = _0x34a295['type']; if (null != _0x1b181b) { var _0x407703 = _0xb99be2; switch (_0x451718) { case 0x0: _0x407703[_0x26e1a2] = _0x1b181b; break; case 0x1: _0x1238b4 && (_0x407703[_0x26e1a2] = _0xcb0708['_TextureParser'](_0x1b181b, _0x1238b4, _0x54122f)); break; case 0x2: _0x407703[_0x26e1a2] = _0x1b63dc['e']['FromArray'](_0x1b181b); break; case 0x3: _0x407703[_0x26e1a2] = _0xcb0708['_FresnelParametersParser'](_0x1b181b); break; case 0x4: _0x407703[_0x26e1a2] = _0x1b63dc['w']['FromArray'](_0x1b181b); break; case 0x5: _0x407703[_0x26e1a2] = _0x1b63dc['x']['FromArray'](_0x1b181b); break; case 0x6: _0x1238b4 && (_0x407703[_0x26e1a2] = _0x1238b4['getLastMeshByID'](_0x1b181b)); break; case 0x7: _0x407703[_0x26e1a2] = _0xcb0708['_ColorCurvesParser'](_0x1b181b); break; case 0x8: _0x407703[_0x26e1a2] = _0x1b63dc['f']['FromArray'](_0x1b181b); break; case 0x9: _0x407703[_0x26e1a2] = _0xcb0708['_ImageProcessingConfigurationParser'](_0x1b181b); break; case 0xa: _0x407703[_0x26e1a2] = _0x1b63dc['q']['FromArray'](_0x1b181b); break; case 0xb: _0x1238b4 && (_0x407703[_0x26e1a2] = _0x1238b4['getCameraByID'](_0x1b181b)); case 0xc: _0x407703[_0x26e1a2] = _0x1b63dc['j']['FromArray'](_0x1b181b); } } } return _0xb99be2; } , _0xcb0708['Clone'] = function(_0x534f69, _0x147eda) { return _0x2cebb2(_0x534f69, _0x147eda, !0x1); } , _0xcb0708['Instanciate'] = function(_0x349884, _0x10dd6d) { return _0x2cebb2(_0x349884, _0x10dd6d, !0x0); } , _0xcb0708['_ImageProcessingConfigurationParser'] = function(_0x30030a) { throw _0x445abe['a']['WarnImport']('ImageProcessingConfiguration'); } , _0xcb0708['_FresnelParametersParser'] = function(_0x21ad78) { throw _0x445abe['a']['WarnImport']('FresnelParameters'); } , _0xcb0708['_ColorCurvesParser'] = function(_0x2c07a4) { throw _0x445abe['a']['WarnImport']('ColorCurves'); } , _0xcb0708['_TextureParser'] = function(_0xf7618b, _0x56f081, _0x5f12f4) { throw _0x445abe['a']['WarnImport']('Texture'); } , _0xcb0708; }(); } , function(_0x57f133, _0x17ae95, _0x4f0ae2) { 'use strict'; _0x4f0ae2['d'](_0x17ae95, 'a', function() { return _0x4276c6; }); var _0x4276c6 = function() { function _0x47655e() {} return _0x47655e['ALPHA_DISABLE'] = 0x0, _0x47655e['ALPHA_ADD'] = 0x1, _0x47655e['ALPHA_COMBINE'] = 0x2, _0x47655e['ALPHA_SUBTRACT'] = 0x3, _0x47655e['ALPHA_MULTIPLY'] = 0x4, _0x47655e['ALPHA_MAXIMIZED'] = 0x5, _0x47655e['ALPHA_ONEONE'] = 0x6, _0x47655e['ALPHA_PREMULTIPLIED'] = 0x7, _0x47655e['ALPHA_PREMULTIPLIED_PORTERDUFF'] = 0x8, _0x47655e['ALPHA_INTERPOLATE'] = 0x9, _0x47655e['ALPHA_SCREENMODE'] = 0xa, _0x47655e['DELAYLOADSTATE_NONE'] = 0x0, _0x47655e['DELAYLOADSTATE_LOADED'] = 0x1, _0x47655e['DELAYLOADSTATE_LOADING'] = 0x2, _0x47655e['DELAYLOADSTATE_NOTLOADED'] = 0x4, _0x47655e['NEVER'] = 0x200, _0x47655e['ALWAYS'] = 0x207, _0x47655e['LESS'] = 0x201, _0x47655e['EQUAL'] = 0x202, _0x47655e['LEQUAL'] = 0x203, _0x47655e['GREATER'] = 0x204, _0x47655e['GEQUAL'] = 0x206, _0x47655e['NOTEQUAL'] = 0x205, _0x47655e['KEEP'] = 0x1e00, _0x47655e['REPLACE'] = 0x1e01, _0x47655e['INCR'] = 0x1e02, _0x47655e['DECR'] = 0x1e03, _0x47655e['INVERT'] = 0x150a, _0x47655e['INCR_WRAP'] = 0x8507, _0x47655e['DECR_WRAP'] = 0x8508, _0x47655e['TEXTURE_CLAMP_ADDRESSMODE'] = 0x0, _0x47655e['TEXTURE_WRAP_ADDRESSMODE'] = 0x1, _0x47655e['TEXTURE_MIRROR_ADDRESSMODE'] = 0x2, _0x47655e['TEXTUREFORMAT_ALPHA'] = 0x0, _0x47655e['TEXTUREFORMAT_LUMINANCE'] = 0x1, _0x47655e['TEXTUREFORMAT_LUMINANCE_ALPHA'] = 0x2, _0x47655e['TEXTUREFORMAT_RGB'] = 0x4, _0x47655e['TEXTUREFORMAT_RGBA'] = 0x5, _0x47655e['TEXTUREFORMAT_RED'] = 0x6, _0x47655e['TEXTUREFORMAT_R'] = 0x6, _0x47655e['TEXTUREFORMAT_RG'] = 0x7, _0x47655e['TEXTUREFORMAT_RED_INTEGER'] = 0x8, _0x47655e['TEXTUREFORMAT_R_INTEGER'] = 0x8, _0x47655e['TEXTUREFORMAT_RG_INTEGER'] = 0x9, _0x47655e['TEXTUREFORMAT_RGB_INTEGER'] = 0xa, _0x47655e['TEXTUREFORMAT_RGBA_INTEGER'] = 0xb, _0x47655e['TEXTURETYPE_UNSIGNED_BYTE'] = 0x0, _0x47655e['TEXTURETYPE_UNSIGNED_INT'] = 0x0, _0x47655e['TEXTURETYPE_FLOAT'] = 0x1, _0x47655e['TEXTURETYPE_HALF_FLOAT'] = 0x2, _0x47655e['TEXTURETYPE_BYTE'] = 0x3, _0x47655e['TEXTURETYPE_SHORT'] = 0x4, _0x47655e['TEXTURETYPE_UNSIGNED_SHORT'] = 0x5, _0x47655e['TEXTURETYPE_INT'] = 0x6, _0x47655e['TEXTURETYPE_UNSIGNED_INTEGER'] = 0x7, _0x47655e['TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4'] = 0x8, _0x47655e['TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1'] = 0x9, _0x47655e['TEXTURETYPE_UNSIGNED_SHORT_5_6_5'] = 0xa, _0x47655e['TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV'] = 0xb, _0x47655e['TEXTURETYPE_UNSIGNED_INT_24_8'] = 0xc, _0x47655e['TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV'] = 0xd, _0x47655e['TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV'] = 0xe, _0x47655e['TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV'] = 0xf, _0x47655e['TEXTURE_NEAREST_SAMPLINGMODE'] = 0x1, _0x47655e['TEXTURE_BILINEAR_SAMPLINGMODE'] = 0x2, _0x47655e['TEXTURE_TRILINEAR_SAMPLINGMODE'] = 0x3, _0x47655e['TEXTURE_NEAREST_NEAREST_MIPLINEAR'] = 0x1, _0x47655e['TEXTURE_LINEAR_LINEAR_MIPNEAREST'] = 0x2, _0x47655e['TEXTURE_LINEAR_LINEAR_MIPLINEAR'] = 0x3, _0x47655e['TEXTURE_NEAREST_NEAREST_MIPNEAREST'] = 0x4, _0x47655e['TEXTURE_NEAREST_LINEAR_MIPNEAREST'] = 0x5, _0x47655e['TEXTURE_NEAREST_LINEAR_MIPLINEAR'] = 0x6, _0x47655e['TEXTURE_NEAREST_LINEAR'] = 0x7, _0x47655e['TEXTURE_NEAREST_NEAREST'] = 0x8, _0x47655e['TEXTURE_LINEAR_NEAREST_MIPNEAREST'] = 0x9, _0x47655e['TEXTURE_LINEAR_NEAREST_MIPLINEAR'] = 0xa, _0x47655e['TEXTURE_LINEAR_LINEAR'] = 0xb, _0x47655e['TEXTURE_LINEAR_NEAREST'] = 0xc, _0x47655e['TEXTURE_EXPLICIT_MODE'] = 0x0, _0x47655e['TEXTURE_SPHERICAL_MODE'] = 0x1, _0x47655e['TEXTURE_PLANAR_MODE'] = 0x2, _0x47655e['TEXTURE_CUBIC_MODE'] = 0x3, _0x47655e['TEXTURE_PROJECTION_MODE'] = 0x4, _0x47655e['TEXTURE_SKYBOX_MODE'] = 0x5, _0x47655e['TEXTURE_INVCUBIC_MODE'] = 0x6, _0x47655e['TEXTURE_EQUIRECTANGULAR_MODE'] = 0x7, _0x47655e['TEXTURE_FIXED_EQUIRECTANGULAR_MODE'] = 0x8, _0x47655e['TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE'] = 0x9, _0x47655e['SCALEMODE_FLOOR'] = 0x1, _0x47655e['SCALEMODE_NEAREST'] = 0x2, _0x47655e['SCALEMODE_CEILING'] = 0x3, _0x47655e['MATERIAL_TextureDirtyFlag'] = 0x1, _0x47655e['MATERIAL_LightDirtyFlag'] = 0x2, _0x47655e['MATERIAL_FresnelDirtyFlag'] = 0x4, _0x47655e['MATERIAL_AttributesDirtyFlag'] = 0x8, _0x47655e['MATERIAL_MiscDirtyFlag'] = 0x10, _0x47655e['MATERIAL_AllDirtyFlag'] = 0x1f, _0x47655e['MATERIAL_TriangleFillMode'] = 0x0, _0x47655e['MATERIAL_WireFrameFillMode'] = 0x1, _0x47655e['MATERIAL_PointFillMode'] = 0x2, _0x47655e['MATERIAL_PointListDrawMode'] = 0x3, _0x47655e['MATERIAL_LineListDrawMode'] = 0x4, _0x47655e['MATERIAL_LineLoopDrawMode'] = 0x5, _0x47655e['MATERIAL_LineStripDrawMode'] = 0x6, _0x47655e['MATERIAL_TriangleStripDrawMode'] = 0x7, _0x47655e['MATERIAL_TriangleFanDrawMode'] = 0x8, _0x47655e['MATERIAL_ClockWiseSideOrientation'] = 0x0, _0x47655e['MATERIAL_CounterClockWiseSideOrientation'] = 0x1, _0x47655e['ACTION_NothingTrigger'] = 0x0, _0x47655e['ACTION_OnPickTrigger'] = 0x1, _0x47655e['ACTION_OnLeftPickTrigger'] = 0x2, _0x47655e['ACTION_OnRightPickTrigger'] = 0x3, _0x47655e['ACTION_OnCenterPickTrigger'] = 0x4, _0x47655e['ACTION_OnPickDownTrigger'] = 0x5, _0x47655e['ACTION_OnDoublePickTrigger'] = 0x6, _0x47655e['ACTION_OnPickUpTrigger'] = 0x7, _0x47655e['ACTION_OnPickOutTrigger'] = 0x10, _0x47655e['ACTION_OnLongPressTrigger'] = 0x8, _0x47655e['ACTION_OnPointerOverTrigger'] = 0x9, _0x47655e['ACTION_OnPointerOutTrigger'] = 0xa, _0x47655e['ACTION_OnEveryFrameTrigger'] = 0xb, _0x47655e['ACTION_OnIntersectionEnterTrigger'] = 0xc, _0x47655e['ACTION_OnIntersectionExitTrigger'] = 0xd, _0x47655e['ACTION_OnKeyDownTrigger'] = 0xe, _0x47655e['ACTION_OnKeyUpTrigger'] = 0xf, _0x47655e['PARTICLES_BILLBOARDMODE_Y'] = 0x2, _0x47655e['PARTICLES_BILLBOARDMODE_ALL'] = 0x7, _0x47655e['PARTICLES_BILLBOARDMODE_STRETCHED'] = 0x8, _0x47655e['PARTICLES_BaseAssetsUrl'] = 'https://assets.babylonjs.com/particles', _0x47655e['MESHES_CULLINGSTRATEGY_STANDARD'] = 0x0, _0x47655e['MESHES_CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY'] = 0x1, _0x47655e['MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION'] = 0x2, _0x47655e['MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY'] = 0x3, _0x47655e['SCENELOADER_NO_LOGGING'] = 0x0, _0x47655e['SCENELOADER_MINIMAL_LOGGING'] = 0x1, _0x47655e['SCENELOADER_SUMMARY_LOGGING'] = 0x2, _0x47655e['SCENELOADER_DETAILED_LOGGING'] = 0x3, _0x47655e; }(); } , function(_0x397118, _0x228224, _0x33a343) { 'use strict'; _0x33a343['d'](_0x228224, 'a', function() { return _0x44f3ec; }), _0x33a343['d'](_0x228224, 'b', function() { return _0x18afc9; }); var _0x44f3ec = function() { function _0x4d1a30(_0xa4c053, _0x36f3fa, _0x1ad9d2, _0x15e52c, _0x2eabca, _0x15322c, _0x344927) { void 0x0 === _0x15e52c && (_0x15e52c = 0x0), void 0x0 === _0x2eabca && (_0x2eabca = !0x1), void 0x0 === _0x15322c && (_0x15322c = !0x1), void 0x0 === _0x344927 && (_0x344927 = !0x1), _0xa4c053['getScene'] ? this['_engine'] = _0xa4c053['getScene']()['getEngine']() : this['_engine'] = _0xa4c053, this['_updatable'] = _0x1ad9d2, this['_instanced'] = _0x15322c, this['_data'] = _0x36f3fa, this['byteStride'] = _0x344927 ? _0x15e52c : _0x15e52c * Float32Array['BYTES_PER_ELEMENT'], _0x2eabca || this['create'](); } return _0x4d1a30['prototype']['createVertexBuffer'] = function(_0x3cbe31, _0x36668c, _0x3089f2, _0x468793, _0x1c682c, _0x10400e) { void 0x0 === _0x10400e && (_0x10400e = !0x1); var _0x1ecbf5 = _0x10400e ? _0x36668c : _0x36668c * Float32Array['BYTES_PER_ELEMENT'] , _0x5a1dab = _0x468793 ? _0x10400e ? _0x468793 : _0x468793 * Float32Array['BYTES_PER_ELEMENT'] : this['byteStride']; return new _0x18afc9(this['_engine'],this,_0x3cbe31,this['_updatable'],!0x0,_0x5a1dab,void 0x0 === _0x1c682c ? this['_instanced'] : _0x1c682c,_0x1ecbf5,_0x3089f2,void 0x0,void 0x0,!0x0); } , _0x4d1a30['prototype']['isUpdatable'] = function() { return this['_updatable']; } , _0x4d1a30['prototype']['getData'] = function() { return this['_data']; } , _0x4d1a30['prototype']['getBuffer'] = function() { return this['_buffer']; } , _0x4d1a30['prototype']['getStrideSize'] = function() { return this['byteStride'] / Float32Array['BYTES_PER_ELEMENT']; } , _0x4d1a30['prototype']['create'] = function(_0x572fe6) { void 0x0 === _0x572fe6 && (_0x572fe6 = null), !_0x572fe6 && this['_buffer'] || (_0x572fe6 = _0x572fe6 || this['_data']) && (this['_buffer'] ? this['_updatable'] && (this['_engine']['updateDynamicVertexBuffer'](this['_buffer'], _0x572fe6), this['_data'] = _0x572fe6) : this['_updatable'] ? (this['_buffer'] = this['_engine']['createDynamicVertexBuffer'](_0x572fe6), this['_data'] = _0x572fe6) : this['_buffer'] = this['_engine']['createVertexBuffer'](_0x572fe6)); } , _0x4d1a30['prototype']['_rebuild'] = function() { this['_buffer'] = null, this['create'](this['_data']); } , _0x4d1a30['prototype']['update'] = function(_0x39be1a) { this['create'](_0x39be1a); } , _0x4d1a30['prototype']['updateDirectly'] = function(_0x1786e3, _0x51f800, _0x2866d3, _0x35478f) { void 0x0 === _0x35478f && (_0x35478f = !0x1), this['_buffer'] && this['_updatable'] && (this['_engine']['updateDynamicVertexBuffer'](this['_buffer'], _0x1786e3, _0x35478f ? _0x51f800 : _0x51f800 * Float32Array['BYTES_PER_ELEMENT'], _0x2866d3 ? _0x2866d3 * this['byteStride'] : void 0x0), this['_data'] = null); } , _0x4d1a30['prototype']['dispose'] = function() { this['_buffer'] && this['_engine']['_releaseBuffer'](this['_buffer']) && (this['_buffer'] = null); } , _0x4d1a30; }() , _0x18afc9 = function() { function _0x555f95(_0x53c908, _0xe291f5, _0x2e10f7, _0x10d34a, _0x4ba619, _0x552cae, _0x56ee97, _0x5c7be1, _0x493fe1, _0x2e5e09, _0x2937cc, _0xaaeb29) { if (void 0x0 === _0x2937cc && (_0x2937cc = !0x1), void 0x0 === _0xaaeb29 && (_0xaaeb29 = !0x1), _0xe291f5 instanceof _0x44f3ec ? (this['_buffer'] = _0xe291f5, this['_ownsBuffer'] = !0x1) : (this['_buffer'] = new _0x44f3ec(_0x53c908,_0xe291f5,_0x10d34a,_0x552cae,_0x4ba619,_0x56ee97,_0xaaeb29), this['_ownsBuffer'] = !0x0), this['_kind'] = _0x2e10f7, null == _0x2e5e09) { var _0x5b20e8 = this['getData'](); this['type'] = _0x555f95['FLOAT'], _0x5b20e8 instanceof Int8Array ? this['type'] = _0x555f95['BYTE'] : _0x5b20e8 instanceof Uint8Array ? this['type'] = _0x555f95['UNSIGNED_BYTE'] : _0x5b20e8 instanceof Int16Array ? this['type'] = _0x555f95['SHORT'] : _0x5b20e8 instanceof Uint16Array ? this['type'] = _0x555f95['UNSIGNED_SHORT'] : _0x5b20e8 instanceof Int32Array ? this['type'] = _0x555f95['INT'] : _0x5b20e8 instanceof Uint32Array && (this['type'] = _0x555f95['UNSIGNED_INT']); } else this['type'] = _0x2e5e09; var _0x1ed74d = _0x555f95['GetTypeByteLength'](this['type']); _0xaaeb29 ? (this['_size'] = _0x493fe1 || (_0x552cae ? _0x552cae / _0x1ed74d : _0x555f95['DeduceStride'](_0x2e10f7)), this['byteStride'] = _0x552cae || this['_buffer']['byteStride'] || this['_size'] * _0x1ed74d, this['byteOffset'] = _0x5c7be1 || 0x0) : (this['_size'] = _0x493fe1 || _0x552cae || _0x555f95['DeduceStride'](_0x2e10f7), this['byteStride'] = _0x552cae ? _0x552cae * _0x1ed74d : this['_buffer']['byteStride'] || this['_size'] * _0x1ed74d, this['byteOffset'] = (_0x5c7be1 || 0x0) * _0x1ed74d), this['normalized'] = _0x2937cc, this['_instanced'] = void 0x0 !== _0x56ee97 && _0x56ee97, this['_instanceDivisor'] = _0x56ee97 ? 0x1 : 0x0; } return Object['defineProperty'](_0x555f95['prototype'], 'instanceDivisor', { 'get': function() { return this['_instanceDivisor']; }, 'set': function(_0x2f0443) { this['_instanceDivisor'] = _0x2f0443, this['_instanced'] = 0x0 != _0x2f0443; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x555f95['prototype']['_rebuild'] = function() { this['_buffer'] && this['_buffer']['_rebuild'](); } , _0x555f95['prototype']['getKind'] = function() { return this['_kind']; } , _0x555f95['prototype']['isUpdatable'] = function() { return this['_buffer']['isUpdatable'](); } , _0x555f95['prototype']['getData'] = function() { return this['_buffer']['getData'](); } , _0x555f95['prototype']['getBuffer'] = function() { return this['_buffer']['getBuffer'](); } , _0x555f95['prototype']['getStrideSize'] = function() { return this['byteStride'] / _0x555f95['GetTypeByteLength'](this['type']); } , _0x555f95['prototype']['getOffset'] = function() { return this['byteOffset'] / _0x555f95['GetTypeByteLength'](this['type']); } , _0x555f95['prototype']['getSize'] = function() { return this['_size']; } , _0x555f95['prototype']['getIsInstanced'] = function() { return this['_instanced']; } , _0x555f95['prototype']['getInstanceDivisor'] = function() { return this['_instanceDivisor']; } , _0x555f95['prototype']['create'] = function(_0x421023) { this['_buffer']['create'](_0x421023); } , _0x555f95['prototype']['update'] = function(_0xeca118) { this['_buffer']['update'](_0xeca118); } , _0x555f95['prototype']['updateDirectly'] = function(_0x18e4a9, _0x102d8c, _0x344ee5) { void 0x0 === _0x344ee5 && (_0x344ee5 = !0x1), this['_buffer']['updateDirectly'](_0x18e4a9, _0x102d8c, void 0x0, _0x344ee5); } , _0x555f95['prototype']['dispose'] = function() { this['_ownsBuffer'] && this['_buffer']['dispose'](); } , _0x555f95['prototype']['forEach'] = function(_0x155d5d, _0x483f6d) { _0x555f95['ForEach'](this['_buffer']['getData'](), this['byteOffset'], this['byteStride'], this['_size'], this['type'], _0x155d5d, this['normalized'], _0x483f6d); } , _0x555f95['DeduceStride'] = function(_0x4fda75) { switch (_0x4fda75) { case _0x555f95['UVKind']: case _0x555f95['UV2Kind']: case _0x555f95['UV3Kind']: case _0x555f95['UV4Kind']: case _0x555f95['UV5Kind']: case _0x555f95['UV6Kind']: return 0x2; case _0x555f95['NormalKind']: case _0x555f95['PositionKind']: return 0x3; case _0x555f95['ColorKind']: case _0x555f95['MatricesIndicesKind']: case _0x555f95['MatricesIndicesExtraKind']: case _0x555f95['MatricesWeightsKind']: case _0x555f95['MatricesWeightsExtraKind']: case _0x555f95['TangentKind']: return 0x4; default: throw new Error('Invalid\x20kind\x20\x27' + _0x4fda75 + '\x27'); } } , _0x555f95['GetTypeByteLength'] = function(_0x56729c) { switch (_0x56729c) { case _0x555f95['BYTE']: case _0x555f95['UNSIGNED_BYTE']: return 0x1; case _0x555f95['SHORT']: case _0x555f95['UNSIGNED_SHORT']: return 0x2; case _0x555f95['INT']: case _0x555f95['FLOAT']: return 0x4; default: throw new Error('Invalid\x20type\x20\x27' + _0x56729c + '\x27'); } } , _0x555f95['ForEach'] = function(_0x4733ab, _0x51908b, _0x251b4c, _0x2a7d4d, _0x2ce0fb, _0x514b79, _0x3cea63, _0x5188d1) { if (_0x4733ab instanceof Array) for (var _0x310d21 = _0x51908b / 0x4, _0x4244c8 = _0x251b4c / 0x4, _0x2f465c = 0x0; _0x2f465c < _0x514b79; _0x2f465c += _0x2a7d4d) { for (var _0x286c3e = 0x0; _0x286c3e < _0x2a7d4d; _0x286c3e++) _0x5188d1(_0x4733ab[_0x310d21 + _0x286c3e], _0x2f465c + _0x286c3e); _0x310d21 += _0x4244c8; } else { var _0x1e80de = _0x4733ab instanceof ArrayBuffer ? new DataView(_0x4733ab) : new DataView(_0x4733ab['buffer'],_0x4733ab['byteOffset'],_0x4733ab['byteLength']) , _0x22aeb8 = _0x555f95['GetTypeByteLength'](_0x2ce0fb); for (_0x2f465c = 0x0; _0x2f465c < _0x514b79; _0x2f465c += _0x2a7d4d) { var _0x2d3b51 = _0x51908b; for (_0x286c3e = 0x0; _0x286c3e < _0x2a7d4d; _0x286c3e++) { _0x5188d1(_0x555f95['_GetFloatValue'](_0x1e80de, _0x2ce0fb, _0x2d3b51, _0x3cea63), _0x2f465c + _0x286c3e), _0x2d3b51 += _0x22aeb8; } _0x51908b += _0x251b4c; } } } , _0x555f95['_GetFloatValue'] = function(_0x454e38, _0x25caff, _0x27b3d7, _0x34a556) { switch (_0x25caff) { case _0x555f95['BYTE']: var _0x1a366b = _0x454e38['getInt8'](_0x27b3d7); return _0x34a556 && (_0x1a366b = Math['max'](_0x1a366b / 0x7f, -0x1)), _0x1a366b; case _0x555f95['UNSIGNED_BYTE']: _0x1a366b = _0x454e38['getUint8'](_0x27b3d7); return _0x34a556 && (_0x1a366b /= 0xff), _0x1a366b; case _0x555f95['SHORT']: _0x1a366b = _0x454e38['getInt16'](_0x27b3d7, !0x0); return _0x34a556 && (_0x1a366b = Math['max'](_0x1a366b / 0x3fff, -0x1)), _0x1a366b; case _0x555f95['UNSIGNED_SHORT']: _0x1a366b = _0x454e38['getUint16'](_0x27b3d7, !0x0); return _0x34a556 && (_0x1a366b /= 0xffff), _0x1a366b; case _0x555f95['FLOAT']: return _0x454e38['getFloat32'](_0x27b3d7, !0x0); default: throw new Error('Invalid\x20component\x20type\x20' + _0x25caff); } } , _0x555f95['BYTE'] = 0x1400, _0x555f95['UNSIGNED_BYTE'] = 0x1401, _0x555f95['SHORT'] = 0x1402, _0x555f95['UNSIGNED_SHORT'] = 0x1403, _0x555f95['INT'] = 0x1404, _0x555f95['UNSIGNED_INT'] = 0x1405, _0x555f95['FLOAT'] = 0x1406, _0x555f95['PositionKind'] = 'position', _0x555f95['NormalKind'] = 'normal', _0x555f95['TangentKind'] = 'tangent', _0x555f95['UVKind'] = 'uv', _0x555f95['UV2Kind'] = 'uv2', _0x555f95['UV3Kind'] = 'uv3', _0x555f95['UV4Kind'] = 'uv4', _0x555f95['UV5Kind'] = 'uv5', _0x555f95['UV6Kind'] = 'uv6', _0x555f95['ColorKind'] = 'color', _0x555f95['MatricesIndicesKind'] = 'matricesIndices', _0x555f95['MatricesWeightsKind'] = 'matricesWeights', _0x555f95['MatricesIndicesExtraKind'] = 'matricesIndicesExtra', _0x555f95['MatricesWeightsExtraKind'] = 'matricesWeightsExtra', _0x555f95; }(); } , function(_0x11453a, _0xb2de45, _0x289301) { 'use strict'; _0x289301['d'](_0xb2de45, 'c', function() { return _0x5572a4; }), _0x289301['d'](_0xb2de45, 'b', function() { return _0x3e8cfe; }), _0x289301['d'](_0xb2de45, 'a', function() { return _0x478f45; }); var _0x1a9947 = _0x289301(0x8) , _0x20a51e = _0x289301(0x3) , _0x1e8d1c = _0x289301(0x23) , _0x51f87d = _0x289301(0x6) , _0x5572a4 = function() { function _0x5843e3() { this['_defines'] = {}, this['_currentRank'] = 0x20, this['_maxRank'] = -0x1, this['_mesh'] = null; } return _0x5843e3['prototype']['unBindMesh'] = function() { this['_mesh'] = null; } , _0x5843e3['prototype']['addFallback'] = function(_0x28664d, _0x8c33ec) { this['_defines'][_0x28664d] || (_0x28664d < this['_currentRank'] && (this['_currentRank'] = _0x28664d), _0x28664d > this['_maxRank'] && (this['_maxRank'] = _0x28664d), this['_defines'][_0x28664d] = new Array()), this['_defines'][_0x28664d]['push'](_0x8c33ec); } , _0x5843e3['prototype']['addCPUSkinningFallback'] = function(_0x535daf, _0x573c87) { this['_mesh'] = _0x573c87, _0x535daf < this['_currentRank'] && (this['_currentRank'] = _0x535daf), _0x535daf > this['_maxRank'] && (this['_maxRank'] = _0x535daf); } , Object['defineProperty'](_0x5843e3['prototype'], 'isMoreFallbacks', { 'get': function() { return this['_currentRank'] <= this['_maxRank']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5843e3['prototype']['reduce'] = function(_0x3edd5c, _0x553dca) { if (this['_mesh'] && this['_mesh']['computeBonesUsingShaders'] && this['_mesh']['numBoneInfluencers'] > 0x0 && this['_mesh']['material']) { this['_mesh']['computeBonesUsingShaders'] = !0x1, _0x3edd5c = _0x3edd5c['replace']('#define\x20NUM_BONE_INFLUENCERS\x20' + this['_mesh']['numBoneInfluencers'], '#define\x20NUM_BONE_INFLUENCERS\x200'), _0x553dca['_bonesComputationForcedToCPU'] = !0x0; for (var _0x5bd35a = this['_mesh']['getScene'](), _0x2faade = 0x0; _0x2faade < _0x5bd35a['meshes']['length']; _0x2faade++) { var _0x5c1b6e = _0x5bd35a['meshes'][_0x2faade]; if (_0x5c1b6e['material'] && (_0x5c1b6e['computeBonesUsingShaders'] && 0x0 !== _0x5c1b6e['numBoneInfluencers'])) if (_0x5c1b6e['material']['getEffect']() === _0x553dca) _0x5c1b6e['computeBonesUsingShaders'] = !0x1; else if (_0x5c1b6e['subMeshes']) for (var _0x306028 = 0x0, _0x365276 = _0x5c1b6e['subMeshes']; _0x306028 < _0x365276['length']; _0x306028++) { if (_0x365276[_0x306028]['effect'] === _0x553dca) { _0x5c1b6e['computeBonesUsingShaders'] = !0x1; break; } } } } else { var _0x5cc23e = this['_defines'][this['_currentRank']]; if (_0x5cc23e) for (_0x2faade = 0x0; _0x2faade < _0x5cc23e['length']; _0x2faade++) _0x3edd5c = _0x3edd5c['replace']('#define\x20' + _0x5cc23e[_0x2faade], ''); this['_currentRank']++; } return _0x3edd5c; } , _0x5843e3; }() , _0x3e8cfe = function() { return function() {} ; }() , _0x478f45 = function() { function _0x39d1fb(_0x3372bd, _0x199c50, _0x311e29, _0x48bff4, _0x5d7cec, _0x295414, _0x3f8d63, _0x6ea91b, _0x2eb317, _0x3fa203) { var _0x2dda73, _0x2872c9, _0x19a86a = this; if (void 0x0 === _0x48bff4 && (_0x48bff4 = null), void 0x0 === _0x295414 && (_0x295414 = null), void 0x0 === _0x3f8d63 && (_0x3f8d63 = null), void 0x0 === _0x6ea91b && (_0x6ea91b = null), void 0x0 === _0x2eb317 && (_0x2eb317 = null), this['name'] = null, this['defines'] = '', this['onCompiled'] = null, this['onError'] = null, this['onBind'] = null, this['uniqueId'] = 0x0, this['onCompileObservable'] = new _0x1a9947['c'](), this['onErrorObservable'] = new _0x1a9947['c'](), this['_onBindObservable'] = null, this['_bonesComputationForcedToCPU'] = !0x1, this['_uniformBuffersNames'] = {}, this['_samplers'] = {}, this['_isReady'] = !0x1, this['_compilationError'] = '', this['_uniforms'] = {}, this['_key'] = '', this['_fallbacks'] = null, this['_vertexSourceCode'] = '', this['_fragmentSourceCode'] = '', this['_vertexSourceCodeOverride'] = '', this['_fragmentSourceCodeOverride'] = '', this['_transformFeedbackVaryings'] = null, this['_pipelineContext'] = null, this['_valueCache'] = {}, this['name'] = _0x3372bd, _0x199c50['attributes']) { var _0x3172cb = _0x199c50; if (this['_engine'] = _0x311e29, this['_attributesNames'] = _0x3172cb['attributes'], this['_uniformsNames'] = _0x3172cb['uniformsNames']['concat'](_0x3172cb['samplers']), this['_samplerList'] = _0x3172cb['samplers']['slice'](), this['defines'] = _0x3172cb['defines'], this['onError'] = _0x3172cb['onError'], this['onCompiled'] = _0x3172cb['onCompiled'], this['_fallbacks'] = _0x3172cb['fallbacks'], this['_indexParameters'] = _0x3172cb['indexParameters'], this['_transformFeedbackVaryings'] = _0x3172cb['transformFeedbackVaryings'], _0x3172cb['uniformBuffersNames']) for (var _0x14faa5 = 0x0; _0x14faa5 < _0x3172cb['uniformBuffersNames']['length']; _0x14faa5++) this['_uniformBuffersNames'][_0x3172cb['uniformBuffersNames'][_0x14faa5]] = _0x14faa5; } else this['_engine'] = _0x5d7cec, this['defines'] = null == _0x295414 ? '' : _0x295414, this['_uniformsNames'] = _0x311e29['concat'](_0x48bff4), this['_samplerList'] = _0x48bff4 ? _0x48bff4['slice']() : [], this['_attributesNames'] = _0x199c50, this['onError'] = _0x2eb317, this['onCompiled'] = _0x6ea91b, this['_indexParameters'] = _0x3fa203, this['_fallbacks'] = _0x3f8d63; this['uniqueId'] = _0x39d1fb['_uniqueIdSeed']++, _0x3372bd['vertexElement'] ? (_0x2dda73 = document['getElementById'](_0x3372bd['vertexElement'])) || (_0x2dda73 = _0x3372bd['vertexElement']) : _0x2dda73 = _0x3372bd['vertex'] || _0x3372bd, _0x3372bd['fragmentElement'] ? (_0x2872c9 = document['getElementById'](_0x3372bd['fragmentElement'])) || (_0x2872c9 = _0x3372bd['fragmentElement']) : _0x2872c9 = _0x3372bd['fragment'] || _0x3372bd, this['_loadVertexShader'](_0x2dda73, function(_0x1c89e5) { _0x19a86a['_processIncludes'](_0x1c89e5, function(_0x3c7b90) { _0x19a86a['_processShaderConversion'](_0x3c7b90, !0x1, function(_0x8853a7) { _0x19a86a['_loadFragmentShader'](_0x2872c9, function(_0x16623c) { _0x19a86a['_processIncludes'](_0x16623c, function(_0x529155) { _0x19a86a['_processShaderConversion'](_0x529155, !0x0, function(_0x26d009) { if (_0x3372bd) { var _0x409961 = _0x3372bd['vertexElement'] || _0x3372bd['vertex'] || _0x3372bd , _0x347af5 = _0x3372bd['fragmentElement'] || _0x3372bd['fragment'] || _0x3372bd; _0x19a86a['_vertexSourceCode'] = '#define\x20SHADER_NAME\x20vertex:' + _0x409961 + '\x0a' + _0x8853a7, _0x19a86a['_fragmentSourceCode'] = '#define\x20SHADER_NAME\x20fragment:' + _0x347af5 + '\x0a' + _0x26d009; } else _0x19a86a['_vertexSourceCode'] = _0x8853a7, _0x19a86a['_fragmentSourceCode'] = _0x26d009; _0x19a86a['_prepareEffect'](); }); }); }); }); }); }); } return Object['defineProperty'](_0x39d1fb['prototype'], 'onBindObservable', { 'get': function() { return this['_onBindObservable'] || (this['_onBindObservable'] = new _0x1a9947['c']()), this['_onBindObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x39d1fb['prototype'], 'key', { 'get': function() { return this['_key']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x39d1fb['prototype']['isReady'] = function() { return !!this['_isReady'] || !!this['_pipelineContext'] && this['_pipelineContext']['isReady']; } , _0x39d1fb['prototype']['getEngine'] = function() { return this['_engine']; } , _0x39d1fb['prototype']['getPipelineContext'] = function() { return this['_pipelineContext']; } , _0x39d1fb['prototype']['getAttributesNames'] = function() { return this['_attributesNames']; } , _0x39d1fb['prototype']['getAttributeLocation'] = function(_0x5ab29a) { return this['_attributes'][_0x5ab29a]; } , _0x39d1fb['prototype']['getAttributeLocationByName'] = function(_0x1c91a3) { var _0x408171 = this['_attributesNames']['indexOf'](_0x1c91a3); return this['_attributes'][_0x408171]; } , _0x39d1fb['prototype']['getAttributesCount'] = function() { return this['_attributes']['length']; } , _0x39d1fb['prototype']['getUniformIndex'] = function(_0x351047) { return this['_uniformsNames']['indexOf'](_0x351047); } , _0x39d1fb['prototype']['getUniform'] = function(_0x325a6e) { return this['_uniforms'][_0x325a6e]; } , _0x39d1fb['prototype']['getSamplers'] = function() { return this['_samplerList']; } , _0x39d1fb['prototype']['getCompilationError'] = function() { return this['_compilationError']; } , _0x39d1fb['prototype']['executeWhenCompiled'] = function(_0x559ecd) { var _0x4d35af = this; this['isReady']() ? _0x559ecd(this) : (this['onCompileObservable']['add'](function(_0x39190e) { _0x559ecd(_0x39190e); }), this['_pipelineContext'] && !this['_pipelineContext']['isAsync'] || setTimeout(function() { _0x4d35af['_checkIsReady'](); }, 0x10)); } , _0x39d1fb['prototype']['_checkIsReady'] = function() { var _0x5a628c = this; this['isReady']() || setTimeout(function() { _0x5a628c['_checkIsReady'](); }, 0x10); } , _0x39d1fb['prototype']['_loadVertexShader'] = function(_0x4ed117, _0x1e69d8) { var _0x5bcd93; if (_0x1e8d1c['a']['IsWindowObjectExist']() && _0x4ed117 instanceof HTMLElement) return void _0x1e69d8(_0x1e8d1c['a']['GetDOMTextContent'](_0x4ed117)); 'base64:' !== _0x4ed117['substr'](0x0, 0x7) ? _0x39d1fb['ShadersStore'][_0x4ed117 + 'VertexShader'] ? _0x1e69d8(_0x39d1fb['ShadersStore'][_0x4ed117 + 'VertexShader']) : (_0x5bcd93 = '.' === _0x4ed117[0x0] || '/' === _0x4ed117[0x0] || _0x4ed117['indexOf']('http') > -0x1 ? _0x4ed117 : _0x39d1fb['ShadersRepository'] + _0x4ed117, this['_engine']['_loadFile'](_0x5bcd93 + '.vertex.fx', _0x1e69d8)) : _0x1e69d8(window['atob'](_0x4ed117['substr'](0x7))); } , _0x39d1fb['prototype']['_loadFragmentShader'] = function(_0x1bb300, _0x2eb39e) { var _0x267ca8; if (_0x1e8d1c['a']['IsWindowObjectExist']() && _0x1bb300 instanceof HTMLElement) return void _0x2eb39e(_0x1e8d1c['a']['GetDOMTextContent'](_0x1bb300)); 'base64:' !== _0x1bb300['substr'](0x0, 0x7) ? _0x39d1fb['ShadersStore'][_0x1bb300 + 'PixelShader'] ? _0x2eb39e(_0x39d1fb['ShadersStore'][_0x1bb300 + 'PixelShader']) : _0x39d1fb['ShadersStore'][_0x1bb300 + 'FragmentShader'] ? _0x2eb39e(_0x39d1fb['ShadersStore'][_0x1bb300 + 'FragmentShader']) : (_0x267ca8 = '.' === _0x1bb300[0x0] || '/' === _0x1bb300[0x0] || _0x1bb300['indexOf']('http') > -0x1 ? _0x1bb300 : _0x39d1fb['ShadersRepository'] + _0x1bb300, this['_engine']['_loadFile'](_0x267ca8 + '.fragment.fx', _0x2eb39e)) : _0x2eb39e(window['atob'](_0x1bb300['substr'](0x7))); } , _0x39d1fb['prototype']['_dumpShadersSource'] = function(_0x220bff, _0x189057, _0x3e78a4) { var _0x526041 = (this['_engine']['webGLVersion'] > 0x1 ? '#version\x20300\x20es\x0a#define\x20WEBGL2\x20\x0a' : '') + (_0x3e78a4 ? _0x3e78a4 + '\x0a' : ''); _0x189057 = _0x526041 + _0x189057; var _0xcd9046 = 0x2 , _0x353338 = /\n/gm , _0x6abd3d = '\x0a1\x09' + (_0x220bff = _0x526041 + _0x220bff)['replace'](_0x353338, function() { return '\x0a' + _0xcd9046++ + '\x09'; }); _0xcd9046 = 0x2; var _0x4ee123 = '\x0a1\x09' + _0x189057['replace'](_0x353338, function() { return '\x0a' + _0xcd9046++ + '\x09'; }); this['name']['vertexElement'] ? (_0x51f87d['a']['Error']('Vertex\x20shader:\x20' + this['name']['vertexElement'] + _0x6abd3d), _0x51f87d['a']['Error']('Fragment\x20shader:\x20' + this['name']['fragmentElement'] + _0x4ee123)) : this['name']['vertex'] ? (_0x51f87d['a']['Error']('Vertex\x20shader:\x20' + this['name']['vertex'] + _0x6abd3d), _0x51f87d['a']['Error']('Fragment\x20shader:\x20' + this['name']['fragment'] + _0x4ee123)) : (_0x51f87d['a']['Error']('Vertex\x20shader:\x20' + this['name'] + _0x6abd3d), _0x51f87d['a']['Error']('Fragment\x20shader:\x20' + this['name'] + _0x4ee123)); } , _0x39d1fb['prototype']['_processShaderConversion'] = function(_0x3d9183, _0x3ae77b, _0x1541a7) { var _0x3d63ac = this['_processPrecision'](_0x3d9183); if (0x1 != this['_engine']['webGLVersion']) if (-0x1 === _0x3d63ac['indexOf']('#version\x203')) { var _0x275251 = -0x1 !== _0x3d63ac['search'](/#extension.+GL_EXT_draw_buffers.+require/) , _0x3bcb7d = _0x3d63ac['replace'](/#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g, ''); _0x3bcb7d = (_0x3bcb7d = (_0x3bcb7d = (_0x3bcb7d = _0x3bcb7d['replace'](/varying(?![\n\r])\s/g, _0x3ae77b ? 'in\x20' : 'out\x20'))['replace'](/attribute[ \t]/g, 'in\x20'))['replace'](/[ \t]attribute/g, '\x20in'))['replace'](/texture2D\s*\(/g, 'texture('), _0x3ae77b && (_0x3bcb7d = (_0x3bcb7d = (_0x3bcb7d = (_0x3bcb7d = (_0x3bcb7d = (_0x3bcb7d = (_0x3bcb7d = _0x3bcb7d['replace'](/texture2DLodEXT\s*\(/g, 'textureLod('))['replace'](/textureCubeLodEXT\s*\(/g, 'textureLod('))['replace'](/textureCube\s*\(/g, 'texture('))['replace'](/gl_FragDepthEXT/g, 'gl_FragDepth'))['replace'](/gl_FragColor/g, 'glFragColor'))['replace'](/gl_FragData/g, 'glFragData'))['replace'](/void\s+?main\s*\(/g, (_0x275251 ? '' : 'out\x20vec4\x20glFragColor;\x0a') + 'void\x20main(')), -0x1 !== this['defines']['indexOf']('#define\x20MULTIVIEW\x0a') && !_0x3ae77b && (_0x3bcb7d = '#extension\x20GL_OVR_multiview2\x20:\x20require\x0alayout\x20(num_views\x20=\x202)\x20in;\x0a' + _0x3bcb7d), _0x1541a7(_0x3bcb7d); } else _0x1541a7(_0x3d63ac['replace']('#version\x20300\x20es', '')); else _0x1541a7(_0x3d63ac); } , _0x39d1fb['prototype']['_processIncludes'] = function(_0x47e079, _0x127800) { for (var _0x36d07a = this, _0x15e472 = /#include<(.+)>(\((.*)\))*(\[(.*)\])*/g, _0x2940ec = _0x15e472['exec'](_0x47e079), _0x1c2fdc = new String(_0x47e079); null != _0x2940ec; ) { var _0x2669ae = _0x2940ec[0x1]; if (-0x1 !== _0x2669ae['indexOf']('__decl__') && (_0x2669ae = _0x2669ae['replace'](/__decl__/, ''), this['_engine']['supportsUniformBuffers'] && (_0x2669ae = (_0x2669ae = _0x2669ae['replace'](/Vertex/, 'Ubo'))['replace'](/Fragment/, 'Ubo')), _0x2669ae += 'Declaration'), !_0x39d1fb['IncludesShadersStore'][_0x2669ae]) { var _0x2b2c7f = _0x39d1fb['ShadersRepository'] + 'ShadersInclude/' + _0x2669ae + '.fx'; return void this['_engine']['_loadFile'](_0x2b2c7f, function(_0x8079db) { _0x39d1fb['IncludesShadersStore'][_0x2669ae] = _0x8079db, _0x36d07a['_processIncludes'](_0x1c2fdc, _0x127800); }); } var _0x480773 = _0x39d1fb['IncludesShadersStore'][_0x2669ae]; if (_0x2940ec[0x2]) for (var _0x230616 = _0x2940ec[0x3]['split'](','), _0x10e027 = 0x0; _0x10e027 < _0x230616['length']; _0x10e027 += 0x2) { var _0x3445ed = new RegExp(_0x230616[_0x10e027],'g') , _0x32eb47 = _0x230616[_0x10e027 + 0x1]; _0x480773 = _0x480773['replace'](_0x3445ed, _0x32eb47); } if (_0x2940ec[0x4]) { var _0x30c47a = _0x2940ec[0x5]; if (-0x1 !== _0x30c47a['indexOf']('..')) { var _0x10d390 = _0x30c47a['split']('..') , _0x21fcde = parseInt(_0x10d390[0x0]) , _0x13e5c2 = parseInt(_0x10d390[0x1]) , _0x5ce630 = _0x480773['slice'](0x0); _0x480773 = '', isNaN(_0x13e5c2) && (_0x13e5c2 = this['_indexParameters'][_0x10d390[0x1]]); for (var _0x137474 = _0x21fcde; _0x137474 < _0x13e5c2; _0x137474++) this['_engine']['supportsUniformBuffers'] || (_0x5ce630 = _0x5ce630['replace'](/light\{X\}.(\w*)/g, function(_0x59b2f3, _0x2d459c) { return _0x2d459c + '{X}'; })), _0x480773 += _0x5ce630['replace'](/\{X\}/g, _0x137474['toString']()) + '\x0a'; } else this['_engine']['supportsUniformBuffers'] || (_0x480773 = _0x480773['replace'](/light\{X\}.(\w*)/g, function(_0xedac8e, _0x1032e1) { return _0x1032e1 + '{X}'; })), _0x480773 = _0x480773['replace'](/\{X\}/g, _0x30c47a); } _0x1c2fdc = _0x1c2fdc['replace'](_0x2940ec[0x0], _0x480773), _0x2940ec = _0x15e472['exec'](_0x47e079); } _0x127800(_0x1c2fdc); } , _0x39d1fb['prototype']['_processPrecision'] = function(_0x3367c2) { var _0x338535 = this['_engine']['_shouldUseHighPrecisionShader']; return -0x1 === _0x3367c2['indexOf']('precision\x20highp\x20float') ? _0x3367c2 = _0x338535 ? 'precision\x20highp\x20float;\x0a' + _0x3367c2 : 'precision\x20mediump\x20float;\x0a' + _0x3367c2 : _0x338535 || (_0x3367c2 = _0x3367c2['replace']('precision\x20highp\x20float', 'precision\x20mediump\x20float')), _0x3367c2; } , _0x39d1fb['prototype']['_rebuildProgram'] = function(_0x5eb77d, _0x23edb1, _0x4301c9, _0x13b141) { var _0x4dabd4 = this; this['_isReady'] = !0x1, this['_vertexSourceCodeOverride'] = _0x5eb77d, this['_fragmentSourceCodeOverride'] = _0x23edb1, this['onError'] = function(_0x4b3b08, _0x4d2338) { _0x13b141 && _0x13b141(_0x4d2338); } , this['onCompiled'] = function() { for (var _0x2b07cb = _0x4dabd4['getEngine']()['scenes'], _0x1c47ed = 0x0; _0x1c47ed < _0x2b07cb['length']; _0x1c47ed++) _0x2b07cb[_0x1c47ed]['markAllMaterialsAsDirty'](_0x20a51e['a']['MATERIAL_AllDirtyFlag']); _0x4dabd4['_pipelineContext']['_handlesSpectorRebuildCallback'](_0x4301c9); } , this['_fallbacks'] = null, this['_prepareEffect'](); } , _0x39d1fb['prototype']['_prepareEffect'] = function() { var _0x34c23c = this , _0x2df6d1 = this['_attributesNames'] , _0x12f3bd = this['defines'] , _0x5ea16b = this['_fallbacks']; this['_valueCache'] = {}; var _0x2c04ae = this['_pipelineContext']; try { var _0x3b7cb4 = this['_engine']; this['_pipelineContext'] = _0x3b7cb4['createPipelineContext'](); var _0x566d95 = this['_rebuildProgram']['bind'](this); this['_vertexSourceCodeOverride'] && this['_fragmentSourceCodeOverride'] ? _0x3b7cb4['_preparePipelineContext'](this['_pipelineContext'], this['_vertexSourceCodeOverride'], this['_fragmentSourceCodeOverride'], !0x0, _0x566d95, null, this['_transformFeedbackVaryings']) : _0x3b7cb4['_preparePipelineContext'](this['_pipelineContext'], this['_vertexSourceCode'], this['_fragmentSourceCode'], !0x1, _0x566d95, _0x12f3bd, this['_transformFeedbackVaryings']), _0x3b7cb4['_executeWhenRenderingStateIsCompiled'](this['_pipelineContext'], function() { if (_0x3b7cb4['supportsUniformBuffers']) for (var _0x199d28 in _0x34c23c['_uniformBuffersNames']) _0x34c23c['bindUniformBlock'](_0x199d28, _0x34c23c['_uniformBuffersNames'][_0x199d28]); var _0x2fd5fe; for (_0x3b7cb4['getUniforms'](_0x34c23c['_pipelineContext'], _0x34c23c['_uniformsNames'])['forEach'](function(_0x48e30b, _0x24c56e) { _0x34c23c['_uniforms'][_0x34c23c['_uniformsNames'][_0x24c56e]] = _0x48e30b; }), _0x34c23c['_attributes'] = _0x3b7cb4['getAttributes'](_0x34c23c['_pipelineContext'], _0x2df6d1), _0x2fd5fe = 0x0; _0x2fd5fe < _0x34c23c['_samplerList']['length']; _0x2fd5fe++) { null == _0x34c23c['getUniform'](_0x34c23c['_samplerList'][_0x2fd5fe]) && (_0x34c23c['_samplerList']['splice'](_0x2fd5fe, 0x1), _0x2fd5fe--); } _0x34c23c['_samplerList']['forEach'](function(_0x567200, _0xe8102f) { _0x34c23c['_samplers'][_0x567200] = _0xe8102f; }), _0x3b7cb4['bindSamplers'](_0x34c23c), _0x34c23c['_compilationError'] = '', _0x34c23c['_isReady'] = !0x0, _0x34c23c['onCompiled'] && _0x34c23c['onCompiled'](_0x34c23c), _0x34c23c['onCompileObservable']['notifyObservers'](_0x34c23c), _0x34c23c['onCompileObservable']['clear'](), _0x34c23c['_fallbacks'] && _0x34c23c['_fallbacks']['unBindMesh'](), _0x2c04ae && _0x34c23c['getEngine']()['_deletePipelineContext'](_0x2c04ae); }), this['_pipelineContext']['isAsync'] && this['_checkIsReady'](); } catch (_0x1542d3) { this['_compilationError'] = _0x1542d3['message'], _0x51f87d['a']['Error']('Unable\x20to\x20compile\x20effect:'), _0x51f87d['a']['Error']('Uniforms:\x20' + this['_uniformsNames']['map'](function(_0x3bf66a) { return '\x20' + _0x3bf66a; })), _0x51f87d['a']['Error']('Attributes:\x20' + _0x2df6d1['map'](function(_0x17e3eb) { return '\x20' + _0x17e3eb; })), _0x51f87d['a']['Error']('Error:\x20' + this['_compilationError']), _0x2c04ae && (this['_pipelineContext'] = _0x2c04ae, this['_isReady'] = !0x0, this['onError'] && this['onError'](this, this['_compilationError']), this['onErrorObservable']['notifyObservers'](this)), _0x5ea16b && _0x5ea16b['isMoreFallbacks'] ? (_0x51f87d['a']['Error']('Trying\x20next\x20fallback.'), this['defines'] = _0x5ea16b['reduce'](this['defines'], this), this['_prepareEffect']()) : (this['onError'] && this['onError'](this, this['_compilationError']), this['onErrorObservable']['notifyObservers'](this), this['onErrorObservable']['clear'](), this['_fallbacks'] && this['_fallbacks']['unBindMesh']()); } } , Object['defineProperty'](_0x39d1fb['prototype'], 'isSupported', { 'get': function() { return '' === this['_compilationError']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x39d1fb['prototype']['_bindTexture'] = function(_0x595b95, _0x5a6dd9) { this['_engine']['_bindTexture'](this['_samplers'][_0x595b95], _0x5a6dd9); } , _0x39d1fb['prototype']['setTexture'] = function(_0xc4fec2, _0x1fbec5) { this['_engine']['setTexture'](this['_samplers'][_0xc4fec2], this['_uniforms'][_0xc4fec2], _0x1fbec5); } , _0x39d1fb['prototype']['setDepthStencilTexture'] = function(_0x1ce0fe, _0x1648c6) { this['_engine']['setDepthStencilTexture'](this['_samplers'][_0x1ce0fe], this['_uniforms'][_0x1ce0fe], _0x1648c6); } , _0x39d1fb['prototype']['setTextureArray'] = function(_0x4455ae, _0x149db3) { var _0x3377ad = _0x4455ae + 'Ex'; if (-0x1 === this['_samplerList']['indexOf'](_0x3377ad)) for (var _0x28b544 = this['_samplers'][_0x4455ae], _0x1c41c6 = 0x1; _0x1c41c6 < _0x149db3['length']; _0x1c41c6++) this['_samplerList']['splice'](_0x28b544 + _0x1c41c6, 0x0, _0x3377ad), this['_samplers'][_0x3377ad] = _0x28b544 + _0x1c41c6; this['_engine']['setTextureArray'](this['_samplers'][_0x4455ae], this['_uniforms'][_0x4455ae], _0x149db3); } , _0x39d1fb['prototype']['setTextureFromPostProcess'] = function(_0x460372, _0x477caa) { this['_engine']['setTextureFromPostProcess'](this['_samplers'][_0x460372], _0x477caa); } , _0x39d1fb['prototype']['setTextureFromPostProcessOutput'] = function(_0x23fea4, _0x5d4186) { this['_engine']['setTextureFromPostProcessOutput'](this['_samplers'][_0x23fea4], _0x5d4186); } , _0x39d1fb['prototype']['_cacheMatrix'] = function(_0x2dfa44, _0x4959e6) { var _0x5edab7 = this['_valueCache'][_0x2dfa44] , _0x2fac51 = _0x4959e6['updateFlag']; return (void 0x0 === _0x5edab7 || _0x5edab7 !== _0x2fac51) && (this['_valueCache'][_0x2dfa44] = _0x2fac51, !0x0); } , _0x39d1fb['prototype']['_cacheFloat2'] = function(_0x1203cd, _0x3aed5e, _0x59f2d6) { var _0x2bc195 = this['_valueCache'][_0x1203cd]; if (!_0x2bc195) return _0x2bc195 = [_0x3aed5e, _0x59f2d6], this['_valueCache'][_0x1203cd] = _0x2bc195, !0x0; var _0x16e4d5 = !0x1; return _0x2bc195[0x0] !== _0x3aed5e && (_0x2bc195[0x0] = _0x3aed5e, _0x16e4d5 = !0x0), _0x2bc195[0x1] !== _0x59f2d6 && (_0x2bc195[0x1] = _0x59f2d6, _0x16e4d5 = !0x0), _0x16e4d5; } , _0x39d1fb['prototype']['_cacheFloat3'] = function(_0x56f450, _0x1ad5df, _0x37cae8, _0x43c00f) { var _0xd2036c = this['_valueCache'][_0x56f450]; if (!_0xd2036c) return _0xd2036c = [_0x1ad5df, _0x37cae8, _0x43c00f], this['_valueCache'][_0x56f450] = _0xd2036c, !0x0; var _0x6c5014 = !0x1; return _0xd2036c[0x0] !== _0x1ad5df && (_0xd2036c[0x0] = _0x1ad5df, _0x6c5014 = !0x0), _0xd2036c[0x1] !== _0x37cae8 && (_0xd2036c[0x1] = _0x37cae8, _0x6c5014 = !0x0), _0xd2036c[0x2] !== _0x43c00f && (_0xd2036c[0x2] = _0x43c00f, _0x6c5014 = !0x0), _0x6c5014; } , _0x39d1fb['prototype']['_cacheFloat4'] = function(_0xc1abe0, _0x3f75b0, _0x7a4399, _0x27b3d4, _0x117a71) { var _0x1d5086 = this['_valueCache'][_0xc1abe0]; if (!_0x1d5086) return _0x1d5086 = [_0x3f75b0, _0x7a4399, _0x27b3d4, _0x117a71], this['_valueCache'][_0xc1abe0] = _0x1d5086, !0x0; var _0x246bd1 = !0x1; return _0x1d5086[0x0] !== _0x3f75b0 && (_0x1d5086[0x0] = _0x3f75b0, _0x246bd1 = !0x0), _0x1d5086[0x1] !== _0x7a4399 && (_0x1d5086[0x1] = _0x7a4399, _0x246bd1 = !0x0), _0x1d5086[0x2] !== _0x27b3d4 && (_0x1d5086[0x2] = _0x27b3d4, _0x246bd1 = !0x0), _0x1d5086[0x3] !== _0x117a71 && (_0x1d5086[0x3] = _0x117a71, _0x246bd1 = !0x0), _0x246bd1; } , _0x39d1fb['prototype']['bindUniformBuffer'] = function(_0x2c0016, _0x1afbe2) { var _0x46d00f = this['_uniformBuffersNames'][_0x1afbe2]; void 0x0 !== _0x46d00f && _0x39d1fb['_baseCache'][_0x46d00f] !== _0x2c0016 && (_0x39d1fb['_baseCache'][_0x46d00f] = _0x2c0016, this['_engine']['bindUniformBufferBase'](_0x2c0016, _0x46d00f)); } , _0x39d1fb['prototype']['bindUniformBlock'] = function(_0x320cc3, _0x53f9e3) { this['_engine']['bindUniformBlock'](this['_pipelineContext'], _0x320cc3, _0x53f9e3); } , _0x39d1fb['prototype']['setInt'] = function(_0x4b824a, _0x1695d5) { var _0x1c8cf2 = this['_valueCache'][_0x4b824a]; return void 0x0 !== _0x1c8cf2 && _0x1c8cf2 === _0x1695d5 ? this : (this['_valueCache'][_0x4b824a] = _0x1695d5, this['_engine']['setInt'](this['_uniforms'][_0x4b824a], _0x1695d5), this); } , _0x39d1fb['prototype']['setIntArray'] = function(_0x21c37b, _0x118b98) { return this['_valueCache'][_0x21c37b] = null, this['_engine']['setIntArray'](this['_uniforms'][_0x21c37b], _0x118b98), this; } , _0x39d1fb['prototype']['setIntArray2'] = function(_0x32a20f, _0x30fb68) { return this['_valueCache'][_0x32a20f] = null, this['_engine']['setIntArray2'](this['_uniforms'][_0x32a20f], _0x30fb68), this; } , _0x39d1fb['prototype']['setIntArray3'] = function(_0x490e62, _0x3e19a9) { return this['_valueCache'][_0x490e62] = null, this['_engine']['setIntArray3'](this['_uniforms'][_0x490e62], _0x3e19a9), this; } , _0x39d1fb['prototype']['setIntArray4'] = function(_0x2b8549, _0x46712e) { return this['_valueCache'][_0x2b8549] = null, this['_engine']['setIntArray4'](this['_uniforms'][_0x2b8549], _0x46712e), this; } , _0x39d1fb['prototype']['setFloatArray'] = function(_0xe59523, _0x4fa1e6) { return this['_valueCache'][_0xe59523] = null, this['_engine']['setFloatArray'](this['_uniforms'][_0xe59523], _0x4fa1e6), this; } , _0x39d1fb['prototype']['setFloatArray2'] = function(_0x6a138, _0x9fe321) { return this['_valueCache'][_0x6a138] = null, this['_engine']['setFloatArray2'](this['_uniforms'][_0x6a138], _0x9fe321), this; } , _0x39d1fb['prototype']['setFloatArray3'] = function(_0x4b2a43, _0xf2143d) { return this['_valueCache'][_0x4b2a43] = null, this['_engine']['setFloatArray3'](this['_uniforms'][_0x4b2a43], _0xf2143d), this; } , _0x39d1fb['prototype']['setFloatArray4'] = function(_0x3af40b, _0x34bf0e) { return this['_valueCache'][_0x3af40b] = null, this['_engine']['setFloatArray4'](this['_uniforms'][_0x3af40b], _0x34bf0e), this; } , _0x39d1fb['prototype']['setArray'] = function(_0x48b964, _0x3160d2) { return this['_valueCache'][_0x48b964] = null, this['_engine']['setArray'](this['_uniforms'][_0x48b964], _0x3160d2), this; } , _0x39d1fb['prototype']['setArray2'] = function(_0x1573ad, _0x455ab2) { return this['_valueCache'][_0x1573ad] = null, this['_engine']['setArray2'](this['_uniforms'][_0x1573ad], _0x455ab2), this; } , _0x39d1fb['prototype']['setArray3'] = function(_0x3affd, _0x4900ff) { return this['_valueCache'][_0x3affd] = null, this['_engine']['setArray3'](this['_uniforms'][_0x3affd], _0x4900ff), this; } , _0x39d1fb['prototype']['setArray4'] = function(_0x3d8da0, _0x155a4c) { return this['_valueCache'][_0x3d8da0] = null, this['_engine']['setArray4'](this['_uniforms'][_0x3d8da0], _0x155a4c), this; } , _0x39d1fb['prototype']['setMatrices'] = function(_0x272a28, _0x2959d5) { return _0x2959d5 ? (this['_valueCache'][_0x272a28] = null, this['_engine']['setMatrices'](this['_uniforms'][_0x272a28], _0x2959d5), this) : this; } , _0x39d1fb['prototype']['setMatrix'] = function(_0x2cd56b, _0x460144) { return this['_cacheMatrix'](_0x2cd56b, _0x460144) && this['_engine']['setMatrix'](this['_uniforms'][_0x2cd56b], _0x460144), this; } , _0x39d1fb['prototype']['setMatrix3x3'] = function(_0x45af8e, _0xd06960) { return this['_valueCache'][_0x45af8e] = null, this['_engine']['setMatrix3x3'](this['_uniforms'][_0x45af8e], _0xd06960), this; } , _0x39d1fb['prototype']['setMatrix2x2'] = function(_0x52939f, _0x230894) { return this['_valueCache'][_0x52939f] = null, this['_engine']['setMatrix2x2'](this['_uniforms'][_0x52939f], _0x230894), this; } , _0x39d1fb['prototype']['setFloat'] = function(_0x4f5bf0, _0x41a361) { var _0x4dc33d = this['_valueCache'][_0x4f5bf0]; return void 0x0 !== _0x4dc33d && _0x4dc33d === _0x41a361 ? this : (this['_valueCache'][_0x4f5bf0] = _0x41a361, this['_engine']['setFloat'](this['_uniforms'][_0x4f5bf0], _0x41a361), this); } , _0x39d1fb['prototype']['setBool'] = function(_0x4fd82b, _0xf08b3c) { var _0x49fad0 = this['_valueCache'][_0x4fd82b]; return void 0x0 !== _0x49fad0 && _0x49fad0 === _0xf08b3c ? this : (this['_valueCache'][_0x4fd82b] = _0xf08b3c, this['_engine']['setBool'](this['_uniforms'][_0x4fd82b], _0xf08b3c ? 0x1 : 0x0), this); } , _0x39d1fb['prototype']['setVector2'] = function(_0x1bebec, _0x57afb7) { return this['_cacheFloat2'](_0x1bebec, _0x57afb7['x'], _0x57afb7['y']) && this['_engine']['setFloat2'](this['_uniforms'][_0x1bebec], _0x57afb7['x'], _0x57afb7['y']), this; } , _0x39d1fb['prototype']['setFloat2'] = function(_0x393da1, _0x3c8973, _0x2e39a8) { return this['_cacheFloat2'](_0x393da1, _0x3c8973, _0x2e39a8) && this['_engine']['setFloat2'](this['_uniforms'][_0x393da1], _0x3c8973, _0x2e39a8), this; } , _0x39d1fb['prototype']['setVector3'] = function(_0x2a11da, _0x4579d4) { return this['_cacheFloat3'](_0x2a11da, _0x4579d4['x'], _0x4579d4['y'], _0x4579d4['z']) && this['_engine']['setFloat3'](this['_uniforms'][_0x2a11da], _0x4579d4['x'], _0x4579d4['y'], _0x4579d4['z']), this; } , _0x39d1fb['prototype']['setFloat3'] = function(_0x28f798, _0x5d31f2, _0x3e19b8, _0x1b2767) { return this['_cacheFloat3'](_0x28f798, _0x5d31f2, _0x3e19b8, _0x1b2767) && this['_engine']['setFloat3'](this['_uniforms'][_0x28f798], _0x5d31f2, _0x3e19b8, _0x1b2767), this; } , _0x39d1fb['prototype']['setVector4'] = function(_0x1c5b4f, _0x3b7d19) { return this['_cacheFloat4'](_0x1c5b4f, _0x3b7d19['x'], _0x3b7d19['y'], _0x3b7d19['z'], _0x3b7d19['w']) && this['_engine']['setFloat4'](this['_uniforms'][_0x1c5b4f], _0x3b7d19['x'], _0x3b7d19['y'], _0x3b7d19['z'], _0x3b7d19['w']), this; } , _0x39d1fb['prototype']['setFloat4'] = function(_0x582c90, _0x135d25, _0x477114, _0x2af92b, _0x5ac140) { return this['_cacheFloat4'](_0x582c90, _0x135d25, _0x477114, _0x2af92b, _0x5ac140) && this['_engine']['setFloat4'](this['_uniforms'][_0x582c90], _0x135d25, _0x477114, _0x2af92b, _0x5ac140), this; } , _0x39d1fb['prototype']['setColor3'] = function(_0x2f2ea8, _0x4e294d) { return this['_cacheFloat3'](_0x2f2ea8, _0x4e294d['r'], _0x4e294d['g'], _0x4e294d['b']) && this['_engine']['setColor3'](this['_uniforms'][_0x2f2ea8], _0x4e294d), this; } , _0x39d1fb['prototype']['setColor4'] = function(_0x260a10, _0x10792a, _0x1465a8) { return this['_cacheFloat4'](_0x260a10, _0x10792a['r'], _0x10792a['g'], _0x10792a['b'], _0x1465a8) && this['_engine']['setColor4'](this['_uniforms'][_0x260a10], _0x10792a, _0x1465a8), this; } , _0x39d1fb['prototype']['setDirectColor4'] = function(_0x393da2, _0x361e49) { return this['_cacheFloat4'](_0x393da2, _0x361e49['r'], _0x361e49['g'], _0x361e49['b'], _0x361e49['a']) && this['_engine']['setDirectColor4'](this['_uniforms'][_0x393da2], _0x361e49), this; } , _0x39d1fb['prototype']['dispose'] = function() { this['_engine']['_releaseEffect'](this); } , _0x39d1fb['RegisterShader'] = function(_0x3a0d6d, _0x2e8d40, _0x2a6d2c) { _0x2e8d40 && (_0x39d1fb['ShadersStore'][_0x3a0d6d + 'PixelShader'] = _0x2e8d40), _0x2a6d2c && (_0x39d1fb['ShadersStore'][_0x3a0d6d + 'VertexShader'] = _0x2a6d2c); } , _0x39d1fb['ResetCache'] = function() { _0x39d1fb['_baseCache'] = {}; } , _0x39d1fb['ShadersRepository'] = 'src/Shaders/', _0x39d1fb['_uniqueIdSeed'] = 0x0, _0x39d1fb['_baseCache'] = {}, _0x39d1fb['ShadersStore'] = {}, _0x39d1fb['IncludesShadersStore'] = {}, _0x39d1fb; }(); } , function(_0x819878, _0x544379, _0x54bfc0) { 'use strict'; _0x54bfc0['d'](_0x544379, 'a', function() { return _0x566c42; }); var _0x566c42 = function() { function _0x16225b() {} return _0x16225b['_AddLogEntry'] = function(_0x1847ab) { _0x16225b['_LogCache'] = _0x1847ab + _0x16225b['_LogCache'], _0x16225b['OnNewCacheEntry'] && _0x16225b['OnNewCacheEntry'](_0x1847ab); } , _0x16225b['_FormatMessage'] = function(_0x40f7fc) { var _0x4d18ed = function(_0xec2633) { return _0xec2633 < 0xa ? '0' + _0xec2633 : '' + _0xec2633; } , _0x18d1e9 = new Date(); return '[' + _0x4d18ed(_0x18d1e9['getHours']()) + ':' + _0x4d18ed(_0x18d1e9['getMinutes']()) + ':' + _0x4d18ed(_0x18d1e9['getSeconds']()) + ']:\x20' + _0x40f7fc; } , _0x16225b['_LogDisabled'] = function(_0x35e827) {} , _0x16225b['_LogEnabled'] = function(_0x1b0ad8) { var _0x126ed1 = _0x16225b['_FormatMessage'](_0x1b0ad8); console['log']('BJS\x20-\x20' + _0x126ed1); var _0xabfbe5 = '' + _0x126ed1 + '
'; _0x16225b['_AddLogEntry'](_0xabfbe5); } , _0x16225b['_WarnDisabled'] = function(_0x5908e5) {} , _0x16225b['_WarnEnabled'] = function(_0x2292a0) { var _0x2ffc19 = _0x16225b['_FormatMessage'](_0x2292a0); console['warn']('BJS\x20-\x20' + _0x2ffc19); var _0x3dd232 = '' + _0x2ffc19 + '
'; _0x16225b['_AddLogEntry'](_0x3dd232); } , _0x16225b['_ErrorDisabled'] = function(_0x3adf51) {} , _0x16225b['_ErrorEnabled'] = function(_0x4a8e03) { _0x16225b['errorsCount']++; var _0x2d261d = _0x16225b['_FormatMessage'](_0x4a8e03); console['error']('BJS\x20-\x20' + _0x2d261d); var _0x56460d = '' + _0x2d261d + '
'; _0x16225b['_AddLogEntry'](_0x56460d); } , Object['defineProperty'](_0x16225b, 'LogCache', { 'get': function() { return _0x16225b['_LogCache']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x16225b['ClearLogCache'] = function() { _0x16225b['_LogCache'] = '', _0x16225b['errorsCount'] = 0x0; } , Object['defineProperty'](_0x16225b, 'LogLevels', { 'set': function(_0x3eb66f) { (_0x3eb66f & _0x16225b['MessageLogLevel']) === _0x16225b['MessageLogLevel'] ? _0x16225b['Log'] = _0x16225b['_LogEnabled'] : _0x16225b['Log'] = _0x16225b['_LogDisabled'], (_0x3eb66f & _0x16225b['WarningLogLevel']) === _0x16225b['WarningLogLevel'] ? _0x16225b['Warn'] = _0x16225b['_WarnEnabled'] : _0x16225b['Warn'] = _0x16225b['_WarnDisabled'], (_0x3eb66f & _0x16225b['ErrorLogLevel']) === _0x16225b['ErrorLogLevel'] ? _0x16225b['Error'] = _0x16225b['_ErrorEnabled'] : _0x16225b['Error'] = _0x16225b['_ErrorDisabled']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x16225b['NoneLogLevel'] = 0x0, _0x16225b['MessageLogLevel'] = 0x1, _0x16225b['WarningLogLevel'] = 0x2, _0x16225b['ErrorLogLevel'] = 0x4, _0x16225b['AllLogLevel'] = 0x7, _0x16225b['_LogCache'] = '', _0x16225b['errorsCount'] = 0x0, _0x16225b['Log'] = _0x16225b['_LogEnabled'], _0x16225b['Warn'] = _0x16225b['_WarnEnabled'], _0x16225b['Error'] = _0x16225b['_ErrorEnabled'], _0x16225b; }(); } , function(_0x10df5b, _0x42ddd3, _0x4654a8) { 'use strict'; _0x4654a8['d'](_0x42ddd3, 'a', function() { return _0x281880; }); var _0x17015b = _0x4654a8(0x1) , _0x9d2a2d = _0x4654a8(0x2) , _0x2b4355 = _0x4654a8(0x8) , _0x292450 = _0x4654a8(0x9) , _0x261146 = _0x4654a8(0x0) , _0x40afb4 = _0x4654a8(0x2c) , _0x5d6dab = _0x4654a8(0x3) , _0x2eccda = _0x4654a8(0x16) , _0x3b0ffe = _0x4654a8(0x13) , _0x281880 = function(_0x173745) { function _0x419ce6(_0x22d610, _0x2e2176, _0x17459f, _0xbf91df, _0x46090d, _0x5d20cc, _0x4b4ffa, _0x361c90, _0x56370f, _0x4b108e) { void 0x0 === _0x17459f && (_0x17459f = !0x1), void 0x0 === _0xbf91df && (_0xbf91df = !0x0), void 0x0 === _0x46090d && (_0x46090d = _0x419ce6['TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x5d20cc && (_0x5d20cc = null), void 0x0 === _0x4b4ffa && (_0x4b4ffa = null), void 0x0 === _0x361c90 && (_0x361c90 = null), void 0x0 === _0x56370f && (_0x56370f = !0x1); var _0x1113ff = _0x173745['call'](this, _0x2e2176) || this; if (_0x1113ff['url'] = null, _0x1113ff['uOffset'] = 0x0, _0x1113ff['vOffset'] = 0x0, _0x1113ff['uScale'] = 0x1, _0x1113ff['vScale'] = 0x1, _0x1113ff['uAng'] = 0x0, _0x1113ff['vAng'] = 0x0, _0x1113ff['wAng'] = 0x0, _0x1113ff['uRotationCenter'] = 0.5, _0x1113ff['vRotationCenter'] = 0.5, _0x1113ff['wRotationCenter'] = 0.5, _0x1113ff['inspectableCustomProperties'] = null, _0x1113ff['_noMipmap'] = !0x1, _0x1113ff['_invertY'] = !0x1, _0x1113ff['_rowGenerationMatrix'] = null, _0x1113ff['_cachedTextureMatrix'] = null, _0x1113ff['_projectionModeMatrix'] = null, _0x1113ff['_t0'] = null, _0x1113ff['_t1'] = null, _0x1113ff['_t2'] = null, _0x1113ff['_cachedUOffset'] = -0x1, _0x1113ff['_cachedVOffset'] = -0x1, _0x1113ff['_cachedUScale'] = 0x0, _0x1113ff['_cachedVScale'] = 0x0, _0x1113ff['_cachedUAng'] = -0x1, _0x1113ff['_cachedVAng'] = -0x1, _0x1113ff['_cachedWAng'] = -0x1, _0x1113ff['_cachedProjectionMatrixId'] = -0x1, _0x1113ff['_cachedCoordinatesMode'] = -0x1, _0x1113ff['_initialSamplingMode'] = _0x419ce6['BILINEAR_SAMPLINGMODE'], _0x1113ff['_buffer'] = null, _0x1113ff['_deleteBuffer'] = !0x1, _0x1113ff['_format'] = null, _0x1113ff['_delayedOnLoad'] = null, _0x1113ff['_delayedOnError'] = null, _0x1113ff['onLoadObservable'] = new _0x2b4355['c'](), _0x1113ff['_isBlocking'] = !0x0, _0x1113ff['name'] = _0x22d610 || '', _0x1113ff['url'] = _0x22d610, _0x1113ff['_noMipmap'] = _0x17459f, _0x1113ff['_invertY'] = _0xbf91df, _0x1113ff['_initialSamplingMode'] = _0x46090d, _0x1113ff['_buffer'] = _0x361c90, _0x1113ff['_deleteBuffer'] = _0x56370f, _0x4b108e && (_0x1113ff['_format'] = _0x4b108e), !(_0x2e2176 = _0x1113ff['getScene']())) return _0x1113ff; _0x2e2176['getEngine']()['onBeforeTextureInitObservable']['notifyObservers'](_0x1113ff); var _0x58c17f = function() { _0x1113ff['_texture'] && _0x1113ff['_texture']['_invertVScale'] && (_0x1113ff['vScale'] = -0x1), _0x1113ff['onLoadObservable']['hasObservers']() && _0x1113ff['onLoadObservable']['notifyObservers'](_0x1113ff), _0x5d20cc && _0x5d20cc(), !_0x1113ff['isBlocking'] && _0x2e2176 && _0x2e2176['resetCachedMaterial'](); }; return _0x1113ff['url'] ? (_0x1113ff['_texture'] = _0x1113ff['_getFromCache'](_0x1113ff['url'], _0x17459f, _0x46090d, _0xbf91df), _0x1113ff['_texture'] ? _0x1113ff['_texture']['isReady'] ? _0x292450['h']['SetImmediate'](function() { return _0x58c17f(); }) : _0x1113ff['_texture']['onLoadedObservable']['add'](_0x58c17f) : _0x2e2176['useDelayedTextureLoading'] ? (_0x1113ff['delayLoadState'] = _0x5d6dab['a']['DELAYLOADSTATE_NOTLOADED'], _0x1113ff['_delayedOnLoad'] = _0x58c17f, _0x1113ff['_delayedOnError'] = _0x4b4ffa) : (_0x1113ff['_texture'] = _0x2e2176['getEngine']()['createTexture'](_0x1113ff['url'], _0x17459f, _0xbf91df, _0x2e2176, _0x46090d, _0x58c17f, _0x4b4ffa, _0x1113ff['_buffer'], void 0x0, _0x1113ff['_format']), _0x56370f && delete _0x1113ff['_buffer']), _0x1113ff) : (_0x1113ff['_delayedOnLoad'] = _0x58c17f, _0x1113ff['_delayedOnError'] = _0x4b4ffa, _0x1113ff); } return _0x17015b['d'](_0x419ce6, _0x173745), Object['defineProperty'](_0x419ce6['prototype'], 'noMipmap', { 'get': function() { return this['_noMipmap']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x419ce6['prototype'], 'isBlocking', { 'get': function() { return this['_isBlocking']; }, 'set': function(_0x13fb84) { this['_isBlocking'] = _0x13fb84; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x419ce6['prototype'], 'samplingMode', { 'get': function() { return this['_texture'] ? this['_texture']['samplingMode'] : this['_initialSamplingMode']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x419ce6['prototype'], 'invertY', { 'get': function() { return this['_invertY']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x419ce6['prototype']['updateURL'] = function(_0x33300e, _0x2239b4, _0x18390a) { void 0x0 === _0x2239b4 && (_0x2239b4 = null), this['url'] && (this['releaseInternalTexture'](), this['getScene']()['markAllMaterialsAsDirty'](_0x5d6dab['a']['MATERIAL_TextureDirtyFlag'])), this['url'] = _0x33300e, this['_buffer'] = _0x2239b4, this['delayLoadState'] = _0x5d6dab['a']['DELAYLOADSTATE_NOTLOADED'], _0x18390a && (this['_delayedOnLoad'] = _0x18390a), this['delayLoad'](); } , _0x419ce6['prototype']['delayLoad'] = function() { if (this['delayLoadState'] === _0x5d6dab['a']['DELAYLOADSTATE_NOTLOADED']) { var _0x805abb = this['getScene'](); _0x805abb && (this['delayLoadState'] = _0x5d6dab['a']['DELAYLOADSTATE_LOADED'], this['_texture'] = this['_getFromCache'](this['url'], this['_noMipmap'], this['samplingMode'], this['_invertY']), this['_texture'] ? this['_delayedOnLoad'] && (this['_texture']['isReady'] ? _0x292450['h']['SetImmediate'](this['_delayedOnLoad']) : this['_texture']['onLoadedObservable']['add'](this['_delayedOnLoad'])) : (this['_texture'] = _0x805abb['getEngine']()['createTexture'](this['url'], this['_noMipmap'], this['_invertY'], _0x805abb, this['samplingMode'], this['_delayedOnLoad'], this['_delayedOnError'], this['_buffer'], null, this['_format']), this['_deleteBuffer'] && delete this['_buffer']), this['_delayedOnLoad'] = null, this['_delayedOnError'] = null); } } , _0x419ce6['prototype']['_prepareRowForTextureGeneration'] = function(_0x9c6d23, _0x61c9d6, _0x3098d5, _0x339726) { _0x9c6d23 *= this['uScale'], _0x61c9d6 *= this['vScale'], _0x9c6d23 -= this['uRotationCenter'] * this['uScale'], _0x61c9d6 -= this['vRotationCenter'] * this['vScale'], _0x3098d5 -= this['wRotationCenter'], _0x261146['x']['TransformCoordinatesFromFloatsToRef'](_0x9c6d23, _0x61c9d6, _0x3098d5, this['_rowGenerationMatrix'], _0x339726), _0x339726['x'] += this['uRotationCenter'] * this['uScale'] + this['uOffset'], _0x339726['y'] += this['vRotationCenter'] * this['vScale'] + this['vOffset'], _0x339726['z'] += this['wRotationCenter']; } , _0x419ce6['prototype']['getTextureMatrix'] = function() { var _0x3141d7 = this; if (this['uOffset'] === this['_cachedUOffset'] && this['vOffset'] === this['_cachedVOffset'] && this['uScale'] === this['_cachedUScale'] && this['vScale'] === this['_cachedVScale'] && this['uAng'] === this['_cachedUAng'] && this['vAng'] === this['_cachedVAng'] && this['wAng'] === this['_cachedWAng']) return this['_cachedTextureMatrix']; this['_cachedUOffset'] = this['uOffset'], this['_cachedVOffset'] = this['vOffset'], this['_cachedUScale'] = this['uScale'], this['_cachedVScale'] = this['vScale'], this['_cachedUAng'] = this['uAng'], this['_cachedVAng'] = this['vAng'], this['_cachedWAng'] = this['wAng'], this['_cachedTextureMatrix'] || (this['_cachedTextureMatrix'] = _0x261146['j']['Zero'](), this['_rowGenerationMatrix'] = new _0x261146['j'](), this['_t0'] = _0x261146['x']['Zero'](), this['_t1'] = _0x261146['x']['Zero'](), this['_t2'] = _0x261146['x']['Zero']()), _0x261146['j']['RotationYawPitchRollToRef'](this['vAng'], this['uAng'], this['wAng'], this['_rowGenerationMatrix']), this['_prepareRowForTextureGeneration'](0x0, 0x0, 0x0, this['_t0']), this['_prepareRowForTextureGeneration'](0x1, 0x0, 0x0, this['_t1']), this['_prepareRowForTextureGeneration'](0x0, 0x1, 0x0, this['_t2']), this['_t1']['subtractInPlace'](this['_t0']), this['_t2']['subtractInPlace'](this['_t0']), _0x261146['j']['FromValuesToRef'](this['_t1']['x'], this['_t1']['y'], this['_t1']['z'], 0x0, this['_t2']['x'], this['_t2']['y'], this['_t2']['z'], 0x0, this['_t0']['x'], this['_t0']['y'], this['_t0']['z'], 0x0, 0x0, 0x0, 0x0, 0x1, this['_cachedTextureMatrix']); var _0x52d6c8 = this['getScene'](); return _0x52d6c8 ? (_0x52d6c8['markAllMaterialsAsDirty'](_0x5d6dab['a']['MATERIAL_TextureDirtyFlag'], function(_0x5a550d) { return _0x5a550d['hasTexture'](_0x3141d7); }), this['_cachedTextureMatrix']) : this['_cachedTextureMatrix']; } , _0x419ce6['prototype']['getReflectionTextureMatrix'] = function() { var _0x32d1d3 = this , _0x48780b = this['getScene'](); if (!_0x48780b) return this['_cachedTextureMatrix']; if (this['uOffset'] === this['_cachedUOffset'] && this['vOffset'] === this['_cachedVOffset'] && this['uScale'] === this['_cachedUScale'] && this['vScale'] === this['_cachedVScale'] && this['coordinatesMode'] === this['_cachedCoordinatesMode']) { if (this['coordinatesMode'] !== _0x419ce6['PROJECTION_MODE']) return this['_cachedTextureMatrix']; if (this['_cachedProjectionMatrixId'] === _0x48780b['getProjectionMatrix']()['updateFlag']) return this['_cachedTextureMatrix']; } switch (this['_cachedTextureMatrix'] || (this['_cachedTextureMatrix'] = _0x261146['j']['Zero']()), this['_projectionModeMatrix'] || (this['_projectionModeMatrix'] = _0x261146['j']['Zero']()), this['_cachedUOffset'] = this['uOffset'], this['_cachedVOffset'] = this['vOffset'], this['_cachedUScale'] = this['uScale'], this['_cachedVScale'] = this['vScale'], this['_cachedCoordinatesMode'] = this['coordinatesMode'], this['coordinatesMode']) { case _0x419ce6['PLANAR_MODE']: _0x261146['j']['IdentityToRef'](this['_cachedTextureMatrix']), this['_cachedTextureMatrix'][0x0] = this['uScale'], this['_cachedTextureMatrix'][0x5] = this['vScale'], this['_cachedTextureMatrix'][0xc] = this['uOffset'], this['_cachedTextureMatrix'][0xd] = this['vOffset']; break; case _0x419ce6['PROJECTION_MODE']: _0x261146['j']['FromValuesToRef'](0.5, 0x0, 0x0, 0x0, 0x0, -0.5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0.5, 0.5, 0x1, 0x1, this['_projectionModeMatrix']); var _0x3bdddd = _0x48780b['getProjectionMatrix'](); this['_cachedProjectionMatrixId'] = _0x3bdddd['updateFlag'], _0x3bdddd['multiplyToRef'](this['_projectionModeMatrix'], this['_cachedTextureMatrix']); break; default: _0x261146['j']['IdentityToRef'](this['_cachedTextureMatrix']); } return _0x48780b['markAllMaterialsAsDirty'](_0x5d6dab['a']['MATERIAL_TextureDirtyFlag'], function(_0x1b46cd) { return -0x1 !== _0x1b46cd['getActiveTextures']()['indexOf'](_0x32d1d3); }), this['_cachedTextureMatrix']; } , _0x419ce6['prototype']['clone'] = function() { var _0x2cbb42 = this; return _0x9d2a2d['a']['Clone'](function() { return new _0x419ce6(_0x2cbb42['_texture'] ? _0x2cbb42['_texture']['url'] : null,_0x2cbb42['getScene'](),_0x2cbb42['_noMipmap'],_0x2cbb42['_invertY'],_0x2cbb42['samplingMode'],void 0x0,void 0x0,_0x2cbb42['_texture'] ? _0x2cbb42['_texture']['_buffer'] : void 0x0); }, this); } , _0x419ce6['prototype']['serialize'] = function() { var _0x337ffd = _0x173745['prototype']['serialize']['call'](this); return 'string' == typeof this['_buffer'] && 'data:' === this['_buffer']['substr'](0x0, 0x5) && (_0x337ffd['base64String'] = this['_buffer'], _0x337ffd['name'] = _0x337ffd['name']['replace']('data:', '')), _0x337ffd['invertY'] = this['_invertY'], _0x337ffd['samplingMode'] = this['samplingMode'], _0x337ffd; } , _0x419ce6['prototype']['getClassName'] = function() { return 'Texture'; } , _0x419ce6['prototype']['dispose'] = function() { _0x173745['prototype']['dispose']['call'](this), this['onLoadObservable']['clear'](), this['_delayedOnLoad'] = null, this['_delayedOnError'] = null; } , _0x419ce6['Parse'] = function(_0x489b01, _0x9e889e, _0x59b518) { if (_0x489b01['customType']) { var _0x242736 = _0x292450['h']['Instantiate'](_0x489b01['customType'])['Parse'](_0x489b01, _0x9e889e, _0x59b518); return _0x489b01['samplingMode'] && _0x242736['updateSamplingMode'] && _0x242736['_samplingMode'] && _0x242736['_samplingMode'] !== _0x489b01['samplingMode'] && _0x242736['updateSamplingMode'](_0x489b01['samplingMode']), _0x242736; } if (_0x489b01['isCube'] && !_0x489b01['isRenderTarget']) return _0x419ce6['_CubeTextureParser'](_0x489b01, _0x9e889e, _0x59b518); if (!_0x489b01['name'] && !_0x489b01['isRenderTarget']) return null; var _0x1f80c3 = _0x9d2a2d['a']['Parse'](function() { var _0x1b4290, _0x26395a = !0x0; if (_0x489b01['noMipmap'] && (_0x26395a = !0x1), _0x489b01['mirrorPlane']) { var _0x45871a = _0x419ce6['_CreateMirror'](_0x489b01['name'], _0x489b01['renderTargetSize'], _0x9e889e, _0x26395a); return _0x45871a['_waitingRenderList'] = _0x489b01['renderList'], _0x45871a['mirrorPlane'] = _0x261146['n']['FromArray'](_0x489b01['mirrorPlane']), _0x45871a; } if (_0x489b01['isRenderTarget']) { var _0xf4f08e = null; if (_0x489b01['isCube']) { if (_0x9e889e['reflectionProbes']) for (var _0x29ad57 = 0x0; _0x29ad57 < _0x9e889e['reflectionProbes']['length']; _0x29ad57++) { var _0x14fedf = _0x9e889e['reflectionProbes'][_0x29ad57]; if (_0x14fedf['name'] === _0x489b01['name']) return _0x14fedf['cubeTexture']; } } else (_0xf4f08e = _0x419ce6['_CreateRenderTargetTexture'](_0x489b01['name'], _0x489b01['renderTargetSize'], _0x9e889e, _0x26395a))['_waitingRenderList'] = _0x489b01['renderList']; return _0xf4f08e; } if (_0x489b01['base64String']) _0x1b4290 = _0x419ce6['CreateFromBase64String'](_0x489b01['base64String'], _0x489b01['name'], _0x9e889e, !_0x26395a); else { var _0xd10fd1 = _0x59b518 + _0x489b01['name']; _0x419ce6['UseSerializedUrlIfAny'] && _0x489b01['url'] && (_0xd10fd1 = _0x489b01['url']), _0x1b4290 = new _0x419ce6(_0xd10fd1,_0x9e889e,!_0x26395a,_0x489b01['invertY']); } return _0x1b4290; }, _0x489b01, _0x9e889e); if (_0x489b01['samplingMode']) { var _0x7c0f5d = _0x489b01['samplingMode']; _0x1f80c3 && _0x1f80c3['samplingMode'] !== _0x7c0f5d && _0x1f80c3['updateSamplingMode'](_0x7c0f5d); } if (_0x1f80c3 && _0x489b01['animations']) for (var _0x144145 = 0x0; _0x144145 < _0x489b01['animations']['length']; _0x144145++) { var _0x1d11fe = _0x489b01['animations'][_0x144145] , _0x50e317 = _0x2eccda['a']['GetClass']('BABYLON.Animation'); _0x50e317 && _0x1f80c3['animations']['push'](_0x50e317['Parse'](_0x1d11fe)); } return _0x1f80c3; } , _0x419ce6['CreateFromBase64String'] = function(_0x556a7f, _0x20f6b9, _0x29711b, _0x21158a, _0x8b7272, _0x21d846, _0x492c3a, _0x37ec2d, _0x579ef4) { return void 0x0 === _0x21d846 && (_0x21d846 = _0x419ce6['TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x492c3a && (_0x492c3a = null), void 0x0 === _0x37ec2d && (_0x37ec2d = null), void 0x0 === _0x579ef4 && (_0x579ef4 = _0x5d6dab['a']['TEXTUREFORMAT_RGBA']), new _0x419ce6('data:' + _0x20f6b9,_0x29711b,_0x21158a,_0x8b7272,_0x21d846,_0x492c3a,_0x37ec2d,_0x556a7f,!0x1,_0x579ef4); } , _0x419ce6['LoadFromDataString'] = function(_0x3163f0, _0x19e261, _0x1d8838, _0x23a305, _0x3e9733, _0x674355, _0xac2125, _0x3ca386, _0x243944, _0x48ef0c) { return void 0x0 === _0x23a305 && (_0x23a305 = !0x1), void 0x0 === _0x3e9733 && (_0x3e9733 = !0x1), void 0x0 === _0x674355 && (_0x674355 = !0x0), void 0x0 === _0xac2125 && (_0xac2125 = _0x419ce6['TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x3ca386 && (_0x3ca386 = null), void 0x0 === _0x243944 && (_0x243944 = null), void 0x0 === _0x48ef0c && (_0x48ef0c = _0x5d6dab['a']['TEXTUREFORMAT_RGBA']), 'data:' !== _0x3163f0['substr'](0x0, 0x5) && (_0x3163f0 = 'data:' + _0x3163f0), new _0x419ce6(_0x3163f0,_0x1d8838,_0x3e9733,_0x674355,_0xac2125,_0x3ca386,_0x243944,_0x19e261,_0x23a305,_0x48ef0c); } , _0x419ce6['_CubeTextureParser'] = function(_0x23ff05, _0x14f08a, _0xa0b4d6) { throw _0x3b0ffe['a']['WarnImport']('CubeTexture'); } , _0x419ce6['_CreateMirror'] = function(_0x37cdda, _0x138220, _0x504b24, _0x282eef) { throw _0x3b0ffe['a']['WarnImport']('MirrorTexture'); } , _0x419ce6['_CreateRenderTargetTexture'] = function(_0x4dd686, _0x3bbb76, _0x37f51d, _0x2914f0) { throw _0x3b0ffe['a']['WarnImport']('RenderTargetTexture'); } , _0x419ce6['NEAREST_SAMPLINGMODE'] = _0x5d6dab['a']['TEXTURE_NEAREST_SAMPLINGMODE'], _0x419ce6['NEAREST_NEAREST_MIPLINEAR'] = _0x5d6dab['a']['TEXTURE_NEAREST_NEAREST_MIPLINEAR'], _0x419ce6['BILINEAR_SAMPLINGMODE'] = _0x5d6dab['a']['TEXTURE_BILINEAR_SAMPLINGMODE'], _0x419ce6['LINEAR_LINEAR_MIPNEAREST'] = _0x5d6dab['a']['TEXTURE_LINEAR_LINEAR_MIPNEAREST'], _0x419ce6['TRILINEAR_SAMPLINGMODE'] = _0x5d6dab['a']['TEXTURE_TRILINEAR_SAMPLINGMODE'], _0x419ce6['LINEAR_LINEAR_MIPLINEAR'] = _0x5d6dab['a']['TEXTURE_LINEAR_LINEAR_MIPLINEAR'], _0x419ce6['NEAREST_NEAREST_MIPNEAREST'] = _0x5d6dab['a']['TEXTURE_NEAREST_NEAREST_MIPNEAREST'], _0x419ce6['NEAREST_LINEAR_MIPNEAREST'] = _0x5d6dab['a']['TEXTURE_NEAREST_LINEAR_MIPNEAREST'], _0x419ce6['NEAREST_LINEAR_MIPLINEAR'] = _0x5d6dab['a']['TEXTURE_NEAREST_LINEAR_MIPLINEAR'], _0x419ce6['NEAREST_LINEAR'] = _0x5d6dab['a']['TEXTURE_NEAREST_LINEAR'], _0x419ce6['NEAREST_NEAREST'] = _0x5d6dab['a']['TEXTURE_NEAREST_NEAREST'], _0x419ce6['LINEAR_NEAREST_MIPNEAREST'] = _0x5d6dab['a']['TEXTURE_LINEAR_NEAREST_MIPNEAREST'], _0x419ce6['LINEAR_NEAREST_MIPLINEAR'] = _0x5d6dab['a']['TEXTURE_LINEAR_NEAREST_MIPLINEAR'], _0x419ce6['LINEAR_LINEAR'] = _0x5d6dab['a']['TEXTURE_LINEAR_LINEAR'], _0x419ce6['LINEAR_NEAREST'] = _0x5d6dab['a']['TEXTURE_LINEAR_NEAREST'], _0x419ce6['EXPLICIT_MODE'] = _0x5d6dab['a']['TEXTURE_EXPLICIT_MODE'], _0x419ce6['SPHERICAL_MODE'] = _0x5d6dab['a']['TEXTURE_SPHERICAL_MODE'], _0x419ce6['PLANAR_MODE'] = _0x5d6dab['a']['TEXTURE_PLANAR_MODE'], _0x419ce6['CUBIC_MODE'] = _0x5d6dab['a']['TEXTURE_CUBIC_MODE'], _0x419ce6['PROJECTION_MODE'] = _0x5d6dab['a']['TEXTURE_PROJECTION_MODE'], _0x419ce6['SKYBOX_MODE'] = _0x5d6dab['a']['TEXTURE_SKYBOX_MODE'], _0x419ce6['INVCUBIC_MODE'] = _0x5d6dab['a']['TEXTURE_INVCUBIC_MODE'], _0x419ce6['EQUIRECTANGULAR_MODE'] = _0x5d6dab['a']['TEXTURE_EQUIRECTANGULAR_MODE'], _0x419ce6['FIXED_EQUIRECTANGULAR_MODE'] = _0x5d6dab['a']['TEXTURE_FIXED_EQUIRECTANGULAR_MODE'], _0x419ce6['FIXED_EQUIRECTANGULAR_MIRRORED_MODE'] = _0x5d6dab['a']['TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE'], _0x419ce6['CLAMP_ADDRESSMODE'] = _0x5d6dab['a']['TEXTURE_CLAMP_ADDRESSMODE'], _0x419ce6['WRAP_ADDRESSMODE'] = _0x5d6dab['a']['TEXTURE_WRAP_ADDRESSMODE'], _0x419ce6['MIRROR_ADDRESSMODE'] = _0x5d6dab['a']['TEXTURE_MIRROR_ADDRESSMODE'], _0x419ce6['UseSerializedUrlIfAny'] = !0x1, _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'url', void 0x0), _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'uOffset', void 0x0), _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'vOffset', void 0x0), _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'uScale', void 0x0), _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'vScale', void 0x0), _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'uAng', void 0x0), _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'vAng', void 0x0), _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'wAng', void 0x0), _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'uRotationCenter', void 0x0), _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'vRotationCenter', void 0x0), _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'wRotationCenter', void 0x0), _0x17015b['c']([Object(_0x9d2a2d['c'])()], _0x419ce6['prototype'], 'isBlocking', null), _0x419ce6; }(_0x40afb4['a']); _0x9d2a2d['a']['_TextureParser'] = _0x281880['Parse']; } , function(_0x2bd5e2, _0x8cad38, _0x5592ae) { 'use strict'; _0x5592ae['d'](_0x8cad38, 'a', function() { return _0x1f73e5; }), _0x5592ae['d'](_0x8cad38, 'd', function() { return _0x2c4aa9; }), _0x5592ae['d'](_0x8cad38, 'b', function() { return _0x24057a; }), _0x5592ae['d'](_0x8cad38, 'c', function() { return _0x35f06d; }); var _0x1f73e5 = function() { function _0x2e31d0(_0x2eacbc, _0x24a62d, _0xaf2635, _0x130de4) { void 0x0 === _0x24a62d && (_0x24a62d = !0x1), this['initalize'](_0x2eacbc, _0x24a62d, _0xaf2635, _0x130de4); } return _0x2e31d0['prototype']['initalize'] = function(_0x14cd8e, _0x56118e, _0x2015aa, _0x21f10c) { return void 0x0 === _0x56118e && (_0x56118e = !0x1), this['mask'] = _0x14cd8e, this['skipNextObservers'] = _0x56118e, this['target'] = _0x2015aa, this['currentTarget'] = _0x21f10c, this; } , _0x2e31d0; }() , _0x2c4aa9 = function() { return function(_0x2f9ab5, _0x358aa4, _0x30ad64) { void 0x0 === _0x30ad64 && (_0x30ad64 = null), this['callback'] = _0x2f9ab5, this['mask'] = _0x358aa4, this['scope'] = _0x30ad64, this['_willBeUnregistered'] = !0x1, this['unregisterOnNextCall'] = !0x1; } ; }() , _0x24057a = function() { function _0x10337b() {} return _0x10337b['prototype']['dispose'] = function() { if (this['_observers'] && this['_observables']) for (var _0x4ea134 = 0x0; _0x4ea134 < this['_observers']['length']; _0x4ea134++) this['_observables'][_0x4ea134]['remove'](this['_observers'][_0x4ea134]); this['_observers'] = null, this['_observables'] = null; } , _0x10337b['Watch'] = function(_0x308f8d, _0x219532, _0xd16321, _0x3dc1e1) { void 0x0 === _0xd16321 && (_0xd16321 = -0x1), void 0x0 === _0x3dc1e1 && (_0x3dc1e1 = null); var _0x114a61 = new _0x10337b(); _0x114a61['_observers'] = new Array(), _0x114a61['_observables'] = _0x308f8d; for (var _0x12bfa4 = 0x0, _0x231210 = _0x308f8d; _0x12bfa4 < _0x231210['length']; _0x12bfa4++) { var _0x10240f = _0x231210[_0x12bfa4]['add'](_0x219532, _0xd16321, !0x1, _0x3dc1e1); _0x10240f && _0x114a61['_observers']['push'](_0x10240f); } return _0x114a61; } , _0x10337b; }() , _0x35f06d = function() { function _0xc32dcc(_0x2f1757) { this['_observers'] = new Array(), this['_eventState'] = new _0x1f73e5(0x0), _0x2f1757 && (this['_onObserverAdded'] = _0x2f1757); } return _0xc32dcc['prototype']['add'] = function(_0x47a2c6, _0x1fe0db, _0x30bf23, _0x1734d3, _0x4ff6c6) { if (void 0x0 === _0x1fe0db && (_0x1fe0db = -0x1), void 0x0 === _0x30bf23 && (_0x30bf23 = !0x1), void 0x0 === _0x1734d3 && (_0x1734d3 = null), void 0x0 === _0x4ff6c6 && (_0x4ff6c6 = !0x1), !_0x47a2c6) return null; var _0x4962c1 = new _0x2c4aa9(_0x47a2c6,_0x1fe0db,_0x1734d3); return _0x4962c1['unregisterOnNextCall'] = _0x4ff6c6, _0x30bf23 ? this['_observers']['unshift'](_0x4962c1) : this['_observers']['push'](_0x4962c1), this['_onObserverAdded'] && this['_onObserverAdded'](_0x4962c1), _0x4962c1; } , _0xc32dcc['prototype']['addOnce'] = function(_0x23bd9b) { return this['add'](_0x23bd9b, void 0x0, void 0x0, void 0x0, !0x0); } , _0xc32dcc['prototype']['remove'] = function(_0xbaa4ab) { return !!_0xbaa4ab && (-0x1 !== this['_observers']['indexOf'](_0xbaa4ab) && (this['_deferUnregister'](_0xbaa4ab), !0x0)); } , _0xc32dcc['prototype']['removeCallback'] = function(_0x4f80ef, _0x577c08) { for (var _0xf0673f = 0x0; _0xf0673f < this['_observers']['length']; _0xf0673f++) if (this['_observers'][_0xf0673f]['callback'] === _0x4f80ef && (!_0x577c08 || _0x577c08 === this['_observers'][_0xf0673f]['scope'])) return this['_deferUnregister'](this['_observers'][_0xf0673f]), !0x0; return !0x1; } , _0xc32dcc['prototype']['_deferUnregister'] = function(_0x598d74) { var _0x43d750 = this; _0x598d74['unregisterOnNextCall'] = !0x1, _0x598d74['_willBeUnregistered'] = !0x0, setTimeout(function() { _0x43d750['_remove'](_0x598d74); }, 0x0); } , _0xc32dcc['prototype']['_remove'] = function(_0x2bfa49) { if (!_0x2bfa49) return !0x1; var _0x11e455 = this['_observers']['indexOf'](_0x2bfa49); return -0x1 !== _0x11e455 && (this['_observers']['splice'](_0x11e455, 0x1), !0x0); } , _0xc32dcc['prototype']['makeObserverTopPriority'] = function(_0x1f6ecb) { this['_remove'](_0x1f6ecb), this['_observers']['unshift'](_0x1f6ecb); } , _0xc32dcc['prototype']['makeObserverBottomPriority'] = function(_0x301f35) { this['_remove'](_0x301f35), this['_observers']['push'](_0x301f35); } , _0xc32dcc['prototype']['notifyObservers'] = function(_0x556058, _0x30c0c1, _0x5062b1, _0x484048) { if (void 0x0 === _0x30c0c1 && (_0x30c0c1 = -0x1), !this['_observers']['length']) return !0x0; var _0x584201 = this['_eventState']; _0x584201['mask'] = _0x30c0c1, _0x584201['target'] = _0x5062b1, _0x584201['currentTarget'] = _0x484048, _0x584201['skipNextObservers'] = !0x1, _0x584201['lastReturnValue'] = _0x556058; for (var _0x2f9add = 0x0, _0x11f0fb = this['_observers']; _0x2f9add < _0x11f0fb['length']; _0x2f9add++) { var _0xf2257a = _0x11f0fb[_0x2f9add]; if (!_0xf2257a['_willBeUnregistered'] && (_0xf2257a['mask'] & _0x30c0c1 && (_0xf2257a['scope'] ? _0x584201['lastReturnValue'] = _0xf2257a['callback']['apply'](_0xf2257a['scope'], [_0x556058, _0x584201]) : _0x584201['lastReturnValue'] = _0xf2257a['callback'](_0x556058, _0x584201), _0xf2257a['unregisterOnNextCall'] && this['_deferUnregister'](_0xf2257a)), _0x584201['skipNextObservers'])) return !0x1; } return !0x0; } , _0xc32dcc['prototype']['notifyObserversWithPromise'] = function(_0x398bf8, _0x25ce72, _0x4062aa, _0x3e4e68) { var _0x28268a = this; void 0x0 === _0x25ce72 && (_0x25ce72 = -0x1); var _0x198168 = Promise['resolve'](_0x398bf8); if (!this['_observers']['length']) return _0x198168; var _0xcbde7e = this['_eventState']; return _0xcbde7e['mask'] = _0x25ce72, _0xcbde7e['target'] = _0x4062aa, _0xcbde7e['currentTarget'] = _0x3e4e68, _0xcbde7e['skipNextObservers'] = !0x1, this['_observers']['forEach'](function(_0x53715e) { _0xcbde7e['skipNextObservers'] || _0x53715e['_willBeUnregistered'] || _0x53715e['mask'] & _0x25ce72 && (_0x198168 = _0x53715e['scope'] ? _0x198168['then'](function(_0x94404b) { return _0xcbde7e['lastReturnValue'] = _0x94404b, _0x53715e['callback']['apply'](_0x53715e['scope'], [_0x398bf8, _0xcbde7e]); }) : _0x198168['then'](function(_0xd69e5a) { return _0xcbde7e['lastReturnValue'] = _0xd69e5a, _0x53715e['callback'](_0x398bf8, _0xcbde7e); }), _0x53715e['unregisterOnNextCall'] && _0x28268a['_deferUnregister'](_0x53715e)); }), _0x198168['then'](function() { return _0x398bf8; }); } , _0xc32dcc['prototype']['notifyObserver'] = function(_0x53db55, _0x395b19, _0x4c3e32) { void 0x0 === _0x4c3e32 && (_0x4c3e32 = -0x1); var _0x32d7fd = this['_eventState']; _0x32d7fd['mask'] = _0x4c3e32, _0x32d7fd['skipNextObservers'] = !0x1, _0x53db55['callback'](_0x395b19, _0x32d7fd); } , _0xc32dcc['prototype']['hasObservers'] = function() { return this['_observers']['length'] > 0x0; } , _0xc32dcc['prototype']['clear'] = function() { this['_observers'] = new Array(), this['_onObserverAdded'] = null; } , _0xc32dcc['prototype']['clone'] = function() { var _0x42b751 = new _0xc32dcc(); return _0x42b751['_observers'] = this['_observers']['slice'](0x0), _0x42b751; } , _0xc32dcc['prototype']['hasSpecificMask'] = function(_0xd3fdbe) { void 0x0 === _0xd3fdbe && (_0xd3fdbe = -0x1); for (var _0x402914 = 0x0, _0x15d4f4 = this['_observers']; _0x402914 < _0x15d4f4['length']; _0x402914++) { var _0x33c1d4 = _0x15d4f4[_0x402914]; if (_0x33c1d4['mask'] & _0xd3fdbe || _0x33c1d4['mask'] === _0xd3fdbe) return !0x0; } return !0x1; } , _0xc32dcc; }(); } , function(_0x3fbe92, _0x120cdc, _0x1d54de) { 'use strict'; _0x1d54de['d'](_0x120cdc, 'c', function() { return _0xa97fef; }), _0x1d54de['d'](_0x120cdc, 'b', function() { return _0x5e29c8; }), _0x1d54de['d'](_0x120cdc, 'd', function() { return _0x115104; }), _0x1d54de['d'](_0x120cdc, 'e', function() { return _0x504401; }), _0x1d54de['d'](_0x120cdc, 'g', function() { return _0x135211; }), _0x1d54de['d'](_0x120cdc, 'h', function() { return _0x30df3a; }), _0x1d54de['d'](_0x120cdc, 'f', function() { return _0x4f4b1c; }), _0x1d54de['d'](_0x120cdc, 'i', function() { return _0x4bbde3; }), _0x1d54de['d'](_0x120cdc, 'a', function() { return _0x1f7766; }); var _0x5def82 = _0x1d54de(0x1) , _0xf51fd7 = _0x1d54de(0x0) , _0x25f00c = _0x1d54de(0xc) , _0x51c1ab = _0x1d54de(0x8) , _0x1c8435 = _0x1d54de(0x3b) , _0x4df2f2 = _0x1d54de(0x3) , _0x55e0c9 = _0x1d54de(0x23) , _0x1cb6be = _0x1d54de(0x6) , _0x488bf7 = _0x1d54de(0x16) , _0x1934ec = _0x1d54de(0x20) , _0x4f4d06 = _0x1d54de(0x2f) , _0x2354d1 = _0x1d54de(0x13) , _0x2dfa9e = _0x1d54de(0x3c) , _0xa97fef = function() { function _0x50d22e() {} return _0x50d22e['prototype']['getColorToRef'] = function(_0x2bd9d4) { this['color2'] ? _0xf51fd7['f']['LerpToRef'](this['color1'], this['color2'], Math['random'](), _0x2bd9d4) : _0x2bd9d4['copyFrom'](this['color1']); } , _0x50d22e; }() , _0x5e29c8 = function() { return function() {} ; }() , _0x115104 = function() { function _0x2f97b4() {} return _0x2f97b4['prototype']['getFactor'] = function() { return void 0x0 === this['factor2'] ? this['factor1'] : _0x25f00c['a']['Lerp'](this['factor1'], this['factor2'], Math['random']()); } , _0x2f97b4; }() , _0x504401 = function(_0x590bca) { function _0x648cfc(_0x1c4996, _0x5bec20) { var _0x497412 = _0x590bca['call'](this, _0x1c4996) || this; return _0x497412['request'] = _0x5bec20, _0x497412['name'] = 'LoadFileError', _0x648cfc['_setPrototypeOf'](_0x497412, _0x648cfc['prototype']), _0x497412; } return _0x5def82['d'](_0x648cfc, _0x590bca), _0x648cfc['_setPrototypeOf'] = Object['setPrototypeOf'] || function(_0x4c6314, _0x589bfa) { return _0x4c6314['__proto__'] = _0x589bfa, _0x4c6314; } , _0x648cfc; }(Error) , _0x135211 = function() { function _0xedaa59() {} return _0xedaa59['ExponentialBackoff'] = function(_0x131a2c, _0xbd966e) { return void 0x0 === _0x131a2c && (_0x131a2c = 0x3), void 0x0 === _0xbd966e && (_0xbd966e = 0x1f4), function(_0x349d5e, _0x3fc9f0, _0x3091e8) { return 0x0 !== _0x3fc9f0['status'] || _0x3091e8 >= _0x131a2c || -0x1 !== _0x349d5e['indexOf']('file:') ? -0x1 : Math['pow'](0x2, _0x3091e8) * _0xbd966e; } ; } , _0xedaa59; }() , _0x30df3a = function() { function _0x412670() {} return _0x412670['FetchToRef'] = function(_0x3775ea, _0x85438f, _0x51f44e, _0x1bee3c, _0x261305, _0x521782) { var _0x301f27 = 0x4 * ((Math['abs'](_0x3775ea) * _0x51f44e % _0x51f44e | 0x0) + (Math['abs'](_0x85438f) * _0x1bee3c % _0x1bee3c | 0x0) * _0x51f44e); _0x521782['r'] = _0x261305[_0x301f27] / 0xff, _0x521782['g'] = _0x261305[_0x301f27 + 0x1] / 0xff, _0x521782['b'] = _0x261305[_0x301f27 + 0x2] / 0xff, _0x521782['a'] = _0x261305[_0x301f27 + 0x3] / 0xff; } , _0x412670['Mix'] = function(_0x5b5acc, _0x31f6b0, _0x26f524) { return _0x5b5acc * (0x1 - _0x26f524) + _0x31f6b0 * _0x26f524; } , _0x412670['Instantiate'] = function(_0x4e1888) { if (_0x412670['RegisteredExternalClasses'] && _0x412670['RegisteredExternalClasses'][_0x4e1888]) return _0x412670['RegisteredExternalClasses'][_0x4e1888]; var _0x13c61d = _0x488bf7['a']['GetClass'](_0x4e1888); if (_0x13c61d) return _0x13c61d; _0x1cb6be['a']['Warn'](_0x4e1888 + '\x20not\x20found,\x20you\x20may\x20have\x20missed\x20an\x20import.'); for (var _0x5c51f8 = _0x4e1888['split']('.'), _0x13c1e6 = window || this, _0x436216 = 0x0, _0x45a1fa = _0x5c51f8['length']; _0x436216 < _0x45a1fa; _0x436216++) _0x13c1e6 = _0x13c1e6[_0x5c51f8[_0x436216]]; return 'function' != typeof _0x13c1e6 ? null : _0x13c1e6; } , _0x412670['Slice'] = function(_0x89c40f, _0x38b0a5, _0xabf9d7) { return _0x89c40f['slice'] ? _0x89c40f['slice'](_0x38b0a5, _0xabf9d7) : Array['prototype']['slice']['call'](_0x89c40f, _0x38b0a5, _0xabf9d7); } , _0x412670['SetImmediate'] = function(_0x53bb49) { _0x55e0c9['a']['IsWindowObjectExist']() && window['setImmediate'] ? window['setImmediate'](_0x53bb49) : setTimeout(_0x53bb49, 0x1); } , _0x412670['IsExponentOfTwo'] = function(_0x32223b) { var _0x1a76ff = 0x1; do { _0x1a76ff *= 0x2; } while (_0x1a76ff < _0x32223b); return _0x1a76ff === _0x32223b; } , _0x412670['FloatRound'] = function(_0x3ececa) { return Math['fround'] ? Math['fround'](_0x3ececa) : _0x412670['_tmpFloatArray'][0x0] = _0x3ececa; } , _0x412670['CeilingPOT'] = function(_0x374b9e) { return _0x374b9e--, _0x374b9e |= _0x374b9e >> 0x1, _0x374b9e |= _0x374b9e >> 0x2, _0x374b9e |= _0x374b9e >> 0x4, _0x374b9e |= _0x374b9e >> 0x8, _0x374b9e |= _0x374b9e >> 0x10, ++_0x374b9e; } , _0x412670['FloorPOT'] = function(_0x5e80e2) { return _0x5e80e2 |= _0x5e80e2 >> 0x1, _0x5e80e2 |= _0x5e80e2 >> 0x2, _0x5e80e2 |= _0x5e80e2 >> 0x4, _0x5e80e2 |= _0x5e80e2 >> 0x8, (_0x5e80e2 |= _0x5e80e2 >> 0x10) - (_0x5e80e2 >> 0x1); } , _0x412670['NearestPOT'] = function(_0x2ef36b) { var _0x371d7c = _0x412670['CeilingPOT'](_0x2ef36b) , _0xb8b0b2 = _0x412670['FloorPOT'](_0x2ef36b); return _0x371d7c - _0x2ef36b > _0x2ef36b - _0xb8b0b2 ? _0xb8b0b2 : _0x371d7c; } , _0x412670['GetExponentOfTwo'] = function(_0x16d8e3, _0x208115, _0x1492e5) { var _0xd5e589; switch (void 0x0 === _0x1492e5 && (_0x1492e5 = _0x4df2f2['a']['SCALEMODE_NEAREST']), _0x1492e5) { case _0x4df2f2['a']['SCALEMODE_FLOOR']: _0xd5e589 = _0x412670['FloorPOT'](_0x16d8e3); break; case _0x4df2f2['a']['SCALEMODE_NEAREST']: _0xd5e589 = _0x412670['NearestPOT'](_0x16d8e3); break; case _0x4df2f2['a']['SCALEMODE_CEILING']: default: _0xd5e589 = _0x412670['CeilingPOT'](_0x16d8e3); } return Math['min'](_0xd5e589, _0x208115); } , _0x412670['GetFilename'] = function(_0x515e05) { var _0x3964b8 = _0x515e05['lastIndexOf']('/'); return _0x3964b8 < 0x0 ? _0x515e05 : _0x515e05['substring'](_0x3964b8 + 0x1); } , _0x412670['GetFolderPath'] = function(_0x14e6b5, _0x43d3a0) { void 0x0 === _0x43d3a0 && (_0x43d3a0 = !0x1); var _0x2f8782 = _0x14e6b5['lastIndexOf']('/'); return _0x2f8782 < 0x0 ? _0x43d3a0 ? _0x14e6b5 : '' : _0x14e6b5['substring'](0x0, _0x2f8782 + 0x1); } , _0x412670['ToDegrees'] = function(_0x23edac) { return 0xb4 * _0x23edac / Math['PI']; } , _0x412670['ToRadians'] = function(_0x349153) { return _0x349153 * Math['PI'] / 0xb4; } , _0x412670['EncodeArrayBufferTobase64'] = function(_0x350837) { for (var _0x495814, _0x59257d, _0x277b5b, _0x265f80, _0x3c8f49, _0x26b50e, _0x55e7b5, _0x20227e = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', _0x47298a = '', _0x1e7275 = 0x0, _0x5b8e6c = new Uint8Array(_0x350837); _0x1e7275 < _0x5b8e6c['length']; ) _0x265f80 = (_0x495814 = _0x5b8e6c[_0x1e7275++]) >> 0x2, _0x3c8f49 = (0x3 & _0x495814) << 0x4 | (_0x59257d = _0x1e7275 < _0x5b8e6c['length'] ? _0x5b8e6c[_0x1e7275++] : Number['NaN']) >> 0x4, _0x26b50e = (0xf & _0x59257d) << 0x2 | (_0x277b5b = _0x1e7275 < _0x5b8e6c['length'] ? _0x5b8e6c[_0x1e7275++] : Number['NaN']) >> 0x6, _0x55e7b5 = 0x3f & _0x277b5b, isNaN(_0x59257d) ? _0x26b50e = _0x55e7b5 = 0x40 : isNaN(_0x277b5b) && (_0x55e7b5 = 0x40), _0x47298a += _0x20227e['charAt'](_0x265f80) + _0x20227e['charAt'](_0x3c8f49) + _0x20227e['charAt'](_0x26b50e) + _0x20227e['charAt'](_0x55e7b5); return 'data:image/png;base64,' + _0x47298a; } , _0x412670['ExtractMinAndMaxIndexed'] = function(_0xe81c0c, _0x281239, _0x4af8e5, _0x2fc6f9, _0x2a4161) { void 0x0 === _0x2a4161 && (_0x2a4161 = null); for (var _0x127c6d = new _0xf51fd7['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']), _0x29ff8c = new _0xf51fd7['x'](-Number['MAX_VALUE'],-Number['MAX_VALUE'],-Number['MAX_VALUE']), _0x4c2aff = _0x4af8e5; _0x4c2aff < _0x4af8e5 + _0x2fc6f9; _0x4c2aff++) { var _0x31e9e5 = 0x3 * _0x281239[_0x4c2aff] , _0x8039cc = _0xe81c0c[_0x31e9e5] , _0x4cf987 = _0xe81c0c[_0x31e9e5 + 0x1] , _0xdfabf3 = _0xe81c0c[_0x31e9e5 + 0x2]; _0x127c6d['minimizeInPlaceFromFloats'](_0x8039cc, _0x4cf987, _0xdfabf3), _0x29ff8c['maximizeInPlaceFromFloats'](_0x8039cc, _0x4cf987, _0xdfabf3); } return _0x2a4161 && (_0x127c6d['x'] -= _0x127c6d['x'] * _0x2a4161['x'] + _0x2a4161['y'], _0x127c6d['y'] -= _0x127c6d['y'] * _0x2a4161['x'] + _0x2a4161['y'], _0x127c6d['z'] -= _0x127c6d['z'] * _0x2a4161['x'] + _0x2a4161['y'], _0x29ff8c['x'] += _0x29ff8c['x'] * _0x2a4161['x'] + _0x2a4161['y'], _0x29ff8c['y'] += _0x29ff8c['y'] * _0x2a4161['x'] + _0x2a4161['y'], _0x29ff8c['z'] += _0x29ff8c['z'] * _0x2a4161['x'] + _0x2a4161['y']), { 'minimum': _0x127c6d, 'maximum': _0x29ff8c }; } , _0x412670['ExtractMinAndMax'] = function(_0x265ddf, _0x5d4711, _0xc224e1, _0x537767, _0x3f9768) { void 0x0 === _0x537767 && (_0x537767 = null); var _0x571524 = new _0xf51fd7['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']) , _0x50c2e3 = new _0xf51fd7['x'](-Number['MAX_VALUE'],-Number['MAX_VALUE'],-Number['MAX_VALUE']); _0x3f9768 || (_0x3f9768 = 0x3); for (var _0x420cd7 = _0x5d4711, _0x548e0f = _0x5d4711 * _0x3f9768; _0x420cd7 < _0x5d4711 + _0xc224e1; _0x420cd7++, _0x548e0f += _0x3f9768) { var _0x57212e = _0x265ddf[_0x548e0f] , _0x1d0081 = _0x265ddf[_0x548e0f + 0x1] , _0x228984 = _0x265ddf[_0x548e0f + 0x2]; _0x571524['minimizeInPlaceFromFloats'](_0x57212e, _0x1d0081, _0x228984), _0x50c2e3['maximizeInPlaceFromFloats'](_0x57212e, _0x1d0081, _0x228984); } return _0x537767 && (_0x571524['x'] -= _0x571524['x'] * _0x537767['x'] + _0x537767['y'], _0x571524['y'] -= _0x571524['y'] * _0x537767['x'] + _0x537767['y'], _0x571524['z'] -= _0x571524['z'] * _0x537767['x'] + _0x537767['y'], _0x50c2e3['x'] += _0x50c2e3['x'] * _0x537767['x'] + _0x537767['y'], _0x50c2e3['y'] += _0x50c2e3['y'] * _0x537767['x'] + _0x537767['y'], _0x50c2e3['z'] += _0x50c2e3['z'] * _0x537767['x'] + _0x537767['y']), { 'minimum': _0x571524, 'maximum': _0x50c2e3 }; } , _0x412670['MakeArray'] = function(_0x4344d8, _0x323045) { return !0x0 === _0x323045 || void 0x0 !== _0x4344d8 && null != _0x4344d8 ? Array['isArray'](_0x4344d8) ? _0x4344d8 : [_0x4344d8] : null; } , _0x412670['GetPointerPrefix'] = function() { var _0x1cb781 = 'pointer'; return !_0x55e0c9['a']['IsWindowObjectExist']() || window['PointerEvent'] || navigator['pointerEnabled'] || (_0x1cb781 = 'mouse'), _0x1cb781; } , _0x412670['QueueNewFrame'] = function(_0x405c78, _0x39a6b3) { return _0x55e0c9['a']['IsWindowObjectExist']() ? (_0x39a6b3 || (_0x39a6b3 = window), _0x39a6b3['requestAnimationFrame'] ? _0x39a6b3['requestAnimationFrame'](_0x405c78) : _0x39a6b3['msRequestAnimationFrame'] ? _0x39a6b3['msRequestAnimationFrame'](_0x405c78) : _0x39a6b3['webkitRequestAnimationFrame'] ? _0x39a6b3['webkitRequestAnimationFrame'](_0x405c78) : _0x39a6b3['mozRequestAnimationFrame'] ? _0x39a6b3['mozRequestAnimationFrame'](_0x405c78) : _0x39a6b3['oRequestAnimationFrame'] ? _0x39a6b3['oRequestAnimationFrame'](_0x405c78) : window['setTimeout'](_0x405c78, 0x10)) : setTimeout(_0x405c78, 0x10); } , _0x412670['RequestFullscreen'] = function(_0x404039) { var _0x2a9fe2 = _0x404039['requestFullscreen'] || _0x404039['msRequestFullscreen'] || _0x404039['webkitRequestFullscreen'] || _0x404039['mozRequestFullScreen']; _0x2a9fe2 && _0x2a9fe2['call'](_0x404039); } , _0x412670['ExitFullscreen'] = function() { var _0xf62d9c = document; document['exitFullscreen'] ? document['exitFullscreen']() : _0xf62d9c['mozCancelFullScreen'] ? _0xf62d9c['mozCancelFullScreen']() : _0xf62d9c['webkitCancelFullScreen'] ? _0xf62d9c['webkitCancelFullScreen']() : _0xf62d9c['msCancelFullScreen'] && _0xf62d9c['msCancelFullScreen'](); } , _0x412670['SetCorsBehavior'] = function(_0x503365, _0xd711c3) { if ((!_0x503365 || 0x0 !== _0x503365['indexOf']('data:')) && _0x412670['CorsBehavior']) if ('string' == typeof _0x412670['CorsBehavior'] || _0x412670['CorsBehavior']instanceof String) _0xd711c3['crossOrigin'] = _0x412670['CorsBehavior']; else { var _0x124421 = _0x412670['CorsBehavior'](_0x503365); _0x124421 && (_0xd711c3['crossOrigin'] = _0x124421); } } , _0x412670['CleanUrl'] = function(_0x1ce9ef) { return _0x1ce9ef = _0x1ce9ef['replace'](/#/gm, '%23'); } , _0x412670['LoadImage'] = function(_0x3e9066, _0x223e63, _0x129675, _0x380d30) { var _0x224641, _0x1870e1 = !0x1; _0x3e9066 instanceof ArrayBuffer ? (_0x224641 = URL['createObjectURL'](new Blob([_0x3e9066])), _0x1870e1 = !0x0) : _0x3e9066 instanceof Blob ? (_0x224641 = URL['createObjectURL'](_0x3e9066), _0x1870e1 = !0x0) : (_0x224641 = _0x412670['CleanUrl'](_0x3e9066), _0x224641 = _0x412670['PreprocessUrl'](_0x3e9066)); var _0x457bf7 = new Image(); _0x412670['SetCorsBehavior'](_0x224641, _0x457bf7); var _0xfd0e79 = function() { _0x457bf7['removeEventListener']('load', _0xfd0e79), _0x457bf7['removeEventListener']('error', _0x27cc3), _0x223e63(_0x457bf7), _0x1870e1 && _0x457bf7['src'] && URL['revokeObjectURL'](_0x457bf7['src']); } , _0x27cc3 = function(_0x46923f) { _0x457bf7['removeEventListener']('load', _0xfd0e79), _0x457bf7['removeEventListener']('error', _0x27cc3), _0x1cb6be['a']['Error']('Error\x20while\x20trying\x20to\x20load\x20image:\x20' + _0x3e9066), _0x129675 && _0x129675('Error\x20while\x20trying\x20to\x20load\x20image:\x20' + _0x3e9066, _0x46923f), _0x1870e1 && _0x457bf7['src'] && URL['revokeObjectURL'](_0x457bf7['src']); }; _0x457bf7['addEventListener']('load', _0xfd0e79), _0x457bf7['addEventListener']('error', _0x27cc3); var _0x10fa22 = function() { _0x457bf7['src'] = _0x224641; }; if ('data:' !== _0x224641['substr'](0x0, 0x5) && _0x380d30 && _0x380d30['enableTexturesOffline']) _0x380d30['open'](function() { _0x380d30 && _0x380d30['loadImage'](_0x224641, _0x457bf7); }, _0x10fa22); else { if (-0x1 !== _0x224641['indexOf']('file:')) { var _0x29aeae = decodeURIComponent(_0x224641['substring'](0x5)['toLowerCase']()); if (_0x1c8435['a']['FilesToLoad'][_0x29aeae]) { try { var _0x2d08e4; try { _0x2d08e4 = URL['createObjectURL'](_0x1c8435['a']['FilesToLoad'][_0x29aeae]); } catch (_0x5b2261) { _0x2d08e4 = URL['createObjectURL'](_0x1c8435['a']['FilesToLoad'][_0x29aeae]); } _0x457bf7['src'] = _0x2d08e4, _0x1870e1 = !0x0; } catch (_0x3193e4) { _0x457bf7['src'] = ''; } return _0x457bf7; } } _0x10fa22(); } return _0x457bf7; } , _0x412670['LoadFile'] = function(_0x2e738b, _0x3a0ff8, _0x1b5637, _0x25f069, _0x914f80, _0xada605) { if (_0x2e738b = _0x412670['CleanUrl'](_0x2e738b), -0x1 !== (_0x2e738b = _0x412670['PreprocessUrl'](_0x2e738b))['indexOf']('file:')) { var _0x2f4ff3 = decodeURIComponent(_0x2e738b['substring'](0x5)['toLowerCase']()); if (_0x1c8435['a']['FilesToLoad'][_0x2f4ff3]) return _0x412670['ReadFile'](_0x1c8435['a']['FilesToLoad'][_0x2f4ff3], _0x3a0ff8, _0x1b5637, _0x914f80); } var _0x3f77bd = _0x412670['BaseUrl'] + _0x2e738b , _0x3952d3 = !0x1 , _0x4c967a = { 'onCompleteObservable': new _0x51c1ab['c'](), 'abort': function() { return _0x3952d3 = !0x0; } } , _0x3aec71 = function() { var _0x522499 = new _0x2dfa9e['a']() , _0x2da677 = null; _0x4c967a['abort'] = function() { _0x3952d3 = !0x0, _0x522499['readyState'] !== (XMLHttpRequest['DONE'] || 0x4) && _0x522499['abort'](), null !== _0x2da677 && (clearTimeout(_0x2da677), _0x2da677 = null); } ; var _0x233a96 = function(_0x1d4f41) { _0x522499['open']('GET', _0x3f77bd), _0x914f80 && (_0x522499['responseType'] = 'arraybuffer'), _0x1b5637 && _0x522499['addEventListener']('progress', _0x1b5637); var _0x43a52f = function() { _0x522499['removeEventListener']('loadend', _0x43a52f), _0x4c967a['onCompleteObservable']['notifyObservers'](_0x4c967a), _0x4c967a['onCompleteObservable']['clear'](); }; _0x522499['addEventListener']('loadend', _0x43a52f); var _0x23beb7 = function() { if (!_0x3952d3 && _0x522499['readyState'] === (XMLHttpRequest['DONE'] || 0x4)) { if (_0x522499['removeEventListener']('readystatechange', _0x23beb7), _0x522499['status'] >= 0xc8 && _0x522499['status'] < 0x12c || 0x0 === _0x522499['status'] && (!_0x55e0c9['a']['IsWindowObjectExist']() || _0x412670['IsFileURL']())) return void _0x3a0ff8(_0x914f80 ? _0x522499['response'] : _0x522499['responseText'], _0x522499['responseURL']); var _0x3e773a = _0x412670['DefaultRetryStrategy']; if (_0x3e773a) { var _0x218395 = _0x3e773a(_0x3f77bd, _0x522499, _0x1d4f41); if (-0x1 !== _0x218395) return _0x522499['removeEventListener']('loadend', _0x43a52f), _0x522499 = new _0x2dfa9e['a'](), void (_0x2da677 = setTimeout(function() { return _0x233a96(_0x1d4f41 + 0x1); }, _0x218395)); } var _0x43fd28 = new _0x504401('Error\x20status:\x20' + _0x522499['status'] + '\x20' + _0x522499['statusText'] + '\x20-\x20Unable\x20to\x20load\x20' + _0x3f77bd,_0x522499); if (!_0xada605) throw _0x43fd28; _0xada605(_0x522499, _0x43fd28); } }; _0x522499['addEventListener']('readystatechange', _0x23beb7), _0x522499['send'](); }; _0x233a96(0x0); }; if (_0x25f069 && _0x25f069['enableSceneOffline']) { var _0x4a8db9 = function(_0x46ae84) { _0x46ae84 && _0x46ae84['status'] > 0x190 ? _0xada605 && _0xada605(_0x46ae84) : _0x3952d3 || _0x3aec71(); }; _0x25f069['open'](function() { _0x3952d3 || _0x25f069 && _0x25f069['loadFile'](_0x2e738b, function(_0x1b3740) { _0x3952d3 || _0x3a0ff8(_0x1b3740), _0x4c967a['onCompleteObservable']['notifyObservers'](_0x4c967a); }, _0x1b5637 ? function(_0x1f2a02) { _0x3952d3 || _0x1b5637(_0x1f2a02); } : void 0x0, _0x4a8db9, _0x914f80); }, _0x4a8db9); } else _0x3aec71(); return _0x4c967a; } , _0x412670['LoadScript'] = function(_0x5cc622, _0x3763e8, _0x2ce7c9, _0x363735) { if (_0x55e0c9['a']['IsWindowObjectExist']()) { var _0x582915 = document['getElementsByTagName']('head')[0x0] , _0x59331b = document['createElement']('script'); _0x59331b['setAttribute']('type', 'text/javascript'), _0x59331b['setAttribute']('src', _0x5cc622), _0x363735 && (_0x59331b['id'] = _0x363735), _0x59331b['onload'] = function() { _0x3763e8 && _0x3763e8(); } , _0x59331b['onerror'] = function(_0x46c034) { _0x2ce7c9 && _0x2ce7c9('Unable\x20to\x20load\x20script\x20\x27' + _0x5cc622 + '\x27', _0x46c034); } , _0x582915['appendChild'](_0x59331b); } } , _0x412670['LoadScriptAsync'] = function(_0x45aab4, _0x1e0bf5) { return new Promise(function(_0x22e9c2, _0x45bae3) { if (_0x55e0c9['a']['IsWindowObjectExist']()) { var _0x55b097 = document['getElementsByTagName']('head')[0x0] , _0x3ecfa7 = document['createElement']('script'); _0x3ecfa7['setAttribute']('type', 'text/javascript'), _0x3ecfa7['setAttribute']('src', _0x45aab4), _0x1e0bf5 && (_0x3ecfa7['id'] = _0x1e0bf5), _0x3ecfa7['onload'] = function() { _0x22e9c2(!0x0); } , _0x3ecfa7['onerror'] = function(_0x39b6b9) { _0x22e9c2(!0x1); } , _0x55b097['appendChild'](_0x3ecfa7); } else _0x22e9c2(!0x1); } ); } , _0x412670['ReadFileAsDataURL'] = function(_0x54ef20, _0x4770d9, _0x1c6992) { var _0x5ab01d = new FileReader() , _0x382f72 = { 'onCompleteObservable': new _0x51c1ab['c'](), 'abort': function() { return _0x5ab01d['abort'](); } }; return _0x5ab01d['onloadend'] = function(_0x4202e3) { _0x382f72['onCompleteObservable']['notifyObservers'](_0x382f72); } , _0x5ab01d['onload'] = function(_0x56c1f3) { _0x4770d9(_0x56c1f3['target']['result']); } , _0x5ab01d['onprogress'] = _0x1c6992, _0x5ab01d['readAsDataURL'](_0x54ef20), _0x382f72; } , _0x412670['ReadFile'] = function(_0x4497ed, _0x49d23c, _0x20d935, _0x379700) { var _0x223d17 = new FileReader() , _0x2d2831 = { 'onCompleteObservable': new _0x51c1ab['c'](), 'abort': function() { return _0x223d17['abort'](); } }; return _0x223d17['onloadend'] = function(_0x3c04e3) { return _0x2d2831['onCompleteObservable']['notifyObservers'](_0x2d2831); } , _0x223d17['onerror'] = function(_0x1fa7f9) { _0x1cb6be['a']['Log']('Error\x20while\x20reading\x20file:\x20' + _0x4497ed['name']), _0x49d23c(JSON['stringify']({ 'autoClear': !0x0, 'clearColor': [0x1, 0x0, 0x0], 'ambientColor': [0x0, 0x0, 0x0], 'gravity': [0x0, -9.807, 0x0], 'meshes': [], 'cameras': [], 'lights': [] })); } , _0x223d17['onload'] = function(_0x48d332) { _0x49d23c(_0x48d332['target']['result']); } , _0x20d935 && (_0x223d17['onprogress'] = _0x20d935), _0x379700 ? _0x223d17['readAsArrayBuffer'](_0x4497ed) : _0x223d17['readAsText'](_0x4497ed), _0x2d2831; } , _0x412670['FileAsURL'] = function(_0x1a0996) { var _0x3a8b55 = new Blob([_0x1a0996]); return (window['URL'] || window['webkitURL'])['createObjectURL'](_0x3a8b55); } , _0x412670['Format'] = function(_0x5ed88d, _0x506ec1) { return void 0x0 === _0x506ec1 && (_0x506ec1 = 0x2), _0x5ed88d['toFixed'](_0x506ec1); } , _0x412670['CheckExtends'] = function(_0x240bfe, _0x2e5993, _0x12b456) { _0x2e5993['minimizeInPlace'](_0x240bfe), _0x12b456['maximizeInPlace'](_0x240bfe); } , _0x412670['DeepCopy'] = function(_0x255ecb, _0x34896f, _0x31e271, _0xd7f533) { _0x1934ec['a']['DeepCopy'](_0x255ecb, _0x34896f, _0x31e271, _0xd7f533); } , _0x412670['IsEmpty'] = function(_0x1e94c0) { for (var _0x489563 in _0x1e94c0) if (_0x1e94c0['hasOwnProperty'](_0x489563)) return !0x1; return !0x0; } , _0x412670['EndsWith'] = function(_0x47f3d3, _0x2ef83a) { return -0x1 !== _0x47f3d3['indexOf'](_0x2ef83a, _0x47f3d3['length'] - _0x2ef83a['length']); } , _0x412670['RegisterTopRootEvents'] = function(_0xb5ec77) { for (var _0x4298c8 = 0x0; _0x4298c8 < _0xb5ec77['length']; _0x4298c8++) { var _0x345050 = _0xb5ec77[_0x4298c8]; window['addEventListener'](_0x345050['name'], _0x345050['handler'], !0x1); try { window['parent'] && window['parent']['addEventListener'](_0x345050['name'], _0x345050['handler'], !0x1); } catch (_0xb14a6d) {} } } , _0x412670['UnregisterTopRootEvents'] = function(_0x7454d2) { for (var _0x1d6b1d = 0x0; _0x1d6b1d < _0x7454d2['length']; _0x1d6b1d++) { var _0x226055 = _0x7454d2[_0x1d6b1d]; window['removeEventListener'](_0x226055['name'], _0x226055['handler']); try { window['parent'] && window['parent']['removeEventListener'](_0x226055['name'], _0x226055['handler']); } catch (_0x3d28c7) {} } } , _0x412670['DumpFramebuffer'] = function(_0xe3c1c0, _0x374178, _0x375710, _0x23e214, _0x5bc136, _0x2c9246) { void 0x0 === _0x5bc136 && (_0x5bc136 = 'image/png'); for (var _0x403c67 = 0x4 * _0xe3c1c0, _0x5dd620 = _0x374178 / 0x2, _0x18fbf1 = _0x375710['readPixels'](0x0, 0x0, _0xe3c1c0, _0x374178), _0x5be0f2 = 0x0; _0x5be0f2 < _0x5dd620; _0x5be0f2++) for (var _0x2d0b8e = 0x0; _0x2d0b8e < _0x403c67; _0x2d0b8e++) { var _0x2c0bae = _0x2d0b8e + _0x5be0f2 * _0x403c67 , _0x167a86 = _0x2d0b8e + (_0x374178 - _0x5be0f2 - 0x1) * _0x403c67 , _0x3634aa = _0x18fbf1[_0x2c0bae]; _0x18fbf1[_0x2c0bae] = _0x18fbf1[_0x167a86], _0x18fbf1[_0x167a86] = _0x3634aa; } _0x412670['_ScreenshotCanvas'] || (_0x412670['_ScreenshotCanvas'] = document['createElement']('canvas')), _0x412670['_ScreenshotCanvas']['width'] = _0xe3c1c0, _0x412670['_ScreenshotCanvas']['height'] = _0x374178; var _0x2db801 = _0x412670['_ScreenshotCanvas']['getContext']('2d'); if (_0x2db801) { var _0x5ebd16 = _0x2db801['createImageData'](_0xe3c1c0, _0x374178); _0x5ebd16['data']['set'](_0x18fbf1), _0x2db801['putImageData'](_0x5ebd16, 0x0, 0x0), _0x412670['EncodeScreenshotCanvasData'](_0x23e214, _0x5bc136, _0x2c9246); } } , _0x412670['ToBlob'] = function(_0x4217be, _0x47bbcf, _0x208fee) { void 0x0 === _0x208fee && (_0x208fee = 'image/png'), _0x4217be['toBlob'] || (_0x4217be['toBlob'] = function(_0x2c4383, _0x45ea19, _0x451df0) { var _0x1470e2 = this; setTimeout(function() { for (var _0x366c02 = atob(_0x1470e2['toDataURL'](_0x45ea19, _0x451df0)['split'](',')[0x1]), _0x36c792 = _0x366c02['length'], _0xca2b74 = new Uint8Array(_0x36c792), _0x22d22b = 0x0; _0x22d22b < _0x36c792; _0x22d22b++) _0xca2b74[_0x22d22b] = _0x366c02['charCodeAt'](_0x22d22b); _0x2c4383(new Blob([_0xca2b74])); }); } ), _0x4217be['toBlob'](function(_0x4f6016) { _0x47bbcf(_0x4f6016); }, _0x208fee); } , _0x412670['EncodeScreenshotCanvasData'] = function(_0x14e271, _0x202641, _0x5debf5) { (void 0x0 === _0x202641 && (_0x202641 = 'image/png'), _0x14e271) ? _0x14e271(_0x412670['_ScreenshotCanvas']['toDataURL'](_0x202641)) : this['ToBlob'](_0x412670['_ScreenshotCanvas'], function(_0x5c5aed) { if ('download'in document['createElement']('a')) { if (!_0x5debf5) { var _0x490342 = new Date() , _0x54ead1 = (_0x490342['getFullYear']() + '-' + (_0x490342['getMonth']() + 0x1))['slice'](0x2) + '-' + _0x490342['getDate']() + '_' + _0x490342['getHours']() + '-' + ('0' + _0x490342['getMinutes']())['slice'](-0x2); _0x5debf5 = 'screenshot_' + _0x54ead1 + '.png'; } _0x412670['Download'](_0x5c5aed, _0x5debf5); } else { var _0x4efc44 = URL['createObjectURL'](_0x5c5aed) , _0x29e0bc = window['open'](''); if (!_0x29e0bc) return; var _0x496a5b = _0x29e0bc['document']['createElement']('img'); _0x496a5b['onload'] = function() { URL['revokeObjectURL'](_0x4efc44); } , _0x496a5b['src'] = _0x4efc44, _0x29e0bc['document']['body']['appendChild'](_0x496a5b); } }, _0x202641); } , _0x412670['Download'] = function(_0x3a2940, _0x4adb82) { if (navigator && navigator['msSaveBlob']) navigator['msSaveBlob'](_0x3a2940, _0x4adb82); else { var _0x1109da = window['URL']['createObjectURL'](_0x3a2940) , _0x3a4eb2 = document['createElement']('a'); document['body']['appendChild'](_0x3a4eb2), _0x3a4eb2['style']['display'] = 'none', _0x3a4eb2['href'] = _0x1109da, _0x3a4eb2['download'] = _0x4adb82, _0x3a4eb2['addEventListener']('click', function() { _0x3a4eb2['parentElement'] && _0x3a4eb2['parentElement']['removeChild'](_0x3a4eb2); }), _0x3a4eb2['click'](), window['URL']['revokeObjectURL'](_0x1109da); } } , _0x412670['CreateScreenshot'] = function(_0x41d069, _0x350a17, _0x27b628, _0x492e12, _0x1e5ef3) { throw void 0x0 === _0x1e5ef3 && (_0x1e5ef3 = 'image/png'), _0x2354d1['a']['WarnImport']('ScreenshotTools'); } , _0x412670['CreateScreenshotUsingRenderTarget'] = function(_0x350447, _0x4fad52, _0x2cb944, _0x4a27bc, _0x5a44a5, _0x4552d4, _0x2beca3, _0x3e1146) { throw void 0x0 === _0x5a44a5 && (_0x5a44a5 = 'image/png'), void 0x0 === _0x4552d4 && (_0x4552d4 = 0x1), void 0x0 === _0x2beca3 && (_0x2beca3 = !0x1), _0x2354d1['a']['WarnImport']('ScreenshotTools'); } , _0x412670['RandomId'] = function() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'['replace'](/[xy]/g, function(_0x5a6153) { var _0x19d07e = 0x10 * Math['random']() | 0x0; return ('x' === _0x5a6153 ? _0x19d07e : 0x3 & _0x19d07e | 0x8)['toString'](0x10); }); } , _0x412670['IsBase64'] = function(_0x5b0d18) { return !(_0x5b0d18['length'] < 0x5) && 'data:' === _0x5b0d18['substr'](0x0, 0x5); } , _0x412670['DecodeBase64'] = function(_0x4a4c12) { for (var _0x123d04 = atob(_0x4a4c12['split'](',')[0x1]), _0x4c996d = _0x123d04['length'], _0x277c15 = new Uint8Array(new ArrayBuffer(_0x4c996d)), _0x51776d = 0x0; _0x51776d < _0x4c996d; _0x51776d++) _0x277c15[_0x51776d] = _0x123d04['charCodeAt'](_0x51776d); return _0x277c15['buffer']; } , _0x412670['GetAbsoluteUrl'] = function(_0x5d7e1f) { var _0x599941 = document['createElement']('a'); return _0x599941['href'] = _0x5d7e1f, _0x599941['href']; } , Object['defineProperty'](_0x412670, 'errorsCount', { 'get': function() { return _0x1cb6be['a']['errorsCount']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x412670['Log'] = function(_0x72cee5) { _0x1cb6be['a']['Log'](_0x72cee5); } , _0x412670['Warn'] = function(_0x2744c2) { _0x1cb6be['a']['Warn'](_0x2744c2); } , _0x412670['Error'] = function(_0x5399d4) { _0x1cb6be['a']['Error'](_0x5399d4); } , Object['defineProperty'](_0x412670, 'LogCache', { 'get': function() { return _0x1cb6be['a']['LogCache']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x412670['ClearLogCache'] = function() { _0x1cb6be['a']['ClearLogCache'](); } , Object['defineProperty'](_0x412670, 'LogLevels', { 'set': function(_0x4dd3d5) { _0x1cb6be['a']['LogLevels'] = _0x4dd3d5; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x412670['IsFileURL'] = function() { return 'file:' === location['protocol']; } , Object['defineProperty'](_0x412670, 'PerformanceLogLevel', { 'set': function(_0x4d954c) { return (_0x4d954c & _0x412670['PerformanceUserMarkLogLevel']) === _0x412670['PerformanceUserMarkLogLevel'] ? (_0x412670['StartPerformanceCounter'] = _0x412670['_StartUserMark'], void (_0x412670['EndPerformanceCounter'] = _0x412670['_EndUserMark'])) : (_0x4d954c & _0x412670['PerformanceConsoleLogLevel']) === _0x412670['PerformanceConsoleLogLevel'] ? (_0x412670['StartPerformanceCounter'] = _0x412670['_StartPerformanceConsole'], void (_0x412670['EndPerformanceCounter'] = _0x412670['_EndPerformanceConsole'])) : (_0x412670['StartPerformanceCounter'] = _0x412670['_StartPerformanceCounterDisabled'], void (_0x412670['EndPerformanceCounter'] = _0x412670['_EndPerformanceCounterDisabled'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x412670['_StartPerformanceCounterDisabled'] = function(_0x47f2c0, _0x117383) {} , _0x412670['_EndPerformanceCounterDisabled'] = function(_0x263e37, _0x5f124) {} , _0x412670['_StartUserMark'] = function(_0x438a97, _0x1e3562) { if (void 0x0 === _0x1e3562 && (_0x1e3562 = !0x0), !_0x412670['_performance']) { if (!_0x55e0c9['a']['IsWindowObjectExist']()) return; _0x412670['_performance'] = window['performance']; } _0x1e3562 && _0x412670['_performance']['mark'] && _0x412670['_performance']['mark'](_0x438a97 + '-Begin'); } , _0x412670['_EndUserMark'] = function(_0x35cd1b, _0x1e6442) { void 0x0 === _0x1e6442 && (_0x1e6442 = !0x0), _0x1e6442 && _0x412670['_performance']['mark'] && (_0x412670['_performance']['mark'](_0x35cd1b + '-End'), _0x412670['_performance']['measure'](_0x35cd1b, _0x35cd1b + '-Begin', _0x35cd1b + '-End')); } , _0x412670['_StartPerformanceConsole'] = function(_0x4ca9f8, _0x9381b) { void 0x0 === _0x9381b && (_0x9381b = !0x0), _0x9381b && (_0x412670['_StartUserMark'](_0x4ca9f8, _0x9381b), console['time'] && console['time'](_0x4ca9f8)); } , _0x412670['_EndPerformanceConsole'] = function(_0x4d09fe, _0xa796ec) { void 0x0 === _0xa796ec && (_0xa796ec = !0x0), _0xa796ec && (_0x412670['_EndUserMark'](_0x4d09fe, _0xa796ec), console['time'] && console['timeEnd'](_0x4d09fe)); } , Object['defineProperty'](_0x412670, 'Now', { 'get': function() { return _0x4f4d06['a']['Now']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x412670['GetClassName'] = function(_0x4c4e1a, _0x123f4f) { void 0x0 === _0x123f4f && (_0x123f4f = !0x1); var _0x47523a = null; if (!_0x123f4f && _0x4c4e1a['getClassName']) _0x47523a = _0x4c4e1a['getClassName'](); else { if (_0x4c4e1a instanceof Object) _0x47523a = (_0x123f4f ? _0x4c4e1a : Object['getPrototypeOf'](_0x4c4e1a))['constructor']['__bjsclassName__']; _0x47523a || (_0x47523a = typeof _0x4c4e1a); } return _0x47523a; } , _0x412670['First'] = function(_0x15e70e, _0x3f4b4f) { for (var _0x1911bb = 0x0, _0x49f0e8 = _0x15e70e; _0x1911bb < _0x49f0e8['length']; _0x1911bb++) { var _0x154443 = _0x49f0e8[_0x1911bb]; if (_0x3f4b4f(_0x154443)) return _0x154443; } return null; } , _0x412670['getFullClassName'] = function(_0x2046c9, _0x2dbec8) { void 0x0 === _0x2dbec8 && (_0x2dbec8 = !0x1); var _0x2a84a6 = null , _0x58229a = null; if (!_0x2dbec8 && _0x2046c9['getClassName']) _0x2a84a6 = _0x2046c9['getClassName'](); else { if (_0x2046c9 instanceof Object) { var _0x14b26f = _0x2dbec8 ? _0x2046c9 : Object['getPrototypeOf'](_0x2046c9); _0x2a84a6 = _0x14b26f['constructor']['__bjsclassName__'], _0x58229a = _0x14b26f['constructor']['__bjsmoduleName__']; } _0x2a84a6 || (_0x2a84a6 = typeof _0x2046c9); } return _0x2a84a6 ? (null != _0x58229a ? _0x58229a + '.' : '') + _0x2a84a6 : null; } , _0x412670['DelayAsync'] = function(_0x1b38ae) { return new Promise(function(_0x408a7e) { setTimeout(function() { _0x408a7e(); }, _0x1b38ae); } ); } , _0x412670['GetCurrentGradient'] = function(_0x5a563d, _0x126ba9, _0x425401) { for (var _0x13669c = 0x0; _0x13669c < _0x126ba9['length'] - 0x1; _0x13669c++) { var _0x25875d = _0x126ba9[_0x13669c] , _0x15ea5f = _0x126ba9[_0x13669c + 0x1]; if (_0x5a563d >= _0x25875d['gradient'] && _0x5a563d <= _0x15ea5f['gradient']) return void _0x425401(_0x25875d, _0x15ea5f, (_0x5a563d - _0x25875d['gradient']) / (_0x15ea5f['gradient'] - _0x25875d['gradient'])); } var _0xdb7992 = _0x126ba9['length'] - 0x1; _0x425401(_0x126ba9[_0xdb7992], _0x126ba9[_0xdb7992], 0x1); } , _0x412670['BaseUrl'] = '', _0x412670['UseCustomRequestHeaders'] = !0x1, _0x412670['CustomRequestHeaders'] = _0x2dfa9e['a']['CustomRequestHeaders'], _0x412670['DefaultRetryStrategy'] = _0x135211['ExponentialBackoff'](), _0x412670['CorsBehavior'] = 'anonymous', _0x412670['UseFallbackTexture'] = !0x0, _0x412670['RegisteredExternalClasses'] = {}, _0x412670['fallbackTexture'] = 'data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBmRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAAQAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQubmV0IDQuMC41AP/bAEMABAIDAwMCBAMDAwQEBAQFCQYFBQUFCwgIBgkNCw0NDQsMDA4QFBEODxMPDAwSGBITFRYXFxcOERkbGRYaFBYXFv/bAEMBBAQEBQUFCgYGChYPDA8WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFv/AABEIAQABAAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APH6KKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76P//Z', _0x412670['_tmpFloatArray'] = new Float32Array(0x1), _0x412670['GetDOMTextContent'] = _0x55e0c9['a']['GetDOMTextContent'], _0x412670['PreprocessUrl'] = function(_0x4b20b5) { return _0x4b20b5; } , _0x412670['NoneLogLevel'] = _0x1cb6be['a']['NoneLogLevel'], _0x412670['MessageLogLevel'] = _0x1cb6be['a']['MessageLogLevel'], _0x412670['WarningLogLevel'] = _0x1cb6be['a']['WarningLogLevel'], _0x412670['ErrorLogLevel'] = _0x1cb6be['a']['ErrorLogLevel'], _0x412670['AllLogLevel'] = _0x1cb6be['a']['AllLogLevel'], _0x412670['IsWindowObjectExist'] = _0x55e0c9['a']['IsWindowObjectExist'], _0x412670['PerformanceNoneLogLevel'] = 0x0, _0x412670['PerformanceUserMarkLogLevel'] = 0x1, _0x412670['PerformanceConsoleLogLevel'] = 0x2, _0x412670['StartPerformanceCounter'] = _0x412670['_StartPerformanceCounterDisabled'], _0x412670['EndPerformanceCounter'] = _0x412670['_EndPerformanceCounterDisabled'], _0x412670; }() , _0x4f4b1c = function() { function _0x2e3ae8() { this['_startMonitoringTime'] = 0x0, this['_min'] = 0x0, this['_max'] = 0x0, this['_average'] = 0x0, this['_lastSecAverage'] = 0x0, this['_current'] = 0x0, this['_totalValueCount'] = 0x0, this['_totalAccumulated'] = 0x0, this['_lastSecAccumulated'] = 0x0, this['_lastSecTime'] = 0x0, this['_lastSecValueCount'] = 0x0; } return Object['defineProperty'](_0x2e3ae8['prototype'], 'min', { 'get': function() { return this['_min']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2e3ae8['prototype'], 'max', { 'get': function() { return this['_max']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2e3ae8['prototype'], 'average', { 'get': function() { return this['_average']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2e3ae8['prototype'], 'lastSecAverage', { 'get': function() { return this['_lastSecAverage']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2e3ae8['prototype'], 'current', { 'get': function() { return this['_current']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2e3ae8['prototype'], 'total', { 'get': function() { return this['_totalAccumulated']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2e3ae8['prototype'], 'count', { 'get': function() { return this['_totalValueCount']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2e3ae8['prototype']['fetchNewFrame'] = function() { this['_totalValueCount']++, this['_current'] = 0x0, this['_lastSecValueCount']++; } , _0x2e3ae8['prototype']['addCount'] = function(_0x503911, _0x4190f3) { _0x2e3ae8['Enabled'] && (this['_current'] += _0x503911, _0x4190f3 && this['_fetchResult']()); } , _0x2e3ae8['prototype']['beginMonitoring'] = function() { _0x2e3ae8['Enabled'] && (this['_startMonitoringTime'] = _0x4f4d06['a']['Now']); } , _0x2e3ae8['prototype']['endMonitoring'] = function(_0x2c4c50) { if (void 0x0 === _0x2c4c50 && (_0x2c4c50 = !0x0), _0x2e3ae8['Enabled']) { _0x2c4c50 && this['fetchNewFrame'](); var _0x28cbca = _0x4f4d06['a']['Now']; this['_current'] = _0x28cbca - this['_startMonitoringTime'], _0x2c4c50 && this['_fetchResult'](); } } , _0x2e3ae8['prototype']['_fetchResult'] = function() { this['_totalAccumulated'] += this['_current'], this['_lastSecAccumulated'] += this['_current'], this['_min'] = Math['min'](this['_min'], this['_current']), this['_max'] = Math['max'](this['_max'], this['_current']), this['_average'] = this['_totalAccumulated'] / this['_totalValueCount']; var _0x49e6ac = _0x4f4d06['a']['Now']; _0x49e6ac - this['_lastSecTime'] > 0x3e8 && (this['_lastSecAverage'] = this['_lastSecAccumulated'] / this['_lastSecValueCount'], this['_lastSecTime'] = _0x49e6ac, this['_lastSecAccumulated'] = 0x0, this['_lastSecValueCount'] = 0x0); } , _0x2e3ae8['Enabled'] = !0x0, _0x2e3ae8; }(); function _0x4bbde3(_0x1a49fe, _0x74a655) { return function(_0x4de114) { _0x4de114['__bjsclassName__'] = _0x1a49fe, _0x4de114['__bjsmoduleName__'] = null != _0x74a655 ? _0x74a655 : null; } ; } var _0x1f7766 = function() { function _0x55ad4c(_0x4e942b, _0x270cc0, _0x4bbbf7, _0x4b4400) { void 0x0 === _0x4b4400 && (_0x4b4400 = 0x0), this['iterations'] = _0x4e942b, this['index'] = _0x4b4400 - 0x1, this['_done'] = !0x1, this['_fn'] = _0x270cc0, this['_successCallback'] = _0x4bbbf7; } return _0x55ad4c['prototype']['executeNext'] = function() { this['_done'] || (this['index'] + 0x1 < this['iterations'] ? (++this['index'], this['_fn'](this)) : this['breakLoop']()); } , _0x55ad4c['prototype']['breakLoop'] = function() { this['_done'] = !0x0, this['_successCallback'](); } , _0x55ad4c['Run'] = function(_0x54c11e, _0x1d2eae, _0x33002e, _0x1ed6c7) { void 0x0 === _0x1ed6c7 && (_0x1ed6c7 = 0x0); var _0x1df416 = new _0x55ad4c(_0x54c11e,_0x1d2eae,_0x33002e,_0x1ed6c7); return _0x1df416['executeNext'](), _0x1df416; } , _0x55ad4c['SyncAsyncForLoop'] = function(_0x54be17, _0x520ff3, _0x41ea1b, _0x4901d0, _0x2a64bb, _0x4abb15) { return void 0x0 === _0x4abb15 && (_0x4abb15 = 0x0), _0x55ad4c['Run'](Math['ceil'](_0x54be17 / _0x520ff3), function(_0x17c762) { _0x2a64bb && _0x2a64bb() ? _0x17c762['breakLoop']() : setTimeout(function() { for (var _0x3050e2 = 0x0; _0x3050e2 < _0x520ff3; ++_0x3050e2) { var _0x2b5930 = _0x17c762['index'] * _0x520ff3 + _0x3050e2; if (_0x2b5930 >= _0x54be17) break; if (_0x41ea1b(_0x2b5930), _0x2a64bb && _0x2a64bb()) { _0x17c762['breakLoop'](); break; } } _0x17c762['executeNext'](); }, _0x4abb15); }, _0x4901d0); } , _0x55ad4c; }(); } , function(_0x4e8765, _0xbe3d86, _0x30216a) { 'use strict'; _0x30216a['d'](_0xbe3d86, 'd', function() { return _0x559656; }), _0x30216a['d'](_0xbe3d86, 'a', function() { return _0x23388b; }), _0x30216a['d'](_0xbe3d86, 'c', function() { return _0x35a19f; }), _0x30216a['d'](_0xbe3d86, 'b', function() { return _0x240c27; }); var _0x31b8ef = _0x30216a(0x1) , _0x5d0850 = _0x30216a(0x8) , _0x516b66 = _0x30216a(0x69) , _0x5de640 = _0x30216a(0x3d) , _0x236e8b = _0x30216a(0x6a) , _0x49b495 = _0x30216a(0x9) , _0x17f173 = _0x30216a(0x0) , _0x20fb29 = _0x30216a(0xc) , _0x12c9c8 = _0x30216a(0x5) , _0x5cd921 = _0x30216a(0x14) , _0x1a5085 = _0x30216a(0x1a) , _0x1d88ea = _0x30216a(0x5e) , _0x426396 = _0x30216a(0x3) , _0x28a362 = _0x30216a(0x23) , _0x3fe383 = _0x30216a(0x6) , _0x5aba2b = _0x30216a(0x17) , _0x1ad15a = _0x30216a(0x5c) , _0x51a360 = _0x30216a(0x13) , _0x5ad3c1 = _0x30216a(0x6b) , _0x5f2dad = _0x30216a(0x49) , _0x5d9e3f = function() { return function() {} ; }() , _0x559656 = function() { return function() {} ; }() , _0x23388b = function() { return function() {} ; }() , _0x35a19f = function() { return function() {} ; }() , _0x240c27 = function() { function _0x2b36d6(_0xf681fc, _0x593af2, _0xecf985, _0x792390) { var _0x11ba06 = this; void 0x0 === _0x792390 && (_0x792390 = !0x1), this['forcePOTTextures'] = !0x1, this['isFullscreen'] = !0x1, this['isPointerLock'] = !0x1, this['cullBackFaces'] = !0x0, this['renderEvenInBackground'] = !0x0, this['preventCacheWipeBetweenFrames'] = !0x1, this['enableOfflineSupport'] = !0x1, this['disableManifestCheck'] = !0x1, this['scenes'] = new Array(), this['onNewSceneAddedObservable'] = new _0x5d0850['c'](), this['postProcesses'] = new Array(), this['validateShaderPrograms'] = !0x1, this['onResizeObservable'] = new _0x5d0850['c'](), this['onCanvasBlurObservable'] = new _0x5d0850['c'](), this['onCanvasFocusObservable'] = new _0x5d0850['c'](), this['onCanvasPointerOutObservable'] = new _0x5d0850['c'](), this['onBeforeTextureInitObservable'] = new _0x5d0850['c'](), this['disableUniformBuffers'] = !0x1, this['_uniformBuffers'] = new Array(), this['onBeginFrameObservable'] = new _0x5d0850['c'](), this['customAnimationFrameRequester'] = null, this['onEndFrameObservable'] = new _0x5d0850['c'](), this['onBeforeShaderCompilationObservable'] = new _0x5d0850['c'](), this['onAfterShaderCompilationObservable'] = new _0x5d0850['c'](), this['_windowIsBackground'] = !0x1, this['_webGLVersion'] = 0x1, this['_highPrecisionShadersAllowed'] = !0x0, this['_badOS'] = !0x1, this['_badDesktopOS'] = !0x1, this['_colorWrite'] = !0x0, this['_drawCalls'] = new _0x49b495['f'](), this['_renderingQueueLaunched'] = !0x1, this['_activeRenderLoops'] = new Array(), this['_deterministicLockstep'] = !0x1, this['_lockstepMaxSteps'] = 0x4, this['onContextLostObservable'] = new _0x5d0850['c'](), this['onContextRestoredObservable'] = new _0x5d0850['c'](), this['_contextWasLost'] = !0x1, this['_doNotHandleContextLost'] = !0x1, this['_performanceMonitor'] = new _0x516b66['a'](), this['_fps'] = 0x3c, this['_deltaTime'] = 0x0, this['disablePerformanceMonitorInBackground'] = !0x1, this['disableVertexArrayObjects'] = !0x1, this['_depthCullingState'] = new _0x1d88ea['b'](), this['_stencilState'] = new _0x1d88ea['c'](), this['_alphaState'] = new _0x1d88ea['a'](), this['_alphaMode'] = _0x2b36d6['ALPHA_DISABLE'], this['_internalTexturesCache'] = new Array(), this['_activeChannel'] = 0x0, this['_currentTextureChannel'] = -0x1, this['_boundTexturesCache'] = {}, this['_compiledEffects'] = {}, this['_vertexAttribArraysEnabled'] = [], this['_uintIndicesCurrentlySet'] = !0x1, this['_currentBoundBuffer'] = new Array(), this['_currentFramebuffer'] = null, this['_currentBufferPointers'] = new Array(), this['_currentInstanceLocations'] = new Array(), this['_currentInstanceBuffers'] = new Array(), this['_vaoRecordInProgress'] = !0x1, this['_mustWipeVertexAttributes'] = !0x1, this['_nextFreeTextureSlots'] = new Array(), this['_maxSimultaneousTextures'] = 0x0, this['_activeRequests'] = new Array(), this['_texturesSupported'] = new Array(), this['premultipliedAlpha'] = !0x0, this['_viewportCached'] = new _0x17f173['y'](0x0,0x0,0x0,0x0), this['_unpackFlipYCached'] = null, this['enableUnpackFlipYCached'] = !0x0, this['_boundUniforms'] = {}, _0x236e8b['a']['Apply'](); var _0x15ad73 = null; if (_0x2b36d6['Instances']['push'](this), _0xf681fc) { if (_0xecf985 = _0xecf985 || {}, _0xf681fc['getContext']) { if (_0x15ad73 = _0xf681fc, this['_renderingCanvas'] = _0x15ad73, null != _0x593af2 && (_0xecf985['antialias'] = _0x593af2), void 0x0 === _0xecf985['deterministicLockstep'] && (_0xecf985['deterministicLockstep'] = !0x1), void 0x0 === _0xecf985['lockstepMaxSteps'] && (_0xecf985['lockstepMaxSteps'] = 0x4), void 0x0 === _0xecf985['preserveDrawingBuffer'] && (_0xecf985['preserveDrawingBuffer'] = !0x1), void 0x0 === _0xecf985['audioEngine'] && (_0xecf985['audioEngine'] = !0x0), void 0x0 === _0xecf985['stencil'] && (_0xecf985['stencil'] = !0x0), !0x1 === _0xecf985['premultipliedAlpha'] && (this['premultipliedAlpha'] = !0x1), this['_deterministicLockstep'] = _0xecf985['deterministicLockstep'], this['_lockstepMaxSteps'] = _0xecf985['lockstepMaxSteps'], this['_doNotHandleContextLost'] = !!_0xecf985['doNotHandleContextLost'], navigator && navigator['userAgent']) for (var _0x2e6971 = navigator['userAgent'], _0x26e7fa = 0x0, _0x17ae72 = _0x2b36d6['ExceptionList']; _0x26e7fa < _0x17ae72['length']; _0x26e7fa++) { var _0x133fc6 = _0x17ae72[_0x26e7fa] , _0x2209c0 = _0x133fc6['key'] , _0x20dccf = _0x133fc6['targets']; if (new RegExp(_0x2209c0)['test'](_0x2e6971)) { if (_0x133fc6['capture'] && _0x133fc6['captureConstraint']) { var _0x25f72a = _0x133fc6['capture'] , _0x3c1eb0 = _0x133fc6['captureConstraint'] , _0x2d7e6f = new RegExp(_0x25f72a)['exec'](_0x2e6971); if (_0x2d7e6f && _0x2d7e6f['length'] > 0x0) if (parseInt(_0x2d7e6f[_0x2d7e6f['length'] - 0x1]) >= _0x3c1eb0) continue; } for (var _0x2d2405 = 0x0, _0x3ff6da = _0x20dccf; _0x2d2405 < _0x3ff6da['length']; _0x2d2405++) { switch (_0x3ff6da[_0x2d2405]) { case 'uniformBuffer': this['disableUniformBuffers'] = !0x0; break; case 'vao': this['disableVertexArrayObjects'] = !0x0; } } } } if (!_0xecf985['disableWebGL2Support']) try { this['_gl'] = _0x15ad73['getContext']('webgl2', _0xecf985) || _0x15ad73['getContext']('experimental-webgl2', _0xecf985), this['_gl'] && (this['_webGLVersion'] = 0x2, this['_gl']['deleteQuery'] || (this['_webGLVersion'] = 0x1)); } catch (_0x261df8) {} if (!this['_gl']) { if (!_0x15ad73) throw new Error('The\x20provided\x20canvas\x20is\x20null\x20or\x20undefined.'); try { this['_gl'] = _0x15ad73['getContext']('webgl', _0xecf985) || _0x15ad73['getContext']('experimental-webgl', _0xecf985); } catch (_0x46f835) { throw new Error('WebGL\x20not\x20supported'); } } if (!this['_gl']) throw new Error('WebGL\x20not\x20supported'); this['_gl']['pixelStorei'](this['_gl']['UNPACK_COLORSPACE_CONVERSION_WEBGL'], this['_gl']['NONE']), this['_onCanvasFocus'] = function() { _0x11ba06['onCanvasFocusObservable']['notifyObservers'](_0x11ba06); } , this['_onCanvasBlur'] = function() { _0x11ba06['onCanvasBlurObservable']['notifyObservers'](_0x11ba06); } , _0x15ad73['addEventListener']('focus', this['_onCanvasFocus']), _0x15ad73['addEventListener']('blur', this['_onCanvasBlur']), this['_onBlur'] = function() { _0x11ba06['disablePerformanceMonitorInBackground'] && _0x11ba06['_performanceMonitor']['disable'](), _0x11ba06['_windowIsBackground'] = !0x0; } , this['_onFocus'] = function() { _0x11ba06['disablePerformanceMonitorInBackground'] && _0x11ba06['_performanceMonitor']['enable'](), _0x11ba06['_windowIsBackground'] = !0x1; } , this['_onCanvasPointerOut'] = function(_0x4d9705) { _0x11ba06['onCanvasPointerOutObservable']['notifyObservers'](_0x4d9705); } , _0x28a362['a']['IsWindowObjectExist']() && (window['addEventListener']('blur', this['_onBlur']), window['addEventListener']('focus', this['_onFocus'])), _0x15ad73['addEventListener']('pointerout', this['_onCanvasPointerOut']), this['_doNotHandleContextLost'] || (this['_onContextLost'] = function(_0x5093f1) { _0x5093f1['preventDefault'](), _0x11ba06['_contextWasLost'] = !0x0, _0x3fe383['a']['Warn']('WebGL\x20context\x20lost.'), _0x11ba06['onContextLostObservable']['notifyObservers'](_0x11ba06); } , this['_onContextRestored'] = function() { setTimeout(function() { _0x11ba06['_initGLContext'](), _0x11ba06['_rebuildEffects'](), _0x11ba06['_rebuildInternalTextures'](), _0x11ba06['_rebuildBuffers'](), _0x11ba06['wipeCaches'](!0x0), _0x3fe383['a']['Warn']('WebGL\x20context\x20successfully\x20restored.'), _0x11ba06['onContextRestoredObservable']['notifyObservers'](_0x11ba06), _0x11ba06['_contextWasLost'] = !0x1; }, 0x0); } , _0x15ad73['addEventListener']('webglcontextlost', this['_onContextLost'], !0x1), _0x15ad73['addEventListener']('webglcontextrestored', this['_onContextRestored'], !0x1)), _0xecf985['doNotHandleTouchAction'] || this['_disableTouchAction'](); } else { this['_gl'] = _0xf681fc, this['_renderingCanvas'] = this['_gl']['canvas'], this['_gl']['renderbufferStorageMultisample'] && (this['_webGLVersion'] = 0x2); var _0x31c10e = this['_gl']['getContextAttributes'](); _0x31c10e && (_0xecf985['stencil'] = _0x31c10e['stencil']); } void 0x0 !== _0xecf985['useHighPrecisionFloats'] && (this['_highPrecisionShadersAllowed'] = _0xecf985['useHighPrecisionFloats']); var _0x577eda = _0x28a362['a']['IsWindowObjectExist']() && window['devicePixelRatio'] || 0x1 , _0x17a916 = _0xecf985['limitDeviceRatio'] || _0x577eda; if (this['_hardwareScalingLevel'] = _0x792390 ? 0x1 / Math['min'](_0x17a916, _0x577eda) : 0x1, this['resize'](), this['_isStencilEnable'] = !!_0xecf985['stencil'], this['_initGLContext'](), _0x15ad73) { var _0x35c0a1 = document; this['_onFullscreenChange'] = function() { void 0x0 !== _0x35c0a1['fullscreen'] ? _0x11ba06['isFullscreen'] = _0x35c0a1['fullscreen'] : void 0x0 !== _0x35c0a1['mozFullScreen'] ? _0x11ba06['isFullscreen'] = _0x35c0a1['mozFullScreen'] : void 0x0 !== _0x35c0a1['webkitIsFullScreen'] ? _0x11ba06['isFullscreen'] = _0x35c0a1['webkitIsFullScreen'] : void 0x0 !== _0x35c0a1['msIsFullScreen'] && (_0x11ba06['isFullscreen'] = _0x35c0a1['msIsFullScreen']), _0x11ba06['isFullscreen'] && _0x11ba06['_pointerLockRequested'] && _0x15ad73 && (_0x15ad73['requestPointerLock'] = _0x15ad73['requestPointerLock'] || _0x15ad73['msRequestPointerLock'] || _0x15ad73['mozRequestPointerLock'] || _0x15ad73['webkitRequestPointerLock'], _0x15ad73['requestPointerLock'] && _0x15ad73['requestPointerLock']()); } , document['addEventListener']('fullscreenchange', this['_onFullscreenChange'], !0x1), document['addEventListener']('mozfullscreenchange', this['_onFullscreenChange'], !0x1), document['addEventListener']('webkitfullscreenchange', this['_onFullscreenChange'], !0x1), document['addEventListener']('msfullscreenchange', this['_onFullscreenChange'], !0x1), this['_onPointerLockChange'] = function() { _0x11ba06['isPointerLock'] = _0x35c0a1['mozPointerLockElement'] === _0x15ad73 || _0x35c0a1['webkitPointerLockElement'] === _0x15ad73 || _0x35c0a1['msPointerLockElement'] === _0x15ad73 || _0x35c0a1['pointerLockElement'] === _0x15ad73; } , document['addEventListener']('pointerlockchange', this['_onPointerLockChange'], !0x1), document['addEventListener']('mspointerlockchange', this['_onPointerLockChange'], !0x1), document['addEventListener']('mozpointerlockchange', this['_onPointerLockChange'], !0x1), document['addEventListener']('webkitpointerlockchange', this['_onPointerLockChange'], !0x1), this['_connectVREvents'](_0x15ad73, _0x35c0a1); } !_0x2b36d6['audioEngine'] && _0xecf985['audioEngine'] && _0x2b36d6['AudioEngineFactory'] && (_0x2b36d6['audioEngine'] = _0x2b36d6['AudioEngineFactory'](this['getRenderingCanvas']())); for (var _0x3e24a8 = 0x0; _0x3e24a8 < this['_caps']['maxVertexAttribs']; _0x3e24a8++) this['_currentBufferPointers'][_0x3e24a8] = new _0x5d9e3f(); this['_prepareVRComponent'](), _0xecf985['autoEnableWebVR'] && this['initWebVR'](), this['_badOS'] = /iPad/i['test'](navigator['userAgent']) || /iPhone/i['test'](navigator['userAgent']), this['_badDesktopOS'] = /^((?!chrome|android).)*safari/i['test'](navigator['userAgent']), console['log']('Babylon.js\x20v' + _0x2b36d6['Version'] + '\x20-\x20' + this['description']), this['enableOfflineSupport'] = void 0x0 !== _0x2b36d6['OfflineProviderFactory']; } } return Object['defineProperty'](_0x2b36d6, 'Instances', { 'get': function() { return _0x5aba2b['a']['Instances']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6, 'LastCreatedEngine', { 'get': function() { return _0x5aba2b['a']['LastCreatedEngine']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6, 'LastCreatedScene', { 'get': function() { return _0x5aba2b['a']['LastCreatedScene']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2b36d6['MarkAllMaterialsAsDirty'] = function(_0x265af0, _0x3aa03d) { for (var _0x4bb568 = 0x0; _0x4bb568 < _0x2b36d6['Instances']['length']; _0x4bb568++) for (var _0x305f0c = _0x2b36d6['Instances'][_0x4bb568], _0x31af1f = 0x0; _0x31af1f < _0x305f0c['scenes']['length']; _0x31af1f++) _0x305f0c['scenes'][_0x31af1f]['markAllMaterialsAsDirty'](_0x265af0, _0x3aa03d); } , Object['defineProperty'](_0x2b36d6, 'NpmPackage', { 'get': function() { return 'babylonjs@4.0.3'; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6, 'Version', { 'get': function() { return '4.0.3'; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'description', { 'get': function() { var _0x5c1d7f = 'WebGL' + this['webGLVersion']; return this['_caps']['parallelShaderCompile'] && (_0x5c1d7f += '\x20-\x20Parallel\x20shader\x20compilation'), _0x5c1d7f; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6, 'ShadersRepository', { 'get': function() { return _0x12c9c8['a']['ShadersRepository']; }, 'set': function(_0x50038d) { _0x12c9c8['a']['ShadersRepository'] = _0x50038d; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2b36d6['DefaultLoadingScreenFactory'] = function(_0x1930c5) { throw _0x51a360['a']['WarnImport']('LoadingScreen'); } , Object['defineProperty'](_0x2b36d6['prototype'], 'supportsUniformBuffers', { 'get': function() { return this['webGLVersion'] > 0x1 && !this['disableUniformBuffers']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], '_shouldUseHighPrecisionShader', { 'get': function() { return this['_caps']['highPrecisionShaderSupported'] && this['_highPrecisionShadersAllowed']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'needPOTTextures', { 'get': function() { return this['_webGLVersion'] < 0x2 || this['forcePOTTextures']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'doNotHandleContextLost', { 'get': function() { return this['_doNotHandleContextLost']; }, 'set': function(_0x4910f6) { this['_doNotHandleContextLost'] = _0x4910f6; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'performanceMonitor', { 'get': function() { return this['_performanceMonitor']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'texturesSupported', { 'get': function() { return this['_texturesSupported']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'textureFormatInUse', { 'get': function() { return this['_textureFormatInUse']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'currentViewport', { 'get': function() { return this['_cachedViewport']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'emptyTexture', { 'get': function() { return this['_emptyTexture'] || (this['_emptyTexture'] = this['createRawTexture'](new Uint8Array(0x4), 0x1, 0x1, _0x2b36d6['TEXTUREFORMAT_RGBA'], !0x1, !0x1, _0x2b36d6['TEXTURE_NEAREST_SAMPLINGMODE'])), this['_emptyTexture']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'emptyTexture3D', { 'get': function() { return this['_emptyTexture3D'] || (this['_emptyTexture3D'] = this['createRawTexture3D'](new Uint8Array(0x4), 0x1, 0x1, 0x1, _0x2b36d6['TEXTUREFORMAT_RGBA'], !0x1, !0x1, _0x2b36d6['TEXTURE_NEAREST_SAMPLINGMODE'])), this['_emptyTexture3D']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'emptyCubeTexture', { 'get': function() { if (!this['_emptyCubeTexture']) { var _0x15256c = new Uint8Array(0x4) , _0x114d23 = [_0x15256c, _0x15256c, _0x15256c, _0x15256c, _0x15256c, _0x15256c]; this['_emptyCubeTexture'] = this['createRawCubeTexture'](_0x114d23, 0x1, _0x2b36d6['TEXTUREFORMAT_RGBA'], _0x2b36d6['TEXTURETYPE_UNSIGNED_INT'], !0x1, !0x1, _0x2b36d6['TEXTURE_NEAREST_SAMPLINGMODE']); } return this['_emptyCubeTexture']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2b36d6['prototype']['initWebVR'] = function() { throw _0x51a360['a']['WarnImport']('WebVRCamera'); } , _0x2b36d6['prototype']['_prepareVRComponent'] = function() {} , _0x2b36d6['prototype']['_connectVREvents'] = function(_0x2a02c1, _0x8a7518) {} , _0x2b36d6['prototype']['_submitVRFrame'] = function() {} , _0x2b36d6['prototype']['disableVR'] = function() {} , _0x2b36d6['prototype']['isVRPresenting'] = function() { return !0x1; } , _0x2b36d6['prototype']['_requestVRFrame'] = function() {} , _0x2b36d6['prototype']['_disableTouchAction'] = function() { this['_renderingCanvas'] && (this['_renderingCanvas']['setAttribute']('touch-action', 'none'), this['_renderingCanvas']['style']['touchAction'] = 'none', this['_renderingCanvas']['style']['msTouchAction'] = 'none'); } , _0x2b36d6['prototype']['_rebuildInternalTextures'] = function() { for (var _0x4c6653 = 0x0, _0x3dcd81 = this['_internalTexturesCache']['slice'](); _0x4c6653 < _0x3dcd81['length']; _0x4c6653++) { _0x3dcd81[_0x4c6653]['_rebuild'](); } } , _0x2b36d6['prototype']['_rebuildEffects'] = function() { for (var _0x18656a in this['_compiledEffects']) { this['_compiledEffects'][_0x18656a]['_prepareEffect'](); } _0x12c9c8['a']['ResetCache'](); } , _0x2b36d6['prototype']['areAllEffectsReady'] = function() { for (var _0x150981 in this['_compiledEffects']) { if (!this['_compiledEffects'][_0x150981]['isReady']()) return !0x1; } return !0x0; } , _0x2b36d6['prototype']['_rebuildBuffers'] = function() { for (var _0x2bc9bd = 0x0, _0x254028 = this['scenes']; _0x2bc9bd < _0x254028['length']; _0x2bc9bd++) { var _0x5a738f = _0x254028[_0x2bc9bd]; _0x5a738f['resetCachedMaterial'](), _0x5a738f['_rebuildGeometries'](), _0x5a738f['_rebuildTextures'](); } for (var _0x231680 = 0x0, _0x586ee0 = this['_uniformBuffers']; _0x231680 < _0x586ee0['length']; _0x231680++) { _0x586ee0[_0x231680]['_rebuild'](); } } , _0x2b36d6['prototype']['_initGLContext'] = function() { this['_caps'] = new _0x35a19f(), this['_caps']['maxTexturesImageUnits'] = this['_gl']['getParameter'](this['_gl']['MAX_TEXTURE_IMAGE_UNITS']), this['_caps']['maxCombinedTexturesImageUnits'] = this['_gl']['getParameter'](this['_gl']['MAX_COMBINED_TEXTURE_IMAGE_UNITS']), this['_caps']['maxVertexTextureImageUnits'] = this['_gl']['getParameter'](this['_gl']['MAX_VERTEX_TEXTURE_IMAGE_UNITS']), this['_caps']['maxTextureSize'] = this['_gl']['getParameter'](this['_gl']['MAX_TEXTURE_SIZE']), this['_caps']['maxCubemapTextureSize'] = this['_gl']['getParameter'](this['_gl']['MAX_CUBE_MAP_TEXTURE_SIZE']), this['_caps']['maxRenderTextureSize'] = this['_gl']['getParameter'](this['_gl']['MAX_RENDERBUFFER_SIZE']), this['_caps']['maxVertexAttribs'] = this['_gl']['getParameter'](this['_gl']['MAX_VERTEX_ATTRIBS']), this['_caps']['maxVaryingVectors'] = this['_gl']['getParameter'](this['_gl']['MAX_VARYING_VECTORS']), this['_caps']['maxFragmentUniformVectors'] = this['_gl']['getParameter'](this['_gl']['MAX_FRAGMENT_UNIFORM_VECTORS']), this['_caps']['maxVertexUniformVectors'] = this['_gl']['getParameter'](this['_gl']['MAX_VERTEX_UNIFORM_VECTORS']), this['_glVersion'] = this['_gl']['getParameter'](this['_gl']['VERSION']); var _0x2bd099 = this['_gl']['getExtension']('WEBGL_debug_renderer_info'); if (null != _0x2bd099 && (this['_glRenderer'] = this['_gl']['getParameter'](_0x2bd099['UNMASKED_RENDERER_WEBGL']), this['_glVendor'] = this['_gl']['getParameter'](_0x2bd099['UNMASKED_VENDOR_WEBGL'])), this['_glVendor'] || (this['_glVendor'] = 'Unknown\x20vendor'), this['_glRenderer'] || (this['_glRenderer'] = 'Unknown\x20renderer'), this['_gl']['HALF_FLOAT_OES'] = 0x8d61, 0x881a !== this['_gl']['RGBA16F'] && (this['_gl']['RGBA16F'] = 0x881a), 0x8814 !== this['_gl']['RGBA32F'] && (this['_gl']['RGBA32F'] = 0x8814), 0x88f0 !== this['_gl']['DEPTH24_STENCIL8'] && (this['_gl']['DEPTH24_STENCIL8'] = 0x88f0), this['_caps']['standardDerivatives'] = this['_webGLVersion'] > 0x1 || null !== this['_gl']['getExtension']('OES_standard_derivatives'), this['_caps']['astc'] = this['_gl']['getExtension']('WEBGL_compressed_texture_astc') || this['_gl']['getExtension']('WEBKIT_WEBGL_compressed_texture_astc'), this['_caps']['s3tc'] = this['_gl']['getExtension']('WEBGL_compressed_texture_s3tc') || this['_gl']['getExtension']('WEBKIT_WEBGL_compressed_texture_s3tc'), this['_caps']['pvrtc'] = this['_gl']['getExtension']('WEBGL_compressed_texture_pvrtc') || this['_gl']['getExtension']('WEBKIT_WEBGL_compressed_texture_pvrtc'), this['_caps']['etc1'] = this['_gl']['getExtension']('WEBGL_compressed_texture_etc1') || this['_gl']['getExtension']('WEBKIT_WEBGL_compressed_texture_etc1'), this['_caps']['etc2'] = this['_gl']['getExtension']('WEBGL_compressed_texture_etc') || this['_gl']['getExtension']('WEBKIT_WEBGL_compressed_texture_etc') || this['_gl']['getExtension']('WEBGL_compressed_texture_es3_0'), this['_caps']['textureAnisotropicFilterExtension'] = this['_gl']['getExtension']('EXT_texture_filter_anisotropic') || this['_gl']['getExtension']('WEBKIT_EXT_texture_filter_anisotropic') || this['_gl']['getExtension']('MOZ_EXT_texture_filter_anisotropic'), this['_caps']['maxAnisotropy'] = this['_caps']['textureAnisotropicFilterExtension'] ? this['_gl']['getParameter'](this['_caps']['textureAnisotropicFilterExtension']['MAX_TEXTURE_MAX_ANISOTROPY_EXT']) : 0x0, this['_caps']['uintIndices'] = this['_webGLVersion'] > 0x1 || null !== this['_gl']['getExtension']('OES_element_index_uint'), this['_caps']['fragmentDepthSupported'] = this['_webGLVersion'] > 0x1 || null !== this['_gl']['getExtension']('EXT_frag_depth'), this['_caps']['highPrecisionShaderSupported'] = !0x1, this['_caps']['timerQuery'] = this['_gl']['getExtension']('EXT_disjoint_timer_query_webgl2') || this['_gl']['getExtension']('EXT_disjoint_timer_query'), this['_caps']['timerQuery'] && (0x1 === this['_webGLVersion'] && (this['_gl']['getQuery'] = this['_caps']['timerQuery']['getQueryEXT']['bind'](this['_caps']['timerQuery'])), this['_caps']['canUseTimestampForTimerQuery'] = this['_gl']['getQuery'](this['_caps']['timerQuery']['TIMESTAMP_EXT'], this['_caps']['timerQuery']['QUERY_COUNTER_BITS_EXT']) > 0x0), this['_caps']['colorBufferFloat'] = this['_webGLVersion'] > 0x1 && this['_gl']['getExtension']('EXT_color_buffer_float'), this['_caps']['textureFloat'] = !!(this['_webGLVersion'] > 0x1 || this['_gl']['getExtension']('OES_texture_float')), this['_caps']['textureFloatLinearFiltering'] = !(!this['_caps']['textureFloat'] || !this['_gl']['getExtension']('OES_texture_float_linear')), this['_caps']['textureFloatRender'] = !(!this['_caps']['textureFloat'] || !this['_canRenderToFloatFramebuffer']()), this['_caps']['textureHalfFloat'] = !!(this['_webGLVersion'] > 0x1 || this['_gl']['getExtension']('OES_texture_half_float')), this['_caps']['textureHalfFloatLinearFiltering'] = !!(this['_webGLVersion'] > 0x1 || this['_caps']['textureHalfFloat'] && this['_gl']['getExtension']('OES_texture_half_float_linear')), this['_webGLVersion'] > 0x1 && (this['_gl']['HALF_FLOAT_OES'] = 0x140b), this['_caps']['textureHalfFloatRender'] = this['_caps']['textureHalfFloat'] && this['_canRenderToHalfFloatFramebuffer'](), this['_caps']['textureLOD'] = !!(this['_webGLVersion'] > 0x1 || this['_gl']['getExtension']('EXT_shader_texture_lod')), this['_caps']['multiview'] = this['_gl']['getExtension']('OVR_multiview2'), this['_webGLVersion'] > 0x1) this['_caps']['drawBuffersExtension'] = !0x0; else { var _0x33c44b = this['_gl']['getExtension']('WEBGL_draw_buffers'); if (null !== _0x33c44b) { this['_caps']['drawBuffersExtension'] = !0x0, this['_gl']['drawBuffers'] = _0x33c44b['drawBuffersWEBGL']['bind'](_0x33c44b), this['_gl']['DRAW_FRAMEBUFFER'] = this['_gl']['FRAMEBUFFER']; for (var _0x972c59 = 0x0; _0x972c59 < 0x10; _0x972c59++) this['_gl']['COLOR_ATTACHMENT' + _0x972c59 + '_WEBGL'] = _0x33c44b['COLOR_ATTACHMENT' + _0x972c59 + '_WEBGL']; } else this['_caps']['drawBuffersExtension'] = !0x1; } if (this['_caps']['parallelShaderCompile'] = this['_gl']['getExtension']('KHR_parallel_shader_compile'), this['_webGLVersion'] > 0x1) this['_caps']['depthTextureExtension'] = !0x0; else { var _0x11ddcd = this['_gl']['getExtension']('WEBGL_depth_texture'); null != _0x11ddcd && (this['_caps']['depthTextureExtension'] = !0x0, this['_gl']['UNSIGNED_INT_24_8'] = _0x11ddcd['UNSIGNED_INT_24_8_WEBGL']); } if (this['disableVertexArrayObjects']) this['_caps']['vertexArrayObject'] = !0x1; else if (this['_webGLVersion'] > 0x1) this['_caps']['vertexArrayObject'] = !0x0; else { var _0x48583d = this['_gl']['getExtension']('OES_vertex_array_object'); null != _0x48583d ? (this['_caps']['vertexArrayObject'] = !0x0, this['_gl']['createVertexArray'] = _0x48583d['createVertexArrayOES']['bind'](_0x48583d), this['_gl']['bindVertexArray'] = _0x48583d['bindVertexArrayOES']['bind'](_0x48583d), this['_gl']['deleteVertexArray'] = _0x48583d['deleteVertexArrayOES']['bind'](_0x48583d)) : this['_caps']['vertexArrayObject'] = !0x1; } if (this['_webGLVersion'] > 0x1) this['_caps']['instancedArrays'] = !0x0; else { var _0x40e0b3 = this['_gl']['getExtension']('ANGLE_instanced_arrays'); null != _0x40e0b3 ? (this['_caps']['instancedArrays'] = !0x0, this['_gl']['drawArraysInstanced'] = _0x40e0b3['drawArraysInstancedANGLE']['bind'](_0x40e0b3), this['_gl']['drawElementsInstanced'] = _0x40e0b3['drawElementsInstancedANGLE']['bind'](_0x40e0b3), this['_gl']['vertexAttribDivisor'] = _0x40e0b3['vertexAttribDivisorANGLE']['bind'](_0x40e0b3)) : this['_caps']['instancedArrays'] = !0x1; } if (this['_caps']['astc'] && this['texturesSupported']['push']('-astc.ktx'), this['_caps']['s3tc'] && this['texturesSupported']['push']('-dxt.ktx'), this['_caps']['pvrtc'] && this['texturesSupported']['push']('-pvrtc.ktx'), this['_caps']['etc2'] && this['texturesSupported']['push']('-etc2.ktx'), this['_caps']['etc1'] && this['texturesSupported']['push']('-etc1.ktx'), this['_gl']['getShaderPrecisionFormat']) { var _0x313a44 = this['_gl']['getShaderPrecisionFormat'](this['_gl']['VERTEX_SHADER'], this['_gl']['HIGH_FLOAT']) , _0x16123d = this['_gl']['getShaderPrecisionFormat'](this['_gl']['FRAGMENT_SHADER'], this['_gl']['HIGH_FLOAT']); _0x313a44 && _0x16123d && (this['_caps']['highPrecisionShaderSupported'] = 0x0 !== _0x313a44['precision'] && 0x0 !== _0x16123d['precision']); } this['setDepthBuffer'](!0x0), this['setDepthFunctionToLessOrEqual'](), this['setDepthWrite'](!0x0), this['_maxSimultaneousTextures'] = this['_caps']['maxCombinedTexturesImageUnits']; for (var _0x578623 = 0x0; _0x578623 < this['_maxSimultaneousTextures']; _0x578623++) this['_nextFreeTextureSlots']['push'](_0x578623); } , Object['defineProperty'](_0x2b36d6['prototype'], 'webGLVersion', { 'get': function() { return this['_webGLVersion']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'isStencilEnable', { 'get': function() { return this['_isStencilEnable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2b36d6['prototype']['_prepareWorkingCanvas'] = function() { if (!this['_workingCanvas']) { this['_workingCanvas'] = document['createElement']('canvas'); var _0x498b29 = this['_workingCanvas']['getContext']('2d'); _0x498b29 && (this['_workingContext'] = _0x498b29); } } , _0x2b36d6['prototype']['resetTextureCache'] = function() { for (var _0x485c82 in this['_boundTexturesCache']) this['_boundTexturesCache']['hasOwnProperty'](_0x485c82) && (this['_boundTexturesCache'][_0x485c82] = null); this['_currentTextureChannel'] = -0x1; } , _0x2b36d6['prototype']['isDeterministicLockStep'] = function() { return this['_deterministicLockstep']; } , _0x2b36d6['prototype']['getLockstepMaxSteps'] = function() { return this['_lockstepMaxSteps']; } , _0x2b36d6['prototype']['getGlInfo'] = function() { return { 'vendor': this['_glVendor'], 'renderer': this['_glRenderer'], 'version': this['_glVersion'] }; } , _0x2b36d6['prototype']['getAspectRatio'] = function(_0x207926, _0x532d96) { void 0x0 === _0x532d96 && (_0x532d96 = !0x1); var _0x10f614 = _0x207926['viewport']; return this['getRenderWidth'](_0x532d96) * _0x10f614['width'] / (this['getRenderHeight'](_0x532d96) * _0x10f614['height']); } , _0x2b36d6['prototype']['getScreenAspectRatio'] = function() { return this['getRenderWidth'](!0x0) / this['getRenderHeight'](!0x0); } , _0x2b36d6['prototype']['getRenderWidth'] = function(_0x206d61) { return void 0x0 === _0x206d61 && (_0x206d61 = !0x1), !_0x206d61 && this['_currentRenderTarget'] ? this['_currentRenderTarget']['width'] : this['_gl']['drawingBufferWidth']; } , _0x2b36d6['prototype']['getRenderHeight'] = function(_0x39efbe) { return void 0x0 === _0x39efbe && (_0x39efbe = !0x1), !_0x39efbe && this['_currentRenderTarget'] ? this['_currentRenderTarget']['height'] : this['_gl']['drawingBufferHeight']; } , _0x2b36d6['prototype']['getRenderingCanvas'] = function() { return this['_renderingCanvas']; } , _0x2b36d6['prototype']['getRenderingCanvasClientRect'] = function() { return this['_renderingCanvas'] ? this['_renderingCanvas']['getBoundingClientRect']() : null; } , _0x2b36d6['prototype']['setHardwareScalingLevel'] = function(_0x2f86a2) { this['_hardwareScalingLevel'] = _0x2f86a2, this['resize'](); } , _0x2b36d6['prototype']['getHardwareScalingLevel'] = function() { return this['_hardwareScalingLevel']; } , _0x2b36d6['prototype']['getLoadedTexturesCache'] = function() { return this['_internalTexturesCache']; } , _0x2b36d6['prototype']['getCaps'] = function() { return this['_caps']; } , _0x2b36d6['prototype']['getDepthFunction'] = function() { return this['_depthCullingState']['depthFunc']; } , _0x2b36d6['prototype']['setDepthFunction'] = function(_0x29a439) { this['_depthCullingState']['depthFunc'] = _0x29a439; } , _0x2b36d6['prototype']['setDepthFunctionToGreater'] = function() { this['_depthCullingState']['depthFunc'] = this['_gl']['GREATER']; } , _0x2b36d6['prototype']['setDepthFunctionToGreaterOrEqual'] = function() { this['_depthCullingState']['depthFunc'] = this['_gl']['GEQUAL']; } , _0x2b36d6['prototype']['setDepthFunctionToLess'] = function() { this['_depthCullingState']['depthFunc'] = this['_gl']['LESS']; } , _0x2b36d6['prototype']['cacheStencilState'] = function() { this['_cachedStencilBuffer'] = this['getStencilBuffer'](), this['_cachedStencilFunction'] = this['getStencilFunction'](), this['_cachedStencilMask'] = this['getStencilMask'](), this['_cachedStencilOperationPass'] = this['getStencilOperationPass'](), this['_cachedStencilOperationFail'] = this['getStencilOperationFail'](), this['_cachedStencilOperationDepthFail'] = this['getStencilOperationDepthFail'](), this['_cachedStencilReference'] = this['getStencilFunctionReference'](); } , _0x2b36d6['prototype']['restoreStencilState'] = function() { this['setStencilFunction'](this['_cachedStencilFunction']), this['setStencilMask'](this['_cachedStencilMask']), this['setStencilBuffer'](this['_cachedStencilBuffer']), this['setStencilOperationPass'](this['_cachedStencilOperationPass']), this['setStencilOperationFail'](this['_cachedStencilOperationFail']), this['setStencilOperationDepthFail'](this['_cachedStencilOperationDepthFail']), this['setStencilFunctionReference'](this['_cachedStencilReference']); } , _0x2b36d6['prototype']['setDepthFunctionToLessOrEqual'] = function() { this['_depthCullingState']['depthFunc'] = this['_gl']['LEQUAL']; } , _0x2b36d6['prototype']['getStencilBuffer'] = function() { return this['_stencilState']['stencilTest']; } , _0x2b36d6['prototype']['setStencilBuffer'] = function(_0x5a247a) { this['_stencilState']['stencilTest'] = _0x5a247a; } , _0x2b36d6['prototype']['getStencilMask'] = function() { return this['_stencilState']['stencilMask']; } , _0x2b36d6['prototype']['setStencilMask'] = function(_0x1f3ea9) { this['_stencilState']['stencilMask'] = _0x1f3ea9; } , _0x2b36d6['prototype']['getStencilFunction'] = function() { return this['_stencilState']['stencilFunc']; } , _0x2b36d6['prototype']['getStencilFunctionReference'] = function() { return this['_stencilState']['stencilFuncRef']; } , _0x2b36d6['prototype']['getStencilFunctionMask'] = function() { return this['_stencilState']['stencilFuncMask']; } , _0x2b36d6['prototype']['setStencilFunction'] = function(_0x110225) { this['_stencilState']['stencilFunc'] = _0x110225; } , _0x2b36d6['prototype']['setStencilFunctionReference'] = function(_0x4a6353) { this['_stencilState']['stencilFuncRef'] = _0x4a6353; } , _0x2b36d6['prototype']['setStencilFunctionMask'] = function(_0x3ec564) { this['_stencilState']['stencilFuncMask'] = _0x3ec564; } , _0x2b36d6['prototype']['getStencilOperationFail'] = function() { return this['_stencilState']['stencilOpStencilFail']; } , _0x2b36d6['prototype']['getStencilOperationDepthFail'] = function() { return this['_stencilState']['stencilOpDepthFail']; } , _0x2b36d6['prototype']['getStencilOperationPass'] = function() { return this['_stencilState']['stencilOpStencilDepthPass']; } , _0x2b36d6['prototype']['setStencilOperationFail'] = function(_0x41ee18) { this['_stencilState']['stencilOpStencilFail'] = _0x41ee18; } , _0x2b36d6['prototype']['setStencilOperationDepthFail'] = function(_0x30dda0) { this['_stencilState']['stencilOpDepthFail'] = _0x30dda0; } , _0x2b36d6['prototype']['setStencilOperationPass'] = function(_0x38d0d4) { this['_stencilState']['stencilOpStencilDepthPass'] = _0x38d0d4; } , _0x2b36d6['prototype']['setDitheringState'] = function(_0x578a19) { _0x578a19 ? this['_gl']['enable'](this['_gl']['DITHER']) : this['_gl']['disable'](this['_gl']['DITHER']); } , _0x2b36d6['prototype']['setRasterizerState'] = function(_0x4e7096) { _0x4e7096 ? this['_gl']['disable'](this['_gl']['RASTERIZER_DISCARD']) : this['_gl']['enable'](this['_gl']['RASTERIZER_DISCARD']); } , _0x2b36d6['prototype']['stopRenderLoop'] = function(_0x1431c0) { if (_0x1431c0) { var _0x157ab9 = this['_activeRenderLoops']['indexOf'](_0x1431c0); _0x157ab9 >= 0x0 && this['_activeRenderLoops']['splice'](_0x157ab9, 0x1); } else this['_activeRenderLoops'] = []; } , _0x2b36d6['prototype']['_renderLoop'] = function() { if (!this['_contextWasLost']) { var _0x454939 = !0x0; if (!this['renderEvenInBackground'] && this['_windowIsBackground'] && (_0x454939 = !0x1), _0x454939) { this['beginFrame'](); for (var _0x5dfbf8 = 0x0; _0x5dfbf8 < this['_activeRenderLoops']['length']; _0x5dfbf8++) { (0x0, this['_activeRenderLoops'][_0x5dfbf8])(); } this['endFrame'](); } } this['_activeRenderLoops']['length'] > 0x0 ? this['customAnimationFrameRequester'] ? (this['customAnimationFrameRequester']['requestID'] = _0x49b495['h']['QueueNewFrame'](this['customAnimationFrameRequester']['renderFunction'] || this['_bindedRenderFunction'], this['customAnimationFrameRequester']), this['_frameHandler'] = this['customAnimationFrameRequester']['requestID']) : this['isVRPresenting']() ? this['_requestVRFrame']() : this['_frameHandler'] = _0x49b495['h']['QueueNewFrame'](this['_bindedRenderFunction']) : this['_renderingQueueLaunched'] = !0x1; } , _0x2b36d6['prototype']['runRenderLoop'] = function(_0x2d41ef) { -0x1 === this['_activeRenderLoops']['indexOf'](_0x2d41ef) && (this['_activeRenderLoops']['push'](_0x2d41ef), this['_renderingQueueLaunched'] || (this['_renderingQueueLaunched'] = !0x0, this['_bindedRenderFunction'] = this['_renderLoop']['bind'](this), this['_frameHandler'] = _0x49b495['h']['QueueNewFrame'](this['_bindedRenderFunction']))); } , _0x2b36d6['prototype']['switchFullscreen'] = function(_0x52cf58) { this['isFullscreen'] ? this['exitFullscreen']() : this['enterFullscreen'](_0x52cf58); } , _0x2b36d6['prototype']['enterFullscreen'] = function(_0x825396) { this['isFullscreen'] || (this['_pointerLockRequested'] = _0x825396, this['_renderingCanvas'] && _0x49b495['h']['RequestFullscreen'](this['_renderingCanvas'])); } , _0x2b36d6['prototype']['exitFullscreen'] = function() { this['isFullscreen'] && _0x49b495['h']['ExitFullscreen'](); } , _0x2b36d6['prototype']['clear'] = function(_0x19af8d, _0x4d076a, _0x3d8ec0, _0x1e86c2) { void 0x0 === _0x1e86c2 && (_0x1e86c2 = !0x1), this['applyStates'](); var _0x564b45 = 0x0; _0x4d076a && _0x19af8d && (this['_gl']['clearColor'](_0x19af8d['r'], _0x19af8d['g'], _0x19af8d['b'], void 0x0 !== _0x19af8d['a'] ? _0x19af8d['a'] : 0x1), _0x564b45 |= this['_gl']['COLOR_BUFFER_BIT']), _0x3d8ec0 && (this['_gl']['clearDepth'](0x1), _0x564b45 |= this['_gl']['DEPTH_BUFFER_BIT']), _0x1e86c2 && (this['_gl']['clearStencil'](0x0), _0x564b45 |= this['_gl']['STENCIL_BUFFER_BIT']), this['_gl']['clear'](_0x564b45); } , _0x2b36d6['prototype']['scissorClear'] = function(_0x9ef8c1, _0x5b476d, _0x3f4275, _0x35b70c, _0x39f25d) { this['enableScissor'](_0x9ef8c1, _0x5b476d, _0x3f4275, _0x35b70c), this['clear'](_0x39f25d, !0x0, !0x0, !0x0), this['disableScissor'](); } , _0x2b36d6['prototype']['enableScissor'] = function(_0x4fd23e, _0x266749, _0x3e0701, _0x5c44f6) { var _0x34e301 = this['_gl']; _0x34e301['enable'](_0x34e301['SCISSOR_TEST']), _0x34e301['scissor'](_0x4fd23e, _0x266749, _0x3e0701, _0x5c44f6); } , _0x2b36d6['prototype']['disableScissor'] = function() { var _0x468dd5 = this['_gl']; _0x468dd5['disable'](_0x468dd5['SCISSOR_TEST']); } , _0x2b36d6['prototype']['_viewport'] = function(_0x32f7be, _0x2a0064, _0x1dc08c, _0x4f309f) { _0x32f7be === this['_viewportCached']['x'] && _0x2a0064 === this['_viewportCached']['y'] && _0x1dc08c === this['_viewportCached']['z'] && _0x4f309f === this['_viewportCached']['w'] || (this['_viewportCached']['x'] = _0x32f7be, this['_viewportCached']['y'] = _0x2a0064, this['_viewportCached']['z'] = _0x1dc08c, this['_viewportCached']['w'] = _0x4f309f, this['_gl']['viewport'](_0x32f7be, _0x2a0064, _0x1dc08c, _0x4f309f)); } , _0x2b36d6['prototype']['setViewport'] = function(_0x2a671b, _0x83d08a, _0x5ef4f8) { var _0x4d04ca = _0x83d08a || this['getRenderWidth']() , _0x2668ce = _0x5ef4f8 || this['getRenderHeight']() , _0xcf1c25 = _0x2a671b['x'] || 0x0 , _0x1829eb = _0x2a671b['y'] || 0x0; this['_cachedViewport'] = _0x2a671b, this['_viewport'](_0xcf1c25 * _0x4d04ca, _0x1829eb * _0x2668ce, _0x4d04ca * _0x2a671b['width'], _0x2668ce * _0x2a671b['height']); } , _0x2b36d6['prototype']['setDirectViewport'] = function(_0x1cd3e5, _0x3fe907, _0x5659f3, _0x3256ae) { var _0x68cb68 = this['_cachedViewport']; return this['_cachedViewport'] = null, this['_viewport'](_0x1cd3e5, _0x3fe907, _0x5659f3, _0x3256ae), _0x68cb68; } , _0x2b36d6['prototype']['beginFrame'] = function() { this['onBeginFrameObservable']['notifyObservers'](this), this['_measureFps'](); } , _0x2b36d6['prototype']['endFrame'] = function() { this['_badOS'] && this['flushFramebuffer'](), this['_submitVRFrame'](), this['onEndFrameObservable']['notifyObservers'](this); } , _0x2b36d6['prototype']['resize'] = function() { if (!this['isVRPresenting']()) { var _0x32c485 = this['_renderingCanvas'] ? this['_renderingCanvas']['clientWidth'] : window['innerWidth'] , _0x17d6d4 = this['_renderingCanvas'] ? this['_renderingCanvas']['clientHeight'] : window['innerHeight']; this['setSize'](_0x32c485 / this['_hardwareScalingLevel'], _0x17d6d4 / this['_hardwareScalingLevel']); } } , _0x2b36d6['prototype']['setSize'] = function(_0x2294ba, _0x5a63c7) { if (this['_renderingCanvas'] && (this['_renderingCanvas']['width'] !== _0x2294ba || this['_renderingCanvas']['height'] !== _0x5a63c7)) { this['_renderingCanvas']['width'] = _0x2294ba, this['_renderingCanvas']['height'] = _0x5a63c7; for (var _0x5257d9 = 0x0; _0x5257d9 < this['scenes']['length']; _0x5257d9++) for (var _0x7b60bf = this['scenes'][_0x5257d9], _0x5a3162 = 0x0; _0x5a3162 < _0x7b60bf['cameras']['length']; _0x5a3162++) { _0x7b60bf['cameras'][_0x5a3162]['_currentRenderId'] = 0x0; } this['onResizeObservable']['hasObservers'] && this['onResizeObservable']['notifyObservers'](this); } } , _0x2b36d6['prototype']['bindFramebuffer'] = function(_0x19aad7, _0xcc14ef, _0x291527, _0x4a11e2, _0x3f27e2, _0x36f9b2, _0x55aa06) { void 0x0 === _0x55aa06 && (_0x55aa06 = 0x0), this['_currentRenderTarget'] && this['unBindFramebuffer'](this['_currentRenderTarget']), this['_currentRenderTarget'] = _0x19aad7, this['_bindUnboundFramebuffer'](_0x19aad7['_MSAAFramebuffer'] ? _0x19aad7['_MSAAFramebuffer'] : _0x19aad7['_framebuffer']); var _0x318fca = this['_gl']; _0x19aad7['isCube'] && (void 0x0 === _0xcc14ef && (_0xcc14ef = 0x0), _0x318fca['framebufferTexture2D'](_0x318fca['FRAMEBUFFER'], _0x318fca['COLOR_ATTACHMENT0'], _0x318fca['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0xcc14ef, _0x19aad7['_webGLTexture'], _0x55aa06), _0x36f9b2 && (_0x36f9b2['_generateStencilBuffer'] ? _0x318fca['framebufferTexture2D'](_0x318fca['FRAMEBUFFER'], _0x318fca['DEPTH_STENCIL_ATTACHMENT'], _0x318fca['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0xcc14ef, _0x36f9b2['_webGLTexture'], _0x55aa06) : _0x318fca['framebufferTexture2D'](_0x318fca['FRAMEBUFFER'], _0x318fca['DEPTH_ATTACHMENT'], _0x318fca['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0xcc14ef, _0x36f9b2['_webGLTexture'], _0x55aa06))), this['_cachedViewport'] && !_0x3f27e2 ? this['setViewport'](this['_cachedViewport'], _0x291527, _0x4a11e2) : (_0x291527 || (_0x291527 = _0x19aad7['width'], _0x55aa06 && (_0x291527 /= Math['pow'](0x2, _0x55aa06))), _0x4a11e2 || (_0x4a11e2 = _0x19aad7['height'], _0x55aa06 && (_0x4a11e2 /= Math['pow'](0x2, _0x55aa06))), this['_viewport'](0x0, 0x0, _0x291527, _0x4a11e2)), this['wipeCaches'](); } , _0x2b36d6['prototype']['_bindUnboundFramebuffer'] = function(_0x1dcf56) { this['_currentFramebuffer'] !== _0x1dcf56 && (this['_gl']['bindFramebuffer'](this['_gl']['FRAMEBUFFER'], _0x1dcf56), this['_currentFramebuffer'] = _0x1dcf56); } , _0x2b36d6['prototype']['unBindFramebuffer'] = function(_0x40e610, _0x314819, _0x3cad29) { void 0x0 === _0x314819 && (_0x314819 = !0x1), this['_currentRenderTarget'] = null; var _0x4ae2f3 = this['_gl']; _0x40e610['_MSAAFramebuffer'] && (_0x4ae2f3['bindFramebuffer'](_0x4ae2f3['READ_FRAMEBUFFER'], _0x40e610['_MSAAFramebuffer']), _0x4ae2f3['bindFramebuffer'](_0x4ae2f3['DRAW_FRAMEBUFFER'], _0x40e610['_framebuffer']), _0x4ae2f3['blitFramebuffer'](0x0, 0x0, _0x40e610['width'], _0x40e610['height'], 0x0, 0x0, _0x40e610['width'], _0x40e610['height'], _0x4ae2f3['COLOR_BUFFER_BIT'], _0x4ae2f3['NEAREST'])), !_0x40e610['generateMipMaps'] || _0x314819 || _0x40e610['isCube'] || (this['_bindTextureDirectly'](_0x4ae2f3['TEXTURE_2D'], _0x40e610, !0x0), _0x4ae2f3['generateMipmap'](_0x4ae2f3['TEXTURE_2D']), this['_bindTextureDirectly'](_0x4ae2f3['TEXTURE_2D'], null)), _0x3cad29 && (_0x40e610['_MSAAFramebuffer'] && this['_bindUnboundFramebuffer'](_0x40e610['_framebuffer']), _0x3cad29()), this['_bindUnboundFramebuffer'](null); } , _0x2b36d6['prototype']['generateMipMapsForCubemap'] = function(_0x3351c8) { if (_0x3351c8['generateMipMaps']) { var _0x55e3e7 = this['_gl']; this['_bindTextureDirectly'](_0x55e3e7['TEXTURE_CUBE_MAP'], _0x3351c8, !0x0), _0x55e3e7['generateMipmap'](_0x55e3e7['TEXTURE_CUBE_MAP']), this['_bindTextureDirectly'](_0x55e3e7['TEXTURE_CUBE_MAP'], null); } } , _0x2b36d6['prototype']['flushFramebuffer'] = function() { this['_gl']['flush'](); } , _0x2b36d6['prototype']['restoreDefaultFramebuffer'] = function() { this['_currentRenderTarget'] ? this['unBindFramebuffer'](this['_currentRenderTarget']) : this['_bindUnboundFramebuffer'](null), this['_cachedViewport'] && this['setViewport'](this['_cachedViewport']), this['wipeCaches'](); } , _0x2b36d6['prototype']['createUniformBuffer'] = function(_0x2a0cda) { var _0x5b5d84 = this['_gl']['createBuffer'](); if (!_0x5b5d84) throw new Error('Unable\x20to\x20create\x20uniform\x20buffer'); var _0x1adf13 = new _0x5f2dad['a'](_0x5b5d84); return this['bindUniformBuffer'](_0x1adf13), _0x2a0cda instanceof Float32Array ? this['_gl']['bufferData'](this['_gl']['UNIFORM_BUFFER'], _0x2a0cda, this['_gl']['STATIC_DRAW']) : this['_gl']['bufferData'](this['_gl']['UNIFORM_BUFFER'], new Float32Array(_0x2a0cda), this['_gl']['STATIC_DRAW']), this['bindUniformBuffer'](null), _0x1adf13['references'] = 0x1, _0x1adf13; } , _0x2b36d6['prototype']['createDynamicUniformBuffer'] = function(_0x242a4a) { var _0x38731c = this['_gl']['createBuffer'](); if (!_0x38731c) throw new Error('Unable\x20to\x20create\x20dynamic\x20uniform\x20buffer'); var _0x1f01fa = new _0x5f2dad['a'](_0x38731c); return this['bindUniformBuffer'](_0x1f01fa), _0x242a4a instanceof Float32Array ? this['_gl']['bufferData'](this['_gl']['UNIFORM_BUFFER'], _0x242a4a, this['_gl']['DYNAMIC_DRAW']) : this['_gl']['bufferData'](this['_gl']['UNIFORM_BUFFER'], new Float32Array(_0x242a4a), this['_gl']['DYNAMIC_DRAW']), this['bindUniformBuffer'](null), _0x1f01fa['references'] = 0x1, _0x1f01fa; } , _0x2b36d6['prototype']['updateUniformBuffer'] = function(_0xfea74, _0x275677, _0x278078, _0x32d6b9) { this['bindUniformBuffer'](_0xfea74), void 0x0 === _0x278078 && (_0x278078 = 0x0), void 0x0 === _0x32d6b9 ? _0x275677 instanceof Float32Array ? this['_gl']['bufferSubData'](this['_gl']['UNIFORM_BUFFER'], _0x278078, _0x275677) : this['_gl']['bufferSubData'](this['_gl']['UNIFORM_BUFFER'], _0x278078, new Float32Array(_0x275677)) : _0x275677 instanceof Float32Array ? this['_gl']['bufferSubData'](this['_gl']['UNIFORM_BUFFER'], 0x0, _0x275677['subarray'](_0x278078, _0x278078 + _0x32d6b9)) : this['_gl']['bufferSubData'](this['_gl']['UNIFORM_BUFFER'], 0x0, new Float32Array(_0x275677)['subarray'](_0x278078, _0x278078 + _0x32d6b9)), this['bindUniformBuffer'](null); } , _0x2b36d6['prototype']['_resetVertexBufferBinding'] = function() { this['bindArrayBuffer'](null), this['_cachedVertexBuffers'] = null; } , _0x2b36d6['prototype']['createVertexBuffer'] = function(_0xadddcd) { var _0x47b2f9 = this['_gl']['createBuffer'](); if (!_0x47b2f9) throw new Error('Unable\x20to\x20create\x20vertex\x20buffer'); var _0x5b53a9 = new _0x5f2dad['a'](_0x47b2f9); return this['bindArrayBuffer'](_0x5b53a9), _0xadddcd instanceof Array ? this['_gl']['bufferData'](this['_gl']['ARRAY_BUFFER'], new Float32Array(_0xadddcd), this['_gl']['STATIC_DRAW']) : this['_gl']['bufferData'](this['_gl']['ARRAY_BUFFER'], _0xadddcd, this['_gl']['STATIC_DRAW']), this['_resetVertexBufferBinding'](), _0x5b53a9['references'] = 0x1, _0x5b53a9; } , _0x2b36d6['prototype']['createDynamicVertexBuffer'] = function(_0x5ce0a4) { var _0x34c1c8 = this['_gl']['createBuffer'](); if (!_0x34c1c8) throw new Error('Unable\x20to\x20create\x20dynamic\x20vertex\x20buffer'); var _0x4cc81f = new _0x5f2dad['a'](_0x34c1c8); return this['bindArrayBuffer'](_0x4cc81f), _0x5ce0a4 instanceof Array ? this['_gl']['bufferData'](this['_gl']['ARRAY_BUFFER'], new Float32Array(_0x5ce0a4), this['_gl']['DYNAMIC_DRAW']) : this['_gl']['bufferData'](this['_gl']['ARRAY_BUFFER'], _0x5ce0a4, this['_gl']['DYNAMIC_DRAW']), this['_resetVertexBufferBinding'](), _0x4cc81f['references'] = 0x1, _0x4cc81f; } , _0x2b36d6['prototype']['updateDynamicIndexBuffer'] = function(_0xc50df9, _0x419a7a, _0x56e8e4) { var _0x4a762e; void 0x0 === _0x56e8e4 && (_0x56e8e4 = 0x0), this['_currentBoundBuffer'][this['_gl']['ELEMENT_ARRAY_BUFFER']] = null, this['bindIndexBuffer'](_0xc50df9), _0x4a762e = _0x419a7a instanceof Uint16Array || _0x419a7a instanceof Uint32Array ? _0x419a7a : _0xc50df9['is32Bits'] ? new Uint32Array(_0x419a7a) : new Uint16Array(_0x419a7a), this['_gl']['bufferData'](this['_gl']['ELEMENT_ARRAY_BUFFER'], _0x4a762e, this['_gl']['DYNAMIC_DRAW']), this['_resetIndexBufferBinding'](); } , _0x2b36d6['prototype']['updateDynamicVertexBuffer'] = function(_0x409466, _0xb709df, _0x47b8eb, _0x354284) { this['bindArrayBuffer'](_0x409466), void 0x0 === _0x47b8eb && (_0x47b8eb = 0x0), void 0x0 === _0x354284 ? _0xb709df instanceof Array ? this['_gl']['bufferSubData'](this['_gl']['ARRAY_BUFFER'], _0x47b8eb, new Float32Array(_0xb709df)) : this['_gl']['bufferSubData'](this['_gl']['ARRAY_BUFFER'], _0x47b8eb, _0xb709df) : _0xb709df instanceof Array ? this['_gl']['bufferSubData'](this['_gl']['ARRAY_BUFFER'], 0x0, new Float32Array(_0xb709df)['subarray'](_0x47b8eb, _0x47b8eb + _0x354284)) : (_0xb709df = _0xb709df instanceof ArrayBuffer ? new Uint8Array(_0xb709df,_0x47b8eb,_0x354284) : new Uint8Array(_0xb709df['buffer'],_0xb709df['byteOffset'] + _0x47b8eb,_0x354284), this['_gl']['bufferSubData'](this['_gl']['ARRAY_BUFFER'], 0x0, _0xb709df)), this['_resetVertexBufferBinding'](); } , _0x2b36d6['prototype']['_resetIndexBufferBinding'] = function() { this['bindIndexBuffer'](null), this['_cachedIndexBuffer'] = null; } , _0x2b36d6['prototype']['createIndexBuffer'] = function(_0x357d51, _0x2b43c5) { var _0x59ff95, _0x463384 = this['_gl']['createBuffer'](), _0x19526c = new _0x5f2dad['a'](_0x463384); if (!_0x463384) throw new Error('Unable\x20to\x20create\x20index\x20buffer'); this['bindIndexBuffer'](_0x19526c); var _0x158032 = !0x1; if (_0x357d51 instanceof Uint16Array) _0x59ff95 = _0x357d51; else if (this['_caps']['uintIndices']) if (_0x357d51 instanceof Uint32Array) _0x59ff95 = _0x357d51, _0x158032 = !0x0; else { for (var _0x40e238 = 0x0; _0x40e238 < _0x357d51['length']; _0x40e238++) if (_0x357d51[_0x40e238] > 0xffff) { _0x158032 = !0x0; break; } _0x59ff95 = _0x158032 ? new Uint32Array(_0x357d51) : new Uint16Array(_0x357d51); } else _0x59ff95 = new Uint16Array(_0x357d51); return this['_gl']['bufferData'](this['_gl']['ELEMENT_ARRAY_BUFFER'], _0x59ff95, _0x2b43c5 ? this['_gl']['DYNAMIC_DRAW'] : this['_gl']['STATIC_DRAW']), this['_resetIndexBufferBinding'](), _0x19526c['references'] = 0x1, _0x19526c['is32Bits'] = _0x158032, _0x19526c; } , _0x2b36d6['prototype']['bindArrayBuffer'] = function(_0x58e1f6) { this['_vaoRecordInProgress'] || this['_unbindVertexArrayObject'](), this['bindBuffer'](_0x58e1f6, this['_gl']['ARRAY_BUFFER']); } , _0x2b36d6['prototype']['bindUniformBuffer'] = function(_0x5705c2) { this['_gl']['bindBuffer'](this['_gl']['UNIFORM_BUFFER'], _0x5705c2 ? _0x5705c2['underlyingResource'] : null); } , _0x2b36d6['prototype']['bindUniformBufferBase'] = function(_0x4d09a7, _0x143ff2) { this['_gl']['bindBufferBase'](this['_gl']['UNIFORM_BUFFER'], _0x143ff2, _0x4d09a7 ? _0x4d09a7['underlyingResource'] : null); } , _0x2b36d6['prototype']['bindUniformBlock'] = function(_0x2a1020, _0x469f5d, _0x3e7759) { var _0x2b51d2 = _0x2a1020['program'] , _0x5ef28a = this['_gl']['getUniformBlockIndex'](_0x2b51d2, _0x469f5d); this['_gl']['uniformBlockBinding'](_0x2b51d2, _0x5ef28a, _0x3e7759); } , _0x2b36d6['prototype']['bindIndexBuffer'] = function(_0x2fabab) { this['_vaoRecordInProgress'] || this['_unbindVertexArrayObject'](), this['bindBuffer'](_0x2fabab, this['_gl']['ELEMENT_ARRAY_BUFFER']); } , _0x2b36d6['prototype']['bindBuffer'] = function(_0x1c93b7, _0x432288) { (this['_vaoRecordInProgress'] || this['_currentBoundBuffer'][_0x432288] !== _0x1c93b7) && (this['_gl']['bindBuffer'](_0x432288, _0x1c93b7 ? _0x1c93b7['underlyingResource'] : null), this['_currentBoundBuffer'][_0x432288] = _0x1c93b7); } , _0x2b36d6['prototype']['updateArrayBuffer'] = function(_0x37c66d) { this['_gl']['bufferSubData'](this['_gl']['ARRAY_BUFFER'], 0x0, _0x37c66d); } , _0x2b36d6['prototype']['_vertexAttribPointer'] = function(_0x32d8ea, _0x20f99c, _0x44cd3b, _0x5d520a, _0x2832d4, _0x2125ef, _0xc0f6d2) { var _0x58f258 = this['_currentBufferPointers'][_0x20f99c] , _0x2014eb = !0x1; _0x58f258['active'] ? (_0x58f258['buffer'] !== _0x32d8ea && (_0x58f258['buffer'] = _0x32d8ea, _0x2014eb = !0x0), _0x58f258['size'] !== _0x44cd3b && (_0x58f258['size'] = _0x44cd3b, _0x2014eb = !0x0), _0x58f258['type'] !== _0x5d520a && (_0x58f258['type'] = _0x5d520a, _0x2014eb = !0x0), _0x58f258['normalized'] !== _0x2832d4 && (_0x58f258['normalized'] = _0x2832d4, _0x2014eb = !0x0), _0x58f258['stride'] !== _0x2125ef && (_0x58f258['stride'] = _0x2125ef, _0x2014eb = !0x0), _0x58f258['offset'] !== _0xc0f6d2 && (_0x58f258['offset'] = _0xc0f6d2, _0x2014eb = !0x0)) : (_0x2014eb = !0x0, _0x58f258['active'] = !0x0, _0x58f258['index'] = _0x20f99c, _0x58f258['size'] = _0x44cd3b, _0x58f258['type'] = _0x5d520a, _0x58f258['normalized'] = _0x2832d4, _0x58f258['stride'] = _0x2125ef, _0x58f258['offset'] = _0xc0f6d2, _0x58f258['buffer'] = _0x32d8ea), (_0x2014eb || this['_vaoRecordInProgress']) && (this['bindArrayBuffer'](_0x32d8ea), this['_gl']['vertexAttribPointer'](_0x20f99c, _0x44cd3b, _0x5d520a, _0x2832d4, _0x2125ef, _0xc0f6d2)); } , _0x2b36d6['prototype']['_bindIndexBufferWithCache'] = function(_0x19d001) { null != _0x19d001 && this['_cachedIndexBuffer'] !== _0x19d001 && (this['_cachedIndexBuffer'] = _0x19d001, this['bindIndexBuffer'](_0x19d001), this['_uintIndicesCurrentlySet'] = _0x19d001['is32Bits']); } , _0x2b36d6['prototype']['_bindVertexBuffersAttributes'] = function(_0x9823fc, _0x3bf868) { var _0x322c75 = _0x3bf868['getAttributesNames'](); this['_vaoRecordInProgress'] || this['_unbindVertexArrayObject'](), this['unbindAllAttributes'](); for (var _0x27ce98 = 0x0; _0x27ce98 < _0x322c75['length']; _0x27ce98++) { var _0x43282c = _0x3bf868['getAttributeLocation'](_0x27ce98); if (_0x43282c >= 0x0) { var _0x2683c4 = _0x9823fc[_0x322c75[_0x27ce98]]; if (!_0x2683c4) continue; this['_gl']['enableVertexAttribArray'](_0x43282c), this['_vaoRecordInProgress'] || (this['_vertexAttribArraysEnabled'][_0x43282c] = !0x0); var _0x4940a6 = _0x2683c4['getBuffer'](); _0x4940a6 && (this['_vertexAttribPointer'](_0x4940a6, _0x43282c, _0x2683c4['getSize'](), _0x2683c4['type'], _0x2683c4['normalized'], _0x2683c4['byteStride'], _0x2683c4['byteOffset']), _0x2683c4['getIsInstanced']() && (this['_gl']['vertexAttribDivisor'](_0x43282c, _0x2683c4['getInstanceDivisor']()), this['_vaoRecordInProgress'] || (this['_currentInstanceLocations']['push'](_0x43282c), this['_currentInstanceBuffers']['push'](_0x4940a6)))); } } } , _0x2b36d6['prototype']['recordVertexArrayObject'] = function(_0x33b930, _0x53764e, _0x1bb3e0) { var _0x351d97 = this['_gl']['createVertexArray'](); return this['_vaoRecordInProgress'] = !0x0, this['_gl']['bindVertexArray'](_0x351d97), this['_mustWipeVertexAttributes'] = !0x0, this['_bindVertexBuffersAttributes'](_0x33b930, _0x1bb3e0), this['bindIndexBuffer'](_0x53764e), this['_vaoRecordInProgress'] = !0x1, this['_gl']['bindVertexArray'](null), _0x351d97; } , _0x2b36d6['prototype']['bindVertexArrayObject'] = function(_0x39a1f3, _0x50a008) { this['_cachedVertexArrayObject'] !== _0x39a1f3 && (this['_cachedVertexArrayObject'] = _0x39a1f3, this['_gl']['bindVertexArray'](_0x39a1f3), this['_cachedVertexBuffers'] = null, this['_cachedIndexBuffer'] = null, this['_uintIndicesCurrentlySet'] = null != _0x50a008 && _0x50a008['is32Bits'], this['_mustWipeVertexAttributes'] = !0x0); } , _0x2b36d6['prototype']['bindBuffersDirectly'] = function(_0x118c94, _0x10d633, _0xdaeb88, _0x3fc89c, _0x507531) { if (this['_cachedVertexBuffers'] !== _0x118c94 || this['_cachedEffectForVertexBuffers'] !== _0x507531) { this['_cachedVertexBuffers'] = _0x118c94, this['_cachedEffectForVertexBuffers'] = _0x507531; var _0x5d1123 = _0x507531['getAttributesCount'](); this['_unbindVertexArrayObject'](), this['unbindAllAttributes'](); for (var _0x122ebe = 0x0, _0x1fb9b3 = 0x0; _0x1fb9b3 < _0x5d1123; _0x1fb9b3++) if (_0x1fb9b3 < _0xdaeb88['length']) { var _0x28a24d = _0x507531['getAttributeLocation'](_0x1fb9b3); _0x28a24d >= 0x0 && (this['_gl']['enableVertexAttribArray'](_0x28a24d), this['_vertexAttribArraysEnabled'][_0x28a24d] = !0x0, this['_vertexAttribPointer'](_0x118c94, _0x28a24d, _0xdaeb88[_0x1fb9b3], this['_gl']['FLOAT'], !0x1, _0x3fc89c, _0x122ebe)), _0x122ebe += 0x4 * _0xdaeb88[_0x1fb9b3]; } } this['_bindIndexBufferWithCache'](_0x10d633); } , _0x2b36d6['prototype']['_unbindVertexArrayObject'] = function() { this['_cachedVertexArrayObject'] && (this['_cachedVertexArrayObject'] = null, this['_gl']['bindVertexArray'](null)); } , _0x2b36d6['prototype']['bindBuffers'] = function(_0x4bd29e, _0x49b8ab, _0x1325ce) { this['_cachedVertexBuffers'] === _0x4bd29e && this['_cachedEffectForVertexBuffers'] === _0x1325ce || (this['_cachedVertexBuffers'] = _0x4bd29e, this['_cachedEffectForVertexBuffers'] = _0x1325ce, this['_bindVertexBuffersAttributes'](_0x4bd29e, _0x1325ce)), this['_bindIndexBufferWithCache'](_0x49b8ab); } , _0x2b36d6['prototype']['unbindInstanceAttributes'] = function() { for (var _0x1b4a99, _0x22c8c8 = 0x0, _0x480eb0 = this['_currentInstanceLocations']['length']; _0x22c8c8 < _0x480eb0; _0x22c8c8++) { var _0x58c176 = this['_currentInstanceBuffers'][_0x22c8c8]; _0x1b4a99 != _0x58c176 && _0x58c176['references'] && (_0x1b4a99 = _0x58c176, this['bindArrayBuffer'](_0x58c176)); var _0x4d232a = this['_currentInstanceLocations'][_0x22c8c8]; this['_gl']['vertexAttribDivisor'](_0x4d232a, 0x0); } this['_currentInstanceBuffers']['length'] = 0x0, this['_currentInstanceLocations']['length'] = 0x0; } , _0x2b36d6['prototype']['releaseVertexArrayObject'] = function(_0x1e5490) { this['_gl']['deleteVertexArray'](_0x1e5490); } , _0x2b36d6['prototype']['_releaseBuffer'] = function(_0x430312) { return _0x430312['references']--, 0x0 === _0x430312['references'] && (this['_gl']['deleteBuffer'](_0x430312['underlyingResource']), !0x0); } , _0x2b36d6['prototype']['createInstancesBuffer'] = function(_0xbb01fd) { var _0x3edca5 = this['_gl']['createBuffer'](); if (!_0x3edca5) throw new Error('Unable\x20to\x20create\x20instance\x20buffer'); var _0x275d72 = new _0x5f2dad['a'](_0x3edca5); return _0x275d72['capacity'] = _0xbb01fd, this['bindArrayBuffer'](_0x275d72), this['_gl']['bufferData'](this['_gl']['ARRAY_BUFFER'], _0xbb01fd, this['_gl']['DYNAMIC_DRAW']), _0x275d72; } , _0x2b36d6['prototype']['deleteInstancesBuffer'] = function(_0x2cf33a) { this['_gl']['deleteBuffer'](_0x2cf33a); } , _0x2b36d6['prototype']['updateAndBindInstancesBuffer'] = function(_0x13cd7c, _0x107ff9, _0x2ac64b) { if (this['bindArrayBuffer'](_0x13cd7c), _0x107ff9 && this['_gl']['bufferSubData'](this['_gl']['ARRAY_BUFFER'], 0x0, _0x107ff9), void 0x0 !== _0x2ac64b[0x0]['index']) { for (var _0x22f955 = 0x0, _0x310435 = 0x0; _0x310435 < _0x2ac64b['length']; _0x310435++) { _0x22f955 += 0x4 * (_0x1a3623 = _0x2ac64b[_0x310435])['attributeSize']; } for (_0x310435 = 0x0; _0x310435 < _0x2ac64b['length']; _0x310435++) { var _0x1a3623 = _0x2ac64b[_0x310435]; this['_vertexAttribArraysEnabled'][_0x1a3623['index']] || (this['_gl']['enableVertexAttribArray'](_0x1a3623['index']), this['_vertexAttribArraysEnabled'][_0x1a3623['index']] = !0x0), this['_vertexAttribPointer'](_0x13cd7c, _0x1a3623['index'], _0x1a3623['attributeSize'], _0x1a3623['attribyteType'] || this['_gl']['FLOAT'], _0x1a3623['normalized'] || !0x1, _0x22f955, _0x1a3623['offset']), this['_gl']['vertexAttribDivisor'](_0x1a3623['index'], 0x1), this['_currentInstanceLocations']['push'](_0x1a3623['index']), this['_currentInstanceBuffers']['push'](_0x13cd7c); } } else for (var _0x5bfaf8 = 0x0; _0x5bfaf8 < 0x4; _0x5bfaf8++) { var _0x164526 = _0x2ac64b[_0x5bfaf8]; this['_vertexAttribArraysEnabled'][_0x164526] || (this['_gl']['enableVertexAttribArray'](_0x164526), this['_vertexAttribArraysEnabled'][_0x164526] = !0x0), this['_vertexAttribPointer'](_0x13cd7c, _0x164526, 0x4, this['_gl']['FLOAT'], !0x1, 0x40, 0x10 * _0x5bfaf8), this['_gl']['vertexAttribDivisor'](_0x164526, 0x1), this['_currentInstanceLocations']['push'](_0x164526), this['_currentInstanceBuffers']['push'](_0x13cd7c); } } , _0x2b36d6['prototype']['applyStates'] = function() { this['_depthCullingState']['apply'](this['_gl']), this['_stencilState']['apply'](this['_gl']), this['_alphaState']['apply'](this['_gl']); } , _0x2b36d6['prototype']['draw'] = function(_0x252ff5, _0x31b8e5, _0xc1f60b, _0x35ee03) { this['drawElementsType'](_0x252ff5 ? _0x5cd921['a']['TriangleFillMode'] : _0x5cd921['a']['WireFrameFillMode'], _0x31b8e5, _0xc1f60b, _0x35ee03); } , _0x2b36d6['prototype']['drawPointClouds'] = function(_0x5974f6, _0x7e3683, _0x44f77f) { this['drawArraysType'](_0x5cd921['a']['PointFillMode'], _0x5974f6, _0x7e3683, _0x44f77f); } , _0x2b36d6['prototype']['drawUnIndexed'] = function(_0x2d59c7, _0x4c15a8, _0x3b7f98, _0x40bc36) { this['drawArraysType'](_0x2d59c7 ? _0x5cd921['a']['TriangleFillMode'] : _0x5cd921['a']['WireFrameFillMode'], _0x4c15a8, _0x3b7f98, _0x40bc36); } , _0x2b36d6['prototype']['drawElementsType'] = function(_0x342ce1, _0x4f03de, _0x52eeea, _0x3c8b8b) { this['applyStates'](), this['_drawCalls']['addCount'](0x1, !0x1); var _0x3344dc = this['_drawMode'](_0x342ce1) , _0x273b2d = this['_uintIndicesCurrentlySet'] ? this['_gl']['UNSIGNED_INT'] : this['_gl']['UNSIGNED_SHORT'] , _0x28e5dc = this['_uintIndicesCurrentlySet'] ? 0x4 : 0x2; _0x3c8b8b ? this['_gl']['drawElementsInstanced'](_0x3344dc, _0x52eeea, _0x273b2d, _0x4f03de * _0x28e5dc, _0x3c8b8b) : this['_gl']['drawElements'](_0x3344dc, _0x52eeea, _0x273b2d, _0x4f03de * _0x28e5dc); } , _0x2b36d6['prototype']['drawArraysType'] = function(_0x1d9e55, _0xdb1a7a, _0x539d7d, _0x7f6552) { this['applyStates'](), this['_drawCalls']['addCount'](0x1, !0x1); var _0x12e511 = this['_drawMode'](_0x1d9e55); _0x7f6552 ? this['_gl']['drawArraysInstanced'](_0x12e511, _0xdb1a7a, _0x539d7d, _0x7f6552) : this['_gl']['drawArrays'](_0x12e511, _0xdb1a7a, _0x539d7d); } , _0x2b36d6['prototype']['_drawMode'] = function(_0x400350) { switch (_0x400350) { case _0x5cd921['a']['TriangleFillMode']: return this['_gl']['TRIANGLES']; case _0x5cd921['a']['PointFillMode']: return this['_gl']['POINTS']; case _0x5cd921['a']['WireFrameFillMode']: return this['_gl']['LINES']; case _0x5cd921['a']['PointListDrawMode']: return this['_gl']['POINTS']; case _0x5cd921['a']['LineListDrawMode']: return this['_gl']['LINES']; case _0x5cd921['a']['LineLoopDrawMode']: return this['_gl']['LINE_LOOP']; case _0x5cd921['a']['LineStripDrawMode']: return this['_gl']['LINE_STRIP']; case _0x5cd921['a']['TriangleStripDrawMode']: return this['_gl']['TRIANGLE_STRIP']; case _0x5cd921['a']['TriangleFanDrawMode']: return this['_gl']['TRIANGLE_FAN']; default: return this['_gl']['TRIANGLES']; } } , _0x2b36d6['prototype']['_releaseEffect'] = function(_0x44d2ad) { this['_compiledEffects'][_0x44d2ad['_key']] && (delete this['_compiledEffects'][_0x44d2ad['_key']], this['_deletePipelineContext'](_0x44d2ad['getPipelineContext']())); } , _0x2b36d6['prototype']['_deletePipelineContext'] = function(_0x3c5d0b) { var _0x250446 = _0x3c5d0b; _0x250446 && _0x250446['program'] && (_0x250446['program']['__SPECTOR_rebuildProgram'] = null, _0x250446['transformFeedback'] && (this['deleteTransformFeedback'](_0x250446['transformFeedback']), _0x250446['transformFeedback'] = null), this['_gl']['deleteProgram'](_0x250446['program'])); } , _0x2b36d6['prototype']['createEffect'] = function(_0x378bf1, _0x45ea46, _0x478e6d, _0x180d4a, _0x4e613b, _0x1a174b, _0x3a2cfb, _0x4a7fdc, _0x2fe8ea) { var _0x449102 = (_0x378bf1['vertexElement'] || _0x378bf1['vertex'] || _0x378bf1) + '+' + (_0x378bf1['fragmentElement'] || _0x378bf1['fragment'] || _0x378bf1) + '@' + (_0x4e613b || _0x45ea46['defines']); if (this['_compiledEffects'][_0x449102]) { var _0x1464c0 = this['_compiledEffects'][_0x449102]; return _0x3a2cfb && _0x1464c0['isReady']() && _0x3a2cfb(_0x1464c0), _0x1464c0; } var _0x4bf10b = new _0x12c9c8['a'](_0x378bf1,_0x45ea46,_0x478e6d,_0x180d4a,this,_0x4e613b,_0x1a174b,_0x3a2cfb,_0x4a7fdc,_0x2fe8ea); return _0x4bf10b['_key'] = _0x449102, this['_compiledEffects'][_0x449102] = _0x4bf10b, _0x4bf10b; } , _0x2b36d6['prototype']['_compileShader'] = function(_0x473091, _0x2b62aa, _0x39c384, _0xa5967a) { return this['_compileRawShader'](_0xa5967a + (_0x39c384 ? _0x39c384 + '\x0a' : '') + _0x473091, _0x2b62aa); } , _0x2b36d6['prototype']['_compileRawShader'] = function(_0x5e7bc8, _0x2fd831) { var _0x13ba8b = this['_gl'] , _0xc83f76 = _0x13ba8b['createShader']('vertex' === _0x2fd831 ? _0x13ba8b['VERTEX_SHADER'] : _0x13ba8b['FRAGMENT_SHADER']); if (!_0xc83f76) throw new Error('Something\x20went\x20wrong\x20while\x20compile\x20the\x20shader.'); return _0x13ba8b['shaderSource'](_0xc83f76, _0x5e7bc8), _0x13ba8b['compileShader'](_0xc83f76), _0xc83f76; } , _0x2b36d6['prototype']['createRawShaderProgram'] = function(_0x3d477a, _0x22fe99, _0x5bab20, _0x50d4b1, _0x267b4f) { void 0x0 === _0x267b4f && (_0x267b4f = null), _0x50d4b1 = _0x50d4b1 || this['_gl']; var _0x18bf6a = this['_compileRawShader'](_0x22fe99, 'vertex') , _0x2b9aef = this['_compileRawShader'](_0x5bab20, 'fragment'); return this['_createShaderProgram'](_0x3d477a, _0x18bf6a, _0x2b9aef, _0x50d4b1, _0x267b4f); } , _0x2b36d6['prototype']['createShaderProgram'] = function(_0xcde3bf, _0x34d818, _0x28debb, _0x26bc61, _0x41baa2, _0x1b92b0) { void 0x0 === _0x1b92b0 && (_0x1b92b0 = null), _0x41baa2 = _0x41baa2 || this['_gl'], this['onBeforeShaderCompilationObservable']['notifyObservers'](this); var _0x4b33a5 = this['_webGLVersion'] > 0x1 ? '#version\x20300\x20es\x0a#define\x20WEBGL2\x20\x0a' : '' , _0x4949e4 = this['_compileShader'](_0x34d818, 'vertex', _0x26bc61, _0x4b33a5) , _0x2c82fa = this['_compileShader'](_0x28debb, 'fragment', _0x26bc61, _0x4b33a5) , _0x143d81 = this['_createShaderProgram'](_0xcde3bf, _0x4949e4, _0x2c82fa, _0x41baa2, _0x1b92b0); return this['onAfterShaderCompilationObservable']['notifyObservers'](this), _0x143d81; } , _0x2b36d6['prototype']['createPipelineContext'] = function() { var _0x3c95c2 = new _0x5ad3c1['a'](); return _0x3c95c2['engine'] = this, this['_caps']['parallelShaderCompile'] && (_0x3c95c2['isParallelCompiled'] = !0x0), _0x3c95c2; } , _0x2b36d6['prototype']['_createShaderProgram'] = function(_0x551340, _0x20be82, _0x8e2c11, _0x464f99, _0x44654b) { void 0x0 === _0x44654b && (_0x44654b = null); var _0x245ba6 = _0x464f99['createProgram'](); if (_0x551340['program'] = _0x245ba6, !_0x245ba6) throw new Error('Unable\x20to\x20create\x20program'); if (_0x464f99['attachShader'](_0x245ba6, _0x20be82), _0x464f99['attachShader'](_0x245ba6, _0x8e2c11), this['webGLVersion'] > 0x1 && _0x44654b) { var _0x121e51 = this['createTransformFeedback'](); this['bindTransformFeedback'](_0x121e51), this['setTranformFeedbackVaryings'](_0x245ba6, _0x44654b), _0x551340['transformFeedback'] = _0x121e51; } return _0x464f99['linkProgram'](_0x245ba6), this['webGLVersion'] > 0x1 && _0x44654b && this['bindTransformFeedback'](null), _0x551340['context'] = _0x464f99, _0x551340['vertexShader'] = _0x20be82, _0x551340['fragmentShader'] = _0x8e2c11, _0x551340['isParallelCompiled'] || this['_finalizePipelineContext'](_0x551340), _0x245ba6; } , _0x2b36d6['prototype']['_finalizePipelineContext'] = function(_0x2806bb) { var _0x1e00fb = _0x2806bb['context'] , _0x9ac244 = _0x2806bb['vertexShader'] , _0x3a356f = _0x2806bb['fragmentShader'] , _0x2448e4 = _0x2806bb['program']; if (!_0x1e00fb['getProgramParameter'](_0x2448e4, _0x1e00fb['LINK_STATUS'])) { var _0x197f1e, _0x3919cd; if (!this['_gl']['getShaderParameter'](_0x9ac244, this['_gl']['COMPILE_STATUS'])) if (_0x197f1e = this['_gl']['getShaderInfoLog'](_0x9ac244)) throw new Error(_0x197f1e); if (!this['_gl']['getShaderParameter'](_0x3a356f, this['_gl']['COMPILE_STATUS'])) if (_0x197f1e = this['_gl']['getShaderInfoLog'](_0x3a356f)) throw new Error(_0x197f1e); if (_0x3919cd = _0x1e00fb['getProgramInfoLog'](_0x2448e4)) throw new Error(_0x3919cd); } if (this['validateShaderPrograms'] && (_0x1e00fb['validateProgram'](_0x2448e4), !_0x1e00fb['getProgramParameter'](_0x2448e4, _0x1e00fb['VALIDATE_STATUS']) && (_0x3919cd = _0x1e00fb['getProgramInfoLog'](_0x2448e4)))) throw new Error(_0x3919cd); _0x1e00fb['deleteShader'](_0x9ac244), _0x1e00fb['deleteShader'](_0x3a356f), _0x2806bb['vertexShader'] = void 0x0, _0x2806bb['fragmentShader'] = void 0x0, _0x2806bb['onCompiled'] && (_0x2806bb['onCompiled'](), _0x2806bb['onCompiled'] = void 0x0); } , _0x2b36d6['prototype']['_preparePipelineContext'] = function(_0x2f26e3, _0x6eab4f, _0x428a27, _0x1a2a6c, _0x309306, _0x289500, _0x6f54ac) { var _0x9eae9b = _0x2f26e3; _0x9eae9b['program'] = _0x1a2a6c ? this['createRawShaderProgram'](_0x9eae9b, _0x6eab4f, _0x428a27, void 0x0, _0x6f54ac) : this['createShaderProgram'](_0x9eae9b, _0x6eab4f, _0x428a27, _0x289500, void 0x0, _0x6f54ac), _0x9eae9b['program']['__SPECTOR_rebuildProgram'] = _0x309306; } , _0x2b36d6['prototype']['_isRenderingStateCompiled'] = function(_0x4af9f1) { var _0x5ce049 = _0x4af9f1; return !!this['_gl']['getProgramParameter'](_0x5ce049['program'], this['_caps']['parallelShaderCompile']['COMPLETION_STATUS_KHR']) && (this['_finalizePipelineContext'](_0x5ce049), !0x0); } , _0x2b36d6['prototype']['_executeWhenRenderingStateIsCompiled'] = function(_0x471de0, _0x2b9cf3) { var _0x9ea071 = _0x471de0; _0x9ea071['isParallelCompiled'] ? _0x9ea071['onCompiled'] = _0x2b9cf3 : _0x2b9cf3(); } , _0x2b36d6['prototype']['getUniforms'] = function(_0x3f6fb6, _0x27ed28) { for (var _0x4a48c8 = new Array(), _0x4458f6 = _0x3f6fb6, _0x1c1e0a = 0x0; _0x1c1e0a < _0x27ed28['length']; _0x1c1e0a++) _0x4a48c8['push'](this['_gl']['getUniformLocation'](_0x4458f6['program'], _0x27ed28[_0x1c1e0a])); return _0x4a48c8; } , _0x2b36d6['prototype']['getAttributes'] = function(_0x1f9cde, _0xffed1d) { for (var _0x36dc19 = [], _0x1140af = _0x1f9cde, _0x1ea41d = 0x0; _0x1ea41d < _0xffed1d['length']; _0x1ea41d++) try { _0x36dc19['push'](this['_gl']['getAttribLocation'](_0x1140af['program'], _0xffed1d[_0x1ea41d])); } catch (_0x42e104) { _0x36dc19['push'](-0x1); } return _0x36dc19; } , _0x2b36d6['prototype']['enableEffect'] = function(_0x46e323) { _0x46e323 && _0x46e323 !== this['_currentEffect'] && (this['bindSamplers'](_0x46e323), this['_currentEffect'] = _0x46e323, _0x46e323['onBind'] && _0x46e323['onBind'](_0x46e323), _0x46e323['_onBindObservable'] && _0x46e323['_onBindObservable']['notifyObservers'](_0x46e323)); } , _0x2b36d6['prototype']['setIntArray'] = function(_0x2ac254, _0x203589) { _0x2ac254 && this['_gl']['uniform1iv'](_0x2ac254, _0x203589); } , _0x2b36d6['prototype']['setIntArray2'] = function(_0x56f82, _0x3e3fe2) { _0x56f82 && _0x3e3fe2['length'] % 0x2 == 0x0 && this['_gl']['uniform2iv'](_0x56f82, _0x3e3fe2); } , _0x2b36d6['prototype']['setIntArray3'] = function(_0x133ed3, _0x31f039) { _0x133ed3 && _0x31f039['length'] % 0x3 == 0x0 && this['_gl']['uniform3iv'](_0x133ed3, _0x31f039); } , _0x2b36d6['prototype']['setIntArray4'] = function(_0x2d69b6, _0x1ac7d1) { _0x2d69b6 && _0x1ac7d1['length'] % 0x4 == 0x0 && this['_gl']['uniform4iv'](_0x2d69b6, _0x1ac7d1); } , _0x2b36d6['prototype']['setFloatArray'] = function(_0x336214, _0x58d2e1) { _0x336214 && this['_gl']['uniform1fv'](_0x336214, _0x58d2e1); } , _0x2b36d6['prototype']['setFloatArray2'] = function(_0x32236a, _0x5d3fd9) { _0x32236a && _0x5d3fd9['length'] % 0x2 == 0x0 && this['_gl']['uniform2fv'](_0x32236a, _0x5d3fd9); } , _0x2b36d6['prototype']['setFloatArray3'] = function(_0x5e0997, _0x393958) { _0x5e0997 && _0x393958['length'] % 0x3 == 0x0 && this['_gl']['uniform3fv'](_0x5e0997, _0x393958); } , _0x2b36d6['prototype']['setFloatArray4'] = function(_0x3825e9, _0x1a88dd) { _0x3825e9 && _0x1a88dd['length'] % 0x4 == 0x0 && this['_gl']['uniform4fv'](_0x3825e9, _0x1a88dd); } , _0x2b36d6['prototype']['setArray'] = function(_0x28600f, _0x3ac8c2) { _0x28600f && this['_gl']['uniform1fv'](_0x28600f, _0x3ac8c2); } , _0x2b36d6['prototype']['setArray2'] = function(_0x4697c0, _0x374a15) { _0x4697c0 && _0x374a15['length'] % 0x2 == 0x0 && this['_gl']['uniform2fv'](_0x4697c0, _0x374a15); } , _0x2b36d6['prototype']['setArray3'] = function(_0x46d5ae, _0x155dce) { _0x46d5ae && _0x155dce['length'] % 0x3 == 0x0 && this['_gl']['uniform3fv'](_0x46d5ae, _0x155dce); } , _0x2b36d6['prototype']['setArray4'] = function(_0x5c6218, _0x1f442c) { _0x5c6218 && _0x1f442c['length'] % 0x4 == 0x0 && this['_gl']['uniform4fv'](_0x5c6218, _0x1f442c); } , _0x2b36d6['prototype']['setMatrices'] = function(_0x15624e, _0x5eba1a) { _0x15624e && this['_gl']['uniformMatrix4fv'](_0x15624e, !0x1, _0x5eba1a); } , _0x2b36d6['prototype']['setMatrix'] = function(_0xd73636, _0x368ae9) { _0xd73636 && this['_gl']['uniformMatrix4fv'](_0xd73636, !0x1, _0x368ae9['toArray']()); } , _0x2b36d6['prototype']['setMatrix3x3'] = function(_0x513a49, _0x212bf3) { _0x513a49 && this['_gl']['uniformMatrix3fv'](_0x513a49, !0x1, _0x212bf3); } , _0x2b36d6['prototype']['setMatrix2x2'] = function(_0x3c9047, _0x2f80ed) { _0x3c9047 && this['_gl']['uniformMatrix2fv'](_0x3c9047, !0x1, _0x2f80ed); } , _0x2b36d6['prototype']['setInt'] = function(_0x1dd133, _0x4cd6e8) { _0x1dd133 && this['_gl']['uniform1i'](_0x1dd133, _0x4cd6e8); } , _0x2b36d6['prototype']['setFloat'] = function(_0x1f6650, _0x4e9d1e) { _0x1f6650 && this['_gl']['uniform1f'](_0x1f6650, _0x4e9d1e); } , _0x2b36d6['prototype']['setFloat2'] = function(_0xc9663b, _0x149d58, _0x37a41e) { _0xc9663b && this['_gl']['uniform2f'](_0xc9663b, _0x149d58, _0x37a41e); } , _0x2b36d6['prototype']['setFloat3'] = function(_0x2fa3ad, _0x2220a7, _0x209747, _0x25c2c2) { _0x2fa3ad && this['_gl']['uniform3f'](_0x2fa3ad, _0x2220a7, _0x209747, _0x25c2c2); } , _0x2b36d6['prototype']['setBool'] = function(_0x597f76, _0x39c54f) { _0x597f76 && this['_gl']['uniform1i'](_0x597f76, _0x39c54f); } , _0x2b36d6['prototype']['setFloat4'] = function(_0x4aba90, _0x2bc454, _0x45a208, _0x467975, _0x2dcba5) { _0x4aba90 && this['_gl']['uniform4f'](_0x4aba90, _0x2bc454, _0x45a208, _0x467975, _0x2dcba5); } , _0x2b36d6['prototype']['setColor3'] = function(_0x3c411e, _0x56aa04) { _0x3c411e && this['_gl']['uniform3f'](_0x3c411e, _0x56aa04['r'], _0x56aa04['g'], _0x56aa04['b']); } , _0x2b36d6['prototype']['setColor4'] = function(_0x5b854e, _0x1a80a8, _0x475fd8) { _0x5b854e && this['_gl']['uniform4f'](_0x5b854e, _0x1a80a8['r'], _0x1a80a8['g'], _0x1a80a8['b'], _0x475fd8); } , _0x2b36d6['prototype']['setDirectColor4'] = function(_0x4e2364, _0x962693) { _0x4e2364 && this['_gl']['uniform4f'](_0x4e2364, _0x962693['r'], _0x962693['g'], _0x962693['b'], _0x962693['a']); } , _0x2b36d6['prototype']['setState'] = function(_0x5e9ee0, _0xd3c3c5, _0x137c52, _0x554070) { void 0x0 === _0xd3c3c5 && (_0xd3c3c5 = 0x0), void 0x0 === _0x554070 && (_0x554070 = !0x1), (this['_depthCullingState']['cull'] !== _0x5e9ee0 || _0x137c52) && (this['_depthCullingState']['cull'] = _0x5e9ee0); var _0xaddc5e = this['cullBackFaces'] ? this['_gl']['BACK'] : this['_gl']['FRONT']; (this['_depthCullingState']['cullFace'] !== _0xaddc5e || _0x137c52) && (this['_depthCullingState']['cullFace'] = _0xaddc5e), this['setZOffset'](_0xd3c3c5); var _0x397de4 = _0x554070 ? this['_gl']['CW'] : this['_gl']['CCW']; (this['_depthCullingState']['frontFace'] !== _0x397de4 || _0x137c52) && (this['_depthCullingState']['frontFace'] = _0x397de4); } , _0x2b36d6['prototype']['setZOffset'] = function(_0x3acc4b) { this['_depthCullingState']['zOffset'] = _0x3acc4b; } , _0x2b36d6['prototype']['getZOffset'] = function() { return this['_depthCullingState']['zOffset']; } , _0x2b36d6['prototype']['setDepthBuffer'] = function(_0x1df17f) { this['_depthCullingState']['depthTest'] = _0x1df17f; } , _0x2b36d6['prototype']['getDepthWrite'] = function() { return this['_depthCullingState']['depthMask']; } , _0x2b36d6['prototype']['setDepthWrite'] = function(_0x59776b) { this['_depthCullingState']['depthMask'] = _0x59776b; } , _0x2b36d6['prototype']['setColorWrite'] = function(_0x38c418) { this['_gl']['colorMask'](_0x38c418, _0x38c418, _0x38c418, _0x38c418), this['_colorWrite'] = _0x38c418; } , _0x2b36d6['prototype']['getColorWrite'] = function() { return this['_colorWrite']; } , _0x2b36d6['prototype']['setAlphaConstants'] = function(_0x3ef9f3, _0x4b4539, _0x279d17, _0x286703) { this['_alphaState']['setAlphaBlendConstants'](_0x3ef9f3, _0x4b4539, _0x279d17, _0x286703); } , _0x2b36d6['prototype']['setAlphaMode'] = function(_0x327ac8, _0x54c9d8) { if (void 0x0 === _0x54c9d8 && (_0x54c9d8 = !0x1), this['_alphaMode'] !== _0x327ac8) { switch (_0x327ac8) { case _0x2b36d6['ALPHA_DISABLE']: this['_alphaState']['alphaBlend'] = !0x1; break; case _0x2b36d6['ALPHA_PREMULTIPLIED']: this['_alphaState']['setAlphaBlendFunctionParameters'](this['_gl']['ONE'], this['_gl']['ONE_MINUS_SRC_ALPHA'], this['_gl']['ONE'], this['_gl']['ONE']), this['_alphaState']['alphaBlend'] = !0x0; break; case _0x2b36d6['ALPHA_PREMULTIPLIED_PORTERDUFF']: this['_alphaState']['setAlphaBlendFunctionParameters'](this['_gl']['ONE'], this['_gl']['ONE_MINUS_SRC_ALPHA'], this['_gl']['ONE'], this['_gl']['ONE_MINUS_SRC_ALPHA']), this['_alphaState']['alphaBlend'] = !0x0; break; case _0x2b36d6['ALPHA_COMBINE']: this['_alphaState']['setAlphaBlendFunctionParameters'](this['_gl']['SRC_ALPHA'], this['_gl']['ONE_MINUS_SRC_ALPHA'], this['_gl']['ONE'], this['_gl']['ONE']), this['_alphaState']['alphaBlend'] = !0x0; break; case _0x2b36d6['ALPHA_ONEONE']: this['_alphaState']['setAlphaBlendFunctionParameters'](this['_gl']['ONE'], this['_gl']['ONE'], this['_gl']['ZERO'], this['_gl']['ONE']), this['_alphaState']['alphaBlend'] = !0x0; break; case _0x2b36d6['ALPHA_ADD']: this['_alphaState']['setAlphaBlendFunctionParameters'](this['_gl']['SRC_ALPHA'], this['_gl']['ONE'], this['_gl']['ZERO'], this['_gl']['ONE']), this['_alphaState']['alphaBlend'] = !0x0; break; case _0x2b36d6['ALPHA_SUBTRACT']: this['_alphaState']['setAlphaBlendFunctionParameters'](this['_gl']['ZERO'], this['_gl']['ONE_MINUS_SRC_COLOR'], this['_gl']['ONE'], this['_gl']['ONE']), this['_alphaState']['alphaBlend'] = !0x0; break; case _0x2b36d6['ALPHA_MULTIPLY']: this['_alphaState']['setAlphaBlendFunctionParameters'](this['_gl']['DST_COLOR'], this['_gl']['ZERO'], this['_gl']['ONE'], this['_gl']['ONE']), this['_alphaState']['alphaBlend'] = !0x0; break; case _0x2b36d6['ALPHA_MAXIMIZED']: this['_alphaState']['setAlphaBlendFunctionParameters'](this['_gl']['SRC_ALPHA'], this['_gl']['ONE_MINUS_SRC_COLOR'], this['_gl']['ONE'], this['_gl']['ONE']), this['_alphaState']['alphaBlend'] = !0x0; break; case _0x2b36d6['ALPHA_INTERPOLATE']: this['_alphaState']['setAlphaBlendFunctionParameters'](this['_gl']['CONSTANT_COLOR'], this['_gl']['ONE_MINUS_CONSTANT_COLOR'], this['_gl']['CONSTANT_ALPHA'], this['_gl']['ONE_MINUS_CONSTANT_ALPHA']), this['_alphaState']['alphaBlend'] = !0x0; break; case _0x2b36d6['ALPHA_SCREENMODE']: this['_alphaState']['setAlphaBlendFunctionParameters'](this['_gl']['ONE'], this['_gl']['ONE_MINUS_SRC_COLOR'], this['_gl']['ONE'], this['_gl']['ONE_MINUS_SRC_ALPHA']), this['_alphaState']['alphaBlend'] = !0x0; } _0x54c9d8 || this['setDepthWrite'](_0x327ac8 === _0x2b36d6['ALPHA_DISABLE']), this['_alphaMode'] = _0x327ac8; } } , _0x2b36d6['prototype']['getAlphaMode'] = function() { return this['_alphaMode']; } , _0x2b36d6['prototype']['clearInternalTexturesCache'] = function() { this['_internalTexturesCache'] = []; } , _0x2b36d6['prototype']['wipeCaches'] = function(_0x48d307) { this['preventCacheWipeBetweenFrames'] && !_0x48d307 || (this['_currentEffect'] = null, this['_viewportCached']['x'] = 0x0, this['_viewportCached']['y'] = 0x0, this['_viewportCached']['z'] = 0x0, this['_viewportCached']['w'] = 0x0, _0x48d307 && (this['resetTextureCache'](), this['_currentProgram'] = null, this['_stencilState']['reset'](), this['_depthCullingState']['reset'](), this['setDepthFunctionToLessOrEqual'](), this['_alphaState']['reset'](), this['_unpackFlipYCached'] = null), this['_resetVertexBufferBinding'](), this['_cachedIndexBuffer'] = null, this['_cachedEffectForVertexBuffers'] = null, this['_unbindVertexArrayObject'](), this['bindIndexBuffer'](null)); } , _0x2b36d6['prototype']['setTextureFormatToUse'] = function(_0x5d88fa) { for (var _0xa85b8d = 0x0, _0x35be61 = this['texturesSupported']['length']; _0xa85b8d < _0x35be61; _0xa85b8d++) for (var _0x40e70f = 0x0, _0x13e6f6 = _0x5d88fa['length']; _0x40e70f < _0x13e6f6; _0x40e70f++) if (this['_texturesSupported'][_0xa85b8d] === _0x5d88fa[_0x40e70f]['toLowerCase']()) return this['_textureFormatInUse'] = this['_texturesSupported'][_0xa85b8d]; return this['_textureFormatInUse'] = null, null; } , _0x2b36d6['prototype']['_getSamplingParameters'] = function(_0x21163d, _0x6e6cd) { var _0x8b7317 = this['_gl'] , _0x186779 = _0x8b7317['NEAREST'] , _0x112980 = _0x8b7317['NEAREST']; switch (_0x21163d) { case _0x2b36d6['TEXTURE_BILINEAR_SAMPLINGMODE']: _0x186779 = _0x8b7317['LINEAR'], _0x112980 = _0x6e6cd ? _0x8b7317['LINEAR_MIPMAP_NEAREST'] : _0x8b7317['LINEAR']; break; case _0x2b36d6['TEXTURE_TRILINEAR_SAMPLINGMODE']: _0x186779 = _0x8b7317['LINEAR'], _0x112980 = _0x6e6cd ? _0x8b7317['LINEAR_MIPMAP_LINEAR'] : _0x8b7317['LINEAR']; break; case _0x2b36d6['TEXTURE_NEAREST_SAMPLINGMODE']: _0x186779 = _0x8b7317['NEAREST'], _0x112980 = _0x6e6cd ? _0x8b7317['NEAREST_MIPMAP_LINEAR'] : _0x8b7317['NEAREST']; break; case _0x2b36d6['TEXTURE_NEAREST_NEAREST_MIPNEAREST']: _0x186779 = _0x8b7317['NEAREST'], _0x112980 = _0x6e6cd ? _0x8b7317['NEAREST_MIPMAP_NEAREST'] : _0x8b7317['NEAREST']; break; case _0x2b36d6['TEXTURE_NEAREST_LINEAR_MIPNEAREST']: _0x186779 = _0x8b7317['NEAREST'], _0x112980 = _0x6e6cd ? _0x8b7317['LINEAR_MIPMAP_NEAREST'] : _0x8b7317['LINEAR']; break; case _0x2b36d6['TEXTURE_NEAREST_LINEAR_MIPLINEAR']: _0x186779 = _0x8b7317['NEAREST'], _0x112980 = _0x6e6cd ? _0x8b7317['LINEAR_MIPMAP_LINEAR'] : _0x8b7317['LINEAR']; break; case _0x2b36d6['TEXTURE_NEAREST_LINEAR']: _0x186779 = _0x8b7317['NEAREST'], _0x112980 = _0x8b7317['LINEAR']; break; case _0x2b36d6['TEXTURE_NEAREST_NEAREST']: _0x186779 = _0x8b7317['NEAREST'], _0x112980 = _0x8b7317['NEAREST']; break; case _0x2b36d6['TEXTURE_LINEAR_NEAREST_MIPNEAREST']: _0x186779 = _0x8b7317['LINEAR'], _0x112980 = _0x6e6cd ? _0x8b7317['NEAREST_MIPMAP_NEAREST'] : _0x8b7317['NEAREST']; break; case _0x2b36d6['TEXTURE_LINEAR_NEAREST_MIPLINEAR']: _0x186779 = _0x8b7317['LINEAR'], _0x112980 = _0x6e6cd ? _0x8b7317['NEAREST_MIPMAP_LINEAR'] : _0x8b7317['NEAREST']; break; case _0x2b36d6['TEXTURE_LINEAR_LINEAR']: _0x186779 = _0x8b7317['LINEAR'], _0x112980 = _0x8b7317['LINEAR']; break; case _0x2b36d6['TEXTURE_LINEAR_NEAREST']: _0x186779 = _0x8b7317['LINEAR'], _0x112980 = _0x8b7317['NEAREST']; } return { 'min': _0x112980, 'mag': _0x186779 }; } , _0x2b36d6['prototype']['_createTexture'] = function() { var _0x438fbf = this['_gl']['createTexture'](); if (!_0x438fbf) throw new Error('Unable\x20to\x20create\x20texture'); return _0x438fbf; } , _0x2b36d6['prototype']['createTexture'] = function(_0x3bbbdb, _0x9f908d, _0x19ea20, _0x347d5c, _0x4562d3, _0x129a1c, _0x95e5c1, _0x249c21, _0x12ac9a, _0xbd16ba, _0x3c346b, _0x24361c) { var _0x4b6249 = this; void 0x0 === _0x4562d3 && (_0x4562d3 = _0x2b36d6['TEXTURE_TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x129a1c && (_0x129a1c = null), void 0x0 === _0x95e5c1 && (_0x95e5c1 = null), void 0x0 === _0x249c21 && (_0x249c21 = null), void 0x0 === _0x12ac9a && (_0x12ac9a = null), void 0x0 === _0xbd16ba && (_0xbd16ba = null), void 0x0 === _0x3c346b && (_0x3c346b = null), void 0x0 === _0x24361c && (_0x24361c = []); for (var _0x11b7ae = String(_0x3bbbdb), _0x547f9b = 'data:' === _0x11b7ae['substr'](0x0, 0x5), _0x220874 = 'blob:' === _0x11b7ae['substr'](0x0, 0x5), _0x1c4f6a = _0x547f9b && -0x1 !== _0x11b7ae['indexOf'](';base64,'), _0x2d27c6 = _0x12ac9a || new _0x1a5085['a'](this,_0x1a5085['a']['DATASOURCE_URL']), _0x36413e = _0x11b7ae['lastIndexOf']('.'), _0x340351 = _0x3c346b || (_0x36413e > -0x1 ? _0x11b7ae['substring'](_0x36413e)['toLowerCase']() : ''), _0x11cb00 = null, _0x3460ef = 0x0, _0x4539b7 = _0x2b36d6['_TextureLoaders']; _0x3460ef < _0x4539b7['length']; _0x3460ef++) { var _0x29c3c6 = _0x4539b7[_0x3460ef]; if (-0x1 === _0x24361c['indexOf'](_0x29c3c6) && _0x29c3c6['canLoad'](_0x340351, this['_textureFormatInUse'], _0x12ac9a, _0x1c4f6a, !!_0x249c21)) { _0x11cb00 = _0x29c3c6; break; } } _0x11cb00 && (_0x11b7ae = _0x11cb00['transformUrl'](_0x11b7ae, this['_textureFormatInUse'])), _0x347d5c && _0x347d5c['_addPendingData'](_0x2d27c6), _0x2d27c6['url'] = _0x11b7ae, _0x2d27c6['generateMipMaps'] = !_0x9f908d, _0x2d27c6['samplingMode'] = _0x4562d3, _0x2d27c6['invertY'] = _0x19ea20, this['_doNotHandleContextLost'] || (_0x2d27c6['_buffer'] = _0x249c21); var _0x470154 = null; _0x129a1c && !_0x12ac9a && (_0x470154 = _0x2d27c6['onLoadedObservable']['add'](_0x129a1c)), _0x12ac9a || this['_internalTexturesCache']['push'](_0x2d27c6); var _0x102ec0 = function(_0x3e0178, _0x516238) { _0x347d5c && _0x347d5c['_removePendingData'](_0x2d27c6); var _0x46ca18 = !0x1; _0x11cb00 && (_0x11cb00['getFallbackTextureUrl'](_0x11b7ae, _0x4b6249['_textureFormatInUse']) && (_0x46ca18 = !0x0, _0x24361c['push'](_0x11cb00), _0x49b495['h']['Warn'](_0x11cb00['constructor']['name'] + '\x20failed\x20when\x20trying\x20to\x20load\x20' + _0x2d27c6['url'] + ',\x20falling\x20back\x20to\x20the\x20next\x20supported\x20loader'), _0x4b6249['createTexture'](_0x3bbbdb, _0x9f908d, _0x2d27c6['invertY'], _0x347d5c, _0x4562d3, null, null, _0x249c21, _0x2d27c6, void 0x0, void 0x0, _0x24361c))); _0x46ca18 || (_0x470154 && _0x2d27c6['onLoadedObservable']['remove'](_0x470154), _0x49b495['h']['UseFallbackTexture'] && _0x4b6249['createTexture'](_0x49b495['h']['fallbackTexture'], _0x9f908d, _0x2d27c6['invertY'], _0x347d5c, _0x4562d3, null, null, _0x249c21, _0x2d27c6)), _0x95e5c1 && _0x95e5c1(_0x3e0178 || 'Unknown\x20error', _0x516238); }; if (_0x11cb00) { var _0x735ba1 = function(_0x48fd86) { _0x11cb00['loadData'](_0x48fd86, _0x2d27c6, function(_0x3a782e, _0x498a90, _0x1d8bfe, _0x5d97ef, _0x5329ca, _0x45876b) { _0x45876b ? _0x102ec0('TextureLoader\x20failed\x20to\x20load\x20data') : _0x4b6249['_prepareWebGLTexture'](_0x2d27c6, _0x347d5c, _0x3a782e, _0x498a90, _0x2d27c6['invertY'], !_0x1d8bfe, _0x5d97ef, function() { return _0x5329ca(), !0x1; }, _0x4562d3); }); }; _0x249c21 ? _0x735ba1(_0x249c21) : this['_loadFile'](_0x11b7ae, _0x735ba1, void 0x0, _0x347d5c ? _0x347d5c['offlineProvider'] : void 0x0, !0x0, function(_0x4d2a4c, _0x2c0456) { _0x102ec0('Unable\x20to\x20load\x20' + (_0x4d2a4c && _0x4d2a4c['responseURL'], _0x2c0456)); }); } else { var _0x155afe = function(_0x33359f) { _0x220874 && !_0x4b6249['_doNotHandleContextLost'] && (_0x2d27c6['_buffer'] = _0x33359f), _0x4b6249['_prepareWebGLTexture'](_0x2d27c6, _0x347d5c, _0x33359f['width'], _0x33359f['height'], _0x2d27c6['invertY'], _0x9f908d, !0x1, function(_0x3f2543, _0x1b576b, _0x2ef99d) { var _0x5b241d = _0x4b6249['_gl'] , _0x1dfef9 = _0x33359f['width'] === _0x3f2543 && _0x33359f['height'] === _0x1b576b , _0x4c825e = _0xbd16ba ? _0x4b6249['_getInternalFormat'](_0xbd16ba) : '.jpg' === _0x340351 ? _0x5b241d['RGB'] : _0x5b241d['RGBA']; if (_0x1dfef9) return _0x5b241d['texImage2D'](_0x5b241d['TEXTURE_2D'], 0x0, _0x4c825e, _0x4c825e, _0x5b241d['UNSIGNED_BYTE'], _0x33359f), !0x1; var _0x3aecf4 = _0x4b6249['_caps']['maxTextureSize']; if (_0x33359f['width'] > _0x3aecf4 || _0x33359f['height'] > _0x3aecf4 || null === _0x2b36d6['_RescalePostProcessFactory']) return _0x4b6249['_prepareWorkingCanvas'](), !(!_0x4b6249['_workingCanvas'] || !_0x4b6249['_workingContext']) && (_0x4b6249['_workingCanvas']['width'] = _0x3f2543, _0x4b6249['_workingCanvas']['height'] = _0x1b576b, _0x4b6249['_workingContext']['drawImage'](_0x33359f, 0x0, 0x0, _0x33359f['width'], _0x33359f['height'], 0x0, 0x0, _0x3f2543, _0x1b576b), _0x5b241d['texImage2D'](_0x5b241d['TEXTURE_2D'], 0x0, _0x4c825e, _0x4c825e, _0x5b241d['UNSIGNED_BYTE'], _0x4b6249['_workingCanvas']), _0x2d27c6['width'] = _0x3f2543, _0x2d27c6['height'] = _0x1b576b, !0x1); var _0x4b436a = new _0x1a5085['a'](_0x4b6249,_0x1a5085['a']['DATASOURCE_TEMP']); return _0x4b6249['_bindTextureDirectly'](_0x5b241d['TEXTURE_2D'], _0x4b436a, !0x0), _0x5b241d['texImage2D'](_0x5b241d['TEXTURE_2D'], 0x0, _0x4c825e, _0x4c825e, _0x5b241d['UNSIGNED_BYTE'], _0x33359f), _0x5b241d['texParameteri'](_0x5b241d['TEXTURE_2D'], _0x5b241d['TEXTURE_MAG_FILTER'], _0x5b241d['LINEAR']), _0x5b241d['texParameteri'](_0x5b241d['TEXTURE_2D'], _0x5b241d['TEXTURE_MIN_FILTER'], _0x5b241d['LINEAR']), _0x5b241d['texParameteri'](_0x5b241d['TEXTURE_2D'], _0x5b241d['TEXTURE_WRAP_S'], _0x5b241d['CLAMP_TO_EDGE']), _0x5b241d['texParameteri'](_0x5b241d['TEXTURE_2D'], _0x5b241d['TEXTURE_WRAP_T'], _0x5b241d['CLAMP_TO_EDGE']), _0x4b6249['_rescaleTexture'](_0x4b436a, _0x2d27c6, _0x347d5c, _0x4c825e, function() { _0x4b6249['_releaseTexture'](_0x4b436a), _0x4b6249['_bindTextureDirectly'](_0x5b241d['TEXTURE_2D'], _0x2d27c6, !0x0), _0x2ef99d(); }), !0x0; }, _0x4562d3); }; !_0x547f9b || _0x1c4f6a ? _0x249c21 instanceof HTMLImageElement ? _0x155afe(_0x249c21) : _0x49b495['h']['LoadImage'](_0x11b7ae, _0x155afe, _0x102ec0, _0x347d5c ? _0x347d5c['offlineProvider'] : null) : 'string' == typeof _0x249c21 || _0x249c21 instanceof ArrayBuffer || _0x249c21 instanceof Blob ? _0x49b495['h']['LoadImage'](_0x249c21, _0x155afe, _0x102ec0, _0x347d5c ? _0x347d5c['offlineProvider'] : null) : _0x155afe(_0x249c21); } return _0x2d27c6; } , _0x2b36d6['prototype']['_rescaleTexture'] = function(_0x25bc18, _0x267014, _0x1ad197, _0x1a917f, _0x31b798) { var _0x3a011a = this , _0x67783 = this['createRenderTargetTexture']({ 'width': _0x267014['width'], 'height': _0x267014['height'] }, { 'generateMipMaps': !0x1, 'type': _0x2b36d6['TEXTURETYPE_UNSIGNED_INT'], 'samplingMode': _0x2b36d6['TEXTURE_BILINEAR_SAMPLINGMODE'], 'generateDepthBuffer': !0x1, 'generateStencilBuffer': !0x1 }); !this['_rescalePostProcess'] && _0x2b36d6['_RescalePostProcessFactory'] && (this['_rescalePostProcess'] = _0x2b36d6['_RescalePostProcessFactory'](this)), this['_rescalePostProcess']['getEffect']()['executeWhenCompiled'](function() { _0x3a011a['_rescalePostProcess']['onApply'] = function(_0x124190) { _0x124190['_bindTexture']('textureSampler', _0x25bc18); } ; var _0x5f1a27 = _0x1ad197; _0x5f1a27 || (_0x5f1a27 = _0x3a011a['scenes'][_0x3a011a['scenes']['length'] - 0x1]), _0x5f1a27['postProcessManager']['directRender']([_0x3a011a['_rescalePostProcess']], _0x67783, !0x0), _0x3a011a['_bindTextureDirectly'](_0x3a011a['_gl']['TEXTURE_2D'], _0x267014, !0x0), _0x3a011a['_gl']['copyTexImage2D'](_0x3a011a['_gl']['TEXTURE_2D'], 0x0, _0x1a917f, 0x0, 0x0, _0x267014['width'], _0x267014['height'], 0x0), _0x3a011a['unBindFramebuffer'](_0x67783), _0x3a011a['_releaseTexture'](_0x67783), _0x31b798 && _0x31b798(); }); } , _0x2b36d6['prototype']['createRawTexture'] = function(_0x1a36f2, _0xf00c30, _0x24415e, _0x4ab92f, _0x32f39d, _0x4ccd8e, _0x2b8fe0, _0x4596a5, _0x19f8dd) { throw void 0x0 === _0x4596a5 && (_0x4596a5 = null), void 0x0 === _0x19f8dd && (_0x19f8dd = _0x2b36d6['TEXTURETYPE_UNSIGNED_INT']), _0x51a360['a']['WarnImport']('Engine.RawTexture'); } , _0x2b36d6['prototype']['_unpackFlipY'] = function(_0x2a34a5) { this['_unpackFlipYCached'] !== _0x2a34a5 && (this['_gl']['pixelStorei'](this['_gl']['UNPACK_FLIP_Y_WEBGL'], _0x2a34a5 ? 0x1 : 0x0), this['enableUnpackFlipYCached'] && (this['_unpackFlipYCached'] = _0x2a34a5)); } , _0x2b36d6['prototype']['_getUnpackAlignement'] = function() { return this['_gl']['getParameter'](this['_gl']['UNPACK_ALIGNMENT']); } , _0x2b36d6['prototype']['createDynamicTexture'] = function(_0x215489, _0x492514, _0x304ec0, _0x38d915) { var _0x119107 = new _0x1a5085['a'](this,_0x1a5085['a']['DATASOURCE_DYNAMIC']); return _0x119107['baseWidth'] = _0x215489, _0x119107['baseHeight'] = _0x492514, _0x304ec0 && (_0x215489 = this['needPOTTextures'] ? _0x49b495['h']['GetExponentOfTwo'](_0x215489, this['_caps']['maxTextureSize']) : _0x215489, _0x492514 = this['needPOTTextures'] ? _0x49b495['h']['GetExponentOfTwo'](_0x492514, this['_caps']['maxTextureSize']) : _0x492514), _0x119107['width'] = _0x215489, _0x119107['height'] = _0x492514, _0x119107['isReady'] = !0x1, _0x119107['generateMipMaps'] = _0x304ec0, _0x119107['samplingMode'] = _0x38d915, this['updateTextureSamplingMode'](_0x38d915, _0x119107), this['_internalTexturesCache']['push'](_0x119107), _0x119107; } , _0x2b36d6['prototype']['updateTextureSamplingMode'] = function(_0x3a46e6, _0x3cd786) { var _0x33ac13 = this['_getSamplingParameters'](_0x3a46e6, _0x3cd786['generateMipMaps']); _0x3cd786['isCube'] ? (this['_setTextureParameterInteger'](this['_gl']['TEXTURE_CUBE_MAP'], this['_gl']['TEXTURE_MAG_FILTER'], _0x33ac13['mag'], _0x3cd786), this['_setTextureParameterInteger'](this['_gl']['TEXTURE_CUBE_MAP'], this['_gl']['TEXTURE_MIN_FILTER'], _0x33ac13['min']), this['_bindTextureDirectly'](this['_gl']['TEXTURE_CUBE_MAP'], null)) : _0x3cd786['is3D'] ? (this['_setTextureParameterInteger'](this['_gl']['TEXTURE_3D'], this['_gl']['TEXTURE_MAG_FILTER'], _0x33ac13['mag'], _0x3cd786), this['_setTextureParameterInteger'](this['_gl']['TEXTURE_3D'], this['_gl']['TEXTURE_MIN_FILTER'], _0x33ac13['min']), this['_bindTextureDirectly'](this['_gl']['TEXTURE_3D'], null)) : (this['_setTextureParameterInteger'](this['_gl']['TEXTURE_2D'], this['_gl']['TEXTURE_MAG_FILTER'], _0x33ac13['mag'], _0x3cd786), this['_setTextureParameterInteger'](this['_gl']['TEXTURE_2D'], this['_gl']['TEXTURE_MIN_FILTER'], _0x33ac13['min']), this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], null)), _0x3cd786['samplingMode'] = _0x3a46e6; } , _0x2b36d6['prototype']['updateDynamicTexture'] = function(_0x5d8619, _0x233d22, _0x239924, _0x2e65ee, _0x32da38, _0x59bc8c) { if (void 0x0 === _0x2e65ee && (_0x2e65ee = !0x1), void 0x0 === _0x59bc8c && (_0x59bc8c = !0x1), _0x5d8619) { this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], _0x5d8619, !0x0, _0x59bc8c), this['_unpackFlipY'](_0x239924), _0x2e65ee && this['_gl']['pixelStorei'](this['_gl']['UNPACK_PREMULTIPLY_ALPHA_WEBGL'], 0x1); var _0xa0b19e = _0x32da38 ? this['_getInternalFormat'](_0x32da38) : this['_gl']['RGBA']; this['_gl']['texImage2D'](this['_gl']['TEXTURE_2D'], 0x0, _0xa0b19e, _0xa0b19e, this['_gl']['UNSIGNED_BYTE'], _0x233d22), _0x5d8619['generateMipMaps'] && this['_gl']['generateMipmap'](this['_gl']['TEXTURE_2D']), this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], null), _0x2e65ee && this['_gl']['pixelStorei'](this['_gl']['UNPACK_PREMULTIPLY_ALPHA_WEBGL'], 0x0), _0x5d8619['isReady'] = !0x0; } } , _0x2b36d6['prototype']['updateVideoTexture'] = function(_0x1fbda3, _0x458ff3, _0x30011c) { if (_0x1fbda3 && !_0x1fbda3['_isDisabled']) { var _0x149390 = this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], _0x1fbda3, !0x0); this['_unpackFlipY'](!_0x30011c); try { if (void 0x0 === this['_videoTextureSupported'] && (this['_gl']['texImage2D'](this['_gl']['TEXTURE_2D'], 0x0, this['_gl']['RGBA'], this['_gl']['RGBA'], this['_gl']['UNSIGNED_BYTE'], _0x458ff3), 0x0 !== this['_gl']['getError']() ? this['_videoTextureSupported'] = !0x1 : this['_videoTextureSupported'] = !0x0), this['_videoTextureSupported']) this['_gl']['texImage2D'](this['_gl']['TEXTURE_2D'], 0x0, this['_gl']['RGBA'], this['_gl']['RGBA'], this['_gl']['UNSIGNED_BYTE'], _0x458ff3); else { if (!_0x1fbda3['_workingCanvas']) { _0x1fbda3['_workingCanvas'] = document['createElement']('canvas'); var _0x2f910f = _0x1fbda3['_workingCanvas']['getContext']('2d'); if (!_0x2f910f) throw new Error('Unable\x20to\x20get\x202d\x20context'); _0x1fbda3['_workingContext'] = _0x2f910f, _0x1fbda3['_workingCanvas']['width'] = _0x1fbda3['width'], _0x1fbda3['_workingCanvas']['height'] = _0x1fbda3['height']; } _0x1fbda3['_workingContext']['drawImage'](_0x458ff3, 0x0, 0x0, _0x458ff3['videoWidth'], _0x458ff3['videoHeight'], 0x0, 0x0, _0x1fbda3['width'], _0x1fbda3['height']), this['_gl']['texImage2D'](this['_gl']['TEXTURE_2D'], 0x0, this['_gl']['RGBA'], this['_gl']['RGBA'], this['_gl']['UNSIGNED_BYTE'], _0x1fbda3['_workingCanvas']); } _0x1fbda3['generateMipMaps'] && this['_gl']['generateMipmap'](this['_gl']['TEXTURE_2D']), _0x149390 || this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], null), _0x1fbda3['isReady'] = !0x0; } catch (_0x287ff2) { _0x1fbda3['_isDisabled'] = !0x0; } } } , _0x2b36d6['prototype']['updateTextureComparisonFunction'] = function(_0x38fbd0, _0x5876d5) { if (0x1 !== this['webGLVersion']) { var _0x208a67 = this['_gl']; _0x38fbd0['isCube'] ? (this['_bindTextureDirectly'](this['_gl']['TEXTURE_CUBE_MAP'], _0x38fbd0, !0x0), 0x0 === _0x5876d5 ? (_0x208a67['texParameteri'](_0x208a67['TEXTURE_CUBE_MAP'], _0x208a67['TEXTURE_COMPARE_FUNC'], _0x2b36d6['LEQUAL']), _0x208a67['texParameteri'](_0x208a67['TEXTURE_CUBE_MAP'], _0x208a67['TEXTURE_COMPARE_MODE'], _0x208a67['NONE'])) : (_0x208a67['texParameteri'](_0x208a67['TEXTURE_CUBE_MAP'], _0x208a67['TEXTURE_COMPARE_FUNC'], _0x5876d5), _0x208a67['texParameteri'](_0x208a67['TEXTURE_CUBE_MAP'], _0x208a67['TEXTURE_COMPARE_MODE'], _0x208a67['COMPARE_REF_TO_TEXTURE'])), this['_bindTextureDirectly'](this['_gl']['TEXTURE_CUBE_MAP'], null)) : (this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], _0x38fbd0, !0x0), 0x0 === _0x5876d5 ? (_0x208a67['texParameteri'](_0x208a67['TEXTURE_2D'], _0x208a67['TEXTURE_COMPARE_FUNC'], _0x2b36d6['LEQUAL']), _0x208a67['texParameteri'](_0x208a67['TEXTURE_2D'], _0x208a67['TEXTURE_COMPARE_MODE'], _0x208a67['NONE'])) : (_0x208a67['texParameteri'](_0x208a67['TEXTURE_2D'], _0x208a67['TEXTURE_COMPARE_FUNC'], _0x5876d5), _0x208a67['texParameteri'](_0x208a67['TEXTURE_2D'], _0x208a67['TEXTURE_COMPARE_MODE'], _0x208a67['COMPARE_REF_TO_TEXTURE'])), this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], null)), _0x38fbd0['_comparisonFunction'] = _0x5876d5; } else _0x3fe383['a']['Error']('WebGL\x201\x20does\x20not\x20support\x20texture\x20comparison.'); } , _0x2b36d6['prototype']['_setupDepthStencilTexture'] = function(_0x3f1acc, _0x5dec73, _0x16ca7f, _0x54d22f, _0x4ac398) { var _0xd73d86 = _0x5dec73['width'] || _0x5dec73 , _0x5de226 = _0x5dec73['height'] || _0x5dec73; _0x3f1acc['baseWidth'] = _0xd73d86, _0x3f1acc['baseHeight'] = _0x5de226, _0x3f1acc['width'] = _0xd73d86, _0x3f1acc['height'] = _0x5de226, _0x3f1acc['isReady'] = !0x0, _0x3f1acc['samples'] = 0x1, _0x3f1acc['generateMipMaps'] = !0x1, _0x3f1acc['_generateDepthBuffer'] = !0x0, _0x3f1acc['_generateStencilBuffer'] = _0x16ca7f, _0x3f1acc['samplingMode'] = _0x54d22f ? _0x2b36d6['TEXTURE_BILINEAR_SAMPLINGMODE'] : _0x2b36d6['TEXTURE_NEAREST_SAMPLINGMODE'], _0x3f1acc['type'] = _0x2b36d6['TEXTURETYPE_UNSIGNED_INT'], _0x3f1acc['_comparisonFunction'] = _0x4ac398; var _0x4d041b = this['_gl'] , _0x3e9146 = _0x3f1acc['isCube'] ? _0x4d041b['TEXTURE_CUBE_MAP'] : _0x4d041b['TEXTURE_2D'] , _0x4bbbf0 = this['_getSamplingParameters'](_0x3f1acc['samplingMode'], !0x1); _0x4d041b['texParameteri'](_0x3e9146, _0x4d041b['TEXTURE_MAG_FILTER'], _0x4bbbf0['mag']), _0x4d041b['texParameteri'](_0x3e9146, _0x4d041b['TEXTURE_MIN_FILTER'], _0x4bbbf0['min']), _0x4d041b['texParameteri'](_0x3e9146, _0x4d041b['TEXTURE_WRAP_S'], _0x4d041b['CLAMP_TO_EDGE']), _0x4d041b['texParameteri'](_0x3e9146, _0x4d041b['TEXTURE_WRAP_T'], _0x4d041b['CLAMP_TO_EDGE']), 0x0 === _0x4ac398 ? (_0x4d041b['texParameteri'](_0x3e9146, _0x4d041b['TEXTURE_COMPARE_FUNC'], _0x2b36d6['LEQUAL']), _0x4d041b['texParameteri'](_0x3e9146, _0x4d041b['TEXTURE_COMPARE_MODE'], _0x4d041b['NONE'])) : (_0x4d041b['texParameteri'](_0x3e9146, _0x4d041b['TEXTURE_COMPARE_FUNC'], _0x4ac398), _0x4d041b['texParameteri'](_0x3e9146, _0x4d041b['TEXTURE_COMPARE_MODE'], _0x4d041b['COMPARE_REF_TO_TEXTURE'])); } , _0x2b36d6['prototype']['createDepthStencilTexture'] = function(_0x26b3ee, _0x58e4a6) { if (_0x58e4a6['isCube']) { var _0x404311 = _0x26b3ee['width'] || _0x26b3ee; return this['_createDepthStencilCubeTexture'](_0x404311, _0x58e4a6); } return this['_createDepthStencilTexture'](_0x26b3ee, _0x58e4a6); } , _0x2b36d6['prototype']['_createDepthStencilTexture'] = function(_0xc2ee6e, _0x51d498) { var _0x25c702 = new _0x1a5085['a'](this,_0x1a5085['a']['DATASOURCE_DEPTHTEXTURE']); if (!this['_caps']['depthTextureExtension']) return _0x3fe383['a']['Error']('Depth\x20texture\x20is\x20not\x20supported\x20by\x20your\x20browser\x20or\x20hardware.'), _0x25c702; var _0x1e8639 = _0x31b8ef['a']({ 'bilinearFiltering': !0x1, 'comparisonFunction': 0x0, 'generateStencil': !0x1 }, _0x51d498) , _0x2d8af3 = this['_gl']; return this['_bindTextureDirectly'](_0x2d8af3['TEXTURE_2D'], _0x25c702, !0x0), this['_setupDepthStencilTexture'](_0x25c702, _0xc2ee6e, _0x1e8639['generateStencil'], _0x1e8639['bilinearFiltering'], _0x1e8639['comparisonFunction']), this['webGLVersion'] > 0x1 ? _0x1e8639['generateStencil'] ? _0x2d8af3['texImage2D'](_0x2d8af3['TEXTURE_2D'], 0x0, _0x2d8af3['DEPTH24_STENCIL8'], _0x25c702['width'], _0x25c702['height'], 0x0, _0x2d8af3['DEPTH_STENCIL'], _0x2d8af3['UNSIGNED_INT_24_8'], null) : _0x2d8af3['texImage2D'](_0x2d8af3['TEXTURE_2D'], 0x0, _0x2d8af3['DEPTH_COMPONENT24'], _0x25c702['width'], _0x25c702['height'], 0x0, _0x2d8af3['DEPTH_COMPONENT'], _0x2d8af3['UNSIGNED_INT'], null) : _0x1e8639['generateStencil'] ? _0x2d8af3['texImage2D'](_0x2d8af3['TEXTURE_2D'], 0x0, _0x2d8af3['DEPTH_STENCIL'], _0x25c702['width'], _0x25c702['height'], 0x0, _0x2d8af3['DEPTH_STENCIL'], _0x2d8af3['UNSIGNED_INT_24_8'], null) : _0x2d8af3['texImage2D'](_0x2d8af3['TEXTURE_2D'], 0x0, _0x2d8af3['DEPTH_COMPONENT'], _0x25c702['width'], _0x25c702['height'], 0x0, _0x2d8af3['DEPTH_COMPONENT'], _0x2d8af3['UNSIGNED_INT'], null), this['_bindTextureDirectly'](_0x2d8af3['TEXTURE_2D'], null), _0x25c702; } , _0x2b36d6['prototype']['setFrameBufferDepthStencilTexture'] = function(_0x37f58b) { var _0x233555 = _0x37f58b['getInternalTexture'](); if (_0x233555 && _0x233555['_framebuffer'] && _0x37f58b['depthStencilTexture']) { var _0xdce1f5 = this['_gl'] , _0x23e1c9 = _0x37f58b['depthStencilTexture']; this['_bindUnboundFramebuffer'](_0x233555['_framebuffer']), _0x23e1c9['isCube'] ? _0x23e1c9['_generateStencilBuffer'] ? _0xdce1f5['framebufferTexture2D'](_0xdce1f5['FRAMEBUFFER'], _0xdce1f5['DEPTH_STENCIL_ATTACHMENT'], _0xdce1f5['TEXTURE_CUBE_MAP_POSITIVE_X'], _0x23e1c9['_webGLTexture'], 0x0) : _0xdce1f5['framebufferTexture2D'](_0xdce1f5['FRAMEBUFFER'], _0xdce1f5['DEPTH_ATTACHMENT'], _0xdce1f5['TEXTURE_CUBE_MAP_POSITIVE_X'], _0x23e1c9['_webGLTexture'], 0x0) : _0x23e1c9['_generateStencilBuffer'] ? _0xdce1f5['framebufferTexture2D'](_0xdce1f5['FRAMEBUFFER'], _0xdce1f5['DEPTH_STENCIL_ATTACHMENT'], _0xdce1f5['TEXTURE_2D'], _0x23e1c9['_webGLTexture'], 0x0) : _0xdce1f5['framebufferTexture2D'](_0xdce1f5['FRAMEBUFFER'], _0xdce1f5['DEPTH_ATTACHMENT'], _0xdce1f5['TEXTURE_2D'], _0x23e1c9['_webGLTexture'], 0x0), this['_bindUnboundFramebuffer'](null); } } , _0x2b36d6['prototype']['createRenderTargetTexture'] = function(_0x3f025a, _0x4fa187) { var _0x2a9ab3 = new _0x1ad15a['a'](); void 0x0 !== _0x4fa187 && 'object' == typeof _0x4fa187 ? (_0x2a9ab3['generateMipMaps'] = _0x4fa187['generateMipMaps'], _0x2a9ab3['generateDepthBuffer'] = void 0x0 === _0x4fa187['generateDepthBuffer'] || _0x4fa187['generateDepthBuffer'], _0x2a9ab3['generateStencilBuffer'] = _0x2a9ab3['generateDepthBuffer'] && _0x4fa187['generateStencilBuffer'], _0x2a9ab3['type'] = void 0x0 === _0x4fa187['type'] ? _0x2b36d6['TEXTURETYPE_UNSIGNED_INT'] : _0x4fa187['type'], _0x2a9ab3['samplingMode'] = void 0x0 === _0x4fa187['samplingMode'] ? _0x2b36d6['TEXTURE_TRILINEAR_SAMPLINGMODE'] : _0x4fa187['samplingMode'], _0x2a9ab3['format'] = void 0x0 === _0x4fa187['format'] ? _0x2b36d6['TEXTUREFORMAT_RGBA'] : _0x4fa187['format']) : (_0x2a9ab3['generateMipMaps'] = _0x4fa187, _0x2a9ab3['generateDepthBuffer'] = !0x0, _0x2a9ab3['generateStencilBuffer'] = !0x1, _0x2a9ab3['type'] = _0x2b36d6['TEXTURETYPE_UNSIGNED_INT'], _0x2a9ab3['samplingMode'] = _0x2b36d6['TEXTURE_TRILINEAR_SAMPLINGMODE'], _0x2a9ab3['format'] = _0x2b36d6['TEXTUREFORMAT_RGBA']), (_0x2a9ab3['type'] !== _0x2b36d6['TEXTURETYPE_FLOAT'] || this['_caps']['textureFloatLinearFiltering']) && (_0x2a9ab3['type'] !== _0x2b36d6['TEXTURETYPE_HALF_FLOAT'] || this['_caps']['textureHalfFloatLinearFiltering']) || (_0x2a9ab3['samplingMode'] = _0x2b36d6['TEXTURE_NEAREST_SAMPLINGMODE']); var _0x31e9ed = this['_gl'] , _0xecac44 = new _0x1a5085['a'](this,_0x1a5085['a']['DATASOURCE_RENDERTARGET']); this['_bindTextureDirectly'](_0x31e9ed['TEXTURE_2D'], _0xecac44, !0x0); var _0x5f61d8 = _0x3f025a['width'] || _0x3f025a , _0x333c0e = _0x3f025a['height'] || _0x3f025a , _0xbfd24b = this['_getSamplingParameters'](_0x2a9ab3['samplingMode'], !!_0x2a9ab3['generateMipMaps']); _0x2a9ab3['type'] !== _0x2b36d6['TEXTURETYPE_FLOAT'] || this['_caps']['textureFloat'] || (_0x2a9ab3['type'] = _0x2b36d6['TEXTURETYPE_UNSIGNED_INT'], _0x3fe383['a']['Warn']('Float\x20textures\x20are\x20not\x20supported.\x20Render\x20target\x20forced\x20to\x20TEXTURETYPE_UNSIGNED_BYTE\x20type')), _0x31e9ed['texParameteri'](_0x31e9ed['TEXTURE_2D'], _0x31e9ed['TEXTURE_MAG_FILTER'], _0xbfd24b['mag']), _0x31e9ed['texParameteri'](_0x31e9ed['TEXTURE_2D'], _0x31e9ed['TEXTURE_MIN_FILTER'], _0xbfd24b['min']), _0x31e9ed['texParameteri'](_0x31e9ed['TEXTURE_2D'], _0x31e9ed['TEXTURE_WRAP_S'], _0x31e9ed['CLAMP_TO_EDGE']), _0x31e9ed['texParameteri'](_0x31e9ed['TEXTURE_2D'], _0x31e9ed['TEXTURE_WRAP_T'], _0x31e9ed['CLAMP_TO_EDGE']), _0x31e9ed['texImage2D'](_0x31e9ed['TEXTURE_2D'], 0x0, this['_getRGBABufferInternalSizedFormat'](_0x2a9ab3['type'], _0x2a9ab3['format']), _0x5f61d8, _0x333c0e, 0x0, this['_getInternalFormat'](_0x2a9ab3['format']), this['_getWebGLTextureType'](_0x2a9ab3['type']), null); var _0x416834 = this['_currentFramebuffer'] , _0x31fccf = _0x31e9ed['createFramebuffer'](); return this['_bindUnboundFramebuffer'](_0x31fccf), _0x31e9ed['framebufferTexture2D'](_0x31e9ed['FRAMEBUFFER'], _0x31e9ed['COLOR_ATTACHMENT0'], _0x31e9ed['TEXTURE_2D'], _0xecac44['_webGLTexture'], 0x0), _0xecac44['_depthStencilBuffer'] = this['_setupFramebufferDepthAttachments'](!!_0x2a9ab3['generateStencilBuffer'], _0x2a9ab3['generateDepthBuffer'], _0x5f61d8, _0x333c0e), _0x2a9ab3['generateMipMaps'] && this['_gl']['generateMipmap'](this['_gl']['TEXTURE_2D']), this['_bindTextureDirectly'](_0x31e9ed['TEXTURE_2D'], null), _0x31e9ed['bindRenderbuffer'](_0x31e9ed['RENDERBUFFER'], null), this['_bindUnboundFramebuffer'](_0x416834), _0xecac44['_framebuffer'] = _0x31fccf, _0xecac44['baseWidth'] = _0x5f61d8, _0xecac44['baseHeight'] = _0x333c0e, _0xecac44['width'] = _0x5f61d8, _0xecac44['height'] = _0x333c0e, _0xecac44['isReady'] = !0x0, _0xecac44['samples'] = 0x1, _0xecac44['generateMipMaps'] = !!_0x2a9ab3['generateMipMaps'], _0xecac44['samplingMode'] = _0x2a9ab3['samplingMode'], _0xecac44['type'] = _0x2a9ab3['type'], _0xecac44['format'] = _0x2a9ab3['format'], _0xecac44['_generateDepthBuffer'] = _0x2a9ab3['generateDepthBuffer'], _0xecac44['_generateStencilBuffer'] = !!_0x2a9ab3['generateStencilBuffer'], this['_internalTexturesCache']['push'](_0xecac44), _0xecac44; } , _0x2b36d6['prototype']['_setupFramebufferDepthAttachments'] = function(_0x399dee, _0x1e0c00, _0xf11bdd, _0x52e4c4, _0x3199b6) { void 0x0 === _0x3199b6 && (_0x3199b6 = 0x1); var _0x5750d1 = null , _0x52ee9e = this['_gl']; return _0x399dee ? (_0x5750d1 = _0x52ee9e['createRenderbuffer'](), _0x52ee9e['bindRenderbuffer'](_0x52ee9e['RENDERBUFFER'], _0x5750d1), _0x3199b6 > 0x1 ? _0x52ee9e['renderbufferStorageMultisample'](_0x52ee9e['RENDERBUFFER'], _0x3199b6, _0x52ee9e['DEPTH24_STENCIL8'], _0xf11bdd, _0x52e4c4) : _0x52ee9e['renderbufferStorage'](_0x52ee9e['RENDERBUFFER'], _0x52ee9e['DEPTH_STENCIL'], _0xf11bdd, _0x52e4c4), _0x52ee9e['framebufferRenderbuffer'](_0x52ee9e['FRAMEBUFFER'], _0x52ee9e['DEPTH_STENCIL_ATTACHMENT'], _0x52ee9e['RENDERBUFFER'], _0x5750d1)) : _0x1e0c00 && (_0x5750d1 = _0x52ee9e['createRenderbuffer'](), _0x52ee9e['bindRenderbuffer'](_0x52ee9e['RENDERBUFFER'], _0x5750d1), _0x3199b6 > 0x1 ? _0x52ee9e['renderbufferStorageMultisample'](_0x52ee9e['RENDERBUFFER'], _0x3199b6, _0x52ee9e['DEPTH_COMPONENT16'], _0xf11bdd, _0x52e4c4) : _0x52ee9e['renderbufferStorage'](_0x52ee9e['RENDERBUFFER'], _0x52ee9e['DEPTH_COMPONENT16'], _0xf11bdd, _0x52e4c4), _0x52ee9e['framebufferRenderbuffer'](_0x52ee9e['FRAMEBUFFER'], _0x52ee9e['DEPTH_ATTACHMENT'], _0x52ee9e['RENDERBUFFER'], _0x5750d1)), _0x5750d1; } , _0x2b36d6['prototype']['updateRenderTargetTextureSampleCount'] = function(_0x8dd0b6, _0x29a5ec) { if (this['webGLVersion'] < 0x2 || !_0x8dd0b6) return 0x1; if (_0x8dd0b6['samples'] === _0x29a5ec) return _0x29a5ec; var _0x48dac7 = this['_gl']; if (_0x29a5ec = Math['min'](_0x29a5ec, _0x48dac7['getParameter'](_0x48dac7['MAX_SAMPLES'])), _0x8dd0b6['_depthStencilBuffer'] && (_0x48dac7['deleteRenderbuffer'](_0x8dd0b6['_depthStencilBuffer']), _0x8dd0b6['_depthStencilBuffer'] = null), _0x8dd0b6['_MSAAFramebuffer'] && (_0x48dac7['deleteFramebuffer'](_0x8dd0b6['_MSAAFramebuffer']), _0x8dd0b6['_MSAAFramebuffer'] = null), _0x8dd0b6['_MSAARenderBuffer'] && (_0x48dac7['deleteRenderbuffer'](_0x8dd0b6['_MSAARenderBuffer']), _0x8dd0b6['_MSAARenderBuffer'] = null), _0x29a5ec > 0x1) { var _0x5de7dc = _0x48dac7['createFramebuffer'](); if (!_0x5de7dc) throw new Error('Unable\x20to\x20create\x20multi\x20sampled\x20framebuffer'); _0x8dd0b6['_MSAAFramebuffer'] = _0x5de7dc, this['_bindUnboundFramebuffer'](_0x8dd0b6['_MSAAFramebuffer']); var _0x4be2ff = _0x48dac7['createRenderbuffer'](); if (!_0x4be2ff) throw new Error('Unable\x20to\x20create\x20multi\x20sampled\x20framebuffer'); _0x48dac7['bindRenderbuffer'](_0x48dac7['RENDERBUFFER'], _0x4be2ff), _0x48dac7['renderbufferStorageMultisample'](_0x48dac7['RENDERBUFFER'], _0x29a5ec, this['_getRGBAMultiSampleBufferFormat'](_0x8dd0b6['type']), _0x8dd0b6['width'], _0x8dd0b6['height']), _0x48dac7['framebufferRenderbuffer'](_0x48dac7['FRAMEBUFFER'], _0x48dac7['COLOR_ATTACHMENT0'], _0x48dac7['RENDERBUFFER'], _0x4be2ff), _0x8dd0b6['_MSAARenderBuffer'] = _0x4be2ff; } else this['_bindUnboundFramebuffer'](_0x8dd0b6['_framebuffer']); return _0x8dd0b6['samples'] = _0x29a5ec, _0x8dd0b6['_depthStencilBuffer'] = this['_setupFramebufferDepthAttachments'](_0x8dd0b6['_generateStencilBuffer'], _0x8dd0b6['_generateDepthBuffer'], _0x8dd0b6['width'], _0x8dd0b6['height'], _0x29a5ec), _0x48dac7['bindRenderbuffer'](_0x48dac7['RENDERBUFFER'], null), this['_bindUnboundFramebuffer'](null), _0x29a5ec; } , _0x2b36d6['prototype']['_uploadCompressedDataToTextureDirectly'] = function(_0x5701be, _0x3b8255, _0x5e6ae1, _0x4453f0, _0x4f79e0, _0x8fa4e4, _0x3d24b7) { void 0x0 === _0x8fa4e4 && (_0x8fa4e4 = 0x0), void 0x0 === _0x3d24b7 && (_0x3d24b7 = 0x0); var _0x362399 = this['_gl'] , _0x4d18e3 = _0x362399['TEXTURE_2D']; _0x5701be['isCube'] && (_0x4d18e3 = _0x362399['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0x8fa4e4), this['_gl']['compressedTexImage2D'](_0x4d18e3, _0x3d24b7, _0x3b8255, _0x5e6ae1, _0x4453f0, 0x0, _0x4f79e0); } , _0x2b36d6['prototype']['_uploadDataToTextureDirectly'] = function(_0x29badb, _0x2c6da4, _0x56578a, _0x3a192a) { void 0x0 === _0x56578a && (_0x56578a = 0x0), void 0x0 === _0x3a192a && (_0x3a192a = 0x0); var _0x2729d0 = this['_gl'] , _0x1aea20 = this['_getWebGLTextureType'](_0x29badb['type']) , _0x2f732d = this['_getInternalFormat'](_0x29badb['format']) , _0x5e5354 = this['_getRGBABufferInternalSizedFormat'](_0x29badb['type'], _0x2f732d); this['_unpackFlipY'](_0x29badb['invertY']); var _0x1cbe40 = _0x2729d0['TEXTURE_2D']; _0x29badb['isCube'] && (_0x1cbe40 = _0x2729d0['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0x56578a); var _0x19a1e9 = Math['round'](_0x20fb29['a']['Log2'](_0x29badb['width'])) , _0x445330 = Math['round'](_0x20fb29['a']['Log2'](_0x29badb['height'])) , _0x4c58b1 = Math['pow'](0x2, Math['max'](_0x19a1e9 - _0x3a192a, 0x0)) , _0xaac0da = Math['pow'](0x2, Math['max'](_0x445330 - _0x3a192a, 0x0)); _0x2729d0['texImage2D'](_0x1cbe40, _0x3a192a, _0x5e5354, _0x4c58b1, _0xaac0da, 0x0, _0x2f732d, _0x1aea20, _0x2c6da4); } , _0x2b36d6['prototype']['_uploadArrayBufferViewToTexture'] = function(_0x236ba8, _0x2d7915, _0x33acdd, _0x9c338d) { void 0x0 === _0x33acdd && (_0x33acdd = 0x0), void 0x0 === _0x9c338d && (_0x9c338d = 0x0); var _0x41437a = this['_gl'] , _0x1fa28a = _0x236ba8['isCube'] ? _0x41437a['TEXTURE_CUBE_MAP'] : _0x41437a['TEXTURE_2D']; this['_bindTextureDirectly'](_0x1fa28a, _0x236ba8, !0x0), this['_uploadDataToTextureDirectly'](_0x236ba8, _0x2d7915, _0x33acdd, _0x9c338d), this['_bindTextureDirectly'](_0x1fa28a, null, !0x0); } , _0x2b36d6['prototype']['_uploadImageToTexture'] = function(_0x4ec01, _0x4a9840, _0x3673b7, _0x4a42dc) { void 0x0 === _0x3673b7 && (_0x3673b7 = 0x0), void 0x0 === _0x4a42dc && (_0x4a42dc = 0x0); var _0x42c1d0 = this['_gl'] , _0x258e12 = this['_getWebGLTextureType'](_0x4ec01['type']) , _0x591f15 = this['_getInternalFormat'](_0x4ec01['format']) , _0x2d83ec = this['_getRGBABufferInternalSizedFormat'](_0x4ec01['type'], _0x591f15) , _0x34959f = _0x4ec01['isCube'] ? _0x42c1d0['TEXTURE_CUBE_MAP'] : _0x42c1d0['TEXTURE_2D']; this['_bindTextureDirectly'](_0x34959f, _0x4ec01, !0x0), this['_unpackFlipY'](_0x4ec01['invertY']); var _0x8d8e42 = _0x42c1d0['TEXTURE_2D']; _0x4ec01['isCube'] && (_0x8d8e42 = _0x42c1d0['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0x3673b7), _0x42c1d0['texImage2D'](_0x8d8e42, _0x4a42dc, _0x2d83ec, _0x591f15, _0x258e12, _0x4a9840), this['_bindTextureDirectly'](_0x34959f, null, !0x0); } , _0x2b36d6['prototype']['_setCubeMapTextureParams'] = function(_0x30255a) { var _0x47fbfb = this['_gl']; _0x47fbfb['texParameteri'](_0x47fbfb['TEXTURE_CUBE_MAP'], _0x47fbfb['TEXTURE_MAG_FILTER'], _0x47fbfb['LINEAR']), _0x47fbfb['texParameteri'](_0x47fbfb['TEXTURE_CUBE_MAP'], _0x47fbfb['TEXTURE_MIN_FILTER'], _0x30255a ? _0x47fbfb['LINEAR_MIPMAP_LINEAR'] : _0x47fbfb['LINEAR']), _0x47fbfb['texParameteri'](_0x47fbfb['TEXTURE_CUBE_MAP'], _0x47fbfb['TEXTURE_WRAP_S'], _0x47fbfb['CLAMP_TO_EDGE']), _0x47fbfb['texParameteri'](_0x47fbfb['TEXTURE_CUBE_MAP'], _0x47fbfb['TEXTURE_WRAP_T'], _0x47fbfb['CLAMP_TO_EDGE']), this['_bindTextureDirectly'](_0x47fbfb['TEXTURE_CUBE_MAP'], null); } , _0x2b36d6['prototype']['createRawCubeTexture'] = function(_0x192db1, _0x4100a6, _0x5988bf, _0x5e2c72, _0x5ee5d2, _0x1fee01, _0x5adba5, _0x11f9de) { throw void 0x0 === _0x11f9de && (_0x11f9de = null), _0x51a360['a']['WarnImport']('Engine.RawTexture'); } , _0x2b36d6['prototype']['createRawTexture3D'] = function(_0x90b94a, _0x17737d, _0x3faadf, _0x30f309, _0x181089, _0x21e759, _0x23680b, _0x399c9d, _0x48fb3c, _0x36c2af) { throw void 0x0 === _0x48fb3c && (_0x48fb3c = null), void 0x0 === _0x36c2af && (_0x36c2af = _0x2b36d6['TEXTURETYPE_UNSIGNED_INT']), _0x51a360['a']['WarnImport']('Engine.RawTexture'); } , _0x2b36d6['prototype']['_prepareWebGLTextureContinuation'] = function(_0x244701, _0x50a532, _0x4630bf, _0x55a958, _0x45b257) { var _0xd2f7af = this['_gl']; if (_0xd2f7af) { var _0x3cb732 = this['_getSamplingParameters'](_0x45b257, !_0x4630bf); _0xd2f7af['texParameteri'](_0xd2f7af['TEXTURE_2D'], _0xd2f7af['TEXTURE_MAG_FILTER'], _0x3cb732['mag']), _0xd2f7af['texParameteri'](_0xd2f7af['TEXTURE_2D'], _0xd2f7af['TEXTURE_MIN_FILTER'], _0x3cb732['min']), _0x4630bf || _0x55a958 || _0xd2f7af['generateMipmap'](_0xd2f7af['TEXTURE_2D']), this['_bindTextureDirectly'](_0xd2f7af['TEXTURE_2D'], null), _0x50a532 && _0x50a532['_removePendingData'](_0x244701), _0x244701['onLoadedObservable']['notifyObservers'](_0x244701), _0x244701['onLoadedObservable']['clear'](); } } , _0x2b36d6['prototype']['_prepareWebGLTexture'] = function(_0x3394d0, _0x3fffe9, _0x42db3e, _0x8d2135, _0x52a6b7, _0x52e41d, _0xb0fb25, _0x972a56, _0x247bcb) { var _0x2c7990 = this; void 0x0 === _0x247bcb && (_0x247bcb = _0x2b36d6['TEXTURE_TRILINEAR_SAMPLINGMODE']); var _0x2abc47 = this['getCaps']()['maxTextureSize'] , _0x4d51b8 = Math['min'](_0x2abc47, this['needPOTTextures'] ? _0x49b495['h']['GetExponentOfTwo'](_0x42db3e, _0x2abc47) : _0x42db3e) , _0xb9a6a4 = Math['min'](_0x2abc47, this['needPOTTextures'] ? _0x49b495['h']['GetExponentOfTwo'](_0x8d2135, _0x2abc47) : _0x8d2135) , _0x278cde = this['_gl']; _0x278cde && (_0x3394d0['_webGLTexture'] ? (this['_bindTextureDirectly'](_0x278cde['TEXTURE_2D'], _0x3394d0, !0x0), this['_unpackFlipY'](void 0x0 === _0x52a6b7 || !!_0x52a6b7), _0x3394d0['baseWidth'] = _0x42db3e, _0x3394d0['baseHeight'] = _0x8d2135, _0x3394d0['width'] = _0x4d51b8, _0x3394d0['height'] = _0xb9a6a4, _0x3394d0['isReady'] = !0x0, _0x972a56(_0x4d51b8, _0xb9a6a4, function() { _0x2c7990['_prepareWebGLTextureContinuation'](_0x3394d0, _0x3fffe9, _0x52e41d, _0xb0fb25, _0x247bcb); }) || this['_prepareWebGLTextureContinuation'](_0x3394d0, _0x3fffe9, _0x52e41d, _0xb0fb25, _0x247bcb)) : _0x3fffe9 && _0x3fffe9['_removePendingData'](_0x3394d0)); } , _0x2b36d6['prototype']['_convertRGBtoRGBATextureData'] = function(_0xfa70ef, _0x26173b, _0x2b9798, _0x42ad62) { var _0x443b17; _0x443b17 = _0x42ad62 === _0x2b36d6['TEXTURETYPE_FLOAT'] ? new Float32Array(_0x26173b * _0x2b9798 * 0x4) : new Uint32Array(_0x26173b * _0x2b9798 * 0x4); for (var _0x4939a0 = 0x0; _0x4939a0 < _0x26173b; _0x4939a0++) for (var _0x46d66b = 0x0; _0x46d66b < _0x2b9798; _0x46d66b++) { var _0x1cba90 = 0x3 * (_0x46d66b * _0x26173b + _0x4939a0) , _0x52b542 = 0x4 * (_0x46d66b * _0x26173b + _0x4939a0); _0x443b17[_0x52b542 + 0x0] = _0xfa70ef[_0x1cba90 + 0x0], _0x443b17[_0x52b542 + 0x1] = _0xfa70ef[_0x1cba90 + 0x1], _0x443b17[_0x52b542 + 0x2] = _0xfa70ef[_0x1cba90 + 0x2], _0x443b17[_0x52b542 + 0x3] = 0x1; } return _0x443b17; } , _0x2b36d6['prototype']['_releaseFramebufferObjects'] = function(_0xd86db1) { var _0x2b4731 = this['_gl']; _0xd86db1['_framebuffer'] && (_0x2b4731['deleteFramebuffer'](_0xd86db1['_framebuffer']), _0xd86db1['_framebuffer'] = null), _0xd86db1['_depthStencilBuffer'] && (_0x2b4731['deleteRenderbuffer'](_0xd86db1['_depthStencilBuffer']), _0xd86db1['_depthStencilBuffer'] = null), _0xd86db1['_MSAAFramebuffer'] && (_0x2b4731['deleteFramebuffer'](_0xd86db1['_MSAAFramebuffer']), _0xd86db1['_MSAAFramebuffer'] = null), _0xd86db1['_MSAARenderBuffer'] && (_0x2b4731['deleteRenderbuffer'](_0xd86db1['_MSAARenderBuffer']), _0xd86db1['_MSAARenderBuffer'] = null); } , _0x2b36d6['prototype']['_releaseTexture'] = function(_0x4ce21a) { var _0x1e988b = this['_gl']; this['_releaseFramebufferObjects'](_0x4ce21a), _0x1e988b['deleteTexture'](_0x4ce21a['_webGLTexture']), this['unbindAllTextures'](); var _0x369ab6 = this['_internalTexturesCache']['indexOf'](_0x4ce21a); -0x1 !== _0x369ab6 && this['_internalTexturesCache']['splice'](_0x369ab6, 0x1), _0x4ce21a['_lodTextureHigh'] && _0x4ce21a['_lodTextureHigh']['dispose'](), _0x4ce21a['_lodTextureMid'] && _0x4ce21a['_lodTextureMid']['dispose'](), _0x4ce21a['_lodTextureLow'] && _0x4ce21a['_lodTextureLow']['dispose'](), this['scenes']['forEach'](function(_0x247da8) { _0x247da8['postProcesses']['forEach'](function(_0x3a8f71) { _0x3a8f71['_outputTexture'] == _0x4ce21a && (_0x3a8f71['_outputTexture'] = null); }), _0x247da8['cameras']['forEach'](function(_0x49c14a) { _0x49c14a['_postProcesses']['forEach'](function(_0xb56f39) { _0xb56f39 && _0xb56f39['_outputTexture'] == _0x4ce21a && (_0xb56f39['_outputTexture'] = null); }); }); }); } , _0x2b36d6['prototype']['setProgram'] = function(_0x32c1c1) { this['_currentProgram'] !== _0x32c1c1 && (this['_gl']['useProgram'](_0x32c1c1), this['_currentProgram'] = _0x32c1c1); } , _0x2b36d6['prototype']['bindSamplers'] = function(_0x1f1549) { var _0x3cb80e = _0x1f1549['getPipelineContext'](); this['setProgram'](_0x3cb80e['program']); for (var _0x8ee4a3 = _0x1f1549['getSamplers'](), _0xfa5e2e = 0x0; _0xfa5e2e < _0x8ee4a3['length']; _0xfa5e2e++) { var _0x1398ab = _0x1f1549['getUniform'](_0x8ee4a3[_0xfa5e2e]); _0x1398ab && (this['_boundUniforms'][_0xfa5e2e] = _0x1398ab); } this['_currentEffect'] = null; } , _0x2b36d6['prototype']['_activateCurrentTexture'] = function() { this['_currentTextureChannel'] !== this['_activeChannel'] && (this['_gl']['activeTexture'](this['_gl']['TEXTURE0'] + this['_activeChannel']), this['_currentTextureChannel'] = this['_activeChannel']); } , _0x2b36d6['prototype']['_bindTextureDirectly'] = function(_0x427a6c, _0x2da734, _0x993b4d, _0x254521) { void 0x0 === _0x993b4d && (_0x993b4d = !0x1), void 0x0 === _0x254521 && (_0x254521 = !0x1); var _0x51bae3 = !0x1 , _0x20dcc2 = _0x2da734 && _0x2da734['_associatedChannel'] > -0x1; return _0x993b4d && _0x20dcc2 && (this['_activeChannel'] = _0x2da734['_associatedChannel']), this['_boundTexturesCache'][this['_activeChannel']] !== _0x2da734 || _0x254521 ? (this['_activateCurrentTexture'](), _0x2da734 && _0x2da734['isMultiview'] ? this['_gl']['bindTexture'](_0x427a6c, _0x2da734 ? _0x2da734['_colorTextureArray'] : null) : this['_gl']['bindTexture'](_0x427a6c, _0x2da734 ? _0x2da734['_webGLTexture'] : null), this['_boundTexturesCache'][this['_activeChannel']] = _0x2da734, _0x2da734 && (_0x2da734['_associatedChannel'] = this['_activeChannel'])) : _0x993b4d && (_0x51bae3 = !0x0, this['_activateCurrentTexture']()), _0x20dcc2 && !_0x993b4d && this['_bindSamplerUniformToChannel'](_0x2da734['_associatedChannel'], this['_activeChannel']), _0x51bae3; } , _0x2b36d6['prototype']['_bindTexture'] = function(_0x3e090f, _0x1a8fb2) { void 0x0 !== _0x3e090f && (_0x1a8fb2 && (_0x1a8fb2['_associatedChannel'] = _0x3e090f), this['_activeChannel'] = _0x3e090f, this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], _0x1a8fb2)); } , _0x2b36d6['prototype']['setTextureFromPostProcess'] = function(_0x40b65c, _0x455b23) { this['_bindTexture'](_0x40b65c, _0x455b23 ? _0x455b23['_textures']['data'][_0x455b23['_currentRenderTextureInd']] : null); } , _0x2b36d6['prototype']['setTextureFromPostProcessOutput'] = function(_0x2236da, _0xf3775) { this['_bindTexture'](_0x2236da, _0xf3775 ? _0xf3775['_outputTexture'] : null); } , _0x2b36d6['prototype']['unbindAllTextures'] = function() { for (var _0x3c4e4b = 0x0; _0x3c4e4b < this['_maxSimultaneousTextures']; _0x3c4e4b++) this['_activeChannel'] = _0x3c4e4b, this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], null), this['_bindTextureDirectly'](this['_gl']['TEXTURE_CUBE_MAP'], null), this['webGLVersion'] > 0x1 && this['_bindTextureDirectly'](this['_gl']['TEXTURE_3D'], null); } , _0x2b36d6['prototype']['setTexture'] = function(_0x5cb8b3, _0x4dc0c8, _0x5078c5) { void 0x0 !== _0x5cb8b3 && (_0x4dc0c8 && (this['_boundUniforms'][_0x5cb8b3] = _0x4dc0c8), this['_setTexture'](_0x5cb8b3, _0x5078c5)); } , _0x2b36d6['prototype']['setDepthStencilTexture'] = function(_0x16fbe9, _0x471dba, _0xcb70e5) { void 0x0 !== _0x16fbe9 && (_0x471dba && (this['_boundUniforms'][_0x16fbe9] = _0x471dba), _0xcb70e5 && _0xcb70e5['depthStencilTexture'] ? this['_setTexture'](_0x16fbe9, _0xcb70e5, !0x1, !0x0) : this['_setTexture'](_0x16fbe9, null)); } , _0x2b36d6['prototype']['_bindSamplerUniformToChannel'] = function(_0xe813b3, _0x3848c6) { var _0x5318ac = this['_boundUniforms'][_0xe813b3]; _0x5318ac['_currentState'] !== _0x3848c6 && (this['_gl']['uniform1i'](_0x5318ac, _0x3848c6), _0x5318ac['_currentState'] = _0x3848c6); } , _0x2b36d6['prototype']['_getTextureWrapMode'] = function(_0x441f7e) { switch (_0x441f7e) { case _0x2b36d6['TEXTURE_WRAP_ADDRESSMODE']: return this['_gl']['REPEAT']; case _0x2b36d6['TEXTURE_CLAMP_ADDRESSMODE']: return this['_gl']['CLAMP_TO_EDGE']; case _0x2b36d6['TEXTURE_MIRROR_ADDRESSMODE']: return this['_gl']['MIRRORED_REPEAT']; } return this['_gl']['REPEAT']; } , _0x2b36d6['prototype']['_setTexture'] = function(_0x441f88, _0x296974, _0x48bc61, _0x28f10a) { if (void 0x0 === _0x48bc61 && (_0x48bc61 = !0x1), void 0x0 === _0x28f10a && (_0x28f10a = !0x1), !_0x296974) return null != this['_boundTexturesCache'][_0x441f88] && (this['_activeChannel'] = _0x441f88, this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], null), this['_bindTextureDirectly'](this['_gl']['TEXTURE_CUBE_MAP'], null), this['webGLVersion'] > 0x1 && this['_bindTextureDirectly'](this['_gl']['TEXTURE_3D'], null)), !0x1; if (_0x296974['video']) this['_activeChannel'] = _0x441f88, _0x296974['update'](); else if (_0x296974['delayLoadState'] === _0x2b36d6['DELAYLOADSTATE_NOTLOADED']) return _0x296974['delayLoad'](), !0x1; var _0x51d881; _0x51d881 = _0x28f10a ? _0x296974['depthStencilTexture'] : _0x296974['isReady']() ? _0x296974['getInternalTexture']() : _0x296974['isCube'] ? this['emptyCubeTexture'] : _0x296974['is3D'] ? this['emptyTexture3D'] : this['emptyTexture'], !_0x48bc61 && _0x51d881 && (_0x51d881['_associatedChannel'] = _0x441f88); var _0x464c04 = !0x0; if (this['_boundTexturesCache'][_0x441f88] === _0x51d881 && (_0x48bc61 || this['_bindSamplerUniformToChannel'](_0x51d881['_associatedChannel'], _0x441f88), _0x464c04 = !0x1), this['_activeChannel'] = _0x441f88, _0x51d881 && _0x51d881['isMultiview']) _0x464c04 && this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D_ARRAY'], _0x51d881, _0x48bc61); else if (_0x51d881 && _0x51d881['is3D']) _0x464c04 && this['_bindTextureDirectly'](this['_gl']['TEXTURE_3D'], _0x51d881, _0x48bc61), _0x51d881 && _0x51d881['_cachedWrapU'] !== _0x296974['wrapU'] && (_0x51d881['_cachedWrapU'] = _0x296974['wrapU'], this['_setTextureParameterInteger'](this['_gl']['TEXTURE_3D'], this['_gl']['TEXTURE_WRAP_S'], this['_getTextureWrapMode'](_0x296974['wrapU']), _0x51d881)), _0x51d881 && _0x51d881['_cachedWrapV'] !== _0x296974['wrapV'] && (_0x51d881['_cachedWrapV'] = _0x296974['wrapV'], this['_setTextureParameterInteger'](this['_gl']['TEXTURE_3D'], this['_gl']['TEXTURE_WRAP_T'], this['_getTextureWrapMode'](_0x296974['wrapV']), _0x51d881)), _0x51d881 && _0x51d881['_cachedWrapR'] !== _0x296974['wrapR'] && (_0x51d881['_cachedWrapR'] = _0x296974['wrapR'], this['_setTextureParameterInteger'](this['_gl']['TEXTURE_3D'], this['_gl']['TEXTURE_WRAP_R'], this['_getTextureWrapMode'](_0x296974['wrapR']), _0x51d881)), this['_setAnisotropicLevel'](this['_gl']['TEXTURE_3D'], _0x296974); else if (_0x51d881 && _0x51d881['isCube']) { if (_0x464c04 && this['_bindTextureDirectly'](this['_gl']['TEXTURE_CUBE_MAP'], _0x51d881, _0x48bc61), _0x51d881['_cachedCoordinatesMode'] !== _0x296974['coordinatesMode']) { _0x51d881['_cachedCoordinatesMode'] = _0x296974['coordinatesMode']; var _0x1c04bc = _0x296974['coordinatesMode'] !== _0x2b36d6['TEXTURE_CUBIC_MODE'] && _0x296974['coordinatesMode'] !== _0x2b36d6['TEXTURE_SKYBOX_MODE'] ? this['_gl']['REPEAT'] : this['_gl']['CLAMP_TO_EDGE']; this['_setTextureParameterInteger'](this['_gl']['TEXTURE_CUBE_MAP'], this['_gl']['TEXTURE_WRAP_S'], _0x1c04bc, _0x51d881), this['_setTextureParameterInteger'](this['_gl']['TEXTURE_CUBE_MAP'], this['_gl']['TEXTURE_WRAP_T'], _0x1c04bc); } this['_setAnisotropicLevel'](this['_gl']['TEXTURE_CUBE_MAP'], _0x296974); } else _0x464c04 && this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], _0x51d881, _0x48bc61), _0x51d881 && _0x51d881['_cachedWrapU'] !== _0x296974['wrapU'] && (_0x51d881['_cachedWrapU'] = _0x296974['wrapU'], this['_setTextureParameterInteger'](this['_gl']['TEXTURE_2D'], this['_gl']['TEXTURE_WRAP_S'], this['_getTextureWrapMode'](_0x296974['wrapU']), _0x51d881)), _0x51d881 && _0x51d881['_cachedWrapV'] !== _0x296974['wrapV'] && (_0x51d881['_cachedWrapV'] = _0x296974['wrapV'], this['_setTextureParameterInteger'](this['_gl']['TEXTURE_2D'], this['_gl']['TEXTURE_WRAP_T'], this['_getTextureWrapMode'](_0x296974['wrapV']), _0x51d881)), this['_setAnisotropicLevel'](this['_gl']['TEXTURE_2D'], _0x296974); return !0x0; } , _0x2b36d6['prototype']['setTextureArray'] = function(_0x586922, _0x3d8169, _0x196093) { if (void 0x0 !== _0x586922 && _0x3d8169) { this['_textureUnits'] && this['_textureUnits']['length'] === _0x196093['length'] || (this['_textureUnits'] = new Int32Array(_0x196093['length'])); for (var _0x59ae52 = 0x0; _0x59ae52 < _0x196093['length']; _0x59ae52++) { var _0xeb7c3c = _0x196093[_0x59ae52]['getInternalTexture'](); _0xeb7c3c ? (this['_textureUnits'][_0x586922 + _0x59ae52] = _0x586922 + _0x59ae52, _0xeb7c3c['_associatedChannel'] = _0x586922 + _0x59ae52) : this['_textureUnits'][_0x586922 + _0x59ae52] = -0x1; } this['_gl']['uniform1iv'](_0x3d8169, this['_textureUnits']); for (var _0x22f592 = 0x0; _0x22f592 < _0x196093['length']; _0x22f592++) this['_setTexture'](this['_textureUnits'][_0x22f592], _0x196093[_0x22f592], !0x0); } } , _0x2b36d6['prototype']['_setAnisotropicLevel'] = function(_0x1a743d, _0x46df7e) { var _0x24c2f2 = _0x46df7e['getInternalTexture'](); if (_0x24c2f2) { var _0x102b50 = this['_caps']['textureAnisotropicFilterExtension'] , _0x1127e2 = _0x46df7e['anisotropicFilteringLevel']; _0x24c2f2['samplingMode'] !== _0x2b36d6['TEXTURE_LINEAR_LINEAR_MIPNEAREST'] && _0x24c2f2['samplingMode'] !== _0x2b36d6['TEXTURE_LINEAR_LINEAR_MIPLINEAR'] && _0x24c2f2['samplingMode'] !== _0x2b36d6['TEXTURE_LINEAR_LINEAR'] && (_0x1127e2 = 0x1), _0x102b50 && _0x24c2f2['_cachedAnisotropicFilteringLevel'] !== _0x1127e2 && (this['_setTextureParameterFloat'](_0x1a743d, _0x102b50['TEXTURE_MAX_ANISOTROPY_EXT'], Math['min'](_0x1127e2, this['_caps']['maxAnisotropy']), _0x24c2f2), _0x24c2f2['_cachedAnisotropicFilteringLevel'] = _0x1127e2); } } , _0x2b36d6['prototype']['_setTextureParameterFloat'] = function(_0xc2b282, _0x457913, _0xe3096, _0x8c7555) { this['_bindTextureDirectly'](_0xc2b282, _0x8c7555, !0x0, !0x0), this['_gl']['texParameterf'](_0xc2b282, _0x457913, _0xe3096); } , _0x2b36d6['prototype']['_setTextureParameterInteger'] = function(_0x3c257d, _0x4c5d0b, _0x2ecc4e, _0x328fa8) { _0x328fa8 && this['_bindTextureDirectly'](_0x3c257d, _0x328fa8, !0x0, !0x0), this['_gl']['texParameteri'](_0x3c257d, _0x4c5d0b, _0x2ecc4e); } , _0x2b36d6['prototype']['readPixels'] = function(_0x512833, _0x4447be, _0x12699, _0x290436) { var _0x465b05 = new Uint8Array(_0x290436 * _0x12699 * 0x4); return this['_gl']['readPixels'](_0x512833, _0x4447be, _0x12699, _0x290436, this['_gl']['RGBA'], this['_gl']['UNSIGNED_BYTE'], _0x465b05), _0x465b05; } , _0x2b36d6['prototype']['addExternalData'] = function(_0x1147a2, _0xe9866b) { return this['_externalData'] || (this['_externalData'] = new _0x5de640['a']()), this['_externalData']['add'](_0x1147a2, _0xe9866b); } , _0x2b36d6['prototype']['getExternalData'] = function(_0x15eac2) { return this['_externalData'] || (this['_externalData'] = new _0x5de640['a']()), this['_externalData']['get'](_0x15eac2); } , _0x2b36d6['prototype']['getOrAddExternalDataWithFactory'] = function(_0x392945, _0x16b3fd) { return this['_externalData'] || (this['_externalData'] = new _0x5de640['a']()), this['_externalData']['getOrAddWithFactory'](_0x392945, _0x16b3fd); } , _0x2b36d6['prototype']['removeExternalData'] = function(_0x128408) { return this['_externalData'] || (this['_externalData'] = new _0x5de640['a']()), this['_externalData']['remove'](_0x128408); } , _0x2b36d6['prototype']['unbindAllAttributes'] = function() { if (this['_mustWipeVertexAttributes']) { this['_mustWipeVertexAttributes'] = !0x1; for (var _0x521553 = 0x0; _0x521553 < this['_caps']['maxVertexAttribs']; _0x521553++) this['_gl']['disableVertexAttribArray'](_0x521553), this['_vertexAttribArraysEnabled'][_0x521553] = !0x1, this['_currentBufferPointers'][_0x521553]['active'] = !0x1; } else { _0x521553 = 0x0; for (var _0x35cb9b = this['_vertexAttribArraysEnabled']['length']; _0x521553 < _0x35cb9b; _0x521553++) _0x521553 >= this['_caps']['maxVertexAttribs'] || !this['_vertexAttribArraysEnabled'][_0x521553] || (this['_gl']['disableVertexAttribArray'](_0x521553), this['_vertexAttribArraysEnabled'][_0x521553] = !0x1, this['_currentBufferPointers'][_0x521553]['active'] = !0x1); } } , _0x2b36d6['prototype']['releaseEffects'] = function() { for (var _0x5caddc in this['_compiledEffects']) { var _0xeb195a = this['_compiledEffects'][_0x5caddc]['getPipelineContext'](); this['_deletePipelineContext'](_0xeb195a); } this['_compiledEffects'] = {}; } , _0x2b36d6['prototype']['dispose'] = function() { for (this['hideLoadingUI'](), this['stopRenderLoop'](), this['onNewSceneAddedObservable']['clear'](); this['postProcesses']['length']; ) this['postProcesses'][0x0]['dispose'](); for (this['_emptyTexture'] && (this['_releaseTexture'](this['_emptyTexture']), this['_emptyTexture'] = null), this['_emptyCubeTexture'] && (this['_releaseTexture'](this['_emptyCubeTexture']), this['_emptyCubeTexture'] = null), this['_rescalePostProcess'] && this['_rescalePostProcess']['dispose'](); this['scenes']['length']; ) this['scenes'][0x0]['dispose'](); 0x1 === _0x2b36d6['Instances']['length'] && _0x2b36d6['audioEngine'] && _0x2b36d6['audioEngine']['dispose'](), this['releaseEffects'](), this['unbindAllAttributes'](), this['_boundUniforms'] = [], this['_dummyFramebuffer'] && this['_gl']['deleteFramebuffer'](this['_dummyFramebuffer']), this['disableVR'](), _0x28a362['a']['IsWindowObjectExist']() && (window['removeEventListener']('blur', this['_onBlur']), window['removeEventListener']('focus', this['_onFocus']), this['_renderingCanvas'] && (this['_renderingCanvas']['removeEventListener']('focus', this['_onCanvasFocus']), this['_renderingCanvas']['removeEventListener']('blur', this['_onCanvasBlur']), this['_renderingCanvas']['removeEventListener']('pointerout', this['_onCanvasPointerOut']), this['_doNotHandleContextLost'] || (this['_renderingCanvas']['removeEventListener']('webglcontextlost', this['_onContextLost']), this['_renderingCanvas']['removeEventListener']('webglcontextrestored', this['_onContextRestored']))), document['removeEventListener']('fullscreenchange', this['_onFullscreenChange']), document['removeEventListener']('mozfullscreenchange', this['_onFullscreenChange']), document['removeEventListener']('webkitfullscreenchange', this['_onFullscreenChange']), document['removeEventListener']('msfullscreenchange', this['_onFullscreenChange']), document['removeEventListener']('pointerlockchange', this['_onPointerLockChange']), document['removeEventListener']('mspointerlockchange', this['_onPointerLockChange']), document['removeEventListener']('mozpointerlockchange', this['_onPointerLockChange']), document['removeEventListener']('webkitpointerlockchange', this['_onPointerLockChange'])); var _0x16bdc3 = _0x2b36d6['Instances']['indexOf'](this); _0x16bdc3 >= 0x0 && _0x2b36d6['Instances']['splice'](_0x16bdc3, 0x1), this['_workingCanvas'] = null, this['_workingContext'] = null, this['_currentBufferPointers'] = [], this['_renderingCanvas'] = null, this['_currentProgram'] = null, this['_bindedRenderFunction'] = null, this['onResizeObservable']['clear'](), this['onCanvasBlurObservable']['clear'](), this['onCanvasFocusObservable']['clear'](), this['onCanvasPointerOutObservable']['clear'](), this['onBeginFrameObservable']['clear'](), this['onEndFrameObservable']['clear'](), _0x12c9c8['a']['ResetCache'](); for (var _0x5760dc = 0x0, _0x532e0e = this['_activeRequests']; _0x5760dc < _0x532e0e['length']; _0x5760dc++) { _0x532e0e[_0x5760dc]['abort'](); } } , _0x2b36d6['prototype']['displayLoadingUI'] = function() { if (_0x28a362['a']['IsWindowObjectExist']()) { var _0x1380ae = this['loadingScreen']; _0x1380ae && _0x1380ae['displayLoadingUI'](); } } , _0x2b36d6['prototype']['hideLoadingUI'] = function() { if (_0x28a362['a']['IsWindowObjectExist']()) { var _0x15ff11 = this['_loadingScreen']; _0x15ff11 && _0x15ff11['hideLoadingUI'](); } } , Object['defineProperty'](_0x2b36d6['prototype'], 'loadingScreen', { 'get': function() { return !this['_loadingScreen'] && this['_renderingCanvas'] && (this['_loadingScreen'] = _0x2b36d6['DefaultLoadingScreenFactory'](this['_renderingCanvas'])), this['_loadingScreen']; }, 'set': function(_0x4f75b9) { this['_loadingScreen'] = _0x4f75b9; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'loadingUIText', { 'set': function(_0x6d9ab6) { this['loadingScreen']['loadingUIText'] = _0x6d9ab6; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2b36d6['prototype'], 'loadingUIBackgroundColor', { 'set': function(_0x2cf608) { this['loadingScreen']['loadingUIBackgroundColor'] = _0x2cf608; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2b36d6['prototype']['attachContextLostEvent'] = function(_0x3de83c) { this['_renderingCanvas'] && this['_renderingCanvas']['addEventListener']('webglcontextlost', _0x3de83c, !0x1); } , _0x2b36d6['prototype']['attachContextRestoredEvent'] = function(_0x4fe557) { this['_renderingCanvas'] && this['_renderingCanvas']['addEventListener']('webglcontextrestored', _0x4fe557, !0x1); } , _0x2b36d6['prototype']['getVertexShaderSource'] = function(_0x29da81) { var _0x308b10 = this['_gl']['getAttachedShaders'](_0x29da81); return _0x308b10 ? this['_gl']['getShaderSource'](_0x308b10[0x0]) : null; } , _0x2b36d6['prototype']['getFragmentShaderSource'] = function(_0x23c483) { var _0xc1a85f = this['_gl']['getAttachedShaders'](_0x23c483); return _0xc1a85f ? this['_gl']['getShaderSource'](_0xc1a85f[0x1]) : null; } , _0x2b36d6['prototype']['getError'] = function() { return this['_gl']['getError'](); } , _0x2b36d6['prototype']['getFps'] = function() { return this['_fps']; } , _0x2b36d6['prototype']['getDeltaTime'] = function() { return this['_deltaTime']; } , _0x2b36d6['prototype']['_measureFps'] = function() { this['_performanceMonitor']['sampleFrame'](), this['_fps'] = this['_performanceMonitor']['averageFPS'], this['_deltaTime'] = this['_performanceMonitor']['instantaneousFrameTime'] || 0x0; } , _0x2b36d6['prototype']['_readTexturePixels'] = function(_0x2fb4ac, _0x32a639, _0x5c76c4, _0xc28b7d, _0x434c23, _0x260d1f) { void 0x0 === _0xc28b7d && (_0xc28b7d = -0x1), void 0x0 === _0x434c23 && (_0x434c23 = 0x0), void 0x0 === _0x260d1f && (_0x260d1f = null); var _0x4ab909 = this['_gl']; if (!this['_dummyFramebuffer']) { var _0x339313 = _0x4ab909['createFramebuffer'](); if (!_0x339313) throw new Error('Unable\x20to\x20create\x20dummy\x20framebuffer'); this['_dummyFramebuffer'] = _0x339313; } _0x4ab909['bindFramebuffer'](_0x4ab909['FRAMEBUFFER'], this['_dummyFramebuffer']), _0xc28b7d > -0x1 ? _0x4ab909['framebufferTexture2D'](_0x4ab909['FRAMEBUFFER'], _0x4ab909['COLOR_ATTACHMENT0'], _0x4ab909['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0xc28b7d, _0x2fb4ac['_webGLTexture'], _0x434c23) : _0x4ab909['framebufferTexture2D'](_0x4ab909['FRAMEBUFFER'], _0x4ab909['COLOR_ATTACHMENT0'], _0x4ab909['TEXTURE_2D'], _0x2fb4ac['_webGLTexture'], _0x434c23); var _0x431aa2 = void 0x0 !== _0x2fb4ac['type'] ? this['_getWebGLTextureType'](_0x2fb4ac['type']) : _0x4ab909['UNSIGNED_BYTE']; switch (_0x431aa2) { case _0x4ab909['UNSIGNED_BYTE']: _0x260d1f || (_0x260d1f = new Uint8Array(0x4 * _0x32a639 * _0x5c76c4)), _0x431aa2 = _0x4ab909['UNSIGNED_BYTE']; break; default: _0x260d1f || (_0x260d1f = new Float32Array(0x4 * _0x32a639 * _0x5c76c4)), _0x431aa2 = _0x4ab909['FLOAT']; } return _0x4ab909['readPixels'](0x0, 0x0, _0x32a639, _0x5c76c4, _0x4ab909['RGBA'], _0x431aa2, _0x260d1f), _0x4ab909['bindFramebuffer'](_0x4ab909['FRAMEBUFFER'], this['_currentFramebuffer']), _0x260d1f; } , _0x2b36d6['prototype']['_canRenderToFloatFramebuffer'] = function() { return this['_webGLVersion'] > 0x1 ? this['_caps']['colorBufferFloat'] : this['_canRenderToFramebuffer'](_0x2b36d6['TEXTURETYPE_FLOAT']); } , _0x2b36d6['prototype']['_canRenderToHalfFloatFramebuffer'] = function() { return this['_webGLVersion'] > 0x1 ? this['_caps']['colorBufferFloat'] : this['_canRenderToFramebuffer'](_0x2b36d6['TEXTURETYPE_HALF_FLOAT']); } , _0x2b36d6['prototype']['_canRenderToFramebuffer'] = function(_0xb2fa1f) { for (var _0x1723f9 = this['_gl']; _0x1723f9['getError']() !== _0x1723f9['NO_ERROR']; ) ; var _0xd7b077 = !0x0 , _0x49b127 = _0x1723f9['createTexture'](); _0x1723f9['bindTexture'](_0x1723f9['TEXTURE_2D'], _0x49b127), _0x1723f9['texImage2D'](_0x1723f9['TEXTURE_2D'], 0x0, this['_getRGBABufferInternalSizedFormat'](_0xb2fa1f), 0x1, 0x1, 0x0, _0x1723f9['RGBA'], this['_getWebGLTextureType'](_0xb2fa1f), null), _0x1723f9['texParameteri'](_0x1723f9['TEXTURE_2D'], _0x1723f9['TEXTURE_MIN_FILTER'], _0x1723f9['NEAREST']), _0x1723f9['texParameteri'](_0x1723f9['TEXTURE_2D'], _0x1723f9['TEXTURE_MAG_FILTER'], _0x1723f9['NEAREST']); var _0x4acbc7 = _0x1723f9['createFramebuffer'](); _0x1723f9['bindFramebuffer'](_0x1723f9['FRAMEBUFFER'], _0x4acbc7), _0x1723f9['framebufferTexture2D'](_0x1723f9['FRAMEBUFFER'], _0x1723f9['COLOR_ATTACHMENT0'], _0x1723f9['TEXTURE_2D'], _0x49b127, 0x0); var _0x32281a = _0x1723f9['checkFramebufferStatus'](_0x1723f9['FRAMEBUFFER']); if ((_0xd7b077 = (_0xd7b077 = _0xd7b077 && _0x32281a === _0x1723f9['FRAMEBUFFER_COMPLETE']) && _0x1723f9['getError']() === _0x1723f9['NO_ERROR']) && (_0x1723f9['clear'](_0x1723f9['COLOR_BUFFER_BIT']), _0xd7b077 = _0xd7b077 && _0x1723f9['getError']() === _0x1723f9['NO_ERROR']), _0xd7b077) { _0x1723f9['bindFramebuffer'](_0x1723f9['FRAMEBUFFER'], null); var _0x230ebc = _0x1723f9['RGBA'] , _0x3db60c = _0x1723f9['UNSIGNED_BYTE'] , _0xda9a51 = new Uint8Array(0x4); _0x1723f9['readPixels'](0x0, 0x0, 0x1, 0x1, _0x230ebc, _0x3db60c, _0xda9a51), _0xd7b077 = _0xd7b077 && _0x1723f9['getError']() === _0x1723f9['NO_ERROR']; } for (_0x1723f9['deleteTexture'](_0x49b127), _0x1723f9['deleteFramebuffer'](_0x4acbc7), _0x1723f9['bindFramebuffer'](_0x1723f9['FRAMEBUFFER'], null); !_0xd7b077 && _0x1723f9['getError']() !== _0x1723f9['NO_ERROR']; ) ; return _0xd7b077; } , _0x2b36d6['prototype']['_getWebGLTextureType'] = function(_0xb0dc2c) { if (0x1 === this['_webGLVersion']) { switch (_0xb0dc2c) { case _0x2b36d6['TEXTURETYPE_FLOAT']: return this['_gl']['FLOAT']; case _0x2b36d6['TEXTURETYPE_HALF_FLOAT']: return this['_gl']['HALF_FLOAT_OES']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_BYTE']: return this['_gl']['UNSIGNED_BYTE']; } return this['_gl']['UNSIGNED_BYTE']; } switch (_0xb0dc2c) { case _0x2b36d6['TEXTURETYPE_BYTE']: return this['_gl']['BYTE']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_BYTE']: return this['_gl']['UNSIGNED_BYTE']; case _0x2b36d6['TEXTURETYPE_SHORT']: return this['_gl']['SHORT']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT']: return this['_gl']['UNSIGNED_SHORT']; case _0x2b36d6['TEXTURETYPE_INT']: return this['_gl']['INT']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_INTEGER']: return this['_gl']['UNSIGNED_INT']; case _0x2b36d6['TEXTURETYPE_FLOAT']: return this['_gl']['FLOAT']; case _0x2b36d6['TEXTURETYPE_HALF_FLOAT']: return this['_gl']['HALF_FLOAT']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4']: return this['_gl']['UNSIGNED_SHORT_4_4_4_4']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1']: return this['_gl']['UNSIGNED_SHORT_5_5_5_1']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT_5_6_5']: return this['_gl']['UNSIGNED_SHORT_5_6_5']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV']: return this['_gl']['UNSIGNED_INT_2_10_10_10_REV']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_INT_24_8']: return this['_gl']['UNSIGNED_INT_24_8']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV']: return this['_gl']['UNSIGNED_INT_10F_11F_11F_REV']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV']: return this['_gl']['UNSIGNED_INT_5_9_9_9_REV']; case _0x2b36d6['TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV']: return this['_gl']['FLOAT_32_UNSIGNED_INT_24_8_REV']; } return this['_gl']['UNSIGNED_BYTE']; } , _0x2b36d6['prototype']['_getInternalFormat'] = function(_0x274b11) { var _0x42e461 = this['_gl']['RGBA']; switch (_0x274b11) { case _0x2b36d6['TEXTUREFORMAT_ALPHA']: _0x42e461 = this['_gl']['ALPHA']; break; case _0x2b36d6['TEXTUREFORMAT_LUMINANCE']: _0x42e461 = this['_gl']['LUMINANCE']; break; case _0x2b36d6['TEXTUREFORMAT_LUMINANCE_ALPHA']: _0x42e461 = this['_gl']['LUMINANCE_ALPHA']; break; case _0x2b36d6['TEXTUREFORMAT_RED']: _0x42e461 = this['_gl']['RED']; break; case _0x2b36d6['TEXTUREFORMAT_RG']: _0x42e461 = this['_gl']['RG']; break; case _0x2b36d6['TEXTUREFORMAT_RGB']: _0x42e461 = this['_gl']['RGB']; break; case _0x2b36d6['TEXTUREFORMAT_RGBA']: _0x42e461 = this['_gl']['RGBA']; } if (this['_webGLVersion'] > 0x1) switch (_0x274b11) { case _0x2b36d6['TEXTUREFORMAT_RED_INTEGER']: _0x42e461 = this['_gl']['RED_INTEGER']; break; case _0x2b36d6['TEXTUREFORMAT_RG_INTEGER']: _0x42e461 = this['_gl']['RG_INTEGER']; break; case _0x2b36d6['TEXTUREFORMAT_RGB_INTEGER']: _0x42e461 = this['_gl']['RGB_INTEGER']; break; case _0x2b36d6['TEXTUREFORMAT_RGBA_INTEGER']: _0x42e461 = this['_gl']['RGBA_INTEGER']; } return _0x42e461; } , _0x2b36d6['prototype']['_getRGBABufferInternalSizedFormat'] = function(_0x119918, _0x397327) { if (0x1 === this['_webGLVersion']) { if (void 0x0 !== _0x397327) switch (_0x397327) { case _0x2b36d6['TEXTUREFORMAT_ALPHA']: return this['_gl']['ALPHA']; case _0x2b36d6['TEXTUREFORMAT_LUMINANCE']: return this['_gl']['LUMINANCE']; case _0x2b36d6['TEXTUREFORMAT_LUMINANCE_ALPHA']: return this['_gl']['LUMINANCE_ALPHA']; } return this['_gl']['RGBA']; } switch (_0x119918) { case _0x2b36d6['TEXTURETYPE_BYTE']: switch (_0x397327) { case _0x2b36d6['TEXTUREFORMAT_RED']: return this['_gl']['R8_SNORM']; case _0x2b36d6['TEXTUREFORMAT_RG']: return this['_gl']['RG8_SNORM']; case _0x2b36d6['TEXTUREFORMAT_RGB']: return this['_gl']['RGB8_SNORM']; case _0x2b36d6['TEXTUREFORMAT_RED_INTEGER']: return this['_gl']['R8I']; case _0x2b36d6['TEXTUREFORMAT_RG_INTEGER']: return this['_gl']['RG8I']; case _0x2b36d6['TEXTUREFORMAT_RGB_INTEGER']: return this['_gl']['RGB8I']; case _0x2b36d6['TEXTUREFORMAT_RGBA_INTEGER']: return this['_gl']['RGBA8I']; default: return this['_gl']['RGBA8_SNORM']; } case _0x2b36d6['TEXTURETYPE_UNSIGNED_BYTE']: switch (_0x397327) { case _0x2b36d6['TEXTUREFORMAT_RED']: return this['_gl']['R8']; case _0x2b36d6['TEXTUREFORMAT_RG']: return this['_gl']['RG8']; case _0x2b36d6['TEXTUREFORMAT_RGB']: return this['_gl']['RGB8']; case _0x2b36d6['TEXTUREFORMAT_RGBA']: return this['_gl']['RGBA8']; case _0x2b36d6['TEXTUREFORMAT_RED_INTEGER']: return this['_gl']['R8UI']; case _0x2b36d6['TEXTUREFORMAT_RG_INTEGER']: return this['_gl']['RG8UI']; case _0x2b36d6['TEXTUREFORMAT_RGB_INTEGER']: return this['_gl']['RGB8UI']; case _0x2b36d6['TEXTUREFORMAT_RGBA_INTEGER']: return this['_gl']['RGBA8UI']; case _0x2b36d6['TEXTUREFORMAT_ALPHA']: return this['_gl']['ALPHA']; case _0x2b36d6['TEXTUREFORMAT_LUMINANCE']: return this['_gl']['LUMINANCE']; case _0x2b36d6['TEXTUREFORMAT_LUMINANCE_ALPHA']: return this['_gl']['LUMINANCE_ALPHA']; default: return this['_gl']['RGBA8']; } case _0x2b36d6['TEXTURETYPE_SHORT']: switch (_0x397327) { case _0x2b36d6['TEXTUREFORMAT_RED_INTEGER']: return this['_gl']['R16I']; case _0x2b36d6['TEXTUREFORMAT_RG_INTEGER']: return this['_gl']['RG16I']; case _0x2b36d6['TEXTUREFORMAT_RGB_INTEGER']: return this['_gl']['RGB16I']; case _0x2b36d6['TEXTUREFORMAT_RGBA_INTEGER']: default: return this['_gl']['RGBA16I']; } case _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT']: switch (_0x397327) { case _0x2b36d6['TEXTUREFORMAT_RED_INTEGER']: return this['_gl']['R16UI']; case _0x2b36d6['TEXTUREFORMAT_RG_INTEGER']: return this['_gl']['RG16UI']; case _0x2b36d6['TEXTUREFORMAT_RGB_INTEGER']: return this['_gl']['RGB16UI']; case _0x2b36d6['TEXTUREFORMAT_RGBA_INTEGER']: default: return this['_gl']['RGBA16UI']; } case _0x2b36d6['TEXTURETYPE_INT']: switch (_0x397327) { case _0x2b36d6['TEXTUREFORMAT_RED_INTEGER']: return this['_gl']['R32I']; case _0x2b36d6['TEXTUREFORMAT_RG_INTEGER']: return this['_gl']['RG32I']; case _0x2b36d6['TEXTUREFORMAT_RGB_INTEGER']: return this['_gl']['RGB32I']; case _0x2b36d6['TEXTUREFORMAT_RGBA_INTEGER']: default: return this['_gl']['RGBA32I']; } case _0x2b36d6['TEXTURETYPE_UNSIGNED_INTEGER']: switch (_0x397327) { case _0x2b36d6['TEXTUREFORMAT_RED_INTEGER']: return this['_gl']['R32UI']; case _0x2b36d6['TEXTUREFORMAT_RG_INTEGER']: return this['_gl']['RG32UI']; case _0x2b36d6['TEXTUREFORMAT_RGB_INTEGER']: return this['_gl']['RGB32UI']; case _0x2b36d6['TEXTUREFORMAT_RGBA_INTEGER']: default: return this['_gl']['RGBA32UI']; } case _0x2b36d6['TEXTURETYPE_FLOAT']: switch (_0x397327) { case _0x2b36d6['TEXTUREFORMAT_RED']: return this['_gl']['R32F']; case _0x2b36d6['TEXTUREFORMAT_RG']: return this['_gl']['RG32F']; case _0x2b36d6['TEXTUREFORMAT_RGB']: return this['_gl']['RGB32F']; case _0x2b36d6['TEXTUREFORMAT_RGBA']: default: return this['_gl']['RGBA32F']; } case _0x2b36d6['TEXTURETYPE_HALF_FLOAT']: switch (_0x397327) { case _0x2b36d6['TEXTUREFORMAT_RED']: return this['_gl']['R16F']; case _0x2b36d6['TEXTUREFORMAT_RG']: return this['_gl']['RG16F']; case _0x2b36d6['TEXTUREFORMAT_RGB']: return this['_gl']['RGB16F']; case _0x2b36d6['TEXTUREFORMAT_RGBA']: default: return this['_gl']['RGBA16F']; } case _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT_5_6_5']: return this['_gl']['RGB565']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV']: return this['_gl']['R11F_G11F_B10F']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV']: return this['_gl']['RGB9_E5']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4']: return this['_gl']['RGBA4']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1']: return this['_gl']['RGB5_A1']; case _0x2b36d6['TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV']: switch (_0x397327) { case _0x2b36d6['TEXTUREFORMAT_RGBA']: return this['_gl']['RGB10_A2']; case _0x2b36d6['TEXTUREFORMAT_RGBA_INTEGER']: return this['_gl']['RGB10_A2UI']; default: return this['_gl']['RGB10_A2']; } } return this['_gl']['RGBA8']; } , _0x2b36d6['prototype']['_getRGBAMultiSampleBufferFormat'] = function(_0x28738e) { return _0x28738e === _0x2b36d6['TEXTURETYPE_FLOAT'] ? this['_gl']['RGBA32F'] : _0x28738e === _0x2b36d6['TEXTURETYPE_HALF_FLOAT'] ? this['_gl']['RGBA16F'] : this['_gl']['RGBA8']; } , _0x2b36d6['prototype']['_loadFile'] = function(_0x48fc1d, _0x361ebc, _0x60a2e5, _0x1bf092, _0x1563cf, _0x23716d) { var _0x4d35e6 = this , _0x1b0722 = _0x49b495['h']['LoadFile'](_0x48fc1d, _0x361ebc, _0x60a2e5, _0x1bf092, _0x1563cf, _0x23716d); return this['_activeRequests']['push'](_0x1b0722), _0x1b0722['onCompleteObservable']['add'](function(_0x4139e2) { _0x4d35e6['_activeRequests']['splice'](_0x4d35e6['_activeRequests']['indexOf'](_0x4139e2), 0x1); }), _0x1b0722; } , _0x2b36d6['prototype']['_loadFileAsync'] = function(_0x24f537, _0x43e98d, _0x25d7d5) { var _0x5d7118 = this; return new Promise(function(_0x2f6069, _0x2ba725) { _0x5d7118['_loadFile'](_0x24f537, function(_0x4f0c4d) { _0x2f6069(_0x4f0c4d); }, void 0x0, _0x43e98d, _0x25d7d5, function(_0xf1e67b, _0x1fa024) { _0x2ba725(_0x1fa024); }); } ); } , _0x2b36d6['isSupported'] = function() { try { var _0x3fc701 = document['createElement']('canvas'); return null != (_0x3fc701['getContext']('webgl') || _0x3fc701['getContext']('experimental-webgl')) && !!window['WebGLRenderingContext']; } catch (_0x168441) { return !0x1; } } , _0x2b36d6['ExceptionList'] = [{ 'key': 'Chrome/63.0', 'capture': '63\x5c.0\x5c.3239\x5c.(\x5cd+)', 'captureConstraint': 0x6c, 'targets': ['uniformBuffer'] }, { 'key': 'Firefox/58', 'capture': null, 'captureConstraint': null, 'targets': ['uniformBuffer'] }, { 'key': 'Firefox/59', 'capture': null, 'captureConstraint': null, 'targets': ['uniformBuffer'] }, { 'key': 'Chrome/72.+?Mobile', 'capture': null, 'captureConstraint': null, 'targets': ['vao'] }, { 'key': 'Chrome/73.+?Mobile', 'capture': null, 'captureConstraint': null, 'targets': ['vao'] }, { 'key': 'Chrome/74.+?Mobile', 'capture': null, 'captureConstraint': null, 'targets': ['vao'] }, { 'key': 'Mac\x20OS.+Chrome/71', 'capture': null, 'captureConstraint': null, 'targets': ['vao'] }, { 'key': 'Mac\x20OS.+Chrome/72', 'capture': null, 'captureConstraint': null, 'targets': ['vao'] }], _0x2b36d6['_TextureLoaders'] = [], _0x2b36d6['ALPHA_DISABLE'] = _0x426396['a']['ALPHA_DISABLE'], _0x2b36d6['ALPHA_ADD'] = _0x426396['a']['ALPHA_ADD'], _0x2b36d6['ALPHA_COMBINE'] = _0x426396['a']['ALPHA_COMBINE'], _0x2b36d6['ALPHA_SUBTRACT'] = _0x426396['a']['ALPHA_SUBTRACT'], _0x2b36d6['ALPHA_MULTIPLY'] = _0x426396['a']['ALPHA_MULTIPLY'], _0x2b36d6['ALPHA_MAXIMIZED'] = _0x426396['a']['ALPHA_MAXIMIZED'], _0x2b36d6['ALPHA_ONEONE'] = _0x426396['a']['ALPHA_ONEONE'], _0x2b36d6['ALPHA_PREMULTIPLIED'] = _0x426396['a']['ALPHA_PREMULTIPLIED'], _0x2b36d6['ALPHA_PREMULTIPLIED_PORTERDUFF'] = _0x426396['a']['ALPHA_PREMULTIPLIED_PORTERDUFF'], _0x2b36d6['ALPHA_INTERPOLATE'] = _0x426396['a']['ALPHA_INTERPOLATE'], _0x2b36d6['ALPHA_SCREENMODE'] = _0x426396['a']['ALPHA_SCREENMODE'], _0x2b36d6['DELAYLOADSTATE_NONE'] = _0x426396['a']['DELAYLOADSTATE_NONE'], _0x2b36d6['DELAYLOADSTATE_LOADED'] = _0x426396['a']['DELAYLOADSTATE_LOADED'], _0x2b36d6['DELAYLOADSTATE_LOADING'] = _0x426396['a']['DELAYLOADSTATE_LOADING'], _0x2b36d6['DELAYLOADSTATE_NOTLOADED'] = _0x426396['a']['DELAYLOADSTATE_NOTLOADED'], _0x2b36d6['NEVER'] = _0x426396['a']['NEVER'], _0x2b36d6['ALWAYS'] = _0x426396['a']['ALWAYS'], _0x2b36d6['LESS'] = _0x426396['a']['LESS'], _0x2b36d6['EQUAL'] = _0x426396['a']['EQUAL'], _0x2b36d6['LEQUAL'] = _0x426396['a']['LEQUAL'], _0x2b36d6['GREATER'] = _0x426396['a']['GREATER'], _0x2b36d6['GEQUAL'] = _0x426396['a']['GEQUAL'], _0x2b36d6['NOTEQUAL'] = _0x426396['a']['NOTEQUAL'], _0x2b36d6['KEEP'] = _0x426396['a']['KEEP'], _0x2b36d6['REPLACE'] = _0x426396['a']['REPLACE'], _0x2b36d6['INCR'] = _0x426396['a']['INCR'], _0x2b36d6['DECR'] = _0x426396['a']['DECR'], _0x2b36d6['INVERT'] = _0x426396['a']['INVERT'], _0x2b36d6['INCR_WRAP'] = _0x426396['a']['INCR_WRAP'], _0x2b36d6['DECR_WRAP'] = _0x426396['a']['DECR_WRAP'], _0x2b36d6['TEXTURE_CLAMP_ADDRESSMODE'] = _0x426396['a']['TEXTURE_CLAMP_ADDRESSMODE'], _0x2b36d6['TEXTURE_WRAP_ADDRESSMODE'] = _0x426396['a']['TEXTURE_WRAP_ADDRESSMODE'], _0x2b36d6['TEXTURE_MIRROR_ADDRESSMODE'] = _0x426396['a']['TEXTURE_MIRROR_ADDRESSMODE'], _0x2b36d6['TEXTUREFORMAT_ALPHA'] = _0x426396['a']['TEXTUREFORMAT_ALPHA'], _0x2b36d6['TEXTUREFORMAT_LUMINANCE'] = _0x426396['a']['TEXTUREFORMAT_LUMINANCE'], _0x2b36d6['TEXTUREFORMAT_LUMINANCE_ALPHA'] = _0x426396['a']['TEXTUREFORMAT_LUMINANCE_ALPHA'], _0x2b36d6['TEXTUREFORMAT_RGB'] = _0x426396['a']['TEXTUREFORMAT_RGB'], _0x2b36d6['TEXTUREFORMAT_RGBA'] = _0x426396['a']['TEXTUREFORMAT_RGBA'], _0x2b36d6['TEXTUREFORMAT_RED'] = _0x426396['a']['TEXTUREFORMAT_RED'], _0x2b36d6['TEXTUREFORMAT_R'] = _0x426396['a']['TEXTUREFORMAT_R'], _0x2b36d6['TEXTUREFORMAT_RG'] = _0x426396['a']['TEXTUREFORMAT_RG'], _0x2b36d6['TEXTUREFORMAT_RED_INTEGER'] = _0x426396['a']['TEXTUREFORMAT_RED_INTEGER'], _0x2b36d6['TEXTUREFORMAT_R_INTEGER'] = _0x426396['a']['TEXTUREFORMAT_R_INTEGER'], _0x2b36d6['TEXTUREFORMAT_RG_INTEGER'] = _0x426396['a']['TEXTUREFORMAT_RG_INTEGER'], _0x2b36d6['TEXTUREFORMAT_RGB_INTEGER'] = _0x426396['a']['TEXTUREFORMAT_RGB_INTEGER'], _0x2b36d6['TEXTUREFORMAT_RGBA_INTEGER'] = _0x426396['a']['TEXTUREFORMAT_RGBA_INTEGER'], _0x2b36d6['TEXTURETYPE_UNSIGNED_BYTE'] = _0x426396['a']['TEXTURETYPE_UNSIGNED_BYTE'], _0x2b36d6['TEXTURETYPE_UNSIGNED_INT'] = _0x426396['a']['TEXTURETYPE_UNSIGNED_INT'], _0x2b36d6['TEXTURETYPE_FLOAT'] = _0x426396['a']['TEXTURETYPE_FLOAT'], _0x2b36d6['TEXTURETYPE_HALF_FLOAT'] = _0x426396['a']['TEXTURETYPE_HALF_FLOAT'], _0x2b36d6['TEXTURETYPE_BYTE'] = _0x426396['a']['TEXTURETYPE_BYTE'], _0x2b36d6['TEXTURETYPE_SHORT'] = _0x426396['a']['TEXTURETYPE_SHORT'], _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT'] = _0x426396['a']['TEXTURETYPE_UNSIGNED_SHORT'], _0x2b36d6['TEXTURETYPE_INT'] = _0x426396['a']['TEXTURETYPE_INT'], _0x2b36d6['TEXTURETYPE_UNSIGNED_INTEGER'] = _0x426396['a']['TEXTURETYPE_UNSIGNED_INTEGER'], _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4'] = _0x426396['a']['TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4'], _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1'] = _0x426396['a']['TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1'], _0x2b36d6['TEXTURETYPE_UNSIGNED_SHORT_5_6_5'] = _0x426396['a']['TEXTURETYPE_UNSIGNED_SHORT_5_6_5'], _0x2b36d6['TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV'] = _0x426396['a']['TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV'], _0x2b36d6['TEXTURETYPE_UNSIGNED_INT_24_8'] = _0x426396['a']['TEXTURETYPE_UNSIGNED_INT_24_8'], _0x2b36d6['TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV'] = _0x426396['a']['TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV'], _0x2b36d6['TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV'] = _0x426396['a']['TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV'], _0x2b36d6['TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV'] = _0x426396['a']['TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV'], _0x2b36d6['TEXTURE_NEAREST_SAMPLINGMODE'] = _0x426396['a']['TEXTURE_NEAREST_SAMPLINGMODE'], _0x2b36d6['TEXTURE_BILINEAR_SAMPLINGMODE'] = _0x426396['a']['TEXTURE_BILINEAR_SAMPLINGMODE'], _0x2b36d6['TEXTURE_TRILINEAR_SAMPLINGMODE'] = _0x426396['a']['TEXTURE_TRILINEAR_SAMPLINGMODE'], _0x2b36d6['TEXTURE_NEAREST_NEAREST_MIPLINEAR'] = _0x426396['a']['TEXTURE_NEAREST_NEAREST_MIPLINEAR'], _0x2b36d6['TEXTURE_LINEAR_LINEAR_MIPNEAREST'] = _0x426396['a']['TEXTURE_LINEAR_LINEAR_MIPNEAREST'], _0x2b36d6['TEXTURE_LINEAR_LINEAR_MIPLINEAR'] = _0x426396['a']['TEXTURE_LINEAR_LINEAR_MIPLINEAR'], _0x2b36d6['TEXTURE_NEAREST_NEAREST_MIPNEAREST'] = _0x426396['a']['TEXTURE_NEAREST_NEAREST_MIPNEAREST'], _0x2b36d6['TEXTURE_NEAREST_LINEAR_MIPNEAREST'] = _0x426396['a']['TEXTURE_NEAREST_LINEAR_MIPNEAREST'], _0x2b36d6['TEXTURE_NEAREST_LINEAR_MIPLINEAR'] = _0x426396['a']['TEXTURE_NEAREST_LINEAR_MIPLINEAR'], _0x2b36d6['TEXTURE_NEAREST_LINEAR'] = _0x426396['a']['TEXTURE_NEAREST_LINEAR'], _0x2b36d6['TEXTURE_NEAREST_NEAREST'] = _0x426396['a']['TEXTURE_NEAREST_NEAREST'], _0x2b36d6['TEXTURE_LINEAR_NEAREST_MIPNEAREST'] = _0x426396['a']['TEXTURE_LINEAR_NEAREST_MIPNEAREST'], _0x2b36d6['TEXTURE_LINEAR_NEAREST_MIPLINEAR'] = _0x426396['a']['TEXTURE_LINEAR_NEAREST_MIPLINEAR'], _0x2b36d6['TEXTURE_LINEAR_LINEAR'] = _0x426396['a']['TEXTURE_LINEAR_LINEAR'], _0x2b36d6['TEXTURE_LINEAR_NEAREST'] = _0x426396['a']['TEXTURE_LINEAR_NEAREST'], _0x2b36d6['TEXTURE_EXPLICIT_MODE'] = _0x426396['a']['TEXTURE_EXPLICIT_MODE'], _0x2b36d6['TEXTURE_SPHERICAL_MODE'] = _0x426396['a']['TEXTURE_SPHERICAL_MODE'], _0x2b36d6['TEXTURE_PLANAR_MODE'] = _0x426396['a']['TEXTURE_PLANAR_MODE'], _0x2b36d6['TEXTURE_CUBIC_MODE'] = _0x426396['a']['TEXTURE_CUBIC_MODE'], _0x2b36d6['TEXTURE_PROJECTION_MODE'] = _0x426396['a']['TEXTURE_PROJECTION_MODE'], _0x2b36d6['TEXTURE_SKYBOX_MODE'] = _0x426396['a']['TEXTURE_SKYBOX_MODE'], _0x2b36d6['TEXTURE_INVCUBIC_MODE'] = _0x426396['a']['TEXTURE_INVCUBIC_MODE'], _0x2b36d6['TEXTURE_EQUIRECTANGULAR_MODE'] = _0x426396['a']['TEXTURE_EQUIRECTANGULAR_MODE'], _0x2b36d6['TEXTURE_FIXED_EQUIRECTANGULAR_MODE'] = _0x426396['a']['TEXTURE_FIXED_EQUIRECTANGULAR_MODE'], _0x2b36d6['TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE'] = _0x426396['a']['TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE'], _0x2b36d6['SCALEMODE_FLOOR'] = _0x426396['a']['SCALEMODE_FLOOR'], _0x2b36d6['SCALEMODE_NEAREST'] = _0x426396['a']['SCALEMODE_NEAREST'], _0x2b36d6['SCALEMODE_CEILING'] = _0x426396['a']['SCALEMODE_CEILING'], _0x2b36d6['CollisionsEpsilon'] = 0.001, _0x2b36d6['_RescalePostProcessFactory'] = null, _0x2b36d6; }(); } , function(_0x5e243e, _0x2a4895, _0x21dd48) { 'use strict'; _0x21dd48['d'](_0x2a4895, 'b', function() { return _0x327997; }), _0x21dd48['d'](_0x2a4895, 'c', function() { return _0x52cde7; }), _0x21dd48['d'](_0x2a4895, 'a', function() { return _0x3674a1; }); var _0x59331c = _0x21dd48(0x1) , _0xb02aff = _0x21dd48(0x8) , _0xf44b3e = _0x21dd48(0x9) , _0x23f3e2 = _0x21dd48(0x20) , _0xfac2e0 = _0x21dd48(0x1d) , _0x564b55 = _0x21dd48(0x0) , _0x3de53f = _0x21dd48(0x19) , _0x566195 = _0x21dd48(0x4) , _0x3321ce = _0x21dd48(0xd) , _0x3ce75b = _0x21dd48(0x39) , _0x223115 = _0x21dd48(0x18) , _0x1d85ce = _0x21dd48(0x31) , _0x580b71 = _0x21dd48(0x2b) , _0x5df3c0 = _0x21dd48(0x14) , _0x15c00 = _0x21dd48(0x42) , _0x38d900 = _0x21dd48(0x37) , _0x11dda0 = _0x21dd48(0x3) , _0x16d985 = _0x21dd48(0x2) , _0x651ae7 = _0x21dd48(0x6) , _0x4d4b99 = _0x21dd48(0x16) , _0x38b7f6 = _0x21dd48(0x13) , _0x44d4b1 = _0x21dd48(0xe) , _0x2a61b7 = _0x21dd48(0x6e) , _0x327997 = function() { return function() {} ; }() , _0x3376b6 = function() { return function() { this['visibleInstances'] = {}, this['batchCache'] = new _0x52cde7(), this['instancesBufferSize'] = 0x800; } ; }() , _0x52cde7 = function() { return function() { this['mustReturn'] = !0x1, this['visibleInstances'] = new Array(), this['renderSelf'] = new Array(), this['hardwareInstancedRendering'] = new Array(); } ; }() , _0x117976 = function() { return function() { this['_areNormalsFrozen'] = !0x1, this['_source'] = null, this['meshMap'] = null, this['_preActivateId'] = -0x1, this['_LODLevels'] = new Array(), this['_morphTargetManager'] = null; } ; }() , _0x3674a1 = function(_0xeba31b) { function _0x4dc7f5(_0x16fdbf, _0x365c23, _0x67b2d7, _0x4e7f06, _0x4f424e, _0x1fefab) { void 0x0 === _0x365c23 && (_0x365c23 = null), void 0x0 === _0x67b2d7 && (_0x67b2d7 = null), void 0x0 === _0x4e7f06 && (_0x4e7f06 = null), void 0x0 === _0x1fefab && (_0x1fefab = !0x0); var _0x1bedec = _0xeba31b['call'](this, _0x16fdbf, _0x365c23) || this; if (_0x1bedec['_internalMeshDataInfo'] = new _0x117976(), _0x1bedec['delayLoadState'] = _0x11dda0['a']['DELAYLOADSTATE_NONE'], _0x1bedec['instances'] = new Array(), _0x1bedec['_creationDataStorage'] = null, _0x1bedec['_geometry'] = null, _0x1bedec['_instanceDataStorage'] = new _0x3376b6(), _0x1bedec['_effectiveMaterial'] = null, _0x1bedec['_shouldGenerateFlatShading'] = !0x1, _0x1bedec['_originalBuilderSideOrientation'] = _0x4dc7f5['DEFAULTSIDE'], _0x1bedec['overrideMaterialSideOrientation'] = null, _0x365c23 = _0x1bedec['getScene'](), _0x4e7f06) { if (_0x4e7f06['_geometry'] && _0x4e7f06['_geometry']['applyToMesh'](_0x1bedec), _0x23f3e2['a']['DeepCopy'](_0x4e7f06, _0x1bedec, ['name', 'material', 'skeleton', 'instances', 'parent', 'uniqueId', 'source', 'metadata', 'hasLODLevels', 'geometry', 'isBlocked', 'areNormalsFrozen', 'onBeforeDrawObservable', 'onBeforeRenderObservable', 'onAfterRenderObservable', 'onBeforeDraw', 'onAfterWorldMatrixUpdateObservable', 'onCollideObservable', 'onCollisionPositionChangeObservable', 'onRebuildObservable', 'onDisposeObservable'], ['_poseMatrix']), _0x1bedec['_internalMeshDataInfo']['_source'] = _0x4e7f06, _0x365c23['useClonedMeshhMap'] && (_0x4e7f06['_internalMeshDataInfo']['meshMap'] || (_0x4e7f06['_internalMeshDataInfo']['meshMap'] = {}), _0x4e7f06['_internalMeshDataInfo']['meshMap'][_0x1bedec['uniqueId']] = _0x1bedec), _0x1bedec['_originalBuilderSideOrientation'] = _0x4e7f06['_originalBuilderSideOrientation'], _0x1bedec['_creationDataStorage'] = _0x4e7f06['_creationDataStorage'], _0x4e7f06['_ranges']) { var _0x1c858f = _0x4e7f06['_ranges']; for (var _0x16fdbf in _0x1c858f) _0x1c858f['hasOwnProperty'](_0x16fdbf) && _0x1c858f[_0x16fdbf] && _0x1bedec['createAnimationRange'](_0x16fdbf, _0x1c858f[_0x16fdbf]['from'], _0x1c858f[_0x16fdbf]['to']); } var _0xff5af3; if (_0x4e7f06['metadata'] && _0x4e7f06['metadata']['clone'] ? _0x1bedec['metadata'] = _0x4e7f06['metadata']['clone']() : _0x1bedec['metadata'] = _0x4e7f06['metadata'], _0xfac2e0['a'] && _0xfac2e0['a']['HasTags'](_0x4e7f06) && _0xfac2e0['a']['AddTagsTo'](_0x1bedec, _0xfac2e0['a']['GetTags'](_0x4e7f06, !0x0)), _0x1bedec['parent'] = _0x4e7f06['parent'], _0x1bedec['setPivotMatrix'](_0x4e7f06['getPivotMatrix']()), _0x1bedec['id'] = _0x16fdbf + '.' + _0x4e7f06['id'], _0x1bedec['material'] = _0x4e7f06['material'], !_0x4f424e) for (var _0x2056d3 = _0x4e7f06['getDescendants'](!0x0), _0x7a136d = 0x0; _0x7a136d < _0x2056d3['length']; _0x7a136d++) { var _0x40aeef = _0x2056d3[_0x7a136d]; _0x40aeef['clone'] && _0x40aeef['clone'](_0x16fdbf + '.' + _0x40aeef['name'], _0x1bedec); } if (_0x365c23['getPhysicsEngine']) { var _0x1695c9 = _0x365c23['getPhysicsEngine'](); if (_0x1fefab && _0x1695c9) { var _0x5e70bc = _0x1695c9['getImpostorForPhysicsObject'](_0x4e7f06); _0x5e70bc && (_0x1bedec['physicsImpostor'] = _0x5e70bc['clone'](_0x1bedec)); } } for (_0xff5af3 = 0x0; _0xff5af3 < _0x365c23['particleSystems']['length']; _0xff5af3++) { var _0x12c481 = _0x365c23['particleSystems'][_0xff5af3]; _0x12c481['emitter'] === _0x4e7f06 && _0x12c481['clone'](_0x12c481['name'], _0x1bedec); } _0x1bedec['refreshBoundingInfo'](), _0x1bedec['computeWorldMatrix'](!0x0); } return null !== _0x67b2d7 && (_0x1bedec['parent'] = _0x67b2d7), _0x1bedec['_instanceDataStorage']['hardwareInstancedRendering'] = _0x1bedec['getEngine']()['getCaps']()['instancedArrays'], _0x1bedec; } return _0x59331c['d'](_0x4dc7f5, _0xeba31b), _0x4dc7f5['_GetDefaultSideOrientation'] = function(_0xdfc60b) { return _0xdfc60b || _0x4dc7f5['FRONTSIDE']; } , Object['defineProperty'](_0x4dc7f5['prototype'], 'onBeforeRenderObservable', { 'get': function() { return this['_internalMeshDataInfo']['_onBeforeRenderObservable'] || (this['_internalMeshDataInfo']['_onBeforeRenderObservable'] = new _0xb02aff['c']()), this['_internalMeshDataInfo']['_onBeforeRenderObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dc7f5['prototype'], 'onBeforeBindObservable', { 'get': function() { return this['_internalMeshDataInfo']['_onBeforeBindObservable'] || (this['_internalMeshDataInfo']['_onBeforeBindObservable'] = new _0xb02aff['c']()), this['_internalMeshDataInfo']['_onBeforeBindObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dc7f5['prototype'], 'onAfterRenderObservable', { 'get': function() { return this['_internalMeshDataInfo']['_onAfterRenderObservable'] || (this['_internalMeshDataInfo']['_onAfterRenderObservable'] = new _0xb02aff['c']()), this['_internalMeshDataInfo']['_onAfterRenderObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dc7f5['prototype'], 'onBeforeDrawObservable', { 'get': function() { return this['_internalMeshDataInfo']['_onBeforeDrawObservable'] || (this['_internalMeshDataInfo']['_onBeforeDrawObservable'] = new _0xb02aff['c']()), this['_internalMeshDataInfo']['_onBeforeDrawObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dc7f5['prototype'], 'onBeforeDraw', { 'set': function(_0x143f79) { this['_onBeforeDrawObserver'] && this['onBeforeDrawObservable']['remove'](this['_onBeforeDrawObserver']), this['_onBeforeDrawObserver'] = this['onBeforeDrawObservable']['add'](_0x143f79); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dc7f5['prototype'], 'morphTargetManager', { 'get': function() { return this['_internalMeshDataInfo']['_morphTargetManager']; }, 'set': function(_0x57c8b7) { this['_internalMeshDataInfo']['_morphTargetManager'] !== _0x57c8b7 && (this['_internalMeshDataInfo']['_morphTargetManager'] = _0x57c8b7, this['_syncGeometryWithMorphTargetManager']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dc7f5['prototype'], 'source', { 'get': function() { return this['_internalMeshDataInfo']['_source']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dc7f5['prototype'], 'isUnIndexed', { 'get': function() { return this['_unIndexed']; }, 'set': function(_0x1fcdad) { this['_unIndexed'] !== _0x1fcdad && (this['_unIndexed'] = _0x1fcdad, this['_markSubMeshesAsAttributesDirty']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4dc7f5['prototype']['getClassName'] = function() { return 'Mesh'; } , Object['defineProperty'](_0x4dc7f5['prototype'], '_isMesh', { 'get': function() { return !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4dc7f5['prototype']['toString'] = function(_0x4a3a3f) { var _0x132cd6 = _0xeba31b['prototype']['toString']['call'](this, _0x4a3a3f); if (_0x132cd6 += ',\x20n\x20vertices:\x20' + this['getTotalVertices'](), _0x132cd6 += ',\x20parent:\x20' + (this['_waitingParentId'] ? this['_waitingParentId'] : this['parent'] ? this['parent']['name'] : 'NONE'), this['animations']) for (var _0x3a47c0 = 0x0; _0x3a47c0 < this['animations']['length']; _0x3a47c0++) _0x132cd6 += ',\x20animation[0]:\x20' + this['animations'][_0x3a47c0]['toString'](_0x4a3a3f); if (_0x4a3a3f) if (this['_geometry']) { var _0x36a1b7 = this['getIndices']() , _0x2aa141 = this['getVerticesData'](_0x566195['b']['PositionKind']); _0x2aa141 && _0x36a1b7 && (_0x132cd6 += ',\x20flat\x20shading:\x20' + (_0x2aa141['length'] / 0x3 === _0x36a1b7['length'] ? 'YES' : 'NO')); } else _0x132cd6 += ',\x20flat\x20shading:\x20UNKNOWN'; return _0x132cd6; } , _0x4dc7f5['prototype']['_unBindEffect'] = function() { _0xeba31b['prototype']['_unBindEffect']['call'](this); for (var _0x46c797 = 0x0, _0x19dec8 = this['instances']; _0x46c797 < _0x19dec8['length']; _0x46c797++) { _0x19dec8[_0x46c797]['_unBindEffect'](); } } , Object['defineProperty'](_0x4dc7f5['prototype'], 'hasLODLevels', { 'get': function() { return this['_internalMeshDataInfo']['_LODLevels']['length'] > 0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4dc7f5['prototype']['getLODLevels'] = function() { return this['_internalMeshDataInfo']['_LODLevels']; } , _0x4dc7f5['prototype']['_sortLODLevels'] = function() { this['_internalMeshDataInfo']['_LODLevels']['sort'](function(_0x516fc1, _0x4c4598) { return _0x516fc1['distance'] < _0x4c4598['distance'] ? 0x1 : _0x516fc1['distance'] > _0x4c4598['distance'] ? -0x1 : 0x0; }); } , _0x4dc7f5['prototype']['addLODLevel'] = function(_0x3dec20, _0x25f915) { if (_0x25f915 && _0x25f915['_masterMesh']) return _0x651ae7['a']['Warn']('You\x20cannot\x20use\x20a\x20mesh\x20as\x20LOD\x20level\x20twice'), this; var _0x5d1583 = new _0x2a61b7['a'](_0x3dec20,_0x25f915); return this['_internalMeshDataInfo']['_LODLevels']['push'](_0x5d1583), _0x25f915 && (_0x25f915['_masterMesh'] = this), this['_sortLODLevels'](), this; } , _0x4dc7f5['prototype']['getLODLevelAtDistance'] = function(_0x48bf30) { for (var _0xff1b5a = this['_internalMeshDataInfo'], _0x2f293f = 0x0; _0x2f293f < _0xff1b5a['_LODLevels']['length']; _0x2f293f++) { var _0x53dd8c = _0xff1b5a['_LODLevels'][_0x2f293f]; if (_0x53dd8c['distance'] === _0x48bf30) return _0x53dd8c['mesh']; } return null; } , _0x4dc7f5['prototype']['removeLODLevel'] = function(_0x94d6f3) { for (var _0x52059d = this['_internalMeshDataInfo'], _0x2a25d0 = 0x0; _0x2a25d0 < _0x52059d['_LODLevels']['length']; _0x2a25d0++) _0x52059d['_LODLevels'][_0x2a25d0]['mesh'] === _0x94d6f3 && (_0x52059d['_LODLevels']['splice'](_0x2a25d0, 0x1), _0x94d6f3 && (_0x94d6f3['_masterMesh'] = null)); return this['_sortLODLevels'](), this; } , _0x4dc7f5['prototype']['getLOD'] = function(_0x3b58c5, _0x1c0890) { var _0x301f6, _0x362e3b = this['_internalMeshDataInfo']; if (!_0x362e3b['_LODLevels'] || 0x0 === _0x362e3b['_LODLevels']['length']) return this; _0x1c0890 ? _0x301f6 = _0x1c0890 : _0x301f6 = this['getBoundingInfo']()['boundingSphere']; var _0x547ec7 = _0x301f6['centerWorld']['subtract'](_0x3b58c5['globalPosition'])['length'](); if (_0x362e3b['_LODLevels'][_0x362e3b['_LODLevels']['length'] - 0x1]['distance'] > _0x547ec7) return this['onLODLevelSelection'] && this['onLODLevelSelection'](_0x547ec7, this, _0x362e3b['_LODLevels'][_0x362e3b['_LODLevels']['length'] - 0x1]['mesh']), this; for (var _0x17c737 = 0x0; _0x17c737 < _0x362e3b['_LODLevels']['length']; _0x17c737++) { var _0x549d0a = _0x362e3b['_LODLevels'][_0x17c737]; if (_0x549d0a['distance'] < _0x547ec7) return _0x549d0a['mesh'] && (_0x549d0a['mesh']['_preActivate'](), _0x549d0a['mesh']['_updateSubMeshesBoundingInfo'](this['worldMatrixFromCache'])), this['onLODLevelSelection'] && this['onLODLevelSelection'](_0x547ec7, this, _0x549d0a['mesh']), _0x549d0a['mesh']; } return this['onLODLevelSelection'] && this['onLODLevelSelection'](_0x547ec7, this, this), this; } , Object['defineProperty'](_0x4dc7f5['prototype'], 'geometry', { 'get': function() { return this['_geometry']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4dc7f5['prototype']['getTotalVertices'] = function() { return null === this['_geometry'] || void 0x0 === this['_geometry'] ? 0x0 : this['_geometry']['getTotalVertices'](); } , _0x4dc7f5['prototype']['getVerticesData'] = function(_0x8d3ebd, _0x5a58ba, _0x4c4291) { return this['_geometry'] ? this['_geometry']['getVerticesData'](_0x8d3ebd, _0x5a58ba, _0x4c4291) : null; } , _0x4dc7f5['prototype']['getVertexBuffer'] = function(_0x4e2bb4) { return this['_geometry'] ? this['_geometry']['getVertexBuffer'](_0x4e2bb4) : null; } , _0x4dc7f5['prototype']['isVerticesDataPresent'] = function(_0x4aa81d) { return this['_geometry'] ? this['_geometry']['isVerticesDataPresent'](_0x4aa81d) : !!this['_delayInfo'] && -0x1 !== this['_delayInfo']['indexOf'](_0x4aa81d); } , _0x4dc7f5['prototype']['isVertexBufferUpdatable'] = function(_0x8768f5) { return this['_geometry'] ? this['_geometry']['isVertexBufferUpdatable'](_0x8768f5) : !!this['_delayInfo'] && -0x1 !== this['_delayInfo']['indexOf'](_0x8768f5); } , _0x4dc7f5['prototype']['getVerticesDataKinds'] = function() { if (!this['_geometry']) { var _0x97c86a = new Array(); return this['_delayInfo'] && this['_delayInfo']['forEach'](function(_0x5164cd) { _0x97c86a['push'](_0x5164cd); }), _0x97c86a; } return this['_geometry']['getVerticesDataKinds'](); } , _0x4dc7f5['prototype']['getTotalIndices'] = function() { return this['_geometry'] ? this['_geometry']['getTotalIndices']() : 0x0; } , _0x4dc7f5['prototype']['getIndices'] = function(_0x5e2073, _0x24ea1c) { return this['_geometry'] ? this['_geometry']['getIndices'](_0x5e2073, _0x24ea1c) : []; } , Object['defineProperty'](_0x4dc7f5['prototype'], 'isBlocked', { 'get': function() { return null !== this['_masterMesh'] && void 0x0 !== this['_masterMesh']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4dc7f5['prototype']['isReady'] = function(_0x1daf28, _0x34d234) { if (void 0x0 === _0x1daf28 && (_0x1daf28 = !0x1), void 0x0 === _0x34d234 && (_0x34d234 = !0x1), this['delayLoadState'] === _0x11dda0['a']['DELAYLOADSTATE_LOADING']) return !0x1; if (!_0xeba31b['prototype']['isReady']['call'](this, _0x1daf28)) return !0x1; if (!this['subMeshes'] || 0x0 === this['subMeshes']['length']) return !0x0; if (!_0x1daf28) return !0x0; var _0x37a502 = this['getEngine']() , _0x17d0d8 = this['getScene']() , _0x1db781 = _0x34d234 || _0x37a502['getCaps']()['instancedArrays'] && this['instances']['length'] > 0x0; this['computeWorldMatrix'](); var _0x4ddb85 = this['material'] || _0x17d0d8['defaultMaterial']; if (_0x4ddb85) if (_0x4ddb85['_storeEffectOnSubMeshes']) for (var _0x5f132d = 0x0, _0x3a6134 = this['subMeshes']; _0x5f132d < _0x3a6134['length']; _0x5f132d++) { var _0xda5923 = (_0x417e3a = _0x3a6134[_0x5f132d])['getMaterial'](); if (_0xda5923) if (_0xda5923['_storeEffectOnSubMeshes']) { if (!_0xda5923['isReadyForSubMesh'](this, _0x417e3a, _0x1db781)) return !0x1; } else if (!_0xda5923['isReady'](this, _0x1db781)) return !0x1; } else if (!_0x4ddb85['isReady'](this, _0x1db781)) return !0x1; for (var _0xba3dad = 0x0, _0x5ce27e = this['lightSources']; _0xba3dad < _0x5ce27e['length']; _0xba3dad++) { var _0x2d7f60 = _0x5ce27e[_0xba3dad]['getShadowGenerator'](); if (_0x2d7f60) for (var _0x28b94a = 0x0, _0x3b2ef7 = this['subMeshes']; _0x28b94a < _0x3b2ef7['length']; _0x28b94a++) { var _0x417e3a = _0x3b2ef7[_0x28b94a]; if (!_0x2d7f60['isReady'](_0x417e3a, _0x1db781)) return !0x1; } } for (var _0x172bb0 = 0x0, _0xa1f162 = this['_internalMeshDataInfo']['_LODLevels']; _0x172bb0 < _0xa1f162['length']; _0x172bb0++) { var _0x145437 = _0xa1f162[_0x172bb0]; if (_0x145437['mesh'] && !_0x145437['mesh']['isReady'](_0x1db781)) return !0x1; } return !0x0; } , Object['defineProperty'](_0x4dc7f5['prototype'], 'areNormalsFrozen', { 'get': function() { return this['_internalMeshDataInfo']['_areNormalsFrozen']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4dc7f5['prototype']['freezeNormals'] = function() { return this['_internalMeshDataInfo']['_areNormalsFrozen'] = !0x0, this; } , _0x4dc7f5['prototype']['unfreezeNormals'] = function() { return this['_internalMeshDataInfo']['_areNormalsFrozen'] = !0x1, this; } , Object['defineProperty'](_0x4dc7f5['prototype'], 'overridenInstanceCount', { 'set': function(_0x37a7d4) { this['_instanceDataStorage']['overridenInstanceCount'] = _0x37a7d4; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4dc7f5['prototype']['_preActivate'] = function() { var _0x2e9c11 = this['_internalMeshDataInfo'] , _0xffd390 = this['getScene']()['getRenderId'](); return _0x2e9c11['_preActivateId'] === _0xffd390 ? this : (_0x2e9c11['_preActivateId'] = _0xffd390, this['_instanceDataStorage']['visibleInstances'] = null, this); } , _0x4dc7f5['prototype']['_preActivateForIntermediateRendering'] = function(_0x1a0024) { return this['_instanceDataStorage']['visibleInstances'] && (this['_instanceDataStorage']['visibleInstances']['intermediateDefaultRenderId'] = _0x1a0024), this; } , _0x4dc7f5['prototype']['_registerInstanceForRenderId'] = function(_0x311972, _0x34ca1f) { return this['_instanceDataStorage']['visibleInstances'] || (this['_instanceDataStorage']['visibleInstances'] = { 'defaultRenderId': _0x34ca1f, 'selfDefaultRenderId': this['_renderId'] }), this['_instanceDataStorage']['visibleInstances'][_0x34ca1f] || (this['_instanceDataStorage']['visibleInstances'][_0x34ca1f] = new Array()), this['_instanceDataStorage']['visibleInstances'][_0x34ca1f]['push'](_0x311972), this; } , _0x4dc7f5['prototype']['refreshBoundingInfo'] = function(_0x1e349f) { if (void 0x0 === _0x1e349f && (_0x1e349f = !0x1), this['_boundingInfo'] && this['_boundingInfo']['isLocked']) return this; var _0x439c5e = this['geometry'] ? this['geometry']['boundingBias'] : null; return this['_refreshBoundingInfo'](this['_getPositionData'](_0x1e349f), _0x439c5e), this; } , _0x4dc7f5['prototype']['_createGlobalSubMesh'] = function(_0x287e33) { var _0x7d32f3 = this['getTotalVertices'](); if (!_0x7d32f3 || !this['getIndices']()) return null; if (this['subMeshes'] && this['subMeshes']['length'] > 0x0) { var _0x3485b4 = this['getIndices'](); if (!_0x3485b4) return null; var _0x5d15bc = _0x3485b4['length'] , _0x9e26d4 = !0x1; if (_0x287e33) _0x9e26d4 = !0x0; else for (var _0x5daed3 = 0x0, _0x489246 = this['subMeshes']; _0x5daed3 < _0x489246['length']; _0x5daed3++) { var _0x665433 = _0x489246[_0x5daed3]; if (_0x665433['indexStart'] + _0x665433['indexCount'] >= _0x5d15bc) { _0x9e26d4 = !0x0; break; } if (_0x665433['verticesStart'] + _0x665433['verticesCount'] >= _0x7d32f3) { _0x9e26d4 = !0x0; break; } } if (!_0x9e26d4) return this['subMeshes'][0x0]; } return this['releaseSubMeshes'](), new _0x1d85ce['b'](0x0,0x0,_0x7d32f3,0x0,this['getTotalIndices'](),this); } , _0x4dc7f5['prototype']['subdivide'] = function(_0xd82318) { if (!(_0xd82318 < 0x1)) { for (var _0x40e4d2 = this['getTotalIndices'](), _0x14e2f6 = _0x40e4d2 / _0xd82318 | 0x0, _0x1272c4 = 0x0; _0x14e2f6 % 0x3 != 0x0; ) _0x14e2f6++; this['releaseSubMeshes'](); for (var _0x148fa9 = 0x0; _0x148fa9 < _0xd82318 && !(_0x1272c4 >= _0x40e4d2); _0x148fa9++) _0x1d85ce['b']['CreateFromIndices'](0x0, _0x1272c4, Math['min'](_0x14e2f6, _0x40e4d2 - _0x1272c4), this), _0x1272c4 += _0x14e2f6; this['synchronizeInstances'](); } } , _0x4dc7f5['prototype']['setVerticesData'] = function(_0x33b281, _0x3dd074, _0x5dd33f, _0x248c4e) { if (void 0x0 === _0x5dd33f && (_0x5dd33f = !0x1), this['_geometry']) this['_geometry']['setVerticesData'](_0x33b281, _0x3dd074, _0x5dd33f, _0x248c4e); else { var _0x4c8fd5 = new _0x3321ce['a'](); _0x4c8fd5['set'](_0x3dd074, _0x33b281); var _0x5ccf5e = this['getScene'](); new _0x3ce75b['a'](_0x3ce75b['a']['RandomId'](),_0x5ccf5e,_0x4c8fd5,_0x5dd33f,this); } return this; } , _0x4dc7f5['prototype']['markVerticesDataAsUpdatable'] = function(_0x595e02, _0xa86740) { void 0x0 === _0xa86740 && (_0xa86740 = !0x0); var _0x523df0 = this['getVertexBuffer'](_0x595e02); _0x523df0 && _0x523df0['isUpdatable']() !== _0xa86740 && this['setVerticesData'](_0x595e02, this['getVerticesData'](_0x595e02), _0xa86740); } , _0x4dc7f5['prototype']['setVerticesBuffer'] = function(_0x539acf) { return this['_geometry'] || (this['_geometry'] = _0x3ce75b['a']['CreateGeometryForMesh'](this)), this['_geometry']['setVerticesBuffer'](_0x539acf), this; } , _0x4dc7f5['prototype']['updateVerticesData'] = function(_0x228bab, _0x4e9f3a, _0x366a1b, _0x1e8c43) { return this['_geometry'] ? (_0x1e8c43 ? (this['makeGeometryUnique'](), this['updateVerticesData'](_0x228bab, _0x4e9f3a, _0x366a1b, !0x1)) : this['_geometry']['updateVerticesData'](_0x228bab, _0x4e9f3a, _0x366a1b), this) : this; } , _0x4dc7f5['prototype']['updateMeshPositions'] = function(_0x6785b, _0x5d6c58) { void 0x0 === _0x5d6c58 && (_0x5d6c58 = !0x0); var _0x5393d5 = this['getVerticesData'](_0x566195['b']['PositionKind']); if (!_0x5393d5) return this; if (_0x6785b(_0x5393d5), this['updateVerticesData'](_0x566195['b']['PositionKind'], _0x5393d5, !0x1, !0x1), _0x5d6c58) { var _0x44d3d9 = this['getIndices']() , _0x1a0a23 = this['getVerticesData'](_0x566195['b']['NormalKind']); if (!_0x1a0a23) return this; _0x3321ce['a']['ComputeNormals'](_0x5393d5, _0x44d3d9, _0x1a0a23), this['updateVerticesData'](_0x566195['b']['NormalKind'], _0x1a0a23, !0x1, !0x1); } return this; } , _0x4dc7f5['prototype']['makeGeometryUnique'] = function() { if (!this['_geometry']) return this; var _0x576451 = this['_geometry'] , _0x1aeaab = this['_geometry']['copy'](_0x3ce75b['a']['RandomId']()); return _0x576451['releaseForMesh'](this, !0x0), _0x1aeaab['applyToMesh'](this), this; } , _0x4dc7f5['prototype']['setIndices'] = function(_0x5377a7, _0x56f515, _0x3a1c01) { if (void 0x0 === _0x56f515 && (_0x56f515 = null), void 0x0 === _0x3a1c01 && (_0x3a1c01 = !0x1), this['_geometry']) this['_geometry']['setIndices'](_0x5377a7, _0x56f515, _0x3a1c01); else { var _0x5928f1 = new _0x3321ce['a'](); _0x5928f1['indices'] = _0x5377a7; var _0xa6fdf5 = this['getScene'](); new _0x3ce75b['a'](_0x3ce75b['a']['RandomId'](),_0xa6fdf5,_0x5928f1,_0x3a1c01,this); } return this; } , _0x4dc7f5['prototype']['updateIndices'] = function(_0x41ade5, _0x526872, _0xc16626) { return void 0x0 === _0xc16626 && (_0xc16626 = !0x1), this['_geometry'] ? (this['_geometry']['updateIndices'](_0x41ade5, _0x526872, _0xc16626), this) : this; } , _0x4dc7f5['prototype']['toLeftHanded'] = function() { return this['_geometry'] ? (this['_geometry']['toLeftHanded'](), this) : this; } , _0x4dc7f5['prototype']['_bind'] = function(_0x3b5c01, _0x568c03, _0x5b89f8) { if (!this['_geometry']) return this; var _0x3106b3, _0x353872 = this['getScene']()['getEngine'](); if (this['_unIndexed']) _0x3106b3 = null; else switch (_0x5b89f8) { case _0x5df3c0['a']['PointFillMode']: _0x3106b3 = null; break; case _0x5df3c0['a']['WireFrameFillMode']: _0x3106b3 = _0x3b5c01['_getLinesIndexBuffer'](this['getIndices'](), _0x353872); break; default: case _0x5df3c0['a']['TriangleFillMode']: _0x3106b3 = this['_geometry']['getIndexBuffer'](); } return this['_geometry']['_bind'](_0x568c03, _0x3106b3), this; } , _0x4dc7f5['prototype']['_draw'] = function(_0x12eadb, _0x201522, _0x9c204d) { if (!this['_geometry'] || !this['_geometry']['getVertexBuffers']() || !this['_unIndexed'] && !this['_geometry']['getIndexBuffer']()) return this; this['_internalMeshDataInfo']['_onBeforeDrawObservable'] && this['_internalMeshDataInfo']['_onBeforeDrawObservable']['notifyObservers'](this); var _0xd81396 = this['getScene']()['getEngine'](); return this['_unIndexed'] || _0x201522 == _0x5df3c0['a']['PointFillMode'] ? _0xd81396['drawArraysType'](_0x201522, _0x12eadb['verticesStart'], _0x12eadb['verticesCount'], _0x9c204d) : _0x201522 == _0x5df3c0['a']['WireFrameFillMode'] ? _0xd81396['drawElementsType'](_0x201522, 0x0, _0x12eadb['_linesIndexCount'], _0x9c204d) : _0xd81396['drawElementsType'](_0x201522, _0x12eadb['indexStart'], _0x12eadb['indexCount'], _0x9c204d), this; } , _0x4dc7f5['prototype']['registerBeforeRender'] = function(_0x1e3ffb) { return this['onBeforeRenderObservable']['add'](_0x1e3ffb), this; } , _0x4dc7f5['prototype']['unregisterBeforeRender'] = function(_0x192e08) { return this['onBeforeRenderObservable']['removeCallback'](_0x192e08), this; } , _0x4dc7f5['prototype']['registerAfterRender'] = function(_0x2d935b) { return this['onAfterRenderObservable']['add'](_0x2d935b), this; } , _0x4dc7f5['prototype']['unregisterAfterRender'] = function(_0x39e1f7) { return this['onAfterRenderObservable']['removeCallback'](_0x39e1f7), this; } , _0x4dc7f5['prototype']['_getInstancesRenderList'] = function(_0x12fb0c) { if (this['_instanceDataStorage']['isFrozen'] && this['_instanceDataStorage']['previousBatch']) return this['_instanceDataStorage']['previousBatch']; var _0xa5f95e = this['getScene']() , _0xddc567 = _0xa5f95e['_isInIntermediateRendering']() , _0x312922 = _0xddc567 ? this['_internalAbstractMeshDataInfo']['_onlyForInstancesIntermediate'] : this['_internalAbstractMeshDataInfo']['_onlyForInstances'] , _0x119af6 = this['_instanceDataStorage']['batchCache']; if (_0x119af6['mustReturn'] = !0x1, _0x119af6['renderSelf'][_0x12fb0c] = !_0x312922 && this['isEnabled']() && this['isVisible'], _0x119af6['visibleInstances'][_0x12fb0c] = null, this['_instanceDataStorage']['visibleInstances']) { var _0xd1f4e8 = this['_instanceDataStorage']['visibleInstances'] , _0x4fc555 = _0xa5f95e['getRenderId']() , _0xd0fdf8 = _0xddc567 ? _0xd1f4e8['intermediateDefaultRenderId'] : _0xd1f4e8['defaultRenderId']; _0x119af6['visibleInstances'][_0x12fb0c] = _0xd1f4e8[_0x4fc555], !_0x119af6['visibleInstances'][_0x12fb0c] && _0xd0fdf8 && (_0x119af6['visibleInstances'][_0x12fb0c] = _0xd1f4e8[_0xd0fdf8]); } return _0x119af6['hardwareInstancedRendering'][_0x12fb0c] = this['_instanceDataStorage']['hardwareInstancedRendering'] && null !== _0x119af6['visibleInstances'][_0x12fb0c] && void 0x0 !== _0x119af6['visibleInstances'][_0x12fb0c], this['_instanceDataStorage']['previousBatch'] = _0x119af6, _0x119af6; } , _0x4dc7f5['prototype']['_renderWithInstances'] = function(_0x56c84a, _0x32866e, _0xf79983, _0xc4e8ae, _0x5c0937) { var _0x31b806 = _0xf79983['visibleInstances'][_0x56c84a['_id']]; if (!_0x31b806) return this; for (var _0x24a9c1 = this['_instanceDataStorage'], _0x7c9209 = _0x24a9c1['instancesBufferSize'], _0x1f7902 = _0x24a9c1['instancesBuffer'], _0x52bd4f = 0x10 * (_0x31b806['length'] + 0x1) * 0x4; _0x24a9c1['instancesBufferSize'] < _0x52bd4f; ) _0x24a9c1['instancesBufferSize'] *= 0x2; _0x24a9c1['instancesData'] && _0x7c9209 == _0x24a9c1['instancesBufferSize'] || (_0x24a9c1['instancesData'] = new Float32Array(_0x24a9c1['instancesBufferSize'] / 0x4)); var _0x55df87 = 0x0 , _0x5247aa = 0x0 , _0x4e3995 = this['_effectiveMesh']['getWorldMatrix'](); if (_0xf79983['renderSelf'][_0x56c84a['_id']] && (_0x4e3995['copyToArray'](_0x24a9c1['instancesData'], _0x55df87), _0x55df87 += 0x10, _0x5247aa++), _0x31b806) for (var _0x407c3f = 0x0; _0x407c3f < _0x31b806['length']; _0x407c3f++) { _0x31b806[_0x407c3f]['getWorldMatrix']()['copyToArray'](_0x24a9c1['instancesData'], _0x55df87), _0x55df87 += 0x10, _0x5247aa++; } return _0x1f7902 && _0x7c9209 == _0x24a9c1['instancesBufferSize'] ? _0x1f7902['updateDirectly'](_0x24a9c1['instancesData'], 0x0, _0x5247aa) : (_0x1f7902 && _0x1f7902['dispose'](), _0x1f7902 = new _0x566195['a'](_0x5c0937,_0x24a9c1['instancesData'],!0x0,0x10,!0x1,!0x0), _0x24a9c1['instancesBuffer'] = _0x1f7902, this['setVerticesBuffer'](_0x1f7902['createVertexBuffer']('world0', 0x0, 0x4)), this['setVerticesBuffer'](_0x1f7902['createVertexBuffer']('world1', 0x4, 0x4)), this['setVerticesBuffer'](_0x1f7902['createVertexBuffer']('world2', 0x8, 0x4)), this['setVerticesBuffer'](_0x1f7902['createVertexBuffer']('world3', 0xc, 0x4))), this['_bind'](_0x56c84a, _0xc4e8ae, _0x32866e), this['_draw'](_0x56c84a, _0x32866e, _0x5247aa), _0x5c0937['unbindInstanceAttributes'](), this; } , _0x4dc7f5['prototype']['_processRendering'] = function(_0x7d1be7, _0x4a3d56, _0xa4e727, _0x4ca3ab, _0x249a13, _0x5eb230, _0x237907) { var _0x4e955d = this['getScene']()['getEngine'](); if (_0x249a13) this['_renderWithInstances'](_0x7d1be7, _0xa4e727, _0x4ca3ab, _0x4a3d56, _0x4e955d); else { _0x4ca3ab['renderSelf'][_0x7d1be7['_id']] && (_0x5eb230 && _0x5eb230(!0x1, this['_effectiveMesh']['getWorldMatrix'](), _0x237907), this['_draw'](_0x7d1be7, _0xa4e727, this['_instanceDataStorage']['overridenInstanceCount'])); var _0x3e5442 = _0x4ca3ab['visibleInstances'][_0x7d1be7['_id']]; if (_0x3e5442) for (var _0x4c9fca = 0x0; _0x4c9fca < _0x3e5442['length']; _0x4c9fca++) { var _0x77d047 = _0x3e5442[_0x4c9fca]['getWorldMatrix'](); _0x5eb230 && _0x5eb230(!0x0, _0x77d047, _0x237907), this['_draw'](_0x7d1be7, _0xa4e727); } } return this; } , _0x4dc7f5['prototype']['_freeze'] = function() { if (this['_instanceDataStorage']['isFrozen'] = !0x0, this['subMeshes']) for (var _0x1883a1 = 0x0; _0x1883a1 < this['subMeshes']['length']; _0x1883a1++) this['_getInstancesRenderList'](_0x1883a1); } , _0x4dc7f5['prototype']['_unFreeze'] = function() { this['_instanceDataStorage']['isFrozen'] = !0x1; } , _0x4dc7f5['prototype']['render'] = function(_0xb820e9, _0x5c98dc) { var _0x49d5b8 = this['getScene'](); if (_0x49d5b8['_isInIntermediateRendering']() ? this['_internalAbstractMeshDataInfo']['_isActiveIntermediate'] = !0x1 : this['_internalAbstractMeshDataInfo']['_isActive'] = !0x1, this['_checkOcclusionQuery']()) return this; var _0xbca256 = this['_getInstancesRenderList'](_0xb820e9['_id']); if (_0xbca256['mustReturn']) return this; if (!this['_geometry'] || !this['_geometry']['getVertexBuffers']() || !this['_unIndexed'] && !this['_geometry']['getIndexBuffer']()) return this; this['_internalMeshDataInfo']['_onBeforeRenderObservable'] && this['_internalMeshDataInfo']['_onBeforeRenderObservable']['notifyObservers'](this); var _0x4b97df, _0x38e9de = _0x49d5b8['getEngine'](), _0x18f125 = _0xbca256['hardwareInstancedRendering'][_0xb820e9['_id']], _0xb392ad = this['_instanceDataStorage'], _0x1a4839 = _0xb820e9['getMaterial'](); if (!_0x1a4839) return this; if (!_0xb392ad['isFrozen'] || !this['_effectiveMaterial'] || this['_effectiveMaterial'] !== _0x1a4839) if (this['_effectiveMaterial'] = _0x1a4839, this['_effectiveMaterial']['_storeEffectOnSubMeshes']) { if (!this['_effectiveMaterial']['isReadyForSubMesh'](this, _0xb820e9, _0x18f125)) return this; } else if (!this['_effectiveMaterial']['isReady'](this, _0x18f125)) return this; _0x5c98dc && _0x38e9de['setAlphaMode'](this['_effectiveMaterial']['alphaMode']); for (var _0x414333 = 0x0, _0x3a8b82 = _0x49d5b8['_beforeRenderingMeshStage']; _0x414333 < _0x3a8b82['length']; _0x414333++) { _0x3a8b82[_0x414333]['action'](this, _0xb820e9, _0xbca256); } if (!(_0x4b97df = this['_effectiveMaterial']['_storeEffectOnSubMeshes'] ? _0xb820e9['effect'] : this['_effectiveMaterial']['getEffect']())) return this; var _0x5d3bfe, _0x733a92 = this['_effectiveMesh']; _0xb392ad['isFrozen'] ? _0x5d3bfe = _0xb392ad['sideOrientation'] : (null == (_0x5d3bfe = this['overrideMaterialSideOrientation']) && (_0x5d3bfe = this['_effectiveMaterial']['sideOrientation'], _0x733a92['_getWorldMatrixDeterminant']() < 0x0 && (_0x5d3bfe = _0x5d3bfe === _0x5df3c0['a']['ClockWiseSideOrientation'] ? _0x5df3c0['a']['CounterClockWiseSideOrientation'] : _0x5df3c0['a']['ClockWiseSideOrientation'])), _0xb392ad['sideOrientation'] = _0x5d3bfe); var _0x2da0bc = this['_effectiveMaterial']['_preBind'](_0x4b97df, _0x5d3bfe); this['_effectiveMaterial']['forceDepthWrite'] && _0x38e9de['setDepthWrite'](!0x0); var _0x4053df = _0x49d5b8['forcePointsCloud'] ? _0x5df3c0['a']['PointFillMode'] : _0x49d5b8['forceWireframe'] ? _0x5df3c0['a']['WireFrameFillMode'] : this['_effectiveMaterial']['fillMode']; this['_internalMeshDataInfo']['_onBeforeBindObservable'] && this['_internalMeshDataInfo']['_onBeforeBindObservable']['notifyObservers'](this), _0x18f125 || this['_bind'](_0xb820e9, _0x4b97df, _0x4053df); var _0x38220f = _0x733a92['getWorldMatrix'](); this['_effectiveMaterial']['_storeEffectOnSubMeshes'] ? this['_effectiveMaterial']['bindForSubMesh'](_0x38220f, this, _0xb820e9) : this['_effectiveMaterial']['bind'](_0x38220f, this), !this['_effectiveMaterial']['backFaceCulling'] && this['_effectiveMaterial']['separateCullingPass'] && (_0x38e9de['setState'](!0x0, this['_effectiveMaterial']['zOffset'], !0x1, !_0x2da0bc), this['_processRendering'](_0xb820e9, _0x4b97df, _0x4053df, _0xbca256, _0x18f125, this['_onBeforeDraw'], this['_effectiveMaterial']), _0x38e9de['setState'](!0x0, this['_effectiveMaterial']['zOffset'], !0x1, _0x2da0bc)), this['_processRendering'](_0xb820e9, _0x4b97df, _0x4053df, _0xbca256, _0x18f125, this['_onBeforeDraw'], this['_effectiveMaterial']), this['_effectiveMaterial']['unbind'](); for (var _0x2e0ed5 = 0x0, _0x147d4e = _0x49d5b8['_afterRenderingMeshStage']; _0x2e0ed5 < _0x147d4e['length']; _0x2e0ed5++) { _0x147d4e[_0x2e0ed5]['action'](this, _0xb820e9, _0xbca256); } return this['_internalMeshDataInfo']['_onAfterRenderObservable'] && this['_internalMeshDataInfo']['_onAfterRenderObservable']['notifyObservers'](this), this; } , _0x4dc7f5['prototype']['_onBeforeDraw'] = function(_0x2ca62f, _0x52a100, _0x2b19b9) { _0x2ca62f && _0x2b19b9 && _0x2b19b9['bindOnlyWorldMatrix'](_0x52a100); } , _0x4dc7f5['prototype']['cleanMatrixWeights'] = function() { this['isVerticesDataPresent'](_0x566195['b']['MatricesWeightsKind']) && (this['isVerticesDataPresent'](_0x566195['b']['MatricesWeightsExtraKind']) ? this['normalizeSkinWeightsAndExtra']() : this['normalizeSkinFourWeights']()); } , _0x4dc7f5['prototype']['normalizeSkinFourWeights'] = function() { for (var _0x286f77 = this['getVerticesData'](_0x566195['b']['MatricesWeightsKind']), _0x2248f5 = _0x286f77['length'], _0x12694c = 0x0; _0x12694c < _0x2248f5; _0x12694c += 0x4) { var _0x4fdef4 = _0x286f77[_0x12694c] + _0x286f77[_0x12694c + 0x1] + _0x286f77[_0x12694c + 0x2] + _0x286f77[_0x12694c + 0x3]; if (0x0 === _0x4fdef4) _0x286f77[_0x12694c] = 0x1; else { var _0x4b61ea = 0x1 / _0x4fdef4; _0x286f77[_0x12694c] *= _0x4b61ea, _0x286f77[_0x12694c + 0x1] *= _0x4b61ea, _0x286f77[_0x12694c + 0x2] *= _0x4b61ea, _0x286f77[_0x12694c + 0x3] *= _0x4b61ea; } } this['setVerticesData'](_0x566195['b']['MatricesWeightsKind'], _0x286f77); } , _0x4dc7f5['prototype']['normalizeSkinWeightsAndExtra'] = function() { for (var _0x10bcf2 = this['getVerticesData'](_0x566195['b']['MatricesWeightsExtraKind']), _0x3f0c4e = this['getVerticesData'](_0x566195['b']['MatricesWeightsKind']), _0x40b5bd = _0x3f0c4e['length'], _0x21d44d = 0x0; _0x21d44d < _0x40b5bd; _0x21d44d += 0x4) { var _0x396a72 = _0x3f0c4e[_0x21d44d] + _0x3f0c4e[_0x21d44d + 0x1] + _0x3f0c4e[_0x21d44d + 0x2] + _0x3f0c4e[_0x21d44d + 0x3]; if (0x0 === (_0x396a72 += _0x10bcf2[_0x21d44d] + _0x10bcf2[_0x21d44d + 0x1] + _0x10bcf2[_0x21d44d + 0x2] + _0x10bcf2[_0x21d44d + 0x3])) _0x3f0c4e[_0x21d44d] = 0x1; else { var _0x2fdd8c = 0x1 / _0x396a72; _0x3f0c4e[_0x21d44d] *= _0x2fdd8c, _0x3f0c4e[_0x21d44d + 0x1] *= _0x2fdd8c, _0x3f0c4e[_0x21d44d + 0x2] *= _0x2fdd8c, _0x3f0c4e[_0x21d44d + 0x3] *= _0x2fdd8c, _0x10bcf2[_0x21d44d] *= _0x2fdd8c, _0x10bcf2[_0x21d44d + 0x1] *= _0x2fdd8c, _0x10bcf2[_0x21d44d + 0x2] *= _0x2fdd8c, _0x10bcf2[_0x21d44d + 0x3] *= _0x2fdd8c; } } this['setVerticesData'](_0x566195['b']['MatricesWeightsKind'], _0x3f0c4e), this['setVerticesData'](_0x566195['b']['MatricesWeightsKind'], _0x10bcf2); } , _0x4dc7f5['prototype']['validateSkinning'] = function() { var _0x479620 = this['getVerticesData'](_0x566195['b']['MatricesWeightsExtraKind']) , _0x3ec51b = this['getVerticesData'](_0x566195['b']['MatricesWeightsKind']); if (null === _0x3ec51b || null == this['skeleton']) return { 'skinned': !0x1, 'valid': !0x0, 'report': 'not\x20skinned' }; for (var _0x5a964d = _0x3ec51b['length'], _0x50eb2e = 0x0, _0x4c38dd = 0x0, _0x25ef72 = 0x0, _0x13367e = 0x0, _0x10e2e0 = null === _0x479620 ? 0x4 : 0x8, _0x1ba016 = new Array(), _0x5c7f15 = 0x0; _0x5c7f15 <= _0x10e2e0; _0x5c7f15++) _0x1ba016[_0x5c7f15] = 0x0; for (_0x5c7f15 = 0x0; _0x5c7f15 < _0x5a964d; _0x5c7f15 += 0x4) { for (var _0x5a28de = _0x3ec51b[_0x5c7f15], _0x271901 = _0x5a28de, _0x4a6cc5 = 0x0 === _0x271901 ? 0x0 : 0x1, _0x2d0304 = 0x1; _0x2d0304 < _0x10e2e0; _0x2d0304++) { var _0x55761f = _0x2d0304 < 0x4 ? _0x3ec51b[_0x5c7f15 + _0x2d0304] : _0x479620[_0x5c7f15 + _0x2d0304 - 0x4]; _0x55761f > _0x5a28de && _0x50eb2e++, 0x0 !== _0x55761f && _0x4a6cc5++, _0x271901 += _0x55761f, _0x5a28de = _0x55761f; } if (_0x1ba016[_0x4a6cc5]++, _0x4a6cc5 > _0x25ef72 && (_0x25ef72 = _0x4a6cc5), 0x0 === _0x271901) _0x4c38dd++; else { var _0x458a7c = 0x1 / _0x271901 , _0x17bcfd = 0x0; for (_0x2d0304 = 0x0; _0x2d0304 < _0x10e2e0; _0x2d0304++) _0x17bcfd += _0x2d0304 < 0x4 ? Math['abs'](_0x3ec51b[_0x5c7f15 + _0x2d0304] - _0x3ec51b[_0x5c7f15 + _0x2d0304] * _0x458a7c) : Math['abs'](_0x479620[_0x5c7f15 + _0x2d0304 - 0x4] - _0x479620[_0x5c7f15 + _0x2d0304 - 0x4] * _0x458a7c); _0x17bcfd > 0.001 && _0x13367e++; } } var _0x3e26db = this['skeleton']['bones']['length'] , _0xde7f16 = this['getVerticesData'](_0x566195['b']['MatricesIndicesKind']) , _0x2b200b = this['getVerticesData'](_0x566195['b']['MatricesIndicesExtraKind']) , _0x14e50a = 0x0; for (_0x5c7f15 = 0x0; _0x5c7f15 < _0x5a964d; _0x5c7f15++) for (_0x2d0304 = 0x0; _0x2d0304 < _0x10e2e0; _0x2d0304++) { var _0x28cdbe = _0x2d0304 < 0x4 ? _0xde7f16[_0x2d0304] : _0x2b200b[_0x2d0304 - 0x4]; (_0x28cdbe >= _0x3e26db || _0x28cdbe < 0x0) && _0x14e50a++; } return { 'skinned': !0x0, 'valid': 0x0 === _0x4c38dd && 0x0 === _0x13367e && 0x0 === _0x14e50a, 'report': 'Number\x20of\x20Weights\x20=\x20' + _0x5a964d / 0x4 + '\x0aMaximum\x20influences\x20=\x20' + _0x25ef72 + '\x0aMissing\x20Weights\x20=\x20' + _0x4c38dd + '\x0aNot\x20Sorted\x20=\x20' + _0x50eb2e + '\x0aNot\x20Normalized\x20=\x20' + _0x13367e + '\x0aWeightCounts\x20=\x20[' + _0x1ba016 + ']\x0aNumber\x20of\x20bones\x20=\x20' + _0x3e26db + '\x0aBad\x20Bone\x20Indices\x20=\x20' + _0x14e50a }; } , _0x4dc7f5['prototype']['_checkDelayState'] = function() { var _0x3d507d = this['getScene'](); return this['_geometry'] ? this['_geometry']['load'](_0x3d507d) : this['delayLoadState'] === _0x11dda0['a']['DELAYLOADSTATE_NOTLOADED'] && (this['delayLoadState'] = _0x11dda0['a']['DELAYLOADSTATE_LOADING'], this['_queueLoad'](_0x3d507d)), this; } , _0x4dc7f5['prototype']['_queueLoad'] = function(_0x5c6a06) { var _0x5d92f4 = this; _0x5c6a06['_addPendingData'](this); var _0x5348ee = -0x1 !== this['delayLoadingFile']['indexOf']('.babylonbinarymeshdata'); return _0xf44b3e['h']['LoadFile'](this['delayLoadingFile'], function(_0x18b764) { _0x18b764 instanceof ArrayBuffer ? _0x5d92f4['_delayLoadingFunction'](_0x18b764, _0x5d92f4) : _0x5d92f4['_delayLoadingFunction'](JSON['parse'](_0x18b764), _0x5d92f4), _0x5d92f4['instances']['forEach'](function(_0x3ae863) { _0x3ae863['refreshBoundingInfo'](), _0x3ae863['_syncSubMeshes'](); }), _0x5d92f4['delayLoadState'] = _0x11dda0['a']['DELAYLOADSTATE_LOADED'], _0x5c6a06['_removePendingData'](_0x5d92f4); }, function() {}, _0x5c6a06['offlineProvider'], _0x5348ee), this; } , _0x4dc7f5['prototype']['isInFrustum'] = function(_0x4d3c84) { return this['delayLoadState'] !== _0x11dda0['a']['DELAYLOADSTATE_LOADING'] && (!!_0xeba31b['prototype']['isInFrustum']['call'](this, _0x4d3c84) && (this['_checkDelayState'](), !0x0)); } , _0x4dc7f5['prototype']['setMaterialByID'] = function(_0x342aa6) { var _0x167bd6, _0x1a8e62 = this['getScene']()['materials']; for (_0x167bd6 = _0x1a8e62['length'] - 0x1; _0x167bd6 > -0x1; _0x167bd6--) if (_0x1a8e62[_0x167bd6]['id'] === _0x342aa6) return this['material'] = _0x1a8e62[_0x167bd6], this; var _0x39380a = this['getScene']()['multiMaterials']; for (_0x167bd6 = _0x39380a['length'] - 0x1; _0x167bd6 > -0x1; _0x167bd6--) if (_0x39380a[_0x167bd6]['id'] === _0x342aa6) return this['material'] = _0x39380a[_0x167bd6], this; return this; } , _0x4dc7f5['prototype']['getAnimatables'] = function() { var _0xd47ec = new Array(); return this['material'] && _0xd47ec['push'](this['material']), this['skeleton'] && _0xd47ec['push'](this['skeleton']), _0xd47ec; } , _0x4dc7f5['prototype']['bakeTransformIntoVertices'] = function(_0x26f669) { if (!this['isVerticesDataPresent'](_0x566195['b']['PositionKind'])) return this; var _0x1a41ce = this['subMeshes']['splice'](0x0); this['_resetPointsArrayCache'](); var _0x154085, _0x3e1c43 = this['getVerticesData'](_0x566195['b']['PositionKind']), _0x5ebe86 = new Array(); for (_0x154085 = 0x0; _0x154085 < _0x3e1c43['length']; _0x154085 += 0x3) _0x564b55['x']['TransformCoordinates'](_0x564b55['x']['FromArray'](_0x3e1c43, _0x154085), _0x26f669)['toArray'](_0x5ebe86, _0x154085); if (this['setVerticesData'](_0x566195['b']['PositionKind'], _0x5ebe86, this['getVertexBuffer'](_0x566195['b']['PositionKind'])['isUpdatable']()), this['isVerticesDataPresent'](_0x566195['b']['NormalKind'])) { for (_0x3e1c43 = this['getVerticesData'](_0x566195['b']['NormalKind']), _0x5ebe86 = [], _0x154085 = 0x0; _0x154085 < _0x3e1c43['length']; _0x154085 += 0x3) _0x564b55['x']['TransformNormal'](_0x564b55['x']['FromArray'](_0x3e1c43, _0x154085), _0x26f669)['normalize']()['toArray'](_0x5ebe86, _0x154085); this['setVerticesData'](_0x566195['b']['NormalKind'], _0x5ebe86, this['getVertexBuffer'](_0x566195['b']['NormalKind'])['isUpdatable']()); } return _0x26f669['m'][0x0] * _0x26f669['m'][0x5] * _0x26f669['m'][0xa] < 0x0 && this['flipFaces'](), this['releaseSubMeshes'](), this['subMeshes'] = _0x1a41ce, this; } , _0x4dc7f5['prototype']['bakeCurrentTransformIntoVertices'] = function() { return this['bakeTransformIntoVertices'](this['computeWorldMatrix'](!0x0)), this['scaling']['copyFromFloats'](0x1, 0x1, 0x1), this['position']['copyFromFloats'](0x0, 0x0, 0x0), this['rotation']['copyFromFloats'](0x0, 0x0, 0x0), this['rotationQuaternion'] && (this['rotationQuaternion'] = _0x564b55['q']['Identity']()), this['_worldMatrix'] = _0x564b55['j']['Identity'](), this; } , Object['defineProperty'](_0x4dc7f5['prototype'], '_positions', { 'get': function() { return this['_geometry'] ? this['_geometry']['_positions'] : null; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4dc7f5['prototype']['_resetPointsArrayCache'] = function() { return this['_geometry'] && this['_geometry']['_resetPointsArrayCache'](), this; } , _0x4dc7f5['prototype']['_generatePointsArray'] = function() { return !!this['_geometry'] && this['_geometry']['_generatePointsArray'](); } , _0x4dc7f5['prototype']['clone'] = function(_0x50af6c, _0x3164bc, _0x134602, _0x253fea) { return void 0x0 === _0x50af6c && (_0x50af6c = ''), void 0x0 === _0x253fea && (_0x253fea = !0x0), new _0x4dc7f5(_0x50af6c,this['getScene'](),_0x3164bc,this,_0x134602,_0x253fea); } , _0x4dc7f5['prototype']['dispose'] = function(_0x4d1be9, _0x17c84e) { void 0x0 === _0x17c84e && (_0x17c84e = !0x1), this['morphTargetManager'] = null, this['_geometry'] && this['_geometry']['releaseForMesh'](this, !0x0); var _0x5adc61 = this['_internalMeshDataInfo']; if (_0x5adc61['_onBeforeDrawObservable'] && _0x5adc61['_onBeforeDrawObservable']['clear'](), _0x5adc61['_onBeforeBindObservable'] && _0x5adc61['_onBeforeBindObservable']['clear'](), _0x5adc61['_onBeforeRenderObservable'] && _0x5adc61['_onBeforeRenderObservable']['clear'](), _0x5adc61['_onAfterRenderObservable'] && _0x5adc61['_onAfterRenderObservable']['clear'](), this['_scene']['useClonedMeshhMap']) { if (_0x5adc61['meshMap']) for (var _0x22cd25 in _0x5adc61['meshMap']) { (_0x58f109 = _0x5adc61['meshMap'][_0x22cd25]) && (_0x58f109['_internalMeshDataInfo']['_source'] = null, _0x5adc61['meshMap'][_0x22cd25] = void 0x0); } _0x5adc61['_source'] && _0x5adc61['_source']['_internalMeshDataInfo']['meshMap'] && (_0x5adc61['_source']['_internalMeshDataInfo']['meshMap'][this['uniqueId']] = void 0x0); } else for (var _0x345f97 = 0x0, _0x19a1a5 = this['getScene']()['meshes']; _0x345f97 < _0x19a1a5['length']; _0x345f97++) { var _0x58f109; (_0x58f109 = _0x19a1a5[_0x345f97])['_internalMeshDataInfo'] && _0x58f109['_internalMeshDataInfo']['_source'] && _0x58f109['_internalMeshDataInfo']['_source'] === this && (_0x58f109['_internalMeshDataInfo']['_source'] = null); } for (_0x5adc61['_source'] = null, this['_instanceDataStorage']['instancesBuffer'] && (this['_instanceDataStorage']['instancesBuffer']['dispose'](), this['_instanceDataStorage']['instancesBuffer'] = null); this['instances']['length']; ) this['instances'][0x0]['dispose'](); _0xeba31b['prototype']['dispose']['call'](this, _0x4d1be9, _0x17c84e); } , _0x4dc7f5['prototype']['applyDisplacementMap'] = function(_0x5b452c, _0x4529fc, _0x412851, _0x37fb20, _0x54a4ee, _0x352226, _0x495aa4) { var _0x51e3ce = this; void 0x0 === _0x495aa4 && (_0x495aa4 = !0x1); var _0x5b4b53 = this['getScene'](); return _0xf44b3e['h']['LoadImage'](_0x5b452c, function(_0x7782bf) { var _0x5198ba = document['createElement']('canvas') , _0x2c0ca0 = _0x5198ba['getContext']('2d') , _0x39fa50 = _0x7782bf['width'] , _0x557bf7 = _0x7782bf['height']; _0x5198ba['width'] = _0x39fa50, _0x5198ba['height'] = _0x557bf7, _0x2c0ca0['drawImage'](_0x7782bf, 0x0, 0x0); var _0x4945ca = _0x2c0ca0['getImageData'](0x0, 0x0, _0x39fa50, _0x557bf7)['data']; _0x51e3ce['applyDisplacementMapFromBuffer'](_0x4945ca, _0x39fa50, _0x557bf7, _0x4529fc, _0x412851, _0x54a4ee, _0x352226, _0x495aa4), _0x37fb20 && _0x37fb20(_0x51e3ce); }, function() {}, _0x5b4b53['offlineProvider']), this; } , _0x4dc7f5['prototype']['applyDisplacementMapFromBuffer'] = function(_0x85493a, _0x1c5988, _0x8c27d5, _0x462265, _0x1641df, _0xdc5f3c, _0xc889ad, _0x315540) { if (void 0x0 === _0x315540 && (_0x315540 = !0x1), !this['isVerticesDataPresent'](_0x566195['b']['PositionKind']) || !this['isVerticesDataPresent'](_0x566195['b']['NormalKind']) || !this['isVerticesDataPresent'](_0x566195['b']['UVKind'])) return _0x651ae7['a']['Warn']('Cannot\x20call\x20applyDisplacementMap:\x20Given\x20mesh\x20is\x20not\x20complete.\x20Position,\x20Normal\x20or\x20UV\x20are\x20missing'), this; var _0x33f28b = this['getVerticesData'](_0x566195['b']['PositionKind'], !0x0, !0x0) , _0x443b9b = this['getVerticesData'](_0x566195['b']['NormalKind']) , _0x568a23 = this['getVerticesData'](_0x566195['b']['UVKind']) , _0x56d4a8 = _0x564b55['x']['Zero']() , _0x2148e0 = _0x564b55['x']['Zero']() , _0xf9c999 = _0x564b55['w']['Zero'](); _0xdc5f3c = _0xdc5f3c || _0x564b55['w']['Zero'](), _0xc889ad = _0xc889ad || new _0x564b55['w'](0x1,0x1); for (var _0xe0757a = 0x0; _0xe0757a < _0x33f28b['length']; _0xe0757a += 0x3) { _0x564b55['x']['FromArrayToRef'](_0x33f28b, _0xe0757a, _0x56d4a8), _0x564b55['x']['FromArrayToRef'](_0x443b9b, _0xe0757a, _0x2148e0), _0x564b55['w']['FromArrayToRef'](_0x568a23, _0xe0757a / 0x3 * 0x2, _0xf9c999); var _0x15c0f8 = 0x4 * ((Math['abs'](_0xf9c999['x'] * _0xc889ad['x'] + _0xdc5f3c['x']) * _0x1c5988 % _0x1c5988 | 0x0) + (Math['abs'](_0xf9c999['y'] * _0xc889ad['y'] + _0xdc5f3c['y']) * _0x8c27d5 % _0x8c27d5 | 0x0) * _0x1c5988) , _0x378941 = 0.3 * (_0x85493a[_0x15c0f8] / 0xff) + 0.59 * (_0x85493a[_0x15c0f8 + 0x1] / 0xff) + 0.11 * (_0x85493a[_0x15c0f8 + 0x2] / 0xff); _0x2148e0['normalize'](), _0x2148e0['scaleInPlace'](_0x462265 + (_0x1641df - _0x462265) * _0x378941), (_0x56d4a8 = _0x56d4a8['add'](_0x2148e0))['toArray'](_0x33f28b, _0xe0757a); } return _0x3321ce['a']['ComputeNormals'](_0x33f28b, this['getIndices'](), _0x443b9b), _0x315540 ? (this['setVerticesData'](_0x566195['b']['PositionKind'], _0x33f28b), this['setVerticesData'](_0x566195['b']['NormalKind'], _0x443b9b)) : (this['updateVerticesData'](_0x566195['b']['PositionKind'], _0x33f28b), this['updateVerticesData'](_0x566195['b']['NormalKind'], _0x443b9b)), this; } , _0x4dc7f5['prototype']['convertToFlatShadedMesh'] = function() { var _0x4c0b51, _0x24c704, _0x3f2e54 = this['getVerticesDataKinds'](), _0x49d4aa = {}, _0x1ccf1d = {}, _0x517677 = {}, _0x440c8d = !0x1; for (_0x4c0b51 = 0x0; _0x4c0b51 < _0x3f2e54['length']; _0x4c0b51++) { _0x24c704 = _0x3f2e54[_0x4c0b51]; var _0x1366e4 = this['getVertexBuffer'](_0x24c704); _0x24c704 !== _0x566195['b']['NormalKind'] ? (_0x49d4aa[_0x24c704] = _0x1366e4, _0x1ccf1d[_0x24c704] = _0x49d4aa[_0x24c704]['getData'](), _0x517677[_0x24c704] = []) : (_0x440c8d = _0x1366e4['isUpdatable'](), _0x3f2e54['splice'](_0x4c0b51, 0x1), _0x4c0b51--); } var _0x21ac9c, _0x30433e = this['subMeshes']['slice'](0x0), _0x23e5db = this['getIndices'](), _0x830dca = this['getTotalIndices'](); for (_0x21ac9c = 0x0; _0x21ac9c < _0x830dca; _0x21ac9c++) { var _0x4e6b9b = _0x23e5db[_0x21ac9c]; for (_0x4c0b51 = 0x0; _0x4c0b51 < _0x3f2e54['length']; _0x4c0b51++) for (var _0x5938bf = _0x49d4aa[_0x24c704 = _0x3f2e54[_0x4c0b51]]['getStrideSize'](), _0x4f301b = 0x0; _0x4f301b < _0x5938bf; _0x4f301b++) _0x517677[_0x24c704]['push'](_0x1ccf1d[_0x24c704][_0x4e6b9b * _0x5938bf + _0x4f301b]); } var _0x3e2500 = [] , _0xbabf2b = _0x517677[_0x566195['b']['PositionKind']]; for (_0x21ac9c = 0x0; _0x21ac9c < _0x830dca; _0x21ac9c += 0x3) { _0x23e5db[_0x21ac9c] = _0x21ac9c, _0x23e5db[_0x21ac9c + 0x1] = _0x21ac9c + 0x1, _0x23e5db[_0x21ac9c + 0x2] = _0x21ac9c + 0x2; for (var _0x397ef5 = _0x564b55['x']['FromArray'](_0xbabf2b, 0x3 * _0x21ac9c), _0x384428 = _0x564b55['x']['FromArray'](_0xbabf2b, 0x3 * (_0x21ac9c + 0x1)), _0x3fdd72 = _0x564b55['x']['FromArray'](_0xbabf2b, 0x3 * (_0x21ac9c + 0x2)), _0x4f009f = _0x397ef5['subtract'](_0x384428), _0x5038ed = _0x3fdd72['subtract'](_0x384428), _0x56caa0 = _0x564b55['x']['Normalize'](_0x564b55['x']['Cross'](_0x4f009f, _0x5038ed)), _0x1db84c = 0x0; _0x1db84c < 0x3; _0x1db84c++) _0x3e2500['push'](_0x56caa0['x']), _0x3e2500['push'](_0x56caa0['y']), _0x3e2500['push'](_0x56caa0['z']); } for (this['setIndices'](_0x23e5db), this['setVerticesData'](_0x566195['b']['NormalKind'], _0x3e2500, _0x440c8d), _0x4c0b51 = 0x0; _0x4c0b51 < _0x3f2e54['length']; _0x4c0b51++) _0x24c704 = _0x3f2e54[_0x4c0b51], this['setVerticesData'](_0x24c704, _0x517677[_0x24c704], _0x49d4aa[_0x24c704]['isUpdatable']()); this['releaseSubMeshes'](); for (var _0x1e73ff = 0x0; _0x1e73ff < _0x30433e['length']; _0x1e73ff++) { var _0xa68f2c = _0x30433e[_0x1e73ff]; _0x1d85ce['b']['AddToMesh'](_0xa68f2c['materialIndex'], _0xa68f2c['indexStart'], _0xa68f2c['indexCount'], _0xa68f2c['indexStart'], _0xa68f2c['indexCount'], this); } return this['synchronizeInstances'](), this; } , _0x4dc7f5['prototype']['convertToUnIndexedMesh'] = function() { var _0xebd37f, _0x1faa30, _0x58dcd5 = this['getVerticesDataKinds'](), _0x5e51d5 = {}, _0x39df6d = {}, _0x87a9ac = {}; for (_0xebd37f = 0x0; _0xebd37f < _0x58dcd5['length']; _0xebd37f++) { _0x1faa30 = _0x58dcd5[_0xebd37f]; var _0xa5f44f = this['getVertexBuffer'](_0x1faa30); _0x5e51d5[_0x1faa30] = _0xa5f44f, _0x39df6d[_0x1faa30] = _0x5e51d5[_0x1faa30]['getData'](), _0x87a9ac[_0x1faa30] = []; } var _0xdd6dc2, _0x19799 = this['subMeshes']['slice'](0x0), _0x1453fe = this['getIndices'](), _0x22c688 = this['getTotalIndices'](); for (_0xdd6dc2 = 0x0; _0xdd6dc2 < _0x22c688; _0xdd6dc2++) { var _0x4ba22e = _0x1453fe[_0xdd6dc2]; for (_0xebd37f = 0x0; _0xebd37f < _0x58dcd5['length']; _0xebd37f++) for (var _0x6ec60b = _0x5e51d5[_0x1faa30 = _0x58dcd5[_0xebd37f]]['getStrideSize'](), _0x2007c7 = 0x0; _0x2007c7 < _0x6ec60b; _0x2007c7++) _0x87a9ac[_0x1faa30]['push'](_0x39df6d[_0x1faa30][_0x4ba22e * _0x6ec60b + _0x2007c7]); } for (_0xdd6dc2 = 0x0; _0xdd6dc2 < _0x22c688; _0xdd6dc2 += 0x3) _0x1453fe[_0xdd6dc2] = _0xdd6dc2, _0x1453fe[_0xdd6dc2 + 0x1] = _0xdd6dc2 + 0x1, _0x1453fe[_0xdd6dc2 + 0x2] = _0xdd6dc2 + 0x2; for (this['setIndices'](_0x1453fe), _0xebd37f = 0x0; _0xebd37f < _0x58dcd5['length']; _0xebd37f++) _0x1faa30 = _0x58dcd5[_0xebd37f], this['setVerticesData'](_0x1faa30, _0x87a9ac[_0x1faa30], _0x5e51d5[_0x1faa30]['isUpdatable']()); this['releaseSubMeshes'](); for (var _0x4e230a = 0x0; _0x4e230a < _0x19799['length']; _0x4e230a++) { var _0x3039af = _0x19799[_0x4e230a]; _0x1d85ce['b']['AddToMesh'](_0x3039af['materialIndex'], _0x3039af['indexStart'], _0x3039af['indexCount'], _0x3039af['indexStart'], _0x3039af['indexCount'], this); } return this['_unIndexed'] = !0x0, this['synchronizeInstances'](), this; } , _0x4dc7f5['prototype']['flipFaces'] = function(_0x7d2a86) { void 0x0 === _0x7d2a86 && (_0x7d2a86 = !0x1); var _0x1c8696, _0x358402, _0x112873 = _0x3321ce['a']['ExtractFromMesh'](this); if (_0x7d2a86 && this['isVerticesDataPresent'](_0x566195['b']['NormalKind']) && _0x112873['normals']) for (_0x1c8696 = 0x0; _0x1c8696 < _0x112873['normals']['length']; _0x1c8696++) _0x112873['normals'][_0x1c8696] *= -0x1; if (_0x112873['indices']) for (_0x1c8696 = 0x0; _0x1c8696 < _0x112873['indices']['length']; _0x1c8696 += 0x3) _0x358402 = _0x112873['indices'][_0x1c8696 + 0x1], _0x112873['indices'][_0x1c8696 + 0x1] = _0x112873['indices'][_0x1c8696 + 0x2], _0x112873['indices'][_0x1c8696 + 0x2] = _0x358402; return _0x112873['applyToMesh'](this), this; } , _0x4dc7f5['prototype']['increaseVertices'] = function(_0x3cc217) { var _0x4f462f = _0x3321ce['a']['ExtractFromMesh'](this) , _0xabe72e = _0x4f462f['uvs'] , _0x1cb2a2 = _0x4f462f['indices'] , _0x54ef6d = _0x4f462f['positions'] , _0x4c4999 = _0x4f462f['normals']; if (null === _0x1cb2a2 || null === _0x54ef6d || null === _0x4c4999 || null === _0xabe72e) _0x651ae7['a']['Warn']('VertexData\x20contains\x20null\x20entries'); else { for (var _0x1d5bfb, _0x2ea342, _0x4da86d = _0x3cc217 + 0x1, _0x4310a7 = new Array(), _0x4026b4 = 0x0; _0x4026b4 < _0x4da86d + 0x1; _0x4026b4++) _0x4310a7[_0x4026b4] = new Array(); var _0x3e76f4, _0x2b964f = new _0x564b55['x'](0x0,0x0,0x0), _0x295a6e = new _0x564b55['x'](0x0,0x0,0x0), _0xfc106c = new _0x564b55['w'](0x0,0x0), _0x418ddc = new Array(), _0x2db761 = new Array(), _0xf035ea = new Array(), _0x337823 = _0x54ef6d['length'], _0x3c64ca = _0xabe72e['length']; for (_0x4026b4 = 0x0; _0x4026b4 < _0x1cb2a2['length']; _0x4026b4 += 0x3) { _0x2db761[0x0] = _0x1cb2a2[_0x4026b4], _0x2db761[0x1] = _0x1cb2a2[_0x4026b4 + 0x1], _0x2db761[0x2] = _0x1cb2a2[_0x4026b4 + 0x2]; for (var _0x484c85 = 0x0; _0x484c85 < 0x3; _0x484c85++) if (_0x1d5bfb = _0x2db761[_0x484c85], _0x2ea342 = _0x2db761[(_0x484c85 + 0x1) % 0x3], void 0x0 === _0xf035ea[_0x1d5bfb] && void 0x0 === _0xf035ea[_0x2ea342] ? (_0xf035ea[_0x1d5bfb] = new Array(), _0xf035ea[_0x2ea342] = new Array()) : (void 0x0 === _0xf035ea[_0x1d5bfb] && (_0xf035ea[_0x1d5bfb] = new Array()), void 0x0 === _0xf035ea[_0x2ea342] && (_0xf035ea[_0x2ea342] = new Array())), void 0x0 === _0xf035ea[_0x1d5bfb][_0x2ea342] && void 0x0 === _0xf035ea[_0x2ea342][_0x1d5bfb]) { _0xf035ea[_0x1d5bfb][_0x2ea342] = [], _0x2b964f['x'] = (_0x54ef6d[0x3 * _0x2ea342] - _0x54ef6d[0x3 * _0x1d5bfb]) / _0x4da86d, _0x2b964f['y'] = (_0x54ef6d[0x3 * _0x2ea342 + 0x1] - _0x54ef6d[0x3 * _0x1d5bfb + 0x1]) / _0x4da86d, _0x2b964f['z'] = (_0x54ef6d[0x3 * _0x2ea342 + 0x2] - _0x54ef6d[0x3 * _0x1d5bfb + 0x2]) / _0x4da86d, _0x295a6e['x'] = (_0x4c4999[0x3 * _0x2ea342] - _0x4c4999[0x3 * _0x1d5bfb]) / _0x4da86d, _0x295a6e['y'] = (_0x4c4999[0x3 * _0x2ea342 + 0x1] - _0x4c4999[0x3 * _0x1d5bfb + 0x1]) / _0x4da86d, _0x295a6e['z'] = (_0x4c4999[0x3 * _0x2ea342 + 0x2] - _0x4c4999[0x3 * _0x1d5bfb + 0x2]) / _0x4da86d, _0xfc106c['x'] = (_0xabe72e[0x2 * _0x2ea342] - _0xabe72e[0x2 * _0x1d5bfb]) / _0x4da86d, _0xfc106c['y'] = (_0xabe72e[0x2 * _0x2ea342 + 0x1] - _0xabe72e[0x2 * _0x1d5bfb + 0x1]) / _0x4da86d, _0xf035ea[_0x1d5bfb][_0x2ea342]['push'](_0x1d5bfb); for (var _0x1e06f4 = 0x1; _0x1e06f4 < _0x4da86d; _0x1e06f4++) _0xf035ea[_0x1d5bfb][_0x2ea342]['push'](_0x54ef6d['length'] / 0x3), _0x54ef6d[_0x337823] = _0x54ef6d[0x3 * _0x1d5bfb] + _0x1e06f4 * _0x2b964f['x'], _0x4c4999[_0x337823++] = _0x4c4999[0x3 * _0x1d5bfb] + _0x1e06f4 * _0x295a6e['x'], _0x54ef6d[_0x337823] = _0x54ef6d[0x3 * _0x1d5bfb + 0x1] + _0x1e06f4 * _0x2b964f['y'], _0x4c4999[_0x337823++] = _0x4c4999[0x3 * _0x1d5bfb + 0x1] + _0x1e06f4 * _0x295a6e['y'], _0x54ef6d[_0x337823] = _0x54ef6d[0x3 * _0x1d5bfb + 0x2] + _0x1e06f4 * _0x2b964f['z'], _0x4c4999[_0x337823++] = _0x4c4999[0x3 * _0x1d5bfb + 0x2] + _0x1e06f4 * _0x295a6e['z'], _0xabe72e[_0x3c64ca++] = _0xabe72e[0x2 * _0x1d5bfb] + _0x1e06f4 * _0xfc106c['x'], _0xabe72e[_0x3c64ca++] = _0xabe72e[0x2 * _0x1d5bfb + 0x1] + _0x1e06f4 * _0xfc106c['y']; _0xf035ea[_0x1d5bfb][_0x2ea342]['push'](_0x2ea342), _0xf035ea[_0x2ea342][_0x1d5bfb] = new Array(), _0x3e76f4 = _0xf035ea[_0x1d5bfb][_0x2ea342]['length']; for (var _0x3f0d8c = 0x0; _0x3f0d8c < _0x3e76f4; _0x3f0d8c++) _0xf035ea[_0x2ea342][_0x1d5bfb][_0x3f0d8c] = _0xf035ea[_0x1d5bfb][_0x2ea342][_0x3e76f4 - 0x1 - _0x3f0d8c]; } _0x4310a7[0x0][0x0] = _0x1cb2a2[_0x4026b4], _0x4310a7[0x1][0x0] = _0xf035ea[_0x1cb2a2[_0x4026b4]][_0x1cb2a2[_0x4026b4 + 0x1]][0x1], _0x4310a7[0x1][0x1] = _0xf035ea[_0x1cb2a2[_0x4026b4]][_0x1cb2a2[_0x4026b4 + 0x2]][0x1]; for (_0x1e06f4 = 0x2; _0x1e06f4 < _0x4da86d; _0x1e06f4++) { _0x4310a7[_0x1e06f4][0x0] = _0xf035ea[_0x1cb2a2[_0x4026b4]][_0x1cb2a2[_0x4026b4 + 0x1]][_0x1e06f4], _0x4310a7[_0x1e06f4][_0x1e06f4] = _0xf035ea[_0x1cb2a2[_0x4026b4]][_0x1cb2a2[_0x4026b4 + 0x2]][_0x1e06f4], _0x2b964f['x'] = (_0x54ef6d[0x3 * _0x4310a7[_0x1e06f4][_0x1e06f4]] - _0x54ef6d[0x3 * _0x4310a7[_0x1e06f4][0x0]]) / _0x1e06f4, _0x2b964f['y'] = (_0x54ef6d[0x3 * _0x4310a7[_0x1e06f4][_0x1e06f4] + 0x1] - _0x54ef6d[0x3 * _0x4310a7[_0x1e06f4][0x0] + 0x1]) / _0x1e06f4, _0x2b964f['z'] = (_0x54ef6d[0x3 * _0x4310a7[_0x1e06f4][_0x1e06f4] + 0x2] - _0x54ef6d[0x3 * _0x4310a7[_0x1e06f4][0x0] + 0x2]) / _0x1e06f4, _0x295a6e['x'] = (_0x4c4999[0x3 * _0x4310a7[_0x1e06f4][_0x1e06f4]] - _0x4c4999[0x3 * _0x4310a7[_0x1e06f4][0x0]]) / _0x1e06f4, _0x295a6e['y'] = (_0x4c4999[0x3 * _0x4310a7[_0x1e06f4][_0x1e06f4] + 0x1] - _0x4c4999[0x3 * _0x4310a7[_0x1e06f4][0x0] + 0x1]) / _0x1e06f4, _0x295a6e['z'] = (_0x4c4999[0x3 * _0x4310a7[_0x1e06f4][_0x1e06f4] + 0x2] - _0x4c4999[0x3 * _0x4310a7[_0x1e06f4][0x0] + 0x2]) / _0x1e06f4, _0xfc106c['x'] = (_0xabe72e[0x2 * _0x4310a7[_0x1e06f4][_0x1e06f4]] - _0xabe72e[0x2 * _0x4310a7[_0x1e06f4][0x0]]) / _0x1e06f4, _0xfc106c['y'] = (_0xabe72e[0x2 * _0x4310a7[_0x1e06f4][_0x1e06f4] + 0x1] - _0xabe72e[0x2 * _0x4310a7[_0x1e06f4][0x0] + 0x1]) / _0x1e06f4; for (_0x484c85 = 0x1; _0x484c85 < _0x1e06f4; _0x484c85++) _0x4310a7[_0x1e06f4][_0x484c85] = _0x54ef6d['length'] / 0x3, _0x54ef6d[_0x337823] = _0x54ef6d[0x3 * _0x4310a7[_0x1e06f4][0x0]] + _0x484c85 * _0x2b964f['x'], _0x4c4999[_0x337823++] = _0x4c4999[0x3 * _0x4310a7[_0x1e06f4][0x0]] + _0x484c85 * _0x295a6e['x'], _0x54ef6d[_0x337823] = _0x54ef6d[0x3 * _0x4310a7[_0x1e06f4][0x0] + 0x1] + _0x484c85 * _0x2b964f['y'], _0x4c4999[_0x337823++] = _0x4c4999[0x3 * _0x4310a7[_0x1e06f4][0x0] + 0x1] + _0x484c85 * _0x295a6e['y'], _0x54ef6d[_0x337823] = _0x54ef6d[0x3 * _0x4310a7[_0x1e06f4][0x0] + 0x2] + _0x484c85 * _0x2b964f['z'], _0x4c4999[_0x337823++] = _0x4c4999[0x3 * _0x4310a7[_0x1e06f4][0x0] + 0x2] + _0x484c85 * _0x295a6e['z'], _0xabe72e[_0x3c64ca++] = _0xabe72e[0x2 * _0x4310a7[_0x1e06f4][0x0]] + _0x484c85 * _0xfc106c['x'], _0xabe72e[_0x3c64ca++] = _0xabe72e[0x2 * _0x4310a7[_0x1e06f4][0x0] + 0x1] + _0x484c85 * _0xfc106c['y']; } _0x4310a7[_0x4da86d] = _0xf035ea[_0x1cb2a2[_0x4026b4 + 0x1]][_0x1cb2a2[_0x4026b4 + 0x2]], _0x418ddc['push'](_0x4310a7[0x0][0x0], _0x4310a7[0x1][0x0], _0x4310a7[0x1][0x1]); for (_0x1e06f4 = 0x1; _0x1e06f4 < _0x4da86d; _0x1e06f4++) { for (_0x484c85 = 0x0; _0x484c85 < _0x1e06f4; _0x484c85++) _0x418ddc['push'](_0x4310a7[_0x1e06f4][_0x484c85], _0x4310a7[_0x1e06f4 + 0x1][_0x484c85], _0x4310a7[_0x1e06f4 + 0x1][_0x484c85 + 0x1]), _0x418ddc['push'](_0x4310a7[_0x1e06f4][_0x484c85], _0x4310a7[_0x1e06f4 + 0x1][_0x484c85 + 0x1], _0x4310a7[_0x1e06f4][_0x484c85 + 0x1]); _0x418ddc['push'](_0x4310a7[_0x1e06f4][_0x484c85], _0x4310a7[_0x1e06f4 + 0x1][_0x484c85], _0x4310a7[_0x1e06f4 + 0x1][_0x484c85 + 0x1]); } } _0x4f462f['indices'] = _0x418ddc, _0x4f462f['applyToMesh'](this); } } , _0x4dc7f5['prototype']['forceSharedVertices'] = function() { var _0x5267d5 = _0x3321ce['a']['ExtractFromMesh'](this) , _0x4098e1 = _0x5267d5['uvs'] , _0x26a884 = _0x5267d5['indices'] , _0x5401c3 = _0x5267d5['positions'] , _0x204bf3 = _0x5267d5['normals']; if (null === _0x26a884 || null === _0x5401c3 || null === _0x204bf3 || null === _0x4098e1) _0x651ae7['a']['Warn']('VertexData\x20contains\x20null\x20entries'); else { for (var _0x2b6520, _0x2452ec, _0x1b3a1b = new Array(), _0x18bbdd = new Array(), _0x1caa9d = new Array(), _0x1f16a9 = new Array(), _0x53c04c = 0x0, _0xebb03a = new Array(), _0x13c93 = 0x0; _0x13c93 < _0x26a884['length']; _0x13c93 += 0x3) { _0x2452ec = [_0x26a884[_0x13c93], _0x26a884[_0x13c93 + 0x1], _0x26a884[_0x13c93 + 0x2]], _0x1f16a9 = new Array(); for (var _0x278341 = 0x0; _0x278341 < 0x3; _0x278341++) { _0x1f16a9[_0x278341] = ''; for (var _0x4fab06 = 0x0; _0x4fab06 < 0x3; _0x4fab06++) Math['abs'](_0x5401c3[0x3 * _0x2452ec[_0x278341] + _0x4fab06]) < 1e-8 && (_0x5401c3[0x3 * _0x2452ec[_0x278341] + _0x4fab06] = 0x0), _0x1f16a9[_0x278341] += _0x5401c3[0x3 * _0x2452ec[_0x278341] + _0x4fab06] + '|'; _0x1f16a9[_0x278341] = _0x1f16a9[_0x278341]['slice'](0x0, -0x1); } if (_0x1f16a9[0x0] != _0x1f16a9[0x1] && _0x1f16a9[0x0] != _0x1f16a9[0x2] && _0x1f16a9[0x1] != _0x1f16a9[0x2]) for (_0x278341 = 0x0; _0x278341 < 0x3; _0x278341++) { if ((_0x2b6520 = _0xebb03a['indexOf'](_0x1f16a9[_0x278341])) < 0x0) { _0xebb03a['push'](_0x1f16a9[_0x278341]), _0x2b6520 = _0x53c04c++; for (_0x4fab06 = 0x0; _0x4fab06 < 0x3; _0x4fab06++) _0x1b3a1b['push'](_0x5401c3[0x3 * _0x2452ec[_0x278341] + _0x4fab06]); for (_0x4fab06 = 0x0; _0x4fab06 < 0x2; _0x4fab06++) _0x1caa9d['push'](_0x4098e1[0x2 * _0x2452ec[_0x278341] + _0x4fab06]); } _0x18bbdd['push'](_0x2b6520); } } var _0x11653c = new Array(); _0x3321ce['a']['ComputeNormals'](_0x1b3a1b, _0x18bbdd, _0x11653c), _0x5267d5['positions'] = _0x1b3a1b, _0x5267d5['indices'] = _0x18bbdd, _0x5267d5['normals'] = _0x11653c, _0x5267d5['uvs'] = _0x1caa9d, _0x5267d5['applyToMesh'](this); } } , _0x4dc7f5['_instancedMeshFactory'] = function(_0x392ce6, _0x446a4e) { throw _0x38b7f6['a']['WarnImport']('InstancedMesh'); } , _0x4dc7f5['_PhysicsImpostorParser'] = function(_0x37fe10, _0x609051, _0x4db491) { throw _0x38b7f6['a']['WarnImport']('PhysicsImpostor'); } , _0x4dc7f5['prototype']['createInstance'] = function(_0x40e6e1) { return _0x4dc7f5['_instancedMeshFactory'](_0x40e6e1, this); } , _0x4dc7f5['prototype']['synchronizeInstances'] = function() { for (var _0x54b05d = 0x0; _0x54b05d < this['instances']['length']; _0x54b05d++) { this['instances'][_0x54b05d]['_syncSubMeshes'](); } return this; } , _0x4dc7f5['prototype']['optimizeIndices'] = function(_0x51b7da) { var _0x265a4d = this , _0x456fce = this['getIndices']() , _0x42674c = this['getVerticesData'](_0x566195['b']['PositionKind']); if (!_0x42674c || !_0x456fce) return this; for (var _0x30a59e = new Array(), _0x988cd8 = 0x0; _0x988cd8 < _0x42674c['length']; _0x988cd8 += 0x3) _0x30a59e['push'](_0x564b55['x']['FromArray'](_0x42674c, _0x988cd8)); var _0x47d130 = new Array(); return _0xf44b3e['a']['SyncAsyncForLoop'](_0x30a59e['length'], 0x28, function(_0x595df7) { for (var _0x12b9b7 = _0x30a59e['length'] - 0x1 - _0x595df7, _0x2d605c = _0x30a59e[_0x12b9b7], _0x50e1d1 = 0x0; _0x50e1d1 < _0x12b9b7; ++_0x50e1d1) { var _0x4d5421 = _0x30a59e[_0x50e1d1]; if (_0x2d605c['equals'](_0x4d5421)) { _0x47d130[_0x12b9b7] = _0x50e1d1; break; } } }, function() { for (var _0x5c7d58 = 0x0; _0x5c7d58 < _0x456fce['length']; ++_0x5c7d58) _0x456fce[_0x5c7d58] = _0x47d130[_0x456fce[_0x5c7d58]] || _0x456fce[_0x5c7d58]; var _0x3a521c = _0x265a4d['subMeshes']['slice'](0x0); _0x265a4d['setIndices'](_0x456fce), _0x265a4d['subMeshes'] = _0x3a521c, _0x51b7da && _0x51b7da(_0x265a4d); }), this; } , _0x4dc7f5['prototype']['serialize'] = function(_0x2ddda2) { _0x2ddda2['name'] = this['name'], _0x2ddda2['id'] = this['id'], _0x2ddda2['type'] = this['getClassName'](), _0xfac2e0['a'] && _0xfac2e0['a']['HasTags'](this) && (_0x2ddda2['tags'] = _0xfac2e0['a']['GetTags'](this)), _0x2ddda2['position'] = this['position']['asArray'](), this['rotationQuaternion'] ? _0x2ddda2['rotationQuaternion'] = this['rotationQuaternion']['asArray']() : this['rotation'] && (_0x2ddda2['rotation'] = this['rotation']['asArray']()), _0x2ddda2['scaling'] = this['scaling']['asArray'](), this['_postMultiplyPivotMatrix'] ? _0x2ddda2['pivotMatrix'] = this['getPivotMatrix']()['asArray']() : _0x2ddda2['localMatrix'] = this['getPivotMatrix']()['asArray'](), _0x2ddda2['isEnabled'] = this['isEnabled'](!0x1), _0x2ddda2['isVisible'] = this['isVisible'], _0x2ddda2['infiniteDistance'] = this['infiniteDistance'], _0x2ddda2['pickable'] = this['isPickable'], _0x2ddda2['receiveShadows'] = this['receiveShadows'], _0x2ddda2['billboardMode'] = this['billboardMode'], _0x2ddda2['visibility'] = this['visibility'], _0x2ddda2['checkCollisions'] = this['checkCollisions'], _0x2ddda2['isBlocker'] = this['isBlocker'], this['parent'] && (_0x2ddda2['parentId'] = this['parent']['id']), _0x2ddda2['isUnIndexed'] = this['isUnIndexed']; var _0x561e4c = this['_geometry']; if (_0x561e4c) { var _0xb57f8a = _0x561e4c['id']; _0x2ddda2['geometryId'] = _0xb57f8a, _0x2ddda2['subMeshes'] = []; for (var _0x49898e = 0x0; _0x49898e < this['subMeshes']['length']; _0x49898e++) { var _0x1bf87e = this['subMeshes'][_0x49898e]; _0x2ddda2['subMeshes']['push']({ 'materialIndex': _0x1bf87e['materialIndex'], 'verticesStart': _0x1bf87e['verticesStart'], 'verticesCount': _0x1bf87e['verticesCount'], 'indexStart': _0x1bf87e['indexStart'], 'indexCount': _0x1bf87e['indexCount'] }); } } if (this['material'] ? _0x2ddda2['materialId'] = this['material']['id'] : this['material'] = null, this['morphTargetManager'] && (_0x2ddda2['morphTargetManagerId'] = this['morphTargetManager']['uniqueId']), this['skeleton'] && (_0x2ddda2['skeletonId'] = this['skeleton']['id']), this['getScene']()['_getComponent'](_0x44d4b1['a']['NAME_PHYSICSENGINE'])) { var _0x4e1b3a = this['getPhysicsImpostor'](); _0x4e1b3a && (_0x2ddda2['physicsMass'] = _0x4e1b3a['getParam']('mass'), _0x2ddda2['physicsFriction'] = _0x4e1b3a['getParam']('friction'), _0x2ddda2['physicsRestitution'] = _0x4e1b3a['getParam']('mass'), _0x2ddda2['physicsImpostor'] = _0x4e1b3a['type']); } this['metadata'] && (_0x2ddda2['metadata'] = this['metadata']), _0x2ddda2['instances'] = []; for (var _0x40fad4 = 0x0; _0x40fad4 < this['instances']['length']; _0x40fad4++) { var _0x442654 = this['instances'][_0x40fad4]; if (!_0x442654['doNotSerialize']) { var _0x36d4aa = { 'name': _0x442654['name'], 'id': _0x442654['id'], 'position': _0x442654['position']['asArray'](), 'scaling': _0x442654['scaling']['asArray']() }; _0x442654['parent'] && (_0x36d4aa['parentId'] = _0x442654['parent']['id']), _0x442654['rotationQuaternion'] ? _0x36d4aa['rotationQuaternion'] = _0x442654['rotationQuaternion']['asArray']() : _0x442654['rotation'] && (_0x36d4aa['rotation'] = _0x442654['rotation']['asArray']()), _0x2ddda2['instances']['push'](_0x36d4aa), _0x16d985['a']['AppendSerializedAnimations'](_0x442654, _0x36d4aa), _0x36d4aa['ranges'] = _0x442654['serializeAnimationRanges'](); } } _0x16d985['a']['AppendSerializedAnimations'](this, _0x2ddda2), _0x2ddda2['ranges'] = this['serializeAnimationRanges'](), _0x2ddda2['layerMask'] = this['layerMask'], _0x2ddda2['alphaIndex'] = this['alphaIndex'], _0x2ddda2['hasVertexAlpha'] = this['hasVertexAlpha'], _0x2ddda2['overlayAlpha'] = this['overlayAlpha'], _0x2ddda2['overlayColor'] = this['overlayColor']['asArray'](), _0x2ddda2['renderOverlay'] = this['renderOverlay'], _0x2ddda2['applyFog'] = this['applyFog'], this['actionManager'] && (_0x2ddda2['actions'] = this['actionManager']['serialize'](this['name'])); } , _0x4dc7f5['prototype']['_syncGeometryWithMorphTargetManager'] = function() { if (this['geometry']) { this['_markSubMeshesAsAttributesDirty'](); var _0x1c8e93 = this['_internalMeshDataInfo']['_morphTargetManager']; if (_0x1c8e93 && _0x1c8e93['vertexCount']) { if (_0x1c8e93['vertexCount'] !== this['getTotalVertices']()) return _0x651ae7['a']['Error']('Mesh\x20is\x20incompatible\x20with\x20morph\x20targets.\x20Targets\x20and\x20mesh\x20must\x20all\x20have\x20the\x20same\x20vertices\x20count.'), void (this['morphTargetManager'] = null); for (var _0x13b70a = 0x0; _0x13b70a < _0x1c8e93['numInfluencers']; _0x13b70a++) { var _0x31b765 = _0x1c8e93['getActiveTarget'](_0x13b70a) , _0x3dd38c = _0x31b765['getPositions'](); if (!_0x3dd38c) return void _0x651ae7['a']['Error']('Invalid\x20morph\x20target.\x20Target\x20must\x20have\x20positions.'); this['geometry']['setVerticesData'](_0x566195['b']['PositionKind'] + _0x13b70a, _0x3dd38c, !0x1, 0x3); var _0x817be6 = _0x31b765['getNormals'](); _0x817be6 && this['geometry']['setVerticesData'](_0x566195['b']['NormalKind'] + _0x13b70a, _0x817be6, !0x1, 0x3); var _0x1d4de0 = _0x31b765['getTangents'](); _0x1d4de0 && this['geometry']['setVerticesData'](_0x566195['b']['TangentKind'] + _0x13b70a, _0x1d4de0, !0x1, 0x3); } } else for (_0x13b70a = 0x0; this['geometry']['isVerticesDataPresent'](_0x566195['b']['PositionKind'] + _0x13b70a); ) this['geometry']['removeVerticesData'](_0x566195['b']['PositionKind'] + _0x13b70a), this['geometry']['isVerticesDataPresent'](_0x566195['b']['NormalKind'] + _0x13b70a) && this['geometry']['removeVerticesData'](_0x566195['b']['NormalKind'] + _0x13b70a), this['geometry']['isVerticesDataPresent'](_0x566195['b']['TangentKind'] + _0x13b70a) && this['geometry']['removeVerticesData'](_0x566195['b']['TangentKind'] + _0x13b70a), _0x13b70a++; } } , _0x4dc7f5['Parse'] = function(_0x56de8c, _0x192270, _0x4b1d61) { var _0xd5a9ca; if ((_0xd5a9ca = _0x56de8c['type'] && 'GroundMesh' === _0x56de8c['type'] ? _0x4dc7f5['_GroundMeshParser'](_0x56de8c, _0x192270) : new _0x4dc7f5(_0x56de8c['name'],_0x192270))['id'] = _0x56de8c['id'], _0xfac2e0['a'] && _0xfac2e0['a']['AddTagsTo'](_0xd5a9ca, _0x56de8c['tags']), _0xd5a9ca['position'] = _0x564b55['x']['FromArray'](_0x56de8c['position']), void 0x0 !== _0x56de8c['metadata'] && (_0xd5a9ca['metadata'] = _0x56de8c['metadata']), _0x56de8c['rotationQuaternion'] ? _0xd5a9ca['rotationQuaternion'] = _0x564b55['q']['FromArray'](_0x56de8c['rotationQuaternion']) : _0x56de8c['rotation'] && (_0xd5a9ca['rotation'] = _0x564b55['x']['FromArray'](_0x56de8c['rotation'])), _0xd5a9ca['scaling'] = _0x564b55['x']['FromArray'](_0x56de8c['scaling']), _0x56de8c['localMatrix'] ? _0xd5a9ca['setPreTransformMatrix'](_0x564b55['j']['FromArray'](_0x56de8c['localMatrix'])) : _0x56de8c['pivotMatrix'] && _0xd5a9ca['setPivotMatrix'](_0x564b55['j']['FromArray'](_0x56de8c['pivotMatrix'])), _0xd5a9ca['setEnabled'](_0x56de8c['isEnabled']), _0xd5a9ca['isVisible'] = _0x56de8c['isVisible'], _0xd5a9ca['infiniteDistance'] = _0x56de8c['infiniteDistance'], _0xd5a9ca['showBoundingBox'] = _0x56de8c['showBoundingBox'], _0xd5a9ca['showSubMeshesBoundingBox'] = _0x56de8c['showSubMeshesBoundingBox'], void 0x0 !== _0x56de8c['applyFog'] && (_0xd5a9ca['applyFog'] = _0x56de8c['applyFog']), void 0x0 !== _0x56de8c['pickable'] && (_0xd5a9ca['isPickable'] = _0x56de8c['pickable']), void 0x0 !== _0x56de8c['alphaIndex'] && (_0xd5a9ca['alphaIndex'] = _0x56de8c['alphaIndex']), _0xd5a9ca['receiveShadows'] = _0x56de8c['receiveShadows'], _0xd5a9ca['billboardMode'] = _0x56de8c['billboardMode'], void 0x0 !== _0x56de8c['visibility'] && (_0xd5a9ca['visibility'] = _0x56de8c['visibility']), _0xd5a9ca['checkCollisions'] = _0x56de8c['checkCollisions'], void 0x0 !== _0x56de8c['isBlocker'] && (_0xd5a9ca['isBlocker'] = _0x56de8c['isBlocker']), _0xd5a9ca['_shouldGenerateFlatShading'] = _0x56de8c['useFlatShading'], _0x56de8c['freezeWorldMatrix'] && (_0xd5a9ca['_waitingData']['freezeWorldMatrix'] = _0x56de8c['freezeWorldMatrix']), _0x56de8c['parentId'] && (_0xd5a9ca['_waitingParentId'] = _0x56de8c['parentId']), void 0x0 !== _0x56de8c['actions'] && (_0xd5a9ca['_waitingData']['actions'] = _0x56de8c['actions']), void 0x0 !== _0x56de8c['overlayAlpha'] && (_0xd5a9ca['overlayAlpha'] = _0x56de8c['overlayAlpha']), void 0x0 !== _0x56de8c['overlayColor'] && (_0xd5a9ca['overlayColor'] = _0x564b55['e']['FromArray'](_0x56de8c['overlayColor'])), void 0x0 !== _0x56de8c['renderOverlay'] && (_0xd5a9ca['renderOverlay'] = _0x56de8c['renderOverlay']), _0xd5a9ca['isUnIndexed'] = !!_0x56de8c['isUnIndexed'], _0xd5a9ca['hasVertexAlpha'] = _0x56de8c['hasVertexAlpha'], _0x56de8c['delayLoadingFile'] ? (_0xd5a9ca['delayLoadState'] = _0x11dda0['a']['DELAYLOADSTATE_NOTLOADED'], _0xd5a9ca['delayLoadingFile'] = _0x4b1d61 + _0x56de8c['delayLoadingFile'], _0xd5a9ca['_boundingInfo'] = new _0x580b71['a'](_0x564b55['x']['FromArray'](_0x56de8c['boundingBoxMinimum']),_0x564b55['x']['FromArray'](_0x56de8c['boundingBoxMaximum'])), _0x56de8c['_binaryInfo'] && (_0xd5a9ca['_binaryInfo'] = _0x56de8c['_binaryInfo']), _0xd5a9ca['_delayInfo'] = [], _0x56de8c['hasUVs'] && _0xd5a9ca['_delayInfo']['push'](_0x566195['b']['UVKind']), _0x56de8c['hasUVs2'] && _0xd5a9ca['_delayInfo']['push'](_0x566195['b']['UV2Kind']), _0x56de8c['hasUVs3'] && _0xd5a9ca['_delayInfo']['push'](_0x566195['b']['UV3Kind']), _0x56de8c['hasUVs4'] && _0xd5a9ca['_delayInfo']['push'](_0x566195['b']['UV4Kind']), _0x56de8c['hasUVs5'] && _0xd5a9ca['_delayInfo']['push'](_0x566195['b']['UV5Kind']), _0x56de8c['hasUVs6'] && _0xd5a9ca['_delayInfo']['push'](_0x566195['b']['UV6Kind']), _0x56de8c['hasColors'] && _0xd5a9ca['_delayInfo']['push'](_0x566195['b']['ColorKind']), _0x56de8c['hasMatricesIndices'] && _0xd5a9ca['_delayInfo']['push'](_0x566195['b']['MatricesIndicesKind']), _0x56de8c['hasMatricesWeights'] && _0xd5a9ca['_delayInfo']['push'](_0x566195['b']['MatricesWeightsKind']), _0xd5a9ca['_delayLoadingFunction'] = _0x3ce75b['a']['_ImportGeometry'], _0x38d900['a']['ForceFullSceneLoadingForIncremental'] && _0xd5a9ca['_checkDelayState']()) : _0x3ce75b['a']['_ImportGeometry'](_0x56de8c, _0xd5a9ca), _0x56de8c['materialId'] ? _0xd5a9ca['setMaterialByID'](_0x56de8c['materialId']) : _0xd5a9ca['material'] = null, _0x56de8c['morphTargetManagerId'] > -0x1 && (_0xd5a9ca['morphTargetManager'] = _0x192270['getMorphTargetManagerById'](_0x56de8c['morphTargetManagerId'])), _0x56de8c['skeletonId'] > -0x1 && (_0xd5a9ca['skeleton'] = _0x192270['getLastSkeletonByID'](_0x56de8c['skeletonId']), _0x56de8c['numBoneInfluencers'] && (_0xd5a9ca['numBoneInfluencers'] = _0x56de8c['numBoneInfluencers'])), _0x56de8c['animations']) { for (var _0x51c291 = 0x0; _0x51c291 < _0x56de8c['animations']['length']; _0x51c291++) { var _0x2db79e = _0x56de8c['animations'][_0x51c291]; (_0x3ec65a = _0x4d4b99['a']['GetClass']('BABYLON.Animation')) && _0xd5a9ca['animations']['push'](_0x3ec65a['Parse'](_0x2db79e)); } _0x3de53f['a']['ParseAnimationRanges'](_0xd5a9ca, _0x56de8c, _0x192270); } if (_0x56de8c['autoAnimate'] && _0x192270['beginAnimation'](_0xd5a9ca, _0x56de8c['autoAnimateFrom'], _0x56de8c['autoAnimateTo'], _0x56de8c['autoAnimateLoop'], _0x56de8c['autoAnimateSpeed'] || 0x1), _0x56de8c['layerMask'] && !isNaN(_0x56de8c['layerMask']) ? _0xd5a9ca['layerMask'] = Math['abs'](parseInt(_0x56de8c['layerMask'])) : _0xd5a9ca['layerMask'] = 0xfffffff, _0x56de8c['physicsImpostor'] && _0x4dc7f5['_PhysicsImpostorParser'](_0x192270, _0xd5a9ca, _0x56de8c), _0x56de8c['lodMeshIds'] && (_0xd5a9ca['_waitingData']['lods'] = { 'ids': _0x56de8c['lodMeshIds'], 'distances': _0x56de8c['lodDistances'] ? _0x56de8c['lodDistances'] : null, 'coverages': _0x56de8c['lodCoverages'] ? _0x56de8c['lodCoverages'] : null }), _0x56de8c['instances']) for (var _0x4dd95e = 0x0; _0x4dd95e < _0x56de8c['instances']['length']; _0x4dd95e++) { var _0x2593af = _0x56de8c['instances'][_0x4dd95e] , _0x6ede6a = _0xd5a9ca['createInstance'](_0x2593af['name']); if (_0x2593af['id'] && (_0x6ede6a['id'] = _0x2593af['id']), _0xfac2e0['a'] && (_0x2593af['tags'] ? _0xfac2e0['a']['AddTagsTo'](_0x6ede6a, _0x2593af['tags']) : _0xfac2e0['a']['AddTagsTo'](_0x6ede6a, _0x56de8c['tags'])), _0x6ede6a['position'] = _0x564b55['x']['FromArray'](_0x2593af['position']), void 0x0 !== _0x2593af['metadata'] && (_0x6ede6a['metadata'] = _0x2593af['metadata']), _0x2593af['parentId'] && (_0x6ede6a['_waitingParentId'] = _0x2593af['parentId']), _0x2593af['rotationQuaternion'] ? _0x6ede6a['rotationQuaternion'] = _0x564b55['q']['FromArray'](_0x2593af['rotationQuaternion']) : _0x2593af['rotation'] && (_0x6ede6a['rotation'] = _0x564b55['x']['FromArray'](_0x2593af['rotation'])), _0x6ede6a['scaling'] = _0x564b55['x']['FromArray'](_0x2593af['scaling']), null != _0x2593af['checkCollisions'] && null != _0x2593af['checkCollisions'] && (_0x6ede6a['checkCollisions'] = _0x2593af['checkCollisions']), null != _0x2593af['pickable'] && null != _0x2593af['pickable'] && (_0x6ede6a['isPickable'] = _0x2593af['pickable']), null != _0x2593af['showBoundingBox'] && null != _0x2593af['showBoundingBox'] && (_0x6ede6a['showBoundingBox'] = _0x2593af['showBoundingBox']), null != _0x2593af['showSubMeshesBoundingBox'] && null != _0x2593af['showSubMeshesBoundingBox'] && (_0x6ede6a['showSubMeshesBoundingBox'] = _0x2593af['showSubMeshesBoundingBox']), null != _0x2593af['alphaIndex'] && null != _0x2593af['showSubMeshesBoundingBox'] && (_0x6ede6a['alphaIndex'] = _0x2593af['alphaIndex']), _0x2593af['physicsImpostor'] && _0x4dc7f5['_PhysicsImpostorParser'](_0x192270, _0x6ede6a, _0x2593af), _0x2593af['animations']) { for (_0x51c291 = 0x0; _0x51c291 < _0x2593af['animations']['length']; _0x51c291++) { var _0x3ec65a; _0x2db79e = _0x2593af['animations'][_0x51c291], (_0x3ec65a = _0x4d4b99['a']['GetClass']('BABYLON.Animation')) && _0x6ede6a['animations']['push'](_0x3ec65a['Parse'](_0x2db79e)); } _0x3de53f['a']['ParseAnimationRanges'](_0x6ede6a, _0x2593af, _0x192270), _0x2593af['autoAnimate'] && _0x192270['beginAnimation'](_0x6ede6a, _0x2593af['autoAnimateFrom'], _0x2593af['autoAnimateTo'], _0x2593af['autoAnimateLoop'], _0x2593af['autoAnimateSpeed'] || 0x1); } } return _0xd5a9ca; } , _0x4dc7f5['CreateRibbon'] = function(_0x50c5a4, _0x178cd0, _0x43ce30, _0x47e368, _0x70ad2f, _0x1232f6, _0x47eaf8, _0x448826, _0x5cd6fa) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateDisc'] = function(_0x4d6b6b, _0x499e26, _0x465c03, _0xc3afea, _0x37d0a8, _0x42b093) { throw void 0x0 === _0xc3afea && (_0xc3afea = null), _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateBox'] = function(_0x17127c, _0x6b73c2, _0xca2686, _0x2360f0, _0x539dc2) { throw void 0x0 === _0xca2686 && (_0xca2686 = null), _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateSphere'] = function(_0x37e040, _0x1388a3, _0x3b942c, _0x36ac2a, _0xf06ad2, _0x8b4a4e) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateHemisphere'] = function(_0x1e04a3, _0x372b40, _0x4275a9, _0xc21a30) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateCylinder'] = function(_0x5076fe, _0x3af912, _0x5de6f6, _0x1dea4e, _0x276ea, _0x328095, _0x49985f, _0x32bb7a, _0x9ad4f8) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateTorus'] = function(_0x2e9c4c, _0x465904, _0x59b76f, _0x2f6aa0, _0x662b95, _0x3d9e0d, _0x333f64) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateTorusKnot'] = function(_0x4566e2, _0x5ef6fc, _0x2d9f2e, _0x46f4f4, _0xfc774f, _0x2816f8, _0x50fbb5, _0x17e151, _0x207980, _0x26aaa1) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateLines'] = function(_0x167a60, _0x41afea, _0x142cf0, _0x1719ea, _0x8a3893) { throw void 0x0 === _0x142cf0 && (_0x142cf0 = null), void 0x0 === _0x1719ea && (_0x1719ea = !0x1), void 0x0 === _0x8a3893 && (_0x8a3893 = null), _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateDashedLines'] = function(_0x840bb9, _0x436bae, _0x2845b4, _0xfb42ac, _0xd639a2, _0xa498df, _0x107228, _0x5222fe) { throw void 0x0 === _0xa498df && (_0xa498df = null), _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreatePolygon'] = function(_0xc1247d, _0x327752, _0x2b9a5c, _0x5aae5c, _0xae49c0, _0x4eaf0e, _0x5698e8) { throw void 0x0 === _0x5698e8 && (_0x5698e8 = earcut), _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['ExtrudePolygon'] = function(_0x1604b4, _0x2442e6, _0x15c156, _0x3a53b2, _0x2a94e6, _0x58ed3b, _0x5f4b12, _0x4568da) { throw void 0x0 === _0x4568da && (_0x4568da = earcut), _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['ExtrudeShape'] = function(_0x1ae7b4, _0x5e0a6c, _0x306c08, _0x42a4d2, _0x52c8, _0x5f54eb, _0x2565bc, _0x2602df, _0x47e67a, _0x1a3544) { throw void 0x0 === _0x2565bc && (_0x2565bc = null), _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['ExtrudeShapeCustom'] = function(_0x138efc, _0x1f908c, _0x290f1e, _0x32de40, _0x341c01, _0x45bfb8, _0x141cbf, _0x1daa1d, _0x21f248, _0x124537, _0x18b087, _0x10e93c) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateLathe'] = function(_0x44d5d6, _0x21cf39, _0x24c702, _0x30dde0, _0x53df9b, _0x10d6f6, _0x4e196a) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreatePlane'] = function(_0x5e9933, _0x3beac5, _0x344777, _0x5b9ffd, _0x47a505) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateGround'] = function(_0x3e470d, _0x275935, _0x16779f, _0x1553f3, _0x547607, _0x224731) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateTiledGround'] = function(_0x25e2d9, _0x236ffa, _0x4bfa40, _0x239e7b, _0x3fa5bc, _0x3f6cb4, _0xd938af, _0x8b1727, _0x45e02e) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateGroundFromHeightMap'] = function(_0x28184c, _0x3cd04a, _0x407dc5, _0x5ae2d6, _0x58d4a1, _0x52c31d, _0x43a4ab, _0x4eb9fe, _0x382ee2, _0x56f190, _0x1e0de1) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateTube'] = function(_0x2c024f, _0x23ae81, _0x470018, _0x5429af, _0x329a5f, _0x355e49, _0x425423, _0x4a8159, _0x2c6e74, _0x5b2377) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreatePolyhedron'] = function(_0x59462a, _0x5d3f61, _0x1b663a) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateIcoSphere'] = function(_0x79ed52, _0x518441, _0x53cb04) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['CreateDecal'] = function(_0x27f992, _0x67787e, _0x316d5c, _0x228701, _0x5ded25, _0x38d110) { throw _0x38b7f6['a']['WarnImport']('MeshBuilder'); } , _0x4dc7f5['prototype']['setPositionsForCPUSkinning'] = function() { var _0x3ebfa7 = this['_internalMeshDataInfo']; if (!_0x3ebfa7['_sourcePositions']) { var _0x3e7b2e = this['getVerticesData'](_0x566195['b']['PositionKind']); if (!_0x3e7b2e) return _0x3ebfa7['_sourcePositions']; _0x3ebfa7['_sourcePositions'] = new Float32Array(_0x3e7b2e), this['isVertexBufferUpdatable'](_0x566195['b']['PositionKind']) || this['setVerticesData'](_0x566195['b']['PositionKind'], _0x3e7b2e, !0x0); } return _0x3ebfa7['_sourcePositions']; } , _0x4dc7f5['prototype']['setNormalsForCPUSkinning'] = function() { var _0xc13280 = this['_internalMeshDataInfo']; if (!_0xc13280['_sourceNormals']) { var _0x2eea52 = this['getVerticesData'](_0x566195['b']['NormalKind']); if (!_0x2eea52) return _0xc13280['_sourceNormals']; _0xc13280['_sourceNormals'] = new Float32Array(_0x2eea52), this['isVertexBufferUpdatable'](_0x566195['b']['NormalKind']) || this['setVerticesData'](_0x566195['b']['NormalKind'], _0x2eea52, !0x0); } return _0xc13280['_sourceNormals']; } , _0x4dc7f5['prototype']['applySkeleton'] = function(_0x426063) { if (!this['geometry']) return this; if (this['geometry']['_softwareSkinningFrameId'] == this['getScene']()['getFrameId']()) return this; if (this['geometry']['_softwareSkinningFrameId'] = this['getScene']()['getFrameId'](), !this['isVerticesDataPresent'](_0x566195['b']['PositionKind'])) return this; if (!this['isVerticesDataPresent'](_0x566195['b']['NormalKind'])) return this; if (!this['isVerticesDataPresent'](_0x566195['b']['MatricesIndicesKind'])) return this; if (!this['isVerticesDataPresent'](_0x566195['b']['MatricesWeightsKind'])) return this; var _0x345d16 = this['_internalMeshDataInfo']; if (!_0x345d16['_sourcePositions']) { var _0x4b10 = this['subMeshes']['slice'](); this['setPositionsForCPUSkinning'](), this['subMeshes'] = _0x4b10; } _0x345d16['_sourceNormals'] || this['setNormalsForCPUSkinning'](); var _0x3759c3 = this['getVerticesData'](_0x566195['b']['PositionKind']); if (!_0x3759c3) return this; _0x3759c3 instanceof Float32Array || (_0x3759c3 = new Float32Array(_0x3759c3)); var _0x5284b9 = this['getVerticesData'](_0x566195['b']['NormalKind']); if (!_0x5284b9) return this; _0x5284b9 instanceof Float32Array || (_0x5284b9 = new Float32Array(_0x5284b9)); var _0x329f75 = this['getVerticesData'](_0x566195['b']['MatricesIndicesKind']) , _0x329ff2 = this['getVerticesData'](_0x566195['b']['MatricesWeightsKind']); if (!_0x329ff2 || !_0x329f75) return this; for (var _0xc7dc49, _0x379661 = this['numBoneInfluencers'] > 0x4, _0xa879fd = _0x379661 ? this['getVerticesData'](_0x566195['b']['MatricesIndicesExtraKind']) : null, _0x454b61 = _0x379661 ? this['getVerticesData'](_0x566195['b']['MatricesWeightsExtraKind']) : null, _0x48bd9a = _0x426063['getTransformMatrices'](this), _0xbf776e = _0x564b55['x']['Zero'](), _0x5e489a = new _0x564b55['j'](), _0x471b22 = new _0x564b55['j'](), _0x36144a = 0x0, _0x3a97d8 = 0x0; _0x3a97d8 < _0x3759c3['length']; _0x3a97d8 += 0x3, _0x36144a += 0x4) { var _0x46ebd3; for (_0xc7dc49 = 0x0; _0xc7dc49 < 0x4; _0xc7dc49++) (_0x46ebd3 = _0x329ff2[_0x36144a + _0xc7dc49]) > 0x0 && (_0x564b55['j']['FromFloat32ArrayToRefScaled'](_0x48bd9a, Math['floor'](0x10 * _0x329f75[_0x36144a + _0xc7dc49]), _0x46ebd3, _0x471b22), _0x5e489a['addToSelf'](_0x471b22)); if (_0x379661) for (_0xc7dc49 = 0x0; _0xc7dc49 < 0x4; _0xc7dc49++) (_0x46ebd3 = _0x454b61[_0x36144a + _0xc7dc49]) > 0x0 && (_0x564b55['j']['FromFloat32ArrayToRefScaled'](_0x48bd9a, Math['floor'](0x10 * _0xa879fd[_0x36144a + _0xc7dc49]), _0x46ebd3, _0x471b22), _0x5e489a['addToSelf'](_0x471b22)); _0x564b55['x']['TransformCoordinatesFromFloatsToRef'](_0x345d16['_sourcePositions'][_0x3a97d8], _0x345d16['_sourcePositions'][_0x3a97d8 + 0x1], _0x345d16['_sourcePositions'][_0x3a97d8 + 0x2], _0x5e489a, _0xbf776e), _0xbf776e['toArray'](_0x3759c3, _0x3a97d8), _0x564b55['x']['TransformNormalFromFloatsToRef'](_0x345d16['_sourceNormals'][_0x3a97d8], _0x345d16['_sourceNormals'][_0x3a97d8 + 0x1], _0x345d16['_sourceNormals'][_0x3a97d8 + 0x2], _0x5e489a, _0xbf776e), _0xbf776e['toArray'](_0x5284b9, _0x3a97d8), _0x5e489a['reset'](); } return this['updateVerticesData'](_0x566195['b']['PositionKind'], _0x3759c3), this['updateVerticesData'](_0x566195['b']['NormalKind'], _0x5284b9), this; } , _0x4dc7f5['MinMax'] = function(_0x29af1b) { var _0x18a5fd = null , _0x34feb6 = null; return _0x29af1b['forEach'](function(_0x20e7c0) { var _0x5ceafe = _0x20e7c0['getBoundingInfo']()['boundingBox']; _0x18a5fd && _0x34feb6 ? (_0x18a5fd['minimizeInPlace'](_0x5ceafe['minimumWorld']), _0x34feb6['maximizeInPlace'](_0x5ceafe['maximumWorld'])) : (_0x18a5fd = _0x5ceafe['minimumWorld'], _0x34feb6 = _0x5ceafe['maximumWorld']); }), _0x18a5fd && _0x34feb6 ? { 'min': _0x18a5fd, 'max': _0x34feb6 } : { 'min': _0x564b55['x']['Zero'](), 'max': _0x564b55['x']['Zero']() }; } , _0x4dc7f5['Center'] = function(_0x2d6a40) { var _0x2c5af5 = _0x2d6a40 instanceof Array ? _0x4dc7f5['MinMax'](_0x2d6a40) : _0x2d6a40; return _0x564b55['x']['Center'](_0x2c5af5['min'], _0x2c5af5['max']); } , _0x4dc7f5['MergeMeshes'] = function(_0x147e8f, _0x30df23, _0x3ee96d, _0x21ac02, _0x23f419, _0x82f489) { var _0xb8178a; if (void 0x0 === _0x30df23 && (_0x30df23 = !0x0), !_0x3ee96d) { var _0x473172 = 0x0; for (_0xb8178a = 0x0; _0xb8178a < _0x147e8f['length']; _0xb8178a++) if (_0x147e8f[_0xb8178a] && (_0x473172 += _0x147e8f[_0xb8178a]['getTotalVertices']()) > 0x10000) return _0x651ae7['a']['Warn']('Cannot\x20merge\x20meshes\x20because\x20resulting\x20mesh\x20will\x20have\x20more\x20than\x2065536\x20vertices.\x20Please\x20use\x20allow32BitsIndices\x20=\x20true\x20to\x20use\x2032\x20bits\x20indices'), null; } if (_0x82f489) { var _0x5a68f9, _0x2f5747, _0x3f3868 = null; _0x23f419 = !0x1; } var _0x3b3701, _0x247701 = new Array(), _0x34ab37 = new Array(), _0xceec55 = null, _0x568c64 = new Array(), _0x4772ef = null; for (_0xb8178a = 0x0; _0xb8178a < _0x147e8f['length']; _0xb8178a++) if (_0x147e8f[_0xb8178a]) { var _0x2cf554 = _0x147e8f[_0xb8178a]; if (_0x2cf554['isAnInstance']) return _0x651ae7['a']['Warn']('Cannot\x20merge\x20instance\x20meshes.'), null; var _0x5ab3ad = _0x2cf554['computeWorldMatrix'](!0x0); if ((_0x3b3701 = _0x3321ce['a']['ExtractFromMesh'](_0x2cf554, !0x0, !0x0))['transform'](_0x5ab3ad), _0xceec55 ? _0xceec55['merge'](_0x3b3701, _0x3ee96d) : (_0xceec55 = _0x3b3701, _0x4772ef = _0x2cf554), _0x23f419 && _0x568c64['push'](_0x2cf554['getTotalIndices']()), _0x82f489) if (_0x2cf554['material']) { var _0x30e7fa = _0x2cf554['material']; if (_0x30e7fa instanceof _0x15c00['a']) { for (_0x2f5747 = 0x0; _0x2f5747 < _0x30e7fa['subMaterials']['length']; _0x2f5747++) _0x247701['indexOf'](_0x30e7fa['subMaterials'][_0x2f5747]) < 0x0 && _0x247701['push'](_0x30e7fa['subMaterials'][_0x2f5747]); for (_0x5a68f9 = 0x0; _0x5a68f9 < _0x2cf554['subMeshes']['length']; _0x5a68f9++) _0x34ab37['push'](_0x247701['indexOf'](_0x30e7fa['subMaterials'][_0x2cf554['subMeshes'][_0x5a68f9]['materialIndex']])), _0x568c64['push'](_0x2cf554['subMeshes'][_0x5a68f9]['indexCount']); } else for (_0x247701['indexOf'](_0x30e7fa) < 0x0 && _0x247701['push'](_0x30e7fa), _0x5a68f9 = 0x0; _0x5a68f9 < _0x2cf554['subMeshes']['length']; _0x5a68f9++) _0x34ab37['push'](_0x247701['indexOf'](_0x30e7fa)), _0x568c64['push'](_0x2cf554['subMeshes'][_0x5a68f9]['indexCount']); } else for (_0x5a68f9 = 0x0; _0x5a68f9 < _0x2cf554['subMeshes']['length']; _0x5a68f9++) _0x34ab37['push'](0x0), _0x568c64['push'](_0x2cf554['subMeshes'][_0x5a68f9]['indexCount']); } if (_0x4772ef = _0x4772ef, _0x21ac02 || (_0x21ac02 = new _0x4dc7f5(_0x4772ef['name'] + '_merged',_0x4772ef['getScene']())), _0xceec55['applyToMesh'](_0x21ac02), _0x21ac02['checkCollisions'] = _0x4772ef['checkCollisions'], _0x30df23) for (_0xb8178a = 0x0; _0xb8178a < _0x147e8f['length']; _0xb8178a++) _0x147e8f[_0xb8178a] && _0x147e8f[_0xb8178a]['dispose'](); if (_0x23f419 || _0x82f489) { _0x21ac02['releaseSubMeshes'](), _0xb8178a = 0x0; for (var _0xaf6371 = 0x0; _0xb8178a < _0x568c64['length']; ) _0x1d85ce['b']['CreateFromIndices'](0x0, _0xaf6371, _0x568c64[_0xb8178a], _0x21ac02), _0xaf6371 += _0x568c64[_0xb8178a], _0xb8178a++; } if (_0x82f489) { for ((_0x3f3868 = new _0x15c00['a'](_0x4772ef['name'] + '_merged',_0x4772ef['getScene']()))['subMaterials'] = _0x247701, _0x5a68f9 = 0x0; _0x5a68f9 < _0x21ac02['subMeshes']['length']; _0x5a68f9++) _0x21ac02['subMeshes'][_0x5a68f9]['materialIndex'] = _0x34ab37[_0x5a68f9]; _0x21ac02['material'] = _0x3f3868; } else _0x21ac02['material'] = _0x4772ef['material']; return _0x21ac02; } , _0x4dc7f5['prototype']['addInstance'] = function(_0x22ca23) { _0x22ca23['_indexInSourceMeshInstanceArray'] = this['instances']['length'], this['instances']['push'](_0x22ca23); } , _0x4dc7f5['prototype']['removeInstance'] = function(_0x5b25ad) { var _0x38f2de = _0x5b25ad['_indexInSourceMeshInstanceArray']; if (-0x1 != _0x38f2de) { if (_0x38f2de !== this['instances']['length'] - 0x1) { var _0x69b5ed = this['instances'][this['instances']['length'] - 0x1]; this['instances'][_0x38f2de] = _0x69b5ed, _0x69b5ed['_indexInSourceMeshInstanceArray'] = _0x38f2de; } _0x5b25ad['_indexInSourceMeshInstanceArray'] = -0x1, this['instances']['pop'](); } } , _0x4dc7f5['FRONTSIDE'] = _0x3321ce['a']['FRONTSIDE'], _0x4dc7f5['BACKSIDE'] = _0x3321ce['a']['BACKSIDE'], _0x4dc7f5['DOUBLESIDE'] = _0x3321ce['a']['DOUBLESIDE'], _0x4dc7f5['DEFAULTSIDE'] = _0x3321ce['a']['DEFAULTSIDE'], _0x4dc7f5['NO_CAP'] = 0x0, _0x4dc7f5['CAP_START'] = 0x1, _0x4dc7f5['CAP_END'] = 0x2, _0x4dc7f5['CAP_ALL'] = 0x3, _0x4dc7f5['_GroundMeshParser'] = function(_0x341f06, _0x52311a) { throw _0x38b7f6['a']['WarnImport']('GroundMesh'); } , _0x4dc7f5; }(_0x223115['a']); } , function(_0x17442c, _0x1d8ab1, _0x2a7302) { 'use strict'; _0x2a7302['d'](_0x1d8ab1, 'a', function() { return _0x35d13f; }); var _0x35d13f = function() { function _0x29b10e() {} return _0x29b10e['WithinEpsilon'] = function(_0x250cf8, _0x526b3a, _0x57ec62) { void 0x0 === _0x57ec62 && (_0x57ec62 = 1.401298e-45); var _0x4430b9 = _0x250cf8 - _0x526b3a; return -_0x57ec62 <= _0x4430b9 && _0x4430b9 <= _0x57ec62; } , _0x29b10e['ToHex'] = function(_0x591244) { var _0xcf97e9 = _0x591244['toString'](0x10); return _0x591244 <= 0xf ? ('0' + _0xcf97e9)['toUpperCase']() : _0xcf97e9['toUpperCase'](); } , _0x29b10e['Sign'] = function(_0xf89893) { return 0x0 === (_0xf89893 = +_0xf89893) || isNaN(_0xf89893) ? _0xf89893 : _0xf89893 > 0x0 ? 0x1 : -0x1; } , _0x29b10e['Clamp'] = function(_0x234df4, _0x497991, _0x480958) { return void 0x0 === _0x497991 && (_0x497991 = 0x0), void 0x0 === _0x480958 && (_0x480958 = 0x1), Math['min'](_0x480958, Math['max'](_0x497991, _0x234df4)); } , _0x29b10e['Log2'] = function(_0x50e29d) { return Math['log'](_0x50e29d) * Math['LOG2E']; } , _0x29b10e['Repeat'] = function(_0x17060e, _0x243f1e) { return _0x17060e - Math['floor'](_0x17060e / _0x243f1e) * _0x243f1e; } , _0x29b10e['Normalize'] = function(_0x26457a, _0x1b757d, _0x14148d) { return (_0x26457a - _0x1b757d) / (_0x14148d - _0x1b757d); } , _0x29b10e['Denormalize'] = function(_0x167e2d, _0x34218e, _0x585f55) { return _0x167e2d * (_0x585f55 - _0x34218e) + _0x34218e; } , _0x29b10e['DeltaAngle'] = function(_0x79602c, _0x715287) { var _0xcf5845 = _0x29b10e['Repeat'](_0x715287 - _0x79602c, 0x168); return _0xcf5845 > 0xb4 && (_0xcf5845 -= 0x168), _0xcf5845; } , _0x29b10e['PingPong'] = function(_0x1a074d, _0xf1db7b) { var _0x2376ba = _0x29b10e['Repeat'](_0x1a074d, 0x2 * _0xf1db7b); return _0xf1db7b - Math['abs'](_0x2376ba - _0xf1db7b); } , _0x29b10e['SmoothStep'] = function(_0x28adc0, _0x4f9432, _0x531c62) { var _0x21f42a = _0x29b10e['Clamp'](_0x531c62); return _0x4f9432 * (_0x21f42a = -0x2 * _0x21f42a * _0x21f42a * _0x21f42a + 0x3 * _0x21f42a * _0x21f42a) + _0x28adc0 * (0x1 - _0x21f42a); } , _0x29b10e['MoveTowards'] = function(_0x5a8f91, _0x2c61de, _0x21ff43) { return Math['abs'](_0x2c61de - _0x5a8f91) <= _0x21ff43 ? _0x2c61de : _0x5a8f91 + _0x29b10e['Sign'](_0x2c61de - _0x5a8f91) * _0x21ff43; } , _0x29b10e['MoveTowardsAngle'] = function(_0x250241, _0x13ef0b, _0x268e7d) { var _0x5b19df = _0x29b10e['DeltaAngle'](_0x250241, _0x13ef0b) , _0x2cdc76 = 0x0; return -_0x268e7d < _0x5b19df && _0x5b19df < _0x268e7d ? _0x2cdc76 = _0x13ef0b : (_0x13ef0b = _0x250241 + _0x5b19df, _0x2cdc76 = _0x29b10e['MoveTowards'](_0x250241, _0x13ef0b, _0x268e7d)), _0x2cdc76; } , _0x29b10e['Lerp'] = function(_0x3c4a01, _0x8efb3d, _0x2f1049) { return _0x3c4a01 + (_0x8efb3d - _0x3c4a01) * _0x2f1049; } , _0x29b10e['LerpAngle'] = function(_0x5bcd28, _0x4025d6, _0x196318) { var _0x357bbf = _0x29b10e['Repeat'](_0x4025d6 - _0x5bcd28, 0x168); return _0x357bbf > 0xb4 && (_0x357bbf -= 0x168), _0x5bcd28 + _0x357bbf * _0x29b10e['Clamp'](_0x196318); } , _0x29b10e['InverseLerp'] = function(_0x299af8, _0x4a6677, _0x5563d0) { return _0x299af8 != _0x4a6677 ? _0x29b10e['Clamp']((_0x5563d0 - _0x299af8) / (_0x4a6677 - _0x299af8)) : 0x0; } , _0x29b10e['Hermite'] = function(_0x1b2882, _0x590941, _0x2f6c29, _0x5ac836, _0x400625) { var _0x4a4795 = _0x400625 * _0x400625 , _0x47b459 = _0x400625 * _0x4a4795; return _0x1b2882 * (0x2 * _0x47b459 - 0x3 * _0x4a4795 + 0x1) + _0x2f6c29 * (-0x2 * _0x47b459 + 0x3 * _0x4a4795) + _0x590941 * (_0x47b459 - 0x2 * _0x4a4795 + _0x400625) + _0x5ac836 * (_0x47b459 - _0x4a4795); } , _0x29b10e['RandomRange'] = function(_0x3b592a, _0x409f8e) { return _0x3b592a === _0x409f8e ? _0x3b592a : Math['random']() * (_0x409f8e - _0x3b592a) + _0x3b592a; } , _0x29b10e['RangeToPercent'] = function(_0x1495c7, _0xb8e5db, _0x3118c3) { return (_0x1495c7 - _0xb8e5db) / (_0x3118c3 - _0xb8e5db); } , _0x29b10e['PercentToRange'] = function(_0x52d712, _0x438ae7, _0x312719) { return (_0x312719 - _0x438ae7) * _0x52d712 + _0x438ae7; } , _0x29b10e['NormalizeRadians'] = function(_0x1dc64c) { return _0x1dc64c -= _0x29b10e['TwoPi'] * Math['floor']((_0x1dc64c + Math['PI']) / _0x29b10e['TwoPi']); } , _0x29b10e['TwoPi'] = 0x2 * Math['PI'], _0x29b10e; }(); } , function(_0x4481f3, _0x3f61e7, _0x2a4040) { 'use strict'; _0x2a4040['d'](_0x3f61e7, 'a', function() { return _0x32a302; }); var _0x39cf6f = _0x2a4040(0x0) , _0x5e422a = _0x2a4040(0x4) , _0x563921 = _0x2a4040(0x13) , _0x32a302 = function() { function _0x4021bf() {} return _0x4021bf['prototype']['set'] = function(_0x80d2b4, _0x35ecd2) { switch (_0x35ecd2) { case _0x5e422a['b']['PositionKind']: this['positions'] = _0x80d2b4; break; case _0x5e422a['b']['NormalKind']: this['normals'] = _0x80d2b4; break; case _0x5e422a['b']['TangentKind']: this['tangents'] = _0x80d2b4; break; case _0x5e422a['b']['UVKind']: this['uvs'] = _0x80d2b4; break; case _0x5e422a['b']['UV2Kind']: this['uvs2'] = _0x80d2b4; break; case _0x5e422a['b']['UV3Kind']: this['uvs3'] = _0x80d2b4; break; case _0x5e422a['b']['UV4Kind']: this['uvs4'] = _0x80d2b4; break; case _0x5e422a['b']['UV5Kind']: this['uvs5'] = _0x80d2b4; break; case _0x5e422a['b']['UV6Kind']: this['uvs6'] = _0x80d2b4; break; case _0x5e422a['b']['ColorKind']: this['colors'] = _0x80d2b4; break; case _0x5e422a['b']['MatricesIndicesKind']: this['matricesIndices'] = _0x80d2b4; break; case _0x5e422a['b']['MatricesWeightsKind']: this['matricesWeights'] = _0x80d2b4; break; case _0x5e422a['b']['MatricesIndicesExtraKind']: this['matricesIndicesExtra'] = _0x80d2b4; break; case _0x5e422a['b']['MatricesWeightsExtraKind']: this['matricesWeightsExtra'] = _0x80d2b4; } } , _0x4021bf['prototype']['applyToMesh'] = function(_0x301d7c, _0x5aa767) { return this['_applyTo'](_0x301d7c, _0x5aa767), this; } , _0x4021bf['prototype']['applyToGeometry'] = function(_0x211db9, _0x5c69f6) { return this['_applyTo'](_0x211db9, _0x5c69f6), this; } , _0x4021bf['prototype']['updateMesh'] = function(_0x3e87bc) { return this['_update'](_0x3e87bc), this; } , _0x4021bf['prototype']['updateGeometry'] = function(_0x31c33c) { return this['_update'](_0x31c33c), this; } , _0x4021bf['prototype']['_applyTo'] = function(_0x299e53, _0x2ca40d) { return void 0x0 === _0x2ca40d && (_0x2ca40d = !0x1), this['positions'] && _0x299e53['setVerticesData'](_0x5e422a['b']['PositionKind'], this['positions'], _0x2ca40d), this['normals'] && _0x299e53['setVerticesData'](_0x5e422a['b']['NormalKind'], this['normals'], _0x2ca40d), this['tangents'] && _0x299e53['setVerticesData'](_0x5e422a['b']['TangentKind'], this['tangents'], _0x2ca40d), this['uvs'] && _0x299e53['setVerticesData'](_0x5e422a['b']['UVKind'], this['uvs'], _0x2ca40d), this['uvs2'] && _0x299e53['setVerticesData'](_0x5e422a['b']['UV2Kind'], this['uvs2'], _0x2ca40d), this['uvs3'] && _0x299e53['setVerticesData'](_0x5e422a['b']['UV3Kind'], this['uvs3'], _0x2ca40d), this['uvs4'] && _0x299e53['setVerticesData'](_0x5e422a['b']['UV4Kind'], this['uvs4'], _0x2ca40d), this['uvs5'] && _0x299e53['setVerticesData'](_0x5e422a['b']['UV5Kind'], this['uvs5'], _0x2ca40d), this['uvs6'] && _0x299e53['setVerticesData'](_0x5e422a['b']['UV6Kind'], this['uvs6'], _0x2ca40d), this['colors'] && _0x299e53['setVerticesData'](_0x5e422a['b']['ColorKind'], this['colors'], _0x2ca40d), this['matricesIndices'] && _0x299e53['setVerticesData'](_0x5e422a['b']['MatricesIndicesKind'], this['matricesIndices'], _0x2ca40d), this['matricesWeights'] && _0x299e53['setVerticesData'](_0x5e422a['b']['MatricesWeightsKind'], this['matricesWeights'], _0x2ca40d), this['matricesIndicesExtra'] && _0x299e53['setVerticesData'](_0x5e422a['b']['MatricesIndicesExtraKind'], this['matricesIndicesExtra'], _0x2ca40d), this['matricesWeightsExtra'] && _0x299e53['setVerticesData'](_0x5e422a['b']['MatricesWeightsExtraKind'], this['matricesWeightsExtra'], _0x2ca40d), this['indices'] ? _0x299e53['setIndices'](this['indices'], null, _0x2ca40d) : _0x299e53['setIndices']([], null), this; } , _0x4021bf['prototype']['_update'] = function(_0x13239e, _0xa351c5, _0x30939e) { return this['positions'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['PositionKind'], this['positions'], _0xa351c5, _0x30939e), this['normals'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['NormalKind'], this['normals'], _0xa351c5, _0x30939e), this['tangents'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['TangentKind'], this['tangents'], _0xa351c5, _0x30939e), this['uvs'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['UVKind'], this['uvs'], _0xa351c5, _0x30939e), this['uvs2'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['UV2Kind'], this['uvs2'], _0xa351c5, _0x30939e), this['uvs3'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['UV3Kind'], this['uvs3'], _0xa351c5, _0x30939e), this['uvs4'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['UV4Kind'], this['uvs4'], _0xa351c5, _0x30939e), this['uvs5'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['UV5Kind'], this['uvs5'], _0xa351c5, _0x30939e), this['uvs6'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['UV6Kind'], this['uvs6'], _0xa351c5, _0x30939e), this['colors'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['ColorKind'], this['colors'], _0xa351c5, _0x30939e), this['matricesIndices'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['MatricesIndicesKind'], this['matricesIndices'], _0xa351c5, _0x30939e), this['matricesWeights'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['MatricesWeightsKind'], this['matricesWeights'], _0xa351c5, _0x30939e), this['matricesIndicesExtra'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['MatricesIndicesExtraKind'], this['matricesIndicesExtra'], _0xa351c5, _0x30939e), this['matricesWeightsExtra'] && _0x13239e['updateVerticesData'](_0x5e422a['b']['MatricesWeightsExtraKind'], this['matricesWeightsExtra'], _0xa351c5, _0x30939e), this['indices'] && _0x13239e['setIndices'](this['indices'], null), this; } , _0x4021bf['prototype']['transform'] = function(_0x2566ea) { var _0x3db136, _0x27bfcc = _0x2566ea['m'][0x0] * _0x2566ea['m'][0x5] * _0x2566ea['m'][0xa] < 0x0, _0x43b2ab = _0x39cf6f['x']['Zero'](); if (this['positions']) { var _0x125bc8 = _0x39cf6f['x']['Zero'](); for (_0x3db136 = 0x0; _0x3db136 < this['positions']['length']; _0x3db136 += 0x3) _0x39cf6f['x']['FromArrayToRef'](this['positions'], _0x3db136, _0x125bc8), _0x39cf6f['x']['TransformCoordinatesToRef'](_0x125bc8, _0x2566ea, _0x43b2ab), this['positions'][_0x3db136] = _0x43b2ab['x'], this['positions'][_0x3db136 + 0x1] = _0x43b2ab['y'], this['positions'][_0x3db136 + 0x2] = _0x43b2ab['z']; } if (this['normals']) { var _0x3d0ac3 = _0x39cf6f['x']['Zero'](); for (_0x3db136 = 0x0; _0x3db136 < this['normals']['length']; _0x3db136 += 0x3) _0x39cf6f['x']['FromArrayToRef'](this['normals'], _0x3db136, _0x3d0ac3), _0x39cf6f['x']['TransformNormalToRef'](_0x3d0ac3, _0x2566ea, _0x43b2ab), this['normals'][_0x3db136] = _0x43b2ab['x'], this['normals'][_0x3db136 + 0x1] = _0x43b2ab['y'], this['normals'][_0x3db136 + 0x2] = _0x43b2ab['z']; } if (this['tangents']) { var _0xe62595 = _0x39cf6f['y']['Zero']() , _0x46e6b0 = _0x39cf6f['y']['Zero'](); for (_0x3db136 = 0x0; _0x3db136 < this['tangents']['length']; _0x3db136 += 0x4) _0x39cf6f['y']['FromArrayToRef'](this['tangents'], _0x3db136, _0xe62595), _0x39cf6f['y']['TransformNormalToRef'](_0xe62595, _0x2566ea, _0x46e6b0), this['tangents'][_0x3db136] = _0x46e6b0['x'], this['tangents'][_0x3db136 + 0x1] = _0x46e6b0['y'], this['tangents'][_0x3db136 + 0x2] = _0x46e6b0['z'], this['tangents'][_0x3db136 + 0x3] = _0x46e6b0['w']; } if (_0x27bfcc && this['indices']) for (_0x3db136 = 0x0; _0x3db136 < this['indices']['length']; _0x3db136 += 0x3) { var _0x173228 = this['indices'][_0x3db136 + 0x1]; this['indices'][_0x3db136 + 0x1] = this['indices'][_0x3db136 + 0x2], this['indices'][_0x3db136 + 0x2] = _0x173228; } return this; } , _0x4021bf['prototype']['merge'] = function(_0x41991b, _0x4b65c8) { if (void 0x0 === _0x4b65c8 && (_0x4b65c8 = !0x1), this['_validate'](), _0x41991b['_validate'](), !this['normals'] != !_0x41991b['normals'] || !this['tangents'] != !_0x41991b['tangents'] || !this['uvs'] != !_0x41991b['uvs'] || !this['uvs2'] != !_0x41991b['uvs2'] || !this['uvs3'] != !_0x41991b['uvs3'] || !this['uvs4'] != !_0x41991b['uvs4'] || !this['uvs5'] != !_0x41991b['uvs5'] || !this['uvs6'] != !_0x41991b['uvs6'] || !this['colors'] != !_0x41991b['colors'] || !this['matricesIndices'] != !_0x41991b['matricesIndices'] || !this['matricesWeights'] != !_0x41991b['matricesWeights'] || !this['matricesIndicesExtra'] != !_0x41991b['matricesIndicesExtra'] || !this['matricesWeightsExtra'] != !_0x41991b['matricesWeightsExtra']) throw new Error('Cannot\x20merge\x20vertex\x20data\x20that\x20do\x20not\x20have\x20the\x20same\x20set\x20of\x20attributes'); if (_0x41991b['indices']) { this['indices'] || (this['indices'] = []); var _0x36cf7d = this['positions'] ? this['positions']['length'] / 0x3 : 0x0; if (void 0x0 !== this['indices']['BYTES_PER_ELEMENT']) { var _0x579bf9 = this['indices']['length'] + _0x41991b['indices']['length'] , _0x48fc0b = _0x4b65c8 || this['indices']instanceof Uint32Array ? new Uint32Array(_0x579bf9) : new Uint16Array(_0x579bf9); _0x48fc0b['set'](this['indices']); for (var _0x39fdfb = this['indices']['length'], _0x3f7f86 = 0x0; _0x3f7f86 < _0x41991b['indices']['length']; _0x3f7f86++) _0x48fc0b[_0x39fdfb + _0x3f7f86] = _0x41991b['indices'][_0x3f7f86] + _0x36cf7d; this['indices'] = _0x48fc0b; } else for (_0x3f7f86 = 0x0; _0x3f7f86 < _0x41991b['indices']['length']; _0x3f7f86++) this['indices']['push'](_0x41991b['indices'][_0x3f7f86] + _0x36cf7d); } return this['positions'] = this['_mergeElement'](this['positions'], _0x41991b['positions']), this['normals'] = this['_mergeElement'](this['normals'], _0x41991b['normals']), this['tangents'] = this['_mergeElement'](this['tangents'], _0x41991b['tangents']), this['uvs'] = this['_mergeElement'](this['uvs'], _0x41991b['uvs']), this['uvs2'] = this['_mergeElement'](this['uvs2'], _0x41991b['uvs2']), this['uvs3'] = this['_mergeElement'](this['uvs3'], _0x41991b['uvs3']), this['uvs4'] = this['_mergeElement'](this['uvs4'], _0x41991b['uvs4']), this['uvs5'] = this['_mergeElement'](this['uvs5'], _0x41991b['uvs5']), this['uvs6'] = this['_mergeElement'](this['uvs6'], _0x41991b['uvs6']), this['colors'] = this['_mergeElement'](this['colors'], _0x41991b['colors']), this['matricesIndices'] = this['_mergeElement'](this['matricesIndices'], _0x41991b['matricesIndices']), this['matricesWeights'] = this['_mergeElement'](this['matricesWeights'], _0x41991b['matricesWeights']), this['matricesIndicesExtra'] = this['_mergeElement'](this['matricesIndicesExtra'], _0x41991b['matricesIndicesExtra']), this['matricesWeightsExtra'] = this['_mergeElement'](this['matricesWeightsExtra'], _0x41991b['matricesWeightsExtra']), this; } , _0x4021bf['prototype']['_mergeElement'] = function(_0x1ebbbc, _0x598878) { if (!_0x1ebbbc) return _0x598878; if (!_0x598878) return _0x1ebbbc; var _0x5d7361 = _0x598878['length'] + _0x1ebbbc['length'] , _0xa643c6 = _0x1ebbbc instanceof Float32Array , _0x4a10a5 = _0x598878 instanceof Float32Array; if (_0xa643c6) { var _0x48f3f6 = new Float32Array(_0x5d7361); return _0x48f3f6['set'](_0x1ebbbc), _0x48f3f6['set'](_0x598878, _0x1ebbbc['length']), _0x48f3f6; } if (_0x4a10a5) { var _0x20fbe2 = _0x1ebbbc['slice'](0x0) , _0xfe1e9e = 0x0; for (_0x5d7361 = _0x598878['length']; _0xfe1e9e < _0x5d7361; _0xfe1e9e++) _0x20fbe2['push'](_0x598878[_0xfe1e9e]); return _0x20fbe2; } return _0x1ebbbc['concat'](_0x598878); } , _0x4021bf['prototype']['_validate'] = function() { if (!this['positions']) throw new Error('Positions\x20are\x20required'); var _0x4cf593 = function(_0x5a424f, _0x28e914) { var _0x3fd3e5 = _0x5e422a['b']['DeduceStride'](_0x5a424f); if (_0x28e914['length'] % _0x3fd3e5 != 0x0) throw new Error('The\x20' + _0x5a424f + 's\x20array\x20count\x20must\x20be\x20a\x20multiple\x20of\x20' + _0x3fd3e5); return _0x28e914['length'] / _0x3fd3e5; } , _0x34193c = _0x4cf593(_0x5e422a['b']['PositionKind'], this['positions']) , _0x24f21c = function(_0x35fe4c, _0x3bf5d0) { var _0x1fa6ab = _0x4cf593(_0x35fe4c, _0x3bf5d0); if (_0x1fa6ab !== _0x34193c) throw new Error('The\x20' + _0x35fe4c + 's\x20element\x20count\x20(' + _0x1fa6ab + ')\x20does\x20not\x20match\x20the\x20positions\x20count\x20(' + _0x34193c + ')'); }; this['normals'] && _0x24f21c(_0x5e422a['b']['NormalKind'], this['normals']), this['tangents'] && _0x24f21c(_0x5e422a['b']['TangentKind'], this['tangents']), this['uvs'] && _0x24f21c(_0x5e422a['b']['UVKind'], this['uvs']), this['uvs2'] && _0x24f21c(_0x5e422a['b']['UV2Kind'], this['uvs2']), this['uvs3'] && _0x24f21c(_0x5e422a['b']['UV3Kind'], this['uvs3']), this['uvs4'] && _0x24f21c(_0x5e422a['b']['UV4Kind'], this['uvs4']), this['uvs5'] && _0x24f21c(_0x5e422a['b']['UV5Kind'], this['uvs5']), this['uvs6'] && _0x24f21c(_0x5e422a['b']['UV6Kind'], this['uvs6']), this['colors'] && _0x24f21c(_0x5e422a['b']['ColorKind'], this['colors']), this['matricesIndices'] && _0x24f21c(_0x5e422a['b']['MatricesIndicesKind'], this['matricesIndices']), this['matricesWeights'] && _0x24f21c(_0x5e422a['b']['MatricesWeightsKind'], this['matricesWeights']), this['matricesIndicesExtra'] && _0x24f21c(_0x5e422a['b']['MatricesIndicesExtraKind'], this['matricesIndicesExtra']), this['matricesWeightsExtra'] && _0x24f21c(_0x5e422a['b']['MatricesWeightsExtraKind'], this['matricesWeightsExtra']); } , _0x4021bf['prototype']['serialize'] = function() { var _0x567966 = this['serialize'](); return this['positions'] && (_0x567966['positions'] = this['positions']), this['normals'] && (_0x567966['normals'] = this['normals']), this['tangents'] && (_0x567966['tangents'] = this['tangents']), this['uvs'] && (_0x567966['uvs'] = this['uvs']), this['uvs2'] && (_0x567966['uvs2'] = this['uvs2']), this['uvs3'] && (_0x567966['uvs3'] = this['uvs3']), this['uvs4'] && (_0x567966['uvs4'] = this['uvs4']), this['uvs5'] && (_0x567966['uvs5'] = this['uvs5']), this['uvs6'] && (_0x567966['uvs6'] = this['uvs6']), this['colors'] && (_0x567966['colors'] = this['colors']), this['matricesIndices'] && (_0x567966['matricesIndices'] = this['matricesIndices'], _0x567966['matricesIndices']['_isExpanded'] = !0x0), this['matricesWeights'] && (_0x567966['matricesWeights'] = this['matricesWeights']), this['matricesIndicesExtra'] && (_0x567966['matricesIndicesExtra'] = this['matricesIndicesExtra'], _0x567966['matricesIndicesExtra']['_isExpanded'] = !0x0), this['matricesWeightsExtra'] && (_0x567966['matricesWeightsExtra'] = this['matricesWeightsExtra']), _0x567966['indices'] = this['indices'], _0x567966; } , _0x4021bf['ExtractFromMesh'] = function(_0x5566e6, _0xfd6305, _0x1aaebf) { return _0x4021bf['_ExtractFrom'](_0x5566e6, _0xfd6305, _0x1aaebf); } , _0x4021bf['ExtractFromGeometry'] = function(_0x126340, _0x17f216, _0x13da39) { return _0x4021bf['_ExtractFrom'](_0x126340, _0x17f216, _0x13da39); } , _0x4021bf['_ExtractFrom'] = function(_0x43e3be, _0x503b10, _0x56d6e8) { var _0xe077d = new _0x4021bf(); return _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['PositionKind']) && (_0xe077d['positions'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['PositionKind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['NormalKind']) && (_0xe077d['normals'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['NormalKind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['TangentKind']) && (_0xe077d['tangents'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['TangentKind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['UVKind']) && (_0xe077d['uvs'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['UVKind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['UV2Kind']) && (_0xe077d['uvs2'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['UV2Kind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['UV3Kind']) && (_0xe077d['uvs3'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['UV3Kind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['UV4Kind']) && (_0xe077d['uvs4'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['UV4Kind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['UV5Kind']) && (_0xe077d['uvs5'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['UV5Kind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['UV6Kind']) && (_0xe077d['uvs6'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['UV6Kind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['ColorKind']) && (_0xe077d['colors'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['ColorKind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['MatricesIndicesKind']) && (_0xe077d['matricesIndices'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['MatricesIndicesKind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['MatricesWeightsKind']) && (_0xe077d['matricesWeights'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['MatricesWeightsKind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['MatricesIndicesExtraKind']) && (_0xe077d['matricesIndicesExtra'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['MatricesIndicesExtraKind'], _0x503b10, _0x56d6e8)), _0x43e3be['isVerticesDataPresent'](_0x5e422a['b']['MatricesWeightsExtraKind']) && (_0xe077d['matricesWeightsExtra'] = _0x43e3be['getVerticesData'](_0x5e422a['b']['MatricesWeightsExtraKind'], _0x503b10, _0x56d6e8)), _0xe077d['indices'] = _0x43e3be['getIndices'](_0x503b10, _0x56d6e8), _0xe077d; } , _0x4021bf['CreateRibbon'] = function(_0x54db63) { throw _0x563921['a']['WarnImport']('ribbonBuilder'); } , _0x4021bf['CreateBox'] = function(_0x1852ca) { throw _0x563921['a']['WarnImport']('boxBuilder'); } , _0x4021bf['CreateSphere'] = function(_0x31cac3) { throw _0x563921['a']['WarnImport']('sphereBuilder'); } , _0x4021bf['CreateCylinder'] = function(_0x3afe11) { throw _0x563921['a']['WarnImport']('cylinderBuilder'); } , _0x4021bf['CreateTorus'] = function(_0x5d12b7) { throw _0x563921['a']['WarnImport']('torusBuilder'); } , _0x4021bf['CreateLineSystem'] = function(_0x582efc) { throw _0x563921['a']['WarnImport']('linesBuilder'); } , _0x4021bf['CreateDashedLines'] = function(_0x30c394) { throw _0x563921['a']['WarnImport']('linesBuilder'); } , _0x4021bf['CreateGround'] = function(_0x2457ca) { throw _0x563921['a']['WarnImport']('groundBuilder'); } , _0x4021bf['CreateTiledGround'] = function(_0x12cd5d) { throw _0x563921['a']['WarnImport']('groundBuilder'); } , _0x4021bf['CreateGroundFromHeightMap'] = function(_0x26c347) { throw _0x563921['a']['WarnImport']('groundBuilder'); } , _0x4021bf['CreatePlane'] = function(_0x5f13a5) { throw _0x563921['a']['WarnImport']('planeBuilder'); } , _0x4021bf['CreateDisc'] = function(_0x175f02) { throw _0x563921['a']['WarnImport']('discBuilder'); } , _0x4021bf['CreatePolygon'] = function(_0xea07ae, _0x45cba2, _0x73a742, _0x1af069, _0xe4ec72, _0x528688) { throw _0x563921['a']['WarnImport']('polygonBuilder'); } , _0x4021bf['CreateIcoSphere'] = function(_0x36dbe2) { throw _0x563921['a']['WarnImport']('icoSphereBuilder'); } , _0x4021bf['CreatePolyhedron'] = function(_0x18dfbf) { throw _0x563921['a']['WarnImport']('polyhedronBuilder'); } , _0x4021bf['CreateTorusKnot'] = function(_0x4692ff) { throw _0x563921['a']['WarnImport']('torusKnotBuilder'); } , _0x4021bf['ComputeNormals'] = function(_0x4d8a93, _0x32d561, _0x5848d7, _0x18f0f0) { var _0x595a40 = 0x0 , _0x2ea197 = 0x0 , _0x44a844 = 0x0 , _0x2c8a39 = 0x0 , _0x21853a = 0x0 , _0x1f1a99 = 0x0 , _0x4ea858 = 0x0 , _0x1f733c = 0x0 , _0x1f1029 = 0x0 , _0x2ce111 = 0x0 , _0x4ef399 = 0x0 , _0x8ae1cf = 0x0 , _0x354e51 = 0x0 , _0x21077e = 0x0 , _0x5f2e4a = 0x0 , _0x4d77f5 = 0x0 , _0x34191b = 0x0 , _0x298641 = 0x0 , _0x1fae6d = 0x0 , _0x59acc2 = 0x0 , _0xebe995 = !0x1 , _0x3c1dc2 = !0x1 , _0x47c70c = !0x1 , _0x4af396 = !0x1 , _0x2e36f4 = 0x1 , _0x54217a = 0x0 , _0x4f78c1 = null; if (_0x18f0f0 && (_0xebe995 = !!_0x18f0f0['facetNormals'], _0x3c1dc2 = !!_0x18f0f0['facetPositions'], _0x47c70c = !!_0x18f0f0['facetPartitioning'], _0x2e36f4 = !0x0 === _0x18f0f0['useRightHandedSystem'] ? -0x1 : 0x1, _0x54217a = _0x18f0f0['ratio'] || 0x0, _0x4af396 = !!_0x18f0f0['depthSort'], _0x4f78c1 = _0x18f0f0['distanceTo'], _0x4af396)) { void 0x0 === _0x4f78c1 && (_0x4f78c1 = _0x39cf6f['x']['Zero']()); var _0x345f8d = _0x18f0f0['depthSortedFacets']; } var _0x29ddd4 = 0x0 , _0x1a71ec = 0x0 , _0x219672 = 0x0 , _0x2ca1bb = 0x0; if (_0x47c70c && _0x18f0f0 && _0x18f0f0['bbSize']) { var _0x57f700 = 0x0 , _0x5c50bc = 0x0 , _0x5b4f67 = 0x0 , _0x2944dd = 0x0 , _0x3fcac6 = 0x0 , _0x5ccd51 = 0x0 , _0x430c10 = 0x0 , _0x47b7bc = 0x0 , _0x4ffde1 = 0x0 , _0x30f76a = 0x0 , _0x2d505c = 0x0 , _0x226ebb = 0x0 , _0x228093 = 0x0 , _0x21d840 = 0x0 , _0x2017bd = 0x0 , _0x3d2a93 = 0x0 , _0x58e487 = _0x18f0f0['bbSize']['x'] > _0x18f0f0['bbSize']['y'] ? _0x18f0f0['bbSize']['x'] : _0x18f0f0['bbSize']['y']; _0x58e487 = _0x58e487 > _0x18f0f0['bbSize']['z'] ? _0x58e487 : _0x18f0f0['bbSize']['z'], _0x29ddd4 = _0x18f0f0['subDiv']['X'] * _0x54217a / _0x18f0f0['bbSize']['x'], _0x1a71ec = _0x18f0f0['subDiv']['Y'] * _0x54217a / _0x18f0f0['bbSize']['y'], _0x219672 = _0x18f0f0['subDiv']['Z'] * _0x54217a / _0x18f0f0['bbSize']['z'], _0x2ca1bb = _0x18f0f0['subDiv']['max'] * _0x18f0f0['subDiv']['max'], _0x18f0f0['facetPartitioning']['length'] = 0x0; } for (_0x595a40 = 0x0; _0x595a40 < _0x4d8a93['length']; _0x595a40++) _0x5848d7[_0x595a40] = 0x0; var _0x535753 = _0x32d561['length'] / 0x3 | 0x0; for (_0x595a40 = 0x0; _0x595a40 < _0x535753; _0x595a40++) { if (_0x354e51 = (_0x8ae1cf = 0x3 * _0x32d561[0x3 * _0x595a40]) + 0x1, _0x21077e = _0x8ae1cf + 0x2, _0x4d77f5 = (_0x5f2e4a = 0x3 * _0x32d561[0x3 * _0x595a40 + 0x1]) + 0x1, _0x34191b = _0x5f2e4a + 0x2, _0x1fae6d = (_0x298641 = 0x3 * _0x32d561[0x3 * _0x595a40 + 0x2]) + 0x1, _0x59acc2 = _0x298641 + 0x2, _0x2ea197 = _0x4d8a93[_0x8ae1cf] - _0x4d8a93[_0x5f2e4a], _0x44a844 = _0x4d8a93[_0x354e51] - _0x4d8a93[_0x4d77f5], _0x2c8a39 = _0x4d8a93[_0x21077e] - _0x4d8a93[_0x34191b], _0x21853a = _0x4d8a93[_0x298641] - _0x4d8a93[_0x5f2e4a], _0x1f1a99 = _0x4d8a93[_0x1fae6d] - _0x4d8a93[_0x4d77f5], _0x1f733c = _0x2e36f4 * (_0x44a844 * (_0x4ea858 = _0x4d8a93[_0x59acc2] - _0x4d8a93[_0x34191b]) - _0x2c8a39 * _0x1f1a99), _0x1f1029 = _0x2e36f4 * (_0x2c8a39 * _0x21853a - _0x2ea197 * _0x4ea858), _0x2ce111 = _0x2e36f4 * (_0x2ea197 * _0x1f1a99 - _0x44a844 * _0x21853a), _0x1f733c /= _0x4ef399 = 0x0 === (_0x4ef399 = Math['sqrt'](_0x1f733c * _0x1f733c + _0x1f1029 * _0x1f1029 + _0x2ce111 * _0x2ce111)) ? 0x1 : _0x4ef399, _0x1f1029 /= _0x4ef399, _0x2ce111 /= _0x4ef399, _0xebe995 && _0x18f0f0 && (_0x18f0f0['facetNormals'][_0x595a40]['x'] = _0x1f733c, _0x18f0f0['facetNormals'][_0x595a40]['y'] = _0x1f1029, _0x18f0f0['facetNormals'][_0x595a40]['z'] = _0x2ce111), _0x3c1dc2 && _0x18f0f0 && (_0x18f0f0['facetPositions'][_0x595a40]['x'] = (_0x4d8a93[_0x8ae1cf] + _0x4d8a93[_0x5f2e4a] + _0x4d8a93[_0x298641]) / 0x3, _0x18f0f0['facetPositions'][_0x595a40]['y'] = (_0x4d8a93[_0x354e51] + _0x4d8a93[_0x4d77f5] + _0x4d8a93[_0x1fae6d]) / 0x3, _0x18f0f0['facetPositions'][_0x595a40]['z'] = (_0x4d8a93[_0x21077e] + _0x4d8a93[_0x34191b] + _0x4d8a93[_0x59acc2]) / 0x3), _0x47c70c && _0x18f0f0 && (_0x57f700 = Math['floor']((_0x18f0f0['facetPositions'][_0x595a40]['x'] - _0x18f0f0['bInfo']['minimum']['x'] * _0x54217a) * _0x29ddd4), _0x5c50bc = Math['floor']((_0x18f0f0['facetPositions'][_0x595a40]['y'] - _0x18f0f0['bInfo']['minimum']['y'] * _0x54217a) * _0x1a71ec), _0x5b4f67 = Math['floor']((_0x18f0f0['facetPositions'][_0x595a40]['z'] - _0x18f0f0['bInfo']['minimum']['z'] * _0x54217a) * _0x219672), _0x2944dd = Math['floor']((_0x4d8a93[_0x8ae1cf] - _0x18f0f0['bInfo']['minimum']['x'] * _0x54217a) * _0x29ddd4), _0x3fcac6 = Math['floor']((_0x4d8a93[_0x354e51] - _0x18f0f0['bInfo']['minimum']['y'] * _0x54217a) * _0x1a71ec), _0x5ccd51 = Math['floor']((_0x4d8a93[_0x21077e] - _0x18f0f0['bInfo']['minimum']['z'] * _0x54217a) * _0x219672), _0x430c10 = Math['floor']((_0x4d8a93[_0x5f2e4a] - _0x18f0f0['bInfo']['minimum']['x'] * _0x54217a) * _0x29ddd4), _0x47b7bc = Math['floor']((_0x4d8a93[_0x4d77f5] - _0x18f0f0['bInfo']['minimum']['y'] * _0x54217a) * _0x1a71ec), _0x4ffde1 = Math['floor']((_0x4d8a93[_0x34191b] - _0x18f0f0['bInfo']['minimum']['z'] * _0x54217a) * _0x219672), _0x30f76a = Math['floor']((_0x4d8a93[_0x298641] - _0x18f0f0['bInfo']['minimum']['x'] * _0x54217a) * _0x29ddd4), _0x2d505c = Math['floor']((_0x4d8a93[_0x1fae6d] - _0x18f0f0['bInfo']['minimum']['y'] * _0x54217a) * _0x1a71ec), _0x226ebb = Math['floor']((_0x4d8a93[_0x59acc2] - _0x18f0f0['bInfo']['minimum']['z'] * _0x54217a) * _0x219672), _0x21d840 = _0x2944dd + _0x18f0f0['subDiv']['max'] * _0x3fcac6 + _0x2ca1bb * _0x5ccd51, _0x2017bd = _0x430c10 + _0x18f0f0['subDiv']['max'] * _0x47b7bc + _0x2ca1bb * _0x4ffde1, _0x3d2a93 = _0x30f76a + _0x18f0f0['subDiv']['max'] * _0x2d505c + _0x2ca1bb * _0x226ebb, _0x228093 = _0x57f700 + _0x18f0f0['subDiv']['max'] * _0x5c50bc + _0x2ca1bb * _0x5b4f67, _0x18f0f0['facetPartitioning'][_0x228093] = _0x18f0f0['facetPartitioning'][_0x228093] ? _0x18f0f0['facetPartitioning'][_0x228093] : new Array(), _0x18f0f0['facetPartitioning'][_0x21d840] = _0x18f0f0['facetPartitioning'][_0x21d840] ? _0x18f0f0['facetPartitioning'][_0x21d840] : new Array(), _0x18f0f0['facetPartitioning'][_0x2017bd] = _0x18f0f0['facetPartitioning'][_0x2017bd] ? _0x18f0f0['facetPartitioning'][_0x2017bd] : new Array(), _0x18f0f0['facetPartitioning'][_0x3d2a93] = _0x18f0f0['facetPartitioning'][_0x3d2a93] ? _0x18f0f0['facetPartitioning'][_0x3d2a93] : new Array(), _0x18f0f0['facetPartitioning'][_0x21d840]['push'](_0x595a40), _0x2017bd != _0x21d840 && _0x18f0f0['facetPartitioning'][_0x2017bd]['push'](_0x595a40), _0x3d2a93 != _0x2017bd && _0x3d2a93 != _0x21d840 && _0x18f0f0['facetPartitioning'][_0x3d2a93]['push'](_0x595a40), _0x228093 != _0x21d840 && _0x228093 != _0x2017bd && _0x228093 != _0x3d2a93 && _0x18f0f0['facetPartitioning'][_0x228093]['push'](_0x595a40)), _0x4af396 && _0x18f0f0 && _0x18f0f0['facetPositions']) { var _0x227f65 = _0x345f8d[_0x595a40]; _0x227f65['ind'] = 0x3 * _0x595a40, _0x227f65['sqDistance'] = _0x39cf6f['x']['DistanceSquared'](_0x18f0f0['facetPositions'][_0x595a40], _0x4f78c1); } _0x5848d7[_0x8ae1cf] += _0x1f733c, _0x5848d7[_0x354e51] += _0x1f1029, _0x5848d7[_0x21077e] += _0x2ce111, _0x5848d7[_0x5f2e4a] += _0x1f733c, _0x5848d7[_0x4d77f5] += _0x1f1029, _0x5848d7[_0x34191b] += _0x2ce111, _0x5848d7[_0x298641] += _0x1f733c, _0x5848d7[_0x1fae6d] += _0x1f1029, _0x5848d7[_0x59acc2] += _0x2ce111; } for (_0x595a40 = 0x0; _0x595a40 < _0x5848d7['length'] / 0x3; _0x595a40++) _0x1f733c = _0x5848d7[0x3 * _0x595a40], _0x1f1029 = _0x5848d7[0x3 * _0x595a40 + 0x1], _0x2ce111 = _0x5848d7[0x3 * _0x595a40 + 0x2], _0x1f733c /= _0x4ef399 = 0x0 === (_0x4ef399 = Math['sqrt'](_0x1f733c * _0x1f733c + _0x1f1029 * _0x1f1029 + _0x2ce111 * _0x2ce111)) ? 0x1 : _0x4ef399, _0x1f1029 /= _0x4ef399, _0x2ce111 /= _0x4ef399, _0x5848d7[0x3 * _0x595a40] = _0x1f733c, _0x5848d7[0x3 * _0x595a40 + 0x1] = _0x1f1029, _0x5848d7[0x3 * _0x595a40 + 0x2] = _0x2ce111; } , _0x4021bf['_ComputeSides'] = function(_0x1fee06, _0x39a402, _0x14639f, _0x512126, _0x4b25ff, _0x207723, _0x49dda4) { var _0x137b18, _0x5117f1, _0x346d62 = _0x14639f['length'], _0x567dd3 = _0x512126['length']; switch (_0x1fee06 = _0x1fee06 || _0x4021bf['DEFAULTSIDE']) { case _0x4021bf['FRONTSIDE']: break; case _0x4021bf['BACKSIDE']: var _0x3b831e; for (_0x137b18 = 0x0; _0x137b18 < _0x346d62; _0x137b18 += 0x3) _0x3b831e = _0x14639f[_0x137b18], _0x14639f[_0x137b18] = _0x14639f[_0x137b18 + 0x2], _0x14639f[_0x137b18 + 0x2] = _0x3b831e; for (_0x5117f1 = 0x0; _0x5117f1 < _0x567dd3; _0x5117f1++) _0x512126[_0x5117f1] = -_0x512126[_0x5117f1]; break; case _0x4021bf['DOUBLESIDE']: for (var _0x2ab956 = _0x39a402['length'], _0x18203f = _0x2ab956 / 0x3, _0x479442 = 0x0; _0x479442 < _0x2ab956; _0x479442++) _0x39a402[_0x2ab956 + _0x479442] = _0x39a402[_0x479442]; for (_0x137b18 = 0x0; _0x137b18 < _0x346d62; _0x137b18 += 0x3) _0x14639f[_0x137b18 + _0x346d62] = _0x14639f[_0x137b18 + 0x2] + _0x18203f, _0x14639f[_0x137b18 + 0x1 + _0x346d62] = _0x14639f[_0x137b18 + 0x1] + _0x18203f, _0x14639f[_0x137b18 + 0x2 + _0x346d62] = _0x14639f[_0x137b18] + _0x18203f; for (_0x5117f1 = 0x0; _0x5117f1 < _0x567dd3; _0x5117f1++) _0x512126[_0x567dd3 + _0x5117f1] = -_0x512126[_0x5117f1]; var _0xc0955e = _0x4b25ff['length'] , _0x523498 = 0x0; for (_0x523498 = 0x0; _0x523498 < _0xc0955e; _0x523498++) _0x4b25ff[_0x523498 + _0xc0955e] = _0x4b25ff[_0x523498]; for (_0x207723 = _0x207723 || new _0x39cf6f['y'](0x0,0x0,0x1,0x1), _0x49dda4 = _0x49dda4 || new _0x39cf6f['y'](0x0,0x0,0x1,0x1), _0x523498 = 0x0, _0x137b18 = 0x0; _0x137b18 < _0xc0955e / 0x2; _0x137b18++) _0x4b25ff[_0x523498] = _0x207723['x'] + (_0x207723['z'] - _0x207723['x']) * _0x4b25ff[_0x523498], _0x4b25ff[_0x523498 + 0x1] = _0x207723['y'] + (_0x207723['w'] - _0x207723['y']) * _0x4b25ff[_0x523498 + 0x1], _0x4b25ff[_0x523498 + _0xc0955e] = _0x49dda4['x'] + (_0x49dda4['z'] - _0x49dda4['x']) * _0x4b25ff[_0x523498 + _0xc0955e], _0x4b25ff[_0x523498 + _0xc0955e + 0x1] = _0x49dda4['y'] + (_0x49dda4['w'] - _0x49dda4['y']) * _0x4b25ff[_0x523498 + _0xc0955e + 0x1], _0x523498 += 0x2; } } , _0x4021bf['ImportVertexData'] = function(_0x3aeec5, _0x5d85ad) { var _0x3ed28f = new _0x4021bf() , _0xf89a5a = _0x3aeec5['positions']; _0xf89a5a && _0x3ed28f['set'](_0xf89a5a, _0x5e422a['b']['PositionKind']); var _0xcae9ed = _0x3aeec5['normals']; _0xcae9ed && _0x3ed28f['set'](_0xcae9ed, _0x5e422a['b']['NormalKind']); var _0x48ac7d = _0x3aeec5['tangents']; _0x48ac7d && _0x3ed28f['set'](_0x48ac7d, _0x5e422a['b']['TangentKind']); var _0x2a9e26 = _0x3aeec5['uvs']; _0x2a9e26 && _0x3ed28f['set'](_0x2a9e26, _0x5e422a['b']['UVKind']); var _0x4f889e = _0x3aeec5['uv2s']; _0x4f889e && _0x3ed28f['set'](_0x4f889e, _0x5e422a['b']['UV2Kind']); var _0x519f1e = _0x3aeec5['uv3s']; _0x519f1e && _0x3ed28f['set'](_0x519f1e, _0x5e422a['b']['UV3Kind']); var _0x5217ee = _0x3aeec5['uv4s']; _0x5217ee && _0x3ed28f['set'](_0x5217ee, _0x5e422a['b']['UV4Kind']); var _0x51ae3d = _0x3aeec5['uv5s']; _0x51ae3d && _0x3ed28f['set'](_0x51ae3d, _0x5e422a['b']['UV5Kind']); var _0x4c9700 = _0x3aeec5['uv6s']; _0x4c9700 && _0x3ed28f['set'](_0x4c9700, _0x5e422a['b']['UV6Kind']); var _0x2a2d73 = _0x3aeec5['colors']; _0x2a2d73 && _0x3ed28f['set'](_0x39cf6f['f']['CheckColors4'](_0x2a2d73, _0xf89a5a['length'] / 0x3), _0x5e422a['b']['ColorKind']); var _0x444b76 = _0x3aeec5['matricesIndices']; _0x444b76 && _0x3ed28f['set'](_0x444b76, _0x5e422a['b']['MatricesIndicesKind']); var _0x37bd72 = _0x3aeec5['matricesWeights']; _0x37bd72 && _0x3ed28f['set'](_0x37bd72, _0x5e422a['b']['MatricesWeightsKind']); var _0x5973a7 = _0x3aeec5['indices']; _0x5973a7 && (_0x3ed28f['indices'] = _0x5973a7), _0x5d85ad['setAllVerticesData'](_0x3ed28f, _0x3aeec5['updatable']); } , _0x4021bf['FRONTSIDE'] = 0x0, _0x4021bf['BACKSIDE'] = 0x1, _0x4021bf['DOUBLESIDE'] = 0x2, _0x4021bf['DEFAULTSIDE'] = 0x0, _0x4021bf; }(); } , function(_0x4deefd, _0x4668b4, _0x40dbb2) { 'use strict'; _0x40dbb2['d'](_0x4668b4, 'a', function() { return _0x17e639; }), _0x40dbb2['d'](_0x4668b4, 'b', function() { return _0x51f691; }); var _0x4d4f7b = _0x40dbb2(0x1) , _0x17e639 = function() { function _0x112942() {} return _0x112942['NAME_EFFECTLAYER'] = 'EffectLayer', _0x112942['NAME_LAYER'] = 'Layer', _0x112942['NAME_LENSFLARESYSTEM'] = 'LensFlareSystem', _0x112942['NAME_BOUNDINGBOXRENDERER'] = 'BoundingBoxRenderer', _0x112942['NAME_PARTICLESYSTEM'] = 'ParticleSystem', _0x112942['NAME_GAMEPAD'] = 'Gamepad', _0x112942['NAME_SIMPLIFICATIONQUEUE'] = 'SimplificationQueue', _0x112942['NAME_GEOMETRYBUFFERRENDERER'] = 'GeometryBufferRenderer', _0x112942['NAME_DEPTHRENDERER'] = 'DepthRenderer', _0x112942['NAME_POSTPROCESSRENDERPIPELINEMANAGER'] = 'PostProcessRenderPipelineManager', _0x112942['NAME_SPRITE'] = 'Sprite', _0x112942['NAME_OUTLINERENDERER'] = 'Outline', _0x112942['NAME_PROCEDURALTEXTURE'] = 'ProceduralTexture', _0x112942['NAME_SHADOWGENERATOR'] = 'ShadowGenerator', _0x112942['NAME_OCTREE'] = 'Octree', _0x112942['NAME_PHYSICSENGINE'] = 'PhysicsEngine', _0x112942['NAME_AUDIO'] = 'Audio', _0x112942['STEP_ISREADYFORMESH_EFFECTLAYER'] = 0x0, _0x112942['STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER'] = 0x0, _0x112942['STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER'] = 0x0, _0x112942['STEP_ACTIVEMESH_BOUNDINGBOXRENDERER'] = 0x0, _0x112942['STEP_CAMERADRAWRENDERTARGET_EFFECTLAYER'] = 0x1, _0x112942['STEP_BEFORECAMERADRAW_EFFECTLAYER'] = 0x0, _0x112942['STEP_BEFORECAMERADRAW_LAYER'] = 0x1, _0x112942['STEP_BEFORERENDERTARGETDRAW_LAYER'] = 0x0, _0x112942['STEP_BEFORERENDERINGMESH_OUTLINE'] = 0x0, _0x112942['STEP_AFTERRENDERINGMESH_OUTLINE'] = 0x0, _0x112942['STEP_AFTERRENDERINGGROUPDRAW_EFFECTLAYER_DRAW'] = 0x0, _0x112942['STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER'] = 0x1, _0x112942['STEP_BEFORECAMERAUPDATE_SIMPLIFICATIONQUEUE'] = 0x0, _0x112942['STEP_BEFORECAMERAUPDATE_GAMEPAD'] = 0x1, _0x112942['STEP_BEFORECLEAR_PROCEDURALTEXTURE'] = 0x0, _0x112942['STEP_AFTERRENDERTARGETDRAW_LAYER'] = 0x0, _0x112942['STEP_AFTERCAMERADRAW_EFFECTLAYER'] = 0x0, _0x112942['STEP_AFTERCAMERADRAW_LENSFLARESYSTEM'] = 0x1, _0x112942['STEP_AFTERCAMERADRAW_EFFECTLAYER_DRAW'] = 0x2, _0x112942['STEP_AFTERCAMERADRAW_LAYER'] = 0x3, _0x112942['STEP_AFTERRENDER_AUDIO'] = 0x0, _0x112942['STEP_GATHERRENDERTARGETS_SHADOWGENERATOR'] = 0x0, _0x112942['STEP_GATHERRENDERTARGETS_GEOMETRYBUFFERRENDERER'] = 0x1, _0x112942['STEP_GATHERRENDERTARGETS_DEPTHRENDERER'] = 0x2, _0x112942['STEP_GATHERRENDERTARGETS_POSTPROCESSRENDERPIPELINEMANAGER'] = 0x3, _0x112942['STEP_GATHERACTIVECAMERARENDERTARGETS_DEPTHRENDERER'] = 0x0, _0x112942['STEP_POINTERMOVE_SPRITE'] = 0x0, _0x112942['STEP_POINTERDOWN_SPRITE'] = 0x0, _0x112942['STEP_POINTERUP_SPRITE'] = 0x0, _0x112942; }() , _0x51f691 = function(_0x5d7dda) { function _0x3ea5dc(_0x4286ba) { return _0x5d7dda['apply'](this, _0x4286ba) || this; } return _0x4d4f7b['d'](_0x3ea5dc, _0x5d7dda), _0x3ea5dc['Create'] = function() { return Object['create'](_0x3ea5dc['prototype']); } , _0x3ea5dc['prototype']['registerStep'] = function(_0x4b333f, _0x230dcc, _0x1962ca) { var _0x30cd4b = 0x0; for (Number['MAX_VALUE']; _0x30cd4b < this['length']; _0x30cd4b++) { if (_0x4b333f < this[_0x30cd4b]['index']) break; } this['splice'](_0x30cd4b, 0x0, { 'index': _0x4b333f, 'component': _0x230dcc, 'action': _0x1962ca['bind'](_0x230dcc) }); } , _0x3ea5dc['prototype']['clear'] = function() { this['length'] = 0x0; } , _0x3ea5dc; }(Array); } , function(_0x34bb99, _0x413ca5, _0x44c3bb) { 'use strict'; _0x44c3bb['d'](_0x413ca5, 'a', function() { return _0x321091; }); var _0x45da8d = _0x44c3bb(0x6) , _0x5545aa = _0x44c3bb(0x10) , _0x24ac2a = _0x44c3bb(0x0) , _0x20b21e = _0x44c3bb(0x17) , _0x43a3d4 = _0x44c3bb(0x4) , _0x791be4 = _0x44c3bb(0x26) , _0x321091 = function() { function _0x3b68a9() {} return _0x3b68a9['BindEyePosition'] = function(_0x2fd8e7, _0x59f0a0) { if (_0x59f0a0['_forcedViewPosition']) _0x2fd8e7['setVector3']('vEyePosition', _0x59f0a0['_forcedViewPosition']); else { var _0x4bf9b0 = _0x59f0a0['activeCamera']['globalPosition']; _0x4bf9b0 || (_0x4bf9b0 = _0x59f0a0['activeCamera']['devicePosition']), _0x2fd8e7['setVector3']('vEyePosition', _0x59f0a0['_mirroredCameraPosition'] ? _0x59f0a0['_mirroredCameraPosition'] : _0x4bf9b0); } } , _0x3b68a9['PrepareDefinesForMergedUV'] = function(_0x267e7c, _0x38399f, _0x43b73a) { _0x38399f['_needUVs'] = !0x0, _0x38399f[_0x43b73a] = !0x0, _0x267e7c['getTextureMatrix']()['isIdentityAs3x2']() ? (_0x38399f[_0x43b73a + 'DIRECTUV'] = _0x267e7c['coordinatesIndex'] + 0x1, 0x0 === _0x267e7c['coordinatesIndex'] ? _0x38399f['MAINUV1'] = !0x0 : _0x38399f['MAINUV2'] = !0x0) : _0x38399f[_0x43b73a + 'DIRECTUV'] = 0x0; } , _0x3b68a9['BindTextureMatrix'] = function(_0x5eda22, _0x27f850, _0x52587b) { var _0x19a28b = _0x5eda22['getTextureMatrix'](); _0x19a28b['isIdentityAs3x2']() || _0x27f850['updateMatrix'](_0x52587b + 'Matrix', _0x19a28b); } , _0x3b68a9['PrepareDefinesForMisc'] = function(_0x42a3b3, _0x58d90f, _0x2059fd, _0x1a2799, _0xa589a8, _0x2193ac, _0x59fa4c) { _0x59fa4c['_areMiscDirty'] && (_0x59fa4c['LOGARITHMICDEPTH'] = _0x2059fd, _0x59fa4c['POINTSIZE'] = _0x1a2799, _0x59fa4c['FOG'] = _0x58d90f['fogEnabled'] && _0x42a3b3['applyFog'] && _0x58d90f['fogMode'] !== _0x5545aa['a']['FOGMODE_NONE'] && _0xa589a8, _0x59fa4c['NONUNIFORMSCALING'] = _0x42a3b3['nonUniformScaling'], _0x59fa4c['ALPHATEST'] = _0x2193ac); } , _0x3b68a9['PrepareDefinesForFrameBoundValues'] = function(_0x21e80e, _0x1346ec, _0x52f971, _0x15b5de, _0x464de9) { void 0x0 === _0x464de9 && (_0x464de9 = null); var _0x2dbace, _0x32b621, _0x479462, _0x8e38d, _0x5b8f68 = !0x1; _0x2dbace = null == _0x464de9 ? void 0x0 !== _0x21e80e['clipPlane'] && null !== _0x21e80e['clipPlane'] : _0x464de9, _0x32b621 = null == _0x464de9 ? void 0x0 !== _0x21e80e['clipPlane2'] && null !== _0x21e80e['clipPlane2'] : _0x464de9, _0x479462 = null == _0x464de9 ? void 0x0 !== _0x21e80e['clipPlane3'] && null !== _0x21e80e['clipPlane3'] : _0x464de9, _0x8e38d = null == _0x464de9 ? void 0x0 !== _0x21e80e['clipPlane4'] && null !== _0x21e80e['clipPlane4'] : _0x464de9, _0x52f971['CLIPPLANE'] !== _0x2dbace && (_0x52f971['CLIPPLANE'] = _0x2dbace, _0x5b8f68 = !0x0), _0x52f971['CLIPPLANE2'] !== _0x32b621 && (_0x52f971['CLIPPLANE2'] = _0x32b621, _0x5b8f68 = !0x0), _0x52f971['CLIPPLANE3'] !== _0x479462 && (_0x52f971['CLIPPLANE3'] = _0x479462, _0x5b8f68 = !0x0), _0x52f971['CLIPPLANE4'] !== _0x8e38d && (_0x52f971['CLIPPLANE4'] = _0x8e38d, _0x5b8f68 = !0x0), _0x52f971['DEPTHPREPASS'] !== !_0x1346ec['getColorWrite']() && (_0x52f971['DEPTHPREPASS'] = !_0x52f971['DEPTHPREPASS'], _0x5b8f68 = !0x0), _0x52f971['INSTANCES'] !== _0x15b5de && (_0x52f971['INSTANCES'] = _0x15b5de, _0x5b8f68 = !0x0), _0x5b8f68 && _0x52f971['markAsUnprocessed'](); } , _0x3b68a9['PrepareDefinesForAttributes'] = function(_0x3a4aae, _0x7fb7e6, _0x1db7a9, _0x7ad21f, _0x730a0a, _0x28fa40) { if (void 0x0 === _0x730a0a && (_0x730a0a = !0x1), void 0x0 === _0x28fa40 && (_0x28fa40 = !0x0), !_0x7fb7e6['_areAttributesDirty'] && _0x7fb7e6['_needNormals'] === _0x7fb7e6['_normals'] && _0x7fb7e6['_needUVs'] === _0x7fb7e6['_uvs']) return !0x1; if (_0x7fb7e6['_normals'] = _0x7fb7e6['_needNormals'], _0x7fb7e6['_uvs'] = _0x7fb7e6['_needUVs'], _0x7fb7e6['NORMAL'] = _0x7fb7e6['_needNormals'] && _0x3a4aae['isVerticesDataPresent'](_0x43a3d4['b']['NormalKind']), _0x7fb7e6['_needNormals'] && _0x3a4aae['isVerticesDataPresent'](_0x43a3d4['b']['TangentKind']) && (_0x7fb7e6['TANGENT'] = !0x0), _0x7fb7e6['_needUVs'] ? (_0x7fb7e6['UV1'] = _0x3a4aae['isVerticesDataPresent'](_0x43a3d4['b']['UVKind']), _0x7fb7e6['UV2'] = _0x3a4aae['isVerticesDataPresent'](_0x43a3d4['b']['UV2Kind'])) : (_0x7fb7e6['UV1'] = !0x1, _0x7fb7e6['UV2'] = !0x1), _0x1db7a9) { var _0x461790 = _0x3a4aae['useVertexColors'] && _0x3a4aae['isVerticesDataPresent'](_0x43a3d4['b']['ColorKind']); _0x7fb7e6['VERTEXCOLOR'] = _0x461790, _0x7fb7e6['VERTEXALPHA'] = _0x3a4aae['hasVertexAlpha'] && _0x461790 && _0x28fa40; } if (_0x7ad21f) if (_0x3a4aae['useBones'] && _0x3a4aae['computeBonesUsingShaders'] && _0x3a4aae['skeleton']) { _0x7fb7e6['NUM_BONE_INFLUENCERS'] = _0x3a4aae['numBoneInfluencers']; var _0x3d75d3 = void 0x0 !== _0x7fb7e6['BONETEXTURE']; _0x3a4aae['skeleton']['isUsingTextureForMatrices'] && _0x3d75d3 ? _0x7fb7e6['BONETEXTURE'] = !0x0 : (_0x7fb7e6['BonesPerMesh'] = _0x3a4aae['skeleton']['bones']['length'] + 0x1, _0x7fb7e6['BONETEXTURE'] = !_0x3d75d3 && void 0x0); } else _0x7fb7e6['NUM_BONE_INFLUENCERS'] = 0x0, _0x7fb7e6['BonesPerMesh'] = 0x0; if (_0x730a0a) { var _0x58652a = _0x3a4aae['morphTargetManager']; _0x58652a ? (_0x7fb7e6['MORPHTARGETS_TANGENT'] = _0x58652a['supportsTangents'] && _0x7fb7e6['TANGENT'], _0x7fb7e6['MORPHTARGETS_NORMAL'] = _0x58652a['supportsNormals'] && _0x7fb7e6['NORMAL'], _0x7fb7e6['MORPHTARGETS'] = _0x58652a['numInfluencers'] > 0x0, _0x7fb7e6['NUM_MORPH_INFLUENCERS'] = _0x58652a['numInfluencers']) : (_0x7fb7e6['MORPHTARGETS_TANGENT'] = !0x1, _0x7fb7e6['MORPHTARGETS_NORMAL'] = !0x1, _0x7fb7e6['MORPHTARGETS'] = !0x1, _0x7fb7e6['NUM_MORPH_INFLUENCERS'] = 0x0); } return !0x0; } , _0x3b68a9['PrepareDefinesForMultiview'] = function(_0x18db83, _0x2463a1) { if (_0x18db83['activeCamera']) { var _0x28ceb8 = _0x2463a1['MULTIVIEW']; _0x2463a1['MULTIVIEW'] = null !== _0x18db83['activeCamera']['outputRenderTarget'] && _0x18db83['activeCamera']['outputRenderTarget']['getViewCount']() > 0x1, _0x2463a1['MULTIVIEW'] != _0x28ceb8 && _0x2463a1['markAsUnprocessed'](); } } , _0x3b68a9['PrepareDefinesForLights'] = function(_0x260f5f, _0x3802f7, _0x167425, _0x16554f, _0x246135, _0x2ca294) { if (void 0x0 === _0x246135 && (_0x246135 = 0x4), void 0x0 === _0x2ca294 && (_0x2ca294 = !0x1), !_0x167425['_areLightsDirty']) return _0x167425['_needNormals']; var _0x288f3e = 0x0 , _0x4a190a = !0x1 , _0x3134f1 = !0x1 , _0x20e2a2 = !0x1 , _0x4e9c25 = !0x1 , _0x57823b = !0x1; if (_0x260f5f['lightsEnabled'] && !_0x2ca294) for (var _0x58c9a0 = 0x0, _0x16c35e = _0x3802f7['lightSources']; _0x58c9a0 < _0x16c35e['length']; _0x58c9a0++) { var _0x4ec906 = _0x16c35e[_0x58c9a0]; switch (_0x4a190a = !0x0, void 0x0 === _0x167425['LIGHT' + _0x288f3e] && (_0x3134f1 = !0x0), _0x167425['LIGHT' + _0x288f3e] = !0x0, _0x167425['SPOTLIGHT' + _0x288f3e] = !0x1, _0x167425['HEMILIGHT' + _0x288f3e] = !0x1, _0x167425['POINTLIGHT' + _0x288f3e] = !0x1, _0x167425['DIRLIGHT' + _0x288f3e] = !0x1, _0x4ec906['prepareLightSpecificDefines'](_0x167425, _0x288f3e), _0x167425['LIGHT_FALLOFF_PHYSICAL' + _0x288f3e] = !0x1, _0x167425['LIGHT_FALLOFF_GLTF' + _0x288f3e] = !0x1, _0x167425['LIGHT_FALLOFF_STANDARD' + _0x288f3e] = !0x1, _0x4ec906['falloffType']) { case _0x791be4['a']['FALLOFF_GLTF']: _0x167425['LIGHT_FALLOFF_GLTF' + _0x288f3e] = !0x0; break; case _0x791be4['a']['FALLOFF_PHYSICAL']: _0x167425['LIGHT_FALLOFF_PHYSICAL' + _0x288f3e] = !0x0; break; case _0x791be4['a']['FALLOFF_STANDARD']: _0x167425['LIGHT_FALLOFF_STANDARD' + _0x288f3e] = !0x0; } if (_0x16554f && !_0x4ec906['specular']['equalsFloats'](0x0, 0x0, 0x0) && (_0x57823b = !0x0), _0x167425['SHADOW' + _0x288f3e] = !0x1, _0x167425['SHADOWPCF' + _0x288f3e] = !0x1, _0x167425['SHADOWPCSS' + _0x288f3e] = !0x1, _0x167425['SHADOWPOISSON' + _0x288f3e] = !0x1, _0x167425['SHADOWESM' + _0x288f3e] = !0x1, _0x167425['SHADOWCUBE' + _0x288f3e] = !0x1, _0x167425['SHADOWLOWQUALITY' + _0x288f3e] = !0x1, _0x167425['SHADOWMEDIUMQUALITY' + _0x288f3e] = !0x1, _0x3802f7 && _0x3802f7['receiveShadows'] && _0x260f5f['shadowsEnabled'] && _0x4ec906['shadowEnabled']) { var _0x961a36 = _0x4ec906['getShadowGenerator'](); if (_0x961a36) { var _0x173a1c = _0x961a36['getShadowMap'](); _0x173a1c && _0x173a1c['renderList'] && _0x173a1c['renderList']['length'] > 0x0 && (_0x4e9c25 = !0x0, _0x961a36['prepareDefines'](_0x167425, _0x288f3e)); } } if (_0x4ec906['lightmapMode'] != _0x791be4['a']['LIGHTMAP_DEFAULT'] ? (_0x20e2a2 = !0x0, _0x167425['LIGHTMAPEXCLUDED' + _0x288f3e] = !0x0, _0x167425['LIGHTMAPNOSPECULAR' + _0x288f3e] = _0x4ec906['lightmapMode'] == _0x791be4['a']['LIGHTMAP_SHADOWSONLY']) : (_0x167425['LIGHTMAPEXCLUDED' + _0x288f3e] = !0x1, _0x167425['LIGHTMAPNOSPECULAR' + _0x288f3e] = !0x1), ++_0x288f3e === _0x246135) break; } _0x167425['SPECULARTERM'] = _0x57823b, _0x167425['SHADOWS'] = _0x4e9c25; for (var _0x87343d = _0x288f3e; _0x87343d < _0x246135; _0x87343d++) void 0x0 !== _0x167425['LIGHT' + _0x87343d] && (_0x167425['LIGHT' + _0x87343d] = !0x1, _0x167425['HEMILIGHT' + _0x87343d] = !0x1, _0x167425['POINTLIGHT' + _0x87343d] = !0x1, _0x167425['DIRLIGHT' + _0x87343d] = !0x1, _0x167425['SPOTLIGHT' + _0x87343d] = !0x1, _0x167425['SHADOW' + _0x87343d] = !0x1, _0x167425['SHADOWPCF' + _0x87343d] = !0x1, _0x167425['SHADOWPCSS' + _0x87343d] = !0x1, _0x167425['SHADOWPOISSON' + _0x87343d] = !0x1, _0x167425['SHADOWESM' + _0x87343d] = !0x1, _0x167425['SHADOWCUBE' + _0x87343d] = !0x1, _0x167425['SHADOWLOWQUALITY' + _0x87343d] = !0x1, _0x167425['SHADOWMEDIUMQUALITY' + _0x87343d] = !0x1); var _0x476772 = _0x260f5f['getEngine']()['getCaps'](); return void 0x0 === _0x167425['SHADOWFLOAT'] && (_0x3134f1 = !0x0), _0x167425['SHADOWFLOAT'] = _0x4e9c25 && (_0x476772['textureFloatRender'] && _0x476772['textureFloatLinearFiltering'] || _0x476772['textureHalfFloatRender'] && _0x476772['textureHalfFloatLinearFiltering']), _0x167425['LIGHTMAPEXCLUDED'] = _0x20e2a2, _0x3134f1 && _0x167425['rebuild'](), _0x4a190a; } , _0x3b68a9['PrepareUniformsAndSamplersList'] = function(_0x16fdc7, _0x2545d6, _0x56dd47, _0xb29a6d) { var _0xf47c9e; void 0x0 === _0xb29a6d && (_0xb29a6d = 0x4); var _0x29accb = null; if (_0x16fdc7['uniformsNames']) { var _0x4b2917 = _0x16fdc7; _0xf47c9e = _0x4b2917['uniformsNames'], _0x29accb = _0x4b2917['uniformBuffersNames'], _0x2545d6 = _0x4b2917['samplers'], _0x56dd47 = _0x4b2917['defines'], _0xb29a6d = _0x4b2917['maxSimultaneousLights']; } else _0xf47c9e = _0x16fdc7, _0x2545d6 || (_0x2545d6 = []); for (var _0x380ea6 = 0x0; _0x380ea6 < _0xb29a6d && _0x56dd47['LIGHT' + _0x380ea6]; _0x380ea6++) _0xf47c9e['push']('vLightData' + _0x380ea6, 'vLightDiffuse' + _0x380ea6, 'vLightSpecular' + _0x380ea6, 'vLightDirection' + _0x380ea6, 'vLightFalloff' + _0x380ea6, 'vLightGround' + _0x380ea6, 'lightMatrix' + _0x380ea6, 'shadowsInfo' + _0x380ea6, 'depthValues' + _0x380ea6), _0x29accb && _0x29accb['push']('Light' + _0x380ea6), _0x2545d6['push']('shadowSampler' + _0x380ea6), _0x2545d6['push']('depthSampler' + _0x380ea6), _0x56dd47['PROJECTEDLIGHTTEXTURE' + _0x380ea6] && (_0x2545d6['push']('projectionLightSampler' + _0x380ea6), _0xf47c9e['push']('textureProjectionMatrix' + _0x380ea6)); _0x56dd47['NUM_MORPH_INFLUENCERS'] && _0xf47c9e['push']('morphTargetInfluences'); } , _0x3b68a9['HandleFallbacksForShadows'] = function(_0x501bfe, _0x490290, _0x128c19, _0x48e215) { void 0x0 === _0x128c19 && (_0x128c19 = 0x4), void 0x0 === _0x48e215 && (_0x48e215 = 0x0); for (var _0x594233 = 0x0, _0x2c8bfa = 0x0; _0x2c8bfa < _0x128c19 && _0x501bfe['LIGHT' + _0x2c8bfa]; _0x2c8bfa++) _0x2c8bfa > 0x0 && (_0x594233 = _0x48e215 + _0x2c8bfa, _0x490290['addFallback'](_0x594233, 'LIGHT' + _0x2c8bfa)), _0x501bfe['SHADOWS'] || (_0x501bfe['SHADOW' + _0x2c8bfa] && _0x490290['addFallback'](_0x48e215, 'SHADOW' + _0x2c8bfa), _0x501bfe['SHADOWPCF' + _0x2c8bfa] && _0x490290['addFallback'](_0x48e215, 'SHADOWPCF' + _0x2c8bfa), _0x501bfe['SHADOWPCSS' + _0x2c8bfa] && _0x490290['addFallback'](_0x48e215, 'SHADOWPCSS' + _0x2c8bfa), _0x501bfe['SHADOWPOISSON' + _0x2c8bfa] && _0x490290['addFallback'](_0x48e215, 'SHADOWPOISSON' + _0x2c8bfa), _0x501bfe['SHADOWESM' + _0x2c8bfa] && _0x490290['addFallback'](_0x48e215, 'SHADOWESM' + _0x2c8bfa)); return _0x594233++; } , _0x3b68a9['PrepareAttributesForMorphTargets'] = function(_0x12f4bd, _0x3dc709, _0x3a6f7b) { var _0x3ec59e = _0x3a6f7b['NUM_MORPH_INFLUENCERS']; if (_0x3ec59e > 0x0 && _0x20b21e['a']['LastCreatedEngine']) for (var _0x3b5824 = _0x20b21e['a']['LastCreatedEngine']['getCaps']()['maxVertexAttribs'], _0x3e2be2 = _0x3dc709['morphTargetManager'], _0xb5b32 = _0x3e2be2 && _0x3e2be2['supportsNormals'] && _0x3a6f7b['NORMAL'], _0x5b638d = _0x3e2be2 && _0x3e2be2['supportsTangents'] && _0x3a6f7b['TANGENT'], _0x208903 = 0x0; _0x208903 < _0x3ec59e; _0x208903++) _0x12f4bd['push'](_0x43a3d4['b']['PositionKind'] + _0x208903), _0xb5b32 && _0x12f4bd['push'](_0x43a3d4['b']['NormalKind'] + _0x208903), _0x5b638d && _0x12f4bd['push'](_0x43a3d4['b']['TangentKind'] + _0x208903), _0x12f4bd['length'] > _0x3b5824 && _0x45da8d['a']['Error']('Cannot\x20add\x20more\x20vertex\x20attributes\x20for\x20mesh\x20' + _0x3dc709['name']); } , _0x3b68a9['PrepareAttributesForBones'] = function(_0x3927c9, _0x5b8577, _0x371a12, _0x11b998) { _0x371a12['NUM_BONE_INFLUENCERS'] > 0x0 && (_0x11b998['addCPUSkinningFallback'](0x0, _0x5b8577), _0x3927c9['push'](_0x43a3d4['b']['MatricesIndicesKind']), _0x3927c9['push'](_0x43a3d4['b']['MatricesWeightsKind']), _0x371a12['NUM_BONE_INFLUENCERS'] > 0x4 && (_0x3927c9['push'](_0x43a3d4['b']['MatricesIndicesExtraKind']), _0x3927c9['push'](_0x43a3d4['b']['MatricesWeightsExtraKind']))); } , _0x3b68a9['PrepareAttributesForInstances'] = function(_0x1bb5f8, _0x582d01) { _0x582d01['INSTANCES'] && (_0x1bb5f8['push']('world0'), _0x1bb5f8['push']('world1'), _0x1bb5f8['push']('world2'), _0x1bb5f8['push']('world3')); } , _0x3b68a9['BindLightShadow'] = function(_0x1c45fe, _0x22ce70, _0x3eab14, _0x1ef9dd) { if (_0x1c45fe['shadowEnabled'] && _0x22ce70['receiveShadows']) { var _0x7292f1 = _0x1c45fe['getShadowGenerator'](); _0x7292f1 && _0x7292f1['bindShadowLight'](_0x3eab14, _0x1ef9dd); } } , _0x3b68a9['BindLightProperties'] = function(_0x656f46, _0x27ee5a, _0x156b4c) { _0x656f46['transferToEffect'](_0x27ee5a, _0x156b4c + ''); } , _0x3b68a9['BindLights'] = function(_0x321aed, _0x103f76, _0x4c051a, _0xfeaae6, _0x590ba2, _0x3151f1) { void 0x0 === _0x590ba2 && (_0x590ba2 = 0x4), void 0x0 === _0x3151f1 && (_0x3151f1 = !0x1); for (var _0x591b9b = Math['min'](_0x103f76['lightSources']['length'], _0x590ba2), _0x450175 = 0x0; _0x450175 < _0x591b9b; _0x450175++) { var _0x25f646 = _0x103f76['lightSources'][_0x450175] , _0x30d5e7 = _0x450175['toString']() , _0x550860 = _0x25f646['getScaledIntensity'](); _0x25f646['_uniformBuffer']['bindToEffect'](_0x4c051a, 'Light' + _0x450175), _0x3b68a9['BindLightProperties'](_0x25f646, _0x4c051a, _0x450175), _0x25f646['diffuse']['scaleToRef'](_0x550860, _0x24ac2a['t']['Color3'][0x0]), _0x25f646['_uniformBuffer']['updateColor4']('vLightDiffuse', _0x24ac2a['t']['Color3'][0x0], _0x3151f1 ? _0x25f646['radius'] : _0x25f646['range'], _0x30d5e7), _0xfeaae6['SPECULARTERM'] && (_0x25f646['specular']['scaleToRef'](_0x550860, _0x24ac2a['t']['Color3'][0x1]), _0x25f646['_uniformBuffer']['updateColor3']('vLightSpecular', _0x24ac2a['t']['Color3'][0x1], _0x30d5e7)), _0x321aed['shadowsEnabled'] && this['BindLightShadow'](_0x25f646, _0x103f76, _0x30d5e7, _0x4c051a), _0x25f646['_uniformBuffer']['update'](); } } , _0x3b68a9['BindFogParameters'] = function(_0x465d1e, _0x3e9972, _0x419d47, _0x4e983e) { void 0x0 === _0x4e983e && (_0x4e983e = !0x1), _0x465d1e['fogEnabled'] && _0x3e9972['applyFog'] && _0x465d1e['fogMode'] !== _0x5545aa['a']['FOGMODE_NONE'] && (_0x419d47['setFloat4']('vFogInfos', _0x465d1e['fogMode'], _0x465d1e['fogStart'], _0x465d1e['fogEnd'], _0x465d1e['fogDensity']), _0x4e983e ? (_0x465d1e['fogColor']['toLinearSpaceToRef'](this['_tempFogColor']), _0x419d47['setColor3']('vFogColor', this['_tempFogColor'])) : _0x419d47['setColor3']('vFogColor', _0x465d1e['fogColor'])); } , _0x3b68a9['BindBonesParameters'] = function(_0x2ab38a, _0x4bb25b) { if (_0x4bb25b && _0x2ab38a && (_0x2ab38a['computeBonesUsingShaders'] && _0x4bb25b['_bonesComputationForcedToCPU'] && (_0x2ab38a['computeBonesUsingShaders'] = !0x1), _0x2ab38a['useBones'] && _0x2ab38a['computeBonesUsingShaders'] && _0x2ab38a['skeleton'])) { var _0x578a4e = _0x2ab38a['skeleton']; if (_0x578a4e['isUsingTextureForMatrices'] && _0x4bb25b['getUniformIndex']('boneTextureWidth') > -0x1) { var _0x5ec79b = _0x578a4e['getTransformMatrixTexture'](); _0x4bb25b['setTexture']('boneSampler', _0x5ec79b), _0x4bb25b['setFloat']('boneTextureWidth', 0x4 * (_0x578a4e['bones']['length'] + 0x1)); } else { var _0x4a702b = _0x578a4e['getTransformMatrices'](_0x2ab38a); _0x4a702b && _0x4bb25b['setMatrices']('mBones', _0x4a702b); } } } , _0x3b68a9['BindMorphTargetParameters'] = function(_0x355e7e, _0x109ea0) { var _0x518c8a = _0x355e7e['morphTargetManager']; _0x355e7e && _0x518c8a && _0x109ea0['setFloatArray']('morphTargetInfluences', _0x518c8a['influences']); } , _0x3b68a9['BindLogDepth'] = function(_0x599b74, _0xbb0c, _0x46e364) { _0x599b74['LOGARITHMICDEPTH'] && _0xbb0c['setFloat']('logarithmicDepthConstant', 0x2 / (Math['log'](_0x46e364['activeCamera']['maxZ'] + 0x1) / Math['LN2'])); } , _0x3b68a9['BindClipPlane'] = function(_0x3ea5dd, _0x382b4f) { if (_0x382b4f['clipPlane']) { var _0x11c3a3 = _0x382b4f['clipPlane']; _0x3ea5dd['setFloat4']('vClipPlane', _0x11c3a3['normal']['x'], _0x11c3a3['normal']['y'], _0x11c3a3['normal']['z'], _0x11c3a3['d']); } if (_0x382b4f['clipPlane2']) { _0x11c3a3 = _0x382b4f['clipPlane2']; _0x3ea5dd['setFloat4']('vClipPlane2', _0x11c3a3['normal']['x'], _0x11c3a3['normal']['y'], _0x11c3a3['normal']['z'], _0x11c3a3['d']); } if (_0x382b4f['clipPlane3']) { _0x11c3a3 = _0x382b4f['clipPlane3']; _0x3ea5dd['setFloat4']('vClipPlane3', _0x11c3a3['normal']['x'], _0x11c3a3['normal']['y'], _0x11c3a3['normal']['z'], _0x11c3a3['d']); } if (_0x382b4f['clipPlane4']) { _0x11c3a3 = _0x382b4f['clipPlane4']; _0x3ea5dd['setFloat4']('vClipPlane4', _0x11c3a3['normal']['x'], _0x11c3a3['normal']['y'], _0x11c3a3['normal']['z'], _0x11c3a3['d']); } } , _0x3b68a9['_tempFogColor'] = _0x24ac2a['e']['Black'](), _0x3b68a9; }(); } , function(_0x1740b4, _0x5456c0, _0x2fb05f) { 'use strict'; var _0x1760d6 = _0x2fb05f(0x1) , _0x24e4b1 = _0x2fb05f(0x9) , _0x4581c2 = _0x2fb05f(0x2f) , _0x3e0758 = _0x2fb05f(0x8) , _0x534a58 = _0x2fb05f(0x1c) , _0x528b6e = _0x2fb05f(0x3d) , _0x17764a = _0x2fb05f(0x1d) , _0x4b6821 = _0x2fb05f(0x0) , _0x3c6764 = _0x2fb05f(0x2a) , _0xe57370 = _0x2fb05f(0x18) , _0x5dfe75 = _0x2fb05f(0x15) , _0x3f7016 = _0x2fb05f(0x1e) , _0x30fcde = _0x2fb05f(0x1f) , _0x3b8c1c = _0x2fb05f(0x3f) , _0x3b7dc7 = _0x2fb05f(0x26) , _0x3f9890 = _0x2fb05f(0x32) , _0xa60415 = _0x2fb05f(0x24) , _0x32dcb0 = _0x2fb05f(0x53) , _0x5e197e = _0x2fb05f(0x5b) , _0xc9b536 = _0x2fb05f(0xe) , _0x22ca5d = _0x2fb05f(0x3) , _0x52f86b = _0x2fb05f(0x23) , _0x2bda6b = _0x2fb05f(0x6) , _0xce6890 = _0x2fb05f(0x17) , _0x28a876 = _0x2fb05f(0x13) , _0x1731fb = _0x2fb05f(0x11) , _0x2205bb = _0x2fb05f(0x4f) , _0x48eeea = _0x2fb05f(0x33) , _0x2cedff = function() { function _0x5ba601() { this['_singleClick'] = !0x1, this['_doubleClick'] = !0x1, this['_hasSwiped'] = !0x1, this['_ignore'] = !0x1; } return Object['defineProperty'](_0x5ba601['prototype'], 'singleClick', { 'get': function() { return this['_singleClick']; }, 'set': function(_0x23a9a4) { this['_singleClick'] = _0x23a9a4; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5ba601['prototype'], 'doubleClick', { 'get': function() { return this['_doubleClick']; }, 'set': function(_0x533ab9) { this['_doubleClick'] = _0x533ab9; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5ba601['prototype'], 'hasSwiped', { 'get': function() { return this['_hasSwiped']; }, 'set': function(_0x252760) { this['_hasSwiped'] = _0x252760; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5ba601['prototype'], 'ignore', { 'get': function() { return this['_ignore']; }, 'set': function(_0x50895d) { this['_ignore'] = _0x50895d; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5ba601; }() , _0x2c78b5 = function() { function _0x336ea1(_0x2c4898) { this['_wheelEventName'] = '', this['_meshPickProceed'] = !0x1, this['_currentPickResult'] = null, this['_previousPickResult'] = null, this['_totalPointersPressed'] = 0x0, this['_doubleClickOccured'] = !0x1, this['_pointerX'] = 0x0, this['_pointerY'] = 0x0, this['_startingPointerPosition'] = new _0x4b6821['w'](0x0,0x0), this['_previousStartingPointerPosition'] = new _0x4b6821['w'](0x0,0x0), this['_startingPointerTime'] = 0x0, this['_previousStartingPointerTime'] = 0x0, this['_pointerCaptures'] = {}, this['_scene'] = _0x2c4898; } return Object['defineProperty'](_0x336ea1['prototype'], 'meshUnderPointer', { 'get': function() { return this['_pointerOverMesh']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x336ea1['prototype'], 'unTranslatedPointer', { 'get': function() { return new _0x4b6821['w'](this['_unTranslatedPointerX'],this['_unTranslatedPointerY']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x336ea1['prototype'], 'pointerX', { 'get': function() { return this['_pointerX']; }, 'set': function(_0x2bd3d4) { this['_pointerX'] = _0x2bd3d4; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x336ea1['prototype'], 'pointerY', { 'get': function() { return this['_pointerY']; }, 'set': function(_0x38b26a) { this['_pointerY'] = _0x38b26a; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x336ea1['prototype']['_updatePointerPosition'] = function(_0x355df4) { var _0x2897ac = this['_scene']['getEngine']()['getRenderingCanvasClientRect'](); _0x2897ac && (this['_pointerX'] = _0x355df4['clientX'] - _0x2897ac['left'], this['_pointerY'] = _0x355df4['clientY'] - _0x2897ac['top'], this['_unTranslatedPointerX'] = this['_pointerX'], this['_unTranslatedPointerY'] = this['_pointerY']); } , _0x336ea1['prototype']['_processPointerMove'] = function(_0x564d55, _0x48d7fd) { var _0x45cfee = this['_scene'] , _0xe4e62f = _0x45cfee['getEngine']()['getRenderingCanvas'](); if (_0xe4e62f) { _0xe4e62f['tabIndex'] = 0x1, _0xe4e62f['style']['cursor'] = _0x45cfee['defaultCursor']; var _0x236dc9 = !!(_0x564d55 && _0x564d55['hit'] && _0x564d55['pickedMesh']); _0x236dc9 ? (_0x45cfee['setPointerOverMesh'](_0x564d55['pickedMesh']), this['_pointerOverMesh'] && this['_pointerOverMesh']['actionManager'] && this['_pointerOverMesh']['actionManager']['hasPointerTriggers'] && (this['_pointerOverMesh']['actionManager']['hoverCursor'] ? _0xe4e62f['style']['cursor'] = this['_pointerOverMesh']['actionManager']['hoverCursor'] : _0xe4e62f['style']['cursor'] = _0x45cfee['hoverCursor'])) : _0x45cfee['setPointerOverMesh'](null); for (var _0x1b4b74 = 0x0, _0x3c3c48 = _0x45cfee['_pointerMoveStage']; _0x1b4b74 < _0x3c3c48['length']; _0x1b4b74++) { _0x564d55 = _0x3c3c48[_0x1b4b74]['action'](this['_unTranslatedPointerX'], this['_unTranslatedPointerY'], _0x564d55, _0x236dc9, _0xe4e62f); } if (_0x564d55) { var _0x53e23d = _0x48d7fd['type'] === this['_wheelEventName'] ? _0x1731fb['a']['POINTERWHEEL'] : _0x1731fb['a']['POINTERMOVE']; if (_0x45cfee['onPointerMove'] && _0x45cfee['onPointerMove'](_0x48d7fd, _0x564d55, _0x53e23d), _0x45cfee['onPointerObservable']['hasObservers']()) { var _0x3ea6f1 = new _0x1731fb['b'](_0x53e23d,_0x48d7fd,_0x564d55); this['_setRayOnPointerInfo'](_0x3ea6f1), _0x45cfee['onPointerObservable']['notifyObservers'](_0x3ea6f1, _0x53e23d); } } } } , _0x336ea1['prototype']['_setRayOnPointerInfo'] = function(_0x496a83) { var _0x42b333 = this['_scene']; _0x496a83['pickInfo'] && !_0x496a83['pickInfo']['_pickingUnavailable'] && (_0x496a83['pickInfo']['ray'] || (_0x496a83['pickInfo']['ray'] = _0x42b333['createPickingRay'](_0x496a83['event']['offsetX'], _0x496a83['event']['offsetY'], _0x4b6821['j']['Identity'](), _0x42b333['activeCamera']))); } , _0x336ea1['prototype']['_checkPrePointerObservable'] = function(_0xa71d47, _0x205582, _0x583ba2) { var _0x3ab7b8 = this['_scene'] , _0x5a7f52 = new _0x1731fb['d'](_0x583ba2,_0x205582,this['_unTranslatedPointerX'],this['_unTranslatedPointerY']); return _0xa71d47 && (_0x5a7f52['ray'] = _0xa71d47['ray']), _0x3ab7b8['onPrePointerObservable']['notifyObservers'](_0x5a7f52, _0x583ba2), !!_0x5a7f52['skipOnPointerObservable']; } , _0x336ea1['prototype']['simulatePointerMove'] = function(_0x182fe2, _0x4d6b80) { var _0x385ba3 = new PointerEvent('pointermove',_0x4d6b80); this['_checkPrePointerObservable'](_0x182fe2, _0x385ba3, _0x1731fb['a']['POINTERMOVE']) || this['_processPointerMove'](_0x182fe2, _0x385ba3); } , _0x336ea1['prototype']['simulatePointerDown'] = function(_0x159383, _0x48c459) { var _0x51fa56 = new PointerEvent('pointerdown',_0x48c459); this['_checkPrePointerObservable'](_0x159383, _0x51fa56, _0x1731fb['a']['POINTERDOWN']) || this['_processPointerDown'](_0x159383, _0x51fa56); } , _0x336ea1['prototype']['_processPointerDown'] = function(_0x57171e, _0x4ddcc5) { var _0x14bb00 = this , _0x37b80d = this['_scene']; if (_0x57171e && _0x57171e['hit'] && _0x57171e['pickedMesh']) { this['_pickedDownMesh'] = _0x57171e['pickedMesh']; var _0x1210e6 = _0x57171e['pickedMesh']['actionManager']; if (_0x1210e6) { if (_0x1210e6['hasPickTriggers']) switch (_0x1210e6['processTrigger'](_0x22ca5d['a']['ACTION_OnPickDownTrigger'], _0xa60415['a']['CreateNew'](_0x57171e['pickedMesh'], _0x4ddcc5)), _0x4ddcc5['button']) { case 0x0: _0x1210e6['processTrigger'](_0x22ca5d['a']['ACTION_OnLeftPickTrigger'], _0xa60415['a']['CreateNew'](_0x57171e['pickedMesh'], _0x4ddcc5)); break; case 0x1: _0x1210e6['processTrigger'](_0x22ca5d['a']['ACTION_OnCenterPickTrigger'], _0xa60415['a']['CreateNew'](_0x57171e['pickedMesh'], _0x4ddcc5)); break; case 0x2: _0x1210e6['processTrigger'](_0x22ca5d['a']['ACTION_OnRightPickTrigger'], _0xa60415['a']['CreateNew'](_0x57171e['pickedMesh'], _0x4ddcc5)); } _0x1210e6['hasSpecificTrigger'](_0x22ca5d['a']['ACTION_OnLongPressTrigger']) && window['setTimeout'](function() { var _0x4684d9 = _0x37b80d['pick'](_0x14bb00['_unTranslatedPointerX'], _0x14bb00['_unTranslatedPointerY'], function(_0x623d32) { return _0x623d32['isPickable'] && _0x623d32['isVisible'] && _0x623d32['isReady']() && _0x623d32['actionManager'] && _0x623d32['actionManager']['hasSpecificTrigger'](_0x22ca5d['a']['ACTION_OnLongPressTrigger']) && _0x623d32 == _0x14bb00['_pickedDownMesh']; }, !0x1, _0x37b80d['cameraToUseForPointers']); _0x4684d9 && _0x4684d9['hit'] && _0x4684d9['pickedMesh'] && _0x1210e6 && 0x0 !== _0x14bb00['_totalPointersPressed'] && Date['now']() - _0x14bb00['_startingPointerTime'] > _0x336ea1['LongPressDelay'] && !_0x14bb00['_isPointerSwiping']() && (_0x14bb00['_startingPointerTime'] = 0x0, _0x1210e6['processTrigger'](_0x22ca5d['a']['ACTION_OnLongPressTrigger'], _0xa60415['a']['CreateNew'](_0x4684d9['pickedMesh'], _0x4ddcc5))); }, _0x336ea1['LongPressDelay']); } } else for (var _0x560810 = 0x0, _0x16c5dc = _0x37b80d['_pointerDownStage']; _0x560810 < _0x16c5dc['length']; _0x560810++) { _0x57171e = _0x16c5dc[_0x560810]['action'](this['_unTranslatedPointerX'], this['_unTranslatedPointerY'], _0x57171e, _0x4ddcc5); } if (_0x57171e) { var _0x5f4f04 = _0x1731fb['a']['POINTERDOWN']; if (_0x37b80d['onPointerDown'] && _0x37b80d['onPointerDown'](_0x4ddcc5, _0x57171e, _0x5f4f04), _0x37b80d['onPointerObservable']['hasObservers']()) { var _0x159963 = new _0x1731fb['b'](_0x5f4f04,_0x4ddcc5,_0x57171e); this['_setRayOnPointerInfo'](_0x159963), _0x37b80d['onPointerObservable']['notifyObservers'](_0x159963, _0x5f4f04); } } } , _0x336ea1['prototype']['_isPointerSwiping'] = function() { return Math['abs'](this['_startingPointerPosition']['x'] - this['_pointerX']) > _0x336ea1['DragMovementThreshold'] || Math['abs'](this['_startingPointerPosition']['y'] - this['_pointerY']) > _0x336ea1['DragMovementThreshold']; } , _0x336ea1['prototype']['simulatePointerUp'] = function(_0x5bc33b, _0x559766, _0x3f26db) { var _0x4efcaf = new PointerEvent('pointerup',_0x559766) , _0x4230c3 = new _0x2cedff(); _0x3f26db ? _0x4230c3['doubleClick'] = !0x0 : _0x4230c3['singleClick'] = !0x0, this['_checkPrePointerObservable'](_0x5bc33b, _0x4efcaf, _0x1731fb['a']['POINTERUP']) || this['_processPointerUp'](_0x5bc33b, _0x4efcaf, _0x4230c3); } , _0x336ea1['prototype']['_processPointerUp'] = function(_0x50de52, _0x225180, _0x3abf71) { var _0x3fa075 = this['_scene']; if (_0x50de52 && _0x50de52 && _0x50de52['pickedMesh']) { if (this['_pickedUpMesh'] = _0x50de52['pickedMesh'], this['_pickedDownMesh'] === this['_pickedUpMesh'] && (_0x3fa075['onPointerPick'] && _0x3fa075['onPointerPick'](_0x225180, _0x50de52), _0x3abf71['singleClick'] && !_0x3abf71['ignore'] && _0x3fa075['onPointerObservable']['hasObservers']())) { var _0x5eead4 = _0x1731fb['a']['POINTERPICK'] , _0x79f41f = new _0x1731fb['b'](_0x5eead4,_0x225180,_0x50de52); this['_setRayOnPointerInfo'](_0x79f41f), _0x3fa075['onPointerObservable']['notifyObservers'](_0x79f41f, _0x5eead4); } var _0x523b36 = _0x50de52['pickedMesh']['_getActionManagerForTrigger'](); if (_0x523b36 && !_0x3abf71['ignore']) { _0x523b36['processTrigger'](_0x22ca5d['a']['ACTION_OnPickUpTrigger'], _0xa60415['a']['CreateNew'](_0x50de52['pickedMesh'], _0x225180)), !_0x3abf71['hasSwiped'] && _0x3abf71['singleClick'] && _0x523b36['processTrigger'](_0x22ca5d['a']['ACTION_OnPickTrigger'], _0xa60415['a']['CreateNew'](_0x50de52['pickedMesh'], _0x225180)); var _0x4a10ed = _0x50de52['pickedMesh']['_getActionManagerForTrigger'](_0x22ca5d['a']['ACTION_OnDoublePickTrigger']); _0x3abf71['doubleClick'] && _0x4a10ed && _0x4a10ed['processTrigger'](_0x22ca5d['a']['ACTION_OnDoublePickTrigger'], _0xa60415['a']['CreateNew'](_0x50de52['pickedMesh'], _0x225180)); } } else if (!_0x3abf71['ignore']) for (var _0x1f7bd4 = 0x0, _0x192753 = _0x3fa075['_pointerUpStage']; _0x1f7bd4 < _0x192753['length']; _0x1f7bd4++) { _0x50de52 = _0x192753[_0x1f7bd4]['action'](this['_unTranslatedPointerX'], this['_unTranslatedPointerY'], _0x50de52, _0x225180); } if (this['_pickedDownMesh'] && this['_pickedDownMesh'] !== this['_pickedUpMesh']) { var _0x3e0bf9 = this['_pickedDownMesh']['_getActionManagerForTrigger'](_0x22ca5d['a']['ACTION_OnPickOutTrigger']); _0x3e0bf9 && _0x3e0bf9['processTrigger'](_0x22ca5d['a']['ACTION_OnPickOutTrigger'], _0xa60415['a']['CreateNew'](this['_pickedDownMesh'], _0x225180)); } var _0x37a28b = 0x0; if (_0x3fa075['onPointerObservable']['hasObservers']()) { if (!_0x3abf71['ignore'] && !_0x3abf71['hasSwiped'] && (_0x3abf71['singleClick'] && _0x3fa075['onPointerObservable']['hasSpecificMask'](_0x1731fb['a']['POINTERTAP']) ? _0x37a28b = _0x1731fb['a']['POINTERTAP'] : _0x3abf71['doubleClick'] && _0x3fa075['onPointerObservable']['hasSpecificMask'](_0x1731fb['a']['POINTERDOUBLETAP']) && (_0x37a28b = _0x1731fb['a']['POINTERDOUBLETAP']), _0x37a28b)) { _0x79f41f = new _0x1731fb['b'](_0x37a28b,_0x225180,_0x50de52); this['_setRayOnPointerInfo'](_0x79f41f), _0x3fa075['onPointerObservable']['notifyObservers'](_0x79f41f, _0x37a28b); } if (!_0x3abf71['ignore']) { _0x37a28b = _0x1731fb['a']['POINTERUP']; _0x79f41f = new _0x1731fb['b'](_0x37a28b,_0x225180,_0x50de52); this['_setRayOnPointerInfo'](_0x79f41f), _0x3fa075['onPointerObservable']['notifyObservers'](_0x79f41f, _0x37a28b); } } _0x3fa075['onPointerUp'] && !_0x3abf71['ignore'] && _0x3fa075['onPointerUp'](_0x225180, _0x50de52, _0x37a28b); } , _0x336ea1['prototype']['isPointerCaptured'] = function(_0x29c289) { return void 0x0 === _0x29c289 && (_0x29c289 = 0x0), this['_pointerCaptures'][_0x29c289]; } , _0x336ea1['prototype']['attachControl'] = function(_0x34fb9b, _0x57e470, _0x1896f7) { var _0x28a008 = this; void 0x0 === _0x34fb9b && (_0x34fb9b = !0x0), void 0x0 === _0x57e470 && (_0x57e470 = !0x0), void 0x0 === _0x1896f7 && (_0x1896f7 = !0x0); var _0x2f057a = this['_scene'] , _0x1e1b27 = _0x2f057a['getEngine']()['getRenderingCanvas'](); if (_0x1e1b27) { var _0x696351 = _0x2f057a['getEngine'](); this['_initActionManager'] = function(_0x25c787, _0x4289a2) { if (!_0x28a008['_meshPickProceed']) { var _0x112556 = _0x2f057a['pick'](_0x28a008['_unTranslatedPointerX'], _0x28a008['_unTranslatedPointerY'], _0x2f057a['pointerDownPredicate'], !0x1, _0x2f057a['cameraToUseForPointers']); _0x28a008['_currentPickResult'] = _0x112556, _0x112556 && (_0x25c787 = _0x112556['hit'] && _0x112556['pickedMesh'] ? _0x112556['pickedMesh']['_getActionManagerForTrigger']() : null), _0x28a008['_meshPickProceed'] = !0x0; } return _0x25c787; } , this['_delayedSimpleClick'] = function(_0x3ef6e1, _0x1dea92, _0x3e0b39) { (Date['now']() - _0x28a008['_previousStartingPointerTime'] > _0x336ea1['DoubleClickDelay'] && !_0x28a008['_doubleClickOccured'] || _0x3ef6e1 !== _0x28a008['_previousButtonPressed']) && (_0x28a008['_doubleClickOccured'] = !0x1, _0x1dea92['singleClick'] = !0x0, _0x1dea92['ignore'] = !0x1, _0x3e0b39(_0x1dea92, _0x28a008['_currentPickResult'])); } , this['_initClickEvent'] = function(_0x11a467, _0x1d64cc, _0x40d123, _0x8cad85) { var _0x45be69 = new _0x2cedff(); _0x28a008['_currentPickResult'] = null; var _0x70263 = null , _0x161b34 = _0x11a467['hasSpecificMask'](_0x1731fb['a']['POINTERPICK']) || _0x1d64cc['hasSpecificMask'](_0x1731fb['a']['POINTERPICK']) || _0x11a467['hasSpecificMask'](_0x1731fb['a']['POINTERTAP']) || _0x1d64cc['hasSpecificMask'](_0x1731fb['a']['POINTERTAP']) || _0x11a467['hasSpecificMask'](_0x1731fb['a']['POINTERDOUBLETAP']) || _0x1d64cc['hasSpecificMask'](_0x1731fb['a']['POINTERDOUBLETAP']); !_0x161b34 && _0x2205bb['a'] && (_0x70263 = _0x28a008['_initActionManager'](_0x70263, _0x45be69)) && (_0x161b34 = _0x70263['hasPickTriggers']); var _0x40f36a = !0x1; if (_0x161b34) { var _0x38f43e = _0x40d123['button']; if (_0x45be69['hasSwiped'] = _0x28a008['_isPointerSwiping'](), !_0x45be69['hasSwiped']) { var _0x11755a = !_0x336ea1['ExclusiveDoubleClickMode']; _0x11755a || (_0x11755a = !_0x11a467['hasSpecificMask'](_0x1731fb['a']['POINTERDOUBLETAP']) && !_0x1d64cc['hasSpecificMask'](_0x1731fb['a']['POINTERDOUBLETAP'])) && !_0x2205bb['a']['HasSpecificTrigger'](_0x22ca5d['a']['ACTION_OnDoublePickTrigger']) && (_0x70263 = _0x28a008['_initActionManager'](_0x70263, _0x45be69)) && (_0x11755a = !_0x70263['hasSpecificTrigger'](_0x22ca5d['a']['ACTION_OnDoublePickTrigger'])), _0x11755a ? (Date['now']() - _0x28a008['_previousStartingPointerTime'] > _0x336ea1['DoubleClickDelay'] || _0x38f43e !== _0x28a008['_previousButtonPressed']) && (_0x45be69['singleClick'] = !0x0, _0x8cad85(_0x45be69, _0x28a008['_currentPickResult']), _0x40f36a = !0x0) : (_0x28a008['_previousDelayedSimpleClickTimeout'] = _0x28a008['_delayedSimpleClickTimeout'], _0x28a008['_delayedSimpleClickTimeout'] = window['setTimeout'](_0x28a008['_delayedSimpleClick']['bind'](_0x28a008, _0x38f43e, _0x45be69, _0x8cad85), _0x336ea1['DoubleClickDelay'])); var _0x2b704d = _0x11a467['hasSpecificMask'](_0x1731fb['a']['POINTERDOUBLETAP']) || _0x1d64cc['hasSpecificMask'](_0x1731fb['a']['POINTERDOUBLETAP']); !_0x2b704d && _0x2205bb['a']['HasSpecificTrigger'](_0x22ca5d['a']['ACTION_OnDoublePickTrigger']) && (_0x70263 = _0x28a008['_initActionManager'](_0x70263, _0x45be69)) && (_0x2b704d = _0x70263['hasSpecificTrigger'](_0x22ca5d['a']['ACTION_OnDoublePickTrigger'])), _0x2b704d && (_0x38f43e === _0x28a008['_previousButtonPressed'] && Date['now']() - _0x28a008['_previousStartingPointerTime'] < _0x336ea1['DoubleClickDelay'] && !_0x28a008['_doubleClickOccured'] ? (_0x45be69['hasSwiped'] || _0x28a008['_isPointerSwiping']() ? (_0x28a008['_doubleClickOccured'] = !0x1, _0x28a008['_previousStartingPointerTime'] = _0x28a008['_startingPointerTime'], _0x28a008['_previousStartingPointerPosition']['x'] = _0x28a008['_startingPointerPosition']['x'], _0x28a008['_previousStartingPointerPosition']['y'] = _0x28a008['_startingPointerPosition']['y'], _0x28a008['_previousButtonPressed'] = _0x38f43e, _0x336ea1['ExclusiveDoubleClickMode'] ? (_0x28a008['_previousDelayedSimpleClickTimeout'] && clearTimeout(_0x28a008['_previousDelayedSimpleClickTimeout']), _0x28a008['_previousDelayedSimpleClickTimeout'] = _0x28a008['_delayedSimpleClickTimeout'], _0x8cad85(_0x45be69, _0x28a008['_previousPickResult'])) : _0x8cad85(_0x45be69, _0x28a008['_currentPickResult'])) : (_0x28a008['_previousStartingPointerTime'] = 0x0, _0x28a008['_doubleClickOccured'] = !0x0, _0x45be69['doubleClick'] = !0x0, _0x45be69['ignore'] = !0x1, _0x336ea1['ExclusiveDoubleClickMode'] && _0x28a008['_previousDelayedSimpleClickTimeout'] && clearTimeout(_0x28a008['_previousDelayedSimpleClickTimeout']), _0x28a008['_previousDelayedSimpleClickTimeout'] = _0x28a008['_delayedSimpleClickTimeout'], _0x8cad85(_0x45be69, _0x28a008['_currentPickResult'])), _0x40f36a = !0x0) : (_0x28a008['_doubleClickOccured'] = !0x1, _0x28a008['_previousStartingPointerTime'] = _0x28a008['_startingPointerTime'], _0x28a008['_previousStartingPointerPosition']['x'] = _0x28a008['_startingPointerPosition']['x'], _0x28a008['_previousStartingPointerPosition']['y'] = _0x28a008['_startingPointerPosition']['y'], _0x28a008['_previousButtonPressed'] = _0x38f43e)); } } _0x40f36a || _0x8cad85(_0x45be69, _0x28a008['_currentPickResult']); } , this['_onPointerMove'] = function(_0x48e428) { if (_0x28a008['_updatePointerPosition'](_0x48e428), !_0x28a008['_checkPrePointerObservable'](null, _0x48e428, _0x48e428['type'] === _0x28a008['_wheelEventName'] ? _0x1731fb['a']['POINTERWHEEL'] : _0x1731fb['a']['POINTERMOVE']) && (_0x2f057a['cameraToUseForPointers'] || _0x2f057a['activeCamera'])) { _0x2f057a['pointerMovePredicate'] || (_0x2f057a['pointerMovePredicate'] = function(_0x2e30b6) { return _0x2e30b6['isPickable'] && _0x2e30b6['isVisible'] && _0x2e30b6['isReady']() && _0x2e30b6['isEnabled']() && (_0x2e30b6['enablePointerMoveEvents'] || _0x2f057a['constantlyUpdateMeshUnderPointer'] || null !== _0x2e30b6['actionManager'] && void 0x0 !== _0x2e30b6['actionManager']) && (!_0x2f057a['cameraToUseForPointers'] || 0x0 != (_0x2f057a['cameraToUseForPointers']['layerMask'] & _0x2e30b6['layerMask'])); } ); var _0x2fd272 = _0x2f057a['pick'](_0x28a008['_unTranslatedPointerX'], _0x28a008['_unTranslatedPointerY'], _0x2f057a['pointerMovePredicate'], !0x1, _0x2f057a['cameraToUseForPointers']); _0x28a008['_processPointerMove'](_0x2fd272, _0x48e428); } } , this['_onPointerDown'] = function(_0x43649e) { if (_0x28a008['_totalPointersPressed']++, _0x28a008['_pickedDownMesh'] = null, _0x28a008['_meshPickProceed'] = !0x1, _0x28a008['_updatePointerPosition'](_0x43649e), _0x2f057a['preventDefaultOnPointerDown'] && _0x1e1b27 && (_0x43649e['preventDefault'](), _0x1e1b27['focus']()), _0x28a008['_startingPointerPosition']['x'] = _0x28a008['_pointerX'], _0x28a008['_startingPointerPosition']['y'] = _0x28a008['_pointerY'], _0x28a008['_startingPointerTime'] = Date['now'](), !_0x28a008['_checkPrePointerObservable'](null, _0x43649e, _0x1731fb['a']['POINTERDOWN']) && (_0x2f057a['cameraToUseForPointers'] || _0x2f057a['activeCamera'])) { _0x28a008['_pointerCaptures'][_0x43649e['pointerId']] = !0x0, _0x2f057a['pointerDownPredicate'] || (_0x2f057a['pointerDownPredicate'] = function(_0x157a7b) { return _0x157a7b['isPickable'] && _0x157a7b['isVisible'] && _0x157a7b['isReady']() && _0x157a7b['isEnabled']() && (!_0x2f057a['cameraToUseForPointers'] || 0x0 != (_0x2f057a['cameraToUseForPointers']['layerMask'] & _0x157a7b['layerMask'])); } ), _0x28a008['_pickedDownMesh'] = null; var _0x40edac = _0x2f057a['pick'](_0x28a008['_unTranslatedPointerX'], _0x28a008['_unTranslatedPointerY'], _0x2f057a['pointerDownPredicate'], !0x1, _0x2f057a['cameraToUseForPointers']); _0x28a008['_processPointerDown'](_0x40edac, _0x43649e); } } , this['_onPointerUp'] = function(_0x335460) { 0x0 !== _0x28a008['_totalPointersPressed'] && (_0x28a008['_totalPointersPressed']--, _0x28a008['_pickedUpMesh'] = null, _0x28a008['_meshPickProceed'] = !0x1, _0x28a008['_updatePointerPosition'](_0x335460), _0x2f057a['preventDefaultOnPointerUp'] && _0x1e1b27 && (_0x335460['preventDefault'](), _0x1e1b27['focus']()), _0x28a008['_initClickEvent'](_0x2f057a['onPrePointerObservable'], _0x2f057a['onPointerObservable'], _0x335460, function(_0x55bd78, _0x1398c8) { if (_0x2f057a['onPrePointerObservable']['hasObservers']() && !_0x55bd78['ignore']) { if (!_0x55bd78['hasSwiped']) { if (_0x55bd78['singleClick'] && _0x2f057a['onPrePointerObservable']['hasSpecificMask'](_0x1731fb['a']['POINTERTAP']) && _0x28a008['_checkPrePointerObservable'](null, _0x335460, _0x1731fb['a']['POINTERTAP'])) return; if (_0x55bd78['doubleClick'] && _0x2f057a['onPrePointerObservable']['hasSpecificMask'](_0x1731fb['a']['POINTERDOUBLETAP']) && _0x28a008['_checkPrePointerObservable'](null, _0x335460, _0x1731fb['a']['POINTERDOUBLETAP'])) return; } if (_0x28a008['_checkPrePointerObservable'](null, _0x335460, _0x1731fb['a']['POINTERUP'])) return; } _0x28a008['_pointerCaptures'][_0x335460['pointerId']] && (_0x28a008['_pointerCaptures'][_0x335460['pointerId']] = !0x1, (_0x2f057a['cameraToUseForPointers'] || _0x2f057a['activeCamera']) && (_0x2f057a['pointerUpPredicate'] || (_0x2f057a['pointerUpPredicate'] = function(_0x2a3323) { return _0x2a3323['isPickable'] && _0x2a3323['isVisible'] && _0x2a3323['isReady']() && _0x2a3323['isEnabled']() && (!_0x2f057a['cameraToUseForPointers'] || 0x0 != (_0x2f057a['cameraToUseForPointers']['layerMask'] & _0x2a3323['layerMask'])); } ), !_0x28a008['_meshPickProceed'] && (_0x2205bb['a'] && _0x2205bb['a']['HasTriggers'] || _0x2f057a['onPointerObservable']['hasObservers']()) && _0x28a008['_initActionManager'](null, _0x55bd78), _0x1398c8 || (_0x1398c8 = _0x28a008['_currentPickResult']), _0x28a008['_processPointerUp'](_0x1398c8, _0x335460, _0x55bd78), _0x28a008['_previousPickResult'] = _0x28a008['_currentPickResult'])); })); } , this['_onKeyDown'] = function(_0x7e65ff) { var _0x48d2a9 = _0x48eeea['a']['KEYDOWN']; if (_0x2f057a['onPreKeyboardObservable']['hasObservers']()) { var _0x59320c = new _0x48eeea['c'](_0x48d2a9,_0x7e65ff); if (_0x2f057a['onPreKeyboardObservable']['notifyObservers'](_0x59320c, _0x48d2a9), _0x59320c['skipOnPointerObservable']) return; } if (_0x2f057a['onKeyboardObservable']['hasObservers']()) { _0x59320c = new _0x48eeea['b'](_0x48d2a9,_0x7e65ff); _0x2f057a['onKeyboardObservable']['notifyObservers'](_0x59320c, _0x48d2a9); } _0x2f057a['actionManager'] && _0x2f057a['actionManager']['processTrigger'](_0x22ca5d['a']['ACTION_OnKeyDownTrigger'], _0xa60415['a']['CreateNewFromScene'](_0x2f057a, _0x7e65ff)); } , this['_onKeyUp'] = function(_0x2bc747) { var _0x2b6601 = _0x48eeea['a']['KEYUP']; if (_0x2f057a['onPreKeyboardObservable']['hasObservers']()) { var _0x594f4c = new _0x48eeea['c'](_0x2b6601,_0x2bc747); if (_0x2f057a['onPreKeyboardObservable']['notifyObservers'](_0x594f4c, _0x2b6601), _0x594f4c['skipOnPointerObservable']) return; } if (_0x2f057a['onKeyboardObservable']['hasObservers']()) { _0x594f4c = new _0x48eeea['b'](_0x2b6601,_0x2bc747); _0x2f057a['onKeyboardObservable']['notifyObservers'](_0x594f4c, _0x2b6601); } _0x2f057a['actionManager'] && _0x2f057a['actionManager']['processTrigger'](_0x22ca5d['a']['ACTION_OnKeyUpTrigger'], _0xa60415['a']['CreateNewFromScene'](_0x2f057a, _0x2bc747)); } , this['_onCanvasFocusObserver'] = _0x696351['onCanvasFocusObservable']['add'](function() { _0x1e1b27 && (_0x1e1b27['addEventListener']('keydown', _0x28a008['_onKeyDown'], !0x1), _0x1e1b27['addEventListener']('keyup', _0x28a008['_onKeyUp'], !0x1)); }), this['_onCanvasBlurObserver'] = _0x696351['onCanvasBlurObservable']['add'](function() { _0x1e1b27 && (_0x1e1b27['removeEventListener']('keydown', _0x28a008['_onKeyDown']), _0x1e1b27['removeEventListener']('keyup', _0x28a008['_onKeyUp'])); }); var _0x4fab6b = _0x24e4b1['h']['GetPointerPrefix'](); _0x1896f7 && (_0x1e1b27['addEventListener'](_0x4fab6b + 'move', this['_onPointerMove'], !0x1), this['_wheelEventName'] = 'onwheel'in document['createElement']('div') ? 'wheel' : void 0x0 !== document['onmousewheel'] ? 'mousewheel' : 'DOMMouseScroll', _0x1e1b27['addEventListener'](this['_wheelEventName'], this['_onPointerMove'], !0x1)), _0x57e470 && _0x1e1b27['addEventListener'](_0x4fab6b + 'down', this['_onPointerDown'], !0x1), _0x34fb9b && window['addEventListener'](_0x4fab6b + 'up', this['_onPointerUp'], !0x1); } } , _0x336ea1['prototype']['detachControl'] = function() { var _0x537231 = _0x24e4b1['h']['GetPointerPrefix']() , _0x53456c = this['_scene']['getEngine']()['getRenderingCanvas']() , _0x30e82c = this['_scene']['getEngine'](); _0x53456c && (_0x53456c['removeEventListener'](_0x537231 + 'move', this['_onPointerMove']), _0x53456c['removeEventListener'](_0x537231 + 'down', this['_onPointerDown']), window['removeEventListener'](_0x537231 + 'up', this['_onPointerUp']), this['_onCanvasBlurObserver'] && _0x30e82c['onCanvasBlurObservable']['remove'](this['_onCanvasBlurObserver']), this['_onCanvasFocusObserver'] && _0x30e82c['onCanvasFocusObservable']['remove'](this['_onCanvasFocusObserver']), _0x53456c['removeEventListener']('keydown', this['_onKeyDown']), _0x53456c['removeEventListener']('keyup', this['_onKeyUp']), _0x53456c['style']['cursor'] = this['_scene']['defaultCursor']); } , _0x336ea1['prototype']['setPointerOverMesh'] = function(_0x235061) { var _0x5ea87d; this['_pointerOverMesh'] !== _0x235061 && (this['_pointerOverMesh'] && (_0x5ea87d = this['_pointerOverMesh']['_getActionManagerForTrigger'](_0x22ca5d['a']['ACTION_OnPointerOutTrigger'])) && _0x5ea87d['processTrigger'](_0x22ca5d['a']['ACTION_OnPointerOutTrigger'], _0xa60415['a']['CreateNew'](this['_pointerOverMesh'])), this['_pointerOverMesh'] = _0x235061, this['_pointerOverMesh'] && (_0x5ea87d = this['_pointerOverMesh']['_getActionManagerForTrigger'](_0x22ca5d['a']['ACTION_OnPointerOverTrigger'])) && _0x5ea87d['processTrigger'](_0x22ca5d['a']['ACTION_OnPointerOverTrigger'], _0xa60415['a']['CreateNew'](this['_pointerOverMesh']))); } , _0x336ea1['prototype']['getPointerOverMesh'] = function() { return this['_pointerOverMesh']; } , _0x336ea1['DragMovementThreshold'] = 0xa, _0x336ea1['LongPressDelay'] = 0x1f4, _0x336ea1['DoubleClickDelay'] = 0x12c, _0x336ea1['ExclusiveDoubleClickMode'] = !0x1, _0x336ea1; }(); _0x2fb05f['d'](_0x5456c0, 'a', function() { return _0xc674be; }); var _0xc674be = function(_0x2e6ae8) { function _0x5b6241(_0x215ebd, _0x267dca) { var _0x549857 = _0x2e6ae8['call'](this) || this; return _0x549857['_inputManager'] = new _0x2c78b5(_0x549857), _0x549857['cameraToUseForPointers'] = null, _0x549857['_isScene'] = !0x0, _0x549857['autoClear'] = !0x0, _0x549857['autoClearDepthAndStencil'] = !0x0, _0x549857['clearColor'] = new _0x4b6821['f'](0.2,0.2,0.3,0x1), _0x549857['ambientColor'] = new _0x4b6821['e'](0x0,0x0,0x0), _0x549857['_forceWireframe'] = !0x1, _0x549857['_forcePointsCloud'] = !0x1, _0x549857['animationsEnabled'] = !0x0, _0x549857['_animationPropertiesOverride'] = null, _0x549857['useConstantAnimationDeltaTime'] = !0x1, _0x549857['constantlyUpdateMeshUnderPointer'] = !0x1, _0x549857['hoverCursor'] = 'pointer', _0x549857['defaultCursor'] = '', _0x549857['preventDefaultOnPointerDown'] = !0x0, _0x549857['preventDefaultOnPointerUp'] = !0x0, _0x549857['metadata'] = null, _0x549857['reservedDataStore'] = null, _0x549857['disableOfflineSupportExceptionRules'] = new Array(), _0x549857['onDisposeObservable'] = new _0x3e0758['c'](), _0x549857['_onDisposeObserver'] = null, _0x549857['onBeforeRenderObservable'] = new _0x3e0758['c'](), _0x549857['_onBeforeRenderObserver'] = null, _0x549857['onAfterRenderObservable'] = new _0x3e0758['c'](), _0x549857['_onAfterRenderObserver'] = null, _0x549857['onBeforeAnimationsObservable'] = new _0x3e0758['c'](), _0x549857['onAfterAnimationsObservable'] = new _0x3e0758['c'](), _0x549857['onBeforeDrawPhaseObservable'] = new _0x3e0758['c'](), _0x549857['onAfterDrawPhaseObservable'] = new _0x3e0758['c'](), _0x549857['onReadyObservable'] = new _0x3e0758['c'](), _0x549857['onBeforeCameraRenderObservable'] = new _0x3e0758['c'](), _0x549857['_onBeforeCameraRenderObserver'] = null, _0x549857['onAfterCameraRenderObservable'] = new _0x3e0758['c'](), _0x549857['_onAfterCameraRenderObserver'] = null, _0x549857['onBeforeActiveMeshesEvaluationObservable'] = new _0x3e0758['c'](), _0x549857['onAfterActiveMeshesEvaluationObservable'] = new _0x3e0758['c'](), _0x549857['onBeforeParticlesRenderingObservable'] = new _0x3e0758['c'](), _0x549857['onAfterParticlesRenderingObservable'] = new _0x3e0758['c'](), _0x549857['onDataLoadedObservable'] = new _0x3e0758['c'](), _0x549857['onNewCameraAddedObservable'] = new _0x3e0758['c'](), _0x549857['onCameraRemovedObservable'] = new _0x3e0758['c'](), _0x549857['onNewLightAddedObservable'] = new _0x3e0758['c'](), _0x549857['onLightRemovedObservable'] = new _0x3e0758['c'](), _0x549857['onNewGeometryAddedObservable'] = new _0x3e0758['c'](), _0x549857['onGeometryRemovedObservable'] = new _0x3e0758['c'](), _0x549857['onNewTransformNodeAddedObservable'] = new _0x3e0758['c'](), _0x549857['onTransformNodeRemovedObservable'] = new _0x3e0758['c'](), _0x549857['onNewMeshAddedObservable'] = new _0x3e0758['c'](), _0x549857['onMeshRemovedObservable'] = new _0x3e0758['c'](), _0x549857['onNewSkeletonAddedObservable'] = new _0x3e0758['c'](), _0x549857['onSkeletonRemovedObservable'] = new _0x3e0758['c'](), _0x549857['onNewMaterialAddedObservable'] = new _0x3e0758['c'](), _0x549857['onMaterialRemovedObservable'] = new _0x3e0758['c'](), _0x549857['onNewTextureAddedObservable'] = new _0x3e0758['c'](), _0x549857['onTextureRemovedObservable'] = new _0x3e0758['c'](), _0x549857['onBeforeRenderTargetsRenderObservable'] = new _0x3e0758['c'](), _0x549857['onAfterRenderTargetsRenderObservable'] = new _0x3e0758['c'](), _0x549857['onBeforeStepObservable'] = new _0x3e0758['c'](), _0x549857['onAfterStepObservable'] = new _0x3e0758['c'](), _0x549857['onActiveCameraChanged'] = new _0x3e0758['c'](), _0x549857['onBeforeRenderingGroupObservable'] = new _0x3e0758['c'](), _0x549857['onAfterRenderingGroupObservable'] = new _0x3e0758['c'](), _0x549857['onMeshImportedObservable'] = new _0x3e0758['c'](), _0x549857['_registeredForLateAnimationBindings'] = new _0x534a58['b'](0x100), _0x549857['onPrePointerObservable'] = new _0x3e0758['c'](), _0x549857['onPointerObservable'] = new _0x3e0758['c'](), _0x549857['onPreKeyboardObservable'] = new _0x3e0758['c'](), _0x549857['onKeyboardObservable'] = new _0x3e0758['c'](), _0x549857['_useRightHandedSystem'] = !0x1, _0x549857['_timeAccumulator'] = 0x0, _0x549857['_currentStepId'] = 0x0, _0x549857['_currentInternalStep'] = 0x0, _0x549857['_fogEnabled'] = !0x0, _0x549857['_fogMode'] = _0x5b6241['FOGMODE_NONE'], _0x549857['fogColor'] = new _0x4b6821['e'](0.2,0.2,0.3), _0x549857['fogDensity'] = 0.1, _0x549857['fogStart'] = 0x0, _0x549857['fogEnd'] = 0x3e8, _0x549857['_shadowsEnabled'] = !0x0, _0x549857['_lightsEnabled'] = !0x0, _0x549857['activeCameras'] = new Array(), _0x549857['_texturesEnabled'] = !0x0, _0x549857['particlesEnabled'] = !0x0, _0x549857['spritesEnabled'] = !0x0, _0x549857['_skeletonsEnabled'] = !0x0, _0x549857['lensFlaresEnabled'] = !0x0, _0x549857['collisionsEnabled'] = !0x0, _0x549857['gravity'] = new _0x4b6821['x'](0x0,-9.807,0x0), _0x549857['postProcessesEnabled'] = !0x0, _0x549857['postProcesses'] = new Array(), _0x549857['renderTargetsEnabled'] = !0x0, _0x549857['dumpNextRenderTargets'] = !0x1, _0x549857['customRenderTargets'] = new Array(), _0x549857['importedMeshesFiles'] = new Array(), _0x549857['probesEnabled'] = !0x0, _0x549857['_meshesForIntersections'] = new _0x534a58['b'](0x100), _0x549857['proceduralTexturesEnabled'] = !0x0, _0x549857['_totalVertices'] = new _0x24e4b1['f'](), _0x549857['_activeIndices'] = new _0x24e4b1['f'](), _0x549857['_activeParticles'] = new _0x24e4b1['f'](), _0x549857['_activeBones'] = new _0x24e4b1['f'](), _0x549857['_animationTime'] = 0x0, _0x549857['animationTimeScale'] = 0x1, _0x549857['_renderId'] = 0x0, _0x549857['_frameId'] = 0x0, _0x549857['_executeWhenReadyTimeoutId'] = -0x1, _0x549857['_intermediateRendering'] = !0x1, _0x549857['_viewUpdateFlag'] = -0x1, _0x549857['_projectionUpdateFlag'] = -0x1, _0x549857['_toBeDisposed'] = new Array(0x100), _0x549857['_activeRequests'] = new Array(), _0x549857['_pendingData'] = new Array(), _0x549857['_isDisposed'] = !0x1, _0x549857['dispatchAllSubMeshesOfActiveMeshes'] = !0x1, _0x549857['_activeMeshes'] = new _0x534a58['a'](0x100), _0x549857['_processedMaterials'] = new _0x534a58['a'](0x100), _0x549857['_renderTargets'] = new _0x534a58['b'](0x100), _0x549857['_activeParticleSystems'] = new _0x534a58['a'](0x100), _0x549857['_activeSkeletons'] = new _0x534a58['b'](0x20), _0x549857['_softwareSkinnedMeshes'] = new _0x534a58['b'](0x20), _0x549857['_activeAnimatables'] = new Array(), _0x549857['_transformMatrix'] = _0x4b6821['j']['Zero'](), _0x549857['requireLightSorting'] = !0x1, _0x549857['_components'] = [], _0x549857['_serializableComponents'] = [], _0x549857['_transientComponents'] = [], _0x549857['_beforeCameraUpdateStage'] = _0xc9b536['b']['Create'](), _0x549857['_beforeClearStage'] = _0xc9b536['b']['Create'](), _0x549857['_gatherRenderTargetsStage'] = _0xc9b536['b']['Create'](), _0x549857['_gatherActiveCameraRenderTargetsStage'] = _0xc9b536['b']['Create'](), _0x549857['_isReadyForMeshStage'] = _0xc9b536['b']['Create'](), _0x549857['_beforeEvaluateActiveMeshStage'] = _0xc9b536['b']['Create'](), _0x549857['_evaluateSubMeshStage'] = _0xc9b536['b']['Create'](), _0x549857['_activeMeshStage'] = _0xc9b536['b']['Create'](), _0x549857['_cameraDrawRenderTargetStage'] = _0xc9b536['b']['Create'](), _0x549857['_beforeCameraDrawStage'] = _0xc9b536['b']['Create'](), _0x549857['_beforeRenderTargetDrawStage'] = _0xc9b536['b']['Create'](), _0x549857['_beforeRenderingGroupDrawStage'] = _0xc9b536['b']['Create'](), _0x549857['_beforeRenderingMeshStage'] = _0xc9b536['b']['Create'](), _0x549857['_afterRenderingMeshStage'] = _0xc9b536['b']['Create'](), _0x549857['_afterRenderingGroupDrawStage'] = _0xc9b536['b']['Create'](), _0x549857['_afterCameraDrawStage'] = _0xc9b536['b']['Create'](), _0x549857['_afterRenderTargetDrawStage'] = _0xc9b536['b']['Create'](), _0x549857['_afterRenderStage'] = _0xc9b536['b']['Create'](), _0x549857['_pointerMoveStage'] = _0xc9b536['b']['Create'](), _0x549857['_pointerDownStage'] = _0xc9b536['b']['Create'](), _0x549857['_pointerUpStage'] = _0xc9b536['b']['Create'](), _0x549857['geometriesByUniqueId'] = null, _0x549857['_defaultMeshCandidates'] = { 'data': [], 'length': 0x0 }, _0x549857['_defaultSubMeshCandidates'] = { 'data': [], 'length': 0x0 }, _0x549857['_preventFreeActiveMeshesAndRenderingGroups'] = !0x1, _0x549857['_activeMeshesFrozen'] = !0x1, _0x549857['_allowPostProcessClearColor'] = !0x0, _0x549857['getDeterministicFrameTime'] = function() { return 0x3e8 / 0x3c; } , _0x549857['_blockMaterialDirtyMechanism'] = !0x1, _0x549857['_engine'] = _0x215ebd || _0xce6890['a']['LastCreatedEngine'], _0x267dca && _0x267dca['virtual'] || (_0xce6890['a']['_LastCreatedScene'] = _0x549857, _0x549857['_engine']['scenes']['push'](_0x549857)), _0x549857['_uid'] = null, _0x549857['_renderingManager'] = new _0x5e197e['b'](_0x549857), _0x32dcb0['a'] && (_0x549857['postProcessManager'] = new _0x32dcb0['a'](_0x549857)), _0x52f86b['a']['IsWindowObjectExist']() && _0x549857['attachControl'](), _0x549857['_createUbo'](), _0x30fcde['a'] && (_0x549857['_imageProcessingConfiguration'] = new _0x30fcde['a']()), _0x549857['setDefaultCandidateProviders'](), _0x267dca && !0x0 === _0x267dca['useGeometryUniqueIdsMap'] && (_0x549857['geometriesByUniqueId'] = {}), _0x549857['useMaterialMeshMap'] = _0x267dca && _0x267dca['useGeometryUniqueIdsMap'] || !0x1, _0x549857['useClonedMeshhMap'] = _0x267dca && _0x267dca['useClonedMeshhMap'] || !0x1, _0x267dca && _0x267dca['virtual'] || _0x549857['_engine']['onNewSceneAddedObservable']['notifyObservers'](_0x549857), _0x549857; } return _0x1760d6['d'](_0x5b6241, _0x2e6ae8), _0x5b6241['DefaultMaterialFactory'] = function(_0x19c7b4) { throw _0x28a876['a']['WarnImport']('StandardMaterial'); } , _0x5b6241['CollisionCoordinatorFactory'] = function() { throw _0x28a876['a']['WarnImport']('DefaultCollisionCoordinator'); } , Object['defineProperty'](_0x5b6241['prototype'], 'environmentTexture', { 'get': function() { return this['_environmentTexture']; }, 'set': function(_0x206429) { this['_environmentTexture'] !== _0x206429 && (this['_environmentTexture'] = _0x206429, this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'imageProcessingConfiguration', { 'get': function() { return this['_imageProcessingConfiguration']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'forceWireframe', { 'get': function() { return this['_forceWireframe']; }, 'set': function(_0x3a7ee9) { this['_forceWireframe'] !== _0x3a7ee9 && (this['_forceWireframe'] = _0x3a7ee9, this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_MiscDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'forcePointsCloud', { 'get': function() { return this['_forcePointsCloud']; }, 'set': function(_0x5d1c6c) { this['_forcePointsCloud'] !== _0x5d1c6c && (this['_forcePointsCloud'] = _0x5d1c6c, this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_MiscDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'animationPropertiesOverride', { 'get': function() { return this['_animationPropertiesOverride']; }, 'set': function(_0x17fca8) { this['_animationPropertiesOverride'] = _0x17fca8; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'onDispose', { 'set': function(_0x2625fb) { this['_onDisposeObserver'] && this['onDisposeObservable']['remove'](this['_onDisposeObserver']), this['_onDisposeObserver'] = this['onDisposeObservable']['add'](_0x2625fb); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'beforeRender', { 'set': function(_0x11cc81) { this['_onBeforeRenderObserver'] && this['onBeforeRenderObservable']['remove'](this['_onBeforeRenderObserver']), _0x11cc81 && (this['_onBeforeRenderObserver'] = this['onBeforeRenderObservable']['add'](_0x11cc81)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'afterRender', { 'set': function(_0x439ca1) { this['_onAfterRenderObserver'] && this['onAfterRenderObservable']['remove'](this['_onAfterRenderObserver']), _0x439ca1 && (this['_onAfterRenderObserver'] = this['onAfterRenderObservable']['add'](_0x439ca1)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'beforeCameraRender', { 'set': function(_0x5e6440) { this['_onBeforeCameraRenderObserver'] && this['onBeforeCameraRenderObservable']['remove'](this['_onBeforeCameraRenderObserver']), this['_onBeforeCameraRenderObserver'] = this['onBeforeCameraRenderObservable']['add'](_0x5e6440); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'afterCameraRender', { 'set': function(_0x346883) { this['_onAfterCameraRenderObserver'] && this['onAfterCameraRenderObservable']['remove'](this['_onAfterCameraRenderObserver']), this['_onAfterCameraRenderObserver'] = this['onAfterCameraRenderObservable']['add'](_0x346883); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'unTranslatedPointer', { 'get': function() { return this['_inputManager']['unTranslatedPointer']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241, 'DragMovementThreshold', { 'get': function() { return _0x2c78b5['DragMovementThreshold']; }, 'set': function(_0x3ef58a) { _0x2c78b5['DragMovementThreshold'] = _0x3ef58a; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241, 'LongPressDelay', { 'get': function() { return _0x2c78b5['LongPressDelay']; }, 'set': function(_0x3ca87d) { _0x2c78b5['LongPressDelay'] = _0x3ca87d; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241, 'DoubleClickDelay', { 'get': function() { return _0x2c78b5['DoubleClickDelay']; }, 'set': function(_0x271519) { _0x2c78b5['DoubleClickDelay'] = _0x271519; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241, 'ExclusiveDoubleClickMode', { 'get': function() { return _0x2c78b5['ExclusiveDoubleClickMode']; }, 'set': function(_0x414686) { _0x2c78b5['ExclusiveDoubleClickMode'] = _0x414686; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'useRightHandedSystem', { 'get': function() { return this['_useRightHandedSystem']; }, 'set': function(_0x46e725) { this['_useRightHandedSystem'] !== _0x46e725 && (this['_useRightHandedSystem'] = _0x46e725, this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_MiscDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['setStepId'] = function(_0x585966) { this['_currentStepId'] = _0x585966; } , _0x5b6241['prototype']['getStepId'] = function() { return this['_currentStepId']; } , _0x5b6241['prototype']['getInternalStep'] = function() { return this['_currentInternalStep']; } , Object['defineProperty'](_0x5b6241['prototype'], 'fogEnabled', { 'get': function() { return this['_fogEnabled']; }, 'set': function(_0x23f837) { this['_fogEnabled'] !== _0x23f837 && (this['_fogEnabled'] = _0x23f837, this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_MiscDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'fogMode', { 'get': function() { return this['_fogMode']; }, 'set': function(_0x3f71fb) { this['_fogMode'] !== _0x3f71fb && (this['_fogMode'] = _0x3f71fb, this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_MiscDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'shadowsEnabled', { 'get': function() { return this['_shadowsEnabled']; }, 'set': function(_0x5aabf2) { this['_shadowsEnabled'] !== _0x5aabf2 && (this['_shadowsEnabled'] = _0x5aabf2, this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_LightDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'lightsEnabled', { 'get': function() { return this['_lightsEnabled']; }, 'set': function(_0x17e37a) { this['_lightsEnabled'] !== _0x17e37a && (this['_lightsEnabled'] = _0x17e37a, this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_LightDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'activeCamera', { 'get': function() { return this['_activeCamera']; }, 'set': function(_0x10bd26) { _0x10bd26 !== this['_activeCamera'] && (this['_activeCamera'] = _0x10bd26, this['onActiveCameraChanged']['notifyObservers'](this)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'defaultMaterial', { 'get': function() { return this['_defaultMaterial'] || (this['_defaultMaterial'] = _0x5b6241['DefaultMaterialFactory'](this)), this['_defaultMaterial']; }, 'set': function(_0x3fe396) { this['_defaultMaterial'] = _0x3fe396; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'texturesEnabled', { 'get': function() { return this['_texturesEnabled']; }, 'set': function(_0x5e5ad9) { this['_texturesEnabled'] !== _0x5e5ad9 && (this['_texturesEnabled'] = _0x5e5ad9, this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'skeletonsEnabled', { 'get': function() { return this['_skeletonsEnabled']; }, 'set': function(_0x20b780) { this['_skeletonsEnabled'] !== _0x20b780 && (this['_skeletonsEnabled'] = _0x20b780, this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_AttributesDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'collisionCoordinator', { 'get': function() { return this['_collisionCoordinator'] || (this['_collisionCoordinator'] = _0x5b6241['CollisionCoordinatorFactory'](), this['_collisionCoordinator']['init'](this)), this['_collisionCoordinator']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'frustumPlanes', { 'get': function() { return this['_frustumPlanes']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['_registerTransientComponents'] = function() { if (this['_transientComponents']['length'] > 0x0) { for (var _0x2a3342 = 0x0, _0x1d4521 = this['_transientComponents']; _0x2a3342 < _0x1d4521['length']; _0x2a3342++) { _0x1d4521[_0x2a3342]['register'](); } this['_transientComponents'] = []; } } , _0x5b6241['prototype']['_addComponent'] = function(_0x323ff4) { this['_components']['push'](_0x323ff4), this['_transientComponents']['push'](_0x323ff4); var _0x29ec2d = _0x323ff4; _0x29ec2d['addFromContainer'] && this['_serializableComponents']['push'](_0x29ec2d); } , _0x5b6241['prototype']['_getComponent'] = function(_0x4b70c2) { for (var _0x2738b3 = 0x0, _0x195f35 = this['_components']; _0x2738b3 < _0x195f35['length']; _0x2738b3++) { var _0x40b486 = _0x195f35[_0x2738b3]; if (_0x40b486['name'] === _0x4b70c2) return _0x40b486; } return null; } , _0x5b6241['prototype']['getClassName'] = function() { return 'Scene'; } , _0x5b6241['prototype']['_getDefaultMeshCandidates'] = function() { return this['_defaultMeshCandidates']['data'] = this['meshes'], this['_defaultMeshCandidates']['length'] = this['meshes']['length'], this['_defaultMeshCandidates']; } , _0x5b6241['prototype']['_getDefaultSubMeshCandidates'] = function(_0x15b22b) { return this['_defaultSubMeshCandidates']['data'] = _0x15b22b['subMeshes'], this['_defaultSubMeshCandidates']['length'] = _0x15b22b['subMeshes']['length'], this['_defaultSubMeshCandidates']; } , _0x5b6241['prototype']['setDefaultCandidateProviders'] = function() { this['getActiveMeshCandidates'] = this['_getDefaultMeshCandidates']['bind'](this), this['getActiveSubMeshCandidates'] = this['_getDefaultSubMeshCandidates']['bind'](this), this['getIntersectingSubMeshCandidates'] = this['_getDefaultSubMeshCandidates']['bind'](this), this['getCollidingSubMeshCandidates'] = this['_getDefaultSubMeshCandidates']['bind'](this); } , Object['defineProperty'](_0x5b6241['prototype'], 'meshUnderPointer', { 'get': function() { return this['_inputManager']['meshUnderPointer']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'pointerX', { 'get': function() { return this['_inputManager']['pointerX']; }, 'set': function(_0x58d3cf) { this['_inputManager']['pointerX'] = _0x58d3cf; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5b6241['prototype'], 'pointerY', { 'get': function() { return this['_inputManager']['pointerY']; }, 'set': function(_0x274232) { this['_inputManager']['pointerY'] = _0x274232; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['getCachedMaterial'] = function() { return this['_cachedMaterial']; } , _0x5b6241['prototype']['getCachedEffect'] = function() { return this['_cachedEffect']; } , _0x5b6241['prototype']['getCachedVisibility'] = function() { return this['_cachedVisibility']; } , _0x5b6241['prototype']['isCachedMaterialInvalid'] = function(_0x17ace1, _0x2ed3f6, _0x429af0) { return void 0x0 === _0x429af0 && (_0x429af0 = 0x1), this['_cachedEffect'] !== _0x2ed3f6 || this['_cachedMaterial'] !== _0x17ace1 || this['_cachedVisibility'] !== _0x429af0; } , _0x5b6241['prototype']['getEngine'] = function() { return this['_engine']; } , _0x5b6241['prototype']['getTotalVertices'] = function() { return this['_totalVertices']['current']; } , Object['defineProperty'](_0x5b6241['prototype'], 'totalVerticesPerfCounter', { 'get': function() { return this['_totalVertices']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['getActiveIndices'] = function() { return this['_activeIndices']['current']; } , Object['defineProperty'](_0x5b6241['prototype'], 'totalActiveIndicesPerfCounter', { 'get': function() { return this['_activeIndices']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['getActiveParticles'] = function() { return this['_activeParticles']['current']; } , Object['defineProperty'](_0x5b6241['prototype'], 'activeParticlesPerfCounter', { 'get': function() { return this['_activeParticles']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['getActiveBones'] = function() { return this['_activeBones']['current']; } , Object['defineProperty'](_0x5b6241['prototype'], 'activeBonesPerfCounter', { 'get': function() { return this['_activeBones']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['getActiveMeshes'] = function() { return this['_activeMeshes']; } , _0x5b6241['prototype']['getAnimationRatio'] = function() { return void 0x0 !== this['_animationRatio'] ? this['_animationRatio'] : 0x1; } , _0x5b6241['prototype']['getRenderId'] = function() { return this['_renderId']; } , _0x5b6241['prototype']['getFrameId'] = function() { return this['_frameId']; } , _0x5b6241['prototype']['incrementRenderId'] = function() { this['_renderId']++; } , _0x5b6241['prototype']['_createUbo'] = function() { this['_sceneUbo'] = new _0x3b8c1c['a'](this['_engine'],void 0x0,!0x0), this['_sceneUbo']['addUniform']('viewProjection', 0x10), this['_sceneUbo']['addUniform']('view', 0x10); } , _0x5b6241['prototype']['simulatePointerMove'] = function(_0x1fc456, _0x2dcbe0) { return this['_inputManager']['simulatePointerMove'](_0x1fc456, _0x2dcbe0), this; } , _0x5b6241['prototype']['simulatePointerDown'] = function(_0x516a5f, _0x2f8392) { return this['_inputManager']['simulatePointerDown'](_0x516a5f, _0x2f8392), this; } , _0x5b6241['prototype']['simulatePointerUp'] = function(_0x5e3cf7, _0x49f25d, _0x37598d) { return this['_inputManager']['simulatePointerUp'](_0x5e3cf7, _0x49f25d, _0x37598d), this; } , _0x5b6241['prototype']['isPointerCaptured'] = function(_0x24b41d) { return void 0x0 === _0x24b41d && (_0x24b41d = 0x0), this['_inputManager']['isPointerCaptured'](_0x24b41d); } , _0x5b6241['prototype']['attachControl'] = function(_0x22ca69, _0x43e44e, _0x34e87f) { void 0x0 === _0x22ca69 && (_0x22ca69 = !0x0), void 0x0 === _0x43e44e && (_0x43e44e = !0x0), void 0x0 === _0x34e87f && (_0x34e87f = !0x0), this['_inputManager']['attachControl'](_0x22ca69, _0x43e44e, _0x34e87f); } , _0x5b6241['prototype']['detachControl'] = function() { this['_inputManager']['detachControl'](); } , _0x5b6241['prototype']['isReady'] = function() { if (this['_isDisposed']) return !0x1; var _0x293c4e, _0x52a214 = this['getEngine'](); if (!_0x52a214['areAllEffectsReady']()) return !0x1; if (this['_pendingData']['length'] > 0x0) return !0x1; for (_0x293c4e = 0x0; _0x293c4e < this['meshes']['length']; _0x293c4e++) { var _0x2426be = this['meshes'][_0x293c4e]; if (_0x2426be['isEnabled']() && (_0x2426be['subMeshes'] && 0x0 !== _0x2426be['subMeshes']['length'])) { if (!_0x2426be['isReady'](!0x0)) return !0x1; for (var _0x56688d = 'InstancedMesh' === _0x2426be['getClassName']() || 'InstancedLinesMesh' === _0x2426be['getClassName']() || _0x52a214['getCaps']()['instancedArrays'] && _0x2426be['instances']['length'] > 0x0, _0x415bae = 0x0, _0xa25288 = this['_isReadyForMeshStage']; _0x415bae < _0xa25288['length']; _0x415bae++) { if (!_0xa25288[_0x415bae]['action'](_0x2426be, _0x56688d)) return !0x1; } } } for (_0x293c4e = 0x0; _0x293c4e < this['geometries']['length']; _0x293c4e++) { if (this['geometries'][_0x293c4e]['delayLoadState'] === _0x22ca5d['a']['DELAYLOADSTATE_LOADING']) return !0x1; } if (this['activeCameras'] && this['activeCameras']['length'] > 0x0) for (var _0x2cadfc = 0x0, _0x3ae968 = this['activeCameras']; _0x2cadfc < _0x3ae968['length']; _0x2cadfc++) { if (!_0x3ae968[_0x2cadfc]['isReady'](!0x0)) return !0x1; } else if (this['activeCamera'] && !this['activeCamera']['isReady'](!0x0)) return !0x1; for (var _0x57b631 = 0x0, _0x1da199 = this['particleSystems']; _0x57b631 < _0x1da199['length']; _0x57b631++) { if (!_0x1da199[_0x57b631]['isReady']()) return !0x1; } return !0x0; } , _0x5b6241['prototype']['resetCachedMaterial'] = function() { this['_cachedMaterial'] = null, this['_cachedEffect'] = null, this['_cachedVisibility'] = null; } , _0x5b6241['prototype']['registerBeforeRender'] = function(_0x450396) { this['onBeforeRenderObservable']['add'](_0x450396); } , _0x5b6241['prototype']['unregisterBeforeRender'] = function(_0x4dbb9d) { this['onBeforeRenderObservable']['removeCallback'](_0x4dbb9d); } , _0x5b6241['prototype']['registerAfterRender'] = function(_0x59e6e4) { this['onAfterRenderObservable']['add'](_0x59e6e4); } , _0x5b6241['prototype']['unregisterAfterRender'] = function(_0x508746) { this['onAfterRenderObservable']['removeCallback'](_0x508746); } , _0x5b6241['prototype']['_executeOnceBeforeRender'] = function(_0x4856ec) { var _0x3a81ae = this , _0x5d2102 = function() { _0x4856ec(), setTimeout(function() { _0x3a81ae['unregisterBeforeRender'](_0x5d2102); }); }; this['registerBeforeRender'](_0x5d2102); } , _0x5b6241['prototype']['executeOnceBeforeRender'] = function(_0x5c8526, _0x2e929e) { var _0x3c65aa = this; void 0x0 !== _0x2e929e ? setTimeout(function() { _0x3c65aa['_executeOnceBeforeRender'](_0x5c8526); }, _0x2e929e) : this['_executeOnceBeforeRender'](_0x5c8526); } , _0x5b6241['prototype']['_addPendingData'] = function(_0x3ed0d9) { this['_pendingData']['push'](_0x3ed0d9); } , _0x5b6241['prototype']['_removePendingData'] = function(_0x4f3cc1) { var _0x55bd6f = this['isLoading'] , _0x4e53a4 = this['_pendingData']['indexOf'](_0x4f3cc1); -0x1 !== _0x4e53a4 && this['_pendingData']['splice'](_0x4e53a4, 0x1), _0x55bd6f && !this['isLoading'] && this['onDataLoadedObservable']['notifyObservers'](this); } , _0x5b6241['prototype']['getWaitingItemsCount'] = function() { return this['_pendingData']['length']; } , Object['defineProperty'](_0x5b6241['prototype'], 'isLoading', { 'get': function() { return this['_pendingData']['length'] > 0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['executeWhenReady'] = function(_0x5c1139) { var _0x635b2e = this; this['onReadyObservable']['add'](_0x5c1139), -0x1 === this['_executeWhenReadyTimeoutId'] && (this['_executeWhenReadyTimeoutId'] = setTimeout(function() { _0x635b2e['_checkIsReady'](); }, 0x96)); } , _0x5b6241['prototype']['whenReadyAsync'] = function() { var _0x101420 = this; return new Promise(function(_0x4a1e03) { _0x101420['executeWhenReady'](function() { _0x4a1e03(); }); } ); } , _0x5b6241['prototype']['_checkIsReady'] = function() { var _0x2d4d75 = this; if (this['_registerTransientComponents'](), this['isReady']()) return this['onReadyObservable']['notifyObservers'](this), this['onReadyObservable']['clear'](), void (this['_executeWhenReadyTimeoutId'] = -0x1); this['_executeWhenReadyTimeoutId'] = setTimeout(function() { _0x2d4d75['_checkIsReady'](); }, 0x96); } , Object['defineProperty'](_0x5b6241['prototype'], 'animatables', { 'get': function() { return this['_activeAnimatables']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['resetLastAnimationTimeFrame'] = function() { this['_animationTimeLast'] = _0x4581c2['a']['Now']; } , _0x5b6241['prototype']['getViewMatrix'] = function() { return this['_viewMatrix']; } , _0x5b6241['prototype']['getProjectionMatrix'] = function() { return this['_projectionMatrix']; } , _0x5b6241['prototype']['getTransformMatrix'] = function() { return this['_transformMatrix']; } , _0x5b6241['prototype']['setTransformMatrix'] = function(_0x1ca7a9, _0x4458fe, _0x25d64c, _0x389f9b) { this['_viewUpdateFlag'] === _0x1ca7a9['updateFlag'] && this['_projectionUpdateFlag'] === _0x4458fe['updateFlag'] || (this['_viewUpdateFlag'] = _0x1ca7a9['updateFlag'], this['_projectionUpdateFlag'] = _0x4458fe['updateFlag'], this['_viewMatrix'] = _0x1ca7a9, this['_projectionMatrix'] = _0x4458fe, this['_viewMatrix']['multiplyToRef'](this['_projectionMatrix'], this['_transformMatrix']), this['_frustumPlanes'] ? _0x4b6821['i']['GetPlanesToRef'](this['_transformMatrix'], this['_frustumPlanes']) : this['_frustumPlanes'] = _0x4b6821['i']['GetPlanes'](this['_transformMatrix']), this['_multiviewSceneUbo'] && this['_multiviewSceneUbo']['useUbo'] ? this['_updateMultiviewUbo'](_0x25d64c, _0x389f9b) : this['_sceneUbo']['useUbo'] && (this['_sceneUbo']['updateMatrix']('viewProjection', this['_transformMatrix']), this['_sceneUbo']['updateMatrix']('view', this['_viewMatrix']), this['_sceneUbo']['update']())); } , _0x5b6241['prototype']['getSceneUniformBuffer'] = function() { return this['_multiviewSceneUbo'] ? this['_multiviewSceneUbo'] : this['_sceneUbo']; } , _0x5b6241['prototype']['getUniqueId'] = function() { var _0x516cd2 = _0x5b6241['_uniqueIdCounter']; return _0x5b6241['_uniqueIdCounter']++, _0x516cd2; } , _0x5b6241['prototype']['addMesh'] = function(_0x55d275, _0x47a944) { var _0xfd8e4c = this; void 0x0 === _0x47a944 && (_0x47a944 = !0x1), this['meshes']['push'](_0x55d275), _0x55d275['_resyncLightSources'](), this['onNewMeshAddedObservable']['notifyObservers'](_0x55d275), _0x47a944 && _0x55d275['getChildMeshes']()['forEach'](function(_0x44c8a1) { _0xfd8e4c['addMesh'](_0x44c8a1); }); } , _0x5b6241['prototype']['removeMesh'] = function(_0x23778b, _0xcc5079) { var _0x968336 = this; void 0x0 === _0xcc5079 && (_0xcc5079 = !0x1); var _0x13cb82 = this['meshes']['indexOf'](_0x23778b); return -0x1 !== _0x13cb82 && (this['meshes'][_0x13cb82] = this['meshes'][this['meshes']['length'] - 0x1], this['meshes']['pop']()), this['onMeshRemovedObservable']['notifyObservers'](_0x23778b), _0xcc5079 && _0x23778b['getChildMeshes']()['forEach'](function(_0x3ef285) { _0x968336['removeMesh'](_0x3ef285); }), _0x13cb82; } , _0x5b6241['prototype']['addTransformNode'] = function(_0x206bb8) { _0x206bb8['_indexInSceneTransformNodesArray'] = this['transformNodes']['length'], this['transformNodes']['push'](_0x206bb8), this['onNewTransformNodeAddedObservable']['notifyObservers'](_0x206bb8); } , _0x5b6241['prototype']['removeTransformNode'] = function(_0x45997e) { var _0x22345d = _0x45997e['_indexInSceneTransformNodesArray']; if (-0x1 !== _0x22345d) { if (_0x22345d !== this['transformNodes']['length'] - 0x1) { var _0x5b35ac = this['transformNodes'][this['transformNodes']['length'] - 0x1]; this['transformNodes'][_0x22345d] = _0x5b35ac, _0x5b35ac['_indexInSceneTransformNodesArray'] = _0x22345d; } _0x45997e['_indexInSceneTransformNodesArray'] = -0x1, this['transformNodes']['pop'](); } return this['onTransformNodeRemovedObservable']['notifyObservers'](_0x45997e), _0x22345d; } , _0x5b6241['prototype']['removeSkeleton'] = function(_0x5149ff) { var _0x3bce53 = this['skeletons']['indexOf'](_0x5149ff); return -0x1 !== _0x3bce53 && (this['skeletons']['splice'](_0x3bce53, 0x1), this['onSkeletonRemovedObservable']['notifyObservers'](_0x5149ff)), _0x3bce53; } , _0x5b6241['prototype']['removeMorphTargetManager'] = function(_0x33fd4b) { var _0x12135b = this['morphTargetManagers']['indexOf'](_0x33fd4b); return -0x1 !== _0x12135b && this['morphTargetManagers']['splice'](_0x12135b, 0x1), _0x12135b; } , _0x5b6241['prototype']['removeLight'] = function(_0x5d2d07) { var _0x4803c2 = this['lights']['indexOf'](_0x5d2d07); if (-0x1 !== _0x4803c2) { for (var _0x2a635b = 0x0, _0x2dd097 = this['meshes']; _0x2a635b < _0x2dd097['length']; _0x2a635b++) { _0x2dd097[_0x2a635b]['_removeLightSource'](_0x5d2d07); } this['lights']['splice'](_0x4803c2, 0x1), this['sortLightsByPriority'](); } return this['onLightRemovedObservable']['notifyObservers'](_0x5d2d07), _0x4803c2; } , _0x5b6241['prototype']['removeCamera'] = function(_0x30e862) { var _0x57a17e = this['cameras']['indexOf'](_0x30e862); -0x1 !== _0x57a17e && this['cameras']['splice'](_0x57a17e, 0x1); var _0x2ecba = this['activeCameras']['indexOf'](_0x30e862); return -0x1 !== _0x2ecba && this['activeCameras']['splice'](_0x2ecba, 0x1), this['activeCamera'] === _0x30e862 && (this['cameras']['length'] > 0x0 ? this['activeCamera'] = this['cameras'][0x0] : this['activeCamera'] = null), this['onCameraRemovedObservable']['notifyObservers'](_0x30e862), _0x57a17e; } , _0x5b6241['prototype']['removeParticleSystem'] = function(_0x498422) { var _0x54a3b3 = this['particleSystems']['indexOf'](_0x498422); return -0x1 !== _0x54a3b3 && this['particleSystems']['splice'](_0x54a3b3, 0x1), _0x54a3b3; } , _0x5b6241['prototype']['removeAnimation'] = function(_0x11faee) { var _0x19da98 = this['animations']['indexOf'](_0x11faee); return -0x1 !== _0x19da98 && this['animations']['splice'](_0x19da98, 0x1), _0x19da98; } , _0x5b6241['prototype']['stopAnimation'] = function(_0x36a3f4, _0xfca8f3, _0x166af1) {} , _0x5b6241['prototype']['removeAnimationGroup'] = function(_0x3329c6) { var _0xbfd6e0 = this['animationGroups']['indexOf'](_0x3329c6); return -0x1 !== _0xbfd6e0 && this['animationGroups']['splice'](_0xbfd6e0, 0x1), _0xbfd6e0; } , _0x5b6241['prototype']['removeMultiMaterial'] = function(_0x51a19e) { var _0x4d9317 = this['multiMaterials']['indexOf'](_0x51a19e); return -0x1 !== _0x4d9317 && this['multiMaterials']['splice'](_0x4d9317, 0x1), _0x4d9317; } , _0x5b6241['prototype']['removeMaterial'] = function(_0x4d4085) { var _0x153a62 = _0x4d4085['_indexInSceneMaterialArray']; if (-0x1 !== _0x153a62 && _0x153a62 < this['materials']['length']) { if (_0x153a62 !== this['materials']['length'] - 0x1) { var _0x355114 = this['materials'][this['materials']['length'] - 0x1]; this['materials'][_0x153a62] = _0x355114, _0x355114['_indexInSceneMaterialArray'] = _0x153a62; } _0x4d4085['_indexInSceneMaterialArray'] = -0x1, this['materials']['pop'](); } return this['onMaterialRemovedObservable']['notifyObservers'](_0x4d4085), _0x153a62; } , _0x5b6241['prototype']['removeActionManager'] = function(_0x46a3f4) { var _0x58d694 = this['actionManagers']['indexOf'](_0x46a3f4); return -0x1 !== _0x58d694 && this['actionManagers']['splice'](_0x58d694, 0x1), _0x58d694; } , _0x5b6241['prototype']['removeTexture'] = function(_0x284dd4) { var _0x21234a = this['textures']['indexOf'](_0x284dd4); return -0x1 !== _0x21234a && this['textures']['splice'](_0x21234a, 0x1), this['onTextureRemovedObservable']['notifyObservers'](_0x284dd4), _0x21234a; } , _0x5b6241['prototype']['addLight'] = function(_0x594943) { this['lights']['push'](_0x594943), this['sortLightsByPriority'](); for (var _0xc06587 = 0x0, _0x45a2cf = this['meshes']; _0xc06587 < _0x45a2cf['length']; _0xc06587++) { var _0x503297 = _0x45a2cf[_0xc06587]; -0x1 === _0x503297['lightSources']['indexOf'](_0x594943) && (_0x503297['lightSources']['push'](_0x594943), _0x503297['_resyncLightSources']()); } this['onNewLightAddedObservable']['notifyObservers'](_0x594943); } , _0x5b6241['prototype']['sortLightsByPriority'] = function() { this['requireLightSorting'] && this['lights']['sort'](_0x3b7dc7['a']['CompareLightsPriority']); } , _0x5b6241['prototype']['addCamera'] = function(_0x2a8746) { this['cameras']['push'](_0x2a8746), this['onNewCameraAddedObservable']['notifyObservers'](_0x2a8746); } , _0x5b6241['prototype']['addSkeleton'] = function(_0x14e62d) { this['skeletons']['push'](_0x14e62d), this['onNewSkeletonAddedObservable']['notifyObservers'](_0x14e62d); } , _0x5b6241['prototype']['addParticleSystem'] = function(_0x4f87b2) { this['particleSystems']['push'](_0x4f87b2); } , _0x5b6241['prototype']['addAnimation'] = function(_0xfd3858) { this['animations']['push'](_0xfd3858); } , _0x5b6241['prototype']['addAnimationGroup'] = function(_0x14aff9) { this['animationGroups']['push'](_0x14aff9); } , _0x5b6241['prototype']['addMultiMaterial'] = function(_0x3679be) { this['multiMaterials']['push'](_0x3679be); } , _0x5b6241['prototype']['addMaterial'] = function(_0x551702) { _0x551702['_indexInSceneMaterialArray'] = this['materials']['length'], this['materials']['push'](_0x551702), this['onNewMaterialAddedObservable']['notifyObservers'](_0x551702); } , _0x5b6241['prototype']['addMorphTargetManager'] = function(_0x572160) { this['morphTargetManagers']['push'](_0x572160); } , _0x5b6241['prototype']['addGeometry'] = function(_0x40785d) { this['geometriesByUniqueId'] && (this['geometriesByUniqueId'][_0x40785d['uniqueId']] = this['geometries']['length']), this['geometries']['push'](_0x40785d); } , _0x5b6241['prototype']['addActionManager'] = function(_0x5e29e8) { this['actionManagers']['push'](_0x5e29e8); } , _0x5b6241['prototype']['addTexture'] = function(_0x54aea4) { this['textures']['push'](_0x54aea4), this['onNewTextureAddedObservable']['notifyObservers'](_0x54aea4); } , _0x5b6241['prototype']['switchActiveCamera'] = function(_0x1fc2c9, _0x32dfb9) { void 0x0 === _0x32dfb9 && (_0x32dfb9 = !0x0); var _0x3bcda5 = this['_engine']['getRenderingCanvas'](); _0x3bcda5 && (this['activeCamera'] && this['activeCamera']['detachControl'](_0x3bcda5), this['activeCamera'] = _0x1fc2c9, _0x32dfb9 && _0x1fc2c9['attachControl'](_0x3bcda5)); } , _0x5b6241['prototype']['setActiveCameraByID'] = function(_0x2aa446) { var _0x14cc6b = this['getCameraByID'](_0x2aa446); return _0x14cc6b ? (this['activeCamera'] = _0x14cc6b, _0x14cc6b) : null; } , _0x5b6241['prototype']['setActiveCameraByName'] = function(_0x19d26b) { var _0x38a97b = this['getCameraByName'](_0x19d26b); return _0x38a97b ? (this['activeCamera'] = _0x38a97b, _0x38a97b) : null; } , _0x5b6241['prototype']['getAnimationGroupByName'] = function(_0xc05300) { for (var _0x2633c2 = 0x0; _0x2633c2 < this['animationGroups']['length']; _0x2633c2++) if (this['animationGroups'][_0x2633c2]['name'] === _0xc05300) return this['animationGroups'][_0x2633c2]; return null; } , _0x5b6241['prototype']['getMaterialByUniqueID'] = function(_0x36c99d) { for (var _0x277fdc = 0x0; _0x277fdc < this['materials']['length']; _0x277fdc++) if (this['materials'][_0x277fdc]['uniqueId'] === _0x36c99d) return this['materials'][_0x277fdc]; return null; } , _0x5b6241['prototype']['getMaterialByID'] = function(_0xb9110d) { for (var _0x502e4a = 0x0; _0x502e4a < this['materials']['length']; _0x502e4a++) if (this['materials'][_0x502e4a]['id'] === _0xb9110d) return this['materials'][_0x502e4a]; return null; } , _0x5b6241['prototype']['getMaterialByName'] = function(_0x103267) { for (var _0x2bf994 = 0x0; _0x2bf994 < this['materials']['length']; _0x2bf994++) if (this['materials'][_0x2bf994]['name'] === _0x103267) return this['materials'][_0x2bf994]; return null; } , _0x5b6241['prototype']['getCameraByID'] = function(_0xa95535) { for (var _0x458d86 = 0x0; _0x458d86 < this['cameras']['length']; _0x458d86++) if (this['cameras'][_0x458d86]['id'] === _0xa95535) return this['cameras'][_0x458d86]; return null; } , _0x5b6241['prototype']['getCameraByUniqueID'] = function(_0x271424) { for (var _0xf7b11c = 0x0; _0xf7b11c < this['cameras']['length']; _0xf7b11c++) if (this['cameras'][_0xf7b11c]['uniqueId'] === _0x271424) return this['cameras'][_0xf7b11c]; return null; } , _0x5b6241['prototype']['getCameraByName'] = function(_0x1276e3) { for (var _0x458988 = 0x0; _0x458988 < this['cameras']['length']; _0x458988++) if (this['cameras'][_0x458988]['name'] === _0x1276e3) return this['cameras'][_0x458988]; return null; } , _0x5b6241['prototype']['getBoneByID'] = function(_0x53e09b) { for (var _0x570bd7 = 0x0; _0x570bd7 < this['skeletons']['length']; _0x570bd7++) for (var _0x15bebf = this['skeletons'][_0x570bd7], _0x5620b7 = 0x0; _0x5620b7 < _0x15bebf['bones']['length']; _0x5620b7++) if (_0x15bebf['bones'][_0x5620b7]['id'] === _0x53e09b) return _0x15bebf['bones'][_0x5620b7]; return null; } , _0x5b6241['prototype']['getBoneByName'] = function(_0x4aee6d) { for (var _0x3b237d = 0x0; _0x3b237d < this['skeletons']['length']; _0x3b237d++) for (var _0x49084e = this['skeletons'][_0x3b237d], _0x1217cb = 0x0; _0x1217cb < _0x49084e['bones']['length']; _0x1217cb++) if (_0x49084e['bones'][_0x1217cb]['name'] === _0x4aee6d) return _0x49084e['bones'][_0x1217cb]; return null; } , _0x5b6241['prototype']['getLightByName'] = function(_0x12d9b8) { for (var _0xa2280f = 0x0; _0xa2280f < this['lights']['length']; _0xa2280f++) if (this['lights'][_0xa2280f]['name'] === _0x12d9b8) return this['lights'][_0xa2280f]; return null; } , _0x5b6241['prototype']['getLightByID'] = function(_0x1e4e52) { for (var _0x1ac6f1 = 0x0; _0x1ac6f1 < this['lights']['length']; _0x1ac6f1++) if (this['lights'][_0x1ac6f1]['id'] === _0x1e4e52) return this['lights'][_0x1ac6f1]; return null; } , _0x5b6241['prototype']['getLightByUniqueID'] = function(_0x440f9d) { for (var _0x3811cf = 0x0; _0x3811cf < this['lights']['length']; _0x3811cf++) if (this['lights'][_0x3811cf]['uniqueId'] === _0x440f9d) return this['lights'][_0x3811cf]; return null; } , _0x5b6241['prototype']['getParticleSystemByID'] = function(_0x24a5d6) { for (var _0x2104cb = 0x0; _0x2104cb < this['particleSystems']['length']; _0x2104cb++) if (this['particleSystems'][_0x2104cb]['id'] === _0x24a5d6) return this['particleSystems'][_0x2104cb]; return null; } , _0x5b6241['prototype']['getGeometryByID'] = function(_0x109faa) { for (var _0x5d1253 = 0x0; _0x5d1253 < this['geometries']['length']; _0x5d1253++) if (this['geometries'][_0x5d1253]['id'] === _0x109faa) return this['geometries'][_0x5d1253]; return null; } , _0x5b6241['prototype']['_getGeometryByUniqueID'] = function(_0x40e46d) { if (this['geometriesByUniqueId']) { var _0x37d2ff = this['geometriesByUniqueId'][_0x40e46d]; if (void 0x0 !== _0x37d2ff) return this['geometries'][_0x37d2ff]; } else for (var _0x2144a1 = 0x0; _0x2144a1 < this['geometries']['length']; _0x2144a1++) if (this['geometries'][_0x2144a1]['uniqueId'] === _0x40e46d) return this['geometries'][_0x2144a1]; return null; } , _0x5b6241['prototype']['pushGeometry'] = function(_0x50be45, _0x23d0ae) { return !(!_0x23d0ae && this['_getGeometryByUniqueID'](_0x50be45['uniqueId'])) && (this['addGeometry'](_0x50be45), this['onNewGeometryAddedObservable']['notifyObservers'](_0x50be45), !0x0); } , _0x5b6241['prototype']['removeGeometry'] = function(_0x51947d) { var _0x55dafb; if (this['geometriesByUniqueId']) { if (void 0x0 === (_0x55dafb = this['geometriesByUniqueId'][_0x51947d['uniqueId']])) return !0x1; } else if ((_0x55dafb = this['geometries']['indexOf'](_0x51947d)) < 0x0) return !0x1; if (_0x55dafb !== this['geometries']['length'] - 0x1) { var _0x5e6a6e = this['geometries'][this['geometries']['length'] - 0x1]; this['geometries'][_0x55dafb] = _0x5e6a6e, this['geometriesByUniqueId'] && (this['geometriesByUniqueId'][_0x5e6a6e['uniqueId']] = _0x55dafb, this['geometriesByUniqueId'][_0x51947d['uniqueId']] = void 0x0); } return this['geometries']['pop'](), this['onGeometryRemovedObservable']['notifyObservers'](_0x51947d), !0x0; } , _0x5b6241['prototype']['getGeometries'] = function() { return this['geometries']; } , _0x5b6241['prototype']['getMeshByID'] = function(_0x561f2e) { for (var _0x468660 = 0x0; _0x468660 < this['meshes']['length']; _0x468660++) if (this['meshes'][_0x468660]['id'] === _0x561f2e) return this['meshes'][_0x468660]; return null; } , _0x5b6241['prototype']['getMeshesByID'] = function(_0x2bf026) { return this['meshes']['filter'](function(_0x1d307c) { return _0x1d307c['id'] === _0x2bf026; }); } , _0x5b6241['prototype']['getTransformNodeByID'] = function(_0x14793a) { for (var _0x505ca3 = 0x0; _0x505ca3 < this['transformNodes']['length']; _0x505ca3++) if (this['transformNodes'][_0x505ca3]['id'] === _0x14793a) return this['transformNodes'][_0x505ca3]; return null; } , _0x5b6241['prototype']['getTransformNodeByUniqueID'] = function(_0x2f9f0a) { for (var _0x4d7645 = 0x0; _0x4d7645 < this['transformNodes']['length']; _0x4d7645++) if (this['transformNodes'][_0x4d7645]['uniqueId'] === _0x2f9f0a) return this['transformNodes'][_0x4d7645]; return null; } , _0x5b6241['prototype']['getTransformNodesByID'] = function(_0x239c1b) { return this['transformNodes']['filter'](function(_0x48a14e) { return _0x48a14e['id'] === _0x239c1b; }); } , _0x5b6241['prototype']['getMeshByUniqueID'] = function(_0x5e7df5) { for (var _0x288a19 = 0x0; _0x288a19 < this['meshes']['length']; _0x288a19++) if (this['meshes'][_0x288a19]['uniqueId'] === _0x5e7df5) return this['meshes'][_0x288a19]; return null; } , _0x5b6241['prototype']['getLastMeshByID'] = function(_0x16ba6b) { for (var _0x2a3121 = this['meshes']['length'] - 0x1; _0x2a3121 >= 0x0; _0x2a3121--) if (this['meshes'][_0x2a3121]['id'] === _0x16ba6b) return this['meshes'][_0x2a3121]; return null; } , _0x5b6241['prototype']['getLastEntryByID'] = function(_0x466815) { var _0x95c019; for (_0x95c019 = this['meshes']['length'] - 0x1; _0x95c019 >= 0x0; _0x95c019--) if (this['meshes'][_0x95c019]['id'] === _0x466815) return this['meshes'][_0x95c019]; for (_0x95c019 = this['transformNodes']['length'] - 0x1; _0x95c019 >= 0x0; _0x95c019--) if (this['transformNodes'][_0x95c019]['id'] === _0x466815) return this['transformNodes'][_0x95c019]; for (_0x95c019 = this['cameras']['length'] - 0x1; _0x95c019 >= 0x0; _0x95c019--) if (this['cameras'][_0x95c019]['id'] === _0x466815) return this['cameras'][_0x95c019]; for (_0x95c019 = this['lights']['length'] - 0x1; _0x95c019 >= 0x0; _0x95c019--) if (this['lights'][_0x95c019]['id'] === _0x466815) return this['lights'][_0x95c019]; return null; } , _0x5b6241['prototype']['getNodeByID'] = function(_0x20a1a1) { var _0xc412a6 = this['getMeshByID'](_0x20a1a1); if (_0xc412a6) return _0xc412a6; var _0x571c9b = this['getTransformNodeByID'](_0x20a1a1); if (_0x571c9b) return _0x571c9b; var _0x27f9ed = this['getLightByID'](_0x20a1a1); if (_0x27f9ed) return _0x27f9ed; var _0x79ecb8 = this['getCameraByID'](_0x20a1a1); if (_0x79ecb8) return _0x79ecb8; var _0x36b0d5 = this['getBoneByID'](_0x20a1a1); return _0x36b0d5 || null; } , _0x5b6241['prototype']['getNodeByName'] = function(_0x13bafe) { var _0x16a4c9 = this['getMeshByName'](_0x13bafe); if (_0x16a4c9) return _0x16a4c9; var _0x279bbc = this['getTransformNodeByName'](_0x13bafe); if (_0x279bbc) return _0x279bbc; var _0x94bf19 = this['getLightByName'](_0x13bafe); if (_0x94bf19) return _0x94bf19; var _0x1fd3b8 = this['getCameraByName'](_0x13bafe); if (_0x1fd3b8) return _0x1fd3b8; var _0x108c41 = this['getBoneByName'](_0x13bafe); return _0x108c41 || null; } , _0x5b6241['prototype']['getMeshByName'] = function(_0x4307e9) { for (var _0x228d93 = 0x0; _0x228d93 < this['meshes']['length']; _0x228d93++) if (this['meshes'][_0x228d93]['name'] === _0x4307e9) return this['meshes'][_0x228d93]; return null; } , _0x5b6241['prototype']['getTransformNodeByName'] = function(_0x5ce4d6) { for (var _0xa0d049 = 0x0; _0xa0d049 < this['transformNodes']['length']; _0xa0d049++) if (this['transformNodes'][_0xa0d049]['name'] === _0x5ce4d6) return this['transformNodes'][_0xa0d049]; return null; } , _0x5b6241['prototype']['getLastSkeletonByID'] = function(_0x2d3b99) { for (var _0x49486e = this['skeletons']['length'] - 0x1; _0x49486e >= 0x0; _0x49486e--) if (this['skeletons'][_0x49486e]['id'] === _0x2d3b99) return this['skeletons'][_0x49486e]; return null; } , _0x5b6241['prototype']['getSkeletonByUniqueId'] = function(_0x3ad46d) { for (var _0x575aad = 0x0; _0x575aad < this['skeletons']['length']; _0x575aad++) if (this['skeletons'][_0x575aad]['uniqueId'] === _0x3ad46d) return this['skeletons'][_0x575aad]; return null; } , _0x5b6241['prototype']['getSkeletonById'] = function(_0x552861) { for (var _0x290d8b = 0x0; _0x290d8b < this['skeletons']['length']; _0x290d8b++) if (this['skeletons'][_0x290d8b]['id'] === _0x552861) return this['skeletons'][_0x290d8b]; return null; } , _0x5b6241['prototype']['getSkeletonByName'] = function(_0x15c4bc) { for (var _0xe95b = 0x0; _0xe95b < this['skeletons']['length']; _0xe95b++) if (this['skeletons'][_0xe95b]['name'] === _0x15c4bc) return this['skeletons'][_0xe95b]; return null; } , _0x5b6241['prototype']['getMorphTargetManagerById'] = function(_0x1e116d) { for (var _0x19883a = 0x0; _0x19883a < this['morphTargetManagers']['length']; _0x19883a++) if (this['morphTargetManagers'][_0x19883a]['uniqueId'] === _0x1e116d) return this['morphTargetManagers'][_0x19883a]; return null; } , _0x5b6241['prototype']['getMorphTargetById'] = function(_0x6dbbce) { for (var _0x2145f3 = 0x0; _0x2145f3 < this['morphTargetManagers']['length']; ++_0x2145f3) for (var _0x186326 = this['morphTargetManagers'][_0x2145f3], _0x16e3ae = 0x0; _0x16e3ae < _0x186326['numTargets']; ++_0x16e3ae) { var _0x1cec19 = _0x186326['getTarget'](_0x16e3ae); if (_0x1cec19['id'] === _0x6dbbce) return _0x1cec19; } return null; } , _0x5b6241['prototype']['isActiveMesh'] = function(_0x3e9e55) { return -0x1 !== this['_activeMeshes']['indexOf'](_0x3e9e55); } , Object['defineProperty'](_0x5b6241['prototype'], 'uid', { 'get': function() { return this['_uid'] || (this['_uid'] = _0x24e4b1['h']['RandomId']()), this['_uid']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['addExternalData'] = function(_0x3649c7, _0x2dea71) { return this['_externalData'] || (this['_externalData'] = new _0x528b6e['a']()), this['_externalData']['add'](_0x3649c7, _0x2dea71); } , _0x5b6241['prototype']['getExternalData'] = function(_0x4ea2e5) { return this['_externalData'] ? this['_externalData']['get'](_0x4ea2e5) : null; } , _0x5b6241['prototype']['getOrAddExternalDataWithFactory'] = function(_0x3cbb31, _0x2b0da7) { return this['_externalData'] || (this['_externalData'] = new _0x528b6e['a']()), this['_externalData']['getOrAddWithFactory'](_0x3cbb31, _0x2b0da7); } , _0x5b6241['prototype']['removeExternalData'] = function(_0xd36852) { return this['_externalData']['remove'](_0xd36852); } , _0x5b6241['prototype']['_evaluateSubMesh'] = function(_0x3a4b70, _0x565973, _0xa09c42) { if (_0xa09c42['isAnInstance'] || this['dispatchAllSubMeshesOfActiveMeshes'] || _0x565973['alwaysSelectAsActiveMesh'] || 0x1 === _0x565973['subMeshes']['length'] || _0x3a4b70['isInFrustum'](this['_frustumPlanes'])) { for (var _0x5e4798 = 0x0, _0x5f4e30 = this['_evaluateSubMeshStage']; _0x5e4798 < _0x5f4e30['length']; _0x5e4798++) { _0x5f4e30[_0x5e4798]['action'](_0x565973, _0x3a4b70); } var _0x5dd0a4 = _0x3a4b70['getMaterial'](); null != _0x5dd0a4 && (_0x5dd0a4['hasRenderTargetTextures'] && null != _0x5dd0a4['getRenderTargetTextures'] && -0x1 === this['_processedMaterials']['indexOf'](_0x5dd0a4) && (this['_processedMaterials']['push'](_0x5dd0a4), this['_renderTargets']['concatWithNoDuplicate'](_0x5dd0a4['getRenderTargetTextures']())), this['_activeIndices']['addCount'](_0x3a4b70['indexCount'], !0x1), this['_renderingManager']['dispatch'](_0x3a4b70, _0x565973, _0x5dd0a4)); } } , _0x5b6241['prototype']['freeProcessedMaterials'] = function() { this['_processedMaterials']['dispose'](); } , Object['defineProperty'](_0x5b6241['prototype'], 'blockfreeActiveMeshesAndRenderingGroups', { 'get': function() { return this['_preventFreeActiveMeshesAndRenderingGroups']; }, 'set': function(_0x4d688b) { this['_preventFreeActiveMeshesAndRenderingGroups'] !== _0x4d688b && (_0x4d688b && (this['freeActiveMeshes'](), this['freeRenderingGroups']()), this['_preventFreeActiveMeshesAndRenderingGroups'] = _0x4d688b); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['freeActiveMeshes'] = function() { if (!this['blockfreeActiveMeshesAndRenderingGroups'] && (this['_activeMeshes']['dispose'](), this['activeCamera'] && this['activeCamera']['_activeMeshes'] && this['activeCamera']['_activeMeshes']['dispose'](), this['activeCameras'])) for (var _0x209b2e = 0x0; _0x209b2e < this['activeCameras']['length']; _0x209b2e++) { var _0x4d0984 = this['activeCameras'][_0x209b2e]; _0x4d0984 && _0x4d0984['_activeMeshes'] && _0x4d0984['_activeMeshes']['dispose'](); } } , _0x5b6241['prototype']['freeRenderingGroups'] = function() { if (!this['blockfreeActiveMeshesAndRenderingGroups'] && (this['_renderingManager'] && this['_renderingManager']['freeRenderingGroups'](), this['textures'])) for (var _0x332f05 = 0x0; _0x332f05 < this['textures']['length']; _0x332f05++) { var _0xb2c681 = this['textures'][_0x332f05]; _0xb2c681 && _0xb2c681['renderList'] && _0xb2c681['freeRenderingGroups'](); } } , _0x5b6241['prototype']['_isInIntermediateRendering'] = function() { return this['_intermediateRendering']; } , _0x5b6241['prototype']['freezeActiveMeshes'] = function() { if (!this['activeCamera']) return this; this['_frustumPlanes'] || this['setTransformMatrix'](this['activeCamera']['getViewMatrix'](), this['activeCamera']['getProjectionMatrix']()), this['_evaluateActiveMeshes'](), this['_activeMeshesFrozen'] = !0x0; for (var _0x3c2dcc = 0x0; _0x3c2dcc < this['_activeMeshes']['length']; _0x3c2dcc++) this['_activeMeshes']['data'][_0x3c2dcc]['_freeze'](); return this; } , _0x5b6241['prototype']['unfreezeActiveMeshes'] = function() { for (var _0x58f4e0 = 0x0; _0x58f4e0 < this['_activeMeshes']['length']; _0x58f4e0++) this['_activeMeshes']['data'][_0x58f4e0]['_unFreeze'](); return this['_activeMeshesFrozen'] = !0x1, this; } , _0x5b6241['prototype']['_evaluateActiveMeshes'] = function() { if (this['_activeMeshesFrozen'] && this['_activeMeshes']['length']) for (var _0xb5bd10 = this['_activeMeshes']['length'], _0x19f103 = 0x0; _0x19f103 < _0xb5bd10; _0x19f103++) { (_0x4a36ae = this['_activeMeshes']['data'][_0x19f103])['computeWorldMatrix'](); } else if (this['activeCamera']) { this['onBeforeActiveMeshesEvaluationObservable']['notifyObservers'](this), this['activeCamera']['_activeMeshes']['reset'](), this['_activeMeshes']['reset'](), this['_renderingManager']['reset'](), this['_processedMaterials']['reset'](), this['_activeParticleSystems']['reset'](), this['_activeSkeletons']['reset'](), this['_softwareSkinnedMeshes']['reset'](); for (var _0xcf63d6 = 0x0, _0x3e12a0 = this['_beforeEvaluateActiveMeshStage']; _0xcf63d6 < _0x3e12a0['length']; _0xcf63d6++) { _0x3e12a0[_0xcf63d6]['action'](); } var _0x599942 = this['getActiveMeshCandidates']() , _0x481d92 = _0x599942['length']; for (_0x19f103 = 0x0; _0x19f103 < _0x481d92; _0x19f103++) { var _0x4a36ae; if (!(_0x4a36ae = _0x599942['data'][_0x19f103])['isBlocked'] && (this['_totalVertices']['addCount'](_0x4a36ae['getTotalVertices'](), !0x1), _0x4a36ae['isReady']() && _0x4a36ae['isEnabled']() && 0x0 !== _0x4a36ae['scaling']['lengthSquared']())) { _0x4a36ae['computeWorldMatrix'](), _0x4a36ae['actionManager'] && _0x4a36ae['actionManager']['hasSpecificTriggers2'](_0x22ca5d['a']['ACTION_OnIntersectionEnterTrigger'], _0x22ca5d['a']['ACTION_OnIntersectionExitTrigger']) && this['_meshesForIntersections']['pushNoDuplicate'](_0x4a36ae); var _0x5ed010 = this['customLODSelector'] ? this['customLODSelector'](_0x4a36ae, this['activeCamera']) : _0x4a36ae['getLOD'](this['activeCamera']); null != _0x5ed010 && (_0x5ed010 !== _0x4a36ae && _0x5ed010['billboardMode'] !== _0x3c6764['a']['BILLBOARDMODE_NONE'] && _0x5ed010['computeWorldMatrix'](), _0x4a36ae['_preActivate'](), _0x4a36ae['isVisible'] && _0x4a36ae['visibility'] > 0x0 && 0x0 != (_0x4a36ae['layerMask'] & this['activeCamera']['layerMask']) && (_0x4a36ae['alwaysSelectAsActiveMesh'] || _0x4a36ae['isInFrustum'](this['_frustumPlanes'])) && (this['_activeMeshes']['push'](_0x4a36ae), this['activeCamera']['_activeMeshes']['push'](_0x4a36ae), _0x5ed010 !== _0x4a36ae && _0x5ed010['_activate'](this['_renderId'], !0x1), _0x4a36ae['_activate'](this['_renderId'], !0x1) && (_0x4a36ae['isAnInstance'] || (_0x5ed010['_internalAbstractMeshDataInfo']['_onlyForInstances'] = !0x1), _0x5ed010['_internalAbstractMeshDataInfo']['_isActive'] = !0x0, this['_activeMesh'](_0x4a36ae, _0x5ed010)), _0x4a36ae['_postActivate']())); } } if (this['onAfterActiveMeshesEvaluationObservable']['notifyObservers'](this), this['particlesEnabled']) { this['onBeforeParticlesRenderingObservable']['notifyObservers'](this); for (var _0x493c74 = 0x0; _0x493c74 < this['particleSystems']['length']; _0x493c74++) { var _0x358c12 = this['particleSystems'][_0x493c74]; if (_0x358c12['isStarted']() && _0x358c12['emitter']) { var _0x535c1f = _0x358c12['emitter']; _0x535c1f['position'] && !_0x535c1f['isEnabled']() || (this['_activeParticleSystems']['push'](_0x358c12), _0x358c12['animate'](), this['_renderingManager']['dispatchParticles'](_0x358c12)); } } this['onAfterParticlesRenderingObservable']['notifyObservers'](this); } } } , _0x5b6241['prototype']['_activeMesh'] = function(_0x33f5c6, _0x3b83ff) { this['_skeletonsEnabled'] && null !== _0x3b83ff['skeleton'] && void 0x0 !== _0x3b83ff['skeleton'] && (this['_activeSkeletons']['pushNoDuplicate'](_0x3b83ff['skeleton']) && _0x3b83ff['skeleton']['prepare'](), _0x3b83ff['computeBonesUsingShaders'] || this['_softwareSkinnedMeshes']['pushNoDuplicate'](_0x3b83ff)); for (var _0x31f1cf = 0x0, _0x559dcb = this['_activeMeshStage']; _0x31f1cf < _0x559dcb['length']; _0x31f1cf++) { _0x559dcb[_0x31f1cf]['action'](_0x33f5c6, _0x3b83ff); } if (null != _0x3b83ff && void 0x0 !== _0x3b83ff['subMeshes'] && null !== _0x3b83ff['subMeshes'] && _0x3b83ff['subMeshes']['length'] > 0x0) for (var _0x946313 = this['getActiveSubMeshCandidates'](_0x3b83ff), _0x4b5064 = _0x946313['length'], _0xf89337 = 0x0; _0xf89337 < _0x4b5064; _0xf89337++) { var _0x480f0e = _0x946313['data'][_0xf89337]; this['_evaluateSubMesh'](_0x480f0e, _0x3b83ff, _0x33f5c6); } } , _0x5b6241['prototype']['updateTransformMatrix'] = function(_0x3adee7) { this['activeCamera'] && this['setTransformMatrix'](this['activeCamera']['getViewMatrix'](), this['activeCamera']['getProjectionMatrix'](_0x3adee7)); } , _0x5b6241['prototype']['_bindFrameBuffer'] = function() { if (this['activeCamera'] && this['activeCamera']['_multiviewTexture']) this['activeCamera']['_multiviewTexture']['_bindFrameBuffer'](); else if (this['activeCamera'] && this['activeCamera']['outputRenderTarget']) { if (this['getEngine']()['getCaps']()['multiview'] && this['activeCamera']['outputRenderTarget'] && this['activeCamera']['outputRenderTarget']['getViewCount']() > 0x1) this['activeCamera']['outputRenderTarget']['_bindFrameBuffer'](); else { var _0x2693d9 = this['activeCamera']['outputRenderTarget']['getInternalTexture'](); _0x2693d9 ? this['getEngine']()['bindFramebuffer'](_0x2693d9) : _0x2bda6b['a']['Error']('Camera\x20contains\x20invalid\x20customDefaultRenderTarget'); } } else this['getEngine']()['restoreDefaultFramebuffer'](); } , _0x5b6241['prototype']['_renderForCamera'] = function(_0x47d034, _0x11860c) { if (!_0x47d034 || !_0x47d034['_skipRendering']) { var _0x4f6cb9 = this['_engine']; if (this['_activeCamera'] = _0x47d034, !this['activeCamera']) throw new Error('Active\x20camera\x20not\x20set'); _0x4f6cb9['setViewport'](this['activeCamera']['viewport']), this['resetCachedMaterial'](), this['_renderId']++, this['getEngine']()['getCaps']()['multiview'] && _0x47d034['outputRenderTarget'] && _0x47d034['outputRenderTarget']['getViewCount']() > 0x1 ? this['setTransformMatrix'](_0x47d034['_rigCameras'][0x0]['getViewMatrix'](), _0x47d034['_rigCameras'][0x0]['getProjectionMatrix'](), _0x47d034['_rigCameras'][0x1]['getViewMatrix'](), _0x47d034['_rigCameras'][0x1]['getProjectionMatrix']()) : this['updateTransformMatrix'](), this['onBeforeCameraRenderObservable']['notifyObservers'](this['activeCamera']), this['_evaluateActiveMeshes'](); for (var _0x5514c2 = 0x0; _0x5514c2 < this['_softwareSkinnedMeshes']['length']; _0x5514c2++) { var _0x85fcd7 = this['_softwareSkinnedMeshes']['data'][_0x5514c2]; _0x85fcd7['applySkeleton'](_0x85fcd7['skeleton']); } this['onBeforeRenderTargetsRenderObservable']['notifyObservers'](this), _0x47d034['customRenderTargets'] && _0x47d034['customRenderTargets']['length'] > 0x0 && this['_renderTargets']['concatWithNoDuplicate'](_0x47d034['customRenderTargets']), _0x11860c && _0x11860c['customRenderTargets'] && _0x11860c['customRenderTargets']['length'] > 0x0 && this['_renderTargets']['concatWithNoDuplicate'](_0x11860c['customRenderTargets']); for (var _0x93185b = 0x0, _0xa4ffbd = this['_gatherActiveCameraRenderTargetsStage']; _0x93185b < _0xa4ffbd['length']; _0x93185b++) { _0xa4ffbd[_0x93185b]['action'](this['_renderTargets']); } if (this['renderTargetsEnabled']) { this['_intermediateRendering'] = !0x0; var _0x2a7a23 = !0x1; if (this['_renderTargets']['length'] > 0x0) { _0x24e4b1['h']['StartPerformanceCounter']('Render\x20targets', this['_renderTargets']['length'] > 0x0); for (var _0x5deca0 = 0x0; _0x5deca0 < this['_renderTargets']['length']; _0x5deca0++) { var _0x21c35d = this['_renderTargets']['data'][_0x5deca0]; if (_0x21c35d['_shouldRender']()) { this['_renderId']++; var _0x2fc5b4 = _0x21c35d['activeCamera'] && _0x21c35d['activeCamera'] !== this['activeCamera']; _0x21c35d['render'](_0x2fc5b4, this['dumpNextRenderTargets']), _0x2a7a23 = !0x0; } } _0x24e4b1['h']['EndPerformanceCounter']('Render\x20targets', this['_renderTargets']['length'] > 0x0), this['_renderId']++; } for (var _0x4a88eb = 0x0, _0xd2975a = this['_cameraDrawRenderTargetStage']; _0x4a88eb < _0xd2975a['length']; _0x4a88eb++) { _0x2a7a23 = _0xd2975a[_0x4a88eb]['action'](this['activeCamera']) || _0x2a7a23; } this['_intermediateRendering'] = !0x1, _0x2a7a23 && this['_bindFrameBuffer'](); } this['onAfterRenderTargetsRenderObservable']['notifyObservers'](this), this['postProcessManager'] && !_0x47d034['_multiviewTexture'] && this['postProcessManager']['_prepareFrame'](); for (var _0x433409 = 0x0, _0x4ab3ce = this['_beforeCameraDrawStage']; _0x433409 < _0x4ab3ce['length']; _0x433409++) { _0x4ab3ce[_0x433409]['action'](this['activeCamera']); } this['onBeforeDrawPhaseObservable']['notifyObservers'](this), this['_renderingManager']['render'](null, null, !0x0, !0x0), this['onAfterDrawPhaseObservable']['notifyObservers'](this); for (var _0x395a2d = 0x0, _0x16de07 = this['_afterCameraDrawStage']; _0x395a2d < _0x16de07['length']; _0x395a2d++) { _0x16de07[_0x395a2d]['action'](this['activeCamera']); } this['postProcessManager'] && !_0x47d034['_multiviewTexture'] && this['postProcessManager']['_finalizeFrame'](_0x47d034['isIntermediate']), this['_renderTargets']['reset'](), this['onAfterCameraRenderObservable']['notifyObservers'](this['activeCamera']); } } , _0x5b6241['prototype']['_processSubCameras'] = function(_0x355d7b) { if (_0x355d7b['cameraRigMode'] === _0x5dfe75['a']['RIG_MODE_NONE'] || _0x355d7b['outputRenderTarget'] && _0x355d7b['outputRenderTarget']['getViewCount']() > 0x1 && this['getEngine']()['getCaps']()['multiview']) this['_renderForCamera'](_0x355d7b); else { if (_0x355d7b['_useMultiviewToSingleView']) this['_renderMultiviewToSingleView'](_0x355d7b); else for (var _0x5d7dba = 0x0; _0x5d7dba < _0x355d7b['_rigCameras']['length']; _0x5d7dba++) this['_renderForCamera'](_0x355d7b['_rigCameras'][_0x5d7dba], _0x355d7b); this['_activeCamera'] = _0x355d7b, this['setTransformMatrix'](this['_activeCamera']['getViewMatrix'](), this['_activeCamera']['getProjectionMatrix']()); } } , _0x5b6241['prototype']['_checkIntersections'] = function() { for (var _0x234614 = 0x0; _0x234614 < this['_meshesForIntersections']['length']; _0x234614++) { var _0x267488 = this['_meshesForIntersections']['data'][_0x234614]; if (_0x267488['actionManager']) for (var _0x19a1e6 = 0x0; _0x267488['actionManager'] && _0x19a1e6 < _0x267488['actionManager']['actions']['length']; _0x19a1e6++) { var _0x32b92d = _0x267488['actionManager']['actions'][_0x19a1e6]; if (_0x32b92d['trigger'] === _0x22ca5d['a']['ACTION_OnIntersectionEnterTrigger'] || _0x32b92d['trigger'] === _0x22ca5d['a']['ACTION_OnIntersectionExitTrigger']) { var _0x561945 = _0x32b92d['getTriggerParameter']() , _0x23d5ed = _0x561945 instanceof _0xe57370['a'] ? _0x561945 : _0x561945['mesh'] , _0xd15c57 = _0x23d5ed['intersectsMesh'](_0x267488, _0x561945['usePreciseIntersection']) , _0x1c108e = _0x267488['_intersectionsInProgress']['indexOf'](_0x23d5ed); _0xd15c57 && -0x1 === _0x1c108e ? _0x32b92d['trigger'] === _0x22ca5d['a']['ACTION_OnIntersectionEnterTrigger'] ? (_0x32b92d['_executeCurrent'](_0xa60415['a']['CreateNew'](_0x267488, void 0x0, _0x23d5ed)), _0x267488['_intersectionsInProgress']['push'](_0x23d5ed)) : _0x32b92d['trigger'] === _0x22ca5d['a']['ACTION_OnIntersectionExitTrigger'] && _0x267488['_intersectionsInProgress']['push'](_0x23d5ed) : !_0xd15c57 && _0x1c108e > -0x1 && (_0x32b92d['trigger'] === _0x22ca5d['a']['ACTION_OnIntersectionExitTrigger'] && _0x32b92d['_executeCurrent'](_0xa60415['a']['CreateNew'](_0x267488, void 0x0, _0x23d5ed)), _0x267488['actionManager']['hasSpecificTrigger'](_0x22ca5d['a']['ACTION_OnIntersectionExitTrigger'], function(_0x2d9241) { var _0xf6411c = _0x2d9241 instanceof _0xe57370['a'] ? _0x2d9241 : _0x2d9241['mesh']; return _0x23d5ed === _0xf6411c; }) && _0x32b92d['trigger'] !== _0x22ca5d['a']['ACTION_OnIntersectionExitTrigger'] || _0x267488['_intersectionsInProgress']['splice'](_0x1c108e, 0x1)); } } } } , _0x5b6241['prototype']['_advancePhysicsEngineStep'] = function(_0x28a255) {} , _0x5b6241['prototype']['_animate'] = function() {} , _0x5b6241['prototype']['animate'] = function() { if (this['_engine']['isDeterministicLockStep']()) { var _0x1c7e0c = Math['max'](_0x5b6241['MinDeltaTime'], Math['min'](this['_engine']['getDeltaTime'](), _0x5b6241['MaxDeltaTime'])) + this['_timeAccumulator'] , _0x34e6b3 = this['getDeterministicFrameTime']() , _0x314152 = 0x0 , _0x2be858 = this['_engine']['getLockstepMaxSteps']() , _0xb55643 = Math['floor'](_0x1c7e0c / 0x3c); _0xb55643 = Math['min'](_0xb55643, _0x2be858); do { this['onBeforeStepObservable']['notifyObservers'](this), this['_animationRatio'] = 0.06 * _0x34e6b3, this['_animate'](), this['onAfterAnimationsObservable']['notifyObservers'](this), this['_advancePhysicsEngineStep'](_0x34e6b3), this['onAfterStepObservable']['notifyObservers'](this), this['_currentStepId']++, _0x314152++, _0x1c7e0c -= _0x34e6b3; } while (_0x1c7e0c > 0x0 && _0x314152 < _0xb55643); this['_timeAccumulator'] = _0x1c7e0c < 0x0 ? 0x0 : _0x1c7e0c; } else { _0x1c7e0c = this['useConstantAnimationDeltaTime'] ? 0x10 : Math['max'](_0x5b6241['MinDeltaTime'], Math['min'](this['_engine']['getDeltaTime'](), _0x5b6241['MaxDeltaTime'])); this['_animationRatio'] = 0.06 * _0x1c7e0c, this['_animate'](), this['onAfterAnimationsObservable']['notifyObservers'](this), this['_advancePhysicsEngineStep'](_0x1c7e0c); } } , _0x5b6241['prototype']['render'] = function(_0x494a36, _0x46381c) { if (void 0x0 === _0x494a36 && (_0x494a36 = !0x0), void 0x0 === _0x46381c && (_0x46381c = !0x1), !this['isDisposed']) { this['_frameId']++, this['_registerTransientComponents'](), this['_activeParticles']['fetchNewFrame'](), this['_totalVertices']['fetchNewFrame'](), this['_activeIndices']['fetchNewFrame'](), this['_activeBones']['fetchNewFrame'](), this['_meshesForIntersections']['reset'](), this['resetCachedMaterial'](), this['onBeforeAnimationsObservable']['notifyObservers'](this), this['actionManager'] && this['actionManager']['processTrigger'](_0x22ca5d['a']['ACTION_OnEveryFrameTrigger']), _0x46381c || this['animate'](); for (var _0x869b9e = 0x0, _0x291e0a = this['_beforeCameraUpdateStage']; _0x869b9e < _0x291e0a['length']; _0x869b9e++) { _0x291e0a[_0x869b9e]['action'](); } if (_0x494a36) if (this['activeCameras']['length'] > 0x0) for (var _0x3abf86 = 0x0; _0x3abf86 < this['activeCameras']['length']; _0x3abf86++) { var _0x48c037 = this['activeCameras'][_0x3abf86]; if (_0x48c037['update'](), _0x48c037['cameraRigMode'] !== _0x5dfe75['a']['RIG_MODE_NONE']) for (var _0x135c7a = 0x0; _0x135c7a < _0x48c037['_rigCameras']['length']; _0x135c7a++) _0x48c037['_rigCameras'][_0x135c7a]['update'](); } else if (this['activeCamera'] && (this['activeCamera']['update'](), this['activeCamera']['cameraRigMode'] !== _0x5dfe75['a']['RIG_MODE_NONE'])) for (_0x135c7a = 0x0; _0x135c7a < this['activeCamera']['_rigCameras']['length']; _0x135c7a++) this['activeCamera']['_rigCameras'][_0x135c7a]['update'](); this['onBeforeRenderObservable']['notifyObservers'](this), this['onBeforeRenderTargetsRenderObservable']['notifyObservers'](this); var _0x29f9db = this['getEngine']() , _0x2f8049 = this['activeCamera']; if (this['renderTargetsEnabled']) { _0x24e4b1['h']['StartPerformanceCounter']('Custom\x20render\x20targets', this['customRenderTargets']['length'] > 0x0), this['_intermediateRendering'] = !0x0; for (var _0x13f9f2 = 0x0; _0x13f9f2 < this['customRenderTargets']['length']; _0x13f9f2++) { var _0x19c718 = this['customRenderTargets'][_0x13f9f2]; if (_0x19c718['_shouldRender']()) { if (this['_renderId']++, this['activeCamera'] = _0x19c718['activeCamera'] || this['activeCamera'], !this['activeCamera']) throw new Error('Active\x20camera\x20not\x20set'); _0x29f9db['setViewport'](this['activeCamera']['viewport']), this['updateTransformMatrix'](), _0x19c718['render'](_0x2f8049 !== this['activeCamera'], this['dumpNextRenderTargets']); } } _0x24e4b1['h']['EndPerformanceCounter']('Custom\x20render\x20targets', this['customRenderTargets']['length'] > 0x0), this['_intermediateRendering'] = !0x1, this['_renderId']++; } this['activeCamera'] = _0x2f8049, this['_bindFrameBuffer'](), this['onAfterRenderTargetsRenderObservable']['notifyObservers'](this); for (var _0x27895c = 0x0, _0x782c55 = this['_beforeClearStage']; _0x27895c < _0x782c55['length']; _0x27895c++) { _0x782c55[_0x27895c]['action'](); } (this['autoClearDepthAndStencil'] || this['autoClear']) && this['_engine']['clear'](this['clearColor'], this['autoClear'] || this['forceWireframe'] || this['forcePointsCloud'], this['autoClearDepthAndStencil'], this['autoClearDepthAndStencil']); for (var _0x10365c = 0x0, _0x20e7ea = this['_gatherRenderTargetsStage']; _0x10365c < _0x20e7ea['length']; _0x10365c++) { _0x20e7ea[_0x10365c]['action'](this['_renderTargets']); } if (this['activeCameras']['length'] > 0x0) for (_0x3abf86 = 0x0; _0x3abf86 < this['activeCameras']['length']; _0x3abf86++) _0x3abf86 > 0x0 && this['_engine']['clear'](null, !0x1, !0x0, !0x0), this['_processSubCameras'](this['activeCameras'][_0x3abf86]); else { if (!this['activeCamera']) throw new Error('No\x20camera\x20defined'); this['_processSubCameras'](this['activeCamera']); } this['_checkIntersections'](); for (var _0x25ab3f = 0x0, _0x148421 = this['_afterRenderStage']; _0x25ab3f < _0x148421['length']; _0x25ab3f++) { _0x148421[_0x25ab3f]['action'](); } if (this['afterRender'] && this['afterRender'](), this['onAfterRenderObservable']['notifyObservers'](this), this['_toBeDisposed']['length']) { for (_0x135c7a = 0x0; _0x135c7a < this['_toBeDisposed']['length']; _0x135c7a++) { var _0x3dbcad = this['_toBeDisposed'][_0x135c7a]; _0x3dbcad && _0x3dbcad['dispose'](); } this['_toBeDisposed'] = []; } this['dumpNextRenderTargets'] && (this['dumpNextRenderTargets'] = !0x1), this['_activeBones']['addCount'](0x0, !0x0), this['_activeIndices']['addCount'](0x0, !0x0), this['_activeParticles']['addCount'](0x0, !0x0); } } , _0x5b6241['prototype']['freezeMaterials'] = function() { for (var _0x4cb14b = 0x0; _0x4cb14b < this['materials']['length']; _0x4cb14b++) this['materials'][_0x4cb14b]['freeze'](); } , _0x5b6241['prototype']['unfreezeMaterials'] = function() { for (var _0xa500ee = 0x0; _0xa500ee < this['materials']['length']; _0xa500ee++) this['materials'][_0xa500ee]['unfreeze'](); } , _0x5b6241['prototype']['dispose'] = function() { this['beforeRender'] = null, this['afterRender'] = null, this['skeletons'] = [], this['morphTargetManagers'] = [], this['_transientComponents'] = [], this['_isReadyForMeshStage']['clear'](), this['_beforeEvaluateActiveMeshStage']['clear'](), this['_evaluateSubMeshStage']['clear'](), this['_activeMeshStage']['clear'](), this['_cameraDrawRenderTargetStage']['clear'](), this['_beforeCameraDrawStage']['clear'](), this['_beforeRenderTargetDrawStage']['clear'](), this['_beforeRenderingGroupDrawStage']['clear'](), this['_beforeRenderingMeshStage']['clear'](), this['_afterRenderingMeshStage']['clear'](), this['_afterRenderingGroupDrawStage']['clear'](), this['_afterCameraDrawStage']['clear'](), this['_afterRenderTargetDrawStage']['clear'](), this['_afterRenderStage']['clear'](), this['_beforeCameraUpdateStage']['clear'](), this['_beforeClearStage']['clear'](), this['_gatherRenderTargetsStage']['clear'](), this['_gatherActiveCameraRenderTargetsStage']['clear'](), this['_pointerMoveStage']['clear'](), this['_pointerDownStage']['clear'](), this['_pointerUpStage']['clear'](); for (var _0x90bec9 = 0x0, _0x5e577b = this['_components']; _0x90bec9 < _0x5e577b['length']; _0x90bec9++) { _0x5e577b[_0x90bec9]['dispose'](); } this['importedMeshesFiles'] = new Array(), this['stopAllAnimations'] && this['stopAllAnimations'](), this['resetCachedMaterial'](), this['activeCamera'] && (this['activeCamera']['_activeMeshes']['dispose'](), this['activeCamera'] = null), this['_activeMeshes']['dispose'](), this['_renderingManager']['dispose'](), this['_processedMaterials']['dispose'](), this['_activeParticleSystems']['dispose'](), this['_activeSkeletons']['dispose'](), this['_softwareSkinnedMeshes']['dispose'](), this['_renderTargets']['dispose'](), this['_registeredForLateAnimationBindings']['dispose'](), this['_meshesForIntersections']['dispose'](), this['_toBeDisposed'] = []; for (var _0x391a87 = 0x0, _0x317a8a = this['_activeRequests']; _0x391a87 < _0x317a8a['length']; _0x391a87++) { _0x317a8a[_0x391a87]['abort'](); } this['onDisposeObservable']['notifyObservers'](this), this['onDisposeObservable']['clear'](), this['onBeforeRenderObservable']['clear'](), this['onAfterRenderObservable']['clear'](), this['onBeforeRenderTargetsRenderObservable']['clear'](), this['onAfterRenderTargetsRenderObservable']['clear'](), this['onAfterStepObservable']['clear'](), this['onBeforeStepObservable']['clear'](), this['onBeforeActiveMeshesEvaluationObservable']['clear'](), this['onAfterActiveMeshesEvaluationObservable']['clear'](), this['onBeforeParticlesRenderingObservable']['clear'](), this['onAfterParticlesRenderingObservable']['clear'](), this['onBeforeDrawPhaseObservable']['clear'](), this['onAfterDrawPhaseObservable']['clear'](), this['onBeforeAnimationsObservable']['clear'](), this['onAfterAnimationsObservable']['clear'](), this['onDataLoadedObservable']['clear'](), this['onBeforeRenderingGroupObservable']['clear'](), this['onAfterRenderingGroupObservable']['clear'](), this['onMeshImportedObservable']['clear'](), this['onBeforeCameraRenderObservable']['clear'](), this['onAfterCameraRenderObservable']['clear'](), this['onReadyObservable']['clear'](), this['onNewCameraAddedObservable']['clear'](), this['onCameraRemovedObservable']['clear'](), this['onNewLightAddedObservable']['clear'](), this['onLightRemovedObservable']['clear'](), this['onNewGeometryAddedObservable']['clear'](), this['onGeometryRemovedObservable']['clear'](), this['onNewTransformNodeAddedObservable']['clear'](), this['onTransformNodeRemovedObservable']['clear'](), this['onNewMeshAddedObservable']['clear'](), this['onMeshRemovedObservable']['clear'](), this['onNewSkeletonAddedObservable']['clear'](), this['onSkeletonRemovedObservable']['clear'](), this['onNewMaterialAddedObservable']['clear'](), this['onMaterialRemovedObservable']['clear'](), this['onNewTextureAddedObservable']['clear'](), this['onTextureRemovedObservable']['clear'](), this['onPrePointerObservable']['clear'](), this['onPointerObservable']['clear'](), this['onPreKeyboardObservable']['clear'](), this['onKeyboardObservable']['clear'](), this['onActiveCameraChanged']['clear'](), this['detachControl'](); var _0x2c2f01, _0x28d9f4 = this['_engine']['getRenderingCanvas'](); if (_0x28d9f4) for (_0x2c2f01 = 0x0; _0x2c2f01 < this['cameras']['length']; _0x2c2f01++) this['cameras'][_0x2c2f01]['detachControl'](_0x28d9f4); for (; this['animationGroups']['length']; ) this['animationGroups'][0x0]['dispose'](); for (; this['lights']['length']; ) this['lights'][0x0]['dispose'](); for (; this['meshes']['length']; ) this['meshes'][0x0]['dispose'](!0x0); for (; this['transformNodes']['length']; ) this['transformNodes'][0x0]['dispose'](!0x0); for (; this['cameras']['length']; ) this['cameras'][0x0]['dispose'](); for (this['_defaultMaterial'] && this['_defaultMaterial']['dispose'](); this['multiMaterials']['length']; ) this['multiMaterials'][0x0]['dispose'](); for (; this['materials']['length']; ) this['materials'][0x0]['dispose'](); for (; this['particleSystems']['length']; ) this['particleSystems'][0x0]['dispose'](); for (; this['postProcesses']['length']; ) this['postProcesses'][0x0]['dispose'](); for (; this['textures']['length']; ) this['textures'][0x0]['dispose'](); this['_sceneUbo']['dispose'](), this['_multiviewSceneUbo'] && this['_multiviewSceneUbo']['dispose'](), this['postProcessManager']['dispose'](), (_0x2c2f01 = this['_engine']['scenes']['indexOf'](this)) > -0x1 && this['_engine']['scenes']['splice'](_0x2c2f01, 0x1), this['_engine']['wipeCaches'](!0x0), this['_isDisposed'] = !0x0; } , Object['defineProperty'](_0x5b6241['prototype'], 'isDisposed', { 'get': function() { return this['_isDisposed']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['clearCachedVertexData'] = function() { for (var _0x171d5f = 0x0; _0x171d5f < this['meshes']['length']; _0x171d5f++) { var _0x161b7b = this['meshes'][_0x171d5f]['geometry']; if (_0x161b7b) for (var _0x297f2d in (_0x161b7b['_indices'] = [], _0x161b7b['_vertexBuffers'])) _0x161b7b['_vertexBuffers']['hasOwnProperty'](_0x297f2d) && (_0x161b7b['_vertexBuffers'][_0x297f2d]['_buffer']['_data'] = null); } } , _0x5b6241['prototype']['cleanCachedTextureBuffer'] = function() { for (var _0x24837f = 0x0, _0x15ca37 = this['textures']; _0x24837f < _0x15ca37['length']; _0x24837f++) { var _0x380cb5 = _0x15ca37[_0x24837f]; _0x380cb5['_buffer'] && (_0x380cb5['_buffer'] = null); } } , _0x5b6241['prototype']['getWorldExtends'] = function(_0x9014d0) { var _0x40f35d = new _0x4b6821['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']) , _0x51ae40 = new _0x4b6821['x'](-Number['MAX_VALUE'],-Number['MAX_VALUE'],-Number['MAX_VALUE']); return _0x9014d0 = _0x9014d0 || function() { return !0x0; } , this['meshes']['filter'](_0x9014d0)['forEach'](function(_0x5176da) { if (_0x5176da['computeWorldMatrix'](!0x0), _0x5176da['subMeshes'] && 0x0 !== _0x5176da['subMeshes']['length'] && !_0x5176da['infiniteDistance']) { var _0x1f5bfd = _0x5176da['getBoundingInfo']() , _0x1fefce = _0x1f5bfd['boundingBox']['minimumWorld'] , _0x39c488 = _0x1f5bfd['boundingBox']['maximumWorld']; _0x24e4b1['h']['CheckExtends'](_0x1fefce, _0x40f35d, _0x51ae40), _0x24e4b1['h']['CheckExtends'](_0x39c488, _0x40f35d, _0x51ae40); } }), { 'min': _0x40f35d, 'max': _0x51ae40 }; } , _0x5b6241['prototype']['createPickingRay'] = function(_0x25b8ad, _0x321b55, _0x24b28f, _0x3b0d8f, _0x59d48c) { throw void 0x0 === _0x59d48c && (_0x59d48c = !0x1), _0x28a876['a']['WarnImport']('Ray'); } , _0x5b6241['prototype']['createPickingRayToRef'] = function(_0x3fe940, _0x33edc8, _0x2009ff, _0xe9c66f, _0x1d6104, _0x16ff80) { throw void 0x0 === _0x16ff80 && (_0x16ff80 = !0x1), _0x28a876['a']['WarnImport']('Ray'); } , _0x5b6241['prototype']['createPickingRayInCameraSpace'] = function(_0x57b290, _0x528ac3, _0x5c6cbc) { throw _0x28a876['a']['WarnImport']('Ray'); } , _0x5b6241['prototype']['createPickingRayInCameraSpaceToRef'] = function(_0x5c21b3, _0x398ee8, _0xad466d, _0x14f4b9) { throw _0x28a876['a']['WarnImport']('Ray'); } , _0x5b6241['prototype']['pick'] = function(_0x1f6b13, _0x2ca340, _0x4e2e07, _0x2764d6, _0xd0910d, _0x361752) { var _0x2bd335 = new _0x3f9890['a'](); return _0x2bd335['_pickingUnavailable'] = !0x0, _0x2bd335; } , _0x5b6241['prototype']['pickWithRay'] = function(_0x2620a9, _0x18b180, _0x389daa, _0xacb2d7) { throw _0x28a876['a']['WarnImport']('Ray'); } , _0x5b6241['prototype']['multiPick'] = function(_0x46c0f1, _0x525330, _0x5321d3, _0x4092e4, _0x46fd81) { throw _0x28a876['a']['WarnImport']('Ray'); } , _0x5b6241['prototype']['multiPickWithRay'] = function(_0x390a4d, _0x15dd70, _0x1562a7) { throw _0x28a876['a']['WarnImport']('Ray'); } , _0x5b6241['prototype']['setPointerOverMesh'] = function(_0x325925) { this['_inputManager']['setPointerOverMesh'](_0x325925); } , _0x5b6241['prototype']['getPointerOverMesh'] = function() { return this['_inputManager']['getPointerOverMesh'](); } , _0x5b6241['prototype']['_rebuildGeometries'] = function() { for (var _0x2e2672 = 0x0, _0x3ad7ef = this['geometries']; _0x2e2672 < _0x3ad7ef['length']; _0x2e2672++) { _0x3ad7ef[_0x2e2672]['_rebuild'](); } for (var _0x55f434 = 0x0, _0x231a4d = this['meshes']; _0x55f434 < _0x231a4d['length']; _0x55f434++) { _0x231a4d[_0x55f434]['_rebuild'](); } this['postProcessManager'] && this['postProcessManager']['_rebuild'](); for (var _0x2e5b97 = 0x0, _0xcbbac3 = this['_components']; _0x2e5b97 < _0xcbbac3['length']; _0x2e5b97++) { _0xcbbac3[_0x2e5b97]['rebuild'](); } for (var _0x1645c8 = 0x0, _0x2199c7 = this['particleSystems']; _0x1645c8 < _0x2199c7['length']; _0x1645c8++) { _0x2199c7[_0x1645c8]['rebuild'](); } } , _0x5b6241['prototype']['_rebuildTextures'] = function() { for (var _0xa7b6c3 = 0x0, _0x236383 = this['textures']; _0xa7b6c3 < _0x236383['length']; _0xa7b6c3++) { _0x236383[_0xa7b6c3]['_rebuild'](); } this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_TextureDirtyFlag']); } , _0x5b6241['prototype']['_getByTags'] = function(_0xc5500f, _0x44b54e, _0x268cdf) { if (void 0x0 === _0x44b54e) return _0xc5500f; var _0x5ebcd8 = []; for (var _0x453477 in (_0x268cdf = _0x268cdf || function(_0x2385e6) {} , _0xc5500f)) { var _0xeebec7 = _0xc5500f[_0x453477]; _0x17764a['a'] && _0x17764a['a']['MatchesQuery'](_0xeebec7, _0x44b54e) && (_0x5ebcd8['push'](_0xeebec7), _0x268cdf(_0xeebec7)); } return _0x5ebcd8; } , _0x5b6241['prototype']['getMeshesByTags'] = function(_0x43be53, _0x21c491) { return this['_getByTags'](this['meshes'], _0x43be53, _0x21c491); } , _0x5b6241['prototype']['getCamerasByTags'] = function(_0x17043a, _0x2c0d5e) { return this['_getByTags'](this['cameras'], _0x17043a, _0x2c0d5e); } , _0x5b6241['prototype']['getLightsByTags'] = function(_0x20d0b9, _0x37ad6d) { return this['_getByTags'](this['lights'], _0x20d0b9, _0x37ad6d); } , _0x5b6241['prototype']['getMaterialByTags'] = function(_0x128efa, _0x25da6e) { return this['_getByTags'](this['materials'], _0x128efa, _0x25da6e)['concat'](this['_getByTags'](this['multiMaterials'], _0x128efa, _0x25da6e)); } , _0x5b6241['prototype']['setRenderingOrder'] = function(_0x3725a9, _0x4a4b1c, _0x1f8943, _0x1184bd) { void 0x0 === _0x4a4b1c && (_0x4a4b1c = null), void 0x0 === _0x1f8943 && (_0x1f8943 = null), void 0x0 === _0x1184bd && (_0x1184bd = null), this['_renderingManager']['setRenderingOrder'](_0x3725a9, _0x4a4b1c, _0x1f8943, _0x1184bd); } , _0x5b6241['prototype']['setRenderingAutoClearDepthStencil'] = function(_0x13bb27, _0x400def, _0x2750a3, _0x32ff03) { void 0x0 === _0x2750a3 && (_0x2750a3 = !0x0), void 0x0 === _0x32ff03 && (_0x32ff03 = !0x0), this['_renderingManager']['setRenderingAutoClearDepthStencil'](_0x13bb27, _0x400def, _0x2750a3, _0x32ff03); } , _0x5b6241['prototype']['getAutoClearDepthStencilSetup'] = function(_0x3ac85b) { return this['_renderingManager']['getAutoClearDepthStencilSetup'](_0x3ac85b); } , Object['defineProperty'](_0x5b6241['prototype'], 'blockMaterialDirtyMechanism', { 'get': function() { return this['_blockMaterialDirtyMechanism']; }, 'set': function(_0x40e9cf) { this['_blockMaterialDirtyMechanism'] !== _0x40e9cf && (this['_blockMaterialDirtyMechanism'] = _0x40e9cf, _0x40e9cf || this['markAllMaterialsAsDirty'](_0x22ca5d['a']['MATERIAL_AllDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5b6241['prototype']['markAllMaterialsAsDirty'] = function(_0x5e350f, _0x589083) { if (!this['_blockMaterialDirtyMechanism']) for (var _0x28b8c5 = 0x0, _0x2e639b = this['materials']; _0x28b8c5 < _0x2e639b['length']; _0x28b8c5++) { var _0x9876cb = _0x2e639b[_0x28b8c5]; _0x589083 && !_0x589083(_0x9876cb) || _0x9876cb['markAsDirty'](_0x5e350f); } } , _0x5b6241['prototype']['_loadFile'] = function(_0x3f9f6e, _0x326e65, _0x4efc9e, _0x481919, _0x54e756, _0x50ceb4) { var _0x50158e = this , _0x51597e = _0x24e4b1['h']['LoadFile'](_0x3f9f6e, _0x326e65, _0x4efc9e, _0x481919 ? this['offlineProvider'] : void 0x0, _0x54e756, _0x50ceb4); return this['_activeRequests']['push'](_0x51597e), _0x51597e['onCompleteObservable']['add'](function(_0x1d7527) { _0x50158e['_activeRequests']['splice'](_0x50158e['_activeRequests']['indexOf'](_0x1d7527), 0x1); }), _0x51597e; } , _0x5b6241['prototype']['_loadFileAsync'] = function(_0x5d86e7, _0x1fb267, _0xb412bc) { var _0x450e3e = this; return new Promise(function(_0x194ac1, _0xdb545a) { _0x450e3e['_loadFile'](_0x5d86e7, function(_0x384885) { _0x194ac1(_0x384885); }, void 0x0, _0x1fb267, _0xb412bc, function(_0x3700c9, _0x2a36c0) { _0xdb545a(_0x2a36c0); }); } ); } , _0x5b6241['_uniqueIdCounter'] = 0x0, _0x5b6241['FOGMODE_NONE'] = 0x0, _0x5b6241['FOGMODE_EXP'] = 0x1, _0x5b6241['FOGMODE_EXP2'] = 0x2, _0x5b6241['FOGMODE_LINEAR'] = 0x3, _0x5b6241['MinDeltaTime'] = 0x1, _0x5b6241['MaxDeltaTime'] = 0x3e8, _0x5b6241; }(_0x3f7016['a']); } , function(_0x4964bd, _0x517490, _0x43bfd5) { 'use strict'; _0x43bfd5['d'](_0x517490, 'a', function() { return _0x432f83; }), _0x43bfd5['d'](_0x517490, 'c', function() { return _0x1e04ea; }), _0x43bfd5['d'](_0x517490, 'd', function() { return _0x16202e; }), _0x43bfd5['d'](_0x517490, 'b', function() { return _0x51e07f; }); var _0x410673 = _0x43bfd5(0x1) , _0x2f016e = _0x43bfd5(0x0) , _0x432f83 = function() { function _0x32971b() {} return _0x32971b['POINTERDOWN'] = 0x1, _0x32971b['POINTERUP'] = 0x2, _0x32971b['POINTERMOVE'] = 0x4, _0x32971b['POINTERWHEEL'] = 0x8, _0x32971b['POINTERPICK'] = 0x10, _0x32971b['POINTERTAP'] = 0x20, _0x32971b['POINTERDOUBLETAP'] = 0x40, _0x32971b; }() , _0x1e04ea = function() { return function(_0x2c3a56, _0x5488af) { this['type'] = _0x2c3a56, this['event'] = _0x5488af; } ; }() , _0x16202e = function(_0xad9eb9) { function _0x448db3(_0x224101, _0x2e8a42, _0x2e6a48, _0xc4f34d) { var _0x13097f = _0xad9eb9['call'](this, _0x224101, _0x2e8a42) || this; return _0x13097f['ray'] = null, _0x13097f['skipOnPointerObservable'] = !0x1, _0x13097f['localPosition'] = new _0x2f016e['w'](_0x2e6a48,_0xc4f34d), _0x13097f; } return _0x410673['d'](_0x448db3, _0xad9eb9), _0x448db3; }(_0x1e04ea) , _0x51e07f = function(_0x38e313) { function _0x81b7de(_0x77de74, _0x17d9ae, _0x4586f4) { var _0x5f5520 = _0x38e313['call'](this, _0x77de74, _0x17d9ae) || this; return _0x5f5520['pickInfo'] = _0x4586f4, _0x5f5520; } return _0x410673['d'](_0x81b7de, _0x38e313), _0x81b7de; }(_0x1e04ea); } , function(_0x5a5779, _0x4a5550, _0x524319) { 'use strict'; _0x524319['d'](_0x4a5550, 'a', function() { return _0x3a4981; }); var _0x32c1ee = _0x524319(0xa) , _0x469f1d = _0x524319(0x3) , _0x3a4981 = function() { function _0x5f5d35() {} return Object['defineProperty'](_0x5f5d35, 'DiffuseTextureEnabled', { 'get': function() { return this['_DiffuseTextureEnabled']; }, 'set': function(_0x2facb9) { this['_DiffuseTextureEnabled'] !== _0x2facb9 && (this['_DiffuseTextureEnabled'] = _0x2facb9, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'AmbientTextureEnabled', { 'get': function() { return this['_AmbientTextureEnabled']; }, 'set': function(_0x2c066d) { this['_AmbientTextureEnabled'] !== _0x2c066d && (this['_AmbientTextureEnabled'] = _0x2c066d, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'OpacityTextureEnabled', { 'get': function() { return this['_OpacityTextureEnabled']; }, 'set': function(_0x257498) { this['_OpacityTextureEnabled'] !== _0x257498 && (this['_OpacityTextureEnabled'] = _0x257498, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'ReflectionTextureEnabled', { 'get': function() { return this['_ReflectionTextureEnabled']; }, 'set': function(_0x244a3c) { this['_ReflectionTextureEnabled'] !== _0x244a3c && (this['_ReflectionTextureEnabled'] = _0x244a3c, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'EmissiveTextureEnabled', { 'get': function() { return this['_EmissiveTextureEnabled']; }, 'set': function(_0x272223) { this['_EmissiveTextureEnabled'] !== _0x272223 && (this['_EmissiveTextureEnabled'] = _0x272223, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'SpecularTextureEnabled', { 'get': function() { return this['_SpecularTextureEnabled']; }, 'set': function(_0x45d0a3) { this['_SpecularTextureEnabled'] !== _0x45d0a3 && (this['_SpecularTextureEnabled'] = _0x45d0a3, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'BumpTextureEnabled', { 'get': function() { return this['_BumpTextureEnabled']; }, 'set': function(_0x4fd2b3) { this['_BumpTextureEnabled'] !== _0x4fd2b3 && (this['_BumpTextureEnabled'] = _0x4fd2b3, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'LightmapTextureEnabled', { 'get': function() { return this['_LightmapTextureEnabled']; }, 'set': function(_0x36db23) { this['_LightmapTextureEnabled'] !== _0x36db23 && (this['_LightmapTextureEnabled'] = _0x36db23, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'RefractionTextureEnabled', { 'get': function() { return this['_RefractionTextureEnabled']; }, 'set': function(_0x1cebdd) { this['_RefractionTextureEnabled'] !== _0x1cebdd && (this['_RefractionTextureEnabled'] = _0x1cebdd, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'ColorGradingTextureEnabled', { 'get': function() { return this['_ColorGradingTextureEnabled']; }, 'set': function(_0x503509) { this['_ColorGradingTextureEnabled'] !== _0x503509 && (this['_ColorGradingTextureEnabled'] = _0x503509, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'FresnelEnabled', { 'get': function() { return this['_FresnelEnabled']; }, 'set': function(_0x5369a5) { this['_FresnelEnabled'] !== _0x5369a5 && (this['_FresnelEnabled'] = _0x5369a5, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_FresnelDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'ClearCoatTextureEnabled', { 'get': function() { return this['_ClearCoatTextureEnabled']; }, 'set': function(_0x221b0e) { this['_ClearCoatTextureEnabled'] !== _0x221b0e && (this['_ClearCoatTextureEnabled'] = _0x221b0e, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'ClearCoatBumpTextureEnabled', { 'get': function() { return this['_ClearCoatBumpTextureEnabled']; }, 'set': function(_0xd08eca) { this['_ClearCoatBumpTextureEnabled'] !== _0xd08eca && (this['_ClearCoatBumpTextureEnabled'] = _0xd08eca, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'ClearCoatTintTextureEnabled', { 'get': function() { return this['_ClearCoatTintTextureEnabled']; }, 'set': function(_0x566703) { this['_ClearCoatTintTextureEnabled'] !== _0x566703 && (this['_ClearCoatTintTextureEnabled'] = _0x566703, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'SheenTextureEnabled', { 'get': function() { return this['_SheenTextureEnabled']; }, 'set': function(_0x35e9de) { this['_SheenTextureEnabled'] !== _0x35e9de && (this['_SheenTextureEnabled'] = _0x35e9de, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'AnisotropicTextureEnabled', { 'get': function() { return this['_AnisotropicTextureEnabled']; }, 'set': function(_0x229020) { this['_AnisotropicTextureEnabled'] !== _0x229020 && (this['_AnisotropicTextureEnabled'] = _0x229020, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f5d35, 'ThicknessTextureEnabled', { 'get': function() { return this['_ThicknessTextureEnabled']; }, 'set': function(_0x264923) { this['_ThicknessTextureEnabled'] !== _0x264923 && (this['_ThicknessTextureEnabled'] = _0x264923, _0x32c1ee['b']['MarkAllMaterialsAsDirty'](_0x469f1d['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5f5d35['_DiffuseTextureEnabled'] = !0x0, _0x5f5d35['_AmbientTextureEnabled'] = !0x0, _0x5f5d35['_OpacityTextureEnabled'] = !0x0, _0x5f5d35['_ReflectionTextureEnabled'] = !0x0, _0x5f5d35['_EmissiveTextureEnabled'] = !0x0, _0x5f5d35['_SpecularTextureEnabled'] = !0x0, _0x5f5d35['_BumpTextureEnabled'] = !0x0, _0x5f5d35['_LightmapTextureEnabled'] = !0x0, _0x5f5d35['_RefractionTextureEnabled'] = !0x0, _0x5f5d35['_ColorGradingTextureEnabled'] = !0x0, _0x5f5d35['_FresnelEnabled'] = !0x0, _0x5f5d35['_ClearCoatTextureEnabled'] = !0x0, _0x5f5d35['_ClearCoatBumpTextureEnabled'] = !0x0, _0x5f5d35['_ClearCoatTintTextureEnabled'] = !0x0, _0x5f5d35['_SheenTextureEnabled'] = !0x0, _0x5f5d35['_AnisotropicTextureEnabled'] = !0x0, _0x5f5d35['_ThicknessTextureEnabled'] = !0x0, _0x5f5d35; }(); } , function(_0x28df22, _0x292bce, _0x11c900) { 'use strict'; _0x11c900['d'](_0x292bce, 'a', function() { return _0x12e2b8; }); var _0x12e2b8 = function() { function _0x35122d() {} return _0x35122d['WarnImport'] = function(_0x49c4e5) { return _0x49c4e5 + '\x20needs\x20to\x20be\x20imported\x20before\x20as\x20it\x20contains\x20a\x20side-effect\x20required\x20by\x20your\x20code.'; } , _0x35122d; }(); } , function(_0x22dabf, _0x3c2fc9, _0x41b00b) { 'use strict'; _0x41b00b['d'](_0x3c2fc9, 'a', function() { return _0x49b441; }); var _0x52a55b = _0x41b00b(0x1) , _0x4088ce = _0x41b00b(0x2) , _0x19225a = _0x41b00b(0x9) , _0x17eec9 = _0x41b00b(0x8) , _0x511d1a = _0x41b00b(0x0) , _0x4a997d = _0x41b00b(0x17) , _0x42b52a = _0x41b00b(0x31) , _0xb96102 = _0x41b00b(0x3f) , _0x4e03a8 = _0x41b00b(0x3) , _0x36b35c = _0x41b00b(0x6) , _0x49b441 = function() { function _0x1abc3d(_0x411786, _0x562cdf, _0x3c2c10) { this['metadata'] = null, this['reservedDataStore'] = null, this['checkReadyOnEveryCall'] = !0x1, this['checkReadyOnlyOnce'] = !0x1, this['state'] = '', this['_alpha'] = 0x1, this['_backFaceCulling'] = !0x0, this['onCompiled'] = null, this['onError'] = null, this['getRenderTargetTextures'] = null, this['doNotSerialize'] = !0x1, this['_storeEffectOnSubMeshes'] = !0x1, this['animations'] = null, this['onDisposeObservable'] = new _0x17eec9['c'](), this['_onDisposeObserver'] = null, this['_onUnBindObservable'] = null, this['_onBindObserver'] = null, this['_alphaMode'] = _0x4e03a8['a']['ALPHA_COMBINE'], this['_needDepthPrePass'] = !0x1, this['disableDepthWrite'] = !0x1, this['forceDepthWrite'] = !0x1, this['separateCullingPass'] = !0x1, this['_fogEnabled'] = !0x0, this['pointSize'] = 0x1, this['zOffset'] = 0x0, this['_effect'] = null, this['_wasPreviouslyReady'] = !0x1, this['_useUBO'] = !0x1, this['_fillMode'] = _0x1abc3d['TriangleFillMode'], this['_cachedDepthWriteState'] = !0x1, this['_indexInSceneMaterialArray'] = -0x1, this['meshMap'] = null, this['name'] = _0x411786, this['id'] = _0x411786 || _0x19225a['h']['RandomId'](), this['_scene'] = _0x562cdf || _0x4a997d['a']['LastCreatedScene'], this['uniqueId'] = this['_scene']['getUniqueId'](), this['_scene']['useRightHandedSystem'] ? this['sideOrientation'] = _0x1abc3d['ClockWiseSideOrientation'] : this['sideOrientation'] = _0x1abc3d['CounterClockWiseSideOrientation'], this['_uniformBuffer'] = new _0xb96102['a'](this['_scene']['getEngine']()), this['_useUBO'] = this['getScene']()['getEngine']()['supportsUniformBuffers'], _0x3c2c10 || this['_scene']['addMaterial'](this), this['_scene']['useMaterialMeshMap'] && (this['meshMap'] = {}); } return Object['defineProperty'](_0x1abc3d['prototype'], 'alpha', { 'get': function() { return this['_alpha']; }, 'set': function(_0x2e623e) { this['_alpha'] !== _0x2e623e && (this['_alpha'] = _0x2e623e, this['markAsDirty'](_0x1abc3d['MiscDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'backFaceCulling', { 'get': function() { return this['_backFaceCulling']; }, 'set': function(_0x5bcafd) { this['_backFaceCulling'] !== _0x5bcafd && (this['_backFaceCulling'] = _0x5bcafd, this['markAsDirty'](_0x1abc3d['TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'hasRenderTargetTextures', { 'get': function() { return !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'onDispose', { 'set': function(_0x3fedb3) { this['_onDisposeObserver'] && this['onDisposeObservable']['remove'](this['_onDisposeObserver']), this['_onDisposeObserver'] = this['onDisposeObservable']['add'](_0x3fedb3); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'onBindObservable', { 'get': function() { return this['_onBindObservable'] || (this['_onBindObservable'] = new _0x17eec9['c']()), this['_onBindObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'onBind', { 'set': function(_0x4bf918) { this['_onBindObserver'] && this['onBindObservable']['remove'](this['_onBindObserver']), this['_onBindObserver'] = this['onBindObservable']['add'](_0x4bf918); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'onUnBindObservable', { 'get': function() { return this['_onUnBindObservable'] || (this['_onUnBindObservable'] = new _0x17eec9['c']()), this['_onUnBindObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'alphaMode', { 'get': function() { return this['_alphaMode']; }, 'set': function(_0x56ff24) { this['_alphaMode'] !== _0x56ff24 && (this['_alphaMode'] = _0x56ff24, this['markAsDirty'](_0x1abc3d['TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'needDepthPrePass', { 'get': function() { return this['_needDepthPrePass']; }, 'set': function(_0x332065) { this['_needDepthPrePass'] !== _0x332065 && (this['_needDepthPrePass'] = _0x332065, this['_needDepthPrePass'] && (this['checkReadyOnEveryCall'] = !0x0)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'fogEnabled', { 'get': function() { return this['_fogEnabled']; }, 'set': function(_0x5623d1) { this['_fogEnabled'] !== _0x5623d1 && (this['_fogEnabled'] = _0x5623d1, this['markAsDirty'](_0x1abc3d['MiscDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'wireframe', { 'get': function() { switch (this['_fillMode']) { case _0x1abc3d['WireFrameFillMode']: case _0x1abc3d['LineListDrawMode']: case _0x1abc3d['LineLoopDrawMode']: case _0x1abc3d['LineStripDrawMode']: return !0x0; } return this['_scene']['forceWireframe']; }, 'set': function(_0x17ad08) { this['fillMode'] = _0x17ad08 ? _0x1abc3d['WireFrameFillMode'] : _0x1abc3d['TriangleFillMode']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'pointsCloud', { 'get': function() { switch (this['_fillMode']) { case _0x1abc3d['PointFillMode']: case _0x1abc3d['PointListDrawMode']: return !0x0; } return this['_scene']['forcePointsCloud']; }, 'set': function(_0x26e31b) { this['fillMode'] = _0x26e31b ? _0x1abc3d['PointFillMode'] : _0x1abc3d['TriangleFillMode']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1abc3d['prototype'], 'fillMode', { 'get': function() { return this['_fillMode']; }, 'set': function(_0xe18aaf) { this['_fillMode'] !== _0xe18aaf && (this['_fillMode'] = _0xe18aaf, this['markAsDirty'](_0x1abc3d['MiscDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1abc3d['prototype']['toString'] = function(_0x48a321) { return 'Name:\x20' + this['name']; } , _0x1abc3d['prototype']['getClassName'] = function() { return 'Material'; } , Object['defineProperty'](_0x1abc3d['prototype'], 'isFrozen', { 'get': function() { return this['checkReadyOnlyOnce']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1abc3d['prototype']['freeze'] = function() { this['checkReadyOnlyOnce'] = !0x0; } , _0x1abc3d['prototype']['unfreeze'] = function() { this['checkReadyOnlyOnce'] = !0x1; } , _0x1abc3d['prototype']['isReady'] = function(_0x39095a, _0xca206c) { return !0x0; } , _0x1abc3d['prototype']['isReadyForSubMesh'] = function(_0x921814, _0x206075, _0x163673) { return !0x1; } , _0x1abc3d['prototype']['getEffect'] = function() { return this['_effect']; } , _0x1abc3d['prototype']['getScene'] = function() { return this['_scene']; } , _0x1abc3d['prototype']['needAlphaBlending'] = function() { return this['alpha'] < 0x1; } , _0x1abc3d['prototype']['needAlphaBlendingForMesh'] = function(_0x4eba73) { return this['needAlphaBlending']() || _0x4eba73['visibility'] < 0x1 || _0x4eba73['hasVertexAlpha']; } , _0x1abc3d['prototype']['needAlphaTesting'] = function() { return !0x1; } , _0x1abc3d['prototype']['getAlphaTestTexture'] = function() { return null; } , _0x1abc3d['prototype']['markDirty'] = function() { this['_wasPreviouslyReady'] = !0x1; } , _0x1abc3d['prototype']['_preBind'] = function(_0x376e4d, _0x430ba4) { void 0x0 === _0x430ba4 && (_0x430ba4 = null); var _0x8d09a0 = this['_scene']['getEngine']() , _0x482b0d = (null == _0x430ba4 ? this['sideOrientation'] : _0x430ba4) === _0x1abc3d['ClockWiseSideOrientation']; return _0x8d09a0['enableEffect'](_0x376e4d || this['_effect']), _0x8d09a0['setState'](this['backFaceCulling'], this['zOffset'], !0x1, _0x482b0d), _0x482b0d; } , _0x1abc3d['prototype']['bind'] = function(_0x2c0b05, _0x34a54c) {} , _0x1abc3d['prototype']['bindForSubMesh'] = function(_0x133028, _0xb1b362, _0xfb8924) {} , _0x1abc3d['prototype']['bindOnlyWorldMatrix'] = function(_0x1f4fb5) {} , _0x1abc3d['prototype']['bindSceneUniformBuffer'] = function(_0x3583be, _0xbef88f) { _0xbef88f['bindToEffect'](_0x3583be, 'Scene'); } , _0x1abc3d['prototype']['bindView'] = function(_0xa8f252) { this['_useUBO'] ? this['bindSceneUniformBuffer'](_0xa8f252, this['getScene']()['getSceneUniformBuffer']()) : _0xa8f252['setMatrix']('view', this['getScene']()['getViewMatrix']()); } , _0x1abc3d['prototype']['bindViewProjection'] = function(_0x4c0b07) { this['_useUBO'] ? this['bindSceneUniformBuffer'](_0x4c0b07, this['getScene']()['getSceneUniformBuffer']()) : _0x4c0b07['setMatrix']('viewProjection', this['getScene']()['getTransformMatrix']()); } , _0x1abc3d['prototype']['_shouldTurnAlphaTestOn'] = function(_0x345659) { return !this['needAlphaBlendingForMesh'](_0x345659) && this['needAlphaTesting'](); } , _0x1abc3d['prototype']['_afterBind'] = function(_0x1537b6) { if (this['_scene']['_cachedMaterial'] = this, this['_scene']['_cachedVisibility'] = _0x1537b6 ? _0x1537b6['visibility'] : 0x1, this['_onBindObservable'] && _0x1537b6 && this['_onBindObservable']['notifyObservers'](_0x1537b6), this['disableDepthWrite']) { var _0x3bee5e = this['_scene']['getEngine'](); this['_cachedDepthWriteState'] = _0x3bee5e['getDepthWrite'](), _0x3bee5e['setDepthWrite'](!0x1); } } , _0x1abc3d['prototype']['unbind'] = function() { (this['_onUnBindObservable'] && this['_onUnBindObservable']['notifyObservers'](this), this['disableDepthWrite']) && this['_scene']['getEngine']()['setDepthWrite'](this['_cachedDepthWriteState']); } , _0x1abc3d['prototype']['getActiveTextures'] = function() { return []; } , _0x1abc3d['prototype']['hasTexture'] = function(_0x534c6e) { return !0x1; } , _0x1abc3d['prototype']['clone'] = function(_0x22fc13) { return null; } , _0x1abc3d['prototype']['getBindedMeshes'] = function() { var _0x419242 = this; if (this['meshMap']) { var _0x844b9 = new Array(); for (var _0x3fa7e3 in this['meshMap']) { var _0x4ae587 = this['meshMap'][_0x3fa7e3]; _0x4ae587 && _0x844b9['push'](_0x4ae587); } return _0x844b9; } return this['_scene']['meshes']['filter'](function(_0x27d665) { return _0x27d665['material'] === _0x419242; }); } , _0x1abc3d['prototype']['forceCompilation'] = function(_0x285eae, _0x38ca33, _0x5184e5) { var _0x220755 = this , _0xcca04a = _0x52a55b['a']({ 'clipPlane': !0x1 }, _0x5184e5) , _0x10824c = new _0x42b52a['a']() , _0x270372 = this['getScene']() , _0x200ad3 = function() { if (_0x220755['_scene'] && _0x220755['_scene']['getEngine']()) { _0x10824c['_materialDefines'] && (_0x10824c['_materialDefines']['_renderId'] = -0x1); var _0x5c0528 = _0x270372['clipPlane']; _0xcca04a['clipPlane'] && (_0x270372['clipPlane'] = new _0x511d1a['n'](0x0,0x0,0x0,0x1)), _0x220755['_storeEffectOnSubMeshes'] ? _0x220755['isReadyForSubMesh'](_0x285eae, _0x10824c) ? _0x38ca33 && _0x38ca33(_0x220755) : setTimeout(_0x200ad3, 0x10) : _0x220755['isReady']() ? _0x38ca33 && _0x38ca33(_0x220755) : setTimeout(_0x200ad3, 0x10), _0xcca04a['clipPlane'] && (_0x270372['clipPlane'] = _0x5c0528); } }; _0x200ad3(); } , _0x1abc3d['prototype']['forceCompilationAsync'] = function(_0x44fbdd, _0x54ecfa) { var _0x7ce89 = this; return new Promise(function(_0x338ca7) { _0x7ce89['forceCompilation'](_0x44fbdd, function() { _0x338ca7(); }, _0x54ecfa); } ); } , _0x1abc3d['prototype']['markAsDirty'] = function(_0x426b52) { this['getScene']()['blockMaterialDirtyMechanism'] || (_0x1abc3d['_DirtyCallbackArray']['length'] = 0x0, _0x426b52 & _0x1abc3d['TextureDirtyFlag'] && _0x1abc3d['_DirtyCallbackArray']['push'](_0x1abc3d['_TextureDirtyCallBack']), _0x426b52 & _0x1abc3d['LightDirtyFlag'] && _0x1abc3d['_DirtyCallbackArray']['push'](_0x1abc3d['_LightsDirtyCallBack']), _0x426b52 & _0x1abc3d['FresnelDirtyFlag'] && _0x1abc3d['_DirtyCallbackArray']['push'](_0x1abc3d['_FresnelDirtyCallBack']), _0x426b52 & _0x1abc3d['AttributesDirtyFlag'] && _0x1abc3d['_DirtyCallbackArray']['push'](_0x1abc3d['_AttributeDirtyCallBack']), _0x426b52 & _0x1abc3d['MiscDirtyFlag'] && _0x1abc3d['_DirtyCallbackArray']['push'](_0x1abc3d['_MiscDirtyCallBack']), _0x1abc3d['_DirtyCallbackArray']['length'] && this['_markAllSubMeshesAsDirty'](_0x1abc3d['_RunDirtyCallBacks']), this['getScene']()['resetCachedMaterial']()); } , _0x1abc3d['prototype']['_markAllSubMeshesAsDirty'] = function(_0x47cc79) { if (!this['getScene']()['blockMaterialDirtyMechanism']) for (var _0x2034d1 = 0x0, _0xfa000d = this['getScene']()['meshes']; _0x2034d1 < _0xfa000d['length']; _0x2034d1++) { var _0x3a4bda = _0xfa000d[_0x2034d1]; if (_0x3a4bda['subMeshes']) for (var _0x2e5ca0 = 0x0, _0x380501 = _0x3a4bda['subMeshes']; _0x2e5ca0 < _0x380501['length']; _0x2e5ca0++) { var _0x3fc529 = _0x380501[_0x2e5ca0]; _0x3fc529['getMaterial']() === this && (_0x3fc529['_materialDefines'] && _0x47cc79(_0x3fc529['_materialDefines'])); } } } , _0x1abc3d['prototype']['_markAllSubMeshesAsImageProcessingDirty'] = function() { this['_markAllSubMeshesAsDirty'](_0x1abc3d['_ImageProcessingDirtyCallBack']); } , _0x1abc3d['prototype']['_markAllSubMeshesAsTexturesDirty'] = function() { this['_markAllSubMeshesAsDirty'](_0x1abc3d['_TextureDirtyCallBack']); } , _0x1abc3d['prototype']['_markAllSubMeshesAsFresnelDirty'] = function() { this['_markAllSubMeshesAsDirty'](_0x1abc3d['_FresnelDirtyCallBack']); } , _0x1abc3d['prototype']['_markAllSubMeshesAsFresnelAndMiscDirty'] = function() { this['_markAllSubMeshesAsDirty'](_0x1abc3d['_FresnelAndMiscDirtyCallBack']); } , _0x1abc3d['prototype']['_markAllSubMeshesAsLightsDirty'] = function() { this['_markAllSubMeshesAsDirty'](_0x1abc3d['_LightsDirtyCallBack']); } , _0x1abc3d['prototype']['_markAllSubMeshesAsAttributesDirty'] = function() { this['_markAllSubMeshesAsDirty'](_0x1abc3d['_AttributeDirtyCallBack']); } , _0x1abc3d['prototype']['_markAllSubMeshesAsMiscDirty'] = function() { this['_markAllSubMeshesAsDirty'](_0x1abc3d['_MiscDirtyCallBack']); } , _0x1abc3d['prototype']['_markAllSubMeshesAsTexturesAndMiscDirty'] = function() { this['_markAllSubMeshesAsDirty'](_0x1abc3d['_TextureAndMiscDirtyCallBack']); } , _0x1abc3d['prototype']['dispose'] = function(_0xdc52f0, _0x2edecc, _0x285776) { var _0x2c591a = this['getScene'](); if (_0x2c591a['stopAnimation'](this), _0x2c591a['freeProcessedMaterials'](), _0x2c591a['removeMaterial'](this), !0x0 !== _0x285776) if (this['meshMap']) for (var _0x3ecf92 in this['meshMap']) { (_0x4eb70c = this['meshMap'][_0x3ecf92]) && (_0x4eb70c['material'] = null, this['releaseVertexArrayObject'](_0x4eb70c, _0xdc52f0)); } else for (var _0x5c3805 = 0x0, _0x16dcfe = _0x2c591a['meshes']; _0x5c3805 < _0x16dcfe['length']; _0x5c3805++) { var _0x4eb70c; (_0x4eb70c = _0x16dcfe[_0x5c3805])['material'] !== this || _0x4eb70c['sourceMesh'] || (_0x4eb70c['material'] = null, this['releaseVertexArrayObject'](_0x4eb70c, _0xdc52f0)); } this['_uniformBuffer']['dispose'](), _0xdc52f0 && this['_effect'] && (this['_storeEffectOnSubMeshes'] || this['_effect']['dispose'](), this['_effect'] = null), this['onDisposeObservable']['notifyObservers'](this), this['onDisposeObservable']['clear'](), this['_onBindObservable'] && this['_onBindObservable']['clear'](), this['_onUnBindObservable'] && this['_onUnBindObservable']['clear'](); } , _0x1abc3d['prototype']['releaseVertexArrayObject'] = function(_0x9ae1de, _0x354a77) { if (_0x9ae1de['geometry']) { var _0x2bf1ce = _0x9ae1de['geometry']; if (this['_storeEffectOnSubMeshes']) for (var _0x132422 = 0x0, _0x21e431 = _0x9ae1de['subMeshes']; _0x132422 < _0x21e431['length']; _0x132422++) { var _0xd8d24e = _0x21e431[_0x132422]; _0x2bf1ce['_releaseVertexArrayObject'](_0xd8d24e['_materialEffect']), _0x354a77 && _0xd8d24e['_materialEffect'] && _0xd8d24e['_materialEffect']['dispose'](); } else _0x2bf1ce['_releaseVertexArrayObject'](this['_effect']); } } , _0x1abc3d['prototype']['serialize'] = function() { return _0x4088ce['a']['Serialize'](this); } , _0x1abc3d['Parse'] = function(_0x53d67b, _0x233b1f, _0x19f0e8) { if (_0x53d67b['customType']) { if ('BABYLON.PBRMaterial' === _0x53d67b['customType'] && _0x53d67b['overloadedAlbedo'] && (_0x53d67b['customType'] = 'BABYLON.LegacyPBRMaterial', !BABYLON['LegacyPBRMaterial'])) return _0x36b35c['a']['Error']('Your\x20scene\x20is\x20trying\x20to\x20load\x20a\x20legacy\x20version\x20of\x20the\x20PBRMaterial,\x20please,\x20include\x20it\x20from\x20the\x20materials\x20library.'), null; } else _0x53d67b['customType'] = 'BABYLON.StandardMaterial'; return _0x19225a['h']['Instantiate'](_0x53d67b['customType'])['Parse'](_0x53d67b, _0x233b1f, _0x19f0e8); } , _0x1abc3d['TriangleFillMode'] = _0x4e03a8['a']['MATERIAL_TriangleFillMode'], _0x1abc3d['WireFrameFillMode'] = _0x4e03a8['a']['MATERIAL_WireFrameFillMode'], _0x1abc3d['PointFillMode'] = _0x4e03a8['a']['MATERIAL_PointFillMode'], _0x1abc3d['PointListDrawMode'] = _0x4e03a8['a']['MATERIAL_PointListDrawMode'], _0x1abc3d['LineListDrawMode'] = _0x4e03a8['a']['MATERIAL_LineListDrawMode'], _0x1abc3d['LineLoopDrawMode'] = _0x4e03a8['a']['MATERIAL_LineLoopDrawMode'], _0x1abc3d['LineStripDrawMode'] = _0x4e03a8['a']['MATERIAL_LineStripDrawMode'], _0x1abc3d['TriangleStripDrawMode'] = _0x4e03a8['a']['MATERIAL_TriangleStripDrawMode'], _0x1abc3d['TriangleFanDrawMode'] = _0x4e03a8['a']['MATERIAL_TriangleFanDrawMode'], _0x1abc3d['ClockWiseSideOrientation'] = _0x4e03a8['a']['MATERIAL_ClockWiseSideOrientation'], _0x1abc3d['CounterClockWiseSideOrientation'] = _0x4e03a8['a']['MATERIAL_CounterClockWiseSideOrientation'], _0x1abc3d['TextureDirtyFlag'] = _0x4e03a8['a']['MATERIAL_TextureDirtyFlag'], _0x1abc3d['LightDirtyFlag'] = _0x4e03a8['a']['MATERIAL_LightDirtyFlag'], _0x1abc3d['FresnelDirtyFlag'] = _0x4e03a8['a']['MATERIAL_FresnelDirtyFlag'], _0x1abc3d['AttributesDirtyFlag'] = _0x4e03a8['a']['MATERIAL_AttributesDirtyFlag'], _0x1abc3d['MiscDirtyFlag'] = _0x4e03a8['a']['MATERIAL_MiscDirtyFlag'], _0x1abc3d['AllDirtyFlag'] = _0x4e03a8['a']['MATERIAL_AllDirtyFlag'], _0x1abc3d['_ImageProcessingDirtyCallBack'] = function(_0x120073) { return _0x120073['markAsImageProcessingDirty'](); } , _0x1abc3d['_TextureDirtyCallBack'] = function(_0x379d1f) { return _0x379d1f['markAsTexturesDirty'](); } , _0x1abc3d['_FresnelDirtyCallBack'] = function(_0x48e75b) { return _0x48e75b['markAsFresnelDirty'](); } , _0x1abc3d['_MiscDirtyCallBack'] = function(_0x524ba9) { return _0x524ba9['markAsMiscDirty'](); } , _0x1abc3d['_LightsDirtyCallBack'] = function(_0x708c77) { return _0x708c77['markAsLightDirty'](); } , _0x1abc3d['_AttributeDirtyCallBack'] = function(_0x32dbd0) { return _0x32dbd0['markAsAttributesDirty'](); } , _0x1abc3d['_FresnelAndMiscDirtyCallBack'] = function(_0x568771) { _0x1abc3d['_FresnelDirtyCallBack'](_0x568771), _0x1abc3d['_MiscDirtyCallBack'](_0x568771); } , _0x1abc3d['_TextureAndMiscDirtyCallBack'] = function(_0x10022e) { _0x1abc3d['_TextureDirtyCallBack'](_0x10022e), _0x1abc3d['_MiscDirtyCallBack'](_0x10022e); } , _0x1abc3d['_DirtyCallbackArray'] = [], _0x1abc3d['_RunDirtyCallBacks'] = function(_0x12bc9f) { for (var _0x58b237 = 0x0, _0x229056 = _0x1abc3d['_DirtyCallbackArray']; _0x58b237 < _0x229056['length']; _0x58b237++) { (0x0, _0x229056[_0x58b237])(_0x12bc9f); } } , _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'id', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'uniqueId', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'name', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'checkReadyOnEveryCall', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'checkReadyOnlyOnce', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'state', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])('alpha')], _0x1abc3d['prototype'], '_alpha', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])('backFaceCulling')], _0x1abc3d['prototype'], '_backFaceCulling', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'sideOrientation', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])('alphaMode')], _0x1abc3d['prototype'], '_alphaMode', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], '_needDepthPrePass', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'disableDepthWrite', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'forceDepthWrite', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'separateCullingPass', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])('fogEnabled')], _0x1abc3d['prototype'], '_fogEnabled', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'pointSize', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'zOffset', void 0x0), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'wireframe', null), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'pointsCloud', null), _0x52a55b['c']([Object(_0x4088ce['c'])()], _0x1abc3d['prototype'], 'fillMode', null), _0x1abc3d; }(); } , function(_0x3fe8d8, _0xaf5759, _0x192405) { 'use strict'; _0x192405['d'](_0xaf5759, 'a', function() { return _0x5a6dc0; }); var _0xeec07b = _0x192405(0x1) , _0xb244e9 = _0x192405(0x2) , _0x456af3 = _0x192405(0x1c) , _0x52bf7a = _0x192405(0x9) , _0xe3f1fa = _0x192405(0x8) , _0x27d89b = _0x192405(0x0) , _0x3a00d8 = _0x192405(0x19) , _0x277173 = _0x192405(0x6) , _0x2bbb26 = _0x192405(0x16) , _0x173689 = _0x192405(0x13) , _0x5a6dc0 = function(_0x2e66fe) { function _0x2ed7a4(_0x990cca, _0x965850, _0x72c143, _0x5ac02a) { void 0x0 === _0x5ac02a && (_0x5ac02a = !0x0); var _0x43162d = _0x2e66fe['call'](this, _0x990cca, _0x72c143) || this; return _0x43162d['_position'] = _0x27d89b['x']['Zero'](), _0x43162d['upVector'] = _0x27d89b['x']['Up'](), _0x43162d['orthoLeft'] = null, _0x43162d['orthoRight'] = null, _0x43162d['orthoBottom'] = null, _0x43162d['orthoTop'] = null, _0x43162d['fov'] = 0.8, _0x43162d['minZ'] = 0x1, _0x43162d['maxZ'] = 0x2710, _0x43162d['inertia'] = 0.9, _0x43162d['mode'] = _0x2ed7a4['PERSPECTIVE_CAMERA'], _0x43162d['isIntermediate'] = !0x1, _0x43162d['viewport'] = new _0x27d89b['z'](0x0,0x0,0x1,0x1), _0x43162d['layerMask'] = 0xfffffff, _0x43162d['fovMode'] = _0x2ed7a4['FOVMODE_VERTICAL_FIXED'], _0x43162d['cameraRigMode'] = _0x2ed7a4['RIG_MODE_NONE'], _0x43162d['customRenderTargets'] = new Array(), _0x43162d['outputRenderTarget'] = null, _0x43162d['onViewMatrixChangedObservable'] = new _0xe3f1fa['c'](), _0x43162d['onProjectionMatrixChangedObservable'] = new _0xe3f1fa['c'](), _0x43162d['onAfterCheckInputsObservable'] = new _0xe3f1fa['c'](), _0x43162d['onRestoreStateObservable'] = new _0xe3f1fa['c'](), _0x43162d['_rigCameras'] = new Array(), _0x43162d['_webvrViewMatrix'] = _0x27d89b['j']['Identity'](), _0x43162d['_skipRendering'] = !0x1, _0x43162d['_projectionMatrix'] = new _0x27d89b['j'](), _0x43162d['_postProcesses'] = new Array(), _0x43162d['_activeMeshes'] = new _0x456af3['a'](0x100), _0x43162d['_globalPosition'] = _0x27d89b['x']['Zero'](), _0x43162d['_computedViewMatrix'] = _0x27d89b['j']['Identity'](), _0x43162d['_doNotComputeProjectionMatrix'] = !0x1, _0x43162d['_transformMatrix'] = _0x27d89b['j']['Zero'](), _0x43162d['_refreshFrustumPlanes'] = !0x0, _0x43162d['_isCamera'] = !0x0, _0x43162d['_isLeftCamera'] = !0x1, _0x43162d['_isRightCamera'] = !0x0, _0x43162d['getScene']()['addCamera'](_0x43162d), _0x5ac02a && !_0x43162d['getScene']()['activeCamera'] && (_0x43162d['getScene']()['activeCamera'] = _0x43162d), _0x43162d['position'] = _0x965850, _0x43162d; } return _0xeec07b['d'](_0x2ed7a4, _0x2e66fe), Object['defineProperty'](_0x2ed7a4['prototype'], 'position', { 'get': function() { return this['_position']; }, 'set': function(_0xe30afa) { this['_position'] = _0xe30afa; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2ed7a4['prototype']['storeState'] = function() { return this['_stateStored'] = !0x0, this['_storedFov'] = this['fov'], this; } , _0x2ed7a4['prototype']['_restoreStateValues'] = function() { return !!this['_stateStored'] && (this['fov'] = this['_storedFov'], !0x0); } , _0x2ed7a4['prototype']['restoreState'] = function() { return !!this['_restoreStateValues']() && (this['onRestoreStateObservable']['notifyObservers'](this), !0x0); } , _0x2ed7a4['prototype']['getClassName'] = function() { return 'Camera'; } , _0x2ed7a4['prototype']['toString'] = function(_0x2b89ed) { var _0x547a7d = 'Name:\x20' + this['name']; if (_0x547a7d += ',\x20type:\x20' + this['getClassName'](), this['animations']) for (var _0x1d5b13 = 0x0; _0x1d5b13 < this['animations']['length']; _0x1d5b13++) _0x547a7d += ',\x20animation[0]:\x20' + this['animations'][_0x1d5b13]['toString'](_0x2b89ed); return _0x547a7d; } , Object['defineProperty'](_0x2ed7a4['prototype'], 'globalPosition', { 'get': function() { return this['_globalPosition']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2ed7a4['prototype']['getActiveMeshes'] = function() { return this['_activeMeshes']; } , _0x2ed7a4['prototype']['isActiveMesh'] = function(_0x4e63c6) { return -0x1 !== this['_activeMeshes']['indexOf'](_0x4e63c6); } , _0x2ed7a4['prototype']['isReady'] = function(_0x447f87) { if (void 0x0 === _0x447f87 && (_0x447f87 = !0x1), _0x447f87) for (var _0x117203 = 0x0, _0x5a491e = this['_postProcesses']; _0x117203 < _0x5a491e['length']; _0x117203++) { var _0x411fa7 = _0x5a491e[_0x117203]; if (_0x411fa7 && !_0x411fa7['isReady']()) return !0x1; } return _0x2e66fe['prototype']['isReady']['call'](this, _0x447f87); } , _0x2ed7a4['prototype']['_initCache'] = function() { _0x2e66fe['prototype']['_initCache']['call'](this), this['_cache']['position'] = new _0x27d89b['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']), this['_cache']['upVector'] = new _0x27d89b['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']), this['_cache']['mode'] = void 0x0, this['_cache']['minZ'] = void 0x0, this['_cache']['maxZ'] = void 0x0, this['_cache']['fov'] = void 0x0, this['_cache']['fovMode'] = void 0x0, this['_cache']['aspectRatio'] = void 0x0, this['_cache']['orthoLeft'] = void 0x0, this['_cache']['orthoRight'] = void 0x0, this['_cache']['orthoBottom'] = void 0x0, this['_cache']['orthoTop'] = void 0x0, this['_cache']['renderWidth'] = void 0x0, this['_cache']['renderHeight'] = void 0x0; } , _0x2ed7a4['prototype']['_updateCache'] = function(_0x5ab17a) { _0x5ab17a || _0x2e66fe['prototype']['_updateCache']['call'](this), this['_cache']['position']['copyFrom'](this['position']), this['_cache']['upVector']['copyFrom'](this['upVector']); } , _0x2ed7a4['prototype']['_isSynchronized'] = function() { return this['_isSynchronizedViewMatrix']() && this['_isSynchronizedProjectionMatrix'](); } , _0x2ed7a4['prototype']['_isSynchronizedViewMatrix'] = function() { return !!_0x2e66fe['prototype']['_isSynchronized']['call'](this) && (this['_cache']['position']['equals'](this['position']) && this['_cache']['upVector']['equals'](this['upVector']) && this['isSynchronizedWithParent']()); } , _0x2ed7a4['prototype']['_isSynchronizedProjectionMatrix'] = function() { var _0x240eff = this['_cache']['mode'] === this['mode'] && this['_cache']['minZ'] === this['minZ'] && this['_cache']['maxZ'] === this['maxZ']; if (!_0x240eff) return !0x1; var _0x47ed4b = this['getEngine'](); return _0x240eff = this['mode'] === _0x2ed7a4['PERSPECTIVE_CAMERA'] ? this['_cache']['fov'] === this['fov'] && this['_cache']['fovMode'] === this['fovMode'] && this['_cache']['aspectRatio'] === _0x47ed4b['getAspectRatio'](this) : this['_cache']['orthoLeft'] === this['orthoLeft'] && this['_cache']['orthoRight'] === this['orthoRight'] && this['_cache']['orthoBottom'] === this['orthoBottom'] && this['_cache']['orthoTop'] === this['orthoTop'] && this['_cache']['renderWidth'] === _0x47ed4b['getRenderWidth']() && this['_cache']['renderHeight'] === _0x47ed4b['getRenderHeight'](); } , _0x2ed7a4['prototype']['attachControl'] = function(_0x403d74, _0xb6feaa) {} , _0x2ed7a4['prototype']['detachControl'] = function(_0x22d2ae) {} , _0x2ed7a4['prototype']['update'] = function() { this['_checkInputs'](), this['cameraRigMode'] !== _0x2ed7a4['RIG_MODE_NONE'] && this['_updateRigCameras'](); } , _0x2ed7a4['prototype']['_checkInputs'] = function() { this['onAfterCheckInputsObservable']['notifyObservers'](this); } , Object['defineProperty'](_0x2ed7a4['prototype'], 'rigCameras', { 'get': function() { return this['_rigCameras']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ed7a4['prototype'], 'rigPostProcess', { 'get': function() { return this['_rigPostProcess']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2ed7a4['prototype']['_getFirstPostProcess'] = function() { for (var _0x1f2c78 = 0x0; _0x1f2c78 < this['_postProcesses']['length']; _0x1f2c78++) if (null !== this['_postProcesses'][_0x1f2c78]) return this['_postProcesses'][_0x1f2c78]; return null; } , _0x2ed7a4['prototype']['_cascadePostProcessesToRigCams'] = function() { var _0x5dc854 = this['_getFirstPostProcess'](); _0x5dc854 && _0x5dc854['markTextureDirty'](); for (var _0x276d6c = 0x0, _0x1632a2 = this['_rigCameras']['length']; _0x276d6c < _0x1632a2; _0x276d6c++) { var _0x459704 = this['_rigCameras'][_0x276d6c] , _0x22d099 = _0x459704['_rigPostProcess']; if (_0x22d099) 'pass' === _0x22d099['getEffectName']() && (_0x459704['isIntermediate'] = 0x0 === this['_postProcesses']['length']), _0x459704['_postProcesses'] = this['_postProcesses']['slice'](0x0)['concat'](_0x22d099), _0x22d099['markTextureDirty'](); else _0x459704['_postProcesses'] = this['_postProcesses']['slice'](0x0); } } , _0x2ed7a4['prototype']['attachPostProcess'] = function(_0x1f58b1, _0x142e50) { return void 0x0 === _0x142e50 && (_0x142e50 = null), !_0x1f58b1['isReusable']() && this['_postProcesses']['indexOf'](_0x1f58b1) > -0x1 ? (_0x277173['a']['Error']('You\x27re\x20trying\x20to\x20reuse\x20a\x20post\x20process\x20not\x20defined\x20as\x20reusable.'), 0x0) : (null == _0x142e50 || _0x142e50 < 0x0 ? this['_postProcesses']['push'](_0x1f58b1) : null === this['_postProcesses'][_0x142e50] ? this['_postProcesses'][_0x142e50] = _0x1f58b1 : this['_postProcesses']['splice'](_0x142e50, 0x0, _0x1f58b1), this['_cascadePostProcessesToRigCams'](), this['_postProcesses']['indexOf'](_0x1f58b1)); } , _0x2ed7a4['prototype']['detachPostProcess'] = function(_0x46592a) { var _0x26bfbe = this['_postProcesses']['indexOf'](_0x46592a); -0x1 !== _0x26bfbe && (this['_postProcesses'][_0x26bfbe] = null), this['_cascadePostProcessesToRigCams'](); } , _0x2ed7a4['prototype']['getWorldMatrix'] = function() { return this['_isSynchronizedViewMatrix']() ? this['_worldMatrix'] : (this['getViewMatrix'](), this['_worldMatrix']); } , _0x2ed7a4['prototype']['_getViewMatrix'] = function() { return _0x27d89b['j']['Identity'](); } , _0x2ed7a4['prototype']['getViewMatrix'] = function(_0x15f008) { return !_0x15f008 && this['_isSynchronizedViewMatrix']() ? this['_computedViewMatrix'] : (this['updateCache'](), this['_computedViewMatrix'] = this['_getViewMatrix'](), this['_currentRenderId'] = this['getScene']()['getRenderId'](), this['_childUpdateId']++, this['_refreshFrustumPlanes'] = !0x0, this['_cameraRigParams'] && this['_cameraRigParams']['vrPreViewMatrix'] && this['_computedViewMatrix']['multiplyToRef'](this['_cameraRigParams']['vrPreViewMatrix'], this['_computedViewMatrix']), this['parent'] && this['parent']['onViewMatrixChangedObservable'] && this['parent']['onViewMatrixChangedObservable']['notifyObservers'](this['parent']), this['onViewMatrixChangedObservable']['notifyObservers'](this), this['_computedViewMatrix']['invertToRef'](this['_worldMatrix']), this['_computedViewMatrix']); } , _0x2ed7a4['prototype']['freezeProjectionMatrix'] = function(_0x4405e1) { this['_doNotComputeProjectionMatrix'] = !0x0, void 0x0 !== _0x4405e1 && (this['_projectionMatrix'] = _0x4405e1); } , _0x2ed7a4['prototype']['unfreezeProjectionMatrix'] = function() { this['_doNotComputeProjectionMatrix'] = !0x1; } , _0x2ed7a4['prototype']['getProjectionMatrix'] = function(_0x284db8) { if (this['_doNotComputeProjectionMatrix'] || !_0x284db8 && this['_isSynchronizedProjectionMatrix']()) return this['_projectionMatrix']; this['_cache']['mode'] = this['mode'], this['_cache']['minZ'] = this['minZ'], this['_cache']['maxZ'] = this['maxZ'], this['_refreshFrustumPlanes'] = !0x0; var _0x5013cb = this['getEngine']() , _0xda2f10 = this['getScene'](); if (this['mode'] === _0x2ed7a4['PERSPECTIVE_CAMERA']) this['_cache']['fov'] = this['fov'], this['_cache']['fovMode'] = this['fovMode'], this['_cache']['aspectRatio'] = _0x5013cb['getAspectRatio'](this), this['minZ'] <= 0x0 && (this['minZ'] = 0.1), _0xda2f10['useRightHandedSystem'] ? _0x27d89b['j']['PerspectiveFovRHToRef'](this['fov'], _0x5013cb['getAspectRatio'](this), this['minZ'], this['maxZ'], this['_projectionMatrix'], this['fovMode'] === _0x2ed7a4['FOVMODE_VERTICAL_FIXED']) : _0x27d89b['j']['PerspectiveFovLHToRef'](this['fov'], _0x5013cb['getAspectRatio'](this), this['minZ'], this['maxZ'], this['_projectionMatrix'], this['fovMode'] === _0x2ed7a4['FOVMODE_VERTICAL_FIXED']); else { var _0x116954 = _0x5013cb['getRenderWidth']() / 0x2 , _0x313497 = _0x5013cb['getRenderHeight']() / 0x2; _0xda2f10['useRightHandedSystem'] ? _0x27d89b['j']['OrthoOffCenterRHToRef'](this['orthoLeft'] || -_0x116954, this['orthoRight'] || _0x116954, this['orthoBottom'] || -_0x313497, this['orthoTop'] || _0x313497, this['minZ'], this['maxZ'], this['_projectionMatrix']) : _0x27d89b['j']['OrthoOffCenterLHToRef'](this['orthoLeft'] || -_0x116954, this['orthoRight'] || _0x116954, this['orthoBottom'] || -_0x313497, this['orthoTop'] || _0x313497, this['minZ'], this['maxZ'], this['_projectionMatrix']), this['_cache']['orthoLeft'] = this['orthoLeft'], this['_cache']['orthoRight'] = this['orthoRight'], this['_cache']['orthoBottom'] = this['orthoBottom'], this['_cache']['orthoTop'] = this['orthoTop'], this['_cache']['renderWidth'] = _0x5013cb['getRenderWidth'](), this['_cache']['renderHeight'] = _0x5013cb['getRenderHeight'](); } return this['onProjectionMatrixChangedObservable']['notifyObservers'](this), this['_projectionMatrix']; } , _0x2ed7a4['prototype']['getTransformationMatrix'] = function() { return this['_computedViewMatrix']['multiplyToRef'](this['_projectionMatrix'], this['_transformMatrix']), this['_transformMatrix']; } , _0x2ed7a4['prototype']['_updateFrustumPlanes'] = function() { this['_refreshFrustumPlanes'] && (this['getTransformationMatrix'](), this['_frustumPlanes'] ? _0x27d89b['i']['GetPlanesToRef'](this['_transformMatrix'], this['_frustumPlanes']) : this['_frustumPlanes'] = _0x27d89b['i']['GetPlanes'](this['_transformMatrix']), this['_refreshFrustumPlanes'] = !0x1); } , _0x2ed7a4['prototype']['isInFrustum'] = function(_0x2567fe, _0x32fa86) { if (void 0x0 === _0x32fa86 && (_0x32fa86 = !0x1), this['_updateFrustumPlanes'](), _0x32fa86 && this['rigCameras']['length'] > 0x0) { var _0x11584b = !0x1; return this['rigCameras']['forEach'](function(_0x6fbb74) { _0x6fbb74['_updateFrustumPlanes'](), _0x11584b = _0x11584b || _0x2567fe['isInFrustum'](_0x6fbb74['_frustumPlanes']); }), _0x11584b; } return _0x2567fe['isInFrustum'](this['_frustumPlanes']); } , _0x2ed7a4['prototype']['isCompletelyInFrustum'] = function(_0x3d9717) { return this['_updateFrustumPlanes'](), _0x3d9717['isCompletelyInFrustum'](this['_frustumPlanes']); } , _0x2ed7a4['prototype']['getForwardRay'] = function(_0x3d9dcc, _0x5cedc3, _0x54320e) { throw void 0x0 === _0x3d9dcc && (_0x3d9dcc = 0x64), _0x173689['a']['WarnImport']('Ray'); } , _0x2ed7a4['prototype']['dispose'] = function(_0x587048, _0x51be17) { for (void 0x0 === _0x51be17 && (_0x51be17 = !0x1), this['onViewMatrixChangedObservable']['clear'](), this['onProjectionMatrixChangedObservable']['clear'](), this['onAfterCheckInputsObservable']['clear'](), this['onRestoreStateObservable']['clear'](), this['inputs'] && this['inputs']['clear'](), this['getScene']()['stopAnimation'](this), this['getScene']()['removeCamera'](this); this['_rigCameras']['length'] > 0x0; ) { var _0x418467 = this['_rigCameras']['pop'](); _0x418467 && _0x418467['dispose'](); } if (this['_rigPostProcess']) this['_rigPostProcess']['dispose'](this), this['_rigPostProcess'] = null, this['_postProcesses'] = []; else if (this['cameraRigMode'] !== _0x2ed7a4['RIG_MODE_NONE']) this['_rigPostProcess'] = null, this['_postProcesses'] = []; else for (var _0x371928 = this['_postProcesses']['length']; --_0x371928 >= 0x0; ) { var _0x128d2a = this['_postProcesses'][_0x371928]; _0x128d2a && _0x128d2a['dispose'](this); } for (_0x371928 = this['customRenderTargets']['length']; --_0x371928 >= 0x0; ) this['customRenderTargets'][_0x371928]['dispose'](); this['customRenderTargets'] = [], this['_activeMeshes']['dispose'](), _0x2e66fe['prototype']['dispose']['call'](this, _0x587048, _0x51be17); } , Object['defineProperty'](_0x2ed7a4['prototype'], 'isLeftCamera', { 'get': function() { return this['_isLeftCamera']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ed7a4['prototype'], 'isRightCamera', { 'get': function() { return this['_isRightCamera']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ed7a4['prototype'], 'leftCamera', { 'get': function() { return this['_rigCameras']['length'] < 0x1 ? null : this['_rigCameras'][0x0]; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ed7a4['prototype'], 'rightCamera', { 'get': function() { return this['_rigCameras']['length'] < 0x2 ? null : this['_rigCameras'][0x1]; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2ed7a4['prototype']['getLeftTarget'] = function() { return this['_rigCameras']['length'] < 0x1 ? null : this['_rigCameras'][0x0]['getTarget'](); } , _0x2ed7a4['prototype']['getRightTarget'] = function() { return this['_rigCameras']['length'] < 0x2 ? null : this['_rigCameras'][0x1]['getTarget'](); } , _0x2ed7a4['prototype']['setCameraRigMode'] = function(_0xf76802, _0x1fd8a0) { if (this['cameraRigMode'] !== _0xf76802) { for (; this['_rigCameras']['length'] > 0x0; ) { var _0x21d6b5 = this['_rigCameras']['pop'](); _0x21d6b5 && _0x21d6b5['dispose'](); } if (this['cameraRigMode'] = _0xf76802, this['_cameraRigParams'] = {}, this['_cameraRigParams']['interaxialDistance'] = _0x1fd8a0['interaxialDistance'] || 0.0637, this['_cameraRigParams']['stereoHalfAngle'] = _0x52bf7a['h']['ToRadians'](this['_cameraRigParams']['interaxialDistance'] / 0.0637), this['cameraRigMode'] !== _0x2ed7a4['RIG_MODE_NONE']) { var _0x1978df = this['createRigCamera'](this['name'] + '_L', 0x0); _0x1978df && (_0x1978df['_isLeftCamera'] = !0x0); var _0x59fcfd = this['createRigCamera'](this['name'] + '_R', 0x1); _0x59fcfd && (_0x59fcfd['_isRightCamera'] = !0x0), _0x1978df && _0x59fcfd && (this['_rigCameras']['push'](_0x1978df), this['_rigCameras']['push'](_0x59fcfd)); } switch (this['cameraRigMode']) { case _0x2ed7a4['RIG_MODE_STEREOSCOPIC_ANAGLYPH']: _0x2ed7a4['_setStereoscopicAnaglyphRigMode'](this); break; case _0x2ed7a4['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL']: case _0x2ed7a4['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED']: case _0x2ed7a4['RIG_MODE_STEREOSCOPIC_OVERUNDER']: _0x2ed7a4['_setStereoscopicRigMode'](this); break; case _0x2ed7a4['RIG_MODE_VR']: _0x2ed7a4['_setVRRigMode'](this, _0x1fd8a0); break; case _0x2ed7a4['RIG_MODE_WEBVR']: _0x2ed7a4['_setWebVRRigMode'](this, _0x1fd8a0); } this['_cascadePostProcessesToRigCams'](), this['update'](); } } , _0x2ed7a4['_setStereoscopicRigMode'] = function(_0x5a593e) { throw 'Import\x20Cameras/RigModes/stereoscopicRigMode\x20before\x20using\x20stereoscopic\x20rig\x20mode'; } , _0x2ed7a4['_setStereoscopicAnaglyphRigMode'] = function(_0xd097cf) { throw 'Import\x20Cameras/RigModes/stereoscopicAnaglyphRigMode\x20before\x20using\x20stereoscopic\x20anaglyph\x20rig\x20mode'; } , _0x2ed7a4['_setVRRigMode'] = function(_0x209150, _0x556d15) { throw 'Import\x20Cameras/RigModes/vrRigMode\x20before\x20using\x20VR\x20rig\x20mode'; } , _0x2ed7a4['_setWebVRRigMode'] = function(_0x4a1459, _0x5921e9) { throw 'Import\x20Cameras/RigModes/WebVRRigMode\x20before\x20using\x20Web\x20VR\x20rig\x20mode'; } , _0x2ed7a4['prototype']['_getVRProjectionMatrix'] = function() { return _0x27d89b['j']['PerspectiveFovLHToRef'](this['_cameraRigParams']['vrMetrics']['aspectRatioFov'], this['_cameraRigParams']['vrMetrics']['aspectRatio'], this['minZ'], this['maxZ'], this['_cameraRigParams']['vrWorkMatrix']), this['_cameraRigParams']['vrWorkMatrix']['multiplyToRef'](this['_cameraRigParams']['vrHMatrix'], this['_projectionMatrix']), this['_projectionMatrix']; } , _0x2ed7a4['prototype']['_updateCameraRotationMatrix'] = function() {} , _0x2ed7a4['prototype']['_updateWebVRCameraRotationMatrix'] = function() {} , _0x2ed7a4['prototype']['_getWebVRProjectionMatrix'] = function() { return _0x27d89b['j']['Identity'](); } , _0x2ed7a4['prototype']['_getWebVRViewMatrix'] = function() { return _0x27d89b['j']['Identity'](); } , _0x2ed7a4['prototype']['setCameraRigParameter'] = function(_0x106265, _0x567ab3) { this['_cameraRigParams'] || (this['_cameraRigParams'] = {}), this['_cameraRigParams'][_0x106265] = _0x567ab3, 'interaxialDistance' === _0x106265 && (this['_cameraRigParams']['stereoHalfAngle'] = _0x52bf7a['h']['ToRadians'](_0x567ab3 / 0.0637)); } , _0x2ed7a4['prototype']['createRigCamera'] = function(_0x27d040, _0x5f57ba) { return null; } , _0x2ed7a4['prototype']['_updateRigCameras'] = function() { for (var _0x9fc240 = 0x0; _0x9fc240 < this['_rigCameras']['length']; _0x9fc240++) this['_rigCameras'][_0x9fc240]['minZ'] = this['minZ'], this['_rigCameras'][_0x9fc240]['maxZ'] = this['maxZ'], this['_rigCameras'][_0x9fc240]['fov'] = this['fov'], this['_rigCameras'][_0x9fc240]['upVector']['copyFrom'](this['upVector']); this['cameraRigMode'] === _0x2ed7a4['RIG_MODE_STEREOSCOPIC_ANAGLYPH'] && (this['_rigCameras'][0x0]['viewport'] = this['_rigCameras'][0x1]['viewport'] = this['viewport']); } , _0x2ed7a4['prototype']['_setupInputs'] = function() {} , _0x2ed7a4['prototype']['serialize'] = function() { var _0xb47c26 = _0xb244e9['a']['Serialize'](this); return _0xb47c26['type'] = this['getClassName'](), this['parent'] && (_0xb47c26['parentId'] = this['parent']['id']), this['inputs'] && this['inputs']['serialize'](_0xb47c26), _0xb244e9['a']['AppendSerializedAnimations'](this, _0xb47c26), _0xb47c26['ranges'] = this['serializeAnimationRanges'](), _0xb47c26; } , _0x2ed7a4['prototype']['clone'] = function(_0x56f95a) { return _0xb244e9['a']['Clone'](_0x2ed7a4['GetConstructorFromName'](this['getClassName'](), _0x56f95a, this['getScene'](), this['interaxialDistance'], this['isStereoscopicSideBySide']), this); } , _0x2ed7a4['prototype']['getDirection'] = function(_0x4b1fa9) { var _0x231eec = _0x27d89b['x']['Zero'](); return this['getDirectionToRef'](_0x4b1fa9, _0x231eec), _0x231eec; } , _0x2ed7a4['prototype']['getDirectionToRef'] = function(_0x175818, _0x5f3153) { _0x27d89b['x']['TransformNormalToRef'](_0x175818, this['getWorldMatrix'](), _0x5f3153); } , _0x2ed7a4['GetConstructorFromName'] = function(_0x4a87bb, _0x1bfbdb, _0x10afc0, _0x1dfa85, _0x5b7337) { void 0x0 === _0x1dfa85 && (_0x1dfa85 = 0x0), void 0x0 === _0x5b7337 && (_0x5b7337 = !0x0); var _0x17ed2f = _0x3a00d8['a']['Construct'](_0x4a87bb, _0x1bfbdb, _0x10afc0, { 'interaxial_distance': _0x1dfa85, 'isStereoscopicSideBySide': _0x5b7337 }); return _0x17ed2f || function() { return _0x2ed7a4['_createDefaultParsedCamera'](_0x1bfbdb, _0x10afc0); } ; } , _0x2ed7a4['prototype']['computeWorldMatrix'] = function() { return this['getWorldMatrix'](); } , _0x2ed7a4['Parse'] = function(_0x35b9d0, _0x488762) { var _0x4871a6 = _0x35b9d0['type'] , _0x556a92 = _0x2ed7a4['GetConstructorFromName'](_0x4871a6, _0x35b9d0['name'], _0x488762, _0x35b9d0['interaxial_distance'], _0x35b9d0['isStereoscopicSideBySide']) , _0x5a08f8 = _0xb244e9['a']['Parse'](_0x556a92, _0x35b9d0, _0x488762); if (_0x35b9d0['parentId'] && (_0x5a08f8['_waitingParentId'] = _0x35b9d0['parentId']), _0x5a08f8['inputs'] && (_0x5a08f8['inputs']['parse'](_0x35b9d0), _0x5a08f8['_setupInputs']()), _0x5a08f8['setPosition'] && (_0x5a08f8['position']['copyFromFloats'](0x0, 0x0, 0x0), _0x5a08f8['setPosition'](_0x27d89b['x']['FromArray'](_0x35b9d0['position']))), _0x35b9d0['target'] && _0x5a08f8['setTarget'] && _0x5a08f8['setTarget'](_0x27d89b['x']['FromArray'](_0x35b9d0['target'])), _0x35b9d0['cameraRigMode']) { var _0x4dc2e8 = _0x35b9d0['interaxial_distance'] ? { 'interaxialDistance': _0x35b9d0['interaxial_distance'] } : {}; _0x5a08f8['setCameraRigMode'](_0x35b9d0['cameraRigMode'], _0x4dc2e8); } if (_0x35b9d0['animations']) { for (var _0x453834 = 0x0; _0x453834 < _0x35b9d0['animations']['length']; _0x453834++) { var _0x211f17 = _0x35b9d0['animations'][_0x453834] , _0x9abc81 = _0x2bbb26['a']['GetClass']('BABYLON.Animation'); _0x9abc81 && _0x5a08f8['animations']['push'](_0x9abc81['Parse'](_0x211f17)); } _0x3a00d8['a']['ParseAnimationRanges'](_0x5a08f8, _0x35b9d0, _0x488762); } return _0x35b9d0['autoAnimate'] && _0x488762['beginAnimation'](_0x5a08f8, _0x35b9d0['autoAnimateFrom'], _0x35b9d0['autoAnimateTo'], _0x35b9d0['autoAnimateLoop'], _0x35b9d0['autoAnimateSpeed'] || 0x1), _0x5a08f8; } , _0x2ed7a4['_createDefaultParsedCamera'] = function(_0x9c232d, _0x561570) { throw _0x173689['a']['WarnImport']('UniversalCamera'); } , _0x2ed7a4['PERSPECTIVE_CAMERA'] = 0x0, _0x2ed7a4['ORTHOGRAPHIC_CAMERA'] = 0x1, _0x2ed7a4['FOVMODE_VERTICAL_FIXED'] = 0x0, _0x2ed7a4['FOVMODE_HORIZONTAL_FIXED'] = 0x1, _0x2ed7a4['RIG_MODE_NONE'] = 0x0, _0x2ed7a4['RIG_MODE_STEREOSCOPIC_ANAGLYPH'] = 0xa, _0x2ed7a4['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL'] = 0xb, _0x2ed7a4['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED'] = 0xc, _0x2ed7a4['RIG_MODE_STEREOSCOPIC_OVERUNDER'] = 0xd, _0x2ed7a4['RIG_MODE_VR'] = 0x14, _0x2ed7a4['RIG_MODE_WEBVR'] = 0x15, _0x2ed7a4['RIG_MODE_CUSTOM'] = 0x16, _0x2ed7a4['ForceAttachControlToAlwaysPreventDefault'] = !0x1, _0xeec07b['c']([Object(_0xb244e9['o'])('position')], _0x2ed7a4['prototype'], '_position', void 0x0), _0xeec07b['c']([Object(_0xb244e9['o'])()], _0x2ed7a4['prototype'], 'upVector', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'orthoLeft', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'orthoRight', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'orthoBottom', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'orthoTop', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'fov', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'minZ', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'maxZ', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'inertia', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'mode', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'layerMask', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'fovMode', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'cameraRigMode', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'interaxialDistance', void 0x0), _0xeec07b['c']([Object(_0xb244e9['c'])()], _0x2ed7a4['prototype'], 'isStereoscopicSideBySide', void 0x0), _0x2ed7a4; }(_0x3a00d8['a']); } , function(_0x2d100f, _0x1827a8, _0x499fe4) { 'use strict'; _0x499fe4['d'](_0x1827a8, 'a', function() { return _0x462ca5; }); var _0x462ca5 = function() { function _0x518f54() {} return _0x518f54['GetClass'] = function(_0x455f94) { return this['RegisteredTypes'] && this['RegisteredTypes'][_0x455f94] ? this['RegisteredTypes'][_0x455f94] : null; } , _0x518f54['RegisteredTypes'] = {}, _0x518f54; }(); } , function(_0x575388, _0x1afc90, _0x1d8def) { 'use strict'; _0x1d8def['d'](_0x1afc90, 'a', function() { return _0x31cfed; }); var _0x31cfed = function() { function _0xb97779() {} return Object['defineProperty'](_0xb97779, 'LastCreatedEngine', { 'get': function() { return 0x0 === this['Instances']['length'] ? null : this['Instances'][this['Instances']['length'] - 0x1]; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xb97779, 'LastCreatedScene', { 'get': function() { return this['_LastCreatedScene']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xb97779['Instances'] = new Array(), _0xb97779['_LastCreatedScene'] = null, _0xb97779; }(); } , function(_0x4515e5, _0x140dc9, _0x226938) { 'use strict'; _0x226938['d'](_0x140dc9, 'a', function() { return _0x257627; }); var _0x45675a = _0x226938(0x1) , _0x158771 = _0x226938(0x9) , _0x2e0b35 = _0x226938(0x8) , _0x1c1a2d = _0x226938(0x0) , _0x1eb61b = _0x226938(0xa) , _0x29a09a = _0x226938(0x4) , _0x5e0573 = _0x226938(0xd) , _0x357ffd = _0x226938(0x2a) , _0x3c318c = _0x226938(0x32) , _0x1e2c8b = _0x226938(0x2b) , _0x5b10f9 = _0x226938(0x3) , _0x3fcd65 = _0x226938(0x6c) , _0x4d6603 = _0x226938(0x13) , _0x51b70f = function() { return function() { this['facetNb'] = 0x0, this['partitioningSubdivisions'] = 0xa, this['partitioningBBoxRatio'] = 1.01, this['facetDataEnabled'] = !0x1, this['facetParameters'] = {}, this['bbSize'] = _0x1c1a2d['x']['Zero'](), this['subDiv'] = { 'max': 0x1, 'X': 0x1, 'Y': 0x1, 'Z': 0x1 }, this['facetDepthSort'] = !0x1, this['facetDepthSortEnabled'] = !0x1; } ; }() , _0x535630 = function() { return function() { this['_hasVertexAlpha'] = !0x1, this['_useVertexColors'] = !0x0, this['_numBoneInfluencers'] = 0x4, this['_applyFog'] = !0x0, this['_receiveShadows'] = !0x1, this['_facetData'] = new _0x51b70f(), this['_visibility'] = 0x1, this['_skeleton'] = null, this['_layerMask'] = 0xfffffff, this['_computeBonesUsingShaders'] = !0x0, this['_isActive'] = !0x1, this['_onlyForInstances'] = !0x1, this['_isActiveIntermediate'] = !0x1, this['_onlyForInstancesIntermediate'] = !0x1; } ; }() , _0x257627 = function(_0x26f76a) { function _0x42252a(_0x319a75, _0x3b9539) { void 0x0 === _0x3b9539 && (_0x3b9539 = null); var _0x9829f1 = _0x26f76a['call'](this, _0x319a75, _0x3b9539, !0x1) || this; return _0x9829f1['_internalAbstractMeshDataInfo'] = new _0x535630(), _0x9829f1['cullingStrategy'] = _0x42252a['CULLINGSTRATEGY_STANDARD'], _0x9829f1['onCollideObservable'] = new _0x2e0b35['c'](), _0x9829f1['onCollisionPositionChangeObservable'] = new _0x2e0b35['c'](), _0x9829f1['onMaterialChangedObservable'] = new _0x2e0b35['c'](), _0x9829f1['definedFacingForward'] = !0x0, _0x9829f1['_occlusionQuery'] = null, _0x9829f1['_renderingGroup'] = null, _0x9829f1['alphaIndex'] = Number['MAX_VALUE'], _0x9829f1['isVisible'] = !0x0, _0x9829f1['isPickable'] = !0x0, _0x9829f1['showSubMeshesBoundingBox'] = !0x1, _0x9829f1['isBlocker'] = !0x1, _0x9829f1['enablePointerMoveEvents'] = !0x1, _0x9829f1['renderingGroupId'] = 0x0, _0x9829f1['_material'] = null, _0x9829f1['outlineColor'] = _0x1c1a2d['e']['Red'](), _0x9829f1['outlineWidth'] = 0.02, _0x9829f1['overlayColor'] = _0x1c1a2d['e']['Red'](), _0x9829f1['overlayAlpha'] = 0.5, _0x9829f1['useOctreeForRenderingSelection'] = !0x0, _0x9829f1['useOctreeForPicking'] = !0x0, _0x9829f1['useOctreeForCollisions'] = !0x0, _0x9829f1['alwaysSelectAsActiveMesh'] = !0x1, _0x9829f1['doNotSyncBoundingInfo'] = !0x1, _0x9829f1['actionManager'] = null, _0x9829f1['_meshCollisionData'] = new _0x3fcd65['a'](), _0x9829f1['ellipsoid'] = new _0x1c1a2d['x'](0.5,0x1,0.5), _0x9829f1['ellipsoidOffset'] = new _0x1c1a2d['x'](0x0,0x0,0x0), _0x9829f1['edgesWidth'] = 0x1, _0x9829f1['edgesColor'] = new _0x1c1a2d['f'](0x1,0x0,0x0,0x1), _0x9829f1['_edgesRenderer'] = null, _0x9829f1['_masterMesh'] = null, _0x9829f1['_boundingInfo'] = null, _0x9829f1['_renderId'] = 0x0, _0x9829f1['_intersectionsInProgress'] = new Array(), _0x9829f1['_unIndexed'] = !0x1, _0x9829f1['_lightSources'] = new Array(), _0x9829f1['_waitingData'] = { 'lods': null, 'actions': null, 'freezeWorldMatrix': null }, _0x9829f1['_bonesTransformMatrices'] = null, _0x9829f1['onRebuildObservable'] = new _0x2e0b35['c'](), _0x9829f1['_onCollisionPositionChange'] = function(_0x5b614a, _0x59bc13, _0x4f45d5) { void 0x0 === _0x4f45d5 && (_0x4f45d5 = null), _0x59bc13['subtractToRef'](_0x9829f1['_meshCollisionData']['_oldPositionForCollisions'], _0x9829f1['_meshCollisionData']['_diffPositionForCollisions']), _0x9829f1['_meshCollisionData']['_diffPositionForCollisions']['length']() > _0x1eb61b['b']['CollisionsEpsilon'] && _0x9829f1['position']['addInPlace'](_0x9829f1['_meshCollisionData']['_diffPositionForCollisions']), _0x4f45d5 && _0x9829f1['onCollideObservable']['notifyObservers'](_0x4f45d5), _0x9829f1['onCollisionPositionChangeObservable']['notifyObservers'](_0x9829f1['position']); } , _0x9829f1['getScene']()['addMesh'](_0x9829f1), _0x9829f1['_resyncLightSources'](), _0x9829f1; } return _0x45675a['d'](_0x42252a, _0x26f76a), Object['defineProperty'](_0x42252a, 'BILLBOARDMODE_NONE', { 'get': function() { return _0x357ffd['a']['BILLBOARDMODE_NONE']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a, 'BILLBOARDMODE_X', { 'get': function() { return _0x357ffd['a']['BILLBOARDMODE_X']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a, 'BILLBOARDMODE_Y', { 'get': function() { return _0x357ffd['a']['BILLBOARDMODE_Y']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a, 'BILLBOARDMODE_Z', { 'get': function() { return _0x357ffd['a']['BILLBOARDMODE_Z']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a, 'BILLBOARDMODE_ALL', { 'get': function() { return _0x357ffd['a']['BILLBOARDMODE_ALL']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'facetNb', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_facetData']['facetNb']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'partitioningSubdivisions', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_facetData']['partitioningSubdivisions']; }, 'set': function(_0x5226a3) { this['_internalAbstractMeshDataInfo']['_facetData']['partitioningSubdivisions'] = _0x5226a3; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'partitioningBBoxRatio', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_facetData']['partitioningBBoxRatio']; }, 'set': function(_0x110ceb) { this['_internalAbstractMeshDataInfo']['_facetData']['partitioningBBoxRatio'] = _0x110ceb; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'mustDepthSortFacets', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_facetData']['facetDepthSort']; }, 'set': function(_0x266967) { this['_internalAbstractMeshDataInfo']['_facetData']['facetDepthSort'] = _0x266967; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'facetDepthSortFrom', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_facetData']['facetDepthSortFrom']; }, 'set': function(_0x3b9bcd) { this['_internalAbstractMeshDataInfo']['_facetData']['facetDepthSortFrom'] = _0x3b9bcd; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'isFacetDataEnabled', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_facetData']['facetDataEnabled']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x42252a['prototype']['_updateNonUniformScalingState'] = function(_0xa0b83c) { return !!_0x26f76a['prototype']['_updateNonUniformScalingState']['call'](this, _0xa0b83c) && (this['_markSubMeshesAsMiscDirty'](), !0x0); } , Object['defineProperty'](_0x42252a['prototype'], 'onCollide', { 'set': function(_0x56b125) { this['_meshCollisionData']['_onCollideObserver'] && this['onCollideObservable']['remove'](this['_meshCollisionData']['_onCollideObserver']), this['_meshCollisionData']['_onCollideObserver'] = this['onCollideObservable']['add'](_0x56b125); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'onCollisionPositionChange', { 'set': function(_0xf301bb) { this['_meshCollisionData']['_onCollisionPositionChangeObserver'] && this['onCollisionPositionChangeObservable']['remove'](this['_meshCollisionData']['_onCollisionPositionChangeObserver']), this['_meshCollisionData']['_onCollisionPositionChangeObserver'] = this['onCollisionPositionChangeObservable']['add'](_0xf301bb); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'visibility', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_visibility']; }, 'set': function(_0x6edc59) { this['_internalAbstractMeshDataInfo']['_visibility'] !== _0x6edc59 && (this['_internalAbstractMeshDataInfo']['_visibility'] = _0x6edc59, this['_markSubMeshesAsMiscDirty']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'material', { 'get': function() { return this['_material']; }, 'set': function(_0x5c77b1) { this['_material'] !== _0x5c77b1 && (this['_material'] && this['_material']['meshMap'] && (this['_material']['meshMap'][this['uniqueId']] = void 0x0), this['_material'] = _0x5c77b1, _0x5c77b1 && _0x5c77b1['meshMap'] && (_0x5c77b1['meshMap'][this['uniqueId']] = this), this['onMaterialChangedObservable']['hasObservers'] && this['onMaterialChangedObservable']['notifyObservers'](this), this['subMeshes'] && this['_unBindEffect']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'receiveShadows', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_receiveShadows']; }, 'set': function(_0x1c4326) { this['_internalAbstractMeshDataInfo']['_receiveShadows'] !== _0x1c4326 && (this['_internalAbstractMeshDataInfo']['_receiveShadows'] = _0x1c4326, this['_markSubMeshesAsLightDirty']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'hasVertexAlpha', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_hasVertexAlpha']; }, 'set': function(_0x20a7be) { this['_internalAbstractMeshDataInfo']['_hasVertexAlpha'] !== _0x20a7be && (this['_internalAbstractMeshDataInfo']['_hasVertexAlpha'] = _0x20a7be, this['_markSubMeshesAsAttributesDirty'](), this['_markSubMeshesAsMiscDirty']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'useVertexColors', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_useVertexColors']; }, 'set': function(_0x43c303) { this['_internalAbstractMeshDataInfo']['_useVertexColors'] !== _0x43c303 && (this['_internalAbstractMeshDataInfo']['_useVertexColors'] = _0x43c303, this['_markSubMeshesAsAttributesDirty']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'computeBonesUsingShaders', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_computeBonesUsingShaders']; }, 'set': function(_0x56bf88) { this['_internalAbstractMeshDataInfo']['_computeBonesUsingShaders'] !== _0x56bf88 && (this['_internalAbstractMeshDataInfo']['_computeBonesUsingShaders'] = _0x56bf88, this['_markSubMeshesAsAttributesDirty']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'numBoneInfluencers', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_numBoneInfluencers']; }, 'set': function(_0xf24231) { this['_internalAbstractMeshDataInfo']['_numBoneInfluencers'] !== _0xf24231 && (this['_internalAbstractMeshDataInfo']['_numBoneInfluencers'] = _0xf24231, this['_markSubMeshesAsAttributesDirty']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'applyFog', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_applyFog']; }, 'set': function(_0x12d49f) { this['_internalAbstractMeshDataInfo']['_applyFog'] !== _0x12d49f && (this['_internalAbstractMeshDataInfo']['_applyFog'] = _0x12d49f, this['_markSubMeshesAsMiscDirty']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'layerMask', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_layerMask']; }, 'set': function(_0x889c72) { _0x889c72 !== this['_internalAbstractMeshDataInfo']['_layerMask'] && (this['_internalAbstractMeshDataInfo']['_layerMask'] = _0x889c72, this['_resyncLightSources']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'collisionMask', { 'get': function() { return this['_meshCollisionData']['_collisionMask']; }, 'set': function(_0x384e32) { this['_meshCollisionData']['_collisionMask'] = isNaN(_0x384e32) ? -0x1 : _0x384e32; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'collisionGroup', { 'get': function() { return this['_meshCollisionData']['_collisionGroup']; }, 'set': function(_0x406c1b) { this['_meshCollisionData']['_collisionGroup'] = isNaN(_0x406c1b) ? -0x1 : _0x406c1b; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'lightSources', { 'get': function() { return this['_lightSources']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], '_positions', { 'get': function() { return null; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'skeleton', { 'get': function() { return this['_internalAbstractMeshDataInfo']['_skeleton']; }, 'set': function(_0xa11d8f) { var _0x7289c4 = this['_internalAbstractMeshDataInfo']['_skeleton']; _0x7289c4 && _0x7289c4['needInitialSkinMatrix'] && _0x7289c4['_unregisterMeshWithPoseMatrix'](this), _0xa11d8f && _0xa11d8f['needInitialSkinMatrix'] && _0xa11d8f['_registerMeshWithPoseMatrix'](this), this['_internalAbstractMeshDataInfo']['_skeleton'] = _0xa11d8f, this['_internalAbstractMeshDataInfo']['_skeleton'] || (this['_bonesTransformMatrices'] = null), this['_markSubMeshesAsAttributesDirty'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x42252a['prototype']['getClassName'] = function() { return 'AbstractMesh'; } , _0x42252a['prototype']['toString'] = function(_0xa7ba14) { var _0x418c42 = 'Name:\x20' + this['name'] + ',\x20isInstance:\x20' + ('InstancedMesh' !== this['getClassName']() ? 'YES' : 'NO'); _0x418c42 += ',\x20#\x20of\x20submeshes:\x20' + (this['subMeshes'] ? this['subMeshes']['length'] : 0x0); var _0x403607 = this['_internalAbstractMeshDataInfo']['_skeleton']; return _0x403607 && (_0x418c42 += ',\x20skeleton:\x20' + _0x403607['name']), _0xa7ba14 && (_0x418c42 += ',\x20billboard\x20mode:\x20' + ['NONE', 'X', 'Y', null, 'Z', null, null, 'ALL'][this['billboardMode']], _0x418c42 += ',\x20freeze\x20wrld\x20mat:\x20' + (this['_isWorldMatrixFrozen'] || this['_waitingData']['freezeWorldMatrix'] ? 'YES' : 'NO')), _0x418c42; } , _0x42252a['prototype']['_getEffectiveParent'] = function() { return this['_masterMesh'] && this['billboardMode'] !== _0x357ffd['a']['BILLBOARDMODE_NONE'] ? this['_masterMesh'] : _0x26f76a['prototype']['_getEffectiveParent']['call'](this); } , _0x42252a['prototype']['_getActionManagerForTrigger'] = function(_0x3f0a8d, _0x4ea6ec) { if (void 0x0 === _0x4ea6ec && (_0x4ea6ec = !0x0), this['actionManager'] && (_0x4ea6ec || this['actionManager']['isRecursive'])) { if (!_0x3f0a8d) return this['actionManager']; if (this['actionManager']['hasSpecificTrigger'](_0x3f0a8d)) return this['actionManager']; } return this['parent'] ? this['parent']['_getActionManagerForTrigger'](_0x3f0a8d, !0x1) : null; } , _0x42252a['prototype']['_rebuild'] = function() { if (this['onRebuildObservable']['notifyObservers'](this), this['_occlusionQuery'] && (this['_occlusionQuery'] = null), this['subMeshes']) for (var _0x1dbbe4 = 0x0, _0x42d0a9 = this['subMeshes']; _0x1dbbe4 < _0x42d0a9['length']; _0x1dbbe4++) { _0x42d0a9[_0x1dbbe4]['_rebuild'](); } } , _0x42252a['prototype']['_resyncLightSources'] = function() { this['_lightSources']['length'] = 0x0; for (var _0x418824 = 0x0, _0x4b1bfc = this['getScene']()['lights']; _0x418824 < _0x4b1bfc['length']; _0x418824++) { var _0x4fa114 = _0x4b1bfc[_0x418824]; _0x4fa114['isEnabled']() && (_0x4fa114['canAffectMesh'](this) && this['_lightSources']['push'](_0x4fa114)); } this['_markSubMeshesAsLightDirty'](); } , _0x42252a['prototype']['_resyncLighSource'] = function(_0x3b3a21) { var _0x1ed943 = _0x3b3a21['isEnabled']() && _0x3b3a21['canAffectMesh'](this) , _0x2a33ec = this['_lightSources']['indexOf'](_0x3b3a21); if (-0x1 === _0x2a33ec) { if (!_0x1ed943) return; this['_lightSources']['push'](_0x3b3a21); } else { if (_0x1ed943) return; this['_lightSources']['splice'](_0x2a33ec, 0x1); } this['_markSubMeshesAsLightDirty'](); } , _0x42252a['prototype']['_unBindEffect'] = function() { for (var _0x1c3bd7 = 0x0, _0x21c0ab = this['subMeshes']; _0x1c3bd7 < _0x21c0ab['length']; _0x1c3bd7++) { _0x21c0ab[_0x1c3bd7]['setEffect'](null); } } , _0x42252a['prototype']['_removeLightSource'] = function(_0x562d45) { var _0xb0073d = this['_lightSources']['indexOf'](_0x562d45); -0x1 !== _0xb0073d && (this['_lightSources']['splice'](_0xb0073d, 0x1), this['_markSubMeshesAsLightDirty']()); } , _0x42252a['prototype']['_markSubMeshesAsDirty'] = function(_0x2aca18) { if (this['subMeshes']) for (var _0x346ea8 = 0x0, _0x62bc8f = this['subMeshes']; _0x346ea8 < _0x62bc8f['length']; _0x346ea8++) { var _0x1150f4 = _0x62bc8f[_0x346ea8]; _0x1150f4['_materialDefines'] && _0x2aca18(_0x1150f4['_materialDefines']); } } , _0x42252a['prototype']['_markSubMeshesAsLightDirty'] = function() { this['_markSubMeshesAsDirty'](function(_0x446560) { return _0x446560['markAsLightDirty'](); }); } , _0x42252a['prototype']['_markSubMeshesAsAttributesDirty'] = function() { this['_markSubMeshesAsDirty'](function(_0x14af8a) { return _0x14af8a['markAsAttributesDirty'](); }); } , _0x42252a['prototype']['_markSubMeshesAsMiscDirty'] = function() { if (this['subMeshes']) for (var _0x16be79 = 0x0, _0x4678e2 = this['subMeshes']; _0x16be79 < _0x4678e2['length']; _0x16be79++) { var _0x2584a9 = _0x4678e2[_0x16be79]['getMaterial'](); _0x2584a9 && _0x2584a9['markAsDirty'](_0x5b10f9['a']['MATERIAL_MiscDirtyFlag']); } } , Object['defineProperty'](_0x42252a['prototype'], 'scaling', { 'get': function() { return this['_scaling']; }, 'set': function(_0x5085e3) { this['_scaling'] = _0x5085e3, this['physicsImpostor'] && this['physicsImpostor']['forceUpdate'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'isBlocked', { 'get': function() { return !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x42252a['prototype']['getLOD'] = function(_0x1c4d21) { return this; } , _0x42252a['prototype']['getTotalVertices'] = function() { return 0x0; } , _0x42252a['prototype']['getTotalIndices'] = function() { return 0x0; } , _0x42252a['prototype']['getIndices'] = function() { return null; } , _0x42252a['prototype']['getVerticesData'] = function(_0x4224d0) { return null; } , _0x42252a['prototype']['setVerticesData'] = function(_0x2f46cb, _0x1aa505, _0x450df3, _0x31ee77) { return this; } , _0x42252a['prototype']['updateVerticesData'] = function(_0x21c1e4, _0x534e15, _0x38821e, _0x450c5f) { return this; } , _0x42252a['prototype']['setIndices'] = function(_0x34d2e1, _0x31ed69) { return this; } , _0x42252a['prototype']['isVerticesDataPresent'] = function(_0xd5e8ad) { return !0x1; } , _0x42252a['prototype']['getBoundingInfo'] = function() { return this['_masterMesh'] ? this['_masterMesh']['getBoundingInfo']() : (this['_boundingInfo'] || this['_updateBoundingInfo'](), this['_boundingInfo']); } , _0x42252a['prototype']['normalizeToUnitCube'] = function(_0x360c4a, _0x13d76f) { void 0x0 === _0x360c4a && (_0x360c4a = !0x0), void 0x0 === _0x13d76f && (_0x13d76f = !0x1); var _0x455649 = null , _0x3dce0b = null; _0x13d76f && (this['rotationQuaternion'] ? (_0x3dce0b = this['rotationQuaternion']['clone'](), this['rotationQuaternion']['copyFromFloats'](0x0, 0x0, 0x0, 0x1)) : this['rotation'] && (_0x455649 = this['rotation']['clone'](), this['rotation']['copyFromFloats'](0x0, 0x0, 0x0))); var _0x24f7db = this['getHierarchyBoundingVectors'](_0x360c4a) , _0xfe3cf = _0x24f7db['max']['subtract'](_0x24f7db['min']) , _0x357935 = Math['max'](_0xfe3cf['x'], _0xfe3cf['y'], _0xfe3cf['z']); if (0x0 === _0x357935) return this; var _0x20e348 = 0x1 / _0x357935; return this['scaling']['scaleInPlace'](_0x20e348), _0x13d76f && (this['rotationQuaternion'] && _0x3dce0b ? this['rotationQuaternion']['copyFrom'](_0x3dce0b) : this['rotation'] && _0x455649 && this['rotation']['copyFrom'](_0x455649)), this; } , _0x42252a['prototype']['setBoundingInfo'] = function(_0x4ad7c2) { return this['_boundingInfo'] = _0x4ad7c2, this; } , Object['defineProperty'](_0x42252a['prototype'], 'useBones', { 'get': function() { return this['skeleton'] && this['getScene']()['skeletonsEnabled'] && this['isVerticesDataPresent'](_0x29a09a['b']['MatricesIndicesKind']) && this['isVerticesDataPresent'](_0x29a09a['b']['MatricesWeightsKind']); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x42252a['prototype']['_preActivate'] = function() {} , _0x42252a['prototype']['_preActivateForIntermediateRendering'] = function(_0x17ef6e) {} , _0x42252a['prototype']['_activate'] = function(_0x447242, _0x3f3bdd) { return this['_renderId'] = _0x447242, !0x0; } , _0x42252a['prototype']['_postActivate'] = function() {} , _0x42252a['prototype']['_freeze'] = function() {} , _0x42252a['prototype']['_unFreeze'] = function() {} , _0x42252a['prototype']['getWorldMatrix'] = function() { return this['_masterMesh'] && this['billboardMode'] === _0x357ffd['a']['BILLBOARDMODE_NONE'] ? this['_masterMesh']['getWorldMatrix']() : _0x26f76a['prototype']['getWorldMatrix']['call'](this); } , _0x42252a['prototype']['_getWorldMatrixDeterminant'] = function() { return this['_masterMesh'] ? this['_masterMesh']['_getWorldMatrixDeterminant']() : _0x26f76a['prototype']['_getWorldMatrixDeterminant']['call'](this); } , Object['defineProperty'](_0x42252a['prototype'], 'isAnInstance', { 'get': function() { return !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x42252a['prototype']['movePOV'] = function(_0x4e90cc, _0x282929, _0x4b4a63) { return this['position']['addInPlace'](this['calcMovePOV'](_0x4e90cc, _0x282929, _0x4b4a63)), this; } , _0x42252a['prototype']['calcMovePOV'] = function(_0x16d24c, _0x4d7405, _0x1fc7ce) { var _0x5cc8d9 = new _0x1c1a2d['j'](); (this['rotationQuaternion'] ? this['rotationQuaternion'] : _0x1c1a2d['q']['RotationYawPitchRoll'](this['rotation']['y'], this['rotation']['x'], this['rotation']['z']))['toRotationMatrix'](_0x5cc8d9); var _0x5363f5 = _0x1c1a2d['x']['Zero']() , _0x3af500 = this['definedFacingForward'] ? -0x1 : 0x1; return _0x1c1a2d['x']['TransformCoordinatesFromFloatsToRef'](_0x16d24c * _0x3af500, _0x4d7405, _0x1fc7ce * _0x3af500, _0x5cc8d9, _0x5363f5), _0x5363f5; } , _0x42252a['prototype']['rotatePOV'] = function(_0x379330, _0xb37c7c, _0x592c9e) { return this['rotation']['addInPlace'](this['calcRotatePOV'](_0x379330, _0xb37c7c, _0x592c9e)), this; } , _0x42252a['prototype']['calcRotatePOV'] = function(_0x8719c5, _0x56643c, _0x44cd6b) { var _0x454234 = this['definedFacingForward'] ? 0x1 : -0x1; return new _0x1c1a2d['x'](_0x8719c5 * _0x454234,_0x56643c,_0x44cd6b * _0x454234); } , _0x42252a['prototype']['refreshBoundingInfo'] = function(_0x33c496) { return void 0x0 === _0x33c496 && (_0x33c496 = !0x1), this['_boundingInfo'] && this['_boundingInfo']['isLocked'] ? this : (this['_refreshBoundingInfo'](this['_getPositionData'](_0x33c496), null), this); } , _0x42252a['prototype']['_refreshBoundingInfo'] = function(_0x40ab30, _0x18e6bb) { if (_0x40ab30) { var _0xc44999 = _0x158771['h']['ExtractMinAndMax'](_0x40ab30, 0x0, this['getTotalVertices'](), _0x18e6bb); this['_boundingInfo'] ? this['_boundingInfo']['reConstruct'](_0xc44999['minimum'], _0xc44999['maximum']) : this['_boundingInfo'] = new _0x1e2c8b['a'](_0xc44999['minimum'],_0xc44999['maximum']); } if (this['subMeshes']) for (var _0x1b3f8f = 0x0; _0x1b3f8f < this['subMeshes']['length']; _0x1b3f8f++) this['subMeshes'][_0x1b3f8f]['refreshBoundingInfo'](_0x40ab30); this['_updateBoundingInfo'](); } , _0x42252a['prototype']['_getPositionData'] = function(_0x27d1af) { var _0x248441 = this['getVerticesData'](_0x29a09a['b']['PositionKind']); if (_0x248441 && _0x27d1af && this['skeleton']) { _0x248441 = _0x158771['h']['Slice'](_0x248441), this['_generatePointsArray'](); var _0x5e66e2 = this['getVerticesData'](_0x29a09a['b']['MatricesIndicesKind']) , _0x42dd4f = this['getVerticesData'](_0x29a09a['b']['MatricesWeightsKind']); if (_0x42dd4f && _0x5e66e2) { var _0x36a355 = this['numBoneInfluencers'] > 0x4 , _0x5e40b9 = _0x36a355 ? this['getVerticesData'](_0x29a09a['b']['MatricesIndicesExtraKind']) : null , _0x5201f0 = _0x36a355 ? this['getVerticesData'](_0x29a09a['b']['MatricesWeightsExtraKind']) : null; this['skeleton']['prepare'](); for (var _0x6767b1 = this['skeleton']['getTransformMatrices'](this), _0x4e34f3 = _0x1c1a2d['t']['Vector3'][0x0], _0x5010cc = _0x1c1a2d['t']['Matrix'][0x0], _0x59bf2e = _0x1c1a2d['t']['Matrix'][0x1], _0x4ce74c = 0x0, _0x580ef9 = 0x0; _0x580ef9 < _0x248441['length']; _0x580ef9 += 0x3, _0x4ce74c += 0x4) { var _0x5799f5, _0xc63395; for (_0x5010cc['reset'](), _0x5799f5 = 0x0; _0x5799f5 < 0x4; _0x5799f5++) (_0xc63395 = _0x42dd4f[_0x4ce74c + _0x5799f5]) > 0x0 && (_0x1c1a2d['j']['FromFloat32ArrayToRefScaled'](_0x6767b1, Math['floor'](0x10 * _0x5e66e2[_0x4ce74c + _0x5799f5]), _0xc63395, _0x59bf2e), _0x5010cc['addToSelf'](_0x59bf2e)); if (_0x36a355) for (_0x5799f5 = 0x0; _0x5799f5 < 0x4; _0x5799f5++) (_0xc63395 = _0x5201f0[_0x4ce74c + _0x5799f5]) > 0x0 && (_0x1c1a2d['j']['FromFloat32ArrayToRefScaled'](_0x6767b1, Math['floor'](0x10 * _0x5e40b9[_0x4ce74c + _0x5799f5]), _0xc63395, _0x59bf2e), _0x5010cc['addToSelf'](_0x59bf2e)); _0x1c1a2d['x']['TransformCoordinatesFromFloatsToRef'](_0x248441[_0x580ef9], _0x248441[_0x580ef9 + 0x1], _0x248441[_0x580ef9 + 0x2], _0x5010cc, _0x4e34f3), _0x4e34f3['toArray'](_0x248441, _0x580ef9), this['_positions'] && this['_positions'][_0x580ef9 / 0x3]['copyFrom'](_0x4e34f3); } } } return _0x248441; } , _0x42252a['prototype']['_updateBoundingInfo'] = function() { var _0x15c41d = this['_effectiveMesh']; return this['_boundingInfo'] ? this['_boundingInfo']['update'](_0x15c41d['worldMatrixFromCache']) : this['_boundingInfo'] = new _0x1e2c8b['a'](this['absolutePosition'],this['absolutePosition'],_0x15c41d['worldMatrixFromCache']), this['_updateSubMeshesBoundingInfo'](_0x15c41d['worldMatrixFromCache']), this; } , _0x42252a['prototype']['_updateSubMeshesBoundingInfo'] = function(_0xe0f5b1) { if (!this['subMeshes']) return this; for (var _0xd34218 = this['subMeshes']['length'], _0x501044 = 0x0; _0x501044 < _0xd34218; _0x501044++) { var _0x2b4f38 = this['subMeshes'][_0x501044]; (_0xd34218 > 0x1 || !_0x2b4f38['IsGlobal']) && _0x2b4f38['updateBoundingInfo'](_0xe0f5b1); } return this; } , _0x42252a['prototype']['_afterComputeWorldMatrix'] = function() { this['doNotSyncBoundingInfo'] || this['_updateBoundingInfo'](); } , Object['defineProperty'](_0x42252a['prototype'], '_effectiveMesh', { 'get': function() { return this['skeleton'] && this['skeleton']['overrideMesh'] || this; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x42252a['prototype']['isInFrustum'] = function(_0x7eb98b) { return null !== this['_boundingInfo'] && this['_boundingInfo']['isInFrustum'](_0x7eb98b, this['cullingStrategy']); } , _0x42252a['prototype']['isCompletelyInFrustum'] = function(_0x728460) { return null !== this['_boundingInfo'] && this['_boundingInfo']['isCompletelyInFrustum'](_0x728460); } , _0x42252a['prototype']['intersectsMesh'] = function(_0x36714e, _0x2d6cbe, _0x5ad9bf) { if (void 0x0 === _0x2d6cbe && (_0x2d6cbe = !0x1), !this['_boundingInfo'] || !_0x36714e['_boundingInfo']) return !0x1; if (this['_boundingInfo']['intersects'](_0x36714e['_boundingInfo'], _0x2d6cbe)) return !0x0; if (_0x5ad9bf) for (var _0x3c7eb4 = 0x0, _0x3e3596 = this['getChildMeshes'](); _0x3c7eb4 < _0x3e3596['length']; _0x3c7eb4++) { if (_0x3e3596[_0x3c7eb4]['intersectsMesh'](_0x36714e, _0x2d6cbe, !0x0)) return !0x0; } return !0x1; } , _0x42252a['prototype']['intersectsPoint'] = function(_0x46a671) { return !!this['_boundingInfo'] && this['_boundingInfo']['intersectsPoint'](_0x46a671); } , Object['defineProperty'](_0x42252a['prototype'], 'checkCollisions', { 'get': function() { return this['_meshCollisionData']['_checkCollisions']; }, 'set': function(_0x3fdd85) { this['_meshCollisionData']['_checkCollisions'] = _0x3fdd85; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x42252a['prototype'], 'collider', { 'get': function() { return this['_meshCollisionData']['_collider']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x42252a['prototype']['moveWithCollisions'] = function(_0x2e86d0) { this['getAbsolutePosition']()['addToRef'](this['ellipsoidOffset'], this['_meshCollisionData']['_oldPositionForCollisions']); var _0x28a0b4 = this['getScene']()['collisionCoordinator']; return this['_meshCollisionData']['_collider'] || (this['_meshCollisionData']['_collider'] = _0x28a0b4['createCollider']()), this['_meshCollisionData']['_collider']['_radius'] = this['ellipsoid'], _0x28a0b4['getNewPosition'](this['_meshCollisionData']['_oldPositionForCollisions'], _0x2e86d0, this['_meshCollisionData']['_collider'], 0x3, this, this['_onCollisionPositionChange'], this['uniqueId']), this; } , _0x42252a['prototype']['_collideForSubMesh'] = function(_0x3892a2, _0x50e871, _0x38bef8) { if (this['_generatePointsArray'](), !this['_positions']) return this; if (!_0x3892a2['_lastColliderWorldVertices'] || !_0x3892a2['_lastColliderTransformMatrix']['equals'](_0x50e871)) { _0x3892a2['_lastColliderTransformMatrix'] = _0x50e871['clone'](), _0x3892a2['_lastColliderWorldVertices'] = [], _0x3892a2['_trianglePlanes'] = []; for (var _0x5343df = _0x3892a2['verticesStart'], _0x5ec324 = _0x3892a2['verticesStart'] + _0x3892a2['verticesCount'], _0x349f3b = _0x5343df; _0x349f3b < _0x5ec324; _0x349f3b++) _0x3892a2['_lastColliderWorldVertices']['push'](_0x1c1a2d['x']['TransformCoordinates'](this['_positions'][_0x349f3b], _0x50e871)); } return _0x38bef8['_collide'](_0x3892a2['_trianglePlanes'], _0x3892a2['_lastColliderWorldVertices'], this['getIndices'](), _0x3892a2['indexStart'], _0x3892a2['indexStart'] + _0x3892a2['indexCount'], _0x3892a2['verticesStart'], !!_0x3892a2['getMaterial']()), _0x38bef8['collisionFound'] && (_0x38bef8['collidedMesh'] = this), this; } , _0x42252a['prototype']['_processCollisionsForSubMeshes'] = function(_0x148555, _0x191afc) { for (var _0x5752bf = this['_scene']['getCollidingSubMeshCandidates'](this, _0x148555), _0x14d427 = _0x5752bf['length'], _0x53885a = 0x0; _0x53885a < _0x14d427; _0x53885a++) { var _0x1cdd8f = _0x5752bf['data'][_0x53885a]; _0x14d427 > 0x1 && !_0x1cdd8f['_checkCollision'](_0x148555) || this['_collideForSubMesh'](_0x1cdd8f, _0x191afc, _0x148555); } return this; } , _0x42252a['prototype']['_checkCollision'] = function(_0x250ad4) { if (!this['_boundingInfo'] || !this['_boundingInfo']['_checkCollision'](_0x250ad4)) return this; var _0x1f75c7 = _0x1c1a2d['t']['Matrix'][0x0] , _0x21ed4c = _0x1c1a2d['t']['Matrix'][0x1]; return _0x1c1a2d['j']['ScalingToRef'](0x1 / _0x250ad4['_radius']['x'], 0x1 / _0x250ad4['_radius']['y'], 0x1 / _0x250ad4['_radius']['z'], _0x1f75c7), this['worldMatrixFromCache']['multiplyToRef'](_0x1f75c7, _0x21ed4c), this['_processCollisionsForSubMeshes'](_0x250ad4, _0x21ed4c), this; } , _0x42252a['prototype']['_generatePointsArray'] = function() { return !0x1; } , _0x42252a['prototype']['intersects'] = function(_0x117338, _0xc72fc6, _0x3a1192) { var _0x5f4f4e = new _0x3c318c['a']() , _0x29fbe2 = 'InstancedLinesMesh' === this['getClassName']() || 'LinesMesh' === this['getClassName']() ? this['intersectionThreshold'] : 0x0 , _0x23c029 = this['_boundingInfo']; if (!(this['subMeshes'] && _0x23c029 && _0x117338['intersectsSphere'](_0x23c029['boundingSphere'], _0x29fbe2) && _0x117338['intersectsBox'](_0x23c029['boundingBox'], _0x29fbe2))) return _0x5f4f4e; if (!this['_generatePointsArray']()) return _0x5f4f4e; for (var _0x33fa27 = null, _0x342b45 = this['_scene']['getIntersectingSubMeshCandidates'](this, _0x117338), _0x2374d7 = _0x342b45['length'], _0x304762 = 0x0; _0x304762 < _0x2374d7; _0x304762++) { var _0xd1d5bb = _0x342b45['data'][_0x304762]; if (!(_0x2374d7 > 0x1) || _0xd1d5bb['canIntersects'](_0x117338)) { var _0x4a3c78 = _0xd1d5bb['intersects'](_0x117338, this['_positions'], this['getIndices'](), _0xc72fc6, _0x3a1192); if (_0x4a3c78 && (_0xc72fc6 || !_0x33fa27 || _0x4a3c78['distance'] < _0x33fa27['distance']) && ((_0x33fa27 = _0x4a3c78)['subMeshId'] = _0x304762, _0xc72fc6)) break; } } if (_0x33fa27) { var _0xe745de = this['getWorldMatrix']() , _0x17d572 = _0x1c1a2d['t']['Vector3'][0x0] , _0x377c04 = _0x1c1a2d['t']['Vector3'][0x1]; _0x1c1a2d['x']['TransformCoordinatesToRef'](_0x117338['origin'], _0xe745de, _0x17d572), _0x117338['direction']['scaleToRef'](_0x33fa27['distance'], _0x377c04); var _0x89a6b2 = _0x1c1a2d['x']['TransformNormal'](_0x377c04, _0xe745de)['addInPlace'](_0x17d572); return _0x5f4f4e['hit'] = !0x0, _0x5f4f4e['distance'] = _0x1c1a2d['x']['Distance'](_0x17d572, _0x89a6b2), _0x5f4f4e['pickedPoint'] = _0x89a6b2, _0x5f4f4e['pickedMesh'] = this, _0x5f4f4e['bu'] = _0x33fa27['bu'] || 0x0, _0x5f4f4e['bv'] = _0x33fa27['bv'] || 0x0, _0x5f4f4e['faceId'] = _0x33fa27['faceId'], _0x5f4f4e['subMeshId'] = _0x33fa27['subMeshId'], _0x5f4f4e; } return _0x5f4f4e; } , _0x42252a['prototype']['clone'] = function(_0x47f4ba, _0x1b5992, _0x3f8a7b) { return null; } , _0x42252a['prototype']['releaseSubMeshes'] = function() { if (this['subMeshes']) for (; this['subMeshes']['length']; ) this['subMeshes'][0x0]['dispose'](); else this['subMeshes'] = new Array(); return this; } , _0x42252a['prototype']['dispose'] = function(_0x522a6b, _0x2dec5b) { var _0x5f1dc0, _0x24bd03 = this; for (void 0x0 === _0x2dec5b && (_0x2dec5b = !0x1), this['getScene']()['freeActiveMeshes'](), this['getScene']()['freeRenderingGroups'](), void 0x0 !== this['actionManager'] && null !== this['actionManager'] && (this['actionManager']['dispose'](), this['actionManager'] = null), this['_internalAbstractMeshDataInfo']['_skeleton'] = null, _0x5f1dc0 = 0x0; _0x5f1dc0 < this['_intersectionsInProgress']['length']; _0x5f1dc0++) { var _0x3397e4 = this['_intersectionsInProgress'][_0x5f1dc0] , _0x2e0d8e = _0x3397e4['_intersectionsInProgress']['indexOf'](this); _0x3397e4['_intersectionsInProgress']['splice'](_0x2e0d8e, 0x1); } this['_intersectionsInProgress'] = [], this['getScene']()['lights']['forEach'](function(_0x468a6d) { var _0x314f33 = _0x468a6d['includedOnlyMeshes']['indexOf'](_0x24bd03); -0x1 !== _0x314f33 && _0x468a6d['includedOnlyMeshes']['splice'](_0x314f33, 0x1), -0x1 !== (_0x314f33 = _0x468a6d['excludedMeshes']['indexOf'](_0x24bd03)) && _0x468a6d['excludedMeshes']['splice'](_0x314f33, 0x1); var _0xeff6d9 = _0x468a6d['getShadowGenerator'](); if (_0xeff6d9) { var _0x4013de = _0xeff6d9['getShadowMap'](); _0x4013de && _0x4013de['renderList'] && -0x1 !== (_0x314f33 = _0x4013de['renderList']['indexOf'](_0x24bd03)) && _0x4013de['renderList']['splice'](_0x314f33, 0x1); } }), 'InstancedMesh' === this['getClassName']() && 'InstancedLinesMesh' === this['getClassName']() || this['releaseSubMeshes'](); var _0x29879c = this['getScene']()['getEngine'](); if (this['_occlusionQuery'] && (this['isOcclusionQueryInProgress'] = !0x1, _0x29879c['deleteQuery'](this['_occlusionQuery']), this['_occlusionQuery'] = null), _0x29879c['wipeCaches'](), this['getScene']()['removeMesh'](this), _0x2dec5b && this['material'] && ('MultiMaterial' === this['material']['getClassName']() ? this['material']['dispose'](!0x1, !0x0, !0x0) : this['material']['dispose'](!0x1, !0x0)), !_0x522a6b) for (_0x5f1dc0 = 0x0; _0x5f1dc0 < this['getScene']()['particleSystems']['length']; _0x5f1dc0++) this['getScene']()['particleSystems'][_0x5f1dc0]['emitter'] === this && (this['getScene']()['particleSystems'][_0x5f1dc0]['dispose'](), _0x5f1dc0--); this['_internalAbstractMeshDataInfo']['_facetData']['facetDataEnabled'] && this['disableFacetData'](), this['onAfterWorldMatrixUpdateObservable']['clear'](), this['onCollideObservable']['clear'](), this['onCollisionPositionChangeObservable']['clear'](), this['onRebuildObservable']['clear'](), _0x26f76a['prototype']['dispose']['call'](this, _0x522a6b, _0x2dec5b); } , _0x42252a['prototype']['addChild'] = function(_0x33febf) { return _0x33febf['setParent'](this), this; } , _0x42252a['prototype']['removeChild'] = function(_0x582287) { return _0x582287['setParent'](null), this; } , _0x42252a['prototype']['_initFacetData'] = function() { var _0x56934c = this['_internalAbstractMeshDataInfo']['_facetData']; _0x56934c['facetNormals'] || (_0x56934c['facetNormals'] = new Array()), _0x56934c['facetPositions'] || (_0x56934c['facetPositions'] = new Array()), _0x56934c['facetPartitioning'] || (_0x56934c['facetPartitioning'] = new Array()), _0x56934c['facetNb'] = this['getIndices']()['length'] / 0x3 | 0x0, _0x56934c['partitioningSubdivisions'] = _0x56934c['partitioningSubdivisions'] ? _0x56934c['partitioningSubdivisions'] : 0xa, _0x56934c['partitioningBBoxRatio'] = _0x56934c['partitioningBBoxRatio'] ? _0x56934c['partitioningBBoxRatio'] : 1.01; for (var _0x51673e = 0x0; _0x51673e < _0x56934c['facetNb']; _0x51673e++) _0x56934c['facetNormals'][_0x51673e] = _0x1c1a2d['x']['Zero'](), _0x56934c['facetPositions'][_0x51673e] = _0x1c1a2d['x']['Zero'](); return _0x56934c['facetDataEnabled'] = !0x0, this; } , _0x42252a['prototype']['updateFacetData'] = function() { var _0x9aaa2a = this['_internalAbstractMeshDataInfo']['_facetData']; _0x9aaa2a['facetDataEnabled'] || this['_initFacetData'](); var _0x3a592f = this['getVerticesData'](_0x29a09a['b']['PositionKind']) , _0x3e2369 = this['getIndices']() , _0xb87ac8 = this['getVerticesData'](_0x29a09a['b']['NormalKind']) , _0x413d07 = this['getBoundingInfo'](); if (_0x9aaa2a['facetDepthSort'] && !_0x9aaa2a['facetDepthSortEnabled']) { if (_0x9aaa2a['facetDepthSortEnabled'] = !0x0, _0x3e2369 instanceof Uint16Array) _0x9aaa2a['depthSortedIndices'] = new Uint16Array(_0x3e2369); else if (_0x3e2369 instanceof Uint32Array) _0x9aaa2a['depthSortedIndices'] = new Uint32Array(_0x3e2369); else { for (var _0x57c548 = !0x1, _0x775a48 = 0x0; _0x775a48 < _0x3e2369['length']; _0x775a48++) if (_0x3e2369[_0x775a48] > 0xffff) { _0x57c548 = !0x0; break; } _0x9aaa2a['depthSortedIndices'] = _0x57c548 ? new Uint32Array(_0x3e2369) : new Uint16Array(_0x3e2369); } if (_0x9aaa2a['facetDepthSortFunction'] = function(_0x51c708, _0x5b6b5f) { return _0x5b6b5f['sqDistance'] - _0x51c708['sqDistance']; } , !_0x9aaa2a['facetDepthSortFrom']) { var _0x1452e7 = this['getScene']()['activeCamera']; _0x9aaa2a['facetDepthSortFrom'] = _0x1452e7 ? _0x1452e7['position'] : _0x1c1a2d['x']['Zero'](); } _0x9aaa2a['depthSortedFacets'] = []; for (var _0x52fe54 = 0x0; _0x52fe54 < _0x9aaa2a['facetNb']; _0x52fe54++) { var _0x4bfc62 = { 'ind': 0x3 * _0x52fe54, 'sqDistance': 0x0 }; _0x9aaa2a['depthSortedFacets']['push'](_0x4bfc62); } _0x9aaa2a['invertedMatrix'] = _0x1c1a2d['j']['Identity'](), _0x9aaa2a['facetDepthSortOrigin'] = _0x1c1a2d['x']['Zero'](); } _0x9aaa2a['bbSize']['x'] = _0x413d07['maximum']['x'] - _0x413d07['minimum']['x'] > _0x1c1a2d['h'] ? _0x413d07['maximum']['x'] - _0x413d07['minimum']['x'] : _0x1c1a2d['h'], _0x9aaa2a['bbSize']['y'] = _0x413d07['maximum']['y'] - _0x413d07['minimum']['y'] > _0x1c1a2d['h'] ? _0x413d07['maximum']['y'] - _0x413d07['minimum']['y'] : _0x1c1a2d['h'], _0x9aaa2a['bbSize']['z'] = _0x413d07['maximum']['z'] - _0x413d07['minimum']['z'] > _0x1c1a2d['h'] ? _0x413d07['maximum']['z'] - _0x413d07['minimum']['z'] : _0x1c1a2d['h']; var _0x1aebb7 = _0x9aaa2a['bbSize']['x'] > _0x9aaa2a['bbSize']['y'] ? _0x9aaa2a['bbSize']['x'] : _0x9aaa2a['bbSize']['y']; if (_0x1aebb7 = _0x1aebb7 > _0x9aaa2a['bbSize']['z'] ? _0x1aebb7 : _0x9aaa2a['bbSize']['z'], _0x9aaa2a['subDiv']['max'] = _0x9aaa2a['partitioningSubdivisions'], _0x9aaa2a['subDiv']['X'] = Math['floor'](_0x9aaa2a['subDiv']['max'] * _0x9aaa2a['bbSize']['x'] / _0x1aebb7), _0x9aaa2a['subDiv']['Y'] = Math['floor'](_0x9aaa2a['subDiv']['max'] * _0x9aaa2a['bbSize']['y'] / _0x1aebb7), _0x9aaa2a['subDiv']['Z'] = Math['floor'](_0x9aaa2a['subDiv']['max'] * _0x9aaa2a['bbSize']['z'] / _0x1aebb7), _0x9aaa2a['subDiv']['X'] = _0x9aaa2a['subDiv']['X'] < 0x1 ? 0x1 : _0x9aaa2a['subDiv']['X'], _0x9aaa2a['subDiv']['Y'] = _0x9aaa2a['subDiv']['Y'] < 0x1 ? 0x1 : _0x9aaa2a['subDiv']['Y'], _0x9aaa2a['subDiv']['Z'] = _0x9aaa2a['subDiv']['Z'] < 0x1 ? 0x1 : _0x9aaa2a['subDiv']['Z'], _0x9aaa2a['facetParameters']['facetNormals'] = this['getFacetLocalNormals'](), _0x9aaa2a['facetParameters']['facetPositions'] = this['getFacetLocalPositions'](), _0x9aaa2a['facetParameters']['facetPartitioning'] = this['getFacetLocalPartitioning'](), _0x9aaa2a['facetParameters']['bInfo'] = _0x413d07, _0x9aaa2a['facetParameters']['bbSize'] = _0x9aaa2a['bbSize'], _0x9aaa2a['facetParameters']['subDiv'] = _0x9aaa2a['subDiv'], _0x9aaa2a['facetParameters']['ratio'] = this['partitioningBBoxRatio'], _0x9aaa2a['facetParameters']['depthSort'] = _0x9aaa2a['facetDepthSort'], _0x9aaa2a['facetDepthSort'] && _0x9aaa2a['facetDepthSortEnabled'] && (this['computeWorldMatrix'](!0x0), this['_worldMatrix']['invertToRef'](_0x9aaa2a['invertedMatrix']), _0x1c1a2d['x']['TransformCoordinatesToRef'](_0x9aaa2a['facetDepthSortFrom'], _0x9aaa2a['invertedMatrix'], _0x9aaa2a['facetDepthSortOrigin']), _0x9aaa2a['facetParameters']['distanceTo'] = _0x9aaa2a['facetDepthSortOrigin']), _0x9aaa2a['facetParameters']['depthSortedFacets'] = _0x9aaa2a['depthSortedFacets'], _0x5e0573['a']['ComputeNormals'](_0x3a592f, _0x3e2369, _0xb87ac8, _0x9aaa2a['facetParameters']), _0x9aaa2a['facetDepthSort'] && _0x9aaa2a['facetDepthSortEnabled']) { _0x9aaa2a['depthSortedFacets']['sort'](_0x9aaa2a['facetDepthSortFunction']); var _0x4d01e4 = _0x9aaa2a['depthSortedIndices']['length'] / 0x3 | 0x0; for (_0x52fe54 = 0x0; _0x52fe54 < _0x4d01e4; _0x52fe54++) { var _0x3adc1d = _0x9aaa2a['depthSortedFacets'][_0x52fe54]['ind']; _0x9aaa2a['depthSortedIndices'][0x3 * _0x52fe54] = _0x3e2369[_0x3adc1d], _0x9aaa2a['depthSortedIndices'][0x3 * _0x52fe54 + 0x1] = _0x3e2369[_0x3adc1d + 0x1], _0x9aaa2a['depthSortedIndices'][0x3 * _0x52fe54 + 0x2] = _0x3e2369[_0x3adc1d + 0x2]; } this['updateIndices'](_0x9aaa2a['depthSortedIndices'], void 0x0, !0x0); } return this; } , _0x42252a['prototype']['getFacetLocalNormals'] = function() { var _0x11ca99 = this['_internalAbstractMeshDataInfo']['_facetData']; return _0x11ca99['facetNormals'] || this['updateFacetData'](), _0x11ca99['facetNormals']; } , _0x42252a['prototype']['getFacetLocalPositions'] = function() { var _0x5bad78 = this['_internalAbstractMeshDataInfo']['_facetData']; return _0x5bad78['facetPositions'] || this['updateFacetData'](), _0x5bad78['facetPositions']; } , _0x42252a['prototype']['getFacetLocalPartitioning'] = function() { var _0x2b2940 = this['_internalAbstractMeshDataInfo']['_facetData']; return _0x2b2940['facetPartitioning'] || this['updateFacetData'](), _0x2b2940['facetPartitioning']; } , _0x42252a['prototype']['getFacetPosition'] = function(_0x10681f) { var _0x280e88 = _0x1c1a2d['x']['Zero'](); return this['getFacetPositionToRef'](_0x10681f, _0x280e88), _0x280e88; } , _0x42252a['prototype']['getFacetPositionToRef'] = function(_0xbaf464, _0x1be82b) { var _0x4f55e3 = this['getFacetLocalPositions']()[_0xbaf464] , _0x4927a1 = this['getWorldMatrix'](); return _0x1c1a2d['x']['TransformCoordinatesToRef'](_0x4f55e3, _0x4927a1, _0x1be82b), this; } , _0x42252a['prototype']['getFacetNormal'] = function(_0x2a25fc) { var _0x236130 = _0x1c1a2d['x']['Zero'](); return this['getFacetNormalToRef'](_0x2a25fc, _0x236130), _0x236130; } , _0x42252a['prototype']['getFacetNormalToRef'] = function(_0x43b6bc, _0x3a9177) { var _0x25efa7 = this['getFacetLocalNormals']()[_0x43b6bc]; return _0x1c1a2d['x']['TransformNormalToRef'](_0x25efa7, this['getWorldMatrix'](), _0x3a9177), this; } , _0x42252a['prototype']['getFacetsAtLocalCoordinates'] = function(_0x5d1bfe, _0x35fd61, _0x4ed84c) { var _0x3857bd = this['getBoundingInfo']() , _0x34962f = this['_internalAbstractMeshDataInfo']['_facetData'] , _0x42e614 = Math['floor']((_0x5d1bfe - _0x3857bd['minimum']['x'] * _0x34962f['partitioningBBoxRatio']) * _0x34962f['subDiv']['X'] * _0x34962f['partitioningBBoxRatio'] / _0x34962f['bbSize']['x']) , _0x310340 = Math['floor']((_0x35fd61 - _0x3857bd['minimum']['y'] * _0x34962f['partitioningBBoxRatio']) * _0x34962f['subDiv']['Y'] * _0x34962f['partitioningBBoxRatio'] / _0x34962f['bbSize']['y']) , _0x1d9504 = Math['floor']((_0x4ed84c - _0x3857bd['minimum']['z'] * _0x34962f['partitioningBBoxRatio']) * _0x34962f['subDiv']['Z'] * _0x34962f['partitioningBBoxRatio'] / _0x34962f['bbSize']['z']); return _0x42e614 < 0x0 || _0x42e614 > _0x34962f['subDiv']['max'] || _0x310340 < 0x0 || _0x310340 > _0x34962f['subDiv']['max'] || _0x1d9504 < 0x0 || _0x1d9504 > _0x34962f['subDiv']['max'] ? null : _0x34962f['facetPartitioning'][_0x42e614 + _0x34962f['subDiv']['max'] * _0x310340 + _0x34962f['subDiv']['max'] * _0x34962f['subDiv']['max'] * _0x1d9504]; } , _0x42252a['prototype']['getClosestFacetAtCoordinates'] = function(_0x47e9c9, _0x1c1023, _0x54f4a8, _0x2656e7, _0x55cfd2, _0x49def8) { void 0x0 === _0x55cfd2 && (_0x55cfd2 = !0x1), void 0x0 === _0x49def8 && (_0x49def8 = !0x0); var _0x4a5291 = this['getWorldMatrix']() , _0x3be8c6 = _0x1c1a2d['t']['Matrix'][0x5]; _0x4a5291['invertToRef'](_0x3be8c6); var _0xe4c6d3 = _0x1c1a2d['t']['Vector3'][0x8]; _0x1c1a2d['x']['TransformCoordinatesFromFloatsToRef'](_0x47e9c9, _0x1c1023, _0x54f4a8, _0x3be8c6, _0xe4c6d3); var _0x47919b = this['getClosestFacetAtLocalCoordinates'](_0xe4c6d3['x'], _0xe4c6d3['y'], _0xe4c6d3['z'], _0x2656e7, _0x55cfd2, _0x49def8); return _0x2656e7 && _0x1c1a2d['x']['TransformCoordinatesFromFloatsToRef'](_0x2656e7['x'], _0x2656e7['y'], _0x2656e7['z'], _0x4a5291, _0x2656e7), _0x47919b; } , _0x42252a['prototype']['getClosestFacetAtLocalCoordinates'] = function(_0x45b869, _0x1fdcef, _0xeddbad, _0x32bdc8, _0x8f2f99, _0x3d4d41) { void 0x0 === _0x8f2f99 && (_0x8f2f99 = !0x1), void 0x0 === _0x3d4d41 && (_0x3d4d41 = !0x0); var _0xe82120 = null , _0x1dca8e = 0x0 , _0x2c0f1d = 0x0 , _0x2c54b2 = 0x0 , _0x561fc2 = 0x0 , _0xd00e00 = 0x0 , _0x4e2094 = 0x0 , _0x40f5d1 = 0x0 , _0x145658 = 0x0 , _0x10bd74 = this['getFacetLocalPositions']() , _0x127734 = this['getFacetLocalNormals']() , _0x4acf62 = this['getFacetsAtLocalCoordinates'](_0x45b869, _0x1fdcef, _0xeddbad); if (!_0x4acf62) return null; for (var _0x423e42, _0x95e689, _0xe745e2, _0x25410d = Number['MAX_VALUE'], _0x82899e = _0x25410d, _0x3222fa = 0x0; _0x3222fa < _0x4acf62['length']; _0x3222fa++) _0x95e689 = _0x127734[_0x423e42 = _0x4acf62[_0x3222fa]], _0x561fc2 = (_0x45b869 - (_0xe745e2 = _0x10bd74[_0x423e42])['x']) * _0x95e689['x'] + (_0x1fdcef - _0xe745e2['y']) * _0x95e689['y'] + (_0xeddbad - _0xe745e2['z']) * _0x95e689['z'], (!_0x8f2f99 || _0x8f2f99 && _0x3d4d41 && _0x561fc2 >= 0x0 || _0x8f2f99 && !_0x3d4d41 && _0x561fc2 <= 0x0) && (_0x561fc2 = _0x95e689['x'] * _0xe745e2['x'] + _0x95e689['y'] * _0xe745e2['y'] + _0x95e689['z'] * _0xe745e2['z'], _0xd00e00 = -(_0x95e689['x'] * _0x45b869 + _0x95e689['y'] * _0x1fdcef + _0x95e689['z'] * _0xeddbad - _0x561fc2) / (_0x95e689['x'] * _0x95e689['x'] + _0x95e689['y'] * _0x95e689['y'] + _0x95e689['z'] * _0x95e689['z']), (_0x82899e = (_0x1dca8e = (_0x4e2094 = _0x45b869 + _0x95e689['x'] * _0xd00e00) - _0x45b869) * _0x1dca8e + (_0x2c0f1d = (_0x40f5d1 = _0x1fdcef + _0x95e689['y'] * _0xd00e00) - _0x1fdcef) * _0x2c0f1d + (_0x2c54b2 = (_0x145658 = _0xeddbad + _0x95e689['z'] * _0xd00e00) - _0xeddbad) * _0x2c54b2) < _0x25410d && (_0x25410d = _0x82899e, _0xe82120 = _0x423e42, _0x32bdc8 && (_0x32bdc8['x'] = _0x4e2094, _0x32bdc8['y'] = _0x40f5d1, _0x32bdc8['z'] = _0x145658))); return _0xe82120; } , _0x42252a['prototype']['getFacetDataParameters'] = function() { return this['_internalAbstractMeshDataInfo']['_facetData']['facetParameters']; } , _0x42252a['prototype']['disableFacetData'] = function() { var _0x5d947a = this['_internalAbstractMeshDataInfo']['_facetData']; return _0x5d947a['facetDataEnabled'] && (_0x5d947a['facetDataEnabled'] = !0x1, _0x5d947a['facetPositions'] = new Array(), _0x5d947a['facetNormals'] = new Array(), _0x5d947a['facetPartitioning'] = new Array(), _0x5d947a['facetParameters'] = null, _0x5d947a['depthSortedIndices'] = new Uint32Array(0x0)), this; } , _0x42252a['prototype']['updateIndices'] = function(_0x561f41, _0x9723fe, _0x14534f) { return void 0x0 === _0x14534f && (_0x14534f = !0x1), this; } , _0x42252a['prototype']['createNormals'] = function(_0x383e1b) { var _0x5b31f6, _0x344654 = this['getVerticesData'](_0x29a09a['b']['PositionKind']), _0x107d58 = this['getIndices'](); return _0x5b31f6 = this['isVerticesDataPresent'](_0x29a09a['b']['NormalKind']) ? this['getVerticesData'](_0x29a09a['b']['NormalKind']) : [], _0x5e0573['a']['ComputeNormals'](_0x344654, _0x107d58, _0x5b31f6, { 'useRightHandedSystem': this['getScene']()['useRightHandedSystem'] }), this['setVerticesData'](_0x29a09a['b']['NormalKind'], _0x5b31f6, _0x383e1b), this; } , _0x42252a['prototype']['alignWithNormal'] = function(_0x147344, _0x2f9c3e) { _0x2f9c3e || (_0x2f9c3e = _0x1c1a2d['c']['Y']); var _0x1915ca = _0x1c1a2d['t']['Vector3'][0x0] , _0x591d24 = _0x1c1a2d['t']['Vector3'][0x1]; return _0x1c1a2d['x']['CrossToRef'](_0x2f9c3e, _0x147344, _0x591d24), _0x1c1a2d['x']['CrossToRef'](_0x147344, _0x591d24, _0x1915ca), this['rotationQuaternion'] ? _0x1c1a2d['q']['RotationQuaternionFromAxisToRef'](_0x1915ca, _0x147344, _0x591d24, this['rotationQuaternion']) : _0x1c1a2d['x']['RotationFromAxisToRef'](_0x1915ca, _0x147344, _0x591d24, this['rotation']), this; } , _0x42252a['prototype']['_checkOcclusionQuery'] = function() { return !0x1; } , _0x42252a['prototype']['disableEdgesRendering'] = function() { throw _0x4d6603['a']['WarnImport']('EdgesRenderer'); } , _0x42252a['prototype']['enableEdgesRendering'] = function(_0x55df85, _0x3e7c2d) { throw _0x4d6603['a']['WarnImport']('EdgesRenderer'); } , _0x42252a['OCCLUSION_TYPE_NONE'] = 0x0, _0x42252a['OCCLUSION_TYPE_OPTIMISTIC'] = 0x1, _0x42252a['OCCLUSION_TYPE_STRICT'] = 0x2, _0x42252a['OCCLUSION_ALGORITHM_TYPE_ACCURATE'] = 0x0, _0x42252a['OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE'] = 0x1, _0x42252a['CULLINGSTRATEGY_STANDARD'] = _0x5b10f9['a']['MESHES_CULLINGSTRATEGY_STANDARD'], _0x42252a['CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY'] = _0x5b10f9['a']['MESHES_CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY'], _0x42252a['CULLINGSTRATEGY_OPTIMISTIC_INCLUSION'] = _0x5b10f9['a']['MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION'], _0x42252a['CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY'] = _0x5b10f9['a']['MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY'], _0x42252a; }(_0x357ffd['a']); } , function(_0x43b979, _0x4c01df, _0x45f72f) { 'use strict'; _0x45f72f['d'](_0x4c01df, 'a', function() { return _0x37cfa2; }); var _0x1f4664 = _0x45f72f(0x1) , _0x485e72 = _0x45f72f(0x0) , _0x37f1b5 = _0x45f72f(0x2) , _0x1e93dc = _0x45f72f(0x8) , _0x4322e4 = _0x45f72f(0x17) , _0x1af471 = _0x45f72f(0x13) , _0x23bbfe = _0x45f72f(0x9) , _0x37cfa2 = function() { function _0x2a1250(_0xe8579d, _0x706079, _0x1f1166) { void 0x0 === _0x706079 && (_0x706079 = null), void 0x0 === _0x1f1166 && (_0x1f1166 = !0x0), this['state'] = '', this['metadata'] = null, this['reservedDataStore'] = null, this['doNotSerialize'] = !0x1, this['_isDisposed'] = !0x1, this['animations'] = new Array(), this['_ranges'] = {}, this['onReady'] = null, this['_isEnabled'] = !0x0, this['_isParentEnabled'] = !0x0, this['_isReady'] = !0x0, this['_currentRenderId'] = -0x1, this['_parentUpdateId'] = -0x1, this['_childUpdateId'] = -0x1, this['_waitingParentId'] = null, this['_cache'] = {}, this['_parentNode'] = null, this['_children'] = null, this['_worldMatrix'] = _0x485e72['j']['Identity'](), this['_worldMatrixDeterminant'] = 0x0, this['_worldMatrixDeterminantIsDirty'] = !0x0, this['_sceneRootNodesIndex'] = -0x1, this['_animationPropertiesOverride'] = null, this['_isNode'] = !0x0, this['onDisposeObservable'] = new _0x1e93dc['c'](), this['_onDisposeObserver'] = null, this['_behaviors'] = new Array(), this['name'] = _0xe8579d, this['id'] = _0xe8579d, this['_scene'] = _0x706079 || _0x4322e4['a']['LastCreatedScene'], this['uniqueId'] = this['_scene']['getUniqueId'](), this['_initCache'](), _0x1f1166 && this['addToSceneRootNodes'](); } return _0x2a1250['AddNodeConstructor'] = function(_0xa42e01, _0x387785) { this['_NodeConstructors'][_0xa42e01] = _0x387785; } , _0x2a1250['Construct'] = function(_0x458369, _0x57671d, _0x5593b7, _0x4f376b) { var _0x29bcf3 = this['_NodeConstructors'][_0x458369]; return _0x29bcf3 ? _0x29bcf3(_0x57671d, _0x5593b7, _0x4f376b) : null; } , _0x2a1250['prototype']['isDisposed'] = function() { return this['_isDisposed']; } , Object['defineProperty'](_0x2a1250['prototype'], 'parent', { 'get': function() { return this['_parentNode']; }, 'set': function(_0x3a18e7) { if (this['_parentNode'] !== _0x3a18e7) { var _0x39697f = this['_parentNode']; if (this['_parentNode'] && void 0x0 !== this['_parentNode']['_children'] && null !== this['_parentNode']['_children']) { var _0x1cd1cb = this['_parentNode']['_children']['indexOf'](this); -0x1 !== _0x1cd1cb && this['_parentNode']['_children']['splice'](_0x1cd1cb, 0x1), _0x3a18e7 || this['_isDisposed'] || this['addToSceneRootNodes'](); } this['_parentNode'] = _0x3a18e7, this['_parentNode'] && (void 0x0 !== this['_parentNode']['_children'] && null !== this['_parentNode']['_children'] || (this['_parentNode']['_children'] = new Array()), this['_parentNode']['_children']['push'](this), _0x39697f || this['removeFromSceneRootNodes']()), this['_syncParentEnabledState'](); } }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2a1250['prototype']['addToSceneRootNodes'] = function() { -0x1 === this['_sceneRootNodesIndex'] && (this['_sceneRootNodesIndex'] = this['_scene']['rootNodes']['length'], this['_scene']['rootNodes']['push'](this)); } , _0x2a1250['prototype']['removeFromSceneRootNodes'] = function() { if (-0x1 !== this['_sceneRootNodesIndex']) { var _0x5ed76d = this['_scene']['rootNodes'] , _0x2cdbe3 = _0x5ed76d['length'] - 0x1; _0x5ed76d[this['_sceneRootNodesIndex']] = _0x5ed76d[_0x2cdbe3], _0x5ed76d[this['_sceneRootNodesIndex']]['_sceneRootNodesIndex'] = this['_sceneRootNodesIndex'], this['_scene']['rootNodes']['pop'](), this['_sceneRootNodesIndex'] = -0x1; } } , Object['defineProperty'](_0x2a1250['prototype'], 'animationPropertiesOverride', { 'get': function() { return this['_animationPropertiesOverride'] ? this['_animationPropertiesOverride'] : this['_scene']['animationPropertiesOverride']; }, 'set': function(_0x5595b9) { this['_animationPropertiesOverride'] = _0x5595b9; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2a1250['prototype']['getClassName'] = function() { return 'Node'; } , Object['defineProperty'](_0x2a1250['prototype'], 'onDispose', { 'set': function(_0x3ff475) { this['_onDisposeObserver'] && this['onDisposeObservable']['remove'](this['_onDisposeObserver']), this['_onDisposeObserver'] = this['onDisposeObservable']['add'](_0x3ff475); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2a1250['prototype']['getScene'] = function() { return this['_scene']; } , _0x2a1250['prototype']['getEngine'] = function() { return this['_scene']['getEngine'](); } , _0x2a1250['prototype']['addBehavior'] = function(_0xf2197b, _0x22c94c) { var _0x56903a = this; return void 0x0 === _0x22c94c && (_0x22c94c = !0x1), -0x1 !== this['_behaviors']['indexOf'](_0xf2197b) ? this : (_0xf2197b['init'](), this['_scene']['isLoading'] && !_0x22c94c ? this['_scene']['onDataLoadedObservable']['addOnce'](function() { _0xf2197b['attach'](_0x56903a); }) : _0xf2197b['attach'](this), this['_behaviors']['push'](_0xf2197b), this); } , _0x2a1250['prototype']['removeBehavior'] = function(_0x2b145e) { var _0x22b7b8 = this['_behaviors']['indexOf'](_0x2b145e); return -0x1 === _0x22b7b8 ? this : (this['_behaviors'][_0x22b7b8]['detach'](), this['_behaviors']['splice'](_0x22b7b8, 0x1), this); } , Object['defineProperty'](_0x2a1250['prototype'], 'behaviors', { 'get': function() { return this['_behaviors']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2a1250['prototype']['getBehaviorByName'] = function(_0x3b7c8d) { for (var _0x3bfda8 = 0x0, _0x2f1426 = this['_behaviors']; _0x3bfda8 < _0x2f1426['length']; _0x3bfda8++) { var _0x221380 = _0x2f1426[_0x3bfda8]; if (_0x221380['name'] === _0x3b7c8d) return _0x221380; } return null; } , _0x2a1250['prototype']['getWorldMatrix'] = function() { return this['_currentRenderId'] !== this['_scene']['getRenderId']() && this['computeWorldMatrix'](), this['_worldMatrix']; } , _0x2a1250['prototype']['_getWorldMatrixDeterminant'] = function() { return this['_worldMatrixDeterminantIsDirty'] && (this['_worldMatrixDeterminantIsDirty'] = !0x1, this['_worldMatrixDeterminant'] = this['_worldMatrix']['determinant']()), this['_worldMatrixDeterminant']; } , Object['defineProperty'](_0x2a1250['prototype'], 'worldMatrixFromCache', { 'get': function() { return this['_worldMatrix']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2a1250['prototype']['_initCache'] = function() { this['_cache'] = {}, this['_cache']['parent'] = void 0x0; } , _0x2a1250['prototype']['updateCache'] = function(_0x52a8a2) { !_0x52a8a2 && this['isSynchronized']() || (this['_cache']['parent'] = this['parent'], this['_updateCache']()); } , _0x2a1250['prototype']['_getActionManagerForTrigger'] = function(_0x2cd2f9, _0x5036f6) { return void 0x0 === _0x5036f6 && (_0x5036f6 = !0x0), this['parent'] ? this['parent']['_getActionManagerForTrigger'](_0x2cd2f9, !0x1) : null; } , _0x2a1250['prototype']['_updateCache'] = function(_0x50a440) {} , _0x2a1250['prototype']['_isSynchronized'] = function() { return !0x0; } , _0x2a1250['prototype']['_markSyncedWithParent'] = function() { this['_parentNode'] && (this['_parentUpdateId'] = this['_parentNode']['_childUpdateId']); } , _0x2a1250['prototype']['isSynchronizedWithParent'] = function() { return !this['_parentNode'] || this['_parentUpdateId'] === this['_parentNode']['_childUpdateId'] && this['_parentNode']['isSynchronized'](); } , _0x2a1250['prototype']['isSynchronized'] = function() { return this['_cache']['parent'] != this['_parentNode'] ? (this['_cache']['parent'] = this['_parentNode'], !0x1) : !(this['_parentNode'] && !this['isSynchronizedWithParent']()) && this['_isSynchronized'](); } , _0x2a1250['prototype']['isReady'] = function(_0x4375cd) { return void 0x0 === _0x4375cd && (_0x4375cd = !0x1), this['_isReady']; } , _0x2a1250['prototype']['isEnabled'] = function(_0x4a2221) { return void 0x0 === _0x4a2221 && (_0x4a2221 = !0x0), !0x1 === _0x4a2221 ? this['_isEnabled'] : !!this['_isEnabled'] && this['_isParentEnabled']; } , _0x2a1250['prototype']['_syncParentEnabledState'] = function() { this['_isParentEnabled'] = !this['_parentNode'] || this['_parentNode']['isEnabled'](), this['_children'] && this['_children']['forEach'](function(_0x5bf824) { _0x5bf824['_syncParentEnabledState'](); }); } , _0x2a1250['prototype']['setEnabled'] = function(_0x1daeb2) { this['_isEnabled'] = _0x1daeb2, this['_syncParentEnabledState'](); } , _0x2a1250['prototype']['isDescendantOf'] = function(_0x5cd09a) { return !!this['parent'] && (this['parent'] === _0x5cd09a || this['parent']['isDescendantOf'](_0x5cd09a)); } , _0x2a1250['prototype']['_getDescendants'] = function(_0x4cf510, _0x401bdb, _0x3958a5) { if (void 0x0 === _0x401bdb && (_0x401bdb = !0x1), this['_children']) for (var _0x303f82 = 0x0; _0x303f82 < this['_children']['length']; _0x303f82++) { var _0x30ba56 = this['_children'][_0x303f82]; _0x3958a5 && !_0x3958a5(_0x30ba56) || _0x4cf510['push'](_0x30ba56), _0x401bdb || _0x30ba56['_getDescendants'](_0x4cf510, !0x1, _0x3958a5); } } , _0x2a1250['prototype']['getDescendants'] = function(_0x171042, _0x3962a7) { var _0x30e791 = new Array(); return this['_getDescendants'](_0x30e791, _0x171042, _0x3962a7), _0x30e791; } , _0x2a1250['prototype']['getChildMeshes'] = function(_0x540929, _0x3245cd) { var _0x50ec02 = []; return this['_getDescendants'](_0x50ec02, _0x540929, function(_0x23dbbd) { return (!_0x3245cd || _0x3245cd(_0x23dbbd)) && void 0x0 !== _0x23dbbd['cullingStrategy']; }), _0x50ec02; } , _0x2a1250['prototype']['getChildren'] = function(_0x3f75a5, _0x4c667e) { return void 0x0 === _0x4c667e && (_0x4c667e = !0x0), this['getDescendants'](_0x4c667e, _0x3f75a5); } , _0x2a1250['prototype']['_setReady'] = function(_0xe3dc1d) { _0xe3dc1d !== this['_isReady'] && (_0xe3dc1d ? (this['onReady'] && this['onReady'](this), this['_isReady'] = !0x0) : this['_isReady'] = !0x1); } , _0x2a1250['prototype']['getAnimationByName'] = function(_0x173946) { for (var _0x48f59d = 0x0; _0x48f59d < this['animations']['length']; _0x48f59d++) { var _0x1a39e7 = this['animations'][_0x48f59d]; if (_0x1a39e7['name'] === _0x173946) return _0x1a39e7; } return null; } , _0x2a1250['prototype']['createAnimationRange'] = function(_0x5d3d81, _0x56f876, _0x3bc8d4) { if (!this['_ranges'][_0x5d3d81]) { this['_ranges'][_0x5d3d81] = _0x2a1250['_AnimationRangeFactory'](_0x5d3d81, _0x56f876, _0x3bc8d4); for (var _0xae9c11 = 0x0, _0x4e25dc = this['animations']['length']; _0xae9c11 < _0x4e25dc; _0xae9c11++) this['animations'][_0xae9c11] && this['animations'][_0xae9c11]['createRange'](_0x5d3d81, _0x56f876, _0x3bc8d4); } } , _0x2a1250['prototype']['deleteAnimationRange'] = function(_0x23c1e1, _0xc5d2ea) { void 0x0 === _0xc5d2ea && (_0xc5d2ea = !0x0); for (var _0x2aac8a = 0x0, _0x4846a8 = this['animations']['length']; _0x2aac8a < _0x4846a8; _0x2aac8a++) this['animations'][_0x2aac8a] && this['animations'][_0x2aac8a]['deleteRange'](_0x23c1e1, _0xc5d2ea); this['_ranges'][_0x23c1e1] = null; } , _0x2a1250['prototype']['getAnimationRange'] = function(_0xf29468) { return this['_ranges'][_0xf29468]; } , _0x2a1250['prototype']['getAnimationRanges'] = function() { var _0x6b4598, _0x1c6c66 = []; for (_0x6b4598 in this['_ranges']) _0x1c6c66['push'](this['_ranges'][_0x6b4598]); return _0x1c6c66; } , _0x2a1250['prototype']['beginAnimation'] = function(_0x29e861, _0x11763d, _0x4c6beb, _0x5265bb) { var _0x3a0144 = this['getAnimationRange'](_0x29e861); return _0x3a0144 ? this['_scene']['beginAnimation'](this, _0x3a0144['from'], _0x3a0144['to'], _0x11763d, _0x4c6beb, _0x5265bb) : null; } , _0x2a1250['prototype']['serializeAnimationRanges'] = function() { var _0x57934a = []; for (var _0xda3cf3 in this['_ranges']) { var _0x15f140 = this['_ranges'][_0xda3cf3]; if (_0x15f140) { var _0x2b22dd = {}; _0x2b22dd['name'] = _0xda3cf3, _0x2b22dd['from'] = _0x15f140['from'], _0x2b22dd['to'] = _0x15f140['to'], _0x57934a['push'](_0x2b22dd); } } return _0x57934a; } , _0x2a1250['prototype']['computeWorldMatrix'] = function(_0x1ab1fb) { return this['_worldMatrix'] || (this['_worldMatrix'] = _0x485e72['j']['Identity']()), this['_worldMatrix']; } , _0x2a1250['prototype']['dispose'] = function(_0x3a4dba, _0x5833c4) { if (void 0x0 === _0x5833c4 && (_0x5833c4 = !0x1), this['_isDisposed'] = !0x0, !_0x3a4dba) for (var _0x4a42fe = 0x0, _0x1cd6ae = this['getDescendants'](!0x0); _0x4a42fe < _0x1cd6ae['length']; _0x4a42fe++) { _0x1cd6ae[_0x4a42fe]['dispose'](_0x3a4dba, _0x5833c4); } this['parent'] ? this['parent'] = null : this['removeFromSceneRootNodes'](), this['onDisposeObservable']['notifyObservers'](this), this['onDisposeObservable']['clear'](); for (var _0x1eff97 = 0x0, _0x328ccc = this['_behaviors']; _0x1eff97 < _0x328ccc['length']; _0x1eff97++) { _0x328ccc[_0x1eff97]['detach'](); } this['_behaviors'] = []; } , _0x2a1250['ParseAnimationRanges'] = function(_0xb31594, _0x392521, _0x225437) { if (_0x392521['ranges']) for (var _0x356497 = 0x0; _0x356497 < _0x392521['ranges']['length']; _0x356497++) { var _0x27f92f = _0x392521['ranges'][_0x356497]; _0xb31594['createAnimationRange'](_0x27f92f['name'], _0x27f92f['from'], _0x27f92f['to']); } } , _0x2a1250['prototype']['getHierarchyBoundingVectors'] = function(_0x3ea1b2, _0xa8a813) { var _0x544286, _0x346d9d; void 0x0 === _0x3ea1b2 && (_0x3ea1b2 = !0x0), void 0x0 === _0xa8a813 && (_0xa8a813 = null), this['getScene']()['incrementRenderId'](), this['computeWorldMatrix'](!0x0); if (this['getBoundingInfo'] && this['subMeshes']) { var _0x57c22a = this['getBoundingInfo'](); _0x544286 = _0x57c22a['boundingBox']['minimumWorld'], _0x346d9d = _0x57c22a['boundingBox']['maximumWorld']; } else _0x544286 = new _0x485e72['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']), _0x346d9d = new _0x485e72['x'](-Number['MAX_VALUE'],-Number['MAX_VALUE'],-Number['MAX_VALUE']); if (_0x3ea1b2) for (var _0x5248aa = 0x0, _0x22484d = this['getDescendants'](!0x1); _0x5248aa < _0x22484d['length']; _0x5248aa++) { var _0x586d20 = _0x22484d[_0x5248aa]; if (_0x586d20['computeWorldMatrix'](!0x0), (!_0xa8a813 || _0xa8a813(_0x586d20)) && _0x586d20['getBoundingInfo'] && 0x0 !== _0x586d20['getTotalVertices']()) { var _0x427559 = _0x586d20['getBoundingInfo']()['boundingBox'] , _0xb1f621 = _0x427559['minimumWorld'] , _0x5bf36f = _0x427559['maximumWorld']; _0x23bbfe['h']['CheckExtends'](_0xb1f621, _0x544286, _0x346d9d), _0x23bbfe['h']['CheckExtends'](_0x5bf36f, _0x544286, _0x346d9d); } } return { 'min': _0x544286, 'max': _0x346d9d }; } , _0x2a1250['_AnimationRangeFactory'] = function(_0x1135f5, _0xc3c931, _0x1d5b07) { throw _0x1af471['a']['WarnImport']('AnimationRange'); } , _0x2a1250['_NodeConstructors'] = {}, _0x1f4664['c']([Object(_0x37f1b5['c'])()], _0x2a1250['prototype'], 'name', void 0x0), _0x1f4664['c']([Object(_0x37f1b5['c'])()], _0x2a1250['prototype'], 'id', void 0x0), _0x1f4664['c']([Object(_0x37f1b5['c'])()], _0x2a1250['prototype'], 'uniqueId', void 0x0), _0x1f4664['c']([Object(_0x37f1b5['c'])()], _0x2a1250['prototype'], 'state', void 0x0), _0x1f4664['c']([Object(_0x37f1b5['c'])()], _0x2a1250['prototype'], 'metadata', void 0x0), _0x2a1250; }(); } , function(_0x4e836e, _0x53f507, _0x424666) { 'use strict'; _0x424666['d'](_0x53f507, 'a', function() { return _0x31aac8; }); var _0x386dc5 = _0x424666(0x8) , _0x570a13 = _0x424666(0x5c) , _0x3559e7 = _0x424666(0x3) , _0x2265cf = _0x424666(0x13) , _0x31aac8 = function() { function _0x356e0c(_0x4d3dfe, _0x576ae9, _0x50ac53) { void 0x0 === _0x50ac53 && (_0x50ac53 = !0x1), this['isReady'] = !0x1, this['isCube'] = !0x1, this['is3D'] = !0x1, this['isMultiview'] = !0x1, this['url'] = '', this['samplingMode'] = -0x1, this['generateMipMaps'] = !0x1, this['samples'] = 0x0, this['type'] = -0x1, this['format'] = -0x1, this['onLoadedObservable'] = new _0x386dc5['c'](), this['width'] = 0x0, this['height'] = 0x0, this['depth'] = 0x0, this['baseWidth'] = 0x0, this['baseHeight'] = 0x0, this['baseDepth'] = 0x0, this['invertY'] = !0x1, this['_invertVScale'] = !0x1, this['_associatedChannel'] = -0x1, this['_dataSource'] = _0x356e0c['DATASOURCE_UNKNOWN'], this['_buffer'] = null, this['_bufferView'] = null, this['_bufferViewArray'] = null, this['_bufferViewArrayArray'] = null, this['_size'] = 0x0, this['_extension'] = '', this['_files'] = null, this['_workingCanvas'] = null, this['_workingContext'] = null, this['_framebuffer'] = null, this['_depthStencilBuffer'] = null, this['_MSAAFramebuffer'] = null, this['_MSAARenderBuffer'] = null, this['_attachments'] = null, this['_cachedCoordinatesMode'] = null, this['_cachedWrapU'] = null, this['_cachedWrapV'] = null, this['_cachedWrapR'] = null, this['_cachedAnisotropicFilteringLevel'] = null, this['_isDisabled'] = !0x1, this['_compression'] = null, this['_generateStencilBuffer'] = !0x1, this['_generateDepthBuffer'] = !0x1, this['_comparisonFunction'] = 0x0, this['_sphericalPolynomial'] = null, this['_lodGenerationScale'] = 0x0, this['_lodGenerationOffset'] = 0x0, this['_colorTextureArray'] = null, this['_depthStencilTextureArray'] = null, this['_lodTextureHigh'] = null, this['_lodTextureMid'] = null, this['_lodTextureLow'] = null, this['_isRGBD'] = !0x1, this['_webGLTexture'] = null, this['_references'] = 0x1, this['_engine'] = _0x4d3dfe, this['_dataSource'] = _0x576ae9, _0x50ac53 || (this['_webGLTexture'] = _0x4d3dfe['_createTexture']()); } return _0x356e0c['prototype']['getEngine'] = function() { return this['_engine']; } , Object['defineProperty'](_0x356e0c['prototype'], 'dataSource', { 'get': function() { return this['_dataSource']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x356e0c['prototype']['incrementReferences'] = function() { this['_references']++; } , _0x356e0c['prototype']['updateSize'] = function(_0x29f194, _0xe0755b, _0x1c761d) { void 0x0 === _0x1c761d && (_0x1c761d = 0x1), this['width'] = _0x29f194, this['height'] = _0xe0755b, this['depth'] = _0x1c761d, this['baseWidth'] = _0x29f194, this['baseHeight'] = _0xe0755b, this['baseDepth'] = _0x1c761d, this['_size'] = _0x29f194 * _0xe0755b * _0x1c761d; } , _0x356e0c['prototype']['_rebuild'] = function() { var _0x1aa261, _0xaebe78 = this; switch (this['isReady'] = !0x1, this['_cachedCoordinatesMode'] = null, this['_cachedWrapU'] = null, this['_cachedWrapV'] = null, this['_cachedAnisotropicFilteringLevel'] = null, this['_dataSource']) { case _0x356e0c['DATASOURCE_TEMP']: return; case _0x356e0c['DATASOURCE_URL']: return void (_0x1aa261 = this['_engine']['createTexture'](this['url'], !this['generateMipMaps'], this['invertY'], null, this['samplingMode'], function() { _0x1aa261['_swapAndDie'](_0xaebe78), _0xaebe78['isReady'] = !0x0; }, null, this['_buffer'], void 0x0, this['format'])); case _0x356e0c['DATASOURCE_RAW']: return (_0x1aa261 = this['_engine']['createRawTexture'](this['_bufferView'], this['baseWidth'], this['baseHeight'], this['format'], this['generateMipMaps'], this['invertY'], this['samplingMode'], this['_compression']))['_swapAndDie'](this), void (this['isReady'] = !0x0); case _0x356e0c['DATASOURCE_RAW3D']: return (_0x1aa261 = this['_engine']['createRawTexture3D'](this['_bufferView'], this['baseWidth'], this['baseHeight'], this['baseDepth'], this['format'], this['generateMipMaps'], this['invertY'], this['samplingMode'], this['_compression']))['_swapAndDie'](this), void (this['isReady'] = !0x0); case _0x356e0c['DATASOURCE_DYNAMIC']: return (_0x1aa261 = this['_engine']['createDynamicTexture'](this['baseWidth'], this['baseHeight'], this['generateMipMaps'], this['samplingMode']))['_swapAndDie'](this), void this['_engine']['updateDynamicTexture'](this, this['_engine']['getRenderingCanvas'](), this['invertY'], void 0x0, void 0x0, !0x0); case _0x356e0c['DATASOURCE_RENDERTARGET']: var _0x4b0c66 = new _0x570a13['a'](); if (_0x4b0c66['generateDepthBuffer'] = this['_generateDepthBuffer'], _0x4b0c66['generateMipMaps'] = this['generateMipMaps'], _0x4b0c66['generateStencilBuffer'] = this['_generateStencilBuffer'], _0x4b0c66['samplingMode'] = this['samplingMode'], _0x4b0c66['type'] = this['type'], this['isCube']) _0x1aa261 = this['_engine']['createRenderTargetCubeTexture'](this['width'], _0x4b0c66); else { var _0x529c34 = { 'width': this['width'], 'height': this['height'] }; _0x1aa261 = this['_engine']['createRenderTargetTexture'](_0x529c34, _0x4b0c66); } return _0x1aa261['_swapAndDie'](this), void (this['isReady'] = !0x0); case _0x356e0c['DATASOURCE_DEPTHTEXTURE']: var _0x2bec14 = { 'bilinearFiltering': this['samplingMode'] !== _0x3559e7['a']['TEXTURE_BILINEAR_SAMPLINGMODE'], 'comparisonFunction': this['_comparisonFunction'], 'generateStencil': this['_generateStencilBuffer'], 'isCube': this['isCube'] }; return (_0x1aa261 = this['_engine']['createDepthStencilTexture']({ 'width': this['width'], 'height': this['height'] }, _0x2bec14))['_swapAndDie'](this), void (this['isReady'] = !0x0); case _0x356e0c['DATASOURCE_CUBE']: return void (_0x1aa261 = this['_engine']['createCubeTexture'](this['url'], null, this['_files'], !this['generateMipMaps'], function() { _0x1aa261['_swapAndDie'](_0xaebe78), _0xaebe78['isReady'] = !0x0; }, null, this['format'], this['_extension'])); case _0x356e0c['DATASOURCE_CUBERAW']: return (_0x1aa261 = this['_engine']['createRawCubeTexture'](this['_bufferViewArray'], this['width'], this['format'], this['type'], this['generateMipMaps'], this['invertY'], this['samplingMode'], this['_compression']))['_swapAndDie'](this), void (this['isReady'] = !0x0); case _0x356e0c['DATASOURCE_CUBERAW_RGBD']: return _0x1aa261 = this['_engine']['createRawCubeTexture'](null, this['width'], this['format'], this['type'], this['generateMipMaps'], this['invertY'], this['samplingMode'], this['_compression']), void _0x356e0c['_UpdateRGBDAsync'](_0x1aa261, this['_bufferViewArrayArray'], this['_sphericalPolynomial'], this['_lodGenerationScale'], this['_lodGenerationOffset'])['then'](function() { _0x1aa261['_swapAndDie'](_0xaebe78), _0xaebe78['isReady'] = !0x0; }); case _0x356e0c['DATASOURCE_CUBEPREFILTERED']: return void ((_0x1aa261 = this['_engine']['createPrefilteredCubeTexture'](this['url'], null, this['_lodGenerationScale'], this['_lodGenerationOffset'], function(_0x584e61) { _0x584e61 && _0x584e61['_swapAndDie'](_0xaebe78), _0xaebe78['isReady'] = !0x0; }, null, this['format'], this['_extension']))['_sphericalPolynomial'] = this['_sphericalPolynomial']); } } , _0x356e0c['prototype']['_swapAndDie'] = function(_0x52fa6e) { _0x52fa6e['_webGLTexture'] = this['_webGLTexture'], _0x52fa6e['_isRGBD'] = this['_isRGBD'], this['_framebuffer'] && (_0x52fa6e['_framebuffer'] = this['_framebuffer']), this['_depthStencilBuffer'] && (_0x52fa6e['_depthStencilBuffer'] = this['_depthStencilBuffer']), this['_lodTextureHigh'] && (_0x52fa6e['_lodTextureHigh'] && _0x52fa6e['_lodTextureHigh']['dispose'](), _0x52fa6e['_lodTextureHigh'] = this['_lodTextureHigh']), this['_lodTextureMid'] && (_0x52fa6e['_lodTextureMid'] && _0x52fa6e['_lodTextureMid']['dispose'](), _0x52fa6e['_lodTextureMid'] = this['_lodTextureMid']), this['_lodTextureLow'] && (_0x52fa6e['_lodTextureLow'] && _0x52fa6e['_lodTextureLow']['dispose'](), _0x52fa6e['_lodTextureLow'] = this['_lodTextureLow']); var _0x4759e4 = this['_engine']['getLoadedTexturesCache']() , _0x1df779 = _0x4759e4['indexOf'](this); -0x1 !== _0x1df779 && _0x4759e4['splice'](_0x1df779, 0x1); } , _0x356e0c['prototype']['dispose'] = function() { this['_webGLTexture'] && (this['_references']--, 0x0 === this['_references'] && (this['_engine']['_releaseTexture'](this), this['_webGLTexture'] = null)); } , _0x356e0c['_UpdateRGBDAsync'] = function(_0x32b0b6, _0x46d3c6, _0x14dadb, _0xdf8528, _0x5404d4) { throw _0x2265cf['a']['WarnImport']('environmentTextureTools'); } , _0x356e0c['DATASOURCE_UNKNOWN'] = 0x0, _0x356e0c['DATASOURCE_URL'] = 0x1, _0x356e0c['DATASOURCE_TEMP'] = 0x2, _0x356e0c['DATASOURCE_RAW'] = 0x3, _0x356e0c['DATASOURCE_DYNAMIC'] = 0x4, _0x356e0c['DATASOURCE_RENDERTARGET'] = 0x5, _0x356e0c['DATASOURCE_MULTIRENDERTARGET'] = 0x6, _0x356e0c['DATASOURCE_CUBE'] = 0x7, _0x356e0c['DATASOURCE_CUBERAW'] = 0x8, _0x356e0c['DATASOURCE_CUBEPREFILTERED'] = 0x9, _0x356e0c['DATASOURCE_RAW3D'] = 0xa, _0x356e0c['DATASOURCE_DEPTHTEXTURE'] = 0xb, _0x356e0c['DATASOURCE_CUBERAW_RGBD'] = 0xc, _0x356e0c; }(); } , function(_0x474591, _0x41f5cf, _0x190a54) { 'use strict'; _0x190a54['d'](_0x41f5cf, 'a', function() { return _0x197f32; }); var _0x1eabbe = _0x190a54(0x6) , _0x23b20e = _0x190a54(0x22) , _0x4aa666 = _0x190a54(0x0) , _0x2c9221 = _0x190a54(0x18) , _0x3994b1 = _0x190a54(0xb) , _0x2ff249 = _0x190a54(0x25); _0x3994b1['a']['_PhysicsImpostorParser'] = function(_0x3fae01, _0x5b4347, _0x3c44a7) { return new _0x197f32(_0x5b4347,_0x3c44a7['physicsImpostor'],{ 'mass': _0x3c44a7['physicsMass'], 'friction': _0x3c44a7['physicsFriction'], 'restitution': _0x3c44a7['physicsRestitution'] },_0x3fae01); } ; var _0x197f32 = function() { function _0x165cb0(_0x3f6235, _0x206342, _0x3ba14e, _0x57de4f) { var _0x25981f = this; void 0x0 === _0x3ba14e && (_0x3ba14e = { 'mass': 0x0 }), this['object'] = _0x3f6235, this['type'] = _0x206342, this['_options'] = _0x3ba14e, this['_scene'] = _0x57de4f, this['_pluginData'] = {}, this['_bodyUpdateRequired'] = !0x1, this['_onBeforePhysicsStepCallbacks'] = new Array(), this['_onAfterPhysicsStepCallbacks'] = new Array(), this['_onPhysicsCollideCallbacks'] = [], this['_deltaPosition'] = _0x4aa666['x']['Zero'](), this['_isDisposed'] = !0x1, this['soft'] = !0x1, this['segments'] = 0x0, this['_tmpQuat'] = new _0x4aa666['q'](), this['_tmpQuat2'] = new _0x4aa666['q'](), this['beforeStep'] = function() { _0x25981f['_physicsEngine'] && (_0x25981f['object']['translate'](_0x25981f['_deltaPosition'], -0x1), _0x25981f['_deltaRotationConjugated'] && _0x25981f['object']['rotationQuaternion'] && _0x25981f['object']['rotationQuaternion']['multiplyToRef'](_0x25981f['_deltaRotationConjugated'], _0x25981f['object']['rotationQuaternion']), _0x25981f['object']['computeWorldMatrix'](!0x1), _0x25981f['object']['parent'] && _0x25981f['object']['rotationQuaternion'] ? (_0x25981f['getParentsRotation'](), _0x25981f['_tmpQuat']['multiplyToRef'](_0x25981f['object']['rotationQuaternion'], _0x25981f['_tmpQuat'])) : _0x25981f['_tmpQuat']['copyFrom'](_0x25981f['object']['rotationQuaternion'] || new _0x4aa666['q']()), _0x25981f['_options']['disableBidirectionalTransformation'] || _0x25981f['object']['rotationQuaternion'] && _0x25981f['_physicsEngine']['getPhysicsPlugin']()['setPhysicsBodyTransformation'](_0x25981f, _0x25981f['object']['getAbsolutePosition'](), _0x25981f['_tmpQuat']), _0x25981f['_onBeforePhysicsStepCallbacks']['forEach'](function(_0x3decc1) { _0x3decc1(_0x25981f); })); } , this['afterStep'] = function() { _0x25981f['_physicsEngine'] && (_0x25981f['_onAfterPhysicsStepCallbacks']['forEach'](function(_0x2f1c50) { _0x2f1c50(_0x25981f); }), _0x25981f['_physicsEngine']['getPhysicsPlugin']()['setTransformationFromPhysicsBody'](_0x25981f), _0x25981f['object']['parent'] && _0x25981f['object']['rotationQuaternion'] && (_0x25981f['getParentsRotation'](), _0x25981f['_tmpQuat']['conjugateInPlace'](), _0x25981f['_tmpQuat']['multiplyToRef'](_0x25981f['object']['rotationQuaternion'], _0x25981f['object']['rotationQuaternion'])), _0x25981f['object']['setAbsolutePosition'](_0x25981f['object']['position']), _0x25981f['_deltaRotation'] && _0x25981f['object']['rotationQuaternion'] && _0x25981f['object']['rotationQuaternion']['multiplyToRef'](_0x25981f['_deltaRotation'], _0x25981f['object']['rotationQuaternion']), _0x25981f['object']['translate'](_0x25981f['_deltaPosition'], 0x1)); } , this['onCollideEvent'] = null, this['onCollide'] = function(_0x3dee91) { if ((_0x25981f['_onPhysicsCollideCallbacks']['length'] || _0x25981f['onCollideEvent']) && _0x25981f['_physicsEngine']) { var _0x31da21 = _0x25981f['_physicsEngine']['getImpostorWithPhysicsBody'](_0x3dee91['body']); _0x31da21 && (_0x25981f['onCollideEvent'] && _0x25981f['onCollideEvent'](_0x25981f, _0x31da21), _0x25981f['_onPhysicsCollideCallbacks']['filter'](function(_0x2d3743) { return -0x1 !== _0x2d3743['otherImpostors']['indexOf'](_0x31da21); })['forEach'](function(_0x4c617d) { _0x4c617d['callback'](_0x25981f, _0x31da21); })); } } , this['object'] ? (!this['_scene'] && _0x3f6235['getScene'] && (this['_scene'] = _0x3f6235['getScene']()), this['_scene'] && (this['type'] > 0x64 && (this['soft'] = !0x0), this['_physicsEngine'] = this['_scene']['getPhysicsEngine'](), this['_physicsEngine'] ? (this['object']['rotationQuaternion'] || (this['object']['rotation'] ? this['object']['rotationQuaternion'] = _0x4aa666['q']['RotationYawPitchRoll'](this['object']['rotation']['y'], this['object']['rotation']['x'], this['object']['rotation']['z']) : this['object']['rotationQuaternion'] = new _0x4aa666['q']()), this['_options']['mass'] = void 0x0 === _0x3ba14e['mass'] ? 0x0 : _0x3ba14e['mass'], this['_options']['friction'] = void 0x0 === _0x3ba14e['friction'] ? 0.2 : _0x3ba14e['friction'], this['_options']['restitution'] = void 0x0 === _0x3ba14e['restitution'] ? 0.2 : _0x3ba14e['restitution'], this['soft'] && (this['_options']['mass'] = this['_options']['mass'] > 0x0 ? this['_options']['mass'] : 0x1, this['_options']['pressure'] = void 0x0 === _0x3ba14e['pressure'] ? 0xc8 : _0x3ba14e['pressure'], this['_options']['stiffness'] = void 0x0 === _0x3ba14e['stiffness'] ? 0x1 : _0x3ba14e['stiffness'], this['_options']['velocityIterations'] = void 0x0 === _0x3ba14e['velocityIterations'] ? 0x14 : _0x3ba14e['velocityIterations'], this['_options']['positionIterations'] = void 0x0 === _0x3ba14e['positionIterations'] ? 0x14 : _0x3ba14e['positionIterations'], this['_options']['fixedPoints'] = void 0x0 === _0x3ba14e['fixedPoints'] ? 0x0 : _0x3ba14e['fixedPoints'], this['_options']['margin'] = void 0x0 === _0x3ba14e['margin'] ? 0x0 : _0x3ba14e['margin'], this['_options']['damping'] = void 0x0 === _0x3ba14e['damping'] ? 0x0 : _0x3ba14e['damping'], this['_options']['path'] = void 0x0 === _0x3ba14e['path'] ? null : _0x3ba14e['path'], this['_options']['shape'] = void 0x0 === _0x3ba14e['shape'] ? null : _0x3ba14e['shape']), this['_joints'] = [], !this['object']['parent'] || this['_options']['ignoreParent'] ? this['_init']() : this['object']['parent']['physicsImpostor'] && _0x1eabbe['a']['Warn']('You\x20must\x20affect\x20impostors\x20to\x20children\x20before\x20affecting\x20impostor\x20to\x20parent.')) : _0x1eabbe['a']['Error']('Physics\x20not\x20enabled.\x20Please\x20use\x20scene.enablePhysics(...)\x20before\x20creating\x20impostors.'))) : _0x1eabbe['a']['Error']('No\x20object\x20was\x20provided.\x20A\x20physics\x20object\x20is\x20obligatory'); } return Object['defineProperty'](_0x165cb0['prototype'], 'isDisposed', { 'get': function() { return this['_isDisposed']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x165cb0['prototype'], 'mass', { 'get': function() { return this['_physicsEngine'] ? this['_physicsEngine']['getPhysicsPlugin']()['getBodyMass'](this) : 0x0; }, 'set': function(_0x7e81c8) { this['setMass'](_0x7e81c8); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x165cb0['prototype'], 'friction', { 'get': function() { return this['_physicsEngine'] ? this['_physicsEngine']['getPhysicsPlugin']()['getBodyFriction'](this) : 0x0; }, 'set': function(_0x2f7a17) { this['_physicsEngine'] && this['_physicsEngine']['getPhysicsPlugin']()['setBodyFriction'](this, _0x2f7a17); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x165cb0['prototype'], 'restitution', { 'get': function() { return this['_physicsEngine'] ? this['_physicsEngine']['getPhysicsPlugin']()['getBodyRestitution'](this) : 0x0; }, 'set': function(_0x4923c0) { this['_physicsEngine'] && this['_physicsEngine']['getPhysicsPlugin']()['setBodyRestitution'](this, _0x4923c0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x165cb0['prototype'], 'pressure', { 'get': function() { if (!this['_physicsEngine']) return 0x0; var _0x4c3e6c = this['_physicsEngine']['getPhysicsPlugin'](); return _0x4c3e6c['setBodyPressure'] ? _0x4c3e6c['getBodyPressure'](this) : 0x0; }, 'set': function(_0x2d77f5) { if (this['_physicsEngine']) { var _0x4d3dea = this['_physicsEngine']['getPhysicsPlugin'](); _0x4d3dea['setBodyPressure'] && _0x4d3dea['setBodyPressure'](this, _0x2d77f5); } }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x165cb0['prototype'], 'stiffness', { 'get': function() { if (!this['_physicsEngine']) return 0x0; var _0x4414ce = this['_physicsEngine']['getPhysicsPlugin'](); return _0x4414ce['getBodyStiffness'] ? _0x4414ce['getBodyStiffness'](this) : 0x0; }, 'set': function(_0x2c5b11) { if (this['_physicsEngine']) { var _0x54bd95 = this['_physicsEngine']['getPhysicsPlugin'](); _0x54bd95['setBodyStiffness'] && _0x54bd95['setBodyStiffness'](this, _0x2c5b11); } }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x165cb0['prototype'], 'velocityIterations', { 'get': function() { if (!this['_physicsEngine']) return 0x0; var _0xebf879 = this['_physicsEngine']['getPhysicsPlugin'](); return _0xebf879['getBodyVelocityIterations'] ? _0xebf879['getBodyVelocityIterations'](this) : 0x0; }, 'set': function(_0x3ce4b0) { if (this['_physicsEngine']) { var _0x435d6b = this['_physicsEngine']['getPhysicsPlugin'](); _0x435d6b['setBodyVelocityIterations'] && _0x435d6b['setBodyVelocityIterations'](this, _0x3ce4b0); } }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x165cb0['prototype'], 'positionIterations', { 'get': function() { if (!this['_physicsEngine']) return 0x0; var _0x14011e = this['_physicsEngine']['getPhysicsPlugin'](); return _0x14011e['getBodyPositionIterations'] ? _0x14011e['getBodyPositionIterations'](this) : 0x0; }, 'set': function(_0x3a4448) { if (this['_physicsEngine']) { var _0x4d901a = this['_physicsEngine']['getPhysicsPlugin'](); _0x4d901a['setBodyPositionIterations'] && _0x4d901a['setBodyPositionIterations'](this, _0x3a4448); } }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x165cb0['prototype']['_init'] = function() { this['_physicsEngine'] && (this['_physicsEngine']['removeImpostor'](this), this['physicsBody'] = null, this['_parent'] = this['_parent'] || this['_getPhysicsParent'](), this['_isDisposed'] || this['parent'] && !this['_options']['ignoreParent'] || this['_physicsEngine']['addImpostor'](this)); } , _0x165cb0['prototype']['_getPhysicsParent'] = function() { return this['object']['parent']instanceof _0x2c9221['a'] ? this['object']['parent']['physicsImpostor'] : null; } , _0x165cb0['prototype']['isBodyInitRequired'] = function() { return this['_bodyUpdateRequired'] || !this['_physicsBody'] && !this['_parent']; } , _0x165cb0['prototype']['setScalingUpdated'] = function() { this['forceUpdate'](); } , _0x165cb0['prototype']['forceUpdate'] = function() { this['_init'](), this['parent'] && !this['_options']['ignoreParent'] && this['parent']['forceUpdate'](); } , Object['defineProperty'](_0x165cb0['prototype'], 'physicsBody', { 'get': function() { return this['_parent'] && !this['_options']['ignoreParent'] ? this['_parent']['physicsBody'] : this['_physicsBody']; }, 'set': function(_0x2cfff1) { this['_physicsBody'] && this['_physicsEngine'] && this['_physicsEngine']['getPhysicsPlugin']()['removePhysicsBody'](this), this['_physicsBody'] = _0x2cfff1, this['resetUpdateFlags'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x165cb0['prototype'], 'parent', { 'get': function() { return !this['_options']['ignoreParent'] && this['_parent'] ? this['_parent'] : null; }, 'set': function(_0x476d5d) { this['_parent'] = _0x476d5d; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x165cb0['prototype']['resetUpdateFlags'] = function() { this['_bodyUpdateRequired'] = !0x1; } , _0x165cb0['prototype']['getObjectExtendSize'] = function() { if (this['object']['getBoundingInfo']) { var _0x110df3 = this['object']['rotationQuaternion']; this['object']['rotationQuaternion'] = _0x165cb0['IDENTITY_QUATERNION'], this['object']['computeWorldMatrix'] && this['object']['computeWorldMatrix'](!0x0); var _0x90c294 = this['object']['getBoundingInfo']()['boundingBox']['extendSizeWorld']['scale'](0x2); return this['object']['rotationQuaternion'] = _0x110df3, this['object']['computeWorldMatrix'] && this['object']['computeWorldMatrix'](!0x0), _0x90c294; } return _0x165cb0['DEFAULT_OBJECT_SIZE']; } , _0x165cb0['prototype']['getObjectCenter'] = function() { return this['object']['getBoundingInfo'] ? this['object']['getBoundingInfo']()['boundingBox']['centerWorld'] : this['object']['position']; } , _0x165cb0['prototype']['getParam'] = function(_0xbc6036) { return this['_options'][_0xbc6036]; } , _0x165cb0['prototype']['setParam'] = function(_0x56fc93, _0x3c38d2) { this['_options'][_0x56fc93] = _0x3c38d2, this['_bodyUpdateRequired'] = !0x0; } , _0x165cb0['prototype']['setMass'] = function(_0xa08601) { this['getParam']('mass') !== _0xa08601 && this['setParam']('mass', _0xa08601), this['_physicsEngine'] && this['_physicsEngine']['getPhysicsPlugin']()['setBodyMass'](this, _0xa08601); } , _0x165cb0['prototype']['getLinearVelocity'] = function() { return this['_physicsEngine'] ? this['_physicsEngine']['getPhysicsPlugin']()['getLinearVelocity'](this) : _0x4aa666['x']['Zero'](); } , _0x165cb0['prototype']['setLinearVelocity'] = function(_0x27d865) { this['_physicsEngine'] && this['_physicsEngine']['getPhysicsPlugin']()['setLinearVelocity'](this, _0x27d865); } , _0x165cb0['prototype']['getAngularVelocity'] = function() { return this['_physicsEngine'] ? this['_physicsEngine']['getPhysicsPlugin']()['getAngularVelocity'](this) : _0x4aa666['x']['Zero'](); } , _0x165cb0['prototype']['setAngularVelocity'] = function(_0x2f6a7d) { this['_physicsEngine'] && this['_physicsEngine']['getPhysicsPlugin']()['setAngularVelocity'](this, _0x2f6a7d); } , _0x165cb0['prototype']['executeNativeFunction'] = function(_0x3994eb) { this['_physicsEngine'] && _0x3994eb(this['_physicsEngine']['getPhysicsPlugin']()['world'], this['physicsBody']); } , _0x165cb0['prototype']['registerBeforePhysicsStep'] = function(_0x34ef61) { this['_onBeforePhysicsStepCallbacks']['push'](_0x34ef61); } , _0x165cb0['prototype']['unregisterBeforePhysicsStep'] = function(_0x45ce7d) { var _0x3211e1 = this['_onBeforePhysicsStepCallbacks']['indexOf'](_0x45ce7d); _0x3211e1 > -0x1 ? this['_onBeforePhysicsStepCallbacks']['splice'](_0x3211e1, 0x1) : _0x1eabbe['a']['Warn']('Function\x20to\x20remove\x20was\x20not\x20found'); } , _0x165cb0['prototype']['registerAfterPhysicsStep'] = function(_0x40dbdd) { this['_onAfterPhysicsStepCallbacks']['push'](_0x40dbdd); } , _0x165cb0['prototype']['unregisterAfterPhysicsStep'] = function(_0x12f322) { var _0x24556d = this['_onAfterPhysicsStepCallbacks']['indexOf'](_0x12f322); _0x24556d > -0x1 ? this['_onAfterPhysicsStepCallbacks']['splice'](_0x24556d, 0x1) : _0x1eabbe['a']['Warn']('Function\x20to\x20remove\x20was\x20not\x20found'); } , _0x165cb0['prototype']['registerOnPhysicsCollide'] = function(_0x4f9f1e, _0x138b7b) { var _0x81e3b2 = _0x4f9f1e instanceof Array ? _0x4f9f1e : [_0x4f9f1e]; this['_onPhysicsCollideCallbacks']['push']({ 'callback': _0x138b7b, 'otherImpostors': _0x81e3b2 }); } , _0x165cb0['prototype']['unregisterOnPhysicsCollide'] = function(_0x2f907c, _0x15fcf8) { var _0x21a349 = _0x2f907c instanceof Array ? _0x2f907c : [_0x2f907c] , _0x45a6e0 = -0x1; this['_onPhysicsCollideCallbacks']['some'](function(_0x4a3a5a, _0x463e41) { if (_0x4a3a5a['callback'] === _0x15fcf8 && _0x4a3a5a['otherImpostors']['length'] === _0x21a349['length']) { var _0x52df01 = _0x4a3a5a['otherImpostors']['every'](function(_0x2cb0a9) { return _0x21a349['indexOf'](_0x2cb0a9) > -0x1; }); return _0x52df01 && (_0x45a6e0 = _0x463e41), _0x52df01; } return !0x1; }) ? this['_onPhysicsCollideCallbacks']['splice'](_0x45a6e0, 0x1) : _0x1eabbe['a']['Warn']('Function\x20to\x20remove\x20was\x20not\x20found'); } , _0x165cb0['prototype']['getParentsRotation'] = function() { var _0x5c72c0 = this['object']['parent']; for (this['_tmpQuat']['copyFromFloats'](0x0, 0x0, 0x0, 0x1); _0x5c72c0; ) _0x5c72c0['rotationQuaternion'] ? this['_tmpQuat2']['copyFrom'](_0x5c72c0['rotationQuaternion']) : _0x4aa666['q']['RotationYawPitchRollToRef'](_0x5c72c0['rotation']['y'], _0x5c72c0['rotation']['x'], _0x5c72c0['rotation']['z'], this['_tmpQuat2']), this['_tmpQuat']['multiplyToRef'](this['_tmpQuat2'], this['_tmpQuat']), _0x5c72c0 = _0x5c72c0['parent']; return this['_tmpQuat']; } , _0x165cb0['prototype']['applyForce'] = function(_0x107918, _0x4d6025) { return this['_physicsEngine'] && this['_physicsEngine']['getPhysicsPlugin']()['applyForce'](this, _0x107918, _0x4d6025), this; } , _0x165cb0['prototype']['applyImpulse'] = function(_0x188d10, _0x3a2444) { return this['_physicsEngine'] && this['_physicsEngine']['getPhysicsPlugin']()['applyImpulse'](this, _0x188d10, _0x3a2444), this; } , _0x165cb0['prototype']['createJoint'] = function(_0x31f133, _0x127012, _0x4e1c6a) { var _0x24521d = new _0x2ff249['e'](_0x127012,_0x4e1c6a); return this['addJoint'](_0x31f133, _0x24521d), this; } , _0x165cb0['prototype']['addJoint'] = function(_0x1cd94d, _0x57c12e) { return this['_joints']['push']({ 'otherImpostor': _0x1cd94d, 'joint': _0x57c12e }), this['_physicsEngine'] && this['_physicsEngine']['addJoint'](this, _0x1cd94d, _0x57c12e), this; } , _0x165cb0['prototype']['addAnchor'] = function(_0x34ea8f, _0x369f6c, _0x598616, _0x2975cf, _0x57f70d) { if (!this['_physicsEngine']) return this; var _0x370d26 = this['_physicsEngine']['getPhysicsPlugin'](); return _0x370d26['appendAnchor'] ? (this['_physicsEngine'] && _0x370d26['appendAnchor'](this, _0x34ea8f, _0x369f6c, _0x598616, _0x2975cf, _0x57f70d), this) : this; } , _0x165cb0['prototype']['addHook'] = function(_0x5e5616, _0x3b3749, _0x1841eb, _0x325913) { if (!this['_physicsEngine']) return this; var _0x5e9cbd = this['_physicsEngine']['getPhysicsPlugin'](); return _0x5e9cbd['appendAnchor'] ? (this['_physicsEngine'] && _0x5e9cbd['appendHook'](this, _0x5e5616, _0x3b3749, _0x1841eb, _0x325913), this) : this; } , _0x165cb0['prototype']['sleep'] = function() { return this['_physicsEngine'] && this['_physicsEngine']['getPhysicsPlugin']()['sleepBody'](this), this; } , _0x165cb0['prototype']['wakeUp'] = function() { return this['_physicsEngine'] && this['_physicsEngine']['getPhysicsPlugin']()['wakeUpBody'](this), this; } , _0x165cb0['prototype']['clone'] = function(_0x1f519f) { return _0x1f519f ? new _0x165cb0(_0x1f519f,this['type'],this['_options'],this['_scene']) : null; } , _0x165cb0['prototype']['dispose'] = function() { var _0x2f07ff = this; this['_physicsEngine'] && (this['_joints']['forEach'](function(_0x58b70d) { _0x2f07ff['_physicsEngine'] && _0x2f07ff['_physicsEngine']['removeJoint'](_0x2f07ff, _0x58b70d['otherImpostor'], _0x58b70d['joint']); }), this['_physicsEngine']['removeImpostor'](this), this['parent'] && this['parent']['forceUpdate'](), this['_isDisposed'] = !0x0); } , _0x165cb0['prototype']['setDeltaPosition'] = function(_0x26af21) { this['_deltaPosition']['copyFrom'](_0x26af21); } , _0x165cb0['prototype']['setDeltaRotation'] = function(_0x108fc8) { this['_deltaRotation'] || (this['_deltaRotation'] = new _0x4aa666['q']()), this['_deltaRotation']['copyFrom'](_0x108fc8), this['_deltaRotationConjugated'] = this['_deltaRotation']['conjugate'](); } , _0x165cb0['prototype']['getBoxSizeToRef'] = function(_0x2eea9f) { return this['_physicsEngine'] && this['_physicsEngine']['getPhysicsPlugin']()['getBoxSizeToRef'](this, _0x2eea9f), this; } , _0x165cb0['prototype']['getRadius'] = function() { return this['_physicsEngine'] ? this['_physicsEngine']['getPhysicsPlugin']()['getRadius'](this) : 0x0; } , _0x165cb0['prototype']['syncBoneWithImpostor'] = function(_0x46c7af, _0xc57250, _0x19659b, _0x493ee9, _0x101bc9) { var _0x16b084 = _0x165cb0['_tmpVecs'][0x0] , _0x56ddca = this['object']; if (_0x56ddca['rotationQuaternion']) if (_0x101bc9) { var _0x2e018b = _0x165cb0['_tmpQuat']; _0x56ddca['rotationQuaternion']['multiplyToRef'](_0x101bc9, _0x2e018b), _0x46c7af['setRotationQuaternion'](_0x2e018b, _0x4aa666['s']['WORLD'], _0xc57250); } else _0x46c7af['setRotationQuaternion'](_0x56ddca['rotationQuaternion'], _0x4aa666['s']['WORLD'], _0xc57250); _0x16b084['x'] = 0x0, _0x16b084['y'] = 0x0, _0x16b084['z'] = 0x0, _0x19659b && (_0x16b084['x'] = _0x19659b['x'], _0x16b084['y'] = _0x19659b['y'], _0x16b084['z'] = _0x19659b['z'], _0x46c7af['getDirectionToRef'](_0x16b084, _0xc57250, _0x16b084), null == _0x493ee9 && (_0x493ee9 = _0x19659b['length']()), _0x16b084['x'] *= _0x493ee9, _0x16b084['y'] *= _0x493ee9, _0x16b084['z'] *= _0x493ee9), _0x46c7af['getParent']() ? (_0x16b084['addInPlace'](_0x56ddca['getAbsolutePosition']()), _0x46c7af['setAbsolutePosition'](_0x16b084, _0xc57250)) : (_0xc57250['setAbsolutePosition'](_0x56ddca['getAbsolutePosition']()), _0xc57250['position']['x'] -= _0x16b084['x'], _0xc57250['position']['y'] -= _0x16b084['y'], _0xc57250['position']['z'] -= _0x16b084['z']); } , _0x165cb0['prototype']['syncImpostorWithBone'] = function(_0x4222b9, _0x5541ca, _0x25f4bc, _0xa2ca0f, _0x29e3e2, _0x3f958a) { var _0x2f9fea = this['object']; if (_0x2f9fea['rotationQuaternion']) if (_0x29e3e2) { var _0x397534 = _0x165cb0['_tmpQuat']; _0x4222b9['getRotationQuaternionToRef'](_0x4aa666['s']['WORLD'], _0x5541ca, _0x397534), _0x397534['multiplyToRef'](_0x29e3e2, _0x2f9fea['rotationQuaternion']); } else _0x4222b9['getRotationQuaternionToRef'](_0x4aa666['s']['WORLD'], _0x5541ca, _0x2f9fea['rotationQuaternion']); var _0x2312de = _0x165cb0['_tmpVecs'][0x0] , _0x3c8a74 = _0x165cb0['_tmpVecs'][0x1]; _0x3f958a || ((_0x3f958a = _0x165cb0['_tmpVecs'][0x2])['x'] = 0x0, _0x3f958a['y'] = 0x1, _0x3f958a['z'] = 0x0), _0x4222b9['getDirectionToRef'](_0x3f958a, _0x5541ca, _0x3c8a74), _0x4222b9['getAbsolutePositionToRef'](_0x5541ca, _0x2312de), null == _0xa2ca0f && _0x25f4bc && (_0xa2ca0f = _0x25f4bc['length']()), null != _0xa2ca0f && (_0x2312de['x'] += _0x3c8a74['x'] * _0xa2ca0f, _0x2312de['y'] += _0x3c8a74['y'] * _0xa2ca0f, _0x2312de['z'] += _0x3c8a74['z'] * _0xa2ca0f), _0x2f9fea['setAbsolutePosition'](_0x2312de); } , _0x165cb0['DEFAULT_OBJECT_SIZE'] = new _0x4aa666['x'](0x1,0x1,0x1), _0x165cb0['IDENTITY_QUATERNION'] = _0x4aa666['q']['Identity'](), _0x165cb0['_tmpVecs'] = _0x23b20e['a']['BuildArray'](0x3, _0x4aa666['x']['Zero']), _0x165cb0['_tmpQuat'] = _0x4aa666['q']['Identity'](), _0x165cb0['NoImpostor'] = 0x0, _0x165cb0['SphereImpostor'] = 0x1, _0x165cb0['BoxImpostor'] = 0x2, _0x165cb0['PlaneImpostor'] = 0x3, _0x165cb0['MeshImpostor'] = 0x4, _0x165cb0['CylinderImpostor'] = 0x7, _0x165cb0['ParticleImpostor'] = 0x8, _0x165cb0['HeightmapImpostor'] = 0x9, _0x165cb0['ConvexHullImpostor'] = 0xa, _0x165cb0['RopeImpostor'] = 0x65, _0x165cb0['ClothImpostor'] = 0x66, _0x165cb0['SoftbodyImpostor'] = 0x67, _0x165cb0; }(); } , function(_0x59db1f, _0x4814c3, _0x46322d) { 'use strict'; _0x46322d['d'](_0x4814c3, 'a', function() { return _0x50bd15; }), _0x46322d['d'](_0x4814c3, 'b', function() { return _0x1d4c06; }); var _0x3354d7 = _0x46322d(0x1) , _0x50bd15 = function() { function _0x165eb0(_0x332519) { this['length'] = 0x0, this['data'] = new Array(_0x332519), this['_id'] = _0x165eb0['_GlobalId']++; } return _0x165eb0['prototype']['push'] = function(_0x4d7c07) { this['data'][this['length']++] = _0x4d7c07, this['length'] > this['data']['length'] && (this['data']['length'] *= 0x2); } , _0x165eb0['prototype']['forEach'] = function(_0x5d8ee5) { for (var _0x352008 = 0x0; _0x352008 < this['length']; _0x352008++) _0x5d8ee5(this['data'][_0x352008]); } , _0x165eb0['prototype']['sort'] = function(_0x54cc8f) { this['data']['sort'](_0x54cc8f); } , _0x165eb0['prototype']['reset'] = function() { this['length'] = 0x0; } , _0x165eb0['prototype']['dispose'] = function() { this['reset'](), this['data'] && (this['data']['length'] = 0x0, this['data'] = []); } , _0x165eb0['prototype']['concat'] = function(_0x2918d8) { if (0x0 !== _0x2918d8['length']) { this['length'] + _0x2918d8['length'] > this['data']['length'] && (this['data']['length'] = 0x2 * (this['length'] + _0x2918d8['length'])); for (var _0xe687db = 0x0; _0xe687db < _0x2918d8['length']; _0xe687db++) this['data'][this['length']++] = (_0x2918d8['data'] || _0x2918d8)[_0xe687db]; } } , _0x165eb0['prototype']['indexOf'] = function(_0x25b6ed) { var _0x4538b9 = this['data']['indexOf'](_0x25b6ed); return _0x4538b9 >= this['length'] ? -0x1 : _0x4538b9; } , _0x165eb0['prototype']['contains'] = function(_0x5c2534) { return -0x1 !== this['indexOf'](_0x5c2534); } , _0x165eb0['_GlobalId'] = 0x0, _0x165eb0; }() , _0x1d4c06 = function(_0x43b398) { function _0x317330() { var _0x5757e5 = null !== _0x43b398 && _0x43b398['apply'](this, arguments) || this; return _0x5757e5['_duplicateId'] = 0x0, _0x5757e5; } return _0x3354d7['d'](_0x317330, _0x43b398), _0x317330['prototype']['push'] = function(_0x4a5ec2) { _0x43b398['prototype']['push']['call'](this, _0x4a5ec2), _0x4a5ec2['__smartArrayFlags'] || (_0x4a5ec2['__smartArrayFlags'] = {}), _0x4a5ec2['__smartArrayFlags'][this['_id']] = this['_duplicateId']; } , _0x317330['prototype']['pushNoDuplicate'] = function(_0xe8c85b) { return (!_0xe8c85b['__smartArrayFlags'] || _0xe8c85b['__smartArrayFlags'][this['_id']] !== this['_duplicateId']) && (this['push'](_0xe8c85b), !0x0); } , _0x317330['prototype']['reset'] = function() { _0x43b398['prototype']['reset']['call'](this), this['_duplicateId']++; } , _0x317330['prototype']['concatWithNoDuplicate'] = function(_0x43d39b) { if (0x0 !== _0x43d39b['length']) { this['length'] + _0x43d39b['length'] > this['data']['length'] && (this['data']['length'] = 0x2 * (this['length'] + _0x43d39b['length'])); for (var _0x16a4f9 = 0x0; _0x16a4f9 < _0x43d39b['length']; _0x16a4f9++) { var _0x58230a = (_0x43d39b['data'] || _0x43d39b)[_0x16a4f9]; this['pushNoDuplicate'](_0x58230a); } } } , _0x317330; }(_0x50bd15); } , function(_0x453ce7, _0x3c20b2, _0x3a50fb) { 'use strict'; _0x3a50fb['d'](_0x3c20b2, 'a', function() { return _0x3a1d11; }); var _0x4165b9 = _0x3a50fb(0x9) , _0x4d02f3 = _0x3a50fb(0x68) , _0x3a1d11 = function() { function _0x56571f() {} return _0x56571f['EnableFor'] = function(_0x53a766) { _0x53a766['_tags'] = _0x53a766['_tags'] || {}, _0x53a766['hasTags'] = function() { return _0x56571f['HasTags'](_0x53a766); } , _0x53a766['addTags'] = function(_0x5f0f89) { return _0x56571f['AddTagsTo'](_0x53a766, _0x5f0f89); } , _0x53a766['removeTags'] = function(_0x30752d) { return _0x56571f['RemoveTagsFrom'](_0x53a766, _0x30752d); } , _0x53a766['matchesTagsQuery'] = function(_0x196677) { return _0x56571f['MatchesQuery'](_0x53a766, _0x196677); } ; } , _0x56571f['DisableFor'] = function(_0x350893) { delete _0x350893['_tags'], delete _0x350893['hasTags'], delete _0x350893['addTags'], delete _0x350893['removeTags'], delete _0x350893['matchesTagsQuery']; } , _0x56571f['HasTags'] = function(_0x3d9627) { return !!_0x3d9627['_tags'] && !_0x4165b9['h']['IsEmpty'](_0x3d9627['_tags']); } , _0x56571f['GetTags'] = function(_0x5702e8, _0x493c9f) { if (void 0x0 === _0x493c9f && (_0x493c9f = !0x0), !_0x5702e8['_tags']) return null; if (_0x493c9f) { var _0x36c419 = []; for (var _0x4610c4 in _0x5702e8['_tags']) _0x5702e8['_tags']['hasOwnProperty'](_0x4610c4) && !0x0 === _0x5702e8['_tags'][_0x4610c4] && _0x36c419['push'](_0x4610c4); return _0x36c419['join']('\x20'); } return _0x5702e8['_tags']; } , _0x56571f['AddTagsTo'] = function(_0x16e40f, _0x70e909) { _0x70e909 && ('string' == typeof _0x70e909 && _0x70e909['split']('\x20')['forEach'](function(_0x4b722f, _0x52dab2, _0x406595) { _0x56571f['_AddTagTo'](_0x16e40f, _0x4b722f); })); } , _0x56571f['_AddTagTo'] = function(_0x20d09a, _0x3509ed) { '' !== (_0x3509ed = _0x3509ed['trim']()) && 'true' !== _0x3509ed && 'false' !== _0x3509ed && (_0x3509ed['match'](/[\s]/) || _0x3509ed['match'](/^([!]|([|]|[&]){2})/) || (_0x56571f['EnableFor'](_0x20d09a), _0x20d09a['_tags'][_0x3509ed] = !0x0)); } , _0x56571f['RemoveTagsFrom'] = function(_0x3d79db, _0x4e750c) { if (_0x56571f['HasTags'](_0x3d79db)) { var _0xfd1828 = _0x4e750c['split']('\x20'); for (var _0x50f165 in _0xfd1828) _0x56571f['_RemoveTagFrom'](_0x3d79db, _0xfd1828[_0x50f165]); } } , _0x56571f['_RemoveTagFrom'] = function(_0x21ccb, _0x59128f) { delete _0x21ccb['_tags'][_0x59128f]; } , _0x56571f['MatchesQuery'] = function(_0x14e6c0, _0x555ee8) { return void 0x0 === _0x555ee8 || ('' === _0x555ee8 ? _0x56571f['HasTags'](_0x14e6c0) : _0x4d02f3['a']['Eval'](_0x555ee8, function(_0x1c0110) { return _0x56571f['HasTags'](_0x14e6c0) && _0x14e6c0['_tags'][_0x1c0110]; })); } , _0x56571f; }(); } , function(_0x322f3b, _0x2b5a92, _0x4ff8e7) { 'use strict'; _0x4ff8e7['d'](_0x2b5a92, 'a', function() { return _0x33e0f3; }); var _0x33e0f3 = function() { function _0x4a1e16() { this['rootNodes'] = new Array(), this['cameras'] = new Array(), this['lights'] = new Array(), this['meshes'] = new Array(), this['skeletons'] = new Array(), this['particleSystems'] = new Array(), this['animations'] = [], this['animationGroups'] = new Array(), this['multiMaterials'] = new Array(), this['materials'] = new Array(), this['morphTargetManagers'] = new Array(), this['geometries'] = new Array(), this['transformNodes'] = new Array(), this['actionManagers'] = new Array(), this['textures'] = new Array(), this['environmentTexture'] = null; } return _0x4a1e16['AddParser'] = function(_0x38889d, _0x450d70) { this['_BabylonFileParsers'][_0x38889d] = _0x450d70; } , _0x4a1e16['GetParser'] = function(_0x2b28b2) { return this['_BabylonFileParsers'][_0x2b28b2] ? this['_BabylonFileParsers'][_0x2b28b2] : null; } , _0x4a1e16['AddIndividualParser'] = function(_0x2968a4, _0x16fd0b) { this['_IndividualBabylonFileParsers'][_0x2968a4] = _0x16fd0b; } , _0x4a1e16['GetIndividualParser'] = function(_0x1291b2) { return this['_IndividualBabylonFileParsers'][_0x1291b2] ? this['_IndividualBabylonFileParsers'][_0x1291b2] : null; } , _0x4a1e16['Parse'] = function(_0x52a164, _0x819b46, _0x26dffc, _0x446023) { for (var _0x539ba3 in this['_BabylonFileParsers']) this['_BabylonFileParsers']['hasOwnProperty'](_0x539ba3) && this['_BabylonFileParsers'][_0x539ba3](_0x52a164, _0x819b46, _0x26dffc, _0x446023); } , _0x4a1e16['_BabylonFileParsers'] = {}, _0x4a1e16['_IndividualBabylonFileParsers'] = {}, _0x4a1e16; }(); } , function(_0x3668ac, _0x1ecc92, _0x2363fb) { 'use strict'; _0x2363fb['d'](_0x1ecc92, 'b', function() { return _0x399fb2; }), _0x2363fb['d'](_0x1ecc92, 'a', function() { return _0x322729; }); var _0xaf2646 = _0x2363fb(0x1) , _0x22a67a = _0x2363fb(0x2) , _0x47d49f = _0x2363fb(0x8) , _0x47f982 = _0x2363fb(0x9) , _0x46a8a0 = _0x2363fb(0x0) , _0x208f73 = _0x2363fb(0x40) , _0x1a68c7 = _0x2363fb(0x5d) , _0x399fb2 = function(_0x469818) { function _0x24d15f() { var _0x3d5d8e = _0x469818['call'](this) || this; return _0x3d5d8e['IMAGEPROCESSING'] = !0x1, _0x3d5d8e['VIGNETTE'] = !0x1, _0x3d5d8e['VIGNETTEBLENDMODEMULTIPLY'] = !0x1, _0x3d5d8e['VIGNETTEBLENDMODEOPAQUE'] = !0x1, _0x3d5d8e['TONEMAPPING'] = !0x1, _0x3d5d8e['TONEMAPPING_ACES'] = !0x1, _0x3d5d8e['CONTRAST'] = !0x1, _0x3d5d8e['COLORCURVES'] = !0x1, _0x3d5d8e['COLORGRADING'] = !0x1, _0x3d5d8e['COLORGRADING3D'] = !0x1, _0x3d5d8e['SAMPLER3DGREENDEPTH'] = !0x1, _0x3d5d8e['SAMPLER3DBGRMAP'] = !0x1, _0x3d5d8e['IMAGEPROCESSINGPOSTPROCESS'] = !0x1, _0x3d5d8e['EXPOSURE'] = !0x1, _0x3d5d8e['rebuild'](), _0x3d5d8e; } return _0xaf2646['d'](_0x24d15f, _0x469818), _0x24d15f; }(_0x208f73['a']) , _0x322729 = function() { function _0x55ba7f() { this['colorCurves'] = new _0x1a68c7['a'](), this['_colorCurvesEnabled'] = !0x1, this['_colorGradingEnabled'] = !0x1, this['_colorGradingWithGreenDepth'] = !0x0, this['_colorGradingBGR'] = !0x0, this['_exposure'] = 0x1, this['_toneMappingEnabled'] = !0x1, this['_toneMappingType'] = _0x55ba7f['TONEMAPPING_STANDARD'], this['_contrast'] = 0x1, this['vignetteStretch'] = 0x0, this['vignetteCentreX'] = 0x0, this['vignetteCentreY'] = 0x0, this['vignetteWeight'] = 1.5, this['vignetteColor'] = new _0x46a8a0['f'](0x0,0x0,0x0,0x0), this['vignetteCameraFov'] = 0.5, this['_vignetteBlendMode'] = _0x55ba7f['VIGNETTEMODE_MULTIPLY'], this['_vignetteEnabled'] = !0x1, this['_applyByPostProcess'] = !0x1, this['_isEnabled'] = !0x0, this['onUpdateParameters'] = new _0x47d49f['c'](); } return Object['defineProperty'](_0x55ba7f['prototype'], 'colorCurvesEnabled', { 'get': function() { return this['_colorCurvesEnabled']; }, 'set': function(_0x3bb2b0) { this['_colorCurvesEnabled'] !== _0x3bb2b0 && (this['_colorCurvesEnabled'] = _0x3bb2b0, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'colorGradingTexture', { 'get': function() { return this['_colorGradingTexture']; }, 'set': function(_0x51c2a3) { this['_colorGradingTexture'] !== _0x51c2a3 && (this['_colorGradingTexture'] = _0x51c2a3, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'colorGradingEnabled', { 'get': function() { return this['_colorGradingEnabled']; }, 'set': function(_0x196370) { this['_colorGradingEnabled'] !== _0x196370 && (this['_colorGradingEnabled'] = _0x196370, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'colorGradingWithGreenDepth', { 'get': function() { return this['_colorGradingWithGreenDepth']; }, 'set': function(_0x17e2b2) { this['_colorGradingWithGreenDepth'] !== _0x17e2b2 && (this['_colorGradingWithGreenDepth'] = _0x17e2b2, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'colorGradingBGR', { 'get': function() { return this['_colorGradingBGR']; }, 'set': function(_0x41016e) { this['_colorGradingBGR'] !== _0x41016e && (this['_colorGradingBGR'] = _0x41016e, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'exposure', { 'get': function() { return this['_exposure']; }, 'set': function(_0x1adedb) { this['_exposure'] !== _0x1adedb && (this['_exposure'] = _0x1adedb, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'toneMappingEnabled', { 'get': function() { return this['_toneMappingEnabled']; }, 'set': function(_0x47c2f3) { this['_toneMappingEnabled'] !== _0x47c2f3 && (this['_toneMappingEnabled'] = _0x47c2f3, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'toneMappingType', { 'get': function() { return this['_toneMappingType']; }, 'set': function(_0x391626) { this['_toneMappingType'] !== _0x391626 && (this['_toneMappingType'] = _0x391626, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'contrast', { 'get': function() { return this['_contrast']; }, 'set': function(_0x9255dd) { this['_contrast'] !== _0x9255dd && (this['_contrast'] = _0x9255dd, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'vignetteBlendMode', { 'get': function() { return this['_vignetteBlendMode']; }, 'set': function(_0x5991f9) { this['_vignetteBlendMode'] !== _0x5991f9 && (this['_vignetteBlendMode'] = _0x5991f9, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'vignetteEnabled', { 'get': function() { return this['_vignetteEnabled']; }, 'set': function(_0x4677c4) { this['_vignetteEnabled'] !== _0x4677c4 && (this['_vignetteEnabled'] = _0x4677c4, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'applyByPostProcess', { 'get': function() { return this['_applyByPostProcess']; }, 'set': function(_0x54c76a) { this['_applyByPostProcess'] !== _0x54c76a && (this['_applyByPostProcess'] = _0x54c76a, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f['prototype'], 'isEnabled', { 'get': function() { return this['_isEnabled']; }, 'set': function(_0x4eed5c) { this['_isEnabled'] !== _0x4eed5c && (this['_isEnabled'] = _0x4eed5c, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x55ba7f['prototype']['_updateParameters'] = function() { this['onUpdateParameters']['notifyObservers'](this); } , _0x55ba7f['prototype']['getClassName'] = function() { return 'ImageProcessingConfiguration'; } , _0x55ba7f['PrepareUniforms'] = function(_0x1cf9ef, _0x1a8c01) { _0x1a8c01['EXPOSURE'] && _0x1cf9ef['push']('exposureLinear'), _0x1a8c01['CONTRAST'] && _0x1cf9ef['push']('contrast'), _0x1a8c01['COLORGRADING'] && _0x1cf9ef['push']('colorTransformSettings'), _0x1a8c01['VIGNETTE'] && (_0x1cf9ef['push']('vInverseScreenSize'), _0x1cf9ef['push']('vignetteSettings1'), _0x1cf9ef['push']('vignetteSettings2')), _0x1a8c01['COLORCURVES'] && _0x1a68c7['a']['PrepareUniforms'](_0x1cf9ef); } , _0x55ba7f['PrepareSamplers'] = function(_0x4064e7, _0x483e5c) { _0x483e5c['COLORGRADING'] && _0x4064e7['push']('txColorTransform'); } , _0x55ba7f['prototype']['prepareDefines'] = function(_0x4f7aee, _0x82fd4e) { if (void 0x0 === _0x82fd4e && (_0x82fd4e = !0x1), _0x82fd4e !== this['applyByPostProcess'] || !this['_isEnabled']) return _0x4f7aee['VIGNETTE'] = !0x1, _0x4f7aee['TONEMAPPING'] = !0x1, _0x4f7aee['TONEMAPPING_ACES'] = !0x1, _0x4f7aee['CONTRAST'] = !0x1, _0x4f7aee['EXPOSURE'] = !0x1, _0x4f7aee['COLORCURVES'] = !0x1, _0x4f7aee['COLORGRADING'] = !0x1, _0x4f7aee['COLORGRADING3D'] = !0x1, _0x4f7aee['IMAGEPROCESSING'] = !0x1, void (_0x4f7aee['IMAGEPROCESSINGPOSTPROCESS'] = this['applyByPostProcess'] && this['_isEnabled']); switch (_0x4f7aee['VIGNETTE'] = this['vignetteEnabled'], _0x4f7aee['VIGNETTEBLENDMODEMULTIPLY'] = this['vignetteBlendMode'] === _0x55ba7f['_VIGNETTEMODE_MULTIPLY'], _0x4f7aee['VIGNETTEBLENDMODEOPAQUE'] = !_0x4f7aee['VIGNETTEBLENDMODEMULTIPLY'], _0x4f7aee['TONEMAPPING'] = this['toneMappingEnabled'], this['_toneMappingType']) { case _0x55ba7f['TONEMAPPING_ACES']: _0x4f7aee['TONEMAPPING_ACES'] = !0x0; break; default: _0x4f7aee['TONEMAPPING_ACES'] = !0x1; } _0x4f7aee['CONTRAST'] = 0x1 !== this['contrast'], _0x4f7aee['EXPOSURE'] = 0x1 !== this['exposure'], _0x4f7aee['COLORCURVES'] = this['colorCurvesEnabled'] && !!this['colorCurves'], _0x4f7aee['COLORGRADING'] = this['colorGradingEnabled'] && !!this['colorGradingTexture'], _0x4f7aee['COLORGRADING'] ? _0x4f7aee['COLORGRADING3D'] = this['colorGradingTexture']['is3D'] : _0x4f7aee['COLORGRADING3D'] = !0x1, _0x4f7aee['SAMPLER3DGREENDEPTH'] = this['colorGradingWithGreenDepth'], _0x4f7aee['SAMPLER3DBGRMAP'] = this['colorGradingBGR'], _0x4f7aee['IMAGEPROCESSINGPOSTPROCESS'] = this['applyByPostProcess'], _0x4f7aee['IMAGEPROCESSING'] = _0x4f7aee['VIGNETTE'] || _0x4f7aee['TONEMAPPING'] || _0x4f7aee['CONTRAST'] || _0x4f7aee['EXPOSURE'] || _0x4f7aee['COLORCURVES'] || _0x4f7aee['COLORGRADING']; } , _0x55ba7f['prototype']['isReady'] = function() { return !this['colorGradingEnabled'] || !this['colorGradingTexture'] || this['colorGradingTexture']['isReady'](); } , _0x55ba7f['prototype']['bind'] = function(_0x96aaf5, _0x593ac5) { if (void 0x0 === _0x593ac5 && (_0x593ac5 = 0x1), this['_colorCurvesEnabled'] && this['colorCurves'] && _0x1a68c7['a']['Bind'](this['colorCurves'], _0x96aaf5), this['_vignetteEnabled']) { var _0xc66af4 = 0x1 / _0x96aaf5['getEngine']()['getRenderWidth']() , _0x1d45f9 = 0x1 / _0x96aaf5['getEngine']()['getRenderHeight'](); _0x96aaf5['setFloat2']('vInverseScreenSize', _0xc66af4, _0x1d45f9); var _0x55765d = Math['tan'](0.5 * this['vignetteCameraFov']) , _0xe56add = _0x55765d * _0x593ac5 , _0x42601d = Math['sqrt'](_0xe56add * _0x55765d); _0xe56add = _0x47f982['h']['Mix'](_0xe56add, _0x42601d, this['vignetteStretch']), _0x55765d = _0x47f982['h']['Mix'](_0x55765d, _0x42601d, this['vignetteStretch']), _0x96aaf5['setFloat4']('vignetteSettings1', _0xe56add, _0x55765d, -_0xe56add * this['vignetteCentreX'], -_0x55765d * this['vignetteCentreY']); var _0x4b1b65 = -0x2 * this['vignetteWeight']; _0x96aaf5['setFloat4']('vignetteSettings2', this['vignetteColor']['r'], this['vignetteColor']['g'], this['vignetteColor']['b'], _0x4b1b65); } if (_0x96aaf5['setFloat']('exposureLinear', this['exposure']), _0x96aaf5['setFloat']('contrast', this['contrast']), this['colorGradingTexture']) { _0x96aaf5['setTexture']('txColorTransform', this['colorGradingTexture']); var _0x334a17 = this['colorGradingTexture']['getSize']()['height']; _0x96aaf5['setFloat4']('colorTransformSettings', (_0x334a17 - 0x1) / _0x334a17, 0.5 / _0x334a17, _0x334a17, this['colorGradingTexture']['level']); } } , _0x55ba7f['prototype']['clone'] = function() { return _0x22a67a['a']['Clone'](function() { return new _0x55ba7f(); }, this); } , _0x55ba7f['prototype']['serialize'] = function() { return _0x22a67a['a']['Serialize'](this); } , _0x55ba7f['Parse'] = function(_0x51dfba) { return _0x22a67a['a']['Parse'](function() { return new _0x55ba7f(); }, _0x51dfba, null, null); } , Object['defineProperty'](_0x55ba7f, 'VIGNETTEMODE_MULTIPLY', { 'get': function() { return this['_VIGNETTEMODE_MULTIPLY']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55ba7f, 'VIGNETTEMODE_OPAQUE', { 'get': function() { return this['_VIGNETTEMODE_OPAQUE']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x55ba7f['TONEMAPPING_STANDARD'] = 0x0, _0x55ba7f['TONEMAPPING_ACES'] = 0x1, _0x55ba7f['_VIGNETTEMODE_MULTIPLY'] = 0x0, _0x55ba7f['_VIGNETTEMODE_OPAQUE'] = 0x1, _0xaf2646['c']([Object(_0x22a67a['g'])()], _0x55ba7f['prototype'], 'colorCurves', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_colorCurvesEnabled', void 0x0), _0xaf2646['c']([Object(_0x22a67a['m'])('colorGradingTexture')], _0x55ba7f['prototype'], '_colorGradingTexture', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_colorGradingEnabled', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_colorGradingWithGreenDepth', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_colorGradingBGR', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_exposure', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_toneMappingEnabled', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_toneMappingType', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_contrast', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], 'vignetteStretch', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], 'vignetteCentreX', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], 'vignetteCentreY', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], 'vignetteWeight', void 0x0), _0xaf2646['c']([Object(_0x22a67a['f'])()], _0x55ba7f['prototype'], 'vignetteColor', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], 'vignetteCameraFov', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_vignetteBlendMode', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_vignetteEnabled', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_applyByPostProcess', void 0x0), _0xaf2646['c']([Object(_0x22a67a['c'])()], _0x55ba7f['prototype'], '_isEnabled', void 0x0), _0x55ba7f; }(); _0x22a67a['a']['_ImageProcessingConfigurationParser'] = _0x322729['Parse']; } , function(_0x6907ee, _0x59b5e3, _0x308d03) { 'use strict'; _0x308d03['d'](_0x59b5e3, 'a', function() { return _0xd5187d; }); var _0x5dd2fc = function(_0x12f29c, _0x1229e6) { return _0x12f29c ? _0x12f29c['getClassName'] && 'Mesh' === _0x12f29c['getClassName']() ? null : _0x12f29c['getClassName'] && 'SubMesh' === _0x12f29c['getClassName']() ? _0x12f29c['clone'](_0x1229e6) : _0x12f29c['clone'] ? _0x12f29c['clone']() : null : null; } , _0xd5187d = function() { function _0x3354de() {} return _0x3354de['DeepCopy'] = function(_0x2bca14, _0xad1a36, _0x42387c, _0x2e0ce2) { for (var _0x13d8ff in _0x2bca14) if (('_' !== _0x13d8ff[0x0] || _0x2e0ce2 && -0x1 !== _0x2e0ce2['indexOf'](_0x13d8ff)) && (!_0x42387c || -0x1 === _0x42387c['indexOf'](_0x13d8ff))) { var _0x272e8c = _0x2bca14[_0x13d8ff] , _0x1c7f90 = typeof _0x272e8c; if ('function' !== _0x1c7f90) try { if ('object' === _0x1c7f90) if (_0x272e8c instanceof Array) { if (_0xad1a36[_0x13d8ff] = [], _0x272e8c['length'] > 0x0) if ('object' == typeof _0x272e8c[0x0]) for (var _0x2c95b1 = 0x0; _0x2c95b1 < _0x272e8c['length']; _0x2c95b1++) { var _0x125e2b = _0x5dd2fc(_0x272e8c[_0x2c95b1], _0xad1a36); -0x1 === _0xad1a36[_0x13d8ff]['indexOf'](_0x125e2b) && _0xad1a36[_0x13d8ff]['push'](_0x125e2b); } else _0xad1a36[_0x13d8ff] = _0x272e8c['slice'](0x0); } else _0xad1a36[_0x13d8ff] = _0x5dd2fc(_0x272e8c, _0xad1a36); else _0xad1a36[_0x13d8ff] = _0x272e8c; } catch (_0x268062) {} } } , _0x3354de; }(); } , function(_0x3d216b, _0x32d109, _0x7814a5) { 'use strict'; var _0x6826e5 = _0x7814a5(0x1) , _0x4c9a7f = _0x7814a5(0x2) , _0x7d3778 = _0x7814a5(0x1c) , _0x491ec0 = _0x7814a5(0x10) , _0x7d3c77 = _0x7814a5(0x0) , _0x3a1991 = _0x7814a5(0x4) , _0x2e08b0 = _0x7814a5(0x1f) , _0x499c94 = _0x7814a5(0x5) , _0x2f344e = _0x7814a5(0x40) , _0x2f5c6a = _0x7814a5(0x4b) , _0x43b347 = _0x7814a5(0xf) , _0x3ba7a0 = _0x7814a5(0x7) , _0x3f7941 = _0x7814a5(0x16) , _0x495ca7 = _0x7814a5(0x12) , _0x50b1fb = 'uniform\x20vec4\x20vDiffuseColor;\x0a#ifdef\x20SPECULARTERM\x0auniform\x20vec4\x20vSpecularColor;\x0a#endif\x0auniform\x20vec3\x20vEmissiveColor;\x0auniform\x20float\x20visibility;\x0a\x0a#ifdef\x20DIFFUSE\x0auniform\x20vec2\x20vDiffuseInfos;\x0a#endif\x0a#ifdef\x20AMBIENT\x0auniform\x20vec2\x20vAmbientInfos;\x0a#endif\x0a#ifdef\x20OPACITY\x0auniform\x20vec2\x20vOpacityInfos;\x0a#endif\x0a#ifdef\x20EMISSIVE\x0auniform\x20vec2\x20vEmissiveInfos;\x0a#endif\x0a#ifdef\x20LIGHTMAP\x0auniform\x20vec2\x20vLightmapInfos;\x0a#endif\x0a#ifdef\x20BUMP\x0auniform\x20vec3\x20vBumpInfos;\x0auniform\x20vec2\x20vTangentSpaceParams;\x0a#endif\x0a#if\x20defined(REFLECTIONMAP_SPHERICAL)\x20||\x20defined(REFLECTIONMAP_PROJECTION)\x20||\x20defined(REFRACTION)\x0auniform\x20mat4\x20view;\x0a#endif\x0a#ifdef\x20REFRACTION\x0auniform\x20vec4\x20vRefractionInfos;\x0a#ifndef\x20REFRACTIONMAP_3D\x0auniform\x20mat4\x20refractionMatrix;\x0a#endif\x0a#ifdef\x20REFRACTIONFRESNEL\x0auniform\x20vec4\x20refractionLeftColor;\x0auniform\x20vec4\x20refractionRightColor;\x0a#endif\x0a#endif\x0a#if\x20defined(SPECULAR)\x20&&\x20defined(SPECULARTERM)\x0auniform\x20vec2\x20vSpecularInfos;\x0a#endif\x0a#ifdef\x20DIFFUSEFRESNEL\x0auniform\x20vec4\x20diffuseLeftColor;\x0auniform\x20vec4\x20diffuseRightColor;\x0a#endif\x0a#ifdef\x20OPACITYFRESNEL\x0auniform\x20vec4\x20opacityParts;\x0a#endif\x0a#ifdef\x20EMISSIVEFRESNEL\x0auniform\x20vec4\x20emissiveLeftColor;\x0auniform\x20vec4\x20emissiveRightColor;\x0a#endif\x0a\x0a#ifdef\x20REFLECTION\x0auniform\x20vec2\x20vReflectionInfos;\x0a#if\x20defined(REFLECTIONMAP_PLANAR)\x20||\x20defined(REFLECTIONMAP_CUBIC)\x20||\x20defined(REFLECTIONMAP_PROJECTION)\x20||\x20defined(REFLECTIONMAP_EQUIRECTANGULAR)\x20||\x20defined(REFLECTIONMAP_SPHERICAL)\x20||\x20defined(REFLECTIONMAP_SKYBOX)\x0auniform\x20mat4\x20reflectionMatrix;\x0a#endif\x0a#ifndef\x20REFLECTIONMAP_SKYBOX\x0a#if\x20defined(USE_LOCAL_REFLECTIONMAP_CUBIC)\x20&&\x20defined(REFLECTIONMAP_CUBIC)\x0auniform\x20vec3\x20vReflectionPosition;\x0auniform\x20vec3\x20vReflectionSize;\x0a#endif\x0a#endif\x0a#ifdef\x20REFLECTIONFRESNEL\x0auniform\x20vec4\x20reflectionLeftColor;\x0auniform\x20vec4\x20reflectionRightColor;\x0a#endif\x0a#endif'; _0x499c94['a']['IncludesShadersStore']['defaultFragmentDeclaration'] = _0x50b1fb; var _0x479736 = 'layout(std140,column_major)\x20uniform;\x0auniform\x20Material\x0a{\x0avec4\x20diffuseLeftColor;\x0avec4\x20diffuseRightColor;\x0avec4\x20opacityParts;\x0avec4\x20reflectionLeftColor;\x0avec4\x20reflectionRightColor;\x0avec4\x20refractionLeftColor;\x0avec4\x20refractionRightColor;\x0avec4\x20emissiveLeftColor;\x0avec4\x20emissiveRightColor;\x0avec2\x20vDiffuseInfos;\x0avec2\x20vAmbientInfos;\x0avec2\x20vOpacityInfos;\x0avec2\x20vReflectionInfos;\x0avec3\x20vReflectionPosition;\x0avec3\x20vReflectionSize;\x0avec2\x20vEmissiveInfos;\x0avec2\x20vLightmapInfos;\x0avec2\x20vSpecularInfos;\x0avec3\x20vBumpInfos;\x0amat4\x20diffuseMatrix;\x0amat4\x20ambientMatrix;\x0amat4\x20opacityMatrix;\x0amat4\x20reflectionMatrix;\x0amat4\x20emissiveMatrix;\x0amat4\x20lightmapMatrix;\x0amat4\x20specularMatrix;\x0amat4\x20bumpMatrix;\x0avec2\x20vTangentSpaceParams;\x0afloat\x20pointSize;\x0amat4\x20refractionMatrix;\x0avec4\x20vRefractionInfos;\x0avec4\x20vSpecularColor;\x0avec3\x20vEmissiveColor;\x0afloat\x20visibility;\x0avec4\x20vDiffuseColor;\x0a};\x0auniform\x20Scene\x20{\x0amat4\x20viewProjection;\x0a#ifdef\x20MULTIVIEW\x0amat4\x20viewProjectionR;\x0a#endif\x0amat4\x20view;\x0a};\x0a'; _0x499c94['a']['IncludesShadersStore']['defaultUboDeclaration'] = _0x479736; _0x7814a5(0x38), _0x7814a5(0x54), _0x7814a5(0x55), _0x7814a5(0x78), _0x7814a5(0x70); var _0x53e4d1 = '#ifdef\x20FRESNEL\x0afloat\x20computeFresnelTerm(vec3\x20viewDirection,vec3\x20worldNormal,float\x20bias,float\x20power)\x0a{\x0afloat\x20fresnelTerm=pow(bias+abs(dot(viewDirection,worldNormal)),power);\x0areturn\x20clamp(fresnelTerm,0.,1.);\x0a}\x0a#endif'; _0x499c94['a']['IncludesShadersStore']['fresnelFunction'] = _0x53e4d1; _0x7814a5(0x71), _0x7814a5(0x56), _0x7814a5(0x57), _0x7814a5(0x79), _0x7814a5(0x5f), _0x7814a5(0x58), _0x7814a5(0x62), _0x7814a5(0x59), _0x7814a5(0x7a), _0x7814a5(0x7b), _0x7814a5(0x72), _0x7814a5(0x73), _0x7814a5(0x63); var _0x33d321 = '#include<__decl__defaultFragment>\x0a#if\x20defined(BUMP)\x20||\x20!defined(NORMAL)\x0a#extension\x20GL_OES_standard_derivatives\x20:\x20enable\x0a#endif\x0a#define\x20CUSTOM_FRAGMENT_BEGIN\x0a#ifdef\x20LOGARITHMICDEPTH\x0a#extension\x20GL_EXT_frag_depth\x20:\x20enable\x0a#endif\x0a\x0a#define\x20RECIPROCAL_PI2\x200.15915494\x0auniform\x20vec3\x20vEyePosition;\x0auniform\x20vec3\x20vAmbientColor;\x0a\x0avarying\x20vec3\x20vPositionW;\x0a#ifdef\x20NORMAL\x0avarying\x20vec3\x20vNormalW;\x0a#endif\x0a#ifdef\x20VERTEXCOLOR\x0avarying\x20vec4\x20vColor;\x0a#endif\x0a#ifdef\x20MAINUV1\x0avarying\x20vec2\x20vMainUV1;\x0a#endif\x0a#ifdef\x20MAINUV2\x0avarying\x20vec2\x20vMainUV2;\x0a#endif\x0a\x0a#include\x0a\x0a#include<__decl__lightFragment>[0..maxSimultaneousLights]\x0a#include\x0a#include\x0a\x0a#ifdef\x20DIFFUSE\x0a#if\x20DIFFUSEDIRECTUV\x20==\x201\x0a#define\x20vDiffuseUV\x20vMainUV1\x0a#elif\x20DIFFUSEDIRECTUV\x20==\x202\x0a#define\x20vDiffuseUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vDiffuseUV;\x0a#endif\x0auniform\x20sampler2D\x20diffuseSampler;\x0a#endif\x0a#ifdef\x20AMBIENT\x0a#if\x20AMBIENTDIRECTUV\x20==\x201\x0a#define\x20vAmbientUV\x20vMainUV1\x0a#elif\x20AMBIENTDIRECTUV\x20==\x202\x0a#define\x20vAmbientUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vAmbientUV;\x0a#endif\x0auniform\x20sampler2D\x20ambientSampler;\x0a#endif\x0a#ifdef\x20OPACITY\x0a#if\x20OPACITYDIRECTUV\x20==\x201\x0a#define\x20vOpacityUV\x20vMainUV1\x0a#elif\x20OPACITYDIRECTUV\x20==\x202\x0a#define\x20vOpacityUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vOpacityUV;\x0a#endif\x0auniform\x20sampler2D\x20opacitySampler;\x0a#endif\x0a#ifdef\x20EMISSIVE\x0a#if\x20EMISSIVEDIRECTUV\x20==\x201\x0a#define\x20vEmissiveUV\x20vMainUV1\x0a#elif\x20EMISSIVEDIRECTUV\x20==\x202\x0a#define\x20vEmissiveUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vEmissiveUV;\x0a#endif\x0auniform\x20sampler2D\x20emissiveSampler;\x0a#endif\x0a#ifdef\x20LIGHTMAP\x0a#if\x20LIGHTMAPDIRECTUV\x20==\x201\x0a#define\x20vLightmapUV\x20vMainUV1\x0a#elif\x20LIGHTMAPDIRECTUV\x20==\x202\x0a#define\x20vLightmapUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vLightmapUV;\x0a#endif\x0auniform\x20sampler2D\x20lightmapSampler;\x0a#endif\x0a#ifdef\x20REFRACTION\x0a#ifdef\x20REFRACTIONMAP_3D\x0auniform\x20samplerCube\x20refractionCubeSampler;\x0a#else\x0auniform\x20sampler2D\x20refraction2DSampler;\x0a#endif\x0a#endif\x0a#if\x20defined(SPECULAR)\x20&&\x20defined(SPECULARTERM)\x0a#if\x20SPECULARDIRECTUV\x20==\x201\x0a#define\x20vSpecularUV\x20vMainUV1\x0a#elif\x20SPECULARDIRECTUV\x20==\x202\x0a#define\x20vSpecularUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vSpecularUV;\x0a#endif\x0auniform\x20sampler2D\x20specularSampler;\x0a#endif\x0a#ifdef\x20ALPHATEST\x0auniform\x20float\x20alphaCutOff;\x0a#endif\x0a\x0a#include\x0a\x0a#ifdef\x20REFLECTION\x0a#ifdef\x20REFLECTIONMAP_3D\x0auniform\x20samplerCube\x20reflectionCubeSampler;\x0a#else\x0auniform\x20sampler2D\x20reflection2DSampler;\x0a#endif\x0a#ifdef\x20REFLECTIONMAP_SKYBOX\x0avarying\x20vec3\x20vPositionUVW;\x0a#else\x0a#if\x20defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED)\x20||\x20defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\x0avarying\x20vec3\x20vDirectionW;\x0a#endif\x0a#endif\x0a#include\x0a#endif\x0a#include\x0a#include\x0a#include\x0a#include\x0a#include\x0a#include\x0a#define\x20CUSTOM_FRAGMENT_DEFINITIONS\x0avoid\x20main(void)\x20{\x0a#define\x20CUSTOM_FRAGMENT_MAIN_BEGIN\x0a#include\x0avec3\x20viewDirectionW=normalize(vEyePosition-vPositionW);\x0a\x0avec4\x20baseColor=vec4(1.,1.,1.,1.);\x0avec3\x20diffuseColor=vDiffuseColor.rgb;\x0a\x0afloat\x20alpha=vDiffuseColor.a;\x0a\x0a#ifdef\x20NORMAL\x0avec3\x20normalW=normalize(vNormalW);\x0a#else\x0avec3\x20normalW=normalize(-cross(dFdx(vPositionW),dFdy(vPositionW)));\x0a#endif\x0a#include\x0a#ifdef\x20TWOSIDEDLIGHTING\x0anormalW=gl_FrontFacing\x20?\x20normalW\x20:\x20-normalW;\x0a#endif\x0a#ifdef\x20DIFFUSE\x0abaseColor=texture2D(diffuseSampler,vDiffuseUV+uvOffset);\x0a#ifdef\x20ALPHATEST\x0aif\x20(baseColor.a\x0a#ifdef\x20VERTEXCOLOR\x0abaseColor.rgb*=vColor.rgb;\x0a#endif\x0a#define\x20CUSTOM_FRAGMENT_UPDATE_DIFFUSE\x0a\x0avec3\x20baseAmbientColor=vec3(1.,1.,1.);\x0a#ifdef\x20AMBIENT\x0abaseAmbientColor=texture2D(ambientSampler,vAmbientUV+uvOffset).rgb*vAmbientInfos.y;\x0a#endif\x0a#define\x20CUSTOM_FRAGMENT_BEFORE_LIGHTS\x0a\x0a#ifdef\x20SPECULARTERM\x0afloat\x20glossiness=vSpecularColor.a;\x0avec3\x20specularColor=vSpecularColor.rgb;\x0a#ifdef\x20SPECULAR\x0avec4\x20specularMapColor=texture2D(specularSampler,vSpecularUV+uvOffset);\x0aspecularColor=specularMapColor.rgb;\x0a#ifdef\x20GLOSSINESS\x0aglossiness=glossiness*specularMapColor.a;\x0a#endif\x0a#endif\x0a#else\x0afloat\x20glossiness=0.;\x0a#endif\x0a\x0avec3\x20diffuseBase=vec3(0.,0.,0.);\x0alightingInfo\x20info;\x0a#ifdef\x20SPECULARTERM\x0avec3\x20specularBase=vec3(0.,0.,0.);\x0a#endif\x0afloat\x20shadow=1.;\x0a#ifdef\x20LIGHTMAP\x0avec3\x20lightmapColor=texture2D(lightmapSampler,vLightmapUV+uvOffset).rgb*vLightmapInfos.y;\x0a#endif\x0a#include[0..maxSimultaneousLights]\x0a\x0avec3\x20refractionColor=vec3(0.,0.,0.);\x0a#ifdef\x20REFRACTION\x0avec3\x20refractionVector=normalize(refract(-viewDirectionW,normalW,vRefractionInfos.y));\x0a#ifdef\x20REFRACTIONMAP_3D\x0arefractionVector.y=refractionVector.y*vRefractionInfos.w;\x0aif\x20(dot(refractionVector,viewDirectionW)<1.0)\x20{\x0arefractionColor=textureCube(refractionCubeSampler,refractionVector).rgb;\x0a}\x0a#else\x0avec3\x20vRefractionUVW=vec3(refractionMatrix*(view*vec4(vPositionW+refractionVector*vRefractionInfos.z,1.0)));\x0avec2\x20refractionCoords=vRefractionUVW.xy/vRefractionUVW.z;\x0arefractionCoords.y=1.0-refractionCoords.y;\x0arefractionColor=texture2D(refraction2DSampler,refractionCoords).rgb;\x0a#endif\x0a#ifdef\x20IS_REFRACTION_LINEAR\x0arefractionColor=toGammaSpace(refractionColor);\x0a#endif\x0arefractionColor*=vRefractionInfos.x;\x0a#endif\x0a\x0avec3\x20reflectionColor=vec3(0.,0.,0.);\x0a#ifdef\x20REFLECTION\x0avec3\x20vReflectionUVW=computeReflectionCoords(vec4(vPositionW,1.0),normalW);\x0a#ifdef\x20REFLECTIONMAP_3D\x0a#ifdef\x20ROUGHNESS\x0afloat\x20bias=vReflectionInfos.y;\x0a#ifdef\x20SPECULARTERM\x0a#ifdef\x20SPECULAR\x0a#ifdef\x20GLOSSINESS\x0abias*=(1.0-specularMapColor.a);\x0a#endif\x0a#endif\x0a#endif\x0areflectionColor=textureCube(reflectionCubeSampler,vReflectionUVW,bias).rgb;\x0a#else\x0areflectionColor=textureCube(reflectionCubeSampler,vReflectionUVW).rgb;\x0a#endif\x0a#else\x0avec2\x20coords=vReflectionUVW.xy;\x0a#ifdef\x20REFLECTIONMAP_PROJECTION\x0acoords/=vReflectionUVW.z;\x0a#endif\x0acoords.y=1.0-coords.y;\x0areflectionColor=texture2D(reflection2DSampler,coords).rgb;\x0a#endif\x0a#ifdef\x20IS_REFLECTION_LINEAR\x0areflectionColor=toGammaSpace(reflectionColor);\x0a#endif\x0areflectionColor*=vReflectionInfos.x;\x0a#ifdef\x20REFLECTIONFRESNEL\x0afloat\x20reflectionFresnelTerm=computeFresnelTerm(viewDirectionW,normalW,reflectionRightColor.a,reflectionLeftColor.a);\x0a#ifdef\x20REFLECTIONFRESNELFROMSPECULAR\x0a#ifdef\x20SPECULARTERM\x0areflectionColor*=specularColor.rgb*(1.0-reflectionFresnelTerm)+reflectionFresnelTerm*reflectionRightColor.rgb;\x0a#else\x0areflectionColor*=reflectionLeftColor.rgb*(1.0-reflectionFresnelTerm)+reflectionFresnelTerm*reflectionRightColor.rgb;\x0a#endif\x0a#else\x0areflectionColor*=reflectionLeftColor.rgb*(1.0-reflectionFresnelTerm)+reflectionFresnelTerm*reflectionRightColor.rgb;\x0a#endif\x0a#endif\x0a#endif\x0a#ifdef\x20REFRACTIONFRESNEL\x0afloat\x20refractionFresnelTerm=computeFresnelTerm(viewDirectionW,normalW,refractionRightColor.a,refractionLeftColor.a);\x0arefractionColor*=refractionLeftColor.rgb*(1.0-refractionFresnelTerm)+refractionFresnelTerm*refractionRightColor.rgb;\x0a#endif\x0a#ifdef\x20OPACITY\x0avec4\x20opacityMap=texture2D(opacitySampler,vOpacityUV+uvOffset);\x0a#ifdef\x20OPACITYRGB\x0aopacityMap.rgb=opacityMap.rgb*vec3(0.3,0.59,0.11);\x0aalpha*=(opacityMap.x+opacityMap.y+opacityMap.z)*\x20vOpacityInfos.y;\x0a#else\x0aalpha*=opacityMap.a*vOpacityInfos.y;\x0a#endif\x0a#endif\x0a#ifdef\x20VERTEXALPHA\x0aalpha*=vColor.a;\x0a#endif\x0a#ifdef\x20OPACITYFRESNEL\x0afloat\x20opacityFresnelTerm=computeFresnelTerm(viewDirectionW,normalW,opacityParts.z,opacityParts.w);\x0aalpha+=opacityParts.x*(1.0-opacityFresnelTerm)+opacityFresnelTerm*opacityParts.y;\x0a#endif\x0a\x0avec3\x20emissiveColor=vEmissiveColor;\x0a#ifdef\x20EMISSIVE\x0aemissiveColor+=texture2D(emissiveSampler,vEmissiveUV+uvOffset).rgb*vEmissiveInfos.y;\x0a#endif\x0a#ifdef\x20EMISSIVEFRESNEL\x0afloat\x20emissiveFresnelTerm=computeFresnelTerm(viewDirectionW,normalW,emissiveRightColor.a,emissiveLeftColor.a);\x0aemissiveColor*=emissiveLeftColor.rgb*(1.0-emissiveFresnelTerm)+emissiveFresnelTerm*emissiveRightColor.rgb;\x0a#endif\x0a\x0a#ifdef\x20DIFFUSEFRESNEL\x0afloat\x20diffuseFresnelTerm=computeFresnelTerm(viewDirectionW,normalW,diffuseRightColor.a,diffuseLeftColor.a);\x0adiffuseBase*=diffuseLeftColor.rgb*(1.0-diffuseFresnelTerm)+diffuseFresnelTerm*diffuseRightColor.rgb;\x0a#endif\x0a\x0a#ifdef\x20EMISSIVEASILLUMINATION\x0avec3\x20finalDiffuse=clamp(diffuseBase*diffuseColor+vAmbientColor,0.0,1.0)*baseColor.rgb;\x0a#else\x0a#ifdef\x20LINKEMISSIVEWITHDIFFUSE\x0avec3\x20finalDiffuse=clamp((diffuseBase+emissiveColor)*diffuseColor+vAmbientColor,0.0,1.0)*baseColor.rgb;\x0a#else\x0avec3\x20finalDiffuse=clamp(diffuseBase*diffuseColor+emissiveColor+vAmbientColor,0.0,1.0)*baseColor.rgb;\x0a#endif\x0a#endif\x0a#ifdef\x20SPECULARTERM\x0avec3\x20finalSpecular=specularBase*specularColor;\x0a#ifdef\x20SPECULAROVERALPHA\x0aalpha=clamp(alpha+dot(finalSpecular,vec3(0.3,0.59,0.11)),0.,1.);\x0a#endif\x0a#else\x0avec3\x20finalSpecular=vec3(0.0);\x0a#endif\x0a#ifdef\x20REFLECTIONOVERALPHA\x0aalpha=clamp(alpha+dot(reflectionColor,vec3(0.3,0.59,0.11)),0.,1.);\x0a#endif\x0a\x0a#ifdef\x20EMISSIVEASILLUMINATION\x0avec4\x20color=vec4(clamp(finalDiffuse*baseAmbientColor+finalSpecular+reflectionColor+emissiveColor+refractionColor,0.0,1.0),alpha);\x0a#else\x0avec4\x20color=vec4(finalDiffuse*baseAmbientColor+finalSpecular+reflectionColor+refractionColor,alpha);\x0a#endif\x0a\x0a#ifdef\x20LIGHTMAP\x0a#ifndef\x20LIGHTMAPEXCLUDED\x0a#ifdef\x20USELIGHTMAPASSHADOWMAP\x0acolor.rgb*=lightmapColor;\x0a#else\x0acolor.rgb+=lightmapColor;\x0a#endif\x0a#endif\x0a#endif\x0a#define\x20CUSTOM_FRAGMENT_BEFORE_FOG\x0acolor.rgb=max(color.rgb,0.);\x0a#include\x0a#include\x0a\x0a\x0a#ifdef\x20IMAGEPROCESSINGPOSTPROCESS\x0acolor.rgb=toLinearSpace(color.rgb);\x0a#else\x0a#ifdef\x20IMAGEPROCESSING\x0acolor.rgb=toLinearSpace(color.rgb);\x0acolor=applyImageProcessing(color);\x0a#endif\x0a#endif\x0acolor.a*=visibility;\x0a#ifdef\x20PREMULTIPLYALPHA\x0a\x0acolor.rgb*=color.a;\x0a#endif\x0a#define\x20CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR\x0agl_FragColor=color;\x0a}\x0a'; _0x499c94['a']['ShadersStore']['defaultPixelShader'] = _0x33d321; var _0x53edc4 = '\x0auniform\x20mat4\x20viewProjection;\x0auniform\x20mat4\x20view;\x0a#ifdef\x20DIFFUSE\x0auniform\x20mat4\x20diffuseMatrix;\x0auniform\x20vec2\x20vDiffuseInfos;\x0a#endif\x0a#ifdef\x20AMBIENT\x0auniform\x20mat4\x20ambientMatrix;\x0auniform\x20vec2\x20vAmbientInfos;\x0a#endif\x0a#ifdef\x20OPACITY\x0auniform\x20mat4\x20opacityMatrix;\x0auniform\x20vec2\x20vOpacityInfos;\x0a#endif\x0a#ifdef\x20EMISSIVE\x0auniform\x20vec2\x20vEmissiveInfos;\x0auniform\x20mat4\x20emissiveMatrix;\x0a#endif\x0a#ifdef\x20LIGHTMAP\x0auniform\x20vec2\x20vLightmapInfos;\x0auniform\x20mat4\x20lightmapMatrix;\x0a#endif\x0a#if\x20defined(SPECULAR)\x20&&\x20defined(SPECULARTERM)\x0auniform\x20vec2\x20vSpecularInfos;\x0auniform\x20mat4\x20specularMatrix;\x0a#endif\x0a#ifdef\x20BUMP\x0auniform\x20vec3\x20vBumpInfos;\x0auniform\x20mat4\x20bumpMatrix;\x0a#endif\x0a#ifdef\x20REFLECTION\x0auniform\x20mat4\x20reflectionMatrix;\x0a#endif\x0a#ifdef\x20POINTSIZE\x0auniform\x20float\x20pointSize;\x0a#endif\x0a'; _0x499c94['a']['IncludesShadersStore']['defaultVertexDeclaration'] = _0x53edc4; _0x7814a5(0x43), _0x7814a5(0x44), _0x7814a5(0x7c), _0x7814a5(0x60), _0x7814a5(0x64), _0x7814a5(0x65), _0x7814a5(0x66), _0x7814a5(0x67), _0x7814a5(0x45), _0x7814a5(0x46), _0x7814a5(0x7d), _0x7814a5(0x5a), _0x7814a5(0x74), _0x7814a5(0x75); _0x499c94['a']['IncludesShadersStore']['pointCloudVertex'] = '#ifdef\x20POINTSIZE\x0agl_PointSize=pointSize;\x0a#endif'; _0x7814a5(0x76); var _0x23b5da = '#include<__decl__defaultVertex>\x0a\x0a#define\x20CUSTOM_VERTEX_BEGIN\x0aattribute\x20vec3\x20position;\x0a#ifdef\x20NORMAL\x0aattribute\x20vec3\x20normal;\x0a#endif\x0a#ifdef\x20TANGENT\x0aattribute\x20vec4\x20tangent;\x0a#endif\x0a#ifdef\x20UV1\x0aattribute\x20vec2\x20uv;\x0a#endif\x0a#ifdef\x20UV2\x0aattribute\x20vec2\x20uv2;\x0a#endif\x0a#ifdef\x20VERTEXCOLOR\x0aattribute\x20vec4\x20color;\x0a#endif\x0a#include\x0a#include\x0a\x0a#include\x0a#ifdef\x20MAINUV1\x0avarying\x20vec2\x20vMainUV1;\x0a#endif\x0a#ifdef\x20MAINUV2\x0avarying\x20vec2\x20vMainUV2;\x0a#endif\x0a#if\x20defined(DIFFUSE)\x20&&\x20DIFFUSEDIRECTUV\x20==\x200\x0avarying\x20vec2\x20vDiffuseUV;\x0a#endif\x0a#if\x20defined(AMBIENT)\x20&&\x20AMBIENTDIRECTUV\x20==\x200\x0avarying\x20vec2\x20vAmbientUV;\x0a#endif\x0a#if\x20defined(OPACITY)\x20&&\x20OPACITYDIRECTUV\x20==\x200\x0avarying\x20vec2\x20vOpacityUV;\x0a#endif\x0a#if\x20defined(EMISSIVE)\x20&&\x20EMISSIVEDIRECTUV\x20==\x200\x0avarying\x20vec2\x20vEmissiveUV;\x0a#endif\x0a#if\x20defined(LIGHTMAP)\x20&&\x20LIGHTMAPDIRECTUV\x20==\x200\x0avarying\x20vec2\x20vLightmapUV;\x0a#endif\x0a#if\x20defined(SPECULAR)\x20&&\x20defined(SPECULARTERM)\x20&&\x20SPECULARDIRECTUV\x20==\x200\x0avarying\x20vec2\x20vSpecularUV;\x0a#endif\x0a#if\x20defined(BUMP)\x20&&\x20BUMPDIRECTUV\x20==\x200\x0avarying\x20vec2\x20vBumpUV;\x0a#endif\x0a\x0avarying\x20vec3\x20vPositionW;\x0a#ifdef\x20NORMAL\x0avarying\x20vec3\x20vNormalW;\x0a#endif\x0a#ifdef\x20VERTEXCOLOR\x0avarying\x20vec4\x20vColor;\x0a#endif\x0a#include\x0a#include\x0a#include\x0a#include<__decl__lightFragment>[0..maxSimultaneousLights]\x0a#include\x0a#include[0..maxSimultaneousMorphTargets]\x0a#ifdef\x20REFLECTIONMAP_SKYBOX\x0avarying\x20vec3\x20vPositionUVW;\x0a#endif\x0a#if\x20defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED)\x20||\x20defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\x0avarying\x20vec3\x20vDirectionW;\x0a#endif\x0a#include\x0a#define\x20CUSTOM_VERTEX_DEFINITIONS\x0avoid\x20main(void)\x20{\x0a#define\x20CUSTOM_VERTEX_MAIN_BEGIN\x0avec3\x20positionUpdated=position;\x0a#ifdef\x20NORMAL\x0avec3\x20normalUpdated=normal;\x0a#endif\x0a#ifdef\x20TANGENT\x0avec4\x20tangentUpdated=tangent;\x0a#endif\x0a#include[0..maxSimultaneousMorphTargets]\x0a#ifdef\x20REFLECTIONMAP_SKYBOX\x0a#ifdef\x20REFLECTIONMAP_SKYBOX_TRANSFORMED\x0avPositionUVW=(reflectionMatrix*vec4(position,1.0)).xyz;\x0a#else\x0avPositionUVW=position;\x0a#endif\x0a#endif\x0a#define\x20CUSTOM_VERTEX_UPDATE_POSITION\x0a#define\x20CUSTOM_VERTEX_UPDATE_NORMAL\x0a#include\x0a#include\x0a#ifdef\x20MULTIVIEW\x0aif\x20(gl_ViewID_OVR\x20==\x200u)\x20{\x0agl_Position=viewProjection*finalWorld*vec4(positionUpdated,1.0);\x0a}\x20else\x20{\x0agl_Position=viewProjectionR*finalWorld*vec4(positionUpdated,1.0);\x0a}\x0a#else\x0agl_Position=viewProjection*finalWorld*vec4(positionUpdated,1.0);\x0a#endif\x0avec4\x20worldPos=finalWorld*vec4(positionUpdated,1.0);\x0avPositionW=vec3(worldPos);\x0a#ifdef\x20NORMAL\x0amat3\x20normalWorld=mat3(finalWorld);\x0a#ifdef\x20NONUNIFORMSCALING\x0anormalWorld=transposeMat3(inverseMat3(normalWorld));\x0a#endif\x0avNormalW=normalize(normalWorld*normalUpdated);\x0a#endif\x0a#if\x20defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED)\x20||\x20defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\x0avDirectionW=normalize(vec3(finalWorld*vec4(positionUpdated,0.0)));\x0a#endif\x0a\x0a#ifndef\x20UV1\x0avec2\x20uv=vec2(0.,0.);\x0a#endif\x0a#ifndef\x20UV2\x0avec2\x20uv2=vec2(0.,0.);\x0a#endif\x0a#ifdef\x20MAINUV1\x0avMainUV1=uv;\x0a#endif\x0a#ifdef\x20MAINUV2\x0avMainUV2=uv2;\x0a#endif\x0a#if\x20defined(DIFFUSE)\x20&&\x20DIFFUSEDIRECTUV\x20==\x200\x0aif\x20(vDiffuseInfos.x\x20==\x200.)\x0a{\x0avDiffuseUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));\x0a}\x0aelse\x0a{\x0avDiffuseUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));\x0a}\x0a#endif\x0a#if\x20defined(AMBIENT)\x20&&\x20AMBIENTDIRECTUV\x20==\x200\x0aif\x20(vAmbientInfos.x\x20==\x200.)\x0a{\x0avAmbientUV=vec2(ambientMatrix*vec4(uv,1.0,0.0));\x0a}\x0aelse\x0a{\x0avAmbientUV=vec2(ambientMatrix*vec4(uv2,1.0,0.0));\x0a}\x0a#endif\x0a#if\x20defined(OPACITY)\x20&&\x20OPACITYDIRECTUV\x20==\x200\x0aif\x20(vOpacityInfos.x\x20==\x200.)\x0a{\x0avOpacityUV=vec2(opacityMatrix*vec4(uv,1.0,0.0));\x0a}\x0aelse\x0a{\x0avOpacityUV=vec2(opacityMatrix*vec4(uv2,1.0,0.0));\x0a}\x0a#endif\x0a#if\x20defined(EMISSIVE)\x20&&\x20EMISSIVEDIRECTUV\x20==\x200\x0aif\x20(vEmissiveInfos.x\x20==\x200.)\x0a{\x0avEmissiveUV=vec2(emissiveMatrix*vec4(uv,1.0,0.0));\x0a}\x0aelse\x0a{\x0avEmissiveUV=vec2(emissiveMatrix*vec4(uv2,1.0,0.0));\x0a}\x0a#endif\x0a#if\x20defined(LIGHTMAP)\x20&&\x20LIGHTMAPDIRECTUV\x20==\x200\x0aif\x20(vLightmapInfos.x\x20==\x200.)\x0a{\x0avLightmapUV=vec2(lightmapMatrix*vec4(uv,1.0,0.0));\x0a}\x0aelse\x0a{\x0avLightmapUV=vec2(lightmapMatrix*vec4(uv2,1.0,0.0));\x0a}\x0a#endif\x0a#if\x20defined(SPECULAR)\x20&&\x20defined(SPECULARTERM)\x20&&\x20SPECULARDIRECTUV\x20==\x200\x0aif\x20(vSpecularInfos.x\x20==\x200.)\x0a{\x0avSpecularUV=vec2(specularMatrix*vec4(uv,1.0,0.0));\x0a}\x0aelse\x0a{\x0avSpecularUV=vec2(specularMatrix*vec4(uv2,1.0,0.0));\x0a}\x0a#endif\x0a#if\x20defined(BUMP)\x20&&\x20BUMPDIRECTUV\x20==\x200\x0aif\x20(vBumpInfos.x\x20==\x200.)\x0a{\x0avBumpUV=vec2(bumpMatrix*vec4(uv,1.0,0.0));\x0a}\x0aelse\x0a{\x0avBumpUV=vec2(bumpMatrix*vec4(uv2,1.0,0.0));\x0a}\x0a#endif\x0a#include\x0a#include\x0a#include\x0a#include[0..maxSimultaneousLights]\x0a#ifdef\x20VERTEXCOLOR\x0a\x0avColor=color;\x0a#endif\x0a#include\x0a#include\x0a#define\x20CUSTOM_VERTEX_MAIN_END\x0a}\x0a'; _0x499c94['a']['ShadersStore']['defaultVertexShader'] = _0x23b5da; var _0x4c451 = _0x7814a5(0x3); _0x7814a5['d'](_0x32d109, 'b', function() { return _0x1f07db; }), _0x7814a5['d'](_0x32d109, 'a', function() { return _0x945562; }); var _0x1f07db = function(_0xf818e2) { function _0x139201() { var _0x3ecd2f = _0xf818e2['call'](this) || this; return _0x3ecd2f['MAINUV1'] = !0x1, _0x3ecd2f['MAINUV2'] = !0x1, _0x3ecd2f['DIFFUSE'] = !0x1, _0x3ecd2f['DIFFUSEDIRECTUV'] = 0x0, _0x3ecd2f['AMBIENT'] = !0x1, _0x3ecd2f['AMBIENTDIRECTUV'] = 0x0, _0x3ecd2f['OPACITY'] = !0x1, _0x3ecd2f['OPACITYDIRECTUV'] = 0x0, _0x3ecd2f['OPACITYRGB'] = !0x1, _0x3ecd2f['REFLECTION'] = !0x1, _0x3ecd2f['EMISSIVE'] = !0x1, _0x3ecd2f['EMISSIVEDIRECTUV'] = 0x0, _0x3ecd2f['SPECULAR'] = !0x1, _0x3ecd2f['SPECULARDIRECTUV'] = 0x0, _0x3ecd2f['BUMP'] = !0x1, _0x3ecd2f['BUMPDIRECTUV'] = 0x0, _0x3ecd2f['PARALLAX'] = !0x1, _0x3ecd2f['PARALLAXOCCLUSION'] = !0x1, _0x3ecd2f['SPECULAROVERALPHA'] = !0x1, _0x3ecd2f['CLIPPLANE'] = !0x1, _0x3ecd2f['CLIPPLANE2'] = !0x1, _0x3ecd2f['CLIPPLANE3'] = !0x1, _0x3ecd2f['CLIPPLANE4'] = !0x1, _0x3ecd2f['ALPHATEST'] = !0x1, _0x3ecd2f['DEPTHPREPASS'] = !0x1, _0x3ecd2f['ALPHAFROMDIFFUSE'] = !0x1, _0x3ecd2f['POINTSIZE'] = !0x1, _0x3ecd2f['FOG'] = !0x1, _0x3ecd2f['SPECULARTERM'] = !0x1, _0x3ecd2f['DIFFUSEFRESNEL'] = !0x1, _0x3ecd2f['OPACITYFRESNEL'] = !0x1, _0x3ecd2f['REFLECTIONFRESNEL'] = !0x1, _0x3ecd2f['REFRACTIONFRESNEL'] = !0x1, _0x3ecd2f['EMISSIVEFRESNEL'] = !0x1, _0x3ecd2f['FRESNEL'] = !0x1, _0x3ecd2f['NORMAL'] = !0x1, _0x3ecd2f['UV1'] = !0x1, _0x3ecd2f['UV2'] = !0x1, _0x3ecd2f['VERTEXCOLOR'] = !0x1, _0x3ecd2f['VERTEXALPHA'] = !0x1, _0x3ecd2f['NUM_BONE_INFLUENCERS'] = 0x0, _0x3ecd2f['BonesPerMesh'] = 0x0, _0x3ecd2f['BONETEXTURE'] = !0x1, _0x3ecd2f['INSTANCES'] = !0x1, _0x3ecd2f['GLOSSINESS'] = !0x1, _0x3ecd2f['ROUGHNESS'] = !0x1, _0x3ecd2f['EMISSIVEASILLUMINATION'] = !0x1, _0x3ecd2f['LINKEMISSIVEWITHDIFFUSE'] = !0x1, _0x3ecd2f['REFLECTIONFRESNELFROMSPECULAR'] = !0x1, _0x3ecd2f['LIGHTMAP'] = !0x1, _0x3ecd2f['LIGHTMAPDIRECTUV'] = 0x0, _0x3ecd2f['OBJECTSPACE_NORMALMAP'] = !0x1, _0x3ecd2f['USELIGHTMAPASSHADOWMAP'] = !0x1, _0x3ecd2f['REFLECTIONMAP_3D'] = !0x1, _0x3ecd2f['REFLECTIONMAP_SPHERICAL'] = !0x1, _0x3ecd2f['REFLECTIONMAP_PLANAR'] = !0x1, _0x3ecd2f['REFLECTIONMAP_CUBIC'] = !0x1, _0x3ecd2f['USE_LOCAL_REFLECTIONMAP_CUBIC'] = !0x1, _0x3ecd2f['REFLECTIONMAP_PROJECTION'] = !0x1, _0x3ecd2f['REFLECTIONMAP_SKYBOX'] = !0x1, _0x3ecd2f['REFLECTIONMAP_SKYBOX_TRANSFORMED'] = !0x1, _0x3ecd2f['REFLECTIONMAP_EXPLICIT'] = !0x1, _0x3ecd2f['REFLECTIONMAP_EQUIRECTANGULAR'] = !0x1, _0x3ecd2f['REFLECTIONMAP_EQUIRECTANGULAR_FIXED'] = !0x1, _0x3ecd2f['REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED'] = !0x1, _0x3ecd2f['INVERTCUBICMAP'] = !0x1, _0x3ecd2f['LOGARITHMICDEPTH'] = !0x1, _0x3ecd2f['REFRACTION'] = !0x1, _0x3ecd2f['REFRACTIONMAP_3D'] = !0x1, _0x3ecd2f['REFLECTIONOVERALPHA'] = !0x1, _0x3ecd2f['TWOSIDEDLIGHTING'] = !0x1, _0x3ecd2f['SHADOWFLOAT'] = !0x1, _0x3ecd2f['MORPHTARGETS'] = !0x1, _0x3ecd2f['MORPHTARGETS_NORMAL'] = !0x1, _0x3ecd2f['MORPHTARGETS_TANGENT'] = !0x1, _0x3ecd2f['NUM_MORPH_INFLUENCERS'] = 0x0, _0x3ecd2f['NONUNIFORMSCALING'] = !0x1, _0x3ecd2f['PREMULTIPLYALPHA'] = !0x1, _0x3ecd2f['IMAGEPROCESSING'] = !0x1, _0x3ecd2f['VIGNETTE'] = !0x1, _0x3ecd2f['VIGNETTEBLENDMODEMULTIPLY'] = !0x1, _0x3ecd2f['VIGNETTEBLENDMODEOPAQUE'] = !0x1, _0x3ecd2f['TONEMAPPING'] = !0x1, _0x3ecd2f['TONEMAPPING_ACES'] = !0x1, _0x3ecd2f['CONTRAST'] = !0x1, _0x3ecd2f['COLORCURVES'] = !0x1, _0x3ecd2f['COLORGRADING'] = !0x1, _0x3ecd2f['COLORGRADING3D'] = !0x1, _0x3ecd2f['SAMPLER3DGREENDEPTH'] = !0x1, _0x3ecd2f['SAMPLER3DBGRMAP'] = !0x1, _0x3ecd2f['IMAGEPROCESSINGPOSTPROCESS'] = !0x1, _0x3ecd2f['MULTIVIEW'] = !0x1, _0x3ecd2f['IS_REFLECTION_LINEAR'] = !0x1, _0x3ecd2f['IS_REFRACTION_LINEAR'] = !0x1, _0x3ecd2f['EXPOSURE'] = !0x1, _0x3ecd2f['rebuild'](), _0x3ecd2f; } return _0x6826e5['d'](_0x139201, _0xf818e2), _0x139201['prototype']['setReflectionMode'] = function(_0x4ddb86) { for (var _0x17ac36 = 0x0, _0x143cd3 = ['REFLECTIONMAP_CUBIC', 'REFLECTIONMAP_EXPLICIT', 'REFLECTIONMAP_PLANAR', 'REFLECTIONMAP_PROJECTION', 'REFLECTIONMAP_PROJECTION', 'REFLECTIONMAP_SKYBOX', 'REFLECTIONMAP_SPHERICAL', 'REFLECTIONMAP_EQUIRECTANGULAR', 'REFLECTIONMAP_EQUIRECTANGULAR_FIXED', 'REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED']; _0x17ac36 < _0x143cd3['length']; _0x17ac36++) { var _0xc3ad2f = _0x143cd3[_0x17ac36]; this[_0xc3ad2f] = _0xc3ad2f === _0x4ddb86; } } , _0x139201; }(_0x2f344e['a']) , _0x945562 = function(_0x46a82c) { function _0x34f7f9(_0x3e45d2, _0x228242) { var _0xba4f8f = _0x46a82c['call'](this, _0x3e45d2, _0x228242) || this; return _0xba4f8f['_diffuseTexture'] = null, _0xba4f8f['_ambientTexture'] = null, _0xba4f8f['_opacityTexture'] = null, _0xba4f8f['_reflectionTexture'] = null, _0xba4f8f['_emissiveTexture'] = null, _0xba4f8f['_specularTexture'] = null, _0xba4f8f['_bumpTexture'] = null, _0xba4f8f['_lightmapTexture'] = null, _0xba4f8f['_refractionTexture'] = null, _0xba4f8f['ambientColor'] = new _0x7d3c77['e'](0x0,0x0,0x0), _0xba4f8f['diffuseColor'] = new _0x7d3c77['e'](0x1,0x1,0x1), _0xba4f8f['specularColor'] = new _0x7d3c77['e'](0x1,0x1,0x1), _0xba4f8f['emissiveColor'] = new _0x7d3c77['e'](0x0,0x0,0x0), _0xba4f8f['specularPower'] = 0x40, _0xba4f8f['_useAlphaFromDiffuseTexture'] = !0x1, _0xba4f8f['_useEmissiveAsIllumination'] = !0x1, _0xba4f8f['_linkEmissiveWithDiffuse'] = !0x1, _0xba4f8f['_useSpecularOverAlpha'] = !0x1, _0xba4f8f['_useReflectionOverAlpha'] = !0x1, _0xba4f8f['_disableLighting'] = !0x1, _0xba4f8f['_useObjectSpaceNormalMap'] = !0x1, _0xba4f8f['_useParallax'] = !0x1, _0xba4f8f['_useParallaxOcclusion'] = !0x1, _0xba4f8f['parallaxScaleBias'] = 0.05, _0xba4f8f['_roughness'] = 0x0, _0xba4f8f['indexOfRefraction'] = 0.98, _0xba4f8f['invertRefractionY'] = !0x0, _0xba4f8f['alphaCutOff'] = 0.4, _0xba4f8f['_useLightmapAsShadowmap'] = !0x1, _0xba4f8f['_useReflectionFresnelFromSpecular'] = !0x1, _0xba4f8f['_useGlossinessFromSpecularMapAlpha'] = !0x1, _0xba4f8f['_maxSimultaneousLights'] = 0x4, _0xba4f8f['_invertNormalMapX'] = !0x1, _0xba4f8f['_invertNormalMapY'] = !0x1, _0xba4f8f['_twoSidedLighting'] = !0x1, _0xba4f8f['_renderTargets'] = new _0x7d3778['a'](0x10), _0xba4f8f['_worldViewProjectionMatrix'] = _0x7d3c77['j']['Zero'](), _0xba4f8f['_globalAmbientColor'] = new _0x7d3c77['e'](0x0,0x0,0x0), _0xba4f8f['_attachImageProcessingConfiguration'](null), _0xba4f8f['getRenderTargetTextures'] = function() { return _0xba4f8f['_renderTargets']['reset'](), _0x34f7f9['ReflectionTextureEnabled'] && _0xba4f8f['_reflectionTexture'] && _0xba4f8f['_reflectionTexture']['isRenderTarget'] && _0xba4f8f['_renderTargets']['push'](_0xba4f8f['_reflectionTexture']), _0x34f7f9['RefractionTextureEnabled'] && _0xba4f8f['_refractionTexture'] && _0xba4f8f['_refractionTexture']['isRenderTarget'] && _0xba4f8f['_renderTargets']['push'](_0xba4f8f['_refractionTexture']), _0xba4f8f['_renderTargets']; } , _0xba4f8f; } return _0x6826e5['d'](_0x34f7f9, _0x46a82c), Object['defineProperty'](_0x34f7f9['prototype'], 'imageProcessingConfiguration', { 'get': function() { return this['_imageProcessingConfiguration']; }, 'set': function(_0x4a731e) { this['_attachImageProcessingConfiguration'](_0x4a731e), this['_markAllSubMeshesAsTexturesDirty'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x34f7f9['prototype']['_attachImageProcessingConfiguration'] = function(_0x404256) { var _0x396ba5 = this; _0x404256 !== this['_imageProcessingConfiguration'] && (this['_imageProcessingConfiguration'] && this['_imageProcessingObserver'] && this['_imageProcessingConfiguration']['onUpdateParameters']['remove'](this['_imageProcessingObserver']), this['_imageProcessingConfiguration'] = _0x404256 || this['getScene']()['imageProcessingConfiguration'], this['_imageProcessingConfiguration'] && (this['_imageProcessingObserver'] = this['_imageProcessingConfiguration']['onUpdateParameters']['add'](function() { _0x396ba5['_markAllSubMeshesAsImageProcessingDirty'](); }))); } , Object['defineProperty'](_0x34f7f9['prototype'], 'cameraColorCurvesEnabled', { 'get': function() { return this['imageProcessingConfiguration']['colorCurvesEnabled']; }, 'set': function(_0x5d144e) { this['imageProcessingConfiguration']['colorCurvesEnabled'] = _0x5d144e; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9['prototype'], 'cameraColorGradingEnabled', { 'get': function() { return this['imageProcessingConfiguration']['colorGradingEnabled']; }, 'set': function(_0x381f3c) { this['imageProcessingConfiguration']['colorGradingEnabled'] = _0x381f3c; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9['prototype'], 'cameraToneMappingEnabled', { 'get': function() { return this['_imageProcessingConfiguration']['toneMappingEnabled']; }, 'set': function(_0x5f0fdc) { this['_imageProcessingConfiguration']['toneMappingEnabled'] = _0x5f0fdc; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9['prototype'], 'cameraExposure', { 'get': function() { return this['_imageProcessingConfiguration']['exposure']; }, 'set': function(_0x39c571) { this['_imageProcessingConfiguration']['exposure'] = _0x39c571; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9['prototype'], 'cameraContrast', { 'get': function() { return this['_imageProcessingConfiguration']['contrast']; }, 'set': function(_0x3086cd) { this['_imageProcessingConfiguration']['contrast'] = _0x3086cd; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9['prototype'], 'cameraColorGradingTexture', { 'get': function() { return this['_imageProcessingConfiguration']['colorGradingTexture']; }, 'set': function(_0x4d94b1) { this['_imageProcessingConfiguration']['colorGradingTexture'] = _0x4d94b1; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9['prototype'], 'cameraColorCurves', { 'get': function() { return this['_imageProcessingConfiguration']['colorCurves']; }, 'set': function(_0x4d79fd) { this['_imageProcessingConfiguration']['colorCurves'] = _0x4d79fd; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9['prototype'], 'hasRenderTargetTextures', { 'get': function() { return !!(_0x34f7f9['ReflectionTextureEnabled'] && this['_reflectionTexture'] && this['_reflectionTexture']['isRenderTarget']) || !!(_0x34f7f9['RefractionTextureEnabled'] && this['_refractionTexture'] && this['_refractionTexture']['isRenderTarget']); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x34f7f9['prototype']['getClassName'] = function() { return 'StandardMaterial'; } , Object['defineProperty'](_0x34f7f9['prototype'], 'useLogarithmicDepth', { 'get': function() { return this['_useLogarithmicDepth']; }, 'set': function(_0x41a613) { this['_useLogarithmicDepth'] = _0x41a613 && this['getScene']()['getEngine']()['getCaps']()['fragmentDepthSupported'], this['_markAllSubMeshesAsMiscDirty'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x34f7f9['prototype']['needAlphaBlending'] = function() { return this['alpha'] < 0x1 || null != this['_opacityTexture'] || this['_shouldUseAlphaFromDiffuseTexture']() || this['_opacityFresnelParameters'] && this['_opacityFresnelParameters']['isEnabled']; } , _0x34f7f9['prototype']['needAlphaTesting'] = function() { return null != this['_diffuseTexture'] && this['_diffuseTexture']['hasAlpha']; } , _0x34f7f9['prototype']['_shouldUseAlphaFromDiffuseTexture'] = function() { return null != this['_diffuseTexture'] && this['_diffuseTexture']['hasAlpha'] && this['_useAlphaFromDiffuseTexture']; } , _0x34f7f9['prototype']['getAlphaTestTexture'] = function() { return this['_diffuseTexture']; } , _0x34f7f9['prototype']['isReadyForSubMesh'] = function(_0x4f9524, _0x1a1240, _0xb8fd2c) { if (void 0x0 === _0xb8fd2c && (_0xb8fd2c = !0x1), _0x1a1240['effect'] && this['isFrozen'] && this['_wasPreviouslyReady']) return !0x0; _0x1a1240['_materialDefines'] || (_0x1a1240['_materialDefines'] = new _0x1f07db()); var _0x2c8a29 = this['getScene']() , _0x31127f = _0x1a1240['_materialDefines']; if (!this['checkReadyOnEveryCall'] && _0x1a1240['effect'] && _0x31127f['_renderId'] === _0x2c8a29['getRenderId']()) return !0x0; var _0x27de37 = _0x2c8a29['getEngine'](); if (_0x31127f['_needNormals'] = _0x43b347['a']['PrepareDefinesForLights'](_0x2c8a29, _0x4f9524, _0x31127f, !0x0, this['_maxSimultaneousLights'], this['_disableLighting']), _0x43b347['a']['PrepareDefinesForMultiview'](_0x2c8a29, _0x31127f), _0x31127f['_areTexturesDirty']) { if (_0x31127f['_needUVs'] = !0x1, _0x31127f['MAINUV1'] = !0x1, _0x31127f['MAINUV2'] = !0x1, _0x2c8a29['texturesEnabled']) { if (this['_diffuseTexture'] && _0x34f7f9['DiffuseTextureEnabled']) { if (!this['_diffuseTexture']['isReadyOrNotBlocking']()) return !0x1; _0x43b347['a']['PrepareDefinesForMergedUV'](this['_diffuseTexture'], _0x31127f, 'DIFFUSE'); } else _0x31127f['DIFFUSE'] = !0x1; if (this['_ambientTexture'] && _0x34f7f9['AmbientTextureEnabled']) { if (!this['_ambientTexture']['isReadyOrNotBlocking']()) return !0x1; _0x43b347['a']['PrepareDefinesForMergedUV'](this['_ambientTexture'], _0x31127f, 'AMBIENT'); } else _0x31127f['AMBIENT'] = !0x1; if (this['_opacityTexture'] && _0x34f7f9['OpacityTextureEnabled']) { if (!this['_opacityTexture']['isReadyOrNotBlocking']()) return !0x1; _0x43b347['a']['PrepareDefinesForMergedUV'](this['_opacityTexture'], _0x31127f, 'OPACITY'), _0x31127f['OPACITYRGB'] = this['_opacityTexture']['getAlphaFromRGB']; } else _0x31127f['OPACITY'] = !0x1; if (this['_reflectionTexture'] && _0x34f7f9['ReflectionTextureEnabled']) { if (!this['_reflectionTexture']['isReadyOrNotBlocking']()) return !0x1; switch (_0x31127f['_needNormals'] = !0x0, _0x31127f['REFLECTION'] = !0x0, _0x31127f['ROUGHNESS'] = this['_roughness'] > 0x0, _0x31127f['REFLECTIONOVERALPHA'] = this['_useReflectionOverAlpha'], _0x31127f['INVERTCUBICMAP'] = this['_reflectionTexture']['coordinatesMode'] === _0x3ba7a0['a']['INVCUBIC_MODE'], _0x31127f['REFLECTIONMAP_3D'] = this['_reflectionTexture']['isCube'], this['_reflectionTexture']['coordinatesMode']) { case _0x3ba7a0['a']['EXPLICIT_MODE']: _0x31127f['setReflectionMode']('REFLECTIONMAP_EXPLICIT'); break; case _0x3ba7a0['a']['PLANAR_MODE']: _0x31127f['setReflectionMode']('REFLECTIONMAP_PLANAR'); break; case _0x3ba7a0['a']['PROJECTION_MODE']: _0x31127f['setReflectionMode']('REFLECTIONMAP_PROJECTION'); break; case _0x3ba7a0['a']['SKYBOX_MODE']: _0x31127f['setReflectionMode']('REFLECTIONMAP_SKYBOX'), _0x31127f['REFLECTIONMAP_SKYBOX_TRANSFORMED'] = !this['_reflectionTexture']['getReflectionTextureMatrix']()['isIdentity'](); break; case _0x3ba7a0['a']['SPHERICAL_MODE']: _0x31127f['setReflectionMode']('REFLECTIONMAP_SPHERICAL'); break; case _0x3ba7a0['a']['EQUIRECTANGULAR_MODE']: _0x31127f['setReflectionMode']('REFLECTIONMAP_EQUIRECTANGULAR'); break; case _0x3ba7a0['a']['FIXED_EQUIRECTANGULAR_MODE']: _0x31127f['setReflectionMode']('REFLECTIONMAP_EQUIRECTANGULAR_FIXED'); break; case _0x3ba7a0['a']['FIXED_EQUIRECTANGULAR_MIRRORED_MODE']: _0x31127f['setReflectionMode']('REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED'); break; case _0x3ba7a0['a']['CUBIC_MODE']: case _0x3ba7a0['a']['INVCUBIC_MODE']: default: _0x31127f['setReflectionMode']('REFLECTIONMAP_CUBIC'); } _0x31127f['USE_LOCAL_REFLECTIONMAP_CUBIC'] = !!this['_reflectionTexture']['boundingBoxSize']; } else _0x31127f['REFLECTION'] = !0x1; if (this['_emissiveTexture'] && _0x34f7f9['EmissiveTextureEnabled']) { if (!this['_emissiveTexture']['isReadyOrNotBlocking']()) return !0x1; _0x43b347['a']['PrepareDefinesForMergedUV'](this['_emissiveTexture'], _0x31127f, 'EMISSIVE'); } else _0x31127f['EMISSIVE'] = !0x1; if (this['_lightmapTexture'] && _0x34f7f9['LightmapTextureEnabled']) { if (!this['_lightmapTexture']['isReadyOrNotBlocking']()) return !0x1; _0x43b347['a']['PrepareDefinesForMergedUV'](this['_lightmapTexture'], _0x31127f, 'LIGHTMAP'), _0x31127f['USELIGHTMAPASSHADOWMAP'] = this['_useLightmapAsShadowmap']; } else _0x31127f['LIGHTMAP'] = !0x1; if (this['_specularTexture'] && _0x34f7f9['SpecularTextureEnabled']) { if (!this['_specularTexture']['isReadyOrNotBlocking']()) return !0x1; _0x43b347['a']['PrepareDefinesForMergedUV'](this['_specularTexture'], _0x31127f, 'SPECULAR'), _0x31127f['GLOSSINESS'] = this['_useGlossinessFromSpecularMapAlpha']; } else _0x31127f['SPECULAR'] = !0x1; if (_0x2c8a29['getEngine']()['getCaps']()['standardDerivatives'] && this['_bumpTexture'] && _0x34f7f9['BumpTextureEnabled']) { if (!this['_bumpTexture']['isReady']()) return !0x1; _0x43b347['a']['PrepareDefinesForMergedUV'](this['_bumpTexture'], _0x31127f, 'BUMP'), _0x31127f['PARALLAX'] = this['_useParallax'], _0x31127f['PARALLAXOCCLUSION'] = this['_useParallaxOcclusion'], _0x31127f['OBJECTSPACE_NORMALMAP'] = this['_useObjectSpaceNormalMap']; } else _0x31127f['BUMP'] = !0x1; if (this['_refractionTexture'] && _0x34f7f9['RefractionTextureEnabled']) { if (!this['_refractionTexture']['isReadyOrNotBlocking']()) return !0x1; _0x31127f['_needUVs'] = !0x0, _0x31127f['REFRACTION'] = !0x0, _0x31127f['REFRACTIONMAP_3D'] = this['_refractionTexture']['isCube']; } else _0x31127f['REFRACTION'] = !0x1; _0x31127f['TWOSIDEDLIGHTING'] = !this['_backFaceCulling'] && this['_twoSidedLighting']; } else _0x31127f['DIFFUSE'] = !0x1, _0x31127f['AMBIENT'] = !0x1, _0x31127f['OPACITY'] = !0x1, _0x31127f['REFLECTION'] = !0x1, _0x31127f['EMISSIVE'] = !0x1, _0x31127f['LIGHTMAP'] = !0x1, _0x31127f['BUMP'] = !0x1, _0x31127f['REFRACTION'] = !0x1; _0x31127f['ALPHAFROMDIFFUSE'] = this['_shouldUseAlphaFromDiffuseTexture'](), _0x31127f['EMISSIVEASILLUMINATION'] = this['_useEmissiveAsIllumination'], _0x31127f['LINKEMISSIVEWITHDIFFUSE'] = this['_linkEmissiveWithDiffuse'], _0x31127f['SPECULAROVERALPHA'] = this['_useSpecularOverAlpha'], _0x31127f['PREMULTIPLYALPHA'] = this['alphaMode'] === _0x4c451['a']['ALPHA_PREMULTIPLIED'] || this['alphaMode'] === _0x4c451['a']['ALPHA_PREMULTIPLIED_PORTERDUFF']; } if (_0x31127f['_areImageProcessingDirty'] && this['_imageProcessingConfiguration']) { if (!this['_imageProcessingConfiguration']['isReady']()) return !0x1; this['_imageProcessingConfiguration']['prepareDefines'](_0x31127f), _0x31127f['IS_REFLECTION_LINEAR'] = null != this['reflectionTexture'] && !this['reflectionTexture']['gammaSpace'], _0x31127f['IS_REFRACTION_LINEAR'] = null != this['refractionTexture'] && !this['refractionTexture']['gammaSpace']; } if (_0x31127f['_areFresnelDirty'] && (_0x34f7f9['FresnelEnabled'] ? (this['_diffuseFresnelParameters'] || this['_opacityFresnelParameters'] || this['_emissiveFresnelParameters'] || this['_refractionFresnelParameters'] || this['_reflectionFresnelParameters']) && (_0x31127f['DIFFUSEFRESNEL'] = this['_diffuseFresnelParameters'] && this['_diffuseFresnelParameters']['isEnabled'], _0x31127f['OPACITYFRESNEL'] = this['_opacityFresnelParameters'] && this['_opacityFresnelParameters']['isEnabled'], _0x31127f['REFLECTIONFRESNEL'] = this['_reflectionFresnelParameters'] && this['_reflectionFresnelParameters']['isEnabled'], _0x31127f['REFLECTIONFRESNELFROMSPECULAR'] = this['_useReflectionFresnelFromSpecular'], _0x31127f['REFRACTIONFRESNEL'] = this['_refractionFresnelParameters'] && this['_refractionFresnelParameters']['isEnabled'], _0x31127f['EMISSIVEFRESNEL'] = this['_emissiveFresnelParameters'] && this['_emissiveFresnelParameters']['isEnabled'], _0x31127f['_needNormals'] = !0x0, _0x31127f['FRESNEL'] = !0x0) : _0x31127f['FRESNEL'] = !0x1), _0x43b347['a']['PrepareDefinesForMisc'](_0x4f9524, _0x2c8a29, this['_useLogarithmicDepth'], this['pointsCloud'], this['fogEnabled'], this['_shouldTurnAlphaTestOn'](_0x4f9524), _0x31127f), _0x43b347['a']['PrepareDefinesForAttributes'](_0x4f9524, _0x31127f, !0x0, !0x0, !0x0), _0x43b347['a']['PrepareDefinesForFrameBoundValues'](_0x2c8a29, _0x27de37, _0x31127f, _0xb8fd2c), _0x31127f['isDirty']) { _0x31127f['markAsProcessed'](); var _0x1a1341 = new _0x499c94['c'](); _0x31127f['REFLECTION'] && _0x1a1341['addFallback'](0x0, 'REFLECTION'), _0x31127f['SPECULAR'] && _0x1a1341['addFallback'](0x0, 'SPECULAR'), _0x31127f['BUMP'] && _0x1a1341['addFallback'](0x0, 'BUMP'), _0x31127f['PARALLAX'] && _0x1a1341['addFallback'](0x1, 'PARALLAX'), _0x31127f['PARALLAXOCCLUSION'] && _0x1a1341['addFallback'](0x0, 'PARALLAXOCCLUSION'), _0x31127f['SPECULAROVERALPHA'] && _0x1a1341['addFallback'](0x0, 'SPECULAROVERALPHA'), _0x31127f['FOG'] && _0x1a1341['addFallback'](0x1, 'FOG'), _0x31127f['POINTSIZE'] && _0x1a1341['addFallback'](0x0, 'POINTSIZE'), _0x31127f['LOGARITHMICDEPTH'] && _0x1a1341['addFallback'](0x0, 'LOGARITHMICDEPTH'), _0x43b347['a']['HandleFallbacksForShadows'](_0x31127f, _0x1a1341, this['_maxSimultaneousLights']), _0x31127f['SPECULARTERM'] && _0x1a1341['addFallback'](0x0, 'SPECULARTERM'), _0x31127f['DIFFUSEFRESNEL'] && _0x1a1341['addFallback'](0x1, 'DIFFUSEFRESNEL'), _0x31127f['OPACITYFRESNEL'] && _0x1a1341['addFallback'](0x2, 'OPACITYFRESNEL'), _0x31127f['REFLECTIONFRESNEL'] && _0x1a1341['addFallback'](0x3, 'REFLECTIONFRESNEL'), _0x31127f['EMISSIVEFRESNEL'] && _0x1a1341['addFallback'](0x4, 'EMISSIVEFRESNEL'), _0x31127f['FRESNEL'] && _0x1a1341['addFallback'](0x4, 'FRESNEL'), _0x31127f['MULTIVIEW'] && _0x1a1341['addFallback'](0x0, 'MULTIVIEW'); var _0xcfc3a0 = [_0x3a1991['b']['PositionKind']]; _0x31127f['NORMAL'] && _0xcfc3a0['push'](_0x3a1991['b']['NormalKind']), _0x31127f['UV1'] && _0xcfc3a0['push'](_0x3a1991['b']['UVKind']), _0x31127f['UV2'] && _0xcfc3a0['push'](_0x3a1991['b']['UV2Kind']), _0x31127f['VERTEXCOLOR'] && _0xcfc3a0['push'](_0x3a1991['b']['ColorKind']), _0x43b347['a']['PrepareAttributesForBones'](_0xcfc3a0, _0x4f9524, _0x31127f, _0x1a1341), _0x43b347['a']['PrepareAttributesForInstances'](_0xcfc3a0, _0x31127f), _0x43b347['a']['PrepareAttributesForMorphTargets'](_0xcfc3a0, _0x4f9524, _0x31127f); var _0x3111b5 = 'default' , _0x1f9cc6 = ['world', 'view', 'viewProjection', 'vEyePosition', 'vLightsType', 'vAmbientColor', 'vDiffuseColor', 'vSpecularColor', 'vEmissiveColor', 'visibility', 'vFogInfos', 'vFogColor', 'pointSize', 'vDiffuseInfos', 'vAmbientInfos', 'vOpacityInfos', 'vReflectionInfos', 'vEmissiveInfos', 'vSpecularInfos', 'vBumpInfos', 'vLightmapInfos', 'vRefractionInfos', 'mBones', 'vClipPlane', 'vClipPlane2', 'vClipPlane3', 'vClipPlane4', 'diffuseMatrix', 'ambientMatrix', 'opacityMatrix', 'reflectionMatrix', 'emissiveMatrix', 'specularMatrix', 'bumpMatrix', 'normalMatrix', 'lightmapMatrix', 'refractionMatrix', 'diffuseLeftColor', 'diffuseRightColor', 'opacityParts', 'reflectionLeftColor', 'reflectionRightColor', 'emissiveLeftColor', 'emissiveRightColor', 'refractionLeftColor', 'refractionRightColor', 'vReflectionPosition', 'vReflectionSize', 'logarithmicDepthConstant', 'vTangentSpaceParams', 'alphaCutOff', 'boneTextureWidth'] , _0xf93028 = ['diffuseSampler', 'ambientSampler', 'opacitySampler', 'reflectionCubeSampler', 'reflection2DSampler', 'emissiveSampler', 'specularSampler', 'bumpSampler', 'lightmapSampler', 'refractionCubeSampler', 'refraction2DSampler', 'boneSampler'] , _0x3b2ce2 = ['Material', 'Scene']; _0x2e08b0['a'] && (_0x2e08b0['a']['PrepareUniforms'](_0x1f9cc6, _0x31127f), _0x2e08b0['a']['PrepareSamplers'](_0xf93028, _0x31127f)), _0x43b347['a']['PrepareUniformsAndSamplersList']({ 'uniformsNames': _0x1f9cc6, 'uniformBuffersNames': _0x3b2ce2, 'samplers': _0xf93028, 'defines': _0x31127f, 'maxSimultaneousLights': this['_maxSimultaneousLights'] }), this['customShaderNameResolve'] && (_0x3111b5 = this['customShaderNameResolve'](_0x3111b5, _0x1f9cc6, _0x3b2ce2, _0xf93028, _0x31127f)); var _0x18df2a = _0x31127f['toString']() , _0x1b390e = _0x1a1240['effect'] , _0x113b1b = _0x2c8a29['getEngine']()['createEffect'](_0x3111b5, { 'attributes': _0xcfc3a0, 'uniformsNames': _0x1f9cc6, 'uniformBuffersNames': _0x3b2ce2, 'samplers': _0xf93028, 'defines': _0x18df2a, 'fallbacks': _0x1a1341, 'onCompiled': this['onCompiled'], 'onError': this['onError'], 'indexParameters': { 'maxSimultaneousLights': this['_maxSimultaneousLights'], 'maxSimultaneousMorphTargets': _0x31127f['NUM_MORPH_INFLUENCERS'] } }, _0x27de37); _0x113b1b && (this['allowShaderHotSwapping'] && _0x1b390e && !_0x113b1b['isReady']() ? (_0x113b1b = _0x1b390e, _0x31127f['markAsUnprocessed']()) : (_0x2c8a29['resetCachedMaterial'](), _0x1a1240['setEffect'](_0x113b1b, _0x31127f), this['buildUniformLayout']())); } return !(!_0x1a1240['effect'] || !_0x1a1240['effect']['isReady']()) && (_0x31127f['_renderId'] = _0x2c8a29['getRenderId'](), this['_wasPreviouslyReady'] = !0x0, !0x0); } , _0x34f7f9['prototype']['buildUniformLayout'] = function() { var _0x350703 = this['_uniformBuffer']; _0x350703['addUniform']('diffuseLeftColor', 0x4), _0x350703['addUniform']('diffuseRightColor', 0x4), _0x350703['addUniform']('opacityParts', 0x4), _0x350703['addUniform']('reflectionLeftColor', 0x4), _0x350703['addUniform']('reflectionRightColor', 0x4), _0x350703['addUniform']('refractionLeftColor', 0x4), _0x350703['addUniform']('refractionRightColor', 0x4), _0x350703['addUniform']('emissiveLeftColor', 0x4), _0x350703['addUniform']('emissiveRightColor', 0x4), _0x350703['addUniform']('vDiffuseInfos', 0x2), _0x350703['addUniform']('vAmbientInfos', 0x2), _0x350703['addUniform']('vOpacityInfos', 0x2), _0x350703['addUniform']('vReflectionInfos', 0x2), _0x350703['addUniform']('vReflectionPosition', 0x3), _0x350703['addUniform']('vReflectionSize', 0x3), _0x350703['addUniform']('vEmissiveInfos', 0x2), _0x350703['addUniform']('vLightmapInfos', 0x2), _0x350703['addUniform']('vSpecularInfos', 0x2), _0x350703['addUniform']('vBumpInfos', 0x3), _0x350703['addUniform']('diffuseMatrix', 0x10), _0x350703['addUniform']('ambientMatrix', 0x10), _0x350703['addUniform']('opacityMatrix', 0x10), _0x350703['addUniform']('reflectionMatrix', 0x10), _0x350703['addUniform']('emissiveMatrix', 0x10), _0x350703['addUniform']('lightmapMatrix', 0x10), _0x350703['addUniform']('specularMatrix', 0x10), _0x350703['addUniform']('bumpMatrix', 0x10), _0x350703['addUniform']('vTangentSpaceParams', 0x2), _0x350703['addUniform']('pointSize', 0x1), _0x350703['addUniform']('refractionMatrix', 0x10), _0x350703['addUniform']('vRefractionInfos', 0x4), _0x350703['addUniform']('vSpecularColor', 0x4), _0x350703['addUniform']('vEmissiveColor', 0x3), _0x350703['addUniform']('visibility', 0x1), _0x350703['addUniform']('vDiffuseColor', 0x4), _0x350703['create'](); } , _0x34f7f9['prototype']['unbind'] = function() { if (this['_activeEffect']) { var _0x4ff175 = !0x1; this['_reflectionTexture'] && this['_reflectionTexture']['isRenderTarget'] && (this['_activeEffect']['setTexture']('reflection2DSampler', null), _0x4ff175 = !0x0), this['_refractionTexture'] && this['_refractionTexture']['isRenderTarget'] && (this['_activeEffect']['setTexture']('refraction2DSampler', null), _0x4ff175 = !0x0), _0x4ff175 && this['_markAllSubMeshesAsTexturesDirty'](); } _0x46a82c['prototype']['unbind']['call'](this); } , _0x34f7f9['prototype']['bindForSubMesh'] = function(_0x30c950, _0x212a68, _0x16943a) { var _0x15bb8a = this['getScene']() , _0x39c70b = _0x16943a['_materialDefines']; if (_0x39c70b) { var _0x391b88 = _0x16943a['effect']; if (_0x391b88) { this['_activeEffect'] = _0x391b88, _0x39c70b['INSTANCES'] || this['bindOnlyWorldMatrix'](_0x30c950), _0x39c70b['OBJECTSPACE_NORMALMAP'] && (_0x30c950['toNormalMatrix'](this['_normalMatrix']), this['bindOnlyNormalMatrix'](this['_normalMatrix'])); var _0x970cf3 = this['_mustRebind'](_0x15bb8a, _0x391b88, _0x212a68['visibility']); _0x43b347['a']['BindBonesParameters'](_0x212a68, _0x391b88); var _0x1cf7d0 = this['_uniformBuffer']; if (_0x970cf3) { if (_0x1cf7d0['bindToEffect'](_0x391b88, 'Material'), this['bindViewProjection'](_0x391b88), !_0x1cf7d0['useUbo'] || !this['isFrozen'] || !_0x1cf7d0['isSync']) { if (_0x34f7f9['FresnelEnabled'] && _0x39c70b['FRESNEL'] && (this['diffuseFresnelParameters'] && this['diffuseFresnelParameters']['isEnabled'] && (_0x1cf7d0['updateColor4']('diffuseLeftColor', this['diffuseFresnelParameters']['leftColor'], this['diffuseFresnelParameters']['power']), _0x1cf7d0['updateColor4']('diffuseRightColor', this['diffuseFresnelParameters']['rightColor'], this['diffuseFresnelParameters']['bias'])), this['opacityFresnelParameters'] && this['opacityFresnelParameters']['isEnabled'] && _0x1cf7d0['updateColor4']('opacityParts', new _0x7d3c77['e'](this['opacityFresnelParameters']['leftColor']['toLuminance'](),this['opacityFresnelParameters']['rightColor']['toLuminance'](),this['opacityFresnelParameters']['bias']), this['opacityFresnelParameters']['power']), this['reflectionFresnelParameters'] && this['reflectionFresnelParameters']['isEnabled'] && (_0x1cf7d0['updateColor4']('reflectionLeftColor', this['reflectionFresnelParameters']['leftColor'], this['reflectionFresnelParameters']['power']), _0x1cf7d0['updateColor4']('reflectionRightColor', this['reflectionFresnelParameters']['rightColor'], this['reflectionFresnelParameters']['bias'])), this['refractionFresnelParameters'] && this['refractionFresnelParameters']['isEnabled'] && (_0x1cf7d0['updateColor4']('refractionLeftColor', this['refractionFresnelParameters']['leftColor'], this['refractionFresnelParameters']['power']), _0x1cf7d0['updateColor4']('refractionRightColor', this['refractionFresnelParameters']['rightColor'], this['refractionFresnelParameters']['bias'])), this['emissiveFresnelParameters'] && this['emissiveFresnelParameters']['isEnabled'] && (_0x1cf7d0['updateColor4']('emissiveLeftColor', this['emissiveFresnelParameters']['leftColor'], this['emissiveFresnelParameters']['power']), _0x1cf7d0['updateColor4']('emissiveRightColor', this['emissiveFresnelParameters']['rightColor'], this['emissiveFresnelParameters']['bias']))), _0x15bb8a['texturesEnabled']) { if (this['_diffuseTexture'] && _0x34f7f9['DiffuseTextureEnabled'] && (_0x1cf7d0['updateFloat2']('vDiffuseInfos', this['_diffuseTexture']['coordinatesIndex'], this['_diffuseTexture']['level']), _0x43b347['a']['BindTextureMatrix'](this['_diffuseTexture'], _0x1cf7d0, 'diffuse'), this['_diffuseTexture']['hasAlpha'] && _0x391b88['setFloat']('alphaCutOff', this['alphaCutOff'])), this['_ambientTexture'] && _0x34f7f9['AmbientTextureEnabled'] && (_0x1cf7d0['updateFloat2']('vAmbientInfos', this['_ambientTexture']['coordinatesIndex'], this['_ambientTexture']['level']), _0x43b347['a']['BindTextureMatrix'](this['_ambientTexture'], _0x1cf7d0, 'ambient')), this['_opacityTexture'] && _0x34f7f9['OpacityTextureEnabled'] && (_0x1cf7d0['updateFloat2']('vOpacityInfos', this['_opacityTexture']['coordinatesIndex'], this['_opacityTexture']['level']), _0x43b347['a']['BindTextureMatrix'](this['_opacityTexture'], _0x1cf7d0, 'opacity')), this['_reflectionTexture'] && _0x34f7f9['ReflectionTextureEnabled'] && (_0x1cf7d0['updateFloat2']('vReflectionInfos', this['_reflectionTexture']['level'], this['roughness']), _0x1cf7d0['updateMatrix']('reflectionMatrix', this['_reflectionTexture']['getReflectionTextureMatrix']()), this['_reflectionTexture']['boundingBoxSize'])) { var _0x5e581a = this['_reflectionTexture']; _0x1cf7d0['updateVector3']('vReflectionPosition', _0x5e581a['boundingBoxPosition']), _0x1cf7d0['updateVector3']('vReflectionSize', _0x5e581a['boundingBoxSize']); } if (this['_emissiveTexture'] && _0x34f7f9['EmissiveTextureEnabled'] && (_0x1cf7d0['updateFloat2']('vEmissiveInfos', this['_emissiveTexture']['coordinatesIndex'], this['_emissiveTexture']['level']), _0x43b347['a']['BindTextureMatrix'](this['_emissiveTexture'], _0x1cf7d0, 'emissive')), this['_lightmapTexture'] && _0x34f7f9['LightmapTextureEnabled'] && (_0x1cf7d0['updateFloat2']('vLightmapInfos', this['_lightmapTexture']['coordinatesIndex'], this['_lightmapTexture']['level']), _0x43b347['a']['BindTextureMatrix'](this['_lightmapTexture'], _0x1cf7d0, 'lightmap')), this['_specularTexture'] && _0x34f7f9['SpecularTextureEnabled'] && (_0x1cf7d0['updateFloat2']('vSpecularInfos', this['_specularTexture']['coordinatesIndex'], this['_specularTexture']['level']), _0x43b347['a']['BindTextureMatrix'](this['_specularTexture'], _0x1cf7d0, 'specular')), this['_bumpTexture'] && _0x15bb8a['getEngine']()['getCaps']()['standardDerivatives'] && _0x34f7f9['BumpTextureEnabled'] && (_0x1cf7d0['updateFloat3']('vBumpInfos', this['_bumpTexture']['coordinatesIndex'], 0x1 / this['_bumpTexture']['level'], this['parallaxScaleBias']), _0x43b347['a']['BindTextureMatrix'](this['_bumpTexture'], _0x1cf7d0, 'bump'), _0x15bb8a['_mirroredCameraPosition'] ? _0x1cf7d0['updateFloat2']('vTangentSpaceParams', this['_invertNormalMapX'] ? 0x1 : -0x1, this['_invertNormalMapY'] ? 0x1 : -0x1) : _0x1cf7d0['updateFloat2']('vTangentSpaceParams', this['_invertNormalMapX'] ? -0x1 : 0x1, this['_invertNormalMapY'] ? -0x1 : 0x1)), this['_refractionTexture'] && _0x34f7f9['RefractionTextureEnabled']) { var _0x1b9815 = 0x1; this['_refractionTexture']['isCube'] || (_0x1cf7d0['updateMatrix']('refractionMatrix', this['_refractionTexture']['getReflectionTextureMatrix']()), this['_refractionTexture']['depth'] && (_0x1b9815 = this['_refractionTexture']['depth'])), _0x1cf7d0['updateFloat4']('vRefractionInfos', this['_refractionTexture']['level'], this['indexOfRefraction'], _0x1b9815, this['invertRefractionY'] ? -0x1 : 0x1); } } this['pointsCloud'] && _0x1cf7d0['updateFloat']('pointSize', this['pointSize']), _0x39c70b['SPECULARTERM'] && _0x1cf7d0['updateColor4']('vSpecularColor', this['specularColor'], this['specularPower']), _0x1cf7d0['updateColor3']('vEmissiveColor', _0x34f7f9['EmissiveTextureEnabled'] ? this['emissiveColor'] : _0x7d3c77['e']['BlackReadOnly']), _0x1cf7d0['updateFloat']('visibility', _0x212a68['visibility']), _0x1cf7d0['updateColor4']('vDiffuseColor', this['diffuseColor'], this['alpha']); } if (_0x15bb8a['texturesEnabled'] && (this['_diffuseTexture'] && _0x34f7f9['DiffuseTextureEnabled'] && _0x391b88['setTexture']('diffuseSampler', this['_diffuseTexture']), this['_ambientTexture'] && _0x34f7f9['AmbientTextureEnabled'] && _0x391b88['setTexture']('ambientSampler', this['_ambientTexture']), this['_opacityTexture'] && _0x34f7f9['OpacityTextureEnabled'] && _0x391b88['setTexture']('opacitySampler', this['_opacityTexture']), this['_reflectionTexture'] && _0x34f7f9['ReflectionTextureEnabled'] && (this['_reflectionTexture']['isCube'] ? _0x391b88['setTexture']('reflectionCubeSampler', this['_reflectionTexture']) : _0x391b88['setTexture']('reflection2DSampler', this['_reflectionTexture'])), this['_emissiveTexture'] && _0x34f7f9['EmissiveTextureEnabled'] && _0x391b88['setTexture']('emissiveSampler', this['_emissiveTexture']), this['_lightmapTexture'] && _0x34f7f9['LightmapTextureEnabled'] && _0x391b88['setTexture']('lightmapSampler', this['_lightmapTexture']), this['_specularTexture'] && _0x34f7f9['SpecularTextureEnabled'] && _0x391b88['setTexture']('specularSampler', this['_specularTexture']), this['_bumpTexture'] && _0x15bb8a['getEngine']()['getCaps']()['standardDerivatives'] && _0x34f7f9['BumpTextureEnabled'] && _0x391b88['setTexture']('bumpSampler', this['_bumpTexture']), this['_refractionTexture'] && _0x34f7f9['RefractionTextureEnabled'])) { _0x1b9815 = 0x1; this['_refractionTexture']['isCube'] ? _0x391b88['setTexture']('refractionCubeSampler', this['_refractionTexture']) : _0x391b88['setTexture']('refraction2DSampler', this['_refractionTexture']); } _0x43b347['a']['BindClipPlane'](_0x391b88, _0x15bb8a), _0x15bb8a['ambientColor']['multiplyToRef'](this['ambientColor'], this['_globalAmbientColor']), _0x43b347['a']['BindEyePosition'](_0x391b88, _0x15bb8a), _0x391b88['setColor3']('vAmbientColor', this['_globalAmbientColor']); } !_0x970cf3 && this['isFrozen'] || (_0x15bb8a['lightsEnabled'] && !this['_disableLighting'] && _0x43b347['a']['BindLights'](_0x15bb8a, _0x212a68, _0x391b88, _0x39c70b, this['_maxSimultaneousLights']), (_0x15bb8a['fogEnabled'] && _0x212a68['applyFog'] && _0x15bb8a['fogMode'] !== _0x491ec0['a']['FOGMODE_NONE'] || this['_reflectionTexture'] || this['_refractionTexture']) && this['bindView'](_0x391b88), _0x43b347['a']['BindFogParameters'](_0x15bb8a, _0x212a68, _0x391b88), _0x39c70b['NUM_MORPH_INFLUENCERS'] && _0x43b347['a']['BindMorphTargetParameters'](_0x212a68, _0x391b88), _0x43b347['a']['BindLogDepth'](_0x39c70b, _0x391b88, _0x15bb8a), this['_imageProcessingConfiguration'] && !this['_imageProcessingConfiguration']['applyByPostProcess'] && this['_imageProcessingConfiguration']['bind'](this['_activeEffect'])), _0x1cf7d0['update'](), this['_afterBind'](_0x212a68, this['_activeEffect']); } } } , _0x34f7f9['prototype']['getAnimatables'] = function() { var _0x1615e3 = []; return this['_diffuseTexture'] && this['_diffuseTexture']['animations'] && this['_diffuseTexture']['animations']['length'] > 0x0 && _0x1615e3['push'](this['_diffuseTexture']), this['_ambientTexture'] && this['_ambientTexture']['animations'] && this['_ambientTexture']['animations']['length'] > 0x0 && _0x1615e3['push'](this['_ambientTexture']), this['_opacityTexture'] && this['_opacityTexture']['animations'] && this['_opacityTexture']['animations']['length'] > 0x0 && _0x1615e3['push'](this['_opacityTexture']), this['_reflectionTexture'] && this['_reflectionTexture']['animations'] && this['_reflectionTexture']['animations']['length'] > 0x0 && _0x1615e3['push'](this['_reflectionTexture']), this['_emissiveTexture'] && this['_emissiveTexture']['animations'] && this['_emissiveTexture']['animations']['length'] > 0x0 && _0x1615e3['push'](this['_emissiveTexture']), this['_specularTexture'] && this['_specularTexture']['animations'] && this['_specularTexture']['animations']['length'] > 0x0 && _0x1615e3['push'](this['_specularTexture']), this['_bumpTexture'] && this['_bumpTexture']['animations'] && this['_bumpTexture']['animations']['length'] > 0x0 && _0x1615e3['push'](this['_bumpTexture']), this['_lightmapTexture'] && this['_lightmapTexture']['animations'] && this['_lightmapTexture']['animations']['length'] > 0x0 && _0x1615e3['push'](this['_lightmapTexture']), this['_refractionTexture'] && this['_refractionTexture']['animations'] && this['_refractionTexture']['animations']['length'] > 0x0 && _0x1615e3['push'](this['_refractionTexture']), _0x1615e3; } , _0x34f7f9['prototype']['getActiveTextures'] = function() { var _0x534365 = _0x46a82c['prototype']['getActiveTextures']['call'](this); return this['_diffuseTexture'] && _0x534365['push'](this['_diffuseTexture']), this['_ambientTexture'] && _0x534365['push'](this['_ambientTexture']), this['_opacityTexture'] && _0x534365['push'](this['_opacityTexture']), this['_reflectionTexture'] && _0x534365['push'](this['_reflectionTexture']), this['_emissiveTexture'] && _0x534365['push'](this['_emissiveTexture']), this['_specularTexture'] && _0x534365['push'](this['_specularTexture']), this['_bumpTexture'] && _0x534365['push'](this['_bumpTexture']), this['_lightmapTexture'] && _0x534365['push'](this['_lightmapTexture']), this['_refractionTexture'] && _0x534365['push'](this['_refractionTexture']), _0x534365; } , _0x34f7f9['prototype']['hasTexture'] = function(_0x9f19f7) { return !!_0x46a82c['prototype']['hasTexture']['call'](this, _0x9f19f7) || (this['_diffuseTexture'] === _0x9f19f7 || (this['_ambientTexture'] === _0x9f19f7 || (this['_opacityTexture'] === _0x9f19f7 || (this['_reflectionTexture'] === _0x9f19f7 || (this['_emissiveTexture'] === _0x9f19f7 || (this['_specularTexture'] === _0x9f19f7 || (this['_bumpTexture'] === _0x9f19f7 || (this['_lightmapTexture'] === _0x9f19f7 || this['_refractionTexture'] === _0x9f19f7)))))))); } , _0x34f7f9['prototype']['dispose'] = function(_0x587577, _0x195397) { _0x195397 && (this['_diffuseTexture'] && this['_diffuseTexture']['dispose'](), this['_ambientTexture'] && this['_ambientTexture']['dispose'](), this['_opacityTexture'] && this['_opacityTexture']['dispose'](), this['_reflectionTexture'] && this['_reflectionTexture']['dispose'](), this['_emissiveTexture'] && this['_emissiveTexture']['dispose'](), this['_specularTexture'] && this['_specularTexture']['dispose'](), this['_bumpTexture'] && this['_bumpTexture']['dispose'](), this['_lightmapTexture'] && this['_lightmapTexture']['dispose'](), this['_refractionTexture'] && this['_refractionTexture']['dispose']()), this['_imageProcessingConfiguration'] && this['_imageProcessingObserver'] && this['_imageProcessingConfiguration']['onUpdateParameters']['remove'](this['_imageProcessingObserver']), _0x46a82c['prototype']['dispose']['call'](this, _0x587577, _0x195397); } , _0x34f7f9['prototype']['clone'] = function(_0x14b56c) { var _0x3e87a1 = this , _0x3f95b7 = _0x4c9a7f['a']['Clone'](function() { return new _0x34f7f9(_0x14b56c,_0x3e87a1['getScene']()); }, this); return _0x3f95b7['name'] = _0x14b56c, _0x3f95b7['id'] = _0x14b56c, _0x3f95b7; } , _0x34f7f9['prototype']['serialize'] = function() { return _0x4c9a7f['a']['Serialize'](this); } , _0x34f7f9['Parse'] = function(_0x3c87c6, _0x42513a, _0x6c7aad) { return _0x4c9a7f['a']['Parse'](function() { return new _0x34f7f9(_0x3c87c6['name'],_0x42513a); }, _0x3c87c6, _0x42513a, _0x6c7aad); } , Object['defineProperty'](_0x34f7f9, 'DiffuseTextureEnabled', { 'get': function() { return _0x495ca7['a']['DiffuseTextureEnabled']; }, 'set': function(_0x3d1ad7) { _0x495ca7['a']['DiffuseTextureEnabled'] = _0x3d1ad7; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9, 'AmbientTextureEnabled', { 'get': function() { return _0x495ca7['a']['AmbientTextureEnabled']; }, 'set': function(_0x201b14) { _0x495ca7['a']['AmbientTextureEnabled'] = _0x201b14; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9, 'OpacityTextureEnabled', { 'get': function() { return _0x495ca7['a']['OpacityTextureEnabled']; }, 'set': function(_0x117826) { _0x495ca7['a']['OpacityTextureEnabled'] = _0x117826; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9, 'ReflectionTextureEnabled', { 'get': function() { return _0x495ca7['a']['ReflectionTextureEnabled']; }, 'set': function(_0x1187c1) { _0x495ca7['a']['ReflectionTextureEnabled'] = _0x1187c1; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9, 'EmissiveTextureEnabled', { 'get': function() { return _0x495ca7['a']['EmissiveTextureEnabled']; }, 'set': function(_0x13f466) { _0x495ca7['a']['EmissiveTextureEnabled'] = _0x13f466; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9, 'SpecularTextureEnabled', { 'get': function() { return _0x495ca7['a']['SpecularTextureEnabled']; }, 'set': function(_0x5c4071) { _0x495ca7['a']['SpecularTextureEnabled'] = _0x5c4071; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9, 'BumpTextureEnabled', { 'get': function() { return _0x495ca7['a']['BumpTextureEnabled']; }, 'set': function(_0x5375f8) { _0x495ca7['a']['BumpTextureEnabled'] = _0x5375f8; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9, 'LightmapTextureEnabled', { 'get': function() { return _0x495ca7['a']['LightmapTextureEnabled']; }, 'set': function(_0x170203) { _0x495ca7['a']['LightmapTextureEnabled'] = _0x170203; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9, 'RefractionTextureEnabled', { 'get': function() { return _0x495ca7['a']['RefractionTextureEnabled']; }, 'set': function(_0x5a15cb) { _0x495ca7['a']['RefractionTextureEnabled'] = _0x5a15cb; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9, 'ColorGradingTextureEnabled', { 'get': function() { return _0x495ca7['a']['ColorGradingTextureEnabled']; }, 'set': function(_0x1a8581) { _0x495ca7['a']['ColorGradingTextureEnabled'] = _0x1a8581; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34f7f9, 'FresnelEnabled', { 'get': function() { return _0x495ca7['a']['FresnelEnabled']; }, 'set': function(_0x57609d) { _0x495ca7['a']['FresnelEnabled'] = _0x57609d; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x6826e5['c']([Object(_0x4c9a7f['m'])('diffuseTexture')], _0x34f7f9['prototype'], '_diffuseTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesAndMiscDirty')], _0x34f7f9['prototype'], 'diffuseTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['m'])('ambientTexture')], _0x34f7f9['prototype'], '_ambientTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'ambientTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['m'])('opacityTexture')], _0x34f7f9['prototype'], '_opacityTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesAndMiscDirty')], _0x34f7f9['prototype'], 'opacityTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['m'])('reflectionTexture')], _0x34f7f9['prototype'], '_reflectionTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'reflectionTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['m'])('emissiveTexture')], _0x34f7f9['prototype'], '_emissiveTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'emissiveTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['m'])('specularTexture')], _0x34f7f9['prototype'], '_specularTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'specularTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['m'])('bumpTexture')], _0x34f7f9['prototype'], '_bumpTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'bumpTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['m'])('lightmapTexture')], _0x34f7f9['prototype'], '_lightmapTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'lightmapTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['m'])('refractionTexture')], _0x34f7f9['prototype'], '_refractionTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'refractionTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['e'])('ambient')], _0x34f7f9['prototype'], 'ambientColor', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['e'])('diffuse')], _0x34f7f9['prototype'], 'diffuseColor', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['e'])('specular')], _0x34f7f9['prototype'], 'specularColor', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['e'])('emissive')], _0x34f7f9['prototype'], 'emissiveColor', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])()], _0x34f7f9['prototype'], 'specularPower', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('useAlphaFromDiffuseTexture')], _0x34f7f9['prototype'], '_useAlphaFromDiffuseTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'useAlphaFromDiffuseTexture', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('useEmissiveAsIllumination')], _0x34f7f9['prototype'], '_useEmissiveAsIllumination', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'useEmissiveAsIllumination', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('linkEmissiveWithDiffuse')], _0x34f7f9['prototype'], '_linkEmissiveWithDiffuse', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'linkEmissiveWithDiffuse', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('useSpecularOverAlpha')], _0x34f7f9['prototype'], '_useSpecularOverAlpha', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'useSpecularOverAlpha', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('useReflectionOverAlpha')], _0x34f7f9['prototype'], '_useReflectionOverAlpha', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'useReflectionOverAlpha', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('disableLighting')], _0x34f7f9['prototype'], '_disableLighting', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsLightsDirty')], _0x34f7f9['prototype'], 'disableLighting', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('useObjectSpaceNormalMap')], _0x34f7f9['prototype'], '_useObjectSpaceNormalMap', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'useObjectSpaceNormalMap', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('useParallax')], _0x34f7f9['prototype'], '_useParallax', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'useParallax', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('useParallaxOcclusion')], _0x34f7f9['prototype'], '_useParallaxOcclusion', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'useParallaxOcclusion', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])()], _0x34f7f9['prototype'], 'parallaxScaleBias', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('roughness')], _0x34f7f9['prototype'], '_roughness', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'roughness', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])()], _0x34f7f9['prototype'], 'indexOfRefraction', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])()], _0x34f7f9['prototype'], 'invertRefractionY', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])()], _0x34f7f9['prototype'], 'alphaCutOff', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('useLightmapAsShadowmap')], _0x34f7f9['prototype'], '_useLightmapAsShadowmap', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'useLightmapAsShadowmap', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['h'])('diffuseFresnelParameters')], _0x34f7f9['prototype'], '_diffuseFresnelParameters', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsFresnelDirty')], _0x34f7f9['prototype'], 'diffuseFresnelParameters', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['h'])('opacityFresnelParameters')], _0x34f7f9['prototype'], '_opacityFresnelParameters', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsFresnelAndMiscDirty')], _0x34f7f9['prototype'], 'opacityFresnelParameters', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['h'])('reflectionFresnelParameters')], _0x34f7f9['prototype'], '_reflectionFresnelParameters', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsFresnelDirty')], _0x34f7f9['prototype'], 'reflectionFresnelParameters', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['h'])('refractionFresnelParameters')], _0x34f7f9['prototype'], '_refractionFresnelParameters', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsFresnelDirty')], _0x34f7f9['prototype'], 'refractionFresnelParameters', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['h'])('emissiveFresnelParameters')], _0x34f7f9['prototype'], '_emissiveFresnelParameters', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsFresnelDirty')], _0x34f7f9['prototype'], 'emissiveFresnelParameters', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('useReflectionFresnelFromSpecular')], _0x34f7f9['prototype'], '_useReflectionFresnelFromSpecular', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsFresnelDirty')], _0x34f7f9['prototype'], 'useReflectionFresnelFromSpecular', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('useGlossinessFromSpecularMapAlpha')], _0x34f7f9['prototype'], '_useGlossinessFromSpecularMapAlpha', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'useGlossinessFromSpecularMapAlpha', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('maxSimultaneousLights')], _0x34f7f9['prototype'], '_maxSimultaneousLights', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsLightsDirty')], _0x34f7f9['prototype'], 'maxSimultaneousLights', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('invertNormalMapX')], _0x34f7f9['prototype'], '_invertNormalMapX', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'invertNormalMapX', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('invertNormalMapY')], _0x34f7f9['prototype'], '_invertNormalMapY', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'invertNormalMapY', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])('twoSidedLighting')], _0x34f7f9['prototype'], '_twoSidedLighting', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['b'])('_markAllSubMeshesAsTexturesDirty')], _0x34f7f9['prototype'], 'twoSidedLighting', void 0x0), _0x6826e5['c']([Object(_0x4c9a7f['c'])()], _0x34f7f9['prototype'], 'useLogarithmicDepth', null), _0x34f7f9; }(_0x2f5c6a['a']); _0x3f7941['a']['RegisteredTypes']['BABYLON.StandardMaterial'] = _0x945562, _0x491ec0['a']['DefaultMaterialFactory'] = function(_0x1a740b) { return new _0x945562('default\x20material',_0x1a740b); } ; } , function(_0x258efe, _0x552fe9, _0x52b06a) { 'use strict'; _0x52b06a['d'](_0x552fe9, 'a', function() { return _0x41e68b; }); var _0x41e68b = function() { function _0x3ea8c1() {} return _0x3ea8c1['BuildArray'] = function(_0x457b04, _0x53a2d8) { for (var _0x47016b = [], _0x883d99 = 0x0; _0x883d99 < _0x457b04; ++_0x883d99) _0x47016b['push'](_0x53a2d8()); return _0x47016b; } , _0x3ea8c1; }(); } , function(_0x373956, _0x50b24a, _0x9e39c) { 'use strict'; _0x9e39c['d'](_0x50b24a, 'a', function() { return _0x4f7159; }); var _0x4f7159 = function() { function _0x1788fa() {} return _0x1788fa['IsWindowObjectExist'] = function() { return 'undefined' != typeof window; } , _0x1788fa['GetDOMTextContent'] = function(_0x5237dc) { for (var _0x4c79d5 = '', _0x25746d = _0x5237dc['firstChild']; _0x25746d; ) 0x3 === _0x25746d['nodeType'] && (_0x4c79d5 += _0x25746d['textContent']), _0x25746d = _0x25746d['nextSibling']; return _0x4c79d5; } , _0x1788fa; }(); } , function(_0x21048c, _0x2a3a64, _0x88b193) { 'use strict'; _0x88b193['d'](_0x2a3a64, 'a', function() { return _0x5495f6; }); var _0x5495f6 = function() { function _0x2bd6fc(_0x51950b, _0x6195f4, _0x6165fc, _0x52b04a, _0x23a2ec, _0x473482) { this['source'] = _0x51950b, this['pointerX'] = _0x6195f4, this['pointerY'] = _0x6165fc, this['meshUnderPointer'] = _0x52b04a, this['sourceEvent'] = _0x23a2ec, this['additionalData'] = _0x473482; } return _0x2bd6fc['CreateNew'] = function(_0x52a2c2, _0x24342b, _0x42f4ba) { var _0x27e3b0 = _0x52a2c2['getScene'](); return new _0x2bd6fc(_0x52a2c2,_0x27e3b0['pointerX'],_0x27e3b0['pointerY'],_0x27e3b0['meshUnderPointer'] || _0x52a2c2,_0x24342b,_0x42f4ba); } , _0x2bd6fc['CreateNewFromSprite'] = function(_0x43c828, _0x314a4f, _0x3a6ef4, _0xd910be) { return new _0x2bd6fc(_0x43c828,_0x314a4f['pointerX'],_0x314a4f['pointerY'],_0x314a4f['meshUnderPointer'],_0x3a6ef4,_0xd910be); } , _0x2bd6fc['CreateNewFromScene'] = function(_0xa09b5c, _0x2c01a1) { return new _0x2bd6fc(null,_0xa09b5c['pointerX'],_0xa09b5c['pointerY'],_0xa09b5c['meshUnderPointer'],_0x2c01a1); } , _0x2bd6fc['CreateNewFromPrimitive'] = function(_0xac0992, _0x10bcae, _0x305ae8, _0x313242) { return new _0x2bd6fc(_0xac0992,_0x10bcae['x'],_0x10bcae['y'],null,_0x305ae8,_0x313242); } , _0x2bd6fc; }(); } , function(_0xcfe6e8, _0xb926bd, _0x4981c8) { 'use strict'; _0x4981c8['d'](_0xb926bd, 'e', function() { return _0xe25540; }), _0x4981c8['d'](_0xb926bd, 'a', function() { return _0x3d561a; }), _0x4981c8['d'](_0xb926bd, 'd', function() { return _0x416495; }), _0x4981c8['d'](_0xb926bd, 'c', function() { return _0x5015fa; }), _0x4981c8['d'](_0xb926bd, 'b', function() { return _0x1ff77c; }); var _0x1f8bd3 = _0x4981c8(0x1) , _0xe25540 = function() { function _0x4e2c75(_0xb90553, _0x3014ba) { this['type'] = _0xb90553, this['jointData'] = _0x3014ba, _0x3014ba['nativeParams'] = _0x3014ba['nativeParams'] || {}; } return Object['defineProperty'](_0x4e2c75['prototype'], 'physicsJoint', { 'get': function() { return this['_physicsJoint']; }, 'set': function(_0x1c102f) { this['_physicsJoint'], this['_physicsJoint'] = _0x1c102f; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4e2c75['prototype'], 'physicsPlugin', { 'set': function(_0x2ad8a2) { this['_physicsPlugin'] = _0x2ad8a2; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4e2c75['prototype']['executeNativeFunction'] = function(_0x5d89c9) { _0x5d89c9(this['_physicsPlugin']['world'], this['_physicsJoint']); } , _0x4e2c75['DistanceJoint'] = 0x0, _0x4e2c75['HingeJoint'] = 0x1, _0x4e2c75['BallAndSocketJoint'] = 0x2, _0x4e2c75['WheelJoint'] = 0x3, _0x4e2c75['SliderJoint'] = 0x4, _0x4e2c75['PrismaticJoint'] = 0x5, _0x4e2c75['UniversalJoint'] = 0x6, _0x4e2c75['Hinge2Joint'] = _0x4e2c75['WheelJoint'], _0x4e2c75['PointToPointJoint'] = 0x8, _0x4e2c75['SpringJoint'] = 0x9, _0x4e2c75['LockJoint'] = 0xa, _0x4e2c75; }() , _0x3d561a = function(_0x25f451) { function _0x5253b0(_0x23e960) { return _0x25f451['call'](this, _0xe25540['DistanceJoint'], _0x23e960) || this; } return _0x1f8bd3['d'](_0x5253b0, _0x25f451), _0x5253b0['prototype']['updateDistance'] = function(_0x34e853, _0x1c1951) { this['_physicsPlugin']['updateDistanceJoint'](this, _0x34e853, _0x1c1951); } , _0x5253b0; }(_0xe25540) , _0x416495 = function(_0x2ada53) { function _0x514f1d(_0x3c3fad, _0x1af22f) { return _0x2ada53['call'](this, _0x3c3fad, _0x1af22f) || this; } return _0x1f8bd3['d'](_0x514f1d, _0x2ada53), _0x514f1d['prototype']['setMotor'] = function(_0x20a70c, _0x736dcb) { this['_physicsPlugin']['setMotor'](this, _0x20a70c || 0x0, _0x736dcb); } , _0x514f1d['prototype']['setLimit'] = function(_0xdc57f7, _0x2fcc9a) { this['_physicsPlugin']['setLimit'](this, _0xdc57f7, _0x2fcc9a); } , _0x514f1d; }(_0xe25540) , _0x5015fa = function(_0x4e0c5c) { function _0x283ae4(_0x27b9ed) { return _0x4e0c5c['call'](this, _0xe25540['HingeJoint'], _0x27b9ed) || this; } return _0x1f8bd3['d'](_0x283ae4, _0x4e0c5c), _0x283ae4['prototype']['setMotor'] = function(_0x100ca8, _0x5a6296) { this['_physicsPlugin']['setMotor'](this, _0x100ca8 || 0x0, _0x5a6296); } , _0x283ae4['prototype']['setLimit'] = function(_0x14beaa, _0xab6260) { this['_physicsPlugin']['setLimit'](this, _0x14beaa, _0xab6260); } , _0x283ae4; }(_0x416495) , _0x1ff77c = function(_0xf6798c) { function _0x256d30(_0x22c5bf) { return _0xf6798c['call'](this, _0xe25540['Hinge2Joint'], _0x22c5bf) || this; } return _0x1f8bd3['d'](_0x256d30, _0xf6798c), _0x256d30['prototype']['setMotor'] = function(_0x41a28a, _0x1cd864, _0x5cf95f) { void 0x0 === _0x5cf95f && (_0x5cf95f = 0x0), this['_physicsPlugin']['setMotor'](this, _0x41a28a || 0x0, _0x1cd864, _0x5cf95f); } , _0x256d30['prototype']['setLimit'] = function(_0x17a321, _0x4ab4c9, _0x287897) { void 0x0 === _0x287897 && (_0x287897 = 0x0), this['_physicsPlugin']['setLimit'](this, _0x17a321, _0x4ab4c9, _0x287897); } , _0x256d30; }(_0x416495); } , function(_0x3bbdc8, _0x55ea50, _0x56ee15) { 'use strict'; _0x56ee15['d'](_0x55ea50, 'a', function() { return _0x13a3b9; }); var _0x380d69 = _0x56ee15(0x1) , _0x4ba162 = _0x56ee15(0x2) , _0x40d33c = _0x56ee15(0x0) , _0x2ff92b = _0x56ee15(0x19) , _0x4c2df2 = _0x56ee15(0x3f) , _0x5609aa = _0x56ee15(0x16) , _0x13a3b9 = function(_0x3e5a3a) { function _0x31e329(_0x3edfe9, _0x3fe1b9) { var _0x3fed10 = _0x3e5a3a['call'](this, _0x3edfe9, _0x3fe1b9) || this; return _0x3fed10['diffuse'] = new _0x40d33c['e'](0x1,0x1,0x1), _0x3fed10['specular'] = new _0x40d33c['e'](0x1,0x1,0x1), _0x3fed10['falloffType'] = _0x31e329['FALLOFF_DEFAULT'], _0x3fed10['intensity'] = 0x1, _0x3fed10['_range'] = Number['MAX_VALUE'], _0x3fed10['_inverseSquaredRange'] = 0x0, _0x3fed10['_photometricScale'] = 0x1, _0x3fed10['_intensityMode'] = _0x31e329['INTENSITYMODE_AUTOMATIC'], _0x3fed10['_radius'] = 0.00001, _0x3fed10['renderPriority'] = 0x0, _0x3fed10['_shadowEnabled'] = !0x0, _0x3fed10['_excludeWithLayerMask'] = 0x0, _0x3fed10['_includeOnlyWithLayerMask'] = 0x0, _0x3fed10['_lightmapMode'] = 0x0, _0x3fed10['_excludedMeshesIds'] = new Array(), _0x3fed10['_includedOnlyMeshesIds'] = new Array(), _0x3fed10['_isLight'] = !0x0, _0x3fed10['getScene']()['addLight'](_0x3fed10), _0x3fed10['_uniformBuffer'] = new _0x4c2df2['a'](_0x3fed10['getScene']()['getEngine']()), _0x3fed10['_buildUniformLayout'](), _0x3fed10['includedOnlyMeshes'] = new Array(), _0x3fed10['excludedMeshes'] = new Array(), _0x3fed10['_resyncMeshes'](), _0x3fed10; } return _0x380d69['d'](_0x31e329, _0x3e5a3a), Object['defineProperty'](_0x31e329['prototype'], 'range', { 'get': function() { return this['_range']; }, 'set': function(_0x5db499) { this['_range'] = _0x5db499, this['_inverseSquaredRange'] = 0x1 / (this['range'] * this['range']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31e329['prototype'], 'intensityMode', { 'get': function() { return this['_intensityMode']; }, 'set': function(_0x272741) { this['_intensityMode'] = _0x272741, this['_computePhotometricScale'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31e329['prototype'], 'radius', { 'get': function() { return this['_radius']; }, 'set': function(_0x553935) { this['_radius'] = _0x553935, this['_computePhotometricScale'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31e329['prototype'], 'shadowEnabled', { 'get': function() { return this['_shadowEnabled']; }, 'set': function(_0x4409c8) { this['_shadowEnabled'] !== _0x4409c8 && (this['_shadowEnabled'] = _0x4409c8, this['_markMeshesAsLightDirty']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31e329['prototype'], 'includedOnlyMeshes', { 'get': function() { return this['_includedOnlyMeshes']; }, 'set': function(_0x3c79b7) { this['_includedOnlyMeshes'] = _0x3c79b7, this['_hookArrayForIncludedOnly'](_0x3c79b7); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31e329['prototype'], 'excludedMeshes', { 'get': function() { return this['_excludedMeshes']; }, 'set': function(_0x49cd01) { this['_excludedMeshes'] = _0x49cd01, this['_hookArrayForExcluded'](_0x49cd01); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31e329['prototype'], 'excludeWithLayerMask', { 'get': function() { return this['_excludeWithLayerMask']; }, 'set': function(_0x42bbc9) { this['_excludeWithLayerMask'] = _0x42bbc9, this['_resyncMeshes'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31e329['prototype'], 'includeOnlyWithLayerMask', { 'get': function() { return this['_includeOnlyWithLayerMask']; }, 'set': function(_0x6b05b8) { this['_includeOnlyWithLayerMask'] = _0x6b05b8, this['_resyncMeshes'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31e329['prototype'], 'lightmapMode', { 'get': function() { return this['_lightmapMode']; }, 'set': function(_0x3cdb56) { this['_lightmapMode'] !== _0x3cdb56 && (this['_lightmapMode'] = _0x3cdb56, this['_markMeshesAsLightDirty']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x31e329['prototype']['getClassName'] = function() { return 'Light'; } , _0x31e329['prototype']['toString'] = function(_0x72605a) { var _0xeff42c = 'Name:\x20' + this['name']; if (_0xeff42c += ',\x20type:\x20' + ['Point', 'Directional', 'Spot', 'Hemispheric'][this['getTypeID']()], this['animations']) for (var _0x1c50ac = 0x0; _0x1c50ac < this['animations']['length']; _0x1c50ac++) _0xeff42c += ',\x20animation[0]:\x20' + this['animations'][_0x1c50ac]['toString'](_0x72605a); return _0xeff42c; } , _0x31e329['prototype']['_syncParentEnabledState'] = function() { _0x3e5a3a['prototype']['_syncParentEnabledState']['call'](this), this['_resyncMeshes'](); } , _0x31e329['prototype']['setEnabled'] = function(_0x2cb8f8) { _0x3e5a3a['prototype']['setEnabled']['call'](this, _0x2cb8f8), this['_resyncMeshes'](); } , _0x31e329['prototype']['getShadowGenerator'] = function() { return this['_shadowGenerator']; } , _0x31e329['prototype']['getAbsolutePosition'] = function() { return _0x40d33c['x']['Zero'](); } , _0x31e329['prototype']['canAffectMesh'] = function(_0x383e9a) { return !_0x383e9a || !(this['includedOnlyMeshes'] && this['includedOnlyMeshes']['length'] > 0x0 && -0x1 === this['includedOnlyMeshes']['indexOf'](_0x383e9a)) && (!(this['excludedMeshes'] && this['excludedMeshes']['length'] > 0x0 && -0x1 !== this['excludedMeshes']['indexOf'](_0x383e9a)) && ((0x0 === this['includeOnlyWithLayerMask'] || 0x0 != (this['includeOnlyWithLayerMask'] & _0x383e9a['layerMask'])) && !(0x0 !== this['excludeWithLayerMask'] && this['excludeWithLayerMask'] & _0x383e9a['layerMask']))); } , _0x31e329['CompareLightsPriority'] = function(_0x702960, _0xe57131) { return _0x702960['shadowEnabled'] !== _0xe57131['shadowEnabled'] ? (_0xe57131['shadowEnabled'] ? 0x1 : 0x0) - (_0x702960['shadowEnabled'] ? 0x1 : 0x0) : _0xe57131['renderPriority'] - _0x702960['renderPriority']; } , _0x31e329['prototype']['dispose'] = function(_0x5585f1, _0x55e1cf) { void 0x0 === _0x55e1cf && (_0x55e1cf = !0x1), this['_shadowGenerator'] && (this['_shadowGenerator']['dispose'](), this['_shadowGenerator'] = null), this['getScene']()['stopAnimation'](this); for (var _0x57510a = 0x0, _0x246f63 = this['getScene']()['meshes']; _0x57510a < _0x246f63['length']; _0x57510a++) { _0x246f63[_0x57510a]['_removeLightSource'](this); } this['_uniformBuffer']['dispose'](), this['getScene']()['removeLight'](this), _0x3e5a3a['prototype']['dispose']['call'](this, _0x5585f1, _0x55e1cf); } , _0x31e329['prototype']['getTypeID'] = function() { return 0x0; } , _0x31e329['prototype']['getScaledIntensity'] = function() { return this['_photometricScale'] * this['intensity']; } , _0x31e329['prototype']['clone'] = function(_0x20abfe) { var _0xeff296 = _0x31e329['GetConstructorFromName'](this['getTypeID'](), _0x20abfe, this['getScene']()); return _0xeff296 ? _0x4ba162['a']['Clone'](_0xeff296, this) : null; } , _0x31e329['prototype']['serialize'] = function() { var _0x249ba4 = _0x4ba162['a']['Serialize'](this); return _0x249ba4['type'] = this['getTypeID'](), this['parent'] && (_0x249ba4['parentId'] = this['parent']['id']), this['excludedMeshes']['length'] > 0x0 && (_0x249ba4['excludedMeshesIds'] = [], this['excludedMeshes']['forEach'](function(_0x3dc30f) { _0x249ba4['excludedMeshesIds']['push'](_0x3dc30f['id']); })), this['includedOnlyMeshes']['length'] > 0x0 && (_0x249ba4['includedOnlyMeshesIds'] = [], this['includedOnlyMeshes']['forEach'](function(_0x22e4ad) { _0x249ba4['includedOnlyMeshesIds']['push'](_0x22e4ad['id']); })), _0x4ba162['a']['AppendSerializedAnimations'](this, _0x249ba4), _0x249ba4['ranges'] = this['serializeAnimationRanges'](), _0x249ba4; } , _0x31e329['GetConstructorFromName'] = function(_0x1d5abf, _0x5d57c9, _0x257c9f) { var _0x587642 = _0x2ff92b['a']['Construct']('Light_Type_' + _0x1d5abf, _0x5d57c9, _0x257c9f); return _0x587642 || null; } , _0x31e329['Parse'] = function(_0x155cd9, _0x36cd09) { var _0x4a2674 = _0x31e329['GetConstructorFromName'](_0x155cd9['type'], _0x155cd9['name'], _0x36cd09); if (!_0x4a2674) return null; var _0x3b6c61 = _0x4ba162['a']['Parse'](_0x4a2674, _0x155cd9, _0x36cd09); if (_0x155cd9['excludedMeshesIds'] && (_0x3b6c61['_excludedMeshesIds'] = _0x155cd9['excludedMeshesIds']), _0x155cd9['includedOnlyMeshesIds'] && (_0x3b6c61['_includedOnlyMeshesIds'] = _0x155cd9['includedOnlyMeshesIds']), _0x155cd9['parentId'] && (_0x3b6c61['_waitingParentId'] = _0x155cd9['parentId']), void 0x0 !== _0x155cd9['falloffType'] && (_0x3b6c61['falloffType'] = _0x155cd9['falloffType']), void 0x0 !== _0x155cd9['lightmapMode'] && (_0x3b6c61['lightmapMode'] = _0x155cd9['lightmapMode']), _0x155cd9['animations']) { for (var _0x5a906e = 0x0; _0x5a906e < _0x155cd9['animations']['length']; _0x5a906e++) { var _0x1287d6 = _0x155cd9['animations'][_0x5a906e] , _0x34a1b0 = _0x5609aa['a']['GetClass']('BABYLON.Animation'); _0x34a1b0 && _0x3b6c61['animations']['push'](_0x34a1b0['Parse'](_0x1287d6)); } _0x2ff92b['a']['ParseAnimationRanges'](_0x3b6c61, _0x155cd9, _0x36cd09); } return _0x155cd9['autoAnimate'] && _0x36cd09['beginAnimation'](_0x3b6c61, _0x155cd9['autoAnimateFrom'], _0x155cd9['autoAnimateTo'], _0x155cd9['autoAnimateLoop'], _0x155cd9['autoAnimateSpeed'] || 0x1), _0x3b6c61; } , _0x31e329['prototype']['_hookArrayForExcluded'] = function(_0x308b96) { var _0x289a45 = this , _0x354b34 = _0x308b96['push']; _0x308b96['push'] = function() { for (var _0x1d0e15 = [], _0x538b3d = 0x0; _0x538b3d < arguments['length']; _0x538b3d++) _0x1d0e15[_0x538b3d] = arguments[_0x538b3d]; for (var _0x5de310 = _0x354b34['apply'](_0x308b96, _0x1d0e15), _0xf225b5 = 0x0, _0x30b92a = _0x1d0e15; _0xf225b5 < _0x30b92a['length']; _0xf225b5++) { _0x30b92a[_0xf225b5]['_resyncLighSource'](_0x289a45); } return _0x5de310; } ; var _0x3804d0 = _0x308b96['splice']; _0x308b96['splice'] = function(_0x1150d5, _0x39681e) { for (var _0xc09c10 = _0x3804d0['apply'](_0x308b96, [_0x1150d5, _0x39681e]), _0x5578c0 = 0x0, _0x3960a3 = _0xc09c10; _0x5578c0 < _0x3960a3['length']; _0x5578c0++) { _0x3960a3[_0x5578c0]['_resyncLighSource'](_0x289a45); } return _0xc09c10; } ; for (var _0x4121ef = 0x0, _0x3a1122 = _0x308b96; _0x4121ef < _0x3a1122['length']; _0x4121ef++) { _0x3a1122[_0x4121ef]['_resyncLighSource'](this); } } , _0x31e329['prototype']['_hookArrayForIncludedOnly'] = function(_0x575fa1) { var _0x5bc4da = this , _0x31722c = _0x575fa1['push']; _0x575fa1['push'] = function() { for (var _0x5e1abb = [], _0xb9913a = 0x0; _0xb9913a < arguments['length']; _0xb9913a++) _0x5e1abb[_0xb9913a] = arguments[_0xb9913a]; var _0x39fdfe = _0x31722c['apply'](_0x575fa1, _0x5e1abb); return _0x5bc4da['_resyncMeshes'](), _0x39fdfe; } ; var _0x211a1a = _0x575fa1['splice']; _0x575fa1['splice'] = function(_0x5941a5, _0x3570a7) { var _0x46a064 = _0x211a1a['apply'](_0x575fa1, [_0x5941a5, _0x3570a7]); return _0x5bc4da['_resyncMeshes'](), _0x46a064; } , this['_resyncMeshes'](); } , _0x31e329['prototype']['_resyncMeshes'] = function() { for (var _0x529268 = 0x0, _0x2ecf23 = this['getScene']()['meshes']; _0x529268 < _0x2ecf23['length']; _0x529268++) { _0x2ecf23[_0x529268]['_resyncLighSource'](this); } } , _0x31e329['prototype']['_markMeshesAsLightDirty'] = function() { for (var _0x413cea = 0x0, _0x4d80f2 = this['getScene']()['meshes']; _0x413cea < _0x4d80f2['length']; _0x413cea++) { var _0x5d0bd3 = _0x4d80f2[_0x413cea]; -0x1 !== _0x5d0bd3['lightSources']['indexOf'](this) && _0x5d0bd3['_markSubMeshesAsLightDirty'](); } } , _0x31e329['prototype']['_computePhotometricScale'] = function() { this['_photometricScale'] = this['_getPhotometricScale'](), this['getScene']()['resetCachedMaterial'](); } , _0x31e329['prototype']['_getPhotometricScale'] = function() { var _0x7265d = 0x0 , _0x428d24 = this['getTypeID']() , _0x18fe01 = this['intensityMode']; switch (_0x18fe01 === _0x31e329['INTENSITYMODE_AUTOMATIC'] && (_0x18fe01 = _0x428d24 === _0x31e329['LIGHTTYPEID_DIRECTIONALLIGHT'] ? _0x31e329['INTENSITYMODE_ILLUMINANCE'] : _0x31e329['INTENSITYMODE_LUMINOUSINTENSITY']), _0x428d24) { case _0x31e329['LIGHTTYPEID_POINTLIGHT']: case _0x31e329['LIGHTTYPEID_SPOTLIGHT']: switch (_0x18fe01) { case _0x31e329['INTENSITYMODE_LUMINOUSPOWER']: _0x7265d = 0x1 / (0x4 * Math['PI']); break; case _0x31e329['INTENSITYMODE_LUMINOUSINTENSITY']: _0x7265d = 0x1; break; case _0x31e329['INTENSITYMODE_LUMINANCE']: _0x7265d = this['radius'] * this['radius']; } break; case _0x31e329['LIGHTTYPEID_DIRECTIONALLIGHT']: switch (_0x18fe01) { case _0x31e329['INTENSITYMODE_ILLUMINANCE']: _0x7265d = 0x1; break; case _0x31e329['INTENSITYMODE_LUMINANCE']: var _0x95801a = this['radius']; _0x95801a = Math['max'](_0x95801a, 0.001), _0x7265d = 0x2 * Math['PI'] * (0x1 - Math['cos'](_0x95801a)); } break; case _0x31e329['LIGHTTYPEID_HEMISPHERICLIGHT']: _0x7265d = 0x1; } return _0x7265d; } , _0x31e329['prototype']['_reorderLightsInScene'] = function() { var _0x5b8182 = this['getScene'](); 0x0 != this['_renderPriority'] && (_0x5b8182['requireLightSorting'] = !0x0), this['getScene']()['sortLightsByPriority'](); } , _0x31e329['FALLOFF_DEFAULT'] = 0x0, _0x31e329['FALLOFF_PHYSICAL'] = 0x1, _0x31e329['FALLOFF_GLTF'] = 0x2, _0x31e329['FALLOFF_STANDARD'] = 0x3, _0x31e329['LIGHTMAP_DEFAULT'] = 0x0, _0x31e329['LIGHTMAP_SPECULAR'] = 0x1, _0x31e329['LIGHTMAP_SHADOWSONLY'] = 0x2, _0x31e329['INTENSITYMODE_AUTOMATIC'] = 0x0, _0x31e329['INTENSITYMODE_LUMINOUSPOWER'] = 0x1, _0x31e329['INTENSITYMODE_LUMINOUSINTENSITY'] = 0x2, _0x31e329['INTENSITYMODE_ILLUMINANCE'] = 0x3, _0x31e329['INTENSITYMODE_LUMINANCE'] = 0x4, _0x31e329['LIGHTTYPEID_POINTLIGHT'] = 0x0, _0x31e329['LIGHTTYPEID_DIRECTIONALLIGHT'] = 0x1, _0x31e329['LIGHTTYPEID_SPOTLIGHT'] = 0x2, _0x31e329['LIGHTTYPEID_HEMISPHERICLIGHT'] = 0x3, _0x380d69['c']([Object(_0x4ba162['e'])()], _0x31e329['prototype'], 'diffuse', void 0x0), _0x380d69['c']([Object(_0x4ba162['e'])()], _0x31e329['prototype'], 'specular', void 0x0), _0x380d69['c']([Object(_0x4ba162['c'])()], _0x31e329['prototype'], 'falloffType', void 0x0), _0x380d69['c']([Object(_0x4ba162['c'])()], _0x31e329['prototype'], 'intensity', void 0x0), _0x380d69['c']([Object(_0x4ba162['c'])()], _0x31e329['prototype'], 'range', null), _0x380d69['c']([Object(_0x4ba162['c'])()], _0x31e329['prototype'], 'intensityMode', null), _0x380d69['c']([Object(_0x4ba162['c'])()], _0x31e329['prototype'], 'radius', null), _0x380d69['c']([Object(_0x4ba162['c'])()], _0x31e329['prototype'], '_renderPriority', void 0x0), _0x380d69['c']([Object(_0x4ba162['b'])('_reorderLightsInScene')], _0x31e329['prototype'], 'renderPriority', void 0x0), _0x380d69['c']([Object(_0x4ba162['c'])('shadowEnabled')], _0x31e329['prototype'], '_shadowEnabled', void 0x0), _0x380d69['c']([Object(_0x4ba162['c'])('excludeWithLayerMask')], _0x31e329['prototype'], '_excludeWithLayerMask', void 0x0), _0x380d69['c']([Object(_0x4ba162['c'])('includeOnlyWithLayerMask')], _0x31e329['prototype'], '_includeOnlyWithLayerMask', void 0x0), _0x380d69['c']([Object(_0x4ba162['c'])('lightmapMode')], _0x31e329['prototype'], '_lightmapMode', void 0x0), _0x31e329; }(_0x2ff92b['a']); } , function(_0x299330, _0x200183, _0x1b902d) { 'use strict'; _0x1b902d['d'](_0x200183, 'a', function() { return _0x59ff9c; }); var _0x32a5cb = _0x1b902d(0x22) , _0x3456cd = _0x1b902d(0x0) , _0x1f918a = _0x1b902d(0x32) , _0xc3a94b = _0x1b902d(0x51) , _0x58cff1 = _0x1b902d(0x10) , _0x380a92 = _0x1b902d(0x15) , _0x59ff9c = function() { function _0x374ee6(_0x159751, _0x4e55d2, _0x349182) { void 0x0 === _0x349182 && (_0x349182 = Number['MAX_VALUE']), this['origin'] = _0x159751, this['direction'] = _0x4e55d2, this['length'] = _0x349182; } return _0x374ee6['prototype']['intersectsBoxMinMax'] = function(_0x49eb3b, _0x48c23d, _0x4d503f) { void 0x0 === _0x4d503f && (_0x4d503f = 0x0); var _0x842e08, _0x224a5d, _0x433ab9, _0x89d8f7, _0x26e3ba = _0x374ee6['TmpVector3'][0x0]['copyFromFloats'](_0x49eb3b['x'] - _0x4d503f, _0x49eb3b['y'] - _0x4d503f, _0x49eb3b['z'] - _0x4d503f), _0x2b9318 = _0x374ee6['TmpVector3'][0x1]['copyFromFloats'](_0x48c23d['x'] + _0x4d503f, _0x48c23d['y'] + _0x4d503f, _0x48c23d['z'] + _0x4d503f), _0x1e0fda = 0x0, _0xbd2d86 = Number['MAX_VALUE']; if (Math['abs'](this['direction']['x']) < 1e-7) { if (this['origin']['x'] < _0x26e3ba['x'] || this['origin']['x'] > _0x2b9318['x']) return !0x1; } else if (_0x842e08 = 0x1 / this['direction']['x'], _0x224a5d = (_0x26e3ba['x'] - this['origin']['x']) * _0x842e08, (_0x433ab9 = (_0x2b9318['x'] - this['origin']['x']) * _0x842e08) === -0x1 / 0x0 && (_0x433ab9 = 0x1 / 0x0), _0x224a5d > _0x433ab9 && (_0x89d8f7 = _0x224a5d, _0x224a5d = _0x433ab9, _0x433ab9 = _0x89d8f7), (_0x1e0fda = Math['max'](_0x224a5d, _0x1e0fda)) > (_0xbd2d86 = Math['min'](_0x433ab9, _0xbd2d86))) return !0x1; if (Math['abs'](this['direction']['y']) < 1e-7) { if (this['origin']['y'] < _0x26e3ba['y'] || this['origin']['y'] > _0x2b9318['y']) return !0x1; } else if (_0x842e08 = 0x1 / this['direction']['y'], _0x224a5d = (_0x26e3ba['y'] - this['origin']['y']) * _0x842e08, (_0x433ab9 = (_0x2b9318['y'] - this['origin']['y']) * _0x842e08) === -0x1 / 0x0 && (_0x433ab9 = 0x1 / 0x0), _0x224a5d > _0x433ab9 && (_0x89d8f7 = _0x224a5d, _0x224a5d = _0x433ab9, _0x433ab9 = _0x89d8f7), (_0x1e0fda = Math['max'](_0x224a5d, _0x1e0fda)) > (_0xbd2d86 = Math['min'](_0x433ab9, _0xbd2d86))) return !0x1; if (Math['abs'](this['direction']['z']) < 1e-7) { if (this['origin']['z'] < _0x26e3ba['z'] || this['origin']['z'] > _0x2b9318['z']) return !0x1; } else if (_0x842e08 = 0x1 / this['direction']['z'], _0x224a5d = (_0x26e3ba['z'] - this['origin']['z']) * _0x842e08, (_0x433ab9 = (_0x2b9318['z'] - this['origin']['z']) * _0x842e08) === -0x1 / 0x0 && (_0x433ab9 = 0x1 / 0x0), _0x224a5d > _0x433ab9 && (_0x89d8f7 = _0x224a5d, _0x224a5d = _0x433ab9, _0x433ab9 = _0x89d8f7), (_0x1e0fda = Math['max'](_0x224a5d, _0x1e0fda)) > (_0xbd2d86 = Math['min'](_0x433ab9, _0xbd2d86))) return !0x1; return !0x0; } , _0x374ee6['prototype']['intersectsBox'] = function(_0x93033f, _0xd65d0c) { return void 0x0 === _0xd65d0c && (_0xd65d0c = 0x0), this['intersectsBoxMinMax'](_0x93033f['minimum'], _0x93033f['maximum'], _0xd65d0c); } , _0x374ee6['prototype']['intersectsSphere'] = function(_0x18883a, _0xdb194) { void 0x0 === _0xdb194 && (_0xdb194 = 0x0); var _0x9ebb3c = _0x18883a['center']['x'] - this['origin']['x'] , _0x1b01e2 = _0x18883a['center']['y'] - this['origin']['y'] , _0x2cbe34 = _0x18883a['center']['z'] - this['origin']['z'] , _0x1b26c5 = _0x9ebb3c * _0x9ebb3c + _0x1b01e2 * _0x1b01e2 + _0x2cbe34 * _0x2cbe34 , _0xd00fd4 = _0x18883a['radius'] + _0xdb194 , _0x253f0f = _0xd00fd4 * _0xd00fd4; if (_0x1b26c5 <= _0x253f0f) return !0x0; var _0x37663d = _0x9ebb3c * this['direction']['x'] + _0x1b01e2 * this['direction']['y'] + _0x2cbe34 * this['direction']['z']; return !(_0x37663d < 0x0) && _0x1b26c5 - _0x37663d * _0x37663d <= _0x253f0f; } , _0x374ee6['prototype']['intersectsTriangle'] = function(_0xe330ff, _0x24a2be, _0xcb8c8) { var _0x525270 = _0x374ee6['TmpVector3'][0x0] , _0x467023 = _0x374ee6['TmpVector3'][0x1] , _0x9ac611 = _0x374ee6['TmpVector3'][0x2] , _0x4e753e = _0x374ee6['TmpVector3'][0x3] , _0x387e33 = _0x374ee6['TmpVector3'][0x4]; _0x24a2be['subtractToRef'](_0xe330ff, _0x525270), _0xcb8c8['subtractToRef'](_0xe330ff, _0x467023), _0x3456cd['x']['CrossToRef'](this['direction'], _0x467023, _0x9ac611); var _0x280737 = _0x3456cd['x']['Dot'](_0x525270, _0x9ac611); if (0x0 === _0x280737) return null; var _0x348e07 = 0x1 / _0x280737; this['origin']['subtractToRef'](_0xe330ff, _0x4e753e); var _0xfe4e57 = _0x3456cd['x']['Dot'](_0x4e753e, _0x9ac611) * _0x348e07; if (_0xfe4e57 < 0x0 || _0xfe4e57 > 0x1) return null; _0x3456cd['x']['CrossToRef'](_0x4e753e, _0x525270, _0x387e33); var _0x164e00 = _0x3456cd['x']['Dot'](this['direction'], _0x387e33) * _0x348e07; if (_0x164e00 < 0x0 || _0xfe4e57 + _0x164e00 > 0x1) return null; var _0x4b5314 = _0x3456cd['x']['Dot'](_0x467023, _0x387e33) * _0x348e07; return _0x4b5314 > this['length'] ? null : new _0xc3a94b['a'](_0xfe4e57,_0x164e00,_0x4b5314); } , _0x374ee6['prototype']['intersectsPlane'] = function(_0x103618) { var _0x30e6de, _0x3335f1 = _0x3456cd['x']['Dot'](_0x103618['normal'], this['direction']); if (Math['abs'](_0x3335f1) < 9.99999997475243e-7) return null; var _0x4867bc = _0x3456cd['x']['Dot'](_0x103618['normal'], this['origin']); return (_0x30e6de = (-_0x103618['d'] - _0x4867bc) / _0x3335f1) < 0x0 ? _0x30e6de < -9.99999997475243e-7 ? null : 0x0 : _0x30e6de; } , _0x374ee6['prototype']['intersectsMesh'] = function(_0x298506, _0x363711) { var _0x3793eb = _0x3456cd['t']['Matrix'][0x0]; return _0x298506['getWorldMatrix']()['invertToRef'](_0x3793eb), this['_tmpRay'] ? _0x374ee6['TransformToRef'](this, _0x3793eb, this['_tmpRay']) : this['_tmpRay'] = _0x374ee6['Transform'](this, _0x3793eb), _0x298506['intersects'](this['_tmpRay'], _0x363711); } , _0x374ee6['prototype']['intersectsMeshes'] = function(_0x24ae24, _0x5afe0a, _0x35df18) { _0x35df18 ? _0x35df18['length'] = 0x0 : _0x35df18 = []; for (var _0x3656c9 = 0x0; _0x3656c9 < _0x24ae24['length']; _0x3656c9++) { var _0x267b3f = this['intersectsMesh'](_0x24ae24[_0x3656c9], _0x5afe0a); _0x267b3f['hit'] && _0x35df18['push'](_0x267b3f); } return _0x35df18['sort'](this['_comparePickingInfo']), _0x35df18; } , _0x374ee6['prototype']['_comparePickingInfo'] = function(_0x15afd6, _0x4963e5) { return _0x15afd6['distance'] < _0x4963e5['distance'] ? -0x1 : _0x15afd6['distance'] > _0x4963e5['distance'] ? 0x1 : 0x0; } , _0x374ee6['prototype']['intersectionSegment'] = function(_0x2689a0, _0x484192, _0x4228b2) { var _0x106e0f = this['origin'] , _0xb67009 = _0x3456cd['t']['Vector3'][0x0] , _0x2c85b2 = _0x3456cd['t']['Vector3'][0x1] , _0x4a790d = _0x3456cd['t']['Vector3'][0x2] , _0x57f3ab = _0x3456cd['t']['Vector3'][0x3]; _0x484192['subtractToRef'](_0x2689a0, _0xb67009), this['direction']['scaleToRef'](_0x374ee6['rayl'], _0x4a790d), _0x106e0f['addToRef'](_0x4a790d, _0x2c85b2), _0x2689a0['subtractToRef'](_0x106e0f, _0x57f3ab); var _0x20a565, _0x500dd1, _0x363278, _0x497d9f, _0x565ddb = _0x3456cd['x']['Dot'](_0xb67009, _0xb67009), _0x170a5a = _0x3456cd['x']['Dot'](_0xb67009, _0x4a790d), _0x21d232 = _0x3456cd['x']['Dot'](_0x4a790d, _0x4a790d), _0x7c3e54 = _0x3456cd['x']['Dot'](_0xb67009, _0x57f3ab), _0x585a4a = _0x3456cd['x']['Dot'](_0x4a790d, _0x57f3ab), _0x5b80b6 = _0x565ddb * _0x21d232 - _0x170a5a * _0x170a5a, _0x205542 = _0x5b80b6, _0x373437 = _0x5b80b6; _0x5b80b6 < _0x374ee6['smallnum'] ? (_0x500dd1 = 0x0, _0x205542 = 0x1, _0x497d9f = _0x585a4a, _0x373437 = _0x21d232) : (_0x497d9f = _0x565ddb * _0x585a4a - _0x170a5a * _0x7c3e54, (_0x500dd1 = _0x170a5a * _0x585a4a - _0x21d232 * _0x7c3e54) < 0x0 ? (_0x500dd1 = 0x0, _0x497d9f = _0x585a4a, _0x373437 = _0x21d232) : _0x500dd1 > _0x205542 && (_0x500dd1 = _0x205542, _0x497d9f = _0x585a4a + _0x170a5a, _0x373437 = _0x21d232)), _0x497d9f < 0x0 ? (_0x497d9f = 0x0, -_0x7c3e54 < 0x0 ? _0x500dd1 = 0x0 : -_0x7c3e54 > _0x565ddb ? _0x500dd1 = _0x205542 : (_0x500dd1 = -_0x7c3e54, _0x205542 = _0x565ddb)) : _0x497d9f > _0x373437 && (_0x497d9f = _0x373437, -_0x7c3e54 + _0x170a5a < 0x0 ? _0x500dd1 = 0x0 : -_0x7c3e54 + _0x170a5a > _0x565ddb ? _0x500dd1 = _0x205542 : (_0x500dd1 = -_0x7c3e54 + _0x170a5a, _0x205542 = _0x565ddb)), _0x20a565 = Math['abs'](_0x500dd1) < _0x374ee6['smallnum'] ? 0x0 : _0x500dd1 / _0x205542, _0x363278 = Math['abs'](_0x497d9f) < _0x374ee6['smallnum'] ? 0x0 : _0x497d9f / _0x373437; var _0x4ba0a2 = _0x3456cd['t']['Vector3'][0x4]; _0x4a790d['scaleToRef'](_0x363278, _0x4ba0a2); var _0xa33fe = _0x3456cd['t']['Vector3'][0x5]; _0xb67009['scaleToRef'](_0x20a565, _0xa33fe), _0xa33fe['addInPlace'](_0x57f3ab); var _0x563391 = _0x3456cd['t']['Vector3'][0x6]; return _0xa33fe['subtractToRef'](_0x4ba0a2, _0x563391), _0x363278 > 0x0 && _0x363278 <= this['length'] && _0x563391['lengthSquared']() < _0x4228b2 * _0x4228b2 ? _0xa33fe['length']() : -0x1; } , _0x374ee6['prototype']['update'] = function(_0x14d6de, _0x135e8d, _0x42faff, _0x11521b, _0x261383, _0x46617d, _0x52736b) { return this['unprojectRayToRef'](_0x14d6de, _0x135e8d, _0x42faff, _0x11521b, _0x261383, _0x46617d, _0x52736b), this; } , _0x374ee6['Zero'] = function() { return new _0x374ee6(_0x3456cd['x']['Zero'](),_0x3456cd['x']['Zero']()); } , _0x374ee6['CreateNew'] = function(_0x365776, _0x39568f, _0x2f1704, _0x31d7d6, _0x4e0439, _0x4c8adb, _0x582605) { return _0x374ee6['Zero']()['update'](_0x365776, _0x39568f, _0x2f1704, _0x31d7d6, _0x4e0439, _0x4c8adb, _0x582605); } , _0x374ee6['CreateNewFromTo'] = function(_0x3e8195, _0x5c88d7, _0x16e311) { void 0x0 === _0x16e311 && (_0x16e311 = _0x3456cd['j']['IdentityReadOnly']); var _0x3a806b = _0x5c88d7['subtract'](_0x3e8195) , _0x2ae591 = Math['sqrt'](_0x3a806b['x'] * _0x3a806b['x'] + _0x3a806b['y'] * _0x3a806b['y'] + _0x3a806b['z'] * _0x3a806b['z']); return _0x3a806b['normalize'](), _0x374ee6['Transform'](new _0x374ee6(_0x3e8195,_0x3a806b,_0x2ae591), _0x16e311); } , _0x374ee6['Transform'] = function(_0x5cf4b6, _0x519240) { var _0x491daa = new _0x374ee6(new _0x3456cd['x'](0x0,0x0,0x0),new _0x3456cd['x'](0x0,0x0,0x0)); return _0x374ee6['TransformToRef'](_0x5cf4b6, _0x519240, _0x491daa), _0x491daa; } , _0x374ee6['TransformToRef'] = function(_0x2a1613, _0x5e84b5, _0x2e24ed) { _0x3456cd['x']['TransformCoordinatesToRef'](_0x2a1613['origin'], _0x5e84b5, _0x2e24ed['origin']), _0x3456cd['x']['TransformNormalToRef'](_0x2a1613['direction'], _0x5e84b5, _0x2e24ed['direction']), _0x2e24ed['length'] = _0x2a1613['length']; var _0x28b254 = _0x2e24ed['direction'] , _0x58b9bb = _0x28b254['length'](); if (0x0 !== _0x58b9bb && 0x1 !== _0x58b9bb) { var _0x12aea0 = 0x1 / _0x58b9bb; _0x28b254['x'] *= _0x12aea0, _0x28b254['y'] *= _0x12aea0, _0x28b254['z'] *= _0x12aea0, _0x2e24ed['length'] *= _0x58b9bb; } } , _0x374ee6['prototype']['unprojectRayToRef'] = function(_0x13fcd4, _0x362bda, _0x1130d3, _0x19feb0, _0xbb02d3, _0x286001, _0x3195d6) { var _0x42123c = _0x3456cd['t']['Matrix'][0x0]; _0xbb02d3['multiplyToRef'](_0x286001, _0x42123c), _0x42123c['multiplyToRef'](_0x3195d6, _0x42123c), _0x42123c['invert'](); var _0x302aec = _0x3456cd['t']['Vector3'][0x0]; _0x302aec['x'] = _0x13fcd4 / _0x1130d3 * 0x2 - 0x1, _0x302aec['y'] = -(_0x362bda / _0x19feb0 * 0x2 - 0x1), _0x302aec['z'] = -0x1; var _0x3f275f = _0x3456cd['t']['Vector3'][0x1]['copyFromFloats'](_0x302aec['x'], _0x302aec['y'], 0x1) , _0x38e59a = _0x3456cd['t']['Vector3'][0x2] , _0x4f66aa = _0x3456cd['t']['Vector3'][0x3]; _0x3456cd['x']['_UnprojectFromInvertedMatrixToRef'](_0x302aec, _0x42123c, _0x38e59a), _0x3456cd['x']['_UnprojectFromInvertedMatrixToRef'](_0x3f275f, _0x42123c, _0x4f66aa), this['origin']['copyFrom'](_0x38e59a), _0x4f66aa['subtractToRef'](_0x38e59a, this['direction']), this['direction']['normalize'](); } , _0x374ee6['TmpVector3'] = _0x32a5cb['a']['BuildArray'](0x6, _0x3456cd['x']['Zero']), _0x374ee6['smallnum'] = 1e-8, _0x374ee6['rayl'] = 0x3b9aca00, _0x374ee6; }(); _0x58cff1['a']['prototype']['createPickingRay'] = function(_0xbb9bbd, _0x260c7c, _0x46123d, _0x3587fc, _0x49415b) { void 0x0 === _0x49415b && (_0x49415b = !0x1); var _0x14ba0b = _0x59ff9c['Zero'](); return this['createPickingRayToRef'](_0xbb9bbd, _0x260c7c, _0x46123d, _0x14ba0b, _0x3587fc, _0x49415b), _0x14ba0b; } , _0x58cff1['a']['prototype']['createPickingRayToRef'] = function(_0x32b73e, _0x2c410b, _0x1c78e7, _0x5c61ac, _0x2c0623, _0x1a688f) { void 0x0 === _0x1a688f && (_0x1a688f = !0x1); var _0x2ad3a4 = this['getEngine'](); if (!_0x2c0623) { if (!this['activeCamera']) throw new Error('Active\x20camera\x20not\x20set'); _0x2c0623 = this['activeCamera']; } var _0x5eebf6 = _0x2c0623['viewport']['toGlobal'](_0x2ad3a4['getRenderWidth'](), _0x2ad3a4['getRenderHeight']()); return _0x32b73e = _0x32b73e / _0x2ad3a4['getHardwareScalingLevel']() - _0x5eebf6['x'], _0x2c410b = _0x2c410b / _0x2ad3a4['getHardwareScalingLevel']() - (_0x2ad3a4['getRenderHeight']() - _0x5eebf6['y'] - _0x5eebf6['height']), _0x5c61ac['update'](_0x32b73e, _0x2c410b, _0x5eebf6['width'], _0x5eebf6['height'], _0x1c78e7 || _0x3456cd['j']['IdentityReadOnly'], _0x1a688f ? _0x3456cd['j']['IdentityReadOnly'] : _0x2c0623['getViewMatrix'](), _0x2c0623['getProjectionMatrix']()), this; } , _0x58cff1['a']['prototype']['createPickingRayInCameraSpace'] = function(_0x4930d5, _0x5b9473, _0x341600) { var _0x3407ed = _0x59ff9c['Zero'](); return this['createPickingRayInCameraSpaceToRef'](_0x4930d5, _0x5b9473, _0x3407ed, _0x341600), _0x3407ed; } , _0x58cff1['a']['prototype']['createPickingRayInCameraSpaceToRef'] = function(_0x2eea0f, _0x57e747, _0x1fc19d, _0x58543b) { if (!_0x1f918a['a']) return this; var _0x59d5dc = this['getEngine'](); if (!_0x58543b) { if (!this['activeCamera']) throw new Error('Active\x20camera\x20not\x20set'); _0x58543b = this['activeCamera']; } var _0x5df10b = _0x58543b['viewport']['toGlobal'](_0x59d5dc['getRenderWidth'](), _0x59d5dc['getRenderHeight']()) , _0x4c3770 = _0x3456cd['j']['Identity'](); return _0x2eea0f = _0x2eea0f / _0x59d5dc['getHardwareScalingLevel']() - _0x5df10b['x'], _0x57e747 = _0x57e747 / _0x59d5dc['getHardwareScalingLevel']() - (_0x59d5dc['getRenderHeight']() - _0x5df10b['y'] - _0x5df10b['height']), _0x1fc19d['update'](_0x2eea0f, _0x57e747, _0x5df10b['width'], _0x5df10b['height'], _0x4c3770, _0x4c3770, _0x58543b['getProjectionMatrix']()), this; } , _0x58cff1['a']['prototype']['_internalPick'] = function(_0x3a94c8, _0x4e3e34, _0x43d041, _0x1c171a) { if (!_0x1f918a['a']) return null; for (var _0xae3ed2 = null, _0xbe982 = 0x0; _0xbe982 < this['meshes']['length']; _0xbe982++) { var _0x359dd8 = this['meshes'][_0xbe982]; if (_0x4e3e34) { if (!_0x4e3e34(_0x359dd8)) continue; } else if (!_0x359dd8['isEnabled']() || !_0x359dd8['isVisible'] || !_0x359dd8['isPickable']) continue; var _0xbde873 = _0x3a94c8(_0x359dd8['getWorldMatrix']()) , _0xdcda1d = _0x359dd8['intersects'](_0xbde873, _0x43d041, _0x1c171a); if (_0xdcda1d && _0xdcda1d['hit'] && ((_0x43d041 || null == _0xae3ed2 || !(_0xdcda1d['distance'] >= _0xae3ed2['distance'])) && (_0xae3ed2 = _0xdcda1d, _0x43d041))) break; } return _0xae3ed2 || new _0x1f918a['a'](); } , _0x58cff1['a']['prototype']['_internalMultiPick'] = function(_0x213404, _0x34619f, _0x3b7c92) { if (!_0x1f918a['a']) return null; for (var _0x146ca9 = new Array(), _0x542a9c = 0x0; _0x542a9c < this['meshes']['length']; _0x542a9c++) { var _0x4b8f84 = this['meshes'][_0x542a9c]; if (_0x34619f) { if (!_0x34619f(_0x4b8f84)) continue; } else if (!_0x4b8f84['isEnabled']() || !_0x4b8f84['isVisible'] || !_0x4b8f84['isPickable']) continue; var _0x58a089 = _0x213404(_0x4b8f84['getWorldMatrix']()) , _0x23b8d2 = _0x4b8f84['intersects'](_0x58a089, !0x1, _0x3b7c92); _0x23b8d2 && _0x23b8d2['hit'] && _0x146ca9['push'](_0x23b8d2); } return _0x146ca9; } , _0x58cff1['a']['prototype']['pick'] = function(_0x477b6c, _0x506a6f, _0x18cd3b, _0x24d223, _0x14bf31, _0x57a04b) { var _0x30a7ff = this; if (!_0x1f918a['a']) return null; var _0x207956 = this['_internalPick'](function(_0x42c2ef) { return _0x30a7ff['_tempPickingRay'] || (_0x30a7ff['_tempPickingRay'] = _0x59ff9c['Zero']()), _0x30a7ff['createPickingRayToRef'](_0x477b6c, _0x506a6f, _0x42c2ef, _0x30a7ff['_tempPickingRay'], _0x14bf31 || null), _0x30a7ff['_tempPickingRay']; }, _0x18cd3b, _0x24d223, _0x57a04b); return _0x207956 && (_0x207956['ray'] = this['createPickingRay'](_0x477b6c, _0x506a6f, _0x3456cd['j']['Identity'](), _0x14bf31 || null)), _0x207956; } , _0x58cff1['a']['prototype']['pickWithRay'] = function(_0x31d79d, _0x4e2b02, _0x3d80c4, _0x43d672) { var _0x3ab5c1 = this , _0x543964 = this['_internalPick'](function(_0x3ce984) { return _0x3ab5c1['_pickWithRayInverseMatrix'] || (_0x3ab5c1['_pickWithRayInverseMatrix'] = _0x3456cd['j']['Identity']()), _0x3ce984['invertToRef'](_0x3ab5c1['_pickWithRayInverseMatrix']), _0x3ab5c1['_cachedRayForTransform'] || (_0x3ab5c1['_cachedRayForTransform'] = _0x59ff9c['Zero']()), _0x59ff9c['TransformToRef'](_0x31d79d, _0x3ab5c1['_pickWithRayInverseMatrix'], _0x3ab5c1['_cachedRayForTransform']), _0x3ab5c1['_cachedRayForTransform']; }, _0x4e2b02, _0x3d80c4, _0x43d672); return _0x543964 && (_0x543964['ray'] = _0x31d79d), _0x543964; } , _0x58cff1['a']['prototype']['multiPick'] = function(_0x5eaf56, _0x21785c, _0x25308d, _0x44c99d, _0x25efea) { var _0x5c387d = this; return this['_internalMultiPick'](function(_0x4c05bf) { return _0x5c387d['createPickingRay'](_0x5eaf56, _0x21785c, _0x4c05bf, _0x44c99d || null); }, _0x25308d, _0x25efea); } , _0x58cff1['a']['prototype']['multiPickWithRay'] = function(_0x4c6dd3, _0x566bd6, _0x306fc5) { var _0x364d88 = this; return this['_internalMultiPick'](function(_0x1c97ec) { return _0x364d88['_pickWithRayInverseMatrix'] || (_0x364d88['_pickWithRayInverseMatrix'] = _0x3456cd['j']['Identity']()), _0x1c97ec['invertToRef'](_0x364d88['_pickWithRayInverseMatrix']), _0x364d88['_cachedRayForTransform'] || (_0x364d88['_cachedRayForTransform'] = _0x59ff9c['Zero']()), _0x59ff9c['TransformToRef'](_0x4c6dd3, _0x364d88['_pickWithRayInverseMatrix'], _0x364d88['_cachedRayForTransform']), _0x364d88['_cachedRayForTransform']; }, _0x566bd6, _0x306fc5); } , _0x380a92['a']['prototype']['getForwardRay'] = function(_0x25d659, _0x5ce800, _0x277817) { void 0x0 === _0x25d659 && (_0x25d659 = 0x64), _0x5ce800 || (_0x5ce800 = this['getWorldMatrix']()), _0x277817 || (_0x277817 = this['position']); var _0x5a0852 = this['_scene']['useRightHandedSystem'] ? new _0x3456cd['x'](0x0,0x0,-0x1) : new _0x3456cd['x'](0x0,0x0,0x1) , _0x24c826 = _0x3456cd['x']['TransformNormal'](_0x5a0852, _0x5ce800) , _0x21a09d = _0x3456cd['x']['Normalize'](_0x24c826); return new _0x59ff9c(_0x277817,_0x21a09d,_0x25d659); } ; } , function(_0x4d6f8c, _0x5ef02b, _0x2c0cd2) { 'use strict'; _0x2c0cd2['d'](_0x5ef02b, 'a', function() { return _0x366c04; }); var _0x16cb45 = _0x2c0cd2(0x0) , _0x2b1bb8 = _0x2c0cd2(0xb) , _0x2bcfd7 = _0x2c0cd2(0xd) , _0xb03d83 = _0x2c0cd2(0x48) , _0x1d9a0f = _0x2c0cd2(0x4); _0x2bcfd7['a']['CreateLineSystem'] = function(_0x2389c7) { for (var _0x5582b8 = [], _0x400b5c = [], _0x4c69f9 = _0x2389c7['lines'], _0x24a39d = _0x2389c7['colors'], _0x22e418 = [], _0x1a5b1d = 0x0, _0x3d0f29 = 0x0; _0x3d0f29 < _0x4c69f9['length']; _0x3d0f29++) for (var _0x4c8b7f = _0x4c69f9[_0x3d0f29], _0x298d3a = 0x0; _0x298d3a < _0x4c8b7f['length']; _0x298d3a++) { if (_0x400b5c['push'](_0x4c8b7f[_0x298d3a]['x'], _0x4c8b7f[_0x298d3a]['y'], _0x4c8b7f[_0x298d3a]['z']), _0x24a39d) { var _0xfc056a = _0x24a39d[_0x3d0f29]; _0x22e418['push'](_0xfc056a[_0x298d3a]['r'], _0xfc056a[_0x298d3a]['g'], _0xfc056a[_0x298d3a]['b'], _0xfc056a[_0x298d3a]['a']); } _0x298d3a > 0x0 && (_0x5582b8['push'](_0x1a5b1d - 0x1), _0x5582b8['push'](_0x1a5b1d)), _0x1a5b1d++; } var _0x5e98c6 = new _0x2bcfd7['a'](); return _0x5e98c6['indices'] = _0x5582b8, _0x5e98c6['positions'] = _0x400b5c, _0x24a39d && (_0x5e98c6['colors'] = _0x22e418), _0x5e98c6; } , _0x2bcfd7['a']['CreateDashedLines'] = function(_0x3eb7a8) { var _0x326ca2, _0x272767, _0x5a1045 = _0x3eb7a8['dashSize'] || 0x3, _0x26eb4f = _0x3eb7a8['gapSize'] || 0x1, _0x1b6106 = _0x3eb7a8['dashNb'] || 0xc8, _0x815437 = _0x3eb7a8['points'], _0x6631f5 = new Array(), _0x19c681 = new Array(), _0x4f36c6 = _0x16cb45['x']['Zero'](), _0x20260b = 0x0, _0x3a7e8 = 0x0, _0x45b0e3 = 0x0, _0x42e378 = 0x0, _0x1f35c6 = 0x0; for (_0x1f35c6 = 0x0; _0x1f35c6 < _0x815437['length'] - 0x1; _0x1f35c6++) _0x815437[_0x1f35c6 + 0x1]['subtractToRef'](_0x815437[_0x1f35c6], _0x4f36c6), _0x20260b += _0x4f36c6['length'](); for (_0x272767 = _0x5a1045 * (_0x326ca2 = _0x20260b / _0x1b6106) / (_0x5a1045 + _0x26eb4f), _0x1f35c6 = 0x0; _0x1f35c6 < _0x815437['length'] - 0x1; _0x1f35c6++) { _0x815437[_0x1f35c6 + 0x1]['subtractToRef'](_0x815437[_0x1f35c6], _0x4f36c6), _0x3a7e8 = Math['floor'](_0x4f36c6['length']() / _0x326ca2), _0x4f36c6['normalize'](); for (var _0x156c47 = 0x0; _0x156c47 < _0x3a7e8; _0x156c47++) _0x45b0e3 = _0x326ca2 * _0x156c47, _0x6631f5['push'](_0x815437[_0x1f35c6]['x'] + _0x45b0e3 * _0x4f36c6['x'], _0x815437[_0x1f35c6]['y'] + _0x45b0e3 * _0x4f36c6['y'], _0x815437[_0x1f35c6]['z'] + _0x45b0e3 * _0x4f36c6['z']), _0x6631f5['push'](_0x815437[_0x1f35c6]['x'] + (_0x45b0e3 + _0x272767) * _0x4f36c6['x'], _0x815437[_0x1f35c6]['y'] + (_0x45b0e3 + _0x272767) * _0x4f36c6['y'], _0x815437[_0x1f35c6]['z'] + (_0x45b0e3 + _0x272767) * _0x4f36c6['z']), _0x19c681['push'](_0x42e378, _0x42e378 + 0x1), _0x42e378 += 0x2; } var _0x3843cc = new _0x2bcfd7['a'](); return _0x3843cc['positions'] = _0x6631f5, _0x3843cc['indices'] = _0x19c681, _0x3843cc; } , _0x2b1bb8['a']['CreateLines'] = function(_0x2e43e6, _0x398bbd, _0x5a8db5, _0x154d10, _0x4f860a) { void 0x0 === _0x5a8db5 && (_0x5a8db5 = null), void 0x0 === _0x154d10 && (_0x154d10 = !0x1), void 0x0 === _0x4f860a && (_0x4f860a = null); var _0x314348 = { 'points': _0x398bbd, 'updatable': _0x154d10, 'instance': _0x4f860a }; return _0x366c04['CreateLines'](_0x2e43e6, _0x314348, _0x5a8db5); } , _0x2b1bb8['a']['CreateDashedLines'] = function(_0x1dc639, _0x101fcb, _0x5ab1ce, _0x65f5f2, _0x2e9446, _0x2b0575, _0x4e8d26, _0x2274fe) { void 0x0 === _0x2b0575 && (_0x2b0575 = null); var _0x218a8c = { 'points': _0x101fcb, 'dashSize': _0x5ab1ce, 'gapSize': _0x65f5f2, 'dashNb': _0x2e9446, 'updatable': _0x4e8d26, 'instance': _0x2274fe }; return _0x366c04['CreateDashedLines'](_0x1dc639, _0x218a8c, _0x2b0575); } ; var _0x366c04 = function() { function _0x54fc43() {} return _0x54fc43['CreateLineSystem'] = function(_0x6f7d98, _0xcbbe87, _0x59ee81) { var _0x421627 = _0xcbbe87['instance'] , _0x5091fa = _0xcbbe87['lines'] , _0x1027f4 = _0xcbbe87['colors']; if (_0x421627) { var _0x5c7d5a, _0x5c08f9, _0x4e040c = _0x421627['getVerticesData'](_0x1d9a0f['b']['PositionKind']); _0x1027f4 && (_0x5c7d5a = _0x421627['getVerticesData'](_0x1d9a0f['b']['ColorKind'])); for (var _0x2ad44a = 0x0, _0x272694 = 0x0, _0xeba1f4 = 0x0; _0xeba1f4 < _0x5091fa['length']; _0xeba1f4++) for (var _0xea0281 = _0x5091fa[_0xeba1f4], _0x25b934 = 0x0; _0x25b934 < _0xea0281['length']; _0x25b934++) _0x4e040c[_0x2ad44a] = _0xea0281[_0x25b934]['x'], _0x4e040c[_0x2ad44a + 0x1] = _0xea0281[_0x25b934]['y'], _0x4e040c[_0x2ad44a + 0x2] = _0xea0281[_0x25b934]['z'], _0x1027f4 && _0x5c7d5a && (_0x5c08f9 = _0x1027f4[_0xeba1f4], _0x5c7d5a[_0x272694] = _0x5c08f9[_0x25b934]['r'], _0x5c7d5a[_0x272694 + 0x1] = _0x5c08f9[_0x25b934]['g'], _0x5c7d5a[_0x272694 + 0x2] = _0x5c08f9[_0x25b934]['b'], _0x5c7d5a[_0x272694 + 0x3] = _0x5c08f9[_0x25b934]['a'], _0x272694 += 0x4), _0x2ad44a += 0x3; return _0x421627['updateVerticesData'](_0x1d9a0f['b']['PositionKind'], _0x4e040c, !0x1, !0x1), _0x1027f4 && _0x5c7d5a && _0x421627['updateVerticesData'](_0x1d9a0f['b']['ColorKind'], _0x5c7d5a, !0x1, !0x1), _0x421627; } var _0x588ffb = !!_0x1027f4 , _0x44acaa = new _0xb03d83['b'](_0x6f7d98,_0x59ee81,null,void 0x0,void 0x0,_0x588ffb,_0xcbbe87['useVertexAlpha']); return _0x2bcfd7['a']['CreateLineSystem'](_0xcbbe87)['applyToMesh'](_0x44acaa, _0xcbbe87['updatable']), _0x44acaa; } , _0x54fc43['CreateLines'] = function(_0x4d7c19, _0x67bdf7, _0x5c7c1b) { void 0x0 === _0x5c7c1b && (_0x5c7c1b = null); var _0x3b8043 = _0x67bdf7['colors'] ? [_0x67bdf7['colors']] : null; return _0x54fc43['CreateLineSystem'](_0x4d7c19, { 'lines': [_0x67bdf7['points']], 'updatable': _0x67bdf7['updatable'], 'instance': _0x67bdf7['instance'], 'colors': _0x3b8043, 'useVertexAlpha': _0x67bdf7['useVertexAlpha'] }, _0x5c7c1b); } , _0x54fc43['CreateDashedLines'] = function(_0x34db5b, _0x590cbd, _0x3d3654) { void 0x0 === _0x3d3654 && (_0x3d3654 = null); var _0x41315e = _0x590cbd['points'] , _0x4ba940 = _0x590cbd['instance'] , _0x21057d = _0x590cbd['gapSize'] || 0x1 , _0x4489c6 = _0x590cbd['dashSize'] || 0x3; if (_0x4ba940) { return _0x4ba940['updateMeshPositions'](function(_0xb4388) { var _0x1a543e, _0x3c1913, _0x444ac0 = _0x16cb45['x']['Zero'](), _0x3fbfe9 = _0xb4388['length'] / 0x6, _0x17c9e8 = 0x0, _0xd4c95b = 0x0, _0x1a9f10 = 0x0, _0xaa368c = 0x0, _0x112fcf = 0x0, _0x5e932c = 0x0; for (_0x112fcf = 0x0; _0x112fcf < _0x41315e['length'] - 0x1; _0x112fcf++) _0x41315e[_0x112fcf + 0x1]['subtractToRef'](_0x41315e[_0x112fcf], _0x444ac0), _0x17c9e8 += _0x444ac0['length'](); _0x1a543e = _0x17c9e8 / _0x3fbfe9; var _0x1e55d4 = _0x4ba940['_creationDataStorage']['dashSize']; for (_0x3c1913 = _0x1e55d4 * _0x1a543e / (_0x1e55d4 + _0x4ba940['_creationDataStorage']['gapSize']), _0x112fcf = 0x0; _0x112fcf < _0x41315e['length'] - 0x1; _0x112fcf++) for (_0x41315e[_0x112fcf + 0x1]['subtractToRef'](_0x41315e[_0x112fcf], _0x444ac0), _0xd4c95b = Math['floor'](_0x444ac0['length']() / _0x1a543e), _0x444ac0['normalize'](), _0x5e932c = 0x0; _0x5e932c < _0xd4c95b && _0xaa368c < _0xb4388['length']; ) _0x1a9f10 = _0x1a543e * _0x5e932c, _0xb4388[_0xaa368c] = _0x41315e[_0x112fcf]['x'] + _0x1a9f10 * _0x444ac0['x'], _0xb4388[_0xaa368c + 0x1] = _0x41315e[_0x112fcf]['y'] + _0x1a9f10 * _0x444ac0['y'], _0xb4388[_0xaa368c + 0x2] = _0x41315e[_0x112fcf]['z'] + _0x1a9f10 * _0x444ac0['z'], _0xb4388[_0xaa368c + 0x3] = _0x41315e[_0x112fcf]['x'] + (_0x1a9f10 + _0x3c1913) * _0x444ac0['x'], _0xb4388[_0xaa368c + 0x4] = _0x41315e[_0x112fcf]['y'] + (_0x1a9f10 + _0x3c1913) * _0x444ac0['y'], _0xb4388[_0xaa368c + 0x5] = _0x41315e[_0x112fcf]['z'] + (_0x1a9f10 + _0x3c1913) * _0x444ac0['z'], _0xaa368c += 0x6, _0x5e932c++; for (; _0xaa368c < _0xb4388['length']; ) _0xb4388[_0xaa368c] = _0x41315e[_0x112fcf]['x'], _0xb4388[_0xaa368c + 0x1] = _0x41315e[_0x112fcf]['y'], _0xb4388[_0xaa368c + 0x2] = _0x41315e[_0x112fcf]['z'], _0xaa368c += 0x3; }, !0x1), _0x4ba940; } var _0x7d108f = new _0xb03d83['b'](_0x34db5b,_0x3d3654); return _0x2bcfd7['a']['CreateDashedLines'](_0x590cbd)['applyToMesh'](_0x7d108f, _0x590cbd['updatable']), _0x7d108f['_creationDataStorage'] = new _0x2b1bb8['b'](), _0x7d108f['_creationDataStorage']['dashSize'] = _0x4489c6, _0x7d108f['_creationDataStorage']['gapSize'] = _0x21057d, _0x7d108f; } , _0x54fc43; }(); } , function(_0xde4463, _0x49415e, _0x79f5d1) { 'use strict'; _0x79f5d1['d'](_0x49415e, 'a', function() { return _0x46e877; }); var _0x55290f = _0x79f5d1(0x10) , _0x4a95fb = _0x79f5d1(0x8) , _0x2afdb0 = _0x79f5d1(0x11) , _0x5df8d7 = _0x79f5d1(0x17) , _0x15cbf2 = _0x79f5d1(0x41) , _0x2b0d72 = _0x79f5d1(0x0) , _0x46e877 = function() { function _0x105dbf(_0x3f89ae, _0x584d8f) { var _0x19c150 = this; void 0x0 === _0x584d8f && (_0x584d8f = !0x0), this['originalScene'] = _0x3f89ae, this['_pointerCaptures'] = {}, this['_lastPointerEvents'] = {}, this['_sharedGizmoLight'] = null, this['pickUtilitySceneFirst'] = !0x0, this['shouldRender'] = !0x0, this['onlyCheckPointerDownEvents'] = !0x0, this['processAllEvents'] = !0x1, this['onPointerOutObservable'] = new _0x4a95fb['c'](), this['utilityLayerScene'] = new _0x55290f['a'](_0x3f89ae['getEngine'](),{ 'virtual': !0x0 }), this['utilityLayerScene']['useRightHandedSystem'] = _0x3f89ae['useRightHandedSystem'], this['utilityLayerScene']['_allowPostProcessClearColor'] = !0x1, this['utilityLayerScene']['detachControl'](), _0x584d8f && (this['_originalPointerObserver'] = _0x3f89ae['onPrePointerObservable']['add'](function(_0x450876, _0x8f0f40) { if (_0x19c150['utilityLayerScene']['activeCamera'] && (_0x19c150['processAllEvents'] || _0x450876['type'] === _0x2afdb0['a']['POINTERMOVE'] || _0x450876['type'] === _0x2afdb0['a']['POINTERUP'] || _0x450876['type'] === _0x2afdb0['a']['POINTERDOWN'])) { _0x19c150['utilityLayerScene']['pointerX'] = _0x3f89ae['pointerX'], _0x19c150['utilityLayerScene']['pointerY'] = _0x3f89ae['pointerY']; var _0x1dba64 = _0x450876['event']; if (_0x3f89ae['isPointerCaptured'](_0x1dba64['pointerId'])) _0x19c150['_pointerCaptures'][_0x1dba64['pointerId']] = !0x1; else { var _0x375a3c = _0x450876['ray'] ? _0x19c150['utilityLayerScene']['pickWithRay'](_0x450876['ray']) : _0x19c150['utilityLayerScene']['pick'](_0x3f89ae['pointerX'], _0x3f89ae['pointerY']); if (!_0x450876['ray'] && _0x375a3c && (_0x450876['ray'] = _0x375a3c['ray']), _0x19c150['utilityLayerScene']['onPrePointerObservable']['notifyObservers'](_0x450876), _0x19c150['onlyCheckPointerDownEvents'] && _0x450876['type'] != _0x2afdb0['a']['POINTERDOWN']) return _0x450876['skipOnPointerObservable'] || _0x19c150['utilityLayerScene']['onPointerObservable']['notifyObservers'](new _0x2afdb0['b'](_0x450876['type'],_0x450876['event'],_0x375a3c)), void (_0x450876['type'] === _0x2afdb0['a']['POINTERUP'] && _0x19c150['_pointerCaptures'][_0x1dba64['pointerId']] && (_0x19c150['_pointerCaptures'][_0x1dba64['pointerId']] = !0x1)); if (_0x19c150['utilityLayerScene']['autoClearDepthAndStencil'] || _0x19c150['pickUtilitySceneFirst']) _0x375a3c && _0x375a3c['hit'] && (_0x450876['skipOnPointerObservable'] || _0x19c150['utilityLayerScene']['onPointerObservable']['notifyObservers'](new _0x2afdb0['b'](_0x450876['type'],_0x450876['event'],_0x375a3c)), _0x450876['skipOnPointerObservable'] = !0x0); else { var _0x5cd956 = _0x450876['ray'] ? _0x3f89ae['pickWithRay'](_0x450876['ray']) : _0x3f89ae['pick'](_0x3f89ae['pointerX'], _0x3f89ae['pointerY']) , _0x45c523 = _0x450876['event']; _0x5cd956 && _0x375a3c && (0x0 === _0x375a3c['distance'] && _0x5cd956['pickedMesh'] ? _0x19c150['mainSceneTrackerPredicate'] && _0x19c150['mainSceneTrackerPredicate'](_0x5cd956['pickedMesh']) ? (_0x19c150['_notifyObservers'](_0x450876, _0x5cd956, _0x45c523), _0x450876['skipOnPointerObservable'] = !0x0) : _0x450876['type'] === _0x2afdb0['a']['POINTERDOWN'] ? _0x19c150['_pointerCaptures'][_0x45c523['pointerId']] = !0x0 : _0x19c150['_lastPointerEvents'][_0x45c523['pointerId']] && (_0x19c150['onPointerOutObservable']['notifyObservers'](_0x45c523['pointerId']), delete _0x19c150['_lastPointerEvents'][_0x45c523['pointerId']]) : !_0x19c150['_pointerCaptures'][_0x45c523['pointerId']] && (_0x375a3c['distance'] < _0x5cd956['distance'] || 0x0 === _0x5cd956['distance']) ? (_0x19c150['_notifyObservers'](_0x450876, _0x375a3c, _0x45c523), _0x450876['skipOnPointerObservable'] || (_0x450876['skipOnPointerObservable'] = _0x375a3c['distance'] > 0x0)) : !_0x19c150['_pointerCaptures'][_0x45c523['pointerId']] && _0x375a3c['distance'] > _0x5cd956['distance'] && (_0x19c150['mainSceneTrackerPredicate'] && _0x19c150['mainSceneTrackerPredicate'](_0x5cd956['pickedMesh']) ? (_0x19c150['_notifyObservers'](_0x450876, _0x5cd956, _0x45c523), _0x450876['skipOnPointerObservable'] = !0x0) : _0x19c150['_lastPointerEvents'][_0x45c523['pointerId']] && (_0x19c150['onPointerOutObservable']['notifyObservers'](_0x45c523['pointerId']), delete _0x19c150['_lastPointerEvents'][_0x45c523['pointerId']])), _0x450876['type'] === _0x2afdb0['a']['POINTERUP'] && _0x19c150['_pointerCaptures'][_0x45c523['pointerId']] && (_0x19c150['_pointerCaptures'][_0x45c523['pointerId']] = !0x1)); } } } }), this['_originalPointerObserver'] && _0x3f89ae['onPrePointerObservable']['makeObserverTopPriority'](this['_originalPointerObserver'])), this['utilityLayerScene']['autoClear'] = !0x1, this['_afterRenderObserver'] = this['originalScene']['onAfterRenderObservable']['add'](function() { _0x19c150['shouldRender'] && _0x19c150['render'](); }), this['_sceneDisposeObserver'] = this['originalScene']['onDisposeObservable']['add'](function() { _0x19c150['dispose'](); }), this['_updateCamera'](); } return _0x105dbf['prototype']['_getSharedGizmoLight'] = function() { return this['_sharedGizmoLight'] || (this['_sharedGizmoLight'] = new _0x15cbf2['a']('shared\x20gizmo\x20light',new _0x2b0d72['x'](0x0,0x1,0x0),this['utilityLayerScene']), this['_sharedGizmoLight']['intensity'] = 0x2, this['_sharedGizmoLight']['groundColor'] = _0x2b0d72['e']['Gray']()), this['_sharedGizmoLight']; } , Object['defineProperty'](_0x105dbf, 'DefaultUtilityLayer', { 'get': function() { return null == _0x105dbf['_DefaultUtilityLayer'] && (_0x105dbf['_DefaultUtilityLayer'] = new _0x105dbf(_0x5df8d7['a']['LastCreatedScene']), _0x105dbf['_DefaultUtilityLayer']['originalScene']['onDisposeObservable']['addOnce'](function() { _0x105dbf['_DefaultUtilityLayer'] = null; })), _0x105dbf['_DefaultUtilityLayer']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x105dbf, 'DefaultKeepDepthUtilityLayer', { 'get': function() { return null == _0x105dbf['_DefaultKeepDepthUtilityLayer'] && (_0x105dbf['_DefaultKeepDepthUtilityLayer'] = new _0x105dbf(_0x5df8d7['a']['LastCreatedScene']), _0x105dbf['_DefaultKeepDepthUtilityLayer']['utilityLayerScene']['autoClearDepthAndStencil'] = !0x1, _0x105dbf['_DefaultKeepDepthUtilityLayer']['originalScene']['onDisposeObservable']['addOnce'](function() { _0x105dbf['_DefaultKeepDepthUtilityLayer'] = null; })), _0x105dbf['_DefaultKeepDepthUtilityLayer']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x105dbf['prototype']['_notifyObservers'] = function(_0x3d804b, _0x2d9b00, _0x55d3b7) { _0x3d804b['skipOnPointerObservable'] || (this['utilityLayerScene']['onPointerObservable']['notifyObservers'](new _0x2afdb0['b'](_0x3d804b['type'],_0x3d804b['event'],_0x2d9b00)), this['_lastPointerEvents'][_0x55d3b7['pointerId']] = !0x0); } , _0x105dbf['prototype']['render'] = function() { if (this['_updateCamera'](), this['utilityLayerScene']['activeCamera']) { var _0x4a8357 = this['utilityLayerScene']['activeCamera']['getScene']() , _0x509aa5 = this['utilityLayerScene']['activeCamera']; _0x509aa5['_scene'] = this['utilityLayerScene'], _0x509aa5['leftCamera'] && (_0x509aa5['leftCamera']['_scene'] = this['utilityLayerScene']), _0x509aa5['rightCamera'] && (_0x509aa5['rightCamera']['_scene'] = this['utilityLayerScene']), this['utilityLayerScene']['render'](!0x1), _0x509aa5['_scene'] = _0x4a8357, _0x509aa5['leftCamera'] && (_0x509aa5['leftCamera']['_scene'] = _0x4a8357), _0x509aa5['rightCamera'] && (_0x509aa5['rightCamera']['_scene'] = _0x4a8357); } } , _0x105dbf['prototype']['dispose'] = function() { this['onPointerOutObservable']['clear'](), this['_afterRenderObserver'] && this['originalScene']['onAfterRenderObservable']['remove'](this['_afterRenderObserver']), this['_sceneDisposeObserver'] && this['originalScene']['onDisposeObservable']['remove'](this['_sceneDisposeObserver']), this['_originalPointerObserver'] && this['originalScene']['onPrePointerObservable']['remove'](this['_originalPointerObserver']), this['utilityLayerScene']['dispose'](); } , _0x105dbf['prototype']['_updateCamera'] = function() { this['originalScene']['activeCameras']['length'] > 0x1 ? this['utilityLayerScene']['activeCamera'] = this['originalScene']['activeCameras'][this['originalScene']['activeCameras']['length'] - 0x1] : this['utilityLayerScene']['activeCamera'] = this['originalScene']['activeCamera']; } , _0x105dbf['_DefaultUtilityLayer'] = null, _0x105dbf['_DefaultKeepDepthUtilityLayer'] = null, _0x105dbf; }(); } , function(_0x3a5c48, _0x5c33c7, _0x107a30) { 'use strict'; _0x107a30['d'](_0x5c33c7, 'a', function() { return _0x55343f; }); var _0x42cf5e = _0x107a30(0x1) , _0x254cec = _0x107a30(0x2) , _0x2a8373 = _0x107a30(0x8) , _0x59a88c = _0x107a30(0x0) , _0x55343f = function(_0x1879c2) { function _0x132f4e(_0x55c3b4, _0x4159a7, _0x1e063a) { void 0x0 === _0x4159a7 && (_0x4159a7 = null), void 0x0 === _0x1e063a && (_0x1e063a = !0x0); var _0x40cb68 = _0x1879c2['call'](this, _0x55c3b4, _0x4159a7) || this; return _0x40cb68['_forward'] = new _0x59a88c['x'](0x0,0x0,0x1), _0x40cb68['_forwardInverted'] = new _0x59a88c['x'](0x0,0x0,-0x1), _0x40cb68['_up'] = new _0x59a88c['x'](0x0,0x1,0x0), _0x40cb68['_right'] = new _0x59a88c['x'](0x1,0x0,0x0), _0x40cb68['_rightInverted'] = new _0x59a88c['x'](-0x1,0x0,0x0), _0x40cb68['_position'] = _0x59a88c['x']['Zero'](), _0x40cb68['_rotation'] = _0x59a88c['x']['Zero'](), _0x40cb68['_rotationQuaternion'] = null, _0x40cb68['_scaling'] = _0x59a88c['x']['One'](), _0x40cb68['_isDirty'] = !0x1, _0x40cb68['_transformToBoneReferal'] = null, _0x40cb68['_billboardMode'] = _0x132f4e['BILLBOARDMODE_NONE'], _0x40cb68['_preserveParentRotationForBillboard'] = !0x1, _0x40cb68['scalingDeterminant'] = 0x1, _0x40cb68['_infiniteDistance'] = !0x1, _0x40cb68['ignoreNonUniformScaling'] = !0x1, _0x40cb68['reIntegrateRotationIntoRotationQuaternion'] = !0x1, _0x40cb68['_poseMatrix'] = null, _0x40cb68['_localMatrix'] = _0x59a88c['j']['Zero'](), _0x40cb68['_usePivotMatrix'] = !0x1, _0x40cb68['_absolutePosition'] = _0x59a88c['x']['Zero'](), _0x40cb68['_pivotMatrix'] = _0x59a88c['j']['Identity'](), _0x40cb68['_postMultiplyPivotMatrix'] = !0x1, _0x40cb68['_isWorldMatrixFrozen'] = !0x1, _0x40cb68['_indexInSceneTransformNodesArray'] = -0x1, _0x40cb68['onAfterWorldMatrixUpdateObservable'] = new _0x2a8373['c'](), _0x40cb68['_nonUniformScaling'] = !0x1, _0x1e063a && _0x40cb68['getScene']()['addTransformNode'](_0x40cb68), _0x40cb68; } return _0x42cf5e['d'](_0x132f4e, _0x1879c2), Object['defineProperty'](_0x132f4e['prototype'], 'billboardMode', { 'get': function() { return this['_billboardMode']; }, 'set': function(_0x576aaa) { this['_billboardMode'] !== _0x576aaa && (this['_billboardMode'] = _0x576aaa); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x132f4e['prototype'], 'preserveParentRotationForBillboard', { 'get': function() { return this['_preserveParentRotationForBillboard']; }, 'set': function(_0x4a43cf) { _0x4a43cf !== this['_preserveParentRotationForBillboard'] && (this['_preserveParentRotationForBillboard'] = _0x4a43cf); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x132f4e['prototype'], 'infiniteDistance', { 'get': function() { return this['_infiniteDistance']; }, 'set': function(_0x362bc3) { this['_infiniteDistance'] !== _0x362bc3 && (this['_infiniteDistance'] = _0x362bc3); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x132f4e['prototype']['getClassName'] = function() { return 'TransformNode'; } , Object['defineProperty'](_0x132f4e['prototype'], 'position', { 'get': function() { return this['_position']; }, 'set': function(_0xece3e5) { this['_position'] = _0xece3e5, this['_isDirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x132f4e['prototype'], 'rotation', { 'get': function() { return this['_rotation']; }, 'set': function(_0x29c34f) { this['_rotation'] = _0x29c34f, this['_rotationQuaternion'] = null, this['_isDirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x132f4e['prototype'], 'scaling', { 'get': function() { return this['_scaling']; }, 'set': function(_0x558789) { this['_scaling'] = _0x558789, this['_isDirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x132f4e['prototype'], 'rotationQuaternion', { 'get': function() { return this['_rotationQuaternion']; }, 'set': function(_0x259641) { this['_rotationQuaternion'] = _0x259641, _0x259641 && this['_rotation']['setAll'](0x0), this['_isDirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x132f4e['prototype'], 'forward', { 'get': function() { return _0x59a88c['x']['Normalize'](_0x59a88c['x']['TransformNormal'](this['getScene']()['useRightHandedSystem'] ? this['_forwardInverted'] : this['_forward'], this['getWorldMatrix']())); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x132f4e['prototype'], 'up', { 'get': function() { return _0x59a88c['x']['Normalize'](_0x59a88c['x']['TransformNormal'](this['_up'], this['getWorldMatrix']())); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x132f4e['prototype'], 'right', { 'get': function() { return _0x59a88c['x']['Normalize'](_0x59a88c['x']['TransformNormal'](this['getScene']()['useRightHandedSystem'] ? this['_rightInverted'] : this['_right'], this['getWorldMatrix']())); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x132f4e['prototype']['updatePoseMatrix'] = function(_0x5154f6) { return this['_poseMatrix'] ? (this['_poseMatrix']['copyFrom'](_0x5154f6), this) : (this['_poseMatrix'] = _0x5154f6['clone'](), this); } , _0x132f4e['prototype']['getPoseMatrix'] = function() { return this['_poseMatrix'] || (this['_poseMatrix'] = _0x59a88c['j']['Identity']()), this['_poseMatrix']; } , _0x132f4e['prototype']['_isSynchronized'] = function() { var _0xd70ecc = this['_cache']; if (this['billboardMode'] !== _0xd70ecc['billboardMode'] || this['billboardMode'] !== _0x132f4e['BILLBOARDMODE_NONE']) return !0x1; if (_0xd70ecc['pivotMatrixUpdated']) return !0x1; if (this['infiniteDistance']) return !0x1; if (!_0xd70ecc['position']['equals'](this['_position'])) return !0x1; if (this['_rotationQuaternion']) { if (!_0xd70ecc['rotationQuaternion']['equals'](this['_rotationQuaternion'])) return !0x1; } else if (!_0xd70ecc['rotation']['equals'](this['_rotation'])) return !0x1; return !!_0xd70ecc['scaling']['equals'](this['_scaling']); } , _0x132f4e['prototype']['_initCache'] = function() { _0x1879c2['prototype']['_initCache']['call'](this); var _0x2f1858 = this['_cache']; _0x2f1858['localMatrixUpdated'] = !0x1, _0x2f1858['position'] = _0x59a88c['x']['Zero'](), _0x2f1858['scaling'] = _0x59a88c['x']['Zero'](), _0x2f1858['rotation'] = _0x59a88c['x']['Zero'](), _0x2f1858['rotationQuaternion'] = new _0x59a88c['q'](0x0,0x0,0x0,0x0), _0x2f1858['billboardMode'] = -0x1, _0x2f1858['infiniteDistance'] = !0x1; } , _0x132f4e['prototype']['markAsDirty'] = function(_0x56e47b) { return this['_currentRenderId'] = Number['MAX_VALUE'], this['_isDirty'] = !0x0, this; } , Object['defineProperty'](_0x132f4e['prototype'], 'absolutePosition', { 'get': function() { return this['_absolutePosition']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x132f4e['prototype']['setPreTransformMatrix'] = function(_0x30a9ec) { return this['setPivotMatrix'](_0x30a9ec, !0x1); } , _0x132f4e['prototype']['setPivotMatrix'] = function(_0x2f1e27, _0x4757e3) { return void 0x0 === _0x4757e3 && (_0x4757e3 = !0x0), this['_pivotMatrix']['copyFrom'](_0x2f1e27), this['_usePivotMatrix'] = !this['_pivotMatrix']['isIdentity'](), this['_cache']['pivotMatrixUpdated'] = !0x0, this['_postMultiplyPivotMatrix'] = _0x4757e3, this['_postMultiplyPivotMatrix'] && (this['_pivotMatrixInverse'] ? this['_pivotMatrix']['invertToRef'](this['_pivotMatrixInverse']) : this['_pivotMatrixInverse'] = _0x59a88c['j']['Invert'](this['_pivotMatrix'])), this; } , _0x132f4e['prototype']['getPivotMatrix'] = function() { return this['_pivotMatrix']; } , _0x132f4e['prototype']['freezeWorldMatrix'] = function() { return this['_isWorldMatrixFrozen'] = !0x1, this['computeWorldMatrix'](!0x0), this['_isWorldMatrixFrozen'] = !0x0, this; } , _0x132f4e['prototype']['unfreezeWorldMatrix'] = function() { return this['_isWorldMatrixFrozen'] = !0x1, this['computeWorldMatrix'](!0x0), this; } , Object['defineProperty'](_0x132f4e['prototype'], 'isWorldMatrixFrozen', { 'get': function() { return this['_isWorldMatrixFrozen']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x132f4e['prototype']['getAbsolutePosition'] = function() { return this['computeWorldMatrix'](), this['_absolutePosition']; } , _0x132f4e['prototype']['setAbsolutePosition'] = function(_0x1808fe) { if (!_0x1808fe) return this; var _0x3bced6, _0x12bc8a, _0xd71ac9; if (void 0x0 === _0x1808fe['x']) { if (arguments['length'] < 0x3) return this; _0x3bced6 = arguments[0x0], _0x12bc8a = arguments[0x1], _0xd71ac9 = arguments[0x2]; } else _0x3bced6 = _0x1808fe['x'], _0x12bc8a = _0x1808fe['y'], _0xd71ac9 = _0x1808fe['z']; if (this['parent']) { var _0xf1eb42 = _0x59a88c['t']['Matrix'][0x0]; this['parent']['getWorldMatrix']()['invertToRef'](_0xf1eb42), _0x59a88c['x']['TransformCoordinatesFromFloatsToRef'](_0x3bced6, _0x12bc8a, _0xd71ac9, _0xf1eb42, this['position']); } else this['position']['x'] = _0x3bced6, this['position']['y'] = _0x12bc8a, this['position']['z'] = _0xd71ac9; return this; } , _0x132f4e['prototype']['setPositionWithLocalVector'] = function(_0x46ac91) { return this['computeWorldMatrix'](), this['position'] = _0x59a88c['x']['TransformNormal'](_0x46ac91, this['_localMatrix']), this; } , _0x132f4e['prototype']['getPositionExpressedInLocalSpace'] = function() { this['computeWorldMatrix'](); var _0x1670cf = _0x59a88c['t']['Matrix'][0x0]; return this['_localMatrix']['invertToRef'](_0x1670cf), _0x59a88c['x']['TransformNormal'](this['position'], _0x1670cf); } , _0x132f4e['prototype']['locallyTranslate'] = function(_0x1dfe40) { return this['computeWorldMatrix'](!0x0), this['position'] = _0x59a88c['x']['TransformCoordinates'](_0x1dfe40, this['_localMatrix']), this; } , _0x132f4e['prototype']['lookAt'] = function(_0x2497c9, _0x48150b, _0x57898e, _0x5072c9, _0x3e4158) { void 0x0 === _0x48150b && (_0x48150b = 0x0), void 0x0 === _0x57898e && (_0x57898e = 0x0), void 0x0 === _0x5072c9 && (_0x5072c9 = 0x0), void 0x0 === _0x3e4158 && (_0x3e4158 = _0x59a88c['s']['LOCAL']); var _0x3c3810 = _0x132f4e['_lookAtVectorCache'] , _0xef2bda = _0x3e4158 === _0x59a88c['s']['LOCAL'] ? this['position'] : this['getAbsolutePosition'](); if (_0x2497c9['subtractToRef'](_0xef2bda, _0x3c3810), this['setDirection'](_0x3c3810, _0x48150b, _0x57898e, _0x5072c9), _0x3e4158 === _0x59a88c['s']['WORLD'] && this['parent']) if (this['rotationQuaternion']) { var _0x4f66e5 = _0x59a88c['t']['Matrix'][0x0]; this['rotationQuaternion']['toRotationMatrix'](_0x4f66e5); var _0x27631b = _0x59a88c['t']['Matrix'][0x1]; this['parent']['getWorldMatrix']()['getRotationMatrixToRef'](_0x27631b), _0x27631b['invert'](), _0x4f66e5['multiplyToRef'](_0x27631b, _0x4f66e5), this['rotationQuaternion']['fromRotationMatrix'](_0x4f66e5); } else { var _0x3cf661 = _0x59a88c['t']['Quaternion'][0x0]; _0x59a88c['q']['FromEulerVectorToRef'](this['rotation'], _0x3cf661); _0x4f66e5 = _0x59a88c['t']['Matrix'][0x0]; _0x3cf661['toRotationMatrix'](_0x4f66e5); _0x27631b = _0x59a88c['t']['Matrix'][0x1]; this['parent']['getWorldMatrix']()['getRotationMatrixToRef'](_0x27631b), _0x27631b['invert'](), _0x4f66e5['multiplyToRef'](_0x27631b, _0x4f66e5), _0x3cf661['fromRotationMatrix'](_0x4f66e5), _0x3cf661['toEulerAnglesToRef'](this['rotation']); } return this; } , _0x132f4e['prototype']['getDirection'] = function(_0x548f58) { var _0x2cdbe7 = _0x59a88c['x']['Zero'](); return this['getDirectionToRef'](_0x548f58, _0x2cdbe7), _0x2cdbe7; } , _0x132f4e['prototype']['getDirectionToRef'] = function(_0x3c14f3, _0x324c14) { return _0x59a88c['x']['TransformNormalToRef'](_0x3c14f3, this['getWorldMatrix'](), _0x324c14), this; } , _0x132f4e['prototype']['setDirection'] = function(_0x310284, _0x151d0d, _0x4aa916, _0x3e7c94) { void 0x0 === _0x151d0d && (_0x151d0d = 0x0), void 0x0 === _0x4aa916 && (_0x4aa916 = 0x0), void 0x0 === _0x3e7c94 && (_0x3e7c94 = 0x0); var _0x29d9d4 = -Math['atan2'](_0x310284['z'], _0x310284['x']) + Math['PI'] / 0x2 , _0x5c69e9 = Math['sqrt'](_0x310284['x'] * _0x310284['x'] + _0x310284['z'] * _0x310284['z']) , _0x2fee49 = -Math['atan2'](_0x310284['y'], _0x5c69e9); return this['rotationQuaternion'] ? _0x59a88c['q']['RotationYawPitchRollToRef'](_0x29d9d4 + _0x151d0d, _0x2fee49 + _0x4aa916, _0x3e7c94, this['rotationQuaternion']) : (this['rotation']['x'] = _0x2fee49 + _0x4aa916, this['rotation']['y'] = _0x29d9d4 + _0x151d0d, this['rotation']['z'] = _0x3e7c94), this; } , _0x132f4e['prototype']['setPivotPoint'] = function(_0x2d5838, _0x36f59e) { void 0x0 === _0x36f59e && (_0x36f59e = _0x59a88c['s']['LOCAL']), 0x0 == this['getScene']()['getRenderId']() && this['computeWorldMatrix'](!0x0); var _0x3d0571 = this['getWorldMatrix'](); if (_0x36f59e == _0x59a88c['s']['WORLD']) { var _0x202f6a = _0x59a88c['t']['Matrix'][0x0]; _0x3d0571['invertToRef'](_0x202f6a), _0x2d5838 = _0x59a88c['x']['TransformCoordinates'](_0x2d5838, _0x202f6a); } return this['setPivotMatrix'](_0x59a88c['j']['Translation'](-_0x2d5838['x'], -_0x2d5838['y'], -_0x2d5838['z']), !0x0); } , _0x132f4e['prototype']['getPivotPoint'] = function() { var _0x2c1751 = _0x59a88c['x']['Zero'](); return this['getPivotPointToRef'](_0x2c1751), _0x2c1751; } , _0x132f4e['prototype']['getPivotPointToRef'] = function(_0x30bf99) { return _0x30bf99['x'] = -this['_pivotMatrix']['m'][0xc], _0x30bf99['y'] = -this['_pivotMatrix']['m'][0xd], _0x30bf99['z'] = -this['_pivotMatrix']['m'][0xe], this; } , _0x132f4e['prototype']['getAbsolutePivotPoint'] = function() { var _0x2e31a3 = _0x59a88c['x']['Zero'](); return this['getAbsolutePivotPointToRef'](_0x2e31a3), _0x2e31a3; } , _0x132f4e['prototype']['getAbsolutePivotPointToRef'] = function(_0x199ed1) { return _0x199ed1['x'] = this['_pivotMatrix']['m'][0xc], _0x199ed1['y'] = this['_pivotMatrix']['m'][0xd], _0x199ed1['z'] = this['_pivotMatrix']['m'][0xe], this['getPivotPointToRef'](_0x199ed1), _0x59a88c['x']['TransformCoordinatesToRef'](_0x199ed1, this['getWorldMatrix'](), _0x199ed1), this; } , _0x132f4e['prototype']['setParent'] = function(_0x367e0d) { if (!_0x367e0d && !this['parent']) return this; var _0x139d96 = _0x59a88c['t']['Quaternion'][0x0] , _0x1e89c6 = _0x59a88c['t']['Vector3'][0x0] , _0x138a39 = _0x59a88c['t']['Vector3'][0x1]; if (_0x367e0d) { var _0x2c1dca = _0x59a88c['t']['Matrix'][0x0] , _0x4f8c86 = _0x59a88c['t']['Matrix'][0x1]; this['computeWorldMatrix'](!0x0), _0x367e0d['computeWorldMatrix'](!0x0), _0x367e0d['getWorldMatrix']()['invertToRef'](_0x4f8c86), this['getWorldMatrix']()['multiplyToRef'](_0x4f8c86, _0x2c1dca), _0x2c1dca['decompose'](_0x138a39, _0x139d96, _0x1e89c6); } else this['parent'] && this['parent']['computeWorldMatrix'] && this['parent']['computeWorldMatrix'](!0x0), this['computeWorldMatrix'](!0x0), this['getWorldMatrix']()['decompose'](_0x138a39, _0x139d96, _0x1e89c6); return this['rotationQuaternion'] ? this['rotationQuaternion']['copyFrom'](_0x139d96) : _0x139d96['toEulerAnglesToRef'](this['rotation']), this['scaling']['copyFrom'](_0x138a39), this['position']['copyFrom'](_0x1e89c6), this['parent'] = _0x367e0d, this; } , Object['defineProperty'](_0x132f4e['prototype'], 'nonUniformScaling', { 'get': function() { return this['_nonUniformScaling']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x132f4e['prototype']['_updateNonUniformScalingState'] = function(_0x26c8b0) { return this['_nonUniformScaling'] !== _0x26c8b0 && (this['_nonUniformScaling'] = _0x26c8b0, !0x0); } , _0x132f4e['prototype']['attachToBone'] = function(_0x152b28, _0x229f88) { return this['_transformToBoneReferal'] = _0x229f88, this['parent'] = _0x152b28, _0x152b28['getWorldMatrix']()['determinant']() < 0x0 && (this['scalingDeterminant'] *= -0x1), this; } , _0x132f4e['prototype']['detachFromBone'] = function() { return this['parent'] ? (this['parent']['getWorldMatrix']()['determinant']() < 0x0 && (this['scalingDeterminant'] *= -0x1), this['_transformToBoneReferal'] = null, this['parent'] = null, this) : this; } , _0x132f4e['prototype']['rotate'] = function(_0x11fa49, _0x31b1f5, _0x43b8c1) { var _0x18336a; if (_0x11fa49['normalize'](), this['rotationQuaternion'] || (this['rotationQuaternion'] = this['rotation']['toQuaternion'](), this['rotation']['setAll'](0x0)), _0x43b8c1 && _0x43b8c1 !== _0x59a88c['s']['LOCAL']) { if (this['parent']) { var _0x52e47e = _0x59a88c['t']['Matrix'][0x0]; this['parent']['getWorldMatrix']()['invertToRef'](_0x52e47e), _0x11fa49 = _0x59a88c['x']['TransformNormal'](_0x11fa49, _0x52e47e); } (_0x18336a = _0x59a88c['q']['RotationAxisToRef'](_0x11fa49, _0x31b1f5, _0x132f4e['_rotationAxisCache']))['multiplyToRef'](this['rotationQuaternion'], this['rotationQuaternion']); } else _0x18336a = _0x59a88c['q']['RotationAxisToRef'](_0x11fa49, _0x31b1f5, _0x132f4e['_rotationAxisCache']), this['rotationQuaternion']['multiplyToRef'](_0x18336a, this['rotationQuaternion']); return this; } , _0x132f4e['prototype']['rotateAround'] = function(_0x367471, _0x571447, _0x38c193) { _0x571447['normalize'](), this['rotationQuaternion'] || (this['rotationQuaternion'] = _0x59a88c['q']['RotationYawPitchRoll'](this['rotation']['y'], this['rotation']['x'], this['rotation']['z']), this['rotation']['setAll'](0x0)); var _0x303783 = _0x59a88c['t']['Vector3'][0x0] , _0x379008 = _0x59a88c['t']['Vector3'][0x1] , _0x4afa62 = _0x59a88c['t']['Vector3'][0x2] , _0x4f6398 = _0x59a88c['t']['Quaternion'][0x0] , _0x71c10b = _0x59a88c['t']['Matrix'][0x0] , _0xc33ebc = _0x59a88c['t']['Matrix'][0x1] , _0x2ad958 = _0x59a88c['t']['Matrix'][0x2] , _0x3e74e8 = _0x59a88c['t']['Matrix'][0x3]; return _0x367471['subtractToRef'](this['position'], _0x303783), _0x59a88c['j']['TranslationToRef'](_0x303783['x'], _0x303783['y'], _0x303783['z'], _0x71c10b), _0x59a88c['j']['TranslationToRef'](-_0x303783['x'], -_0x303783['y'], -_0x303783['z'], _0xc33ebc), _0x59a88c['j']['RotationAxisToRef'](_0x571447, _0x38c193, _0x2ad958), _0xc33ebc['multiplyToRef'](_0x2ad958, _0x3e74e8), _0x3e74e8['multiplyToRef'](_0x71c10b, _0x3e74e8), _0x3e74e8['decompose'](_0x379008, _0x4f6398, _0x4afa62), this['position']['addInPlace'](_0x4afa62), _0x4f6398['multiplyToRef'](this['rotationQuaternion'], this['rotationQuaternion']), this; } , _0x132f4e['prototype']['translate'] = function(_0x50bdd3, _0x4a1070, _0x36bea4) { var _0x2ab6ec = _0x50bdd3['scale'](_0x4a1070); if (_0x36bea4 && _0x36bea4 !== _0x59a88c['s']['LOCAL']) this['setAbsolutePosition'](this['getAbsolutePosition']()['add'](_0x2ab6ec)); else { var _0x3161c6 = this['getPositionExpressedInLocalSpace']()['add'](_0x2ab6ec); this['setPositionWithLocalVector'](_0x3161c6); } return this; } , _0x132f4e['prototype']['addRotation'] = function(_0x3b71a0, _0x42420f, _0x3cefcd) { var _0x505968; this['rotationQuaternion'] ? _0x505968 = this['rotationQuaternion'] : (_0x505968 = _0x59a88c['t']['Quaternion'][0x1], _0x59a88c['q']['RotationYawPitchRollToRef'](this['rotation']['y'], this['rotation']['x'], this['rotation']['z'], _0x505968)); var _0x1e178a = _0x59a88c['t']['Quaternion'][0x0]; return _0x59a88c['q']['RotationYawPitchRollToRef'](_0x42420f, _0x3b71a0, _0x3cefcd, _0x1e178a), _0x505968['multiplyInPlace'](_0x1e178a), this['rotationQuaternion'] || _0x505968['toEulerAnglesToRef'](this['rotation']), this; } , _0x132f4e['prototype']['_getEffectiveParent'] = function() { return this['parent']; } , _0x132f4e['prototype']['computeWorldMatrix'] = function(_0x7a8d31) { if (this['_isWorldMatrixFrozen'] && !this['_isDirty']) return this['_worldMatrix']; var _0x1bfdfd = this['getScene']()['getRenderId'](); if (!this['_isDirty'] && !_0x7a8d31 && this['isSynchronized']()) return this['_currentRenderId'] = _0x1bfdfd, this['_worldMatrix']; this['_updateCache'](); var _0x3b72db = this['_cache']; _0x3b72db['pivotMatrixUpdated'] = !0x1, _0x3b72db['billboardMode'] = this['billboardMode'], _0x3b72db['infiniteDistance'] = this['infiniteDistance'], this['_currentRenderId'] = _0x1bfdfd, this['_childUpdateId']++, this['_isDirty'] = !0x1; var _0x4f7f6e = this['_getEffectiveParent']() , _0x11f3a4 = this['_billboardMode'] !== _0x132f4e['BILLBOARDMODE_NONE'] && !this['preserveParentRotationForBillboard'] , _0x5aa7bf = this['getScene']()['activeCamera'] , _0xae12e2 = _0x3b72db['scaling'] , _0x8e3ecc = _0x3b72db['position']; if (this['_infiniteDistance']) if (!this['parent'] && _0x5aa7bf) { var _0x110392 = _0x5aa7bf['getWorldMatrix']() , _0x1278de = new _0x59a88c['x'](_0x110392['m'][0xc],_0x110392['m'][0xd],_0x110392['m'][0xe]); _0x8e3ecc['copyFromFloats'](this['_position']['x'] + _0x1278de['x'], this['_position']['y'] + _0x1278de['y'], this['_position']['z'] + _0x1278de['z']); } else _0x8e3ecc['copyFrom'](this['_position']); else _0x8e3ecc['copyFrom'](this['_position']); _0xae12e2['copyFromFloats'](this['_scaling']['x'] * this['scalingDeterminant'], this['_scaling']['y'] * this['scalingDeterminant'], this['_scaling']['z'] * this['scalingDeterminant']); var _0x4208a8 = _0x3b72db['rotationQuaternion']; if (this['_rotationQuaternion']) { if (this['reIntegrateRotationIntoRotationQuaternion']) this['rotation']['lengthSquared']() && (this['_rotationQuaternion']['multiplyInPlace'](_0x59a88c['q']['RotationYawPitchRoll'](this['_rotation']['y'], this['_rotation']['x'], this['_rotation']['z'])), this['_rotation']['copyFromFloats'](0x0, 0x0, 0x0)); _0x4208a8['copyFrom'](this['_rotationQuaternion']); } else _0x59a88c['q']['RotationYawPitchRollToRef'](this['_rotation']['y'], this['_rotation']['x'], this['_rotation']['z'], _0x4208a8), _0x3b72db['rotation']['copyFrom'](this['_rotation']); if (this['_usePivotMatrix']) { var _0xb29035 = _0x59a88c['t']['Matrix'][0x1]; _0x59a88c['j']['ScalingToRef'](_0xae12e2['x'], _0xae12e2['y'], _0xae12e2['z'], _0xb29035); var _0x1d0eb2 = _0x59a88c['t']['Matrix'][0x0]; _0x4208a8['toRotationMatrix'](_0x1d0eb2), this['_pivotMatrix']['multiplyToRef'](_0xb29035, _0x59a88c['t']['Matrix'][0x4]), _0x59a88c['t']['Matrix'][0x4]['multiplyToRef'](_0x1d0eb2, this['_localMatrix']), this['_postMultiplyPivotMatrix'] && this['_localMatrix']['multiplyToRef'](this['_pivotMatrixInverse'], this['_localMatrix']), this['_localMatrix']['addTranslationFromFloats'](_0x8e3ecc['x'], _0x8e3ecc['y'], _0x8e3ecc['z']); } else _0x59a88c['j']['ComposeToRef'](_0xae12e2, _0x4208a8, _0x8e3ecc, this['_localMatrix']); if (_0x4f7f6e && _0x4f7f6e['getWorldMatrix']) { if (_0x11f3a4) { this['_transformToBoneReferal'] ? _0x4f7f6e['getWorldMatrix']()['multiplyToRef'](this['_transformToBoneReferal']['getWorldMatrix'](), _0x59a88c['t']['Matrix'][0x7]) : _0x59a88c['t']['Matrix'][0x7]['copyFrom'](_0x4f7f6e['getWorldMatrix']()); var _0x5c2e30 = _0x59a88c['t']['Vector3'][0x5] , _0xd70222 = _0x59a88c['t']['Vector3'][0x6]; _0x59a88c['t']['Matrix'][0x7]['decompose'](_0xd70222, void 0x0, _0x5c2e30), _0x59a88c['j']['ScalingToRef'](_0xd70222['x'], _0xd70222['y'], _0xd70222['z'], _0x59a88c['t']['Matrix'][0x7]), _0x59a88c['t']['Matrix'][0x7]['setTranslation'](_0x5c2e30), this['_localMatrix']['multiplyToRef'](_0x59a88c['t']['Matrix'][0x7], this['_worldMatrix']); } else this['_transformToBoneReferal'] ? (this['_localMatrix']['multiplyToRef'](_0x4f7f6e['getWorldMatrix'](), _0x59a88c['t']['Matrix'][0x6]), _0x59a88c['t']['Matrix'][0x6]['multiplyToRef'](this['_transformToBoneReferal']['getWorldMatrix'](), this['_worldMatrix'])) : this['_localMatrix']['multiplyToRef'](_0x4f7f6e['getWorldMatrix'](), this['_worldMatrix']); this['_markSyncedWithParent'](); } else this['_worldMatrix']['copyFrom'](this['_localMatrix']); if (_0x11f3a4 && _0x5aa7bf) { var _0xd3e4e9 = _0x59a88c['t']['Vector3'][0x0]; if (this['_worldMatrix']['getTranslationToRef'](_0xd3e4e9), _0x59a88c['t']['Matrix'][0x1]['copyFrom'](_0x5aa7bf['getViewMatrix']()), _0x59a88c['t']['Matrix'][0x1]['setTranslationFromFloats'](0x0, 0x0, 0x0), _0x59a88c['t']['Matrix'][0x1]['invertToRef'](_0x59a88c['t']['Matrix'][0x0]), (this['billboardMode'] & _0x132f4e['BILLBOARDMODE_ALL']) !== _0x132f4e['BILLBOARDMODE_ALL']) { _0x59a88c['t']['Matrix'][0x0]['decompose'](void 0x0, _0x59a88c['t']['Quaternion'][0x0], void 0x0); var _0x4b8ac4 = _0x59a88c['t']['Vector3'][0x1]; _0x59a88c['t']['Quaternion'][0x0]['toEulerAnglesToRef'](_0x4b8ac4), (this['billboardMode'] & _0x132f4e['BILLBOARDMODE_X']) !== _0x132f4e['BILLBOARDMODE_X'] && (_0x4b8ac4['x'] = 0x0), (this['billboardMode'] & _0x132f4e['BILLBOARDMODE_Y']) !== _0x132f4e['BILLBOARDMODE_Y'] && (_0x4b8ac4['y'] = 0x0), (this['billboardMode'] & _0x132f4e['BILLBOARDMODE_Z']) !== _0x132f4e['BILLBOARDMODE_Z'] && (_0x4b8ac4['z'] = 0x0), _0x59a88c['j']['RotationYawPitchRollToRef'](_0x4b8ac4['y'], _0x4b8ac4['x'], _0x4b8ac4['z'], _0x59a88c['t']['Matrix'][0x0]); } this['_worldMatrix']['setTranslationFromFloats'](0x0, 0x0, 0x0), this['_worldMatrix']['multiplyToRef'](_0x59a88c['t']['Matrix'][0x0], this['_worldMatrix']), this['_worldMatrix']['setTranslation'](_0x59a88c['t']['Vector3'][0x0]); } return this['ignoreNonUniformScaling'] ? this['_updateNonUniformScalingState'](!0x1) : this['_scaling']['isNonUniform'] ? this['_updateNonUniformScalingState'](!0x0) : _0x4f7f6e && _0x4f7f6e['_nonUniformScaling'] ? this['_updateNonUniformScalingState'](_0x4f7f6e['_nonUniformScaling']) : this['_updateNonUniformScalingState'](!0x1), this['_afterComputeWorldMatrix'](), this['_absolutePosition']['copyFromFloats'](this['_worldMatrix']['m'][0xc], this['_worldMatrix']['m'][0xd], this['_worldMatrix']['m'][0xe]), this['onAfterWorldMatrixUpdateObservable']['notifyObservers'](this), this['_poseMatrix'] || (this['_poseMatrix'] = _0x59a88c['j']['Invert'](this['_worldMatrix'])), this['_worldMatrixDeterminantIsDirty'] = !0x0, this['_worldMatrix']; } , _0x132f4e['prototype']['_afterComputeWorldMatrix'] = function() {} , _0x132f4e['prototype']['registerAfterWorldMatrixUpdate'] = function(_0x4a5509) { return this['onAfterWorldMatrixUpdateObservable']['add'](_0x4a5509), this; } , _0x132f4e['prototype']['unregisterAfterWorldMatrixUpdate'] = function(_0x26394c) { return this['onAfterWorldMatrixUpdateObservable']['removeCallback'](_0x26394c), this; } , _0x132f4e['prototype']['getPositionInCameraSpace'] = function(_0x41c843) { return void 0x0 === _0x41c843 && (_0x41c843 = null), _0x41c843 || (_0x41c843 = this['getScene']()['activeCamera']), _0x59a88c['x']['TransformCoordinates'](this['absolutePosition'], _0x41c843['getViewMatrix']()); } , _0x132f4e['prototype']['getDistanceToCamera'] = function(_0x5541cf) { return void 0x0 === _0x5541cf && (_0x5541cf = null), _0x5541cf || (_0x5541cf = this['getScene']()['activeCamera']), this['absolutePosition']['subtract'](_0x5541cf['globalPosition'])['length'](); } , _0x132f4e['prototype']['clone'] = function(_0x19dbf6, _0x2fc16c, _0x10c5c1) { var _0x51e875 = this , _0x11289b = _0x254cec['a']['Clone'](function() { return new _0x132f4e(_0x19dbf6,_0x51e875['getScene']()); }, this); if (_0x11289b['name'] = _0x19dbf6, _0x11289b['id'] = _0x19dbf6, _0x2fc16c && (_0x11289b['parent'] = _0x2fc16c), !_0x10c5c1) for (var _0x511ab9 = this['getDescendants'](!0x0), _0x306427 = 0x0; _0x306427 < _0x511ab9['length']; _0x306427++) { var _0x4f41ed = _0x511ab9[_0x306427]; _0x4f41ed['clone'] && _0x4f41ed['clone'](_0x19dbf6 + '.' + _0x4f41ed['name'], _0x11289b); } return _0x11289b; } , _0x132f4e['prototype']['serialize'] = function(_0x29216d) { var _0x411140 = _0x254cec['a']['Serialize'](this, _0x29216d); return _0x411140['type'] = this['getClassName'](), this['parent'] && (_0x411140['parentId'] = this['parent']['id']), _0x411140['localMatrix'] = this['getPivotMatrix']()['asArray'](), _0x411140['isEnabled'] = this['isEnabled'](), this['parent'] && (_0x411140['parentId'] = this['parent']['id']), _0x411140; } , _0x132f4e['Parse'] = function(_0x4a537e, _0x1d7ce1, _0x2deb9a) { var _0x342ea5 = _0x254cec['a']['Parse'](function() { return new _0x132f4e(_0x4a537e['name'],_0x1d7ce1); }, _0x4a537e, _0x1d7ce1, _0x2deb9a); return _0x4a537e['localMatrix'] ? _0x342ea5['setPreTransformMatrix'](_0x59a88c['j']['FromArray'](_0x4a537e['localMatrix'])) : _0x4a537e['pivotMatrix'] && _0x342ea5['setPivotMatrix'](_0x59a88c['j']['FromArray'](_0x4a537e['pivotMatrix'])), _0x342ea5['setEnabled'](_0x4a537e['isEnabled']), _0x4a537e['parentId'] && (_0x342ea5['_waitingParentId'] = _0x4a537e['parentId']), _0x342ea5; } , _0x132f4e['prototype']['getChildTransformNodes'] = function(_0x26de1a, _0x42d446) { var _0xb50b93 = []; return this['_getDescendants'](_0xb50b93, _0x26de1a, function(_0x5221ad) { return (!_0x42d446 || _0x42d446(_0x5221ad)) && _0x5221ad instanceof _0x132f4e; }), _0xb50b93; } , _0x132f4e['prototype']['dispose'] = function(_0x54777d, _0x3d9d00) { if (void 0x0 === _0x3d9d00 && (_0x3d9d00 = !0x1), this['getScene']()['stopAnimation'](this), this['getScene']()['removeTransformNode'](this), this['onAfterWorldMatrixUpdateObservable']['clear'](), _0x54777d) for (var _0x4b5e68 = 0x0, _0x53ea93 = this['getChildTransformNodes'](!0x0); _0x4b5e68 < _0x53ea93['length']; _0x4b5e68++) { var _0xd6c4ea = _0x53ea93[_0x4b5e68]; _0xd6c4ea['parent'] = null, _0xd6c4ea['computeWorldMatrix'](!0x0); } _0x1879c2['prototype']['dispose']['call'](this, _0x54777d, _0x3d9d00); } , _0x132f4e['BILLBOARDMODE_NONE'] = 0x0, _0x132f4e['BILLBOARDMODE_X'] = 0x1, _0x132f4e['BILLBOARDMODE_Y'] = 0x2, _0x132f4e['BILLBOARDMODE_Z'] = 0x4, _0x132f4e['BILLBOARDMODE_ALL'] = 0x7, _0x132f4e['_lookAtVectorCache'] = new _0x59a88c['x'](0x0,0x0,0x0), _0x132f4e['_rotationAxisCache'] = new _0x59a88c['q'](), _0x42cf5e['c']([Object(_0x254cec['o'])('position')], _0x132f4e['prototype'], '_position', void 0x0), _0x42cf5e['c']([Object(_0x254cec['o'])('rotation')], _0x132f4e['prototype'], '_rotation', void 0x0), _0x42cf5e['c']([Object(_0x254cec['l'])('rotationQuaternion')], _0x132f4e['prototype'], '_rotationQuaternion', void 0x0), _0x42cf5e['c']([Object(_0x254cec['o'])('scaling')], _0x132f4e['prototype'], '_scaling', void 0x0), _0x42cf5e['c']([Object(_0x254cec['c'])('billboardMode')], _0x132f4e['prototype'], '_billboardMode', void 0x0), _0x42cf5e['c']([Object(_0x254cec['c'])()], _0x132f4e['prototype'], 'scalingDeterminant', void 0x0), _0x42cf5e['c']([Object(_0x254cec['c'])('infiniteDistance')], _0x132f4e['prototype'], '_infiniteDistance', void 0x0), _0x42cf5e['c']([Object(_0x254cec['c'])()], _0x132f4e['prototype'], 'ignoreNonUniformScaling', void 0x0), _0x42cf5e['c']([Object(_0x254cec['c'])()], _0x132f4e['prototype'], 'reIntegrateRotationIntoRotationQuaternion', void 0x0), _0x132f4e; }(_0x107a30(0x19)['a']); } , function(_0x4c5262, _0x11d223, _0x500235) { 'use strict'; _0x500235['d'](_0x11d223, 'a', function() { return _0x50a844; }); var _0x13be2f = _0x500235(0x22) , _0x1708cc = _0x500235(0x0) , _0x79c6ad = _0x500235(0x3) , _0x5ed105 = _0x500235(0x4d) , _0x2434a1 = _0x500235(0x52) , _0xbfba26 = { 'min': 0x0, 'max': 0x0 } , _0xef7c64 = { 'min': 0x0, 'max': 0x0 } , _0x13c222 = function(_0x207b79, _0x278fbc, _0x3511dd) { var _0x4e1ee2 = _0x1708cc['x']['Dot'](_0x278fbc['centerWorld'], _0x207b79) , _0x45b8bc = Math['abs'](_0x1708cc['x']['Dot'](_0x278fbc['directions'][0x0], _0x207b79)) * _0x278fbc['extendSize']['x'] + Math['abs'](_0x1708cc['x']['Dot'](_0x278fbc['directions'][0x1], _0x207b79)) * _0x278fbc['extendSize']['y'] + Math['abs'](_0x1708cc['x']['Dot'](_0x278fbc['directions'][0x2], _0x207b79)) * _0x278fbc['extendSize']['z']; _0x3511dd['min'] = _0x4e1ee2 - _0x45b8bc, _0x3511dd['max'] = _0x4e1ee2 + _0x45b8bc; } , _0x3bac79 = function(_0xd564bf, _0x50b707, _0xc2ff55) { return _0x13c222(_0xd564bf, _0x50b707, _0xbfba26), _0x13c222(_0xd564bf, _0xc2ff55, _0xef7c64), !(_0xbfba26['min'] > _0xef7c64['max'] || _0xef7c64['min'] > _0xbfba26['max']); } , _0x50a844 = function() { function _0x1b0dc5(_0x1acf58, _0x132920, _0x145016) { this['_isLocked'] = !0x1, this['boundingBox'] = new _0x5ed105['a'](_0x1acf58,_0x132920,_0x145016), this['boundingSphere'] = new _0x2434a1['a'](_0x1acf58,_0x132920,_0x145016); } return _0x1b0dc5['prototype']['reConstruct'] = function(_0x127b3c, _0x5d3bd8, _0x45eb95) { this['boundingBox']['reConstruct'](_0x127b3c, _0x5d3bd8, _0x45eb95), this['boundingSphere']['reConstruct'](_0x127b3c, _0x5d3bd8, _0x45eb95); } , Object['defineProperty'](_0x1b0dc5['prototype'], 'minimum', { 'get': function() { return this['boundingBox']['minimum']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1b0dc5['prototype'], 'maximum', { 'get': function() { return this['boundingBox']['maximum']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1b0dc5['prototype'], 'isLocked', { 'get': function() { return this['_isLocked']; }, 'set': function(_0x2a618d) { this['_isLocked'] = _0x2a618d; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1b0dc5['prototype']['update'] = function(_0x5b4d42) { this['_isLocked'] || (this['boundingBox']['_update'](_0x5b4d42), this['boundingSphere']['_update'](_0x5b4d42)); } , _0x1b0dc5['prototype']['centerOn'] = function(_0x14efc7, _0x3ff0e9) { var _0x1a0f9d = _0x1b0dc5['TmpVector3'][0x0]['copyFrom'](_0x14efc7)['subtractInPlace'](_0x3ff0e9) , _0x3ed975 = _0x1b0dc5['TmpVector3'][0x1]['copyFrom'](_0x14efc7)['addInPlace'](_0x3ff0e9); return this['boundingBox']['reConstruct'](_0x1a0f9d, _0x3ed975, this['boundingBox']['getWorldMatrix']()), this['boundingSphere']['reConstruct'](_0x1a0f9d, _0x3ed975, this['boundingBox']['getWorldMatrix']()), this; } , _0x1b0dc5['prototype']['scale'] = function(_0x3093bf) { return this['boundingBox']['scale'](_0x3093bf), this['boundingSphere']['scale'](_0x3093bf), this; } , _0x1b0dc5['prototype']['isInFrustum'] = function(_0xf22bff, _0x5914fd) { return void 0x0 === _0x5914fd && (_0x5914fd = _0x79c6ad['a']['MESHES_CULLINGSTRATEGY_STANDARD']), !(_0x5914fd !== _0x79c6ad['a']['MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION'] && _0x5914fd !== _0x79c6ad['a']['MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY'] || !this['boundingSphere']['isCenterInFrustum'](_0xf22bff)) || !!this['boundingSphere']['isInFrustum'](_0xf22bff) && (!(_0x5914fd !== _0x79c6ad['a']['MESHES_CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY'] && _0x5914fd !== _0x79c6ad['a']['MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY']) || this['boundingBox']['isInFrustum'](_0xf22bff)); } , Object['defineProperty'](_0x1b0dc5['prototype'], 'diagonalLength', { 'get': function() { var _0x28ea9a = this['boundingBox']; return _0x28ea9a['maximumWorld']['subtractToRef'](_0x28ea9a['minimumWorld'], _0x1b0dc5['TmpVector3'][0x0])['length'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1b0dc5['prototype']['isCompletelyInFrustum'] = function(_0x2a293c) { return this['boundingBox']['isCompletelyInFrustum'](_0x2a293c); } , _0x1b0dc5['prototype']['_checkCollision'] = function(_0x4a9884) { return _0x4a9884['_canDoCollision'](this['boundingSphere']['centerWorld'], this['boundingSphere']['radiusWorld'], this['boundingBox']['minimumWorld'], this['boundingBox']['maximumWorld']); } , _0x1b0dc5['prototype']['intersectsPoint'] = function(_0x5072d3) { return !!this['boundingSphere']['centerWorld'] && (!!this['boundingSphere']['intersectsPoint'](_0x5072d3) && !!this['boundingBox']['intersectsPoint'](_0x5072d3)); } , _0x1b0dc5['prototype']['intersects'] = function(_0x264af0, _0x4e0ff1) { if (!_0x2434a1['a']['Intersects'](this['boundingSphere'], _0x264af0['boundingSphere'])) return !0x1; if (!_0x5ed105['a']['Intersects'](this['boundingBox'], _0x264af0['boundingBox'])) return !0x1; if (!_0x4e0ff1) return !0x0; var _0x29752f = this['boundingBox'] , _0x50adc1 = _0x264af0['boundingBox']; return !!_0x3bac79(_0x29752f['directions'][0x0], _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x29752f['directions'][0x1], _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x29752f['directions'][0x2], _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x50adc1['directions'][0x0], _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x50adc1['directions'][0x1], _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x50adc1['directions'][0x2], _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x1708cc['x']['Cross'](_0x29752f['directions'][0x0], _0x50adc1['directions'][0x0]), _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x1708cc['x']['Cross'](_0x29752f['directions'][0x0], _0x50adc1['directions'][0x1]), _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x1708cc['x']['Cross'](_0x29752f['directions'][0x0], _0x50adc1['directions'][0x2]), _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x1708cc['x']['Cross'](_0x29752f['directions'][0x1], _0x50adc1['directions'][0x0]), _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x1708cc['x']['Cross'](_0x29752f['directions'][0x1], _0x50adc1['directions'][0x1]), _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x1708cc['x']['Cross'](_0x29752f['directions'][0x1], _0x50adc1['directions'][0x2]), _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x1708cc['x']['Cross'](_0x29752f['directions'][0x2], _0x50adc1['directions'][0x0]), _0x29752f, _0x50adc1) && (!!_0x3bac79(_0x1708cc['x']['Cross'](_0x29752f['directions'][0x2], _0x50adc1['directions'][0x1]), _0x29752f, _0x50adc1) && !!_0x3bac79(_0x1708cc['x']['Cross'](_0x29752f['directions'][0x2], _0x50adc1['directions'][0x2]), _0x29752f, _0x50adc1)))))))))))))); } , _0x1b0dc5['TmpVector3'] = _0x13be2f['a']['BuildArray'](0x2, _0x1708cc['x']['Zero']), _0x1b0dc5; }(); } , function(_0x2d99be, _0x9697e7, _0x1e566b) { 'use strict'; _0x1e566b['d'](_0x9697e7, 'a', function() { return _0xbb274a; }); var _0x267279 = _0x1e566b(0x1) , _0x5e9062 = _0x1e566b(0x2) , _0x1ae246 = _0x1e566b(0x8) , _0x546daf = _0x1e566b(0x9) , _0x599c28 = _0x1e566b(0x47) , _0x5bcbe6 = _0x1e566b(0x0) , _0xa55166 = _0x1e566b(0x17) , _0x1b15ac = _0x1e566b(0x3) , _0xbb274a = function() { function _0x2ff514(_0x4d7277) { this['metadata'] = null, this['reservedDataStore'] = null, this['_hasAlpha'] = !0x1, this['getAlphaFromRGB'] = !0x1, this['level'] = 0x1, this['coordinatesIndex'] = 0x0, this['_coordinatesMode'] = _0x1b15ac['a']['TEXTURE_EXPLICIT_MODE'], this['wrapU'] = _0x1b15ac['a']['TEXTURE_WRAP_ADDRESSMODE'], this['wrapV'] = _0x1b15ac['a']['TEXTURE_WRAP_ADDRESSMODE'], this['wrapR'] = _0x1b15ac['a']['TEXTURE_WRAP_ADDRESSMODE'], this['anisotropicFilteringLevel'] = _0x2ff514['DEFAULT_ANISOTROPIC_FILTERING_LEVEL'], this['gammaSpace'] = !0x0, this['invertZ'] = !0x1, this['lodLevelInAlpha'] = !0x1, this['isRenderTarget'] = !0x1, this['animations'] = new Array(), this['onDisposeObservable'] = new _0x1ae246['c'](), this['_onDisposeObserver'] = null, this['delayLoadState'] = _0x1b15ac['a']['DELAYLOADSTATE_NONE'], this['_scene'] = null, this['_texture'] = null, this['_uid'] = null, this['_cachedSize'] = _0x5bcbe6['r']['Zero'](), this['_scene'] = _0x4d7277 || _0xa55166['a']['LastCreatedScene'], this['_scene'] && (this['uniqueId'] = this['_scene']['getUniqueId'](), this['_scene']['addTexture'](this)), this['_uid'] = null; } return Object['defineProperty'](_0x2ff514['prototype'], 'hasAlpha', { 'get': function() { return this['_hasAlpha']; }, 'set': function(_0x12634d) { this['_hasAlpha'] !== _0x12634d && (this['_hasAlpha'] = _0x12634d, this['_scene'] && this['_scene']['markAllMaterialsAsDirty'](_0x1b15ac['a']['MATERIAL_TextureDirtyFlag'] | _0x1b15ac['a']['MATERIAL_MiscDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], 'coordinatesMode', { 'get': function() { return this['_coordinatesMode']; }, 'set': function(_0x50baf8) { this['_coordinatesMode'] !== _0x50baf8 && (this['_coordinatesMode'] = _0x50baf8, this['_scene'] && this['_scene']['markAllMaterialsAsDirty'](_0x1b15ac['a']['MATERIAL_TextureDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], 'isCube', { 'get': function() { return !!this['_texture'] && this['_texture']['isCube']; }, 'set': function(_0x5c3cf3) { this['_texture'] && (this['_texture']['isCube'] = _0x5c3cf3); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], 'is3D', { 'get': function() { return !!this['_texture'] && this['_texture']['is3D']; }, 'set': function(_0x5db6ed) { this['_texture'] && (this['_texture']['is3D'] = _0x5db6ed); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], 'isRGBD', { 'get': function() { return null != this['_texture'] && this['_texture']['_isRGBD']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], 'noMipmap', { 'get': function() { return !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], 'lodGenerationOffset', { 'get': function() { return this['_texture'] ? this['_texture']['_lodGenerationOffset'] : 0x0; }, 'set': function(_0x5c44fe) { this['_texture'] && (this['_texture']['_lodGenerationOffset'] = _0x5c44fe); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], 'lodGenerationScale', { 'get': function() { return this['_texture'] ? this['_texture']['_lodGenerationScale'] : 0x0; }, 'set': function(_0x474845) { this['_texture'] && (this['_texture']['_lodGenerationScale'] = _0x474845); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], 'uid', { 'get': function() { return this['_uid'] || (this['_uid'] = _0x546daf['h']['RandomId']()), this['_uid']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2ff514['prototype']['toString'] = function() { return this['name']; } , _0x2ff514['prototype']['getClassName'] = function() { return 'BaseTexture'; } , Object['defineProperty'](_0x2ff514['prototype'], 'onDispose', { 'set': function(_0x5ee32e) { this['_onDisposeObserver'] && this['onDisposeObservable']['remove'](this['_onDisposeObserver']), this['_onDisposeObserver'] = this['onDisposeObservable']['add'](_0x5ee32e); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], 'isBlocking', { 'get': function() { return !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2ff514['prototype']['getScene'] = function() { return this['_scene']; } , _0x2ff514['prototype']['getTextureMatrix'] = function() { return _0x5bcbe6['j']['IdentityReadOnly']; } , _0x2ff514['prototype']['getReflectionTextureMatrix'] = function() { return _0x5bcbe6['j']['IdentityReadOnly']; } , _0x2ff514['prototype']['getInternalTexture'] = function() { return this['_texture']; } , _0x2ff514['prototype']['isReadyOrNotBlocking'] = function() { return !this['isBlocking'] || this['isReady'](); } , _0x2ff514['prototype']['isReady'] = function() { return this['delayLoadState'] === _0x1b15ac['a']['DELAYLOADSTATE_NOTLOADED'] ? (this['delayLoad'](), !0x1) : !!this['_texture'] && this['_texture']['isReady']; } , _0x2ff514['prototype']['getSize'] = function() { if (this['_texture']) { if (this['_texture']['width']) return this['_cachedSize']['width'] = this['_texture']['width'], this['_cachedSize']['height'] = this['_texture']['height'], this['_cachedSize']; if (this['_texture']['_size']) return this['_cachedSize']['width'] = this['_texture']['_size'], this['_cachedSize']['height'] = this['_texture']['_size'], this['_cachedSize']; } return this['_cachedSize']; } , _0x2ff514['prototype']['getBaseSize'] = function() { return this['isReady']() && this['_texture'] ? this['_texture']['_size'] ? new _0x5bcbe6['r'](this['_texture']['_size'],this['_texture']['_size']) : new _0x5bcbe6['r'](this['_texture']['baseWidth'],this['_texture']['baseHeight']) : _0x5bcbe6['r']['Zero'](); } , _0x2ff514['prototype']['updateSamplingMode'] = function(_0x8ef6f8) { if (this['_texture']) { var _0x5c3cde = this['getScene'](); _0x5c3cde && _0x5c3cde['getEngine']()['updateTextureSamplingMode'](_0x8ef6f8, this['_texture']); } } , _0x2ff514['prototype']['scale'] = function(_0x4973dc) {} , Object['defineProperty'](_0x2ff514['prototype'], 'canRescale', { 'get': function() { return !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2ff514['prototype']['_getFromCache'] = function(_0x34670c, _0x2e5921, _0x30528c, _0x3baa08) { if (!this['_scene']) return null; for (var _0x1dc419 = this['_scene']['getEngine']()['getLoadedTexturesCache'](), _0x1148ae = 0x0; _0x1148ae < _0x1dc419['length']; _0x1148ae++) { var _0x196cb3 = _0x1dc419[_0x1148ae]; if (!(void 0x0 !== _0x3baa08 && _0x3baa08 !== _0x196cb3['invertY'] || _0x196cb3['url'] !== _0x34670c || _0x196cb3['generateMipMaps'] !== !_0x2e5921 || _0x30528c && _0x30528c !== _0x196cb3['samplingMode'])) return _0x196cb3['incrementReferences'](), _0x196cb3; } return null; } , _0x2ff514['prototype']['_rebuild'] = function() {} , _0x2ff514['prototype']['delayLoad'] = function() {} , _0x2ff514['prototype']['clone'] = function() { return null; } , Object['defineProperty'](_0x2ff514['prototype'], 'textureType', { 'get': function() { return this['_texture'] && void 0x0 !== this['_texture']['type'] ? this['_texture']['type'] : _0x1b15ac['a']['TEXTURETYPE_UNSIGNED_INT']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], 'textureFormat', { 'get': function() { return this['_texture'] && void 0x0 !== this['_texture']['format'] ? this['_texture']['format'] : _0x1b15ac['a']['TEXTUREFORMAT_RGBA']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2ff514['prototype']['readPixels'] = function(_0x772834, _0x3bf340, _0x9e99ea) { if (void 0x0 === _0x772834 && (_0x772834 = 0x0), void 0x0 === _0x3bf340 && (_0x3bf340 = 0x0), void 0x0 === _0x9e99ea && (_0x9e99ea = null), !this['_texture']) return null; var _0x46a92e = this['getSize']() , _0x4e3f45 = _0x46a92e['width'] , _0x3b2327 = _0x46a92e['height'] , _0x536fa7 = this['getScene'](); if (!_0x536fa7) return null; var _0x146310 = _0x536fa7['getEngine'](); return 0x0 != _0x3bf340 && (_0x4e3f45 /= Math['pow'](0x2, _0x3bf340), _0x3b2327 /= Math['pow'](0x2, _0x3bf340), _0x4e3f45 = Math['round'](_0x4e3f45), _0x3b2327 = Math['round'](_0x3b2327)), this['_texture']['isCube'] ? _0x146310['_readTexturePixels'](this['_texture'], _0x4e3f45, _0x3b2327, _0x772834, _0x3bf340, _0x9e99ea) : _0x146310['_readTexturePixels'](this['_texture'], _0x4e3f45, _0x3b2327, -0x1, _0x3bf340, _0x9e99ea); } , _0x2ff514['prototype']['releaseInternalTexture'] = function() { this['_texture'] && (this['_texture']['dispose'](), this['_texture'] = null); } , Object['defineProperty'](_0x2ff514['prototype'], 'sphericalPolynomial', { 'get': function() { return this['_texture'] && _0x599c28['a'] && this['isReady']() ? (this['_texture']['_sphericalPolynomial'] || (this['_texture']['_sphericalPolynomial'] = _0x599c28['a']['ConvertCubeMapTextureToSphericalPolynomial'](this)), this['_texture']['_sphericalPolynomial']) : null; }, 'set': function(_0x4d00d5) { this['_texture'] && (this['_texture']['_sphericalPolynomial'] = _0x4d00d5); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], '_lodTextureHigh', { 'get': function() { return this['_texture'] ? this['_texture']['_lodTextureHigh'] : null; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], '_lodTextureMid', { 'get': function() { return this['_texture'] ? this['_texture']['_lodTextureMid'] : null; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ff514['prototype'], '_lodTextureLow', { 'get': function() { return this['_texture'] ? this['_texture']['_lodTextureLow'] : null; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2ff514['prototype']['dispose'] = function() { if (this['_scene']) { this['_scene']['stopAnimation'] && this['_scene']['stopAnimation'](this), this['_scene']['_removePendingData'](this); var _0x2a498c = this['_scene']['textures']['indexOf'](this); _0x2a498c >= 0x0 && this['_scene']['textures']['splice'](_0x2a498c, 0x1), this['_scene']['onTextureRemovedObservable']['notifyObservers'](this), void 0x0 !== this['_texture'] && (this['releaseInternalTexture'](), this['onDisposeObservable']['notifyObservers'](this), this['onDisposeObservable']['clear']()); } } , _0x2ff514['prototype']['serialize'] = function() { if (!this['name']) return null; var _0x3ee5b8 = _0x5e9062['a']['Serialize'](this); return _0x5e9062['a']['AppendSerializedAnimations'](this, _0x3ee5b8), _0x3ee5b8; } , _0x2ff514['WhenAllReady'] = function(_0x127bf3, _0x1c93cb) { var _0x2f987a = _0x127bf3['length']; if (0x0 !== _0x2f987a) for (var _0x4680b3, _0x56bd46, _0x2a35ec = function() { if ((_0x4680b3 = _0x127bf3[_0x29ebf2])['isReady']()) 0x0 == --_0x2f987a && _0x1c93cb(); else { _0x56bd46 = _0x4680b3['onLoadObservable']; var _0x25ea91 = function() { _0x56bd46['removeCallback'](_0x25ea91), 0x0 == --_0x2f987a && _0x1c93cb(); }; _0x56bd46['add'](_0x25ea91); } }, _0x29ebf2 = 0x0; _0x29ebf2 < _0x127bf3['length']; _0x29ebf2++) _0x2a35ec(); else _0x1c93cb(); } , _0x2ff514['DEFAULT_ANISOTROPIC_FILTERING_LEVEL'] = 0x4, _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'uniqueId', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'name', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'metadata', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])('hasAlpha')], _0x2ff514['prototype'], '_hasAlpha', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'getAlphaFromRGB', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'level', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'coordinatesIndex', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])('coordinatesMode')], _0x2ff514['prototype'], '_coordinatesMode', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'wrapU', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'wrapV', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'wrapR', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'anisotropicFilteringLevel', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'isCube', null), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'is3D', null), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'gammaSpace', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'invertZ', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'lodLevelInAlpha', void 0x0), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'lodGenerationOffset', null), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'lodGenerationScale', null), _0x267279['c']([Object(_0x5e9062['c'])()], _0x2ff514['prototype'], 'isRenderTarget', void 0x0), _0x2ff514; }(); } , function(_0x1e2453, _0x3a082e, _0x2fde8b) { 'use strict'; _0x2fde8b['d'](_0x3a082e, 'a', function() { return _0x424715; }); var _0x3570a3 = _0x2fde8b(0x0) , _0x424715 = function() { function _0x47bf6c() {} return _0x47bf6c['_RemoveAndStorePivotPoint'] = function(_0x51fb2b) { _0x51fb2b && 0x0 === _0x47bf6c['_PivotCached'] && (_0x51fb2b['getPivotPointToRef'](_0x47bf6c['_OldPivotPoint']), _0x47bf6c['_OldPivotPoint']['equalsToFloats'](0x0, 0x0, 0x0) || (_0x51fb2b['setPivotMatrix'](_0x3570a3['j']['IdentityReadOnly']), _0x47bf6c['_OldPivotPoint']['subtractToRef'](_0x51fb2b['getPivotPoint'](), _0x47bf6c['_PivotTranslation']), _0x47bf6c['_PivotTmpVector']['copyFromFloats'](0x1, 0x1, 0x1), _0x47bf6c['_PivotTmpVector']['subtractInPlace'](_0x51fb2b['scaling']), _0x47bf6c['_PivotTmpVector']['multiplyInPlace'](_0x47bf6c['_PivotTranslation']), _0x51fb2b['position']['addInPlace'](_0x47bf6c['_PivotTmpVector']))), _0x47bf6c['_PivotCached']++; } , _0x47bf6c['_RestorePivotPoint'] = function(_0x3e5bf3) { _0x3e5bf3 && !_0x47bf6c['_OldPivotPoint']['equalsToFloats'](0x0, 0x0, 0x0) && 0x1 === _0x47bf6c['_PivotCached'] && (_0x3e5bf3['setPivotPoint'](_0x47bf6c['_OldPivotPoint']), _0x47bf6c['_PivotTmpVector']['copyFromFloats'](0x1, 0x1, 0x1), _0x47bf6c['_PivotTmpVector']['subtractInPlace'](_0x3e5bf3['scaling']), _0x47bf6c['_PivotTmpVector']['multiplyInPlace'](_0x47bf6c['_PivotTranslation']), _0x3e5bf3['position']['subtractInPlace'](_0x47bf6c['_PivotTmpVector'])), this['_PivotCached']--; } , _0x47bf6c['_PivotCached'] = 0x0, _0x47bf6c['_OldPivotPoint'] = new _0x3570a3['x'](), _0x47bf6c['_PivotTranslation'] = new _0x3570a3['x'](), _0x47bf6c['_PivotTmpVector'] = new _0x3570a3['x'](), _0x47bf6c; }(); } , function(_0x563187, _0x1c121c, _0x48b55f) { 'use strict'; _0x48b55f['d'](_0x1c121c, 'a', function() { return _0x19ac27; }); var _0x511ad8 = _0x48b55f(0x0) , _0x119551 = _0x48b55f(0xb) , _0x45e08a = _0x48b55f(0xd); _0x45e08a['a']['CreateSphere'] = function(_0x63029b) { for (var _0x151cbd = _0x63029b['segments'] || 0x20, _0x4e62a7 = _0x63029b['diameterX'] || _0x63029b['diameter'] || 0x1, _0x4a4643 = _0x63029b['diameterY'] || _0x63029b['diameter'] || 0x1, _0x3b400b = _0x63029b['diameterZ'] || _0x63029b['diameter'] || 0x1, _0x2c100a = _0x63029b['arc'] && (_0x63029b['arc'] <= 0x0 || _0x63029b['arc'] > 0x1) ? 0x1 : _0x63029b['arc'] || 0x1, _0x125207 = _0x63029b['slice'] && _0x63029b['slice'] <= 0x0 ? 0x1 : _0x63029b['slice'] || 0x1, _0x2f14f7 = 0x0 === _0x63029b['sideOrientation'] ? 0x0 : _0x63029b['sideOrientation'] || _0x45e08a['a']['DEFAULTSIDE'], _0x1865b3 = new _0x511ad8['x'](_0x4e62a7 / 0x2,_0x4a4643 / 0x2,_0x3b400b / 0x2), _0x447ed5 = 0x2 + _0x151cbd, _0x378cb7 = 0x2 * _0x447ed5, _0x346845 = [], _0x4e470a = [], _0x116149 = [], _0x30cd8a = [], _0x12f241 = 0x0; _0x12f241 <= _0x447ed5; _0x12f241++) { for (var _0x530d8b = _0x12f241 / _0x447ed5, _0x5eef6f = _0x530d8b * Math['PI'] * _0x125207, _0x5bf2e4 = 0x0; _0x5bf2e4 <= _0x378cb7; _0x5bf2e4++) { var _0x2e4d58 = _0x5bf2e4 / _0x378cb7 , _0xebb00 = _0x2e4d58 * Math['PI'] * 0x2 * _0x2c100a , _0x5a264e = _0x511ad8['j']['RotationZ'](-_0x5eef6f) , _0x1e906c = _0x511ad8['j']['RotationY'](_0xebb00) , _0x2a1bd0 = _0x511ad8['x']['TransformCoordinates'](_0x511ad8['x']['Up'](), _0x5a264e) , _0x266005 = _0x511ad8['x']['TransformCoordinates'](_0x2a1bd0, _0x1e906c) , _0x4844f5 = _0x266005['multiply'](_0x1865b3) , _0xe33dd3 = _0x266005['divide'](_0x1865b3)['normalize'](); _0x4e470a['push'](_0x4844f5['x'], _0x4844f5['y'], _0x4844f5['z']), _0x116149['push'](_0xe33dd3['x'], _0xe33dd3['y'], _0xe33dd3['z']), _0x30cd8a['push'](_0x2e4d58, _0x530d8b); } if (_0x12f241 > 0x0) for (var _0x24a89c = _0x4e470a['length'] / 0x3, _0x1ad732 = _0x24a89c - 0x2 * (_0x378cb7 + 0x1); _0x1ad732 + _0x378cb7 + 0x2 < _0x24a89c; _0x1ad732++) _0x346845['push'](_0x1ad732), _0x346845['push'](_0x1ad732 + 0x1), _0x346845['push'](_0x1ad732 + _0x378cb7 + 0x1), _0x346845['push'](_0x1ad732 + _0x378cb7 + 0x1), _0x346845['push'](_0x1ad732 + 0x1), _0x346845['push'](_0x1ad732 + _0x378cb7 + 0x2); } _0x45e08a['a']['_ComputeSides'](_0x2f14f7, _0x4e470a, _0x346845, _0x116149, _0x30cd8a, _0x63029b['frontUVs'], _0x63029b['backUVs']); var _0x14846c = new _0x45e08a['a'](); return _0x14846c['indices'] = _0x346845, _0x14846c['positions'] = _0x4e470a, _0x14846c['normals'] = _0x116149, _0x14846c['uvs'] = _0x30cd8a, _0x14846c; } , _0x119551['a']['CreateSphere'] = function(_0x595323, _0x32e7ba, _0x3888bf, _0x3ffa5c, _0x3cb60c, _0x5ccf9c) { var _0x508019 = { 'segments': _0x32e7ba, 'diameterX': _0x3888bf, 'diameterY': _0x3888bf, 'diameterZ': _0x3888bf, 'sideOrientation': _0x5ccf9c, 'updatable': _0x3cb60c }; return _0x19ac27['CreateSphere'](_0x595323, _0x508019, _0x3ffa5c); } ; var _0x19ac27 = function() { function _0x1fa644() {} return _0x1fa644['CreateSphere'] = function(_0x455104, _0x3fdac6, _0x314edd) { var _0x410d57 = new _0x119551['a'](_0x455104,_0x314edd); return _0x3fdac6['sideOrientation'] = _0x119551['a']['_GetDefaultSideOrientation'](_0x3fdac6['sideOrientation']), _0x410d57['_originalBuilderSideOrientation'] = _0x3fdac6['sideOrientation'], _0x45e08a['a']['CreateSphere'](_0x3fdac6)['applyToMesh'](_0x410d57, _0x3fdac6['updatable']), _0x410d57; } , _0x1fa644; }(); } , function(_0x582f06, _0x15907e, _0x5c188e) { 'use strict'; _0x5c188e['d'](_0x15907e, 'a', function() { return _0x1a849b; }); var _0x18c785 = _0x5c188e(0x23) , _0x1a849b = function() { function _0x7b3d15() {} return Object['defineProperty'](_0x7b3d15, 'Now', { 'get': function() { return _0x18c785['a']['IsWindowObjectExist']() && window['performance'] && window['performance']['now'] ? window['performance']['now']() : Date['now'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x7b3d15; }(); } , function(_0x149e5d, _0x478fea, _0x570a8d) { 'use strict'; _0x570a8d['d'](_0x478fea, 'a', function() { return _0x4adf32; }); var _0x3f7dae = _0x570a8d(0x0) , _0x4330f7 = _0x570a8d(0xb) , _0x3ef48e = _0x570a8d(0x29) , _0x4adf32 = function() { function _0x2336e1(_0x11c9f1) { var _0x28f8f8 = this; void 0x0 === _0x11c9f1 && (_0x11c9f1 = _0x3ef48e['a']['DefaultUtilityLayer']), this['gizmoLayer'] = _0x11c9f1, this['_attachedMesh'] = null, this['scaleRatio'] = 0x1, this['_customMeshSet'] = !0x1, this['updateGizmoRotationToMatchAttachedMesh'] = !0x0, this['updateGizmoPositionToMatchAttachedMesh'] = !0x0, this['_updateScale'] = !0x0, this['_interactionsEnabled'] = !0x0, this['_tempVector'] = new _0x3f7dae['x'](), this['_rootMesh'] = new _0x4330f7['a']('gizmoRootNode',_0x11c9f1['utilityLayerScene']), this['_rootMesh']['rotationQuaternion'] = _0x3f7dae['q']['Identity'](), this['_beforeRenderObserver'] = this['gizmoLayer']['utilityLayerScene']['onBeforeRenderObservable']['add'](function() { _0x28f8f8['_update'](); }); } return Object['defineProperty'](_0x2336e1['prototype'], 'attachedMesh', { 'get': function() { return this['_attachedMesh']; }, 'set': function(_0x1ba47b) { this['_attachedMesh'] = _0x1ba47b, this['_rootMesh']['setEnabled'](!!_0x1ba47b), this['_attachedMeshChanged'](_0x1ba47b); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2336e1['prototype']['setCustomMesh'] = function(_0x533c90) { if (_0x533c90['getScene']() != this['gizmoLayer']['utilityLayerScene']) throw 'When\x20setting\x20a\x20custom\x20mesh\x20on\x20a\x20gizmo,\x20the\x20custom\x20meshes\x20scene\x20must\x20be\x20the\x20same\x20as\x20the\x20gizmos\x20(eg.\x20gizmo.gizmoLayer.utilityLayerScene)'; this['_rootMesh']['getChildMeshes']()['forEach'](function(_0x20cce8) { _0x20cce8['dispose'](); }), _0x533c90['parent'] = this['_rootMesh'], this['_customMeshSet'] = !0x0; } , _0x2336e1['prototype']['_attachedMeshChanged'] = function(_0x28dba0) {} , _0x2336e1['prototype']['_update'] = function() { if (this['attachedMesh']) { var _0x51ef46 = this['attachedMesh']['_effectiveMesh'] || this['attachedMesh']; if (this['updateGizmoPositionToMatchAttachedMesh'] && this['_rootMesh']['position']['copyFrom'](_0x51ef46['absolutePosition']), this['updateGizmoRotationToMatchAttachedMesh'] ? _0x51ef46['getWorldMatrix']()['decompose'](void 0x0, this['_rootMesh']['rotationQuaternion']) : this['_rootMesh']['rotationQuaternion']['set'](0x0, 0x0, 0x0, 0x1), this['_updateScale']) { var _0x5428dd = this['gizmoLayer']['utilityLayerScene']['activeCamera'] , _0xc6022a = _0x5428dd['globalPosition']; _0x5428dd['devicePosition'] && (_0xc6022a = _0x5428dd['devicePosition']), this['_rootMesh']['position']['subtractToRef'](_0xc6022a, this['_tempVector']); var _0x86f0b7 = this['_tempVector']['length']() * this['scaleRatio']; this['_rootMesh']['scaling']['set'](_0x86f0b7, _0x86f0b7, _0x86f0b7), _0x51ef46['_getWorldMatrixDeterminant']() < 0x0 && (this['_rootMesh']['scaling']['y'] *= -0x1); } } } , _0x2336e1['prototype']['dispose'] = function() { this['_rootMesh']['dispose'](), this['_beforeRenderObserver'] && this['gizmoLayer']['utilityLayerScene']['onBeforeRenderObservable']['remove'](this['_beforeRenderObserver']); } , _0x2336e1; }(); } , function(_0x398a90, _0x18f043, _0x1e1b19) { 'use strict'; _0x1e1b19['d'](_0x18f043, 'a', function() { return _0x21fae5; }), _0x1e1b19['d'](_0x18f043, 'b', function() { return _0x2392cf; }); var _0x2ae616 = _0x1e1b19(0x1) , _0x2f6752 = _0x1e1b19(0x9) , _0x2c1c16 = _0x1e1b19(0x4) , _0x3c048c = _0x1e1b19(0x51) , _0x57d2f0 = _0x1e1b19(0x2b) , _0x4fbdc5 = _0x1e1b19(0x3) , _0x21fae5 = function() { function _0x2bfbf0() { this['_materialDefines'] = null, this['_materialEffect'] = null; } return Object['defineProperty'](_0x2bfbf0['prototype'], 'effect', { 'get': function() { return this['_materialEffect']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2bfbf0['prototype']['setEffect'] = function(_0x54f3d4, _0x276faf) { void 0x0 === _0x276faf && (_0x276faf = null), this['_materialEffect'] !== _0x54f3d4 ? (this['_materialDefines'] = _0x276faf, this['_materialEffect'] = _0x54f3d4) : _0x54f3d4 || (this['_materialDefines'] = null); } , _0x2bfbf0; }() , _0x2392cf = function(_0x5672dc) { function _0xa64880(_0x103a75, _0xb8cf40, _0x20a0aa, _0x1e4103, _0x223dba, _0x3f569b, _0x474e3b, _0xef32c1) { void 0x0 === _0xef32c1 && (_0xef32c1 = !0x0); var _0x21e702 = _0x5672dc['call'](this) || this; return _0x21e702['materialIndex'] = _0x103a75, _0x21e702['verticesStart'] = _0xb8cf40, _0x21e702['verticesCount'] = _0x20a0aa, _0x21e702['indexStart'] = _0x1e4103, _0x21e702['indexCount'] = _0x223dba, _0x21e702['_linesIndexCount'] = 0x0, _0x21e702['_linesIndexBuffer'] = null, _0x21e702['_lastColliderWorldVertices'] = null, _0x21e702['_lastColliderTransformMatrix'] = null, _0x21e702['_renderId'] = 0x0, _0x21e702['_alphaIndex'] = 0x0, _0x21e702['_distanceToCamera'] = 0x0, _0x21e702['_currentMaterial'] = null, _0x21e702['_mesh'] = _0x3f569b, _0x21e702['_renderingMesh'] = _0x474e3b || _0x3f569b, _0x3f569b['subMeshes']['push'](_0x21e702), _0x21e702['_trianglePlanes'] = [], _0x21e702['_id'] = _0x3f569b['subMeshes']['length'] - 0x1, _0xef32c1 && (_0x21e702['refreshBoundingInfo'](), _0x3f569b['computeWorldMatrix'](!0x0)), _0x21e702; } return _0x2ae616['d'](_0xa64880, _0x5672dc), _0xa64880['AddToMesh'] = function(_0x319a32, _0x2f5da3, _0x2da7e0, _0x34ad22, _0x4142b7, _0x39bd74, _0x14ffc9, _0x5d7ddd) { return void 0x0 === _0x5d7ddd && (_0x5d7ddd = !0x0), new _0xa64880(_0x319a32,_0x2f5da3,_0x2da7e0,_0x34ad22,_0x4142b7,_0x39bd74,_0x14ffc9,_0x5d7ddd); } , Object['defineProperty'](_0xa64880['prototype'], 'IsGlobal', { 'get': function() { return 0x0 === this['verticesStart'] && this['verticesCount'] === this['_mesh']['getTotalVertices'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xa64880['prototype']['getBoundingInfo'] = function() { return this['IsGlobal'] ? this['_mesh']['getBoundingInfo']() : this['_boundingInfo']; } , _0xa64880['prototype']['setBoundingInfo'] = function(_0x3f9282) { return this['_boundingInfo'] = _0x3f9282, this; } , _0xa64880['prototype']['getMesh'] = function() { return this['_mesh']; } , _0xa64880['prototype']['getRenderingMesh'] = function() { return this['_renderingMesh']; } , _0xa64880['prototype']['getMaterial'] = function() { var _0x1981ce = this['_renderingMesh']['material']; if (null == _0x1981ce) return this['_mesh']['getScene']()['defaultMaterial']; if (_0x1981ce['getSubMaterial']) { var _0x41f607 = _0x1981ce['getSubMaterial'](this['materialIndex']); return this['_currentMaterial'] !== _0x41f607 && (this['_currentMaterial'] = _0x41f607, this['_materialDefines'] = null), _0x41f607; } return _0x1981ce; } , _0xa64880['prototype']['refreshBoundingInfo'] = function(_0x51966e) { if (void 0x0 === _0x51966e && (_0x51966e = null), this['_lastColliderWorldVertices'] = null, this['IsGlobal'] || !this['_renderingMesh'] || !this['_renderingMesh']['geometry']) return this; if (_0x51966e || (_0x51966e = this['_renderingMesh']['getVerticesData'](_0x2c1c16['b']['PositionKind'])), !_0x51966e) return this['_boundingInfo'] = this['_mesh']['getBoundingInfo'](), this; var _0x16529b, _0x398960 = this['_renderingMesh']['getIndices'](); if (0x0 === this['indexStart'] && this['indexCount'] === _0x398960['length']) { var _0x260b44 = this['_renderingMesh']['getBoundingInfo'](); _0x16529b = { 'minimum': _0x260b44['minimum']['clone'](), 'maximum': _0x260b44['maximum']['clone']() }; } else _0x16529b = _0x2f6752['h']['ExtractMinAndMaxIndexed'](_0x51966e, _0x398960, this['indexStart'], this['indexCount'], this['_renderingMesh']['geometry']['boundingBias']); return this['_boundingInfo'] ? this['_boundingInfo']['reConstruct'](_0x16529b['minimum'], _0x16529b['maximum']) : this['_boundingInfo'] = new _0x57d2f0['a'](_0x16529b['minimum'],_0x16529b['maximum']), this; } , _0xa64880['prototype']['_checkCollision'] = function(_0x12d27a) { return this['getBoundingInfo']()['_checkCollision'](_0x12d27a); } , _0xa64880['prototype']['updateBoundingInfo'] = function(_0x216a8d) { var _0x4e288b = this['getBoundingInfo'](); return _0x4e288b || (this['refreshBoundingInfo'](), _0x4e288b = this['getBoundingInfo']()), _0x4e288b['update'](_0x216a8d), this; } , _0xa64880['prototype']['isInFrustum'] = function(_0x3fd905) { var _0x2c90ca = this['getBoundingInfo'](); return !!_0x2c90ca && _0x2c90ca['isInFrustum'](_0x3fd905, this['_mesh']['cullingStrategy']); } , _0xa64880['prototype']['isCompletelyInFrustum'] = function(_0x2ba123) { var _0x563466 = this['getBoundingInfo'](); return !!_0x563466 && _0x563466['isCompletelyInFrustum'](_0x2ba123); } , _0xa64880['prototype']['render'] = function(_0x2332b2) { return this['_renderingMesh']['render'](this, _0x2332b2), this; } , _0xa64880['prototype']['_getLinesIndexBuffer'] = function(_0x9bee55, _0x45a2bc) { if (!this['_linesIndexBuffer']) { for (var _0x328c7a = [], _0x6a2368 = this['indexStart']; _0x6a2368 < this['indexStart'] + this['indexCount']; _0x6a2368 += 0x3) _0x328c7a['push'](_0x9bee55[_0x6a2368], _0x9bee55[_0x6a2368 + 0x1], _0x9bee55[_0x6a2368 + 0x1], _0x9bee55[_0x6a2368 + 0x2], _0x9bee55[_0x6a2368 + 0x2], _0x9bee55[_0x6a2368]); this['_linesIndexBuffer'] = _0x45a2bc['createIndexBuffer'](_0x328c7a), this['_linesIndexCount'] = _0x328c7a['length']; } return this['_linesIndexBuffer']; } , _0xa64880['prototype']['canIntersects'] = function(_0x5cae24) { var _0x2705c6 = this['getBoundingInfo'](); return !!_0x2705c6 && _0x5cae24['intersectsBox'](_0x2705c6['boundingBox']); } , _0xa64880['prototype']['intersects'] = function(_0x55c853, _0x1e2870, _0x405dff, _0x40a3c3, _0x5d30c0) { var _0xd14b2e = this['getMaterial'](); if (!_0xd14b2e) return null; switch (_0xd14b2e['fillMode']) { case _0x4fbdc5['a']['MATERIAL_PointListDrawMode']: case _0x4fbdc5['a']['MATERIAL_LineListDrawMode']: case _0x4fbdc5['a']['MATERIAL_LineLoopDrawMode']: case _0x4fbdc5['a']['MATERIAL_LineStripDrawMode']: case _0x4fbdc5['a']['MATERIAL_TriangleFanDrawMode']: case _0x4fbdc5['a']['MATERIAL_TriangleStripDrawMode']: return null; } return 'InstancedLinesMesh' === this['_mesh']['getClassName']() || 'LinesMesh' === this['_mesh']['getClassName']() ? _0x405dff['length'] ? this['_intersectLines'](_0x55c853, _0x1e2870, _0x405dff, this['_mesh']['intersectionThreshold'], _0x40a3c3) : this['_intersectUnIndexedLines'](_0x55c853, _0x1e2870, _0x405dff, this['_mesh']['intersectionThreshold'], _0x40a3c3) : !_0x405dff['length'] && this['_mesh']['_unIndexed'] ? this['_intersectUnIndexedTriangles'](_0x55c853, _0x1e2870, _0x405dff, _0x40a3c3, _0x5d30c0) : this['_intersectTriangles'](_0x55c853, _0x1e2870, _0x405dff, _0x40a3c3, _0x5d30c0); } , _0xa64880['prototype']['_intersectLines'] = function(_0x125809, _0x45da45, _0xae0dcf, _0x312edb, _0xb46aef) { for (var _0xcac981 = null, _0x1d9311 = this['indexStart']; _0x1d9311 < this['indexStart'] + this['indexCount']; _0x1d9311 += 0x2) { var _0x5b4ece = _0x45da45[_0xae0dcf[_0x1d9311]] , _0x15a4e1 = _0x45da45[_0xae0dcf[_0x1d9311 + 0x1]] , _0xefdb95 = _0x125809['intersectionSegment'](_0x5b4ece, _0x15a4e1, _0x312edb); if (!(_0xefdb95 < 0x0) && ((_0xb46aef || !_0xcac981 || _0xefdb95 < _0xcac981['distance']) && ((_0xcac981 = new _0x3c048c['a'](null,null,_0xefdb95))['faceId'] = _0x1d9311 / 0x2, _0xb46aef))) break; } return _0xcac981; } , _0xa64880['prototype']['_intersectUnIndexedLines'] = function(_0x55c19a, _0x27f68a, _0x44ba1f, _0x46fcd8, _0x1dcdd5) { for (var _0x1b70a9 = null, _0x4b8743 = this['verticesStart']; _0x4b8743 < this['verticesStart'] + this['verticesCount']; _0x4b8743 += 0x2) { var _0xa582 = _0x27f68a[_0x4b8743] , _0x36b88d = _0x27f68a[_0x4b8743 + 0x1] , _0x5a99e4 = _0x55c19a['intersectionSegment'](_0xa582, _0x36b88d, _0x46fcd8); if (!(_0x5a99e4 < 0x0) && ((_0x1dcdd5 || !_0x1b70a9 || _0x5a99e4 < _0x1b70a9['distance']) && ((_0x1b70a9 = new _0x3c048c['a'](null,null,_0x5a99e4))['faceId'] = _0x4b8743 / 0x2, _0x1dcdd5))) break; } return _0x1b70a9; } , _0xa64880['prototype']['_intersectTriangles'] = function(_0x5731f7, _0x275763, _0x5c7848, _0x40c3ad, _0x25377d) { for (var _0x55a324 = null, _0x5414e1 = this['indexStart']; _0x5414e1 < this['indexStart'] + this['indexCount']; _0x5414e1 += 0x3) { var _0x4b5438 = _0x275763[_0x5c7848[_0x5414e1]] , _0x4cd534 = _0x275763[_0x5c7848[_0x5414e1 + 0x1]] , _0x5f0b84 = _0x275763[_0x5c7848[_0x5414e1 + 0x2]]; if (!_0x25377d || _0x25377d(_0x4b5438, _0x4cd534, _0x5f0b84, _0x5731f7)) { var _0x463523 = _0x5731f7['intersectsTriangle'](_0x4b5438, _0x4cd534, _0x5f0b84); if (_0x463523) { if (_0x463523['distance'] < 0x0) continue; if ((_0x40c3ad || !_0x55a324 || _0x463523['distance'] < _0x55a324['distance']) && ((_0x55a324 = _0x463523)['faceId'] = _0x5414e1 / 0x3, _0x40c3ad)) break; } } } return _0x55a324; } , _0xa64880['prototype']['_intersectUnIndexedTriangles'] = function(_0xee3531, _0x5cdd10, _0x63069e, _0x19e1ac, _0x503a5c) { for (var _0x41abe9 = null, _0x4182b5 = this['verticesStart']; _0x4182b5 < this['verticesStart'] + this['verticesCount']; _0x4182b5 += 0x3) { var _0x157a69 = _0x5cdd10[_0x4182b5] , _0x4b7727 = _0x5cdd10[_0x4182b5 + 0x1] , _0x41e6b4 = _0x5cdd10[_0x4182b5 + 0x2]; if (!_0x503a5c || _0x503a5c(_0x157a69, _0x4b7727, _0x41e6b4, _0xee3531)) { var _0x2c982e = _0xee3531['intersectsTriangle'](_0x157a69, _0x4b7727, _0x41e6b4); if (_0x2c982e) { if (_0x2c982e['distance'] < 0x0) continue; if ((_0x19e1ac || !_0x41abe9 || _0x2c982e['distance'] < _0x41abe9['distance']) && ((_0x41abe9 = _0x2c982e)['faceId'] = _0x4182b5 / 0x3, _0x19e1ac)) break; } } } return _0x41abe9; } , _0xa64880['prototype']['_rebuild'] = function() { this['_linesIndexBuffer'] && (this['_linesIndexBuffer'] = null); } , _0xa64880['prototype']['clone'] = function(_0x2323f7, _0x57093c) { var _0x1105c9 = new _0xa64880(this['materialIndex'],this['verticesStart'],this['verticesCount'],this['indexStart'],this['indexCount'],_0x2323f7,_0x57093c,!0x1); if (!this['IsGlobal']) { var _0x5a53fe = this['getBoundingInfo'](); if (!_0x5a53fe) return _0x1105c9; _0x1105c9['_boundingInfo'] = new _0x57d2f0['a'](_0x5a53fe['minimum'],_0x5a53fe['maximum']); } return _0x1105c9; } , _0xa64880['prototype']['dispose'] = function() { this['_linesIndexBuffer'] && (this['_mesh']['getScene']()['getEngine']()['_releaseBuffer'](this['_linesIndexBuffer']), this['_linesIndexBuffer'] = null); var _0x3b3f12 = this['_mesh']['subMeshes']['indexOf'](this); this['_mesh']['subMeshes']['splice'](_0x3b3f12, 0x1); } , _0xa64880['prototype']['getClassName'] = function() { return 'SubMesh'; } , _0xa64880['CreateFromIndices'] = function(_0x1e3f50, _0xa86e, _0x1ad180, _0x139ec9, _0x38128a) { for (var _0x96a114 = Number['MAX_VALUE'], _0x7b7d8f = -Number['MAX_VALUE'], _0x5c53cd = (_0x38128a || _0x139ec9)['getIndices'](), _0x58ea40 = _0xa86e; _0x58ea40 < _0xa86e + _0x1ad180; _0x58ea40++) { var _0x1c3fac = _0x5c53cd[_0x58ea40]; _0x1c3fac < _0x96a114 && (_0x96a114 = _0x1c3fac), _0x1c3fac > _0x7b7d8f && (_0x7b7d8f = _0x1c3fac); } return new _0xa64880(_0x1e3f50,_0x96a114,_0x7b7d8f - _0x96a114 + 0x1,_0xa86e,_0x1ad180,_0x139ec9,_0x38128a); } , _0xa64880; }(_0x21fae5); } , function(_0x36d6d5, _0x50c590, _0x59ffdf) { 'use strict'; _0x59ffdf['d'](_0x50c590, 'a', function() { return _0x2e78fb; }); var _0x40c208 = _0x59ffdf(0x0) , _0x3bbdf6 = _0x59ffdf(0x4) , _0x2e78fb = function() { function _0x565df3() { this['_pickingUnavailable'] = !0x1, this['hit'] = !0x1, this['distance'] = 0x0, this['pickedPoint'] = null, this['pickedMesh'] = null, this['bu'] = 0x0, this['bv'] = 0x0, this['faceId'] = -0x1, this['subMeshId'] = 0x0, this['pickedSprite'] = null, this['originMesh'] = null, this['ray'] = null; } return _0x565df3['prototype']['getNormal'] = function(_0xc6ee3b, _0x40a0a0) { if (void 0x0 === _0xc6ee3b && (_0xc6ee3b = !0x1), void 0x0 === _0x40a0a0 && (_0x40a0a0 = !0x0), !this['pickedMesh'] || !this['pickedMesh']['isVerticesDataPresent'](_0x3bbdf6['b']['NormalKind'])) return null; var _0x26579b, _0x5529a6 = this['pickedMesh']['getIndices'](); if (!_0x5529a6) return null; if (_0x40a0a0) { var _0x3d61f3 = this['pickedMesh']['getVerticesData'](_0x3bbdf6['b']['NormalKind']) , _0x21e799 = _0x40c208['x']['FromArray'](_0x3d61f3, 0x3 * _0x5529a6[0x3 * this['faceId']]) , _0x4bd164 = _0x40c208['x']['FromArray'](_0x3d61f3, 0x3 * _0x5529a6[0x3 * this['faceId'] + 0x1]) , _0xa310f = _0x40c208['x']['FromArray'](_0x3d61f3, 0x3 * _0x5529a6[0x3 * this['faceId'] + 0x2]); _0x21e799 = _0x21e799['scale'](this['bu']), _0x4bd164 = _0x4bd164['scale'](this['bv']), _0xa310f = _0xa310f['scale'](0x1 - this['bu'] - this['bv']), _0x26579b = new _0x40c208['x'](_0x21e799['x'] + _0x4bd164['x'] + _0xa310f['x'],_0x21e799['y'] + _0x4bd164['y'] + _0xa310f['y'],_0x21e799['z'] + _0x4bd164['z'] + _0xa310f['z']); } else { var _0x39bbd2 = this['pickedMesh']['getVerticesData'](_0x3bbdf6['b']['PositionKind']) , _0x338182 = _0x40c208['x']['FromArray'](_0x39bbd2, 0x3 * _0x5529a6[0x3 * this['faceId']]) , _0x26df94 = _0x40c208['x']['FromArray'](_0x39bbd2, 0x3 * _0x5529a6[0x3 * this['faceId'] + 0x1]) , _0x5f0fd9 = _0x40c208['x']['FromArray'](_0x39bbd2, 0x3 * _0x5529a6[0x3 * this['faceId'] + 0x2]) , _0xaa9e76 = _0x338182['subtract'](_0x26df94) , _0x3f4bf9 = _0x5f0fd9['subtract'](_0x26df94); _0x26579b = _0x40c208['x']['Cross'](_0xaa9e76, _0x3f4bf9); } if (_0xc6ee3b) { var _0x153c3b = this['pickedMesh']['getWorldMatrix'](); this['pickedMesh']['nonUniformScaling'] && (_0x40c208['t']['Matrix'][0x0]['copyFrom'](_0x153c3b), (_0x153c3b = _0x40c208['t']['Matrix'][0x0])['setTranslationFromFloats'](0x0, 0x0, 0x0), _0x153c3b['invert'](), _0x153c3b['transposeToRef'](_0x40c208['t']['Matrix'][0x1]), _0x153c3b = _0x40c208['t']['Matrix'][0x1]), _0x26579b = _0x40c208['x']['TransformNormal'](_0x26579b, _0x153c3b); } return _0x26579b['normalize'](), _0x26579b; } , _0x565df3['prototype']['getTextureCoordinates'] = function() { if (!this['pickedMesh'] || !this['pickedMesh']['isVerticesDataPresent'](_0x3bbdf6['b']['UVKind'])) return null; var _0x465728 = this['pickedMesh']['getIndices'](); if (!_0x465728) return null; var _0x54bba4 = this['pickedMesh']['getVerticesData'](_0x3bbdf6['b']['UVKind']); if (!_0x54bba4) return null; var _0x501c0a = _0x40c208['w']['FromArray'](_0x54bba4, 0x2 * _0x465728[0x3 * this['faceId']]) , _0x5bddb3 = _0x40c208['w']['FromArray'](_0x54bba4, 0x2 * _0x465728[0x3 * this['faceId'] + 0x1]) , _0xb13ff4 = _0x40c208['w']['FromArray'](_0x54bba4, 0x2 * _0x465728[0x3 * this['faceId'] + 0x2]); return _0x501c0a = _0x501c0a['scale'](0x1 - this['bu'] - this['bv']), _0x5bddb3 = _0x5bddb3['scale'](this['bu']), _0xb13ff4 = _0xb13ff4['scale'](this['bv']), new _0x40c208['w'](_0x501c0a['x'] + _0x5bddb3['x'] + _0xb13ff4['x'],_0x501c0a['y'] + _0x5bddb3['y'] + _0xb13ff4['y']); } , _0x565df3; }(); } , function(_0x4458b9, _0x8b92af, _0x204d26) { 'use strict'; _0x204d26['d'](_0x8b92af, 'a', function() { return _0x1ca0c5; }), _0x204d26['d'](_0x8b92af, 'b', function() { return _0x4a6b3c; }), _0x204d26['d'](_0x8b92af, 'c', function() { return _0x4ac534; }); var _0x32f108 = _0x204d26(0x1) , _0x1ca0c5 = function() { function _0x93ded3() {} return _0x93ded3['KEYDOWN'] = 0x1, _0x93ded3['KEYUP'] = 0x2, _0x93ded3; }() , _0x4a6b3c = function() { return function(_0x422b5a, _0x47458c) { this['type'] = _0x422b5a, this['event'] = _0x47458c; } ; }() , _0x4ac534 = function(_0x44357e) { function _0x3b4ef1(_0x54437b, _0x27ef80) { var _0x149d70 = _0x44357e['call'](this, _0x54437b, _0x27ef80) || this; return _0x149d70['type'] = _0x54437b, _0x149d70['event'] = _0x27ef80, _0x149d70['skipOnPointerObservable'] = !0x1, _0x149d70; } return _0x32f108['d'](_0x3b4ef1, _0x44357e), _0x3b4ef1; }(_0x4a6b3c); } , function(_0x5c9714, _0x2a1012, _0x2a1bf0) { 'use strict'; _0x2a1bf0['d'](_0x2a1012, 'a', function() { return _0x889ec8; }); var _0x3902a6 = _0x2a1bf0(0x0) , _0x113a6e = _0x2a1bf0(0xb) , _0x4b256c = _0x2a1bf0(0xd); _0x4b256c['a']['CreateBox'] = function(_0x1e3154) { var _0x20b775, _0x1ff740 = [0x0, 0x1, 0x2, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x4, 0x6, 0x7, 0x8, 0x9, 0xa, 0x8, 0xa, 0xb, 0xc, 0xd, 0xe, 0xc, 0xe, 0xf, 0x10, 0x11, 0x12, 0x10, 0x12, 0x13, 0x14, 0x15, 0x16, 0x14, 0x16, 0x17], _0x18fb96 = [0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, -0x1, 0x0, 0x0, -0x1, 0x0, 0x0, -0x1, 0x0, 0x0, -0x1, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, -0x1, 0x0, 0x0, -0x1, 0x0, 0x0, -0x1, 0x0, 0x0, -0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, -0x1, 0x0, 0x0, -0x1, 0x0, 0x0, -0x1, 0x0, 0x0, -0x1, 0x0], _0x23b21d = [], _0x57140b = _0x1e3154['width'] || _0x1e3154['size'] || 0x1, _0x1b2ebc = _0x1e3154['height'] || _0x1e3154['size'] || 0x1, _0x2c75b8 = _0x1e3154['depth'] || _0x1e3154['size'] || 0x1, _0x369a40 = _0x1e3154['wrap'] || !0x1, _0x1fa9cc = void 0x0 === _0x1e3154['topBaseAt'] ? 0x1 : _0x1e3154['topBaseAt'], _0x310432 = void 0x0 === _0x1e3154['bottomBaseAt'] ? 0x0 : _0x1e3154['bottomBaseAt'], _0x45f88a = [0x2, 0x0, 0x3, 0x1][_0x1fa9cc = (_0x1fa9cc + 0x4) % 0x4], _0x1299d6 = [0x2, 0x0, 0x1, 0x3][_0x310432 = (_0x310432 + 0x4) % 0x4], _0x4e78e5 = [0x1, -0x1, 0x1, -0x1, -0x1, 0x1, -0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, -0x1, -0x1, 0x1, -0x1, -0x1, -0x1, -0x1, 0x1, -0x1, -0x1, 0x1, 0x1, -0x1, 0x1, -0x1, -0x1, 0x1, -0x1, 0x1, 0x1, 0x1, 0x1, -0x1, 0x1, 0x1, -0x1, -0x1, 0x1, -0x1, -0x1, -0x1, -0x1, 0x1, -0x1, -0x1, 0x1, 0x1, -0x1, 0x1, -0x1, 0x1, 0x1, -0x1, 0x1, 0x1, 0x1, 0x1, -0x1, 0x1, 0x1, -0x1, -0x1, -0x1, -0x1, -0x1, -0x1, -0x1, 0x1]; if (_0x369a40) { _0x1ff740 = [0x2, 0x3, 0x0, 0x2, 0x0, 0x1, 0x4, 0x5, 0x6, 0x4, 0x6, 0x7, 0x9, 0xa, 0xb, 0x9, 0xb, 0x8, 0xc, 0xe, 0xf, 0xc, 0xd, 0xe], _0x4e78e5 = [-0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, -0x1, 0x1, -0x1, -0x1, 0x1, 0x1, 0x1, -0x1, -0x1, 0x1, -0x1, -0x1, -0x1, -0x1, 0x1, -0x1, -0x1, 0x1, 0x1, 0x1, 0x1, 0x1, -0x1, 0x1, -0x1, -0x1, 0x1, -0x1, 0x1, -0x1, 0x1, -0x1, -0x1, 0x1, 0x1, -0x1, -0x1, 0x1, -0x1, -0x1, -0x1]; for (var _0x4274a2 = [[0x1, 0x1, 0x1], [-0x1, 0x1, 0x1], [-0x1, 0x1, -0x1], [0x1, 0x1, -0x1]], _0x3fd512 = [[-0x1, -0x1, 0x1], [0x1, -0x1, 0x1], [0x1, -0x1, -0x1], [-0x1, -0x1, -0x1]], _0x4ca8e3 = [0x11, 0x12, 0x13, 0x10], _0x273a9e = [0x16, 0x17, 0x14, 0x15]; _0x45f88a > 0x0; ) _0x4274a2['unshift'](_0x4274a2['pop']()), _0x4ca8e3['unshift'](_0x4ca8e3['pop']()), _0x45f88a--; for (; _0x1299d6 > 0x0; ) _0x3fd512['unshift'](_0x3fd512['pop']()), _0x273a9e['unshift'](_0x273a9e['pop']()), _0x1299d6--; _0x4274a2 = _0x4274a2['flat'](), _0x3fd512 = _0x3fd512['flat'](), _0x4e78e5 = _0x4e78e5['concat'](_0x4274a2)['concat'](_0x3fd512), _0x1ff740['push'](_0x4ca8e3[0x0], _0x4ca8e3[0x2], _0x4ca8e3[0x3], _0x4ca8e3[0x0], _0x4ca8e3[0x1], _0x4ca8e3[0x2]), _0x1ff740['push'](_0x273a9e[0x0], _0x273a9e[0x2], _0x273a9e[0x3], _0x273a9e[0x0], _0x273a9e[0x1], _0x273a9e[0x2]); } var _0x5512f8 = [_0x57140b / 0x2, _0x1b2ebc / 0x2, _0x2c75b8 / 0x2]; _0x20b775 = _0x4e78e5['reduce'](function(_0x2855f4, _0xc56152, _0x59a6c5) { return _0x2855f4['concat'](_0xc56152 * _0x5512f8[_0x59a6c5 % 0x3]); }, []); for (var _0x3597ed = 0x0 === _0x1e3154['sideOrientation'] ? 0x0 : _0x1e3154['sideOrientation'] || _0x4b256c['a']['DEFAULTSIDE'], _0x522828 = _0x1e3154['faceUV'] || new Array(0x6), _0x582753 = _0x1e3154['faceColors'], _0x1fc70f = [], _0x9576ae = 0x0; _0x9576ae < 0x6; _0x9576ae++) void 0x0 === _0x522828[_0x9576ae] && (_0x522828[_0x9576ae] = new _0x3902a6['y'](0x0,0x0,0x1,0x1)), _0x582753 && void 0x0 === _0x582753[_0x9576ae] && (_0x582753[_0x9576ae] = new _0x3902a6['f'](0x1,0x1,0x1,0x1)); for (var _0x289abb = 0x0; _0x289abb < 0x6; _0x289abb++) if (_0x23b21d['push'](_0x522828[_0x289abb]['z'], _0x522828[_0x289abb]['w']), _0x23b21d['push'](_0x522828[_0x289abb]['x'], _0x522828[_0x289abb]['w']), _0x23b21d['push'](_0x522828[_0x289abb]['x'], _0x522828[_0x289abb]['y']), _0x23b21d['push'](_0x522828[_0x289abb]['z'], _0x522828[_0x289abb]['y']), _0x582753) for (var _0x17254f = 0x0; _0x17254f < 0x4; _0x17254f++) _0x1fc70f['push'](_0x582753[_0x289abb]['r'], _0x582753[_0x289abb]['g'], _0x582753[_0x289abb]['b'], _0x582753[_0x289abb]['a']); _0x4b256c['a']['_ComputeSides'](_0x3597ed, _0x20b775, _0x1ff740, _0x18fb96, _0x23b21d, _0x1e3154['frontUVs'], _0x1e3154['backUVs']); var _0x162b2c = new _0x4b256c['a'](); if (_0x162b2c['indices'] = _0x1ff740, _0x162b2c['positions'] = _0x20b775, _0x162b2c['normals'] = _0x18fb96, _0x162b2c['uvs'] = _0x23b21d, _0x582753) { var _0x333007 = _0x3597ed === _0x4b256c['a']['DOUBLESIDE'] ? _0x1fc70f['concat'](_0x1fc70f) : _0x1fc70f; _0x162b2c['colors'] = _0x333007; } return _0x162b2c; } , _0x113a6e['a']['CreateBox'] = function(_0x251497, _0xf4592e, _0x534a83, _0x2940c1, _0x306ea0) { void 0x0 === _0x534a83 && (_0x534a83 = null); var _0x53b289 = { 'size': _0xf4592e, 'sideOrientation': _0x306ea0, 'updatable': _0x2940c1 }; return _0x889ec8['CreateBox'](_0x251497, _0x53b289, _0x534a83); } ; var _0x889ec8 = function() { function _0x492ed5() {} return _0x492ed5['CreateBox'] = function(_0x4e8905, _0x28ad7e, _0xacc3db) { void 0x0 === _0xacc3db && (_0xacc3db = null); var _0x3adc36 = new _0x113a6e['a'](_0x4e8905,_0xacc3db); return _0x28ad7e['sideOrientation'] = _0x113a6e['a']['_GetDefaultSideOrientation'](_0x28ad7e['sideOrientation']), _0x3adc36['_originalBuilderSideOrientation'] = _0x28ad7e['sideOrientation'], _0x4b256c['a']['CreateBox'](_0x28ad7e)['applyToMesh'](_0x3adc36, _0x28ad7e['updatable']), _0x3adc36; } , _0x492ed5; }(); } , function(_0x5ab75a, _0x32a99b, _0x2eda79) { 'use strict'; _0x2eda79['d'](_0x32a99b, 'a', function() { return _0x4dc3ec; }); var _0x278a36 = _0x2eda79(0x0) , _0x3abb19 = _0x2eda79(0xb) , _0x1487d5 = _0x2eda79(0xd) , _0x3ba218 = _0x2eda79(0x10); _0x1487d5['a']['CreateCylinder'] = function(_0x518004) { var _0x381099, _0x62a6db = _0x518004['height'] || 0x2, _0x54b4df = 0x0 === _0x518004['diameterTop'] ? 0x0 : _0x518004['diameterTop'] || _0x518004['diameter'] || 0x1, _0x4c3430 = 0x0 === _0x518004['diameterBottom'] ? 0x0 : _0x518004['diameterBottom'] || _0x518004['diameter'] || 0x1, _0x1a0515 = _0x518004['tessellation'] || 0x18, _0x1b7bfd = _0x518004['subdivisions'] || 0x1, _0x8757b7 = !!_0x518004['hasRings'], _0xa9d9b5 = !!_0x518004['enclose'], _0x19ee38 = _0x518004['arc'] && (_0x518004['arc'] <= 0x0 || _0x518004['arc'] > 0x1) ? 0x1 : _0x518004['arc'] || 0x1, _0x3d0d3f = 0x0 === _0x518004['sideOrientation'] ? 0x0 : _0x518004['sideOrientation'] || _0x1487d5['a']['DEFAULTSIDE'], _0x417184 = _0x518004['faceUV'] || new Array(0x3), _0x3139c6 = _0x518004['faceColors'], _0x2d8f11 = 0x2 + (0x1 + (0x1 !== _0x19ee38 && _0xa9d9b5 ? 0x2 : 0x0)) * (_0x8757b7 ? _0x1b7bfd : 0x1); for (_0x381099 = 0x0; _0x381099 < _0x2d8f11; _0x381099++) _0x3139c6 && void 0x0 === _0x3139c6[_0x381099] && (_0x3139c6[_0x381099] = new _0x278a36['f'](0x1,0x1,0x1,0x1)); for (_0x381099 = 0x0; _0x381099 < _0x2d8f11; _0x381099++) _0x417184 && void 0x0 === _0x417184[_0x381099] && (_0x417184[_0x381099] = new _0x278a36['y'](0x0,0x0,0x1,0x1)); var _0x378baf, _0x4d4a5e, _0x2aebbc, _0x30ffa8, _0x5406e9, _0x16d381, _0x599214 = new Array(), _0x258d2c = new Array(), _0x288b5f = new Array(), _0x38bc52 = new Array(), _0x25aeec = new Array(), _0x23671f = 0x2 * Math['PI'] * _0x19ee38 / _0x1a0515, _0x5749f8 = (_0x4c3430 - _0x54b4df) / 0x2 / _0x62a6db, _0x492e31 = _0x278a36['x']['Zero'](), _0xf7fcc5 = _0x278a36['x']['Zero'](), _0x53596c = _0x278a36['x']['Zero'](), _0x4525c9 = _0x278a36['x']['Zero'](), _0x4e99a6 = _0x278a36['x']['Zero'](), _0x2c97e1 = _0x278a36['c']['Y'], _0x130a0f = 0x1, _0x4a7682 = 0x1, _0x5eaa45 = 0x0, _0x3f3389 = 0x0; for (_0x30ffa8 = 0x0; _0x30ffa8 <= _0x1b7bfd; _0x30ffa8++) for (_0x2aebbc = ((_0x4d4a5e = _0x30ffa8 / _0x1b7bfd) * (_0x54b4df - _0x4c3430) + _0x4c3430) / 0x2, _0x130a0f = _0x8757b7 && 0x0 !== _0x30ffa8 && _0x30ffa8 !== _0x1b7bfd ? 0x2 : 0x1, _0x16d381 = 0x0; _0x16d381 < _0x130a0f; _0x16d381++) { for (_0x8757b7 && (_0x4a7682 += _0x16d381), _0xa9d9b5 && (_0x4a7682 += 0x2 * _0x16d381), _0x5406e9 = 0x0; _0x5406e9 <= _0x1a0515; _0x5406e9++) _0x378baf = _0x5406e9 * _0x23671f, _0x492e31['x'] = Math['cos'](-_0x378baf) * _0x2aebbc, _0x492e31['y'] = -_0x62a6db / 0x2 + _0x4d4a5e * _0x62a6db, _0x492e31['z'] = Math['sin'](-_0x378baf) * _0x2aebbc, 0x0 === _0x54b4df && _0x30ffa8 === _0x1b7bfd ? (_0xf7fcc5['x'] = _0x288b5f[_0x288b5f['length'] - 0x3 * (_0x1a0515 + 0x1)], _0xf7fcc5['y'] = _0x288b5f[_0x288b5f['length'] - 0x3 * (_0x1a0515 + 0x1) + 0x1], _0xf7fcc5['z'] = _0x288b5f[_0x288b5f['length'] - 0x3 * (_0x1a0515 + 0x1) + 0x2]) : (_0xf7fcc5['x'] = _0x492e31['x'], _0xf7fcc5['z'] = _0x492e31['z'], _0xf7fcc5['y'] = Math['sqrt'](_0xf7fcc5['x'] * _0xf7fcc5['x'] + _0xf7fcc5['z'] * _0xf7fcc5['z']) * _0x5749f8, _0xf7fcc5['normalize']()), 0x0 === _0x5406e9 && (_0x53596c['copyFrom'](_0x492e31), _0x4525c9['copyFrom'](_0xf7fcc5)), _0x258d2c['push'](_0x492e31['x'], _0x492e31['y'], _0x492e31['z']), _0x288b5f['push'](_0xf7fcc5['x'], _0xf7fcc5['y'], _0xf7fcc5['z']), _0x3f3389 = _0x8757b7 ? _0x5eaa45 !== _0x4a7682 ? _0x417184[_0x4a7682]['y'] : _0x417184[_0x4a7682]['w'] : _0x417184[_0x4a7682]['y'] + (_0x417184[_0x4a7682]['w'] - _0x417184[_0x4a7682]['y']) * _0x4d4a5e, _0x38bc52['push'](_0x417184[_0x4a7682]['x'] + (_0x417184[_0x4a7682]['z'] - _0x417184[_0x4a7682]['x']) * _0x5406e9 / _0x1a0515, _0x3f3389), _0x3139c6 && _0x25aeec['push'](_0x3139c6[_0x4a7682]['r'], _0x3139c6[_0x4a7682]['g'], _0x3139c6[_0x4a7682]['b'], _0x3139c6[_0x4a7682]['a']); 0x1 !== _0x19ee38 && _0xa9d9b5 && (_0x258d2c['push'](_0x492e31['x'], _0x492e31['y'], _0x492e31['z']), _0x258d2c['push'](0x0, _0x492e31['y'], 0x0), _0x258d2c['push'](0x0, _0x492e31['y'], 0x0), _0x258d2c['push'](_0x53596c['x'], _0x53596c['y'], _0x53596c['z']), _0x278a36['x']['CrossToRef'](_0x2c97e1, _0xf7fcc5, _0x4e99a6), _0x4e99a6['normalize'](), _0x288b5f['push'](_0x4e99a6['x'], _0x4e99a6['y'], _0x4e99a6['z'], _0x4e99a6['x'], _0x4e99a6['y'], _0x4e99a6['z']), _0x278a36['x']['CrossToRef'](_0x4525c9, _0x2c97e1, _0x4e99a6), _0x4e99a6['normalize'](), _0x288b5f['push'](_0x4e99a6['x'], _0x4e99a6['y'], _0x4e99a6['z'], _0x4e99a6['x'], _0x4e99a6['y'], _0x4e99a6['z']), _0x3f3389 = _0x8757b7 ? _0x5eaa45 !== _0x4a7682 ? _0x417184[_0x4a7682 + 0x1]['y'] : _0x417184[_0x4a7682 + 0x1]['w'] : _0x417184[_0x4a7682 + 0x1]['y'] + (_0x417184[_0x4a7682 + 0x1]['w'] - _0x417184[_0x4a7682 + 0x1]['y']) * _0x4d4a5e, _0x38bc52['push'](_0x417184[_0x4a7682 + 0x1]['x'], _0x3f3389), _0x38bc52['push'](_0x417184[_0x4a7682 + 0x1]['z'], _0x3f3389), _0x3f3389 = _0x8757b7 ? _0x5eaa45 !== _0x4a7682 ? _0x417184[_0x4a7682 + 0x2]['y'] : _0x417184[_0x4a7682 + 0x2]['w'] : _0x417184[_0x4a7682 + 0x2]['y'] + (_0x417184[_0x4a7682 + 0x2]['w'] - _0x417184[_0x4a7682 + 0x2]['y']) * _0x4d4a5e, _0x38bc52['push'](_0x417184[_0x4a7682 + 0x2]['x'], _0x3f3389), _0x38bc52['push'](_0x417184[_0x4a7682 + 0x2]['z'], _0x3f3389), _0x3139c6 && (_0x25aeec['push'](_0x3139c6[_0x4a7682 + 0x1]['r'], _0x3139c6[_0x4a7682 + 0x1]['g'], _0x3139c6[_0x4a7682 + 0x1]['b'], _0x3139c6[_0x4a7682 + 0x1]['a']), _0x25aeec['push'](_0x3139c6[_0x4a7682 + 0x1]['r'], _0x3139c6[_0x4a7682 + 0x1]['g'], _0x3139c6[_0x4a7682 + 0x1]['b'], _0x3139c6[_0x4a7682 + 0x1]['a']), _0x25aeec['push'](_0x3139c6[_0x4a7682 + 0x2]['r'], _0x3139c6[_0x4a7682 + 0x2]['g'], _0x3139c6[_0x4a7682 + 0x2]['b'], _0x3139c6[_0x4a7682 + 0x2]['a']), _0x25aeec['push'](_0x3139c6[_0x4a7682 + 0x2]['r'], _0x3139c6[_0x4a7682 + 0x2]['g'], _0x3139c6[_0x4a7682 + 0x2]['b'], _0x3139c6[_0x4a7682 + 0x2]['a']))), _0x5eaa45 !== _0x4a7682 && (_0x5eaa45 = _0x4a7682); } var _0x43c1b3 = 0x1 !== _0x19ee38 && _0xa9d9b5 ? _0x1a0515 + 0x4 : _0x1a0515; for (_0x30ffa8 = 0x0, _0x4a7682 = 0x0; _0x4a7682 < _0x1b7bfd; _0x4a7682++) { var _0x5fe32e = 0x0 , _0x4f505f = 0x0 , _0x3afe79 = 0x0 , _0x837557 = 0x0; for (_0x5406e9 = 0x0; _0x5406e9 < _0x1a0515; _0x5406e9++) _0x5fe32e = _0x30ffa8 * (_0x43c1b3 + 0x1) + _0x5406e9, _0x4f505f = (_0x30ffa8 + 0x1) * (_0x43c1b3 + 0x1) + _0x5406e9, _0x3afe79 = _0x30ffa8 * (_0x43c1b3 + 0x1) + (_0x5406e9 + 0x1), _0x837557 = (_0x30ffa8 + 0x1) * (_0x43c1b3 + 0x1) + (_0x5406e9 + 0x1), _0x599214['push'](_0x5fe32e, _0x4f505f, _0x3afe79), _0x599214['push'](_0x837557, _0x3afe79, _0x4f505f); 0x1 !== _0x19ee38 && _0xa9d9b5 && (_0x599214['push'](_0x5fe32e + 0x2, _0x4f505f + 0x2, _0x3afe79 + 0x2), _0x599214['push'](_0x837557 + 0x2, _0x3afe79 + 0x2, _0x4f505f + 0x2), _0x599214['push'](_0x5fe32e + 0x4, _0x4f505f + 0x4, _0x3afe79 + 0x4), _0x599214['push'](_0x837557 + 0x4, _0x3afe79 + 0x4, _0x4f505f + 0x4)), _0x30ffa8 = _0x8757b7 ? _0x30ffa8 + 0x2 : _0x30ffa8 + 0x1; } var _0x107eb3 = function(_0xf6fc61) { var _0x245a80 = _0xf6fc61 ? _0x54b4df / 0x2 : _0x4c3430 / 0x2; if (0x0 !== _0x245a80) { var _0x3a07c8, _0x17d22c, _0x5d2339, _0x11eb43 = _0xf6fc61 ? _0x417184[_0x2d8f11 - 0x1] : _0x417184[0x0], _0x4634d6 = null; _0x3139c6 && (_0x4634d6 = _0xf6fc61 ? _0x3139c6[_0x2d8f11 - 0x1] : _0x3139c6[0x0]); var _0x1e2464 = _0x258d2c['length'] / 0x3 , _0x3f9c3e = _0xf6fc61 ? _0x62a6db / 0x2 : -_0x62a6db / 0x2 , _0xf67fb2 = new _0x278a36['x'](0x0,_0x3f9c3e,0x0); _0x258d2c['push'](_0xf67fb2['x'], _0xf67fb2['y'], _0xf67fb2['z']), _0x288b5f['push'](0x0, _0xf6fc61 ? 0x1 : -0x1, 0x0), _0x38bc52['push'](_0x11eb43['x'] + 0.5 * (_0x11eb43['z'] - _0x11eb43['x']), _0x11eb43['y'] + 0.5 * (_0x11eb43['w'] - _0x11eb43['y'])), _0x4634d6 && _0x25aeec['push'](_0x4634d6['r'], _0x4634d6['g'], _0x4634d6['b'], _0x4634d6['a']); var _0x41f587 = new _0x278a36['w'](0.5,0.5); for (_0x5d2339 = 0x0; _0x5d2339 <= _0x1a0515; _0x5d2339++) { _0x3a07c8 = 0x2 * Math['PI'] * _0x5d2339 * _0x19ee38 / _0x1a0515; var _0x35d88e = Math['cos'](-_0x3a07c8) , _0x2a8064 = Math['sin'](-_0x3a07c8); _0x17d22c = new _0x278a36['x'](_0x35d88e * _0x245a80,_0x3f9c3e,_0x2a8064 * _0x245a80); var _0x1461bc = new _0x278a36['w'](_0x35d88e * _0x41f587['x'] + 0.5,_0x2a8064 * _0x41f587['y'] + 0.5); _0x258d2c['push'](_0x17d22c['x'], _0x17d22c['y'], _0x17d22c['z']), _0x288b5f['push'](0x0, _0xf6fc61 ? 0x1 : -0x1, 0x0), _0x38bc52['push'](_0x11eb43['x'] + (_0x11eb43['z'] - _0x11eb43['x']) * _0x1461bc['x'], _0x11eb43['y'] + (_0x11eb43['w'] - _0x11eb43['y']) * _0x1461bc['y']), _0x4634d6 && _0x25aeec['push'](_0x4634d6['r'], _0x4634d6['g'], _0x4634d6['b'], _0x4634d6['a']); } for (_0x5d2339 = 0x0; _0x5d2339 < _0x1a0515; _0x5d2339++) _0xf6fc61 ? (_0x599214['push'](_0x1e2464), _0x599214['push'](_0x1e2464 + (_0x5d2339 + 0x2)), _0x599214['push'](_0x1e2464 + (_0x5d2339 + 0x1))) : (_0x599214['push'](_0x1e2464), _0x599214['push'](_0x1e2464 + (_0x5d2339 + 0x1)), _0x599214['push'](_0x1e2464 + (_0x5d2339 + 0x2))); } }; _0x107eb3(!0x1), _0x107eb3(!0x0), _0x1487d5['a']['_ComputeSides'](_0x3d0d3f, _0x258d2c, _0x599214, _0x288b5f, _0x38bc52, _0x518004['frontUVs'], _0x518004['backUVs']); var _0x17b21a = new _0x1487d5['a'](); return _0x17b21a['indices'] = _0x599214, _0x17b21a['positions'] = _0x258d2c, _0x17b21a['normals'] = _0x288b5f, _0x17b21a['uvs'] = _0x38bc52, _0x3139c6 && (_0x17b21a['colors'] = _0x25aeec), _0x17b21a; } , _0x3abb19['a']['CreateCylinder'] = function(_0x3bf3cb, _0x106f5e, _0x37dff3, _0x528192, _0x497215, _0x202588, _0x338562, _0x466378, _0xc9a9d) { void 0x0 !== _0x338562 && _0x338562 instanceof _0x3ba218['a'] || (void 0x0 !== _0x338562 && (_0xc9a9d = _0x466378 || _0x3abb19['a']['DEFAULTSIDE'], _0x466378 = _0x338562), _0x338562 = _0x202588, _0x202588 = 0x1); var _0x5a0954 = { 'height': _0x106f5e, 'diameterTop': _0x37dff3, 'diameterBottom': _0x528192, 'tessellation': _0x497215, 'subdivisions': _0x202588, 'sideOrientation': _0xc9a9d, 'updatable': _0x466378 }; return _0x4dc3ec['CreateCylinder'](_0x3bf3cb, _0x5a0954, _0x338562); } ; var _0x4dc3ec = function() { function _0x57ade2() {} return _0x57ade2['CreateCylinder'] = function(_0x20f417, _0x285fd7, _0x3c720d) { var _0x13a638 = new _0x3abb19['a'](_0x20f417,_0x3c720d); return _0x285fd7['sideOrientation'] = _0x3abb19['a']['_GetDefaultSideOrientation'](_0x285fd7['sideOrientation']), _0x13a638['_originalBuilderSideOrientation'] = _0x285fd7['sideOrientation'], _0x1487d5['a']['CreateCylinder'](_0x285fd7)['applyToMesh'](_0x13a638, _0x285fd7['updatable']), _0x13a638; } , _0x57ade2; }(); } , function(_0x5029c6, _0x42c68e, _0x34cd80) { 'use strict'; _0x34cd80['d'](_0x42c68e, 'a', function() { return _0xc4b6c6; }); var _0xda37b4 = _0x34cd80(0xb) , _0x29dbe0 = _0x34cd80(0x10) , _0x3de84b = _0x34cd80(0x8) , _0x128fcb = _0x34cd80(0x0) , _0x4f72c9 = _0x34cd80(0x11) , _0x47a6d3 = _0x34cd80(0x27) , _0x27189e = _0x34cd80(0x2d) , _0xc4b6c6 = (_0x34cd80(0x50), function() { function _0x289492(_0x1df698) { this['_useAlternatePickedPointAboveMaxDragAngleDragSpeed'] = -1.1, this['maxDragAngle'] = 0x0, this['_useAlternatePickedPointAboveMaxDragAngle'] = !0x1, this['currentDraggingPointerID'] = -0x1, this['dragging'] = !0x1, this['dragDeltaRatio'] = 0.2, this['updateDragPlane'] = !0x0, this['_debugMode'] = !0x1, this['_moving'] = !0x1, this['onDragObservable'] = new _0x3de84b['c'](), this['onDragStartObservable'] = new _0x3de84b['c'](), this['onDragEndObservable'] = new _0x3de84b['c'](), this['moveAttached'] = !0x0, this['enabled'] = !0x0, this['detachCameraControls'] = !0x0, this['useObjectOrienationForDragging'] = !0x0, this['validateDrag'] = function(_0x394bce) { return !0x0; } , this['_tmpVector'] = new _0x128fcb['x'](0x0,0x0,0x0), this['_alternatePickedPoint'] = new _0x128fcb['x'](0x0,0x0,0x0), this['_worldDragAxis'] = new _0x128fcb['x'](0x0,0x0,0x0), this['_targetPosition'] = new _0x128fcb['x'](0x0,0x0,0x0), this['_attachedElement'] = null, this['_startDragRay'] = new _0x47a6d3['a'](new _0x128fcb['x'](),new _0x128fcb['x']()), this['_lastPointerRay'] = {}, this['_dragDelta'] = new _0x128fcb['x'](), this['_pointA'] = new _0x128fcb['x'](0x0,0x0,0x0), this['_pointB'] = new _0x128fcb['x'](0x0,0x0,0x0), this['_pointC'] = new _0x128fcb['x'](0x0,0x0,0x0), this['_lineA'] = new _0x128fcb['x'](0x0,0x0,0x0), this['_lineB'] = new _0x128fcb['x'](0x0,0x0,0x0), this['_localAxis'] = new _0x128fcb['x'](0x0,0x0,0x0), this['_lookAt'] = new _0x128fcb['x'](0x0,0x0,0x0), this['_options'] = _0x1df698 || {}; var _0x5da23b = 0x0; if (this['_options']['dragAxis'] && _0x5da23b++, this['_options']['dragPlaneNormal'] && _0x5da23b++, _0x5da23b > 0x1) throw 'Multiple\x20drag\x20modes\x20specified\x20in\x20dragBehavior\x20options.\x20Only\x20one\x20expected'; } return Object['defineProperty'](_0x289492['prototype'], 'name', { 'get': function() { return 'PointerDrag'; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x289492['prototype']['init'] = function() {} , _0x289492['prototype']['attach'] = function(_0x3e67c7) { var _0x44a852 = this; this['_scene'] = _0x3e67c7['getScene'](), this['_attachedNode'] = _0x3e67c7, _0x289492['_planeScene'] || (this['_debugMode'] ? _0x289492['_planeScene'] = this['_scene'] : (_0x289492['_planeScene'] = new _0x29dbe0['a'](this['_scene']['getEngine'](),{ 'virtual': !0x0 }), _0x289492['_planeScene']['detachControl'](), this['_scene']['onDisposeObservable']['addOnce'](function() { _0x289492['_planeScene']['dispose'](), _0x289492['_planeScene'] = null; }))), this['_dragPlane'] = _0xda37b4['a']['CreatePlane']('pointerDragPlane', this['_debugMode'] ? 0x1 : 0x2710, _0x289492['_planeScene'], !0x1, _0xda37b4['a']['DOUBLESIDE']), this['lastDragPosition'] = new _0x128fcb['x'](0x0,0x0,0x0); this['_pointerObserver'] = this['_scene']['onPointerObservable']['add'](function(_0x4edaa5, _0x274298) { var _0x4dc78d; if (_0x44a852['enabled']) if (_0x4edaa5['type'] == _0x4f72c9['a']['POINTERDOWN']) !_0x44a852['dragging'] && _0x4edaa5['pickInfo'] && _0x4edaa5['pickInfo']['hit'] && _0x4edaa5['pickInfo']['pickedMesh'] && _0x4edaa5['pickInfo']['pickedPoint'] && _0x4edaa5['pickInfo']['ray'] && (_0x4dc78d = _0x4edaa5['pickInfo']['pickedMesh'], _0x44a852['_attachedNode'] == _0x4dc78d || _0x4dc78d['isDescendantOf'](_0x44a852['_attachedNode'])) && _0x44a852['_startDrag'](_0x4edaa5['event']['pointerId'], _0x4edaa5['pickInfo']['ray'], _0x4edaa5['pickInfo']['pickedPoint']); else if (_0x4edaa5['type'] == _0x4f72c9['a']['POINTERUP']) _0x44a852['currentDraggingPointerID'] == _0x4edaa5['event']['pointerId'] && _0x44a852['releaseDrag'](); else if (_0x4edaa5['type'] == _0x4f72c9['a']['POINTERMOVE']) { var _0x24dc4d = _0x4edaa5['event']['pointerId']; _0x44a852['currentDraggingPointerID'] === _0x289492['_AnyMouseID'] && _0x24dc4d !== _0x289492['_AnyMouseID'] && 'mouse' == _0x4edaa5['event']['pointerType'] && (_0x44a852['_lastPointerRay'][_0x44a852['currentDraggingPointerID']] && (_0x44a852['_lastPointerRay'][_0x24dc4d] = _0x44a852['_lastPointerRay'][_0x44a852['currentDraggingPointerID']], delete _0x44a852['_lastPointerRay'][_0x44a852['currentDraggingPointerID']]), _0x44a852['currentDraggingPointerID'] = _0x24dc4d), _0x44a852['_lastPointerRay'][_0x24dc4d] || (_0x44a852['_lastPointerRay'][_0x24dc4d] = new _0x47a6d3['a'](new _0x128fcb['x'](),new _0x128fcb['x']())), _0x4edaa5['pickInfo'] && _0x4edaa5['pickInfo']['ray'] && (_0x44a852['_lastPointerRay'][_0x24dc4d]['origin']['copyFrom'](_0x4edaa5['pickInfo']['ray']['origin']), _0x44a852['_lastPointerRay'][_0x24dc4d]['direction']['copyFrom'](_0x4edaa5['pickInfo']['ray']['direction']), _0x44a852['currentDraggingPointerID'] == _0x24dc4d && _0x44a852['dragging'] && _0x44a852['_moveDrag'](_0x4edaa5['pickInfo']['ray'])); } }), this['_beforeRenderObserver'] = this['_scene']['onBeforeRenderObservable']['add'](function() { _0x44a852['_moving'] && _0x44a852['moveAttached'] && (_0x27189e['a']['_RemoveAndStorePivotPoint'](_0x44a852['_attachedNode']), _0x44a852['_targetPosition']['subtractToRef'](_0x44a852['_attachedNode']['absolutePosition'], _0x44a852['_tmpVector']), _0x44a852['_tmpVector']['scaleInPlace'](_0x44a852['dragDeltaRatio']), _0x44a852['_attachedNode']['getAbsolutePosition']()['addToRef'](_0x44a852['_tmpVector'], _0x44a852['_tmpVector']), _0x44a852['validateDrag'](_0x44a852['_tmpVector']) && _0x44a852['_attachedNode']['setAbsolutePosition'](_0x44a852['_tmpVector']), _0x27189e['a']['_RestorePivotPoint'](_0x44a852['_attachedNode'])); }); } , _0x289492['prototype']['releaseDrag'] = function() { this['dragging'] = !0x1, this['onDragEndObservable']['notifyObservers']({ 'dragPlanePoint': this['lastDragPosition'], 'pointerId': this['currentDraggingPointerID'] }), this['currentDraggingPointerID'] = -0x1, this['_moving'] = !0x1, this['detachCameraControls'] && this['_attachedElement'] && this['_scene']['activeCamera'] && !this['_scene']['activeCamera']['leftCamera'] && this['_scene']['activeCamera']['attachControl'](this['_attachedElement'], !0x0); } , _0x289492['prototype']['startDrag'] = function(_0x1660df, _0x320b89, _0x134bc0) { void 0x0 === _0x1660df && (_0x1660df = _0x289492['_AnyMouseID']), this['_startDrag'](_0x1660df, _0x320b89, _0x134bc0); var _0x430763 = this['_lastPointerRay'][_0x1660df]; _0x1660df === _0x289492['_AnyMouseID'] && (_0x430763 = this['_lastPointerRay'][Object['keys'](this['_lastPointerRay'])[0x0]]), _0x430763 && this['_moveDrag'](_0x430763); } , _0x289492['prototype']['_startDrag'] = function(_0x344032, _0x45cdb2, _0x23a6af) { if (this['_scene']['activeCamera'] && !this['dragging'] && this['_attachedNode']) { _0x27189e['a']['_RemoveAndStorePivotPoint'](this['_attachedNode']), _0x45cdb2 ? (this['_startDragRay']['direction']['copyFrom'](_0x45cdb2['direction']), this['_startDragRay']['origin']['copyFrom'](_0x45cdb2['origin'])) : (this['_startDragRay']['origin']['copyFrom'](this['_scene']['activeCamera']['position']), this['_attachedNode']['getWorldMatrix']()['getTranslationToRef'](this['_tmpVector']), this['_tmpVector']['subtractToRef'](this['_scene']['activeCamera']['position'], this['_startDragRay']['direction'])), this['_updateDragPlanePosition'](this['_startDragRay'], _0x23a6af || this['_tmpVector']); var _0x417db5 = this['_pickWithRayOnDragPlane'](this['_startDragRay']); _0x417db5 && (this['dragging'] = !0x0, this['currentDraggingPointerID'] = _0x344032, this['lastDragPosition']['copyFrom'](_0x417db5), this['onDragStartObservable']['notifyObservers']({ 'dragPlanePoint': _0x417db5, 'pointerId': this['currentDraggingPointerID'] }), this['_targetPosition']['copyFrom'](this['_attachedNode']['absolutePosition']), this['detachCameraControls'] && this['_scene']['activeCamera'] && !this['_scene']['activeCamera']['leftCamera'] && (this['_scene']['activeCamera']['inputs']['attachedElement'] ? (this['_attachedElement'] = this['_scene']['activeCamera']['inputs']['attachedElement'], this['_scene']['activeCamera']['detachControl'](this['_scene']['activeCamera']['inputs']['attachedElement'])) : this['_attachedElement'] = null)), _0x27189e['a']['_RestorePivotPoint'](this['_attachedNode']); } } , _0x289492['prototype']['_moveDrag'] = function(_0x4445ab) { this['_moving'] = !0x0; var _0x5a3277 = this['_pickWithRayOnDragPlane'](_0x4445ab); if (_0x5a3277) { this['updateDragPlane'] && this['_updateDragPlanePosition'](_0x4445ab, _0x5a3277); var _0x4e260c = 0x0; this['_options']['dragAxis'] ? (_0x128fcb['x']['TransformCoordinatesToRef'](this['_options']['dragAxis'], this['_attachedNode']['getWorldMatrix']()['getRotationMatrix'](), this['_worldDragAxis']), _0x5a3277['subtractToRef'](this['lastDragPosition'], this['_tmpVector']), _0x4e260c = _0x128fcb['x']['Dot'](this['_tmpVector'], this['_worldDragAxis']), this['_worldDragAxis']['scaleToRef'](_0x4e260c, this['_dragDelta'])) : (_0x4e260c = this['_dragDelta']['length'](), _0x5a3277['subtractToRef'](this['lastDragPosition'], this['_dragDelta'])), this['_targetPosition']['addInPlace'](this['_dragDelta']), this['onDragObservable']['notifyObservers']({ 'dragDistance': _0x4e260c, 'delta': this['_dragDelta'], 'dragPlanePoint': _0x5a3277, 'dragPlaneNormal': this['_dragPlane']['forward'], 'pointerId': this['currentDraggingPointerID'] }), this['lastDragPosition']['copyFrom'](_0x5a3277); } } , _0x289492['prototype']['_pickWithRayOnDragPlane'] = function(_0x325d9e) { var _0x43278e = this; if (!_0x325d9e) return null; var _0x4ad1e9 = Math['acos'](_0x128fcb['x']['Dot'](this['_dragPlane']['forward'], _0x325d9e['direction'])); if (_0x4ad1e9 > Math['PI'] / 0x2 && (_0x4ad1e9 = Math['PI'] - _0x4ad1e9), this['maxDragAngle'] > 0x0 && _0x4ad1e9 > this['maxDragAngle']) { if (this['_useAlternatePickedPointAboveMaxDragAngle']) { this['_tmpVector']['copyFrom'](_0x325d9e['direction']), this['_attachedNode']['absolutePosition']['subtractToRef'](_0x325d9e['origin'], this['_alternatePickedPoint']), this['_alternatePickedPoint']['normalize'](), this['_alternatePickedPoint']['scaleInPlace'](this['_useAlternatePickedPointAboveMaxDragAngleDragSpeed'] * _0x128fcb['x']['Dot'](this['_alternatePickedPoint'], this['_tmpVector'])), this['_tmpVector']['addInPlace'](this['_alternatePickedPoint']); var _0x171850 = _0x128fcb['x']['Dot'](this['_dragPlane']['forward'], this['_tmpVector']); return this['_dragPlane']['forward']['scaleToRef'](-_0x171850, this['_alternatePickedPoint']), this['_alternatePickedPoint']['addInPlace'](this['_tmpVector']), this['_alternatePickedPoint']['addInPlace'](this['_attachedNode']['absolutePosition']), this['_alternatePickedPoint']; } return null; } var _0x1c1a9e = _0x289492['_planeScene']['pickWithRay'](_0x325d9e, function(_0x441996) { return _0x441996 == _0x43278e['_dragPlane']; }); return _0x1c1a9e && _0x1c1a9e['hit'] && _0x1c1a9e['pickedMesh'] && _0x1c1a9e['pickedPoint'] ? _0x1c1a9e['pickedPoint'] : null; } , _0x289492['prototype']['_updateDragPlanePosition'] = function(_0x13a1ec, _0x366736) { this['_pointA']['copyFrom'](_0x366736), this['_options']['dragAxis'] ? (this['useObjectOrienationForDragging'] ? _0x128fcb['x']['TransformCoordinatesToRef'](this['_options']['dragAxis'], this['_attachedNode']['getWorldMatrix']()['getRotationMatrix'](), this['_localAxis']) : this['_localAxis']['copyFrom'](this['_options']['dragAxis']), this['_pointA']['addToRef'](this['_localAxis'], this['_pointB']), _0x13a1ec['origin']['subtractToRef'](this['_pointA'], this['_pointC']), this['_pointA']['addToRef'](this['_pointC']['normalize'](), this['_pointC']), this['_pointB']['subtractToRef'](this['_pointA'], this['_lineA']), this['_pointC']['subtractToRef'](this['_pointA'], this['_lineB']), _0x128fcb['x']['CrossToRef'](this['_lineA'], this['_lineB'], this['_lookAt']), _0x128fcb['x']['CrossToRef'](this['_lineA'], this['_lookAt'], this['_lookAt']), this['_lookAt']['normalize'](), this['_dragPlane']['position']['copyFrom'](this['_pointA']), this['_pointA']['addToRef'](this['_lookAt'], this['_lookAt']), this['_dragPlane']['lookAt'](this['_lookAt'])) : this['_options']['dragPlaneNormal'] ? (this['useObjectOrienationForDragging'] ? _0x128fcb['x']['TransformCoordinatesToRef'](this['_options']['dragPlaneNormal'], this['_attachedNode']['getWorldMatrix']()['getRotationMatrix'](), this['_localAxis']) : this['_localAxis']['copyFrom'](this['_options']['dragPlaneNormal']), this['_dragPlane']['position']['copyFrom'](this['_pointA']), this['_pointA']['addToRef'](this['_localAxis'], this['_lookAt']), this['_dragPlane']['lookAt'](this['_lookAt'])) : (this['_dragPlane']['position']['copyFrom'](this['_pointA']), this['_dragPlane']['lookAt'](_0x13a1ec['origin'])), this['_dragPlane']['position']['copyFrom'](this['_attachedNode']['absolutePosition']), this['_dragPlane']['computeWorldMatrix'](!0x0); } , _0x289492['prototype']['detach'] = function() { this['_pointerObserver'] && this['_scene']['onPointerObservable']['remove'](this['_pointerObserver']), this['_beforeRenderObserver'] && this['_scene']['onBeforeRenderObservable']['remove'](this['_beforeRenderObserver']), this['releaseDrag'](); } , _0x289492['_AnyMouseID'] = -0x2, _0x289492; }()); } , function(_0x5e97ce, _0x4da62f, _0x3f4c32) { 'use strict'; _0x3f4c32['d'](_0x4da62f, 'a', function() { return _0x110430; }); var _0x2353ee = _0x3f4c32(0x3) , _0x110430 = function() { function _0x46030e() {} return Object['defineProperty'](_0x46030e, 'ForceFullSceneLoadingForIncremental', { 'get': function() { return _0x46030e['_ForceFullSceneLoadingForIncremental']; }, 'set': function(_0x4376a4) { _0x46030e['_ForceFullSceneLoadingForIncremental'] = _0x4376a4; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x46030e, 'ShowLoadingScreen', { 'get': function() { return _0x46030e['_ShowLoadingScreen']; }, 'set': function(_0x34c895) { _0x46030e['_ShowLoadingScreen'] = _0x34c895; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x46030e, 'loggingLevel', { 'get': function() { return _0x46030e['_loggingLevel']; }, 'set': function(_0x2c8206) { _0x46030e['_loggingLevel'] = _0x2c8206; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x46030e, 'CleanBoneMatrixWeights', { 'get': function() { return _0x46030e['_CleanBoneMatrixWeights']; }, 'set': function(_0xac0bb4) { _0x46030e['_CleanBoneMatrixWeights'] = _0xac0bb4; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x46030e['_ForceFullSceneLoadingForIncremental'] = !0x1, _0x46030e['_ShowLoadingScreen'] = !0x0, _0x46030e['_CleanBoneMatrixWeights'] = !0x1, _0x46030e['_loggingLevel'] = _0x2353ee['a']['SCENELOADER_NO_LOGGING'], _0x46030e; }(); } , function(_0x4f58dc, _0x539395, _0x57d97a) { 'use strict'; var _0x28109c = 'helperFunctions' , _0x468072 = 'const\x20float\x20PI=3.1415926535897932384626433832795;\x0aconst\x20float\x20LinearEncodePowerApprox=2.2;\x0aconst\x20float\x20GammaEncodePowerApprox=1.0/LinearEncodePowerApprox;\x0aconst\x20vec3\x20LuminanceEncodeApprox=vec3(0.2126,0.7152,0.0722);\x0aconst\x20float\x20Epsilon=0.0000001;\x0a#define\x20saturate(x)\x20clamp(x,0.0,1.0)\x0a#define\x20absEps(x)\x20abs(x)+Epsilon\x0a#define\x20maxEps(x)\x20max(x,Epsilon)\x0a#define\x20saturateEps(x)\x20clamp(x,Epsilon,1.0)\x0amat3\x20transposeMat3(mat3\x20inMatrix)\x20{\x0avec3\x20i0=inMatrix[0];\x0avec3\x20i1=inMatrix[1];\x0avec3\x20i2=inMatrix[2];\x0amat3\x20outMatrix=mat3(\x0avec3(i0.x,i1.x,i2.x),\x0avec3(i0.y,i1.y,i2.y),\x0avec3(i0.z,i1.z,i2.z)\x0a);\x0areturn\x20outMatrix;\x0a}\x0a\x0amat3\x20inverseMat3(mat3\x20inMatrix)\x20{\x0afloat\x20a00=inMatrix[0][0],a01=inMatrix[0][1],a02=inMatrix[0][2];\x0afloat\x20a10=inMatrix[1][0],a11=inMatrix[1][1],a12=inMatrix[1][2];\x0afloat\x20a20=inMatrix[2][0],a21=inMatrix[2][1],a22=inMatrix[2][2];\x0afloat\x20b01=a22*a11-a12*a21;\x0afloat\x20b11=-a22*a10+a12*a20;\x0afloat\x20b21=a21*a10-a11*a20;\x0afloat\x20det=a00*b01+a01*b11+a02*b21;\x0areturn\x20mat3(b01,(-a22*a01+a02*a21),(a12*a01-a02*a11),\x0ab11,(a22*a00-a02*a20),(-a12*a00+a02*a10),\x0ab21,(-a21*a00+a01*a20),(a11*a00-a01*a10))/det;\x0a}\x0avec3\x20toLinearSpace(vec3\x20color)\x0a{\x0areturn\x20pow(color,vec3(LinearEncodePowerApprox));\x0a}\x0avec3\x20toGammaSpace(vec3\x20color)\x0a{\x0areturn\x20pow(color,vec3(GammaEncodePowerApprox));\x0a}\x0afloat\x20square(float\x20value)\x0a{\x0areturn\x20value*value;\x0a}\x0afloat\x20pow5(float\x20value)\x20{\x0afloat\x20sq=value*value;\x0areturn\x20sq*sq*value;\x0a}\x0afloat\x20getLuminance(vec3\x20color)\x0a{\x0areturn\x20clamp(dot(color,LuminanceEncodeApprox),0.,1.);\x0a}\x0a\x0afloat\x20getRand(vec2\x20seed)\x20{\x0areturn\x20fract(sin(dot(seed.xy\x20,vec2(12.9898,78.233)))*43758.5453);\x0a}\x0afloat\x20dither(vec2\x20seed,float\x20varianceAmount)\x20{\x0afloat\x20rand=getRand(seed);\x0afloat\x20dither=mix(-varianceAmount/255.0,varianceAmount/255.0,rand);\x0areturn\x20dither;\x0a}\x0a\x0aconst\x20float\x20rgbdMaxRange=255.0;\x0avec4\x20toRGBD(vec3\x20color)\x20{\x0afloat\x20maxRGB=maxEps(max(color.r,max(color.g,color.b)));\x0afloat\x20D=max(rgbdMaxRange/maxRGB,1.);\x0aD=clamp(floor(D)/255.0,0.,1.);\x0a\x0avec3\x20rgb=color.rgb*D;\x0a\x0argb=toGammaSpace(rgb);\x0areturn\x20vec4(rgb,D);\x0a}\x0avec3\x20fromRGBD(vec4\x20rgbd)\x20{\x0a\x0argbd.rgb=toLinearSpace(rgbd.rgb);\x0a\x0areturn\x20rgbd.rgb/rgbd.a;\x0a}'; _0x57d97a(0x5)['a']['IncludesShadersStore'][_0x28109c] = _0x468072; } , function(_0x561ede, _0x474136, _0x8740fe) { 'use strict'; _0x8740fe['d'](_0x474136, 'a', function() { return _0x2ba3a3; }); var _0x48ea46 = _0x8740fe(0x0) , _0x51c73a = _0x8740fe(0xd) , _0x4104ae = _0x8740fe(0x4) , _0x121cb0 = _0x8740fe(0x31) , _0x2a9b98 = _0x8740fe(0x37) , _0xb0aeb3 = _0x8740fe(0x2b) , _0x4dbfa7 = _0x8740fe(0x3) , _0x50203d = _0x8740fe(0x9) , _0x5237ec = _0x8740fe(0x1d) , _0x2ba3a3 = function() { function _0x367f0c(_0x5a621f, _0x5468e8, _0x2cc014, _0x3b42ab, _0x5d024d) { void 0x0 === _0x3b42ab && (_0x3b42ab = !0x1), void 0x0 === _0x5d024d && (_0x5d024d = null), this['delayLoadState'] = _0x4dbfa7['a']['DELAYLOADSTATE_NONE'], this['_totalVertices'] = 0x0, this['_isDisposed'] = !0x1, this['_indexBufferIsUpdatable'] = !0x1, this['id'] = _0x5a621f, this['uniqueId'] = _0x5468e8['getUniqueId'](), this['_engine'] = _0x5468e8['getEngine'](), this['_meshes'] = [], this['_scene'] = _0x5468e8, this['_vertexBuffers'] = {}, this['_indices'] = [], this['_updatable'] = _0x3b42ab, _0x2cc014 ? this['setAllVerticesData'](_0x2cc014, _0x3b42ab) : (this['_totalVertices'] = 0x0, this['_indices'] = []), this['_engine']['getCaps']()['vertexArrayObject'] && (this['_vertexArrayObjects'] = {}), _0x5d024d && (this['applyToMesh'](_0x5d024d), _0x5d024d['computeWorldMatrix'](!0x0)); } return Object['defineProperty'](_0x367f0c['prototype'], 'boundingBias', { 'get': function() { return this['_boundingBias']; }, 'set': function(_0x8266) { this['_boundingBias'] ? this['_boundingBias']['copyFrom'](_0x8266) : this['_boundingBias'] = _0x8266['clone'](), this['_updateBoundingInfo'](!0x0, null); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x367f0c['CreateGeometryForMesh'] = function(_0x52efa3) { var _0x4d11dd = new _0x367f0c(_0x367f0c['RandomId'](),_0x52efa3['getScene']()); return _0x4d11dd['applyToMesh'](_0x52efa3), _0x4d11dd; } , Object['defineProperty'](_0x367f0c['prototype'], 'extend', { 'get': function() { return this['_extend']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x367f0c['prototype']['getScene'] = function() { return this['_scene']; } , _0x367f0c['prototype']['getEngine'] = function() { return this['_engine']; } , _0x367f0c['prototype']['isReady'] = function() { return this['delayLoadState'] === _0x4dbfa7['a']['DELAYLOADSTATE_LOADED'] || this['delayLoadState'] === _0x4dbfa7['a']['DELAYLOADSTATE_NONE']; } , Object['defineProperty'](_0x367f0c['prototype'], 'doNotSerialize', { 'get': function() { for (var _0x33c0b4 = 0x0; _0x33c0b4 < this['_meshes']['length']; _0x33c0b4++) if (!this['_meshes'][_0x33c0b4]['doNotSerialize']) return !0x1; return !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x367f0c['prototype']['_rebuild'] = function() { for (var _0x18da1e in (this['_vertexArrayObjects'] && (this['_vertexArrayObjects'] = {}), 0x0 !== this['_meshes']['length'] && this['_indices'] && (this['_indexBuffer'] = this['_engine']['createIndexBuffer'](this['_indices'])), this['_vertexBuffers'])) { this['_vertexBuffers'][_0x18da1e]['_rebuild'](); } } , _0x367f0c['prototype']['setAllVerticesData'] = function(_0x390a3d, _0x572822) { _0x390a3d['applyToGeometry'](this, _0x572822), this['notifyUpdate'](); } , _0x367f0c['prototype']['setVerticesData'] = function(_0x57485f, _0x3eab86, _0x557e56, _0x523983) { void 0x0 === _0x557e56 && (_0x557e56 = !0x1); var _0x359a09 = new _0x4104ae['b'](this['_engine'],_0x3eab86,_0x57485f,_0x557e56,0x0 === this['_meshes']['length'],_0x523983); this['setVerticesBuffer'](_0x359a09); } , _0x367f0c['prototype']['removeVerticesData'] = function(_0x2548ad) { this['_vertexBuffers'][_0x2548ad] && (this['_vertexBuffers'][_0x2548ad]['dispose'](), delete this['_vertexBuffers'][_0x2548ad]); } , _0x367f0c['prototype']['setVerticesBuffer'] = function(_0x203cac, _0x280949) { void 0x0 === _0x280949 && (_0x280949 = null); var _0x4f9350 = _0x203cac['getKind'](); if (this['_vertexBuffers'][_0x4f9350] && this['_vertexBuffers'][_0x4f9350]['dispose'](), this['_vertexBuffers'][_0x4f9350] = _0x203cac, _0x4f9350 === _0x4104ae['b']['PositionKind']) { var _0x1b97e8 = _0x203cac['getData'](); null != _0x280949 ? this['_totalVertices'] = _0x280949 : null != _0x1b97e8 && (this['_totalVertices'] = _0x1b97e8['length'] / (_0x203cac['byteStride'] / 0x4)), this['_updateExtend'](_0x1b97e8), this['_resetPointsArrayCache'](); for (var _0x422ee6 = this['_meshes'], _0x1eae60 = _0x422ee6['length'], _0x267837 = 0x0; _0x267837 < _0x1eae60; _0x267837++) { var _0x1dc8ab = _0x422ee6[_0x267837]; _0x1dc8ab['_boundingInfo'] = new _0xb0aeb3['a'](this['_extend']['minimum'],this['_extend']['maximum']), _0x1dc8ab['_createGlobalSubMesh'](!0x1), _0x1dc8ab['computeWorldMatrix'](!0x0); } } this['notifyUpdate'](_0x4f9350), this['_vertexArrayObjects'] && (this['_disposeVertexArrayObjects'](), this['_vertexArrayObjects'] = {}); } , _0x367f0c['prototype']['updateVerticesDataDirectly'] = function(_0x328ab6, _0x3968c6, _0x1ab21f, _0x1ee791) { void 0x0 === _0x1ee791 && (_0x1ee791 = !0x1); var _0x535d1d = this['getVertexBuffer'](_0x328ab6); _0x535d1d && (_0x535d1d['updateDirectly'](_0x3968c6, _0x1ab21f, _0x1ee791), this['notifyUpdate'](_0x328ab6)); } , _0x367f0c['prototype']['updateVerticesData'] = function(_0x40b46c, _0x19a5e4, _0x117183) { void 0x0 === _0x117183 && (_0x117183 = !0x1); var _0x56e52a = this['getVertexBuffer'](_0x40b46c); _0x56e52a && (_0x56e52a['update'](_0x19a5e4), _0x40b46c === _0x4104ae['b']['PositionKind'] && this['_updateBoundingInfo'](_0x117183, _0x19a5e4), this['notifyUpdate'](_0x40b46c)); } , _0x367f0c['prototype']['_updateBoundingInfo'] = function(_0x3463ce, _0x37a432) { if (_0x3463ce && this['_updateExtend'](_0x37a432), this['_resetPointsArrayCache'](), _0x3463ce) for (var _0x54c280 = 0x0, _0xd4228f = this['_meshes']; _0x54c280 < _0xd4228f['length']; _0x54c280++) { var _0x50d96b = _0xd4228f[_0x54c280]; _0x50d96b['_boundingInfo'] ? _0x50d96b['_boundingInfo']['reConstruct'](this['_extend']['minimum'], this['_extend']['maximum']) : _0x50d96b['_boundingInfo'] = new _0xb0aeb3['a'](this['_extend']['minimum'],this['_extend']['maximum']); for (var _0x2e1bfd = 0x0, _0x5d8d20 = _0x50d96b['subMeshes']; _0x2e1bfd < _0x5d8d20['length']; _0x2e1bfd++) { _0x5d8d20[_0x2e1bfd]['refreshBoundingInfo'](); } } } , _0x367f0c['prototype']['_bind'] = function(_0x426b06, _0x1cc1ed) { if (_0x426b06) { void 0x0 === _0x1cc1ed && (_0x1cc1ed = this['_indexBuffer']); var _0x481d9b = this['getVertexBuffers'](); _0x481d9b && (_0x1cc1ed == this['_indexBuffer'] && this['_vertexArrayObjects'] ? (this['_vertexArrayObjects'][_0x426b06['key']] || (this['_vertexArrayObjects'][_0x426b06['key']] = this['_engine']['recordVertexArrayObject'](_0x481d9b, _0x1cc1ed, _0x426b06)), this['_engine']['bindVertexArrayObject'](this['_vertexArrayObjects'][_0x426b06['key']], _0x1cc1ed)) : this['_engine']['bindBuffers'](_0x481d9b, _0x1cc1ed, _0x426b06)); } } , _0x367f0c['prototype']['getTotalVertices'] = function() { return this['isReady']() ? this['_totalVertices'] : 0x0; } , _0x367f0c['prototype']['getVerticesData'] = function(_0x199a5f, _0x34553a, _0x42a111) { var _0x2d54b2 = this['getVertexBuffer'](_0x199a5f); if (!_0x2d54b2) return null; var _0x1f1e07 = _0x2d54b2['getData'](); if (!_0x1f1e07) return null; var _0x1a4cfb = _0x2d54b2['getSize']() * _0x4104ae['b']['GetTypeByteLength'](_0x2d54b2['type']) , _0x4f370c = this['_totalVertices'] * _0x2d54b2['getSize'](); if (_0x2d54b2['type'] !== _0x4104ae['b']['FLOAT'] || _0x2d54b2['byteStride'] !== _0x1a4cfb) { var _0x28708c = []; return _0x2d54b2['forEach'](_0x4f370c, function(_0x459a59) { return _0x28708c['push'](_0x459a59); }), _0x28708c; } if (!(_0x1f1e07 instanceof Array || _0x1f1e07 instanceof Float32Array) || 0x0 !== _0x2d54b2['byteOffset'] || _0x1f1e07['length'] !== _0x4f370c) { if (_0x1f1e07 instanceof Array) { var _0xa60fa3 = _0x2d54b2['byteOffset'] / 0x4; return _0x50203d['h']['Slice'](_0x1f1e07, _0xa60fa3, _0xa60fa3 + _0x4f370c); } if (_0x1f1e07 instanceof ArrayBuffer) return new Float32Array(_0x1f1e07,_0x2d54b2['byteOffset'],_0x4f370c); _0xa60fa3 = _0x1f1e07['byteOffset'] + _0x2d54b2['byteOffset']; if (_0x42a111 || _0x34553a && 0x1 !== this['_meshes']['length']) { var _0x11caf8 = new Float32Array(_0x4f370c) , _0x5c4cec = new Float32Array(_0x1f1e07['buffer'],_0xa60fa3,_0x4f370c); return _0x11caf8['set'](_0x5c4cec), _0x11caf8; } return new Float32Array(_0x1f1e07['buffer'],_0xa60fa3,_0x4f370c); } return _0x42a111 || _0x34553a && 0x1 !== this['_meshes']['length'] ? _0x50203d['h']['Slice'](_0x1f1e07) : _0x1f1e07; } , _0x367f0c['prototype']['isVertexBufferUpdatable'] = function(_0x53b5c5) { var _0x3fbf63 = this['_vertexBuffers'][_0x53b5c5]; return !!_0x3fbf63 && _0x3fbf63['isUpdatable'](); } , _0x367f0c['prototype']['getVertexBuffer'] = function(_0x2af1d0) { return this['isReady']() ? this['_vertexBuffers'][_0x2af1d0] : null; } , _0x367f0c['prototype']['getVertexBuffers'] = function() { return this['isReady']() ? this['_vertexBuffers'] : null; } , _0x367f0c['prototype']['isVerticesDataPresent'] = function(_0x14a5e5) { return this['_vertexBuffers'] ? void 0x0 !== this['_vertexBuffers'][_0x14a5e5] : !!this['_delayInfo'] && -0x1 !== this['_delayInfo']['indexOf'](_0x14a5e5); } , _0x367f0c['prototype']['getVerticesDataKinds'] = function() { var _0x1290e8, _0x523c86 = []; if (!this['_vertexBuffers'] && this['_delayInfo']) for (_0x1290e8 in this['_delayInfo']) _0x523c86['push'](_0x1290e8); else for (_0x1290e8 in this['_vertexBuffers']) _0x523c86['push'](_0x1290e8); return _0x523c86; } , _0x367f0c['prototype']['updateIndices'] = function(_0x357c50, _0x2b6015, _0x273a47) { if (void 0x0 === _0x273a47 && (_0x273a47 = !0x1), this['_indexBuffer']) if (this['_indexBufferIsUpdatable']) { var _0x2b32e1 = _0x357c50['length'] !== this['_indices']['length']; if (_0x273a47 || (this['_indices'] = _0x357c50['slice']()), this['_engine']['updateDynamicIndexBuffer'](this['_indexBuffer'], _0x357c50, _0x2b6015), _0x2b32e1) for (var _0x3f6bb1 = 0x0, _0x199a6f = this['_meshes']; _0x3f6bb1 < _0x199a6f['length']; _0x3f6bb1++) { _0x199a6f[_0x3f6bb1]['_createGlobalSubMesh'](!0x0); } } else this['setIndices'](_0x357c50, null, !0x0); } , _0x367f0c['prototype']['setIndices'] = function(_0x1a5d42, _0x2542b2, _0x461675) { void 0x0 === _0x2542b2 && (_0x2542b2 = null), void 0x0 === _0x461675 && (_0x461675 = !0x1), this['_indexBuffer'] && this['_engine']['_releaseBuffer'](this['_indexBuffer']), this['_disposeVertexArrayObjects'](), this['_indices'] = _0x1a5d42, this['_indexBufferIsUpdatable'] = _0x461675, 0x0 !== this['_meshes']['length'] && this['_indices'] && (this['_indexBuffer'] = this['_engine']['createIndexBuffer'](this['_indices'], _0x461675)), null != _0x2542b2 && (this['_totalVertices'] = _0x2542b2); for (var _0x4c024e = 0x0, _0x3462cd = this['_meshes']; _0x4c024e < _0x3462cd['length']; _0x4c024e++) { _0x3462cd[_0x4c024e]['_createGlobalSubMesh'](!0x0); } this['notifyUpdate'](); } , _0x367f0c['prototype']['getTotalIndices'] = function() { return this['isReady']() ? this['_indices']['length'] : 0x0; } , _0x367f0c['prototype']['getIndices'] = function(_0x8beb26, _0x4f9554) { if (!this['isReady']()) return null; var _0x32f661 = this['_indices']; if (_0x4f9554 || _0x8beb26 && 0x1 !== this['_meshes']['length']) { for (var _0x47b630 = _0x32f661['length'], _0x2e4a7c = [], _0x57fd6d = 0x0; _0x57fd6d < _0x47b630; _0x57fd6d++) _0x2e4a7c['push'](_0x32f661[_0x57fd6d]); return _0x2e4a7c; } return _0x32f661; } , _0x367f0c['prototype']['getIndexBuffer'] = function() { return this['isReady']() ? this['_indexBuffer'] : null; } , _0x367f0c['prototype']['_releaseVertexArrayObject'] = function(_0x414ac9) { void 0x0 === _0x414ac9 && (_0x414ac9 = null), _0x414ac9 && this['_vertexArrayObjects'] && this['_vertexArrayObjects'][_0x414ac9['key']] && (this['_engine']['releaseVertexArrayObject'](this['_vertexArrayObjects'][_0x414ac9['key']]), delete this['_vertexArrayObjects'][_0x414ac9['key']]); } , _0x367f0c['prototype']['releaseForMesh'] = function(_0x54cb91, _0x580a2f) { var _0xfc7917 = this['_meshes'] , _0x318f7d = _0xfc7917['indexOf'](_0x54cb91); -0x1 !== _0x318f7d && (_0xfc7917['splice'](_0x318f7d, 0x1), _0x54cb91['_geometry'] = null, 0x0 === _0xfc7917['length'] && _0x580a2f && this['dispose']()); } , _0x367f0c['prototype']['applyToMesh'] = function(_0x388351) { if (_0x388351['_geometry'] !== this) { var _0x243297 = _0x388351['_geometry']; _0x243297 && _0x243297['releaseForMesh'](_0x388351); var _0x27cdb5 = this['_meshes']; _0x388351['_geometry'] = this, this['_scene']['pushGeometry'](this), _0x27cdb5['push'](_0x388351), this['isReady']() ? this['_applyToMesh'](_0x388351) : _0x388351['_boundingInfo'] = this['_boundingInfo']; } } , _0x367f0c['prototype']['_updateExtend'] = function(_0x1c3924) { void 0x0 === _0x1c3924 && (_0x1c3924 = null), _0x1c3924 || (_0x1c3924 = this['getVerticesData'](_0x4104ae['b']['PositionKind'])), this['_extend'] = _0x50203d['h']['ExtractMinAndMax'](_0x1c3924, 0x0, this['_totalVertices'], this['boundingBias'], 0x3); } , _0x367f0c['prototype']['_applyToMesh'] = function(_0x54609b) { var _0x412195 = this['_meshes']['length']; for (var _0x5723c2 in this['_vertexBuffers']) { 0x1 === _0x412195 && this['_vertexBuffers'][_0x5723c2]['create'](); var _0x8d90f6 = this['_vertexBuffers'][_0x5723c2]['getBuffer'](); _0x8d90f6 && (_0x8d90f6['references'] = _0x412195), _0x5723c2 === _0x4104ae['b']['PositionKind'] && (this['_extend'] || this['_updateExtend'](), _0x54609b['_boundingInfo'] = new _0xb0aeb3['a'](this['_extend']['minimum'],this['_extend']['maximum']), _0x54609b['_createGlobalSubMesh'](!0x1), _0x54609b['_updateBoundingInfo']()); } 0x1 === _0x412195 && this['_indices'] && this['_indices']['length'] > 0x0 && (this['_indexBuffer'] = this['_engine']['createIndexBuffer'](this['_indices'])), this['_indexBuffer'] && (this['_indexBuffer']['references'] = _0x412195), _0x54609b['_syncGeometryWithMorphTargetManager'](), _0x54609b['synchronizeInstances'](); } , _0x367f0c['prototype']['notifyUpdate'] = function(_0x1fda3d) { this['onGeometryUpdated'] && this['onGeometryUpdated'](this, _0x1fda3d); for (var _0x31febb = 0x0, _0x549b3b = this['_meshes']; _0x31febb < _0x549b3b['length']; _0x31febb++) { _0x549b3b[_0x31febb]['_markSubMeshesAsAttributesDirty'](); } } , _0x367f0c['prototype']['load'] = function(_0x3f3b7c, _0x401b98) { this['delayLoadState'] !== _0x4dbfa7['a']['DELAYLOADSTATE_LOADING'] && (this['isReady']() ? _0x401b98 && _0x401b98() : (this['delayLoadState'] = _0x4dbfa7['a']['DELAYLOADSTATE_LOADING'], this['_queueLoad'](_0x3f3b7c, _0x401b98))); } , _0x367f0c['prototype']['_queueLoad'] = function(_0x4b9699, _0x31fed5) { var _0x34df9c = this; this['delayLoadingFile'] && (_0x4b9699['_addPendingData'](this), _0x4b9699['_loadFile'](this['delayLoadingFile'], function(_0x511dea) { if (_0x34df9c['_delayLoadingFunction']) { _0x34df9c['_delayLoadingFunction'](JSON['parse'](_0x511dea), _0x34df9c), _0x34df9c['delayLoadState'] = _0x4dbfa7['a']['DELAYLOADSTATE_LOADED'], _0x34df9c['_delayInfo'] = [], _0x4b9699['_removePendingData'](_0x34df9c); for (var _0x36543e = _0x34df9c['_meshes'], _0xaecca3 = _0x36543e['length'], _0x3d71b1 = 0x0; _0x3d71b1 < _0xaecca3; _0x3d71b1++) _0x34df9c['_applyToMesh'](_0x36543e[_0x3d71b1]); _0x31fed5 && _0x31fed5(); } }, void 0x0, !0x0)); } , _0x367f0c['prototype']['toLeftHanded'] = function() { var _0x70c884 = this['getIndices'](!0x1); if (null != _0x70c884 && _0x70c884['length'] > 0x0) { for (var _0x4684c4 = 0x0; _0x4684c4 < _0x70c884['length']; _0x4684c4 += 0x3) { var _0x501a0c = _0x70c884[_0x4684c4 + 0x0]; _0x70c884[_0x4684c4 + 0x0] = _0x70c884[_0x4684c4 + 0x2], _0x70c884[_0x4684c4 + 0x2] = _0x501a0c; } this['setIndices'](_0x70c884); } var _0x3f25f3 = this['getVerticesData'](_0x4104ae['b']['PositionKind'], !0x1); if (null != _0x3f25f3 && _0x3f25f3['length'] > 0x0) { for (_0x4684c4 = 0x0; _0x4684c4 < _0x3f25f3['length']; _0x4684c4 += 0x3) _0x3f25f3[_0x4684c4 + 0x2] = -_0x3f25f3[_0x4684c4 + 0x2]; this['setVerticesData'](_0x4104ae['b']['PositionKind'], _0x3f25f3, !0x1); } var _0x3d2b8c = this['getVerticesData'](_0x4104ae['b']['NormalKind'], !0x1); if (null != _0x3d2b8c && _0x3d2b8c['length'] > 0x0) { for (_0x4684c4 = 0x0; _0x4684c4 < _0x3d2b8c['length']; _0x4684c4 += 0x3) _0x3d2b8c[_0x4684c4 + 0x2] = -_0x3d2b8c[_0x4684c4 + 0x2]; this['setVerticesData'](_0x4104ae['b']['NormalKind'], _0x3d2b8c, !0x1); } } , _0x367f0c['prototype']['_resetPointsArrayCache'] = function() { this['_positions'] = null; } , _0x367f0c['prototype']['_generatePointsArray'] = function() { if (this['_positions']) return !0x0; var _0x489f49 = this['getVerticesData'](_0x4104ae['b']['PositionKind']); if (!_0x489f49 || 0x0 === _0x489f49['length']) return !0x1; this['_positions'] = []; for (var _0x382499 = 0x0; _0x382499 < _0x489f49['length']; _0x382499 += 0x3) this['_positions']['push'](_0x48ea46['x']['FromArray'](_0x489f49, _0x382499)); return !0x0; } , _0x367f0c['prototype']['isDisposed'] = function() { return this['_isDisposed']; } , _0x367f0c['prototype']['_disposeVertexArrayObjects'] = function() { if (this['_vertexArrayObjects']) { for (var _0x4bb75c in this['_vertexArrayObjects']) this['_engine']['releaseVertexArrayObject'](this['_vertexArrayObjects'][_0x4bb75c]); this['_vertexArrayObjects'] = {}; } } , _0x367f0c['prototype']['dispose'] = function() { var _0x1d0fee, _0x3bc8be = this['_meshes'], _0x520129 = _0x3bc8be['length']; for (_0x1d0fee = 0x0; _0x1d0fee < _0x520129; _0x1d0fee++) this['releaseForMesh'](_0x3bc8be[_0x1d0fee]); for (var _0x502a9f in (this['_meshes'] = [], this['_disposeVertexArrayObjects'](), this['_vertexBuffers'])) this['_vertexBuffers'][_0x502a9f]['dispose'](); this['_vertexBuffers'] = {}, this['_totalVertices'] = 0x0, this['_indexBuffer'] && this['_engine']['_releaseBuffer'](this['_indexBuffer']), this['_indexBuffer'] = null, this['_indices'] = [], this['delayLoadState'] = _0x4dbfa7['a']['DELAYLOADSTATE_NONE'], this['delayLoadingFile'] = null, this['_delayLoadingFunction'] = null, this['_delayInfo'] = [], this['_boundingInfo'] = null, this['_scene']['removeGeometry'](this), this['_isDisposed'] = !0x0; } , _0x367f0c['prototype']['copy'] = function(_0x593336) { var _0x46852c = new _0x51c73a['a'](); _0x46852c['indices'] = []; var _0x11ebe7 = this['getIndices'](); if (_0x11ebe7) for (var _0xcf5769 = 0x0; _0xcf5769 < _0x11ebe7['length']; _0xcf5769++) _0x46852c['indices']['push'](_0x11ebe7[_0xcf5769]); var _0x110e6d, _0x2ece9c = !0x1, _0x121d12 = !0x1; for (_0x110e6d in this['_vertexBuffers']) { var _0x27482a = this['getVerticesData'](_0x110e6d); if (_0x27482a && (_0x27482a instanceof Float32Array ? _0x46852c['set'](new Float32Array(_0x27482a), _0x110e6d) : _0x46852c['set'](_0x27482a['slice'](0x0), _0x110e6d), !_0x121d12)) { var _0x5d5de1 = this['getVertexBuffer'](_0x110e6d); _0x5d5de1 && (_0x121d12 = !(_0x2ece9c = _0x5d5de1['isUpdatable']())); } } var _0x234ee0 = new _0x367f0c(_0x593336,this['_scene'],_0x46852c,_0x2ece9c); for (_0x110e6d in (_0x234ee0['delayLoadState'] = this['delayLoadState'], _0x234ee0['delayLoadingFile'] = this['delayLoadingFile'], _0x234ee0['_delayLoadingFunction'] = this['_delayLoadingFunction'], this['_delayInfo'])) _0x234ee0['_delayInfo'] = _0x234ee0['_delayInfo'] || [], _0x234ee0['_delayInfo']['push'](_0x110e6d); return _0x234ee0['_boundingInfo'] = new _0xb0aeb3['a'](this['_extend']['minimum'],this['_extend']['maximum']), _0x234ee0; } , _0x367f0c['prototype']['serialize'] = function() { var _0x4ede40 = {}; return _0x4ede40['id'] = this['id'], _0x4ede40['updatable'] = this['_updatable'], _0x5237ec['a'] && _0x5237ec['a']['HasTags'](this) && (_0x4ede40['tags'] = _0x5237ec['a']['GetTags'](this)), _0x4ede40; } , _0x367f0c['prototype']['toNumberArray'] = function(_0x4a6b80) { return Array['isArray'](_0x4a6b80) ? _0x4a6b80 : Array['prototype']['slice']['call'](_0x4a6b80); } , _0x367f0c['prototype']['serializeVerticeData'] = function() { var _0xd89dd0 = this['serialize'](); return this['isVerticesDataPresent'](_0x4104ae['b']['PositionKind']) && (_0xd89dd0['positions'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['PositionKind'])), this['isVertexBufferUpdatable'](_0x4104ae['b']['PositionKind']) && (_0xd89dd0['positions']['_updatable'] = !0x0)), this['isVerticesDataPresent'](_0x4104ae['b']['NormalKind']) && (_0xd89dd0['normals'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['NormalKind'])), this['isVertexBufferUpdatable'](_0x4104ae['b']['NormalKind']) && (_0xd89dd0['normals']['_updatable'] = !0x0)), this['isVerticesDataPresent'](_0x4104ae['b']['TangentKind']) && (_0xd89dd0['tangets'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['TangentKind'])), this['isVertexBufferUpdatable'](_0x4104ae['b']['TangentKind']) && (_0xd89dd0['tangets']['_updatable'] = !0x0)), this['isVerticesDataPresent'](_0x4104ae['b']['UVKind']) && (_0xd89dd0['uvs'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['UVKind'])), this['isVertexBufferUpdatable'](_0x4104ae['b']['UVKind']) && (_0xd89dd0['uvs']['_updatable'] = !0x0)), this['isVerticesDataPresent'](_0x4104ae['b']['UV2Kind']) && (_0xd89dd0['uv2s'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['UV2Kind'])), this['isVertexBufferUpdatable'](_0x4104ae['b']['UV2Kind']) && (_0xd89dd0['uv2s']['_updatable'] = !0x0)), this['isVerticesDataPresent'](_0x4104ae['b']['UV3Kind']) && (_0xd89dd0['uv3s'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['UV3Kind'])), this['isVertexBufferUpdatable'](_0x4104ae['b']['UV3Kind']) && (_0xd89dd0['uv3s']['_updatable'] = !0x0)), this['isVerticesDataPresent'](_0x4104ae['b']['UV4Kind']) && (_0xd89dd0['uv4s'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['UV4Kind'])), this['isVertexBufferUpdatable'](_0x4104ae['b']['UV4Kind']) && (_0xd89dd0['uv4s']['_updatable'] = !0x0)), this['isVerticesDataPresent'](_0x4104ae['b']['UV5Kind']) && (_0xd89dd0['uv5s'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['UV5Kind'])), this['isVertexBufferUpdatable'](_0x4104ae['b']['UV5Kind']) && (_0xd89dd0['uv5s']['_updatable'] = !0x0)), this['isVerticesDataPresent'](_0x4104ae['b']['UV6Kind']) && (_0xd89dd0['uv6s'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['UV6Kind'])), this['isVertexBufferUpdatable'](_0x4104ae['b']['UV6Kind']) && (_0xd89dd0['uv6s']['_updatable'] = !0x0)), this['isVerticesDataPresent'](_0x4104ae['b']['ColorKind']) && (_0xd89dd0['colors'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['ColorKind'])), this['isVertexBufferUpdatable'](_0x4104ae['b']['ColorKind']) && (_0xd89dd0['colors']['_updatable'] = !0x0)), this['isVerticesDataPresent'](_0x4104ae['b']['MatricesIndicesKind']) && (_0xd89dd0['matricesIndices'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['MatricesIndicesKind'])), _0xd89dd0['matricesIndices']['_isExpanded'] = !0x0, this['isVertexBufferUpdatable'](_0x4104ae['b']['MatricesIndicesKind']) && (_0xd89dd0['matricesIndices']['_updatable'] = !0x0)), this['isVerticesDataPresent'](_0x4104ae['b']['MatricesWeightsKind']) && (_0xd89dd0['matricesWeights'] = this['toNumberArray'](this['getVerticesData'](_0x4104ae['b']['MatricesWeightsKind'])), this['isVertexBufferUpdatable'](_0x4104ae['b']['MatricesWeightsKind']) && (_0xd89dd0['matricesWeights']['_updatable'] = !0x0)), _0xd89dd0['indices'] = this['toNumberArray'](this['getIndices']()), _0xd89dd0; } , _0x367f0c['ExtractFromMesh'] = function(_0x2db4c5, _0x42a148) { var _0x26e6ac = _0x2db4c5['_geometry']; return _0x26e6ac ? _0x26e6ac['copy'](_0x42a148) : null; } , _0x367f0c['RandomId'] = function() { return _0x50203d['h']['RandomId'](); } , _0x367f0c['_ImportGeometry'] = function(_0x3be215, _0xf41764) { var _0x1b7339 = _0xf41764['getScene']() , _0x9c15e1 = _0x3be215['geometryId']; if (_0x9c15e1) { var _0x379ab4 = _0x1b7339['getGeometryByID'](_0x9c15e1); _0x379ab4 && _0x379ab4['applyToMesh'](_0xf41764); } else if (_0x3be215 instanceof ArrayBuffer) { var _0xf7187e = _0xf41764['_binaryInfo']; if (_0xf7187e['positionsAttrDesc'] && _0xf7187e['positionsAttrDesc']['count'] > 0x0) { var _0x340c51 = new Float32Array(_0x3be215,_0xf7187e['positionsAttrDesc']['offset'],_0xf7187e['positionsAttrDesc']['count']); _0xf41764['setVerticesData'](_0x4104ae['b']['PositionKind'], _0x340c51, !0x1); } if (_0xf7187e['normalsAttrDesc'] && _0xf7187e['normalsAttrDesc']['count'] > 0x0) { var _0x22fd0e = new Float32Array(_0x3be215,_0xf7187e['normalsAttrDesc']['offset'],_0xf7187e['normalsAttrDesc']['count']); _0xf41764['setVerticesData'](_0x4104ae['b']['NormalKind'], _0x22fd0e, !0x1); } if (_0xf7187e['tangetsAttrDesc'] && _0xf7187e['tangetsAttrDesc']['count'] > 0x0) { var _0x3f54c0 = new Float32Array(_0x3be215,_0xf7187e['tangetsAttrDesc']['offset'],_0xf7187e['tangetsAttrDesc']['count']); _0xf41764['setVerticesData'](_0x4104ae['b']['TangentKind'], _0x3f54c0, !0x1); } if (_0xf7187e['uvsAttrDesc'] && _0xf7187e['uvsAttrDesc']['count'] > 0x0) { var _0x5b29a4 = new Float32Array(_0x3be215,_0xf7187e['uvsAttrDesc']['offset'],_0xf7187e['uvsAttrDesc']['count']); _0xf41764['setVerticesData'](_0x4104ae['b']['UVKind'], _0x5b29a4, !0x1); } if (_0xf7187e['uvs2AttrDesc'] && _0xf7187e['uvs2AttrDesc']['count'] > 0x0) { var _0x2ea56f = new Float32Array(_0x3be215,_0xf7187e['uvs2AttrDesc']['offset'],_0xf7187e['uvs2AttrDesc']['count']); _0xf41764['setVerticesData'](_0x4104ae['b']['UV2Kind'], _0x2ea56f, !0x1); } if (_0xf7187e['uvs3AttrDesc'] && _0xf7187e['uvs3AttrDesc']['count'] > 0x0) { var _0xa0f137 = new Float32Array(_0x3be215,_0xf7187e['uvs3AttrDesc']['offset'],_0xf7187e['uvs3AttrDesc']['count']); _0xf41764['setVerticesData'](_0x4104ae['b']['UV3Kind'], _0xa0f137, !0x1); } if (_0xf7187e['uvs4AttrDesc'] && _0xf7187e['uvs4AttrDesc']['count'] > 0x0) { var _0x86c33c = new Float32Array(_0x3be215,_0xf7187e['uvs4AttrDesc']['offset'],_0xf7187e['uvs4AttrDesc']['count']); _0xf41764['setVerticesData'](_0x4104ae['b']['UV4Kind'], _0x86c33c, !0x1); } if (_0xf7187e['uvs5AttrDesc'] && _0xf7187e['uvs5AttrDesc']['count'] > 0x0) { var _0x24ea1e = new Float32Array(_0x3be215,_0xf7187e['uvs5AttrDesc']['offset'],_0xf7187e['uvs5AttrDesc']['count']); _0xf41764['setVerticesData'](_0x4104ae['b']['UV5Kind'], _0x24ea1e, !0x1); } if (_0xf7187e['uvs6AttrDesc'] && _0xf7187e['uvs6AttrDesc']['count'] > 0x0) { var _0x2a3132 = new Float32Array(_0x3be215,_0xf7187e['uvs6AttrDesc']['offset'],_0xf7187e['uvs6AttrDesc']['count']); _0xf41764['setVerticesData'](_0x4104ae['b']['UV6Kind'], _0x2a3132, !0x1); } if (_0xf7187e['colorsAttrDesc'] && _0xf7187e['colorsAttrDesc']['count'] > 0x0) { var _0x2d6b4c = new Float32Array(_0x3be215,_0xf7187e['colorsAttrDesc']['offset'],_0xf7187e['colorsAttrDesc']['count']); _0xf41764['setVerticesData'](_0x4104ae['b']['ColorKind'], _0x2d6b4c, !0x1, _0xf7187e['colorsAttrDesc']['stride']); } if (_0xf7187e['matricesIndicesAttrDesc'] && _0xf7187e['matricesIndicesAttrDesc']['count'] > 0x0) { for (var _0x142829 = new Int32Array(_0x3be215,_0xf7187e['matricesIndicesAttrDesc']['offset'],_0xf7187e['matricesIndicesAttrDesc']['count']), _0x241b00 = [], _0x10aa67 = 0x0; _0x10aa67 < _0x142829['length']; _0x10aa67++) { var _0x3ec9a6 = _0x142829[_0x10aa67]; _0x241b00['push'](0xff & _0x3ec9a6), _0x241b00['push']((0xff00 & _0x3ec9a6) >> 0x8), _0x241b00['push']((0xff0000 & _0x3ec9a6) >> 0x10), _0x241b00['push'](_0x3ec9a6 >> 0x18); } _0xf41764['setVerticesData'](_0x4104ae['b']['MatricesIndicesKind'], _0x241b00, !0x1); } if (_0xf7187e['matricesWeightsAttrDesc'] && _0xf7187e['matricesWeightsAttrDesc']['count'] > 0x0) { var _0x417e61 = new Float32Array(_0x3be215,_0xf7187e['matricesWeightsAttrDesc']['offset'],_0xf7187e['matricesWeightsAttrDesc']['count']); _0xf41764['setVerticesData'](_0x4104ae['b']['MatricesWeightsKind'], _0x417e61, !0x1); } if (_0xf7187e['indicesAttrDesc'] && _0xf7187e['indicesAttrDesc']['count'] > 0x0) { var _0x216327 = new Int32Array(_0x3be215,_0xf7187e['indicesAttrDesc']['offset'],_0xf7187e['indicesAttrDesc']['count']); _0xf41764['setIndices'](_0x216327, null); } if (_0xf7187e['subMeshesAttrDesc'] && _0xf7187e['subMeshesAttrDesc']['count'] > 0x0) { var _0x10d2a0 = new Int32Array(_0x3be215,_0xf7187e['subMeshesAttrDesc']['offset'],0x5 * _0xf7187e['subMeshesAttrDesc']['count']); _0xf41764['subMeshes'] = []; for (_0x10aa67 = 0x0; _0x10aa67 < _0xf7187e['subMeshesAttrDesc']['count']; _0x10aa67++) { var _0x49c2e6 = _0x10d2a0[0x5 * _0x10aa67 + 0x0] , _0x531133 = _0x10d2a0[0x5 * _0x10aa67 + 0x1] , _0x51a4c3 = _0x10d2a0[0x5 * _0x10aa67 + 0x2] , _0xdeebe4 = _0x10d2a0[0x5 * _0x10aa67 + 0x3] , _0x1d4c64 = _0x10d2a0[0x5 * _0x10aa67 + 0x4]; _0x121cb0['b']['AddToMesh'](_0x49c2e6, _0x531133, _0x51a4c3, _0xdeebe4, _0x1d4c64, _0xf41764); } } } else if (_0x3be215['positions'] && _0x3be215['normals'] && _0x3be215['indices']) { if (_0xf41764['setVerticesData'](_0x4104ae['b']['PositionKind'], _0x3be215['positions'], _0x3be215['positions']['_updatable']), _0xf41764['setVerticesData'](_0x4104ae['b']['NormalKind'], _0x3be215['normals'], _0x3be215['normals']['_updatable']), _0x3be215['tangents'] && _0xf41764['setVerticesData'](_0x4104ae['b']['TangentKind'], _0x3be215['tangents'], _0x3be215['tangents']['_updatable']), _0x3be215['uvs'] && _0xf41764['setVerticesData'](_0x4104ae['b']['UVKind'], _0x3be215['uvs'], _0x3be215['uvs']['_updatable']), _0x3be215['uvs2'] && _0xf41764['setVerticesData'](_0x4104ae['b']['UV2Kind'], _0x3be215['uvs2'], _0x3be215['uvs2']['_updatable']), _0x3be215['uvs3'] && _0xf41764['setVerticesData'](_0x4104ae['b']['UV3Kind'], _0x3be215['uvs3'], _0x3be215['uvs3']['_updatable']), _0x3be215['uvs4'] && _0xf41764['setVerticesData'](_0x4104ae['b']['UV4Kind'], _0x3be215['uvs4'], _0x3be215['uvs4']['_updatable']), _0x3be215['uvs5'] && _0xf41764['setVerticesData'](_0x4104ae['b']['UV5Kind'], _0x3be215['uvs5'], _0x3be215['uvs5']['_updatable']), _0x3be215['uvs6'] && _0xf41764['setVerticesData'](_0x4104ae['b']['UV6Kind'], _0x3be215['uvs6'], _0x3be215['uvs6']['_updatable']), _0x3be215['colors'] && _0xf41764['setVerticesData'](_0x4104ae['b']['ColorKind'], _0x48ea46['f']['CheckColors4'](_0x3be215['colors'], _0x3be215['positions']['length'] / 0x3), _0x3be215['colors']['_updatable']), _0x3be215['matricesIndices']) if (_0x3be215['matricesIndices']['_isExpanded']) delete _0x3be215['matricesIndices']['_isExpanded'], _0xf41764['setVerticesData'](_0x4104ae['b']['MatricesIndicesKind'], _0x3be215['matricesIndices'], _0x3be215['matricesIndices']['_updatable']); else { for (_0x241b00 = [], _0x10aa67 = 0x0; _0x10aa67 < _0x3be215['matricesIndices']['length']; _0x10aa67++) { var _0x1335e9 = _0x3be215['matricesIndices'][_0x10aa67]; _0x241b00['push'](0xff & _0x1335e9), _0x241b00['push']((0xff00 & _0x1335e9) >> 0x8), _0x241b00['push']((0xff0000 & _0x1335e9) >> 0x10), _0x241b00['push'](_0x1335e9 >> 0x18); } _0xf41764['setVerticesData'](_0x4104ae['b']['MatricesIndicesKind'], _0x241b00, _0x3be215['matricesIndices']['_updatable']); } if (_0x3be215['matricesIndicesExtra']) if (_0x3be215['matricesIndicesExtra']['_isExpanded']) delete _0x3be215['matricesIndices']['_isExpanded'], _0xf41764['setVerticesData'](_0x4104ae['b']['MatricesIndicesExtraKind'], _0x3be215['matricesIndicesExtra'], _0x3be215['matricesIndicesExtra']['_updatable']); else { for (_0x241b00 = [], _0x10aa67 = 0x0; _0x10aa67 < _0x3be215['matricesIndicesExtra']['length']; _0x10aa67++) { _0x1335e9 = _0x3be215['matricesIndicesExtra'][_0x10aa67]; _0x241b00['push'](0xff & _0x1335e9), _0x241b00['push']((0xff00 & _0x1335e9) >> 0x8), _0x241b00['push']((0xff0000 & _0x1335e9) >> 0x10), _0x241b00['push'](_0x1335e9 >> 0x18); } _0xf41764['setVerticesData'](_0x4104ae['b']['MatricesIndicesExtraKind'], _0x241b00, _0x3be215['matricesIndicesExtra']['_updatable']); } _0x3be215['matricesWeights'] && (_0x367f0c['_CleanMatricesWeights'](_0x3be215, _0xf41764), _0xf41764['setVerticesData'](_0x4104ae['b']['MatricesWeightsKind'], _0x3be215['matricesWeights'], _0x3be215['matricesWeights']['_updatable'])), _0x3be215['matricesWeightsExtra'] && _0xf41764['setVerticesData'](_0x4104ae['b']['MatricesWeightsExtraKind'], _0x3be215['matricesWeightsExtra'], _0x3be215['matricesWeights']['_updatable']), _0xf41764['setIndices'](_0x3be215['indices'], null); } if (_0x3be215['subMeshes']) { _0xf41764['subMeshes'] = []; for (var _0x5bd827 = 0x0; _0x5bd827 < _0x3be215['subMeshes']['length']; _0x5bd827++) { var _0x15be09 = _0x3be215['subMeshes'][_0x5bd827]; _0x121cb0['b']['AddToMesh'](_0x15be09['materialIndex'], _0x15be09['verticesStart'], _0x15be09['verticesCount'], _0x15be09['indexStart'], _0x15be09['indexCount'], _0xf41764); } } _0xf41764['_shouldGenerateFlatShading'] && (_0xf41764['convertToFlatShadedMesh'](), delete _0xf41764['_shouldGenerateFlatShading']), _0xf41764['computeWorldMatrix'](!0x0), _0x1b7339['onMeshImportedObservable']['notifyObservers'](_0xf41764); } , _0x367f0c['_CleanMatricesWeights'] = function(_0x189a33, _0x240655) { if (_0x2a9b98['a']['CleanBoneMatrixWeights']) { var _0x3c5a9c = 0x0; if (_0x189a33['skeletonId'] > -0x1) { var _0xe9323a = _0x240655['getScene']()['getLastSkeletonByID'](_0x189a33['skeletonId']); if (_0xe9323a) { _0x3c5a9c = _0xe9323a['bones']['length']; for (var _0x1b88df = _0x240655['getVerticesData'](_0x4104ae['b']['MatricesIndicesKind']), _0x77faf2 = _0x240655['getVerticesData'](_0x4104ae['b']['MatricesIndicesExtraKind']), _0x4ae9eb = _0x189a33['matricesWeights'], _0x4868e3 = _0x189a33['matricesWeightsExtra'], _0x1024c3 = _0x189a33['numBoneInfluencer'], _0x233a59 = _0x4ae9eb['length'], _0x55166e = 0x0; _0x55166e < _0x233a59; _0x55166e += 0x4) { for (var _0x9ec0d3 = 0x0, _0x10179e = -0x1, _0xd91921 = 0x0; _0xd91921 < 0x4; _0xd91921++) { _0x9ec0d3 += _0x525757 = _0x4ae9eb[_0x55166e + _0xd91921], _0x525757 < 0.001 && _0x10179e < 0x0 && (_0x10179e = _0xd91921); } if (_0x4868e3) for (_0xd91921 = 0x0; _0xd91921 < 0x4; _0xd91921++) { var _0x525757; _0x9ec0d3 += _0x525757 = _0x4868e3[_0x55166e + _0xd91921], _0x525757 < 0.001 && _0x10179e < 0x0 && (_0x10179e = _0xd91921 + 0x4); } if ((_0x10179e < 0x0 || _0x10179e > _0x1024c3 - 0x1) && (_0x10179e = _0x1024c3 - 0x1), _0x9ec0d3 > 0.001) { var _0x4e4cd4 = 0x1 / _0x9ec0d3; for (_0xd91921 = 0x0; _0xd91921 < 0x4; _0xd91921++) _0x4ae9eb[_0x55166e + _0xd91921] *= _0x4e4cd4; if (_0x4868e3) for (_0xd91921 = 0x0; _0xd91921 < 0x4; _0xd91921++) _0x4868e3[_0x55166e + _0xd91921] *= _0x4e4cd4; } else _0x10179e >= 0x4 ? (_0x4868e3[_0x55166e + _0x10179e - 0x4] = 0x1 - _0x9ec0d3, _0x77faf2[_0x55166e + _0x10179e - 0x4] = _0x3c5a9c) : (_0x4ae9eb[_0x55166e + _0x10179e] = 0x1 - _0x9ec0d3, _0x1b88df[_0x55166e + _0x10179e] = _0x3c5a9c); } _0x240655['setVerticesData'](_0x4104ae['b']['MatricesIndicesKind'], _0x1b88df), _0x189a33['matricesWeightsExtra'] && _0x240655['setVerticesData'](_0x4104ae['b']['MatricesIndicesExtraKind'], _0x77faf2); } } } } , _0x367f0c['Parse'] = function(_0x44b4c0, _0x52ab90, _0x31e68c) { if (_0x52ab90['getGeometryByID'](_0x44b4c0['id'])) return null; var _0x492675 = new _0x367f0c(_0x44b4c0['id'],_0x52ab90,void 0x0,_0x44b4c0['updatable']); return _0x5237ec['a'] && _0x5237ec['a']['AddTagsTo'](_0x492675, _0x44b4c0['tags']), _0x44b4c0['delayLoadingFile'] ? (_0x492675['delayLoadState'] = _0x4dbfa7['a']['DELAYLOADSTATE_NOTLOADED'], _0x492675['delayLoadingFile'] = _0x31e68c + _0x44b4c0['delayLoadingFile'], _0x492675['_boundingInfo'] = new _0xb0aeb3['a'](_0x48ea46['x']['FromArray'](_0x44b4c0['boundingBoxMinimum']),_0x48ea46['x']['FromArray'](_0x44b4c0['boundingBoxMaximum'])), _0x492675['_delayInfo'] = [], _0x44b4c0['hasUVs'] && _0x492675['_delayInfo']['push'](_0x4104ae['b']['UVKind']), _0x44b4c0['hasUVs2'] && _0x492675['_delayInfo']['push'](_0x4104ae['b']['UV2Kind']), _0x44b4c0['hasUVs3'] && _0x492675['_delayInfo']['push'](_0x4104ae['b']['UV3Kind']), _0x44b4c0['hasUVs4'] && _0x492675['_delayInfo']['push'](_0x4104ae['b']['UV4Kind']), _0x44b4c0['hasUVs5'] && _0x492675['_delayInfo']['push'](_0x4104ae['b']['UV5Kind']), _0x44b4c0['hasUVs6'] && _0x492675['_delayInfo']['push'](_0x4104ae['b']['UV6Kind']), _0x44b4c0['hasColors'] && _0x492675['_delayInfo']['push'](_0x4104ae['b']['ColorKind']), _0x44b4c0['hasMatricesIndices'] && _0x492675['_delayInfo']['push'](_0x4104ae['b']['MatricesIndicesKind']), _0x44b4c0['hasMatricesWeights'] && _0x492675['_delayInfo']['push'](_0x4104ae['b']['MatricesWeightsKind']), _0x492675['_delayLoadingFunction'] = _0x51c73a['a']['ImportVertexData']) : _0x51c73a['a']['ImportVertexData'](_0x44b4c0, _0x492675), _0x52ab90['pushGeometry'](_0x492675, !0x0), _0x492675; } , _0x367f0c; }(); } , function(_0x115d64, _0x58ee32, _0x1be9dc) { 'use strict'; _0x1be9dc['d'](_0x58ee32, 'a', function() { return _0x1fe3d9; }); var _0x3fdede = _0x1be9dc(0x1) , _0x3e7829 = _0x1be9dc(0x8) , _0x25d5eb = _0x1be9dc(0x0) , _0x32ba9f = _0x1be9dc(0x2a) , _0x5475d2 = _0x1be9dc(0x35) , _0x5238e7 = _0x1be9dc(0x36) , _0x1f2213 = _0x1be9dc(0x30) , _0x1a05f5 = _0x1be9dc(0x29) , _0x2e37f3 = _0x1be9dc(0x21) , _0x1fe3d9 = function(_0x1880b8) { function _0x16ab27(_0x242ce3, _0x112460, _0x525df9) { void 0x0 === _0x112460 && (_0x112460 = _0x25d5eb['e']['Gray']()), void 0x0 === _0x525df9 && (_0x525df9 = _0x1a05f5['a']['DefaultUtilityLayer']); var _0x2ac499 = _0x1880b8['call'](this, _0x525df9) || this; _0x2ac499['_pointerObserver'] = null, _0x2ac499['snapDistance'] = 0x0, _0x2ac499['onSnapObservable'] = new _0x3e7829['c'](); var _0x342064 = new _0x2e37f3['a']('',_0x525df9['utilityLayerScene']); _0x342064['diffuseColor'] = _0x112460, _0x342064['specularColor'] = _0x112460['subtract'](new _0x25d5eb['e'](0.1,0.1,0.1)); var _0x28e530 = new _0x2e37f3['a']('',_0x525df9['utilityLayerScene']); _0x28e530['diffuseColor'] = _0x112460['add'](new _0x25d5eb['e'](0.3,0.3,0.3)); var _0x572d1d = _0x16ab27['_CreateArrow'](_0x525df9['utilityLayerScene'], _0x342064); _0x572d1d['lookAt'](_0x2ac499['_rootMesh']['position']['add'](_0x242ce3)), _0x572d1d['scaling']['scaleInPlace'](0x1 / 0x3), _0x572d1d['parent'] = _0x2ac499['_rootMesh']; var _0x26d01d = 0x0 , _0x1b3adc = new _0x25d5eb['x']() , _0x2fc251 = { 'snapDistance': 0x0 }; _0x2ac499['dragBehavior'] = new _0x5238e7['a']({ 'dragAxis': _0x242ce3 }), _0x2ac499['dragBehavior']['moveAttached'] = !0x1, _0x2ac499['_rootMesh']['addBehavior'](_0x2ac499['dragBehavior']); var _0x2ba7e7 = new _0x25d5eb['x']() , _0x51ead8 = new _0x25d5eb['j'](); _0x2ac499['dragBehavior']['onDragObservable']['add'](function(_0x999270) { if (_0x2ac499['attachedMesh']) if (_0x2ac499['attachedMesh']['parent'] ? (_0x2ac499['attachedMesh']['parent']['computeWorldMatrix']()['invertToRef'](_0x51ead8), _0x51ead8['setTranslationFromFloats'](0x0, 0x0, 0x0), _0x25d5eb['x']['TransformCoordinatesToRef'](_0x999270['delta'], _0x51ead8, _0x2ba7e7)) : _0x2ba7e7['copyFrom'](_0x999270['delta']), 0x0 == _0x2ac499['snapDistance']) _0x2ac499['attachedMesh']['position']['addInPlace'](_0x2ba7e7); else if (_0x26d01d += _0x999270['dragDistance'], Math['abs'](_0x26d01d) > _0x2ac499['snapDistance']) { var _0x3f68a9 = Math['floor'](Math['abs'](_0x26d01d) / _0x2ac499['snapDistance']); _0x26d01d %= _0x2ac499['snapDistance'], _0x2ba7e7['normalizeToRef'](_0x1b3adc), _0x1b3adc['scaleInPlace'](_0x2ac499['snapDistance'] * _0x3f68a9), _0x2ac499['attachedMesh']['position']['addInPlace'](_0x1b3adc), _0x2fc251['snapDistance'] = _0x2ac499['snapDistance'] * _0x3f68a9, _0x2ac499['onSnapObservable']['notifyObservers'](_0x2fc251); } }), _0x2ac499['_pointerObserver'] = _0x525df9['utilityLayerScene']['onPointerObservable']['add'](function(_0x5b13ee) { if (!_0x2ac499['_customMeshSet']) { var _0x164580 = _0x5b13ee['pickInfo'] && -0x1 != _0x2ac499['_rootMesh']['getChildMeshes']()['indexOf'](_0x5b13ee['pickInfo']['pickedMesh']) ? _0x28e530 : _0x342064; _0x2ac499['_rootMesh']['getChildMeshes']()['forEach'](function(_0x9a835b) { _0x9a835b['material'] = _0x164580, _0x9a835b['color'] && (_0x9a835b['color'] = _0x164580['diffuseColor']); }); } }); var _0x4be022 = _0x525df9['_getSharedGizmoLight'](); return _0x4be022['includedOnlyMeshes'] = _0x4be022['includedOnlyMeshes']['concat'](_0x2ac499['_rootMesh']['getChildMeshes'](!0x1)), _0x2ac499; } return _0x3fdede['d'](_0x16ab27, _0x1880b8), _0x16ab27['_CreateArrow'] = function(_0x1dbaa6, _0x1ae2e7) { var _0x4426d5 = new _0x32ba9f['a']('arrow',_0x1dbaa6) , _0x5d6654 = _0x5475d2['a']['CreateCylinder']('cylinder', { 'diameterTop': 0x0, 'height': 0.075, 'diameterBottom': 0.0375, 'tessellation': 0x60 }, _0x1dbaa6) , _0x251961 = _0x5475d2['a']['CreateCylinder']('cylinder', { 'diameterTop': 0.005, 'height': 0.275, 'diameterBottom': 0.005, 'tessellation': 0x60 }, _0x1dbaa6); return _0x251961['material'] = _0x1ae2e7, _0x5d6654['parent'] = _0x4426d5, _0x251961['parent'] = _0x4426d5, _0x5d6654['material'] = _0x1ae2e7, _0x5d6654['rotation']['x'] = Math['PI'] / 0x2, _0x5d6654['position']['z'] += 0.3, _0x251961['position']['z'] += 0.1375, _0x251961['rotation']['x'] = Math['PI'] / 0x2, _0x4426d5; } , _0x16ab27['_CreateArrowInstance'] = function(_0x1b22bc, _0x31bcc0) { for (var _0x773254 = new _0x32ba9f['a']('arrow',_0x1b22bc), _0x545022 = 0x0, _0x27876d = _0x31bcc0['getChildMeshes'](); _0x545022 < _0x27876d['length']; _0x545022++) { var _0x3ef41c = _0x27876d[_0x545022]; _0x3ef41c['createInstance'](_0x3ef41c['name'])['parent'] = _0x773254; } return _0x773254; } , _0x16ab27['prototype']['_attachedMeshChanged'] = function(_0x145aef) { this['dragBehavior'] && (this['dragBehavior']['enabled'] = !!_0x145aef); } , _0x16ab27['prototype']['dispose'] = function() { this['onSnapObservable']['clear'](), this['gizmoLayer']['utilityLayerScene']['onPointerObservable']['remove'](this['_pointerObserver']), this['dragBehavior']['detach'](), _0x1880b8['prototype']['dispose']['call'](this); } , _0x16ab27; }(_0x1f2213['a']); } , function(_0x5ec241, _0x5f49cb, _0x1e2a1b) { 'use strict'; _0x1e2a1b['d'](_0x5f49cb, 'a', function() { return _0x18dded; }); var _0x18dded = function() { function _0x1a4e3b() {} return _0x1a4e3b['FilesToLoad'] = {}, _0x1a4e3b; }(); } , function(_0x2d2230, _0x4c1dfa, _0x3e73a1) { 'use strict'; _0x3e73a1['d'](_0x4c1dfa, 'a', function() { return _0x4e13cf; }); var _0x4e13cf = function() { function _0x5bd376() { this['_xhr'] = new XMLHttpRequest(); } return _0x5bd376['prototype']['_injectCustomRequestHeaders'] = function() { for (var _0xb40ed in _0x5bd376['CustomRequestHeaders']) { var _0x3ea734 = _0x5bd376['CustomRequestHeaders'][_0xb40ed]; _0x3ea734 && this['_xhr']['setRequestHeader'](_0xb40ed, _0x3ea734); } } , Object['defineProperty'](_0x5bd376['prototype'], 'onprogress', { 'get': function() { return this['_xhr']['onprogress']; }, 'set': function(_0xf77eb4) { this['_xhr']['onprogress'] = _0xf77eb4; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5bd376['prototype'], 'readyState', { 'get': function() { return this['_xhr']['readyState']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5bd376['prototype'], 'status', { 'get': function() { return this['_xhr']['status']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5bd376['prototype'], 'statusText', { 'get': function() { return this['_xhr']['statusText']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5bd376['prototype'], 'response', { 'get': function() { return this['_xhr']['response']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5bd376['prototype'], 'responseURL', { 'get': function() { return this['_xhr']['responseURL']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5bd376['prototype'], 'responseText', { 'get': function() { return this['_xhr']['responseText']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5bd376['prototype'], 'responseType', { 'get': function() { return this['_xhr']['responseType']; }, 'set': function(_0x3c8a30) { this['_xhr']['responseType'] = _0x3c8a30; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5bd376['prototype']['addEventListener'] = function(_0x22b7aa, _0x2a2477, _0x45d4f5) { this['_xhr']['addEventListener'](_0x22b7aa, _0x2a2477, _0x45d4f5); } , _0x5bd376['prototype']['removeEventListener'] = function(_0x56208e, _0x41737c, _0x4127f6) { this['_xhr']['removeEventListener'](_0x56208e, _0x41737c, _0x4127f6); } , _0x5bd376['prototype']['abort'] = function() { this['_xhr']['abort'](); } , _0x5bd376['prototype']['send'] = function(_0x4fc464) { _0x5bd376['CustomRequestHeaders'] && this['_injectCustomRequestHeaders'](), this['_xhr']['send'](_0x4fc464); } , _0x5bd376['prototype']['open'] = function(_0x1866c8, _0x23b7bb) { for (var _0x1d3911 = 0x0, _0x1d9211 = _0x5bd376['CustomRequestModifiers']; _0x1d3911 < _0x1d9211['length']; _0x1d3911++) { (0x0, _0x1d9211[_0x1d3911])(this['_xhr']); } return this['_xhr']['open'](_0x1866c8, _0x23b7bb, !0x0); } , _0x5bd376['CustomRequestHeaders'] = {}, _0x5bd376['CustomRequestModifiers'] = new Array(), _0x5bd376; }(); } , function(_0x40dea9, _0x4108c5, _0x5af3e7) { 'use strict'; _0x5af3e7['d'](_0x4108c5, 'a', function() { return _0x22b31e; }); var _0x22b31e = function() { function _0x459e24() { this['_count'] = 0x0, this['_data'] = {}; } return _0x459e24['prototype']['copyFrom'] = function(_0x14f0c9) { var _0x161c0f = this; this['clear'](), _0x14f0c9['forEach'](function(_0x2a616c, _0x2e39c8) { return _0x161c0f['add'](_0x2a616c, _0x2e39c8); }); } , _0x459e24['prototype']['get'] = function(_0x5b7347) { var _0x18ccfe = this['_data'][_0x5b7347]; if (void 0x0 !== _0x18ccfe) return _0x18ccfe; } , _0x459e24['prototype']['getOrAddWithFactory'] = function(_0x313c3c, _0x3fa9c5) { var _0x5098a2 = this['get'](_0x313c3c); return void 0x0 !== _0x5098a2 ? _0x5098a2 : ((_0x5098a2 = _0x3fa9c5(_0x313c3c)) && this['add'](_0x313c3c, _0x5098a2), _0x5098a2); } , _0x459e24['prototype']['getOrAdd'] = function(_0x51af0c, _0x1fbbd6) { var _0x53056a = this['get'](_0x51af0c); return void 0x0 !== _0x53056a ? _0x53056a : (this['add'](_0x51af0c, _0x1fbbd6), _0x1fbbd6); } , _0x459e24['prototype']['contains'] = function(_0x16a46f) { return void 0x0 !== this['_data'][_0x16a46f]; } , _0x459e24['prototype']['add'] = function(_0x310d73, _0x13b8f8) { return void 0x0 === this['_data'][_0x310d73] && (this['_data'][_0x310d73] = _0x13b8f8, ++this['_count'], !0x0); } , _0x459e24['prototype']['set'] = function(_0x313253, _0x541711) { return void 0x0 !== this['_data'][_0x313253] && (this['_data'][_0x313253] = _0x541711, !0x0); } , _0x459e24['prototype']['getAndRemove'] = function(_0x523ae4) { var _0x33bbc9 = this['get'](_0x523ae4); return void 0x0 !== _0x33bbc9 ? (delete this['_data'][_0x523ae4], --this['_count'], _0x33bbc9) : null; } , _0x459e24['prototype']['remove'] = function(_0x8dbc2b) { return !!this['contains'](_0x8dbc2b) && (delete this['_data'][_0x8dbc2b], --this['_count'], !0x0); } , _0x459e24['prototype']['clear'] = function() { this['_data'] = {}, this['_count'] = 0x0; } , Object['defineProperty'](_0x459e24['prototype'], 'count', { 'get': function() { return this['_count']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x459e24['prototype']['forEach'] = function(_0x2f5ff2) { for (var _0x556e57 in this['_data']) { _0x2f5ff2(_0x556e57, this['_data'][_0x556e57]); } } , _0x459e24['prototype']['first'] = function(_0x1b02fe) { for (var _0x2c50f0 in this['_data']) { var _0x5335c5 = _0x1b02fe(_0x2c50f0, this['_data'][_0x2c50f0]); if (_0x5335c5) return _0x5335c5; } return null; } , _0x459e24; }(); } , function(_0x42befe, _0x4f80ab, _0x1c7b53) { 'use strict'; _0x1c7b53['d'](_0x4f80ab, 'a', function() { return _0x3ad409; }), _0x1c7b53['d'](_0x4f80ab, 'b', function() { return _0x49db55; }); var _0x4760f3 = _0x1c7b53(0x0) , _0x47ebf0 = [Math['sqrt'](0x1 / (0x4 * Math['PI'])), -Math['sqrt'](0x3 / (0x4 * Math['PI'])), Math['sqrt'](0x3 / (0x4 * Math['PI'])), -Math['sqrt'](0x3 / (0x4 * Math['PI'])), Math['sqrt'](0xf / (0x4 * Math['PI'])), -Math['sqrt'](0xf / (0x4 * Math['PI'])), Math['sqrt'](0x5 / (0x10 * Math['PI'])), -Math['sqrt'](0xf / (0x4 * Math['PI'])), Math['sqrt'](0xf / (0x10 * Math['PI']))] , _0x294114 = [function(_0x18b9b0) { return 0x1; } , function(_0x395e5a) { return _0x395e5a['y']; } , function(_0x35dc6d) { return _0x35dc6d['z']; } , function(_0xca3843) { return _0xca3843['x']; } , function(_0xb7862) { return _0xb7862['x'] * _0xb7862['y']; } , function(_0x5170ec) { return _0x5170ec['y'] * _0x5170ec['z']; } , function(_0x13990f) { return 0x3 * _0x13990f['z'] * _0x13990f['z'] - 0x1; } , function(_0xcd025f) { return _0xcd025f['x'] * _0xcd025f['z']; } , function(_0x1e9fe0) { return _0x1e9fe0['x'] * _0x1e9fe0['x'] - _0x1e9fe0['y'] * _0x1e9fe0['y']; } ] , _0x4ae343 = function(_0x18d8c8, _0xe7c415) { return _0x47ebf0[_0x18d8c8] * _0x294114[_0x18d8c8](_0xe7c415); } , _0x884e99 = [Math['PI'], 0x2 * Math['PI'] / 0x3, 0x2 * Math['PI'] / 0x3, 0x2 * Math['PI'] / 0x3, Math['PI'] / 0x4, Math['PI'] / 0x4, Math['PI'] / 0x4, Math['PI'] / 0x4, Math['PI'] / 0x4] , _0x3ad409 = function() { function _0x26677f() { this['preScaled'] = !0x1, this['l00'] = _0x4760f3['x']['Zero'](), this['l1_1'] = _0x4760f3['x']['Zero'](), this['l10'] = _0x4760f3['x']['Zero'](), this['l11'] = _0x4760f3['x']['Zero'](), this['l2_2'] = _0x4760f3['x']['Zero'](), this['l2_1'] = _0x4760f3['x']['Zero'](), this['l20'] = _0x4760f3['x']['Zero'](), this['l21'] = _0x4760f3['x']['Zero'](), this['l22'] = _0x4760f3['x']['Zero'](); } return _0x26677f['prototype']['addLight'] = function(_0x389d92, _0x191927, _0x5c9a1a) { var _0x5a12e0 = new _0x4760f3['x'](_0x191927['r'],_0x191927['g'],_0x191927['b'])['scale'](_0x5c9a1a); this['l00'] = this['l00']['add'](_0x5a12e0['scale'](_0x4ae343(0x0, _0x389d92))), this['l1_1'] = this['l1_1']['add'](_0x5a12e0['scale'](_0x4ae343(0x1, _0x389d92))), this['l10'] = this['l10']['add'](_0x5a12e0['scale'](_0x4ae343(0x2, _0x389d92))), this['l11'] = this['l11']['add'](_0x5a12e0['scale'](_0x4ae343(0x3, _0x389d92))), this['l2_2'] = this['l2_2']['add'](_0x5a12e0['scale'](_0x4ae343(0x4, _0x389d92))), this['l2_1'] = this['l2_1']['add'](_0x5a12e0['scale'](_0x4ae343(0x5, _0x389d92))), this['l20'] = this['l20']['add'](_0x5a12e0['scale'](_0x4ae343(0x6, _0x389d92))), this['l21'] = this['l21']['add'](_0x5a12e0['scale'](_0x4ae343(0x7, _0x389d92))), this['l22'] = this['l22']['add'](_0x5a12e0['scale'](_0x4ae343(0x8, _0x389d92))); } , _0x26677f['prototype']['scaleInPlace'] = function(_0x2d6f04) { this['l00']['scaleInPlace'](_0x2d6f04), this['l1_1']['scaleInPlace'](_0x2d6f04), this['l10']['scaleInPlace'](_0x2d6f04), this['l11']['scaleInPlace'](_0x2d6f04), this['l2_2']['scaleInPlace'](_0x2d6f04), this['l2_1']['scaleInPlace'](_0x2d6f04), this['l20']['scaleInPlace'](_0x2d6f04), this['l21']['scaleInPlace'](_0x2d6f04), this['l22']['scaleInPlace'](_0x2d6f04); } , _0x26677f['prototype']['convertIncidentRadianceToIrradiance'] = function() { this['l00']['scaleInPlace'](_0x884e99[0x0]), this['l1_1']['scaleInPlace'](_0x884e99[0x1]), this['l10']['scaleInPlace'](_0x884e99[0x2]), this['l11']['scaleInPlace'](_0x884e99[0x3]), this['l2_2']['scaleInPlace'](_0x884e99[0x4]), this['l2_1']['scaleInPlace'](_0x884e99[0x5]), this['l20']['scaleInPlace'](_0x884e99[0x6]), this['l21']['scaleInPlace'](_0x884e99[0x7]), this['l22']['scaleInPlace'](_0x884e99[0x8]); } , _0x26677f['prototype']['convertIrradianceToLambertianRadiance'] = function() { this['scaleInPlace'](0x1 / Math['PI']); } , _0x26677f['prototype']['preScaleForRendering'] = function() { this['preScaled'] = !0x0, this['l00']['scaleInPlace'](_0x47ebf0[0x0]), this['l1_1']['scaleInPlace'](_0x47ebf0[0x1]), this['l10']['scaleInPlace'](_0x47ebf0[0x2]), this['l11']['scaleInPlace'](_0x47ebf0[0x3]), this['l2_2']['scaleInPlace'](_0x47ebf0[0x4]), this['l2_1']['scaleInPlace'](_0x47ebf0[0x5]), this['l20']['scaleInPlace'](_0x47ebf0[0x6]), this['l21']['scaleInPlace'](_0x47ebf0[0x7]), this['l22']['scaleInPlace'](_0x47ebf0[0x8]); } , _0x26677f['FromArray'] = function(_0x484937) { var _0x2b33fd = new _0x26677f(); return _0x4760f3['x']['FromArrayToRef'](_0x484937[0x0], 0x0, _0x2b33fd['l00']), _0x4760f3['x']['FromArrayToRef'](_0x484937[0x1], 0x0, _0x2b33fd['l1_1']), _0x4760f3['x']['FromArrayToRef'](_0x484937[0x2], 0x0, _0x2b33fd['l10']), _0x4760f3['x']['FromArrayToRef'](_0x484937[0x3], 0x0, _0x2b33fd['l11']), _0x4760f3['x']['FromArrayToRef'](_0x484937[0x4], 0x0, _0x2b33fd['l2_2']), _0x4760f3['x']['FromArrayToRef'](_0x484937[0x5], 0x0, _0x2b33fd['l2_1']), _0x4760f3['x']['FromArrayToRef'](_0x484937[0x6], 0x0, _0x2b33fd['l20']), _0x4760f3['x']['FromArrayToRef'](_0x484937[0x7], 0x0, _0x2b33fd['l21']), _0x4760f3['x']['FromArrayToRef'](_0x484937[0x8], 0x0, _0x2b33fd['l22']), _0x2b33fd; } , _0x26677f['FromPolynomial'] = function(_0x2bf4d0) { var _0x9ad0ba = new _0x26677f(); return _0x9ad0ba['l00'] = _0x2bf4d0['xx']['scale'](0.376127)['add'](_0x2bf4d0['yy']['scale'](0.376127))['add'](_0x2bf4d0['zz']['scale'](0.376126)), _0x9ad0ba['l1_1'] = _0x2bf4d0['y']['scale'](0.977204), _0x9ad0ba['l10'] = _0x2bf4d0['z']['scale'](0.977204), _0x9ad0ba['l11'] = _0x2bf4d0['x']['scale'](0.977204), _0x9ad0ba['l2_2'] = _0x2bf4d0['xy']['scale'](1.16538), _0x9ad0ba['l2_1'] = _0x2bf4d0['yz']['scale'](1.16538), _0x9ad0ba['l20'] = _0x2bf4d0['zz']['scale'](1.34567)['subtract'](_0x2bf4d0['xx']['scale'](0.672834))['subtract'](_0x2bf4d0['yy']['scale'](0.672834)), _0x9ad0ba['l21'] = _0x2bf4d0['zx']['scale'](1.16538), _0x9ad0ba['l22'] = _0x2bf4d0['xx']['scale'](1.16538)['subtract'](_0x2bf4d0['yy']['scale'](1.16538)), _0x9ad0ba['l1_1']['scaleInPlace'](-0x1), _0x9ad0ba['l11']['scaleInPlace'](-0x1), _0x9ad0ba['l2_1']['scaleInPlace'](-0x1), _0x9ad0ba['l21']['scaleInPlace'](-0x1), _0x9ad0ba['scaleInPlace'](Math['PI']), _0x9ad0ba; } , _0x26677f; }() , _0x49db55 = function() { function _0x2a7ac6() { this['x'] = _0x4760f3['x']['Zero'](), this['y'] = _0x4760f3['x']['Zero'](), this['z'] = _0x4760f3['x']['Zero'](), this['xx'] = _0x4760f3['x']['Zero'](), this['yy'] = _0x4760f3['x']['Zero'](), this['zz'] = _0x4760f3['x']['Zero'](), this['xy'] = _0x4760f3['x']['Zero'](), this['yz'] = _0x4760f3['x']['Zero'](), this['zx'] = _0x4760f3['x']['Zero'](); } return Object['defineProperty'](_0x2a7ac6['prototype'], 'preScaledHarmonics', { 'get': function() { return this['_harmonics'] || (this['_harmonics'] = _0x3ad409['FromPolynomial'](this)), this['_harmonics']['preScaled'] || this['_harmonics']['preScaleForRendering'](), this['_harmonics']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2a7ac6['prototype']['addAmbient'] = function(_0x25e818) { var _0x5a4576 = new _0x4760f3['x'](_0x25e818['r'],_0x25e818['g'],_0x25e818['b']); this['xx'] = this['xx']['add'](_0x5a4576), this['yy'] = this['yy']['add'](_0x5a4576), this['zz'] = this['zz']['add'](_0x5a4576); } , _0x2a7ac6['prototype']['scaleInPlace'] = function(_0x22687a) { this['x']['scaleInPlace'](_0x22687a), this['y']['scaleInPlace'](_0x22687a), this['z']['scaleInPlace'](_0x22687a), this['xx']['scaleInPlace'](_0x22687a), this['yy']['scaleInPlace'](_0x22687a), this['zz']['scaleInPlace'](_0x22687a), this['yz']['scaleInPlace'](_0x22687a), this['zx']['scaleInPlace'](_0x22687a), this['xy']['scaleInPlace'](_0x22687a); } , _0x2a7ac6['FromHarmonics'] = function(_0x286b31) { var _0x8bab92 = new _0x2a7ac6(); return _0x8bab92['_harmonics'] = _0x286b31, _0x8bab92['x'] = _0x286b31['l11']['scale'](1.02333)['scale'](-0x1), _0x8bab92['y'] = _0x286b31['l1_1']['scale'](1.02333)['scale'](-0x1), _0x8bab92['z'] = _0x286b31['l10']['scale'](1.02333), _0x8bab92['xx'] = _0x286b31['l00']['scale'](0.886277)['subtract'](_0x286b31['l20']['scale'](0.247708))['add'](_0x286b31['l22']['scale'](0.429043)), _0x8bab92['yy'] = _0x286b31['l00']['scale'](0.886277)['subtract'](_0x286b31['l20']['scale'](0.247708))['subtract'](_0x286b31['l22']['scale'](0.429043)), _0x8bab92['zz'] = _0x286b31['l00']['scale'](0.886277)['add'](_0x286b31['l20']['scale'](0.495417)), _0x8bab92['yz'] = _0x286b31['l2_1']['scale'](0.858086)['scale'](-0x1), _0x8bab92['zx'] = _0x286b31['l21']['scale'](0.858086)['scale'](-0x1), _0x8bab92['xy'] = _0x286b31['l2_2']['scale'](0.858086), _0x8bab92['scaleInPlace'](0x1 / Math['PI']), _0x8bab92; } , _0x2a7ac6['FromArray'] = function(_0x80f072) { var _0x15859d = new _0x2a7ac6(); return _0x4760f3['x']['FromArrayToRef'](_0x80f072[0x0], 0x0, _0x15859d['x']), _0x4760f3['x']['FromArrayToRef'](_0x80f072[0x1], 0x0, _0x15859d['y']), _0x4760f3['x']['FromArrayToRef'](_0x80f072[0x2], 0x0, _0x15859d['z']), _0x4760f3['x']['FromArrayToRef'](_0x80f072[0x3], 0x0, _0x15859d['xx']), _0x4760f3['x']['FromArrayToRef'](_0x80f072[0x4], 0x0, _0x15859d['yy']), _0x4760f3['x']['FromArrayToRef'](_0x80f072[0x5], 0x0, _0x15859d['zz']), _0x4760f3['x']['FromArrayToRef'](_0x80f072[0x6], 0x0, _0x15859d['yz']), _0x4760f3['x']['FromArrayToRef'](_0x80f072[0x7], 0x0, _0x15859d['zx']), _0x4760f3['x']['FromArrayToRef'](_0x80f072[0x8], 0x0, _0x15859d['xy']), _0x15859d; } , _0x2a7ac6; }(); } , function(_0x297ac6, _0x12177c, _0xd9d199) { 'use strict'; _0xd9d199['d'](_0x12177c, 'a', function() { return _0x1ba040; }); var _0x509742 = _0xd9d199(0x6) , _0x1ba040 = function() { function _0x5927dc(_0x508266, _0x33dd36, _0x211870) { this['_engine'] = _0x508266, this['_noUBO'] = !_0x508266['supportsUniformBuffers'], this['_dynamic'] = _0x211870, this['_data'] = _0x33dd36 || [], this['_uniformLocations'] = {}, this['_uniformSizes'] = {}, this['_uniformLocationPointer'] = 0x0, this['_needSync'] = !0x1, this['_noUBO'] ? (this['updateMatrix3x3'] = this['_updateMatrix3x3ForEffect'], this['updateMatrix2x2'] = this['_updateMatrix2x2ForEffect'], this['updateFloat'] = this['_updateFloatForEffect'], this['updateFloat2'] = this['_updateFloat2ForEffect'], this['updateFloat3'] = this['_updateFloat3ForEffect'], this['updateFloat4'] = this['_updateFloat4ForEffect'], this['updateMatrix'] = this['_updateMatrixForEffect'], this['updateVector3'] = this['_updateVector3ForEffect'], this['updateVector4'] = this['_updateVector4ForEffect'], this['updateColor3'] = this['_updateColor3ForEffect'], this['updateColor4'] = this['_updateColor4ForEffect']) : (this['_engine']['_uniformBuffers']['push'](this), this['updateMatrix3x3'] = this['_updateMatrix3x3ForUniform'], this['updateMatrix2x2'] = this['_updateMatrix2x2ForUniform'], this['updateFloat'] = this['_updateFloatForUniform'], this['updateFloat2'] = this['_updateFloat2ForUniform'], this['updateFloat3'] = this['_updateFloat3ForUniform'], this['updateFloat4'] = this['_updateFloat4ForUniform'], this['updateMatrix'] = this['_updateMatrixForUniform'], this['updateVector3'] = this['_updateVector3ForUniform'], this['updateVector4'] = this['_updateVector4ForUniform'], this['updateColor3'] = this['_updateColor3ForUniform'], this['updateColor4'] = this['_updateColor4ForUniform']); } return Object['defineProperty'](_0x5927dc['prototype'], 'useUbo', { 'get': function() { return !this['_noUBO']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5927dc['prototype'], 'isSync', { 'get': function() { return !this['_needSync']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5927dc['prototype']['isDynamic'] = function() { return void 0x0 !== this['_dynamic']; } , _0x5927dc['prototype']['getData'] = function() { return this['_bufferData']; } , _0x5927dc['prototype']['getBuffer'] = function() { return this['_buffer']; } , _0x5927dc['prototype']['_fillAlignment'] = function(_0x2d546b) { var _0x4ce2b8; if (_0x4ce2b8 = _0x2d546b <= 0x2 ? _0x2d546b : 0x4, this['_uniformLocationPointer'] % _0x4ce2b8 != 0x0) { var _0x2789ca = this['_uniformLocationPointer']; this['_uniformLocationPointer'] += _0x4ce2b8 - this['_uniformLocationPointer'] % _0x4ce2b8; for (var _0x395d24 = this['_uniformLocationPointer'] - _0x2789ca, _0xbe8900 = 0x0; _0xbe8900 < _0x395d24; _0xbe8900++) this['_data']['push'](0x0); } } , _0x5927dc['prototype']['addUniform'] = function(_0x41cb2c, _0xcd6001) { if (!this['_noUBO'] && void 0x0 === this['_uniformLocations'][_0x41cb2c]) { var _0x316e37; if (_0xcd6001 instanceof Array) _0xcd6001 = (_0x316e37 = _0xcd6001)['length']; else { _0xcd6001 = _0xcd6001, _0x316e37 = []; for (var _0x29fc3c = 0x0; _0x29fc3c < _0xcd6001; _0x29fc3c++) _0x316e37['push'](0x0); } this['_fillAlignment'](_0xcd6001), this['_uniformSizes'][_0x41cb2c] = _0xcd6001, this['_uniformLocations'][_0x41cb2c] = this['_uniformLocationPointer'], this['_uniformLocationPointer'] += _0xcd6001; for (_0x29fc3c = 0x0; _0x29fc3c < _0xcd6001; _0x29fc3c++) this['_data']['push'](_0x316e37[_0x29fc3c]); this['_needSync'] = !0x0; } } , _0x5927dc['prototype']['addMatrix'] = function(_0x37cf4e, _0x3eef61) { this['addUniform'](_0x37cf4e, Array['prototype']['slice']['call'](_0x3eef61['toArray']())); } , _0x5927dc['prototype']['addFloat2'] = function(_0xa1a0be, _0x4ad89f, _0x5a5c44) { var _0x4164ff = [_0x4ad89f, _0x5a5c44]; this['addUniform'](_0xa1a0be, _0x4164ff); } , _0x5927dc['prototype']['addFloat3'] = function(_0x47cf7a, _0x45806d, _0x4b2a56, _0x1ec3b8) { var _0x502ff4 = [_0x45806d, _0x4b2a56, _0x1ec3b8]; this['addUniform'](_0x47cf7a, _0x502ff4); } , _0x5927dc['prototype']['addColor3'] = function(_0x25afa9, _0x325317) { var _0x71caf4 = new Array(); _0x325317['toArray'](_0x71caf4), this['addUniform'](_0x25afa9, _0x71caf4); } , _0x5927dc['prototype']['addColor4'] = function(_0x3fd34a, _0x2b3d32, _0x376044) { var _0x510cd6 = new Array(); _0x2b3d32['toArray'](_0x510cd6), _0x510cd6['push'](_0x376044), this['addUniform'](_0x3fd34a, _0x510cd6); } , _0x5927dc['prototype']['addVector3'] = function(_0x5ebec9, _0x1a09cb) { var _0x364448 = new Array(); _0x1a09cb['toArray'](_0x364448), this['addUniform'](_0x5ebec9, _0x364448); } , _0x5927dc['prototype']['addMatrix3x3'] = function(_0x67cad) { this['addUniform'](_0x67cad, 0xc); } , _0x5927dc['prototype']['addMatrix2x2'] = function(_0x67083d) { this['addUniform'](_0x67083d, 0x8); } , _0x5927dc['prototype']['create'] = function() { this['_noUBO'] || this['_buffer'] || (this['_fillAlignment'](0x4), this['_bufferData'] = new Float32Array(this['_data']), this['_rebuild'](), this['_needSync'] = !0x0); } , _0x5927dc['prototype']['_rebuild'] = function() { !this['_noUBO'] && this['_bufferData'] && (this['_dynamic'] ? this['_buffer'] = this['_engine']['createDynamicUniformBuffer'](this['_bufferData']) : this['_buffer'] = this['_engine']['createUniformBuffer'](this['_bufferData'])); } , _0x5927dc['prototype']['update'] = function() { this['_buffer'] ? (this['_dynamic'] || this['_needSync']) && (this['_engine']['updateUniformBuffer'](this['_buffer'], this['_bufferData']), this['_needSync'] = !0x1) : this['create'](); } , _0x5927dc['prototype']['updateUniform'] = function(_0x5f5105, _0x514812, _0xb2180b) { var _0x1af3ed = this['_uniformLocations'][_0x5f5105]; if (void 0x0 === _0x1af3ed) { if (this['_buffer']) return void _0x509742['a']['Error']('Cannot\x20add\x20an\x20uniform\x20after\x20UBO\x20has\x20been\x20created.'); this['addUniform'](_0x5f5105, _0xb2180b), _0x1af3ed = this['_uniformLocations'][_0x5f5105]; } if (this['_buffer'] || this['create'](), this['_dynamic']) for (_0x28addd = 0x0; _0x28addd < _0xb2180b; _0x28addd++) this['_bufferData'][_0x1af3ed + _0x28addd] = _0x514812[_0x28addd]; else { for (var _0x404421 = !0x1, _0x28addd = 0x0; _0x28addd < _0xb2180b; _0x28addd++) this['_bufferData'][_0x1af3ed + _0x28addd] !== _0x514812[_0x28addd] && (_0x404421 = !0x0, this['_bufferData'][_0x1af3ed + _0x28addd] = _0x514812[_0x28addd]); this['_needSync'] = this['_needSync'] || _0x404421; } } , _0x5927dc['prototype']['_updateMatrix3x3ForUniform'] = function(_0x1903d9, _0x2af9d2) { for (var _0x4687a8 = 0x0; _0x4687a8 < 0x3; _0x4687a8++) _0x5927dc['_tempBuffer'][0x4 * _0x4687a8] = _0x2af9d2[0x3 * _0x4687a8], _0x5927dc['_tempBuffer'][0x4 * _0x4687a8 + 0x1] = _0x2af9d2[0x3 * _0x4687a8 + 0x1], _0x5927dc['_tempBuffer'][0x4 * _0x4687a8 + 0x2] = _0x2af9d2[0x3 * _0x4687a8 + 0x2], _0x5927dc['_tempBuffer'][0x4 * _0x4687a8 + 0x3] = 0x0; this['updateUniform'](_0x1903d9, _0x5927dc['_tempBuffer'], 0xc); } , _0x5927dc['prototype']['_updateMatrix3x3ForEffect'] = function(_0x2ce9b2, _0x4ba505) { this['_currentEffect']['setMatrix3x3'](_0x2ce9b2, _0x4ba505); } , _0x5927dc['prototype']['_updateMatrix2x2ForEffect'] = function(_0x35911c, _0x43e7a2) { this['_currentEffect']['setMatrix2x2'](_0x35911c, _0x43e7a2); } , _0x5927dc['prototype']['_updateMatrix2x2ForUniform'] = function(_0xa87b05, _0x154fa0) { for (var _0x16b46e = 0x0; _0x16b46e < 0x2; _0x16b46e++) _0x5927dc['_tempBuffer'][0x4 * _0x16b46e] = _0x154fa0[0x2 * _0x16b46e], _0x5927dc['_tempBuffer'][0x4 * _0x16b46e + 0x1] = _0x154fa0[0x2 * _0x16b46e + 0x1], _0x5927dc['_tempBuffer'][0x4 * _0x16b46e + 0x2] = 0x0, _0x5927dc['_tempBuffer'][0x4 * _0x16b46e + 0x3] = 0x0; this['updateUniform'](_0xa87b05, _0x5927dc['_tempBuffer'], 0x8); } , _0x5927dc['prototype']['_updateFloatForEffect'] = function(_0x206451, _0x5d8e68) { this['_currentEffect']['setFloat'](_0x206451, _0x5d8e68); } , _0x5927dc['prototype']['_updateFloatForUniform'] = function(_0xc25fcf, _0x269869) { _0x5927dc['_tempBuffer'][0x0] = _0x269869, this['updateUniform'](_0xc25fcf, _0x5927dc['_tempBuffer'], 0x1); } , _0x5927dc['prototype']['_updateFloat2ForEffect'] = function(_0x2e63e1, _0x1d9ba8, _0x448371, _0x4d4135) { void 0x0 === _0x4d4135 && (_0x4d4135 = ''), this['_currentEffect']['setFloat2'](_0x2e63e1 + _0x4d4135, _0x1d9ba8, _0x448371); } , _0x5927dc['prototype']['_updateFloat2ForUniform'] = function(_0x27e388, _0x2f59f2, _0xf7c77d) { _0x5927dc['_tempBuffer'][0x0] = _0x2f59f2, _0x5927dc['_tempBuffer'][0x1] = _0xf7c77d, this['updateUniform'](_0x27e388, _0x5927dc['_tempBuffer'], 0x2); } , _0x5927dc['prototype']['_updateFloat3ForEffect'] = function(_0x3f7b75, _0x278e8f, _0x4b941b, _0x561aae, _0x2fa0e3) { void 0x0 === _0x2fa0e3 && (_0x2fa0e3 = ''), this['_currentEffect']['setFloat3'](_0x3f7b75 + _0x2fa0e3, _0x278e8f, _0x4b941b, _0x561aae); } , _0x5927dc['prototype']['_updateFloat3ForUniform'] = function(_0x35596d, _0x376fd6, _0x5c16c0, _0x25da07) { _0x5927dc['_tempBuffer'][0x0] = _0x376fd6, _0x5927dc['_tempBuffer'][0x1] = _0x5c16c0, _0x5927dc['_tempBuffer'][0x2] = _0x25da07, this['updateUniform'](_0x35596d, _0x5927dc['_tempBuffer'], 0x3); } , _0x5927dc['prototype']['_updateFloat4ForEffect'] = function(_0x2827b8, _0x32b6fc, _0x2f1fc3, _0x3b47f3, _0x3764ca, _0x1f9476) { void 0x0 === _0x1f9476 && (_0x1f9476 = ''), this['_currentEffect']['setFloat4'](_0x2827b8 + _0x1f9476, _0x32b6fc, _0x2f1fc3, _0x3b47f3, _0x3764ca); } , _0x5927dc['prototype']['_updateFloat4ForUniform'] = function(_0x27d1d5, _0x1d6ee6, _0x5064b8, _0x4cb63d, _0x3fc2c8) { _0x5927dc['_tempBuffer'][0x0] = _0x1d6ee6, _0x5927dc['_tempBuffer'][0x1] = _0x5064b8, _0x5927dc['_tempBuffer'][0x2] = _0x4cb63d, _0x5927dc['_tempBuffer'][0x3] = _0x3fc2c8, this['updateUniform'](_0x27d1d5, _0x5927dc['_tempBuffer'], 0x4); } , _0x5927dc['prototype']['_updateMatrixForEffect'] = function(_0x58f2fb, _0x1f8b16) { this['_currentEffect']['setMatrix'](_0x58f2fb, _0x1f8b16); } , _0x5927dc['prototype']['_updateMatrixForUniform'] = function(_0x4a62d9, _0x387538) { this['updateUniform'](_0x4a62d9, _0x387538['toArray'](), 0x10); } , _0x5927dc['prototype']['_updateVector3ForEffect'] = function(_0x21645b, _0x125dcb) { this['_currentEffect']['setVector3'](_0x21645b, _0x125dcb); } , _0x5927dc['prototype']['_updateVector3ForUniform'] = function(_0x502b36, _0x4c47a2) { _0x4c47a2['toArray'](_0x5927dc['_tempBuffer']), this['updateUniform'](_0x502b36, _0x5927dc['_tempBuffer'], 0x3); } , _0x5927dc['prototype']['_updateVector4ForEffect'] = function(_0x2195c0, _0x5a60f8) { this['_currentEffect']['setVector4'](_0x2195c0, _0x5a60f8); } , _0x5927dc['prototype']['_updateVector4ForUniform'] = function(_0x210cf8, _0x3d1589) { _0x3d1589['toArray'](_0x5927dc['_tempBuffer']), this['updateUniform'](_0x210cf8, _0x5927dc['_tempBuffer'], 0x4); } , _0x5927dc['prototype']['_updateColor3ForEffect'] = function(_0x3220f7, _0x4764b4, _0xa2d875) { void 0x0 === _0xa2d875 && (_0xa2d875 = ''), this['_currentEffect']['setColor3'](_0x3220f7 + _0xa2d875, _0x4764b4); } , _0x5927dc['prototype']['_updateColor3ForUniform'] = function(_0xe3ae7f, _0x2eb0a1) { _0x2eb0a1['toArray'](_0x5927dc['_tempBuffer']), this['updateUniform'](_0xe3ae7f, _0x5927dc['_tempBuffer'], 0x3); } , _0x5927dc['prototype']['_updateColor4ForEffect'] = function(_0x156aec, _0x1d18b3, _0x3acfd4, _0x15e639) { void 0x0 === _0x15e639 && (_0x15e639 = ''), this['_currentEffect']['setColor4'](_0x156aec + _0x15e639, _0x1d18b3, _0x3acfd4); } , _0x5927dc['prototype']['_updateColor4ForUniform'] = function(_0xdb3170, _0x47b6b9, _0x5ea9b3) { _0x47b6b9['toArray'](_0x5927dc['_tempBuffer']), _0x5927dc['_tempBuffer'][0x3] = _0x5ea9b3, this['updateUniform'](_0xdb3170, _0x5927dc['_tempBuffer'], 0x4); } , _0x5927dc['prototype']['setTexture'] = function(_0x302ba6, _0x10903e) { this['_currentEffect']['setTexture'](_0x302ba6, _0x10903e); } , _0x5927dc['prototype']['updateUniformDirectly'] = function(_0x40a3ee, _0xe3f717) { this['updateUniform'](_0x40a3ee, _0xe3f717, _0xe3f717['length']), this['update'](); } , _0x5927dc['prototype']['bindToEffect'] = function(_0x442667, _0x8f3a65) { this['_currentEffect'] = _0x442667, !this['_noUBO'] && this['_buffer'] && _0x442667['bindUniformBuffer'](this['_buffer'], _0x8f3a65); } , _0x5927dc['prototype']['dispose'] = function() { if (!this['_noUBO']) { var _0x2d0874 = this['_engine']['_uniformBuffers'] , _0x5ef1cf = _0x2d0874['indexOf'](this); -0x1 !== _0x5ef1cf && (_0x2d0874[_0x5ef1cf] = _0x2d0874[_0x2d0874['length'] - 0x1], _0x2d0874['pop']()), this['_buffer'] && this['_engine']['_releaseBuffer'](this['_buffer']) && (this['_buffer'] = null); } } , _0x5927dc['_MAX_UNIFORM_SIZE'] = 0x100, _0x5927dc['_tempBuffer'] = new Float32Array(_0x5927dc['_MAX_UNIFORM_SIZE']), _0x5927dc; }(); } , function(_0xd85481, _0x324152, _0x399609) { 'use strict'; _0x399609['d'](_0x324152, 'a', function() { return _0x5b85c5; }); var _0x5b85c5 = function() { function _0x3770b8() { this['_isDirty'] = !0x0, this['_areLightsDirty'] = !0x0, this['_areAttributesDirty'] = !0x0, this['_areTexturesDirty'] = !0x0, this['_areFresnelDirty'] = !0x0, this['_areMiscDirty'] = !0x0, this['_areImageProcessingDirty'] = !0x0, this['_normals'] = !0x1, this['_uvs'] = !0x1, this['_needNormals'] = !0x1, this['_needUVs'] = !0x1; } return Object['defineProperty'](_0x3770b8['prototype'], 'isDirty', { 'get': function() { return this['_isDirty']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3770b8['prototype']['markAsProcessed'] = function() { this['_isDirty'] = !0x1, this['_areAttributesDirty'] = !0x1, this['_areTexturesDirty'] = !0x1, this['_areFresnelDirty'] = !0x1, this['_areLightsDirty'] = !0x1, this['_areMiscDirty'] = !0x1, this['_areImageProcessingDirty'] = !0x1; } , _0x3770b8['prototype']['markAsUnprocessed'] = function() { this['_isDirty'] = !0x0; } , _0x3770b8['prototype']['markAllAsDirty'] = function() { this['_areTexturesDirty'] = !0x0, this['_areAttributesDirty'] = !0x0, this['_areLightsDirty'] = !0x0, this['_areFresnelDirty'] = !0x0, this['_areMiscDirty'] = !0x0, this['_areImageProcessingDirty'] = !0x0, this['_isDirty'] = !0x0; } , _0x3770b8['prototype']['markAsImageProcessingDirty'] = function() { this['_areImageProcessingDirty'] = !0x0, this['_isDirty'] = !0x0; } , _0x3770b8['prototype']['markAsLightDirty'] = function() { this['_areLightsDirty'] = !0x0, this['_isDirty'] = !0x0; } , _0x3770b8['prototype']['markAsAttributesDirty'] = function() { this['_areAttributesDirty'] = !0x0, this['_isDirty'] = !0x0; } , _0x3770b8['prototype']['markAsTexturesDirty'] = function() { this['_areTexturesDirty'] = !0x0, this['_isDirty'] = !0x0; } , _0x3770b8['prototype']['markAsFresnelDirty'] = function() { this['_areFresnelDirty'] = !0x0, this['_isDirty'] = !0x0; } , _0x3770b8['prototype']['markAsMiscDirty'] = function() { this['_areMiscDirty'] = !0x0, this['_isDirty'] = !0x0; } , _0x3770b8['prototype']['rebuild'] = function() { this['_keys'] && delete this['_keys'], this['_keys'] = []; for (var _0x117b4d = 0x0, _0x4d1d7c = Object['keys'](this); _0x117b4d < _0x4d1d7c['length']; _0x117b4d++) { var _0x5402e3 = _0x4d1d7c[_0x117b4d]; '_' !== _0x5402e3[0x0] && this['_keys']['push'](_0x5402e3); } } , _0x3770b8['prototype']['isEqual'] = function(_0xafff61) { if (this['_keys']['length'] !== _0xafff61['_keys']['length']) return !0x1; for (var _0x458776 = 0x0; _0x458776 < this['_keys']['length']; _0x458776++) { var _0x4116be = this['_keys'][_0x458776]; if (this[_0x4116be] !== _0xafff61[_0x4116be]) return !0x1; } return !0x0; } , _0x3770b8['prototype']['cloneTo'] = function(_0x360be3) { this['_keys']['length'] !== _0x360be3['_keys']['length'] && (_0x360be3['_keys'] = this['_keys']['slice'](0x0)); for (var _0xbc951f = 0x0; _0xbc951f < this['_keys']['length']; _0xbc951f++) { var _0x1de934 = this['_keys'][_0xbc951f]; _0x360be3[_0x1de934] = this[_0x1de934]; } } , _0x3770b8['prototype']['reset'] = function() { for (var _0xe3d041 = 0x0; _0xe3d041 < this['_keys']['length']; _0xe3d041++) { var _0x4c4097 = this['_keys'][_0xe3d041]; switch (typeof this[_0x4c4097]) { case 'number': this[_0x4c4097] = 0x0; break; case 'string': this[_0x4c4097] = ''; break; default: this[_0x4c4097] = !0x1; } } } , _0x3770b8['prototype']['toString'] = function() { for (var _0x2a6533 = '', _0x399e6d = 0x0; _0x399e6d < this['_keys']['length']; _0x399e6d++) { var _0x33803b = this['_keys'][_0x399e6d] , _0x2ae1f6 = this[_0x33803b]; switch (typeof _0x2ae1f6) { case 'number': case 'string': _0x2a6533 += '#define\x20' + _0x33803b + '\x20' + _0x2ae1f6 + '\x0a'; break; default: _0x2ae1f6 && (_0x2a6533 += '#define\x20' + _0x33803b + '\x0a'); } } return _0x2a6533; } , _0x3770b8; }(); } , function(_0x5471b5, _0x32b95e, _0x1e0a1b) { 'use strict'; _0x1e0a1b['d'](_0x32b95e, 'a', function() { return _0x14922e; }); var _0x3ac7ab = _0x1e0a1b(0x1) , _0x41ae18 = _0x1e0a1b(0x2) , _0x205dee = _0x1e0a1b(0x0) , _0x5542bc = _0x1e0a1b(0x19) , _0x3076c3 = _0x1e0a1b(0x26); _0x5542bc['a']['AddNodeConstructor']('Light_Type_3', function(_0x44090c, _0x2a56e2) { return function() { return new _0x14922e(_0x44090c,_0x205dee['x']['Zero'](),_0x2a56e2); } ; }); var _0x14922e = function(_0x58de74) { function _0x1ff4b6(_0x4d363e, _0x216ced, _0x176936) { var _0x1597a3 = _0x58de74['call'](this, _0x4d363e, _0x176936) || this; return _0x1597a3['groundColor'] = new _0x205dee['e'](0x0,0x0,0x0), _0x1597a3['direction'] = _0x216ced || _0x205dee['x']['Up'](), _0x1597a3; } return _0x3ac7ab['d'](_0x1ff4b6, _0x58de74), _0x1ff4b6['prototype']['_buildUniformLayout'] = function() { this['_uniformBuffer']['addUniform']('vLightData', 0x4), this['_uniformBuffer']['addUniform']('vLightDiffuse', 0x4), this['_uniformBuffer']['addUniform']('vLightSpecular', 0x3), this['_uniformBuffer']['addUniform']('vLightGround', 0x3), this['_uniformBuffer']['addUniform']('shadowsInfo', 0x3), this['_uniformBuffer']['addUniform']('depthValues', 0x2), this['_uniformBuffer']['create'](); } , _0x1ff4b6['prototype']['getClassName'] = function() { return 'HemisphericLight'; } , _0x1ff4b6['prototype']['setDirectionToTarget'] = function(_0x22fd56) { return this['direction'] = _0x205dee['x']['Normalize'](_0x22fd56['subtract'](_0x205dee['x']['Zero']())), this['direction']; } , _0x1ff4b6['prototype']['getShadowGenerator'] = function() { return null; } , _0x1ff4b6['prototype']['transferToEffect'] = function(_0x778155, _0x242075) { var _0x63745f = _0x205dee['x']['Normalize'](this['direction']); return this['_uniformBuffer']['updateFloat4']('vLightData', _0x63745f['x'], _0x63745f['y'], _0x63745f['z'], 0x0, _0x242075), this['_uniformBuffer']['updateColor3']('vLightGround', this['groundColor']['scale'](this['intensity']), _0x242075), this; } , _0x1ff4b6['prototype']['computeWorldMatrix'] = function() { return this['_worldMatrix'] || (this['_worldMatrix'] = _0x205dee['j']['Identity']()), this['_worldMatrix']; } , _0x1ff4b6['prototype']['getTypeID'] = function() { return _0x3076c3['a']['LIGHTTYPEID_HEMISPHERICLIGHT']; } , _0x1ff4b6['prototype']['prepareLightSpecificDefines'] = function(_0x562dc7, _0x313f43) { _0x562dc7['HEMILIGHT' + _0x313f43] = !0x0; } , _0x3ac7ab['c']([Object(_0x41ae18['e'])()], _0x1ff4b6['prototype'], 'groundColor', void 0x0), _0x3ac7ab['c']([Object(_0x41ae18['o'])()], _0x1ff4b6['prototype'], 'direction', void 0x0), _0x1ff4b6; }(_0x3076c3['a']); } , function(_0x17fba1, _0x5d47fd, _0x5f1425) { 'use strict'; _0x5f1425['d'](_0x5d47fd, 'a', function() { return _0xa15073; }); var _0x4a6359 = _0x5f1425(0x1) , _0x3e87d0 = _0x5f1425(0x14) , _0xb3c3a7 = _0x5f1425(0x1d) , _0x1b9ea5 = _0x5f1425(0x16) , _0xa15073 = function(_0x5d0fb6) { function _0x21c0b7(_0x534912, _0x430bd8) { var _0x334ecf = _0x5d0fb6['call'](this, _0x534912, _0x430bd8, !0x0) || this; return _0x430bd8['multiMaterials']['push'](_0x334ecf), _0x334ecf['subMaterials'] = new Array(), _0x334ecf['_storeEffectOnSubMeshes'] = !0x0, _0x334ecf; } return _0x4a6359['d'](_0x21c0b7, _0x5d0fb6), Object['defineProperty'](_0x21c0b7['prototype'], 'subMaterials', { 'get': function() { return this['_subMaterials']; }, 'set': function(_0x2420e9) { this['_subMaterials'] = _0x2420e9, this['_hookArray'](_0x2420e9); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x21c0b7['prototype']['getChildren'] = function() { return this['subMaterials']; } , _0x21c0b7['prototype']['_hookArray'] = function(_0x254f8f) { var _0x213c8c = this , _0x3b5d99 = _0x254f8f['push']; _0x254f8f['push'] = function() { for (var _0x25974f = [], _0x1b5588 = 0x0; _0x1b5588 < arguments['length']; _0x1b5588++) _0x25974f[_0x1b5588] = arguments[_0x1b5588]; var _0x48b0e5 = _0x3b5d99['apply'](_0x254f8f, _0x25974f); return _0x213c8c['_markAllSubMeshesAsTexturesDirty'](), _0x48b0e5; } ; var _0x271c58 = _0x254f8f['splice']; _0x254f8f['splice'] = function(_0x40ecc2, _0xf98071) { var _0x290b95 = _0x271c58['apply'](_0x254f8f, [_0x40ecc2, _0xf98071]); return _0x213c8c['_markAllSubMeshesAsTexturesDirty'](), _0x290b95; } ; } , _0x21c0b7['prototype']['getSubMaterial'] = function(_0x103ac6) { return _0x103ac6 < 0x0 || _0x103ac6 >= this['subMaterials']['length'] ? this['getScene']()['defaultMaterial'] : this['subMaterials'][_0x103ac6]; } , _0x21c0b7['prototype']['getActiveTextures'] = function() { var _0x1d0515; return (_0x1d0515 = _0x5d0fb6['prototype']['getActiveTextures']['call'](this))['concat']['apply'](_0x1d0515, this['subMaterials']['map'](function(_0x5ebcfe) { return _0x5ebcfe ? _0x5ebcfe['getActiveTextures']() : []; })); } , _0x21c0b7['prototype']['getClassName'] = function() { return 'MultiMaterial'; } , _0x21c0b7['prototype']['isReadyForSubMesh'] = function(_0x153ba3, _0x425ff2, _0xb1679d) { for (var _0x304456 = 0x0; _0x304456 < this['subMaterials']['length']; _0x304456++) { var _0x43a6e7 = this['subMaterials'][_0x304456]; if (_0x43a6e7) { if (_0x43a6e7['_storeEffectOnSubMeshes']) { if (!_0x43a6e7['isReadyForSubMesh'](_0x153ba3, _0x425ff2, _0xb1679d)) return !0x1; continue; } if (!_0x43a6e7['isReady'](_0x153ba3)) return !0x1; } } return !0x0; } , _0x21c0b7['prototype']['clone'] = function(_0x41cbdc, _0x1f1f5e) { for (var _0x10c89d = new _0x21c0b7(_0x41cbdc,this['getScene']()), _0x4521c6 = 0x0; _0x4521c6 < this['subMaterials']['length']; _0x4521c6++) { var _0x20f0fa = null , _0x41ff63 = this['subMaterials'][_0x4521c6]; _0x20f0fa = _0x1f1f5e && _0x41ff63 ? _0x41ff63['clone'](_0x41cbdc + '-' + _0x41ff63['name']) : this['subMaterials'][_0x4521c6], _0x10c89d['subMaterials']['push'](_0x20f0fa); } return _0x10c89d; } , _0x21c0b7['prototype']['serialize'] = function() { var _0x440123 = {}; _0x440123['name'] = this['name'], _0x440123['id'] = this['id'], _0xb3c3a7['a'] && (_0x440123['tags'] = _0xb3c3a7['a']['GetTags'](this)), _0x440123['materials'] = []; for (var _0x2bf312 = 0x0; _0x2bf312 < this['subMaterials']['length']; _0x2bf312++) { var _0x5c21ab = this['subMaterials'][_0x2bf312]; _0x5c21ab ? _0x440123['materials']['push'](_0x5c21ab['id']) : _0x440123['materials']['push'](null); } return _0x440123; } , _0x21c0b7['prototype']['dispose'] = function(_0x211df6, _0x5e067a, _0x27eea4) { var _0x7d8e25 = this['getScene'](); if (_0x7d8e25) { if (_0x27eea4) for (var _0x134b84 = 0x0; _0x134b84 < this['subMaterials']['length']; _0x134b84++) { var _0x61fa6b = this['subMaterials'][_0x134b84]; _0x61fa6b && _0x61fa6b['dispose'](_0x211df6, _0x5e067a); } (_0x134b84 = _0x7d8e25['multiMaterials']['indexOf'](this)) >= 0x0 && _0x7d8e25['multiMaterials']['splice'](_0x134b84, 0x1), _0x5d0fb6['prototype']['dispose']['call'](this, _0x211df6, _0x5e067a); } } , _0x21c0b7['ParseMultiMaterial'] = function(_0x50e267, _0x328185) { var _0x2c8494 = new _0x21c0b7(_0x50e267['name'],_0x328185); _0x2c8494['id'] = _0x50e267['id'], _0xb3c3a7['a'] && _0xb3c3a7['a']['AddTagsTo'](_0x2c8494, _0x50e267['tags']); for (var _0x5a122f = 0x0; _0x5a122f < _0x50e267['materials']['length']; _0x5a122f++) { var _0x22be1e = _0x50e267['materials'][_0x5a122f]; _0x22be1e ? _0x2c8494['subMaterials']['push'](_0x328185['getMaterialByID'](_0x22be1e)) : _0x2c8494['subMaterials']['push'](null); } return _0x2c8494; } , _0x21c0b7; }(_0x3e87d0['a']); _0x1b9ea5['a']['RegisteredTypes']['BABYLON.MultiMaterial'] = _0xa15073; } , function(_0x443ede, _0x290a35, _0x110c97) { 'use strict'; var _0x241c99 = 'bonesDeclaration' , _0x41c46e = '#if\x20NUM_BONE_INFLUENCERS>0\x0a#ifdef\x20BONETEXTURE\x0auniform\x20sampler2D\x20boneSampler;\x0auniform\x20float\x20boneTextureWidth;\x0a#else\x0auniform\x20mat4\x20mBones[BonesPerMesh];\x0a#endif\x0aattribute\x20vec4\x20matricesIndices;\x0aattribute\x20vec4\x20matricesWeights;\x0a#if\x20NUM_BONE_INFLUENCERS>4\x0aattribute\x20vec4\x20matricesIndicesExtra;\x0aattribute\x20vec4\x20matricesWeightsExtra;\x0a#endif\x0a#ifdef\x20BONETEXTURE\x0amat4\x20readMatrixFromRawSampler(sampler2D\x20smp,float\x20index)\x0a{\x0afloat\x20offset=index*4.0;\x0afloat\x20dx=1.0/boneTextureWidth;\x0avec4\x20m0=texture2D(smp,vec2(dx*(offset+0.5),0.));\x0avec4\x20m1=texture2D(smp,vec2(dx*(offset+1.5),0.));\x0avec4\x20m2=texture2D(smp,vec2(dx*(offset+2.5),0.));\x0avec4\x20m3=texture2D(smp,vec2(dx*(offset+3.5),0.));\x0areturn\x20mat4(m0,m1,m2,m3);\x0a}\x0a#endif\x0a#endif'; _0x110c97(0x5)['a']['IncludesShadersStore'][_0x241c99] = _0x41c46e; } , function(_0x2d1785, _0x5b1836, _0x3ff371) { 'use strict'; var _0xca1c48 = 'instancesDeclaration' , _0x112715 = '#ifdef\x20INSTANCES\x0aattribute\x20vec4\x20world0;\x0aattribute\x20vec4\x20world1;\x0aattribute\x20vec4\x20world2;\x0aattribute\x20vec4\x20world3;\x0a#else\x0auniform\x20mat4\x20world;\x0a#endif'; _0x3ff371(0x5)['a']['IncludesShadersStore'][_0xca1c48] = _0x112715; } , function(_0x4204dd, _0x253e01, _0x13c764) { 'use strict'; var _0x4ddfcb = 'instancesVertex' , _0x1e4203 = '#ifdef\x20INSTANCES\x0amat4\x20finalWorld=mat4(world0,world1,world2,world3);\x0a#else\x0amat4\x20finalWorld=world;\x0a#endif'; _0x13c764(0x5)['a']['IncludesShadersStore'][_0x4ddfcb] = _0x1e4203; } , function(_0x580191, _0x290441, _0x5cc14c) { 'use strict'; var _0x9cd13b = '#if\x20NUM_BONE_INFLUENCERS>0\x0amat4\x20influence;\x0a#ifdef\x20BONETEXTURE\x0ainfluence=readMatrixFromRawSampler(boneSampler,matricesIndices[0])*matricesWeights[0];\x0a#if\x20NUM_BONE_INFLUENCERS>1\x0ainfluence+=readMatrixFromRawSampler(boneSampler,matricesIndices[1])*matricesWeights[1];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>2\x0ainfluence+=readMatrixFromRawSampler(boneSampler,matricesIndices[2])*matricesWeights[2];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>3\x0ainfluence+=readMatrixFromRawSampler(boneSampler,matricesIndices[3])*matricesWeights[3];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>4\x0ainfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[0])*matricesWeightsExtra[0];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>5\x0ainfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[1])*matricesWeightsExtra[1];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>6\x0ainfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[2])*matricesWeightsExtra[2];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>7\x0ainfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[3])*matricesWeightsExtra[3];\x0a#endif\x0a#else\x0ainfluence=mBones[int(matricesIndices[0])]*matricesWeights[0];\x0a#if\x20NUM_BONE_INFLUENCERS>1\x0ainfluence+=mBones[int(matricesIndices[1])]*matricesWeights[1];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>2\x0ainfluence+=mBones[int(matricesIndices[2])]*matricesWeights[2];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>3\x0ainfluence+=mBones[int(matricesIndices[3])]*matricesWeights[3];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>4\x0ainfluence+=mBones[int(matricesIndicesExtra[0])]*matricesWeightsExtra[0];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>5\x0ainfluence+=mBones[int(matricesIndicesExtra[1])]*matricesWeightsExtra[1];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>6\x0ainfluence+=mBones[int(matricesIndicesExtra[2])]*matricesWeightsExtra[2];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>7\x0ainfluence+=mBones[int(matricesIndicesExtra[3])]*matricesWeightsExtra[3];\x0a#endif\x0a#endif\x0afinalWorld=finalWorld*influence;\x0a#endif'; _0x5cc14c(0x5)['a']['IncludesShadersStore']['bonesVertex'] = _0x9cd13b; } , function(_0x280a74, _0x17a976, _0x3dd72e) { 'use strict'; _0x3dd72e['d'](_0x17a976, 'a', function() { return _0x9707e; }); var _0x20fdf5 = _0x3dd72e(0x0) , _0x1cff4d = _0x3dd72e(0xc) , _0x4d68aa = _0x3dd72e(0x3e) , _0x10c3f4 = _0x3dd72e(0x3) , _0x72c192 = function() { return function(_0x4a57b8, _0x258190, _0x3b53ac, _0x41e880) { this['name'] = _0x4a57b8, this['worldAxisForNormal'] = _0x258190, this['worldAxisForFileX'] = _0x3b53ac, this['worldAxisForFileY'] = _0x41e880; } ; }() , _0x9707e = function() { function _0x5d0a2f() {} return _0x5d0a2f['ConvertCubeMapTextureToSphericalPolynomial'] = function(_0x2c677d) { if (!_0x2c677d['isCube']) return null; var _0x50adc5, _0xeb5d4f, _0xb55194 = _0x2c677d['getSize']()['width'], _0x45d611 = _0x2c677d['readPixels'](0x0), _0x39a3c0 = _0x2c677d['readPixels'](0x1); _0x2c677d['isRenderTarget'] ? (_0x50adc5 = _0x2c677d['readPixels'](0x3), _0xeb5d4f = _0x2c677d['readPixels'](0x2)) : (_0x50adc5 = _0x2c677d['readPixels'](0x2), _0xeb5d4f = _0x2c677d['readPixels'](0x3)); var _0x2f2dcb = _0x2c677d['readPixels'](0x4) , _0x574683 = _0x2c677d['readPixels'](0x5) , _0x1c13f5 = _0x2c677d['gammaSpace'] , _0x1a328a = _0x10c3f4['a']['TEXTUREFORMAT_RGBA'] , _0x13e5c3 = _0x10c3f4['a']['TEXTURETYPE_UNSIGNED_INT']; _0x2c677d['textureType'] && _0x2c677d['textureType'] !== _0x10c3f4['a']['TEXTURETYPE_UNSIGNED_INT'] && (_0x13e5c3 = _0x10c3f4['a']['TEXTURETYPE_FLOAT']); var _0x53cfbe = { 'size': _0xb55194, 'right': _0x45d611, 'left': _0x39a3c0, 'up': _0x50adc5, 'down': _0xeb5d4f, 'front': _0x2f2dcb, 'back': _0x574683, 'format': _0x1a328a, 'type': _0x13e5c3, 'gammaSpace': _0x1c13f5 }; return this['ConvertCubeMapToSphericalPolynomial'](_0x53cfbe); } , _0x5d0a2f['ConvertCubeMapToSphericalPolynomial'] = function(_0x37a66e) { for (var _0x4ec4b5 = new _0x4d68aa['a'](), _0x5362ab = 0x0, _0xbba187 = 0x2 / _0x37a66e['size'], _0x151c40 = _0xbba187, _0x116b5d = 0.5 * _0xbba187 - 0x1, _0x5f110f = 0x0; _0x5f110f < 0x6; _0x5f110f++) for (var _0x16903e = this['FileFaces'][_0x5f110f], _0x26769d = _0x37a66e[_0x16903e['name']], _0x265329 = _0x116b5d, _0x501a81 = _0x37a66e['format'] === _0x10c3f4['a']['TEXTUREFORMAT_RGBA'] ? 0x4 : 0x3, _0x1dd216 = 0x0; _0x1dd216 < _0x37a66e['size']; _0x1dd216++) { for (var _0x472f87 = _0x116b5d, _0x6da9c8 = 0x0; _0x6da9c8 < _0x37a66e['size']; _0x6da9c8++) { var _0x2a2fe2 = _0x16903e['worldAxisForFileX']['scale'](_0x472f87)['add'](_0x16903e['worldAxisForFileY']['scale'](_0x265329))['add'](_0x16903e['worldAxisForNormal']); _0x2a2fe2['normalize'](); var _0x52177b = Math['pow'](0x1 + _0x472f87 * _0x472f87 + _0x265329 * _0x265329, -1.5) , _0x35521a = _0x26769d[_0x1dd216 * _0x37a66e['size'] * _0x501a81 + _0x6da9c8 * _0x501a81 + 0x0] , _0x448577 = _0x26769d[_0x1dd216 * _0x37a66e['size'] * _0x501a81 + _0x6da9c8 * _0x501a81 + 0x1] , _0x3864fd = _0x26769d[_0x1dd216 * _0x37a66e['size'] * _0x501a81 + _0x6da9c8 * _0x501a81 + 0x2]; _0x37a66e['type'] === _0x10c3f4['a']['TEXTURETYPE_UNSIGNED_INT'] && (_0x35521a /= 0xff, _0x448577 /= 0xff, _0x3864fd /= 0xff), _0x37a66e['gammaSpace'] && (_0x35521a = Math['pow'](_0x1cff4d['a']['Clamp'](_0x35521a), _0x20fdf5['v']), _0x448577 = Math['pow'](_0x1cff4d['a']['Clamp'](_0x448577), _0x20fdf5['v']), _0x3864fd = Math['pow'](_0x1cff4d['a']['Clamp'](_0x3864fd), _0x20fdf5['v'])); var _0x274e6d = new _0x20fdf5['e'](_0x35521a,_0x448577,_0x3864fd); _0x4ec4b5['addLight'](_0x2a2fe2, _0x274e6d, _0x52177b), _0x5362ab += _0x52177b, _0x472f87 += _0xbba187; } _0x265329 += _0x151c40; } var _0x528161 = 0x6 * (0x4 * Math['PI']) / 0x6 / _0x5362ab; return _0x4ec4b5['scaleInPlace'](_0x528161), _0x4ec4b5['convertIncidentRadianceToIrradiance'](), _0x4ec4b5['convertIrradianceToLambertianRadiance'](), _0x4d68aa['b']['FromHarmonics'](_0x4ec4b5); } , _0x5d0a2f['FileFaces'] = [new _0x72c192('right',new _0x20fdf5['x'](0x1,0x0,0x0),new _0x20fdf5['x'](0x0,0x0,-0x1),new _0x20fdf5['x'](0x0,-0x1,0x0)), new _0x72c192('left',new _0x20fdf5['x'](-0x1,0x0,0x0),new _0x20fdf5['x'](0x0,0x0,0x1),new _0x20fdf5['x'](0x0,-0x1,0x0)), new _0x72c192('up',new _0x20fdf5['x'](0x0,0x1,0x0),new _0x20fdf5['x'](0x1,0x0,0x0),new _0x20fdf5['x'](0x0,0x0,0x1)), new _0x72c192('down',new _0x20fdf5['x'](0x0,-0x1,0x0),new _0x20fdf5['x'](0x1,0x0,0x0),new _0x20fdf5['x'](0x0,0x0,-0x1)), new _0x72c192('front',new _0x20fdf5['x'](0x0,0x0,0x1),new _0x20fdf5['x'](0x1,0x0,0x0),new _0x20fdf5['x'](0x0,-0x1,0x0)), new _0x72c192('back',new _0x20fdf5['x'](0x0,0x0,-0x1),new _0x20fdf5['x'](-0x1,0x0,0x0),new _0x20fdf5['x'](0x0,-0x1,0x0))], _0x5d0a2f; }(); } , function(_0x2270e6, _0x4f3488, _0x28ecfd) { 'use strict'; _0x28ecfd['d'](_0x4f3488, 'b', function() { return _0x201925; }), _0x28ecfd['d'](_0x4f3488, 'a', function() { return _0x672c83; }); var _0x2b5d31 = _0x28ecfd(0x1) , _0x319af5 = _0x28ecfd(0x0) , _0x1baba2 = _0x28ecfd(0x4) , _0xcbad4 = _0x28ecfd(0xb) , _0x371edd = _0x28ecfd(0x6f) , _0x384177 = _0x28ecfd(0x14) , _0x43c5f7 = _0x28ecfd(0x4c) , _0x4e9751 = (_0x28ecfd(0x7e), _0x28ecfd(0x7f), _0x28ecfd(0xf)) , _0x201925 = function(_0x46f7a1) { function _0x16ceae(_0xec31ad, _0x4f081b, _0x42ee44, _0x2b717f, _0x30d54d, _0x2cb012, _0x2bfac9) { void 0x0 === _0x4f081b && (_0x4f081b = null), void 0x0 === _0x42ee44 && (_0x42ee44 = null); var _0x374631 = _0x46f7a1['call'](this, _0xec31ad, _0x4f081b, _0x42ee44, _0x2b717f, _0x30d54d) || this; _0x374631['useVertexColor'] = _0x2cb012, _0x374631['useVertexAlpha'] = _0x2bfac9, _0x374631['color'] = new _0x319af5['e'](0x1,0x1,0x1), _0x374631['alpha'] = 0x1, _0x2b717f && (_0x374631['color'] = _0x2b717f['color']['clone'](), _0x374631['alpha'] = _0x2b717f['alpha'], _0x374631['useVertexColor'] = _0x2b717f['useVertexColor'], _0x374631['useVertexAlpha'] = _0x2b717f['useVertexAlpha']), _0x374631['intersectionThreshold'] = 0.1; var _0x4e4704 = { 'attributes': [_0x1baba2['b']['PositionKind'], 'world0', 'world1', 'world2', 'world3'], 'uniforms': ['vClipPlane', 'vClipPlane2', 'vClipPlane3', 'vClipPlane4', 'world', 'viewProjection'], 'needAlphaBlending': !0x0, 'defines': [] }; return !0x1 === _0x2bfac9 && (_0x4e4704['needAlphaBlending'] = !0x1), _0x2cb012 ? (_0x4e4704['defines']['push']('#define\x20VERTEXCOLOR'), _0x4e4704['attributes']['push'](_0x1baba2['b']['ColorKind'])) : _0x4e4704['uniforms']['push']('color'), _0x374631['_colorShader'] = new _0x43c5f7['a']('colorShader',_0x374631['getScene'](),'color',_0x4e4704), _0x374631; } return _0x2b5d31['d'](_0x16ceae, _0x46f7a1), _0x16ceae['prototype']['_addClipPlaneDefine'] = function(_0x2242d5) { var _0xed3b38 = '#define\x20' + _0x2242d5; -0x1 === this['_colorShader']['options']['defines']['indexOf'](_0xed3b38) && this['_colorShader']['options']['defines']['push'](_0xed3b38); } , _0x16ceae['prototype']['_removeClipPlaneDefine'] = function(_0x1fd472) { var _0xeab8cd = '#define\x20' + _0x1fd472 , _0x5c162a = this['_colorShader']['options']['defines']['indexOf'](_0xeab8cd); -0x1 !== _0x5c162a && this['_colorShader']['options']['defines']['splice'](_0x5c162a, 0x1); } , _0x16ceae['prototype']['isReady'] = function() { var _0x36d35a = this['getScene'](); return _0x36d35a['clipPlane'] ? this['_addClipPlaneDefine']('CLIPPLANE') : this['_removeClipPlaneDefine']('CLIPPLANE'), _0x36d35a['clipPlane2'] ? this['_addClipPlaneDefine']('CLIPPLANE2') : this['_removeClipPlaneDefine']('CLIPPLANE2'), _0x36d35a['clipPlane3'] ? this['_addClipPlaneDefine']('CLIPPLANE3') : this['_removeClipPlaneDefine']('CLIPPLANE3'), _0x36d35a['clipPlane4'] ? this['_addClipPlaneDefine']('CLIPPLANE4') : this['_removeClipPlaneDefine']('CLIPPLANE4'), !!this['_colorShader']['isReady']() && _0x46f7a1['prototype']['isReady']['call'](this); } , _0x16ceae['prototype']['getClassName'] = function() { return 'LinesMesh'; } , Object['defineProperty'](_0x16ceae['prototype'], 'material', { 'get': function() { return this['_colorShader']; }, 'set': function(_0x905708) {}, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x16ceae['prototype'], 'checkCollisions', { 'get': function() { return !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x16ceae['prototype']['_bind'] = function(_0x5e5e2f, _0x2bd82e, _0x290c7a) { if (!this['_geometry']) return this; var _0x4fdc33 = this['_colorShader']['getEffect']() , _0x3dd5b2 = this['isUnIndexed'] ? null : this['_geometry']['getIndexBuffer'](); return this['_geometry']['_bind'](_0x4fdc33, _0x3dd5b2), this['useVertexColor'] || this['_colorShader']['setColor4']('color', this['color']['toColor4'](this['alpha'])), _0x4e9751['a']['BindClipPlane'](_0x4fdc33, this['getScene']()), this; } , _0x16ceae['prototype']['_draw'] = function(_0x24a600, _0x3e0cad, _0x1354a5) { if (!this['_geometry'] || !this['_geometry']['getVertexBuffers']() || !this['_unIndexed'] && !this['_geometry']['getIndexBuffer']()) return this; var _0xd9c808 = this['getScene']()['getEngine'](); return this['_unIndexed'] ? _0xd9c808['drawArraysType'](_0x384177['a']['LineListDrawMode'], _0x24a600['verticesStart'], _0x24a600['verticesCount'], _0x1354a5) : _0xd9c808['drawElementsType'](_0x384177['a']['LineListDrawMode'], _0x24a600['indexStart'], _0x24a600['indexCount'], _0x1354a5), this; } , _0x16ceae['prototype']['dispose'] = function(_0x59e8a1) { this['_colorShader']['dispose'](!0x1, !0x1, !0x0), _0x46f7a1['prototype']['dispose']['call'](this, _0x59e8a1); } , _0x16ceae['prototype']['clone'] = function(_0x5a111c, _0x36b5a3, _0x402f92) { return new _0x16ceae(_0x5a111c,this['getScene'](),_0x36b5a3,this,_0x402f92); } , _0x16ceae['prototype']['createInstance'] = function(_0x10f540) { return new _0x672c83(_0x10f540,this); } , _0x16ceae; }(_0xcbad4['a']) , _0x672c83 = function(_0x19e2fb) { function _0x2ab795(_0xac065d, _0x11134d) { var _0x446711 = _0x19e2fb['call'](this, _0xac065d, _0x11134d) || this; return _0x446711['intersectionThreshold'] = _0x11134d['intersectionThreshold'], _0x446711; } return _0x2b5d31['d'](_0x2ab795, _0x19e2fb), _0x2ab795['prototype']['getClassName'] = function() { return 'InstancedLinesMesh'; } , _0x2ab795; }(_0x371edd['a']); } , function(_0x3efbcc, _0x573a73, _0x4dd854) { 'use strict'; _0x4dd854['d'](_0x573a73, 'a', function() { return _0x34df0b; }); var _0x2258b1 = _0x4dd854(0x1) , _0x34df0b = function(_0x529d2f) { function _0x2df302(_0x2ddfd4) { var _0x195642 = _0x529d2f['call'](this) || this; return _0x195642['_buffer'] = _0x2ddfd4, _0x195642; } return _0x2258b1['d'](_0x2df302, _0x529d2f), Object['defineProperty'](_0x2df302['prototype'], 'underlyingResource', { 'get': function() { return this['_buffer']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2df302; }(_0x4dd854(0x4e)['a']); } , function(_0x354469, _0x245146, _0x33361b) { 'use strict'; _0x33361b['r'](_0x245146); var _0x1fd4f2 = _0x33361b(0x0) , _0x2cba27 = _0x33361b(0x21) , _0x5ebb17 = _0x33361b(0x3a) , _0xeaaa44 = function() { function _0x6e6e31(_0x16b69c, _0x38615a, _0x324ad7, _0x8bed9c, _0x481da6, _0x983a91) { if (void 0x0 === _0x38615a && (_0x38615a = 0x1), void 0x0 === _0x324ad7 && (_0x324ad7 = 0x2), this['_scaleLinesFactor'] = 0x4, this['_instanced'] = !0x1, this['scaleLines'] = 0x1, this['scaleLines'] = _0x38615a, !_0x8bed9c) { var _0xd74c9f = new _0x2cba27['a']('',_0x16b69c); _0xd74c9f['disableLighting'] = !0x0, _0xd74c9f['emissiveColor'] = _0x1fd4f2['e']['Red']()['scale'](0.5), _0x8bed9c = _0x5ebb17['a']['_CreateArrow'](_0x16b69c, _0xd74c9f); } if (!_0x481da6) { var _0x127f45 = new _0x2cba27['a']('',_0x16b69c); _0x127f45['disableLighting'] = !0x0, _0x127f45['emissiveColor'] = _0x1fd4f2['e']['Green']()['scale'](0.5), _0x481da6 = _0x5ebb17['a']['_CreateArrow'](_0x16b69c, _0x127f45); } if (!_0x983a91) { var _0x388386 = new _0x2cba27['a']('',_0x16b69c); _0x388386['disableLighting'] = !0x0, _0x388386['emissiveColor'] = _0x1fd4f2['e']['Blue']()['scale'](0.5), _0x983a91 = _0x5ebb17['a']['_CreateArrow'](_0x16b69c, _0x388386); } this['_xAxis'] = _0x8bed9c, this['_xAxis']['scaling']['setAll'](this['scaleLines'] * this['_scaleLinesFactor']), this['_yAxis'] = _0x481da6, this['_yAxis']['scaling']['setAll'](this['scaleLines'] * this['_scaleLinesFactor']), this['_zAxis'] = _0x983a91, this['_zAxis']['scaling']['setAll'](this['scaleLines'] * this['_scaleLinesFactor']), null != _0x324ad7 && (_0x6e6e31['_SetRenderingGroupId'](this['_xAxis'], _0x324ad7), _0x6e6e31['_SetRenderingGroupId'](this['_yAxis'], _0x324ad7), _0x6e6e31['_SetRenderingGroupId'](this['_zAxis'], _0x324ad7)), this['scene'] = _0x16b69c, this['update'](new _0x1fd4f2['x'](), _0x1fd4f2['x']['Right'](), _0x1fd4f2['x']['Up'](), _0x1fd4f2['x']['Forward']()); } return Object['defineProperty'](_0x6e6e31['prototype'], 'xAxis', { 'get': function() { return this['_xAxis']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6e6e31['prototype'], 'yAxis', { 'get': function() { return this['_yAxis']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6e6e31['prototype'], 'zAxis', { 'get': function() { return this['_zAxis']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x6e6e31['prototype']['update'] = function(_0x242772, _0x2da0e8, _0x5c0155, _0x2463cb) { this['_xAxis']['position']['copyFrom'](_0x242772), this['_xAxis']['setDirection'](_0x2da0e8), this['_xAxis']['scaling']['setAll'](this['scaleLines'] * this['_scaleLinesFactor']), this['_yAxis']['position']['copyFrom'](_0x242772), this['_yAxis']['setDirection'](_0x5c0155), this['_yAxis']['scaling']['setAll'](this['scaleLines'] * this['_scaleLinesFactor']), this['_zAxis']['position']['copyFrom'](_0x242772), this['_zAxis']['setDirection'](_0x2463cb), this['_zAxis']['scaling']['setAll'](this['scaleLines'] * this['_scaleLinesFactor']); } , _0x6e6e31['prototype']['createInstance'] = function() { var _0x9f3ece = _0x5ebb17['a']['_CreateArrowInstance'](this['scene'], this['_xAxis']) , _0x4f5921 = _0x5ebb17['a']['_CreateArrowInstance'](this['scene'], this['_yAxis']) , _0x3611d5 = _0x5ebb17['a']['_CreateArrowInstance'](this['scene'], this['_zAxis']) , _0x4d30aa = new _0x6e6e31(this['scene'],this['scaleLines'],null,_0x9f3ece,_0x4f5921,_0x3611d5); return _0x4d30aa['_instanced'] = !0x0, _0x4d30aa; } , _0x6e6e31['prototype']['dispose'] = function() { this['_xAxis'] && (this['_xAxis']['dispose'](!0x1, !this['_instanced']), delete this['_xAxis']), this['_yAxis'] && (this['_yAxis']['dispose'](!0x1, !this['_instanced']), delete this['_yAxis']), this['_zAxis'] && (this['_zAxis']['dispose'](!0x1, !this['_instanced']), delete this['_zAxis']), delete this['scene']; } , _0x6e6e31['_SetRenderingGroupId'] = function(_0x9fb081, _0x12345f) { _0x9fb081['getChildMeshes']()['forEach'](function(_0x1513e2) { _0x1513e2['renderingGroupId'] = _0x12345f; }); } , _0x6e6e31; }() , _0x471906 = _0x33361b(0x1) , _0x5b7659 = function(_0x35f493) { function _0x4eb9a0(_0x529540, _0x1d928a, _0x436dd1, _0x22ce81) { void 0x0 === _0x22ce81 && (_0x22ce81 = 0x1); var _0x17c990 = _0x35f493['call'](this, _0x529540, _0x22ce81) || this; return _0x17c990['pos'] = _0x1fd4f2['x']['Zero'](), _0x17c990['xaxis'] = _0x1fd4f2['x']['Zero'](), _0x17c990['yaxis'] = _0x1fd4f2['x']['Zero'](), _0x17c990['zaxis'] = _0x1fd4f2['x']['Zero'](), _0x17c990['mesh'] = _0x436dd1, _0x17c990['bone'] = _0x1d928a, _0x17c990; } return _0x471906['d'](_0x4eb9a0, _0x35f493), _0x4eb9a0['prototype']['update'] = function() { if (this['mesh'] && this['bone']) { var _0x730442 = this['bone']; _0x730442['getAbsolutePositionToRef'](this['mesh'], this['pos']), _0x730442['getDirectionToRef'](_0x1fd4f2['c']['X'], this['mesh'], this['xaxis']), _0x730442['getDirectionToRef'](_0x1fd4f2['c']['Y'], this['mesh'], this['yaxis']), _0x730442['getDirectionToRef'](_0x1fd4f2['c']['Z'], this['mesh'], this['zaxis']), _0x35f493['prototype']['update']['call'](this, this['pos'], this['xaxis'], this['yaxis'], this['zaxis']); } } , _0x4eb9a0['prototype']['dispose'] = function() { this['mesh'] && (this['mesh'] = null, this['bone'] = null, _0x35f493['prototype']['dispose']['call'](this)); } , _0x4eb9a0; }(_0xeaaa44) , _0x4a002c = _0x33361b(0x9) , _0x16e9b1 = _0x33361b(0x8) , _0x455174 = _0x33361b(0x10) , _0x394aec = _0x33361b(0xa); Object['defineProperty'](_0x455174['a']['prototype'], 'debugLayer', { 'get': function() { return this['_debugLayer'] || (this['_debugLayer'] = new _0x1afbdc(this)), this['_debugLayer']; }, 'enumerable': !0x0, 'configurable': !0x0 }); var _0x1afbdc = function() { function _0x3a15e3(_0x584b8c) { var _0x26c96a = this; this['BJSINSPECTOR'] = this['_getGlobalInspector'](), this['onPropertyChangedObservable'] = new _0x16e9b1['c'](), this['_scene'] = _0x584b8c, this['_scene']['onDisposeObservable']['add'](function() { _0x26c96a['_scene']['_debugLayer'] && _0x26c96a['_scene']['_debugLayer']['hide'](); }); } return _0x3a15e3['prototype']['_createInspector'] = function(_0x45c499) { if (!this['isVisible']()) { var _0x23c208 = _0x471906['a']({ 'overlay': !0x1, 'showExplorer': !0x0, 'showInspector': !0x0, 'embedMode': !0x1, 'handleResize': !0x0, 'enablePopup': !0x0 }, _0x45c499); this['BJSINSPECTOR'] = this['BJSINSPECTOR'] || this['_getGlobalInspector'](), this['BJSINSPECTOR']['Inspector']['Show'](this['_scene'], _0x23c208); } } , _0x3a15e3['prototype']['select'] = function(_0x501d16, _0x463fe0) { this['BJSINSPECTOR'] && (this['BJSINSPECTOR']['Inspector']['MarkLineContainerTitleForHighlighting'](_0x463fe0), this['BJSINSPECTOR']['Inspector']['OnSelectionChangeObservable']['notifyObservers'](_0x501d16)); } , _0x3a15e3['prototype']['_getGlobalInspector'] = function() { return 'undefined' != typeof INSPECTOR ? INSPECTOR : 'undefined' != typeof BABYLON && void 0x0 !== BABYLON['Inspector'] ? BABYLON : void 0x0; } , _0x3a15e3['prototype']['isVisible'] = function() { return this['BJSINSPECTOR'] && this['BJSINSPECTOR']['Inspector']['IsVisible']; } , _0x3a15e3['prototype']['hide'] = function() { this['BJSINSPECTOR'] && this['BJSINSPECTOR']['Inspector']['Hide'](); } , _0x3a15e3['prototype']['show'] = function(_0xfdddfd) { var _0xada756 = this; return new Promise(function(_0x35a3aa, _0x3d65bb) { if (void 0x0 === _0xada756['BJSINSPECTOR']) { var _0x7fa667 = _0xfdddfd && _0xfdddfd['inspectorURL'] ? _0xfdddfd['inspectorURL'] : _0x3a15e3['InspectorURL']; _0x4a002c['h']['LoadScript'](_0x7fa667, function() { _0xada756['_createInspector'](_0xfdddfd), _0x35a3aa(_0xada756); }); } else _0xada756['_createInspector'](_0xfdddfd), _0x35a3aa(_0xada756); } ); } , _0x3a15e3['InspectorURL'] = 'https://unpkg.com/babylonjs-inspector@' + _0x394aec['b']['Version'] + '/babylon.inspector.bundle.js', _0x3a15e3; }() , _0x339caf = _0x33361b(0xb) , _0x527244 = _0x33361b(0x34) , _0x213878 = _0x33361b(0x2e) , _0x539f0d = _0x33361b(0x17) , _0x1a8db8 = _0x33361b(0x1b) , _0x4e591a = _0x33361b(0x29) , _0x18082c = _0x33361b(0x35) , _0x244dc2 = function() { function _0x4fd414(_0x26c04b) { this['_impostors'] = [], this['_meshes'] = [], this['_numMeshes'] = 0x0, this['_debugMeshMeshes'] = new Array(), this['_scene'] = _0x26c04b || _0x539f0d['a']['LastCreatedScene']; var _0x727d48 = this['_scene']['getPhysicsEngine'](); _0x727d48 && (this['_physicsEnginePlugin'] = _0x727d48['getPhysicsPlugin']()), this['_utilityLayer'] = new _0x4e591a['a'](this['_scene'],!0x1), this['_utilityLayer']['pickUtilitySceneFirst'] = !0x1, this['_utilityLayer']['utilityLayerScene']['autoClearDepthAndStencil'] = !0x0; } return _0x4fd414['prototype']['_updateDebugMeshes'] = function() { for (var _0x5289c1 = this['_physicsEnginePlugin'], _0x4777e4 = 0x0; _0x4777e4 < this['_numMeshes']; _0x4777e4++) { var _0x2f54e1 = this['_impostors'][_0x4777e4]; if (_0x2f54e1) if (_0x2f54e1['isDisposed']) this['hideImpostor'](this['_impostors'][_0x4777e4--]); else { if (_0x2f54e1['type'] === _0x1a8db8['a']['MeshImpostor']) continue; var _0x343f0d = this['_meshes'][_0x4777e4]; _0x343f0d && _0x5289c1 && _0x5289c1['syncMeshWithImpostor'](_0x343f0d, _0x2f54e1); } } } , _0x4fd414['prototype']['showImpostor'] = function(_0x10a607, _0xc38cb5) { if (!this['_scene']) return null; for (var _0x525942 = 0x0; _0x525942 < this['_numMeshes']; _0x525942++) if (this['_impostors'][_0x525942] == _0x10a607) return null; var _0x324462 = this['_getDebugMesh'](_0x10a607, _0xc38cb5); return _0x324462 && (this['_impostors'][this['_numMeshes']] = _0x10a607, this['_meshes'][this['_numMeshes']] = _0x324462, 0x0 === this['_numMeshes'] && (this['_renderFunction'] = this['_updateDebugMeshes']['bind'](this), this['_scene']['registerBeforeRender'](this['_renderFunction'])), this['_numMeshes']++), _0x324462; } , _0x4fd414['prototype']['hideImpostor'] = function(_0x4a9230) { if (_0x4a9230 && this['_scene'] && this['_utilityLayer']) { for (var _0xd6e4ca = !0x1, _0x5d4f63 = this['_utilityLayer']['utilityLayerScene'], _0x368565 = 0x0; _0x368565 < this['_numMeshes']; _0x368565++) if (this['_impostors'][_0x368565] == _0x4a9230) { var _0x26e4e4 = this['_meshes'][_0x368565]; if (!_0x26e4e4) continue; _0x5d4f63['removeMesh'](_0x26e4e4), _0x26e4e4['dispose'](); var _0x118c71 = this['_debugMeshMeshes']['indexOf'](_0x26e4e4); _0x118c71 > -0x1 && this['_debugMeshMeshes']['splice'](_0x118c71, 0x1), this['_numMeshes']--, this['_numMeshes'] > 0x0 ? (this['_meshes'][_0x368565] = this['_meshes'][this['_numMeshes']], this['_impostors'][_0x368565] = this['_impostors'][this['_numMeshes']], this['_meshes'][this['_numMeshes']] = null, this['_impostors'][this['_numMeshes']] = null) : (this['_meshes'][0x0] = null, this['_impostors'][0x0] = null), _0xd6e4ca = !0x0; break; } _0xd6e4ca && 0x0 === this['_numMeshes'] && this['_scene']['unregisterBeforeRender'](this['_renderFunction']); } } , _0x4fd414['prototype']['_getDebugMaterial'] = function(_0x471102) { return this['_debugMaterial'] || (this['_debugMaterial'] = new _0x2cba27['a']('',_0x471102), this['_debugMaterial']['wireframe'] = !0x0, this['_debugMaterial']['emissiveColor'] = _0x1fd4f2['e']['White'](), this['_debugMaterial']['disableLighting'] = !0x0), this['_debugMaterial']; } , _0x4fd414['prototype']['_getDebugBoxMesh'] = function(_0x481799) { return this['_debugBoxMesh'] || (this['_debugBoxMesh'] = _0x527244['a']['CreateBox']('physicsBodyBoxViewMesh', { 'size': 0x1 }, _0x481799), this['_debugBoxMesh']['rotationQuaternion'] = _0x1fd4f2['q']['Identity'](), this['_debugBoxMesh']['material'] = this['_getDebugMaterial'](_0x481799), this['_debugBoxMesh']['setEnabled'](!0x1)), this['_debugBoxMesh']['createInstance']('physicsBodyBoxViewInstance'); } , _0x4fd414['prototype']['_getDebugSphereMesh'] = function(_0x5ed0e5) { return this['_debugSphereMesh'] || (this['_debugSphereMesh'] = _0x213878['a']['CreateSphere']('physicsBodySphereViewMesh', { 'diameter': 0x1 }, _0x5ed0e5), this['_debugSphereMesh']['rotationQuaternion'] = _0x1fd4f2['q']['Identity'](), this['_debugSphereMesh']['material'] = this['_getDebugMaterial'](_0x5ed0e5), this['_debugSphereMesh']['setEnabled'](!0x1)), this['_debugSphereMesh']['createInstance']('physicsBodyBoxViewInstance'); } , _0x4fd414['prototype']['_getDebugCylinderMesh'] = function(_0x36203d) { return this['_debugCylinderMesh'] || (this['_debugCylinderMesh'] = _0x18082c['a']['CreateCylinder']('physicsBodyCylinderViewMesh', { 'diameterTop': 0x1, 'diameterBottom': 0x1, 'height': 0x1 }, _0x36203d), this['_debugCylinderMesh']['rotationQuaternion'] = _0x1fd4f2['q']['Identity'](), this['_debugCylinderMesh']['material'] = this['_getDebugMaterial'](_0x36203d), this['_debugCylinderMesh']['setEnabled'](!0x1)), this['_debugCylinderMesh']['createInstance']('physicsBodyBoxViewInstance'); } , _0x4fd414['prototype']['_getDebugMeshMesh'] = function(_0x24d0ab, _0x177262) { var _0x552409 = new _0x339caf['a'](_0x24d0ab['name'],_0x177262,null,_0x24d0ab); return _0x552409['position'] = _0x1fd4f2['x']['Zero'](), _0x552409['setParent'](_0x24d0ab), _0x552409['material'] = this['_getDebugMaterial'](_0x177262), this['_debugMeshMeshes']['push'](_0x552409), _0x552409; } , _0x4fd414['prototype']['_getDebugMesh'] = function(_0x5c11da, _0x44902b) { var _0x39a6c4 = this; if (!this['_utilityLayer']) return null; if (_0x44902b && _0x44902b['parent'] && _0x44902b['parent']['physicsImpostor']) return null; var _0x107c7a = null , _0x5c7f0d = this['_utilityLayer']['utilityLayerScene']; switch (_0x5c11da['type']) { case _0x1a8db8['a']['BoxImpostor']: _0x107c7a = this['_getDebugBoxMesh'](_0x5c7f0d), _0x5c11da['getBoxSizeToRef'](_0x107c7a['scaling']); break; case _0x1a8db8['a']['SphereImpostor']: _0x107c7a = this['_getDebugSphereMesh'](_0x5c7f0d); var _0x495fad = _0x5c11da['getRadius'](); _0x107c7a['scaling']['x'] = 0x2 * _0x495fad, _0x107c7a['scaling']['y'] = 0x2 * _0x495fad, _0x107c7a['scaling']['z'] = 0x2 * _0x495fad; break; case _0x1a8db8['a']['MeshImpostor']: _0x44902b && (_0x107c7a = this['_getDebugMeshMesh'](_0x44902b, _0x5c7f0d)); break; case _0x1a8db8['a']['NoImpostor']: if (_0x44902b) _0x44902b['getChildMeshes']()['filter'](function(_0x68f907) { return _0x68f907['physicsImpostor'] ? 0x1 : 0x0; })['forEach'](function(_0x3a691c) { _0x39a6c4['_getDebugBoxMesh'](_0x5c7f0d)['parent'] = _0x3a691c; }); break; case _0x1a8db8['a']['CylinderImpostor']: _0x107c7a = this['_getDebugCylinderMesh'](_0x5c7f0d); var _0x5663a5 = _0x5c11da['object']['getBoundingInfo'](); _0x107c7a['scaling']['x'] = _0x5663a5['boundingBox']['maximum']['x'] - _0x5663a5['boundingBox']['minimum']['x'], _0x107c7a['scaling']['y'] = _0x5663a5['boundingBox']['maximum']['y'] - _0x5663a5['boundingBox']['minimum']['y'], _0x107c7a['scaling']['z'] = _0x5663a5['boundingBox']['maximum']['z'] - _0x5663a5['boundingBox']['minimum']['z']; } return _0x107c7a; } , _0x4fd414['prototype']['dispose'] = function() { for (var _0x8c3f19 = this['_numMeshes'], _0x4263e5 = 0x0; _0x4263e5 < _0x8c3f19; _0x4263e5++) this['hideImpostor'](this['_impostors'][0x0]); this['_debugBoxMesh'] && this['_debugBoxMesh']['dispose'](), this['_debugSphereMesh'] && this['_debugSphereMesh']['dispose'](), this['_debugCylinderMesh'] && this['_debugCylinderMesh']['dispose'](), this['_debugMaterial'] && this['_debugMaterial']['dispose'](), this['_impostors']['length'] = 0x0, this['_scene'] = null, this['_physicsEnginePlugin'] = null, this['_utilityLayer'] && (this['_utilityLayer']['dispose'](), this['_utilityLayer'] = null); } , _0x4fd414; }() , _0x19c7f1 = _0x33361b(0x28) , _0x11085e = function() { function _0x41b60d(_0x5d272c) { this['ray'] = _0x5d272c; } return _0x41b60d['CreateAndShow'] = function(_0x3c7032, _0x13d939, _0x2c1bde) { var _0x1e768e = new _0x41b60d(_0x3c7032); return _0x1e768e['show'](_0x13d939, _0x2c1bde), _0x1e768e; } , _0x41b60d['prototype']['show'] = function(_0x4d9217, _0x5d3b5d) { if (!this['_renderFunction'] && this['ray']) { var _0x5067f4 = this['ray']; this['_renderFunction'] = this['_render']['bind'](this), this['_scene'] = _0x4d9217, this['_renderPoints'] = [_0x5067f4['origin'], _0x5067f4['origin']['add'](_0x5067f4['direction']['scale'](_0x5067f4['length']))], this['_renderLine'] = _0x339caf['a']['CreateLines']('ray', this['_renderPoints'], _0x4d9217, !0x0), this['_renderFunction'] && this['_scene']['registerBeforeRender'](this['_renderFunction']); } _0x5d3b5d && this['_renderLine'] && this['_renderLine']['color']['copyFrom'](_0x5d3b5d); } , _0x41b60d['prototype']['hide'] = function() { this['_renderFunction'] && this['_scene'] && (this['_scene']['unregisterBeforeRender'](this['_renderFunction']), this['_scene'] = null, this['_renderFunction'] = null, this['_renderLine'] && (this['_renderLine']['dispose'](), this['_renderLine'] = null), this['_renderPoints'] = []); } , _0x41b60d['prototype']['_render'] = function() { var _0x4ad900 = this['ray']; if (_0x4ad900) { var _0x4af87c = this['_renderPoints'][0x1] , _0x36ef5d = Math['min'](_0x4ad900['length'], 0xf4240); _0x4af87c['copyFrom'](_0x4ad900['direction']), _0x4af87c['scaleInPlace'](_0x36ef5d), _0x4af87c['addInPlace'](_0x4ad900['origin']), _0x339caf['a']['CreateLines']('ray', this['_renderPoints'], this['_scene'], !0x0, this['_renderLine']); } } , _0x41b60d['prototype']['attachToMesh'] = function(_0x5cce74, _0x5337e1, _0x5c048b, _0x32cc09) { this['_attachedToMesh'] = _0x5cce74; var _0x1688af = this['ray']; _0x1688af && (_0x1688af['direction'] || (_0x1688af['direction'] = _0x1fd4f2['x']['Zero']()), _0x1688af['origin'] || (_0x1688af['origin'] = _0x1fd4f2['x']['Zero']()), _0x32cc09 && (_0x1688af['length'] = _0x32cc09), _0x5c048b || (_0x5c048b = _0x1fd4f2['x']['Zero']()), _0x5337e1 || (_0x5337e1 = new _0x1fd4f2['x'](0x0,0x0,-0x1)), this['_meshSpaceDirection'] ? (this['_meshSpaceDirection']['copyFrom'](_0x5337e1), this['_meshSpaceOrigin']['copyFrom'](_0x5c048b)) : (this['_meshSpaceDirection'] = _0x5337e1['clone'](), this['_meshSpaceOrigin'] = _0x5c048b['clone']()), this['_updateToMeshFunction'] || (this['_updateToMeshFunction'] = this['_updateToMesh']['bind'](this), this['_attachedToMesh']['getScene']()['registerBeforeRender'](this['_updateToMeshFunction'])), this['_updateToMesh']()); } , _0x41b60d['prototype']['detachFromMesh'] = function() { this['_attachedToMesh'] && (this['_updateToMeshFunction'] && this['_attachedToMesh']['getScene']()['unregisterBeforeRender'](this['_updateToMeshFunction']), this['_attachedToMesh'] = null, this['_updateToMeshFunction'] = null); } , _0x41b60d['prototype']['_updateToMesh'] = function() { var _0x9ec52 = this['ray']; this['_attachedToMesh'] && _0x9ec52 && (this['_attachedToMesh']['_isDisposed'] ? this['detachFromMesh']() : (this['_attachedToMesh']['getDirectionToRef'](this['_meshSpaceDirection'], _0x9ec52['direction']), _0x1fd4f2['x']['TransformCoordinatesToRef'](this['_meshSpaceOrigin'], this['_attachedToMesh']['getWorldMatrix'](), _0x9ec52['origin']))); } , _0x41b60d['prototype']['dispose'] = function() { this['hide'](), this['detachFromMesh'](), this['ray'] = null; } , _0x41b60d; }() , _0x394033 = function() { function _0xd3a862(_0x27f0f1, _0x34ff73, _0x3e136f, _0x163c7f, _0x2997da) { void 0x0 === _0x163c7f && (_0x163c7f = !0x0), void 0x0 === _0x2997da && (_0x2997da = 0x1), this['skeleton'] = _0x27f0f1, this['mesh'] = _0x34ff73, this['autoUpdateBonesMatrices'] = _0x163c7f, this['renderingGroupId'] = _0x2997da, this['color'] = _0x1fd4f2['e']['White'](), this['_debugLines'] = new Array(), this['_isEnabled'] = !0x1, this['_scene'] = _0x3e136f, this['_utilityLayer'] = new _0x4e591a['a'](this['_scene'],!0x1), this['_utilityLayer']['pickUtilitySceneFirst'] = !0x1, this['_utilityLayer']['utilityLayerScene']['autoClearDepthAndStencil'] = !0x0, this['update'](), this['_renderFunction'] = this['update']['bind'](this); } return Object['defineProperty'](_0xd3a862['prototype'], 'debugMesh', { 'get': function() { return this['_debugMesh']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xd3a862['prototype'], 'isEnabled', { 'get': function() { return this['_isEnabled']; }, 'set': function(_0x501114) { this['_isEnabled'] !== _0x501114 && (this['_isEnabled'] = _0x501114, _0x501114 ? this['_scene']['registerBeforeRender'](this['_renderFunction']) : this['_scene']['unregisterBeforeRender'](this['_renderFunction'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xd3a862['prototype']['_getBonePosition'] = function(_0x50672d, _0x3e0633, _0x513e30, _0x13da1d, _0x210083, _0x28b506) { void 0x0 === _0x13da1d && (_0x13da1d = 0x0), void 0x0 === _0x210083 && (_0x210083 = 0x0), void 0x0 === _0x28b506 && (_0x28b506 = 0x0); var _0x317610 = _0x1fd4f2['t']['Matrix'][0x0] , _0xe7873d = _0x3e0633['getParent'](); if (_0x317610['copyFrom'](_0x3e0633['getLocalMatrix']()), 0x0 !== _0x13da1d || 0x0 !== _0x210083 || 0x0 !== _0x28b506) { var _0x875de = _0x1fd4f2['t']['Matrix'][0x1]; _0x1fd4f2['j']['IdentityToRef'](_0x875de), _0x875de['setTranslationFromFloats'](_0x13da1d, _0x210083, _0x28b506), _0x875de['multiplyToRef'](_0x317610, _0x317610); } _0xe7873d && _0x317610['multiplyToRef'](_0xe7873d['getAbsoluteTransform'](), _0x317610), _0x317610['multiplyToRef'](_0x513e30, _0x317610), _0x50672d['x'] = _0x317610['m'][0xc], _0x50672d['y'] = _0x317610['m'][0xd], _0x50672d['z'] = _0x317610['m'][0xe]; } , _0xd3a862['prototype']['_getLinesForBonesWithLength'] = function(_0x5961bc, _0x182a88) { for (var _0x5e13d5 = _0x5961bc['length'], _0x1fa6fc = this['mesh']['_effectiveMesh']['position'], _0x44c6fc = 0x0; _0x44c6fc < _0x5e13d5; _0x44c6fc++) { var _0x211069 = _0x5961bc[_0x44c6fc] , _0x125abb = this['_debugLines'][_0x44c6fc]; _0x125abb || (_0x125abb = [_0x1fd4f2['x']['Zero'](), _0x1fd4f2['x']['Zero']()], this['_debugLines'][_0x44c6fc] = _0x125abb), this['_getBonePosition'](_0x125abb[0x0], _0x211069, _0x182a88), this['_getBonePosition'](_0x125abb[0x1], _0x211069, _0x182a88, 0x0, _0x211069['length'], 0x0), _0x125abb[0x0]['subtractInPlace'](_0x1fa6fc), _0x125abb[0x1]['subtractInPlace'](_0x1fa6fc); } } , _0xd3a862['prototype']['_getLinesForBonesNoLength'] = function(_0x5b8d81, _0x532cf9) { for (var _0x4a1378 = _0x5b8d81['length'], _0x1d3d5a = 0x0, _0x1540ae = this['mesh']['_effectiveMesh'], _0xbd2577 = _0x1540ae['position'], _0x5b012f = _0x4a1378 - 0x1; _0x5b012f >= 0x0; _0x5b012f--) { var _0x4c0d17 = _0x5b8d81[_0x5b012f] , _0x4c7939 = _0x4c0d17['getParent'](); if (_0x4c7939) { var _0x373ee1 = this['_debugLines'][_0x1d3d5a]; _0x373ee1 || (_0x373ee1 = [_0x1fd4f2['x']['Zero'](), _0x1fd4f2['x']['Zero']()], this['_debugLines'][_0x1d3d5a] = _0x373ee1), _0x4c0d17['getAbsolutePositionToRef'](_0x1540ae, _0x373ee1[0x0]), _0x4c7939['getAbsolutePositionToRef'](_0x1540ae, _0x373ee1[0x1]), _0x373ee1[0x0]['subtractInPlace'](_0xbd2577), _0x373ee1[0x1]['subtractInPlace'](_0xbd2577), _0x1d3d5a++; } } } , _0xd3a862['prototype']['update'] = function() { if (this['_utilityLayer']) { this['autoUpdateBonesMatrices'] && this['skeleton']['computeAbsoluteTransforms'](); var _0x50bf50 = this['mesh']['_effectiveMesh']; void 0x0 === this['skeleton']['bones'][0x0]['length'] ? this['_getLinesForBonesNoLength'](this['skeleton']['bones'], _0x50bf50['getWorldMatrix']()) : this['_getLinesForBonesWithLength'](this['skeleton']['bones'], _0x50bf50['getWorldMatrix']()); var _0x310086 = this['_utilityLayer']['utilityLayerScene']; this['_debugMesh'] ? _0x19c7f1['a']['CreateLineSystem']('', { 'lines': this['_debugLines'], 'updatable': !0x0, 'instance': this['_debugMesh'] }, _0x310086) : (this['_debugMesh'] = _0x19c7f1['a']['CreateLineSystem']('', { 'lines': this['_debugLines'], 'updatable': !0x0, 'instance': null }, _0x310086), this['_debugMesh']['renderingGroupId'] = this['renderingGroupId']), this['_debugMesh']['position']['copyFrom'](this['mesh']['position']), this['_debugMesh']['color'] = this['color']; } } , _0xd3a862['prototype']['dispose'] = function() { this['isEnabled'] = !0x1, this['_debugMesh'] && (this['isEnabled'] = !0x1, this['_debugMesh']['dispose'](), this['_debugMesh'] = null), this['_utilityLayer'] && (this['_utilityLayer']['dispose'](), this['_utilityLayer'] = null); } , _0xd3a862; }(); _0x33361b['d'](_0x245146, 'AxesViewer', function() { return _0xeaaa44; }), _0x33361b['d'](_0x245146, 'BoneAxesViewer', function() { return _0x5b7659; }), _0x33361b['d'](_0x245146, 'DebugLayer', function() { return _0x1afbdc; }), _0x33361b['d'](_0x245146, 'PhysicsViewer', function() { return _0x244dc2; }), _0x33361b['d'](_0x245146, 'RayHelper', function() { return _0x11085e; }), _0x33361b['d'](_0x245146, 'SkeletonViewer', function() { return _0x394033; }); } , function(_0x17d23c, _0x38d015, _0x58f9ac) { 'use strict'; _0x58f9ac['d'](_0x38d015, 'a', function() { return _0x1cbd1f; }); var _0x38bfb1 = _0x58f9ac(0x1) , _0x355dcb = _0x58f9ac(0x0) , _0x1cbd1f = function(_0x1c2801) { function _0x122608(_0x527022, _0x24db0b) { var _0x9e9a65 = _0x1c2801['call'](this, _0x527022, _0x24db0b) || this; return _0x9e9a65['_normalMatrix'] = new _0x355dcb['j'](), _0x9e9a65['allowShaderHotSwapping'] = !0x0, _0x9e9a65['_storeEffectOnSubMeshes'] = !0x0, _0x9e9a65; } return _0x38bfb1['d'](_0x122608, _0x1c2801), _0x122608['prototype']['getEffect'] = function() { return this['_activeEffect']; } , _0x122608['prototype']['isReady'] = function(_0x516a82, _0x387a7e) { return !!_0x516a82 && (!_0x516a82['subMeshes'] || 0x0 === _0x516a82['subMeshes']['length'] || this['isReadyForSubMesh'](_0x516a82, _0x516a82['subMeshes'][0x0], _0x387a7e)); } , _0x122608['prototype']['bindOnlyWorldMatrix'] = function(_0x4cd21) { this['_activeEffect']['setMatrix']('world', _0x4cd21); } , _0x122608['prototype']['bindOnlyNormalMatrix'] = function(_0x55d9b1) { this['_activeEffect']['setMatrix']('normalMatrix', _0x55d9b1); } , _0x122608['prototype']['bind'] = function(_0x100014, _0x5ca43e) { _0x5ca43e && this['bindForSubMesh'](_0x100014, _0x5ca43e, _0x5ca43e['subMeshes'][0x0]); } , _0x122608['prototype']['_afterBind'] = function(_0x41b458, _0x1ec188) { void 0x0 === _0x1ec188 && (_0x1ec188 = null), _0x1c2801['prototype']['_afterBind']['call'](this, _0x41b458), this['getScene']()['_cachedEffect'] = _0x1ec188; } , _0x122608['prototype']['_mustRebind'] = function(_0x373a3c, _0x41319c, _0x406c79) { return void 0x0 === _0x406c79 && (_0x406c79 = 0x1), _0x373a3c['isCachedMaterialInvalid'](this, _0x41319c, _0x406c79); } , _0x122608; }(_0x58f9ac(0x14)['a']); } , function(_0x2666bf, _0x7ce83a, _0x2d863e) { 'use strict'; _0x2d863e['d'](_0x7ce83a, 'a', function() { return _0x50c18f; }); var _0x4c8d29 = _0x2d863e(0x1) , _0x1f296d = _0x2d863e(0x2) , _0x59408f = _0x2d863e(0x0) , _0x48db0c = _0x2d863e(0x4) , _0x13bd0b = _0x2d863e(0x7) , _0xf1c4e3 = _0x2d863e(0xf) , _0x3f257a = _0x2d863e(0x5) , _0x4b99cf = _0x2d863e(0x14) , _0x25e717 = _0x2d863e(0x16) , _0x50c18f = function(_0xc9fb63) { function _0x2b84a8(_0x1171bb, _0x2254d1, _0x137d01, _0x2dc0f6) { void 0x0 === _0x2dc0f6 && (_0x2dc0f6 = {}); var _0x13be9c = _0xc9fb63['call'](this, _0x1171bb, _0x2254d1) || this; return _0x13be9c['_textures'] = {}, _0x13be9c['_textureArrays'] = {}, _0x13be9c['_floats'] = {}, _0x13be9c['_ints'] = {}, _0x13be9c['_floatsArrays'] = {}, _0x13be9c['_colors3'] = {}, _0x13be9c['_colors3Arrays'] = {}, _0x13be9c['_colors4'] = {}, _0x13be9c['_vectors2'] = {}, _0x13be9c['_vectors3'] = {}, _0x13be9c['_vectors4'] = {}, _0x13be9c['_matrices'] = {}, _0x13be9c['_matrices3x3'] = {}, _0x13be9c['_matrices2x2'] = {}, _0x13be9c['_vectors2Arrays'] = {}, _0x13be9c['_vectors3Arrays'] = {}, _0x13be9c['_cachedWorldViewMatrix'] = new _0x59408f['j'](), _0x13be9c['_shaderPath'] = _0x137d01, _0x13be9c['_options'] = _0x4c8d29['a']({ 'needAlphaBlending': !0x1, 'needAlphaTesting': !0x1, 'attributes': ['position', 'normal', 'uv'], 'uniforms': ['worldViewProjection'], 'uniformBuffers': [], 'samplers': [], 'defines': [] }, _0x2dc0f6), _0x13be9c; } return _0x4c8d29['d'](_0x2b84a8, _0xc9fb63), Object['defineProperty'](_0x2b84a8['prototype'], 'options', { 'get': function() { return this['_options']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2b84a8['prototype']['getClassName'] = function() { return 'ShaderMaterial'; } , _0x2b84a8['prototype']['needAlphaBlending'] = function() { return this['alpha'] < 0x1 || this['_options']['needAlphaBlending']; } , _0x2b84a8['prototype']['needAlphaTesting'] = function() { return this['_options']['needAlphaTesting']; } , _0x2b84a8['prototype']['_checkUniform'] = function(_0x17942c) { -0x1 === this['_options']['uniforms']['indexOf'](_0x17942c) && this['_options']['uniforms']['push'](_0x17942c); } , _0x2b84a8['prototype']['setTexture'] = function(_0xc81215, _0x472311) { return -0x1 === this['_options']['samplers']['indexOf'](_0xc81215) && this['_options']['samplers']['push'](_0xc81215), this['_textures'][_0xc81215] = _0x472311, this; } , _0x2b84a8['prototype']['setTextureArray'] = function(_0x309560, _0x2a17b6) { return -0x1 === this['_options']['samplers']['indexOf'](_0x309560) && this['_options']['samplers']['push'](_0x309560), this['_checkUniform'](_0x309560), this['_textureArrays'][_0x309560] = _0x2a17b6, this; } , _0x2b84a8['prototype']['setFloat'] = function(_0x38080d, _0xd9c0cf) { return this['_checkUniform'](_0x38080d), this['_floats'][_0x38080d] = _0xd9c0cf, this; } , _0x2b84a8['prototype']['setInt'] = function(_0x3ce27a, _0x44836b) { return this['_checkUniform'](_0x3ce27a), this['_ints'][_0x3ce27a] = _0x44836b, this; } , _0x2b84a8['prototype']['setFloats'] = function(_0x2ce8ca, _0x5aae39) { return this['_checkUniform'](_0x2ce8ca), this['_floatsArrays'][_0x2ce8ca] = _0x5aae39, this; } , _0x2b84a8['prototype']['setColor3'] = function(_0x164e45, _0x4671e0) { return this['_checkUniform'](_0x164e45), this['_colors3'][_0x164e45] = _0x4671e0, this; } , _0x2b84a8['prototype']['setColor3Array'] = function(_0x39ff5a, _0x1a2303) { return this['_checkUniform'](_0x39ff5a), this['_colors3Arrays'][_0x39ff5a] = _0x1a2303['reduce'](function(_0x874d51, _0x156394) { return _0x156394['toArray'](_0x874d51, _0x874d51['length']), _0x874d51; }, []), this; } , _0x2b84a8['prototype']['setColor4'] = function(_0x23dd41, _0x42bced) { return this['_checkUniform'](_0x23dd41), this['_colors4'][_0x23dd41] = _0x42bced, this; } , _0x2b84a8['prototype']['setVector2'] = function(_0x466ae0, _0x46b087) { return this['_checkUniform'](_0x466ae0), this['_vectors2'][_0x466ae0] = _0x46b087, this; } , _0x2b84a8['prototype']['setVector3'] = function(_0x7fb457, _0x1c83cf) { return this['_checkUniform'](_0x7fb457), this['_vectors3'][_0x7fb457] = _0x1c83cf, this; } , _0x2b84a8['prototype']['setVector4'] = function(_0x1fe148, _0x31dda9) { return this['_checkUniform'](_0x1fe148), this['_vectors4'][_0x1fe148] = _0x31dda9, this; } , _0x2b84a8['prototype']['setMatrix'] = function(_0x94e8b1, _0x8abd2f) { return this['_checkUniform'](_0x94e8b1), this['_matrices'][_0x94e8b1] = _0x8abd2f, this; } , _0x2b84a8['prototype']['setMatrix3x3'] = function(_0x47fc4d, _0x1fa5b7) { return this['_checkUniform'](_0x47fc4d), this['_matrices3x3'][_0x47fc4d] = _0x1fa5b7, this; } , _0x2b84a8['prototype']['setMatrix2x2'] = function(_0x544e4d, _0x3a171f) { return this['_checkUniform'](_0x544e4d), this['_matrices2x2'][_0x544e4d] = _0x3a171f, this; } , _0x2b84a8['prototype']['setArray2'] = function(_0x531b89, _0x44136d) { return this['_checkUniform'](_0x531b89), this['_vectors2Arrays'][_0x531b89] = _0x44136d, this; } , _0x2b84a8['prototype']['setArray3'] = function(_0xf60470, _0x315d6c) { return this['_checkUniform'](_0xf60470), this['_vectors3Arrays'][_0xf60470] = _0x315d6c, this; } , _0x2b84a8['prototype']['_checkCache'] = function(_0x448b59, _0x37a9e3) { return !_0x448b59 || (this['_effect'] && this['_effect']['defines']['indexOf']('#define\x20INSTANCES'), !0x1); } , _0x2b84a8['prototype']['isReadyForSubMesh'] = function(_0x53f9e2, _0xe5528c, _0x415bb9) { return this['isReady'](_0x53f9e2, _0x415bb9); } , _0x2b84a8['prototype']['isReady'] = function(_0x622f07, _0x2f8599) { var _0x139b2a = this['getScene']() , _0x4ceeb4 = _0x139b2a['getEngine'](); if (!this['checkReadyOnEveryCall'] && this['_renderId'] === _0x139b2a['getRenderId']() && this['_checkCache'](_0x622f07, _0x2f8599)) return !0x0; for (var _0x11ddaa = [], _0x399efc = [], _0x5dfa61 = new _0x3f257a['c'](), _0x2a599c = 0x0; _0x2a599c < this['_options']['defines']['length']; _0x2a599c++) _0x11ddaa['push'](this['_options']['defines'][_0x2a599c]); for (_0x2a599c = 0x0; _0x2a599c < this['_options']['attributes']['length']; _0x2a599c++) _0x399efc['push'](this['_options']['attributes'][_0x2a599c]); if (_0x622f07 && _0x622f07['isVerticesDataPresent'](_0x48db0c['b']['ColorKind']) && (_0x399efc['push'](_0x48db0c['b']['ColorKind']), _0x11ddaa['push']('#define\x20VERTEXCOLOR')), _0x2f8599 && (_0x11ddaa['push']('#define\x20INSTANCES'), _0xf1c4e3['a']['PrepareAttributesForInstances'](_0x399efc, _0x11ddaa)), _0x622f07 && _0x622f07['useBones'] && _0x622f07['computeBonesUsingShaders'] && _0x622f07['skeleton']) { _0x399efc['push'](_0x48db0c['b']['MatricesIndicesKind']), _0x399efc['push'](_0x48db0c['b']['MatricesWeightsKind']), _0x622f07['numBoneInfluencers'] > 0x4 && (_0x399efc['push'](_0x48db0c['b']['MatricesIndicesExtraKind']), _0x399efc['push'](_0x48db0c['b']['MatricesWeightsExtraKind'])); var _0x1dbe55 = _0x622f07['skeleton']; _0x11ddaa['push']('#define\x20NUM_BONE_INFLUENCERS\x20' + _0x622f07['numBoneInfluencers']), _0x5dfa61['addCPUSkinningFallback'](0x0, _0x622f07), _0x1dbe55['isUsingTextureForMatrices'] ? (_0x11ddaa['push']('#define\x20BONETEXTURE'), -0x1 === this['_options']['uniforms']['indexOf']('boneTextureWidth') && this['_options']['uniforms']['push']('boneTextureWidth'), -0x1 === this['_options']['samplers']['indexOf']('boneSampler') && this['_options']['samplers']['push']('boneSampler')) : (_0x11ddaa['push']('#define\x20BonesPerMesh\x20' + (_0x1dbe55['bones']['length'] + 0x1)), -0x1 === this['_options']['uniforms']['indexOf']('mBones') && this['_options']['uniforms']['push']('mBones')); } else _0x11ddaa['push']('#define\x20NUM_BONE_INFLUENCERS\x200'); for (var _0xe03b7d in this['_textures']) if (!this['_textures'][_0xe03b7d]['isReady']()) return !0x1; _0x622f07 && this['_shouldTurnAlphaTestOn'](_0x622f07) && _0x11ddaa['push']('#define\x20ALPHATEST'); var _0x1fd5f9 = this['_effect'] , _0x553b19 = _0x11ddaa['join']('\x0a'); return this['_effect'] = _0x4ceeb4['createEffect'](this['_shaderPath'], { 'attributes': _0x399efc, 'uniformsNames': this['_options']['uniforms'], 'uniformBuffersNames': this['_options']['uniformBuffers'], 'samplers': this['_options']['samplers'], 'defines': _0x553b19, 'fallbacks': _0x5dfa61, 'onCompiled': this['onCompiled'], 'onError': this['onError'] }, _0x4ceeb4), !!this['_effect']['isReady']() && (_0x1fd5f9 !== this['_effect'] && _0x139b2a['resetCachedMaterial'](), this['_renderId'] = _0x139b2a['getRenderId'](), !0x0); } , _0x2b84a8['prototype']['bindOnlyWorldMatrix'] = function(_0x2bac9c) { var _0x36b3fa = this['getScene'](); this['_effect'] && (-0x1 !== this['_options']['uniforms']['indexOf']('world') && this['_effect']['setMatrix']('world', _0x2bac9c), -0x1 !== this['_options']['uniforms']['indexOf']('worldView') && (_0x2bac9c['multiplyToRef'](_0x36b3fa['getViewMatrix'](), this['_cachedWorldViewMatrix']), this['_effect']['setMatrix']('worldView', this['_cachedWorldViewMatrix'])), -0x1 !== this['_options']['uniforms']['indexOf']('worldViewProjection') && this['_effect']['setMatrix']('worldViewProjection', _0x2bac9c['multiply'](_0x36b3fa['getTransformMatrix']()))); } , _0x2b84a8['prototype']['bind'] = function(_0x53bf23, _0x538052) { if (this['bindOnlyWorldMatrix'](_0x53bf23), this['_effect'] && this['getScene']()['getCachedMaterial']() !== this) { var _0x1b00a8; for (_0x1b00a8 in (-0x1 !== this['_options']['uniforms']['indexOf']('view') && this['_effect']['setMatrix']('view', this['getScene']()['getViewMatrix']()), -0x1 !== this['_options']['uniforms']['indexOf']('projection') && this['_effect']['setMatrix']('projection', this['getScene']()['getProjectionMatrix']()), -0x1 !== this['_options']['uniforms']['indexOf']('viewProjection') && this['_effect']['setMatrix']('viewProjection', this['getScene']()['getTransformMatrix']()), _0xf1c4e3['a']['BindBonesParameters'](_0x538052, this['_effect']), this['_textures'])) this['_effect']['setTexture'](_0x1b00a8, this['_textures'][_0x1b00a8]); for (_0x1b00a8 in this['_textureArrays']) this['_effect']['setTextureArray'](_0x1b00a8, this['_textureArrays'][_0x1b00a8]); for (_0x1b00a8 in this['_ints']) this['_effect']['setInt'](_0x1b00a8, this['_ints'][_0x1b00a8]); for (_0x1b00a8 in this['_floats']) this['_effect']['setFloat'](_0x1b00a8, this['_floats'][_0x1b00a8]); for (_0x1b00a8 in this['_floatsArrays']) this['_effect']['setArray'](_0x1b00a8, this['_floatsArrays'][_0x1b00a8]); for (_0x1b00a8 in this['_colors3']) this['_effect']['setColor3'](_0x1b00a8, this['_colors3'][_0x1b00a8]); for (_0x1b00a8 in this['_colors3Arrays']) this['_effect']['setArray3'](_0x1b00a8, this['_colors3Arrays'][_0x1b00a8]); for (_0x1b00a8 in this['_colors4']) { var _0x9f6f9b = this['_colors4'][_0x1b00a8]; this['_effect']['setFloat4'](_0x1b00a8, _0x9f6f9b['r'], _0x9f6f9b['g'], _0x9f6f9b['b'], _0x9f6f9b['a']); } for (_0x1b00a8 in this['_vectors2']) this['_effect']['setVector2'](_0x1b00a8, this['_vectors2'][_0x1b00a8]); for (_0x1b00a8 in this['_vectors3']) this['_effect']['setVector3'](_0x1b00a8, this['_vectors3'][_0x1b00a8]); for (_0x1b00a8 in this['_vectors4']) this['_effect']['setVector4'](_0x1b00a8, this['_vectors4'][_0x1b00a8]); for (_0x1b00a8 in this['_matrices']) this['_effect']['setMatrix'](_0x1b00a8, this['_matrices'][_0x1b00a8]); for (_0x1b00a8 in this['_matrices3x3']) this['_effect']['setMatrix3x3'](_0x1b00a8, this['_matrices3x3'][_0x1b00a8]); for (_0x1b00a8 in this['_matrices2x2']) this['_effect']['setMatrix2x2'](_0x1b00a8, this['_matrices2x2'][_0x1b00a8]); for (_0x1b00a8 in this['_vectors2Arrays']) this['_effect']['setArray2'](_0x1b00a8, this['_vectors2Arrays'][_0x1b00a8]); for (_0x1b00a8 in this['_vectors3Arrays']) this['_effect']['setArray3'](_0x1b00a8, this['_vectors3Arrays'][_0x1b00a8]); } this['_afterBind'](_0x538052); } , _0x2b84a8['prototype']['getActiveTextures'] = function() { var _0x5a102e = _0xc9fb63['prototype']['getActiveTextures']['call'](this); for (var _0x492e2d in this['_textures']) _0x5a102e['push'](this['_textures'][_0x492e2d]); for (var _0x492e2d in this['_textureArrays']) for (var _0x4e4d21 = this['_textureArrays'][_0x492e2d], _0x50e046 = 0x0; _0x50e046 < _0x4e4d21['length']; _0x50e046++) _0x5a102e['push'](_0x4e4d21[_0x50e046]); return _0x5a102e; } , _0x2b84a8['prototype']['hasTexture'] = function(_0x2c47f7) { if (_0xc9fb63['prototype']['hasTexture']['call'](this, _0x2c47f7)) return !0x0; for (var _0x22ffca in this['_textures']) if (this['_textures'][_0x22ffca] === _0x2c47f7) return !0x0; for (var _0x22ffca in this['_textureArrays']) for (var _0x5b554c = this['_textureArrays'][_0x22ffca], _0x57c78b = 0x0; _0x57c78b < _0x5b554c['length']; _0x57c78b++) if (_0x5b554c[_0x57c78b] === _0x2c47f7) return !0x0; return !0x1; } , _0x2b84a8['prototype']['clone'] = function(_0x3147c3) { return new _0x2b84a8(_0x3147c3,this['getScene'](),this['_shaderPath'],this['_options']); } , _0x2b84a8['prototype']['dispose'] = function(_0x362f97, _0x3f13a6, _0x221201) { if (_0x3f13a6) { var _0x12d54d; for (_0x12d54d in this['_textures']) this['_textures'][_0x12d54d]['dispose'](); for (_0x12d54d in this['_textureArrays']) for (var _0xc6b7dd = this['_textureArrays'][_0x12d54d], _0x283801 = 0x0; _0x283801 < _0xc6b7dd['length']; _0x283801++) _0xc6b7dd[_0x283801]['dispose'](); } this['_textures'] = {}, _0xc9fb63['prototype']['dispose']['call'](this, _0x362f97, _0x3f13a6, _0x221201); } , _0x2b84a8['prototype']['serialize'] = function() { var _0x8f42af, _0xede4dc = _0x1f296d['a']['Serialize'](this); for (_0x8f42af in (_0xede4dc['customType'] = 'BABYLON.ShaderMaterial', _0xede4dc['options'] = this['_options'], _0xede4dc['shaderPath'] = this['_shaderPath'], _0xede4dc['textures'] = {}, this['_textures'])) _0xede4dc['textures'][_0x8f42af] = this['_textures'][_0x8f42af]['serialize'](); for (_0x8f42af in (_0xede4dc['textureArrays'] = {}, this['_textureArrays'])) { _0xede4dc['textureArrays'][_0x8f42af] = []; for (var _0x5f0461 = this['_textureArrays'][_0x8f42af], _0x382766 = 0x0; _0x382766 < _0x5f0461['length']; _0x382766++) _0xede4dc['textureArrays'][_0x8f42af]['push'](_0x5f0461[_0x382766]['serialize']()); } for (_0x8f42af in (_0xede4dc['floats'] = {}, this['_floats'])) _0xede4dc['floats'][_0x8f42af] = this['_floats'][_0x8f42af]; for (_0x8f42af in (_0xede4dc['FloatArrays'] = {}, this['_floatsArrays'])) _0xede4dc['FloatArrays'][_0x8f42af] = this['_floatsArrays'][_0x8f42af]; for (_0x8f42af in (_0xede4dc['colors3'] = {}, this['_colors3'])) _0xede4dc['colors3'][_0x8f42af] = this['_colors3'][_0x8f42af]['asArray'](); for (_0x8f42af in (_0xede4dc['colors3Arrays'] = {}, this['_colors3Arrays'])) _0xede4dc['colors3Arrays'][_0x8f42af] = this['_colors3Arrays'][_0x8f42af]; for (_0x8f42af in (_0xede4dc['colors4'] = {}, this['_colors4'])) _0xede4dc['colors4'][_0x8f42af] = this['_colors4'][_0x8f42af]['asArray'](); for (_0x8f42af in (_0xede4dc['vectors2'] = {}, this['_vectors2'])) _0xede4dc['vectors2'][_0x8f42af] = this['_vectors2'][_0x8f42af]['asArray'](); for (_0x8f42af in (_0xede4dc['vectors3'] = {}, this['_vectors3'])) _0xede4dc['vectors3'][_0x8f42af] = this['_vectors3'][_0x8f42af]['asArray'](); for (_0x8f42af in (_0xede4dc['vectors4'] = {}, this['_vectors4'])) _0xede4dc['vectors4'][_0x8f42af] = this['_vectors4'][_0x8f42af]['asArray'](); for (_0x8f42af in (_0xede4dc['matrices'] = {}, this['_matrices'])) _0xede4dc['matrices'][_0x8f42af] = this['_matrices'][_0x8f42af]['asArray'](); for (_0x8f42af in (_0xede4dc['matrices3x3'] = {}, this['_matrices3x3'])) _0xede4dc['matrices3x3'][_0x8f42af] = this['_matrices3x3'][_0x8f42af]; for (_0x8f42af in (_0xede4dc['matrices2x2'] = {}, this['_matrices2x2'])) _0xede4dc['matrices2x2'][_0x8f42af] = this['_matrices2x2'][_0x8f42af]; for (_0x8f42af in (_0xede4dc['vectors2Arrays'] = {}, this['_vectors2Arrays'])) _0xede4dc['vectors2Arrays'][_0x8f42af] = this['_vectors2Arrays'][_0x8f42af]; for (_0x8f42af in (_0xede4dc['vectors3Arrays'] = {}, this['_vectors3Arrays'])) _0xede4dc['vectors3Arrays'][_0x8f42af] = this['_vectors3Arrays'][_0x8f42af]; return _0xede4dc; } , _0x2b84a8['Parse'] = function(_0x5d188b, _0x4776be, _0x13e7f8) { var _0x3c3e8b, _0x409d90 = _0x1f296d['a']['Parse'](function() { return new _0x2b84a8(_0x5d188b['name'],_0x4776be,_0x5d188b['shaderPath'],_0x5d188b['options']); }, _0x5d188b, _0x4776be, _0x13e7f8); for (_0x3c3e8b in _0x5d188b['textures']) _0x409d90['setTexture'](_0x3c3e8b, _0x13bd0b['a']['Parse'](_0x5d188b['textures'][_0x3c3e8b], _0x4776be, _0x13e7f8)); for (_0x3c3e8b in _0x5d188b['textureArrays']) { for (var _0x32e736 = _0x5d188b['textureArrays'][_0x3c3e8b], _0x4acab6 = new Array(), _0x1e3655 = 0x0; _0x1e3655 < _0x32e736['length']; _0x1e3655++) _0x4acab6['push'](_0x13bd0b['a']['Parse'](_0x32e736[_0x1e3655], _0x4776be, _0x13e7f8)); _0x409d90['setTextureArray'](_0x3c3e8b, _0x4acab6); } for (_0x3c3e8b in _0x5d188b['floats']) _0x409d90['setFloat'](_0x3c3e8b, _0x5d188b['floats'][_0x3c3e8b]); for (_0x3c3e8b in _0x5d188b['floatsArrays']) _0x409d90['setFloats'](_0x3c3e8b, _0x5d188b['floatsArrays'][_0x3c3e8b]); for (_0x3c3e8b in _0x5d188b['colors3']) _0x409d90['setColor3'](_0x3c3e8b, _0x59408f['e']['FromArray'](_0x5d188b['colors3'][_0x3c3e8b])); for (_0x3c3e8b in _0x5d188b['colors3Arrays']) { var _0x10e4fb = _0x5d188b['colors3Arrays'][_0x3c3e8b]['reduce'](function(_0x1f9761, _0x4f260c, _0x19cc74) { return _0x19cc74 % 0x3 == 0x0 ? _0x1f9761['push']([_0x4f260c]) : _0x1f9761[_0x1f9761['length'] - 0x1]['push'](_0x4f260c), _0x1f9761; }, [])['map'](function(_0x45d4f8) { return _0x59408f['e']['FromArray'](_0x45d4f8); }); _0x409d90['setColor3Array'](_0x3c3e8b, _0x10e4fb); } for (_0x3c3e8b in _0x5d188b['colors4']) _0x409d90['setColor4'](_0x3c3e8b, _0x59408f['f']['FromArray'](_0x5d188b['colors4'][_0x3c3e8b])); for (_0x3c3e8b in _0x5d188b['vectors2']) _0x409d90['setVector2'](_0x3c3e8b, _0x59408f['w']['FromArray'](_0x5d188b['vectors2'][_0x3c3e8b])); for (_0x3c3e8b in _0x5d188b['vectors3']) _0x409d90['setVector3'](_0x3c3e8b, _0x59408f['x']['FromArray'](_0x5d188b['vectors3'][_0x3c3e8b])); for (_0x3c3e8b in _0x5d188b['vectors4']) _0x409d90['setVector4'](_0x3c3e8b, _0x59408f['y']['FromArray'](_0x5d188b['vectors4'][_0x3c3e8b])); for (_0x3c3e8b in _0x5d188b['matrices']) _0x409d90['setMatrix'](_0x3c3e8b, _0x59408f['j']['FromArray'](_0x5d188b['matrices'][_0x3c3e8b])); for (_0x3c3e8b in _0x5d188b['matrices3x3']) _0x409d90['setMatrix3x3'](_0x3c3e8b, _0x5d188b['matrices3x3'][_0x3c3e8b]); for (_0x3c3e8b in _0x5d188b['matrices2x2']) _0x409d90['setMatrix2x2'](_0x3c3e8b, _0x5d188b['matrices2x2'][_0x3c3e8b]); for (_0x3c3e8b in _0x5d188b['vectors2Arrays']) _0x409d90['setArray2'](_0x3c3e8b, _0x5d188b['vectors2Arrays'][_0x3c3e8b]); for (_0x3c3e8b in _0x5d188b['vectors3Arrays']) _0x409d90['setArray3'](_0x3c3e8b, _0x5d188b['vectors3Arrays'][_0x3c3e8b]); return _0x409d90; } , _0x2b84a8; }(_0x4b99cf['a']); _0x25e717['a']['RegisteredTypes']['BABYLON.ShaderMaterial'] = _0x50c18f; } , function(_0x4826a7, _0x3a283b, _0x1a0dda) { 'use strict'; _0x1a0dda['d'](_0x3a283b, 'a', function() { return _0x25c2cf; }); var _0x5d1548 = _0x1a0dda(0x22) , _0x4745d1 = _0x1a0dda(0x0) , _0x25c2cf = function() { function _0x4ab4f7(_0x5008a1, _0x150357, _0x17eb5e) { this['vectors'] = _0x5d1548['a']['BuildArray'](0x8, _0x4745d1['x']['Zero']), this['center'] = _0x4745d1['x']['Zero'](), this['centerWorld'] = _0x4745d1['x']['Zero'](), this['extendSize'] = _0x4745d1['x']['Zero'](), this['extendSizeWorld'] = _0x4745d1['x']['Zero'](), this['directions'] = _0x5d1548['a']['BuildArray'](0x3, _0x4745d1['x']['Zero']), this['vectorsWorld'] = _0x5d1548['a']['BuildArray'](0x8, _0x4745d1['x']['Zero']), this['minimumWorld'] = _0x4745d1['x']['Zero'](), this['maximumWorld'] = _0x4745d1['x']['Zero'](), this['minimum'] = _0x4745d1['x']['Zero'](), this['maximum'] = _0x4745d1['x']['Zero'](), this['reConstruct'](_0x5008a1, _0x150357, _0x17eb5e); } return _0x4ab4f7['prototype']['reConstruct'] = function(_0x387cb3, _0x24077a, _0x521266) { var _0x11188b = _0x387cb3['x'] , _0x3e4318 = _0x387cb3['y'] , _0x1c642e = _0x387cb3['z'] , _0x496634 = _0x24077a['x'] , _0x30dcbc = _0x24077a['y'] , _0x19316e = _0x24077a['z'] , _0x4c308d = this['vectors']; this['minimum']['copyFromFloats'](_0x11188b, _0x3e4318, _0x1c642e), this['maximum']['copyFromFloats'](_0x496634, _0x30dcbc, _0x19316e), _0x4c308d[0x0]['copyFromFloats'](_0x11188b, _0x3e4318, _0x1c642e), _0x4c308d[0x1]['copyFromFloats'](_0x496634, _0x30dcbc, _0x19316e), _0x4c308d[0x2]['copyFromFloats'](_0x496634, _0x3e4318, _0x1c642e), _0x4c308d[0x3]['copyFromFloats'](_0x11188b, _0x30dcbc, _0x1c642e), _0x4c308d[0x4]['copyFromFloats'](_0x11188b, _0x3e4318, _0x19316e), _0x4c308d[0x5]['copyFromFloats'](_0x496634, _0x30dcbc, _0x1c642e), _0x4c308d[0x6]['copyFromFloats'](_0x11188b, _0x30dcbc, _0x19316e), _0x4c308d[0x7]['copyFromFloats'](_0x496634, _0x3e4318, _0x19316e), _0x24077a['addToRef'](_0x387cb3, this['center'])['scaleInPlace'](0.5), _0x24077a['subtractToRef'](_0x387cb3, this['extendSize'])['scaleInPlace'](0.5), this['_worldMatrix'] = _0x521266 || _0x4745d1['j']['IdentityReadOnly'], this['_update'](this['_worldMatrix']); } , _0x4ab4f7['prototype']['scale'] = function(_0x5bab84) { var _0x3a44ec = _0x4ab4f7['TmpVector3'] , _0x50bc21 = this['maximum']['subtractToRef'](this['minimum'], _0x3a44ec[0x0]) , _0x1530ea = _0x50bc21['length'](); _0x50bc21['normalizeFromLength'](_0x1530ea); var _0x3e83a6 = _0x1530ea * _0x5bab84 , _0x1828f9 = _0x50bc21['scaleInPlace'](0.5 * _0x3e83a6) , _0x16b193 = this['center']['subtractToRef'](_0x1828f9, _0x3a44ec[0x1]) , _0x2b4808 = this['center']['addToRef'](_0x1828f9, _0x3a44ec[0x2]); return this['reConstruct'](_0x16b193, _0x2b4808, this['_worldMatrix']), this; } , _0x4ab4f7['prototype']['getWorldMatrix'] = function() { return this['_worldMatrix']; } , _0x4ab4f7['prototype']['_update'] = function(_0x9b2079) { var _0x3284d2 = this['minimumWorld'] , _0x35173e = this['maximumWorld'] , _0x49bd96 = this['directions'] , _0x2c97d2 = this['vectorsWorld'] , _0x33f526 = this['vectors']; if (_0x9b2079['isIdentity']()) { _0x3284d2['copyFrom'](this['minimum']), _0x35173e['copyFrom'](this['maximum']); for (_0x3806bf = 0x0; _0x3806bf < 0x8; ++_0x3806bf) _0x2c97d2[_0x3806bf]['copyFrom'](_0x33f526[_0x3806bf]); this['extendSizeWorld']['copyFrom'](this['extendSize']), this['centerWorld']['copyFrom'](this['center']); } else { _0x3284d2['setAll'](Number['MAX_VALUE']), _0x35173e['setAll'](-Number['MAX_VALUE']); for (var _0x3806bf = 0x0; _0x3806bf < 0x8; ++_0x3806bf) { var _0x5960ce = _0x2c97d2[_0x3806bf]; _0x4745d1['x']['TransformCoordinatesToRef'](_0x33f526[_0x3806bf], _0x9b2079, _0x5960ce), _0x3284d2['minimizeInPlace'](_0x5960ce), _0x35173e['maximizeInPlace'](_0x5960ce); } _0x35173e['subtractToRef'](_0x3284d2, this['extendSizeWorld'])['scaleInPlace'](0.5), _0x35173e['addToRef'](_0x3284d2, this['centerWorld'])['scaleInPlace'](0.5); } _0x4745d1['x']['FromArrayToRef'](_0x9b2079['m'], 0x0, _0x49bd96[0x0]), _0x4745d1['x']['FromArrayToRef'](_0x9b2079['m'], 0x4, _0x49bd96[0x1]), _0x4745d1['x']['FromArrayToRef'](_0x9b2079['m'], 0x8, _0x49bd96[0x2]), this['_worldMatrix'] = _0x9b2079; } , _0x4ab4f7['prototype']['isInFrustum'] = function(_0x3d945c) { return _0x4ab4f7['IsInFrustum'](this['vectorsWorld'], _0x3d945c); } , _0x4ab4f7['prototype']['isCompletelyInFrustum'] = function(_0x11db12) { return _0x4ab4f7['IsCompletelyInFrustum'](this['vectorsWorld'], _0x11db12); } , _0x4ab4f7['prototype']['intersectsPoint'] = function(_0x55112d) { var _0x200aa8 = this['minimumWorld'] , _0x3ff8d1 = this['maximumWorld'] , _0x4038c5 = _0x200aa8['x'] , _0x17e256 = _0x200aa8['y'] , _0x3c6eb8 = _0x200aa8['z'] , _0x721ef8 = _0x3ff8d1['x'] , _0x12b16f = _0x3ff8d1['y'] , _0x283b47 = _0x3ff8d1['z'] , _0x4487aa = _0x55112d['x'] , _0x111a09 = _0x55112d['y'] , _0x2d06a7 = _0x55112d['z'] , _0x9c9cb9 = -_0x4745d1['h']; return !(_0x721ef8 - _0x4487aa < _0x9c9cb9 || _0x9c9cb9 > _0x4487aa - _0x4038c5) && (!(_0x12b16f - _0x111a09 < _0x9c9cb9 || _0x9c9cb9 > _0x111a09 - _0x17e256) && !(_0x283b47 - _0x2d06a7 < _0x9c9cb9 || _0x9c9cb9 > _0x2d06a7 - _0x3c6eb8)); } , _0x4ab4f7['prototype']['intersectsSphere'] = function(_0x4e52a7) { return _0x4ab4f7['IntersectsSphere'](this['minimumWorld'], this['maximumWorld'], _0x4e52a7['centerWorld'], _0x4e52a7['radiusWorld']); } , _0x4ab4f7['prototype']['intersectsMinMax'] = function(_0x25ae7e, _0x2495ea) { var _0x28d01c = this['minimumWorld'] , _0xdbca7a = this['maximumWorld'] , _0x356bbd = _0x28d01c['x'] , _0x4192fd = _0x28d01c['y'] , _0xd77436 = _0x28d01c['z'] , _0xaa4aba = _0xdbca7a['x'] , _0x15da43 = _0xdbca7a['y'] , _0xe126d9 = _0xdbca7a['z'] , _0x19ef06 = _0x25ae7e['x'] , _0x2b623c = _0x25ae7e['y'] , _0x33d14c = _0x25ae7e['z'] , _0x5d295e = _0x2495ea['x'] , _0x3794a4 = _0x2495ea['y'] , _0x5e1e71 = _0x2495ea['z']; return !(_0xaa4aba < _0x19ef06 || _0x356bbd > _0x5d295e) && (!(_0x15da43 < _0x2b623c || _0x4192fd > _0x3794a4) && !(_0xe126d9 < _0x33d14c || _0xd77436 > _0x5e1e71)); } , _0x4ab4f7['Intersects'] = function(_0x1fa833, _0x451080) { return _0x1fa833['intersectsMinMax'](_0x451080['minimumWorld'], _0x451080['maximumWorld']); } , _0x4ab4f7['IntersectsSphere'] = function(_0x1a3ce3, _0x27900c, _0x481e2c, _0x43ac75) { var _0x1ec887 = _0x4ab4f7['TmpVector3'][0x0]; return _0x4745d1['x']['ClampToRef'](_0x481e2c, _0x1a3ce3, _0x27900c, _0x1ec887), _0x4745d1['x']['DistanceSquared'](_0x481e2c, _0x1ec887) <= _0x43ac75 * _0x43ac75; } , _0x4ab4f7['IsCompletelyInFrustum'] = function(_0x4abf89, _0x5cf5e6) { for (var _0x4020c3 = 0x0; _0x4020c3 < 0x6; ++_0x4020c3) for (var _0x5145d7 = _0x5cf5e6[_0x4020c3], _0x54b5f7 = 0x0; _0x54b5f7 < 0x8; ++_0x54b5f7) if (_0x5145d7['dotCoordinate'](_0x4abf89[_0x54b5f7]) < 0x0) return !0x1; return !0x0; } , _0x4ab4f7['IsInFrustum'] = function(_0x2b80a8, _0x277ffc) { for (var _0x7b38e3 = 0x0; _0x7b38e3 < 0x6; ++_0x7b38e3) { for (var _0x37ad88 = !0x0, _0x4c0576 = _0x277ffc[_0x7b38e3], _0x2c26f1 = 0x0; _0x2c26f1 < 0x8; ++_0x2c26f1) if (_0x4c0576['dotCoordinate'](_0x2b80a8[_0x2c26f1]) >= 0x0) { _0x37ad88 = !0x1; break; } if (_0x37ad88) return !0x1; } return !0x0; } , _0x4ab4f7['TmpVector3'] = _0x5d1548['a']['BuildArray'](0x3, _0x4745d1['x']['Zero']), _0x4ab4f7; }(); } , function(_0x5d1e7d, _0x18cdc7, _0x52d9c2) { 'use strict'; _0x52d9c2['d'](_0x18cdc7, 'a', function() { return _0x5a4d88; }); var _0x5a4d88 = function() { function _0x287936() { this['references'] = 0x0, this['capacity'] = 0x0, this['is32Bits'] = !0x1; } return Object['defineProperty'](_0x287936['prototype'], 'underlyingResource', { 'get': function() { return null; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x287936; }(); } , function(_0x295bee, _0x5d6f07, _0x771fdd) { 'use strict'; _0x771fdd['d'](_0x5d6f07, 'a', function() { return _0x302127; }); var _0x5f0e6e = _0x771fdd(0x3) , _0x302127 = function() { function _0x480752() { this['hoverCursor'] = '', this['actions'] = new Array(), this['isRecursive'] = !0x1; } return Object['defineProperty'](_0x480752, 'HasTriggers', { 'get': function() { for (var _0x52d44a in _0x480752['Triggers']) if (_0x480752['Triggers']['hasOwnProperty'](_0x52d44a)) return !0x0; return !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x480752, 'HasPickTriggers', { 'get': function() { for (var _0x4098fc in _0x480752['Triggers']) if (_0x480752['Triggers']['hasOwnProperty'](_0x4098fc)) { var _0x4ef168 = parseInt(_0x4098fc); if (_0x4ef168 >= _0x5f0e6e['a']['ACTION_OnPickTrigger'] && _0x4ef168 <= _0x5f0e6e['a']['ACTION_OnPickUpTrigger']) return !0x0; } return !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x480752['HasSpecificTrigger'] = function(_0x5c01b4) { for (var _0x151eac in _0x480752['Triggers']) { if (_0x480752['Triggers']['hasOwnProperty'](_0x151eac)) if (parseInt(_0x151eac) === _0x5c01b4) return !0x0; } return !0x1; } , _0x480752['Triggers'] = {}, _0x480752; }(); } , function(_0x525504, _0x2adaac, _0x2efce1) { 'use strict'; _0x2efce1['d'](_0x2adaac, 'a', function() { return _0x564d8c; }); var _0x8a2db5 = _0x2efce1(0xb) , _0x509d68 = _0x2efce1(0xd); _0x509d68['a']['CreatePlane'] = function(_0x568903) { var _0x30edcc = [] , _0x8581fb = [] , _0x29285b = [] , _0x5c9d7e = [] , _0x5ca95f = _0x568903['width'] || _0x568903['size'] || 0x1 , _0x5cfcf8 = _0x568903['height'] || _0x568903['size'] || 0x1 , _0x5a928b = 0x0 === _0x568903['sideOrientation'] ? 0x0 : _0x568903['sideOrientation'] || _0x509d68['a']['DEFAULTSIDE'] , _0x387971 = _0x5ca95f / 0x2 , _0x1d63c7 = _0x5cfcf8 / 0x2; _0x8581fb['push'](-_0x387971, -_0x1d63c7, 0x0), _0x29285b['push'](0x0, 0x0, -0x1), _0x5c9d7e['push'](0x0, 0x0), _0x8581fb['push'](_0x387971, -_0x1d63c7, 0x0), _0x29285b['push'](0x0, 0x0, -0x1), _0x5c9d7e['push'](0x1, 0x0), _0x8581fb['push'](_0x387971, _0x1d63c7, 0x0), _0x29285b['push'](0x0, 0x0, -0x1), _0x5c9d7e['push'](0x1, 0x1), _0x8581fb['push'](-_0x387971, _0x1d63c7, 0x0), _0x29285b['push'](0x0, 0x0, -0x1), _0x5c9d7e['push'](0x0, 0x1), _0x30edcc['push'](0x0), _0x30edcc['push'](0x1), _0x30edcc['push'](0x2), _0x30edcc['push'](0x0), _0x30edcc['push'](0x2), _0x30edcc['push'](0x3), _0x509d68['a']['_ComputeSides'](_0x5a928b, _0x8581fb, _0x30edcc, _0x29285b, _0x5c9d7e, _0x568903['frontUVs'], _0x568903['backUVs']); var _0x47d808 = new _0x509d68['a'](); return _0x47d808['indices'] = _0x30edcc, _0x47d808['positions'] = _0x8581fb, _0x47d808['normals'] = _0x29285b, _0x47d808['uvs'] = _0x5c9d7e, _0x47d808; } , _0x8a2db5['a']['CreatePlane'] = function(_0x46a8d0, _0x25ce13, _0x293100, _0x3eb13f, _0x391fe8) { var _0x58ae9e = { 'size': _0x25ce13, 'width': _0x25ce13, 'height': _0x25ce13, 'sideOrientation': _0x391fe8, 'updatable': _0x3eb13f }; return _0x564d8c['CreatePlane'](_0x46a8d0, _0x58ae9e, _0x293100); } ; var _0x564d8c = function() { function _0x489c80() {} return _0x489c80['CreatePlane'] = function(_0x223b55, _0x5999e2, _0x191cba) { void 0x0 === _0x191cba && (_0x191cba = null); var _0x1825ad = new _0x8a2db5['a'](_0x223b55,_0x191cba); return _0x5999e2['sideOrientation'] = _0x8a2db5['a']['_GetDefaultSideOrientation'](_0x5999e2['sideOrientation']), _0x1825ad['_originalBuilderSideOrientation'] = _0x5999e2['sideOrientation'], _0x509d68['a']['CreatePlane'](_0x5999e2)['applyToMesh'](_0x1825ad, _0x5999e2['updatable']), _0x5999e2['sourcePlane'] && (_0x1825ad['translate'](_0x5999e2['sourcePlane']['normal'], -_0x5999e2['sourcePlane']['d']), _0x1825ad['setDirection'](_0x5999e2['sourcePlane']['normal']['scale'](-0x1))), _0x1825ad; } , _0x489c80; }(); } , function(_0x11cd84, _0x4c8c17, _0x3dd8cd) { 'use strict'; _0x3dd8cd['d'](_0x4c8c17, 'a', function() { return _0x465513; }); var _0x465513 = function() { return function(_0x3c3500, _0x18b8e8, _0x2d4896) { this['bu'] = _0x3c3500, this['bv'] = _0x18b8e8, this['distance'] = _0x2d4896, this['faceId'] = 0x0, this['subMeshId'] = 0x0; } ; }(); } , function(_0x4eb544, _0x4c594e, _0x443441) { 'use strict'; _0x443441['d'](_0x4c594e, 'a', function() { return _0x209391; }); var _0x350953 = _0x443441(0x22) , _0x131d90 = _0x443441(0x0) , _0x209391 = function() { function _0x2227a2(_0x4b98ac, _0x528cde, _0x462842) { this['center'] = _0x131d90['x']['Zero'](), this['centerWorld'] = _0x131d90['x']['Zero'](), this['minimum'] = _0x131d90['x']['Zero'](), this['maximum'] = _0x131d90['x']['Zero'](), this['reConstruct'](_0x4b98ac, _0x528cde, _0x462842); } return _0x2227a2['prototype']['reConstruct'] = function(_0x23f52f, _0x5e3581, _0x4ae4f8) { this['minimum']['copyFrom'](_0x23f52f), this['maximum']['copyFrom'](_0x5e3581); var _0x2a602a = _0x131d90['x']['Distance'](_0x23f52f, _0x5e3581); _0x5e3581['addToRef'](_0x23f52f, this['center'])['scaleInPlace'](0.5), this['radius'] = 0.5 * _0x2a602a, this['_update'](_0x4ae4f8 || _0x131d90['j']['IdentityReadOnly']); } , _0x2227a2['prototype']['scale'] = function(_0x372cf5) { var _0x35c808 = this['radius'] * _0x372cf5 , _0x2ac940 = _0x2227a2['TmpVector3'] , _0x4df2f5 = _0x2ac940[0x0]['setAll'](_0x35c808) , _0x4e10c9 = this['center']['subtractToRef'](_0x4df2f5, _0x2ac940[0x1]) , _0x1f6e83 = this['center']['addToRef'](_0x4df2f5, _0x2ac940[0x2]); return this['reConstruct'](_0x4e10c9, _0x1f6e83, this['_worldMatrix']), this; } , _0x2227a2['prototype']['getWorldMatrix'] = function() { return this['_worldMatrix']; } , _0x2227a2['prototype']['_update'] = function(_0x36e8cb) { if (_0x36e8cb['isIdentity']()) this['centerWorld']['copyFrom'](this['center']), this['radiusWorld'] = this['radius']; else { _0x131d90['x']['TransformCoordinatesToRef'](this['center'], _0x36e8cb, this['centerWorld']); var _0x4c5531 = _0x2227a2['TmpVector3'][0x0]; _0x131d90['x']['TransformNormalFromFloatsToRef'](0x1, 0x1, 0x1, _0x36e8cb, _0x4c5531), this['radiusWorld'] = Math['max'](Math['abs'](_0x4c5531['x']), Math['abs'](_0x4c5531['y']), Math['abs'](_0x4c5531['z'])) * this['radius']; } } , _0x2227a2['prototype']['isInFrustum'] = function(_0x7a0dcf) { for (var _0x4618f9 = this['centerWorld'], _0x5aa50f = this['radiusWorld'], _0x3dbbd5 = 0x0; _0x3dbbd5 < 0x6; _0x3dbbd5++) if (_0x7a0dcf[_0x3dbbd5]['dotCoordinate'](_0x4618f9) <= -_0x5aa50f) return !0x1; return !0x0; } , _0x2227a2['prototype']['isCenterInFrustum'] = function(_0x3baa20) { for (var _0x1ec27b = this['centerWorld'], _0x3dc41d = 0x0; _0x3dc41d < 0x6; _0x3dc41d++) if (_0x3baa20[_0x3dc41d]['dotCoordinate'](_0x1ec27b) < 0x0) return !0x1; return !0x0; } , _0x2227a2['prototype']['intersectsPoint'] = function(_0x45176c) { var _0x55b654 = _0x131d90['x']['DistanceSquared'](this['centerWorld'], _0x45176c); return !(this['radiusWorld'] * this['radiusWorld'] < _0x55b654); } , _0x2227a2['Intersects'] = function(_0x29aac8, _0x4027ee) { var _0x74bd38 = _0x131d90['x']['DistanceSquared'](_0x29aac8['centerWorld'], _0x4027ee['centerWorld']) , _0xbb4a45 = _0x29aac8['radiusWorld'] + _0x4027ee['radiusWorld']; return !(_0xbb4a45 * _0xbb4a45 < _0x74bd38); } , _0x2227a2['TmpVector3'] = _0x350953['a']['BuildArray'](0x3, _0x131d90['x']['Zero']), _0x2227a2; }(); } , function(_0x920840, _0x34fcab, _0x5466c8) { 'use strict'; _0x5466c8['d'](_0x34fcab, 'a', function() { return _0x13e829; }); var _0x4cb5cf = _0x5466c8(0x14) , _0x5be0ee = _0x5466c8(0x4) , _0x2b577d = _0x5466c8(0x3) , _0x13e829 = function() { function _0xe29f3c(_0x554d28) { this['_vertexBuffers'] = {}, this['_scene'] = _0x554d28; } return _0xe29f3c['prototype']['_prepareBuffers'] = function() { if (!this['_vertexBuffers'][_0x5be0ee['b']['PositionKind']]) { var _0x8fae77 = []; _0x8fae77['push'](0x1, 0x1), _0x8fae77['push'](-0x1, 0x1), _0x8fae77['push'](-0x1, -0x1), _0x8fae77['push'](0x1, -0x1), this['_vertexBuffers'][_0x5be0ee['b']['PositionKind']] = new _0x5be0ee['b'](this['_scene']['getEngine'](),_0x8fae77,_0x5be0ee['b']['PositionKind'],!0x1,!0x1,0x2), this['_buildIndexBuffer'](); } } , _0xe29f3c['prototype']['_buildIndexBuffer'] = function() { var _0x54b223 = []; _0x54b223['push'](0x0), _0x54b223['push'](0x1), _0x54b223['push'](0x2), _0x54b223['push'](0x0), _0x54b223['push'](0x2), _0x54b223['push'](0x3), this['_indexBuffer'] = this['_scene']['getEngine']()['createIndexBuffer'](_0x54b223); } , _0xe29f3c['prototype']['_rebuild'] = function() { var _0x5c33a7 = this['_vertexBuffers'][_0x5be0ee['b']['PositionKind']]; _0x5c33a7 && (_0x5c33a7['_rebuild'](), this['_buildIndexBuffer']()); } , _0xe29f3c['prototype']['_prepareFrame'] = function(_0x57fc6d, _0x191b62) { void 0x0 === _0x57fc6d && (_0x57fc6d = null), void 0x0 === _0x191b62 && (_0x191b62 = null); var _0x4f6c49 = this['_scene']['activeCamera']; return !!_0x4f6c49 && (!(!(_0x191b62 = _0x191b62 || _0x4f6c49['_postProcesses']['filter'](function(_0x39384e) { return null != _0x39384e; })) || 0x0 === _0x191b62['length'] || !this['_scene']['postProcessesEnabled']) && (_0x191b62[0x0]['activate'](_0x4f6c49, _0x57fc6d, null != _0x191b62), !0x0)); } , _0xe29f3c['prototype']['directRender'] = function(_0x137aa4, _0x313467, _0x56d059, _0x31c287, _0x1834c5) { void 0x0 === _0x313467 && (_0x313467 = null), void 0x0 === _0x56d059 && (_0x56d059 = !0x1), void 0x0 === _0x31c287 && (_0x31c287 = 0x0), void 0x0 === _0x1834c5 && (_0x1834c5 = 0x0); for (var _0xddb243 = this['_scene']['getEngine'](), _0x583dfc = 0x0; _0x583dfc < _0x137aa4['length']; _0x583dfc++) { _0x583dfc < _0x137aa4['length'] - 0x1 ? _0x137aa4[_0x583dfc + 0x1]['activate'](this['_scene']['activeCamera'], _0x313467) : _0x313467 ? _0xddb243['bindFramebuffer'](_0x313467, _0x31c287, void 0x0, void 0x0, _0x56d059, void 0x0, _0x1834c5) : _0xddb243['restoreDefaultFramebuffer'](); var _0x2e994b = _0x137aa4[_0x583dfc] , _0x1785d9 = _0x2e994b['apply'](); _0x1785d9 && (_0x2e994b['onBeforeRenderObservable']['notifyObservers'](_0x1785d9), this['_prepareBuffers'](), _0xddb243['bindBuffers'](this['_vertexBuffers'], this['_indexBuffer'], _0x1785d9), _0xddb243['drawElementsType'](_0x4cb5cf['a']['TriangleFillMode'], 0x0, 0x6), _0x2e994b['onAfterRenderObservable']['notifyObservers'](_0x1785d9)); } _0xddb243['setDepthBuffer'](!0x0), _0xddb243['setDepthWrite'](!0x0); } , _0xe29f3c['prototype']['_finalizeFrame'] = function(_0x6f2f0b, _0x5b3100, _0x363420, _0x3e5b67, _0x159e4c) { void 0x0 === _0x159e4c && (_0x159e4c = !0x1); var _0x2a0360 = this['_scene']['activeCamera']; if (_0x2a0360 && 0x0 !== (_0x3e5b67 = _0x3e5b67 || _0x2a0360['_postProcesses']['filter'](function(_0x5c92ee) { return null != _0x5c92ee; }))['length'] && this['_scene']['postProcessesEnabled']) { for (var _0x493bab = this['_scene']['getEngine'](), _0x6ab8da = 0x0, _0x1d25c7 = _0x3e5b67['length']; _0x6ab8da < _0x1d25c7; _0x6ab8da++) { var _0x4dcf85 = _0x3e5b67[_0x6ab8da]; if (_0x6ab8da < _0x1d25c7 - 0x1 ? _0x4dcf85['_outputTexture'] = _0x3e5b67[_0x6ab8da + 0x1]['activate'](_0x2a0360, _0x5b3100) : _0x5b3100 ? (_0x493bab['bindFramebuffer'](_0x5b3100, _0x363420, void 0x0, void 0x0, _0x159e4c), _0x4dcf85['_outputTexture'] = _0x5b3100) : (_0x493bab['restoreDefaultFramebuffer'](), _0x4dcf85['_outputTexture'] = null), _0x6f2f0b) break; var _0x539cca = _0x4dcf85['apply'](); _0x539cca && (_0x4dcf85['onBeforeRenderObservable']['notifyObservers'](_0x539cca), this['_prepareBuffers'](), _0x493bab['bindBuffers'](this['_vertexBuffers'], this['_indexBuffer'], _0x539cca), _0x493bab['drawElementsType'](_0x4cb5cf['a']['TriangleFillMode'], 0x0, 0x6), _0x4dcf85['onAfterRenderObservable']['notifyObservers'](_0x539cca)); } _0x493bab['setDepthBuffer'](!0x0), _0x493bab['setDepthWrite'](!0x0), _0x493bab['setAlphaMode'](_0x2b577d['a']['ALPHA_DISABLE']); } } , _0xe29f3c['prototype']['dispose'] = function() { var _0x1e02bb = this['_vertexBuffers'][_0x5be0ee['b']['PositionKind']]; _0x1e02bb && (_0x1e02bb['dispose'](), this['_vertexBuffers'][_0x5be0ee['b']['PositionKind']] = null), this['_indexBuffer'] && (this['_scene']['getEngine']()['_releaseBuffer'](this['_indexBuffer']), this['_indexBuffer'] = null); } , _0xe29f3c; }(); } , function(_0x5e6593, _0x10054c, _0x49444b) { 'use strict'; var _0xa22e99 = 'lightFragmentDeclaration' , _0x2c7670 = '#ifdef\x20LIGHT{X}\x0auniform\x20vec4\x20vLightData{X};\x0auniform\x20vec4\x20vLightDiffuse{X};\x0a#ifdef\x20SPECULARTERM\x0auniform\x20vec3\x20vLightSpecular{X};\x0a#else\x0avec3\x20vLightSpecular{X}=vec3(0.);\x0a#endif\x0a#ifdef\x20SHADOW{X}\x0a#if\x20defined(SHADOWCUBE{X})\x0auniform\x20samplerCube\x20shadowSampler{X};\x0a#else\x0avarying\x20vec4\x20vPositionFromLight{X};\x0avarying\x20float\x20vDepthMetric{X};\x0a#if\x20defined(SHADOWPCSS{X})\x0auniform\x20highp\x20sampler2DShadow\x20shadowSampler{X};\x0auniform\x20highp\x20sampler2D\x20depthSampler{X};\x0a#elif\x20defined(SHADOWPCF{X})\x0auniform\x20highp\x20sampler2DShadow\x20shadowSampler{X};\x0a#else\x0auniform\x20sampler2D\x20shadowSampler{X};\x0a#endif\x0auniform\x20mat4\x20lightMatrix{X};\x0a#endif\x0auniform\x20vec4\x20shadowsInfo{X};\x0auniform\x20vec2\x20depthValues{X};\x0a#endif\x0a#ifdef\x20SPOTLIGHT{X}\x0auniform\x20vec4\x20vLightDirection{X};\x0auniform\x20vec4\x20vLightFalloff{X};\x0a#elif\x20defined(POINTLIGHT{X})\x0auniform\x20vec4\x20vLightFalloff{X};\x0a#elif\x20defined(HEMILIGHT{X})\x0auniform\x20vec3\x20vLightGround{X};\x0a#endif\x0a#ifdef\x20PROJECTEDLIGHTTEXTURE{X}\x0auniform\x20mat4\x20textureProjectionMatrix{X};\x0auniform\x20sampler2D\x20projectionLightSampler{X};\x0a#endif\x0a#endif'; _0x49444b(0x5)['a']['IncludesShadersStore'][_0xa22e99] = _0x2c7670; } , function(_0x96c173, _0x25358b, _0x4d78b1) { 'use strict'; var _0x4d894e = 'lightUboDeclaration' , _0x48b725 = '#ifdef\x20LIGHT{X}\x0auniform\x20Light{X}\x0a{\x0avec4\x20vLightData;\x0avec4\x20vLightDiffuse;\x0avec3\x20vLightSpecular;\x0a#ifdef\x20SPOTLIGHT{X}\x0avec4\x20vLightDirection;\x0avec4\x20vLightFalloff;\x0a#elif\x20defined(POINTLIGHT{X})\x0avec4\x20vLightFalloff;\x0a#elif\x20defined(HEMILIGHT{X})\x0avec3\x20vLightGround;\x0a#endif\x0avec4\x20shadowsInfo;\x0avec2\x20depthValues;\x0a}\x20light{X};\x0a#ifdef\x20PROJECTEDLIGHTTEXTURE{X}\x0auniform\x20mat4\x20textureProjectionMatrix{X};\x0auniform\x20sampler2D\x20projectionLightSampler{X};\x0a#endif\x0a#ifdef\x20SHADOW{X}\x0a#if\x20defined(SHADOWCUBE{X})\x0auniform\x20samplerCube\x20shadowSampler{X};\x0a#else\x0avarying\x20vec4\x20vPositionFromLight{X};\x0avarying\x20float\x20vDepthMetric{X};\x0a#if\x20defined(SHADOWPCSS{X})\x0auniform\x20highp\x20sampler2DShadow\x20shadowSampler{X};\x0auniform\x20highp\x20sampler2D\x20depthSampler{X};\x0a#elif\x20defined(SHADOWPCF{X})\x0auniform\x20highp\x20sampler2DShadow\x20shadowSampler{X};\x0a#else\x0auniform\x20sampler2D\x20shadowSampler{X};\x0a#endif\x0auniform\x20mat4\x20lightMatrix{X};\x0a#endif\x0a#endif\x0a#endif'; _0x4d78b1(0x5)['a']['IncludesShadersStore'][_0x4d894e] = _0x48b725; } , function(_0x4d5c36, _0x33cc2b, _0x461854) { 'use strict'; var _0x390930 = 'imageProcessingDeclaration' , _0x26bdc9 = '#ifdef\x20EXPOSURE\x0auniform\x20float\x20exposureLinear;\x0a#endif\x0a#ifdef\x20CONTRAST\x0auniform\x20float\x20contrast;\x0a#endif\x0a#ifdef\x20VIGNETTE\x0auniform\x20vec2\x20vInverseScreenSize;\x0auniform\x20vec4\x20vignetteSettings1;\x0auniform\x20vec4\x20vignetteSettings2;\x0a#endif\x0a#ifdef\x20COLORCURVES\x0auniform\x20vec4\x20vCameraColorCurveNegative;\x0auniform\x20vec4\x20vCameraColorCurveNeutral;\x0auniform\x20vec4\x20vCameraColorCurvePositive;\x0a#endif\x0a#ifdef\x20COLORGRADING\x0a#ifdef\x20COLORGRADING3D\x0auniform\x20highp\x20sampler3D\x20txColorTransform;\x0a#else\x0auniform\x20sampler2D\x20txColorTransform;\x0a#endif\x0auniform\x20vec4\x20colorTransformSettings;\x0a#endif'; _0x461854(0x5)['a']['IncludesShadersStore'][_0x390930] = _0x26bdc9; } , function(_0x55d6d6, _0x4e10c4, _0x2f530d) { 'use strict'; var _0x400ec4 = 'imageProcessingFunctions' , _0x1d712f = '#if\x20defined(COLORGRADING)\x20&&\x20!defined(COLORGRADING3D)\x0a\x0avec3\x20sampleTexture3D(sampler2D\x20colorTransform,vec3\x20color,vec2\x20sampler3dSetting)\x0a{\x0afloat\x20sliceSize=2.0*sampler3dSetting.x;\x0a#ifdef\x20SAMPLER3DGREENDEPTH\x0afloat\x20sliceContinuous=(color.g-sampler3dSetting.x)*sampler3dSetting.y;\x0a#else\x0afloat\x20sliceContinuous=(color.b-sampler3dSetting.x)*sampler3dSetting.y;\x0a#endif\x0afloat\x20sliceInteger=floor(sliceContinuous);\x0a\x0a\x0afloat\x20sliceFraction=sliceContinuous-sliceInteger;\x0a#ifdef\x20SAMPLER3DGREENDEPTH\x0avec2\x20sliceUV=color.rb;\x0a#else\x0avec2\x20sliceUV=color.rg;\x0a#endif\x0asliceUV.x*=sliceSize;\x0asliceUV.x+=sliceInteger*sliceSize;\x0asliceUV=saturate(sliceUV);\x0avec4\x20slice0Color=texture2D(colorTransform,sliceUV);\x0asliceUV.x+=sliceSize;\x0asliceUV=saturate(sliceUV);\x0avec4\x20slice1Color=texture2D(colorTransform,sliceUV);\x0avec3\x20result=mix(slice0Color.rgb,slice1Color.rgb,sliceFraction);\x0a#ifdef\x20SAMPLER3DBGRMAP\x0acolor.rgb=result.rgb;\x0a#else\x0acolor.rgb=result.bgr;\x0a#endif\x0areturn\x20color;\x0a}\x0a#endif\x0a#ifdef\x20TONEMAPPING_ACES\x0a\x0a\x0a\x0a\x0a\x0aconst\x20mat3\x20ACESInputMat=mat3(\x0avec3(0.59719,0.07600,0.02840),\x0avec3(0.35458,0.90834,0.13383),\x0avec3(0.04823,0.01566,0.83777)\x0a);\x0a\x0aconst\x20mat3\x20ACESOutputMat=mat3(\x0avec3(\x201.60475,-0.10208,-0.00327),\x0avec3(-0.53108,1.10813,-0.07276),\x0avec3(-0.07367,-0.00605,1.07602)\x0a);\x0avec3\x20RRTAndODTFit(vec3\x20v)\x0a{\x0avec3\x20a=v*(v+0.0245786)-0.000090537;\x0avec3\x20b=v*(0.983729*v+0.4329510)+0.238081;\x0areturn\x20a/b;\x0a}\x0avec3\x20ACESFitted(vec3\x20color)\x0a{\x0acolor=ACESInputMat*color;\x0a\x0acolor=RRTAndODTFit(color);\x0acolor=ACESOutputMat*color;\x0a\x0acolor=saturate(color);\x0areturn\x20color;\x0a}\x0a#endif\x0avec4\x20applyImageProcessing(vec4\x20result)\x20{\x0a#ifdef\x20EXPOSURE\x0aresult.rgb*=exposureLinear;\x0a#endif\x0a#ifdef\x20VIGNETTE\x0a\x0avec2\x20viewportXY=gl_FragCoord.xy*vInverseScreenSize;\x0aviewportXY=viewportXY*2.0-1.0;\x0avec3\x20vignetteXY1=vec3(viewportXY*vignetteSettings1.xy+vignetteSettings1.zw,1.0);\x0afloat\x20vignetteTerm=dot(vignetteXY1,vignetteXY1);\x0afloat\x20vignette=pow(vignetteTerm,vignetteSettings2.w);\x0a\x0avec3\x20vignetteColor=vignetteSettings2.rgb;\x0a#ifdef\x20VIGNETTEBLENDMODEMULTIPLY\x0avec3\x20vignetteColorMultiplier=mix(vignetteColor,vec3(1,1,1),vignette);\x0aresult.rgb*=vignetteColorMultiplier;\x0a#endif\x0a#ifdef\x20VIGNETTEBLENDMODEOPAQUE\x0aresult.rgb=mix(vignetteColor,result.rgb,vignette);\x0a#endif\x0a#endif\x0a#ifdef\x20TONEMAPPING\x0a#ifdef\x20TONEMAPPING_ACES\x0aresult.rgb=ACESFitted(result.rgb);\x0a#else\x0aconst\x20float\x20tonemappingCalibration=1.590579;\x0aresult.rgb=1.0-exp2(-tonemappingCalibration*result.rgb);\x0a#endif\x0a#endif\x0a\x0aresult.rgb=toGammaSpace(result.rgb);\x0aresult.rgb=saturate(result.rgb);\x0a#ifdef\x20CONTRAST\x0a\x0avec3\x20resultHighContrast=result.rgb*result.rgb*(3.0-2.0*result.rgb);\x0aif\x20(contrast<1.0)\x20{\x0a\x0aresult.rgb=mix(vec3(0.5,0.5,0.5),result.rgb,contrast);\x0a}\x20else\x20{\x0a\x0aresult.rgb=mix(result.rgb,resultHighContrast,contrast-1.0);\x0a}\x0a#endif\x0a\x0a#ifdef\x20COLORGRADING\x0avec3\x20colorTransformInput=result.rgb*colorTransformSettings.xxx+colorTransformSettings.yyy;\x0a#ifdef\x20COLORGRADING3D\x0avec3\x20colorTransformOutput=texture(txColorTransform,colorTransformInput).rgb;\x0a#else\x0avec3\x20colorTransformOutput=sampleTexture3D(txColorTransform,colorTransformInput,colorTransformSettings.yz).rgb;\x0a#endif\x0aresult.rgb=mix(result.rgb,colorTransformOutput,colorTransformSettings.www);\x0a#endif\x0a#ifdef\x20COLORCURVES\x0a\x0afloat\x20luma=getLuminance(result.rgb);\x0avec2\x20curveMix=clamp(vec2(luma*3.0-1.5,luma*-3.0+1.5),vec2(0.0),vec2(1.0));\x0avec4\x20colorCurve=vCameraColorCurveNeutral+curveMix.x*vCameraColorCurvePositive-curveMix.y*vCameraColorCurveNegative;\x0aresult.rgb*=colorCurve.rgb;\x0aresult.rgb=mix(vec3(luma),result.rgb,colorCurve.a);\x0a#endif\x0areturn\x20result;\x0a}'; _0x2f530d(0x5)['a']['IncludesShadersStore'][_0x400ec4] = _0x1d712f; } , function(_0x2e9772, _0x2a38f9, _0x2c2278) { 'use strict'; var _0x101267 = 'logDepthDeclaration' , _0x2ba5fb = '#ifdef\x20LOGARITHMICDEPTH\x0auniform\x20float\x20logarithmicDepthConstant;\x0avarying\x20float\x20vFragmentDepth;\x0a#endif'; _0x2c2278(0x5)['a']['IncludesShadersStore'][_0x101267] = _0x2ba5fb; } , function(_0x37be39, _0x5afce7, _0x525fc0) { 'use strict'; var _0x3fc800 = 'clipPlaneFragment' , _0x41ced5 = '#ifdef\x20CLIPPLANE\x0aif\x20(fClipDistance>0.0)\x0a{\x0adiscard;\x0a}\x0a#endif\x0a#ifdef\x20CLIPPLANE2\x0aif\x20(fClipDistance2>0.0)\x0a{\x0adiscard;\x0a}\x0a#endif\x0a#ifdef\x20CLIPPLANE3\x0aif\x20(fClipDistance3>0.0)\x0a{\x0adiscard;\x0a}\x0a#endif\x0a#ifdef\x20CLIPPLANE4\x0aif\x20(fClipDistance4>0.0)\x0a{\x0adiscard;\x0a}\x0a#endif'; _0x525fc0(0x5)['a']['IncludesShadersStore'][_0x3fc800] = _0x41ced5; } , function(_0x3bef55, _0x1c96e5, _0x188b41) { 'use strict'; var _0x44c90e = 'clipPlaneVertex' , _0x1bf44a = '#ifdef\x20CLIPPLANE\x0afClipDistance=dot(worldPos,vClipPlane);\x0a#endif\x0a#ifdef\x20CLIPPLANE2\x0afClipDistance2=dot(worldPos,vClipPlane2);\x0a#endif\x0a#ifdef\x20CLIPPLANE3\x0afClipDistance3=dot(worldPos,vClipPlane3);\x0a#endif\x0a#ifdef\x20CLIPPLANE4\x0afClipDistance4=dot(worldPos,vClipPlane4);\x0a#endif'; _0x188b41(0x5)['a']['IncludesShadersStore'][_0x44c90e] = _0x1bf44a; } , function(_0x12dcc0, _0x14e952, _0x2d52f2) { 'use strict'; _0x2d52f2['d'](_0x14e952, 'a', function() { return _0xa23c30; }), _0x2d52f2['d'](_0x14e952, 'b', function() { return _0x5cc400; }); var _0x5b6449 = _0x2d52f2(0x6d) , _0xa23c30 = function() { return function() {} ; }() , _0x5cc400 = function() { function _0x4815d6(_0x44bc66) { this['_useSceneAutoClearSetup'] = !0x1, this['_renderingGroups'] = new Array(), this['_autoClearDepthStencil'] = {}, this['_customOpaqueSortCompareFn'] = {}, this['_customAlphaTestSortCompareFn'] = {}, this['_customTransparentSortCompareFn'] = {}, this['_renderingGroupInfo'] = new _0xa23c30(), this['_scene'] = _0x44bc66; for (var _0x4e5271 = _0x4815d6['MIN_RENDERINGGROUPS']; _0x4e5271 < _0x4815d6['MAX_RENDERINGGROUPS']; _0x4e5271++) this['_autoClearDepthStencil'][_0x4e5271] = { 'autoClear': !0x0, 'depth': !0x0, 'stencil': !0x0 }; } return _0x4815d6['prototype']['_clearDepthStencilBuffer'] = function(_0x4aa5c2, _0x44c107) { void 0x0 === _0x4aa5c2 && (_0x4aa5c2 = !0x0), void 0x0 === _0x44c107 && (_0x44c107 = !0x0), this['_depthStencilBufferAlreadyCleaned'] || (this['_scene']['getEngine']()['clear'](null, !0x1, _0x4aa5c2, _0x44c107), this['_depthStencilBufferAlreadyCleaned'] = !0x0); } , _0x4815d6['prototype']['render'] = function(_0x5ec204, _0x388bfb, _0x28ec2a, _0x234c37) { var _0x4f69af = this['_renderingGroupInfo']; if (_0x4f69af['scene'] = this['_scene'], _0x4f69af['camera'] = this['_scene']['activeCamera'], this['_scene']['spriteManagers'] && _0x234c37) for (var _0x14862d = 0x0; _0x14862d < this['_scene']['spriteManagers']['length']; _0x14862d++) { var _0x55ff57 = this['_scene']['spriteManagers'][_0x14862d]; this['dispatchSprites'](_0x55ff57); } for (_0x14862d = _0x4815d6['MIN_RENDERINGGROUPS']; _0x14862d < _0x4815d6['MAX_RENDERINGGROUPS']; _0x14862d++) { this['_depthStencilBufferAlreadyCleaned'] = _0x14862d === _0x4815d6['MIN_RENDERINGGROUPS']; var _0x197cb9 = this['_renderingGroups'][_0x14862d]; if (_0x197cb9) { var _0x6a8e0d = Math['pow'](0x2, _0x14862d); if (_0x4f69af['renderingGroupId'] = _0x14862d, this['_scene']['onBeforeRenderingGroupObservable']['notifyObservers'](_0x4f69af, _0x6a8e0d), _0x4815d6['AUTOCLEAR']) { var _0x284d39 = this['_useSceneAutoClearSetup'] ? this['_scene']['getAutoClearDepthStencilSetup'](_0x14862d) : this['_autoClearDepthStencil'][_0x14862d]; _0x284d39 && _0x284d39['autoClear'] && this['_clearDepthStencilBuffer'](_0x284d39['depth'], _0x284d39['stencil']); } for (var _0x5b6267 = 0x0, _0x553022 = this['_scene']['_beforeRenderingGroupDrawStage']; _0x5b6267 < _0x553022['length']; _0x5b6267++) { _0x553022[_0x5b6267]['action'](_0x14862d); } _0x197cb9['render'](_0x5ec204, _0x234c37, _0x28ec2a, _0x388bfb); for (var _0x58e08b = 0x0, _0x3fe19c = this['_scene']['_afterRenderingGroupDrawStage']; _0x58e08b < _0x3fe19c['length']; _0x58e08b++) { _0x3fe19c[_0x58e08b]['action'](_0x14862d); } this['_scene']['onAfterRenderingGroupObservable']['notifyObservers'](_0x4f69af, _0x6a8e0d); } } } , _0x4815d6['prototype']['reset'] = function() { for (var _0xd62437 = _0x4815d6['MIN_RENDERINGGROUPS']; _0xd62437 < _0x4815d6['MAX_RENDERINGGROUPS']; _0xd62437++) { var _0x2be24c = this['_renderingGroups'][_0xd62437]; _0x2be24c && _0x2be24c['prepare'](); } } , _0x4815d6['prototype']['dispose'] = function() { this['freeRenderingGroups'](), this['_renderingGroups']['length'] = 0x0, this['_renderingGroupInfo'] = null; } , _0x4815d6['prototype']['freeRenderingGroups'] = function() { for (var _0x4b1f40 = _0x4815d6['MIN_RENDERINGGROUPS']; _0x4b1f40 < _0x4815d6['MAX_RENDERINGGROUPS']; _0x4b1f40++) { var _0x6eb7ab = this['_renderingGroups'][_0x4b1f40]; _0x6eb7ab && _0x6eb7ab['dispose'](); } } , _0x4815d6['prototype']['_prepareRenderingGroup'] = function(_0x2c3240) { void 0x0 === this['_renderingGroups'][_0x2c3240] && (this['_renderingGroups'][_0x2c3240] = new _0x5b6449['a'](_0x2c3240,this['_scene'],this['_customOpaqueSortCompareFn'][_0x2c3240],this['_customAlphaTestSortCompareFn'][_0x2c3240],this['_customTransparentSortCompareFn'][_0x2c3240])); } , _0x4815d6['prototype']['dispatchSprites'] = function(_0x5dbd68) { var _0x324b3f = _0x5dbd68['renderingGroupId'] || 0x0; this['_prepareRenderingGroup'](_0x324b3f), this['_renderingGroups'][_0x324b3f]['dispatchSprites'](_0x5dbd68); } , _0x4815d6['prototype']['dispatchParticles'] = function(_0x49b22a) { var _0x580c7c = _0x49b22a['renderingGroupId'] || 0x0; this['_prepareRenderingGroup'](_0x580c7c), this['_renderingGroups'][_0x580c7c]['dispatchParticles'](_0x49b22a); } , _0x4815d6['prototype']['dispatch'] = function(_0x9231bc, _0x397f91, _0x2d6ab0) { void 0x0 === _0x397f91 && (_0x397f91 = _0x9231bc['getMesh']()); var _0x471bfb = _0x397f91['renderingGroupId'] || 0x0; this['_prepareRenderingGroup'](_0x471bfb), this['_renderingGroups'][_0x471bfb]['dispatch'](_0x9231bc, _0x397f91, _0x2d6ab0); } , _0x4815d6['prototype']['setRenderingOrder'] = function(_0x428d22, _0x294c15, _0x1340c5, _0xdf7421) { if (void 0x0 === _0x294c15 && (_0x294c15 = null), void 0x0 === _0x1340c5 && (_0x1340c5 = null), void 0x0 === _0xdf7421 && (_0xdf7421 = null), this['_customOpaqueSortCompareFn'][_0x428d22] = _0x294c15, this['_customAlphaTestSortCompareFn'][_0x428d22] = _0x1340c5, this['_customTransparentSortCompareFn'][_0x428d22] = _0xdf7421, this['_renderingGroups'][_0x428d22]) { var _0x46a841 = this['_renderingGroups'][_0x428d22]; _0x46a841['opaqueSortCompareFn'] = this['_customOpaqueSortCompareFn'][_0x428d22], _0x46a841['alphaTestSortCompareFn'] = this['_customAlphaTestSortCompareFn'][_0x428d22], _0x46a841['transparentSortCompareFn'] = this['_customTransparentSortCompareFn'][_0x428d22]; } } , _0x4815d6['prototype']['setRenderingAutoClearDepthStencil'] = function(_0x427d8b, _0x19d73e, _0x25f1b6, _0x56fffe) { void 0x0 === _0x25f1b6 && (_0x25f1b6 = !0x0), void 0x0 === _0x56fffe && (_0x56fffe = !0x0), this['_autoClearDepthStencil'][_0x427d8b] = { 'autoClear': _0x19d73e, 'depth': _0x25f1b6, 'stencil': _0x56fffe }; } , _0x4815d6['prototype']['getAutoClearDepthStencilSetup'] = function(_0x10521f) { return this['_autoClearDepthStencil'][_0x10521f]; } , _0x4815d6['MAX_RENDERINGGROUPS'] = 0x4, _0x4815d6['MIN_RENDERINGGROUPS'] = 0x0, _0x4815d6['AUTOCLEAR'] = !0x0, _0x4815d6; }(); } , function(_0x534ec, _0x4f5978, _0x3dfd05) { 'use strict'; _0x3dfd05['d'](_0x4f5978, 'a', function() { return _0x1e96d9; }); var _0x1e96d9 = function() { return function() {} ; }(); } , function(_0x66dc5c, _0x2427b1, _0xe4893a) { 'use strict'; _0xe4893a['d'](_0x2427b1, 'a', function() { return _0x44d91f; }); var _0x68c600 = _0xe4893a(0x1) , _0x413562 = _0xe4893a(0x2) , _0x1bfc6a = _0xe4893a(0x0) , _0x44d91f = function() { function _0x55f36b() { this['_dirty'] = !0x0, this['_tempColor'] = new _0x1bfc6a['f'](0x0,0x0,0x0,0x0), this['_globalCurve'] = new _0x1bfc6a['f'](0x0,0x0,0x0,0x0), this['_highlightsCurve'] = new _0x1bfc6a['f'](0x0,0x0,0x0,0x0), this['_midtonesCurve'] = new _0x1bfc6a['f'](0x0,0x0,0x0,0x0), this['_shadowsCurve'] = new _0x1bfc6a['f'](0x0,0x0,0x0,0x0), this['_positiveCurve'] = new _0x1bfc6a['f'](0x0,0x0,0x0,0x0), this['_negativeCurve'] = new _0x1bfc6a['f'](0x0,0x0,0x0,0x0), this['_globalHue'] = 0x1e, this['_globalDensity'] = 0x0, this['_globalSaturation'] = 0x0, this['_globalExposure'] = 0x0, this['_highlightsHue'] = 0x1e, this['_highlightsDensity'] = 0x0, this['_highlightsSaturation'] = 0x0, this['_highlightsExposure'] = 0x0, this['_midtonesHue'] = 0x1e, this['_midtonesDensity'] = 0x0, this['_midtonesSaturation'] = 0x0, this['_midtonesExposure'] = 0x0, this['_shadowsHue'] = 0x1e, this['_shadowsDensity'] = 0x0, this['_shadowsSaturation'] = 0x0, this['_shadowsExposure'] = 0x0; } return Object['defineProperty'](_0x55f36b['prototype'], 'globalHue', { 'get': function() { return this['_globalHue']; }, 'set': function(_0x31e90e) { this['_globalHue'] = _0x31e90e, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'globalDensity', { 'get': function() { return this['_globalDensity']; }, 'set': function(_0x31bf39) { this['_globalDensity'] = _0x31bf39, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'globalSaturation', { 'get': function() { return this['_globalSaturation']; }, 'set': function(_0x1e7c32) { this['_globalSaturation'] = _0x1e7c32, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'globalExposure', { 'get': function() { return this['_globalExposure']; }, 'set': function(_0x5a820e) { this['_globalExposure'] = _0x5a820e, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'highlightsHue', { 'get': function() { return this['_highlightsHue']; }, 'set': function(_0x2f5607) { this['_highlightsHue'] = _0x2f5607, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'highlightsDensity', { 'get': function() { return this['_highlightsDensity']; }, 'set': function(_0x39a182) { this['_highlightsDensity'] = _0x39a182, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'highlightsSaturation', { 'get': function() { return this['_highlightsSaturation']; }, 'set': function(_0x295c65) { this['_highlightsSaturation'] = _0x295c65, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'highlightsExposure', { 'get': function() { return this['_highlightsExposure']; }, 'set': function(_0x4d0f41) { this['_highlightsExposure'] = _0x4d0f41, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'midtonesHue', { 'get': function() { return this['_midtonesHue']; }, 'set': function(_0x382a37) { this['_midtonesHue'] = _0x382a37, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'midtonesDensity', { 'get': function() { return this['_midtonesDensity']; }, 'set': function(_0x3a41ec) { this['_midtonesDensity'] = _0x3a41ec, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'midtonesSaturation', { 'get': function() { return this['_midtonesSaturation']; }, 'set': function(_0x186b5c) { this['_midtonesSaturation'] = _0x186b5c, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'midtonesExposure', { 'get': function() { return this['_midtonesExposure']; }, 'set': function(_0x3cbf60) { this['_midtonesExposure'] = _0x3cbf60, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'shadowsHue', { 'get': function() { return this['_shadowsHue']; }, 'set': function(_0x5f58a0) { this['_shadowsHue'] = _0x5f58a0, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'shadowsDensity', { 'get': function() { return this['_shadowsDensity']; }, 'set': function(_0x22275d) { this['_shadowsDensity'] = _0x22275d, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'shadowsSaturation', { 'get': function() { return this['_shadowsSaturation']; }, 'set': function(_0xd751) { this['_shadowsSaturation'] = _0xd751, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x55f36b['prototype'], 'shadowsExposure', { 'get': function() { return this['_shadowsExposure']; }, 'set': function(_0xabbb1a) { this['_shadowsExposure'] = _0xabbb1a, this['_dirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x55f36b['prototype']['getClassName'] = function() { return 'ColorCurves'; } , _0x55f36b['Bind'] = function(_0x1252e3, _0x2009bc, _0x4576e7, _0x21586b, _0x499525) { void 0x0 === _0x4576e7 && (_0x4576e7 = 'vCameraColorCurvePositive'), void 0x0 === _0x21586b && (_0x21586b = 'vCameraColorCurveNeutral'), void 0x0 === _0x499525 && (_0x499525 = 'vCameraColorCurveNegative'), _0x1252e3['_dirty'] && (_0x1252e3['_dirty'] = !0x1, _0x1252e3['getColorGradingDataToRef'](_0x1252e3['_globalHue'], _0x1252e3['_globalDensity'], _0x1252e3['_globalSaturation'], _0x1252e3['_globalExposure'], _0x1252e3['_globalCurve']), _0x1252e3['getColorGradingDataToRef'](_0x1252e3['_highlightsHue'], _0x1252e3['_highlightsDensity'], _0x1252e3['_highlightsSaturation'], _0x1252e3['_highlightsExposure'], _0x1252e3['_tempColor']), _0x1252e3['_tempColor']['multiplyToRef'](_0x1252e3['_globalCurve'], _0x1252e3['_highlightsCurve']), _0x1252e3['getColorGradingDataToRef'](_0x1252e3['_midtonesHue'], _0x1252e3['_midtonesDensity'], _0x1252e3['_midtonesSaturation'], _0x1252e3['_midtonesExposure'], _0x1252e3['_tempColor']), _0x1252e3['_tempColor']['multiplyToRef'](_0x1252e3['_globalCurve'], _0x1252e3['_midtonesCurve']), _0x1252e3['getColorGradingDataToRef'](_0x1252e3['_shadowsHue'], _0x1252e3['_shadowsDensity'], _0x1252e3['_shadowsSaturation'], _0x1252e3['_shadowsExposure'], _0x1252e3['_tempColor']), _0x1252e3['_tempColor']['multiplyToRef'](_0x1252e3['_globalCurve'], _0x1252e3['_shadowsCurve']), _0x1252e3['_highlightsCurve']['subtractToRef'](_0x1252e3['_midtonesCurve'], _0x1252e3['_positiveCurve']), _0x1252e3['_midtonesCurve']['subtractToRef'](_0x1252e3['_shadowsCurve'], _0x1252e3['_negativeCurve'])), _0x2009bc && (_0x2009bc['setFloat4'](_0x4576e7, _0x1252e3['_positiveCurve']['r'], _0x1252e3['_positiveCurve']['g'], _0x1252e3['_positiveCurve']['b'], _0x1252e3['_positiveCurve']['a']), _0x2009bc['setFloat4'](_0x21586b, _0x1252e3['_midtonesCurve']['r'], _0x1252e3['_midtonesCurve']['g'], _0x1252e3['_midtonesCurve']['b'], _0x1252e3['_midtonesCurve']['a']), _0x2009bc['setFloat4'](_0x499525, _0x1252e3['_negativeCurve']['r'], _0x1252e3['_negativeCurve']['g'], _0x1252e3['_negativeCurve']['b'], _0x1252e3['_negativeCurve']['a'])); } , _0x55f36b['PrepareUniforms'] = function(_0x6335c7) { _0x6335c7['push']('vCameraColorCurveNeutral', 'vCameraColorCurvePositive', 'vCameraColorCurveNegative'); } , _0x55f36b['prototype']['getColorGradingDataToRef'] = function(_0x6b4d8c, _0x233a83, _0x87cf43, _0x33ca66, _0x3ba8b5) { null != _0x6b4d8c && (_0x6b4d8c = _0x55f36b['clamp'](_0x6b4d8c, 0x0, 0x168), _0x233a83 = _0x55f36b['clamp'](_0x233a83, -0x64, 0x64), _0x87cf43 = _0x55f36b['clamp'](_0x87cf43, -0x64, 0x64), _0x33ca66 = _0x55f36b['clamp'](_0x33ca66, -0x64, 0x64), _0x233a83 = _0x55f36b['applyColorGradingSliderNonlinear'](_0x233a83), _0x233a83 *= 0.5, _0x33ca66 = _0x55f36b['applyColorGradingSliderNonlinear'](_0x33ca66), _0x233a83 < 0x0 && (_0x233a83 *= -0x1, _0x6b4d8c = (_0x6b4d8c + 0xb4) % 0x168), _0x55f36b['fromHSBToRef'](_0x6b4d8c, _0x233a83, 0x32 + 0.25 * _0x33ca66, _0x3ba8b5), _0x3ba8b5['scaleToRef'](0x2, _0x3ba8b5), _0x3ba8b5['a'] = 0x1 + 0.01 * _0x87cf43); } , _0x55f36b['applyColorGradingSliderNonlinear'] = function(_0x5a2e71) { _0x5a2e71 /= 0x64; var _0x5c4b72 = Math['abs'](_0x5a2e71); return _0x5c4b72 = Math['pow'](_0x5c4b72, 0x2), _0x5a2e71 < 0x0 && (_0x5c4b72 *= -0x1), _0x5c4b72 *= 0x64; } , _0x55f36b['fromHSBToRef'] = function(_0x113694, _0x396d4b, _0x2bf82b, _0x31d49c) { var _0x58cfee = _0x55f36b['clamp'](_0x113694, 0x0, 0x168) , _0x53c1cc = _0x55f36b['clamp'](_0x396d4b / 0x64, 0x0, 0x1) , _0x271dfe = _0x55f36b['clamp'](_0x2bf82b / 0x64, 0x0, 0x1); if (0x0 === _0x53c1cc) _0x31d49c['r'] = _0x271dfe, _0x31d49c['g'] = _0x271dfe, _0x31d49c['b'] = _0x271dfe; else { _0x58cfee /= 0x3c; var _0x5894b7 = Math['floor'](_0x58cfee) , _0xb6e5fa = _0x58cfee - _0x5894b7 , _0x7a8a7a = _0x271dfe * (0x1 - _0x53c1cc) , _0x11b5a5 = _0x271dfe * (0x1 - _0x53c1cc * _0xb6e5fa) , _0x5b0280 = _0x271dfe * (0x1 - _0x53c1cc * (0x1 - _0xb6e5fa)); switch (_0x5894b7) { case 0x0: _0x31d49c['r'] = _0x271dfe, _0x31d49c['g'] = _0x5b0280, _0x31d49c['b'] = _0x7a8a7a; break; case 0x1: _0x31d49c['r'] = _0x11b5a5, _0x31d49c['g'] = _0x271dfe, _0x31d49c['b'] = _0x7a8a7a; break; case 0x2: _0x31d49c['r'] = _0x7a8a7a, _0x31d49c['g'] = _0x271dfe, _0x31d49c['b'] = _0x5b0280; break; case 0x3: _0x31d49c['r'] = _0x7a8a7a, _0x31d49c['g'] = _0x11b5a5, _0x31d49c['b'] = _0x271dfe; break; case 0x4: _0x31d49c['r'] = _0x5b0280, _0x31d49c['g'] = _0x7a8a7a, _0x31d49c['b'] = _0x271dfe; break; default: _0x31d49c['r'] = _0x271dfe, _0x31d49c['g'] = _0x7a8a7a, _0x31d49c['b'] = _0x11b5a5; } } _0x31d49c['a'] = 0x1; } , _0x55f36b['clamp'] = function(_0x5c814b, _0x42267c, _0x21a886) { return Math['min'](Math['max'](_0x5c814b, _0x42267c), _0x21a886); } , _0x55f36b['prototype']['clone'] = function() { return _0x413562['a']['Clone'](function() { return new _0x55f36b(); }, this); } , _0x55f36b['prototype']['serialize'] = function() { return _0x413562['a']['Serialize'](this); } , _0x55f36b['Parse'] = function(_0x3429b1) { return _0x413562['a']['Parse'](function() { return new _0x55f36b(); }, _0x3429b1, null, null); } , _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_globalHue', void 0x0), _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_globalDensity', void 0x0), _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_globalSaturation', void 0x0), _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_globalExposure', void 0x0), _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_highlightsHue', void 0x0), _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_highlightsDensity', void 0x0), _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_highlightsSaturation', void 0x0), _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_highlightsExposure', void 0x0), _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_midtonesHue', void 0x0), _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_midtonesDensity', void 0x0), _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_midtonesSaturation', void 0x0), _0x68c600['c']([Object(_0x413562['c'])()], _0x55f36b['prototype'], '_midtonesExposure', void 0x0), _0x55f36b; }(); _0x413562['a']['_ColorCurvesParser'] = _0x44d91f['Parse']; } , function(_0x24935f, _0x36a1b6, _0x3065b2) { 'use strict'; var _0x44636c = function() { function _0x342bcf() { this['_isAlphaBlendDirty'] = !0x1, this['_isBlendFunctionParametersDirty'] = !0x1, this['_isBlendEquationParametersDirty'] = !0x1, this['_isBlendConstantsDirty'] = !0x1, this['_alphaBlend'] = !0x1, this['_blendFunctionParameters'] = new Array(0x4), this['_blendEquationParameters'] = new Array(0x2), this['_blendConstants'] = new Array(0x4), this['reset'](); } return Object['defineProperty'](_0x342bcf['prototype'], 'isDirty', { 'get': function() { return this['_isAlphaBlendDirty'] || this['_isBlendFunctionParametersDirty']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x342bcf['prototype'], 'alphaBlend', { 'get': function() { return this['_alphaBlend']; }, 'set': function(_0x418156) { this['_alphaBlend'] !== _0x418156 && (this['_alphaBlend'] = _0x418156, this['_isAlphaBlendDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x342bcf['prototype']['setAlphaBlendConstants'] = function(_0x391351, _0x2843ea, _0x247753, _0x4f49a5) { this['_blendConstants'][0x0] === _0x391351 && this['_blendConstants'][0x1] === _0x2843ea && this['_blendConstants'][0x2] === _0x247753 && this['_blendConstants'][0x3] === _0x4f49a5 || (this['_blendConstants'][0x0] = _0x391351, this['_blendConstants'][0x1] = _0x2843ea, this['_blendConstants'][0x2] = _0x247753, this['_blendConstants'][0x3] = _0x4f49a5, this['_isBlendConstantsDirty'] = !0x0); } , _0x342bcf['prototype']['setAlphaBlendFunctionParameters'] = function(_0x53ab47, _0x435368, _0x23e877, _0x25386b) { this['_blendFunctionParameters'][0x0] === _0x53ab47 && this['_blendFunctionParameters'][0x1] === _0x435368 && this['_blendFunctionParameters'][0x2] === _0x23e877 && this['_blendFunctionParameters'][0x3] === _0x25386b || (this['_blendFunctionParameters'][0x0] = _0x53ab47, this['_blendFunctionParameters'][0x1] = _0x435368, this['_blendFunctionParameters'][0x2] = _0x23e877, this['_blendFunctionParameters'][0x3] = _0x25386b, this['_isBlendFunctionParametersDirty'] = !0x0); } , _0x342bcf['prototype']['setAlphaEquationParameters'] = function(_0x3f4392, _0x44f5da) { this['_blendEquationParameters'][0x0] === _0x3f4392 && this['_blendEquationParameters'][0x1] === _0x44f5da || (this['_blendEquationParameters'][0x0] = _0x3f4392, this['_blendEquationParameters'][0x1] = _0x44f5da, this['_isBlendEquationParametersDirty'] = !0x0); } , _0x342bcf['prototype']['reset'] = function() { this['_alphaBlend'] = !0x1, this['_blendFunctionParameters'][0x0] = null, this['_blendFunctionParameters'][0x1] = null, this['_blendFunctionParameters'][0x2] = null, this['_blendFunctionParameters'][0x3] = null, this['_blendEquationParameters'][0x0] = null, this['_blendEquationParameters'][0x1] = null, this['_blendConstants'][0x0] = null, this['_blendConstants'][0x1] = null, this['_blendConstants'][0x2] = null, this['_blendConstants'][0x3] = null, this['_isAlphaBlendDirty'] = !0x0, this['_isBlendFunctionParametersDirty'] = !0x1, this['_isBlendEquationParametersDirty'] = !0x1, this['_isBlendConstantsDirty'] = !0x1; } , _0x342bcf['prototype']['apply'] = function(_0x485df5) { this['isDirty'] && (this['_isAlphaBlendDirty'] && (this['_alphaBlend'] ? _0x485df5['enable'](_0x485df5['BLEND']) : _0x485df5['disable'](_0x485df5['BLEND']), this['_isAlphaBlendDirty'] = !0x1), this['_isBlendFunctionParametersDirty'] && (_0x485df5['blendFuncSeparate'](this['_blendFunctionParameters'][0x0], this['_blendFunctionParameters'][0x1], this['_blendFunctionParameters'][0x2], this['_blendFunctionParameters'][0x3]), this['_isBlendFunctionParametersDirty'] = !0x1), this['_isBlendEquationParametersDirty'] && (_0x485df5['blendEquationSeparate'](this['_blendEquationParameters'][0x0], this['_blendEquationParameters'][0x1]), this['_isBlendEquationParametersDirty'] = !0x1), this['_isBlendConstantsDirty'] && (_0x485df5['blendColor'](this['_blendConstants'][0x0], this['_blendConstants'][0x1], this['_blendConstants'][0x2], this['_blendConstants'][0x3]), this['_isBlendConstantsDirty'] = !0x1)); } , _0x342bcf; }() , _0x54c48d = function() { function _0x1ecb10() { this['_isDepthTestDirty'] = !0x1, this['_isDepthMaskDirty'] = !0x1, this['_isDepthFuncDirty'] = !0x1, this['_isCullFaceDirty'] = !0x1, this['_isCullDirty'] = !0x1, this['_isZOffsetDirty'] = !0x1, this['_isFrontFaceDirty'] = !0x1, this['reset'](); } return Object['defineProperty'](_0x1ecb10['prototype'], 'isDirty', { 'get': function() { return this['_isDepthFuncDirty'] || this['_isDepthTestDirty'] || this['_isDepthMaskDirty'] || this['_isCullFaceDirty'] || this['_isCullDirty'] || this['_isZOffsetDirty'] || this['_isFrontFaceDirty']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ecb10['prototype'], 'zOffset', { 'get': function() { return this['_zOffset']; }, 'set': function(_0x2da1e5) { this['_zOffset'] !== _0x2da1e5 && (this['_zOffset'] = _0x2da1e5, this['_isZOffsetDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ecb10['prototype'], 'cullFace', { 'get': function() { return this['_cullFace']; }, 'set': function(_0x59ec97) { this['_cullFace'] !== _0x59ec97 && (this['_cullFace'] = _0x59ec97, this['_isCullFaceDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ecb10['prototype'], 'cull', { 'get': function() { return this['_cull']; }, 'set': function(_0x34762c) { this['_cull'] !== _0x34762c && (this['_cull'] = _0x34762c, this['_isCullDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ecb10['prototype'], 'depthFunc', { 'get': function() { return this['_depthFunc']; }, 'set': function(_0x2801bd) { this['_depthFunc'] !== _0x2801bd && (this['_depthFunc'] = _0x2801bd, this['_isDepthFuncDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ecb10['prototype'], 'depthMask', { 'get': function() { return this['_depthMask']; }, 'set': function(_0x12d046) { this['_depthMask'] !== _0x12d046 && (this['_depthMask'] = _0x12d046, this['_isDepthMaskDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ecb10['prototype'], 'depthTest', { 'get': function() { return this['_depthTest']; }, 'set': function(_0x218b0d) { this['_depthTest'] !== _0x218b0d && (this['_depthTest'] = _0x218b0d, this['_isDepthTestDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ecb10['prototype'], 'frontFace', { 'get': function() { return this['_frontFace']; }, 'set': function(_0x23e935) { this['_frontFace'] !== _0x23e935 && (this['_frontFace'] = _0x23e935, this['_isFrontFaceDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1ecb10['prototype']['reset'] = function() { this['_depthMask'] = !0x0, this['_depthTest'] = !0x0, this['_depthFunc'] = null, this['_cullFace'] = null, this['_cull'] = null, this['_zOffset'] = 0x0, this['_frontFace'] = null, this['_isDepthTestDirty'] = !0x0, this['_isDepthMaskDirty'] = !0x0, this['_isDepthFuncDirty'] = !0x1, this['_isCullFaceDirty'] = !0x1, this['_isCullDirty'] = !0x1, this['_isZOffsetDirty'] = !0x1, this['_isFrontFaceDirty'] = !0x1; } , _0x1ecb10['prototype']['apply'] = function(_0x2c1924) { this['isDirty'] && (this['_isCullDirty'] && (this['cull'] ? _0x2c1924['enable'](_0x2c1924['CULL_FACE']) : _0x2c1924['disable'](_0x2c1924['CULL_FACE']), this['_isCullDirty'] = !0x1), this['_isCullFaceDirty'] && (_0x2c1924['cullFace'](this['cullFace']), this['_isCullFaceDirty'] = !0x1), this['_isDepthMaskDirty'] && (_0x2c1924['depthMask'](this['depthMask']), this['_isDepthMaskDirty'] = !0x1), this['_isDepthTestDirty'] && (this['depthTest'] ? _0x2c1924['enable'](_0x2c1924['DEPTH_TEST']) : _0x2c1924['disable'](_0x2c1924['DEPTH_TEST']), this['_isDepthTestDirty'] = !0x1), this['_isDepthFuncDirty'] && (_0x2c1924['depthFunc'](this['depthFunc']), this['_isDepthFuncDirty'] = !0x1), this['_isZOffsetDirty'] && (this['zOffset'] ? (_0x2c1924['enable'](_0x2c1924['POLYGON_OFFSET_FILL']), _0x2c1924['polygonOffset'](this['zOffset'], 0x0)) : _0x2c1924['disable'](_0x2c1924['POLYGON_OFFSET_FILL']), this['_isZOffsetDirty'] = !0x1), this['_isFrontFaceDirty'] && (_0x2c1924['frontFace'](this['frontFace']), this['_isFrontFaceDirty'] = !0x1)); } , _0x1ecb10; }() , _0x4ff71c = _0x3065b2(0x3) , _0x580b16 = function() { function _0x46a1e3() { this['_isStencilTestDirty'] = !0x1, this['_isStencilMaskDirty'] = !0x1, this['_isStencilFuncDirty'] = !0x1, this['_isStencilOpDirty'] = !0x1, this['reset'](); } return Object['defineProperty'](_0x46a1e3['prototype'], 'isDirty', { 'get': function() { return this['_isStencilTestDirty'] || this['_isStencilMaskDirty'] || this['_isStencilFuncDirty'] || this['_isStencilOpDirty']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x46a1e3['prototype'], 'stencilFunc', { 'get': function() { return this['_stencilFunc']; }, 'set': function(_0x5bc24f) { this['_stencilFunc'] !== _0x5bc24f && (this['_stencilFunc'] = _0x5bc24f, this['_isStencilFuncDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x46a1e3['prototype'], 'stencilFuncRef', { 'get': function() { return this['_stencilFuncRef']; }, 'set': function(_0x1b48a3) { this['_stencilFuncRef'] !== _0x1b48a3 && (this['_stencilFuncRef'] = _0x1b48a3, this['_isStencilFuncDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x46a1e3['prototype'], 'stencilFuncMask', { 'get': function() { return this['_stencilFuncMask']; }, 'set': function(_0x4fd6af) { this['_stencilFuncMask'] !== _0x4fd6af && (this['_stencilFuncMask'] = _0x4fd6af, this['_isStencilFuncDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x46a1e3['prototype'], 'stencilOpStencilFail', { 'get': function() { return this['_stencilOpStencilFail']; }, 'set': function(_0x5d9fdc) { this['_stencilOpStencilFail'] !== _0x5d9fdc && (this['_stencilOpStencilFail'] = _0x5d9fdc, this['_isStencilOpDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x46a1e3['prototype'], 'stencilOpDepthFail', { 'get': function() { return this['_stencilOpDepthFail']; }, 'set': function(_0x90d643) { this['_stencilOpDepthFail'] !== _0x90d643 && (this['_stencilOpDepthFail'] = _0x90d643, this['_isStencilOpDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x46a1e3['prototype'], 'stencilOpStencilDepthPass', { 'get': function() { return this['_stencilOpStencilDepthPass']; }, 'set': function(_0x49573e) { this['_stencilOpStencilDepthPass'] !== _0x49573e && (this['_stencilOpStencilDepthPass'] = _0x49573e, this['_isStencilOpDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x46a1e3['prototype'], 'stencilMask', { 'get': function() { return this['_stencilMask']; }, 'set': function(_0x37ac3b) { this['_stencilMask'] !== _0x37ac3b && (this['_stencilMask'] = _0x37ac3b, this['_isStencilMaskDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x46a1e3['prototype'], 'stencilTest', { 'get': function() { return this['_stencilTest']; }, 'set': function(_0x415344) { this['_stencilTest'] !== _0x415344 && (this['_stencilTest'] = _0x415344, this['_isStencilTestDirty'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x46a1e3['prototype']['reset'] = function() { this['_stencilTest'] = !0x1, this['_stencilMask'] = 0xff, this['_stencilFunc'] = _0x46a1e3['ALWAYS'], this['_stencilFuncRef'] = 0x1, this['_stencilFuncMask'] = 0xff, this['_stencilOpStencilFail'] = _0x46a1e3['KEEP'], this['_stencilOpDepthFail'] = _0x46a1e3['KEEP'], this['_stencilOpStencilDepthPass'] = _0x46a1e3['REPLACE'], this['_isStencilTestDirty'] = !0x0, this['_isStencilMaskDirty'] = !0x0, this['_isStencilFuncDirty'] = !0x0, this['_isStencilOpDirty'] = !0x0; } , _0x46a1e3['prototype']['apply'] = function(_0x2fea2f) { this['isDirty'] && (this['_isStencilTestDirty'] && (this['stencilTest'] ? _0x2fea2f['enable'](_0x2fea2f['STENCIL_TEST']) : _0x2fea2f['disable'](_0x2fea2f['STENCIL_TEST']), this['_isStencilTestDirty'] = !0x1), this['_isStencilMaskDirty'] && (_0x2fea2f['stencilMask'](this['stencilMask']), this['_isStencilMaskDirty'] = !0x1), this['_isStencilFuncDirty'] && (_0x2fea2f['stencilFunc'](this['stencilFunc'], this['stencilFuncRef'], this['stencilFuncMask']), this['_isStencilFuncDirty'] = !0x1), this['_isStencilOpDirty'] && (_0x2fea2f['stencilOp'](this['stencilOpStencilFail'], this['stencilOpDepthFail'], this['stencilOpStencilDepthPass']), this['_isStencilOpDirty'] = !0x1)); } , _0x46a1e3['ALWAYS'] = _0x4ff71c['a']['ALWAYS'], _0x46a1e3['KEEP'] = _0x4ff71c['a']['KEEP'], _0x46a1e3['REPLACE'] = _0x4ff71c['a']['REPLACE'], _0x46a1e3; }(); _0x3065b2['d'](_0x36a1b6, 'a', function() { return _0x44636c; }), _0x3065b2['d'](_0x36a1b6, 'b', function() { return _0x54c48d; }), _0x3065b2['d'](_0x36a1b6, 'c', function() { return _0x580b16; }); } , function(_0x38bebd, _0x5afcd9, _0x55eabc) { 'use strict'; var _0x27a777 = 'clipPlaneFragmentDeclaration' , _0x55862f = '#ifdef\x20CLIPPLANE\x0avarying\x20float\x20fClipDistance;\x0a#endif\x0a#ifdef\x20CLIPPLANE2\x0avarying\x20float\x20fClipDistance2;\x0a#endif\x0a#ifdef\x20CLIPPLANE3\x0avarying\x20float\x20fClipDistance3;\x0a#endif\x0a#ifdef\x20CLIPPLANE4\x0avarying\x20float\x20fClipDistance4;\x0a#endif'; _0x55eabc(0x5)['a']['IncludesShadersStore'][_0x27a777] = _0x55862f; } , function(_0x1e1fbb, _0x416b7b, _0x4b6558) { 'use strict'; var _0x5a5109 = 'clipPlaneVertexDeclaration' , _0x560eb1 = '#ifdef\x20CLIPPLANE\x0auniform\x20vec4\x20vClipPlane;\x0avarying\x20float\x20fClipDistance;\x0a#endif\x0a#ifdef\x20CLIPPLANE2\x0auniform\x20vec4\x20vClipPlane2;\x0avarying\x20float\x20fClipDistance2;\x0a#endif\x0a#ifdef\x20CLIPPLANE3\x0auniform\x20vec4\x20vClipPlane3;\x0avarying\x20float\x20fClipDistance3;\x0a#endif\x0a#ifdef\x20CLIPPLANE4\x0auniform\x20vec4\x20vClipPlane4;\x0avarying\x20float\x20fClipDistance4;\x0a#endif'; _0x4b6558(0x5)['a']['IncludesShadersStore'][_0x5a5109] = _0x560eb1; } , function(_0xd28820, _0x314d07, _0x59bd00) { 'use strict'; _0x59bd00['r'](_0x314d07); var _0x20925f = _0x59bd00(0x1e) , _0x2dbec2 = _0x59bd00(0x8) , _0x47d24f = _0x59bd00(0x0) , _0x376b99 = _0x59bd00(0x16) , _0x56e8ef = function() { function _0x129cc2(_0xf5e21f, _0x4d1577) { this['triggerOptions'] = _0xf5e21f, this['onBeforeExecuteObservable'] = new _0x2dbec2['c'](), _0xf5e21f['parameter'] ? (this['trigger'] = _0xf5e21f['trigger'], this['_triggerParameter'] = _0xf5e21f['parameter']) : _0xf5e21f['trigger'] ? this['trigger'] = _0xf5e21f['trigger'] : this['trigger'] = _0xf5e21f, this['_nextActiveAction'] = this, this['_condition'] = _0x4d1577; } return _0x129cc2['prototype']['_prepare'] = function() {} , _0x129cc2['prototype']['getTriggerParameter'] = function() { return this['_triggerParameter']; } , _0x129cc2['prototype']['_executeCurrent'] = function(_0x256d25) { if (this['_nextActiveAction']['_condition']) { var _0x2d1d51 = this['_nextActiveAction']['_condition'] , _0xa7bb0f = this['_actionManager']['getScene']()['getRenderId'](); if (_0x2d1d51['_evaluationId'] === _0xa7bb0f) { if (!_0x2d1d51['_currentResult']) return; } else { if (_0x2d1d51['_evaluationId'] = _0xa7bb0f, !_0x2d1d51['isValid']()) return void (_0x2d1d51['_currentResult'] = !0x1); _0x2d1d51['_currentResult'] = !0x0; } } this['onBeforeExecuteObservable']['notifyObservers'](this), this['_nextActiveAction']['execute'](_0x256d25), this['skipToNextActiveAction'](); } , _0x129cc2['prototype']['execute'] = function(_0x35a328) {} , _0x129cc2['prototype']['skipToNextActiveAction'] = function() { this['_nextActiveAction']['_child'] ? (this['_nextActiveAction']['_child']['_actionManager'] || (this['_nextActiveAction']['_child']['_actionManager'] = this['_actionManager']), this['_nextActiveAction'] = this['_nextActiveAction']['_child']) : this['_nextActiveAction'] = this; } , _0x129cc2['prototype']['then'] = function(_0x5d7d0a) { return this['_child'] = _0x5d7d0a, _0x5d7d0a['_actionManager'] = this['_actionManager'], _0x5d7d0a['_prepare'](), _0x5d7d0a; } , _0x129cc2['prototype']['_getProperty'] = function(_0x1293c6) { return this['_actionManager']['_getProperty'](_0x1293c6); } , _0x129cc2['prototype']['_getEffectiveTarget'] = function(_0x2aafb2, _0x275829) { return this['_actionManager']['_getEffectiveTarget'](_0x2aafb2, _0x275829); } , _0x129cc2['prototype']['serialize'] = function(_0x1bf486) {} , _0x129cc2['prototype']['_serialize'] = function(_0x474468, _0x4f6fe1) { var _0x4ef54f = { 'type': 0x1, 'children': [], 'name': _0x474468['name'], 'properties': _0x474468['properties'] || [] }; if (this['_child'] && this['_child']['serialize'](_0x4ef54f), this['_condition']) { var _0x1eedd0 = this['_condition']['serialize'](); return _0x1eedd0['children']['push'](_0x4ef54f), _0x4f6fe1 && _0x4f6fe1['children']['push'](_0x1eedd0), _0x1eedd0; } return _0x4f6fe1 && _0x4f6fe1['children']['push'](_0x4ef54f), _0x4ef54f; } , _0x129cc2['_SerializeValueAsString'] = function(_0x2046f8) { return 'number' == typeof _0x2046f8 ? _0x2046f8['toString']() : 'boolean' == typeof _0x2046f8 ? _0x2046f8 ? 'true' : 'false' : _0x2046f8 instanceof _0x47d24f['w'] ? _0x2046f8['x'] + ',\x20' + _0x2046f8['y'] : _0x2046f8 instanceof _0x47d24f['x'] ? _0x2046f8['x'] + ',\x20' + _0x2046f8['y'] + ',\x20' + _0x2046f8['z'] : _0x2046f8 instanceof _0x47d24f['e'] ? _0x2046f8['r'] + ',\x20' + _0x2046f8['g'] + ',\x20' + _0x2046f8['b'] : _0x2046f8 instanceof _0x47d24f['f'] ? _0x2046f8['r'] + ',\x20' + _0x2046f8['g'] + ',\x20' + _0x2046f8['b'] + ',\x20' + _0x2046f8['a'] : _0x2046f8; } , _0x129cc2['_GetTargetProperty'] = function(_0x17b540) { return { 'name': 'target', 'targetType': _0x17b540['_isMesh'] ? 'MeshProperties' : _0x17b540['_isLight'] ? 'LightProperties' : _0x17b540['_isCamera'] ? 'CameraProperties' : 'SceneProperties', 'value': _0x17b540['_isScene'] ? 'Scene' : _0x17b540['name'] }; } , _0x129cc2; }(); _0x376b99['a']['RegisteredTypes']['BABYLON.Action'] = _0x56e8ef; var _0x818725 = _0x59bd00(0x24) , _0x420e5b = _0x59bd00(0x1) , _0x3a96e1 = function() { function _0x570136(_0x30ea8e) { this['_actionManager'] = _0x30ea8e; } return _0x570136['prototype']['isValid'] = function() { return !0x0; } , _0x570136['prototype']['_getProperty'] = function(_0x29d80e) { return this['_actionManager']['_getProperty'](_0x29d80e); } , _0x570136['prototype']['_getEffectiveTarget'] = function(_0x465f91, _0x5a2ae7) { return this['_actionManager']['_getEffectiveTarget'](_0x465f91, _0x5a2ae7); } , _0x570136['prototype']['serialize'] = function() {} , _0x570136['prototype']['_serialize'] = function(_0xcd97b9) { return { 'type': 0x2, 'children': [], 'name': _0xcd97b9['name'], 'properties': _0xcd97b9['properties'] }; } , _0x570136; }() , _0x1229bf = function(_0x1e959d) { function _0x59d7f8(_0x4b0acc, _0x32b612, _0x3a49ff, _0x5e2025, _0x1cdb5f) { void 0x0 === _0x1cdb5f && (_0x1cdb5f = _0x59d7f8['IsEqual']); var _0x2d238e = _0x1e959d['call'](this, _0x4b0acc) || this; return _0x2d238e['propertyPath'] = _0x3a49ff, _0x2d238e['value'] = _0x5e2025, _0x2d238e['operator'] = _0x1cdb5f, _0x2d238e['_target'] = _0x32b612, _0x2d238e['_effectiveTarget'] = _0x2d238e['_getEffectiveTarget'](_0x32b612, _0x2d238e['propertyPath']), _0x2d238e['_property'] = _0x2d238e['_getProperty'](_0x2d238e['propertyPath']), _0x2d238e; } return _0x420e5b['d'](_0x59d7f8, _0x1e959d), Object['defineProperty'](_0x59d7f8, 'IsEqual', { 'get': function() { return _0x59d7f8['_IsEqual']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x59d7f8, 'IsDifferent', { 'get': function() { return _0x59d7f8['_IsDifferent']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x59d7f8, 'IsGreater', { 'get': function() { return _0x59d7f8['_IsGreater']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x59d7f8, 'IsLesser', { 'get': function() { return _0x59d7f8['_IsLesser']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x59d7f8['prototype']['isValid'] = function() { switch (this['operator']) { case _0x59d7f8['IsGreater']: return this['_effectiveTarget'][this['_property']] > this['value']; case _0x59d7f8['IsLesser']: return this['_effectiveTarget'][this['_property']] < this['value']; case _0x59d7f8['IsEqual']: case _0x59d7f8['IsDifferent']: var _0x812cd5; return _0x812cd5 = this['value']['equals'] ? this['value']['equals'](this['_effectiveTarget'][this['_property']]) : this['value'] === this['_effectiveTarget'][this['_property']], this['operator'] === _0x59d7f8['IsEqual'] ? _0x812cd5 : !_0x812cd5; } return !0x1; } , _0x59d7f8['prototype']['serialize'] = function() { return this['_serialize']({ 'name': 'ValueCondition', 'properties': [_0x56e8ef['_GetTargetProperty'](this['_target']), { 'name': 'propertyPath', 'value': this['propertyPath'] }, { 'name': 'value', 'value': _0x56e8ef['_SerializeValueAsString'](this['value']) }, { 'name': 'operator', 'value': _0x59d7f8['GetOperatorName'](this['operator']) }] }); } , _0x59d7f8['GetOperatorName'] = function(_0x29f799) { switch (_0x29f799) { case _0x59d7f8['_IsEqual']: return 'IsEqual'; case _0x59d7f8['_IsDifferent']: return 'IsDifferent'; case _0x59d7f8['_IsGreater']: return 'IsGreater'; case _0x59d7f8['_IsLesser']: return 'IsLesser'; default: return ''; } } , _0x59d7f8['_IsEqual'] = 0x0, _0x59d7f8['_IsDifferent'] = 0x1, _0x59d7f8['_IsGreater'] = 0x2, _0x59d7f8['_IsLesser'] = 0x3, _0x59d7f8; }(_0x3a96e1) , _0x3699bd = function(_0x5461ec) { function _0x40cb7d(_0xcc7805, _0x58bf17) { var _0x4b04a3 = _0x5461ec['call'](this, _0xcc7805) || this; return _0x4b04a3['predicate'] = _0x58bf17, _0x4b04a3; } return _0x420e5b['d'](_0x40cb7d, _0x5461ec), _0x40cb7d['prototype']['isValid'] = function() { return this['predicate'](); } , _0x40cb7d; }(_0x3a96e1) , _0x9b085a = function(_0x11f44c) { function _0x12a54f(_0x53a27e, _0x429f48, _0x1a4345) { var _0x41cab8 = _0x11f44c['call'](this, _0x53a27e) || this; return _0x41cab8['value'] = _0x1a4345, _0x41cab8['_target'] = _0x429f48, _0x41cab8; } return _0x420e5b['d'](_0x12a54f, _0x11f44c), _0x12a54f['prototype']['isValid'] = function() { return this['_target']['state'] === this['value']; } , _0x12a54f['prototype']['serialize'] = function() { return this['_serialize']({ 'name': 'StateCondition', 'properties': [_0x56e8ef['_GetTargetProperty'](this['_target']), { 'name': 'value', 'value': this['value'] }] }); } , _0x12a54f; }(_0x3a96e1); _0x376b99['a']['RegisteredTypes']['BABYLON.ValueCondition'] = _0x1229bf, _0x376b99['a']['RegisteredTypes']['BABYLON.PredicateCondition'] = _0x3699bd, _0x376b99['a']['RegisteredTypes']['BABYLON.StateCondition'] = _0x9b085a; var _0x3f98cb = _0x59bd00(0x6) , _0x24e342 = _0x59bd00(0x3) , _0x390b30 = function(_0x277028) { function _0x365436(_0x119d42, _0x2ca987, _0x28c5fe, _0x34acf5) { var _0x5c8b50 = _0x277028['call'](this, _0x119d42, _0x34acf5) || this; return _0x5c8b50['propertyPath'] = _0x28c5fe, _0x5c8b50['_target'] = _0x5c8b50['_effectiveTarget'] = _0x2ca987, _0x5c8b50; } return _0x420e5b['d'](_0x365436, _0x277028), _0x365436['prototype']['_prepare'] = function() { this['_effectiveTarget'] = this['_getEffectiveTarget'](this['_effectiveTarget'], this['propertyPath']), this['_property'] = this['_getProperty'](this['propertyPath']); } , _0x365436['prototype']['execute'] = function() { this['_effectiveTarget'][this['_property']] = !this['_effectiveTarget'][this['_property']]; } , _0x365436['prototype']['serialize'] = function(_0x5ac1c8) { return _0x277028['prototype']['_serialize']['call'](this, { 'name': 'SwitchBooleanAction', 'properties': [_0x56e8ef['_GetTargetProperty'](this['_target']), { 'name': 'propertyPath', 'value': this['propertyPath'] }] }, _0x5ac1c8); } , _0x365436; }(_0x56e8ef) , _0x47a1ef = function(_0x4d012c) { function _0x3c20d9(_0x5c31fa, _0xf67f9f, _0x35a4bd, _0x421fc7) { var _0x1eb59f = _0x4d012c['call'](this, _0x5c31fa, _0x421fc7) || this; return _0x1eb59f['value'] = _0x35a4bd, _0x1eb59f['_target'] = _0xf67f9f, _0x1eb59f; } return _0x420e5b['d'](_0x3c20d9, _0x4d012c), _0x3c20d9['prototype']['execute'] = function() { this['_target']['state'] = this['value']; } , _0x3c20d9['prototype']['serialize'] = function(_0x129421) { return _0x4d012c['prototype']['_serialize']['call'](this, { 'name': 'SetStateAction', 'properties': [_0x56e8ef['_GetTargetProperty'](this['_target']), { 'name': 'value', 'value': this['value'] }] }, _0x129421); } , _0x3c20d9; }(_0x56e8ef) , _0x5d89e5 = function(_0x2d1ca7) { function _0x4072a1(_0x57a0cf, _0x5814d7, _0x4d9258, _0x38cef8, _0x8b863c) { var _0x370b35 = _0x2d1ca7['call'](this, _0x57a0cf, _0x8b863c) || this; return _0x370b35['propertyPath'] = _0x4d9258, _0x370b35['value'] = _0x38cef8, _0x370b35['_target'] = _0x370b35['_effectiveTarget'] = _0x5814d7, _0x370b35; } return _0x420e5b['d'](_0x4072a1, _0x2d1ca7), _0x4072a1['prototype']['_prepare'] = function() { this['_effectiveTarget'] = this['_getEffectiveTarget'](this['_effectiveTarget'], this['propertyPath']), this['_property'] = this['_getProperty'](this['propertyPath']); } , _0x4072a1['prototype']['execute'] = function() { this['_effectiveTarget'][this['_property']] = this['value'], this['_target']['markAsDirty'] && this['_target']['markAsDirty'](this['_property']); } , _0x4072a1['prototype']['serialize'] = function(_0x527289) { return _0x2d1ca7['prototype']['_serialize']['call'](this, { 'name': 'SetValueAction', 'properties': [_0x56e8ef['_GetTargetProperty'](this['_target']), { 'name': 'propertyPath', 'value': this['propertyPath'] }, { 'name': 'value', 'value': _0x56e8ef['_SerializeValueAsString'](this['value']) }] }, _0x527289); } , _0x4072a1; }(_0x56e8ef) , _0x96d387 = function(_0x3a2d2a) { function _0x431b01(_0x35dd95, _0x56da56, _0x1f7340, _0x24bea9, _0x29753e) { var _0x1121c5 = _0x3a2d2a['call'](this, _0x35dd95, _0x29753e) || this; return _0x1121c5['propertyPath'] = _0x1f7340, _0x1121c5['value'] = _0x24bea9, _0x1121c5['_target'] = _0x1121c5['_effectiveTarget'] = _0x56da56, _0x1121c5; } return _0x420e5b['d'](_0x431b01, _0x3a2d2a), _0x431b01['prototype']['_prepare'] = function() { this['_effectiveTarget'] = this['_getEffectiveTarget'](this['_effectiveTarget'], this['propertyPath']), this['_property'] = this['_getProperty'](this['propertyPath']), 'number' != typeof this['_effectiveTarget'][this['_property']] && _0x3f98cb['a']['Warn']('Warning:\x20IncrementValueAction\x20can\x20only\x20be\x20used\x20with\x20number\x20values'); } , _0x431b01['prototype']['execute'] = function() { this['_effectiveTarget'][this['_property']] += this['value'], this['_target']['markAsDirty'] && this['_target']['markAsDirty'](this['_property']); } , _0x431b01['prototype']['serialize'] = function(_0x49101a) { return _0x3a2d2a['prototype']['_serialize']['call'](this, { 'name': 'IncrementValueAction', 'properties': [_0x56e8ef['_GetTargetProperty'](this['_target']), { 'name': 'propertyPath', 'value': this['propertyPath'] }, { 'name': 'value', 'value': _0x56e8ef['_SerializeValueAsString'](this['value']) }] }, _0x49101a); } , _0x431b01; }(_0x56e8ef) , _0x303215 = function(_0x287511) { function _0x2dce20(_0x340299, _0x20c09a, _0x460f33, _0x1c67da, _0x264675, _0x2125ec) { var _0x5308f8 = _0x287511['call'](this, _0x340299, _0x2125ec) || this; return _0x5308f8['from'] = _0x460f33, _0x5308f8['to'] = _0x1c67da, _0x5308f8['loop'] = _0x264675, _0x5308f8['_target'] = _0x20c09a, _0x5308f8; } return _0x420e5b['d'](_0x2dce20, _0x287511), _0x2dce20['prototype']['_prepare'] = function() {} , _0x2dce20['prototype']['execute'] = function() { this['_actionManager']['getScene']()['beginAnimation'](this['_target'], this['from'], this['to'], this['loop']); } , _0x2dce20['prototype']['serialize'] = function(_0x5874b1) { return _0x287511['prototype']['_serialize']['call'](this, { 'name': 'PlayAnimationAction', 'properties': [_0x56e8ef['_GetTargetProperty'](this['_target']), { 'name': 'from', 'value': String(this['from']) }, { 'name': 'to', 'value': String(this['to']) }, { 'name': 'loop', 'value': _0x56e8ef['_SerializeValueAsString'](this['loop']) || !0x1 }] }, _0x5874b1); } , _0x2dce20; }(_0x56e8ef) , _0x2c3c0d = function(_0x2c1a74) { function _0x2aa970(_0x4621f3, _0x5f32e9, _0x430b59) { var _0x3af63d = _0x2c1a74['call'](this, _0x4621f3, _0x430b59) || this; return _0x3af63d['_target'] = _0x5f32e9, _0x3af63d; } return _0x420e5b['d'](_0x2aa970, _0x2c1a74), _0x2aa970['prototype']['_prepare'] = function() {} , _0x2aa970['prototype']['execute'] = function() { this['_actionManager']['getScene']()['stopAnimation'](this['_target']); } , _0x2aa970['prototype']['serialize'] = function(_0x483ecb) { return _0x2c1a74['prototype']['_serialize']['call'](this, { 'name': 'StopAnimationAction', 'properties': [_0x56e8ef['_GetTargetProperty'](this['_target'])] }, _0x483ecb); } , _0x2aa970; }(_0x56e8ef) , _0x226136 = function(_0x1054cc) { function _0x225f8a(_0x13516f, _0x358a1c) { return void 0x0 === _0x13516f && (_0x13516f = _0x24e342['a']['ACTION_NothingTrigger']), _0x1054cc['call'](this, _0x13516f, _0x358a1c) || this; } return _0x420e5b['d'](_0x225f8a, _0x1054cc), _0x225f8a['prototype']['execute'] = function() {} , _0x225f8a['prototype']['serialize'] = function(_0xdbeaf) { return _0x1054cc['prototype']['_serialize']['call'](this, { 'name': 'DoNothingAction', 'properties': [] }, _0xdbeaf); } , _0x225f8a; }(_0x56e8ef) , _0x445518 = function(_0x3ecff9) { function _0x23f6f1(_0x10801b, _0x5975e2, _0x12b521) { var _0x14f784 = _0x3ecff9['call'](this, _0x10801b, _0x12b521) || this; return _0x14f784['children'] = _0x5975e2, _0x14f784; } return _0x420e5b['d'](_0x23f6f1, _0x3ecff9), _0x23f6f1['prototype']['_prepare'] = function() { for (var _0x7fb55c = 0x0; _0x7fb55c < this['children']['length']; _0x7fb55c++) this['children'][_0x7fb55c]['_actionManager'] = this['_actionManager'], this['children'][_0x7fb55c]['_prepare'](); } , _0x23f6f1['prototype']['execute'] = function(_0x1040ae) { for (var _0x1b3f8d = 0x0; _0x1b3f8d < this['children']['length']; _0x1b3f8d++) this['children'][_0x1b3f8d]['execute'](_0x1040ae); } , _0x23f6f1['prototype']['serialize'] = function(_0x251fb0) { for (var _0x25a21a = _0x3ecff9['prototype']['_serialize']['call'](this, { 'name': 'CombineAction', 'properties': [], 'combine': [] }, _0x251fb0), _0x2f0b32 = 0x0; _0x2f0b32 < this['children']['length']; _0x2f0b32++) _0x25a21a['combine']['push'](this['children'][_0x2f0b32]['serialize'](null)); return _0x25a21a; } , _0x23f6f1; }(_0x56e8ef) , _0x4b264e = function(_0x1865a4) { function _0x550a36(_0x42f0c5, _0x5df476, _0x5d0e4a) { var _0x192c32 = _0x1865a4['call'](this, _0x42f0c5, _0x5d0e4a) || this; return _0x192c32['func'] = _0x5df476, _0x192c32; } return _0x420e5b['d'](_0x550a36, _0x1865a4), _0x550a36['prototype']['execute'] = function(_0xb27c38) { this['func'](_0xb27c38); } , _0x550a36; }(_0x56e8ef) , _0xd55c25 = function(_0x31fb74) { function _0x419d1b(_0x2ba19e, _0x26d6e1, _0x55dadd, _0x28b8cb) { var _0x24b114 = _0x31fb74['call'](this, _0x2ba19e, _0x28b8cb) || this; return _0x24b114['_target'] = _0x26d6e1, _0x24b114['_parent'] = _0x55dadd, _0x24b114; } return _0x420e5b['d'](_0x419d1b, _0x31fb74), _0x419d1b['prototype']['_prepare'] = function() {} , _0x419d1b['prototype']['execute'] = function() { if (this['_target']['parent'] !== this['_parent']) { var _0x4bf46e = this['_parent']['getWorldMatrix']()['clone'](); _0x4bf46e['invert'](), this['_target']['position'] = _0x47d24f['x']['TransformCoordinates'](this['_target']['position'], _0x4bf46e), this['_target']['parent'] = this['_parent']; } } , _0x419d1b['prototype']['serialize'] = function(_0xd9f609) { return _0x31fb74['prototype']['_serialize']['call'](this, { 'name': 'SetParentAction', 'properties': [_0x56e8ef['_GetTargetProperty'](this['_target']), _0x56e8ef['_GetTargetProperty'](this['_parent'])] }, _0xd9f609); } , _0x419d1b; }(_0x56e8ef); _0x376b99['a']['RegisteredTypes']['BABYLON.SetParentAction'] = _0xd55c25, _0x376b99['a']['RegisteredTypes']['BABYLON.ExecuteCodeAction'] = _0x4b264e, _0x376b99['a']['RegisteredTypes']['BABYLON.DoNothingAction'] = _0x226136, _0x376b99['a']['RegisteredTypes']['BABYLON.StopAnimationAction'] = _0x2c3c0d, _0x376b99['a']['RegisteredTypes']['BABYLON.PlayAnimationAction'] = _0x303215, _0x376b99['a']['RegisteredTypes']['BABYLON.IncrementValueAction'] = _0x96d387, _0x376b99['a']['RegisteredTypes']['BABYLON.SetValueAction'] = _0x5d89e5, _0x376b99['a']['RegisteredTypes']['BABYLON.SetStateAction'] = _0x47a1ef, _0x376b99['a']['RegisteredTypes']['BABYLON.SetParentAction'] = _0xd55c25; var _0x48707b = _0x59bd00(0x17) , _0x5e367c = _0x59bd00(0x20) , _0x5bf76d = function(_0x5ba7f3) { function _0x2762fe(_0x1ff1fb) { var _0x5a4218 = _0x5ba7f3['call'](this) || this; return _0x5a4218['_scene'] = _0x1ff1fb || _0x48707b['a']['LastCreatedScene'], _0x1ff1fb['actionManagers']['push'](_0x5a4218), _0x5a4218; } return _0x420e5b['d'](_0x2762fe, _0x5ba7f3), _0x2762fe['prototype']['dispose'] = function() { for (var _0x2db75f = this['_scene']['actionManagers']['indexOf'](this), _0x3ea896 = 0x0; _0x3ea896 < this['actions']['length']; _0x3ea896++) { var _0x45ba85 = this['actions'][_0x3ea896]; _0x2762fe['Triggers'][_0x45ba85['trigger']]--, 0x0 === _0x2762fe['Triggers'][_0x45ba85['trigger']] && delete _0x2762fe['Triggers'][_0x45ba85['trigger']]; } _0x2db75f > -0x1 && this['_scene']['actionManagers']['splice'](_0x2db75f, 0x1); } , _0x2762fe['prototype']['getScene'] = function() { return this['_scene']; } , _0x2762fe['prototype']['hasSpecificTriggers'] = function(_0x274ec1) { for (var _0x306444 = 0x0; _0x306444 < this['actions']['length']; _0x306444++) { var _0x151973 = this['actions'][_0x306444]; if (_0x274ec1['indexOf'](_0x151973['trigger']) > -0x1) return !0x0; } return !0x1; } , _0x2762fe['prototype']['hasSpecificTriggers2'] = function(_0x18d707, _0x116fa6) { for (var _0x231739 = 0x0; _0x231739 < this['actions']['length']; _0x231739++) { var _0xa94849 = this['actions'][_0x231739]; if (_0x18d707 == _0xa94849['trigger'] || _0x116fa6 == _0xa94849['trigger']) return !0x0; } return !0x1; } , _0x2762fe['prototype']['hasSpecificTrigger'] = function(_0x3027bc, _0x2794ab) { for (var _0x37420a = 0x0; _0x37420a < this['actions']['length']; _0x37420a++) { var _0x1562da = this['actions'][_0x37420a]; if (_0x1562da['trigger'] === _0x3027bc) { if (!_0x2794ab) return !0x0; if (_0x2794ab(_0x1562da['getTriggerParameter']())) return !0x0; } } return !0x1; } , Object['defineProperty'](_0x2762fe['prototype'], 'hasPointerTriggers', { 'get': function() { for (var _0x19f745 = 0x0; _0x19f745 < this['actions']['length']; _0x19f745++) { var _0x125897 = this['actions'][_0x19f745]; if (_0x125897['trigger'] >= _0x2762fe['OnPickTrigger'] && _0x125897['trigger'] <= _0x2762fe['OnPointerOutTrigger']) return !0x0; } return !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2762fe['prototype'], 'hasPickTriggers', { 'get': function() { for (var _0x410885 = 0x0; _0x410885 < this['actions']['length']; _0x410885++) { var _0x394eb8 = this['actions'][_0x410885]; if (_0x394eb8['trigger'] >= _0x2762fe['OnPickTrigger'] && _0x394eb8['trigger'] <= _0x2762fe['OnPickUpTrigger']) return !0x0; } return !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2762fe['prototype']['registerAction'] = function(_0xc13a59) { return _0xc13a59['trigger'] === _0x2762fe['OnEveryFrameTrigger'] && this['getScene']()['actionManager'] !== this ? (_0x3f98cb['a']['Warn']('OnEveryFrameTrigger\x20can\x20only\x20be\x20used\x20with\x20scene.actionManager'), null) : (this['actions']['push'](_0xc13a59), _0x2762fe['Triggers'][_0xc13a59['trigger']] ? _0x2762fe['Triggers'][_0xc13a59['trigger']]++ : _0x2762fe['Triggers'][_0xc13a59['trigger']] = 0x1, _0xc13a59['_actionManager'] = this, _0xc13a59['_prepare'](), _0xc13a59); } , _0x2762fe['prototype']['unregisterAction'] = function(_0x65fde2) { var _0x583c07 = this['actions']['indexOf'](_0x65fde2); return -0x1 !== _0x583c07 && (this['actions']['splice'](_0x583c07, 0x1), _0x2762fe['Triggers'][_0x65fde2['trigger']] -= 0x1, 0x0 === _0x2762fe['Triggers'][_0x65fde2['trigger']] && delete _0x2762fe['Triggers'][_0x65fde2['trigger']], delete _0x65fde2['_actionManager'], !0x0); } , _0x2762fe['prototype']['processTrigger'] = function(_0x462273, _0x126ee9) { for (var _0x5c1e6b = 0x0; _0x5c1e6b < this['actions']['length']; _0x5c1e6b++) { var _0x5bbae6 = this['actions'][_0x5c1e6b]; if (_0x5bbae6['trigger'] === _0x462273) { if (_0x126ee9 && (_0x462273 === _0x2762fe['OnKeyUpTrigger'] || _0x462273 === _0x2762fe['OnKeyDownTrigger'])) { var _0x43dcf6 = _0x5bbae6['getTriggerParameter'](); if (_0x43dcf6 && _0x43dcf6 !== _0x126ee9['sourceEvent']['keyCode']) { if (!_0x43dcf6['toLowerCase']) continue; var _0x1a9982 = _0x43dcf6['toLowerCase'](); if (_0x1a9982 !== _0x126ee9['sourceEvent']['key']) { var _0x33b39f = _0x126ee9['sourceEvent']['charCode'] ? _0x126ee9['sourceEvent']['charCode'] : _0x126ee9['sourceEvent']['keyCode']; if (String['fromCharCode'](_0x33b39f)['toLowerCase']() !== _0x1a9982) continue; } } } _0x5bbae6['_executeCurrent'](_0x126ee9); } } } , _0x2762fe['prototype']['_getEffectiveTarget'] = function(_0x4f97b8, _0xd762c6) { for (var _0x4bc680 = _0xd762c6['split']('.'), _0x84f535 = 0x0; _0x84f535 < _0x4bc680['length'] - 0x1; _0x84f535++) _0x4f97b8 = _0x4f97b8[_0x4bc680[_0x84f535]]; return _0x4f97b8; } , _0x2762fe['prototype']['_getProperty'] = function(_0x21ec2a) { var _0x5a2141 = _0x21ec2a['split']('.'); return _0x5a2141[_0x5a2141['length'] - 0x1]; } , _0x2762fe['prototype']['serialize'] = function(_0x529e77) { for (var _0x84cc3f = { 'children': new Array(), 'name': _0x529e77, 'type': 0x3, 'properties': new Array() }, _0x2688ee = 0x0; _0x2688ee < this['actions']['length']; _0x2688ee++) { var _0x48ad75 = { 'type': 0x0, 'children': new Array(), 'name': _0x2762fe['GetTriggerName'](this['actions'][_0x2688ee]['trigger']), 'properties': new Array() } , _0x40a61c = this['actions'][_0x2688ee]['triggerOptions']; if (_0x40a61c && 'number' != typeof _0x40a61c) if (_0x40a61c['parameter']instanceof Node) _0x48ad75['properties']['push'](_0x56e8ef['_GetTargetProperty'](_0x40a61c['parameter'])); else { var _0x1f7105 = {}; _0x5e367c['a']['DeepCopy'](_0x40a61c['parameter'], _0x1f7105, ['mesh']), _0x40a61c['parameter'] && _0x40a61c['parameter']['mesh'] && (_0x1f7105['_meshId'] = _0x40a61c['parameter']['mesh']['id']), _0x48ad75['properties']['push']({ 'name': 'parameter', 'targetType': null, 'value': _0x1f7105 }); } this['actions'][_0x2688ee]['serialize'](_0x48ad75), _0x84cc3f['children']['push'](_0x48ad75); } return _0x84cc3f; } , _0x2762fe['Parse'] = function(_0xe338c4, _0x1bd8d6, _0x4953ba) { var _0x3af874 = new _0x2762fe(_0x4953ba); null === _0x1bd8d6 ? _0x4953ba['actionManager'] = _0x3af874 : _0x1bd8d6['actionManager'] = _0x3af874; for (var _0x2fa1c2 = function(_0x5b3232, _0x1e760a, _0x3591ac, _0x361069) { if (null === _0x361069) { var _0x325476 = parseFloat(_0x1e760a); return 'true' === _0x1e760a || 'false' === _0x1e760a ? 'true' === _0x1e760a : isNaN(_0x325476) ? _0x1e760a : _0x325476; } for (var _0x36b6b1 = _0x361069['split']('.'), _0x4b0154 = _0x1e760a['split'](','), _0x191532 = 0x0; _0x191532 < _0x36b6b1['length']; _0x191532++) _0x3591ac = _0x3591ac[_0x36b6b1[_0x191532]]; if ('boolean' == typeof _0x3591ac) return 'true' === _0x4b0154[0x0]; if ('string' == typeof _0x3591ac) return _0x4b0154[0x0]; var _0x20c593 = new Array(); for (_0x191532 = 0x0; _0x191532 < _0x4b0154['length']; _0x191532++) _0x20c593['push'](parseFloat(_0x4b0154[_0x191532])); return _0x3591ac instanceof _0x47d24f['x'] ? _0x47d24f['x']['FromArray'](_0x20c593) : _0x3591ac instanceof _0x47d24f['y'] ? _0x47d24f['y']['FromArray'](_0x20c593) : _0x3591ac instanceof _0x47d24f['e'] ? _0x47d24f['e']['FromArray'](_0x20c593) : _0x3591ac instanceof _0x47d24f['f'] ? _0x47d24f['f']['FromArray'](_0x20c593) : parseFloat(_0x4b0154[0x0]); }, _0xeb4cee = function(_0xec638d, _0x296691, _0x1e9984, _0x143dcc, _0x16021c) { if (void 0x0 === _0x16021c && (_0x16021c = null), !_0xec638d['detached']) { var _0x40fb91 = new Array() , _0x1c576d = null , _0x5aac36 = null , _0x181398 = _0xec638d['combine'] && _0xec638d['combine']['length'] > 0x0; if (0x2 === _0xec638d['type'] ? _0x40fb91['push'](_0x3af874) : _0x40fb91['push'](_0x296691), _0x181398) { for (var _0x25ea21 = new Array(), _0x56337d = 0x0; _0x56337d < _0xec638d['combine']['length']; _0x56337d++) _0xeb4cee(_0xec638d['combine'][_0x56337d], _0x2762fe['NothingTrigger'], _0x1e9984, _0x143dcc, _0x25ea21); _0x40fb91['push'](_0x25ea21); } else for (var _0x3e2f61 = 0x0; _0x3e2f61 < _0xec638d['properties']['length']; _0x3e2f61++) { var _0x1f3f93 = _0xec638d['properties'][_0x3e2f61]['value'] , _0x36375d = _0xec638d['properties'][_0x3e2f61]['name'] , _0x21ba41 = _0xec638d['properties'][_0x3e2f61]['targetType']; 'target' === _0x36375d ? _0x1f3f93 = _0x1c576d = null !== _0x21ba41 && 'SceneProperties' === _0x21ba41 ? _0x4953ba : _0x4953ba['getNodeByName'](_0x1f3f93) : 'parent' === _0x36375d ? _0x1f3f93 = _0x4953ba['getNodeByName'](_0x1f3f93) : 'sound' === _0x36375d ? _0x4953ba['getSoundByName'] && (_0x1f3f93 = _0x4953ba['getSoundByName'](_0x1f3f93)) : 'propertyPath' !== _0x36375d ? _0x1f3f93 = 0x2 === _0xec638d['type'] && 'operator' === _0x36375d ? _0x1229bf[_0x1f3f93] : _0x2fa1c2(0x0, _0x1f3f93, _0x1c576d, 'value' === _0x36375d ? _0x5aac36 : null) : _0x5aac36 = _0x1f3f93, _0x40fb91['push'](_0x1f3f93); } if (null === _0x16021c ? _0x40fb91['push'](_0x1e9984) : _0x40fb91['push'](null), 'InterpolateValueAction' === _0xec638d['name']) { var _0x1fb15d = _0x40fb91[_0x40fb91['length'] - 0x2]; _0x40fb91[_0x40fb91['length'] - 0x1] = _0x1fb15d, _0x40fb91[_0x40fb91['length'] - 0x2] = _0x1e9984; } var _0x1663bb = function(_0x53e588, _0x5287e0) { var _0x5a8cb9 = _0x376b99['a']['GetClass']('BABYLON.' + _0x53e588); if (_0x5a8cb9) { var _0x561bae = Object['create'](_0x5a8cb9['prototype']); return _0x561bae['constructor']['apply'](_0x561bae, _0x5287e0), _0x561bae; } }(_0xec638d['name'], _0x40fb91); if (_0x1663bb instanceof _0x3a96e1 && null !== _0x1e9984) { var _0x15d3bc = new _0x226136(_0x296691,_0x1e9984); _0x143dcc ? _0x143dcc['then'](_0x15d3bc) : _0x3af874['registerAction'](_0x15d3bc), _0x143dcc = _0x15d3bc; } null === _0x16021c ? _0x1663bb instanceof _0x3a96e1 ? (_0x1e9984 = _0x1663bb, _0x1663bb = _0x143dcc) : (_0x1e9984 = null, _0x143dcc ? _0x143dcc['then'](_0x1663bb) : _0x3af874['registerAction'](_0x1663bb)) : _0x16021c['push'](_0x1663bb); for (_0x3e2f61 = 0x0; _0x3e2f61 < _0xec638d['children']['length']; _0x3e2f61++) _0xeb4cee(_0xec638d['children'][_0x3e2f61], _0x296691, _0x1e9984, _0x1663bb, null); } }, _0x332588 = 0x0; _0x332588 < _0xe338c4['children']['length']; _0x332588++) { var _0x433ed9, _0x26cd5a = _0xe338c4['children'][_0x332588]; if (_0x26cd5a['properties']['length'] > 0x0) { var _0x109d1f = _0x26cd5a['properties'][0x0]['value'] , _0x58c0d0 = null === _0x26cd5a['properties'][0x0]['targetType'] ? _0x109d1f : _0x4953ba['getMeshByName'](_0x109d1f); _0x58c0d0['_meshId'] && (_0x58c0d0['mesh'] = _0x4953ba['getMeshByID'](_0x58c0d0['_meshId'])), _0x433ed9 = { 'trigger': _0x2762fe[_0x26cd5a['name']], 'parameter': _0x58c0d0 }; } else _0x433ed9 = _0x2762fe[_0x26cd5a['name']]; for (var _0x84de6 = 0x0; _0x84de6 < _0x26cd5a['children']['length']; _0x84de6++) _0x26cd5a['detached'] || _0xeb4cee(_0x26cd5a['children'][_0x84de6], _0x433ed9, null, null); } } , _0x2762fe['GetTriggerName'] = function(_0x25955f) { switch (_0x25955f) { case 0x0: return 'NothingTrigger'; case 0x1: return 'OnPickTrigger'; case 0x2: return 'OnLeftPickTrigger'; case 0x3: return 'OnRightPickTrigger'; case 0x4: return 'OnCenterPickTrigger'; case 0x5: return 'OnPickDownTrigger'; case 0x6: return 'OnPickUpTrigger'; case 0x7: return 'OnLongPressTrigger'; case 0x8: return 'OnPointerOverTrigger'; case 0x9: return 'OnPointerOutTrigger'; case 0xa: return 'OnEveryFrameTrigger'; case 0xb: return 'OnIntersectionEnterTrigger'; case 0xc: return 'OnIntersectionExitTrigger'; case 0xd: return 'OnKeyDownTrigger'; case 0xe: return 'OnKeyUpTrigger'; case 0xf: return 'OnPickOutTrigger'; default: return ''; } } , _0x2762fe['NothingTrigger'] = _0x24e342['a']['ACTION_NothingTrigger'], _0x2762fe['OnPickTrigger'] = _0x24e342['a']['ACTION_OnPickTrigger'], _0x2762fe['OnLeftPickTrigger'] = _0x24e342['a']['ACTION_OnLeftPickTrigger'], _0x2762fe['OnRightPickTrigger'] = _0x24e342['a']['ACTION_OnRightPickTrigger'], _0x2762fe['OnCenterPickTrigger'] = _0x24e342['a']['ACTION_OnCenterPickTrigger'], _0x2762fe['OnPickDownTrigger'] = _0x24e342['a']['ACTION_OnPickDownTrigger'], _0x2762fe['OnDoublePickTrigger'] = _0x24e342['a']['ACTION_OnDoublePickTrigger'], _0x2762fe['OnPickUpTrigger'] = _0x24e342['a']['ACTION_OnPickUpTrigger'], _0x2762fe['OnPickOutTrigger'] = _0x24e342['a']['ACTION_OnPickOutTrigger'], _0x2762fe['OnLongPressTrigger'] = _0x24e342['a']['ACTION_OnLongPressTrigger'], _0x2762fe['OnPointerOverTrigger'] = _0x24e342['a']['ACTION_OnPointerOverTrigger'], _0x2762fe['OnPointerOutTrigger'] = _0x24e342['a']['ACTION_OnPointerOutTrigger'], _0x2762fe['OnEveryFrameTrigger'] = _0x24e342['a']['ACTION_OnEveryFrameTrigger'], _0x2762fe['OnIntersectionEnterTrigger'] = _0x24e342['a']['ACTION_OnIntersectionEnterTrigger'], _0x2762fe['OnIntersectionExitTrigger'] = _0x24e342['a']['ACTION_OnIntersectionExitTrigger'], _0x2762fe['OnKeyDownTrigger'] = _0x24e342['a']['ACTION_OnKeyDownTrigger'], _0x2762fe['OnKeyUpTrigger'] = 0xf, _0x2762fe; }(_0x59bd00(0x4f)['a']) , _0x1f76a6 = function(_0x498aa6) { function _0x309dd6(_0x150d94, _0x18b73d, _0x5ca3ba) { var _0x4d7d63 = _0x498aa6['call'](this, _0x150d94, _0x5ca3ba) || this; return _0x4d7d63['_sound'] = _0x18b73d, _0x4d7d63; } return _0x420e5b['d'](_0x309dd6, _0x498aa6), _0x309dd6['prototype']['_prepare'] = function() {} , _0x309dd6['prototype']['execute'] = function() { void 0x0 !== this['_sound'] && this['_sound']['play'](); } , _0x309dd6['prototype']['serialize'] = function(_0x412232) { return _0x498aa6['prototype']['_serialize']['call'](this, { 'name': 'PlaySoundAction', 'properties': [{ 'name': 'sound', 'value': this['_sound']['name'] }] }, _0x412232); } , _0x309dd6; }(_0x56e8ef) , _0x2ab56b = function(_0x10b3b9) { function _0x48eeb7(_0xfe5ff6, _0x59ae72, _0x53392a) { var _0x110450 = _0x10b3b9['call'](this, _0xfe5ff6, _0x53392a) || this; return _0x110450['_sound'] = _0x59ae72, _0x110450; } return _0x420e5b['d'](_0x48eeb7, _0x10b3b9), _0x48eeb7['prototype']['_prepare'] = function() {} , _0x48eeb7['prototype']['execute'] = function() { void 0x0 !== this['_sound'] && this['_sound']['stop'](); } , _0x48eeb7['prototype']['serialize'] = function(_0x1a8f1d) { return _0x10b3b9['prototype']['_serialize']['call'](this, { 'name': 'StopSoundAction', 'properties': [{ 'name': 'sound', 'value': this['_sound']['name'] }] }, _0x1a8f1d); } , _0x48eeb7; }(_0x56e8ef); _0x376b99['a']['RegisteredTypes']['BABYLON.PlaySoundAction'] = _0x2ab56b, _0x376b99['a']['RegisteredTypes']['BABYLON.StopSoundAction'] = _0x2ab56b; var _0x4ce36c, _0x77cead = _0x59bd00(0xc), _0x3d4764 = _0x59bd00(0x2); !function(_0xe39711) { _0xe39711[_0xe39711['STEP'] = 0x1] = 'STEP'; }(_0x4ce36c || (_0x4ce36c = {})); var _0x4bd663 = function() { function _0x32c205(_0x5d6d67, _0x1782c4, _0x5750db) { this['name'] = _0x5d6d67, this['from'] = _0x1782c4, this['to'] = _0x5750db; } return _0x32c205['prototype']['clone'] = function() { return new _0x32c205(this['name'],this['from'],this['to']); } , _0x32c205; }() , _0x111b09 = _0x59bd00(0x19) , _0x25e586 = function() { return function() {} ; }() , _0x4452f5 = function() { function _0x8bb26b(_0x312b63, _0x194371, _0x791a4a, _0x1922c6, _0x103923, _0x4ec02e) { this['name'] = _0x312b63, this['targetProperty'] = _0x194371, this['framePerSecond'] = _0x791a4a, this['dataType'] = _0x1922c6, this['loopMode'] = _0x103923, this['enableBlending'] = _0x4ec02e, this['_runtimeAnimations'] = new Array(), this['_events'] = new Array(), this['blendingSpeed'] = 0.01, this['_ranges'] = {}, this['targetPropertyPath'] = _0x194371['split']('.'), this['dataType'] = _0x1922c6, this['loopMode'] = void 0x0 === _0x103923 ? _0x8bb26b['ANIMATIONLOOPMODE_CYCLE'] : _0x103923; } return _0x8bb26b['_PrepareAnimation'] = function(_0x121bba, _0x48ea1d, _0xa2e5c5, _0x7d4d08, _0x58a7b7, _0x52f2be, _0x9dc465, _0x46cd88) { var _0x472f43 = void 0x0; if (!isNaN(parseFloat(_0x58a7b7)) && isFinite(_0x58a7b7) ? _0x472f43 = _0x8bb26b['ANIMATIONTYPE_FLOAT'] : _0x58a7b7 instanceof _0x47d24f['q'] ? _0x472f43 = _0x8bb26b['ANIMATIONTYPE_QUATERNION'] : _0x58a7b7 instanceof _0x47d24f['x'] ? _0x472f43 = _0x8bb26b['ANIMATIONTYPE_VECTOR3'] : _0x58a7b7 instanceof _0x47d24f['w'] ? _0x472f43 = _0x8bb26b['ANIMATIONTYPE_VECTOR2'] : _0x58a7b7 instanceof _0x47d24f['e'] ? _0x472f43 = _0x8bb26b['ANIMATIONTYPE_COLOR3'] : _0x58a7b7 instanceof _0x47d24f['r'] && (_0x472f43 = _0x8bb26b['ANIMATIONTYPE_SIZE']), null == _0x472f43) return null; var _0x36a309 = new _0x8bb26b(_0x121bba,_0x48ea1d,_0xa2e5c5,_0x472f43,_0x9dc465) , _0x48b1bb = [{ 'frame': 0x0, 'value': _0x58a7b7 }, { 'frame': _0x7d4d08, 'value': _0x52f2be }]; return _0x36a309['setKeys'](_0x48b1bb), void 0x0 !== _0x46cd88 && _0x36a309['setEasingFunction'](_0x46cd88), _0x36a309; } , _0x8bb26b['CreateAnimation'] = function(_0x5ea5e5, _0xf99168, _0x1b5aee, _0x4034a0) { var _0xdb4a30 = new _0x8bb26b(_0x5ea5e5 + 'Animation',_0x5ea5e5,_0x1b5aee,_0xf99168,_0x8bb26b['ANIMATIONLOOPMODE_CONSTANT']); return _0xdb4a30['setEasingFunction'](_0x4034a0), _0xdb4a30; } , _0x8bb26b['CreateAndStartAnimation'] = function(_0x5f449d, _0x44acb9, _0x5b97b5, _0x27b85f, _0x58f728, _0x250f75, _0x418304, _0x1dc808, _0x1d0690, _0x29d439) { var _0x38bebe = _0x8bb26b['_PrepareAnimation'](_0x5f449d, _0x5b97b5, _0x27b85f, _0x58f728, _0x250f75, _0x418304, _0x1dc808, _0x1d0690); return _0x38bebe ? _0x44acb9['getScene']()['beginDirectAnimation'](_0x44acb9, [_0x38bebe], 0x0, _0x58f728, 0x1 === _0x38bebe['loopMode'], 0x1, _0x29d439) : null; } , _0x8bb26b['CreateAndStartHierarchyAnimation'] = function(_0x4d4f06, _0x3a91ac, _0xbafe3f, _0x218e46, _0x501435, _0x1ebac2, _0x20f173, _0xce5583, _0x96b197, _0x57d49a, _0x96b1c2) { var _0x267153 = _0x8bb26b['_PrepareAnimation'](_0x4d4f06, _0x218e46, _0x501435, _0x1ebac2, _0x20f173, _0xce5583, _0x96b197, _0x57d49a); return _0x267153 ? _0x3a91ac['getScene']()['beginDirectHierarchyAnimation'](_0x3a91ac, _0xbafe3f, [_0x267153], 0x0, _0x1ebac2, 0x1 === _0x267153['loopMode'], 0x1, _0x96b1c2) : null; } , _0x8bb26b['CreateMergeAndStartAnimation'] = function(_0x1cebb5, _0xea351, _0xbf8da8, _0x2e5d7d, _0xe2934d, _0x4bb871, _0x1a9859, _0x5ce9b5, _0x33e20e, _0x3e315d) { var _0x5e4650 = _0x8bb26b['_PrepareAnimation'](_0x1cebb5, _0xbf8da8, _0x2e5d7d, _0xe2934d, _0x4bb871, _0x1a9859, _0x5ce9b5, _0x33e20e); return _0x5e4650 ? (_0xea351['animations']['push'](_0x5e4650), _0xea351['getScene']()['beginAnimation'](_0xea351, 0x0, _0xe2934d, 0x1 === _0x5e4650['loopMode'], 0x1, _0x3e315d)) : null; } , _0x8bb26b['TransitionTo'] = function(_0x517c66, _0x760d3a, _0x588869, _0x4420fa, _0xfc8410, _0x5e5900, _0x42cce0, _0x1cbf00) { if (void 0x0 === _0x1cbf00 && (_0x1cbf00 = null), _0x42cce0 <= 0x0) return _0x588869[_0x517c66] = _0x760d3a, _0x1cbf00 && _0x1cbf00(), null; var _0x2879a7 = _0xfc8410 * (_0x42cce0 / 0x3e8); _0x5e5900['setKeys']([{ 'frame': 0x0, 'value': _0x588869[_0x517c66]['clone'] ? _0x588869[_0x517c66]['clone']() : _0x588869[_0x517c66] }, { 'frame': _0x2879a7, 'value': _0x760d3a }]), _0x588869['animations'] || (_0x588869['animations'] = []), _0x588869['animations']['push'](_0x5e5900); var _0x3f7c73 = _0x4420fa['beginAnimation'](_0x588869, 0x0, _0x2879a7, !0x1); return _0x3f7c73['onAnimationEnd'] = _0x1cbf00, _0x3f7c73; } , Object['defineProperty'](_0x8bb26b['prototype'], 'runtimeAnimations', { 'get': function() { return this['_runtimeAnimations']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x8bb26b['prototype'], 'hasRunningRuntimeAnimations', { 'get': function() { for (var _0x2b5bf9 = 0x0, _0x547b62 = this['_runtimeAnimations']; _0x2b5bf9 < _0x547b62['length']; _0x2b5bf9++) { if (!_0x547b62[_0x2b5bf9]['isStopped']) return !0x0; } return !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x8bb26b['prototype']['toString'] = function(_0x1e3579) { var _0x38ef9f = 'Name:\x20' + this['name'] + ',\x20property:\x20' + this['targetProperty']; if (_0x38ef9f += ',\x20datatype:\x20' + ['Float', 'Vector3', 'Quaternion', 'Matrix', 'Color3', 'Vector2'][this['dataType']], _0x38ef9f += ',\x20nKeys:\x20' + (this['_keys'] ? this['_keys']['length'] : 'none'), _0x38ef9f += ',\x20nRanges:\x20' + (this['_ranges'] ? Object['keys'](this['_ranges'])['length'] : 'none'), _0x1e3579) { _0x38ef9f += ',\x20Ranges:\x20{'; var _0x24d016 = !0x0; for (var _0x50cc81 in this['_ranges']) _0x24d016 && (_0x38ef9f += ',\x20', _0x24d016 = !0x1), _0x38ef9f += _0x50cc81; _0x38ef9f += '}'; } return _0x38ef9f; } , _0x8bb26b['prototype']['addEvent'] = function(_0x32b629) { this['_events']['push'](_0x32b629); } , _0x8bb26b['prototype']['removeEvents'] = function(_0x1f5c26) { for (var _0x22eb6e = 0x0; _0x22eb6e < this['_events']['length']; _0x22eb6e++) this['_events'][_0x22eb6e]['frame'] === _0x1f5c26 && (this['_events']['splice'](_0x22eb6e, 0x1), _0x22eb6e--); } , _0x8bb26b['prototype']['getEvents'] = function() { return this['_events']; } , _0x8bb26b['prototype']['createRange'] = function(_0x343d84, _0x1b5f0c, _0x45195d) { this['_ranges'][_0x343d84] || (this['_ranges'][_0x343d84] = new _0x4bd663(_0x343d84,_0x1b5f0c,_0x45195d)); } , _0x8bb26b['prototype']['deleteRange'] = function(_0x4fb163, _0x5d8791) { void 0x0 === _0x5d8791 && (_0x5d8791 = !0x0); var _0x553781 = this['_ranges'][_0x4fb163]; if (_0x553781) { if (_0x5d8791) for (var _0x4a5128 = _0x553781['from'], _0x472ab5 = _0x553781['to'], _0x3b5a4f = this['_keys']['length'] - 0x1; _0x3b5a4f >= 0x0; _0x3b5a4f--) this['_keys'][_0x3b5a4f]['frame'] >= _0x4a5128 && this['_keys'][_0x3b5a4f]['frame'] <= _0x472ab5 && this['_keys']['splice'](_0x3b5a4f, 0x1); this['_ranges'][_0x4fb163] = null; } } , _0x8bb26b['prototype']['getRange'] = function(_0xe10234) { return this['_ranges'][_0xe10234]; } , _0x8bb26b['prototype']['getKeys'] = function() { return this['_keys']; } , _0x8bb26b['prototype']['getHighestFrame'] = function() { for (var _0x5abfed = 0x0, _0x22abea = 0x0, _0x433dae = this['_keys']['length']; _0x22abea < _0x433dae; _0x22abea++) _0x5abfed < this['_keys'][_0x22abea]['frame'] && (_0x5abfed = this['_keys'][_0x22abea]['frame']); return _0x5abfed; } , _0x8bb26b['prototype']['getEasingFunction'] = function() { return this['_easingFunction']; } , _0x8bb26b['prototype']['setEasingFunction'] = function(_0x516c9a) { this['_easingFunction'] = _0x516c9a; } , _0x8bb26b['prototype']['floatInterpolateFunction'] = function(_0x369123, _0x22ed37, _0x24aacd) { return _0x77cead['a']['Lerp'](_0x369123, _0x22ed37, _0x24aacd); } , _0x8bb26b['prototype']['floatInterpolateFunctionWithTangents'] = function(_0x425f16, _0x529bc8, _0x561b67, _0x57b499, _0x2c560b) { return _0x77cead['a']['Hermite'](_0x425f16, _0x529bc8, _0x561b67, _0x57b499, _0x2c560b); } , _0x8bb26b['prototype']['quaternionInterpolateFunction'] = function(_0x5942bf, _0x2cc66a, _0x55356a) { return _0x47d24f['q']['Slerp'](_0x5942bf, _0x2cc66a, _0x55356a); } , _0x8bb26b['prototype']['quaternionInterpolateFunctionWithTangents'] = function(_0xe2126a, _0x141be3, _0xc3bb94, _0x25b01c, _0x5f12eb) { return _0x47d24f['q']['Hermite'](_0xe2126a, _0x141be3, _0xc3bb94, _0x25b01c, _0x5f12eb)['normalize'](); } , _0x8bb26b['prototype']['vector3InterpolateFunction'] = function(_0x4128a2, _0x2e02db, _0x31a3d3) { return _0x47d24f['x']['Lerp'](_0x4128a2, _0x2e02db, _0x31a3d3); } , _0x8bb26b['prototype']['vector3InterpolateFunctionWithTangents'] = function(_0x2afa7f, _0x405724, _0x2f7f97, _0x30a06e, _0x10f13d) { return _0x47d24f['x']['Hermite'](_0x2afa7f, _0x405724, _0x2f7f97, _0x30a06e, _0x10f13d); } , _0x8bb26b['prototype']['vector2InterpolateFunction'] = function(_0x1c3739, _0xa24fdf, _0x5cf624) { return _0x47d24f['w']['Lerp'](_0x1c3739, _0xa24fdf, _0x5cf624); } , _0x8bb26b['prototype']['vector2InterpolateFunctionWithTangents'] = function(_0x15cb73, _0x52afbc, _0x3c60f3, _0x39d43f, _0x3626c2) { return _0x47d24f['w']['Hermite'](_0x15cb73, _0x52afbc, _0x3c60f3, _0x39d43f, _0x3626c2); } , _0x8bb26b['prototype']['sizeInterpolateFunction'] = function(_0x217c6b, _0x347428, _0x2814d6) { return _0x47d24f['r']['Lerp'](_0x217c6b, _0x347428, _0x2814d6); } , _0x8bb26b['prototype']['color3InterpolateFunction'] = function(_0x3b9433, _0x125736, _0x571227) { return _0x47d24f['e']['Lerp'](_0x3b9433, _0x125736, _0x571227); } , _0x8bb26b['prototype']['_getKeyValue'] = function(_0xd55eb4) { return 'function' == typeof _0xd55eb4 ? _0xd55eb4() : _0xd55eb4; } , _0x8bb26b['prototype']['_interpolate'] = function(_0x417f88, _0x44ae85) { if (_0x44ae85['loopMode'] === _0x8bb26b['ANIMATIONLOOPMODE_CONSTANT'] && _0x44ae85['repeatCount'] > 0x0) return _0x44ae85['highLimitValue']['clone'] ? _0x44ae85['highLimitValue']['clone']() : _0x44ae85['highLimitValue']; var _0x4cd652 = this['_keys']; if (0x1 === _0x4cd652['length']) return this['_getKeyValue'](_0x4cd652[0x0]['value']); var _0x463851 = _0x44ae85['key']; if (_0x4cd652[_0x463851]['frame'] >= _0x417f88) for (; _0x463851 - 0x1 >= 0x0 && _0x4cd652[_0x463851]['frame'] >= _0x417f88; ) _0x463851--; for (var _0x58c5f2 = _0x463851; _0x58c5f2 < _0x4cd652['length']; _0x58c5f2++) { var _0x31f188 = _0x4cd652[_0x58c5f2 + 0x1]; if (_0x31f188['frame'] >= _0x417f88) { _0x44ae85['key'] = _0x58c5f2; var _0x59e97b = _0x4cd652[_0x58c5f2] , _0x1d0590 = this['_getKeyValue'](_0x59e97b['value']); if (_0x59e97b['interpolation'] === _0x4ce36c['STEP']) return _0x1d0590; var _0x4791ef = this['_getKeyValue'](_0x31f188['value']) , _0x4ba577 = void 0x0 !== _0x59e97b['outTangent'] && void 0x0 !== _0x31f188['inTangent'] , _0x2deff = _0x31f188['frame'] - _0x59e97b['frame'] , _0x3bef8e = (_0x417f88 - _0x59e97b['frame']) / _0x2deff , _0x4b7ee7 = this['getEasingFunction'](); switch (null != _0x4b7ee7 && (_0x3bef8e = _0x4b7ee7['ease'](_0x3bef8e)), this['dataType']) { case _0x8bb26b['ANIMATIONTYPE_FLOAT']: var _0x247c2f = _0x4ba577 ? this['floatInterpolateFunctionWithTangents'](_0x1d0590, _0x59e97b['outTangent'] * _0x2deff, _0x4791ef, _0x31f188['inTangent'] * _0x2deff, _0x3bef8e) : this['floatInterpolateFunction'](_0x1d0590, _0x4791ef, _0x3bef8e); switch (_0x44ae85['loopMode']) { case _0x8bb26b['ANIMATIONLOOPMODE_CYCLE']: case _0x8bb26b['ANIMATIONLOOPMODE_CONSTANT']: return _0x247c2f; case _0x8bb26b['ANIMATIONLOOPMODE_RELATIVE']: return _0x44ae85['offsetValue'] * _0x44ae85['repeatCount'] + _0x247c2f; } break; case _0x8bb26b['ANIMATIONTYPE_QUATERNION']: var _0x155d2f = _0x4ba577 ? this['quaternionInterpolateFunctionWithTangents'](_0x1d0590, _0x59e97b['outTangent']['scale'](_0x2deff), _0x4791ef, _0x31f188['inTangent']['scale'](_0x2deff), _0x3bef8e) : this['quaternionInterpolateFunction'](_0x1d0590, _0x4791ef, _0x3bef8e); switch (_0x44ae85['loopMode']) { case _0x8bb26b['ANIMATIONLOOPMODE_CYCLE']: case _0x8bb26b['ANIMATIONLOOPMODE_CONSTANT']: return _0x155d2f; case _0x8bb26b['ANIMATIONLOOPMODE_RELATIVE']: return _0x155d2f['addInPlace'](_0x44ae85['offsetValue']['scale'](_0x44ae85['repeatCount'])); } return _0x155d2f; case _0x8bb26b['ANIMATIONTYPE_VECTOR3']: var _0x16340 = _0x4ba577 ? this['vector3InterpolateFunctionWithTangents'](_0x1d0590, _0x59e97b['outTangent']['scale'](_0x2deff), _0x4791ef, _0x31f188['inTangent']['scale'](_0x2deff), _0x3bef8e) : this['vector3InterpolateFunction'](_0x1d0590, _0x4791ef, _0x3bef8e); switch (_0x44ae85['loopMode']) { case _0x8bb26b['ANIMATIONLOOPMODE_CYCLE']: case _0x8bb26b['ANIMATIONLOOPMODE_CONSTANT']: return _0x16340; case _0x8bb26b['ANIMATIONLOOPMODE_RELATIVE']: return _0x16340['add'](_0x44ae85['offsetValue']['scale'](_0x44ae85['repeatCount'])); } case _0x8bb26b['ANIMATIONTYPE_VECTOR2']: var _0x4ec4a8 = _0x4ba577 ? this['vector2InterpolateFunctionWithTangents'](_0x1d0590, _0x59e97b['outTangent']['scale'](_0x2deff), _0x4791ef, _0x31f188['inTangent']['scale'](_0x2deff), _0x3bef8e) : this['vector2InterpolateFunction'](_0x1d0590, _0x4791ef, _0x3bef8e); switch (_0x44ae85['loopMode']) { case _0x8bb26b['ANIMATIONLOOPMODE_CYCLE']: case _0x8bb26b['ANIMATIONLOOPMODE_CONSTANT']: return _0x4ec4a8; case _0x8bb26b['ANIMATIONLOOPMODE_RELATIVE']: return _0x4ec4a8['add'](_0x44ae85['offsetValue']['scale'](_0x44ae85['repeatCount'])); } case _0x8bb26b['ANIMATIONTYPE_SIZE']: switch (_0x44ae85['loopMode']) { case _0x8bb26b['ANIMATIONLOOPMODE_CYCLE']: case _0x8bb26b['ANIMATIONLOOPMODE_CONSTANT']: return this['sizeInterpolateFunction'](_0x1d0590, _0x4791ef, _0x3bef8e); case _0x8bb26b['ANIMATIONLOOPMODE_RELATIVE']: return this['sizeInterpolateFunction'](_0x1d0590, _0x4791ef, _0x3bef8e)['add'](_0x44ae85['offsetValue']['scale'](_0x44ae85['repeatCount'])); } case _0x8bb26b['ANIMATIONTYPE_COLOR3']: switch (_0x44ae85['loopMode']) { case _0x8bb26b['ANIMATIONLOOPMODE_CYCLE']: case _0x8bb26b['ANIMATIONLOOPMODE_CONSTANT']: return this['color3InterpolateFunction'](_0x1d0590, _0x4791ef, _0x3bef8e); case _0x8bb26b['ANIMATIONLOOPMODE_RELATIVE']: return this['color3InterpolateFunction'](_0x1d0590, _0x4791ef, _0x3bef8e)['add'](_0x44ae85['offsetValue']['scale'](_0x44ae85['repeatCount'])); } case _0x8bb26b['ANIMATIONTYPE_MATRIX']: switch (_0x44ae85['loopMode']) { case _0x8bb26b['ANIMATIONLOOPMODE_CYCLE']: case _0x8bb26b['ANIMATIONLOOPMODE_CONSTANT']: if (_0x8bb26b['AllowMatricesInterpolation']) return this['matrixInterpolateFunction'](_0x1d0590, _0x4791ef, _0x3bef8e, _0x44ae85['workValue']); case _0x8bb26b['ANIMATIONLOOPMODE_RELATIVE']: return _0x1d0590; } } break; } } return this['_getKeyValue'](_0x4cd652[_0x4cd652['length'] - 0x1]['value']); } , _0x8bb26b['prototype']['matrixInterpolateFunction'] = function(_0x512452, _0x2d47b0, _0x38548a, _0x382e2c) { return _0x8bb26b['AllowMatrixDecomposeForInterpolation'] ? _0x382e2c ? (_0x47d24f['j']['DecomposeLerpToRef'](_0x512452, _0x2d47b0, _0x38548a, _0x382e2c), _0x382e2c) : _0x47d24f['j']['DecomposeLerp'](_0x512452, _0x2d47b0, _0x38548a) : _0x382e2c ? (_0x47d24f['j']['LerpToRef'](_0x512452, _0x2d47b0, _0x38548a, _0x382e2c), _0x382e2c) : _0x47d24f['j']['Lerp'](_0x512452, _0x2d47b0, _0x38548a); } , _0x8bb26b['prototype']['clone'] = function() { var _0x1fb434 = new _0x8bb26b(this['name'],this['targetPropertyPath']['join']('.'),this['framePerSecond'],this['dataType'],this['loopMode']); if (_0x1fb434['enableBlending'] = this['enableBlending'], _0x1fb434['blendingSpeed'] = this['blendingSpeed'], this['_keys'] && _0x1fb434['setKeys'](this['_keys']), this['_ranges']) for (var _0x824c4a in (_0x1fb434['_ranges'] = {}, this['_ranges'])) { var _0x58472d = this['_ranges'][_0x824c4a]; _0x58472d && (_0x1fb434['_ranges'][_0x824c4a] = _0x58472d['clone']()); } return _0x1fb434; } , _0x8bb26b['prototype']['setKeys'] = function(_0x5c62d5) { this['_keys'] = _0x5c62d5['slice'](0x0); } , _0x8bb26b['prototype']['serialize'] = function() { var _0x2ec06d = {}; _0x2ec06d['name'] = this['name'], _0x2ec06d['property'] = this['targetProperty'], _0x2ec06d['framePerSecond'] = this['framePerSecond'], _0x2ec06d['dataType'] = this['dataType'], _0x2ec06d['loopBehavior'] = this['loopMode'], _0x2ec06d['enableBlending'] = this['enableBlending'], _0x2ec06d['blendingSpeed'] = this['blendingSpeed']; var _0xfd460c = this['dataType']; _0x2ec06d['keys'] = []; for (var _0x3415c3 = this['getKeys'](), _0x3ced30 = 0x0; _0x3ced30 < _0x3415c3['length']; _0x3ced30++) { var _0x2a36bc = _0x3415c3[_0x3ced30] , _0x157219 = {}; switch (_0x157219['frame'] = _0x2a36bc['frame'], _0xfd460c) { case _0x8bb26b['ANIMATIONTYPE_FLOAT']: _0x157219['values'] = [_0x2a36bc['value']]; break; case _0x8bb26b['ANIMATIONTYPE_QUATERNION']: case _0x8bb26b['ANIMATIONTYPE_MATRIX']: case _0x8bb26b['ANIMATIONTYPE_VECTOR3']: case _0x8bb26b['ANIMATIONTYPE_COLOR3']: _0x157219['values'] = _0x2a36bc['value']['asArray'](); } _0x2ec06d['keys']['push'](_0x157219); } for (var _0x18abc2 in (_0x2ec06d['ranges'] = [], this['_ranges'])) { var _0x6700f1 = this['_ranges'][_0x18abc2]; if (_0x6700f1) { var _0x5a0a61 = {}; _0x5a0a61['name'] = _0x18abc2, _0x5a0a61['from'] = _0x6700f1['from'], _0x5a0a61['to'] = _0x6700f1['to'], _0x2ec06d['ranges']['push'](_0x5a0a61); } } return _0x2ec06d; } , Object['defineProperty'](_0x8bb26b, 'ANIMATIONTYPE_FLOAT', { 'get': function() { return _0x8bb26b['_ANIMATIONTYPE_FLOAT']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x8bb26b, 'ANIMATIONTYPE_VECTOR3', { 'get': function() { return _0x8bb26b['_ANIMATIONTYPE_VECTOR3']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x8bb26b, 'ANIMATIONTYPE_VECTOR2', { 'get': function() { return _0x8bb26b['_ANIMATIONTYPE_VECTOR2']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x8bb26b, 'ANIMATIONTYPE_SIZE', { 'get': function() { return _0x8bb26b['_ANIMATIONTYPE_SIZE']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x8bb26b, 'ANIMATIONTYPE_QUATERNION', { 'get': function() { return _0x8bb26b['_ANIMATIONTYPE_QUATERNION']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x8bb26b, 'ANIMATIONTYPE_MATRIX', { 'get': function() { return _0x8bb26b['_ANIMATIONTYPE_MATRIX']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x8bb26b, 'ANIMATIONTYPE_COLOR3', { 'get': function() { return _0x8bb26b['_ANIMATIONTYPE_COLOR3']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x8bb26b, 'ANIMATIONLOOPMODE_RELATIVE', { 'get': function() { return _0x8bb26b['_ANIMATIONLOOPMODE_RELATIVE']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x8bb26b, 'ANIMATIONLOOPMODE_CYCLE', { 'get': function() { return _0x8bb26b['_ANIMATIONLOOPMODE_CYCLE']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x8bb26b, 'ANIMATIONLOOPMODE_CONSTANT', { 'get': function() { return _0x8bb26b['_ANIMATIONLOOPMODE_CONSTANT']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x8bb26b['_UniversalLerp'] = function(_0x59d929, _0x31ba0c, _0x5ddfb1) { var _0x16ec75 = _0x59d929['constructor']; return _0x16ec75['Lerp'] ? _0x16ec75['Lerp'](_0x59d929, _0x31ba0c, _0x5ddfb1) : _0x16ec75['Slerp'] ? _0x16ec75['Slerp'](_0x59d929, _0x31ba0c, _0x5ddfb1) : _0x59d929['toFixed'] ? _0x59d929 * (0x1 - _0x5ddfb1) + _0x5ddfb1 * _0x31ba0c : _0x31ba0c; } , _0x8bb26b['Parse'] = function(_0x13f310) { var _0x313046, _0x59ff85, _0x5d6fa2 = new _0x8bb26b(_0x13f310['name'],_0x13f310['property'],_0x13f310['framePerSecond'],_0x13f310['dataType'],_0x13f310['loopBehavior']), _0x470441 = _0x13f310['dataType'], _0x3ed104 = []; for (_0x13f310['enableBlending'] && (_0x5d6fa2['enableBlending'] = _0x13f310['enableBlending']), _0x13f310['blendingSpeed'] && (_0x5d6fa2['blendingSpeed'] = _0x13f310['blendingSpeed']), _0x59ff85 = 0x0; _0x59ff85 < _0x13f310['keys']['length']; _0x59ff85++) { var _0x5b5484, _0x3f8ded, _0x5c70c2 = _0x13f310['keys'][_0x59ff85]; switch (_0x470441) { case _0x8bb26b['ANIMATIONTYPE_FLOAT']: _0x313046 = _0x5c70c2['values'][0x0], _0x5c70c2['values']['length'] >= 0x1 && (_0x5b5484 = _0x5c70c2['values'][0x1]), _0x5c70c2['values']['length'] >= 0x2 && (_0x3f8ded = _0x5c70c2['values'][0x2]); break; case _0x8bb26b['ANIMATIONTYPE_QUATERNION']: if (_0x313046 = _0x47d24f['q']['FromArray'](_0x5c70c2['values']), _0x5c70c2['values']['length'] >= 0x8) { var _0x3c0ef2 = _0x47d24f['q']['FromArray'](_0x5c70c2['values']['slice'](0x4, 0x8)); _0x3c0ef2['equals'](_0x47d24f['q']['Zero']()) || (_0x5b5484 = _0x3c0ef2); } if (_0x5c70c2['values']['length'] >= 0xc) { var _0x4403a1 = _0x47d24f['q']['FromArray'](_0x5c70c2['values']['slice'](0x8, 0xc)); _0x4403a1['equals'](_0x47d24f['q']['Zero']()) || (_0x3f8ded = _0x4403a1); } break; case _0x8bb26b['ANIMATIONTYPE_MATRIX']: _0x313046 = _0x47d24f['j']['FromArray'](_0x5c70c2['values']); break; case _0x8bb26b['ANIMATIONTYPE_COLOR3']: _0x313046 = _0x47d24f['e']['FromArray'](_0x5c70c2['values']); break; case _0x8bb26b['ANIMATIONTYPE_VECTOR3']: default: _0x313046 = _0x47d24f['x']['FromArray'](_0x5c70c2['values']); } var _0x2b4c87 = {}; _0x2b4c87['frame'] = _0x5c70c2['frame'], _0x2b4c87['value'] = _0x313046, null != _0x5b5484 && (_0x2b4c87['inTangent'] = _0x5b5484), null != _0x3f8ded && (_0x2b4c87['outTangent'] = _0x3f8ded), _0x3ed104['push'](_0x2b4c87); } if (_0x5d6fa2['setKeys'](_0x3ed104), _0x13f310['ranges']) for (_0x59ff85 = 0x0; _0x59ff85 < _0x13f310['ranges']['length']; _0x59ff85++) _0x313046 = _0x13f310['ranges'][_0x59ff85], _0x5d6fa2['createRange'](_0x313046['name'], _0x313046['from'], _0x313046['to']); return _0x5d6fa2; } , _0x8bb26b['AppendSerializedAnimations'] = function(_0x1e0413, _0x2f1a75) { _0x3d4764['a']['AppendSerializedAnimations'](_0x1e0413, _0x2f1a75); } , _0x8bb26b['AllowMatricesInterpolation'] = !0x1, _0x8bb26b['AllowMatrixDecomposeForInterpolation'] = !0x0, _0x8bb26b['_ANIMATIONTYPE_FLOAT'] = 0x0, _0x8bb26b['_ANIMATIONTYPE_VECTOR3'] = 0x1, _0x8bb26b['_ANIMATIONTYPE_QUATERNION'] = 0x2, _0x8bb26b['_ANIMATIONTYPE_MATRIX'] = 0x3, _0x8bb26b['_ANIMATIONTYPE_COLOR3'] = 0x4, _0x8bb26b['_ANIMATIONTYPE_VECTOR2'] = 0x5, _0x8bb26b['_ANIMATIONTYPE_SIZE'] = 0x6, _0x8bb26b['_ANIMATIONLOOPMODE_RELATIVE'] = 0x0, _0x8bb26b['_ANIMATIONLOOPMODE_CYCLE'] = 0x1, _0x8bb26b['_ANIMATIONLOOPMODE_CONSTANT'] = 0x2, _0x8bb26b; }(); _0x376b99['a']['RegisteredTypes']['BABYLON.Animation'] = _0x4452f5, _0x111b09['a']['_AnimationRangeFactory'] = function(_0x369adc, _0x37e2b7, _0x540647) { return new _0x4bd663(_0x369adc,_0x37e2b7,_0x540647); } ; var _0x53f633 = function(_0x2c7680) { function _0x2c85cd(_0x2a728a, _0xc12c17, _0x295033, _0x6f40ba, _0x4a8e18, _0x4ff22e, _0x4b04a2, _0x28859e) { void 0x0 === _0x4a8e18 && (_0x4a8e18 = 0x3e8); var _0x4d912f = _0x2c7680['call'](this, _0x2a728a, _0x4ff22e) || this; return _0x4d912f['duration'] = 0x3e8, _0x4d912f['onInterpolationDoneObservable'] = new _0x2dbec2['c'](), _0x4d912f['propertyPath'] = _0x295033, _0x4d912f['value'] = _0x6f40ba, _0x4d912f['duration'] = _0x4a8e18, _0x4d912f['stopOtherAnimations'] = _0x4b04a2, _0x4d912f['onInterpolationDone'] = _0x28859e, _0x4d912f['_target'] = _0x4d912f['_effectiveTarget'] = _0xc12c17, _0x4d912f; } return _0x420e5b['d'](_0x2c85cd, _0x2c7680), _0x2c85cd['prototype']['_prepare'] = function() { this['_effectiveTarget'] = this['_getEffectiveTarget'](this['_effectiveTarget'], this['propertyPath']), this['_property'] = this['_getProperty'](this['propertyPath']); } , _0x2c85cd['prototype']['execute'] = function() { var _0x390c6d, _0x58f21c = this, _0x4f605a = this['_actionManager']['getScene'](), _0x29ab4d = [{ 'frame': 0x0, 'value': this['_effectiveTarget'][this['_property']] }, { 'frame': 0x64, 'value': this['value'] }]; if ('number' == typeof this['value']) _0x390c6d = _0x4452f5['ANIMATIONTYPE_FLOAT']; else if (this['value']instanceof _0x47d24f['e']) _0x390c6d = _0x4452f5['ANIMATIONTYPE_COLOR3']; else if (this['value']instanceof _0x47d24f['x']) _0x390c6d = _0x4452f5['ANIMATIONTYPE_VECTOR3']; else if (this['value']instanceof _0x47d24f['j']) _0x390c6d = _0x4452f5['ANIMATIONTYPE_MATRIX']; else { if (!(this['value']instanceof _0x47d24f['q'])) return void _0x3f98cb['a']['Warn']('InterpolateValueAction:\x20Unsupported\x20type\x20(' + typeof this['value'] + ')'); _0x390c6d = _0x4452f5['ANIMATIONTYPE_QUATERNION']; } var _0x56268a = new _0x4452f5('InterpolateValueAction',this['_property'],0x3e8 / this['duration'] * 0x64,_0x390c6d,_0x4452f5['ANIMATIONLOOPMODE_CONSTANT']); _0x56268a['setKeys'](_0x29ab4d), this['stopOtherAnimations'] && _0x4f605a['stopAnimation'](this['_effectiveTarget']); _0x4f605a['beginDirectAnimation'](this['_effectiveTarget'], [_0x56268a], 0x0, 0x64, !0x1, 0x1, function() { _0x58f21c['onInterpolationDoneObservable']['notifyObservers'](_0x58f21c), _0x58f21c['onInterpolationDone'] && _0x58f21c['onInterpolationDone'](); }); } , _0x2c85cd['prototype']['serialize'] = function(_0x44615a) { return _0x2c7680['prototype']['_serialize']['call'](this, { 'name': 'InterpolateValueAction', 'properties': [_0x56e8ef['_GetTargetProperty'](this['_target']), { 'name': 'propertyPath', 'value': this['propertyPath'] }, { 'name': 'value', 'value': _0x56e8ef['_SerializeValueAsString'](this['value']) }, { 'name': 'duration', 'value': _0x56e8ef['_SerializeValueAsString'](this['duration']) }, { 'name': 'stopOtherAnimations', 'value': _0x56e8ef['_SerializeValueAsString'](this['stopOtherAnimations']) || !0x1 }] }, _0x44615a); } , _0x2c85cd; }(_0x56e8ef); _0x376b99['a']['RegisteredTypes']['BABYLON.InterpolateValueAction'] = _0x53f633; var _0x16ecbf = Object['freeze'](new _0x47d24f['q'](0x0,0x0,0x0,0x0)) , _0x4276e5 = Object['freeze'](_0x47d24f['x']['Zero']()) , _0x4f029c = Object['freeze'](_0x47d24f['w']['Zero']()) , _0x5e5d24 = Object['freeze'](_0x47d24f['r']['Zero']()) , _0x3045db = Object['freeze'](_0x47d24f['e']['Black']()) , _0x1afafe = function() { function _0x4dd06e(_0x22716c, _0x398513, _0x47aef1, _0x4a523e) { var _0x2f64a5 = this; if (this['_events'] = new Array(), this['_currentFrame'] = 0x0, this['_originalValue'] = new Array(), this['_originalBlendValue'] = null, this['_offsetsCache'] = {}, this['_highLimitsCache'] = {}, this['_stopped'] = !0x1, this['_blendingFactor'] = 0x0, this['_currentValue'] = null, this['_currentActiveTarget'] = null, this['_directTarget'] = null, this['_targetPath'] = '', this['_weight'] = 0x1, this['_ratioOffset'] = 0x0, this['_previousDelay'] = 0x0, this['_previousRatio'] = 0x0, this['_targetIsArray'] = !0x1, this['_animation'] = _0x398513, this['_target'] = _0x22716c, this['_scene'] = _0x47aef1, this['_host'] = _0x4a523e, this['_activeTargets'] = [], _0x398513['_runtimeAnimations']['push'](this), this['_animationState'] = { 'key': 0x0, 'repeatCount': 0x0, 'loopMode': this['_getCorrectLoopMode']() }, this['_animation']['dataType'] === _0x4452f5['ANIMATIONTYPE_MATRIX'] && (this['_animationState']['workValue'] = _0x47d24f['j']['Zero']()), this['_keys'] = this['_animation']['getKeys'](), this['_minFrame'] = this['_keys'][0x0]['frame'], this['_maxFrame'] = this['_keys'][this['_keys']['length'] - 0x1]['frame'], this['_minValue'] = this['_keys'][0x0]['value'], this['_maxValue'] = this['_keys'][this['_keys']['length'] - 0x1]['value'], 0x0 !== this['_minFrame']) { var _0x51c4ec = { 'frame': 0x0, 'value': this['_minValue'] }; this['_keys']['splice'](0x0, 0x0, _0x51c4ec); } if (this['_target']instanceof Array) { for (var _0x5aa875 = 0x0, _0x336934 = 0x0, _0x139613 = this['_target']; _0x336934 < _0x139613['length']; _0x336934++) { var _0x5b7902 = _0x139613[_0x336934]; this['_preparePath'](_0x5b7902, _0x5aa875), this['_getOriginalValues'](_0x5aa875), _0x5aa875++; } this['_targetIsArray'] = !0x0; } else this['_preparePath'](this['_target']), this['_getOriginalValues'](), this['_targetIsArray'] = !0x1, this['_directTarget'] = this['_activeTargets'][0x0]; var _0x4c3d70 = _0x398513['getEvents'](); _0x4c3d70 && _0x4c3d70['length'] > 0x0 && _0x4c3d70['forEach'](function(_0x3ad76f) { _0x2f64a5['_events']['push'](_0x3ad76f['_clone']()); }), this['_enableBlending'] = _0x22716c && _0x22716c['animationPropertiesOverride'] ? _0x22716c['animationPropertiesOverride']['enableBlending'] : this['_animation']['enableBlending']; } return Object['defineProperty'](_0x4dd06e['prototype'], 'currentFrame', { 'get': function() { return this['_currentFrame']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dd06e['prototype'], 'weight', { 'get': function() { return this['_weight']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dd06e['prototype'], 'currentValue', { 'get': function() { return this['_currentValue']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dd06e['prototype'], 'targetPath', { 'get': function() { return this['_targetPath']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dd06e['prototype'], 'target', { 'get': function() { return this['_currentActiveTarget']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4dd06e['prototype']['_preparePath'] = function(_0x121a4a, _0x2aaa7b) { void 0x0 === _0x2aaa7b && (_0x2aaa7b = 0x0); var _0x2f7233 = this['_animation']['targetPropertyPath']; if (_0x2f7233['length'] > 0x1) { for (var _0x26f045 = _0x121a4a[_0x2f7233[0x0]], _0x921aba = 0x1; _0x921aba < _0x2f7233['length'] - 0x1; _0x921aba++) _0x26f045 = _0x26f045[_0x2f7233[_0x921aba]]; this['_targetPath'] = _0x2f7233[_0x2f7233['length'] - 0x1], this['_activeTargets'][_0x2aaa7b] = _0x26f045; } else this['_targetPath'] = _0x2f7233[0x0], this['_activeTargets'][_0x2aaa7b] = _0x121a4a; } , Object['defineProperty'](_0x4dd06e['prototype'], 'animation', { 'get': function() { return this['_animation']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4dd06e['prototype']['reset'] = function(_0x3aeeb8) { if (void 0x0 === _0x3aeeb8 && (_0x3aeeb8 = !0x1), _0x3aeeb8) if (this['_target']instanceof Array) for (var _0x4f61a0 = 0x0, _0x50726b = 0x0, _0x3db18a = this['_target']; _0x50726b < _0x3db18a['length']; _0x50726b++) { var _0x1d0e75 = _0x3db18a[_0x50726b]; void 0x0 !== this['_originalValue'][_0x4f61a0] && this['_setValue'](_0x1d0e75, this['_activeTargets'][_0x4f61a0], this['_originalValue'][_0x4f61a0], -0x1, _0x4f61a0), _0x4f61a0++; } else void 0x0 !== this['_originalValue'][0x0] && this['_setValue'](this['_target'], this['_directTarget'], this['_originalValue'][0x0], -0x1, 0x0); this['_offsetsCache'] = {}, this['_highLimitsCache'] = {}, this['_currentFrame'] = 0x0, this['_blendingFactor'] = 0x0; for (_0x4f61a0 = 0x0; _0x4f61a0 < this['_events']['length']; _0x4f61a0++) this['_events'][_0x4f61a0]['isDone'] = !0x1; } , _0x4dd06e['prototype']['isStopped'] = function() { return this['_stopped']; } , _0x4dd06e['prototype']['dispose'] = function() { var _0x2d009b = this['_animation']['runtimeAnimations']['indexOf'](this); _0x2d009b > -0x1 && this['_animation']['runtimeAnimations']['splice'](_0x2d009b, 0x1); } , _0x4dd06e['prototype']['setValue'] = function(_0x4a773d, _0x4f4b58) { if (this['_targetIsArray']) for (var _0x3cdc9b = 0x0; _0x3cdc9b < this['_target']['length']; _0x3cdc9b++) { var _0x583bf0 = this['_target'][_0x3cdc9b]; this['_setValue'](_0x583bf0, this['_activeTargets'][_0x3cdc9b], _0x4a773d, _0x4f4b58, _0x3cdc9b); } else this['_setValue'](this['_target'], this['_directTarget'], _0x4a773d, _0x4f4b58, 0x0); } , _0x4dd06e['prototype']['_getOriginalValues'] = function(_0x501f79) { var _0x11fe0b; void 0x0 === _0x501f79 && (_0x501f79 = 0x0); var _0x6cadbc = this['_activeTargets'][_0x501f79]; (_0x11fe0b = _0x6cadbc['getRestPose'] && '_matrix' === this['_targetPath'] ? _0x6cadbc['getRestPose']() : _0x6cadbc[this['_targetPath']]) && _0x11fe0b['clone'] ? this['_originalValue'][_0x501f79] = _0x11fe0b['clone']() : this['_originalValue'][_0x501f79] = _0x11fe0b; } , _0x4dd06e['prototype']['_setValue'] = function(_0x39132f, _0x389f01, _0x2ce45a, _0x2ce8c0, _0x4f5d1e) { if (this['_currentActiveTarget'] = _0x389f01, this['_weight'] = _0x2ce8c0, this['_enableBlending'] && this['_blendingFactor'] <= 0x1) { if (!this['_originalBlendValue']) { var _0x570f62 = _0x389f01[this['_targetPath']]; _0x570f62['clone'] ? this['_originalBlendValue'] = _0x570f62['clone']() : this['_originalBlendValue'] = _0x570f62; } this['_originalBlendValue']['m'] ? _0x4452f5['AllowMatrixDecomposeForInterpolation'] ? this['_currentValue'] ? _0x47d24f['j']['DecomposeLerpToRef'](this['_originalBlendValue'], _0x2ce45a, this['_blendingFactor'], this['_currentValue']) : this['_currentValue'] = _0x47d24f['j']['DecomposeLerp'](this['_originalBlendValue'], _0x2ce45a, this['_blendingFactor']) : this['_currentValue'] ? _0x47d24f['j']['LerpToRef'](this['_originalBlendValue'], _0x2ce45a, this['_blendingFactor'], this['_currentValue']) : this['_currentValue'] = _0x47d24f['j']['Lerp'](this['_originalBlendValue'], _0x2ce45a, this['_blendingFactor']) : this['_currentValue'] = _0x4452f5['_UniversalLerp'](this['_originalBlendValue'], _0x2ce45a, this['_blendingFactor']); var _0x3dbd5f = _0x39132f && _0x39132f['animationPropertiesOverride'] ? _0x39132f['animationPropertiesOverride']['blendingSpeed'] : this['_animation']['blendingSpeed']; this['_blendingFactor'] += _0x3dbd5f; } else this['_currentValue'] = _0x2ce45a; -0x1 !== _0x2ce8c0 ? this['_scene']['_registerTargetForLateAnimationBinding'](this, this['_originalValue'][_0x4f5d1e]) : _0x389f01[this['_targetPath']] = this['_currentValue'], _0x39132f['markAsDirty'] && _0x39132f['markAsDirty'](this['_animation']['targetProperty']); } , _0x4dd06e['prototype']['_getCorrectLoopMode'] = function() { return this['_target'] && this['_target']['animationPropertiesOverride'] ? this['_target']['animationPropertiesOverride']['loopMode'] : this['_animation']['loopMode']; } , _0x4dd06e['prototype']['goToFrame'] = function(_0x536114) { var _0x477fdd = this['_animation']['getKeys'](); _0x536114 < _0x477fdd[0x0]['frame'] ? _0x536114 = _0x477fdd[0x0]['frame'] : _0x536114 > _0x477fdd[_0x477fdd['length'] - 0x1]['frame'] && (_0x536114 = _0x477fdd[_0x477fdd['length'] - 0x1]['frame']), this['_currentFrame'] = _0x536114; var _0x4482d4 = this['_animation']['_interpolate'](_0x536114, this['_animationState']); this['setValue'](_0x4482d4, -0x1); } , _0x4dd06e['prototype']['_prepareForSpeedRatioChange'] = function(_0x2dc615) { var _0x5f1422 = this['_previousDelay'] * (this['_animation']['framePerSecond'] * _0x2dc615) / 0x3e8; this['_ratioOffset'] = this['_previousRatio'] - _0x5f1422; } , _0x4dd06e['prototype']['animate'] = function(_0x2f9782, _0x2fe322, _0x12d16f, _0x29e145, _0x4557fd, _0x63b1e5) { void 0x0 === _0x63b1e5 && (_0x63b1e5 = -0x1); var _0x30add4 = this['_animation'] , _0x50f6f6 = _0x30add4['targetPropertyPath']; if (!_0x50f6f6 || _0x50f6f6['length'] < 0x1) return this['_stopped'] = !0x0, !0x1; var _0x497e76 = !0x0; (_0x2fe322 < this['_minFrame'] || _0x2fe322 > this['_maxFrame']) && (_0x2fe322 = this['_minFrame']), (_0x12d16f < this['_minFrame'] || _0x12d16f > this['_maxFrame']) && (_0x12d16f = this['_maxFrame']); var _0x25c916, _0x43709a, _0x5924a6 = _0x12d16f - _0x2fe322, _0x2ebfef = _0x2f9782 * (_0x30add4['framePerSecond'] * _0x4557fd) / 0x3e8 + this['_ratioOffset'], _0x3aa8b7 = 0x0; if (this['_previousDelay'] = _0x2f9782, this['_previousRatio'] = _0x2ebfef, !_0x29e145 && _0x12d16f >= _0x2fe322 && _0x2ebfef >= _0x5924a6) _0x497e76 = !0x1, _0x3aa8b7 = _0x30add4['_getKeyValue'](this['_maxValue']); else if (!_0x29e145 && _0x2fe322 >= _0x12d16f && _0x2ebfef <= _0x5924a6) _0x497e76 = !0x1, _0x3aa8b7 = _0x30add4['_getKeyValue'](this['_minValue']); else if (this['_animationState']['loopMode'] !== _0x4452f5['ANIMATIONLOOPMODE_CYCLE']) { var _0x5e40c9 = _0x12d16f['toString']() + _0x2fe322['toString'](); if (!this['_offsetsCache'][_0x5e40c9]) { this['_animationState']['repeatCount'] = 0x0, this['_animationState']['loopMode'] = _0x4452f5['ANIMATIONLOOPMODE_CYCLE']; var _0x49b9c1 = _0x30add4['_interpolate'](_0x2fe322, this['_animationState']) , _0x48eef2 = _0x30add4['_interpolate'](_0x12d16f, this['_animationState']); switch (this['_animationState']['loopMode'] = this['_getCorrectLoopMode'](), _0x30add4['dataType']) { case _0x4452f5['ANIMATIONTYPE_FLOAT']: this['_offsetsCache'][_0x5e40c9] = _0x48eef2 - _0x49b9c1; break; case _0x4452f5['ANIMATIONTYPE_QUATERNION']: this['_offsetsCache'][_0x5e40c9] = _0x48eef2['subtract'](_0x49b9c1); break; case _0x4452f5['ANIMATIONTYPE_VECTOR3']: this['_offsetsCache'][_0x5e40c9] = _0x48eef2['subtract'](_0x49b9c1); case _0x4452f5['ANIMATIONTYPE_VECTOR2']: this['_offsetsCache'][_0x5e40c9] = _0x48eef2['subtract'](_0x49b9c1); case _0x4452f5['ANIMATIONTYPE_SIZE']: this['_offsetsCache'][_0x5e40c9] = _0x48eef2['subtract'](_0x49b9c1); case _0x4452f5['ANIMATIONTYPE_COLOR3']: this['_offsetsCache'][_0x5e40c9] = _0x48eef2['subtract'](_0x49b9c1); } this['_highLimitsCache'][_0x5e40c9] = _0x48eef2; } _0x3aa8b7 = this['_highLimitsCache'][_0x5e40c9], _0x25c916 = this['_offsetsCache'][_0x5e40c9]; } if (void 0x0 === _0x25c916) switch (_0x30add4['dataType']) { case _0x4452f5['ANIMATIONTYPE_FLOAT']: _0x25c916 = 0x0; break; case _0x4452f5['ANIMATIONTYPE_QUATERNION']: _0x25c916 = _0x16ecbf; break; case _0x4452f5['ANIMATIONTYPE_VECTOR3']: _0x25c916 = _0x4276e5; break; case _0x4452f5['ANIMATIONTYPE_VECTOR2']: _0x25c916 = _0x4f029c; break; case _0x4452f5['ANIMATIONTYPE_SIZE']: _0x25c916 = _0x5e5d24; break; case _0x4452f5['ANIMATIONTYPE_COLOR3']: _0x25c916 = _0x3045db; } if (this['_host'] && this['_host']['syncRoot']) { var _0x35d478 = this['_host']['syncRoot']; _0x43709a = _0x2fe322 + (_0x12d16f - _0x2fe322) * ((_0x35d478['masterFrame'] - _0x35d478['fromFrame']) / (_0x35d478['toFrame'] - _0x35d478['fromFrame'])); } else _0x43709a = _0x497e76 && 0x0 !== _0x5924a6 ? _0x2fe322 + _0x2ebfef % _0x5924a6 : _0x12d16f; var _0x168254 = this['_events']; if ((_0x5924a6 > 0x0 && this['currentFrame'] > _0x43709a || _0x5924a6 < 0x0 && this['currentFrame'] < _0x43709a) && (this['_onLoop'](), _0x168254['length'])) for (var _0x34bf7c = 0x0; _0x34bf7c < _0x168254['length']; _0x34bf7c++) _0x168254[_0x34bf7c]['onlyOnce'] || (_0x168254[_0x34bf7c]['isDone'] = !0x1); this['_currentFrame'] = _0x43709a, this['_animationState']['repeatCount'] = 0x0 === _0x5924a6 ? 0x0 : _0x2ebfef / _0x5924a6 >> 0x0, this['_animationState']['highLimitValue'] = _0x3aa8b7, this['_animationState']['offsetValue'] = _0x25c916; var _0x2619f4 = _0x30add4['_interpolate'](_0x43709a, this['_animationState']); if (this['setValue'](_0x2619f4, _0x63b1e5), _0x168254['length']) for (_0x34bf7c = 0x0; _0x34bf7c < _0x168254['length']; _0x34bf7c++) if (_0x5924a6 > 0x0 && _0x43709a >= _0x168254[_0x34bf7c]['frame'] && _0x168254[_0x34bf7c]['frame'] >= _0x2fe322 || _0x5924a6 < 0x0 && _0x43709a <= _0x168254[_0x34bf7c]['frame'] && _0x168254[_0x34bf7c]['frame'] <= _0x2fe322) { var _0x116279 = _0x168254[_0x34bf7c]; _0x116279['isDone'] || (_0x116279['onlyOnce'] && (_0x168254['splice'](_0x34bf7c, 0x1), _0x34bf7c--), _0x116279['isDone'] = !0x0, _0x116279['action'](_0x43709a)); } return _0x497e76 || (this['_stopped'] = !0x0), _0x497e76; } , _0x4dd06e; }() , _0x366639 = _0x59bd00(0x10) , _0x39b2d2 = _0x59bd00(0x2f) , _0x23c063 = _0x59bd00(0x22) , _0x814309 = function(_0x37dfe4) { function _0xdc4e3f(_0x505e56, _0xe09b5d, _0x16855d, _0x1c7fb4, _0x585d9d, _0x232765, _0x3ea4f2) { void 0x0 === _0x16855d && (_0x16855d = null), void 0x0 === _0x1c7fb4 && (_0x1c7fb4 = null), void 0x0 === _0x585d9d && (_0x585d9d = null), void 0x0 === _0x232765 && (_0x232765 = null), void 0x0 === _0x3ea4f2 && (_0x3ea4f2 = null); var _0x56ae89 = _0x37dfe4['call'](this, _0x505e56, _0xe09b5d['getScene'](), !0x1) || this; return _0x56ae89['name'] = _0x505e56, _0x56ae89['children'] = new Array(), _0x56ae89['animations'] = new Array(), _0x56ae89['_index'] = null, _0x56ae89['_absoluteTransform'] = new _0x47d24f['j'](), _0x56ae89['_invertedAbsoluteTransform'] = new _0x47d24f['j'](), _0x56ae89['_scalingDeterminant'] = 0x1, _0x56ae89['_worldTransform'] = new _0x47d24f['j'](), _0x56ae89['_needToDecompose'] = !0x0, _0x56ae89['_needToCompose'] = !0x1, _0x56ae89['_linkedTransformNode'] = null, _0x56ae89['_waitingTransformNodeId'] = null, _0x56ae89['_skeleton'] = _0xe09b5d, _0x56ae89['_localMatrix'] = _0x1c7fb4 ? _0x1c7fb4['clone']() : _0x47d24f['j']['Identity'](), _0x56ae89['_restPose'] = _0x585d9d || _0x56ae89['_localMatrix']['clone'](), _0x56ae89['_baseMatrix'] = _0x232765 || _0x56ae89['_localMatrix']['clone'](), _0x56ae89['_index'] = _0x3ea4f2, _0xe09b5d['bones']['push'](_0x56ae89), _0x56ae89['setParent'](_0x16855d, !0x1), (_0x232765 || _0x1c7fb4) && _0x56ae89['_updateDifferenceMatrix'](), _0x56ae89; } return _0x420e5b['d'](_0xdc4e3f, _0x37dfe4), Object['defineProperty'](_0xdc4e3f['prototype'], '_matrix', { 'get': function() { return this['_compose'](), this['_localMatrix']; }, 'set': function(_0x3551f9) { this['_localMatrix']['copyFrom'](_0x3551f9), this['_needToDecompose'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xdc4e3f['prototype']['getClassName'] = function() { return 'Bone'; } , _0xdc4e3f['prototype']['getSkeleton'] = function() { return this['_skeleton']; } , _0xdc4e3f['prototype']['getParent'] = function() { return this['_parent']; } , _0xdc4e3f['prototype']['getChildren'] = function() { return this['children']; } , _0xdc4e3f['prototype']['setParent'] = function(_0x382708, _0x38f334) { if (void 0x0 === _0x38f334 && (_0x38f334 = !0x0), this['_parent'] !== _0x382708) { if (this['_parent']) { var _0x16c963 = this['_parent']['children']['indexOf'](this); -0x1 !== _0x16c963 && this['_parent']['children']['splice'](_0x16c963, 0x1); } this['_parent'] = _0x382708, this['_parent'] && this['_parent']['children']['push'](this), _0x38f334 && this['_updateDifferenceMatrix'](), this['markAsDirty'](); } } , _0xdc4e3f['prototype']['getLocalMatrix'] = function() { return this['_compose'](), this['_localMatrix']; } , _0xdc4e3f['prototype']['getBaseMatrix'] = function() { return this['_baseMatrix']; } , _0xdc4e3f['prototype']['getRestPose'] = function() { return this['_restPose']; } , _0xdc4e3f['prototype']['getWorldMatrix'] = function() { return this['_worldTransform']; } , _0xdc4e3f['prototype']['returnToRest'] = function() { this['updateMatrix'](this['_restPose']['clone']()); } , _0xdc4e3f['prototype']['getInvertedAbsoluteTransform'] = function() { return this['_invertedAbsoluteTransform']; } , _0xdc4e3f['prototype']['getAbsoluteTransform'] = function() { return this['_absoluteTransform']; } , _0xdc4e3f['prototype']['linkTransformNode'] = function(_0xbfe2b4) { this['_linkedTransformNode'] && this['_skeleton']['_numBonesWithLinkedTransformNode']--, this['_linkedTransformNode'] = _0xbfe2b4, this['_linkedTransformNode'] && this['_skeleton']['_numBonesWithLinkedTransformNode']++; } , Object['defineProperty'](_0xdc4e3f['prototype'], 'position', { 'get': function() { return this['_decompose'](), this['_localPosition']; }, 'set': function(_0x230407) { this['_decompose'](), this['_localPosition']['copyFrom'](_0x230407), this['_markAsDirtyAndCompose'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdc4e3f['prototype'], 'rotation', { 'get': function() { return this['getRotation'](); }, 'set': function(_0x5b67db) { this['setRotation'](_0x5b67db); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdc4e3f['prototype'], 'rotationQuaternion', { 'get': function() { return this['_decompose'](), this['_localRotation']; }, 'set': function(_0x16094b) { this['setRotationQuaternion'](_0x16094b); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdc4e3f['prototype'], 'scaling', { 'get': function() { return this['getScale'](); }, 'set': function(_0x23cab5) { this['setScale'](_0x23cab5); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdc4e3f['prototype'], 'animationPropertiesOverride', { 'get': function() { return this['_skeleton']['animationPropertiesOverride']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xdc4e3f['prototype']['_decompose'] = function() { this['_needToDecompose'] && (this['_needToDecompose'] = !0x1, this['_localScaling'] || (this['_localScaling'] = _0x47d24f['x']['Zero'](), this['_localRotation'] = _0x47d24f['q']['Zero'](), this['_localPosition'] = _0x47d24f['x']['Zero']()), this['_localMatrix']['decompose'](this['_localScaling'], this['_localRotation'], this['_localPosition'])); } , _0xdc4e3f['prototype']['_compose'] = function() { this['_needToCompose'] && (this['_needToCompose'] = !0x1, _0x47d24f['j']['ComposeToRef'](this['_localScaling'], this['_localRotation'], this['_localPosition'], this['_localMatrix'])); } , _0xdc4e3f['prototype']['updateMatrix'] = function(_0xfd4099, _0x2bea13, _0x2c0736) { void 0x0 === _0x2bea13 && (_0x2bea13 = !0x0), void 0x0 === _0x2c0736 && (_0x2c0736 = !0x0), this['_baseMatrix']['copyFrom'](_0xfd4099), _0x2bea13 && this['_updateDifferenceMatrix'](), _0x2c0736 ? (this['_localMatrix']['copyFrom'](_0xfd4099), this['_markAsDirtyAndDecompose']()) : this['markAsDirty'](); } , _0xdc4e3f['prototype']['_updateDifferenceMatrix'] = function(_0x11cd3d, _0x3a4410) { if (void 0x0 === _0x3a4410 && (_0x3a4410 = !0x0), _0x11cd3d || (_0x11cd3d = this['_baseMatrix']), this['_parent'] ? _0x11cd3d['multiplyToRef'](this['_parent']['_absoluteTransform'], this['_absoluteTransform']) : this['_absoluteTransform']['copyFrom'](_0x11cd3d), this['_absoluteTransform']['invertToRef'](this['_invertedAbsoluteTransform']), _0x3a4410) for (var _0x271bb7 = 0x0; _0x271bb7 < this['children']['length']; _0x271bb7++) this['children'][_0x271bb7]['_updateDifferenceMatrix'](); this['_scalingDeterminant'] = this['_absoluteTransform']['determinant']() < 0x0 ? -0x1 : 0x1; } , _0xdc4e3f['prototype']['markAsDirty'] = function() { this['_currentRenderId']++, this['_childUpdateId']++, this['_skeleton']['_markAsDirty'](); } , _0xdc4e3f['prototype']['_markAsDirtyAndCompose'] = function() { this['markAsDirty'](), this['_needToCompose'] = !0x0; } , _0xdc4e3f['prototype']['_markAsDirtyAndDecompose'] = function() { this['markAsDirty'](), this['_needToDecompose'] = !0x0; } , _0xdc4e3f['prototype']['translate'] = function(_0x1aa4d8, _0xd3ac97, _0x37924d) { void 0x0 === _0xd3ac97 && (_0xd3ac97 = _0x47d24f['s']['LOCAL']); var _0x14be0e = this['getLocalMatrix'](); if (_0xd3ac97 == _0x47d24f['s']['LOCAL']) _0x14be0e['addAtIndex'](0xc, _0x1aa4d8['x']), _0x14be0e['addAtIndex'](0xd, _0x1aa4d8['y']), _0x14be0e['addAtIndex'](0xe, _0x1aa4d8['z']); else { var _0x3f608b = null; _0x37924d && (_0x3f608b = _0x37924d['getWorldMatrix']()), this['_skeleton']['computeAbsoluteTransforms'](); var _0x5ac416 = _0xdc4e3f['_tmpMats'][0x0] , _0x3446ed = _0xdc4e3f['_tmpVecs'][0x0]; this['_parent'] && (_0x37924d && _0x3f608b ? (_0x5ac416['copyFrom'](this['_parent']['getAbsoluteTransform']()), _0x5ac416['multiplyToRef'](_0x3f608b, _0x5ac416)) : _0x5ac416['copyFrom'](this['_parent']['getAbsoluteTransform']())), _0x5ac416['setTranslationFromFloats'](0x0, 0x0, 0x0), _0x5ac416['invert'](), _0x47d24f['x']['TransformCoordinatesToRef'](_0x1aa4d8, _0x5ac416, _0x3446ed), _0x14be0e['addAtIndex'](0xc, _0x3446ed['x']), _0x14be0e['addAtIndex'](0xd, _0x3446ed['y']), _0x14be0e['addAtIndex'](0xe, _0x3446ed['z']); } this['_markAsDirtyAndDecompose'](); } , _0xdc4e3f['prototype']['setPosition'] = function(_0x28f486, _0x58b5fe, _0x35d0d3) { void 0x0 === _0x58b5fe && (_0x58b5fe = _0x47d24f['s']['LOCAL']); var _0x50dcc7 = this['getLocalMatrix'](); if (_0x58b5fe == _0x47d24f['s']['LOCAL']) _0x50dcc7['setTranslationFromFloats'](_0x28f486['x'], _0x28f486['y'], _0x28f486['z']); else { var _0x5b8eb8 = null; _0x35d0d3 && (_0x5b8eb8 = _0x35d0d3['getWorldMatrix']()), this['_skeleton']['computeAbsoluteTransforms'](); var _0x98193f = _0xdc4e3f['_tmpMats'][0x0] , _0x357e83 = _0xdc4e3f['_tmpVecs'][0x0]; this['_parent'] && (_0x35d0d3 && _0x5b8eb8 ? (_0x98193f['copyFrom'](this['_parent']['getAbsoluteTransform']()), _0x98193f['multiplyToRef'](_0x5b8eb8, _0x98193f)) : _0x98193f['copyFrom'](this['_parent']['getAbsoluteTransform']())), _0x98193f['invert'](), _0x47d24f['x']['TransformCoordinatesToRef'](_0x28f486, _0x98193f, _0x357e83), _0x50dcc7['setTranslationFromFloats'](_0x357e83['x'], _0x357e83['y'], _0x357e83['z']); } this['_markAsDirtyAndDecompose'](); } , _0xdc4e3f['prototype']['setAbsolutePosition'] = function(_0xd6a7ef, _0x57096f) { this['setPosition'](_0xd6a7ef, _0x47d24f['s']['WORLD'], _0x57096f); } , _0xdc4e3f['prototype']['scale'] = function(_0xa5ee7, _0x2906cd, _0x24b86e, _0xd452aa) { void 0x0 === _0xd452aa && (_0xd452aa = !0x1); var _0x24c492 = this['getLocalMatrix']() , _0x2d0e09 = _0xdc4e3f['_tmpMats'][0x0]; _0x47d24f['j']['ScalingToRef'](_0xa5ee7, _0x2906cd, _0x24b86e, _0x2d0e09), _0x2d0e09['multiplyToRef'](_0x24c492, _0x24c492), _0x2d0e09['invert'](); for (var _0x404114 = 0x0, _0x54555f = this['children']; _0x404114 < _0x54555f['length']; _0x404114++) { var _0xe1224f = (_0x612a58 = _0x54555f[_0x404114])['getLocalMatrix'](); _0xe1224f['multiplyToRef'](_0x2d0e09, _0xe1224f), _0xe1224f['multiplyAtIndex'](0xc, _0xa5ee7), _0xe1224f['multiplyAtIndex'](0xd, _0x2906cd), _0xe1224f['multiplyAtIndex'](0xe, _0x24b86e), _0x612a58['_markAsDirtyAndDecompose'](); } if (this['_markAsDirtyAndDecompose'](), _0xd452aa) for (var _0x513daf = 0x0, _0x597003 = this['children']; _0x513daf < _0x597003['length']; _0x513daf++) { var _0x612a58; (_0x612a58 = _0x597003[_0x513daf])['scale'](_0xa5ee7, _0x2906cd, _0x24b86e, _0xd452aa); } } , _0xdc4e3f['prototype']['setScale'] = function(_0x2cb7c7) { this['_decompose'](), this['_localScaling']['copyFrom'](_0x2cb7c7), this['_markAsDirtyAndCompose'](); } , _0xdc4e3f['prototype']['getScale'] = function() { return this['_decompose'](), this['_localScaling']; } , _0xdc4e3f['prototype']['getScaleToRef'] = function(_0x2656e2) { this['_decompose'](), _0x2656e2['copyFrom'](this['_localScaling']); } , _0xdc4e3f['prototype']['setYawPitchRoll'] = function(_0x44efc0, _0x3243b9, _0x4fc016, _0xfd31eb, _0x415ad3) { if (void 0x0 === _0xfd31eb && (_0xfd31eb = _0x47d24f['s']['LOCAL']), _0xfd31eb === _0x47d24f['s']['LOCAL']) { var _0x1c1c99 = _0xdc4e3f['_tmpQuat']; return _0x47d24f['q']['RotationYawPitchRollToRef'](_0x44efc0, _0x3243b9, _0x4fc016, _0x1c1c99), void this['setRotationQuaternion'](_0x1c1c99, _0xfd31eb, _0x415ad3); } var _0x3eef67 = _0xdc4e3f['_tmpMats'][0x0]; if (this['_getNegativeRotationToRef'](_0x3eef67, _0x415ad3)) { var _0x25ca2e = _0xdc4e3f['_tmpMats'][0x1]; _0x47d24f['j']['RotationYawPitchRollToRef'](_0x44efc0, _0x3243b9, _0x4fc016, _0x25ca2e), _0x3eef67['multiplyToRef'](_0x25ca2e, _0x25ca2e), this['_rotateWithMatrix'](_0x25ca2e, _0xfd31eb, _0x415ad3); } } , _0xdc4e3f['prototype']['rotate'] = function(_0x2be8ff, _0x55d0f4, _0x9bb40a, _0x2e5def) { void 0x0 === _0x9bb40a && (_0x9bb40a = _0x47d24f['s']['LOCAL']); var _0x5cbfd8 = _0xdc4e3f['_tmpMats'][0x0]; _0x5cbfd8['setTranslationFromFloats'](0x0, 0x0, 0x0), _0x47d24f['j']['RotationAxisToRef'](_0x2be8ff, _0x55d0f4, _0x5cbfd8), this['_rotateWithMatrix'](_0x5cbfd8, _0x9bb40a, _0x2e5def); } , _0xdc4e3f['prototype']['setAxisAngle'] = function(_0x154606, _0x287176, _0x1b5f90, _0x514337) { if (void 0x0 === _0x1b5f90 && (_0x1b5f90 = _0x47d24f['s']['LOCAL']), _0x1b5f90 === _0x47d24f['s']['LOCAL']) { var _0x44ea3f = _0xdc4e3f['_tmpQuat']; return _0x47d24f['q']['RotationAxisToRef'](_0x154606, _0x287176, _0x44ea3f), void this['setRotationQuaternion'](_0x44ea3f, _0x1b5f90, _0x514337); } var _0x4a541a = _0xdc4e3f['_tmpMats'][0x0]; if (this['_getNegativeRotationToRef'](_0x4a541a, _0x514337)) { var _0x3973a4 = _0xdc4e3f['_tmpMats'][0x1]; _0x47d24f['j']['RotationAxisToRef'](_0x154606, _0x287176, _0x3973a4), _0x4a541a['multiplyToRef'](_0x3973a4, _0x3973a4), this['_rotateWithMatrix'](_0x3973a4, _0x1b5f90, _0x514337); } } , _0xdc4e3f['prototype']['setRotation'] = function(_0x5a61f6, _0x1a5593, _0x21a2c8) { void 0x0 === _0x1a5593 && (_0x1a5593 = _0x47d24f['s']['LOCAL']), this['setYawPitchRoll'](_0x5a61f6['y'], _0x5a61f6['x'], _0x5a61f6['z'], _0x1a5593, _0x21a2c8); } , _0xdc4e3f['prototype']['setRotationQuaternion'] = function(_0x183e69, _0x268e67, _0x1f5353) { if (void 0x0 === _0x268e67 && (_0x268e67 = _0x47d24f['s']['LOCAL']), _0x268e67 === _0x47d24f['s']['LOCAL']) return this['_decompose'](), this['_localRotation']['copyFrom'](_0x183e69), void this['_markAsDirtyAndCompose'](); var _0x3a8d68 = _0xdc4e3f['_tmpMats'][0x0]; if (this['_getNegativeRotationToRef'](_0x3a8d68, _0x1f5353)) { var _0x4e3871 = _0xdc4e3f['_tmpMats'][0x1]; _0x47d24f['j']['FromQuaternionToRef'](_0x183e69, _0x4e3871), _0x3a8d68['multiplyToRef'](_0x4e3871, _0x4e3871), this['_rotateWithMatrix'](_0x4e3871, _0x268e67, _0x1f5353); } } , _0xdc4e3f['prototype']['setRotationMatrix'] = function(_0x31c967, _0x1f816f, _0x334ceb) { if (void 0x0 === _0x1f816f && (_0x1f816f = _0x47d24f['s']['LOCAL']), _0x1f816f === _0x47d24f['s']['LOCAL']) { var _0x181eb0 = _0xdc4e3f['_tmpQuat']; return _0x47d24f['q']['FromRotationMatrixToRef'](_0x31c967, _0x181eb0), void this['setRotationQuaternion'](_0x181eb0, _0x1f816f, _0x334ceb); } var _0x565991 = _0xdc4e3f['_tmpMats'][0x0]; if (this['_getNegativeRotationToRef'](_0x565991, _0x334ceb)) { var _0x56631b = _0xdc4e3f['_tmpMats'][0x1]; _0x56631b['copyFrom'](_0x31c967), _0x565991['multiplyToRef'](_0x31c967, _0x56631b), this['_rotateWithMatrix'](_0x56631b, _0x1f816f, _0x334ceb); } } , _0xdc4e3f['prototype']['_rotateWithMatrix'] = function(_0x1e3640, _0x4ce9da, _0x7c240a) { void 0x0 === _0x4ce9da && (_0x4ce9da = _0x47d24f['s']['LOCAL']); var _0x4e87d6 = this['getLocalMatrix']() , _0x436c5e = _0x4e87d6['m'][0xc] , _0xd421d9 = _0x4e87d6['m'][0xd] , _0x27c653 = _0x4e87d6['m'][0xe] , _0x158934 = this['getParent']() , _0x31296d = _0xdc4e3f['_tmpMats'][0x3] , _0x3db753 = _0xdc4e3f['_tmpMats'][0x4]; _0x158934 && _0x4ce9da == _0x47d24f['s']['WORLD'] ? (_0x7c240a ? (_0x31296d['copyFrom'](_0x7c240a['getWorldMatrix']()), _0x158934['getAbsoluteTransform']()['multiplyToRef'](_0x31296d, _0x31296d)) : _0x31296d['copyFrom'](_0x158934['getAbsoluteTransform']()), _0x3db753['copyFrom'](_0x31296d), _0x3db753['invert'](), _0x4e87d6['multiplyToRef'](_0x31296d, _0x4e87d6), _0x4e87d6['multiplyToRef'](_0x1e3640, _0x4e87d6), _0x4e87d6['multiplyToRef'](_0x3db753, _0x4e87d6)) : _0x4ce9da == _0x47d24f['s']['WORLD'] && _0x7c240a ? (_0x31296d['copyFrom'](_0x7c240a['getWorldMatrix']()), _0x3db753['copyFrom'](_0x31296d), _0x3db753['invert'](), _0x4e87d6['multiplyToRef'](_0x31296d, _0x4e87d6), _0x4e87d6['multiplyToRef'](_0x1e3640, _0x4e87d6), _0x4e87d6['multiplyToRef'](_0x3db753, _0x4e87d6)) : _0x4e87d6['multiplyToRef'](_0x1e3640, _0x4e87d6), _0x4e87d6['setTranslationFromFloats'](_0x436c5e, _0xd421d9, _0x27c653), this['computeAbsoluteTransforms'](), this['_markAsDirtyAndDecompose'](); } , _0xdc4e3f['prototype']['_getNegativeRotationToRef'] = function(_0x4c230a, _0x41f11b) { var _0x56905e = _0xdc4e3f['_tmpMats'][0x2]; return _0x4c230a['copyFrom'](this['getAbsoluteTransform']()), _0x41f11b && (_0x4c230a['multiplyToRef'](_0x41f11b['getWorldMatrix'](), _0x4c230a), _0x47d24f['j']['ScalingToRef'](_0x41f11b['scaling']['x'], _0x41f11b['scaling']['y'], _0x41f11b['scaling']['z'], _0x56905e)), _0x4c230a['invert'](), !isNaN(_0x4c230a['m'][0x0]) && (_0x56905e['multiplyAtIndex'](0x0, this['_scalingDeterminant']), _0x4c230a['multiplyToRef'](_0x56905e, _0x4c230a), !0x0); } , _0xdc4e3f['prototype']['getPosition'] = function(_0x55ce28, _0x447f39) { void 0x0 === _0x55ce28 && (_0x55ce28 = _0x47d24f['s']['LOCAL']), void 0x0 === _0x447f39 && (_0x447f39 = null); var _0x8d6764 = _0x47d24f['x']['Zero'](); return this['getPositionToRef'](_0x55ce28, _0x447f39, _0x8d6764), _0x8d6764; } , _0xdc4e3f['prototype']['getPositionToRef'] = function(_0xfcbe23, _0x35a966, _0x264de0) { if (void 0x0 === _0xfcbe23 && (_0xfcbe23 = _0x47d24f['s']['LOCAL']), _0xfcbe23 == _0x47d24f['s']['LOCAL']) { var _0x1fdc31 = this['getLocalMatrix'](); _0x264de0['x'] = _0x1fdc31['m'][0xc], _0x264de0['y'] = _0x1fdc31['m'][0xd], _0x264de0['z'] = _0x1fdc31['m'][0xe]; } else { var _0x3803f6 = null; _0x35a966 && (_0x3803f6 = _0x35a966['getWorldMatrix']()), this['_skeleton']['computeAbsoluteTransforms'](); var _0x1de29c = _0xdc4e3f['_tmpMats'][0x0]; _0x35a966 && _0x3803f6 ? (_0x1de29c['copyFrom'](this['getAbsoluteTransform']()), _0x1de29c['multiplyToRef'](_0x3803f6, _0x1de29c)) : _0x1de29c = this['getAbsoluteTransform'](), _0x264de0['x'] = _0x1de29c['m'][0xc], _0x264de0['y'] = _0x1de29c['m'][0xd], _0x264de0['z'] = _0x1de29c['m'][0xe]; } } , _0xdc4e3f['prototype']['getAbsolutePosition'] = function(_0x213d8b) { void 0x0 === _0x213d8b && (_0x213d8b = null); var _0x12290a = _0x47d24f['x']['Zero'](); return this['getPositionToRef'](_0x47d24f['s']['WORLD'], _0x213d8b, _0x12290a), _0x12290a; } , _0xdc4e3f['prototype']['getAbsolutePositionToRef'] = function(_0x444c8e, _0x1d1dad) { this['getPositionToRef'](_0x47d24f['s']['WORLD'], _0x444c8e, _0x1d1dad); } , _0xdc4e3f['prototype']['computeAbsoluteTransforms'] = function() { if (this['_compose'](), this['_parent']) this['_localMatrix']['multiplyToRef'](this['_parent']['_absoluteTransform'], this['_absoluteTransform']); else { this['_absoluteTransform']['copyFrom'](this['_localMatrix']); var _0x33faa5 = this['_skeleton']['getPoseMatrix'](); _0x33faa5 && this['_absoluteTransform']['multiplyToRef'](_0x33faa5, this['_absoluteTransform']); } for (var _0x42c47b = this['children'], _0x3dcc27 = _0x42c47b['length'], _0x49d8df = 0x0; _0x49d8df < _0x3dcc27; _0x49d8df++) _0x42c47b[_0x49d8df]['computeAbsoluteTransforms'](); } , _0xdc4e3f['prototype']['getDirection'] = function(_0x1248eb, _0x376809) { void 0x0 === _0x376809 && (_0x376809 = null); var _0x56d95e = _0x47d24f['x']['Zero'](); return this['getDirectionToRef'](_0x1248eb, _0x376809, _0x56d95e), _0x56d95e; } , _0xdc4e3f['prototype']['getDirectionToRef'] = function(_0x1caf81, _0x432d37, _0x58cd39) { void 0x0 === _0x432d37 && (_0x432d37 = null); var _0x410fbe = null; _0x432d37 && (_0x410fbe = _0x432d37['getWorldMatrix']()), this['_skeleton']['computeAbsoluteTransforms'](); var _0x5cef0b = _0xdc4e3f['_tmpMats'][0x0]; _0x5cef0b['copyFrom'](this['getAbsoluteTransform']()), _0x432d37 && _0x410fbe && _0x5cef0b['multiplyToRef'](_0x410fbe, _0x5cef0b), _0x47d24f['x']['TransformNormalToRef'](_0x1caf81, _0x5cef0b, _0x58cd39), _0x58cd39['normalize'](); } , _0xdc4e3f['prototype']['getRotation'] = function(_0x5da62e, _0x53791b) { void 0x0 === _0x5da62e && (_0x5da62e = _0x47d24f['s']['LOCAL']), void 0x0 === _0x53791b && (_0x53791b = null); var _0x2ce618 = _0x47d24f['x']['Zero'](); return this['getRotationToRef'](_0x5da62e, _0x53791b, _0x2ce618), _0x2ce618; } , _0xdc4e3f['prototype']['getRotationToRef'] = function(_0x5cf2a4, _0x202cc9, _0x4c6fa2) { void 0x0 === _0x5cf2a4 && (_0x5cf2a4 = _0x47d24f['s']['LOCAL']), void 0x0 === _0x202cc9 && (_0x202cc9 = null); var _0x404b87 = _0xdc4e3f['_tmpQuat']; this['getRotationQuaternionToRef'](_0x5cf2a4, _0x202cc9, _0x404b87), _0x404b87['toEulerAnglesToRef'](_0x4c6fa2); } , _0xdc4e3f['prototype']['getRotationQuaternion'] = function(_0x1b436e, _0x18251b) { void 0x0 === _0x1b436e && (_0x1b436e = _0x47d24f['s']['LOCAL']), void 0x0 === _0x18251b && (_0x18251b = null); var _0x405e15 = _0x47d24f['q']['Identity'](); return this['getRotationQuaternionToRef'](_0x1b436e, _0x18251b, _0x405e15), _0x405e15; } , _0xdc4e3f['prototype']['getRotationQuaternionToRef'] = function(_0x554a6c, _0x470fd0, _0x21198c) { if (void 0x0 === _0x554a6c && (_0x554a6c = _0x47d24f['s']['LOCAL']), void 0x0 === _0x470fd0 && (_0x470fd0 = null), _0x554a6c == _0x47d24f['s']['LOCAL']) this['_decompose'](), _0x21198c['copyFrom'](this['_localRotation']); else { var _0x10f397 = _0xdc4e3f['_tmpMats'][0x0] , _0x3d08a5 = this['getAbsoluteTransform'](); _0x470fd0 ? _0x3d08a5['multiplyToRef'](_0x470fd0['getWorldMatrix'](), _0x10f397) : _0x10f397['copyFrom'](_0x3d08a5), _0x10f397['multiplyAtIndex'](0x0, this['_scalingDeterminant']), _0x10f397['multiplyAtIndex'](0x1, this['_scalingDeterminant']), _0x10f397['multiplyAtIndex'](0x2, this['_scalingDeterminant']), _0x10f397['decompose'](void 0x0, _0x21198c, void 0x0); } } , _0xdc4e3f['prototype']['getRotationMatrix'] = function(_0x52e796, _0x53f60d) { void 0x0 === _0x52e796 && (_0x52e796 = _0x47d24f['s']['LOCAL']); var _0x1bcb2e = _0x47d24f['j']['Identity'](); return this['getRotationMatrixToRef'](_0x52e796, _0x53f60d, _0x1bcb2e), _0x1bcb2e; } , _0xdc4e3f['prototype']['getRotationMatrixToRef'] = function(_0x1f7f11, _0x1e25ba, _0x2b978e) { if (void 0x0 === _0x1f7f11 && (_0x1f7f11 = _0x47d24f['s']['LOCAL']), _0x1f7f11 == _0x47d24f['s']['LOCAL']) this['getLocalMatrix']()['getRotationMatrixToRef'](_0x2b978e); else { var _0x19a935 = _0xdc4e3f['_tmpMats'][0x0] , _0x2959d1 = this['getAbsoluteTransform'](); _0x1e25ba ? _0x2959d1['multiplyToRef'](_0x1e25ba['getWorldMatrix'](), _0x19a935) : _0x19a935['copyFrom'](_0x2959d1), _0x19a935['multiplyAtIndex'](0x0, this['_scalingDeterminant']), _0x19a935['multiplyAtIndex'](0x1, this['_scalingDeterminant']), _0x19a935['multiplyAtIndex'](0x2, this['_scalingDeterminant']), _0x19a935['getRotationMatrixToRef'](_0x2b978e); } } , _0xdc4e3f['prototype']['getAbsolutePositionFromLocal'] = function(_0x2c44bc, _0x305a71) { void 0x0 === _0x305a71 && (_0x305a71 = null); var _0x4f22ca = _0x47d24f['x']['Zero'](); return this['getAbsolutePositionFromLocalToRef'](_0x2c44bc, _0x305a71, _0x4f22ca), _0x4f22ca; } , _0xdc4e3f['prototype']['getAbsolutePositionFromLocalToRef'] = function(_0x5a864c, _0x28e96a, _0x34df13) { void 0x0 === _0x28e96a && (_0x28e96a = null); var _0x4883a0 = null; _0x28e96a && (_0x4883a0 = _0x28e96a['getWorldMatrix']()), this['_skeleton']['computeAbsoluteTransforms'](); var _0x4f05f7 = _0xdc4e3f['_tmpMats'][0x0]; _0x28e96a && _0x4883a0 ? (_0x4f05f7['copyFrom'](this['getAbsoluteTransform']()), _0x4f05f7['multiplyToRef'](_0x4883a0, _0x4f05f7)) : _0x4f05f7 = this['getAbsoluteTransform'](), _0x47d24f['x']['TransformCoordinatesToRef'](_0x5a864c, _0x4f05f7, _0x34df13); } , _0xdc4e3f['prototype']['getLocalPositionFromAbsolute'] = function(_0x37d295, _0x4d87e3) { void 0x0 === _0x4d87e3 && (_0x4d87e3 = null); var _0x39d490 = _0x47d24f['x']['Zero'](); return this['getLocalPositionFromAbsoluteToRef'](_0x37d295, _0x4d87e3, _0x39d490), _0x39d490; } , _0xdc4e3f['prototype']['getLocalPositionFromAbsoluteToRef'] = function(_0x51ecbb, _0xc8a0ab, _0x58e412) { void 0x0 === _0xc8a0ab && (_0xc8a0ab = null); var _0x4a0513 = null; _0xc8a0ab && (_0x4a0513 = _0xc8a0ab['getWorldMatrix']()), this['_skeleton']['computeAbsoluteTransforms'](); var _0x293725 = _0xdc4e3f['_tmpMats'][0x0]; _0x293725['copyFrom'](this['getAbsoluteTransform']()), _0xc8a0ab && _0x4a0513 && _0x293725['multiplyToRef'](_0x4a0513, _0x293725), _0x293725['invert'](), _0x47d24f['x']['TransformCoordinatesToRef'](_0x51ecbb, _0x293725, _0x58e412); } , _0xdc4e3f['_tmpVecs'] = _0x23c063['a']['BuildArray'](0x2, _0x47d24f['x']['Zero']), _0xdc4e3f['_tmpQuat'] = _0x47d24f['q']['Identity'](), _0xdc4e3f['_tmpMats'] = _0x23c063['a']['BuildArray'](0x5, _0x47d24f['j']['Identity']), _0xdc4e3f; }(_0x111b09['a']) , _0x203476 = function() { function _0x4d259d(_0x5c099f, _0xdb99de, _0x3b2b33, _0x403909, _0x249a99, _0x4d7247, _0x2f1ee8, _0x591f11, _0x421441) { void 0x0 === _0x3b2b33 && (_0x3b2b33 = 0x0), void 0x0 === _0x403909 && (_0x403909 = 0x64), void 0x0 === _0x249a99 && (_0x249a99 = !0x1), void 0x0 === _0x4d7247 && (_0x4d7247 = 0x1), this['target'] = _0xdb99de, this['fromFrame'] = _0x3b2b33, this['toFrame'] = _0x403909, this['loopAnimation'] = _0x249a99, this['onAnimationEnd'] = _0x2f1ee8, this['onAnimationLoop'] = _0x421441, this['_localDelayOffset'] = null, this['_pausedDelay'] = null, this['_runtimeAnimations'] = new Array(), this['_paused'] = !0x1, this['_speedRatio'] = 0x1, this['_weight'] = -0x1, this['_syncRoot'] = null, this['disposeOnEnd'] = !0x0, this['animationStarted'] = !0x1, this['onAnimationEndObservable'] = new _0x2dbec2['c'](), this['onAnimationLoopObservable'] = new _0x2dbec2['c'](), this['_scene'] = _0x5c099f, _0x591f11 && this['appendAnimations'](_0xdb99de, _0x591f11), this['_speedRatio'] = _0x4d7247, _0x5c099f['_activeAnimatables']['push'](this); } return Object['defineProperty'](_0x4d259d['prototype'], 'syncRoot', { 'get': function() { return this['_syncRoot']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4d259d['prototype'], 'masterFrame', { 'get': function() { return 0x0 === this['_runtimeAnimations']['length'] ? 0x0 : this['_runtimeAnimations'][0x0]['currentFrame']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4d259d['prototype'], 'weight', { 'get': function() { return this['_weight']; }, 'set': function(_0x584d40) { this['_weight'] = -0x1 !== _0x584d40 ? Math['min'](Math['max'](_0x584d40, 0x0), 0x1) : -0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4d259d['prototype'], 'speedRatio', { 'get': function() { return this['_speedRatio']; }, 'set': function(_0x23bf24) { for (var _0xb38df7 = 0x0; _0xb38df7 < this['_runtimeAnimations']['length']; _0xb38df7++) { this['_runtimeAnimations'][_0xb38df7]['_prepareForSpeedRatioChange'](_0x23bf24); } this['_speedRatio'] = _0x23bf24; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4d259d['prototype']['syncWith'] = function(_0x2c52a4) { if (this['_syncRoot'] = _0x2c52a4, _0x2c52a4) { var _0x46d2a3 = this['_scene']['_activeAnimatables']['indexOf'](this); _0x46d2a3 > -0x1 && (this['_scene']['_activeAnimatables']['splice'](_0x46d2a3, 0x1), this['_scene']['_activeAnimatables']['push'](this)); } return this; } , _0x4d259d['prototype']['getAnimations'] = function() { return this['_runtimeAnimations']; } , _0x4d259d['prototype']['appendAnimations'] = function(_0x1aea53, _0x4fa011) { for (var _0x22219e = this, _0x85e134 = 0x0; _0x85e134 < _0x4fa011['length']; _0x85e134++) { var _0x34b56c = _0x4fa011[_0x85e134] , _0x474481 = new _0x1afafe(_0x1aea53,_0x34b56c,this['_scene'],this); _0x474481['_onLoop'] = function() { _0x22219e['onAnimationLoopObservable']['notifyObservers'](_0x22219e), _0x22219e['onAnimationLoop'] && _0x22219e['onAnimationLoop'](); } , this['_runtimeAnimations']['push'](_0x474481); } } , _0x4d259d['prototype']['getAnimationByTargetProperty'] = function(_0x5d055d) { for (var _0x40e060 = this['_runtimeAnimations'], _0x4e81a8 = 0x0; _0x4e81a8 < _0x40e060['length']; _0x4e81a8++) if (_0x40e060[_0x4e81a8]['animation']['targetProperty'] === _0x5d055d) return _0x40e060[_0x4e81a8]['animation']; return null; } , _0x4d259d['prototype']['getRuntimeAnimationByTargetProperty'] = function(_0x44df07) { for (var _0x3e52a0 = this['_runtimeAnimations'], _0x208938 = 0x0; _0x208938 < _0x3e52a0['length']; _0x208938++) if (_0x3e52a0[_0x208938]['animation']['targetProperty'] === _0x44df07) return _0x3e52a0[_0x208938]; return null; } , _0x4d259d['prototype']['reset'] = function() { for (var _0x39cd8c = this['_runtimeAnimations'], _0x539a1e = 0x0; _0x539a1e < _0x39cd8c['length']; _0x539a1e++) _0x39cd8c[_0x539a1e]['reset'](!0x0); this['_localDelayOffset'] = null, this['_pausedDelay'] = null; } , _0x4d259d['prototype']['enableBlending'] = function(_0x4fef12) { for (var _0x24c381 = this['_runtimeAnimations'], _0x51b1e0 = 0x0; _0x51b1e0 < _0x24c381['length']; _0x51b1e0++) _0x24c381[_0x51b1e0]['animation']['enableBlending'] = !0x0, _0x24c381[_0x51b1e0]['animation']['blendingSpeed'] = _0x4fef12; } , _0x4d259d['prototype']['disableBlending'] = function() { for (var _0x28541d = this['_runtimeAnimations'], _0x22c635 = 0x0; _0x22c635 < _0x28541d['length']; _0x22c635++) _0x28541d[_0x22c635]['animation']['enableBlending'] = !0x1; } , _0x4d259d['prototype']['goToFrame'] = function(_0x19c74f) { var _0xcd1e4c = this['_runtimeAnimations']; if (_0xcd1e4c[0x0]) { var _0x1818cb = _0xcd1e4c[0x0]['animation']['framePerSecond'] , _0x321c5a = _0x19c74f - _0xcd1e4c[0x0]['currentFrame'] , _0x4997a2 = 0x0 !== this['speedRatio'] ? 0x3e8 * _0x321c5a / (_0x1818cb * this['speedRatio']) : 0x0; null === this['_localDelayOffset'] && (this['_localDelayOffset'] = 0x0), this['_localDelayOffset'] -= _0x4997a2; } for (var _0x28f894 = 0x0; _0x28f894 < _0xcd1e4c['length']; _0x28f894++) _0xcd1e4c[_0x28f894]['goToFrame'](_0x19c74f); } , _0x4d259d['prototype']['pause'] = function() { this['_paused'] || (this['_paused'] = !0x0); } , _0x4d259d['prototype']['restart'] = function() { this['_paused'] = !0x1; } , _0x4d259d['prototype']['_raiseOnAnimationEnd'] = function() { this['onAnimationEnd'] && this['onAnimationEnd'](), this['onAnimationEndObservable']['notifyObservers'](this); } , _0x4d259d['prototype']['stop'] = function(_0x2ffc40, _0x270745) { if (_0x2ffc40 || _0x270745) { var _0x252a32 = this['_scene']['_activeAnimatables']['indexOf'](this); if (_0x252a32 > -0x1) { for (var _0x279a52 = (_0x363c5a = this['_runtimeAnimations'])['length'] - 0x1; _0x279a52 >= 0x0; _0x279a52--) { var _0x54320b = _0x363c5a[_0x279a52]; _0x2ffc40 && _0x54320b['animation']['name'] != _0x2ffc40 || (_0x270745 && !_0x270745(_0x54320b['target']) || (_0x54320b['dispose'](), _0x363c5a['splice'](_0x279a52, 0x1))); } 0x0 == _0x363c5a['length'] && (this['_scene']['_activeAnimatables']['splice'](_0x252a32, 0x1), this['_raiseOnAnimationEnd']()); } } else { if ((_0x279a52 = this['_scene']['_activeAnimatables']['indexOf'](this)) > -0x1) { this['_scene']['_activeAnimatables']['splice'](_0x279a52, 0x1); var _0x363c5a = this['_runtimeAnimations']; for (_0x279a52 = 0x0; _0x279a52 < _0x363c5a['length']; _0x279a52++) _0x363c5a[_0x279a52]['dispose'](); this['_raiseOnAnimationEnd'](); } } } , _0x4d259d['prototype']['waitAsync'] = function() { var _0x203013 = this; return new Promise(function(_0x583a87, _0x48a40a) { _0x203013['onAnimationEndObservable']['add'](function() { _0x583a87(_0x203013); }, void 0x0, void 0x0, _0x203013, !0x0); } ); } , _0x4d259d['prototype']['_animate'] = function(_0x2c7389) { if (this['_paused']) return this['animationStarted'] = !0x1, null === this['_pausedDelay'] && (this['_pausedDelay'] = _0x2c7389), !0x0; if (null === this['_localDelayOffset'] ? (this['_localDelayOffset'] = _0x2c7389, this['_pausedDelay'] = null) : null !== this['_pausedDelay'] && (this['_localDelayOffset'] += _0x2c7389 - this['_pausedDelay'], this['_pausedDelay'] = null), 0x0 === this['_weight']) return !0x0; var _0x56b69d, _0x329907 = !0x1, _0x2031b3 = this['_runtimeAnimations']; for (_0x56b69d = 0x0; _0x56b69d < _0x2031b3['length']; _0x56b69d++) { var _0x507bcf = _0x2031b3[_0x56b69d]['animate'](_0x2c7389 - this['_localDelayOffset'], this['fromFrame'], this['toFrame'], this['loopAnimation'], this['_speedRatio'], this['_weight']); _0x329907 = _0x329907 || _0x507bcf; } if (this['animationStarted'] = _0x329907, !_0x329907) { if (this['disposeOnEnd']) for (_0x56b69d = this['_scene']['_activeAnimatables']['indexOf'](this), this['_scene']['_activeAnimatables']['splice'](_0x56b69d, 0x1), _0x56b69d = 0x0; _0x56b69d < _0x2031b3['length']; _0x56b69d++) _0x2031b3[_0x56b69d]['dispose'](); this['_raiseOnAnimationEnd'](), this['disposeOnEnd'] && (this['onAnimationEnd'] = null, this['onAnimationLoop'] = null, this['onAnimationLoopObservable']['clear'](), this['onAnimationEndObservable']['clear']()); } return _0x329907; } , _0x4d259d; }(); _0x366639['a']['prototype']['_animate'] = function() { if (this['animationsEnabled']) { var _0x3a5003 = this['_activeAnimatables']; if (0x0 !== _0x3a5003['length']) { var _0x174816 = _0x39b2d2['a']['Now']; if (!this['_animationTimeLast']) { if (this['_pendingData']['length'] > 0x0) return; this['_animationTimeLast'] = _0x174816; } var _0x4507cc = this['useConstantAnimationDeltaTime'] ? 0x10 : (_0x174816 - this['_animationTimeLast']) * this['animationTimeScale']; this['_animationTime'] += _0x4507cc; var _0x46714f = this['_animationTime']; this['_animationTimeLast'] = _0x174816; for (var _0xd625c6 = 0x0; _0xd625c6 < _0x3a5003['length']; _0xd625c6++) _0x3a5003[_0xd625c6]['_animate'](_0x46714f); this['_processLateAnimationBindings'](); } } } , _0x366639['a']['prototype']['beginWeightedAnimation'] = function(_0x18ac95, _0x42de01, _0x11217d, _0x240e90, _0x376116, _0x5964a7, _0x1e5e10, _0xa3a568, _0x587660, _0xbc812) { void 0x0 === _0x240e90 && (_0x240e90 = 0x1), void 0x0 === _0x5964a7 && (_0x5964a7 = 0x1); var _0x3e43c6 = this['beginAnimation'](_0x18ac95, _0x42de01, _0x11217d, _0x376116, _0x5964a7, _0x1e5e10, _0xa3a568, !0x1, _0x587660, _0xbc812); return _0x3e43c6['weight'] = _0x240e90, _0x3e43c6; } , _0x366639['a']['prototype']['beginAnimation'] = function(_0x2f5314, _0xbfe92e, _0x482ca2, _0x5ec2e1, _0x47ecc2, _0x390f77, _0x3afc9b, _0x3bca38, _0x1406a1, _0x11553d) { void 0x0 === _0x47ecc2 && (_0x47ecc2 = 0x1), void 0x0 === _0x3bca38 && (_0x3bca38 = !0x0), _0xbfe92e > _0x482ca2 && _0x47ecc2 > 0x0 && (_0x47ecc2 *= -0x1), _0x3bca38 && this['stopAnimation'](_0x2f5314, void 0x0, _0x1406a1), _0x3afc9b || (_0x3afc9b = new _0x203476(this,_0x2f5314,_0xbfe92e,_0x482ca2,_0x5ec2e1,_0x47ecc2,_0x390f77,void 0x0,_0x11553d)); var _0x416a3a = !_0x1406a1 || _0x1406a1(_0x2f5314); if (_0x2f5314['animations'] && _0x416a3a && _0x3afc9b['appendAnimations'](_0x2f5314, _0x2f5314['animations']), _0x2f5314['getAnimatables']) for (var _0x4ce752 = _0x2f5314['getAnimatables'](), _0x5f0d46 = 0x0; _0x5f0d46 < _0x4ce752['length']; _0x5f0d46++) this['beginAnimation'](_0x4ce752[_0x5f0d46], _0xbfe92e, _0x482ca2, _0x5ec2e1, _0x47ecc2, _0x390f77, _0x3afc9b, _0x3bca38, _0x1406a1, _0x11553d); return _0x3afc9b['reset'](), _0x3afc9b; } , _0x366639['a']['prototype']['beginHierarchyAnimation'] = function(_0x2ca4bb, _0x240b51, _0x65a669, _0x114db8, _0x4cd637, _0x16c2d2, _0x50c8bd, _0x4933c9, _0x452b4d, _0x5ea98d, _0x35334d) { void 0x0 === _0x16c2d2 && (_0x16c2d2 = 0x1), void 0x0 === _0x452b4d && (_0x452b4d = !0x0); var _0x723643 = _0x2ca4bb['getDescendants'](_0x240b51) , _0x1293cf = []; _0x1293cf['push'](this['beginAnimation'](_0x2ca4bb, _0x65a669, _0x114db8, _0x4cd637, _0x16c2d2, _0x50c8bd, _0x4933c9, _0x452b4d, _0x5ea98d)); for (var _0x3f9372 = 0x0, _0xe542a8 = _0x723643; _0x3f9372 < _0xe542a8['length']; _0x3f9372++) { var _0xcc8247 = _0xe542a8[_0x3f9372]; _0x1293cf['push'](this['beginAnimation'](_0xcc8247, _0x65a669, _0x114db8, _0x4cd637, _0x16c2d2, _0x50c8bd, _0x4933c9, _0x452b4d, _0x5ea98d)); } return _0x1293cf; } , _0x366639['a']['prototype']['beginDirectAnimation'] = function(_0x51b79d, _0x597bed, _0x24ff94, _0x3a3d1c, _0x55d84a, _0x26d08f, _0x4b4ca2, _0x19bf26) { return void 0x0 === _0x26d08f && (_0x26d08f = 0x1), new _0x203476(this,_0x51b79d,_0x24ff94,_0x3a3d1c,_0x55d84a,_0x26d08f,_0x4b4ca2,_0x597bed,_0x19bf26); } , _0x366639['a']['prototype']['beginDirectHierarchyAnimation'] = function(_0x15743f, _0x26dd9a, _0x3b07f2, _0x45c8dd, _0x1d4ef9, _0x2a559d, _0x26652e, _0x3a765a, _0x2c8cff) { var _0x40f918 = _0x15743f['getDescendants'](_0x26dd9a) , _0x1b1f53 = []; _0x1b1f53['push'](this['beginDirectAnimation'](_0x15743f, _0x3b07f2, _0x45c8dd, _0x1d4ef9, _0x2a559d, _0x26652e, _0x3a765a, _0x2c8cff)); for (var _0x4133ba = 0x0, _0x3ad913 = _0x40f918; _0x4133ba < _0x3ad913['length']; _0x4133ba++) { var _0x3efdd1 = _0x3ad913[_0x4133ba]; _0x1b1f53['push'](this['beginDirectAnimation'](_0x3efdd1, _0x3b07f2, _0x45c8dd, _0x1d4ef9, _0x2a559d, _0x26652e, _0x3a765a, _0x2c8cff)); } return _0x1b1f53; } , _0x366639['a']['prototype']['getAnimatableByTarget'] = function(_0x54e0c8) { for (var _0x1745dc = 0x0; _0x1745dc < this['_activeAnimatables']['length']; _0x1745dc++) if (this['_activeAnimatables'][_0x1745dc]['target'] === _0x54e0c8) return this['_activeAnimatables'][_0x1745dc]; return null; } , _0x366639['a']['prototype']['getAllAnimatablesByTarget'] = function(_0x4e6d41) { for (var _0x5186bb = [], _0x1006c1 = 0x0; _0x1006c1 < this['_activeAnimatables']['length']; _0x1006c1++) this['_activeAnimatables'][_0x1006c1]['target'] === _0x4e6d41 && _0x5186bb['push'](this['_activeAnimatables'][_0x1006c1]); return _0x5186bb; } , _0x366639['a']['prototype']['stopAnimation'] = function(_0x3b99c3, _0x1d988a, _0x250c27) { for (var _0x156697 = 0x0, _0x1b5620 = this['getAllAnimatablesByTarget'](_0x3b99c3); _0x156697 < _0x1b5620['length']; _0x156697++) { _0x1b5620[_0x156697]['stop'](_0x1d988a, _0x250c27); } } , _0x366639['a']['prototype']['stopAllAnimations'] = function() { if (this['_activeAnimatables']) { for (var _0x25bfca = 0x0; _0x25bfca < this['_activeAnimatables']['length']; _0x25bfca++) this['_activeAnimatables'][_0x25bfca]['stop'](); this['_activeAnimatables'] = []; } for (var _0x8e4560 = 0x0, _0x58bc13 = this['animationGroups']; _0x8e4560 < _0x58bc13['length']; _0x8e4560++) { _0x58bc13[_0x8e4560]['stop'](); } } , _0x366639['a']['prototype']['_registerTargetForLateAnimationBinding'] = function(_0x21831c, _0x44de3e) { var _0x20741f = _0x21831c['target']; this['_registeredForLateAnimationBindings']['pushNoDuplicate'](_0x20741f), _0x20741f['_lateAnimationHolders'] || (_0x20741f['_lateAnimationHolders'] = {}), _0x20741f['_lateAnimationHolders'][_0x21831c['targetPath']] || (_0x20741f['_lateAnimationHolders'][_0x21831c['targetPath']] = { 'totalWeight': 0x0, 'animations': [], 'originalValue': _0x44de3e }), _0x20741f['_lateAnimationHolders'][_0x21831c['targetPath']]['animations']['push'](_0x21831c), _0x20741f['_lateAnimationHolders'][_0x21831c['targetPath']]['totalWeight'] += _0x21831c['weight']; } , _0x366639['a']['prototype']['_processLateAnimationBindingsForMatrices'] = function(_0x10c4e2) { var _0x118240 = 0x1 , _0x1beabf = _0x47d24f['t']['Vector3'][0x0] , _0x59fddf = _0x47d24f['t']['Vector3'][0x1] , _0x419a1f = _0x47d24f['t']['Quaternion'][0x0] , _0x2b7552 = 0x0 , _0x9eebd1 = _0x10c4e2['animations'][0x0] , _0xee7719 = _0x10c4e2['originalValue'] , _0x5799ec = 0x1; if (_0x10c4e2['totalWeight'] < 0x1) _0xee7719['decompose'](_0x59fddf, _0x419a1f, _0x1beabf), _0x5799ec = 0x1 - _0x10c4e2['totalWeight']; else if (_0x2b7552 = 0x1, _0x118240 = _0x10c4e2['totalWeight'], _0x9eebd1['currentValue']['decompose'](_0x59fddf, _0x419a1f, _0x1beabf), 0x1 == (_0x5799ec = _0x9eebd1['weight'] / _0x118240)) return _0x9eebd1['currentValue']; _0x59fddf['scaleInPlace'](_0x5799ec), _0x1beabf['scaleInPlace'](_0x5799ec), _0x419a1f['scaleInPlace'](_0x5799ec); for (var _0x3b86b8 = _0x2b7552; _0x3b86b8 < _0x10c4e2['animations']['length']; _0x3b86b8++) { var _0x3f8992 = _0x10c4e2['animations'][_0x3b86b8] , _0xd9dbc = (_0x5799ec = _0x3f8992['weight'] / _0x118240, _0x47d24f['t']['Vector3'][0x2]) , _0x1ff262 = _0x47d24f['t']['Vector3'][0x3] , _0x1323b6 = _0x47d24f['t']['Quaternion'][0x1]; _0x3f8992['currentValue']['decompose'](_0x1ff262, _0x1323b6, _0xd9dbc), _0x1ff262['scaleAndAddToRef'](_0x5799ec, _0x59fddf), _0x1323b6['scaleAndAddToRef'](_0x5799ec, _0x419a1f), _0xd9dbc['scaleAndAddToRef'](_0x5799ec, _0x1beabf); } var _0x3c41c8 = _0x9eebd1['_animationState']['workValue']; return _0x47d24f['j']['ComposeToRef'](_0x59fddf, _0x419a1f, _0x1beabf, _0x3c41c8), _0x3c41c8; } , _0x366639['a']['prototype']['_processLateAnimationBindingsForQuaternions'] = function(_0x1220ea, _0x5699e9) { var _0x3f14aa = _0x1220ea['animations'][0x0] , _0xfa1a0f = _0x1220ea['originalValue']; if (0x1 === _0x1220ea['animations']['length']) return _0x47d24f['q']['SlerpToRef'](_0xfa1a0f, _0x3f14aa['currentValue'], Math['min'](0x1, _0x1220ea['totalWeight']), _0x5699e9), _0x5699e9; var _0x192ebb, _0x947cac, _0x59be2f = 0x1; if (_0x1220ea['totalWeight'] < 0x1) { var _0x1f9086 = 0x1 - _0x1220ea['totalWeight']; _0x947cac = [], (_0x192ebb = [])['push'](_0xfa1a0f), _0x947cac['push'](_0x1f9086); } else { if (0x2 === _0x1220ea['animations']['length']) return _0x47d24f['q']['SlerpToRef'](_0x1220ea['animations'][0x0]['currentValue'], _0x1220ea['animations'][0x1]['currentValue'], _0x1220ea['animations'][0x1]['weight'] / _0x1220ea['totalWeight'], _0x5699e9), _0x5699e9; _0x192ebb = [], _0x947cac = [], _0x59be2f = _0x1220ea['totalWeight']; } for (var _0x1aa308 = 0x0; _0x1aa308 < _0x1220ea['animations']['length']; _0x1aa308++) { var _0x2714fa = _0x1220ea['animations'][_0x1aa308]; _0x192ebb['push'](_0x2714fa['currentValue']), _0x947cac['push'](_0x2714fa['weight'] / _0x59be2f); } for (var _0x2e63ad = 0x0, _0x489d3b = null, _0x1c8db2 = 0x0; _0x1c8db2 < _0x192ebb['length']; ) _0x489d3b ? (_0x2e63ad += _0x947cac[_0x1c8db2], _0x47d24f['q']['SlerpToRef'](_0x489d3b, _0x192ebb[_0x1c8db2], _0x947cac[_0x1c8db2] / _0x2e63ad, _0x489d3b), _0x1c8db2++) : (_0x47d24f['q']['SlerpToRef'](_0x192ebb[_0x1c8db2], _0x192ebb[_0x1c8db2 + 0x1], _0x947cac[_0x1c8db2 + 0x1] / (_0x947cac[_0x1c8db2] + _0x947cac[_0x1c8db2 + 0x1]), _0x5699e9), _0x489d3b = _0x5699e9, _0x2e63ad = _0x947cac[_0x1c8db2] + _0x947cac[_0x1c8db2 + 0x1], _0x1c8db2 += 0x2); return _0x489d3b; } , _0x366639['a']['prototype']['_processLateAnimationBindings'] = function() { if (this['_registeredForLateAnimationBindings']['length']) { for (var _0x1f3cca = 0x0; _0x1f3cca < this['_registeredForLateAnimationBindings']['length']; _0x1f3cca++) { var _0x234e06 = this['_registeredForLateAnimationBindings']['data'][_0x1f3cca]; for (var _0x3c7dd0 in _0x234e06['_lateAnimationHolders']) { var _0x39e51e = _0x234e06['_lateAnimationHolders'][_0x3c7dd0] , _0x45459c = _0x39e51e['animations'][0x0] , _0x39d673 = _0x39e51e['originalValue'] , _0x4c3eea = _0x4452f5['AllowMatrixDecomposeForInterpolation'] && _0x39d673['m'] , _0x2d7968 = _0x234e06[_0x3c7dd0]; if (_0x4c3eea) _0x2d7968 = this['_processLateAnimationBindingsForMatrices'](_0x39e51e); else if (void 0x0 !== _0x39d673['w']) _0x2d7968 = this['_processLateAnimationBindingsForQuaternions'](_0x39e51e, _0x2d7968 || _0x47d24f['q']['Identity']()); else { var _0x4ac317 = 0x0 , _0x1a3b5e = 0x1; if (_0x39e51e['totalWeight'] < 0x1) _0x2d7968 = _0x39d673['scale'] ? _0x39d673['scale'](0x1 - _0x39e51e['totalWeight']) : _0x39d673 * (0x1 - _0x39e51e['totalWeight']); else { _0x1a3b5e = _0x39e51e['totalWeight']; var _0x2bc2d5 = _0x45459c['weight'] / _0x1a3b5e; _0x2d7968 = 0x1 !== _0x2bc2d5 ? _0x45459c['currentValue']['scale'] ? _0x45459c['currentValue']['scale'](_0x2bc2d5) : _0x45459c['currentValue'] * _0x2bc2d5 : _0x45459c['currentValue'], _0x4ac317 = 0x1; } for (var _0x5ae1c0 = _0x4ac317; _0x5ae1c0 < _0x39e51e['animations']['length']; _0x5ae1c0++) { var _0x35f401 = _0x39e51e['animations'][_0x5ae1c0] , _0x46425d = _0x35f401['weight'] / _0x1a3b5e; _0x35f401['currentValue']['scaleAndAddToRef'] ? _0x35f401['currentValue']['scaleAndAddToRef'](_0x46425d, _0x2d7968) : _0x2d7968 += _0x35f401['currentValue'] * _0x46425d; } } _0x234e06[_0x3c7dd0] = _0x2d7968; } _0x234e06['_lateAnimationHolders'] = {}; } this['_registeredForLateAnimationBindings']['reset'](); } } , _0x814309['prototype']['copyAnimationRange'] = function(_0x27b64a, _0xa573e1, _0x255a69, _0x8ef43d, _0x1e0716) { void 0x0 === _0x8ef43d && (_0x8ef43d = !0x1), void 0x0 === _0x1e0716 && (_0x1e0716 = null), 0x0 === this['animations']['length'] && (this['animations']['push'](new _0x4452f5(this['name'],'_matrix',_0x27b64a['animations'][0x0]['framePerSecond'],_0x4452f5['ANIMATIONTYPE_MATRIX'],0x0)), this['animations'][0x0]['setKeys']([])); var _0x41a98c = _0x27b64a['animations'][0x0]['getRange'](_0xa573e1); if (!_0x41a98c) return !0x1; for (var _0x528680, _0x373dba, _0x38fe81, _0x435091 = _0x41a98c['from'], _0x4fb392 = _0x41a98c['to'], _0x31be9a = _0x27b64a['animations'][0x0]['getKeys'](), _0x5c2afa = _0x27b64a['length'], _0x5d02a3 = _0x27b64a['getParent'](), _0x41f4c7 = this['getParent'](), _0x5e823a = _0x8ef43d && _0x5d02a3 && _0x5c2afa && this['length'] && _0x5c2afa !== this['length'], _0x53ae68 = _0x5e823a && _0x41f4c7 && _0x5d02a3 ? _0x41f4c7['length'] / _0x5d02a3['length'] : 0x1, _0x5aa27a = _0x8ef43d && !_0x41f4c7 && _0x1e0716 && (0x1 !== _0x1e0716['x'] || 0x1 !== _0x1e0716['y'] || 0x1 !== _0x1e0716['z']), _0xeb13a0 = this['animations'][0x0]['getKeys'](), _0x2d5e80 = 0x0, _0x3fd3a1 = _0x31be9a['length']; _0x2d5e80 < _0x3fd3a1; _0x2d5e80++) (_0x528680 = _0x31be9a[_0x2d5e80])['frame'] >= _0x435091 && _0x528680['frame'] <= _0x4fb392 && (_0x8ef43d ? (_0x38fe81 = _0x528680['value']['clone'](), _0x5e823a ? (_0x373dba = _0x38fe81['getTranslation'](), _0x38fe81['setTranslation'](_0x373dba['scaleInPlace'](_0x53ae68))) : _0x5aa27a && _0x1e0716 ? (_0x373dba = _0x38fe81['getTranslation'](), _0x38fe81['setTranslation'](_0x373dba['multiplyInPlace'](_0x1e0716))) : _0x38fe81 = _0x528680['value']) : _0x38fe81 = _0x528680['value'], _0xeb13a0['push']({ 'frame': _0x528680['frame'] + _0x255a69, 'value': _0x38fe81 })); return this['animations'][0x0]['createRange'](_0xa573e1, _0x435091 + _0x255a69, _0x4fb392 + _0x255a69), !0x0; } ; var _0x1c0a71 = function() { return function() {} ; }() , _0x46b94c = function() { function _0x248574(_0x18def6, _0x582d09) { void 0x0 === _0x582d09 && (_0x582d09 = null), this['name'] = _0x18def6, this['_targetedAnimations'] = new Array(), this['_animatables'] = new Array(), this['_from'] = Number['MAX_VALUE'], this['_to'] = -Number['MAX_VALUE'], this['_speedRatio'] = 0x1, this['_loopAnimation'] = !0x1, this['onAnimationEndObservable'] = new _0x2dbec2['c'](), this['onAnimationLoopObservable'] = new _0x2dbec2['c'](), this['onAnimationGroupEndObservable'] = new _0x2dbec2['c'](), this['onAnimationGroupPauseObservable'] = new _0x2dbec2['c'](), this['onAnimationGroupPlayObservable'] = new _0x2dbec2['c'](), this['_scene'] = _0x582d09 || _0x48707b['a']['LastCreatedScene'], this['uniqueId'] = this['_scene']['getUniqueId'](), this['_scene']['animationGroups']['push'](this); } return Object['defineProperty'](_0x248574['prototype'], 'from', { 'get': function() { return this['_from']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x248574['prototype'], 'to', { 'get': function() { return this['_to']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x248574['prototype'], 'isStarted', { 'get': function() { return this['_isStarted']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x248574['prototype'], 'isPlaying', { 'get': function() { return this['_isStarted'] && !this['_isPaused']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x248574['prototype'], 'speedRatio', { 'get': function() { return this['_speedRatio']; }, 'set': function(_0x234a62) { if (this['_speedRatio'] !== _0x234a62) { this['_speedRatio'] = _0x234a62; for (var _0x2e0fab = 0x0; _0x2e0fab < this['_animatables']['length']; _0x2e0fab++) { this['_animatables'][_0x2e0fab]['speedRatio'] = this['_speedRatio']; } } }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x248574['prototype'], 'loopAnimation', { 'get': function() { return this['_loopAnimation']; }, 'set': function(_0x27f19a) { if (this['_loopAnimation'] !== _0x27f19a) { this['_loopAnimation'] = _0x27f19a; for (var _0x40955c = 0x0; _0x40955c < this['_animatables']['length']; _0x40955c++) { this['_animatables'][_0x40955c]['loopAnimation'] = this['_loopAnimation']; } } }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x248574['prototype'], 'targetedAnimations', { 'get': function() { return this['_targetedAnimations']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x248574['prototype'], 'animatables', { 'get': function() { return this['_animatables']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x248574['prototype']['addTargetedAnimation'] = function(_0x23c328, _0x52b490) { var _0xfc22ac = { 'animation': _0x23c328, 'target': _0x52b490 } , _0x58eede = _0x23c328['getKeys'](); return this['_from'] > _0x58eede[0x0]['frame'] && (this['_from'] = _0x58eede[0x0]['frame']), this['_to'] < _0x58eede[_0x58eede['length'] - 0x1]['frame'] && (this['_to'] = _0x58eede[_0x58eede['length'] - 0x1]['frame']), this['_targetedAnimations']['push'](_0xfc22ac), _0xfc22ac; } , _0x248574['prototype']['normalize'] = function(_0x2f45a3, _0x447db2) { void 0x0 === _0x2f45a3 && (_0x2f45a3 = null), void 0x0 === _0x447db2 && (_0x447db2 = null), null == _0x2f45a3 && (_0x2f45a3 = this['_from']), null == _0x447db2 && (_0x447db2 = this['_to']); for (var _0x106c46 = 0x0; _0x106c46 < this['_targetedAnimations']['length']; _0x106c46++) { var _0x26e281 = this['_targetedAnimations'][_0x106c46]['animation']['getKeys']() , _0x18b0c6 = _0x26e281[0x0] , _0x3862e8 = _0x26e281[_0x26e281['length'] - 0x1]; if (_0x18b0c6['frame'] > _0x2f45a3) { var _0x18af94 = { 'frame': _0x2f45a3, 'value': _0x18b0c6['value'], 'inTangent': _0x18b0c6['inTangent'], 'outTangent': _0x18b0c6['outTangent'], 'interpolation': _0x18b0c6['interpolation'] }; _0x26e281['splice'](0x0, 0x0, _0x18af94); } if (_0x3862e8['frame'] < _0x447db2) { _0x18af94 = { 'frame': _0x447db2, 'value': _0x3862e8['value'], 'inTangent': _0x3862e8['outTangent'], 'outTangent': _0x3862e8['outTangent'], 'interpolation': _0x3862e8['interpolation'] }; _0x26e281['push'](_0x18af94); } } return this['_from'] = _0x2f45a3, this['_to'] = _0x447db2, this; } , _0x248574['prototype']['start'] = function(_0x43ab62, _0x9976d6, _0x1a0d08, _0x549960) { var _0x43b6db = this; if (void 0x0 === _0x43ab62 && (_0x43ab62 = !0x1), void 0x0 === _0x9976d6 && (_0x9976d6 = 0x1), this['_isStarted'] || 0x0 === this['_targetedAnimations']['length']) return this; this['_loopAnimation'] = _0x43ab62; for (var _0x4f5316 = function(_0x38ab97) { var _0x97ba9c = _0x592355['_scene']['beginDirectAnimation'](_0x38ab97['target'], [_0x38ab97['animation']], void 0x0 !== _0x1a0d08 ? _0x1a0d08 : _0x592355['_from'], void 0x0 !== _0x549960 ? _0x549960 : _0x592355['_to'], _0x43ab62, _0x9976d6); _0x97ba9c['onAnimationEnd'] = function() { _0x43b6db['onAnimationEndObservable']['notifyObservers'](_0x38ab97), _0x43b6db['_checkAnimationGroupEnded'](_0x97ba9c); } , _0x97ba9c['onAnimationLoop'] = function() { _0x43b6db['onAnimationLoopObservable']['notifyObservers'](_0x38ab97); } , _0x592355['_animatables']['push'](_0x97ba9c); }, _0x592355 = this, _0x52cbdc = 0x0, _0x26d51c = this['_targetedAnimations']; _0x52cbdc < _0x26d51c['length']; _0x52cbdc++) { _0x4f5316(_0x26d51c[_0x52cbdc]); } if (this['_speedRatio'] = _0x9976d6, void 0x0 !== _0x1a0d08 && void 0x0 !== _0x549960) if (_0x1a0d08 < _0x549960 && this['_speedRatio'] < 0x0) { var _0x13ff09 = _0x549960; _0x549960 = _0x1a0d08, _0x1a0d08 = _0x13ff09; } else _0x1a0d08 > _0x549960 && this['_speedRatio'] > 0x0 && (this['_speedRatio'] = -_0x9976d6); return this['_isStarted'] = !0x0, this['_isPaused'] = !0x1, this['onAnimationGroupPlayObservable']['notifyObservers'](this), this; } , _0x248574['prototype']['pause'] = function() { if (!this['_isStarted']) return this; this['_isPaused'] = !0x0; for (var _0x5778b0 = 0x0; _0x5778b0 < this['_animatables']['length']; _0x5778b0++) { this['_animatables'][_0x5778b0]['pause'](); } return this['onAnimationGroupPauseObservable']['notifyObservers'](this), this; } , _0x248574['prototype']['play'] = function(_0x1ba71e) { return this['isStarted'] && this['_animatables']['length'] === this['_targetedAnimations']['length'] ? (void 0x0 !== _0x1ba71e && (this['loopAnimation'] = _0x1ba71e), this['restart']()) : (this['stop'](), this['start'](_0x1ba71e, this['_speedRatio'])), this['_isPaused'] = !0x1, this; } , _0x248574['prototype']['reset'] = function() { if (!this['_isStarted']) return this; for (var _0x334cd5 = 0x0; _0x334cd5 < this['_animatables']['length']; _0x334cd5++) { this['_animatables'][_0x334cd5]['reset'](); } return this; } , _0x248574['prototype']['restart'] = function() { if (!this['_isStarted']) return this; for (var _0x37335a = 0x0; _0x37335a < this['_animatables']['length']; _0x37335a++) { this['_animatables'][_0x37335a]['restart'](); } return this['onAnimationGroupPlayObservable']['notifyObservers'](this), this; } , _0x248574['prototype']['stop'] = function() { if (!this['_isStarted']) return this; for (var _0x45a195 = this['_animatables']['slice'](), _0x34e250 = 0x0; _0x34e250 < _0x45a195['length']; _0x34e250++) _0x45a195[_0x34e250]['stop'](); return this['_isStarted'] = !0x1, this; } , _0x248574['prototype']['setWeightForAllAnimatables'] = function(_0x1d447e) { for (var _0x4d9684 = 0x0; _0x4d9684 < this['_animatables']['length']; _0x4d9684++) { this['_animatables'][_0x4d9684]['weight'] = _0x1d447e; } return this; } , _0x248574['prototype']['syncAllAnimationsWith'] = function(_0x20abea) { for (var _0x92afd6 = 0x0; _0x92afd6 < this['_animatables']['length']; _0x92afd6++) { this['_animatables'][_0x92afd6]['syncWith'](_0x20abea); } return this; } , _0x248574['prototype']['goToFrame'] = function(_0x32d914) { if (!this['_isStarted']) return this; for (var _0x3d8719 = 0x0; _0x3d8719 < this['_animatables']['length']; _0x3d8719++) { this['_animatables'][_0x3d8719]['goToFrame'](_0x32d914); } return this; } , _0x248574['prototype']['dispose'] = function() { this['_targetedAnimations'] = [], this['_animatables'] = []; var _0x3fb907 = this['_scene']['animationGroups']['indexOf'](this); _0x3fb907 > -0x1 && this['_scene']['animationGroups']['splice'](_0x3fb907, 0x1), this['onAnimationEndObservable']['clear'](), this['onAnimationGroupEndObservable']['clear'](), this['onAnimationGroupPauseObservable']['clear'](), this['onAnimationGroupPlayObservable']['clear'](), this['onAnimationLoopObservable']['clear'](); } , _0x248574['prototype']['_checkAnimationGroupEnded'] = function(_0x262c4e) { var _0x597c27 = this['_animatables']['indexOf'](_0x262c4e); _0x597c27 > -0x1 && this['_animatables']['splice'](_0x597c27, 0x1), 0x0 === this['_animatables']['length'] && (this['_isStarted'] = !0x1, this['onAnimationGroupEndObservable']['notifyObservers'](this)); } , _0x248574['prototype']['clone'] = function(_0x4715d3, _0x3a5f78) { for (var _0x116676 = new _0x248574(_0x4715d3 || this['name'],this['_scene']), _0x1bb244 = 0x0, _0x122e86 = this['_targetedAnimations']; _0x1bb244 < _0x122e86['length']; _0x1bb244++) { var _0xc363c6 = _0x122e86[_0x1bb244]; _0x116676['addTargetedAnimation'](_0xc363c6['animation']['clone'](), _0x3a5f78 ? _0x3a5f78(_0xc363c6['target']) : _0xc363c6['target']); } return _0x116676; } , _0x248574['Parse'] = function(_0x4d1098, _0x53443b) { for (var _0x299f49 = new _0x248574(_0x4d1098['name'],_0x53443b), _0x2bff8d = 0x0; _0x2bff8d < _0x4d1098['targetedAnimations']['length']; _0x2bff8d++) { var _0x8de47b = _0x4d1098['targetedAnimations'][_0x2bff8d] , _0x4b2d33 = _0x4452f5['Parse'](_0x8de47b['animation']) , _0x15affc = _0x8de47b['targetId']; if ('influence' === _0x8de47b['animation']['property']) { var _0x531130 = _0x53443b['getMorphTargetById'](_0x15affc); _0x531130 && _0x299f49['addTargetedAnimation'](_0x4b2d33, _0x531130); } else { var _0x7dede3 = _0x53443b['getNodeByID'](_0x15affc); null != _0x7dede3 && _0x299f49['addTargetedAnimation'](_0x4b2d33, _0x7dede3); } } return null !== _0x4d1098['from'] && null !== _0x4d1098['from'] && _0x299f49['normalize'](_0x4d1098['from'], _0x4d1098['to']), _0x299f49; } , _0x248574['prototype']['getClassName'] = function() { return 'AnimationGroup'; } , _0x248574['prototype']['toString'] = function(_0xdf145d) { var _0x4c28ae = 'Name:\x20' + this['name']; return _0x4c28ae += ',\x20type:\x20' + this['getClassName'](), _0xdf145d && (_0x4c28ae += ',\x20from:\x20' + this['_from'], _0x4c28ae += ',\x20to:\x20' + this['_to'], _0x4c28ae += ',\x20isStarted:\x20' + this['_isStarted'], _0x4c28ae += ',\x20speedRatio:\x20' + this['_speedRatio'], _0x4c28ae += ',\x20targetedAnimations\x20length:\x20' + this['_targetedAnimations']['length'], _0x4c28ae += ',\x20animatables\x20length:\x20' + this['_animatables']), _0x4c28ae; } , _0x248574; }() , _0x12cefe = function() { return function() { this['enableBlending'] = !0x1, this['blendingSpeed'] = 0.01, this['loopMode'] = _0x4452f5['ANIMATIONLOOPMODE_CYCLE']; } ; }() , _0x5f17eb = function() { function _0x5ccd01() { this['_easingMode'] = _0x5ccd01['EASINGMODE_EASEIN']; } return _0x5ccd01['prototype']['setEasingMode'] = function(_0x73708f) { var _0x4265a1 = Math['min'](Math['max'](_0x73708f, 0x0), 0x2); this['_easingMode'] = _0x4265a1; } , _0x5ccd01['prototype']['getEasingMode'] = function() { return this['_easingMode']; } , _0x5ccd01['prototype']['easeInCore'] = function(_0x39fd16) { throw new Error('You\x20must\x20implement\x20this\x20method'); } , _0x5ccd01['prototype']['ease'] = function(_0x84f098) { switch (this['_easingMode']) { case _0x5ccd01['EASINGMODE_EASEIN']: return this['easeInCore'](_0x84f098); case _0x5ccd01['EASINGMODE_EASEOUT']: return 0x1 - this['easeInCore'](0x1 - _0x84f098); } return _0x84f098 >= 0.5 ? 0.5 * (0x1 - this['easeInCore'](0x2 * (0x1 - _0x84f098))) + 0.5 : 0.5 * this['easeInCore'](0x2 * _0x84f098); } , _0x5ccd01['EASINGMODE_EASEIN'] = 0x0, _0x5ccd01['EASINGMODE_EASEOUT'] = 0x1, _0x5ccd01['EASINGMODE_EASEINOUT'] = 0x2, _0x5ccd01; }() , _0x4425fc = function(_0xd7f13) { function _0x1e73c9() { return null !== _0xd7f13 && _0xd7f13['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x1e73c9, _0xd7f13), _0x1e73c9['prototype']['easeInCore'] = function(_0x41d7bc) { return _0x41d7bc = Math['max'](0x0, Math['min'](0x1, _0x41d7bc)), 0x1 - Math['sqrt'](0x1 - _0x41d7bc * _0x41d7bc); } , _0x1e73c9; }(_0x5f17eb) , _0x4b0507 = function(_0x583ecc) { function _0x987577(_0x37791c) { void 0x0 === _0x37791c && (_0x37791c = 0x1); var _0x1b6c4b = _0x583ecc['call'](this) || this; return _0x1b6c4b['amplitude'] = _0x37791c, _0x1b6c4b; } return _0x420e5b['d'](_0x987577, _0x583ecc), _0x987577['prototype']['easeInCore'] = function(_0x3827da) { var _0x1d4e8c = Math['max'](0x0, this['amplitude']); return Math['pow'](_0x3827da, 0x3) - _0x3827da * _0x1d4e8c * Math['sin'](3.141592653589793 * _0x3827da); } , _0x987577; }(_0x5f17eb) , _0x122ad3 = function(_0x366e75) { function _0x3781ee(_0x4ad379, _0x2967c0) { void 0x0 === _0x4ad379 && (_0x4ad379 = 0x3), void 0x0 === _0x2967c0 && (_0x2967c0 = 0x2); var _0x2fc62d = _0x366e75['call'](this) || this; return _0x2fc62d['bounces'] = _0x4ad379, _0x2fc62d['bounciness'] = _0x2967c0, _0x2fc62d; } return _0x420e5b['d'](_0x3781ee, _0x366e75), _0x3781ee['prototype']['easeInCore'] = function(_0x20c09d) { var _0x2ce71b = Math['max'](0x0, this['bounces']) , _0x4521b8 = this['bounciness']; _0x4521b8 <= 0x1 && (_0x4521b8 = 1.001); var _0x1569b7 = Math['pow'](_0x4521b8, _0x2ce71b) , _0x291ce1 = 0x1 - _0x4521b8 , _0x4341ba = (0x1 - _0x1569b7) / _0x291ce1 + 0.5 * _0x1569b7 , _0x2349d8 = _0x20c09d * _0x4341ba , _0x813b1c = Math['log'](-_0x2349d8 * (0x1 - _0x4521b8) + 0x1) / Math['log'](_0x4521b8) , _0x4b0a23 = Math['floor'](_0x813b1c) , _0x1aaeb2 = _0x4b0a23 + 0x1 , _0x2c0603 = (0x1 - Math['pow'](_0x4521b8, _0x4b0a23)) / (_0x291ce1 * _0x4341ba) , _0x284b3e = 0.5 * (_0x2c0603 + (0x1 - Math['pow'](_0x4521b8, _0x1aaeb2)) / (_0x291ce1 * _0x4341ba)) , _0xf1728e = _0x20c09d - _0x284b3e , _0x48687a = _0x284b3e - _0x2c0603; return -Math['pow'](0x1 / _0x4521b8, _0x2ce71b - _0x4b0a23) / (_0x48687a * _0x48687a) * (_0xf1728e - _0x48687a) * (_0xf1728e + _0x48687a); } , _0x3781ee; }(_0x5f17eb) , _0xabe8f1 = function(_0x8c7628) { function _0x2233e6() { return null !== _0x8c7628 && _0x8c7628['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x2233e6, _0x8c7628), _0x2233e6['prototype']['easeInCore'] = function(_0x31483d) { return _0x31483d * _0x31483d * _0x31483d; } , _0x2233e6; }(_0x5f17eb) , _0x4ad354 = function(_0x786ecb) { function _0x3080fa(_0x55843b, _0x4d67aa) { void 0x0 === _0x55843b && (_0x55843b = 0x3), void 0x0 === _0x4d67aa && (_0x4d67aa = 0x3); var _0x483c96 = _0x786ecb['call'](this) || this; return _0x483c96['oscillations'] = _0x55843b, _0x483c96['springiness'] = _0x4d67aa, _0x483c96; } return _0x420e5b['d'](_0x3080fa, _0x786ecb), _0x3080fa['prototype']['easeInCore'] = function(_0x3cd237) { var _0x4f6b20 = Math['max'](0x0, this['oscillations']) , _0x481172 = Math['max'](0x0, this['springiness']); return (0x0 == _0x481172 ? _0x3cd237 : (Math['exp'](_0x481172 * _0x3cd237) - 0x1) / (Math['exp'](_0x481172) - 0x1)) * Math['sin']((6.283185307179586 * _0x4f6b20 + 1.5707963267948966) * _0x3cd237); } , _0x3080fa; }(_0x5f17eb) , _0x3f1e3e = function(_0x1363bf) { function _0x4bc37f(_0x23cda1) { void 0x0 === _0x23cda1 && (_0x23cda1 = 0x2); var _0x2f3e08 = _0x1363bf['call'](this) || this; return _0x2f3e08['exponent'] = _0x23cda1, _0x2f3e08; } return _0x420e5b['d'](_0x4bc37f, _0x1363bf), _0x4bc37f['prototype']['easeInCore'] = function(_0x3ed8ae) { return this['exponent'] <= 0x0 ? _0x3ed8ae : (Math['exp'](this['exponent'] * _0x3ed8ae) - 0x1) / (Math['exp'](this['exponent']) - 0x1); } , _0x4bc37f; }(_0x5f17eb) , _0x1d30ff = function(_0x2c80af) { function _0x234673(_0x4a2913) { void 0x0 === _0x4a2913 && (_0x4a2913 = 0x2); var _0x30002b = _0x2c80af['call'](this) || this; return _0x30002b['power'] = _0x4a2913, _0x30002b; } return _0x420e5b['d'](_0x234673, _0x2c80af), _0x234673['prototype']['easeInCore'] = function(_0x5d0785) { var _0x3a65f7 = Math['max'](0x0, this['power']); return Math['pow'](_0x5d0785, _0x3a65f7); } , _0x234673; }(_0x5f17eb) , _0x5a166e = function(_0x2e0160) { function _0xd31aac() { return null !== _0x2e0160 && _0x2e0160['apply'](this, arguments) || this; } return _0x420e5b['d'](_0xd31aac, _0x2e0160), _0xd31aac['prototype']['easeInCore'] = function(_0x1fa038) { return _0x1fa038 * _0x1fa038; } , _0xd31aac; }(_0x5f17eb) , _0x19ea86 = function(_0x495716) { function _0x27dd2e() { return null !== _0x495716 && _0x495716['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x27dd2e, _0x495716), _0x27dd2e['prototype']['easeInCore'] = function(_0x23a1bb) { return _0x23a1bb * _0x23a1bb * _0x23a1bb * _0x23a1bb; } , _0x27dd2e; }(_0x5f17eb) , _0x480efc = function(_0x5991ec) { function _0x1f4757() { return null !== _0x5991ec && _0x5991ec['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x1f4757, _0x5991ec), _0x1f4757['prototype']['easeInCore'] = function(_0x53b2d7) { return _0x53b2d7 * _0x53b2d7 * _0x53b2d7 * _0x53b2d7 * _0x53b2d7; } , _0x1f4757; }(_0x5f17eb) , _0x1f2be0 = function(_0x30a851) { function _0x53afbc() { return null !== _0x30a851 && _0x30a851['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x53afbc, _0x30a851), _0x53afbc['prototype']['easeInCore'] = function(_0x3be441) { return 0x1 - Math['sin'](1.5707963267948966 * (0x1 - _0x3be441)); } , _0x53afbc; }(_0x5f17eb) , _0x9f027f = function(_0x2ef1e5) { function _0xdcd549(_0x4c3ed0, _0xf5e8f9, _0xb42005, _0x3544af) { void 0x0 === _0x4c3ed0 && (_0x4c3ed0 = 0x0), void 0x0 === _0xf5e8f9 && (_0xf5e8f9 = 0x0), void 0x0 === _0xb42005 && (_0xb42005 = 0x1), void 0x0 === _0x3544af && (_0x3544af = 0x1); var _0x1e5805 = _0x2ef1e5['call'](this) || this; return _0x1e5805['x1'] = _0x4c3ed0, _0x1e5805['y1'] = _0xf5e8f9, _0x1e5805['x2'] = _0xb42005, _0x1e5805['y2'] = _0x3544af, _0x1e5805; } return _0x420e5b['d'](_0xdcd549, _0x2ef1e5), _0xdcd549['prototype']['easeInCore'] = function(_0x151eb4) { return _0x47d24f['d']['Interpolate'](_0x151eb4, this['x1'], this['y1'], this['x2'], this['y2']); } , _0xdcd549; }(_0x5f17eb) , _0x239584 = function() { function _0x3c3343(_0x1047fe, _0x400126, _0x3e8687) { this['frame'] = _0x1047fe, this['action'] = _0x400126, this['onlyOnce'] = _0x3e8687, this['isDone'] = !0x1; } return _0x3c3343['prototype']['_clone'] = function() { return new _0x3c3343(this['frame'],this['action'],this['onlyOnce']); } , _0x3c3343; }() , _0xb4719b = _0x59bd00(0xb) , _0x3c4f51 = function(_0x50c20e) { function _0x11b436() { return null !== _0x50c20e && _0x50c20e['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x11b436, _0x50c20e), _0x11b436; }(_0x20925f['a']) , _0x3c968a = function(_0x55b742) { function _0x35459(_0x5a5abb) { var _0x4f76f3 = _0x55b742['call'](this) || this; return _0x4f76f3['scene'] = _0x5a5abb, _0x4f76f3['sounds'] = [], _0x4f76f3['effectLayers'] = [], _0x4f76f3['layers'] = [], _0x4f76f3['lensFlareSystems'] = [], _0x4f76f3['proceduralTextures'] = [], _0x4f76f3['reflectionProbes'] = [], _0x4f76f3; } return _0x420e5b['d'](_0x35459, _0x55b742), _0x35459['prototype']['addAllToScene'] = function() { var _0x2d5387 = this; this['cameras']['forEach'](function(_0x3384f0) { _0x2d5387['scene']['addCamera'](_0x3384f0); }), this['lights']['forEach'](function(_0x197ace) { _0x2d5387['scene']['addLight'](_0x197ace); }), this['meshes']['forEach'](function(_0x448ad3) { _0x2d5387['scene']['addMesh'](_0x448ad3); }), this['skeletons']['forEach'](function(_0x47c3d0) { _0x2d5387['scene']['addSkeleton'](_0x47c3d0); }), this['animations']['forEach'](function(_0x3c6126) { _0x2d5387['scene']['addAnimation'](_0x3c6126); }), this['animationGroups']['forEach'](function(_0xb469d4) { _0x2d5387['scene']['addAnimationGroup'](_0xb469d4); }), this['multiMaterials']['forEach'](function(_0x3b0dcf) { _0x2d5387['scene']['addMultiMaterial'](_0x3b0dcf); }), this['materials']['forEach'](function(_0x1a9c65) { _0x2d5387['scene']['addMaterial'](_0x1a9c65); }), this['morphTargetManagers']['forEach'](function(_0x45c470) { _0x2d5387['scene']['addMorphTargetManager'](_0x45c470); }), this['geometries']['forEach'](function(_0x4a3d1d) { _0x2d5387['scene']['addGeometry'](_0x4a3d1d); }), this['transformNodes']['forEach'](function(_0x1a5014) { _0x2d5387['scene']['addTransformNode'](_0x1a5014); }), this['actionManagers']['forEach'](function(_0x53feda) { _0x2d5387['scene']['addActionManager'](_0x53feda); }), this['textures']['forEach'](function(_0x198914) { _0x2d5387['scene']['addTexture'](_0x198914); }), this['reflectionProbes']['forEach'](function(_0x5b2e71) { _0x2d5387['scene']['addReflectionProbe'](_0x5b2e71); }), this['environmentTexture'] && (this['scene']['environmentTexture'] = this['environmentTexture']); for (var _0x142e39 = 0x0, _0x396460 = this['scene']['_serializableComponents']; _0x142e39 < _0x396460['length']; _0x142e39++) { _0x396460[_0x142e39]['addFromContainer'](this); } } , _0x35459['prototype']['removeAllFromScene'] = function() { var _0x2954d7 = this; this['cameras']['forEach'](function(_0x593f59) { _0x2954d7['scene']['removeCamera'](_0x593f59); }), this['lights']['forEach'](function(_0x2a3460) { _0x2954d7['scene']['removeLight'](_0x2a3460); }), this['meshes']['forEach'](function(_0x4d65dd) { _0x2954d7['scene']['removeMesh'](_0x4d65dd); }), this['skeletons']['forEach'](function(_0x5c8e62) { _0x2954d7['scene']['removeSkeleton'](_0x5c8e62); }), this['animations']['forEach'](function(_0x208cdf) { _0x2954d7['scene']['removeAnimation'](_0x208cdf); }), this['animationGroups']['forEach'](function(_0x425d4a) { _0x2954d7['scene']['removeAnimationGroup'](_0x425d4a); }), this['multiMaterials']['forEach'](function(_0x519f10) { _0x2954d7['scene']['removeMultiMaterial'](_0x519f10); }), this['materials']['forEach'](function(_0x1449f3) { _0x2954d7['scene']['removeMaterial'](_0x1449f3); }), this['morphTargetManagers']['forEach'](function(_0x4d509f) { _0x2954d7['scene']['removeMorphTargetManager'](_0x4d509f); }), this['geometries']['forEach'](function(_0x138a63) { _0x2954d7['scene']['removeGeometry'](_0x138a63); }), this['transformNodes']['forEach'](function(_0x9510e6) { _0x2954d7['scene']['removeTransformNode'](_0x9510e6); }), this['actionManagers']['forEach'](function(_0x346248) { _0x2954d7['scene']['removeActionManager'](_0x346248); }), this['textures']['forEach'](function(_0x6d65b2) { _0x2954d7['scene']['removeTexture'](_0x6d65b2); }), this['reflectionProbes']['forEach'](function(_0x50fdf3) { _0x2954d7['scene']['removeReflectionProbe'](_0x50fdf3); }), this['environmentTexture'] === this['scene']['environmentTexture'] && (this['scene']['environmentTexture'] = null); for (var _0x26b7c4 = 0x0, _0x2bb644 = this['scene']['_serializableComponents']; _0x26b7c4 < _0x2bb644['length']; _0x26b7c4++) { _0x2bb644[_0x26b7c4]['removeFromContainer'](this); } } , _0x35459['prototype']['dispose'] = function() { this['cameras']['forEach'](function(_0x22d5d2) { _0x22d5d2['dispose'](); }), this['cameras'] = [], this['lights']['forEach'](function(_0x577c60) { _0x577c60['dispose'](); }), this['lights'] = [], this['meshes']['forEach'](function(_0x5094e5) { _0x5094e5['dispose'](); }), this['meshes'] = [], this['skeletons']['forEach'](function(_0x26d2dc) { _0x26d2dc['dispose'](); }), this['skeletons'] = [], this['animationGroups']['forEach'](function(_0x265f3c) { _0x265f3c['dispose'](); }), this['animationGroups'] = [], this['multiMaterials']['forEach'](function(_0x4f134d) { _0x4f134d['dispose'](); }), this['multiMaterials'] = [], this['materials']['forEach'](function(_0x4f5087) { _0x4f5087['dispose'](); }), this['materials'] = [], this['geometries']['forEach'](function(_0xfced81) { _0xfced81['dispose'](); }), this['geometries'] = [], this['transformNodes']['forEach'](function(_0x4bafa6) { _0x4bafa6['dispose'](); }), this['transformNodes'] = [], this['actionManagers']['forEach'](function(_0x59de7c) { _0x59de7c['dispose'](); }), this['actionManagers'] = [], this['textures']['forEach'](function(_0x101e7e) { _0x101e7e['dispose'](); }), this['textures'] = [], this['reflectionProbes']['forEach'](function(_0x736fdb) { _0x736fdb['dispose'](); }), this['reflectionProbes'] = [], this['environmentTexture'] && (this['environmentTexture']['dispose'](), this['environmentTexture'] = null); for (var _0x457e50 = 0x0, _0x191ebc = this['scene']['_serializableComponents']; _0x457e50 < _0x191ebc['length']; _0x457e50++) { _0x191ebc[_0x457e50]['removeFromContainer'](this, !0x0); } } , _0x35459['prototype']['_moveAssets'] = function(_0x564596, _0x1d9e48, _0x2ab7b3) { if (_0x564596) for (var _0x5a9283 = 0x0, _0x465a0b = _0x564596; _0x5a9283 < _0x465a0b['length']; _0x5a9283++) { var _0x52ba61 = _0x465a0b[_0x5a9283] , _0x2a053e = !0x0; if (_0x2ab7b3) for (var _0x2e05e0 = 0x0, _0x55b77e = _0x2ab7b3; _0x2e05e0 < _0x55b77e['length']; _0x2e05e0++) { if (_0x52ba61 === _0x55b77e[_0x2e05e0]) { _0x2a053e = !0x1; break; } } _0x2a053e && _0x1d9e48['push'](_0x52ba61); } } , _0x35459['prototype']['moveAllFromScene'] = function(_0x30b68e) { for (var _0x20bc9b in (void 0x0 === _0x30b68e && (_0x30b68e = new _0x3c4f51()), this)) this['hasOwnProperty'](_0x20bc9b) && (this[_0x20bc9b] = this[_0x20bc9b] || [], this['_moveAssets'](this['scene'][_0x20bc9b], this[_0x20bc9b], _0x30b68e[_0x20bc9b])); this['removeAllFromScene'](); } , _0x35459['prototype']['createRootMesh'] = function() { var _0x335ee6 = new _0xb4719b['a']('assetContainerRootMesh',this['scene']); return this['meshes']['forEach'](function(_0x4654e9) { _0x4654e9['parent'] || _0x335ee6['addChild'](_0x4654e9); }), this['meshes']['unshift'](_0x335ee6), _0x335ee6; } , _0x35459; }(_0x20925f['a']) , _0x3647a9 = _0x59bd00(0xa) , _0x3f6ebb = function() { function _0x311fbd(_0x500993) { this['SMOOTHING'] = 0.75, this['FFT_SIZE'] = 0x200, this['BARGRAPHAMPLITUDE'] = 0x100, this['DEBUGCANVASPOS'] = { 'x': 0x14, 'y': 0x14 }, this['DEBUGCANVASSIZE'] = { 'width': 0x140, 'height': 0xc8 }, this['_scene'] = _0x500993, this['_audioEngine'] = _0x3647a9['b']['audioEngine'], this['_audioEngine']['canUseWebAudio'] && this['_audioEngine']['audioContext'] && (this['_webAudioAnalyser'] = this['_audioEngine']['audioContext']['createAnalyser'](), this['_webAudioAnalyser']['minDecibels'] = -0x8c, this['_webAudioAnalyser']['maxDecibels'] = 0x0, this['_byteFreqs'] = new Uint8Array(this['_webAudioAnalyser']['frequencyBinCount']), this['_byteTime'] = new Uint8Array(this['_webAudioAnalyser']['frequencyBinCount']), this['_floatFreqs'] = new Float32Array(this['_webAudioAnalyser']['frequencyBinCount'])); } return _0x311fbd['prototype']['getFrequencyBinCount'] = function() { return this['_audioEngine']['canUseWebAudio'] ? this['_webAudioAnalyser']['frequencyBinCount'] : 0x0; } , _0x311fbd['prototype']['getByteFrequencyData'] = function() { return this['_audioEngine']['canUseWebAudio'] && (this['_webAudioAnalyser']['smoothingTimeConstant'] = this['SMOOTHING'], this['_webAudioAnalyser']['fftSize'] = this['FFT_SIZE'], this['_webAudioAnalyser']['getByteFrequencyData'](this['_byteFreqs'])), this['_byteFreqs']; } , _0x311fbd['prototype']['getByteTimeDomainData'] = function() { return this['_audioEngine']['canUseWebAudio'] && (this['_webAudioAnalyser']['smoothingTimeConstant'] = this['SMOOTHING'], this['_webAudioAnalyser']['fftSize'] = this['FFT_SIZE'], this['_webAudioAnalyser']['getByteTimeDomainData'](this['_byteTime'])), this['_byteTime']; } , _0x311fbd['prototype']['getFloatFrequencyData'] = function() { return this['_audioEngine']['canUseWebAudio'] && (this['_webAudioAnalyser']['smoothingTimeConstant'] = this['SMOOTHING'], this['_webAudioAnalyser']['fftSize'] = this['FFT_SIZE'], this['_webAudioAnalyser']['getFloatFrequencyData'](this['_floatFreqs'])), this['_floatFreqs']; } , _0x311fbd['prototype']['drawDebugCanvas'] = function() { var _0x44c7ed = this; if (this['_audioEngine']['canUseWebAudio'] && (this['_debugCanvas'] || (this['_debugCanvas'] = document['createElement']('canvas'), this['_debugCanvas']['width'] = this['DEBUGCANVASSIZE']['width'], this['_debugCanvas']['height'] = this['DEBUGCANVASSIZE']['height'], this['_debugCanvas']['style']['position'] = 'absolute', this['_debugCanvas']['style']['top'] = this['DEBUGCANVASPOS']['y'] + 'px', this['_debugCanvas']['style']['left'] = this['DEBUGCANVASPOS']['x'] + 'px', this['_debugCanvasContext'] = this['_debugCanvas']['getContext']('2d'), document['body']['appendChild'](this['_debugCanvas']), this['_registerFunc'] = function() { _0x44c7ed['drawDebugCanvas'](); } , this['_scene']['registerBeforeRender'](this['_registerFunc'])), this['_registerFunc'] && this['_debugCanvasContext'])) { var _0xe0b0d = this['getByteFrequencyData'](); this['_debugCanvasContext']['fillStyle'] = 'rgb(0,\x200,\x200)', this['_debugCanvasContext']['fillRect'](0x0, 0x0, this['DEBUGCANVASSIZE']['width'], this['DEBUGCANVASSIZE']['height']); for (var _0xb7547e = 0x0; _0xb7547e < this['getFrequencyBinCount'](); _0xb7547e++) { var _0x251f16 = _0xe0b0d[_0xb7547e] / this['BARGRAPHAMPLITUDE'] , _0x128d79 = this['DEBUGCANVASSIZE']['height'] * _0x251f16 , _0xa3cc9b = this['DEBUGCANVASSIZE']['height'] - _0x128d79 - 0x1 , _0x1caac7 = this['DEBUGCANVASSIZE']['width'] / this['getFrequencyBinCount']() , _0x47e2ea = _0xb7547e / this['getFrequencyBinCount']() * 0x168; this['_debugCanvasContext']['fillStyle'] = 'hsl(' + _0x47e2ea + ',\x20100%,\x2050%)', this['_debugCanvasContext']['fillRect'](_0xb7547e * _0x1caac7, _0xa3cc9b, _0x1caac7, _0x128d79); } } } , _0x311fbd['prototype']['stopDebugCanvas'] = function() { this['_debugCanvas'] && (this['_registerFunc'] && (this['_scene']['unregisterBeforeRender'](this['_registerFunc']), this['_registerFunc'] = null), document['body']['removeChild'](this['_debugCanvas']), this['_debugCanvas'] = null, this['_debugCanvasContext'] = null); } , _0x311fbd['prototype']['connectAudioNodes'] = function(_0x2b7560, _0x3e8915) { this['_audioEngine']['canUseWebAudio'] && (_0x2b7560['connect'](this['_webAudioAnalyser']), this['_webAudioAnalyser']['connect'](_0x3e8915)); } , _0x311fbd['prototype']['dispose'] = function() { this['_audioEngine']['canUseWebAudio'] && this['_webAudioAnalyser']['disconnect'](); } , _0x311fbd; }(); _0x3647a9['b']['AudioEngineFactory'] = function(_0x299a8e) { return new _0x54a0a2(_0x299a8e); } ; var _0x54a0a2 = function() { function _0x11fa13(_0x2b9b2f) { var _0x523a3b = this; void 0x0 === _0x2b9b2f && (_0x2b9b2f = null), this['_audioContext'] = null, this['_audioContextInitialized'] = !0x1, this['_muteButton'] = null, this['canUseWebAudio'] = !0x1, this['WarnedWebAudioUnsupported'] = !0x1, this['isMP3supported'] = !0x1, this['isOGGsupported'] = !0x1, this['unlocked'] = !0x0, this['useCustomUnlockedButton'] = !0x1, this['onAudioUnlockedObservable'] = new _0x2dbec2['c'](), this['onAudioLockedObservable'] = new _0x2dbec2['c'](), this['_tryToRun'] = !0x1, this['_onResize'] = function() { _0x523a3b['_moveButtonToTopLeft'](); } , void 0x0 === window['AudioContext'] && void 0x0 === window['webkitAudioContext'] || (window['AudioContext'] = window['AudioContext'] || window['webkitAudioContext'], this['canUseWebAudio'] = !0x0); var _0x59c0da = document['createElement']('audio'); this['_hostElement'] = _0x2b9b2f; try { _0x59c0da && _0x59c0da['canPlayType'] && _0x59c0da['canPlayType']('audio/mpeg;\x20codecs=\x22mp3\x22')['replace'](/^no$/, '') && (this['isMP3supported'] = !0x0); } catch (_0x2702b6) {} try { _0x59c0da && _0x59c0da['canPlayType'] && _0x59c0da['canPlayType']('audio/ogg;\x20codecs=\x22vorbis\x22')['replace'](/^no$/, '') && (this['isOGGsupported'] = !0x0); } catch (_0x24fc17) {} } return Object['defineProperty'](_0x11fa13['prototype'], 'audioContext', { 'get': function() { return this['_audioContextInitialized'] ? this['unlocked'] || this['_muteButton'] || this['_displayMuteButton']() : this['_initializeAudioContext'](), this['_audioContext']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x11fa13['prototype']['lock'] = function() { this['_triggerSuspendedState'](); } , _0x11fa13['prototype']['unlock'] = function() { this['_triggerRunningState'](); } , _0x11fa13['prototype']['_resumeAudioContext'] = function() { var _0x348415; return this['_audioContext']['resume'] && (_0x348415 = this['_audioContext']['resume']()), _0x348415 || Promise['resolve'](); } , _0x11fa13['prototype']['_initializeAudioContext'] = function() { try { this['canUseWebAudio'] && (this['_audioContext'] = new AudioContext(), this['masterGain'] = this['_audioContext']['createGain'](), this['masterGain']['gain']['value'] = 0x1, this['masterGain']['connect'](this['_audioContext']['destination']), this['_audioContextInitialized'] = !0x0, 'running' === this['_audioContext']['state'] && this['_triggerRunningState']()); } catch (_0x16f8cd) { this['canUseWebAudio'] = !0x1, _0x3f98cb['a']['Error']('Web\x20Audio:\x20' + _0x16f8cd['message']); } } , _0x11fa13['prototype']['_triggerRunningState'] = function() { var _0x8bae54 = this; this['_tryToRun'] || (this['_tryToRun'] = !0x0, this['_resumeAudioContext']()['then'](function() { _0x8bae54['_tryToRun'] = !0x1, _0x8bae54['_muteButton'] && _0x8bae54['_hideMuteButton'](); })['catch'](function() { _0x8bae54['_tryToRun'] = !0x1, _0x8bae54['unlocked'] = !0x1; }), this['unlocked'] = !0x0, this['onAudioUnlockedObservable']['notifyObservers'](this)); } , _0x11fa13['prototype']['_triggerSuspendedState'] = function() { this['unlocked'] = !0x1, this['onAudioLockedObservable']['notifyObservers'](this), this['_displayMuteButton'](); } , _0x11fa13['prototype']['_displayMuteButton'] = function() { var _0x3f6ce5 = this; if (!this['useCustomUnlockedButton'] && !this['_muteButton']) { this['_muteButton'] = document['createElement']('BUTTON'), this['_muteButton']['className'] = 'babylonUnmuteIcon', this['_muteButton']['id'] = 'babylonUnmuteIconBtn', this['_muteButton']['title'] = 'Unmute'; var _0x53f036 = document['createElement']('style'); _0x53f036['appendChild'](document['createTextNode']('.babylonUnmuteIcon\x20{\x20position:\x20absolute;\x20left:\x2020px;\x20top:\x2020px;\x20height:\x2040px;\x20width:\x2060px;\x20background-color:\x20rgba(51,51,51,0.7);\x20background-image:\x20url(data:image/svg+xml;charset=UTF-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2239%22%20height%3D%2232%22%20viewBox%3D%220%200%2039%2032%22%3E%3Cpath%20fill%3D%22white%22%20d%3D%22M9.625%2018.938l-0.031%200.016h-4.953q-0.016%200-0.031-0.016v-12.453q0-0.016%200.031-0.016h4.953q0.031%200%200.031%200.016v12.453zM12.125%207.688l8.719-8.703v27.453l-8.719-8.719-0.016-0.047v-9.938zM23.359%207.875l1.406-1.406%204.219%204.203%204.203-4.203%201.422%201.406-4.219%204.219%204.219%204.203-1.484%201.359-4.141-4.156-4.219%204.219-1.406-1.422%204.219-4.203z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E);\x20\x20background-size:\x2080%;\x20background-repeat:no-repeat;\x20background-position:\x20center;\x20background-position-y:\x204px;\x20border:\x20none;\x20outline:\x20none;\x20transition:\x20transform\x200.125s\x20ease-out;\x20cursor:\x20pointer;\x20z-index:\x209999;\x20}\x20.babylonUnmuteIcon:hover\x20{\x20transform:\x20scale(1.05)\x20}\x20.babylonUnmuteIcon:active\x20{\x20background-color:\x20rgba(51,51,51,1)\x20}')), document['getElementsByTagName']('head')[0x0]['appendChild'](_0x53f036), document['body']['appendChild'](this['_muteButton']), this['_moveButtonToTopLeft'](), this['_muteButton']['addEventListener']('touchend', function() { _0x3f6ce5['_triggerRunningState'](); }, !0x0), this['_muteButton']['addEventListener']('click', function() { _0x3f6ce5['_triggerRunningState'](); }, !0x0), window['addEventListener']('resize', this['_onResize']); } } , _0x11fa13['prototype']['_moveButtonToTopLeft'] = function() { this['_hostElement'] && this['_muteButton'] && (this['_muteButton']['style']['top'] = this['_hostElement']['offsetTop'] + 0x14 + 'px', this['_muteButton']['style']['left'] = this['_hostElement']['offsetLeft'] + 0x14 + 'px'); } , _0x11fa13['prototype']['_hideMuteButton'] = function() { this['_muteButton'] && (document['body']['removeChild'](this['_muteButton']), this['_muteButton'] = null); } , _0x11fa13['prototype']['dispose'] = function() { this['canUseWebAudio'] && this['_audioContextInitialized'] && (this['_connectedAnalyser'] && this['_audioContext'] && (this['_connectedAnalyser']['stopDebugCanvas'](), this['_connectedAnalyser']['dispose'](), this['masterGain']['disconnect'](), this['masterGain']['connect'](this['_audioContext']['destination']), this['_connectedAnalyser'] = null), this['masterGain']['gain']['value'] = 0x1), this['WarnedWebAudioUnsupported'] = !0x1, this['_hideMuteButton'](), window['removeEventListener']('resize', this['_onResize']), this['onAudioUnlockedObservable']['clear'](), this['onAudioLockedObservable']['clear'](); } , _0x11fa13['prototype']['getGlobalVolume'] = function() { return this['canUseWebAudio'] && this['_audioContextInitialized'] ? this['masterGain']['gain']['value'] : -0x1; } , _0x11fa13['prototype']['setGlobalVolume'] = function(_0x2f097b) { this['canUseWebAudio'] && this['_audioContextInitialized'] && (this['masterGain']['gain']['value'] = _0x2f097b); } , _0x11fa13['prototype']['connectToAnalyser'] = function(_0x36f1df) { this['_connectedAnalyser'] && this['_connectedAnalyser']['stopDebugCanvas'](), this['canUseWebAudio'] && this['_audioContextInitialized'] && this['_audioContext'] && (this['_connectedAnalyser'] = _0x36f1df, this['masterGain']['disconnect'](), this['_connectedAnalyser']['connectAudioNodes'](this['masterGain'], this['_audioContext']['destination'])); } , _0x11fa13; }() , _0x1eb50e = _0x59bd00(0x9) , _0x2757ee = _0x59bd00(0x13) , _0x58f47f = function() { function _0x11f18c(_0x3d280d, _0x396007, _0x325af7, _0x4ee8b7, _0x35bc6b) { var _0x3c6427 = this; if (void 0x0 === _0x4ee8b7 && (_0x4ee8b7 = null), this['autoplay'] = !0x1, this['loop'] = !0x1, this['useCustomAttenuation'] = !0x1, this['isPlaying'] = !0x1, this['isPaused'] = !0x1, this['spatialSound'] = !0x1, this['refDistance'] = 0x1, this['rolloffFactor'] = 0x1, this['maxDistance'] = 0x64, this['distanceModel'] = 'linear', this['onEndedObservable'] = new _0x2dbec2['c'](), this['_panningModel'] = 'equalpower', this['_playbackRate'] = 0x1, this['_streaming'] = !0x1, this['_startTime'] = 0x0, this['_startOffset'] = 0x0, this['_position'] = _0x47d24f['x']['Zero'](), this['_positionInEmitterSpace'] = !0x1, this['_localDirection'] = new _0x47d24f['x'](0x1,0x0,0x0), this['_volume'] = 0x1, this['_isReadyToPlay'] = !0x1, this['_isDirectional'] = !0x1, this['_coneInnerAngle'] = 0x168, this['_coneOuterAngle'] = 0x168, this['_coneOuterGain'] = 0x0, this['_isOutputConnected'] = !0x1, this['_urlType'] = 'Unknown', this['name'] = _0x3d280d, this['_scene'] = _0x325af7, _0x11f18c['_SceneComponentInitialization'](_0x325af7), this['_readyToPlayCallback'] = _0x4ee8b7, this['_customAttenuationFunction'] = function(_0x4894bf, _0x173574, _0x2fe23b, _0x183970, _0x590f89) { return _0x173574 < _0x2fe23b ? _0x4894bf * (0x1 - _0x173574 / _0x2fe23b) : 0x0; } , _0x35bc6b && (this['autoplay'] = _0x35bc6b['autoplay'] || !0x1, this['loop'] = _0x35bc6b['loop'] || !0x1, void 0x0 !== _0x35bc6b['volume'] && (this['_volume'] = _0x35bc6b['volume']), this['spatialSound'] = _0x35bc6b['spatialSound'] || !0x1, this['maxDistance'] = _0x35bc6b['maxDistance'] || 0x64, this['useCustomAttenuation'] = _0x35bc6b['useCustomAttenuation'] || !0x1, this['rolloffFactor'] = _0x35bc6b['rolloffFactor'] || 0x1, this['refDistance'] = _0x35bc6b['refDistance'] || 0x1, this['distanceModel'] = _0x35bc6b['distanceModel'] || 'linear', this['_playbackRate'] = _0x35bc6b['playbackRate'] || 0x1, this['_streaming'] = _0x35bc6b['streaming'] || !0x1), _0x3647a9['b']['audioEngine']['canUseWebAudio'] && _0x3647a9['b']['audioEngine']['audioContext']) { this['_soundGain'] = _0x3647a9['b']['audioEngine']['audioContext']['createGain'](), this['_soundGain']['gain']['value'] = this['_volume'], this['_inputAudioNode'] = this['_soundGain'], this['_outputAudioNode'] = this['_soundGain'], this['spatialSound'] && this['_createSpatialParameters'](), this['_scene']['mainSoundTrack']['AddSound'](this); var _0x249ccc = !0x0; if (_0x396007) try { 'string' == typeof _0x396007 ? this['_urlType'] = 'String' : _0x396007 instanceof ArrayBuffer ? this['_urlType'] = 'ArrayBuffer' : _0x396007 instanceof MediaStream ? this['_urlType'] = 'MediaStream' : Array['isArray'](_0x396007) && (this['_urlType'] = 'Array'); var _0x34cdb6 = [] , _0x36285b = !0x1; switch (this['_urlType']) { case 'MediaStream': this['_streaming'] = !0x0, this['_isReadyToPlay'] = !0x0, this['_streamingSource'] = _0x3647a9['b']['audioEngine']['audioContext']['createMediaStreamSource'](_0x396007), this['autoplay'] && this['play'](), this['_readyToPlayCallback'] && this['_readyToPlayCallback'](); break; case 'ArrayBuffer': _0x396007['byteLength'] > 0x0 && (_0x36285b = !0x0, this['_soundLoaded'](_0x396007)); break; case 'String': _0x34cdb6['push'](_0x396007); case 'Array': 0x0 === _0x34cdb6['length'] && (_0x34cdb6 = _0x396007); for (var _0x3b56fe = 0x0; _0x3b56fe < _0x34cdb6['length']; _0x3b56fe++) { var _0x14ba6c = _0x34cdb6[_0x3b56fe]; if (-0x1 !== _0x14ba6c['indexOf']('.mp3', _0x14ba6c['length'] - 0x4) && _0x3647a9['b']['audioEngine']['isMP3supported'] && (_0x36285b = !0x0), -0x1 !== _0x14ba6c['indexOf']('.ogg', _0x14ba6c['length'] - 0x4) && _0x3647a9['b']['audioEngine']['isOGGsupported'] && (_0x36285b = !0x0), -0x1 !== _0x14ba6c['indexOf']('.wav', _0x14ba6c['length'] - 0x4) && (_0x36285b = !0x0), -0x1 !== _0x14ba6c['indexOf']('blob:') && (_0x36285b = !0x0), _0x36285b) { this['_streaming'] ? (this['_htmlAudioElement'] = new Audio(_0x14ba6c), this['_htmlAudioElement']['controls'] = !0x1, this['_htmlAudioElement']['loop'] = this['loop'], _0x1eb50e['h']['SetCorsBehavior'](_0x14ba6c, this['_htmlAudioElement']), this['_htmlAudioElement']['preload'] = 'auto', this['_htmlAudioElement']['addEventListener']('canplaythrough', function() { _0x3c6427['_isReadyToPlay'] = !0x0, _0x3c6427['autoplay'] && _0x3c6427['play'](), _0x3c6427['_readyToPlayCallback'] && _0x3c6427['_readyToPlayCallback'](); }), document['body']['appendChild'](this['_htmlAudioElement']), this['_htmlAudioElement']['load']()) : this['_scene']['_loadFile'](_0x14ba6c, function(_0x357a61) { _0x3c6427['_soundLoaded'](_0x357a61); }, void 0x0, !0x0, !0x0, function(_0x2bc1d1) { _0x2bc1d1 && _0x3f98cb['a']['Error']('XHR\x20' + _0x2bc1d1['status'] + '\x20error\x20on:\x20' + _0x14ba6c + '.'), _0x3f98cb['a']['Error']('Sound\x20creation\x20aborted.'), _0x3c6427['_scene']['mainSoundTrack']['RemoveSound'](_0x3c6427); }); break; } } break; default: _0x249ccc = !0x1; } _0x249ccc ? _0x36285b || (this['_isReadyToPlay'] = !0x0, this['_readyToPlayCallback'] && window['setTimeout'](function() { _0x3c6427['_readyToPlayCallback'] && _0x3c6427['_readyToPlayCallback'](); }, 0x3e8)) : _0x3f98cb['a']['Error']('Parameter\x20must\x20be\x20a\x20URL\x20to\x20the\x20sound,\x20an\x20Array\x20of\x20URLs\x20(.mp3\x20&\x20.ogg)\x20or\x20an\x20ArrayBuffer\x20of\x20the\x20sound.'); } catch (_0x1989d5) { _0x3f98cb['a']['Error']('Unexpected\x20error.\x20Sound\x20creation\x20aborted.'), this['_scene']['mainSoundTrack']['RemoveSound'](this); } } else this['_scene']['mainSoundTrack']['AddSound'](this), _0x3647a9['b']['audioEngine']['WarnedWebAudioUnsupported'] || (_0x3f98cb['a']['Error']('Web\x20Audio\x20is\x20not\x20supported\x20by\x20your\x20browser.'), _0x3647a9['b']['audioEngine']['WarnedWebAudioUnsupported'] = !0x0), this['_readyToPlayCallback'] && window['setTimeout'](function() { _0x3c6427['_readyToPlayCallback'] && _0x3c6427['_readyToPlayCallback'](); }, 0x3e8); } return _0x11f18c['prototype']['dispose'] = function() { _0x3647a9['b']['audioEngine']['canUseWebAudio'] && (this['isPlaying'] && this['stop'](), this['_isReadyToPlay'] = !0x1, -0x1 === this['soundTrackId'] ? this['_scene']['mainSoundTrack']['RemoveSound'](this) : this['_scene']['soundTracks'] && this['_scene']['soundTracks'][this['soundTrackId']]['RemoveSound'](this), this['_soundGain'] && (this['_soundGain']['disconnect'](), this['_soundGain'] = null), this['_soundPanner'] && (this['_soundPanner']['disconnect'](), this['_soundPanner'] = null), this['_soundSource'] && (this['_soundSource']['disconnect'](), this['_soundSource'] = null), this['_audioBuffer'] = null, this['_htmlAudioElement'] && (this['_htmlAudioElement']['pause'](), this['_htmlAudioElement']['src'] = '', document['body']['removeChild'](this['_htmlAudioElement'])), this['_streamingSource'] && this['_streamingSource']['disconnect'](), this['_connectedTransformNode'] && this['_registerFunc'] && (this['_connectedTransformNode']['unregisterAfterWorldMatrixUpdate'](this['_registerFunc']), this['_connectedTransformNode'] = null)); } , _0x11f18c['prototype']['isReady'] = function() { return this['_isReadyToPlay']; } , _0x11f18c['prototype']['_soundLoaded'] = function(_0x3a18fd) { var _0x26c285 = this; _0x3647a9['b']['audioEngine']['audioContext'] && _0x3647a9['b']['audioEngine']['audioContext']['decodeAudioData'](_0x3a18fd, function(_0x1883f7) { _0x26c285['_audioBuffer'] = _0x1883f7, _0x26c285['_isReadyToPlay'] = !0x0, _0x26c285['autoplay'] && _0x26c285['play'](), _0x26c285['_readyToPlayCallback'] && _0x26c285['_readyToPlayCallback'](); }, function(_0x41f172) { _0x3f98cb['a']['Error']('Error\x20while\x20decoding\x20audio\x20data\x20for:\x20' + _0x26c285['name'] + '\x20/\x20Error:\x20' + _0x41f172); }); } , _0x11f18c['prototype']['setAudioBuffer'] = function(_0x185a1b) { _0x3647a9['b']['audioEngine']['canUseWebAudio'] && (this['_audioBuffer'] = _0x185a1b, this['_isReadyToPlay'] = !0x0); } , _0x11f18c['prototype']['updateOptions'] = function(_0x192b4d) { _0x192b4d && (this['loop'] = _0x192b4d['loop'] || this['loop'], this['maxDistance'] = _0x192b4d['maxDistance'] || this['maxDistance'], this['useCustomAttenuation'] = _0x192b4d['useCustomAttenuation'] || this['useCustomAttenuation'], this['rolloffFactor'] = _0x192b4d['rolloffFactor'] || this['rolloffFactor'], this['refDistance'] = _0x192b4d['refDistance'] || this['refDistance'], this['distanceModel'] = _0x192b4d['distanceModel'] || this['distanceModel'], this['_playbackRate'] = _0x192b4d['playbackRate'] || this['_playbackRate'], this['_updateSpatialParameters'](), this['isPlaying'] && (this['_streaming'] && this['_htmlAudioElement'] ? this['_htmlAudioElement']['playbackRate'] = this['_playbackRate'] : this['_soundSource'] && (this['_soundSource']['playbackRate']['value'] = this['_playbackRate']))); } , _0x11f18c['prototype']['_createSpatialParameters'] = function() { _0x3647a9['b']['audioEngine']['canUseWebAudio'] && _0x3647a9['b']['audioEngine']['audioContext'] && (this['_scene']['headphone'] && (this['_panningModel'] = 'HRTF'), this['_soundPanner'] = _0x3647a9['b']['audioEngine']['audioContext']['createPanner'](), this['_updateSpatialParameters'](), this['_soundPanner']['connect'](this['_outputAudioNode']), this['_inputAudioNode'] = this['_soundPanner']); } , _0x11f18c['prototype']['_updateSpatialParameters'] = function() { this['spatialSound'] && this['_soundPanner'] && (this['useCustomAttenuation'] ? (this['_soundPanner']['distanceModel'] = 'linear', this['_soundPanner']['maxDistance'] = Number['MAX_VALUE'], this['_soundPanner']['refDistance'] = 0x1, this['_soundPanner']['rolloffFactor'] = 0x1, this['_soundPanner']['panningModel'] = this['_panningModel']) : (this['_soundPanner']['distanceModel'] = this['distanceModel'], this['_soundPanner']['maxDistance'] = this['maxDistance'], this['_soundPanner']['refDistance'] = this['refDistance'], this['_soundPanner']['rolloffFactor'] = this['rolloffFactor'], this['_soundPanner']['panningModel'] = this['_panningModel'])); } , _0x11f18c['prototype']['switchPanningModelToHRTF'] = function() { this['_panningModel'] = 'HRTF', this['_switchPanningModel'](); } , _0x11f18c['prototype']['switchPanningModelToEqualPower'] = function() { this['_panningModel'] = 'equalpower', this['_switchPanningModel'](); } , _0x11f18c['prototype']['_switchPanningModel'] = function() { _0x3647a9['b']['audioEngine']['canUseWebAudio'] && this['spatialSound'] && this['_soundPanner'] && (this['_soundPanner']['panningModel'] = this['_panningModel']); } , _0x11f18c['prototype']['connectToSoundTrackAudioNode'] = function(_0x2a22bd) { _0x3647a9['b']['audioEngine']['canUseWebAudio'] && (this['_isOutputConnected'] && this['_outputAudioNode']['disconnect'](), this['_outputAudioNode']['connect'](_0x2a22bd), this['_isOutputConnected'] = !0x0); } , _0x11f18c['prototype']['setDirectionalCone'] = function(_0xa955a, _0x3a4eba, _0x47a805) { _0x3a4eba < _0xa955a ? _0x3f98cb['a']['Error']('setDirectionalCone():\x20outer\x20angle\x20of\x20the\x20cone\x20must\x20be\x20superior\x20or\x20equal\x20to\x20the\x20inner\x20angle.') : (this['_coneInnerAngle'] = _0xa955a, this['_coneOuterAngle'] = _0x3a4eba, this['_coneOuterGain'] = _0x47a805, this['_isDirectional'] = !0x0, this['isPlaying'] && this['loop'] && (this['stop'](), this['play']())); } , Object['defineProperty'](_0x11f18c['prototype'], 'directionalConeInnerAngle', { 'get': function() { return this['_coneInnerAngle']; }, 'set': function(_0x47ccc8) { if (_0x47ccc8 != this['_coneInnerAngle']) { if (this['_coneOuterAngle'] < _0x47ccc8) return void _0x3f98cb['a']['Error']('directionalConeInnerAngle:\x20outer\x20angle\x20of\x20the\x20cone\x20must\x20be\x20superior\x20or\x20equal\x20to\x20the\x20inner\x20angle.'); this['_coneInnerAngle'] = _0x47ccc8, _0x3647a9['b']['audioEngine']['canUseWebAudio'] && this['spatialSound'] && this['_soundPanner'] && (this['_soundPanner']['coneInnerAngle'] = this['_coneInnerAngle']); } }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x11f18c['prototype'], 'directionalConeOuterAngle', { 'get': function() { return this['_coneOuterAngle']; }, 'set': function(_0xf5aac7) { if (_0xf5aac7 != this['_coneOuterAngle']) { if (_0xf5aac7 < this['_coneInnerAngle']) return void _0x3f98cb['a']['Error']('directionalConeOuterAngle:\x20outer\x20angle\x20of\x20the\x20cone\x20must\x20be\x20superior\x20or\x20equal\x20to\x20the\x20inner\x20angle.'); this['_coneOuterAngle'] = _0xf5aac7, _0x3647a9['b']['audioEngine']['canUseWebAudio'] && this['spatialSound'] && this['_soundPanner'] && (this['_soundPanner']['coneOuterAngle'] = this['_coneOuterAngle']); } }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x11f18c['prototype']['setPosition'] = function(_0x4939b2) { this['_position'] = _0x4939b2, _0x3647a9['b']['audioEngine']['canUseWebAudio'] && this['spatialSound'] && this['_soundPanner'] && !isNaN(this['_position']['x']) && !isNaN(this['_position']['y']) && !isNaN(this['_position']['z']) && this['_soundPanner']['setPosition'](this['_position']['x'], this['_position']['y'], this['_position']['z']); } , _0x11f18c['prototype']['setLocalDirectionToMesh'] = function(_0x4504e3) { this['_localDirection'] = _0x4504e3, _0x3647a9['b']['audioEngine']['canUseWebAudio'] && this['_connectedTransformNode'] && this['isPlaying'] && this['_updateDirection'](); } , _0x11f18c['prototype']['_updateDirection'] = function() { if (this['_connectedTransformNode'] && this['_soundPanner']) { var _0x1517ed = this['_connectedTransformNode']['getWorldMatrix']() , _0x5378f6 = _0x47d24f['x']['TransformNormal'](this['_localDirection'], _0x1517ed); _0x5378f6['normalize'](), this['_soundPanner']['setOrientation'](_0x5378f6['x'], _0x5378f6['y'], _0x5378f6['z']); } } , _0x11f18c['prototype']['updateDistanceFromListener'] = function() { if (_0x3647a9['b']['audioEngine']['canUseWebAudio'] && this['_connectedTransformNode'] && this['useCustomAttenuation'] && this['_soundGain'] && this['_scene']['activeCamera']) { var _0x5b2929 = this['_connectedTransformNode']['getDistanceToCamera'](this['_scene']['activeCamera']); this['_soundGain']['gain']['value'] = this['_customAttenuationFunction'](this['_volume'], _0x5b2929, this['maxDistance'], this['refDistance'], this['rolloffFactor']); } } , _0x11f18c['prototype']['setAttenuationFunction'] = function(_0x195663) { this['_customAttenuationFunction'] = _0x195663; } , _0x11f18c['prototype']['play'] = function(_0x4220fd, _0x33c80b) { var _0x23f819 = this; if (this['_isReadyToPlay'] && this['_scene']['audioEnabled'] && _0x3647a9['b']['audioEngine']['audioContext']) try { this['_startOffset'] < 0x0 && (_0x4220fd = -this['_startOffset'], this['_startOffset'] = 0x0); var _0x32fadd = _0x4220fd ? _0x3647a9['b']['audioEngine']['audioContext']['currentTime'] + _0x4220fd : _0x3647a9['b']['audioEngine']['audioContext']['currentTime']; if (this['_soundSource'] && this['_streamingSource'] || this['spatialSound'] && this['_soundPanner'] && (isNaN(this['_position']['x']) || isNaN(this['_position']['y']) || isNaN(this['_position']['z']) || this['_soundPanner']['setPosition'](this['_position']['x'], this['_position']['y'], this['_position']['z']), this['_isDirectional'] && (this['_soundPanner']['coneInnerAngle'] = this['_coneInnerAngle'], this['_soundPanner']['coneOuterAngle'] = this['_coneOuterAngle'], this['_soundPanner']['coneOuterGain'] = this['_coneOuterGain'], this['_connectedTransformNode'] ? this['_updateDirection']() : this['_soundPanner']['setOrientation'](this['_localDirection']['x'], this['_localDirection']['y'], this['_localDirection']['z']))), this['_streaming']) { if (this['_streamingSource'] || (this['_streamingSource'] = _0x3647a9['b']['audioEngine']['audioContext']['createMediaElementSource'](this['_htmlAudioElement']), this['_htmlAudioElement']['onended'] = function() { _0x23f819['_onended'](); } , this['_htmlAudioElement']['playbackRate'] = this['_playbackRate']), this['_streamingSource']['disconnect'](), this['_streamingSource']['connect'](this['_inputAudioNode']), this['_htmlAudioElement']) (_0x132320 = function() { if (_0x3647a9['b']['audioEngine']['unlocked']) { var _0x5c9a9d = _0x23f819['_htmlAudioElement']['play'](); void 0x0 !== _0x5c9a9d && _0x5c9a9d['catch'](function(_0xaf0058) { _0x3647a9['b']['audioEngine']['lock'](), (_0x23f819['loop'] || _0x23f819['autoplay']) && _0x3647a9['b']['audioEngine']['onAudioUnlockedObservable']['addOnce'](function() { _0x132320(); }); }); } else (_0x23f819['loop'] || _0x23f819['autoplay']) && _0x3647a9['b']['audioEngine']['onAudioUnlockedObservable']['addOnce'](function() { _0x132320(); }); } )(); } else { var _0x132320 = function() { _0x3647a9['b']['audioEngine']['audioContext'] && (_0x23f819['_soundSource'] = _0x3647a9['b']['audioEngine']['audioContext']['createBufferSource'](), _0x23f819['_soundSource']['buffer'] = _0x23f819['_audioBuffer'], _0x23f819['_soundSource']['connect'](_0x23f819['_inputAudioNode']), _0x23f819['_soundSource']['loop'] = _0x23f819['loop'], _0x23f819['_soundSource']['playbackRate']['value'] = _0x23f819['_playbackRate'], _0x23f819['_soundSource']['onended'] = function() { _0x23f819['_onended'](); } , _0x32fadd = _0x4220fd ? _0x3647a9['b']['audioEngine']['audioContext']['currentTime'] + _0x4220fd : _0x3647a9['b']['audioEngine']['audioContext']['currentTime'], _0x23f819['_soundSource']['start'](_0x32fadd, _0x23f819['isPaused'] ? _0x23f819['_startOffset'] % _0x23f819['_soundSource']['buffer']['duration'] : _0x33c80b || 0x0)); }; 'suspended' === _0x3647a9['b']['audioEngine']['audioContext']['state'] ? setTimeout(function() { 'suspended' === _0x3647a9['b']['audioEngine']['audioContext']['state'] ? (_0x3647a9['b']['audioEngine']['lock'](), (_0x23f819['loop'] || _0x23f819['autoplay']) && _0x3647a9['b']['audioEngine']['onAudioUnlockedObservable']['addOnce'](function() { _0x132320(); })) : _0x132320(); }, 0x1f4) : _0x132320(); } this['_startTime'] = _0x32fadd, this['isPlaying'] = !0x0, this['isPaused'] = !0x1; } catch (_0x45dc2a) { _0x3f98cb['a']['Error']('Error\x20while\x20trying\x20to\x20play\x20audio:\x20' + this['name'] + ',\x20' + _0x45dc2a['message']); } } , _0x11f18c['prototype']['_onended'] = function() { this['isPlaying'] = !0x1, this['onended'] && this['onended'](), this['onEndedObservable']['notifyObservers'](this); } , _0x11f18c['prototype']['stop'] = function(_0x8fd0ea) { var _0x3d44ac = this; if (this['isPlaying']) if (this['_streaming']) this['_htmlAudioElement'] ? (this['_htmlAudioElement']['pause'](), this['_htmlAudioElement']['currentTime'] > 0x0 && (this['_htmlAudioElement']['currentTime'] = 0x0)) : this['_streamingSource']['disconnect'](), this['isPlaying'] = !0x1; else if (_0x3647a9['b']['audioEngine']['audioContext'] && this['_soundSource']) { var _0x4b3411 = _0x8fd0ea ? _0x3647a9['b']['audioEngine']['audioContext']['currentTime'] + _0x8fd0ea : _0x3647a9['b']['audioEngine']['audioContext']['currentTime']; this['_soundSource']['stop'](_0x4b3411), this['_soundSource']['onended'] = function() { _0x3d44ac['isPlaying'] = !0x1; } , this['isPaused'] || (this['_startOffset'] = 0x0); } } , _0x11f18c['prototype']['pause'] = function() { this['isPlaying'] && (this['isPaused'] = !0x0, this['_streaming'] ? this['_htmlAudioElement'] ? this['_htmlAudioElement']['pause']() : this['_streamingSource']['disconnect']() : _0x3647a9['b']['audioEngine']['audioContext'] && (this['stop'](0x0), this['_startOffset'] += _0x3647a9['b']['audioEngine']['audioContext']['currentTime'] - this['_startTime'])); } , _0x11f18c['prototype']['setVolume'] = function(_0x2547a5, _0xec1e7e) { _0x3647a9['b']['audioEngine']['canUseWebAudio'] && this['_soundGain'] && (_0xec1e7e && _0x3647a9['b']['audioEngine']['audioContext'] ? (this['_soundGain']['gain']['cancelScheduledValues'](_0x3647a9['b']['audioEngine']['audioContext']['currentTime']), this['_soundGain']['gain']['setValueAtTime'](this['_soundGain']['gain']['value'], _0x3647a9['b']['audioEngine']['audioContext']['currentTime']), this['_soundGain']['gain']['linearRampToValueAtTime'](_0x2547a5, _0x3647a9['b']['audioEngine']['audioContext']['currentTime'] + _0xec1e7e)) : this['_soundGain']['gain']['value'] = _0x2547a5), this['_volume'] = _0x2547a5; } , _0x11f18c['prototype']['setPlaybackRate'] = function(_0x2dc2dc) { this['_playbackRate'] = _0x2dc2dc, this['isPlaying'] && (this['_streaming'] && this['_htmlAudioElement'] ? this['_htmlAudioElement']['playbackRate'] = this['_playbackRate'] : this['_soundSource'] && (this['_soundSource']['playbackRate']['value'] = this['_playbackRate'])); } , _0x11f18c['prototype']['getVolume'] = function() { return this['_volume']; } , _0x11f18c['prototype']['attachToMesh'] = function(_0xffbfba) { var _0x35619b = this; this['_connectedTransformNode'] && this['_registerFunc'] && (this['_connectedTransformNode']['unregisterAfterWorldMatrixUpdate'](this['_registerFunc']), this['_registerFunc'] = null), this['_connectedTransformNode'] = _0xffbfba, this['spatialSound'] || (this['spatialSound'] = !0x0, this['_createSpatialParameters'](), this['isPlaying'] && this['loop'] && (this['stop'](), this['play']())), this['_onRegisterAfterWorldMatrixUpdate'](this['_connectedTransformNode']), this['_registerFunc'] = function(_0x3ef313) { return _0x35619b['_onRegisterAfterWorldMatrixUpdate'](_0x3ef313); } , this['_connectedTransformNode']['registerAfterWorldMatrixUpdate'](this['_registerFunc']); } , _0x11f18c['prototype']['detachFromMesh'] = function() { this['_connectedTransformNode'] && this['_registerFunc'] && (this['_connectedTransformNode']['unregisterAfterWorldMatrixUpdate'](this['_registerFunc']), this['_registerFunc'] = null, this['_connectedTransformNode'] = null); } , _0x11f18c['prototype']['_onRegisterAfterWorldMatrixUpdate'] = function(_0x1d79f0) { if (_0x1d79f0['getBoundingInfo']) { var _0x4b9828 = _0x1d79f0; if (this['_positionInEmitterSpace']) _0x4b9828['worldMatrixFromCache']['invertToRef'](_0x47d24f['t']['Matrix'][0x0]), this['setPosition'](_0x47d24f['t']['Matrix'][0x0]['getTranslation']()); else { var _0x1b727b = _0x4b9828['getBoundingInfo'](); this['setPosition'](_0x1b727b['boundingSphere']['centerWorld']); } _0x3647a9['b']['audioEngine']['canUseWebAudio'] && this['_isDirectional'] && this['isPlaying'] && this['_updateDirection'](); } } , _0x11f18c['prototype']['clone'] = function() { var _0x26084c = this; if (this['_streaming']) return null; var _0x533b8a = function() { _0x26084c['_isReadyToPlay'] ? (_0x3bd548['_audioBuffer'] = _0x26084c['getAudioBuffer'](), _0x3bd548['_isReadyToPlay'] = !0x0, _0x3bd548['autoplay'] && _0x3bd548['play']()) : window['setTimeout'](_0x533b8a, 0x12c); } , _0x35eafc = { 'autoplay': this['autoplay'], 'loop': this['loop'], 'volume': this['_volume'], 'spatialSound': this['spatialSound'], 'maxDistance': this['maxDistance'], 'useCustomAttenuation': this['useCustomAttenuation'], 'rolloffFactor': this['rolloffFactor'], 'refDistance': this['refDistance'], 'distanceModel': this['distanceModel'] } , _0x3bd548 = new _0x11f18c(this['name'] + '_cloned',new ArrayBuffer(0x0),this['_scene'],null,_0x35eafc); return this['useCustomAttenuation'] && _0x3bd548['setAttenuationFunction'](this['_customAttenuationFunction']), _0x3bd548['setPosition'](this['_position']), _0x3bd548['setPlaybackRate'](this['_playbackRate']), _0x533b8a(), _0x3bd548; } , _0x11f18c['prototype']['getAudioBuffer'] = function() { return this['_audioBuffer']; } , _0x11f18c['prototype']['serialize'] = function() { var _0x90a605 = { 'name': this['name'], 'url': this['name'], 'autoplay': this['autoplay'], 'loop': this['loop'], 'volume': this['_volume'], 'spatialSound': this['spatialSound'], 'maxDistance': this['maxDistance'], 'rolloffFactor': this['rolloffFactor'], 'refDistance': this['refDistance'], 'distanceModel': this['distanceModel'], 'playbackRate': this['_playbackRate'], 'panningModel': this['_panningModel'], 'soundTrackId': this['soundTrackId'] }; return this['spatialSound'] && (this['_connectedTransformNode'] && (_0x90a605['connectedMeshId'] = this['_connectedTransformNode']['id']), _0x90a605['position'] = this['_position']['asArray'](), _0x90a605['refDistance'] = this['refDistance'], _0x90a605['distanceModel'] = this['distanceModel'], _0x90a605['isDirectional'] = this['_isDirectional'], _0x90a605['localDirectionToMesh'] = this['_localDirection']['asArray'](), _0x90a605['coneInnerAngle'] = this['_coneInnerAngle'], _0x90a605['coneOuterAngle'] = this['_coneOuterAngle'], _0x90a605['coneOuterGain'] = this['_coneOuterGain']), _0x90a605; } , _0x11f18c['Parse'] = function(_0x3c558e, _0x2cf0db, _0x411700, _0x70147d) { var _0x528f6a, _0x59b28e = _0x3c558e['name']; _0x528f6a = _0x3c558e['url'] ? _0x411700 + _0x3c558e['url'] : _0x411700 + _0x59b28e; var _0x673a8f, _0x2778d9 = { 'autoplay': _0x3c558e['autoplay'], 'loop': _0x3c558e['loop'], 'volume': _0x3c558e['volume'], 'spatialSound': _0x3c558e['spatialSound'], 'maxDistance': _0x3c558e['maxDistance'], 'rolloffFactor': _0x3c558e['rolloffFactor'], 'refDistance': _0x3c558e['refDistance'], 'distanceModel': _0x3c558e['distanceModel'], 'playbackRate': _0x3c558e['playbackRate'] }; if (_0x70147d) { var _0x38bfbc = function() { _0x70147d['_isReadyToPlay'] ? (_0x673a8f['_audioBuffer'] = _0x70147d['getAudioBuffer'](), _0x673a8f['_isReadyToPlay'] = !0x0, _0x673a8f['autoplay'] && _0x673a8f['play']()) : window['setTimeout'](_0x38bfbc, 0x12c); }; _0x673a8f = new _0x11f18c(_0x59b28e,new ArrayBuffer(0x0),_0x2cf0db,null,_0x2778d9), _0x38bfbc(); } else _0x673a8f = new _0x11f18c(_0x59b28e,_0x528f6a,_0x2cf0db,function() { _0x2cf0db['_removePendingData'](_0x673a8f); } ,_0x2778d9), _0x2cf0db['_addPendingData'](_0x673a8f); if (_0x3c558e['position']) { var _0x1f4949 = _0x47d24f['x']['FromArray'](_0x3c558e['position']); _0x673a8f['setPosition'](_0x1f4949); } if (_0x3c558e['isDirectional'] && (_0x673a8f['setDirectionalCone'](_0x3c558e['coneInnerAngle'] || 0x168, _0x3c558e['coneOuterAngle'] || 0x168, _0x3c558e['coneOuterGain'] || 0x0), _0x3c558e['localDirectionToMesh'])) { var _0x5c3274 = _0x47d24f['x']['FromArray'](_0x3c558e['localDirectionToMesh']); _0x673a8f['setLocalDirectionToMesh'](_0x5c3274); } if (_0x3c558e['connectedMeshId']) { var _0xb1633a = _0x2cf0db['getMeshByID'](_0x3c558e['connectedMeshId']); _0xb1633a && _0x673a8f['attachToMesh'](_0xb1633a); } return _0x673a8f; } , _0x11f18c['_SceneComponentInitialization'] = function(_0x20c096) { throw _0x2757ee['a']['WarnImport']('AudioSceneComponent'); } , _0x11f18c; }() , _0x1733c5 = function() { function _0x87d92(_0x3efb42, _0x39c830) { void 0x0 === _0x39c830 && (_0x39c830 = {}), this['id'] = -0x1, this['_isMainTrack'] = !0x1, this['_isInitialized'] = !0x1, this['_scene'] = _0x3efb42, this['soundCollection'] = new Array(), this['_options'] = _0x39c830, !this['_isMainTrack'] && this['_scene']['soundTracks'] && (this['_scene']['soundTracks']['push'](this), this['id'] = this['_scene']['soundTracks']['length'] - 0x1); } return _0x87d92['prototype']['_initializeSoundTrackAudioGraph'] = function() { _0x3647a9['b']['audioEngine']['canUseWebAudio'] && _0x3647a9['b']['audioEngine']['audioContext'] && (this['_outputAudioNode'] = _0x3647a9['b']['audioEngine']['audioContext']['createGain'](), this['_outputAudioNode']['connect'](_0x3647a9['b']['audioEngine']['masterGain']), this['_options'] && (this['_options']['volume'] && (this['_outputAudioNode']['gain']['value'] = this['_options']['volume']), this['_options']['mainTrack'] && (this['_isMainTrack'] = this['_options']['mainTrack'])), this['_isInitialized'] = !0x0); } , _0x87d92['prototype']['dispose'] = function() { if (_0x3647a9['b']['audioEngine'] && _0x3647a9['b']['audioEngine']['canUseWebAudio']) { for (this['_connectedAnalyser'] && this['_connectedAnalyser']['stopDebugCanvas'](); this['soundCollection']['length']; ) this['soundCollection'][0x0]['dispose'](); this['_outputAudioNode'] && this['_outputAudioNode']['disconnect'](), this['_outputAudioNode'] = null; } } , _0x87d92['prototype']['AddSound'] = function(_0x25ff1c) { this['_isInitialized'] || this['_initializeSoundTrackAudioGraph'](), _0x3647a9['b']['audioEngine']['canUseWebAudio'] && this['_outputAudioNode'] && _0x25ff1c['connectToSoundTrackAudioNode'](this['_outputAudioNode']), _0x25ff1c['soundTrackId'] && (-0x1 === _0x25ff1c['soundTrackId'] ? this['_scene']['mainSoundTrack']['RemoveSound'](_0x25ff1c) : this['_scene']['soundTracks'] && this['_scene']['soundTracks'][_0x25ff1c['soundTrackId']]['RemoveSound'](_0x25ff1c)), this['soundCollection']['push'](_0x25ff1c), _0x25ff1c['soundTrackId'] = this['id']; } , _0x87d92['prototype']['RemoveSound'] = function(_0x5c7a7d) { var _0x14d9d5 = this['soundCollection']['indexOf'](_0x5c7a7d); -0x1 !== _0x14d9d5 && this['soundCollection']['splice'](_0x14d9d5, 0x1); } , _0x87d92['prototype']['setVolume'] = function(_0x29c970) { _0x3647a9['b']['audioEngine']['canUseWebAudio'] && this['_outputAudioNode'] && (this['_outputAudioNode']['gain']['value'] = _0x29c970); } , _0x87d92['prototype']['switchPanningModelToHRTF'] = function() { if (_0x3647a9['b']['audioEngine']['canUseWebAudio']) for (var _0x240903 = 0x0; _0x240903 < this['soundCollection']['length']; _0x240903++) this['soundCollection'][_0x240903]['switchPanningModelToHRTF'](); } , _0x87d92['prototype']['switchPanningModelToEqualPower'] = function() { if (_0x3647a9['b']['audioEngine']['canUseWebAudio']) for (var _0x20a73c = 0x0; _0x20a73c < this['soundCollection']['length']; _0x20a73c++) this['soundCollection'][_0x20a73c]['switchPanningModelToEqualPower'](); } , _0x87d92['prototype']['connectToAnalyser'] = function(_0x35e812) { this['_connectedAnalyser'] && this['_connectedAnalyser']['stopDebugCanvas'](), this['_connectedAnalyser'] = _0x35e812, _0x3647a9['b']['audioEngine']['canUseWebAudio'] && this['_outputAudioNode'] && (this['_outputAudioNode']['disconnect'](), this['_connectedAnalyser']['connectAudioNodes'](this['_outputAudioNode'], _0x3647a9['b']['audioEngine']['masterGain'])); } , _0x87d92; }() , _0x443f74 = _0x59bd00(0xe); _0x20925f['a']['AddParser'](_0x443f74['a']['NAME_AUDIO'], function(_0x1873d4, _0x67d4ce, _0x4fc6d7, _0x706700) { var _0x1333c5, _0x11ab26 = []; if (_0x4fc6d7['sounds'] = _0x4fc6d7['sounds'] || [], void 0x0 !== _0x1873d4['sounds'] && null !== _0x1873d4['sounds']) for (var _0x46b514 = 0x0, _0x588901 = _0x1873d4['sounds']['length']; _0x46b514 < _0x588901; _0x46b514++) { var _0x32907f = _0x1873d4['sounds'][_0x46b514]; _0x3647a9['b']['audioEngine']['canUseWebAudio'] ? (_0x32907f['url'] || (_0x32907f['url'] = _0x32907f['name']), _0x11ab26[_0x32907f['url']] ? _0x4fc6d7['sounds']['push'](_0x58f47f['Parse'](_0x32907f, _0x67d4ce, _0x706700, _0x11ab26[_0x32907f['url']])) : (_0x1333c5 = _0x58f47f['Parse'](_0x32907f, _0x67d4ce, _0x706700), _0x11ab26[_0x32907f['url']] = _0x1333c5, _0x4fc6d7['sounds']['push'](_0x1333c5))) : _0x4fc6d7['sounds']['push'](new _0x58f47f(_0x32907f['name'],null,_0x67d4ce)); } _0x11ab26 = []; }), Object['defineProperty'](_0x366639['a']['prototype'], 'mainSoundTrack', { 'get': function() { var _0x57d18d = this['_getComponent'](_0x443f74['a']['NAME_AUDIO']); return _0x57d18d || (_0x57d18d = new _0x16a1d0(this), this['_addComponent'](_0x57d18d)), this['_mainSoundTrack'] || (this['_mainSoundTrack'] = new _0x1733c5(this,{ 'mainTrack': !0x0 })), this['_mainSoundTrack']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x366639['a']['prototype']['getSoundByName'] = function(_0x885bfe) { var _0x5aa817; for (_0x5aa817 = 0x0; _0x5aa817 < this['mainSoundTrack']['soundCollection']['length']; _0x5aa817++) if (this['mainSoundTrack']['soundCollection'][_0x5aa817]['name'] === _0x885bfe) return this['mainSoundTrack']['soundCollection'][_0x5aa817]; if (this['soundTracks']) for (var _0x4daf8c = 0x0; _0x4daf8c < this['soundTracks']['length']; _0x4daf8c++) for (_0x5aa817 = 0x0; _0x5aa817 < this['soundTracks'][_0x4daf8c]['soundCollection']['length']; _0x5aa817++) if (this['soundTracks'][_0x4daf8c]['soundCollection'][_0x5aa817]['name'] === _0x885bfe) return this['soundTracks'][_0x4daf8c]['soundCollection'][_0x5aa817]; return null; } , Object['defineProperty'](_0x366639['a']['prototype'], 'audioEnabled', { 'get': function() { var _0x4fe2cd = this['_getComponent'](_0x443f74['a']['NAME_AUDIO']); return _0x4fe2cd || (_0x4fe2cd = new _0x16a1d0(this), this['_addComponent'](_0x4fe2cd)), _0x4fe2cd['audioEnabled']; }, 'set': function(_0x2bb6a4) { var _0x4f072a = this['_getComponent'](_0x443f74['a']['NAME_AUDIO']); _0x4f072a || (_0x4f072a = new _0x16a1d0(this), this['_addComponent'](_0x4f072a)), _0x2bb6a4 ? _0x4f072a['enableAudio']() : _0x4f072a['disableAudio'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x366639['a']['prototype'], 'headphone', { 'get': function() { var _0x3df252 = this['_getComponent'](_0x443f74['a']['NAME_AUDIO']); return _0x3df252 || (_0x3df252 = new _0x16a1d0(this), this['_addComponent'](_0x3df252)), _0x3df252['headphone']; }, 'set': function(_0x138360) { var _0x211dd4 = this['_getComponent'](_0x443f74['a']['NAME_AUDIO']); _0x211dd4 || (_0x211dd4 = new _0x16a1d0(this), this['_addComponent'](_0x211dd4)), _0x138360 ? _0x211dd4['switchAudioModeForHeadphones']() : _0x211dd4['switchAudioModeForNormalSpeakers'](); }, 'enumerable': !0x0, 'configurable': !0x0 }); var _0x16a1d0 = function() { function _0x5c7c0c(_0x594d1c) { this['name'] = _0x443f74['a']['NAME_AUDIO'], this['_audioEnabled'] = !0x0, this['_headphone'] = !0x1, this['scene'] = _0x594d1c, _0x594d1c['soundTracks'] = new Array(), _0x594d1c['sounds'] = new Array(); } return Object['defineProperty'](_0x5c7c0c['prototype'], 'audioEnabled', { 'get': function() { return this['_audioEnabled']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5c7c0c['prototype'], 'headphone', { 'get': function() { return this['_headphone']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5c7c0c['prototype']['register'] = function() { this['scene']['_afterRenderStage']['registerStep'](_0x443f74['a']['STEP_AFTERRENDER_AUDIO'], this, this['_afterRender']); } , _0x5c7c0c['prototype']['rebuild'] = function() {} , _0x5c7c0c['prototype']['serialize'] = function(_0x202266) { if (_0x202266['sounds'] = [], this['scene']['soundTracks']) for (var _0xf8e997 = 0x0; _0xf8e997 < this['scene']['soundTracks']['length']; _0xf8e997++) for (var _0x5a760d = this['scene']['soundTracks'][_0xf8e997], _0x570870 = 0x0; _0x570870 < _0x5a760d['soundCollection']['length']; _0x570870++) _0x202266['sounds']['push'](_0x5a760d['soundCollection'][_0x570870]['serialize']()); } , _0x5c7c0c['prototype']['addFromContainer'] = function(_0x3129cb) { var _0x1bbc4f = this; _0x3129cb['sounds'] && _0x3129cb['sounds']['forEach'](function(_0x4ab8c6) { _0x4ab8c6['play'](), _0x4ab8c6['autoplay'] = !0x0, _0x1bbc4f['scene']['mainSoundTrack']['AddSound'](_0x4ab8c6); }); } , _0x5c7c0c['prototype']['removeFromContainer'] = function(_0x5ce069, _0x28c666) { var _0x4d9183 = this; void 0x0 === _0x28c666 && (_0x28c666 = !0x1), _0x5ce069['sounds'] && _0x5ce069['sounds']['forEach'](function(_0x2e5cd4) { _0x2e5cd4['stop'](), _0x2e5cd4['autoplay'] = !0x1, _0x4d9183['scene']['mainSoundTrack']['RemoveSound'](_0x2e5cd4), _0x28c666 && _0x2e5cd4['dispose'](); }); } , _0x5c7c0c['prototype']['dispose'] = function() { var _0x149fe4 = this['scene']; if (_0x149fe4['_mainSoundTrack'] && _0x149fe4['mainSoundTrack']['dispose'](), _0x149fe4['soundTracks']) for (var _0x24beb1 = 0x0; _0x24beb1 < _0x149fe4['soundTracks']['length']; _0x24beb1++) _0x149fe4['soundTracks'][_0x24beb1]['dispose'](); } , _0x5c7c0c['prototype']['disableAudio'] = function() { var _0x555c33, _0x5c460b = this['scene']; for (this['_audioEnabled'] = !0x1, _0x555c33 = 0x0; _0x555c33 < _0x5c460b['mainSoundTrack']['soundCollection']['length']; _0x555c33++) _0x5c460b['mainSoundTrack']['soundCollection'][_0x555c33]['pause'](); if (_0x5c460b['soundTracks']) for (_0x555c33 = 0x0; _0x555c33 < _0x5c460b['soundTracks']['length']; _0x555c33++) for (var _0x1abbbc = 0x0; _0x1abbbc < _0x5c460b['soundTracks'][_0x555c33]['soundCollection']['length']; _0x1abbbc++) _0x5c460b['soundTracks'][_0x555c33]['soundCollection'][_0x1abbbc]['pause'](); } , _0x5c7c0c['prototype']['enableAudio'] = function() { var _0x2c663e, _0x57081f = this['scene']; for (this['_audioEnabled'] = !0x0, _0x2c663e = 0x0; _0x2c663e < _0x57081f['mainSoundTrack']['soundCollection']['length']; _0x2c663e++) _0x57081f['mainSoundTrack']['soundCollection'][_0x2c663e]['isPaused'] && _0x57081f['mainSoundTrack']['soundCollection'][_0x2c663e]['play'](); if (_0x57081f['soundTracks']) for (_0x2c663e = 0x0; _0x2c663e < _0x57081f['soundTracks']['length']; _0x2c663e++) for (var _0x1477a6 = 0x0; _0x1477a6 < _0x57081f['soundTracks'][_0x2c663e]['soundCollection']['length']; _0x1477a6++) _0x57081f['soundTracks'][_0x2c663e]['soundCollection'][_0x1477a6]['isPaused'] && _0x57081f['soundTracks'][_0x2c663e]['soundCollection'][_0x1477a6]['play'](); } , _0x5c7c0c['prototype']['switchAudioModeForHeadphones'] = function() { var _0x5476c1 = this['scene']; if (this['_headphone'] = !0x0, _0x5476c1['mainSoundTrack']['switchPanningModelToHRTF'](), _0x5476c1['soundTracks']) for (var _0x47a50c = 0x0; _0x47a50c < _0x5476c1['soundTracks']['length']; _0x47a50c++) _0x5476c1['soundTracks'][_0x47a50c]['switchPanningModelToHRTF'](); } , _0x5c7c0c['prototype']['switchAudioModeForNormalSpeakers'] = function() { var _0x3e428f = this['scene']; if (this['_headphone'] = !0x1, _0x3e428f['mainSoundTrack']['switchPanningModelToEqualPower'](), _0x3e428f['soundTracks']) for (var _0x5c9cba = 0x0; _0x5c9cba < _0x3e428f['soundTracks']['length']; _0x5c9cba++) _0x3e428f['soundTracks'][_0x5c9cba]['switchPanningModelToEqualPower'](); } , _0x5c7c0c['prototype']['_afterRender'] = function() { var _0x44cc04 = this['scene']; if (this['_audioEnabled'] && _0x44cc04['_mainSoundTrack'] && _0x44cc04['soundTracks'] && (0x0 !== _0x44cc04['_mainSoundTrack']['soundCollection']['length'] || 0x1 !== _0x44cc04['soundTracks']['length'])) { var _0xca35cc, _0x45d1e5 = _0x3647a9['b']['audioEngine']; if ((_0xca35cc = _0x44cc04['activeCameras']['length'] > 0x0 ? _0x44cc04['activeCameras'][0x0] : _0x44cc04['activeCamera']) && _0x45d1e5['audioContext']) { _0x45d1e5['audioContext']['listener']['setPosition'](_0xca35cc['position']['x'], _0xca35cc['position']['y'], _0xca35cc['position']['z']), _0xca35cc['rigCameras'] && _0xca35cc['rigCameras']['length'] > 0x0 && (_0xca35cc = _0xca35cc['rigCameras'][0x0]); var _0x4c32d0, _0x2498a9 = _0x47d24f['j']['Invert'](_0xca35cc['getViewMatrix']()), _0x42d577 = _0x47d24f['x']['TransformNormal'](new _0x47d24f['x'](0x0,0x0,-0x1), _0x2498a9); for (_0x42d577['normalize'](), isNaN(_0x42d577['x']) || isNaN(_0x42d577['y']) || isNaN(_0x42d577['z']) || _0x45d1e5['audioContext']['listener']['setOrientation'](_0x42d577['x'], _0x42d577['y'], _0x42d577['z'], 0x0, 0x1, 0x0), _0x4c32d0 = 0x0; _0x4c32d0 < _0x44cc04['mainSoundTrack']['soundCollection']['length']; _0x4c32d0++) { var _0x51cd89 = _0x44cc04['mainSoundTrack']['soundCollection'][_0x4c32d0]; _0x51cd89['useCustomAttenuation'] && _0x51cd89['updateDistanceFromListener'](); } if (_0x44cc04['soundTracks']) for (_0x4c32d0 = 0x0; _0x4c32d0 < _0x44cc04['soundTracks']['length']; _0x4c32d0++) for (var _0x88f009 = 0x0; _0x88f009 < _0x44cc04['soundTracks'][_0x4c32d0]['soundCollection']['length']; _0x88f009++) (_0x51cd89 = _0x44cc04['soundTracks'][_0x4c32d0]['soundCollection'][_0x88f009])['useCustomAttenuation'] && _0x51cd89['updateDistanceFromListener'](); } } } , _0x5c7c0c; }(); _0x58f47f['_SceneComponentInitialization'] = function(_0x2e5b7b) { var _0x5a2ce5 = _0x2e5b7b['_getComponent'](_0x443f74['a']['NAME_AUDIO']); _0x5a2ce5 || (_0x5a2ce5 = new _0x16a1d0(_0x2e5b7b), _0x2e5b7b['_addComponent'](_0x5a2ce5)); } ; var _0xd4c42e = function() { function _0x48ee85(_0x5ca05e, _0x5acaf6, _0x5d70be) { var _0x4101b2 = this; if (this['loop'] = !0x1, this['_coneInnerAngle'] = 0x168, this['_coneOuterAngle'] = 0x168, this['_volume'] = 0x1, this['isPlaying'] = !0x1, this['isPaused'] = !0x1, this['_sounds'] = [], this['_weights'] = [], _0x5acaf6['length'] !== _0x5d70be['length']) throw new Error('Sounds\x20length\x20does\x20not\x20equal\x20weights\x20length'); this['loop'] = _0x5ca05e, this['_weights'] = _0x5d70be; for (var _0x567a26 = 0x0, _0x1a8dd1 = 0x0, _0xedde04 = _0x5d70be; _0x1a8dd1 < _0xedde04['length']; _0x1a8dd1++) { _0x567a26 += _0xedde04[_0x1a8dd1]; } for (var _0x47d4ee = _0x567a26 > 0x0 ? 0x1 / _0x567a26 : 0x0, _0x520f34 = 0x0; _0x520f34 < this['_weights']['length']; _0x520f34++) this['_weights'][_0x520f34] *= _0x47d4ee; this['_sounds'] = _0x5acaf6; for (var _0x71b27b = 0x0, _0x16ae15 = this['_sounds']; _0x71b27b < _0x16ae15['length']; _0x71b27b++) { _0x16ae15[_0x71b27b]['onEndedObservable']['add'](function() { _0x4101b2['_onended'](); }); } } return Object['defineProperty'](_0x48ee85['prototype'], 'directionalConeInnerAngle', { 'get': function() { return this['_coneInnerAngle']; }, 'set': function(_0x3e943f) { if (_0x3e943f !== this['_coneInnerAngle']) { if (this['_coneOuterAngle'] < _0x3e943f) return void _0x3f98cb['a']['Error']('directionalConeInnerAngle:\x20outer\x20angle\x20of\x20the\x20cone\x20must\x20be\x20superior\x20or\x20equal\x20to\x20the\x20inner\x20angle.'); this['_coneInnerAngle'] = _0x3e943f; for (var _0x4575c3 = 0x0, _0x47a564 = this['_sounds']; _0x4575c3 < _0x47a564['length']; _0x4575c3++) { _0x47a564[_0x4575c3]['directionalConeInnerAngle'] = _0x3e943f; } } }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48ee85['prototype'], 'directionalConeOuterAngle', { 'get': function() { return this['_coneOuterAngle']; }, 'set': function(_0x3260f4) { if (_0x3260f4 !== this['_coneOuterAngle']) { if (_0x3260f4 < this['_coneInnerAngle']) return void _0x3f98cb['a']['Error']('directionalConeOuterAngle:\x20outer\x20angle\x20of\x20the\x20cone\x20must\x20be\x20superior\x20or\x20equal\x20to\x20the\x20inner\x20angle.'); this['_coneOuterAngle'] = _0x3260f4; for (var _0x4d89d1 = 0x0, _0x9c98b7 = this['_sounds']; _0x4d89d1 < _0x9c98b7['length']; _0x4d89d1++) { _0x9c98b7[_0x4d89d1]['directionalConeOuterAngle'] = _0x3260f4; } } }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48ee85['prototype'], 'volume', { 'get': function() { return this['_volume']; }, 'set': function(_0xfe499a) { if (_0xfe499a !== this['_volume']) for (var _0xc0976a = 0x0, _0xb07131 = this['_sounds']; _0xc0976a < _0xb07131['length']; _0xc0976a++) { _0xb07131[_0xc0976a]['setVolume'](_0xfe499a); } }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x48ee85['prototype']['_onended'] = function() { void 0x0 !== this['_currentIndex'] && (this['_sounds'][this['_currentIndex']]['autoplay'] = !0x1), this['loop'] && this['isPlaying'] ? this['play']() : this['isPlaying'] = !0x1; } , _0x48ee85['prototype']['pause'] = function() { this['isPaused'] = !0x0, void 0x0 !== this['_currentIndex'] && this['_sounds'][this['_currentIndex']]['pause'](); } , _0x48ee85['prototype']['stop'] = function() { this['isPlaying'] = !0x1, void 0x0 !== this['_currentIndex'] && this['_sounds'][this['_currentIndex']]['stop'](); } , _0x48ee85['prototype']['play'] = function(_0x1336de) { if (!this['isPaused']) { this['stop'](); for (var _0x508a7f = Math['random'](), _0xe89c0 = 0x0, _0x38c350 = 0x0; _0x38c350 < this['_weights']['length']; _0x38c350++) if (_0x508a7f <= (_0xe89c0 += this['_weights'][_0x38c350])) { this['_currentIndex'] = _0x38c350; break; } } var _0xf99e09 = this['_sounds'][this['_currentIndex']]; _0xf99e09['isReady']() ? _0xf99e09['play'](0x0, this['isPaused'] ? void 0x0 : _0x1336de) : _0xf99e09['autoplay'] = !0x0, this['isPlaying'] = !0x0, this['isPaused'] = !0x1; } , _0x48ee85; }() , _0xee889b = _0x59bd00(0x11) , _0x26d2c7 = function() { function _0x4411ad() { this['_zoomStopsAnimation'] = !0x1, this['_idleRotationSpeed'] = 0.05, this['_idleRotationWaitTime'] = 0x7d0, this['_idleRotationSpinupTime'] = 0x7d0, this['_isPointerDown'] = !0x1, this['_lastFrameTime'] = null, this['_lastInteractionTime'] = -0x1 / 0x0, this['_cameraRotationSpeed'] = 0x0, this['_lastFrameRadius'] = 0x0; } return Object['defineProperty'](_0x4411ad['prototype'], 'name', { 'get': function() { return 'AutoRotation'; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4411ad['prototype'], 'zoomStopsAnimation', { 'get': function() { return this['_zoomStopsAnimation']; }, 'set': function(_0x3c84d5) { this['_zoomStopsAnimation'] = _0x3c84d5; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4411ad['prototype'], 'idleRotationSpeed', { 'get': function() { return this['_idleRotationSpeed']; }, 'set': function(_0x96d0d6) { this['_idleRotationSpeed'] = _0x96d0d6; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4411ad['prototype'], 'idleRotationWaitTime', { 'get': function() { return this['_idleRotationWaitTime']; }, 'set': function(_0x271355) { this['_idleRotationWaitTime'] = _0x271355; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4411ad['prototype'], 'idleRotationSpinupTime', { 'get': function() { return this['_idleRotationSpinupTime']; }, 'set': function(_0x3928e5) { this['_idleRotationSpinupTime'] = _0x3928e5; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4411ad['prototype'], 'rotationInProgress', { 'get': function() { return Math['abs'](this['_cameraRotationSpeed']) > 0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4411ad['prototype']['init'] = function() {} , _0x4411ad['prototype']['attach'] = function(_0x254205) { var _0x370d3a = this; this['_attachedCamera'] = _0x254205; var _0xcdd8fc = this['_attachedCamera']['getScene'](); this['_onPrePointerObservableObserver'] = _0xcdd8fc['onPrePointerObservable']['add'](function(_0x1b9c0e) { _0x1b9c0e['type'] !== _0xee889b['a']['POINTERDOWN'] ? _0x1b9c0e['type'] === _0xee889b['a']['POINTERUP'] && (_0x370d3a['_isPointerDown'] = !0x1) : _0x370d3a['_isPointerDown'] = !0x0; }), this['_onAfterCheckInputsObserver'] = _0x254205['onAfterCheckInputsObservable']['add'](function() { var _0x492cf8 = _0x39b2d2['a']['Now'] , _0x30b988 = 0x0; null != _0x370d3a['_lastFrameTime'] && (_0x30b988 = _0x492cf8 - _0x370d3a['_lastFrameTime']), _0x370d3a['_lastFrameTime'] = _0x492cf8, _0x370d3a['_applyUserInteraction'](); var _0x3533ed = _0x492cf8 - _0x370d3a['_lastInteractionTime'] - _0x370d3a['_idleRotationWaitTime'] , _0x4bb044 = Math['max'](Math['min'](_0x3533ed / _0x370d3a['_idleRotationSpinupTime'], 0x1), 0x0); _0x370d3a['_cameraRotationSpeed'] = _0x370d3a['_idleRotationSpeed'] * _0x4bb044, _0x370d3a['_attachedCamera'] && (_0x370d3a['_attachedCamera']['alpha'] -= _0x370d3a['_cameraRotationSpeed'] * (_0x30b988 / 0x3e8)); }); } , _0x4411ad['prototype']['detach'] = function() { if (this['_attachedCamera']) { var _0x358fa4 = this['_attachedCamera']['getScene'](); this['_onPrePointerObservableObserver'] && _0x358fa4['onPrePointerObservable']['remove'](this['_onPrePointerObservableObserver']), this['_attachedCamera']['onAfterCheckInputsObservable']['remove'](this['_onAfterCheckInputsObserver']), this['_attachedCamera'] = null; } } , _0x4411ad['prototype']['_userIsZooming'] = function() { return !!this['_attachedCamera'] && 0x0 !== this['_attachedCamera']['inertialRadiusOffset']; } , _0x4411ad['prototype']['_shouldAnimationStopForInteraction'] = function() { if (!this['_attachedCamera']) return !0x1; var _0x238947 = !0x1; return this['_lastFrameRadius'] === this['_attachedCamera']['radius'] && 0x0 !== this['_attachedCamera']['inertialRadiusOffset'] && (_0x238947 = !0x0), this['_lastFrameRadius'] = this['_attachedCamera']['radius'], this['_zoomStopsAnimation'] ? _0x238947 : this['_userIsZooming'](); } , _0x4411ad['prototype']['_applyUserInteraction'] = function() { this['_userIsMoving']() && !this['_shouldAnimationStopForInteraction']() && (this['_lastInteractionTime'] = _0x39b2d2['a']['Now']); } , _0x4411ad['prototype']['_userIsMoving'] = function() { return !!this['_attachedCamera'] && (0x0 !== this['_attachedCamera']['inertialAlphaOffset'] || 0x0 !== this['_attachedCamera']['inertialBetaOffset'] || 0x0 !== this['_attachedCamera']['inertialRadiusOffset'] || 0x0 !== this['_attachedCamera']['inertialPanningX'] || 0x0 !== this['_attachedCamera']['inertialPanningY'] || this['_isPointerDown']); } , _0x4411ad; }() , _0x4648c8 = function() { function _0x508e43() { this['transitionDuration'] = 0x1c2, this['lowerRadiusTransitionRange'] = 0x2, this['upperRadiusTransitionRange'] = -0x2, this['_autoTransitionRange'] = !0x1, this['_radiusIsAnimating'] = !0x1, this['_radiusBounceTransition'] = null, this['_animatables'] = new Array(); } return Object['defineProperty'](_0x508e43['prototype'], 'name', { 'get': function() { return 'Bouncing'; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x508e43['prototype'], 'autoTransitionRange', { 'get': function() { return this['_autoTransitionRange']; }, 'set': function(_0x4bc850) { var _0xf15033 = this; if (this['_autoTransitionRange'] !== _0x4bc850) { this['_autoTransitionRange'] = _0x4bc850; var _0x50fdbe = this['_attachedCamera']; _0x50fdbe && (_0x4bc850 ? this['_onMeshTargetChangedObserver'] = _0x50fdbe['onMeshTargetChangedObservable']['add'](function(_0xaba542) { if (_0xaba542) { _0xaba542['computeWorldMatrix'](!0x0); var _0x128ef8 = _0xaba542['getBoundingInfo']()['diagonalLength']; _0xf15033['lowerRadiusTransitionRange'] = 0.05 * _0x128ef8, _0xf15033['upperRadiusTransitionRange'] = 0.05 * _0x128ef8; } }) : this['_onMeshTargetChangedObserver'] && _0x50fdbe['onMeshTargetChangedObservable']['remove'](this['_onMeshTargetChangedObserver'])); } }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x508e43['prototype']['init'] = function() {} , _0x508e43['prototype']['attach'] = function(_0x35034b) { var _0x2b99b0 = this; this['_attachedCamera'] = _0x35034b, this['_onAfterCheckInputsObserver'] = _0x35034b['onAfterCheckInputsObservable']['add'](function() { _0x2b99b0['_attachedCamera'] && (_0x2b99b0['_isRadiusAtLimit'](_0x2b99b0['_attachedCamera']['lowerRadiusLimit']) && _0x2b99b0['_applyBoundRadiusAnimation'](_0x2b99b0['lowerRadiusTransitionRange']), _0x2b99b0['_isRadiusAtLimit'](_0x2b99b0['_attachedCamera']['upperRadiusLimit']) && _0x2b99b0['_applyBoundRadiusAnimation'](_0x2b99b0['upperRadiusTransitionRange'])); }); } , _0x508e43['prototype']['detach'] = function() { this['_attachedCamera'] && (this['_onAfterCheckInputsObserver'] && this['_attachedCamera']['onAfterCheckInputsObservable']['remove'](this['_onAfterCheckInputsObserver']), this['_onMeshTargetChangedObserver'] && this['_attachedCamera']['onMeshTargetChangedObservable']['remove'](this['_onMeshTargetChangedObserver']), this['_attachedCamera'] = null); } , _0x508e43['prototype']['_isRadiusAtLimit'] = function(_0x44134c) { return !!this['_attachedCamera'] && (this['_attachedCamera']['radius'] === _0x44134c && !this['_radiusIsAnimating']); } , _0x508e43['prototype']['_applyBoundRadiusAnimation'] = function(_0x4be386) { var _0x1af20a = this; if (this['_attachedCamera']) { this['_radiusBounceTransition'] || (_0x508e43['EasingFunction']['setEasingMode'](_0x508e43['EasingMode']), this['_radiusBounceTransition'] = _0x4452f5['CreateAnimation']('radius', _0x4452f5['ANIMATIONTYPE_FLOAT'], 0x3c, _0x508e43['EasingFunction'])), this['_cachedWheelPrecision'] = this['_attachedCamera']['wheelPrecision'], this['_attachedCamera']['wheelPrecision'] = 0x1 / 0x0, this['_attachedCamera']['inertialRadiusOffset'] = 0x0, this['stopAllAnimations'](), this['_radiusIsAnimating'] = !0x0; var _0x57ebf9 = _0x4452f5['TransitionTo']('radius', this['_attachedCamera']['radius'] + _0x4be386, this['_attachedCamera'], this['_attachedCamera']['getScene'](), 0x3c, this['_radiusBounceTransition'], this['transitionDuration'], function() { return _0x1af20a['_clearAnimationLocks'](); }); _0x57ebf9 && this['_animatables']['push'](_0x57ebf9); } } , _0x508e43['prototype']['_clearAnimationLocks'] = function() { this['_radiusIsAnimating'] = !0x1, this['_attachedCamera'] && (this['_attachedCamera']['wheelPrecision'] = this['_cachedWheelPrecision']); } , _0x508e43['prototype']['stopAllAnimations'] = function() { for (this['_attachedCamera'] && (this['_attachedCamera']['animations'] = []); this['_animatables']['length']; ) this['_animatables'][0x0]['onAnimationEnd'] = null, this['_animatables'][0x0]['stop'](), this['_animatables']['shift'](); } , _0x508e43['EasingFunction'] = new _0x4b0507(0.3), _0x508e43['EasingMode'] = _0x5f17eb['EASINGMODE_EASEOUT'], _0x508e43; }() , _0x50a884 = function() { function _0x24dd4f() { this['_mode'] = _0x24dd4f['FitFrustumSidesMode'], this['_radiusScale'] = 0x1, this['_positionScale'] = 0.5, this['_defaultElevation'] = 0.3, this['_elevationReturnTime'] = 0x5dc, this['_elevationReturnWaitTime'] = 0x3e8, this['_zoomStopsAnimation'] = !0x1, this['_framingTime'] = 0x5dc, this['autoCorrectCameraLimitsAndSensibility'] = !0x0, this['_isPointerDown'] = !0x1, this['_lastInteractionTime'] = -0x1 / 0x0, this['_animatables'] = new Array(), this['_betaIsAnimating'] = !0x1; } return Object['defineProperty'](_0x24dd4f['prototype'], 'name', { 'get': function() { return 'Framing'; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x24dd4f['prototype'], 'mode', { 'get': function() { return this['_mode']; }, 'set': function(_0x526443) { this['_mode'] = _0x526443; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x24dd4f['prototype'], 'radiusScale', { 'get': function() { return this['_radiusScale']; }, 'set': function(_0x27a70a) { this['_radiusScale'] = _0x27a70a; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x24dd4f['prototype'], 'positionScale', { 'get': function() { return this['_positionScale']; }, 'set': function(_0x354432) { this['_positionScale'] = _0x354432; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x24dd4f['prototype'], 'defaultElevation', { 'get': function() { return this['_defaultElevation']; }, 'set': function(_0x2f2366) { this['_defaultElevation'] = _0x2f2366; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x24dd4f['prototype'], 'elevationReturnTime', { 'get': function() { return this['_elevationReturnTime']; }, 'set': function(_0x293aff) { this['_elevationReturnTime'] = _0x293aff; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x24dd4f['prototype'], 'elevationReturnWaitTime', { 'get': function() { return this['_elevationReturnWaitTime']; }, 'set': function(_0x2faf4a) { this['_elevationReturnWaitTime'] = _0x2faf4a; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x24dd4f['prototype'], 'zoomStopsAnimation', { 'get': function() { return this['_zoomStopsAnimation']; }, 'set': function(_0x90cf7d) { this['_zoomStopsAnimation'] = _0x90cf7d; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x24dd4f['prototype'], 'framingTime', { 'get': function() { return this['_framingTime']; }, 'set': function(_0x2fc7f7) { this['_framingTime'] = _0x2fc7f7; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x24dd4f['prototype']['init'] = function() {} , _0x24dd4f['prototype']['attach'] = function(_0x32859a) { var _0xfb496 = this; this['_attachedCamera'] = _0x32859a; var _0x5bc035 = this['_attachedCamera']['getScene'](); _0x24dd4f['EasingFunction']['setEasingMode'](_0x24dd4f['EasingMode']), this['_onPrePointerObservableObserver'] = _0x5bc035['onPrePointerObservable']['add'](function(_0x45dcce) { _0x45dcce['type'] !== _0xee889b['a']['POINTERDOWN'] ? _0x45dcce['type'] === _0xee889b['a']['POINTERUP'] && (_0xfb496['_isPointerDown'] = !0x1) : _0xfb496['_isPointerDown'] = !0x0; }), this['_onMeshTargetChangedObserver'] = _0x32859a['onMeshTargetChangedObservable']['add'](function(_0xa8e90) { _0xa8e90 && _0xfb496['zoomOnMesh'](_0xa8e90); }), this['_onAfterCheckInputsObserver'] = _0x32859a['onAfterCheckInputsObservable']['add'](function() { _0xfb496['_applyUserInteraction'](), _0xfb496['_maintainCameraAboveGround'](); }); } , _0x24dd4f['prototype']['detach'] = function() { if (this['_attachedCamera']) { var _0x3fb69e = this['_attachedCamera']['getScene'](); this['_onPrePointerObservableObserver'] && _0x3fb69e['onPrePointerObservable']['remove'](this['_onPrePointerObservableObserver']), this['_onAfterCheckInputsObserver'] && this['_attachedCamera']['onAfterCheckInputsObservable']['remove'](this['_onAfterCheckInputsObserver']), this['_onMeshTargetChangedObserver'] && this['_attachedCamera']['onMeshTargetChangedObservable']['remove'](this['_onMeshTargetChangedObserver']), this['_attachedCamera'] = null; } } , _0x24dd4f['prototype']['zoomOnMesh'] = function(_0x26ba4d, _0x3c166e, _0x32a231) { void 0x0 === _0x3c166e && (_0x3c166e = !0x1), void 0x0 === _0x32a231 && (_0x32a231 = null), _0x26ba4d['computeWorldMatrix'](!0x0); var _0x42b583 = _0x26ba4d['getBoundingInfo']()['boundingBox']; this['zoomOnBoundingInfo'](_0x42b583['minimumWorld'], _0x42b583['maximumWorld'], _0x3c166e, _0x32a231); } , _0x24dd4f['prototype']['zoomOnMeshHierarchy'] = function(_0x59a527, _0x4f63a0, _0x517a93) { void 0x0 === _0x4f63a0 && (_0x4f63a0 = !0x1), void 0x0 === _0x517a93 && (_0x517a93 = null), _0x59a527['computeWorldMatrix'](!0x0); var _0x5eeed5 = _0x59a527['getHierarchyBoundingVectors'](!0x0); this['zoomOnBoundingInfo'](_0x5eeed5['min'], _0x5eeed5['max'], _0x4f63a0, _0x517a93); } , _0x24dd4f['prototype']['zoomOnMeshesHierarchy'] = function(_0x43abf7, _0x539c46, _0x4cb918) { void 0x0 === _0x539c46 && (_0x539c46 = !0x1), void 0x0 === _0x4cb918 && (_0x4cb918 = null); for (var _0x4ac9ce = new _0x47d24f['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']), _0x311e0d = new _0x47d24f['x'](-Number['MAX_VALUE'],-Number['MAX_VALUE'],-Number['MAX_VALUE']), _0x2b7a28 = 0x0; _0x2b7a28 < _0x43abf7['length']; _0x2b7a28++) { var _0x52c4ab = _0x43abf7[_0x2b7a28]['getHierarchyBoundingVectors'](!0x0); _0x1eb50e['h']['CheckExtends'](_0x52c4ab['min'], _0x4ac9ce, _0x311e0d), _0x1eb50e['h']['CheckExtends'](_0x52c4ab['max'], _0x4ac9ce, _0x311e0d); } this['zoomOnBoundingInfo'](_0x4ac9ce, _0x311e0d, _0x539c46, _0x4cb918); } , _0x24dd4f['prototype']['zoomOnBoundingInfo'] = function(_0x176578, _0x3b89da, _0x193dc3, _0x4f2c15) { var _0x2256f1, _0xc19db6 = this; if (void 0x0 === _0x193dc3 && (_0x193dc3 = !0x1), void 0x0 === _0x4f2c15 && (_0x4f2c15 = null), this['_attachedCamera']) { var _0x40f227 = _0x176578['y'] , _0x4dd559 = _0x40f227 + (_0x3b89da['y'] - _0x40f227) * this['_positionScale'] , _0x285c2f = _0x3b89da['subtract'](_0x176578)['scale'](0.5); if (_0x193dc3) _0x2256f1 = new _0x47d24f['x'](0x0,_0x4dd559,0x0); else { var _0x44a760 = _0x176578['add'](_0x285c2f); _0x2256f1 = new _0x47d24f['x'](_0x44a760['x'],_0x4dd559,_0x44a760['z']); } this['_vectorTransition'] || (this['_vectorTransition'] = _0x4452f5['CreateAnimation']('target', _0x4452f5['ANIMATIONTYPE_VECTOR3'], 0x3c, _0x24dd4f['EasingFunction'])), this['_betaIsAnimating'] = !0x0; var _0x321782 = _0x4452f5['TransitionTo']('target', _0x2256f1, this['_attachedCamera'], this['_attachedCamera']['getScene'](), 0x3c, this['_vectorTransition'], this['_framingTime']); _0x321782 && this['_animatables']['push'](_0x321782); var _0x22e0b7 = 0x0; if (this['_mode'] === _0x24dd4f['FitFrustumSidesMode']) { var _0x5bfc35 = this['_calculateLowerRadiusFromModelBoundingSphere'](_0x176578, _0x3b89da); this['autoCorrectCameraLimitsAndSensibility'] && (this['_attachedCamera']['lowerRadiusLimit'] = _0x285c2f['length']() + this['_attachedCamera']['minZ']), _0x22e0b7 = _0x5bfc35; } else this['_mode'] === _0x24dd4f['IgnoreBoundsSizeMode'] && (_0x22e0b7 = this['_calculateLowerRadiusFromModelBoundingSphere'](_0x176578, _0x3b89da), this['autoCorrectCameraLimitsAndSensibility'] && null === this['_attachedCamera']['lowerRadiusLimit'] && (this['_attachedCamera']['lowerRadiusLimit'] = this['_attachedCamera']['minZ'])); if (this['autoCorrectCameraLimitsAndSensibility']) { var _0x1f23d6 = _0x3b89da['subtract'](_0x176578)['length'](); this['_attachedCamera']['panningSensibility'] = 0x1388 / _0x1f23d6, this['_attachedCamera']['wheelPrecision'] = 0x64 / _0x22e0b7; } this['_radiusTransition'] || (this['_radiusTransition'] = _0x4452f5['CreateAnimation']('radius', _0x4452f5['ANIMATIONTYPE_FLOAT'], 0x3c, _0x24dd4f['EasingFunction'])), (_0x321782 = _0x4452f5['TransitionTo']('radius', _0x22e0b7, this['_attachedCamera'], this['_attachedCamera']['getScene'](), 0x3c, this['_radiusTransition'], this['_framingTime'], function() { _0xc19db6['stopAllAnimations'](), _0x4f2c15 && _0x4f2c15(), _0xc19db6['_attachedCamera'] && _0xc19db6['_attachedCamera']['useInputToRestoreState'] && _0xc19db6['_attachedCamera']['storeState'](); })) && this['_animatables']['push'](_0x321782); } } , _0x24dd4f['prototype']['_calculateLowerRadiusFromModelBoundingSphere'] = function(_0x1e6344, _0x368f6c) { var _0x461e27 = _0x368f6c['subtract'](_0x1e6344)['length']() , _0x1b02be = this['_getFrustumSlope']() , _0x1f20cd = 0.5 * _0x461e27 * this['_radiusScale'] , _0x5e0371 = _0x1f20cd * Math['sqrt'](0x1 + 0x1 / (_0x1b02be['x'] * _0x1b02be['x'])) , _0x1b56bb = _0x1f20cd * Math['sqrt'](0x1 + 0x1 / (_0x1b02be['y'] * _0x1b02be['y'])) , _0x16b0b2 = Math['max'](_0x5e0371, _0x1b56bb) , _0x2fa525 = this['_attachedCamera']; return _0x2fa525 ? (_0x2fa525['lowerRadiusLimit'] && this['_mode'] === _0x24dd4f['IgnoreBoundsSizeMode'] && (_0x16b0b2 = _0x16b0b2 < _0x2fa525['lowerRadiusLimit'] ? _0x2fa525['lowerRadiusLimit'] : _0x16b0b2), _0x2fa525['upperRadiusLimit'] && (_0x16b0b2 = _0x16b0b2 > _0x2fa525['upperRadiusLimit'] ? _0x2fa525['upperRadiusLimit'] : _0x16b0b2), _0x16b0b2) : 0x0; } , _0x24dd4f['prototype']['_maintainCameraAboveGround'] = function() { var _0x537d12 = this; if (!(this['_elevationReturnTime'] < 0x0)) { var _0x9043f2 = _0x39b2d2['a']['Now'] - this['_lastInteractionTime'] , _0x2b0b64 = 0.5 * Math['PI'] - this['_defaultElevation'] , _0x58e77e = 0.5 * Math['PI']; if (this['_attachedCamera'] && !this['_betaIsAnimating'] && this['_attachedCamera']['beta'] > _0x58e77e && _0x9043f2 >= this['_elevationReturnWaitTime']) { this['_betaIsAnimating'] = !0x0, this['stopAllAnimations'](), this['_betaTransition'] || (this['_betaTransition'] = _0x4452f5['CreateAnimation']('beta', _0x4452f5['ANIMATIONTYPE_FLOAT'], 0x3c, _0x24dd4f['EasingFunction'])); var _0x3399d2 = _0x4452f5['TransitionTo']('beta', _0x2b0b64, this['_attachedCamera'], this['_attachedCamera']['getScene'](), 0x3c, this['_betaTransition'], this['_elevationReturnTime'], function() { _0x537d12['_clearAnimationLocks'](), _0x537d12['stopAllAnimations'](); }); _0x3399d2 && this['_animatables']['push'](_0x3399d2); } } } , _0x24dd4f['prototype']['_getFrustumSlope'] = function() { var _0x1e262b = this['_attachedCamera']; if (!_0x1e262b) return _0x47d24f['w']['Zero'](); var _0x151328 = _0x1e262b['getScene']()['getEngine']()['getAspectRatio'](_0x1e262b) , _0xab29b4 = Math['tan'](_0x1e262b['fov'] / 0x2) , _0x340a7c = _0xab29b4 * _0x151328; return new _0x47d24f['w'](_0x340a7c,_0xab29b4); } , _0x24dd4f['prototype']['_clearAnimationLocks'] = function() { this['_betaIsAnimating'] = !0x1; } , _0x24dd4f['prototype']['_applyUserInteraction'] = function() { this['isUserIsMoving'] && (this['_lastInteractionTime'] = _0x39b2d2['a']['Now'], this['stopAllAnimations'](), this['_clearAnimationLocks']()); } , _0x24dd4f['prototype']['stopAllAnimations'] = function() { for (this['_attachedCamera'] && (this['_attachedCamera']['animations'] = []); this['_animatables']['length']; ) this['_animatables'][0x0] && (this['_animatables'][0x0]['onAnimationEnd'] = null, this['_animatables'][0x0]['stop']()), this['_animatables']['shift'](); } , Object['defineProperty'](_0x24dd4f['prototype'], 'isUserIsMoving', { 'get': function() { return !!this['_attachedCamera'] && (0x0 !== this['_attachedCamera']['inertialAlphaOffset'] || 0x0 !== this['_attachedCamera']['inertialBetaOffset'] || 0x0 !== this['_attachedCamera']['inertialRadiusOffset'] || 0x0 !== this['_attachedCamera']['inertialPanningX'] || 0x0 !== this['_attachedCamera']['inertialPanningY'] || this['_isPointerDown']); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x24dd4f['EasingFunction'] = new _0x3f1e3e(), _0x24dd4f['EasingMode'] = _0x5f17eb['EASINGMODE_EASEINOUT'], _0x24dd4f['IgnoreBoundsSizeMode'] = 0x0, _0x24dd4f['FitFrustumSidesMode'] = 0x1, _0x24dd4f; }() , _0x24919b = function() { return function(_0x11a9a2, _0x4e435d, _0x39fc32, _0x5367da) { void 0x0 === _0x4e435d && (_0x4e435d = new _0x47d24f['x']()), void 0x0 === _0x39fc32 && (_0x39fc32 = 0x0), void 0x0 === _0x5367da && (_0x5367da = !0x1), this['direction'] = _0x11a9a2, this['rotatedDirection'] = _0x4e435d, this['diff'] = _0x39fc32, this['ignore'] = _0x5367da; } ; }() , _0x787610 = function() { function _0x6cbd68(_0x434409) { this['ui'] = _0x434409, this['name'] = 'AttachToBoxBehavior', this['distanceAwayFromFace'] = 0.15, this['distanceAwayFromBottomOfFace'] = 0.15, this['_faceVectors'] = [new _0x24919b(_0x47d24f['x']['Up']()), new _0x24919b(_0x47d24f['x']['Down']()), new _0x24919b(_0x47d24f['x']['Left']()), new _0x24919b(_0x47d24f['x']['Right']()), new _0x24919b(_0x47d24f['x']['Forward']()), new _0x24919b(_0x47d24f['x']['Forward']()['scaleInPlace'](-0x1))], this['_tmpMatrix'] = new _0x47d24f['j'](), this['_tmpVector'] = new _0x47d24f['x'](), this['_zeroVector'] = _0x47d24f['x']['Zero'](), this['_lookAtTmpMatrix'] = new _0x47d24f['j'](); } return _0x6cbd68['prototype']['init'] = function() {} , _0x6cbd68['prototype']['_closestFace'] = function(_0x3b9442) { var _0x2d769e = this; return this['_faceVectors']['forEach'](function(_0x318f9b) { _0x2d769e['_target']['rotationQuaternion'] || (_0x2d769e['_target']['rotationQuaternion'] = _0x47d24f['q']['RotationYawPitchRoll'](_0x2d769e['_target']['rotation']['y'], _0x2d769e['_target']['rotation']['x'], _0x2d769e['_target']['rotation']['z'])), _0x2d769e['_target']['rotationQuaternion']['toRotationMatrix'](_0x2d769e['_tmpMatrix']), _0x47d24f['x']['TransformCoordinatesToRef'](_0x318f9b['direction'], _0x2d769e['_tmpMatrix'], _0x318f9b['rotatedDirection']), _0x318f9b['diff'] = _0x47d24f['x']['GetAngleBetweenVectors'](_0x318f9b['rotatedDirection'], _0x3b9442, _0x47d24f['x']['Cross'](_0x318f9b['rotatedDirection'], _0x3b9442)); }), this['_faceVectors']['reduce'](function(_0x227655, _0x3d4931) { return _0x227655['ignore'] ? _0x3d4931 : _0x3d4931['ignore'] ? _0x227655 : _0x227655['diff'] < _0x3d4931['diff'] ? _0x227655 : _0x3d4931; }, this['_faceVectors'][0x0]); } , _0x6cbd68['prototype']['_lookAtToRef'] = function(_0xe02a8d, _0x275d02, _0x2bc2c0) { void 0x0 === _0x275d02 && (_0x275d02 = new _0x47d24f['x'](0x0,0x1,0x0)), _0x47d24f['j']['LookAtLHToRef'](this['_zeroVector'], _0xe02a8d, _0x275d02, this['_lookAtTmpMatrix']), this['_lookAtTmpMatrix']['invert'](), _0x47d24f['q']['FromRotationMatrixToRef'](this['_lookAtTmpMatrix'], _0x2bc2c0); } , _0x6cbd68['prototype']['attach'] = function(_0x44ce10) { var _0x16d7c9 = this; this['_target'] = _0x44ce10, this['_scene'] = this['_target']['getScene'](), this['_onRenderObserver'] = this['_scene']['onBeforeRenderObservable']['add'](function() { if (_0x16d7c9['_scene']['activeCamera']) { var _0xbfbfae = _0x16d7c9['_scene']['activeCamera']['position']; _0x16d7c9['_scene']['activeCamera']['devicePosition'] && (_0xbfbfae = _0x16d7c9['_scene']['activeCamera']['devicePosition']); var _0x8be618 = _0x16d7c9['_closestFace'](_0xbfbfae['subtract'](_0x44ce10['position'])); _0x16d7c9['_scene']['activeCamera']['leftCamera'] ? _0x16d7c9['_scene']['activeCamera']['leftCamera']['computeWorldMatrix']()['getRotationMatrixToRef'](_0x16d7c9['_tmpMatrix']) : _0x16d7c9['_scene']['activeCamera']['computeWorldMatrix']()['getRotationMatrixToRef'](_0x16d7c9['_tmpMatrix']), _0x47d24f['x']['TransformCoordinatesToRef'](_0x47d24f['x']['Up'](), _0x16d7c9['_tmpMatrix'], _0x16d7c9['_tmpVector']), _0x16d7c9['_faceVectors']['forEach'](function(_0x2d0eab) { _0x8be618['direction']['x'] && _0x2d0eab['direction']['x'] && (_0x2d0eab['ignore'] = !0x0), _0x8be618['direction']['y'] && _0x2d0eab['direction']['y'] && (_0x2d0eab['ignore'] = !0x0), _0x8be618['direction']['z'] && _0x2d0eab['direction']['z'] && (_0x2d0eab['ignore'] = !0x0); }); var _0x4dcbbf = _0x16d7c9['_closestFace'](_0x16d7c9['_tmpVector']); _0x16d7c9['_faceVectors']['forEach'](function(_0x2e0b8d) { _0x2e0b8d['ignore'] = !0x1; }), _0x16d7c9['ui']['position']['copyFrom'](_0x44ce10['position']), _0x8be618['direction']['x'] && (_0x8be618['rotatedDirection']['scaleToRef'](_0x44ce10['scaling']['x'] / 0x2 + _0x16d7c9['distanceAwayFromFace'], _0x16d7c9['_tmpVector']), _0x16d7c9['ui']['position']['addInPlace'](_0x16d7c9['_tmpVector'])), _0x8be618['direction']['y'] && (_0x8be618['rotatedDirection']['scaleToRef'](_0x44ce10['scaling']['y'] / 0x2 + _0x16d7c9['distanceAwayFromFace'], _0x16d7c9['_tmpVector']), _0x16d7c9['ui']['position']['addInPlace'](_0x16d7c9['_tmpVector'])), _0x8be618['direction']['z'] && (_0x8be618['rotatedDirection']['scaleToRef'](_0x44ce10['scaling']['z'] / 0x2 + _0x16d7c9['distanceAwayFromFace'], _0x16d7c9['_tmpVector']), _0x16d7c9['ui']['position']['addInPlace'](_0x16d7c9['_tmpVector'])), _0x16d7c9['ui']['rotationQuaternion'] || (_0x16d7c9['ui']['rotationQuaternion'] = _0x47d24f['q']['RotationYawPitchRoll'](_0x16d7c9['ui']['rotation']['y'], _0x16d7c9['ui']['rotation']['x'], _0x16d7c9['ui']['rotation']['z'])), _0x8be618['rotatedDirection']['scaleToRef'](-0x1, _0x16d7c9['_tmpVector']), _0x16d7c9['_lookAtToRef'](_0x16d7c9['_tmpVector'], _0x4dcbbf['rotatedDirection'], _0x16d7c9['ui']['rotationQuaternion']), _0x4dcbbf['direction']['x'] && _0x16d7c9['ui']['up']['scaleToRef'](_0x16d7c9['distanceAwayFromBottomOfFace'] - _0x44ce10['scaling']['x'] / 0x2, _0x16d7c9['_tmpVector']), _0x4dcbbf['direction']['y'] && _0x16d7c9['ui']['up']['scaleToRef'](_0x16d7c9['distanceAwayFromBottomOfFace'] - _0x44ce10['scaling']['y'] / 0x2, _0x16d7c9['_tmpVector']), _0x4dcbbf['direction']['z'] && _0x16d7c9['ui']['up']['scaleToRef'](_0x16d7c9['distanceAwayFromBottomOfFace'] - _0x44ce10['scaling']['z'] / 0x2, _0x16d7c9['_tmpVector']), _0x16d7c9['ui']['position']['addInPlace'](_0x16d7c9['_tmpVector']); } }); } , _0x6cbd68['prototype']['detach'] = function() { this['_scene']['onBeforeRenderObservable']['remove'](this['_onRenderObserver']); } , _0x6cbd68; }() , _0x5b617e = function() { function _0x42c4f9() { var _0x1dfd79 = this; this['delay'] = 0x0, this['fadeInTime'] = 0x12c, this['_millisecondsPerFrame'] = 0x3e8 / 0x3c, this['_hovered'] = !0x1, this['_hoverValue'] = 0x0, this['_ownerNode'] = null, this['_update'] = function() { if (_0x1dfd79['_ownerNode']) { if (_0x1dfd79['_hoverValue'] += _0x1dfd79['_hovered'] ? _0x1dfd79['_millisecondsPerFrame'] : -_0x1dfd79['_millisecondsPerFrame'], _0x1dfd79['_setAllVisibility'](_0x1dfd79['_ownerNode'], (_0x1dfd79['_hoverValue'] - _0x1dfd79['delay']) / _0x1dfd79['fadeInTime']), _0x1dfd79['_ownerNode']['visibility'] > 0x1) return _0x1dfd79['_setAllVisibility'](_0x1dfd79['_ownerNode'], 0x1), void (_0x1dfd79['_hoverValue'] = _0x1dfd79['fadeInTime'] + _0x1dfd79['delay']); if (_0x1dfd79['_ownerNode']['visibility'] < 0x0 && (_0x1dfd79['_setAllVisibility'](_0x1dfd79['_ownerNode'], 0x0), _0x1dfd79['_hoverValue'] < 0x0)) return void (_0x1dfd79['_hoverValue'] = 0x0); setTimeout(_0x1dfd79['_update'], _0x1dfd79['_millisecondsPerFrame']); } } ; } return Object['defineProperty'](_0x42c4f9['prototype'], 'name', { 'get': function() { return 'FadeInOut'; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x42c4f9['prototype']['init'] = function() {} , _0x42c4f9['prototype']['attach'] = function(_0x473bb9) { this['_ownerNode'] = _0x473bb9, this['_setAllVisibility'](this['_ownerNode'], 0x0); } , _0x42c4f9['prototype']['detach'] = function() { this['_ownerNode'] = null; } , _0x42c4f9['prototype']['fadeIn'] = function(_0x214b4b) { this['_hovered'] = _0x214b4b, this['_update'](); } , _0x42c4f9['prototype']['_setAllVisibility'] = function(_0xcdd562, _0x79e46) { var _0x357328 = this; _0xcdd562['visibility'] = _0x79e46, _0xcdd562['getChildMeshes']()['forEach'](function(_0x5d8db9) { _0x357328['_setAllVisibility'](_0x5d8db9, _0x79e46); }); } , _0x42c4f9; }() , _0x292073 = _0x59bd00(0x36) , _0x5b942b = function() { function _0x427d22() { this['_startDistance'] = 0x0, this['_initialScale'] = new _0x47d24f['x'](0x0,0x0,0x0), this['_targetScale'] = new _0x47d24f['x'](0x0,0x0,0x0), this['_sceneRenderObserver'] = null, this['_dragBehaviorA'] = new _0x292073['a']({}), this['_dragBehaviorA']['moveAttached'] = !0x1, this['_dragBehaviorB'] = new _0x292073['a']({}), this['_dragBehaviorB']['moveAttached'] = !0x1; } return Object['defineProperty'](_0x427d22['prototype'], 'name', { 'get': function() { return 'MultiPointerScale'; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x427d22['prototype']['init'] = function() {} , _0x427d22['prototype']['_getCurrentDistance'] = function() { return this['_dragBehaviorA']['lastDragPosition']['subtract'](this['_dragBehaviorB']['lastDragPosition'])['length'](); } , _0x427d22['prototype']['attach'] = function(_0x43c421) { var _0x360908 = this; this['_ownerNode'] = _0x43c421, this['_dragBehaviorA']['onDragStartObservable']['add'](function(_0x4e2de9) { _0x360908['_dragBehaviorA']['dragging'] && _0x360908['_dragBehaviorB']['dragging'] && (_0x360908['_dragBehaviorA']['currentDraggingPointerID'] == _0x360908['_dragBehaviorB']['currentDraggingPointerID'] ? _0x360908['_dragBehaviorA']['releaseDrag']() : (_0x360908['_initialScale']['copyFrom'](_0x43c421['scaling']), _0x360908['_startDistance'] = _0x360908['_getCurrentDistance']())); }), this['_dragBehaviorB']['onDragStartObservable']['add'](function(_0x4df561) { _0x360908['_dragBehaviorA']['dragging'] && _0x360908['_dragBehaviorB']['dragging'] && (_0x360908['_dragBehaviorA']['currentDraggingPointerID'] == _0x360908['_dragBehaviorB']['currentDraggingPointerID'] ? _0x360908['_dragBehaviorB']['releaseDrag']() : (_0x360908['_initialScale']['copyFrom'](_0x43c421['scaling']), _0x360908['_startDistance'] = _0x360908['_getCurrentDistance']())); }), [this['_dragBehaviorA'], this['_dragBehaviorB']]['forEach'](function(_0x146e70) { _0x146e70['onDragObservable']['add'](function() { if (_0x360908['_dragBehaviorA']['dragging'] && _0x360908['_dragBehaviorB']['dragging']) { var _0x12fc2d = _0x360908['_getCurrentDistance']() / _0x360908['_startDistance']; _0x360908['_initialScale']['scaleToRef'](_0x12fc2d, _0x360908['_targetScale']); } }); }), _0x43c421['addBehavior'](this['_dragBehaviorA']), _0x43c421['addBehavior'](this['_dragBehaviorB']), this['_sceneRenderObserver'] = _0x43c421['getScene']()['onBeforeRenderObservable']['add'](function() { if (_0x360908['_dragBehaviorA']['dragging'] && _0x360908['_dragBehaviorB']['dragging']) { var _0x1fe356 = _0x360908['_targetScale']['subtract'](_0x43c421['scaling'])['scaleInPlace'](0.1); _0x1fe356['length']() > 0.01 && _0x43c421['scaling']['addInPlace'](_0x1fe356); } }); } , _0x427d22['prototype']['detach'] = function() { var _0x463438 = this; this['_ownerNode']['getScene']()['onBeforeRenderObservable']['remove'](this['_sceneRenderObserver']), [this['_dragBehaviorA'], this['_dragBehaviorB']]['forEach'](function(_0x581825) { _0x581825['onDragStartObservable']['clear'](), _0x581825['onDragObservable']['clear'](), _0x463438['_ownerNode']['removeBehavior'](_0x581825); }); } , _0x427d22; }() , _0x10c088 = _0x59bd00(0x18) , _0x4504cf = _0x59bd00(0x15) , _0x23c3c5 = _0x59bd00(0x2d) , _0x2bbcb9 = function() { function _0x55ddb4() { this['_sceneRenderObserver'] = null, this['_targetPosition'] = new _0x47d24f['x'](0x0,0x0,0x0), this['_moving'] = !0x1, this['_startingOrientation'] = new _0x47d24f['q'](), this['zDragFactor'] = 0x3, this['rotateDraggedObject'] = !0x0, this['dragging'] = !0x1, this['dragDeltaRatio'] = 0.2, this['currentDraggingPointerID'] = -0x1, this['detachCameraControls'] = !0x0, this['onDragStartObservable'] = new _0x2dbec2['c'](), this['onDragEndObservable'] = new _0x2dbec2['c'](); } return Object['defineProperty'](_0x55ddb4['prototype'], 'name', { 'get': function() { return 'SixDofDrag'; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x55ddb4['prototype']['init'] = function() {} , _0x55ddb4['prototype']['attach'] = function(_0x5b3a75) { var _0x51548e = this; this['_ownerNode'] = _0x5b3a75, this['_scene'] = this['_ownerNode']['getScene'](), _0x55ddb4['_virtualScene'] || (_0x55ddb4['_virtualScene'] = new _0x366639['a'](this['_scene']['getEngine']()), _0x55ddb4['_virtualScene']['detachControl'](), this['_scene']['getEngine']()['scenes']['pop']()); var _0x354a40 = null , _0x2c116e = new _0x47d24f['x'](0x0,0x0,0x0); this['_virtualOriginMesh'] = new _0x10c088['a']('',_0x55ddb4['_virtualScene']), this['_virtualOriginMesh']['rotationQuaternion'] = new _0x47d24f['q'](), this['_virtualDragMesh'] = new _0x10c088['a']('',_0x55ddb4['_virtualScene']), this['_virtualDragMesh']['rotationQuaternion'] = new _0x47d24f['q'](); var _0x511909 = null; this['_pointerObserver'] = this['_scene']['onPointerObservable']['add'](function(_0x325e66, _0x413ab7) { if (_0x325e66['type'] == _0xee889b['a']['POINTERDOWN']) { if (!_0x51548e['dragging'] && _0x325e66['pickInfo'] && _0x325e66['pickInfo']['hit'] && _0x325e66['pickInfo']['pickedMesh'] && _0x325e66['pickInfo']['ray'] && (_0x26e113 = _0x325e66['pickInfo']['pickedMesh'], _0x51548e['_ownerNode'] == _0x26e113 || _0x26e113['isDescendantOf'](_0x51548e['_ownerNode']))) { _0x51548e['_scene']['activeCamera'] && _0x51548e['_scene']['activeCamera']['cameraRigMode'] == _0x4504cf['a']['RIG_MODE_NONE'] && _0x325e66['pickInfo']['ray']['origin']['copyFrom'](_0x51548e['_scene']['activeCamera']['globalPosition']), _0x354a40 = _0x51548e['_ownerNode'], _0x23c3c5['a']['_RemoveAndStorePivotPoint'](_0x354a40), _0x2c116e['copyFrom'](_0x325e66['pickInfo']['ray']['origin']), _0x51548e['_virtualOriginMesh']['position']['copyFrom'](_0x325e66['pickInfo']['ray']['origin']), _0x51548e['_virtualOriginMesh']['lookAt'](_0x325e66['pickInfo']['ray']['origin']['add'](_0x325e66['pickInfo']['ray']['direction'])), _0x51548e['_virtualOriginMesh']['removeChild'](_0x51548e['_virtualDragMesh']), _0x354a40['computeWorldMatrix'](), _0x51548e['_virtualDragMesh']['position']['copyFrom'](_0x354a40['absolutePosition']), _0x354a40['rotationQuaternion'] || (_0x354a40['rotationQuaternion'] = _0x47d24f['q']['RotationYawPitchRoll'](_0x354a40['rotation']['y'], _0x354a40['rotation']['x'], _0x354a40['rotation']['z'])); var _0x458f49 = _0x354a40['parent']; _0x354a40['setParent'](null), _0x51548e['_virtualDragMesh']['rotationQuaternion']['copyFrom'](_0x354a40['rotationQuaternion']), _0x354a40['setParent'](_0x458f49), _0x51548e['_virtualOriginMesh']['addChild'](_0x51548e['_virtualDragMesh']), _0x51548e['_targetPosition']['copyFrom'](_0x51548e['_virtualDragMesh']['absolutePosition']), _0x51548e['dragging'] = !0x0, _0x51548e['currentDraggingPointerID'] = _0x325e66['event']['pointerId'], _0x51548e['detachCameraControls'] && _0x51548e['_scene']['activeCamera'] && !_0x51548e['_scene']['activeCamera']['leftCamera'] && (_0x51548e['_scene']['activeCamera']['inputs']['attachedElement'] ? (_0x511909 = _0x51548e['_scene']['activeCamera']['inputs']['attachedElement'], _0x51548e['_scene']['activeCamera']['detachControl'](_0x51548e['_scene']['activeCamera']['inputs']['attachedElement'])) : _0x511909 = null), _0x23c3c5['a']['_RestorePivotPoint'](_0x354a40), _0x51548e['onDragStartObservable']['notifyObservers']({}); } } else if (_0x325e66['type'] == _0xee889b['a']['POINTERUP']) _0x51548e['currentDraggingPointerID'] == _0x325e66['event']['pointerId'] && (_0x51548e['dragging'] = !0x1, _0x51548e['_moving'] = !0x1, _0x51548e['currentDraggingPointerID'] = -0x1, _0x354a40 = null, _0x51548e['_virtualOriginMesh']['removeChild'](_0x51548e['_virtualDragMesh']), _0x51548e['detachCameraControls'] && _0x511909 && _0x51548e['_scene']['activeCamera'] && !_0x51548e['_scene']['activeCamera']['leftCamera'] && _0x51548e['_scene']['activeCamera']['attachControl'](_0x511909, !0x0), _0x51548e['onDragEndObservable']['notifyObservers']({})); else if (_0x325e66['type'] == _0xee889b['a']['POINTERMOVE'] && _0x51548e['currentDraggingPointerID'] == _0x325e66['event']['pointerId'] && _0x51548e['dragging'] && _0x325e66['pickInfo'] && _0x325e66['pickInfo']['ray'] && _0x354a40) { var _0xbbfef4 = _0x51548e['zDragFactor']; _0x51548e['_scene']['activeCamera'] && _0x51548e['_scene']['activeCamera']['cameraRigMode'] == _0x4504cf['a']['RIG_MODE_NONE'] && (_0x325e66['pickInfo']['ray']['origin']['copyFrom'](_0x51548e['_scene']['activeCamera']['globalPosition']), _0xbbfef4 = 0x0); var _0x2cf023 = _0x325e66['pickInfo']['ray']['origin']['subtract'](_0x2c116e); _0x2c116e['copyFrom'](_0x325e66['pickInfo']['ray']['origin']); var _0x4cec24 = -_0x47d24f['x']['Dot'](_0x2cf023, _0x325e66['pickInfo']['ray']['direction']); _0x51548e['_virtualOriginMesh']['addChild'](_0x51548e['_virtualDragMesh']), _0x51548e['_virtualDragMesh']['position']['z'] -= _0x51548e['_virtualDragMesh']['position']['z'] < 0x1 ? _0x4cec24 * _0x51548e['zDragFactor'] : _0x4cec24 * _0xbbfef4 * _0x51548e['_virtualDragMesh']['position']['z'], _0x51548e['_virtualDragMesh']['position']['z'] < 0x0 && (_0x51548e['_virtualDragMesh']['position']['z'] = 0x0), _0x51548e['_virtualOriginMesh']['position']['copyFrom'](_0x325e66['pickInfo']['ray']['origin']), _0x51548e['_virtualOriginMesh']['lookAt'](_0x325e66['pickInfo']['ray']['origin']['add'](_0x325e66['pickInfo']['ray']['direction'])), _0x51548e['_virtualOriginMesh']['removeChild'](_0x51548e['_virtualDragMesh']), _0x51548e['_targetPosition']['copyFrom'](_0x51548e['_virtualDragMesh']['absolutePosition']), _0x354a40['parent'] && _0x47d24f['x']['TransformCoordinatesToRef'](_0x51548e['_targetPosition'], _0x47d24f['j']['Invert'](_0x354a40['parent']['getWorldMatrix']()), _0x51548e['_targetPosition']), _0x51548e['_moving'] || _0x51548e['_startingOrientation']['copyFrom'](_0x51548e['_virtualDragMesh']['rotationQuaternion']), _0x51548e['_moving'] = !0x0; } var _0x26e113; }); var _0x4e7f0f = new _0x47d24f['q'](); this['_sceneRenderObserver'] = _0x5b3a75['getScene']()['onBeforeRenderObservable']['add'](function() { if (_0x51548e['dragging'] && _0x51548e['_moving'] && _0x354a40) { if (_0x23c3c5['a']['_RemoveAndStorePivotPoint'](_0x354a40), _0x354a40['position']['addInPlace'](_0x51548e['_targetPosition']['subtract'](_0x354a40['position'])['scale'](_0x51548e['dragDeltaRatio'])), _0x51548e['rotateDraggedObject']) { _0x4e7f0f['copyFrom'](_0x51548e['_startingOrientation']), _0x4e7f0f['x'] = -_0x4e7f0f['x'], _0x4e7f0f['y'] = -_0x4e7f0f['y'], _0x4e7f0f['z'] = -_0x4e7f0f['z'], _0x51548e['_virtualDragMesh']['rotationQuaternion']['multiplyToRef'](_0x4e7f0f, _0x4e7f0f), _0x47d24f['q']['RotationYawPitchRollToRef'](_0x4e7f0f['toEulerAngles']('xyz')['y'], 0x0, 0x0, _0x4e7f0f), _0x4e7f0f['multiplyToRef'](_0x51548e['_startingOrientation'], _0x4e7f0f); var _0x198a1d = _0x354a40['parent']; (!_0x198a1d || _0x198a1d['scaling'] && !_0x198a1d['scaling']['isNonUniformWithinEpsilon'](0.001)) && (_0x354a40['setParent'](null), _0x47d24f['q']['SlerpToRef'](_0x354a40['rotationQuaternion'], _0x4e7f0f, _0x51548e['dragDeltaRatio'], _0x354a40['rotationQuaternion']), _0x354a40['setParent'](_0x198a1d)); } _0x23c3c5['a']['_RestorePivotPoint'](_0x354a40); } }); } , _0x55ddb4['prototype']['detach'] = function() { this['_scene'] && this['_scene']['onPointerObservable']['remove'](this['_pointerObserver']), this['_ownerNode'] && this['_ownerNode']['getScene']()['onBeforeRenderObservable']['remove'](this['_sceneRenderObserver']), this['_virtualOriginMesh'] && this['_virtualOriginMesh']['dispose'](), this['_virtualDragMesh'] && this['_virtualDragMesh']['dispose'](), this['onDragEndObservable']['clear'](), this['onDragStartObservable']['clear'](); } , _0x55ddb4; }() , _0x30cbe4 = function() { function _0xce2bef(_0x594382, _0x556bfe, _0x811b6c) { if (this['targetPosition'] = _0x47d24f['x']['Zero'](), this['poleTargetPosition'] = _0x47d24f['x']['Zero'](), this['poleTargetLocalOffset'] = _0x47d24f['x']['Zero'](), this['poleAngle'] = 0x0, this['slerpAmount'] = 0x1, this['_bone1Quat'] = _0x47d24f['q']['Identity'](), this['_bone1Mat'] = _0x47d24f['j']['Identity'](), this['_bone2Ang'] = Math['PI'], this['_maxAngle'] = Math['PI'], this['_rightHandedSystem'] = !0x1, this['_bendAxis'] = _0x47d24f['x']['Right'](), this['_slerping'] = !0x1, this['_adjustRoll'] = 0x0, this['_bone2'] = _0x556bfe, this['_bone1'] = _0x556bfe['getParent'](), this['_bone1']) { this['mesh'] = _0x594382; var _0xc7f5be = _0x556bfe['getPosition'](); if (_0x556bfe['getAbsoluteTransform']()['determinant']() > 0x0 && (this['_rightHandedSystem'] = !0x0, this['_bendAxis']['x'] = 0x0, this['_bendAxis']['y'] = 0x0, this['_bendAxis']['z'] = -0x1, _0xc7f5be['x'] > _0xc7f5be['y'] && _0xc7f5be['x'] > _0xc7f5be['z'] && (this['_adjustRoll'] = 0.5 * Math['PI'], this['_bendAxis']['z'] = 0x1)), this['_bone1']['length']) { var _0x18b106 = this['_bone1']['getScale']() , _0x3ea1ec = this['_bone2']['getScale'](); this['_bone1Length'] = this['_bone1']['length'] * _0x18b106['y'] * this['mesh']['scaling']['y'], this['_bone2Length'] = this['_bone2']['length'] * _0x3ea1ec['y'] * this['mesh']['scaling']['y']; } else if (this['_bone1']['children'][0x0]) { _0x594382['computeWorldMatrix'](!0x0); var _0x27f07a = this['_bone2']['children'][0x0]['getAbsolutePosition'](_0x594382) , _0x557618 = this['_bone2']['getAbsolutePosition'](_0x594382) , _0x40d606 = this['_bone1']['getAbsolutePosition'](_0x594382); this['_bone1Length'] = _0x47d24f['x']['Distance'](_0x27f07a, _0x557618), this['_bone2Length'] = _0x47d24f['x']['Distance'](_0x557618, _0x40d606); } this['_bone1']['getRotationMatrixToRef'](_0x47d24f['s']['WORLD'], _0x594382, this['_bone1Mat']), this['maxAngle'] = Math['PI'], _0x811b6c && (_0x811b6c['targetMesh'] && (this['targetMesh'] = _0x811b6c['targetMesh'], this['targetMesh']['computeWorldMatrix'](!0x0)), _0x811b6c['poleTargetMesh'] ? (this['poleTargetMesh'] = _0x811b6c['poleTargetMesh'], this['poleTargetMesh']['computeWorldMatrix'](!0x0)) : _0x811b6c['poleTargetBone'] ? this['poleTargetBone'] = _0x811b6c['poleTargetBone'] : this['_bone1']['getParent']() && (this['poleTargetBone'] = this['_bone1']['getParent']()), _0x811b6c['poleTargetLocalOffset'] && this['poleTargetLocalOffset']['copyFrom'](_0x811b6c['poleTargetLocalOffset']), _0x811b6c['poleAngle'] && (this['poleAngle'] = _0x811b6c['poleAngle']), _0x811b6c['bendAxis'] && this['_bendAxis']['copyFrom'](_0x811b6c['bendAxis']), _0x811b6c['maxAngle'] && (this['maxAngle'] = _0x811b6c['maxAngle']), _0x811b6c['slerpAmount'] && (this['slerpAmount'] = _0x811b6c['slerpAmount'])); } } return Object['defineProperty'](_0xce2bef['prototype'], 'maxAngle', { 'get': function() { return this['_maxAngle']; }, 'set': function(_0x4d21d5) { this['_setMaxAngle'](_0x4d21d5); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xce2bef['prototype']['_setMaxAngle'] = function(_0x6644a7) { _0x6644a7 < 0x0 && (_0x6644a7 = 0x0), (_0x6644a7 > Math['PI'] || null == _0x6644a7) && (_0x6644a7 = Math['PI']), this['_maxAngle'] = _0x6644a7; var _0x1a90a1 = this['_bone1Length'] , _0x135bb0 = this['_bone2Length']; this['_maxReach'] = Math['sqrt'](_0x1a90a1 * _0x1a90a1 + _0x135bb0 * _0x135bb0 - 0x2 * _0x1a90a1 * _0x135bb0 * Math['cos'](_0x6644a7)); } , _0xce2bef['prototype']['update'] = function() { var _0x56e1cc = this['_bone1']; if (_0x56e1cc) { var _0x49d6b3 = this['targetPosition'] , _0x148c4d = this['poleTargetPosition'] , _0x237c3f = _0xce2bef['_tmpMats'][0x0] , _0x2604c2 = _0xce2bef['_tmpMats'][0x1]; this['targetMesh'] && _0x49d6b3['copyFrom'](this['targetMesh']['getAbsolutePosition']()), this['poleTargetBone'] ? this['poleTargetBone']['getAbsolutePositionFromLocalToRef'](this['poleTargetLocalOffset'], this['mesh'], _0x148c4d) : this['poleTargetMesh'] && _0x47d24f['x']['TransformCoordinatesToRef'](this['poleTargetLocalOffset'], this['poleTargetMesh']['getWorldMatrix'](), _0x148c4d); var _0x2dc958 = _0xce2bef['_tmpVecs'][0x0] , _0x136117 = _0xce2bef['_tmpVecs'][0x1] , _0x323709 = _0xce2bef['_tmpVecs'][0x2] , _0x2e924f = _0xce2bef['_tmpVecs'][0x3] , _0x14559e = _0xce2bef['_tmpVecs'][0x4] , _0x515e88 = _0xce2bef['_tmpQuat']; _0x56e1cc['getAbsolutePositionToRef'](this['mesh'], _0x2dc958), _0x148c4d['subtractToRef'](_0x2dc958, _0x14559e), 0x0 == _0x14559e['x'] && 0x0 == _0x14559e['y'] && 0x0 == _0x14559e['z'] ? _0x14559e['y'] = 0x1 : _0x14559e['normalize'](), _0x49d6b3['subtractToRef'](_0x2dc958, _0x2e924f), _0x2e924f['normalize'](), _0x47d24f['x']['CrossToRef'](_0x2e924f, _0x14559e, _0x136117), _0x136117['normalize'](), _0x47d24f['x']['CrossToRef'](_0x2e924f, _0x136117, _0x323709), _0x323709['normalize'](), _0x47d24f['j']['FromXYZAxesToRef'](_0x323709, _0x2e924f, _0x136117, _0x237c3f); var _0x40898a = this['_bone1Length'] , _0x9e7257 = this['_bone2Length'] , _0x4e17d3 = _0x47d24f['x']['Distance'](_0x2dc958, _0x49d6b3); this['_maxReach'] > 0x0 && (_0x4e17d3 = Math['min'](this['_maxReach'], _0x4e17d3)); var _0x414fd8 = (_0x9e7257 * _0x9e7257 + _0x4e17d3 * _0x4e17d3 - _0x40898a * _0x40898a) / (0x2 * _0x9e7257 * _0x4e17d3) , _0x43c525 = (_0x4e17d3 * _0x4e17d3 + _0x40898a * _0x40898a - _0x9e7257 * _0x9e7257) / (0x2 * _0x4e17d3 * _0x40898a); _0x414fd8 > 0x1 && (_0x414fd8 = 0x1), _0x43c525 > 0x1 && (_0x43c525 = 0x1), _0x414fd8 < -0x1 && (_0x414fd8 = -0x1), _0x43c525 < -0x1 && (_0x43c525 = -0x1); var _0x1e8237 = Math['acos'](_0x414fd8) , _0x3b4019 = Math['acos'](_0x43c525) , _0x2282d4 = -_0x1e8237 - _0x3b4019; if (this['_rightHandedSystem']) _0x47d24f['j']['RotationYawPitchRollToRef'](0x0, 0x0, this['_adjustRoll'], _0x2604c2), _0x2604c2['multiplyToRef'](_0x237c3f, _0x237c3f), _0x47d24f['j']['RotationAxisToRef'](this['_bendAxis'], _0x3b4019, _0x2604c2), _0x2604c2['multiplyToRef'](_0x237c3f, _0x237c3f); else { var _0x11a42d = _0xce2bef['_tmpVecs'][0x5]; _0x11a42d['copyFrom'](this['_bendAxis']), _0x11a42d['x'] *= -0x1, _0x47d24f['j']['RotationAxisToRef'](_0x11a42d, -_0x3b4019, _0x2604c2), _0x2604c2['multiplyToRef'](_0x237c3f, _0x237c3f); } this['poleAngle'] && (_0x47d24f['j']['RotationAxisToRef'](_0x2e924f, this['poleAngle'], _0x2604c2), _0x237c3f['multiplyToRef'](_0x2604c2, _0x237c3f)), this['_bone1'] && (this['slerpAmount'] < 0x1 ? (this['_slerping'] || _0x47d24f['q']['FromRotationMatrixToRef'](this['_bone1Mat'], this['_bone1Quat']), _0x47d24f['q']['FromRotationMatrixToRef'](_0x237c3f, _0x515e88), _0x47d24f['q']['SlerpToRef'](this['_bone1Quat'], _0x515e88, this['slerpAmount'], this['_bone1Quat']), _0x2282d4 = this['_bone2Ang'] * (0x1 - this['slerpAmount']) + _0x2282d4 * this['slerpAmount'], this['_bone1']['setRotationQuaternion'](this['_bone1Quat'], _0x47d24f['s']['WORLD'], this['mesh']), this['_slerping'] = !0x0) : (this['_bone1']['setRotationMatrix'](_0x237c3f, _0x47d24f['s']['WORLD'], this['mesh']), this['_bone1Mat']['copyFrom'](_0x237c3f), this['_slerping'] = !0x1)), this['_bone2']['setAxisAngle'](this['_bendAxis'], _0x2282d4, _0x47d24f['s']['LOCAL']), this['_bone2Ang'] = _0x2282d4; } } , _0xce2bef['_tmpVecs'] = [_0x47d24f['x']['Zero'](), _0x47d24f['x']['Zero'](), _0x47d24f['x']['Zero'](), _0x47d24f['x']['Zero'](), _0x47d24f['x']['Zero'](), _0x47d24f['x']['Zero']()], _0xce2bef['_tmpQuat'] = _0x47d24f['q']['Identity'](), _0xce2bef['_tmpMats'] = [_0x47d24f['j']['Identity'](), _0x47d24f['j']['Identity']()], _0xce2bef; }() , _0x103b41 = function() { function _0x191d63(_0x5e16e0, _0x4878a6, _0x2e7e87, _0xfcc1cb) { if (this['upAxis'] = _0x47d24f['x']['Up'](), this['upAxisSpace'] = _0x47d24f['s']['LOCAL'], this['adjustYaw'] = 0x0, this['adjustPitch'] = 0x0, this['adjustRoll'] = 0x0, this['slerpAmount'] = 0x1, this['_boneQuat'] = _0x47d24f['q']['Identity'](), this['_slerping'] = !0x1, this['_firstFrameSkipped'] = !0x1, this['_fowardAxis'] = _0x47d24f['x']['Forward'](), this['mesh'] = _0x5e16e0, this['bone'] = _0x4878a6, this['target'] = _0x2e7e87, _0xfcc1cb && (_0xfcc1cb['adjustYaw'] && (this['adjustYaw'] = _0xfcc1cb['adjustYaw']), _0xfcc1cb['adjustPitch'] && (this['adjustPitch'] = _0xfcc1cb['adjustPitch']), _0xfcc1cb['adjustRoll'] && (this['adjustRoll'] = _0xfcc1cb['adjustRoll']), null != _0xfcc1cb['maxYaw'] ? this['maxYaw'] = _0xfcc1cb['maxYaw'] : this['maxYaw'] = Math['PI'], null != _0xfcc1cb['minYaw'] ? this['minYaw'] = _0xfcc1cb['minYaw'] : this['minYaw'] = -Math['PI'], null != _0xfcc1cb['maxPitch'] ? this['maxPitch'] = _0xfcc1cb['maxPitch'] : this['maxPitch'] = Math['PI'], null != _0xfcc1cb['minPitch'] ? this['minPitch'] = _0xfcc1cb['minPitch'] : this['minPitch'] = -Math['PI'], null != _0xfcc1cb['slerpAmount'] && (this['slerpAmount'] = _0xfcc1cb['slerpAmount']), null != _0xfcc1cb['upAxis'] && (this['upAxis'] = _0xfcc1cb['upAxis']), null != _0xfcc1cb['upAxisSpace'] && (this['upAxisSpace'] = _0xfcc1cb['upAxisSpace']), null != _0xfcc1cb['yawAxis'] || null != _0xfcc1cb['pitchAxis'])) { var _0x499eee = _0x47d24f['c']['Y'] , _0x22c9c4 = _0x47d24f['c']['X']; null != _0xfcc1cb['yawAxis'] && (_0x499eee = _0xfcc1cb['yawAxis']['clone']())['normalize'](), null != _0xfcc1cb['pitchAxis'] && (_0x22c9c4 = _0xfcc1cb['pitchAxis']['clone']())['normalize'](); var _0x27f766 = _0x47d24f['x']['Cross'](_0x22c9c4, _0x499eee); this['_transformYawPitch'] = _0x47d24f['j']['Identity'](), _0x47d24f['j']['FromXYZAxesToRef'](_0x22c9c4, _0x499eee, _0x27f766, this['_transformYawPitch']), this['_transformYawPitchInv'] = this['_transformYawPitch']['clone'](), this['_transformYawPitch']['invert'](); } _0x4878a6['getParent']() || this['upAxisSpace'] != _0x47d24f['s']['BONE'] || (this['upAxisSpace'] = _0x47d24f['s']['LOCAL']); } return Object['defineProperty'](_0x191d63['prototype'], 'minYaw', { 'get': function() { return this['_minYaw']; }, 'set': function(_0x569851) { this['_minYaw'] = _0x569851, this['_minYawSin'] = Math['sin'](_0x569851), this['_minYawCos'] = Math['cos'](_0x569851), null != this['_maxYaw'] && (this['_midYawConstraint'] = 0.5 * this['_getAngleDiff'](this['_minYaw'], this['_maxYaw']) + this['_minYaw'], this['_yawRange'] = this['_maxYaw'] - this['_minYaw']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x191d63['prototype'], 'maxYaw', { 'get': function() { return this['_maxYaw']; }, 'set': function(_0x5a7afc) { this['_maxYaw'] = _0x5a7afc, this['_maxYawSin'] = Math['sin'](_0x5a7afc), this['_maxYawCos'] = Math['cos'](_0x5a7afc), null != this['_minYaw'] && (this['_midYawConstraint'] = 0.5 * this['_getAngleDiff'](this['_minYaw'], this['_maxYaw']) + this['_minYaw'], this['_yawRange'] = this['_maxYaw'] - this['_minYaw']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x191d63['prototype'], 'minPitch', { 'get': function() { return this['_minPitch']; }, 'set': function(_0x11ad9b) { this['_minPitch'] = _0x11ad9b, this['_minPitchTan'] = Math['tan'](_0x11ad9b); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x191d63['prototype'], 'maxPitch', { 'get': function() { return this['_maxPitch']; }, 'set': function(_0x393246) { this['_maxPitch'] = _0x393246, this['_maxPitchTan'] = Math['tan'](_0x393246); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x191d63['prototype']['update'] = function() { if (this['slerpAmount'] < 0x1 && !this['_firstFrameSkipped']) this['_firstFrameSkipped'] = !0x0; else { var _0x4e7535 = this['bone'] , _0x52c7c0 = _0x191d63['_tmpVecs'][0x0]; _0x4e7535['getAbsolutePositionToRef'](this['mesh'], _0x52c7c0); var _0xa3cef4 = this['target'] , _0x39d62b = _0x191d63['_tmpMats'][0x0] , _0x37b8c9 = _0x191d63['_tmpMats'][0x1] , _0x15f127 = this['mesh'] , _0x18d600 = _0x4e7535['getParent']() , _0x41b140 = _0x191d63['_tmpVecs'][0x1]; _0x41b140['copyFrom'](this['upAxis']), this['upAxisSpace'] == _0x47d24f['s']['BONE'] && _0x18d600 ? (this['_transformYawPitch'] && _0x47d24f['x']['TransformCoordinatesToRef'](_0x41b140, this['_transformYawPitchInv'], _0x41b140), _0x18d600['getDirectionToRef'](_0x41b140, this['mesh'], _0x41b140)) : this['upAxisSpace'] == _0x47d24f['s']['LOCAL'] && (_0x15f127['getDirectionToRef'](_0x41b140, _0x41b140), 0x1 == _0x15f127['scaling']['x'] && 0x1 == _0x15f127['scaling']['y'] && 0x1 == _0x15f127['scaling']['z'] || _0x41b140['normalize']()); var _0x446547 = !0x1 , _0x450b4e = !0x1; if (this['_maxYaw'] == Math['PI'] && this['_minYaw'] == -Math['PI'] || (_0x446547 = !0x0), this['_maxPitch'] == Math['PI'] && this['_minPitch'] == -Math['PI'] || (_0x450b4e = !0x0), _0x446547 || _0x450b4e) { var _0x1e10c9 = _0x191d63['_tmpMats'][0x2] , _0x1eb70d = _0x191d63['_tmpMats'][0x3]; if (this['upAxisSpace'] == _0x47d24f['s']['BONE'] && 0x1 == _0x41b140['y'] && _0x18d600) _0x18d600['getRotationMatrixToRef'](_0x47d24f['s']['WORLD'], this['mesh'], _0x1e10c9); else if (this['upAxisSpace'] != _0x47d24f['s']['LOCAL'] || 0x1 != _0x41b140['y'] || _0x18d600) { (_0xf7f221 = _0x191d63['_tmpVecs'][0x2])['copyFrom'](this['_fowardAxis']), this['_transformYawPitch'] && _0x47d24f['x']['TransformCoordinatesToRef'](_0xf7f221, this['_transformYawPitchInv'], _0xf7f221), _0x18d600 ? _0x18d600['getDirectionToRef'](_0xf7f221, this['mesh'], _0xf7f221) : _0x15f127['getDirectionToRef'](_0xf7f221, _0xf7f221); var _0xe5cd2e = _0x47d24f['x']['Cross'](_0x41b140, _0xf7f221); _0xe5cd2e['normalize'](); var _0xf7f221 = _0x47d24f['x']['Cross'](_0xe5cd2e, _0x41b140); _0x47d24f['j']['FromXYZAxesToRef'](_0xe5cd2e, _0x41b140, _0xf7f221, _0x1e10c9); } else _0x1e10c9['copyFrom'](_0x15f127['getWorldMatrix']()); _0x1e10c9['invertToRef'](_0x1eb70d); var _0x98b855 = null; if (_0x450b4e) { var _0x1d2767 = _0x191d63['_tmpVecs'][0x3]; _0xa3cef4['subtractToRef'](_0x52c7c0, _0x1d2767), _0x47d24f['x']['TransformCoordinatesToRef'](_0x1d2767, _0x1eb70d, _0x1d2767), _0x98b855 = Math['sqrt'](_0x1d2767['x'] * _0x1d2767['x'] + _0x1d2767['z'] * _0x1d2767['z']); var _0x2b9a5 = Math['atan2'](_0x1d2767['y'], _0x98b855) , _0x14e72a = _0x2b9a5; _0x2b9a5 > this['_maxPitch'] ? (_0x1d2767['y'] = this['_maxPitchTan'] * _0x98b855, _0x14e72a = this['_maxPitch']) : _0x2b9a5 < this['_minPitch'] && (_0x1d2767['y'] = this['_minPitchTan'] * _0x98b855, _0x14e72a = this['_minPitch']), _0x2b9a5 != _0x14e72a && (_0x47d24f['x']['TransformCoordinatesToRef'](_0x1d2767, _0x1e10c9, _0x1d2767), _0x1d2767['addInPlace'](_0x52c7c0), _0xa3cef4 = _0x1d2767); } if (_0x446547) { _0x1d2767 = _0x191d63['_tmpVecs'][0x4]; _0xa3cef4['subtractToRef'](_0x52c7c0, _0x1d2767), _0x47d24f['x']['TransformCoordinatesToRef'](_0x1d2767, _0x1eb70d, _0x1d2767); var _0x2b2419 = Math['atan2'](_0x1d2767['x'], _0x1d2767['z']) , _0x156949 = _0x2b2419; if ((_0x2b2419 > this['_maxYaw'] || _0x2b2419 < this['_minYaw']) && (null == _0x98b855 && (_0x98b855 = Math['sqrt'](_0x1d2767['x'] * _0x1d2767['x'] + _0x1d2767['z'] * _0x1d2767['z'])), this['_yawRange'] > Math['PI'] ? this['_isAngleBetween'](_0x2b2419, this['_maxYaw'], this['_midYawConstraint']) ? (_0x1d2767['z'] = this['_maxYawCos'] * _0x98b855, _0x1d2767['x'] = this['_maxYawSin'] * _0x98b855, _0x156949 = this['_maxYaw']) : this['_isAngleBetween'](_0x2b2419, this['_midYawConstraint'], this['_minYaw']) && (_0x1d2767['z'] = this['_minYawCos'] * _0x98b855, _0x1d2767['x'] = this['_minYawSin'] * _0x98b855, _0x156949 = this['_minYaw']) : _0x2b2419 > this['_maxYaw'] ? (_0x1d2767['z'] = this['_maxYawCos'] * _0x98b855, _0x1d2767['x'] = this['_maxYawSin'] * _0x98b855, _0x156949 = this['_maxYaw']) : _0x2b2419 < this['_minYaw'] && (_0x1d2767['z'] = this['_minYawCos'] * _0x98b855, _0x1d2767['x'] = this['_minYawSin'] * _0x98b855, _0x156949 = this['_minYaw'])), this['_slerping'] && this['_yawRange'] > Math['PI']) { var _0x20a73a = _0x191d63['_tmpVecs'][0x8]; _0x20a73a['copyFrom'](_0x47d24f['c']['Z']), this['_transformYawPitch'] && _0x47d24f['x']['TransformCoordinatesToRef'](_0x20a73a, this['_transformYawPitchInv'], _0x20a73a); var _0x22cf5f = _0x191d63['_tmpMats'][0x4]; this['_boneQuat']['toRotationMatrix'](_0x22cf5f), this['mesh']['getWorldMatrix']()['multiplyToRef'](_0x22cf5f, _0x22cf5f), _0x47d24f['x']['TransformCoordinatesToRef'](_0x20a73a, _0x22cf5f, _0x20a73a), _0x47d24f['x']['TransformCoordinatesToRef'](_0x20a73a, _0x1eb70d, _0x20a73a); var _0x32815d = Math['atan2'](_0x20a73a['x'], _0x20a73a['z']); if (this['_getAngleBetween'](_0x32815d, _0x2b2419) > this['_getAngleBetween'](_0x32815d, this['_midYawConstraint'])) { null == _0x98b855 && (_0x98b855 = Math['sqrt'](_0x1d2767['x'] * _0x1d2767['x'] + _0x1d2767['z'] * _0x1d2767['z'])); var _0x55223b = this['_getAngleBetween'](_0x32815d, this['_maxYaw']); this['_getAngleBetween'](_0x32815d, this['_minYaw']) < _0x55223b ? (_0x156949 = _0x32815d + 0.75 * Math['PI'], _0x1d2767['z'] = Math['cos'](_0x156949) * _0x98b855, _0x1d2767['x'] = Math['sin'](_0x156949) * _0x98b855) : (_0x156949 = _0x32815d - 0.75 * Math['PI'], _0x1d2767['z'] = Math['cos'](_0x156949) * _0x98b855, _0x1d2767['x'] = Math['sin'](_0x156949) * _0x98b855); } } _0x2b2419 != _0x156949 && (_0x47d24f['x']['TransformCoordinatesToRef'](_0x1d2767, _0x1e10c9, _0x1d2767), _0x1d2767['addInPlace'](_0x52c7c0), _0xa3cef4 = _0x1d2767); } } var _0x45bbe2 = _0x191d63['_tmpVecs'][0x5] , _0x28ff8a = _0x191d63['_tmpVecs'][0x6] , _0xb588c = _0x191d63['_tmpVecs'][0x7] , _0x719937 = _0x191d63['_tmpQuat']; _0xa3cef4['subtractToRef'](_0x52c7c0, _0x45bbe2), _0x45bbe2['normalize'](), _0x47d24f['x']['CrossToRef'](_0x41b140, _0x45bbe2, _0x28ff8a), _0x28ff8a['normalize'](), _0x47d24f['x']['CrossToRef'](_0x45bbe2, _0x28ff8a, _0xb588c), _0xb588c['normalize'](), _0x47d24f['j']['FromXYZAxesToRef'](_0x28ff8a, _0xb588c, _0x45bbe2, _0x39d62b), 0x0 === _0x28ff8a['x'] && 0x0 === _0x28ff8a['y'] && 0x0 === _0x28ff8a['z'] || 0x0 === _0xb588c['x'] && 0x0 === _0xb588c['y'] && 0x0 === _0xb588c['z'] || 0x0 === _0x45bbe2['x'] && 0x0 === _0x45bbe2['y'] && 0x0 === _0x45bbe2['z'] || ((this['adjustYaw'] || this['adjustPitch'] || this['adjustRoll']) && (_0x47d24f['j']['RotationYawPitchRollToRef'](this['adjustYaw'], this['adjustPitch'], this['adjustRoll'], _0x37b8c9), _0x37b8c9['multiplyToRef'](_0x39d62b, _0x39d62b)), this['slerpAmount'] < 0x1 ? (this['_slerping'] || this['bone']['getRotationQuaternionToRef'](_0x47d24f['s']['WORLD'], this['mesh'], this['_boneQuat']), this['_transformYawPitch'] && this['_transformYawPitch']['multiplyToRef'](_0x39d62b, _0x39d62b), _0x47d24f['q']['FromRotationMatrixToRef'](_0x39d62b, _0x719937), _0x47d24f['q']['SlerpToRef'](this['_boneQuat'], _0x719937, this['slerpAmount'], this['_boneQuat']), this['bone']['setRotationQuaternion'](this['_boneQuat'], _0x47d24f['s']['WORLD'], this['mesh']), this['_slerping'] = !0x0) : (this['_transformYawPitch'] && this['_transformYawPitch']['multiplyToRef'](_0x39d62b, _0x39d62b), this['bone']['setRotationMatrix'](_0x39d62b, _0x47d24f['s']['WORLD'], this['mesh']), this['_slerping'] = !0x1)); } } , _0x191d63['prototype']['_getAngleDiff'] = function(_0x4aa0d0, _0x5a888f) { var _0x1ce08c = _0x5a888f - _0x4aa0d0; return (_0x1ce08c %= 0x2 * Math['PI']) > Math['PI'] ? _0x1ce08c -= 0x2 * Math['PI'] : _0x1ce08c < -Math['PI'] && (_0x1ce08c += 0x2 * Math['PI']), _0x1ce08c; } , _0x191d63['prototype']['_getAngleBetween'] = function(_0x18cb55, _0x1bc173) { var _0x830bd2 = 0x0; return (_0x830bd2 = (_0x18cb55 = (_0x18cb55 %= 0x2 * Math['PI']) < 0x0 ? _0x18cb55 + 0x2 * Math['PI'] : _0x18cb55) < (_0x1bc173 = (_0x1bc173 %= 0x2 * Math['PI']) < 0x0 ? _0x1bc173 + 0x2 * Math['PI'] : _0x1bc173) ? _0x1bc173 - _0x18cb55 : _0x18cb55 - _0x1bc173) > Math['PI'] && (_0x830bd2 = 0x2 * Math['PI'] - _0x830bd2), _0x830bd2; } , _0x191d63['prototype']['_isAngleBetween'] = function(_0x453762, _0x439081, _0x82d02d) { if (_0x453762 = (_0x453762 %= 0x2 * Math['PI']) < 0x0 ? _0x453762 + 0x2 * Math['PI'] : _0x453762, (_0x439081 = (_0x439081 %= 0x2 * Math['PI']) < 0x0 ? _0x439081 + 0x2 * Math['PI'] : _0x439081) < (_0x82d02d = (_0x82d02d %= 0x2 * Math['PI']) < 0x0 ? _0x82d02d + 0x2 * Math['PI'] : _0x82d02d)) { if (_0x453762 > _0x439081 && _0x453762 < _0x82d02d) return !0x0; } else if (_0x453762 > _0x82d02d && _0x453762 < _0x439081) return !0x0; return !0x1; } , _0x191d63['_tmpVecs'] = _0x23c063['a']['BuildArray'](0xa, _0x47d24f['x']['Zero']), _0x191d63['_tmpQuat'] = _0x47d24f['q']['Identity'](), _0x191d63['_tmpMats'] = _0x23c063['a']['BuildArray'](0x5, _0x47d24f['j']['Identity']), _0x191d63; }() , _0x11d14a = _0x59bd00(0x7) , _0x2826dc = _0x59bd00(0x1a); _0x3647a9['b']['prototype']['updateRawTexture'] = function(_0x2fa3e7, _0x24e882, _0x12263d, _0x20f40e, _0x34ba17, _0x19e04a) { if (void 0x0 === _0x34ba17 && (_0x34ba17 = null), void 0x0 === _0x19e04a && (_0x19e04a = _0x3647a9['b']['TEXTURETYPE_UNSIGNED_INT']), _0x2fa3e7) { var _0x2b1fa9 = this['_getRGBABufferInternalSizedFormat'](_0x19e04a, _0x12263d) , _0x58f8d4 = this['_getInternalFormat'](_0x12263d) , _0x6586fe = this['_getWebGLTextureType'](_0x19e04a); this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], _0x2fa3e7, !0x0), this['_unpackFlipY'](void 0x0 === _0x20f40e || !!_0x20f40e), this['_doNotHandleContextLost'] || (_0x2fa3e7['_bufferView'] = _0x24e882, _0x2fa3e7['format'] = _0x12263d, _0x2fa3e7['type'] = _0x19e04a, _0x2fa3e7['invertY'] = _0x20f40e, _0x2fa3e7['_compression'] = _0x34ba17), _0x2fa3e7['width'] % 0x4 != 0x0 && this['_gl']['pixelStorei'](this['_gl']['UNPACK_ALIGNMENT'], 0x1), _0x34ba17 && _0x24e882 ? this['_gl']['compressedTexImage2D'](this['_gl']['TEXTURE_2D'], 0x0, this['getCaps']()['s3tc'][_0x34ba17], _0x2fa3e7['width'], _0x2fa3e7['height'], 0x0, _0x24e882) : this['_gl']['texImage2D'](this['_gl']['TEXTURE_2D'], 0x0, _0x2b1fa9, _0x2fa3e7['width'], _0x2fa3e7['height'], 0x0, _0x58f8d4, _0x6586fe, _0x24e882), _0x2fa3e7['generateMipMaps'] && this['_gl']['generateMipmap'](this['_gl']['TEXTURE_2D']), this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], null), _0x2fa3e7['isReady'] = !0x0; } } , _0x3647a9['b']['prototype']['createRawTexture'] = function(_0x45ed1, _0x9baa49, _0x4a5c05, _0x43ad85, _0x187c5b, _0x22980e, _0x43705d, _0x5d111a, _0x3264aa) { void 0x0 === _0x5d111a && (_0x5d111a = null), void 0x0 === _0x3264aa && (_0x3264aa = _0x3647a9['b']['TEXTURETYPE_UNSIGNED_INT']); var _0x5cd612 = new _0x2826dc['a'](this,_0x2826dc['a']['DATASOURCE_RAW']); _0x5cd612['baseWidth'] = _0x9baa49, _0x5cd612['baseHeight'] = _0x4a5c05, _0x5cd612['width'] = _0x9baa49, _0x5cd612['height'] = _0x4a5c05, _0x5cd612['format'] = _0x43ad85, _0x5cd612['generateMipMaps'] = _0x187c5b, _0x5cd612['samplingMode'] = _0x43705d, _0x5cd612['invertY'] = _0x22980e, _0x5cd612['_compression'] = _0x5d111a, _0x5cd612['type'] = _0x3264aa, this['_doNotHandleContextLost'] || (_0x5cd612['_bufferView'] = _0x45ed1), this['updateRawTexture'](_0x5cd612, _0x45ed1, _0x43ad85, _0x22980e, _0x5d111a, _0x3264aa), this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], _0x5cd612, !0x0); var _0x23220d = this['_getSamplingParameters'](_0x43705d, _0x187c5b); return this['_gl']['texParameteri'](this['_gl']['TEXTURE_2D'], this['_gl']['TEXTURE_MAG_FILTER'], _0x23220d['mag']), this['_gl']['texParameteri'](this['_gl']['TEXTURE_2D'], this['_gl']['TEXTURE_MIN_FILTER'], _0x23220d['min']), _0x187c5b && this['_gl']['generateMipmap'](this['_gl']['TEXTURE_2D']), this['_bindTextureDirectly'](this['_gl']['TEXTURE_2D'], null), this['_internalTexturesCache']['push'](_0x5cd612), _0x5cd612; } , _0x3647a9['b']['prototype']['createRawCubeTexture'] = function(_0x5efdfc, _0x308476, _0x347e52, _0x360951, _0x335c1d, _0x179155, _0x1b3a94, _0x42ce11) { void 0x0 === _0x42ce11 && (_0x42ce11 = null); var _0x1ab210 = this['_gl'] , _0x41dfa3 = new _0x2826dc['a'](this,_0x2826dc['a']['DATASOURCE_CUBERAW']); _0x41dfa3['isCube'] = !0x0, _0x41dfa3['format'] = _0x347e52, _0x41dfa3['type'] = _0x360951, this['_doNotHandleContextLost'] || (_0x41dfa3['_bufferViewArray'] = _0x5efdfc); var _0x1e72e4 = this['_getWebGLTextureType'](_0x360951) , _0x152217 = this['_getInternalFormat'](_0x347e52); _0x152217 === _0x1ab210['RGB'] && (_0x152217 = _0x1ab210['RGBA']), _0x1e72e4 !== _0x1ab210['FLOAT'] || this['_caps']['textureFloatLinearFiltering'] ? _0x1e72e4 !== this['_gl']['HALF_FLOAT_OES'] || this['_caps']['textureHalfFloatLinearFiltering'] ? _0x1e72e4 !== _0x1ab210['FLOAT'] || this['_caps']['textureFloatRender'] ? _0x1e72e4 !== _0x1ab210['HALF_FLOAT'] || this['_caps']['colorBufferFloat'] || (_0x335c1d = !0x1, _0x3f98cb['a']['Warn']('Render\x20to\x20half\x20float\x20textures\x20is\x20not\x20supported.\x20Mipmap\x20generation\x20forced\x20to\x20false.')) : (_0x335c1d = !0x1, _0x3f98cb['a']['Warn']('Render\x20to\x20float\x20textures\x20is\x20not\x20supported.\x20Mipmap\x20generation\x20forced\x20to\x20false.')) : (_0x335c1d = !0x1, _0x1b3a94 = _0x3647a9['b']['TEXTURE_NEAREST_SAMPLINGMODE'], _0x3f98cb['a']['Warn']('Half\x20float\x20texture\x20filtering\x20is\x20not\x20supported.\x20Mipmap\x20generation\x20and\x20sampling\x20mode\x20are\x20forced\x20to\x20false\x20and\x20TEXTURE_NEAREST_SAMPLINGMODE,\x20respectively.')) : (_0x335c1d = !0x1, _0x1b3a94 = _0x3647a9['b']['TEXTURE_NEAREST_SAMPLINGMODE'], _0x3f98cb['a']['Warn']('Float\x20texture\x20filtering\x20is\x20not\x20supported.\x20Mipmap\x20generation\x20and\x20sampling\x20mode\x20are\x20forced\x20to\x20false\x20and\x20TEXTURE_NEAREST_SAMPLINGMODE,\x20respectively.')); var _0xa18fd9 = _0x308476 , _0x5301db = _0xa18fd9; _0x41dfa3['width'] = _0xa18fd9, _0x41dfa3['height'] = _0x5301db, !this['needPOTTextures'] || _0x1eb50e['h']['IsExponentOfTwo'](_0x41dfa3['width']) && _0x1eb50e['h']['IsExponentOfTwo'](_0x41dfa3['height']) || (_0x335c1d = !0x1), _0x5efdfc && this['updateRawCubeTexture'](_0x41dfa3, _0x5efdfc, _0x347e52, _0x360951, _0x179155, _0x42ce11), this['_bindTextureDirectly'](this['_gl']['TEXTURE_CUBE_MAP'], _0x41dfa3, !0x0), _0x5efdfc && _0x335c1d && this['_gl']['generateMipmap'](this['_gl']['TEXTURE_CUBE_MAP']); var _0x3cbd96 = this['_getSamplingParameters'](_0x1b3a94, _0x335c1d); return _0x1ab210['texParameteri'](_0x1ab210['TEXTURE_CUBE_MAP'], _0x1ab210['TEXTURE_MAG_FILTER'], _0x3cbd96['mag']), _0x1ab210['texParameteri'](_0x1ab210['TEXTURE_CUBE_MAP'], _0x1ab210['TEXTURE_MIN_FILTER'], _0x3cbd96['min']), _0x1ab210['texParameteri'](_0x1ab210['TEXTURE_CUBE_MAP'], _0x1ab210['TEXTURE_WRAP_S'], _0x1ab210['CLAMP_TO_EDGE']), _0x1ab210['texParameteri'](_0x1ab210['TEXTURE_CUBE_MAP'], _0x1ab210['TEXTURE_WRAP_T'], _0x1ab210['CLAMP_TO_EDGE']), this['_bindTextureDirectly'](_0x1ab210['TEXTURE_CUBE_MAP'], null), _0x41dfa3['generateMipMaps'] = _0x335c1d, _0x41dfa3; } , _0x3647a9['b']['prototype']['updateRawCubeTexture'] = function(_0x3306a2, _0x59bcb3, _0x14b80e, _0x1a37f1, _0x3947a4, _0x8983ee, _0x5ec7f2) { void 0x0 === _0x8983ee && (_0x8983ee = null), void 0x0 === _0x5ec7f2 && (_0x5ec7f2 = 0x0), _0x3306a2['_bufferViewArray'] = _0x59bcb3, _0x3306a2['format'] = _0x14b80e, _0x3306a2['type'] = _0x1a37f1, _0x3306a2['invertY'] = _0x3947a4, _0x3306a2['_compression'] = _0x8983ee; var _0x8ffdb = this['_gl'] , _0x5772e0 = this['_getWebGLTextureType'](_0x1a37f1) , _0x1dced5 = this['_getInternalFormat'](_0x14b80e) , _0x47adf2 = this['_getRGBABufferInternalSizedFormat'](_0x1a37f1) , _0x48206a = !0x1; _0x1dced5 === _0x8ffdb['RGB'] && (_0x1dced5 = _0x8ffdb['RGBA'], _0x48206a = !0x0), this['_bindTextureDirectly'](_0x8ffdb['TEXTURE_CUBE_MAP'], _0x3306a2, !0x0), this['_unpackFlipY'](void 0x0 === _0x3947a4 || !!_0x3947a4), _0x3306a2['width'] % 0x4 != 0x0 && _0x8ffdb['pixelStorei'](_0x8ffdb['UNPACK_ALIGNMENT'], 0x1); for (var _0x397305 = 0x0; _0x397305 < 0x6; _0x397305++) { var _0x3d18fa = _0x59bcb3[_0x397305]; _0x8983ee ? _0x8ffdb['compressedTexImage2D'](_0x8ffdb['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0x397305, _0x5ec7f2, this['getCaps']()['s3tc'][_0x8983ee], _0x3306a2['width'], _0x3306a2['height'], 0x0, _0x3d18fa) : (_0x48206a && (_0x3d18fa = this['_convertRGBtoRGBATextureData'](_0x3d18fa, _0x3306a2['width'], _0x3306a2['height'], _0x1a37f1)), _0x8ffdb['texImage2D'](_0x8ffdb['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0x397305, _0x5ec7f2, _0x47adf2, _0x3306a2['width'], _0x3306a2['height'], 0x0, _0x1dced5, _0x5772e0, _0x3d18fa)); } (!this['needPOTTextures'] || _0x1eb50e['h']['IsExponentOfTwo'](_0x3306a2['width']) && _0x1eb50e['h']['IsExponentOfTwo'](_0x3306a2['height'])) && _0x3306a2['generateMipMaps'] && 0x0 === _0x5ec7f2 && this['_gl']['generateMipmap'](this['_gl']['TEXTURE_CUBE_MAP']), this['_bindTextureDirectly'](this['_gl']['TEXTURE_CUBE_MAP'], null), _0x3306a2['isReady'] = !0x0; } , _0x3647a9['b']['prototype']['createRawCubeTextureFromUrl'] = function(_0x36ada7, _0x131e7d, _0xd44c54, _0x2e1dde, _0xf95758, _0x13cb0a, _0x4215e3, _0x16f1de, _0x1edbba, _0x1a1818, _0xd9acf4, _0x92315b) { var _0x54d748 = this; void 0x0 === _0x1edbba && (_0x1edbba = null), void 0x0 === _0x1a1818 && (_0x1a1818 = null), void 0x0 === _0xd9acf4 && (_0xd9acf4 = _0x3647a9['b']['TEXTURE_TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x92315b && (_0x92315b = !0x1); var _0xe2b24e = this['_gl'] , _0x27b75e = this['createRawCubeTexture'](null, _0xd44c54, _0x2e1dde, _0xf95758, !_0x13cb0a, _0x92315b, _0xd9acf4); _0x131e7d['_addPendingData'](_0x27b75e), _0x27b75e['url'] = _0x36ada7, this['_internalTexturesCache']['push'](_0x27b75e); return this['_loadFile'](_0x36ada7, function(_0x14a5e1) { !function(_0x512526) { var _0x1d8482 = _0x27b75e['width'] , _0x9aca5c = _0x4215e3(_0x512526); if (_0x9aca5c) { if (_0x16f1de) { var _0x25e3df = _0x54d748['_getWebGLTextureType'](_0xf95758) , _0x349b9d = _0x54d748['_getInternalFormat'](_0x2e1dde) , _0x164a44 = _0x54d748['_getRGBABufferInternalSizedFormat'](_0xf95758) , _0x57d02e = !0x1; _0x349b9d === _0xe2b24e['RGB'] && (_0x349b9d = _0xe2b24e['RGBA'], _0x57d02e = !0x0), _0x54d748['_bindTextureDirectly'](_0xe2b24e['TEXTURE_CUBE_MAP'], _0x27b75e, !0x0), _0x54d748['_unpackFlipY'](!0x1); for (var _0x4e3265 = _0x16f1de(_0x9aca5c), _0x225810 = 0x0; _0x225810 < _0x4e3265['length']; _0x225810++) for (var _0x57d23c = _0x1d8482 >> _0x225810, _0xbaadfa = 0x0; _0xbaadfa < 0x6; _0xbaadfa++) { var _0x39a500 = _0x4e3265[_0x225810][_0xbaadfa]; _0x57d02e && (_0x39a500 = _0x54d748['_convertRGBtoRGBATextureData'](_0x39a500, _0x57d23c, _0x57d23c, _0xf95758)), _0xe2b24e['texImage2D'](_0xbaadfa, _0x225810, _0x164a44, _0x57d23c, _0x57d23c, 0x0, _0x349b9d, _0x25e3df, _0x39a500); } _0x54d748['_bindTextureDirectly'](_0xe2b24e['TEXTURE_CUBE_MAP'], null); } else _0x54d748['updateRawCubeTexture'](_0x27b75e, _0x9aca5c, _0x2e1dde, _0xf95758, _0x92315b); _0x27b75e['isReady'] = !0x0, _0x131e7d['_removePendingData'](_0x27b75e), _0x1edbba && _0x1edbba(); } }(_0x14a5e1); }, void 0x0, _0x131e7d['offlineProvider'], !0x0, function(_0x585c9c, _0x2f9b34) { _0x131e7d['_removePendingData'](_0x27b75e), _0x1a1818 && _0x585c9c && _0x1a1818(_0x585c9c['status'] + '\x20' + _0x585c9c['statusText'], _0x2f9b34); }), _0x27b75e; } , _0x3647a9['b']['prototype']['createRawTexture3D'] = function(_0x34631b, _0x19e1f5, _0x5a2ee8, _0x3aa41b, _0x2f20a5, _0x4289c4, _0x5754ef, _0x3207c8, _0x3143cf, _0xf478c1) { void 0x0 === _0x3143cf && (_0x3143cf = null), void 0x0 === _0xf478c1 && (_0xf478c1 = _0x3647a9['b']['TEXTURETYPE_UNSIGNED_INT']); var _0x4eec88 = new _0x2826dc['a'](this,_0x2826dc['a']['DATASOURCE_RAW3D']); _0x4eec88['baseWidth'] = _0x19e1f5, _0x4eec88['baseHeight'] = _0x5a2ee8, _0x4eec88['baseDepth'] = _0x3aa41b, _0x4eec88['width'] = _0x19e1f5, _0x4eec88['height'] = _0x5a2ee8, _0x4eec88['depth'] = _0x3aa41b, _0x4eec88['format'] = _0x2f20a5, _0x4eec88['type'] = _0xf478c1, _0x4eec88['generateMipMaps'] = _0x4289c4, _0x4eec88['samplingMode'] = _0x3207c8, _0x4eec88['is3D'] = !0x0, this['_doNotHandleContextLost'] || (_0x4eec88['_bufferView'] = _0x34631b), this['updateRawTexture3D'](_0x4eec88, _0x34631b, _0x2f20a5, _0x5754ef, _0x3143cf, _0xf478c1), this['_bindTextureDirectly'](this['_gl']['TEXTURE_3D'], _0x4eec88, !0x0); var _0xe39cc9 = this['_getSamplingParameters'](_0x3207c8, _0x4289c4); return this['_gl']['texParameteri'](this['_gl']['TEXTURE_3D'], this['_gl']['TEXTURE_MAG_FILTER'], _0xe39cc9['mag']), this['_gl']['texParameteri'](this['_gl']['TEXTURE_3D'], this['_gl']['TEXTURE_MIN_FILTER'], _0xe39cc9['min']), _0x4289c4 && this['_gl']['generateMipmap'](this['_gl']['TEXTURE_3D']), this['_bindTextureDirectly'](this['_gl']['TEXTURE_3D'], null), this['_internalTexturesCache']['push'](_0x4eec88), _0x4eec88; } , _0x3647a9['b']['prototype']['updateRawTexture3D'] = function(_0x19dd70, _0x31cae3, _0x120755, _0x26197d, _0x3a8944, _0x41431e) { void 0x0 === _0x3a8944 && (_0x3a8944 = null), void 0x0 === _0x41431e && (_0x41431e = _0x3647a9['b']['TEXTURETYPE_UNSIGNED_INT']); var _0x894de4 = this['_getWebGLTextureType'](_0x41431e) , _0x3323d3 = this['_getInternalFormat'](_0x120755) , _0x129ac5 = this['_getRGBABufferInternalSizedFormat'](_0x41431e, _0x120755); this['_bindTextureDirectly'](this['_gl']['TEXTURE_3D'], _0x19dd70, !0x0), this['_unpackFlipY'](void 0x0 === _0x26197d || !!_0x26197d), this['_doNotHandleContextLost'] || (_0x19dd70['_bufferView'] = _0x31cae3, _0x19dd70['format'] = _0x120755, _0x19dd70['invertY'] = _0x26197d, _0x19dd70['_compression'] = _0x3a8944), _0x19dd70['width'] % 0x4 != 0x0 && this['_gl']['pixelStorei'](this['_gl']['UNPACK_ALIGNMENT'], 0x1), _0x3a8944 && _0x31cae3 ? this['_gl']['compressedTexImage3D'](this['_gl']['TEXTURE_3D'], 0x0, this['getCaps']()['s3tc'][_0x3a8944], _0x19dd70['width'], _0x19dd70['height'], _0x19dd70['depth'], 0x0, _0x31cae3) : this['_gl']['texImage3D'](this['_gl']['TEXTURE_3D'], 0x0, _0x129ac5, _0x19dd70['width'], _0x19dd70['height'], _0x19dd70['depth'], 0x0, _0x3323d3, _0x894de4, _0x31cae3), _0x19dd70['generateMipMaps'] && this['_gl']['generateMipmap'](this['_gl']['TEXTURE_3D']), this['_bindTextureDirectly'](this['_gl']['TEXTURE_3D'], null), _0x19dd70['isReady'] = !0x0; } ; var _0x16dc17 = function(_0x9d26fc) { function _0x247b8b(_0x447370, _0xe0d50a, _0x56c533, _0x4c10a7, _0x479376, _0x5322bf, _0x59d82e, _0x19564b, _0x264424) { void 0x0 === _0x5322bf && (_0x5322bf = !0x0), void 0x0 === _0x59d82e && (_0x59d82e = !0x1), void 0x0 === _0x19564b && (_0x19564b = _0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x264424 && (_0x264424 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']); var _0x4e9f6e = _0x9d26fc['call'](this, null, _0x479376, !_0x5322bf, _0x59d82e) || this; return _0x4e9f6e['format'] = _0x4c10a7, _0x4e9f6e['_engine'] = _0x479376['getEngine'](), _0x4e9f6e['_texture'] = _0x479376['getEngine']()['createRawTexture'](_0x447370, _0xe0d50a, _0x56c533, _0x4c10a7, _0x5322bf, _0x59d82e, _0x19564b, null, _0x264424), _0x4e9f6e['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x4e9f6e['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x4e9f6e; } return _0x420e5b['d'](_0x247b8b, _0x9d26fc), _0x247b8b['prototype']['update'] = function(_0x40abb5) { this['_engine']['updateRawTexture'](this['_texture'], _0x40abb5, this['_texture']['format'], this['_texture']['invertY'], null, this['_texture']['type']); } , _0x247b8b['CreateLuminanceTexture'] = function(_0x46dba0, _0xe1386b, _0xe3759b, _0x130aa3, _0x181654, _0xb8c80e, _0x533091) { return void 0x0 === _0x181654 && (_0x181654 = !0x0), void 0x0 === _0xb8c80e && (_0xb8c80e = !0x1), void 0x0 === _0x533091 && (_0x533091 = _0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE']), new _0x247b8b(_0x46dba0,_0xe1386b,_0xe3759b,_0x24e342['a']['TEXTUREFORMAT_LUMINANCE'],_0x130aa3,_0x181654,_0xb8c80e,_0x533091); } , _0x247b8b['CreateLuminanceAlphaTexture'] = function(_0x45647f, _0x1fc691, _0x2723a9, _0x66ae5c, _0x29eb4b, _0x423f69, _0x130c56) { return void 0x0 === _0x29eb4b && (_0x29eb4b = !0x0), void 0x0 === _0x423f69 && (_0x423f69 = !0x1), void 0x0 === _0x130c56 && (_0x130c56 = _0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE']), new _0x247b8b(_0x45647f,_0x1fc691,_0x2723a9,_0x24e342['a']['TEXTUREFORMAT_LUMINANCE_ALPHA'],_0x66ae5c,_0x29eb4b,_0x423f69,_0x130c56); } , _0x247b8b['CreateAlphaTexture'] = function(_0x46c3f1, _0xaf9092, _0x2c7551, _0x4dc5d8, _0x400fbc, _0x25f6f8, _0x459705) { return void 0x0 === _0x400fbc && (_0x400fbc = !0x0), void 0x0 === _0x25f6f8 && (_0x25f6f8 = !0x1), void 0x0 === _0x459705 && (_0x459705 = _0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE']), new _0x247b8b(_0x46c3f1,_0xaf9092,_0x2c7551,_0x24e342['a']['TEXTUREFORMAT_ALPHA'],_0x4dc5d8,_0x400fbc,_0x25f6f8,_0x459705); } , _0x247b8b['CreateRGBTexture'] = function(_0x45ba45, _0xfac41c, _0x5fcf72, _0x429c15, _0x29f3b4, _0x54116c, _0xb0d333, _0x23945a) { return void 0x0 === _0x29f3b4 && (_0x29f3b4 = !0x0), void 0x0 === _0x54116c && (_0x54116c = !0x1), void 0x0 === _0xb0d333 && (_0xb0d333 = _0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x23945a && (_0x23945a = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), new _0x247b8b(_0x45ba45,_0xfac41c,_0x5fcf72,_0x24e342['a']['TEXTUREFORMAT_RGB'],_0x429c15,_0x29f3b4,_0x54116c,_0xb0d333,_0x23945a); } , _0x247b8b['CreateRGBATexture'] = function(_0x5dc57f, _0x10e507, _0x5b8750, _0x2caa5f, _0xd9bd3, _0xc59285, _0x4971a3, _0x5d271c) { return void 0x0 === _0xd9bd3 && (_0xd9bd3 = !0x0), void 0x0 === _0xc59285 && (_0xc59285 = !0x1), void 0x0 === _0x4971a3 && (_0x4971a3 = _0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x5d271c && (_0x5d271c = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), new _0x247b8b(_0x5dc57f,_0x10e507,_0x5b8750,_0x24e342['a']['TEXTUREFORMAT_RGBA'],_0x2caa5f,_0xd9bd3,_0xc59285,_0x4971a3,_0x5d271c); } , _0x247b8b['CreateRTexture'] = function(_0x3c00fd, _0x37b3b8, _0x5b3e52, _0x5cda4b, _0x4bbbfc, _0x1b991e, _0x1f50ba, _0x1caa16) { return void 0x0 === _0x4bbbfc && (_0x4bbbfc = !0x0), void 0x0 === _0x1b991e && (_0x1b991e = !0x1), void 0x0 === _0x1f50ba && (_0x1f50ba = _0x11d14a['a']['TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x1caa16 && (_0x1caa16 = _0x24e342['a']['TEXTURETYPE_FLOAT']), new _0x247b8b(_0x3c00fd,_0x37b3b8,_0x5b3e52,_0x24e342['a']['TEXTUREFORMAT_R'],_0x5cda4b,_0x4bbbfc,_0x1b991e,_0x1f50ba,_0x1caa16); } , _0x247b8b; }(_0x11d14a['a']) , _0x48b7c1 = function() { function _0x3cbc03(_0x810df5, _0x1c717d, _0x391ed4) { this['name'] = _0x810df5, this['id'] = _0x1c717d, this['bones'] = new Array(), this['needInitialSkinMatrix'] = !0x1, this['overrideMesh'] = null, this['_isDirty'] = !0x0, this['_meshesWithPoseMatrix'] = new Array(), this['_identity'] = _0x47d24f['j']['Identity'](), this['_ranges'] = {}, this['_lastAbsoluteTransformsUpdateId'] = -0x1, this['_canUseTextureForBones'] = !0x1, this['_uniqueId'] = 0x0, this['_numBonesWithLinkedTransformNode'] = 0x0, this['_hasWaitingData'] = null, this['doNotSerialize'] = !0x1, this['_useTextureToStoreBoneMatrices'] = !0x0, this['_animationPropertiesOverride'] = null, this['onBeforeComputeObservable'] = new _0x2dbec2['c'](), this['bones'] = [], this['_scene'] = _0x391ed4 || _0x48707b['a']['LastCreatedScene'], this['_uniqueId'] = this['_scene']['getUniqueId'](), this['_scene']['addSkeleton'](this), this['_isDirty'] = !0x0; var _0x56438a = this['_scene']['getEngine']()['getCaps'](); this['_canUseTextureForBones'] = _0x56438a['textureFloat'] && _0x56438a['maxVertexTextureImageUnits'] > 0x0; } return Object['defineProperty'](_0x3cbc03['prototype'], 'useTextureToStoreBoneMatrices', { 'get': function() { return this['_useTextureToStoreBoneMatrices']; }, 'set': function(_0x5917af) { this['_useTextureToStoreBoneMatrices'] = _0x5917af, this['_markAsDirty'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3cbc03['prototype'], 'animationPropertiesOverride', { 'get': function() { return this['_animationPropertiesOverride'] ? this['_animationPropertiesOverride'] : this['_scene']['animationPropertiesOverride']; }, 'set': function(_0x250640) { this['_animationPropertiesOverride'] = _0x250640; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3cbc03['prototype'], 'isUsingTextureForMatrices', { 'get': function() { return this['useTextureToStoreBoneMatrices'] && this['_canUseTextureForBones'] && !this['needInitialSkinMatrix']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3cbc03['prototype'], 'uniqueId', { 'get': function() { return this['_uniqueId']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3cbc03['prototype']['getClassName'] = function() { return 'Skeleton'; } , _0x3cbc03['prototype']['getChildren'] = function() { return this['bones']['filter'](function(_0x42abba) { return !_0x42abba['getParent'](); }); } , _0x3cbc03['prototype']['getTransformMatrices'] = function(_0x3f0206) { return this['needInitialSkinMatrix'] && _0x3f0206['_bonesTransformMatrices'] ? _0x3f0206['_bonesTransformMatrices'] : (this['_transformMatrices'] || this['prepare'](), this['_transformMatrices']); } , _0x3cbc03['prototype']['getTransformMatrixTexture'] = function() { return this['_transformMatrixTexture']; } , _0x3cbc03['prototype']['getScene'] = function() { return this['_scene']; } , _0x3cbc03['prototype']['toString'] = function(_0x524d82) { var _0x2af38f = 'Name:\x20' + this['name'] + ',\x20nBones:\x20' + this['bones']['length']; if (_0x2af38f += ',\x20nAnimationRanges:\x20' + (this['_ranges'] ? Object['keys'](this['_ranges'])['length'] : 'none'), _0x524d82) { _0x2af38f += ',\x20Ranges:\x20{'; var _0x4d8dc7 = !0x0; for (var _0x51d750 in this['_ranges']) _0x4d8dc7 && (_0x2af38f += ',\x20', _0x4d8dc7 = !0x1), _0x2af38f += _0x51d750; _0x2af38f += '}'; } return _0x2af38f; } , _0x3cbc03['prototype']['getBoneIndexByName'] = function(_0x379f77) { for (var _0x1b9d21 = 0x0, _0x5f49b9 = this['bones']['length']; _0x1b9d21 < _0x5f49b9; _0x1b9d21++) if (this['bones'][_0x1b9d21]['name'] === _0x379f77) return _0x1b9d21; return -0x1; } , _0x3cbc03['prototype']['createAnimationRange'] = function(_0x23dcb5, _0x4b4965, _0x262369) { if (!this['_ranges'][_0x23dcb5]) { this['_ranges'][_0x23dcb5] = new _0x4bd663(_0x23dcb5,_0x4b4965,_0x262369); for (var _0x27daad = 0x0, _0x505ca9 = this['bones']['length']; _0x27daad < _0x505ca9; _0x27daad++) this['bones'][_0x27daad]['animations'][0x0] && this['bones'][_0x27daad]['animations'][0x0]['createRange'](_0x23dcb5, _0x4b4965, _0x262369); } } , _0x3cbc03['prototype']['deleteAnimationRange'] = function(_0x8f1ce4, _0x3d3a3f) { void 0x0 === _0x3d3a3f && (_0x3d3a3f = !0x0); for (var _0x238abe = 0x0, _0x2a550f = this['bones']['length']; _0x238abe < _0x2a550f; _0x238abe++) this['bones'][_0x238abe]['animations'][0x0] && this['bones'][_0x238abe]['animations'][0x0]['deleteRange'](_0x8f1ce4, _0x3d3a3f); this['_ranges'][_0x8f1ce4] = null; } , _0x3cbc03['prototype']['getAnimationRange'] = function(_0xb1cd16) { return this['_ranges'][_0xb1cd16]; } , _0x3cbc03['prototype']['getAnimationRanges'] = function() { var _0x1f1405, _0x5a1769 = []; for (_0x1f1405 in this['_ranges']) _0x5a1769['push'](this['_ranges'][_0x1f1405]); return _0x5a1769; } , _0x3cbc03['prototype']['copyAnimationRange'] = function(_0x5cc459, _0x85a43e, _0x56dd70) { if (void 0x0 === _0x56dd70 && (_0x56dd70 = !0x1), this['_ranges'][_0x85a43e] || !_0x5cc459['getAnimationRange'](_0x85a43e)) return !0x1; var _0x589ec4, _0x5ed441, _0x214f43 = !0x0, _0x173c04 = this['_getHighestAnimationFrame']() + 0x1, _0x18fadc = {}, _0x410949 = _0x5cc459['bones']; for (_0x5ed441 = 0x0, _0x589ec4 = _0x410949['length']; _0x5ed441 < _0x589ec4; _0x5ed441++) _0x18fadc[_0x410949[_0x5ed441]['name']] = _0x410949[_0x5ed441]; this['bones']['length'] !== _0x410949['length'] && (_0x3f98cb['a']['Warn']('copyAnimationRange:\x20this\x20rig\x20has\x20' + this['bones']['length'] + '\x20bones,\x20while\x20source\x20as\x20' + _0x410949['length']), _0x214f43 = !0x1); var _0x1cf1e9 = _0x56dd70 && this['dimensionsAtRest'] && _0x5cc459['dimensionsAtRest'] ? this['dimensionsAtRest']['divide'](_0x5cc459['dimensionsAtRest']) : null; for (_0x5ed441 = 0x0, _0x589ec4 = this['bones']['length']; _0x5ed441 < _0x589ec4; _0x5ed441++) { var _0x4eb596 = this['bones'][_0x5ed441]['name'] , _0x3c61c1 = _0x18fadc[_0x4eb596]; _0x3c61c1 ? _0x214f43 = _0x214f43 && this['bones'][_0x5ed441]['copyAnimationRange'](_0x3c61c1, _0x85a43e, _0x173c04, _0x56dd70, _0x1cf1e9) : (_0x3f98cb['a']['Warn']('copyAnimationRange:\x20not\x20same\x20rig,\x20missing\x20source\x20bone\x20' + _0x4eb596), _0x214f43 = !0x1); } var _0x3b7558 = _0x5cc459['getAnimationRange'](_0x85a43e); return _0x3b7558 && (this['_ranges'][_0x85a43e] = new _0x4bd663(_0x85a43e,_0x3b7558['from'] + _0x173c04,_0x3b7558['to'] + _0x173c04)), _0x214f43; } , _0x3cbc03['prototype']['returnToRest'] = function() { for (var _0x1a3807 = 0x0; _0x1a3807 < this['bones']['length']; _0x1a3807++) this['bones'][_0x1a3807]['returnToRest'](); } , _0x3cbc03['prototype']['_getHighestAnimationFrame'] = function() { for (var _0x418e3d = 0x0, _0x2d84b7 = 0x0, _0x4bdd18 = this['bones']['length']; _0x2d84b7 < _0x4bdd18; _0x2d84b7++) if (this['bones'][_0x2d84b7]['animations'][0x0]) { var _0x72642d = this['bones'][_0x2d84b7]['animations'][0x0]['getHighestFrame'](); _0x418e3d < _0x72642d && (_0x418e3d = _0x72642d); } return _0x418e3d; } , _0x3cbc03['prototype']['beginAnimation'] = function(_0x4a1458, _0x32c502, _0xe362e1, _0x5b93b4) { var _0x310610 = this['getAnimationRange'](_0x4a1458); return _0x310610 ? this['_scene']['beginAnimation'](this, _0x310610['from'], _0x310610['to'], _0x32c502, _0xe362e1, _0x5b93b4) : null; } , _0x3cbc03['prototype']['_markAsDirty'] = function() { this['_isDirty'] = !0x0; } , _0x3cbc03['prototype']['_registerMeshWithPoseMatrix'] = function(_0x36d45a) { this['_meshesWithPoseMatrix']['push'](_0x36d45a); } , _0x3cbc03['prototype']['_unregisterMeshWithPoseMatrix'] = function(_0x388d6f) { var _0x3a933e = this['_meshesWithPoseMatrix']['indexOf'](_0x388d6f); _0x3a933e > -0x1 && this['_meshesWithPoseMatrix']['splice'](_0x3a933e, 0x1); } , _0x3cbc03['prototype']['_computeTransformMatrices'] = function(_0x57fe5b, _0xf56718) { this['onBeforeComputeObservable']['notifyObservers'](this); for (var _0x508aa4 = 0x0; _0x508aa4 < this['bones']['length']; _0x508aa4++) { var _0x5e863e = this['bones'][_0x508aa4]; _0x5e863e['_childUpdateId']++; var _0x35a748 = _0x5e863e['getParent'](); if (_0x35a748 ? _0x5e863e['getLocalMatrix']()['multiplyToRef'](_0x35a748['getWorldMatrix'](), _0x5e863e['getWorldMatrix']()) : _0xf56718 ? _0x5e863e['getLocalMatrix']()['multiplyToRef'](_0xf56718, _0x5e863e['getWorldMatrix']()) : _0x5e863e['getWorldMatrix']()['copyFrom'](_0x5e863e['getLocalMatrix']()), -0x1 !== _0x5e863e['_index']) { var _0x140116 = null === _0x5e863e['_index'] ? _0x508aa4 : _0x5e863e['_index']; _0x5e863e['getInvertedAbsoluteTransform']()['multiplyToArray'](_0x5e863e['getWorldMatrix'](), _0x57fe5b, 0x10 * _0x140116); } } this['_identity']['copyToArray'](_0x57fe5b, 0x10 * this['bones']['length']); } , _0x3cbc03['prototype']['prepare'] = function() { if (this['_numBonesWithLinkedTransformNode'] > 0x0) for (var _0x3124c7 = 0x0, _0x2bb4a1 = this['bones']; _0x3124c7 < _0x2bb4a1['length']; _0x3124c7++) { var _0x2c8be8 = _0x2bb4a1[_0x3124c7]; _0x2c8be8['_linkedTransformNode'] && (_0x2c8be8['_linkedTransformNode']['computeWorldMatrix'](), _0x2c8be8['_matrix'] = _0x2c8be8['_linkedTransformNode']['_localMatrix'], _0x2c8be8['markAsDirty']()); } if (this['_isDirty']) { if (this['needInitialSkinMatrix']) for (var _0x81b0af = 0x0; _0x81b0af < this['_meshesWithPoseMatrix']['length']; _0x81b0af++) { var _0x526883 = this['_meshesWithPoseMatrix'][_0x81b0af] , _0x1544f2 = _0x526883['getPoseMatrix'](); if (_0x526883['_bonesTransformMatrices'] && _0x526883['_bonesTransformMatrices']['length'] === 0x10 * (this['bones']['length'] + 0x1) || (_0x526883['_bonesTransformMatrices'] = new Float32Array(0x10 * (this['bones']['length'] + 0x1))), this['_synchronizedWithMesh'] !== _0x526883) { this['_synchronizedWithMesh'] = _0x526883; for (var _0x5aeec2 = 0x0; _0x5aeec2 < this['bones']['length']; _0x5aeec2++) { var _0x18c494 = this['bones'][_0x5aeec2]; if (!_0x18c494['getParent']()) _0x18c494['getBaseMatrix']()['multiplyToRef'](_0x1544f2, _0x47d24f['t']['Matrix'][0x1]), _0x18c494['_updateDifferenceMatrix'](_0x47d24f['t']['Matrix'][0x1]); } } this['_computeTransformMatrices'](_0x526883['_bonesTransformMatrices'], _0x1544f2); } else this['_transformMatrices'] && this['_transformMatrices']['length'] === 0x10 * (this['bones']['length'] + 0x1) || (this['_transformMatrices'] = new Float32Array(0x10 * (this['bones']['length'] + 0x1)), this['isUsingTextureForMatrices'] && (this['_transformMatrixTexture'] && this['_transformMatrixTexture']['dispose'](), this['_transformMatrixTexture'] = _0x16dc17['CreateRGBATexture'](this['_transformMatrices'], 0x4 * (this['bones']['length'] + 0x1), 0x1, this['_scene'], !0x1, !0x1, _0x24e342['a']['TEXTURE_NEAREST_SAMPLINGMODE'], _0x24e342['a']['TEXTURETYPE_FLOAT']))), this['_computeTransformMatrices'](this['_transformMatrices'], null), this['isUsingTextureForMatrices'] && this['_transformMatrixTexture'] && this['_transformMatrixTexture']['update'](this['_transformMatrices']); this['_isDirty'] = !0x1, this['_scene']['_activeBones']['addCount'](this['bones']['length'], !0x1); } } , _0x3cbc03['prototype']['getAnimatables'] = function() { if (!this['_animatables'] || this['_animatables']['length'] !== this['bones']['length']) { this['_animatables'] = []; for (var _0xb106c6 = 0x0; _0xb106c6 < this['bones']['length']; _0xb106c6++) this['_animatables']['push'](this['bones'][_0xb106c6]); } return this['_animatables']; } , _0x3cbc03['prototype']['clone'] = function(_0x393c1c, _0x1a5630) { var _0x4668fc = new _0x3cbc03(_0x393c1c,_0x1a5630 || _0x393c1c,this['_scene']); _0x4668fc['needInitialSkinMatrix'] = this['needInitialSkinMatrix']; for (var _0x50e92d = 0x0; _0x50e92d < this['bones']['length']; _0x50e92d++) { var _0x12fcf9 = this['bones'][_0x50e92d] , _0x2a28ef = null , _0x30c7a2 = _0x12fcf9['getParent'](); if (_0x30c7a2) { var _0x379658 = this['bones']['indexOf'](_0x30c7a2); _0x2a28ef = _0x4668fc['bones'][_0x379658]; } var _0x4fca26 = new _0x814309(_0x12fcf9['name'],_0x4668fc,_0x2a28ef,_0x12fcf9['getBaseMatrix']()['clone'](),_0x12fcf9['getRestPose']()['clone']()); _0x5e367c['a']['DeepCopy'](_0x12fcf9['animations'], _0x4fca26['animations']); } if (this['_ranges']) for (var _0x45549c in (_0x4668fc['_ranges'] = {}, this['_ranges'])) { var _0x1359d2 = this['_ranges'][_0x45549c]; _0x1359d2 && (_0x4668fc['_ranges'][_0x45549c] = _0x1359d2['clone']()); } return this['_isDirty'] = !0x0, _0x4668fc; } , _0x3cbc03['prototype']['enableBlending'] = function(_0x34b6a6) { void 0x0 === _0x34b6a6 && (_0x34b6a6 = 0.01), this['bones']['forEach'](function(_0xb414e5) { _0xb414e5['animations']['forEach'](function(_0x373148) { _0x373148['enableBlending'] = !0x0, _0x373148['blendingSpeed'] = _0x34b6a6; }); }); } , _0x3cbc03['prototype']['dispose'] = function() { this['_meshesWithPoseMatrix'] = [], this['getScene']()['stopAnimation'](this), this['getScene']()['removeSkeleton'](this), this['_transformMatrixTexture'] && (this['_transformMatrixTexture']['dispose'](), this['_transformMatrixTexture'] = null); } , _0x3cbc03['prototype']['serialize'] = function() { var _0x41ecbf = {}; _0x41ecbf['name'] = this['name'], _0x41ecbf['id'] = this['id'], this['dimensionsAtRest'] && (_0x41ecbf['dimensionsAtRest'] = this['dimensionsAtRest']['asArray']()), _0x41ecbf['bones'] = [], _0x41ecbf['needInitialSkinMatrix'] = this['needInitialSkinMatrix']; for (var _0x4a9548 = 0x0; _0x4a9548 < this['bones']['length']; _0x4a9548++) { var _0x28bace = this['bones'][_0x4a9548] , _0x1fa11f = _0x28bace['getParent']() , _0x6d2a71 = { 'parentBoneIndex': _0x1fa11f ? this['bones']['indexOf'](_0x1fa11f) : -0x1, 'name': _0x28bace['name'], 'matrix': _0x28bace['getBaseMatrix']()['toArray'](), 'rest': _0x28bace['getRestPose']()['toArray']() }; for (var _0x6c3fe7 in (_0x41ecbf['bones']['push'](_0x6d2a71), _0x28bace['length'] && (_0x6d2a71['length'] = _0x28bace['length']), _0x28bace['metadata'] && (_0x6d2a71['metadata'] = _0x28bace['metadata']), _0x28bace['animations'] && _0x28bace['animations']['length'] > 0x0 && (_0x6d2a71['animation'] = _0x28bace['animations'][0x0]['serialize']()), _0x41ecbf['ranges'] = [], this['_ranges'])) { var _0x260c60 = this['_ranges'][_0x6c3fe7]; if (_0x260c60) { var _0x471d0d = {}; _0x471d0d['name'] = _0x6c3fe7, _0x471d0d['from'] = _0x260c60['from'], _0x471d0d['to'] = _0x260c60['to'], _0x41ecbf['ranges']['push'](_0x471d0d); } } } return _0x41ecbf; } , _0x3cbc03['Parse'] = function(_0x20c852, _0x339175) { var _0x61ff21, _0x163e8a = new _0x3cbc03(_0x20c852['name'],_0x20c852['id'],_0x339175); for (_0x20c852['dimensionsAtRest'] && (_0x163e8a['dimensionsAtRest'] = _0x47d24f['x']['FromArray'](_0x20c852['dimensionsAtRest'])), _0x163e8a['needInitialSkinMatrix'] = _0x20c852['needInitialSkinMatrix'], _0x61ff21 = 0x0; _0x61ff21 < _0x20c852['bones']['length']; _0x61ff21++) { var _0x24820b = _0x20c852['bones'][_0x61ff21] , _0x245ef9 = null; _0x24820b['parentBoneIndex'] > -0x1 && (_0x245ef9 = _0x163e8a['bones'][_0x24820b['parentBoneIndex']]); var _0x85df16 = _0x24820b['rest'] ? _0x47d24f['j']['FromArray'](_0x24820b['rest']) : null , _0x27f1be = new _0x814309(_0x24820b['name'],_0x163e8a,_0x245ef9,_0x47d24f['j']['FromArray'](_0x24820b['matrix']),_0x85df16); void 0x0 !== _0x24820b['id'] && null !== _0x24820b['id'] && (_0x27f1be['id'] = _0x24820b['id']), _0x24820b['length'] && (_0x27f1be['length'] = _0x24820b['length']), _0x24820b['metadata'] && (_0x27f1be['metadata'] = _0x24820b['metadata']), _0x24820b['animation'] && _0x27f1be['animations']['push'](_0x4452f5['Parse'](_0x24820b['animation'])), void 0x0 !== _0x24820b['linkedTransformNodeId'] && null !== _0x24820b['linkedTransformNodeId'] && (_0x163e8a['_hasWaitingData'] = !0x0, _0x27f1be['_waitingTransformNodeId'] = _0x24820b['linkedTransformNodeId']); } if (_0x20c852['ranges']) for (_0x61ff21 = 0x0; _0x61ff21 < _0x20c852['ranges']['length']; _0x61ff21++) { var _0x187d01 = _0x20c852['ranges'][_0x61ff21]; _0x163e8a['createAnimationRange'](_0x187d01['name'], _0x187d01['from'], _0x187d01['to']); } return _0x163e8a; } , _0x3cbc03['prototype']['computeAbsoluteTransforms'] = function(_0x8a8384) { void 0x0 === _0x8a8384 && (_0x8a8384 = !0x1); var _0x23e584 = this['_scene']['getRenderId'](); (this['_lastAbsoluteTransformsUpdateId'] != _0x23e584 || _0x8a8384) && (this['bones'][0x0]['computeAbsoluteTransforms'](), this['_lastAbsoluteTransformsUpdateId'] = _0x23e584); } , _0x3cbc03['prototype']['getPoseMatrix'] = function() { var _0x384e9c = null; return this['_meshesWithPoseMatrix']['length'] > 0x0 && (_0x384e9c = this['_meshesWithPoseMatrix'][0x0]['getPoseMatrix']()), _0x384e9c; } , _0x3cbc03['prototype']['sortBones'] = function() { for (var _0x8d9d49 = new Array(), _0x57e405 = new Array(this['bones']['length']), _0x58974a = 0x0; _0x58974a < this['bones']['length']; _0x58974a++) this['_sortBones'](_0x58974a, _0x8d9d49, _0x57e405); this['bones'] = _0x8d9d49; } , _0x3cbc03['prototype']['_sortBones'] = function(_0x5b0de6, _0x4dea4e, _0x4946e5) { if (!_0x4946e5[_0x5b0de6]) { _0x4946e5[_0x5b0de6] = !0x0; var _0x17a9de = this['bones'][_0x5b0de6]; void 0x0 === _0x17a9de['_index'] && (_0x17a9de['_index'] = _0x5b0de6); var _0x22df40 = _0x17a9de['getParent'](); _0x22df40 && this['_sortBones'](this['bones']['indexOf'](_0x22df40), _0x4dea4e, _0x4946e5), _0x4dea4e['push'](_0x17a9de); } } , _0x3cbc03; }() , _0x11fe9a = {} , _0x21d8d9 = function() { function _0x5e0ad9(_0x38cbd0) { this['attached'] = {}, this['camera'] = _0x38cbd0, this['checkInputs'] = function() {} ; } return _0x5e0ad9['prototype']['add'] = function(_0x3ba716) { var _0x5806ca = _0x3ba716['getSimpleName'](); this['attached'][_0x5806ca] ? _0x3f98cb['a']['Warn']('camera\x20input\x20of\x20type\x20' + _0x5806ca + '\x20already\x20exists\x20on\x20camera') : (this['attached'][_0x5806ca] = _0x3ba716, _0x3ba716['camera'] = this['camera'], _0x3ba716['checkInputs'] && (this['checkInputs'] = this['_addCheckInputs'](_0x3ba716['checkInputs']['bind'](_0x3ba716))), this['attachedElement'] && _0x3ba716['attachControl'](this['attachedElement'])); } , _0x5e0ad9['prototype']['remove'] = function(_0x82da62) { for (var _0x54cbcf in this['attached']) { var _0xd36cfd = this['attached'][_0x54cbcf]; _0xd36cfd === _0x82da62 && (_0xd36cfd['detachControl'](this['attachedElement']), _0xd36cfd['camera'] = null, delete this['attached'][_0x54cbcf], this['rebuildInputCheck']()); } } , _0x5e0ad9['prototype']['removeByType'] = function(_0x1cf163) { for (var _0x19140e in this['attached']) { var _0xbb517 = this['attached'][_0x19140e]; _0xbb517['getClassName']() === _0x1cf163 && (_0xbb517['detachControl'](this['attachedElement']), _0xbb517['camera'] = null, delete this['attached'][_0x19140e], this['rebuildInputCheck']()); } } , _0x5e0ad9['prototype']['_addCheckInputs'] = function(_0x28d260) { var _0x1d1115 = this['checkInputs']; return function() { _0x1d1115(), _0x28d260(); } ; } , _0x5e0ad9['prototype']['attachInput'] = function(_0x428fcc) { this['attachedElement'] && _0x428fcc['attachControl'](this['attachedElement'], this['noPreventDefault']); } , _0x5e0ad9['prototype']['attachElement'] = function(_0x385b0d, _0x264f64) { if (void 0x0 === _0x264f64 && (_0x264f64 = !0x1), !this['attachedElement']) for (var _0x3aaabd in (_0x264f64 = !_0x4504cf['a']['ForceAttachControlToAlwaysPreventDefault'] && _0x264f64, this['attachedElement'] = _0x385b0d, this['noPreventDefault'] = _0x264f64, this['attached'])) this['attached'][_0x3aaabd]['attachControl'](_0x385b0d, _0x264f64); } , _0x5e0ad9['prototype']['detachElement'] = function(_0x4aa438, _0x591ae2) { if (void 0x0 === _0x591ae2 && (_0x591ae2 = !0x1), this['attachedElement'] === _0x4aa438) { for (var _0x21bc49 in this['attached']) this['attached'][_0x21bc49]['detachControl'](_0x4aa438), _0x591ae2 && (this['attached'][_0x21bc49]['camera'] = null); this['attachedElement'] = null; } } , _0x5e0ad9['prototype']['rebuildInputCheck'] = function() { for (var _0x2fded0 in (this['checkInputs'] = function() {} , this['attached'])) { var _0x29473c = this['attached'][_0x2fded0]; _0x29473c['checkInputs'] && (this['checkInputs'] = this['_addCheckInputs'](_0x29473c['checkInputs']['bind'](_0x29473c))); } } , _0x5e0ad9['prototype']['clear'] = function() { this['attachedElement'] && this['detachElement'](this['attachedElement'], !0x0), this['attached'] = {}, this['attachedElement'] = null, this['checkInputs'] = function() {} ; } , _0x5e0ad9['prototype']['serialize'] = function(_0x15ae0f) { var _0x1557cb = {}; for (var _0x47376f in this['attached']) { var _0x2eb4ec = this['attached'][_0x47376f] , _0x476547 = _0x3d4764['a']['Serialize'](_0x2eb4ec); _0x1557cb[_0x2eb4ec['getClassName']()] = _0x476547; } _0x15ae0f['inputsmgr'] = _0x1557cb; } , _0x5e0ad9['prototype']['parse'] = function(_0x55ebf0) { var _0x4f81d4 = _0x55ebf0['inputsmgr']; if (_0x4f81d4) for (var _0x29e752 in (this['clear'](), _0x4f81d4)) { if (_0x1679e2 = _0x11fe9a[_0x29e752]) { var _0x2be891 = _0x4f81d4[_0x29e752] , _0xe4c388 = _0x3d4764['a']['Parse'](function() { return new _0x1679e2(); }, _0x2be891, null); this['add'](_0xe4c388); } } else for (var _0x29e752 in this['attached']) { var _0x1679e2; if (_0x1679e2 = _0x11fe9a[this['attached'][_0x29e752]['getClassName']()]) { _0xe4c388 = _0x3d4764['a']['Parse'](function() { return new _0x1679e2(); }, _0x55ebf0, null); this['remove'](this['attached'][_0x29e752]), this['add'](_0xe4c388); } } } , _0x5e0ad9; }() , _0x329150 = function() { return function(_0x55b826, _0x2719e5) { this['x'] = _0x55b826, this['y'] = _0x2719e5; } ; }() , _0x591e86 = function() { function _0x1f77c2(_0x6b7c44, _0x103bfd, _0x33d9c6, _0x3b3b3e, _0x53e5bf, _0x5aca62, _0x1d4268) { void 0x0 === _0x3b3b3e && (_0x3b3b3e = 0x0), void 0x0 === _0x53e5bf && (_0x53e5bf = 0x1), void 0x0 === _0x5aca62 && (_0x5aca62 = 0x2), void 0x0 === _0x1d4268 && (_0x1d4268 = 0x3), this['id'] = _0x6b7c44, this['index'] = _0x103bfd, this['browserGamepad'] = _0x33d9c6, this['_leftStick'] = { 'x': 0x0, 'y': 0x0 }, this['_rightStick'] = { 'x': 0x0, 'y': 0x0 }, this['_isConnected'] = !0x0, this['_invertLeftStickY'] = !0x1, this['type'] = _0x1f77c2['GAMEPAD'], this['_leftStickAxisX'] = _0x3b3b3e, this['_leftStickAxisY'] = _0x53e5bf, this['_rightStickAxisX'] = _0x5aca62, this['_rightStickAxisY'] = _0x1d4268, this['browserGamepad']['axes']['length'] >= 0x2 && (this['_leftStick'] = { 'x': this['browserGamepad']['axes'][this['_leftStickAxisX']], 'y': this['browserGamepad']['axes'][this['_leftStickAxisY']] }), this['browserGamepad']['axes']['length'] >= 0x4 && (this['_rightStick'] = { 'x': this['browserGamepad']['axes'][this['_rightStickAxisX']], 'y': this['browserGamepad']['axes'][this['_rightStickAxisY']] }); } return Object['defineProperty'](_0x1f77c2['prototype'], 'isConnected', { 'get': function() { return this['_isConnected']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1f77c2['prototype']['onleftstickchanged'] = function(_0x44985b) { this['_onleftstickchanged'] = _0x44985b; } , _0x1f77c2['prototype']['onrightstickchanged'] = function(_0x3ce95d) { this['_onrightstickchanged'] = _0x3ce95d; } , Object['defineProperty'](_0x1f77c2['prototype'], 'leftStick', { 'get': function() { return this['_leftStick']; }, 'set': function(_0x370687) { !this['_onleftstickchanged'] || this['_leftStick']['x'] === _0x370687['x'] && this['_leftStick']['y'] === _0x370687['y'] || this['_onleftstickchanged'](_0x370687), this['_leftStick'] = _0x370687; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1f77c2['prototype'], 'rightStick', { 'get': function() { return this['_rightStick']; }, 'set': function(_0x34b393) { !this['_onrightstickchanged'] || this['_rightStick']['x'] === _0x34b393['x'] && this['_rightStick']['y'] === _0x34b393['y'] || this['_onrightstickchanged'](_0x34b393), this['_rightStick'] = _0x34b393; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1f77c2['prototype']['update'] = function() { this['_leftStick'] && (this['leftStick'] = { 'x': this['browserGamepad']['axes'][this['_leftStickAxisX']], 'y': this['browserGamepad']['axes'][this['_leftStickAxisY']] }, this['_invertLeftStickY'] && (this['leftStick']['y'] *= -0x1)), this['_rightStick'] && (this['rightStick'] = { 'x': this['browserGamepad']['axes'][this['_rightStickAxisX']], 'y': this['browserGamepad']['axes'][this['_rightStickAxisY']] }); } , _0x1f77c2['prototype']['dispose'] = function() {} , _0x1f77c2['GAMEPAD'] = 0x0, _0x1f77c2['GENERIC'] = 0x1, _0x1f77c2['XBOX'] = 0x2, _0x1f77c2['POSE_ENABLED'] = 0x3, _0x1f77c2; }() , _0x3f456f = function(_0xade2d8) { function _0x4fd210(_0x308de4, _0x373e1a, _0x213f66) { var _0x4f8eec = _0xade2d8['call'](this, _0x308de4, _0x373e1a, _0x213f66) || this; return _0x4f8eec['onButtonDownObservable'] = new _0x2dbec2['c'](), _0x4f8eec['onButtonUpObservable'] = new _0x2dbec2['c'](), _0x4f8eec['type'] = _0x591e86['GENERIC'], _0x4f8eec['_buttons'] = new Array(_0x213f66['buttons']['length']), _0x4f8eec; } return _0x420e5b['d'](_0x4fd210, _0xade2d8), _0x4fd210['prototype']['onbuttondown'] = function(_0x1518c1) { this['_onbuttondown'] = _0x1518c1; } , _0x4fd210['prototype']['onbuttonup'] = function(_0xb8137d) { this['_onbuttonup'] = _0xb8137d; } , _0x4fd210['prototype']['_setButtonValue'] = function(_0x1b64fc, _0x51858d, _0x30ceff) { return _0x1b64fc !== _0x51858d && (0x1 === _0x1b64fc && (this['_onbuttondown'] && this['_onbuttondown'](_0x30ceff), this['onButtonDownObservable']['notifyObservers'](_0x30ceff)), 0x0 === _0x1b64fc && (this['_onbuttonup'] && this['_onbuttonup'](_0x30ceff), this['onButtonUpObservable']['notifyObservers'](_0x30ceff))), _0x1b64fc; } , _0x4fd210['prototype']['update'] = function() { _0xade2d8['prototype']['update']['call'](this); for (var _0x18b517 = 0x0; _0x18b517 < this['_buttons']['length']; _0x18b517++) this['_buttons'][_0x18b517] = this['_setButtonValue'](this['browserGamepad']['buttons'][_0x18b517]['value'], this['_buttons'][_0x18b517], _0x18b517); } , _0x4fd210['prototype']['dispose'] = function() { _0xade2d8['prototype']['dispose']['call'](this), this['onButtonDownObservable']['clear'](), this['onButtonUpObservable']['clear'](); } , _0x4fd210; }(_0x591e86) , _0x2b16b8 = function() { function _0x4fc49d() { this['gamepadRotationSensibility'] = 0x50, this['gamepadMoveSensibility'] = 0x28; } return _0x4fc49d['prototype']['attachControl'] = function(_0x1d0a3f, _0x54c7d1) { var _0x250ead = this , _0x137814 = this['camera']['getScene']()['gamepadManager']; this['_onGamepadConnectedObserver'] = _0x137814['onGamepadConnectedObservable']['add'](function(_0x48ddff) { _0x48ddff['type'] !== _0x591e86['POSE_ENABLED'] && (_0x250ead['gamepad'] && _0x48ddff['type'] !== _0x591e86['XBOX'] || (_0x250ead['gamepad'] = _0x48ddff)); }), this['_onGamepadDisconnectedObserver'] = _0x137814['onGamepadDisconnectedObservable']['add'](function(_0x2e50c9) { _0x250ead['gamepad'] === _0x2e50c9 && (_0x250ead['gamepad'] = null); }), this['gamepad'] = _0x137814['getGamepadByType'](_0x591e86['XBOX']); } , _0x4fc49d['prototype']['detachControl'] = function(_0x27b35e) { this['camera']['getScene']()['gamepadManager']['onGamepadConnectedObservable']['remove'](this['_onGamepadConnectedObserver']), this['camera']['getScene']()['gamepadManager']['onGamepadDisconnectedObservable']['remove'](this['_onGamepadDisconnectedObserver']), this['gamepad'] = null; } , _0x4fc49d['prototype']['checkInputs'] = function() { if (this['gamepad']) { var _0x111e38 = this['camera'] , _0x2a8282 = this['gamepad']['rightStick']; if (_0x2a8282) { if (0x0 != _0x2a8282['x']) { var _0x4b312e = _0x2a8282['x'] / this['gamepadRotationSensibility']; 0x0 != _0x4b312e && Math['abs'](_0x4b312e) > 0.005 && (_0x111e38['inertialAlphaOffset'] += _0x4b312e); } if (0x0 != _0x2a8282['y']) { var _0x586309 = _0x2a8282['y'] / this['gamepadRotationSensibility']; 0x0 != _0x586309 && Math['abs'](_0x586309) > 0.005 && (_0x111e38['inertialBetaOffset'] += _0x586309); } } var _0x4eb659 = this['gamepad']['leftStick']; if (_0x4eb659 && 0x0 != _0x4eb659['y']) { var _0x42357c = _0x4eb659['y'] / this['gamepadMoveSensibility']; 0x0 != _0x42357c && Math['abs'](_0x42357c) > 0.005 && (this['camera']['inertialRadiusOffset'] -= _0x42357c); } } } , _0x4fc49d['prototype']['getClassName'] = function() { return 'ArcRotateCameraGamepadInput'; } , _0x4fc49d['prototype']['getSimpleName'] = function() { return 'gamepad'; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4fc49d['prototype'], 'gamepadRotationSensibility', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4fc49d['prototype'], 'gamepadMoveSensibility', void 0x0), _0x4fc49d; }(); _0x11fe9a['ArcRotateCameraGamepadInput'] = _0x2b16b8; var _0x2698e8 = _0x59bd00(0x33) , _0x2ef150 = function() { function _0x3c81d0() { this['keysUp'] = [0x26], this['keysDown'] = [0x28], this['keysLeft'] = [0x25], this['keysRight'] = [0x27], this['keysReset'] = [0xdc], this['panningSensibility'] = 0x32, this['zoomingSensibility'] = 0x19, this['useAltToZoom'] = !0x0, this['angularSpeed'] = 0.01, this['_keys'] = new Array(); } return _0x3c81d0['prototype']['attachControl'] = function(_0x410b96, _0x81d09c) { var _0x3c46d4 = this; this['_onCanvasBlurObserver'] || (this['_scene'] = this['camera']['getScene'](), this['_engine'] = this['_scene']['getEngine'](), this['_onCanvasBlurObserver'] = this['_engine']['onCanvasBlurObservable']['add'](function() { _0x3c46d4['_keys'] = []; }), this['_onKeyboardObserver'] = this['_scene']['onKeyboardObservable']['add'](function(_0x951ede) { var _0x253765, _0x3ae085 = _0x951ede['event']; _0x3ae085['metaKey'] || (_0x951ede['type'] === _0x2698e8['a']['KEYDOWN'] ? (_0x3c46d4['_ctrlPressed'] = _0x3ae085['ctrlKey'], _0x3c46d4['_altPressed'] = _0x3ae085['altKey'], (-0x1 !== _0x3c46d4['keysUp']['indexOf'](_0x3ae085['keyCode']) || -0x1 !== _0x3c46d4['keysDown']['indexOf'](_0x3ae085['keyCode']) || -0x1 !== _0x3c46d4['keysLeft']['indexOf'](_0x3ae085['keyCode']) || -0x1 !== _0x3c46d4['keysRight']['indexOf'](_0x3ae085['keyCode']) || -0x1 !== _0x3c46d4['keysReset']['indexOf'](_0x3ae085['keyCode'])) && (-0x1 === (_0x253765 = _0x3c46d4['_keys']['indexOf'](_0x3ae085['keyCode'])) && _0x3c46d4['_keys']['push'](_0x3ae085['keyCode']), _0x3ae085['preventDefault'] && (_0x81d09c || _0x3ae085['preventDefault']()))) : -0x1 === _0x3c46d4['keysUp']['indexOf'](_0x3ae085['keyCode']) && -0x1 === _0x3c46d4['keysDown']['indexOf'](_0x3ae085['keyCode']) && -0x1 === _0x3c46d4['keysLeft']['indexOf'](_0x3ae085['keyCode']) && -0x1 === _0x3c46d4['keysRight']['indexOf'](_0x3ae085['keyCode']) && -0x1 === _0x3c46d4['keysReset']['indexOf'](_0x3ae085['keyCode']) || ((_0x253765 = _0x3c46d4['_keys']['indexOf'](_0x3ae085['keyCode'])) >= 0x0 && _0x3c46d4['_keys']['splice'](_0x253765, 0x1), _0x3ae085['preventDefault'] && (_0x81d09c || _0x3ae085['preventDefault']()))); })); } , _0x3c81d0['prototype']['detachControl'] = function(_0x5da6e5) { this['_scene'] && (this['_onKeyboardObserver'] && this['_scene']['onKeyboardObservable']['remove'](this['_onKeyboardObserver']), this['_onCanvasBlurObserver'] && this['_engine']['onCanvasBlurObservable']['remove'](this['_onCanvasBlurObserver']), this['_onKeyboardObserver'] = null, this['_onCanvasBlurObserver'] = null), this['_keys'] = []; } , _0x3c81d0['prototype']['checkInputs'] = function() { if (this['_onKeyboardObserver']) for (var _0x4f039e = this['camera'], _0x275ffc = 0x0; _0x275ffc < this['_keys']['length']; _0x275ffc++) { var _0x9406ad = this['_keys'][_0x275ffc]; -0x1 !== this['keysLeft']['indexOf'](_0x9406ad) ? this['_ctrlPressed'] && this['camera']['_useCtrlForPanning'] ? _0x4f039e['inertialPanningX'] -= 0x1 / this['panningSensibility'] : _0x4f039e['inertialAlphaOffset'] -= this['angularSpeed'] : -0x1 !== this['keysUp']['indexOf'](_0x9406ad) ? this['_ctrlPressed'] && this['camera']['_useCtrlForPanning'] ? _0x4f039e['inertialPanningY'] += 0x1 / this['panningSensibility'] : this['_altPressed'] && this['useAltToZoom'] ? _0x4f039e['inertialRadiusOffset'] += 0x1 / this['zoomingSensibility'] : _0x4f039e['inertialBetaOffset'] -= this['angularSpeed'] : -0x1 !== this['keysRight']['indexOf'](_0x9406ad) ? this['_ctrlPressed'] && this['camera']['_useCtrlForPanning'] ? _0x4f039e['inertialPanningX'] += 0x1 / this['panningSensibility'] : _0x4f039e['inertialAlphaOffset'] += this['angularSpeed'] : -0x1 !== this['keysDown']['indexOf'](_0x9406ad) ? this['_ctrlPressed'] && this['camera']['_useCtrlForPanning'] ? _0x4f039e['inertialPanningY'] -= 0x1 / this['panningSensibility'] : this['_altPressed'] && this['useAltToZoom'] ? _0x4f039e['inertialRadiusOffset'] -= 0x1 / this['zoomingSensibility'] : _0x4f039e['inertialBetaOffset'] += this['angularSpeed'] : -0x1 !== this['keysReset']['indexOf'](_0x9406ad) && _0x4f039e['useInputToRestoreState'] && _0x4f039e['restoreState'](); } } , _0x3c81d0['prototype']['getClassName'] = function() { return 'ArcRotateCameraKeyboardMoveInput'; } , _0x3c81d0['prototype']['getSimpleName'] = function() { return 'keyboard'; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x3c81d0['prototype'], 'keysUp', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x3c81d0['prototype'], 'keysDown', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x3c81d0['prototype'], 'keysLeft', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x3c81d0['prototype'], 'keysRight', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x3c81d0['prototype'], 'keysReset', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x3c81d0['prototype'], 'panningSensibility', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x3c81d0['prototype'], 'zoomingSensibility', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x3c81d0['prototype'], 'useAltToZoom', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x3c81d0['prototype'], 'angularSpeed', void 0x0), _0x3c81d0; }(); _0x11fe9a['ArcRotateCameraKeyboardMoveInput'] = _0x2ef150; var _0x519be4 = function() { function _0x5dc1c8() { this['wheelPrecision'] = 0x3, this['wheelDeltaPercentage'] = 0x0; } return _0x5dc1c8['prototype']['computeDeltaFromMouseWheelLegacyEvent'] = function(_0x1eb33c, _0x3888da) { var _0x14f6c0 = 0.01 * _0x1eb33c['wheelDelta'] * this['wheelDeltaPercentage'] * _0x3888da; return _0x1eb33c['wheelDelta'] > 0x0 ? _0x14f6c0 / (0x1 + this['wheelDeltaPercentage']) : _0x14f6c0 * (0x1 + this['wheelDeltaPercentage']); } , _0x5dc1c8['prototype']['attachControl'] = function(_0x4d664b, _0x88ff5c) { var _0x2703cf = this; this['_wheel'] = function(_0x2162c2, _0x47d0c5) { if (_0x2162c2['type'] === _0xee889b['a']['POINTERWHEEL']) { var _0x25a585 = _0x2162c2['event'] , _0x2cbb21 = 0x0 , _0x9fd81f = _0x25a585; if (_0x9fd81f['wheelDelta']) if (_0x2703cf['wheelDeltaPercentage']) { if ((_0x2cbb21 = _0x2703cf['computeDeltaFromMouseWheelLegacyEvent'](_0x9fd81f, _0x2703cf['camera']['radius'])) > 0x0) { for (var _0x19f871 = _0x2703cf['camera']['radius'], _0x3b93d7 = _0x2703cf['camera']['inertialRadiusOffset'] + _0x2cbb21, _0x25fd99 = 0x0; _0x25fd99 < 0x14 && Math['abs'](_0x3b93d7) > 0.001; _0x25fd99++) _0x19f871 -= _0x3b93d7, _0x3b93d7 *= _0x2703cf['camera']['inertia']; _0x19f871 = _0x77cead['a']['Clamp'](_0x19f871, 0x0, Number['MAX_VALUE']), _0x2cbb21 = _0x2703cf['computeDeltaFromMouseWheelLegacyEvent'](_0x9fd81f, _0x19f871); } } else _0x2cbb21 = _0x9fd81f['wheelDelta'] / (0x28 * _0x2703cf['wheelPrecision']); else _0x2cbb21 = -(_0x25a585['deltaY'] || _0x25a585['detail']) / _0x2703cf['wheelPrecision']; _0x2cbb21 && (_0x2703cf['camera']['inertialRadiusOffset'] += _0x2cbb21), _0x25a585['preventDefault'] && (_0x88ff5c || _0x25a585['preventDefault']()); } } , this['_observer'] = this['camera']['getScene']()['onPointerObservable']['add'](this['_wheel'], _0xee889b['a']['POINTERWHEEL']); } , _0x5dc1c8['prototype']['detachControl'] = function(_0x3e46eb) { this['_observer'] && _0x3e46eb && (this['camera']['getScene']()['onPointerObservable']['remove'](this['_observer']), this['_observer'] = null, this['_wheel'] = null); } , _0x5dc1c8['prototype']['getClassName'] = function() { return 'ArcRotateCameraMouseWheelInput'; } , _0x5dc1c8['prototype']['getSimpleName'] = function() { return 'mousewheel'; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x5dc1c8['prototype'], 'wheelPrecision', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x5dc1c8['prototype'], 'wheelDeltaPercentage', void 0x0), _0x5dc1c8; }(); _0x11fe9a['ArcRotateCameraMouseWheelInput'] = _0x519be4; var _0x2dbe0c = function() { function _0x56e900() { this['buttons'] = [0x0, 0x1, 0x2]; } return _0x56e900['prototype']['attachControl'] = function(_0x185a9e, _0x19421a) { var _0x23b7ec = this , _0x27e7fd = this['camera']['getEngine']() , _0x4f70da = 0x0 , _0x259da1 = null; this['pointA'] = null, this['pointB'] = null, this['_altKey'] = !0x1, this['_ctrlKey'] = !0x1, this['_metaKey'] = !0x1, this['_shiftKey'] = !0x1, this['_buttonsPressed'] = 0x0, this['_pointerInput'] = function(_0x479a4c, _0x2e8a9d) { var _0x126d80 = _0x479a4c['event'] , _0x30bebc = 'touch' === _0x126d80['pointerType']; if (!_0x27e7fd['isInVRExclusivePointerMode'] && (_0x479a4c['type'] === _0xee889b['a']['POINTERMOVE'] || -0x1 !== _0x23b7ec['buttons']['indexOf'](_0x126d80['button']))) { var _0x37af53 = _0x126d80['srcElement'] || _0x126d80['target']; if (_0x23b7ec['_altKey'] = _0x126d80['altKey'], _0x23b7ec['_ctrlKey'] = _0x126d80['ctrlKey'], _0x23b7ec['_metaKey'] = _0x126d80['metaKey'], _0x23b7ec['_shiftKey'] = _0x126d80['shiftKey'], _0x23b7ec['_buttonsPressed'] = _0x126d80['buttons'], _0x27e7fd['isPointerLock']) { var _0x134c61 = _0x126d80['movementX'] || _0x126d80['mozMovementX'] || _0x126d80['webkitMovementX'] || _0x126d80['msMovementX'] || 0x0 , _0x14bf98 = _0x126d80['movementY'] || _0x126d80['mozMovementY'] || _0x126d80['webkitMovementY'] || _0x126d80['msMovementY'] || 0x0; _0x23b7ec['onTouch'](null, _0x134c61, _0x14bf98), _0x23b7ec['pointA'] = null, _0x23b7ec['pointB'] = null; } else if (_0x479a4c['type'] === _0xee889b['a']['POINTERDOWN'] && _0x37af53) { try { _0x37af53['setPointerCapture'](_0x126d80['pointerId']); } catch (_0x277da2) {} null === _0x23b7ec['pointA'] ? _0x23b7ec['pointA'] = { 'x': _0x126d80['clientX'], 'y': _0x126d80['clientY'], 'pointerId': _0x126d80['pointerId'], 'type': _0x126d80['pointerType'] } : null === _0x23b7ec['pointB'] && (_0x23b7ec['pointB'] = { 'x': _0x126d80['clientX'], 'y': _0x126d80['clientY'], 'pointerId': _0x126d80['pointerId'], 'type': _0x126d80['pointerType'] }), _0x23b7ec['onButtonDown'](_0x126d80), _0x19421a || (_0x126d80['preventDefault'](), _0x185a9e['focus']()); } else if (_0x479a4c['type'] === _0xee889b['a']['POINTERDOUBLETAP']) _0x23b7ec['onDoubleTap'](_0x126d80['pointerType']); else if (_0x479a4c['type'] === _0xee889b['a']['POINTERUP'] && _0x37af53) { try { _0x37af53['releasePointerCapture'](_0x126d80['pointerId']); } catch (_0x502fa3) {} _0x30bebc || (_0x23b7ec['pointB'] = null), _0x27e7fd['_badOS'] ? _0x23b7ec['pointA'] = _0x23b7ec['pointB'] = null : _0x23b7ec['pointB'] && _0x23b7ec['pointA'] && _0x23b7ec['pointA']['pointerId'] == _0x126d80['pointerId'] ? (_0x23b7ec['pointA'] = _0x23b7ec['pointB'], _0x23b7ec['pointB'] = null) : _0x23b7ec['pointA'] && _0x23b7ec['pointB'] && _0x23b7ec['pointB']['pointerId'] == _0x126d80['pointerId'] ? _0x23b7ec['pointB'] = null : _0x23b7ec['pointA'] = _0x23b7ec['pointB'] = null, (0x0 !== _0x4f70da || _0x259da1) && (_0x23b7ec['onMultiTouch'](_0x23b7ec['pointA'], _0x23b7ec['pointB'], _0x4f70da, 0x0, _0x259da1, null), _0x4f70da = 0x0, _0x259da1 = null), _0x23b7ec['onButtonUp'](_0x126d80), _0x19421a || _0x126d80['preventDefault'](); } else if (_0x479a4c['type'] === _0xee889b['a']['POINTERMOVE']) if (_0x19421a || _0x126d80['preventDefault'](), _0x23b7ec['pointA'] && null === _0x23b7ec['pointB']) { _0x134c61 = _0x126d80['clientX'] - _0x23b7ec['pointA']['x'], _0x14bf98 = _0x126d80['clientY'] - _0x23b7ec['pointA']['y']; _0x23b7ec['onTouch'](_0x23b7ec['pointA'], _0x134c61, _0x14bf98), _0x23b7ec['pointA']['x'] = _0x126d80['clientX'], _0x23b7ec['pointA']['y'] = _0x126d80['clientY']; } else if (_0x23b7ec['pointA'] && _0x23b7ec['pointB']) { var _0x246af0 = _0x23b7ec['pointA']['pointerId'] === _0x126d80['pointerId'] ? _0x23b7ec['pointA'] : _0x23b7ec['pointB']; _0x246af0['x'] = _0x126d80['clientX'], _0x246af0['y'] = _0x126d80['clientY']; var _0x43eac5 = _0x23b7ec['pointA']['x'] - _0x23b7ec['pointB']['x'] , _0x160ad4 = _0x23b7ec['pointA']['y'] - _0x23b7ec['pointB']['y'] , _0x5f0aec = _0x43eac5 * _0x43eac5 + _0x160ad4 * _0x160ad4 , _0x59dc24 = { 'x': (_0x23b7ec['pointA']['x'] + _0x23b7ec['pointB']['x']) / 0x2, 'y': (_0x23b7ec['pointA']['y'] + _0x23b7ec['pointB']['y']) / 0x2, 'pointerId': _0x126d80['pointerId'], 'type': _0x479a4c['type'] }; _0x23b7ec['onMultiTouch'](_0x23b7ec['pointA'], _0x23b7ec['pointB'], _0x4f70da, _0x5f0aec, _0x259da1, _0x59dc24), _0x259da1 = _0x59dc24, _0x4f70da = _0x5f0aec; } } } , this['_observer'] = this['camera']['getScene']()['onPointerObservable']['add'](this['_pointerInput'], _0xee889b['a']['POINTERDOWN'] | _0xee889b['a']['POINTERUP'] | _0xee889b['a']['POINTERMOVE']), this['_onLostFocus'] = function() { _0x23b7ec['pointA'] = _0x23b7ec['pointB'] = null, _0x4f70da = 0x0, _0x259da1 = null, _0x23b7ec['onLostFocus'](); } , _0x185a9e['addEventListener']('contextmenu', this['onContextMenu']['bind'](this), !0x1), _0x1eb50e['h']['RegisterTopRootEvents']([{ 'name': 'blur', 'handler': this['_onLostFocus'] }]); } , _0x56e900['prototype']['detachControl'] = function(_0x5a762c) { this['_onLostFocus'] && _0x1eb50e['h']['UnregisterTopRootEvents']([{ 'name': 'blur', 'handler': this['_onLostFocus'] }]), _0x5a762c && this['_observer'] && (this['camera']['getScene']()['onPointerObservable']['remove'](this['_observer']), this['_observer'] = null, this['onContextMenu'] && _0x5a762c['removeEventListener']('contextmenu', this['onContextMenu']), this['_onLostFocus'] = null), this['_altKey'] = !0x1, this['_ctrlKey'] = !0x1, this['_metaKey'] = !0x1, this['_shiftKey'] = !0x1, this['_buttonsPressed'] = 0x0; } , _0x56e900['prototype']['getClassName'] = function() { return 'BaseCameraPointersInput'; } , _0x56e900['prototype']['getSimpleName'] = function() { return 'pointers'; } , _0x56e900['prototype']['onDoubleTap'] = function(_0x55005a) {} , _0x56e900['prototype']['onTouch'] = function(_0x40d865, _0x126ef1, _0x251775) {} , _0x56e900['prototype']['onMultiTouch'] = function(_0x15325b, _0x4cd797, _0x3f350d, _0x43cb1d, _0x537d40, _0x5edd4e) {} , _0x56e900['prototype']['onContextMenu'] = function(_0x224855) { _0x224855['preventDefault'](); } , _0x56e900['prototype']['onButtonDown'] = function(_0x471b5c) {} , _0x56e900['prototype']['onButtonUp'] = function(_0x3b63c8) {} , _0x56e900['prototype']['onLostFocus'] = function() {} , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x56e900['prototype'], 'buttons', void 0x0), _0x56e900; }() , _0x311bdc = function(_0x3230e9) { function _0x1ecc97() { var _0x4e0b9c = null !== _0x3230e9 && _0x3230e9['apply'](this, arguments) || this; return _0x4e0b9c['buttons'] = [0x0, 0x1, 0x2], _0x4e0b9c['angularSensibilityX'] = 0x3e8, _0x4e0b9c['angularSensibilityY'] = 0x3e8, _0x4e0b9c['pinchPrecision'] = 0xc, _0x4e0b9c['pinchDeltaPercentage'] = 0x0, _0x4e0b9c['panningSensibility'] = 0x3e8, _0x4e0b9c['multiTouchPanning'] = !0x0, _0x4e0b9c['multiTouchPanAndZoom'] = !0x0, _0x4e0b9c['pinchInwards'] = !0x0, _0x4e0b9c['_isPanClick'] = !0x1, _0x4e0b9c['_twoFingerActivityCount'] = 0x0, _0x4e0b9c['_isPinching'] = !0x1, _0x4e0b9c; } return _0x420e5b['d'](_0x1ecc97, _0x3230e9), _0x1ecc97['prototype']['getClassName'] = function() { return 'ArcRotateCameraPointersInput'; } , _0x1ecc97['prototype']['onTouch'] = function(_0x4385bb, _0x5b599c, _0x456fbe) { 0x0 !== this['panningSensibility'] && (this['_ctrlKey'] && this['camera']['_useCtrlForPanning'] || this['_isPanClick']) ? (this['camera']['inertialPanningX'] += -_0x5b599c / this['panningSensibility'], this['camera']['inertialPanningY'] += _0x456fbe / this['panningSensibility']) : (this['camera']['inertialAlphaOffset'] -= _0x5b599c / this['angularSensibilityX'], this['camera']['inertialBetaOffset'] -= _0x456fbe / this['angularSensibilityY']); } , _0x1ecc97['prototype']['onDoubleTap'] = function(_0x403918) { this['camera']['useInputToRestoreState'] && this['camera']['restoreState'](); } , _0x1ecc97['prototype']['onMultiTouch'] = function(_0x3e66ce, _0x24aa2b, _0x3bd359, _0x2512eb, _0x3d0139, _0x46ea5c) { if (!(0x0 === _0x3bd359 && null === _0x3d0139 || 0x0 === _0x2512eb && null === _0x46ea5c)) { var _0x4bfc79 = this['pinchInwards'] ? 0x1 : -0x1; if (this['multiTouchPanAndZoom']) { if (this['pinchDeltaPercentage'] ? this['camera']['inertialRadiusOffset'] += 0.001 * (_0x2512eb - _0x3bd359) * this['camera']['radius'] * this['pinchDeltaPercentage'] : this['camera']['inertialRadiusOffset'] += (_0x2512eb - _0x3bd359) / (this['pinchPrecision'] * _0x4bfc79 * (this['angularSensibilityX'] + this['angularSensibilityY']) / 0x2), 0x0 !== this['panningSensibility'] && _0x3d0139 && _0x46ea5c) { var _0x215272 = _0x46ea5c['x'] - _0x3d0139['x'] , _0x530b10 = _0x46ea5c['y'] - _0x3d0139['y']; this['camera']['inertialPanningX'] += -_0x215272 / this['panningSensibility'], this['camera']['inertialPanningY'] += _0x530b10 / this['panningSensibility']; } } else { this['_twoFingerActivityCount']++; var _0x432949 = Math['sqrt'](_0x3bd359) , _0x652ab2 = Math['sqrt'](_0x2512eb); if (this['_isPinching'] || this['_twoFingerActivityCount'] < 0x14 && Math['abs'](_0x652ab2 - _0x432949) > this['camera']['pinchToPanMaxDistance']) this['pinchDeltaPercentage'] ? this['camera']['inertialRadiusOffset'] += 0.001 * (_0x2512eb - _0x3bd359) * this['camera']['radius'] * this['pinchDeltaPercentage'] : this['camera']['inertialRadiusOffset'] += (_0x2512eb - _0x3bd359) / (this['pinchPrecision'] * _0x4bfc79 * (this['angularSensibilityX'] + this['angularSensibilityY']) / 0x2), this['_isPinching'] = !0x0; else if (0x0 !== this['panningSensibility'] && this['multiTouchPanning'] && _0x46ea5c && _0x3d0139) { _0x215272 = _0x46ea5c['x'] - _0x3d0139['x'], _0x530b10 = _0x46ea5c['y'] - _0x3d0139['y']; this['camera']['inertialPanningX'] += -_0x215272 / this['panningSensibility'], this['camera']['inertialPanningY'] += _0x530b10 / this['panningSensibility']; } } } } , _0x1ecc97['prototype']['onButtonDown'] = function(_0x31a669) { this['_isPanClick'] = _0x31a669['button'] === this['camera']['_panningMouseButton']; } , _0x1ecc97['prototype']['onButtonUp'] = function(_0x4f86a5) { this['_twoFingerActivityCount'] = 0x0, this['_isPinching'] = !0x1; } , _0x1ecc97['prototype']['onLostFocus'] = function() { this['_isPanClick'] = !0x1, this['_twoFingerActivityCount'] = 0x0, this['_isPinching'] = !0x1; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1ecc97['prototype'], 'buttons', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1ecc97['prototype'], 'angularSensibilityX', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1ecc97['prototype'], 'angularSensibilityY', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1ecc97['prototype'], 'pinchPrecision', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1ecc97['prototype'], 'pinchDeltaPercentage', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1ecc97['prototype'], 'panningSensibility', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1ecc97['prototype'], 'multiTouchPanning', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1ecc97['prototype'], 'multiTouchPanAndZoom', void 0x0), _0x1ecc97; }(_0x2dbe0c); _0x11fe9a['ArcRotateCameraPointersInput'] = _0x311bdc; var _0x13f537 = function(_0x102d19) { function _0x37d729(_0x28b4cb) { return _0x102d19['call'](this, _0x28b4cb) || this; } return _0x420e5b['d'](_0x37d729, _0x102d19), _0x37d729['prototype']['addMouseWheel'] = function() { return this['add'](new _0x519be4()), this; } , _0x37d729['prototype']['addPointers'] = function() { return this['add'](new _0x311bdc()), this; } , _0x37d729['prototype']['addKeyboard'] = function() { return this['add'](new _0x2ef150()), this; } , _0x37d729; }(_0x21d8d9); _0x13f537['prototype']['addVRDeviceOrientation'] = function() { return this['add'](new _0x2d8698()), this; } ; var _0x2d8698 = function() { function _0x36a987() { this['alphaCorrection'] = 0x1, this['gammaCorrection'] = 0x1, this['_alpha'] = 0x0, this['_gamma'] = 0x0, this['_dirty'] = !0x1, this['_deviceOrientationHandler'] = this['_onOrientationEvent']['bind'](this); } return _0x36a987['prototype']['attachControl'] = function(_0x5958a0, _0x1479be) { this['camera']['attachControl'](_0x5958a0, _0x1479be), window['addEventListener']('deviceorientation', this['_deviceOrientationHandler']); } , _0x36a987['prototype']['_onOrientationEvent'] = function(_0x17ad0b) { null !== _0x17ad0b['alpha'] && (this['_alpha'] = (0x0 | +_0x17ad0b['alpha']) * this['alphaCorrection']), null !== _0x17ad0b['gamma'] && (this['_gamma'] = (0x0 | +_0x17ad0b['gamma']) * this['gammaCorrection']), this['_dirty'] = !0x0; } , _0x36a987['prototype']['checkInputs'] = function() { this['_dirty'] && (this['_dirty'] = !0x1, this['_gamma'] < 0x0 && (this['_gamma'] = 0xb4 + this['_gamma']), this['camera']['alpha'] = -this['_alpha'] / 0xb4 * Math['PI'] % Math['PI'] * 0x2, this['camera']['beta'] = this['_gamma'] / 0xb4 * Math['PI']); } , _0x36a987['prototype']['detachControl'] = function(_0x5f4205) { window['removeEventListener']('deviceorientation', this['_deviceOrientationHandler']); } , _0x36a987['prototype']['getClassName'] = function() { return 'ArcRotateCameraVRDeviceOrientationInput'; } , _0x36a987['prototype']['getSimpleName'] = function() { return 'VRDeviceOrientation'; } , _0x36a987; }(); _0x11fe9a['ArcRotateCameraVRDeviceOrientationInput'] = _0x2d8698; var _0x1d5ddb = function() { function _0x840f78() { this['keysForward'] = [0x57], this['keysBackward'] = [0x53], this['keysUp'] = [0x45], this['keysDown'] = [0x51], this['keysRight'] = [0x44], this['keysLeft'] = [0x41], this['_keys'] = new Array(); } return _0x840f78['prototype']['attachControl'] = function(_0x21ad82, _0x199083) { var _0x35b4f2 = this; this['_onCanvasBlurObserver'] || (this['_scene'] = this['camera']['getScene'](), this['_engine'] = this['_scene']['getEngine'](), this['_onCanvasBlurObserver'] = this['_engine']['onCanvasBlurObservable']['add'](function() { _0x35b4f2['_keys'] = []; }), this['_onKeyboardObserver'] = this['_scene']['onKeyboardObservable']['add'](function(_0x14f567) { var _0x49d1aa, _0x7f3a1 = _0x14f567['event']; _0x14f567['type'] === _0x2698e8['a']['KEYDOWN'] ? -0x1 === _0x35b4f2['keysForward']['indexOf'](_0x7f3a1['keyCode']) && -0x1 === _0x35b4f2['keysBackward']['indexOf'](_0x7f3a1['keyCode']) && -0x1 === _0x35b4f2['keysUp']['indexOf'](_0x7f3a1['keyCode']) && -0x1 === _0x35b4f2['keysDown']['indexOf'](_0x7f3a1['keyCode']) && -0x1 === _0x35b4f2['keysLeft']['indexOf'](_0x7f3a1['keyCode']) && -0x1 === _0x35b4f2['keysRight']['indexOf'](_0x7f3a1['keyCode']) || (-0x1 === (_0x49d1aa = _0x35b4f2['_keys']['indexOf'](_0x7f3a1['keyCode'])) && _0x35b4f2['_keys']['push'](_0x7f3a1['keyCode']), _0x199083 || _0x7f3a1['preventDefault']()) : -0x1 === _0x35b4f2['keysForward']['indexOf'](_0x7f3a1['keyCode']) && -0x1 === _0x35b4f2['keysBackward']['indexOf'](_0x7f3a1['keyCode']) && -0x1 === _0x35b4f2['keysUp']['indexOf'](_0x7f3a1['keyCode']) && -0x1 === _0x35b4f2['keysDown']['indexOf'](_0x7f3a1['keyCode']) && -0x1 === _0x35b4f2['keysLeft']['indexOf'](_0x7f3a1['keyCode']) && -0x1 === _0x35b4f2['keysRight']['indexOf'](_0x7f3a1['keyCode']) || ((_0x49d1aa = _0x35b4f2['_keys']['indexOf'](_0x7f3a1['keyCode'])) >= 0x0 && _0x35b4f2['_keys']['splice'](_0x49d1aa, 0x1), _0x199083 || _0x7f3a1['preventDefault']()); })); } , _0x840f78['prototype']['detachControl'] = function(_0x131663) { this['_scene'] && (this['_onKeyboardObserver'] && this['_scene']['onKeyboardObservable']['remove'](this['_onKeyboardObserver']), this['_onCanvasBlurObserver'] && this['_engine']['onCanvasBlurObservable']['remove'](this['_onCanvasBlurObserver']), this['_onKeyboardObserver'] = null, this['_onCanvasBlurObserver'] = null), this['_keys'] = []; } , _0x840f78['prototype']['getClassName'] = function() { return 'FlyCameraKeyboardInput'; } , _0x840f78['prototype']['_onLostFocus'] = function(_0x25f1d2) { this['_keys'] = []; } , _0x840f78['prototype']['getSimpleName'] = function() { return 'keyboard'; } , _0x840f78['prototype']['checkInputs'] = function() { if (this['_onKeyboardObserver']) for (var _0x3fd180 = this['camera'], _0x7550aa = 0x0; _0x7550aa < this['_keys']['length']; _0x7550aa++) { var _0x454d81 = this['_keys'][_0x7550aa] , _0x256570 = _0x3fd180['_computeLocalCameraSpeed'](); -0x1 !== this['keysForward']['indexOf'](_0x454d81) ? _0x3fd180['_localDirection']['copyFromFloats'](0x0, 0x0, _0x256570) : -0x1 !== this['keysBackward']['indexOf'](_0x454d81) ? _0x3fd180['_localDirection']['copyFromFloats'](0x0, 0x0, -_0x256570) : -0x1 !== this['keysUp']['indexOf'](_0x454d81) ? _0x3fd180['_localDirection']['copyFromFloats'](0x0, _0x256570, 0x0) : -0x1 !== this['keysDown']['indexOf'](_0x454d81) ? _0x3fd180['_localDirection']['copyFromFloats'](0x0, -_0x256570, 0x0) : -0x1 !== this['keysRight']['indexOf'](_0x454d81) ? _0x3fd180['_localDirection']['copyFromFloats'](_0x256570, 0x0, 0x0) : -0x1 !== this['keysLeft']['indexOf'](_0x454d81) && _0x3fd180['_localDirection']['copyFromFloats'](-_0x256570, 0x0, 0x0), _0x3fd180['getScene']()['useRightHandedSystem'] && (_0x3fd180['_localDirection']['z'] *= -0x1), _0x3fd180['getViewMatrix']()['invertToRef'](_0x3fd180['_cameraTransformMatrix']), _0x47d24f['x']['TransformNormalToRef'](_0x3fd180['_localDirection'], _0x3fd180['_cameraTransformMatrix'], _0x3fd180['_transformedDirection']), _0x3fd180['cameraDirection']['addInPlace'](_0x3fd180['_transformedDirection']); } } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x840f78['prototype'], 'keysForward', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x840f78['prototype'], 'keysBackward', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x840f78['prototype'], 'keysUp', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x840f78['prototype'], 'keysDown', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x840f78['prototype'], 'keysRight', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x840f78['prototype'], 'keysLeft', void 0x0), _0x840f78; }(); _0x11fe9a['FlyCameraKeyboardInput'] = _0x1d5ddb; var _0xb29847 = function() { function _0x22d78f(_0x1da649) { void 0x0 === _0x1da649 && (_0x1da649 = !0x0), this['buttons'] = [0x0, 0x1, 0x2], this['buttonsYaw'] = [-0x1, 0x0, 0x1], this['buttonsPitch'] = [-0x1, 0x0, 0x1], this['buttonsRoll'] = [0x2], this['activeButton'] = -0x1, this['angularSensibility'] = 0x3e8, this['previousPosition'] = null; } return _0x22d78f['prototype']['attachControl'] = function(_0x15e0f3, _0x2dfa5c) { var _0xdd98e3 = this; this['element'] = _0x15e0f3, this['noPreventDefault'] = _0x2dfa5c, this['_observer'] = this['camera']['getScene']()['onPointerObservable']['add'](function(_0x40fb97, _0x285a37) { _0xdd98e3['_pointerInput'](_0x40fb97, _0x285a37); }, _0xee889b['a']['POINTERDOWN'] | _0xee889b['a']['POINTERUP'] | _0xee889b['a']['POINTERMOVE']), this['_rollObserver'] = this['camera']['getScene']()['onBeforeRenderObservable']['add'](function() { _0xdd98e3['camera']['rollCorrect'] && _0xdd98e3['camera']['restoreRoll'](_0xdd98e3['camera']['rollCorrect']); }), this['_mousemoveCallback'] = function(_0x5d8aac) { _0xdd98e3['_onMouseMove'](_0x5d8aac); } , _0x15e0f3['addEventListener']('mousemove', this['_mousemoveCallback'], !0x1); } , _0x22d78f['prototype']['detachControl'] = function(_0x4a39c1) { this['_observer'] && _0x4a39c1 && (this['camera']['getScene']()['onPointerObservable']['remove'](this['_observer']), this['camera']['getScene']()['onBeforeRenderObservable']['remove'](this['_rollObserver']), this['_mousemoveCallback'] && _0x4a39c1['removeEventListener']('mousemove', this['_mousemoveCallback']), this['_observer'] = null, this['_rollObserver'] = null, this['previousPosition'] = null, this['noPreventDefault'] = void 0x0); } , _0x22d78f['prototype']['getClassName'] = function() { return 'FlyCameraMouseInput'; } , _0x22d78f['prototype']['getSimpleName'] = function() { return 'mouse'; } , _0x22d78f['prototype']['_pointerInput'] = function(_0x1dd4bd, _0x201cba) { var _0x44eb06 = _0x1dd4bd['event'] , _0x41a3e1 = this['camera']['getEngine'](); if (!_0x41a3e1['isInVRExclusivePointerMode'] && (this['touchEnabled'] || 'touch' !== _0x44eb06['pointerType']) && (_0x1dd4bd['type'] === _0xee889b['a']['POINTERMOVE'] || -0x1 !== this['buttons']['indexOf'](_0x44eb06['button']))) { var _0x20aa22 = _0x44eb06['srcElement'] || _0x44eb06['target']; if (_0x1dd4bd['type'] === _0xee889b['a']['POINTERDOWN'] && _0x20aa22) { try { _0x20aa22['setPointerCapture'](_0x44eb06['pointerId']); } catch (_0x3a6f8e) {} this['previousPosition'] = { 'x': _0x44eb06['clientX'], 'y': _0x44eb06['clientY'] }, this['activeButton'] = _0x44eb06['button'], this['noPreventDefault'] || (_0x44eb06['preventDefault'](), this['element']['focus']()); } else if (_0x1dd4bd['type'] === _0xee889b['a']['POINTERUP'] && _0x20aa22) { try { _0x20aa22['releasePointerCapture'](_0x44eb06['pointerId']); } catch (_0x3bcb2e) {} this['activeButton'] = -0x1, this['previousPosition'] = null, this['noPreventDefault'] || _0x44eb06['preventDefault'](); } else if (_0x1dd4bd['type'] === _0xee889b['a']['POINTERMOVE']) { if (!this['previousPosition'] || _0x41a3e1['isPointerLock']) return; var _0x482e4d = _0x44eb06['clientX'] - this['previousPosition']['x'] , _0x2a67e5 = _0x44eb06['clientY'] - this['previousPosition']['y']; this['rotateCamera'](_0x482e4d, _0x2a67e5), this['previousPosition'] = { 'x': _0x44eb06['clientX'], 'y': _0x44eb06['clientY'] }, this['noPreventDefault'] || _0x44eb06['preventDefault'](); } } } , _0x22d78f['prototype']['_onMouseMove'] = function(_0x1e2e22) { var _0xf7f470 = this['camera']['getEngine'](); if (_0xf7f470['isPointerLock'] && !_0xf7f470['isInVRExclusivePointerMode']) { var _0x2851b6 = _0x1e2e22['movementX'] || _0x1e2e22['mozMovementX'] || _0x1e2e22['webkitMovementX'] || _0x1e2e22['msMovementX'] || 0x0 , _0x1d10f6 = _0x1e2e22['movementY'] || _0x1e2e22['mozMovementY'] || _0x1e2e22['webkitMovementY'] || _0x1e2e22['msMovementY'] || 0x0; this['rotateCamera'](_0x2851b6, _0x1d10f6), this['previousPosition'] = null, this['noPreventDefault'] || _0x1e2e22['preventDefault'](); } } , _0x22d78f['prototype']['rotateCamera'] = function(_0x5edf26, _0x5cec39) { var _0x490f5b = this , _0x44ced2 = this['camera']; this['camera']['getScene']()['useRightHandedSystem'] && (_0x5edf26 *= -0x1), _0x44ced2['parent'] && _0x44ced2['parent']['_getWorldMatrixDeterminant']() < 0x0 && (_0x5edf26 *= -0x1); var _0x4579ca, _0x2698f2 = _0x5edf26 / this['angularSensibility'], _0xf4ec9e = _0x5cec39 / this['angularSensibility'], _0x3bf698 = _0x47d24f['q']['RotationYawPitchRoll'](_0x44ced2['rotation']['y'], _0x44ced2['rotation']['x'], _0x44ced2['rotation']['z']); if (this['buttonsPitch']['some'](function(_0x407b37) { return _0x407b37 === _0x490f5b['activeButton']; }) && (_0x4579ca = _0x47d24f['q']['RotationAxis'](_0x47d24f['c']['X'], _0xf4ec9e), _0x3bf698['multiplyInPlace'](_0x4579ca)), this['buttonsYaw']['some'](function(_0x11fae4) { return _0x11fae4 === _0x490f5b['activeButton']; })) { _0x4579ca = _0x47d24f['q']['RotationAxis'](_0x47d24f['c']['Y'], _0x2698f2), _0x3bf698['multiplyInPlace'](_0x4579ca); var _0x587a71 = _0x44ced2['bankedTurnLimit'] + _0x44ced2['_trackRoll']; if (_0x44ced2['bankedTurn'] && -_0x587a71 < _0x44ced2['rotation']['z'] && _0x44ced2['rotation']['z'] < _0x587a71) { var _0x10256e = _0x44ced2['bankedTurnMultiplier'] * -_0x2698f2; _0x4579ca = _0x47d24f['q']['RotationAxis'](_0x47d24f['c']['Z'], _0x10256e), _0x3bf698['multiplyInPlace'](_0x4579ca); } } this['buttonsRoll']['some'](function(_0x410d70) { return _0x410d70 === _0x490f5b['activeButton']; }) && (_0x4579ca = _0x47d24f['q']['RotationAxis'](_0x47d24f['c']['Z'], -_0x2698f2), _0x44ced2['_trackRoll'] -= _0x2698f2, _0x3bf698['multiplyInPlace'](_0x4579ca)), _0x3bf698['toEulerAnglesToRef'](_0x44ced2['rotation']); } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x22d78f['prototype'], 'buttons', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x22d78f['prototype'], 'angularSensibility', void 0x0), _0x22d78f; }(); _0x11fe9a['FlyCameraMouseInput'] = _0xb29847; var _0x1ccc6f = function() { function _0x54317e() { this['keysHeightOffsetIncr'] = [0x26], this['keysHeightOffsetDecr'] = [0x28], this['keysHeightOffsetModifierAlt'] = !0x1, this['keysHeightOffsetModifierCtrl'] = !0x1, this['keysHeightOffsetModifierShift'] = !0x1, this['keysRotationOffsetIncr'] = [0x25], this['keysRotationOffsetDecr'] = [0x27], this['keysRotationOffsetModifierAlt'] = !0x1, this['keysRotationOffsetModifierCtrl'] = !0x1, this['keysRotationOffsetModifierShift'] = !0x1, this['keysRadiusIncr'] = [0x28], this['keysRadiusDecr'] = [0x26], this['keysRadiusModifierAlt'] = !0x0, this['keysRadiusModifierCtrl'] = !0x1, this['keysRadiusModifierShift'] = !0x1, this['heightSensibility'] = 0x1, this['rotationSensibility'] = 0x1, this['radiusSensibility'] = 0x1, this['_keys'] = new Array(); } return _0x54317e['prototype']['attachControl'] = function(_0x414ce8, _0x3d86b0) { var _0x3edbae = this; this['_onCanvasBlurObserver'] || (this['_scene'] = this['camera']['getScene'](), this['_engine'] = this['_scene']['getEngine'](), this['_onCanvasBlurObserver'] = this['_engine']['onCanvasBlurObservable']['add'](function() { _0x3edbae['_keys'] = []; }), this['_onKeyboardObserver'] = this['_scene']['onKeyboardObservable']['add'](function(_0xe36baa) { var _0x96ec10, _0x4db8f1 = _0xe36baa['event']; _0x4db8f1['metaKey'] || (_0xe36baa['type'] === _0x2698e8['a']['KEYDOWN'] ? (_0x3edbae['_ctrlPressed'] = _0x4db8f1['ctrlKey'], _0x3edbae['_altPressed'] = _0x4db8f1['altKey'], _0x3edbae['_shiftPressed'] = _0x4db8f1['shiftKey'], (-0x1 !== _0x3edbae['keysHeightOffsetIncr']['indexOf'](_0x4db8f1['keyCode']) || -0x1 !== _0x3edbae['keysHeightOffsetDecr']['indexOf'](_0x4db8f1['keyCode']) || -0x1 !== _0x3edbae['keysRotationOffsetIncr']['indexOf'](_0x4db8f1['keyCode']) || -0x1 !== _0x3edbae['keysRotationOffsetDecr']['indexOf'](_0x4db8f1['keyCode']) || -0x1 !== _0x3edbae['keysRadiusIncr']['indexOf'](_0x4db8f1['keyCode']) || -0x1 !== _0x3edbae['keysRadiusDecr']['indexOf'](_0x4db8f1['keyCode'])) && (-0x1 === (_0x96ec10 = _0x3edbae['_keys']['indexOf'](_0x4db8f1['keyCode'])) && _0x3edbae['_keys']['push'](_0x4db8f1['keyCode']), _0x4db8f1['preventDefault'] && (_0x3d86b0 || _0x4db8f1['preventDefault']()))) : -0x1 === _0x3edbae['keysHeightOffsetIncr']['indexOf'](_0x4db8f1['keyCode']) && -0x1 === _0x3edbae['keysHeightOffsetDecr']['indexOf'](_0x4db8f1['keyCode']) && -0x1 === _0x3edbae['keysRotationOffsetIncr']['indexOf'](_0x4db8f1['keyCode']) && -0x1 === _0x3edbae['keysRotationOffsetDecr']['indexOf'](_0x4db8f1['keyCode']) && -0x1 === _0x3edbae['keysRadiusIncr']['indexOf'](_0x4db8f1['keyCode']) && -0x1 === _0x3edbae['keysRadiusDecr']['indexOf'](_0x4db8f1['keyCode']) || ((_0x96ec10 = _0x3edbae['_keys']['indexOf'](_0x4db8f1['keyCode'])) >= 0x0 && _0x3edbae['_keys']['splice'](_0x96ec10, 0x1), _0x4db8f1['preventDefault'] && (_0x3d86b0 || _0x4db8f1['preventDefault']()))); })); } , _0x54317e['prototype']['detachControl'] = function(_0x22eb21) { this['_scene'] && (this['_onKeyboardObserver'] && this['_scene']['onKeyboardObservable']['remove'](this['_onKeyboardObserver']), this['_onCanvasBlurObserver'] && this['_engine']['onCanvasBlurObservable']['remove'](this['_onCanvasBlurObserver']), this['_onKeyboardObserver'] = null, this['_onCanvasBlurObserver'] = null), this['_keys'] = []; } , _0x54317e['prototype']['checkInputs'] = function() { var _0x46186c = this; this['_onKeyboardObserver'] && this['_keys']['forEach'](function(_0x5e93b7) { -0x1 !== _0x46186c['keysHeightOffsetIncr']['indexOf'](_0x5e93b7) && _0x46186c['_modifierHeightOffset']() ? _0x46186c['camera']['heightOffset'] += _0x46186c['heightSensibility'] : -0x1 !== _0x46186c['keysHeightOffsetDecr']['indexOf'](_0x5e93b7) && _0x46186c['_modifierHeightOffset']() ? _0x46186c['camera']['heightOffset'] -= _0x46186c['heightSensibility'] : -0x1 !== _0x46186c['keysRotationOffsetIncr']['indexOf'](_0x5e93b7) && _0x46186c['_modifierRotationOffset']() ? (_0x46186c['camera']['rotationOffset'] += _0x46186c['rotationSensibility'], _0x46186c['camera']['rotationOffset'] %= 0x168) : -0x1 !== _0x46186c['keysRotationOffsetDecr']['indexOf'](_0x5e93b7) && _0x46186c['_modifierRotationOffset']() ? (_0x46186c['camera']['rotationOffset'] -= _0x46186c['rotationSensibility'], _0x46186c['camera']['rotationOffset'] %= 0x168) : -0x1 !== _0x46186c['keysRadiusIncr']['indexOf'](_0x5e93b7) && _0x46186c['_modifierRadius']() ? _0x46186c['camera']['radius'] += _0x46186c['radiusSensibility'] : -0x1 !== _0x46186c['keysRadiusDecr']['indexOf'](_0x5e93b7) && _0x46186c['_modifierRadius']() && (_0x46186c['camera']['radius'] -= _0x46186c['radiusSensibility']); }); } , _0x54317e['prototype']['getClassName'] = function() { return 'FollowCameraKeyboardMoveInput'; } , _0x54317e['prototype']['getSimpleName'] = function() { return 'keyboard'; } , _0x54317e['prototype']['_modifierHeightOffset'] = function() { return this['keysHeightOffsetModifierAlt'] === this['_altPressed'] && this['keysHeightOffsetModifierCtrl'] === this['_ctrlPressed'] && this['keysHeightOffsetModifierShift'] === this['_shiftPressed']; } , _0x54317e['prototype']['_modifierRotationOffset'] = function() { return this['keysRotationOffsetModifierAlt'] === this['_altPressed'] && this['keysRotationOffsetModifierCtrl'] === this['_ctrlPressed'] && this['keysRotationOffsetModifierShift'] === this['_shiftPressed']; } , _0x54317e['prototype']['_modifierRadius'] = function() { return this['keysRadiusModifierAlt'] === this['_altPressed'] && this['keysRadiusModifierCtrl'] === this['_ctrlPressed'] && this['keysRadiusModifierShift'] === this['_shiftPressed']; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysHeightOffsetIncr', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysHeightOffsetDecr', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysHeightOffsetModifierAlt', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysHeightOffsetModifierCtrl', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysHeightOffsetModifierShift', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysRotationOffsetIncr', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysRotationOffsetDecr', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysRotationOffsetModifierAlt', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysRotationOffsetModifierCtrl', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysRotationOffsetModifierShift', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysRadiusIncr', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysRadiusDecr', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysRadiusModifierAlt', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysRadiusModifierCtrl', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'keysRadiusModifierShift', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'heightSensibility', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'rotationSensibility', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x54317e['prototype'], 'radiusSensibility', void 0x0), _0x54317e; }(); _0x11fe9a['FollowCameraKeyboardMoveInput'] = _0x1ccc6f; var _0x1713da = function() { function _0x80ec37() { this['axisControlRadius'] = !0x0, this['axisControlHeight'] = !0x1, this['axisControlRotation'] = !0x1, this['wheelPrecision'] = 0x3, this['wheelDeltaPercentage'] = 0x0; } return _0x80ec37['prototype']['attachControl'] = function(_0x2cdcac, _0x53486b) { var _0x54b953 = this; this['_wheel'] = function(_0x58237c, _0x10066c) { if (_0x58237c['type'] === _0xee889b['a']['POINTERWHEEL']) { var _0xeb879 = _0x58237c['event'] , _0x501151 = 0x0 , _0x19b0dc = Math['max'](-0x1, Math['min'](0x1, _0xeb879['deltaY'] || _0xeb879['wheelDelta'] || -_0xeb879['detail'])); _0x54b953['wheelDeltaPercentage'] ? (console['assert'](_0x54b953['axisControlRadius'] + _0x54b953['axisControlHeight'] + _0x54b953['axisControlRotation'] <= 0x1, 'wheelDeltaPercentage\x20only\x20usable\x20when\x20mouse\x20wheel\x20controlls\x20ONE\x20axis.\x20Currently\x20enabled:\x20axisControlRadius:\x20' + _0x54b953['axisControlRadius'] + ',\x20axisControlHeightOffset:\x20' + _0x54b953['axisControlHeight'] + ',\x20axisControlRotationOffset:\x20' + _0x54b953['axisControlRotation']), _0x54b953['axisControlRadius'] ? _0x501151 = 0.01 * _0x19b0dc * _0x54b953['wheelDeltaPercentage'] * _0x54b953['camera']['radius'] : _0x54b953['axisControlHeight'] ? _0x501151 = 0.01 * _0x19b0dc * _0x54b953['wheelDeltaPercentage'] * _0x54b953['camera']['heightOffset'] : _0x54b953['axisControlRotation'] && (_0x501151 = 0.01 * _0x19b0dc * _0x54b953['wheelDeltaPercentage'] * _0x54b953['camera']['rotationOffset'])) : _0x501151 = _0x19b0dc * _0x54b953['wheelPrecision'], _0x501151 && (_0x54b953['axisControlRadius'] ? _0x54b953['camera']['radius'] += _0x501151 : _0x54b953['axisControlHeight'] ? _0x54b953['camera']['heightOffset'] -= _0x501151 : _0x54b953['axisControlRotation'] && (_0x54b953['camera']['rotationOffset'] -= _0x501151)), _0xeb879['preventDefault'] && (_0x53486b || _0xeb879['preventDefault']()); } } , this['_observer'] = this['camera']['getScene']()['onPointerObservable']['add'](this['_wheel'], _0xee889b['a']['POINTERWHEEL']); } , _0x80ec37['prototype']['detachControl'] = function(_0xfebcb1) { this['_observer'] && _0xfebcb1 && (this['camera']['getScene']()['onPointerObservable']['remove'](this['_observer']), this['_observer'] = null, this['_wheel'] = null); } , _0x80ec37['prototype']['getClassName'] = function() { return 'ArcRotateCameraMouseWheelInput'; } , _0x80ec37['prototype']['getSimpleName'] = function() { return 'mousewheel'; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x80ec37['prototype'], 'axisControlRadius', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x80ec37['prototype'], 'axisControlHeight', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x80ec37['prototype'], 'axisControlRotation', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x80ec37['prototype'], 'wheelPrecision', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x80ec37['prototype'], 'wheelDeltaPercentage', void 0x0), _0x80ec37; }(); _0x11fe9a['FollowCameraMouseWheelInput'] = _0x1713da; var _0x4da969 = function(_0x585be0) { function _0x2984b7() { var _0x533a35 = null !== _0x585be0 && _0x585be0['apply'](this, arguments) || this; return _0x533a35['angularSensibilityX'] = 0x1, _0x533a35['angularSensibilityY'] = 0x1, _0x533a35['pinchPrecision'] = 0x2710, _0x533a35['pinchDeltaPercentage'] = 0x0, _0x533a35['axisXControlRadius'] = !0x1, _0x533a35['axisXControlHeight'] = !0x1, _0x533a35['axisXControlRotation'] = !0x0, _0x533a35['axisYControlRadius'] = !0x1, _0x533a35['axisYControlHeight'] = !0x0, _0x533a35['axisYControlRotation'] = !0x1, _0x533a35['axisPinchControlRadius'] = !0x0, _0x533a35['axisPinchControlHeight'] = !0x1, _0x533a35['axisPinchControlRotation'] = !0x1, _0x533a35['warningEnable'] = !0x0, _0x533a35['_warningCounter'] = 0x0, _0x533a35; } return _0x420e5b['d'](_0x2984b7, _0x585be0), _0x2984b7['prototype']['getClassName'] = function() { return 'FollowCameraPointersInput'; } , _0x2984b7['prototype']['onTouch'] = function(_0x57cf0, _0x537dcc, _0x188d6d) { this['_warning'](), this['axisXControlRotation'] ? this['camera']['rotationOffset'] += _0x537dcc / this['angularSensibilityX'] : this['axisYControlRotation'] && (this['camera']['rotationOffset'] += _0x188d6d / this['angularSensibilityX']), this['axisXControlHeight'] ? this['camera']['heightOffset'] += _0x537dcc / this['angularSensibilityY'] : this['axisYControlHeight'] && (this['camera']['heightOffset'] += _0x188d6d / this['angularSensibilityY']), this['axisXControlRadius'] ? this['camera']['radius'] -= _0x537dcc / this['angularSensibilityY'] : this['axisYControlRadius'] && (this['camera']['radius'] -= _0x188d6d / this['angularSensibilityY']); } , _0x2984b7['prototype']['onMultiTouch'] = function(_0x5dde12, _0x115848, _0x368bbd, _0x494d47, _0x1a2d87, _0x4c20d5) { if (!(0x0 === _0x368bbd && null === _0x1a2d87 || 0x0 === _0x494d47 && null === _0x4c20d5)) { var _0x41b30a = (_0x494d47 - _0x368bbd) / (this['pinchPrecision'] * (this['angularSensibilityX'] + this['angularSensibilityY']) / 0x2); this['pinchDeltaPercentage'] ? (_0x41b30a *= 0.01 * this['pinchDeltaPercentage'], this['axisPinchControlRotation'] && (this['camera']['rotationOffset'] += _0x41b30a * this['camera']['rotationOffset']), this['axisPinchControlHeight'] && (this['camera']['heightOffset'] += _0x41b30a * this['camera']['heightOffset']), this['axisPinchControlRadius'] && (this['camera']['radius'] -= _0x41b30a * this['camera']['radius'])) : (this['axisPinchControlRotation'] && (this['camera']['rotationOffset'] += _0x41b30a), this['axisPinchControlHeight'] && (this['camera']['heightOffset'] += _0x41b30a), this['axisPinchControlRadius'] && (this['camera']['radius'] -= _0x41b30a)); } } , _0x2984b7['prototype']['_warning'] = function() { if (this['warningEnable'] && this['_warningCounter']++ % 0x64 == 0x0) { var _0x227f1a = 'It\x20probably\x20only\x20makes\x20sense\x20to\x20control\x20ONE\x20camera\x20property\x20with\x20each\x20pointer\x20axis.\x20Set\x20\x27warningEnable\x20=\x20false\x27\x20if\x20you\x20are\x20sure.\x20Currently\x20enabled:\x20'; console['assert'](this['axisXControlRotation'] + this['axisXControlHeight'] + this['axisXControlRadius'] <= 0x1, _0x227f1a + 'axisXControlRotation:\x20' + this['axisXControlRotation'] + ',\x20axisXControlHeight:\x20' + this['axisXControlHeight'] + ',\x20axisXControlRadius:\x20' + this['axisXControlRadius']), console['assert'](this['axisYControlRotation'] + this['axisYControlHeight'] + this['axisYControlRadius'] <= 0x1, _0x227f1a + 'axisYControlRotation:\x20' + this['axisYControlRotation'] + ',\x20axisYControlHeight:\x20' + this['axisYControlHeight'] + ',\x20axisYControlRadius:\x20' + this['axisYControlRadius']), console['assert'](this['axisPinchControlRotation'] + this['axisPinchControlHeight'] + this['axisPinchControlRadius'] <= 0x1, _0x227f1a + 'axisPinchControlRotation:\x20' + this['axisPinchControlRotation'] + ',\x20axisPinchControlHeight:\x20' + this['axisPinchControlHeight'] + ',\x20axisPinchControlRadius:\x20' + this['axisPinchControlRadius']); } } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'angularSensibilityX', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'angularSensibilityY', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'pinchPrecision', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'pinchDeltaPercentage', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'axisXControlRadius', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'axisXControlHeight', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'axisXControlRotation', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'axisYControlRadius', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'axisYControlHeight', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'axisYControlRotation', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'axisPinchControlRadius', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'axisPinchControlHeight', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2984b7['prototype'], 'axisPinchControlRotation', void 0x0), _0x2984b7; }(_0x2dbe0c); _0x11fe9a['FollowCameraPointersInput'] = _0x4da969; var _0x5962bd = function() { function _0x1fe48d() { this['keysUp'] = [0x26], this['keysDown'] = [0x28], this['keysLeft'] = [0x25], this['keysRight'] = [0x27], this['_keys'] = new Array(); } return _0x1fe48d['prototype']['attachControl'] = function(_0x42efd2, _0x5dbe34) { var _0x1faa2b = this; this['_onCanvasBlurObserver'] || (this['_scene'] = this['camera']['getScene'](), this['_engine'] = this['_scene']['getEngine'](), this['_onCanvasBlurObserver'] = this['_engine']['onCanvasBlurObservable']['add'](function() { _0x1faa2b['_keys'] = []; }), this['_onKeyboardObserver'] = this['_scene']['onKeyboardObservable']['add'](function(_0x4039a9) { var _0xcafc08, _0x3c4da8 = _0x4039a9['event']; _0x3c4da8['metaKey'] || (_0x4039a9['type'] === _0x2698e8['a']['KEYDOWN'] ? -0x1 === _0x1faa2b['keysUp']['indexOf'](_0x3c4da8['keyCode']) && -0x1 === _0x1faa2b['keysDown']['indexOf'](_0x3c4da8['keyCode']) && -0x1 === _0x1faa2b['keysLeft']['indexOf'](_0x3c4da8['keyCode']) && -0x1 === _0x1faa2b['keysRight']['indexOf'](_0x3c4da8['keyCode']) || (-0x1 === (_0xcafc08 = _0x1faa2b['_keys']['indexOf'](_0x3c4da8['keyCode'])) && _0x1faa2b['_keys']['push'](_0x3c4da8['keyCode']), _0x5dbe34 || _0x3c4da8['preventDefault']()) : -0x1 === _0x1faa2b['keysUp']['indexOf'](_0x3c4da8['keyCode']) && -0x1 === _0x1faa2b['keysDown']['indexOf'](_0x3c4da8['keyCode']) && -0x1 === _0x1faa2b['keysLeft']['indexOf'](_0x3c4da8['keyCode']) && -0x1 === _0x1faa2b['keysRight']['indexOf'](_0x3c4da8['keyCode']) || ((_0xcafc08 = _0x1faa2b['_keys']['indexOf'](_0x3c4da8['keyCode'])) >= 0x0 && _0x1faa2b['_keys']['splice'](_0xcafc08, 0x1), _0x5dbe34 || _0x3c4da8['preventDefault']())); })); } , _0x1fe48d['prototype']['detachControl'] = function(_0xe063c0) { this['_scene'] && (this['_onKeyboardObserver'] && this['_scene']['onKeyboardObservable']['remove'](this['_onKeyboardObserver']), this['_onCanvasBlurObserver'] && this['_engine']['onCanvasBlurObservable']['remove'](this['_onCanvasBlurObserver']), this['_onKeyboardObserver'] = null, this['_onCanvasBlurObserver'] = null), this['_keys'] = []; } , _0x1fe48d['prototype']['checkInputs'] = function() { if (this['_onKeyboardObserver']) for (var _0x11fdc9 = this['camera'], _0x29b11 = 0x0; _0x29b11 < this['_keys']['length']; _0x29b11++) { var _0x36f086 = this['_keys'][_0x29b11] , _0x2f807a = _0x11fdc9['_computeLocalCameraSpeed'](); -0x1 !== this['keysLeft']['indexOf'](_0x36f086) ? _0x11fdc9['_localDirection']['copyFromFloats'](-_0x2f807a, 0x0, 0x0) : -0x1 !== this['keysUp']['indexOf'](_0x36f086) ? _0x11fdc9['_localDirection']['copyFromFloats'](0x0, 0x0, _0x2f807a) : -0x1 !== this['keysRight']['indexOf'](_0x36f086) ? _0x11fdc9['_localDirection']['copyFromFloats'](_0x2f807a, 0x0, 0x0) : -0x1 !== this['keysDown']['indexOf'](_0x36f086) && _0x11fdc9['_localDirection']['copyFromFloats'](0x0, 0x0, -_0x2f807a), _0x11fdc9['getScene']()['useRightHandedSystem'] && (_0x11fdc9['_localDirection']['z'] *= -0x1), _0x11fdc9['getViewMatrix']()['invertToRef'](_0x11fdc9['_cameraTransformMatrix']), _0x47d24f['x']['TransformNormalToRef'](_0x11fdc9['_localDirection'], _0x11fdc9['_cameraTransformMatrix'], _0x11fdc9['_transformedDirection']), _0x11fdc9['cameraDirection']['addInPlace'](_0x11fdc9['_transformedDirection']); } } , _0x1fe48d['prototype']['getClassName'] = function() { return 'FreeCameraKeyboardMoveInput'; } , _0x1fe48d['prototype']['_onLostFocus'] = function() { this['_keys'] = []; } , _0x1fe48d['prototype']['getSimpleName'] = function() { return 'keyboard'; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1fe48d['prototype'], 'keysUp', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1fe48d['prototype'], 'keysDown', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1fe48d['prototype'], 'keysLeft', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1fe48d['prototype'], 'keysRight', void 0x0), _0x1fe48d; }(); _0x11fe9a['FreeCameraKeyboardMoveInput'] = _0x5962bd; var _0x4c45a5 = function() { function _0x40138e(_0x396157) { void 0x0 === _0x396157 && (_0x396157 = !0x0), this['touchEnabled'] = _0x396157, this['buttons'] = [0x0, 0x1, 0x2], this['angularSensibility'] = 0x7d0, this['previousPosition'] = null, this['onPointerMovedObservable'] = new _0x2dbec2['c'](), this['_allowCameraRotation'] = !0x0; } return _0x40138e['prototype']['attachControl'] = function(_0x41ad88, _0x4e78e7) { var _0x7c0a12 = this , _0x42ee57 = this['camera']['getEngine'](); this['_pointerInput'] || (this['_pointerInput'] = function(_0x3b5882) { var _0x2bf8ff = _0x3b5882['event']; if (!_0x42ee57['isInVRExclusivePointerMode'] && (_0x7c0a12['touchEnabled'] || 'touch' !== _0x2bf8ff['pointerType']) && (_0x3b5882['type'] === _0xee889b['a']['POINTERMOVE'] || -0x1 !== _0x7c0a12['buttons']['indexOf'](_0x2bf8ff['button']))) { var _0x498ed4 = _0x2bf8ff['srcElement'] || _0x2bf8ff['target']; if (_0x3b5882['type'] === _0xee889b['a']['POINTERDOWN'] && _0x498ed4) { try { _0x498ed4['setPointerCapture'](_0x2bf8ff['pointerId']); } catch (_0x5ac8ac) {} _0x7c0a12['previousPosition'] = { 'x': _0x2bf8ff['clientX'], 'y': _0x2bf8ff['clientY'] }, _0x4e78e7 || (_0x2bf8ff['preventDefault'](), _0x41ad88['focus']()); } else if (_0x3b5882['type'] === _0xee889b['a']['POINTERUP'] && _0x498ed4) { try { _0x498ed4['releasePointerCapture'](_0x2bf8ff['pointerId']); } catch (_0x531553) {} _0x7c0a12['previousPosition'] = null, _0x4e78e7 || _0x2bf8ff['preventDefault'](); } else if (_0x3b5882['type'] === _0xee889b['a']['POINTERMOVE']) { if (!_0x7c0a12['previousPosition'] || _0x42ee57['isPointerLock']) return; var _0x921140 = _0x2bf8ff['clientX'] - _0x7c0a12['previousPosition']['x'] , _0x206d6c = _0x2bf8ff['clientY'] - _0x7c0a12['previousPosition']['y']; _0x7c0a12['camera']['getScene']()['useRightHandedSystem'] && (_0x921140 *= -0x1), _0x7c0a12['camera']['parent'] && _0x7c0a12['camera']['parent']['_getWorldMatrixDeterminant']() < 0x0 && (_0x921140 *= -0x1), _0x7c0a12['_allowCameraRotation'] && (_0x7c0a12['camera']['cameraRotation']['y'] += _0x921140 / _0x7c0a12['angularSensibility'], _0x7c0a12['camera']['cameraRotation']['x'] += _0x206d6c / _0x7c0a12['angularSensibility']), _0x7c0a12['onPointerMovedObservable']['notifyObservers']({ 'offsetX': _0x921140, 'offsetY': _0x206d6c }), _0x7c0a12['previousPosition'] = { 'x': _0x2bf8ff['clientX'], 'y': _0x2bf8ff['clientY'] }, _0x4e78e7 || _0x2bf8ff['preventDefault'](); } } } ), this['_onMouseMove'] = function(_0x3bd259) { if (_0x42ee57['isPointerLock'] && !_0x42ee57['isInVRExclusivePointerMode']) { var _0x1e0c73 = _0x3bd259['movementX'] || _0x3bd259['mozMovementX'] || _0x3bd259['webkitMovementX'] || _0x3bd259['msMovementX'] || 0x0; _0x7c0a12['camera']['getScene']()['useRightHandedSystem'] && (_0x1e0c73 *= -0x1), _0x7c0a12['camera']['parent'] && _0x7c0a12['camera']['parent']['_getWorldMatrixDeterminant']() < 0x0 && (_0x1e0c73 *= -0x1), _0x7c0a12['camera']['cameraRotation']['y'] += _0x1e0c73 / _0x7c0a12['angularSensibility']; var _0x1ac5d1 = _0x3bd259['movementY'] || _0x3bd259['mozMovementY'] || _0x3bd259['webkitMovementY'] || _0x3bd259['msMovementY'] || 0x0; _0x7c0a12['camera']['cameraRotation']['x'] += _0x1ac5d1 / _0x7c0a12['angularSensibility'], _0x7c0a12['previousPosition'] = null, _0x4e78e7 || _0x3bd259['preventDefault'](); } } , this['_observer'] = this['camera']['getScene']()['onPointerObservable']['add'](this['_pointerInput'], _0xee889b['a']['POINTERDOWN'] | _0xee889b['a']['POINTERUP'] | _0xee889b['a']['POINTERMOVE']), _0x41ad88['addEventListener']('mousemove', this['_onMouseMove'], !0x1), _0x41ad88['addEventListener']('contextmenu', this['onContextMenu']['bind'](this), !0x1); } , _0x40138e['prototype']['onContextMenu'] = function(_0x19c7c5) { _0x19c7c5['preventDefault'](); } , _0x40138e['prototype']['detachControl'] = function(_0x29b906) { this['_observer'] && _0x29b906 && (this['camera']['getScene']()['onPointerObservable']['remove'](this['_observer']), this['_onMouseMove'] && _0x29b906['removeEventListener']('mousemove', this['_onMouseMove']), this['onContextMenu'] && _0x29b906['removeEventListener']('contextmenu', this['onContextMenu']), this['onPointerMovedObservable'] && this['onPointerMovedObservable']['clear'](), this['_observer'] = null, this['_onMouseMove'] = null, this['previousPosition'] = null); } , _0x40138e['prototype']['getClassName'] = function() { return 'FreeCameraMouseInput'; } , _0x40138e['prototype']['getSimpleName'] = function() { return 'mouse'; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x40138e['prototype'], 'buttons', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x40138e['prototype'], 'angularSensibility', void 0x0), _0x40138e; }(); _0x11fe9a['FreeCameraMouseInput'] = _0x4c45a5; var _0x1d2706 = function() { function _0x1cd6e4() { this['touchAngularSensibility'] = 0x30d40, this['touchMoveSensibility'] = 0xfa, this['_offsetX'] = null, this['_offsetY'] = null, this['_pointerPressed'] = new Array(); } return _0x1cd6e4['prototype']['attachControl'] = function(_0x16ee91, _0x52ed5e) { var _0x206e97 = this , _0x1087e1 = null; void 0x0 === this['_pointerInput'] && (this['_onLostFocus'] = function() { _0x206e97['_offsetX'] = null, _0x206e97['_offsetY'] = null; } , this['_pointerInput'] = function(_0x53fe6d) { var _0xace200 = _0x53fe6d['event']; if ('mouse' !== _0xace200['pointerType']) if (_0x53fe6d['type'] === _0xee889b['a']['POINTERDOWN']) { if (_0x52ed5e || _0xace200['preventDefault'](), _0x206e97['_pointerPressed']['push'](_0xace200['pointerId']), 0x1 !== _0x206e97['_pointerPressed']['length']) return; _0x1087e1 = { 'x': _0xace200['clientX'], 'y': _0xace200['clientY'] }; } else if (_0x53fe6d['type'] === _0xee889b['a']['POINTERUP']) { if (_0x52ed5e || _0xace200['preventDefault'](), -0x1 === (_0x12732c = _0x206e97['_pointerPressed']['indexOf'](_0xace200['pointerId']))) return; if (_0x206e97['_pointerPressed']['splice'](_0x12732c, 0x1), 0x0 != _0x12732c) return; _0x1087e1 = null, _0x206e97['_offsetX'] = null, _0x206e97['_offsetY'] = null; } else if (_0x53fe6d['type'] === _0xee889b['a']['POINTERMOVE']) { if (_0x52ed5e || _0xace200['preventDefault'](), !_0x1087e1) return; var _0x12732c; if (0x0 != (_0x12732c = _0x206e97['_pointerPressed']['indexOf'](_0xace200['pointerId']))) return; _0x206e97['_offsetX'] = _0xace200['clientX'] - _0x1087e1['x'], _0x206e97['_offsetY'] = -(_0xace200['clientY'] - _0x1087e1['y']); } } ), this['_observer'] = this['camera']['getScene']()['onPointerObservable']['add'](this['_pointerInput'], _0xee889b['a']['POINTERDOWN'] | _0xee889b['a']['POINTERUP'] | _0xee889b['a']['POINTERMOVE']), this['_onLostFocus'] && _0x16ee91['addEventListener']('blur', this['_onLostFocus']); } , _0x1cd6e4['prototype']['detachControl'] = function(_0x3f437d) { this['_pointerInput'] && _0x3f437d && (this['_observer'] && (this['camera']['getScene']()['onPointerObservable']['remove'](this['_observer']), this['_observer'] = null), this['_onLostFocus'] && (_0x3f437d['removeEventListener']('blur', this['_onLostFocus']), this['_onLostFocus'] = null), this['_pointerPressed'] = [], this['_offsetX'] = null, this['_offsetY'] = null); } , _0x1cd6e4['prototype']['checkInputs'] = function() { if (this['_offsetX'] && this['_offsetY']) { var _0x21aa17 = this['camera']; if (_0x21aa17['cameraRotation']['y'] += this['_offsetX'] / this['touchAngularSensibility'], this['_pointerPressed']['length'] > 0x1) _0x21aa17['cameraRotation']['x'] += -this['_offsetY'] / this['touchAngularSensibility']; else { var _0x5b4929 = _0x21aa17['_computeLocalCameraSpeed']() , _0x6aa520 = new _0x47d24f['x'](0x0,0x0,_0x5b4929 * this['_offsetY'] / this['touchMoveSensibility']); _0x47d24f['j']['RotationYawPitchRollToRef'](_0x21aa17['rotation']['y'], _0x21aa17['rotation']['x'], 0x0, _0x21aa17['_cameraRotationMatrix']), _0x21aa17['cameraDirection']['addInPlace'](_0x47d24f['x']['TransformCoordinates'](_0x6aa520, _0x21aa17['_cameraRotationMatrix'])); } } } , _0x1cd6e4['prototype']['getClassName'] = function() { return 'FreeCameraTouchInput'; } , _0x1cd6e4['prototype']['getSimpleName'] = function() { return 'touch'; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1cd6e4['prototype'], 'touchAngularSensibility', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1cd6e4['prototype'], 'touchMoveSensibility', void 0x0), _0x1cd6e4; }(); _0x11fe9a['FreeCameraTouchInput'] = _0x1d2706; var _0x368109 = function(_0x1adc91) { function _0x4b0f4a(_0x494f8c) { var _0x5a74c6 = _0x1adc91['call'](this, _0x494f8c) || this; return _0x5a74c6['_mouseInput'] = null, _0x5a74c6; } return _0x420e5b['d'](_0x4b0f4a, _0x1adc91), _0x4b0f4a['prototype']['addKeyboard'] = function() { return this['add'](new _0x5962bd()), this; } , _0x4b0f4a['prototype']['addMouse'] = function(_0x510249) { return void 0x0 === _0x510249 && (_0x510249 = !0x0), this['_mouseInput'] || (this['_mouseInput'] = new _0x4c45a5(_0x510249), this['add'](this['_mouseInput'])), this; } , _0x4b0f4a['prototype']['removeMouse'] = function() { return this['_mouseInput'] && this['remove'](this['_mouseInput']), this; } , _0x4b0f4a['prototype']['addTouch'] = function() { return this['add'](new _0x1d2706()), this; } , _0x4b0f4a['prototype']['clear'] = function() { _0x1adc91['prototype']['clear']['call'](this), this['_mouseInput'] = null; } , _0x4b0f4a; }(_0x21d8d9); _0x368109['prototype']['addDeviceOrientation'] = function() { return this['_deviceOrientationInput'] || (this['_deviceOrientationInput'] = new _0x53f86a(), this['add'](this['_deviceOrientationInput'])), this; } ; var _0x53f86a = function() { function _0x25bff2() { var _0x2e3d5d = this; this['_screenOrientationAngle'] = 0x0, this['_screenQuaternion'] = new _0x47d24f['q'](), this['_alpha'] = 0x0, this['_beta'] = 0x0, this['_gamma'] = 0x0, this['_onDeviceOrientationChangedObservable'] = new _0x2dbec2['c'](), this['_orientationChanged'] = function() { _0x2e3d5d['_screenOrientationAngle'] = void 0x0 !== window['orientation'] ? +window['orientation'] : window['screen']['orientation'] && window['screen']['orientation']['angle'] ? window['screen']['orientation']['angle'] : 0x0, _0x2e3d5d['_screenOrientationAngle'] = -_0x1eb50e['h']['ToRadians'](_0x2e3d5d['_screenOrientationAngle'] / 0x2), _0x2e3d5d['_screenQuaternion']['copyFromFloats'](0x0, Math['sin'](_0x2e3d5d['_screenOrientationAngle']), 0x0, Math['cos'](_0x2e3d5d['_screenOrientationAngle'])); } , this['_deviceOrientation'] = function(_0xff7231) { _0x2e3d5d['_alpha'] = null !== _0xff7231['alpha'] ? _0xff7231['alpha'] : 0x0, _0x2e3d5d['_beta'] = null !== _0xff7231['beta'] ? _0xff7231['beta'] : 0x0, _0x2e3d5d['_gamma'] = null !== _0xff7231['gamma'] ? _0xff7231['gamma'] : 0x0, null !== _0xff7231['alpha'] && _0x2e3d5d['_onDeviceOrientationChangedObservable']['notifyObservers'](); } , this['_constantTranform'] = new _0x47d24f['q'](-Math['sqrt'](0.5),0x0,0x0,Math['sqrt'](0.5)), this['_orientationChanged'](); } return Object['defineProperty'](_0x25bff2['prototype'], 'camera', { 'get': function() { return this['_camera']; }, 'set': function(_0x151d89) { var _0x53fb61 = this; this['_camera'] = _0x151d89, null == this['_camera'] || this['_camera']['rotationQuaternion'] || (this['_camera']['rotationQuaternion'] = new _0x47d24f['q']()), this['_camera'] && this['_camera']['onDisposeObservable']['add'](function() { _0x53fb61['_onDeviceOrientationChangedObservable']['clear'](); }); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x25bff2['prototype']['attachControl'] = function(_0x110a68, _0x3f86f4) { window['addEventListener']('orientationchange', this['_orientationChanged']), window['addEventListener']('deviceorientation', this['_deviceOrientation']), this['_orientationChanged'](); } , _0x25bff2['prototype']['detachControl'] = function(_0x4b57f) { window['removeEventListener']('orientationchange', this['_orientationChanged']), window['removeEventListener']('deviceorientation', this['_deviceOrientation']), this['_alpha'] = 0x0; } , _0x25bff2['prototype']['checkInputs'] = function() { this['_alpha'] && (_0x47d24f['q']['RotationYawPitchRollToRef'](_0x1eb50e['h']['ToRadians'](this['_alpha']), _0x1eb50e['h']['ToRadians'](this['_beta']), -_0x1eb50e['h']['ToRadians'](this['_gamma']), this['camera']['rotationQuaternion']), this['_camera']['rotationQuaternion']['multiplyInPlace'](this['_screenQuaternion']), this['_camera']['rotationQuaternion']['multiplyInPlace'](this['_constantTranform']), this['_camera']['rotationQuaternion']['z'] *= -0x1, this['_camera']['rotationQuaternion']['w'] *= -0x1); } , _0x25bff2['prototype']['getClassName'] = function() { return 'FreeCameraDeviceOrientationInput'; } , _0x25bff2['prototype']['getSimpleName'] = function() { return 'deviceOrientation'; } , _0x25bff2; }(); _0x11fe9a['FreeCameraDeviceOrientationInput'] = _0x53f86a; var _0x34e5b7 = function() { function _0x2419f3() { this['gamepadAngularSensibility'] = 0xc8, this['gamepadMoveSensibility'] = 0x28, this['_cameraTransform'] = _0x47d24f['j']['Identity'](), this['_deltaTransform'] = _0x47d24f['x']['Zero'](), this['_vector3'] = _0x47d24f['x']['Zero'](), this['_vector2'] = _0x47d24f['w']['Zero'](); } return _0x2419f3['prototype']['attachControl'] = function(_0x336077, _0x65be35) { var _0x3f0ed0 = this , _0x320169 = this['camera']['getScene']()['gamepadManager']; this['_onGamepadConnectedObserver'] = _0x320169['onGamepadConnectedObservable']['add'](function(_0x2a2155) { _0x2a2155['type'] !== _0x591e86['POSE_ENABLED'] && (_0x3f0ed0['gamepad'] && _0x2a2155['type'] !== _0x591e86['XBOX'] || (_0x3f0ed0['gamepad'] = _0x2a2155)); }), this['_onGamepadDisconnectedObserver'] = _0x320169['onGamepadDisconnectedObservable']['add'](function(_0x2c035c) { _0x3f0ed0['gamepad'] === _0x2c035c && (_0x3f0ed0['gamepad'] = null); }), this['gamepad'] = _0x320169['getGamepadByType'](_0x591e86['XBOX']); } , _0x2419f3['prototype']['detachControl'] = function(_0x297e54) { this['camera']['getScene']()['gamepadManager']['onGamepadConnectedObservable']['remove'](this['_onGamepadConnectedObserver']), this['camera']['getScene']()['gamepadManager']['onGamepadDisconnectedObservable']['remove'](this['_onGamepadDisconnectedObserver']), this['gamepad'] = null; } , _0x2419f3['prototype']['checkInputs'] = function() { if (this['gamepad'] && this['gamepad']['leftStick']) { var _0x1b2867 = this['camera'] , _0x5224d8 = this['gamepad']['leftStick'] , _0x2e31c6 = _0x5224d8['x'] / this['gamepadMoveSensibility'] , _0x58405c = _0x5224d8['y'] / this['gamepadMoveSensibility']; _0x5224d8['x'] = Math['abs'](_0x2e31c6) > 0.005 ? 0x0 + _0x2e31c6 : 0x0, _0x5224d8['y'] = Math['abs'](_0x58405c) > 0.005 ? 0x0 + _0x58405c : 0x0; var _0x4d5f3a = this['gamepad']['rightStick']; if (_0x4d5f3a) { var _0x10d280 = _0x4d5f3a['x'] / this['gamepadAngularSensibility'] , _0x3ce881 = _0x4d5f3a['y'] / this['gamepadAngularSensibility']; _0x4d5f3a['x'] = Math['abs'](_0x10d280) > 0.001 ? 0x0 + _0x10d280 : 0x0, _0x4d5f3a['y'] = Math['abs'](_0x3ce881) > 0.001 ? 0x0 + _0x3ce881 : 0x0; } else _0x4d5f3a = { 'x': 0x0, 'y': 0x0 }; _0x1b2867['rotationQuaternion'] ? _0x1b2867['rotationQuaternion']['toRotationMatrix'](this['_cameraTransform']) : _0x47d24f['j']['RotationYawPitchRollToRef'](_0x1b2867['rotation']['y'], _0x1b2867['rotation']['x'], 0x0, this['_cameraTransform']); var _0x3b57e9 = 0x32 * _0x1b2867['_computeLocalCameraSpeed'](); this['_vector3']['copyFromFloats'](_0x5224d8['x'] * _0x3b57e9, 0x0, -_0x5224d8['y'] * _0x3b57e9), _0x47d24f['x']['TransformCoordinatesToRef'](this['_vector3'], this['_cameraTransform'], this['_deltaTransform']), _0x1b2867['cameraDirection']['addInPlace'](this['_deltaTransform']), this['_vector2']['copyFromFloats'](_0x4d5f3a['y'], _0x4d5f3a['x']), _0x1b2867['cameraRotation']['addInPlace'](this['_vector2']); } } , _0x2419f3['prototype']['getClassName'] = function() { return 'FreeCameraGamepadInput'; } , _0x2419f3['prototype']['getSimpleName'] = function() { return 'gamepad'; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2419f3['prototype'], 'gamepadAngularSensibility', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2419f3['prototype'], 'gamepadMoveSensibility', void 0x0), _0x2419f3; }(); _0x11fe9a['FreeCameraGamepadInput'] = _0x34e5b7; var _0x5e8161, _0x4e0763 = _0x59bd00(0x3d); !function(_0x25e1af) { _0x25e1af[_0x25e1af['X'] = 0x0] = 'X', _0x25e1af[_0x25e1af['Y'] = 0x1] = 'Y', _0x25e1af[_0x25e1af['Z'] = 0x2] = 'Z'; }(_0x5e8161 || (_0x5e8161 = {})); var _0x48a1e1 = function() { function _0x335948(_0x474eea) { var _0x4a2b33 = this; if (this['_leftJoystick'] = !!_0x474eea, _0x335948['_globalJoystickIndex']++, this['_axisTargetedByLeftAndRight'] = _0x5e8161['X'], this['_axisTargetedByUpAndDown'] = _0x5e8161['Y'], this['reverseLeftRight'] = !0x1, this['reverseUpDown'] = !0x1, this['_touches'] = new _0x4e0763['a'](), this['deltaPosition'] = _0x47d24f['x']['Zero'](), this['_joystickSensibility'] = 0x19, this['_inversedSensibility'] = 0x1 / (this['_joystickSensibility'] / 0x3e8), this['_onResize'] = function(_0x4228a7) { _0x335948['vjCanvasWidth'] = window['innerWidth'], _0x335948['vjCanvasHeight'] = window['innerHeight'], _0x335948['Canvas'] && (_0x335948['Canvas']['width'] = _0x335948['vjCanvasWidth'], _0x335948['Canvas']['height'] = _0x335948['vjCanvasHeight']), _0x335948['halfWidth'] = _0x335948['vjCanvasWidth'] / 0x2; } , !_0x335948['Canvas']) { window['addEventListener']('resize', this['_onResize'], !0x1), _0x335948['Canvas'] = document['createElement']('canvas'), _0x335948['vjCanvasWidth'] = window['innerWidth'], _0x335948['vjCanvasHeight'] = window['innerHeight'], _0x335948['Canvas']['width'] = window['innerWidth'], _0x335948['Canvas']['height'] = window['innerHeight'], _0x335948['Canvas']['style']['width'] = '100%', _0x335948['Canvas']['style']['height'] = '100%', _0x335948['Canvas']['style']['position'] = 'absolute', _0x335948['Canvas']['style']['backgroundColor'] = 'transparent', _0x335948['Canvas']['style']['top'] = '0px', _0x335948['Canvas']['style']['left'] = '0px', _0x335948['Canvas']['style']['zIndex'] = '5', _0x335948['Canvas']['style']['msTouchAction'] = 'none', _0x335948['Canvas']['setAttribute']('touch-action', 'none'); var _0x4ce101 = _0x335948['Canvas']['getContext']('2d'); if (!_0x4ce101) throw new Error('Unable\x20to\x20create\x20canvas\x20for\x20virtual\x20joystick'); _0x335948['vjCanvasContext'] = _0x4ce101, _0x335948['vjCanvasContext']['strokeStyle'] = '#ffffff', _0x335948['vjCanvasContext']['lineWidth'] = 0x2, document['body']['appendChild'](_0x335948['Canvas']); } _0x335948['halfWidth'] = _0x335948['Canvas']['width'] / 0x2, this['pressed'] = !0x1, this['_joystickColor'] = 'cyan', this['_joystickPointerID'] = -0x1, this['_joystickPointerPos'] = new _0x47d24f['w'](0x0,0x0), this['_joystickPreviousPointerPos'] = new _0x47d24f['w'](0x0,0x0), this['_joystickPointerStartPos'] = new _0x47d24f['w'](0x0,0x0), this['_deltaJoystickVector'] = new _0x47d24f['w'](0x0,0x0), this['_onPointerDownHandlerRef'] = function(_0x256bd5) { _0x4a2b33['_onPointerDown'](_0x256bd5); } , this['_onPointerMoveHandlerRef'] = function(_0x36565a) { _0x4a2b33['_onPointerMove'](_0x36565a); } , this['_onPointerUpHandlerRef'] = function(_0xb70518) { _0x4a2b33['_onPointerUp'](_0xb70518); } , _0x335948['Canvas']['addEventListener']('pointerdown', this['_onPointerDownHandlerRef'], !0x1), _0x335948['Canvas']['addEventListener']('pointermove', this['_onPointerMoveHandlerRef'], !0x1), _0x335948['Canvas']['addEventListener']('pointerup', this['_onPointerUpHandlerRef'], !0x1), _0x335948['Canvas']['addEventListener']('pointerout', this['_onPointerUpHandlerRef'], !0x1), _0x335948['Canvas']['addEventListener']('contextmenu', function(_0x2940e9) { _0x2940e9['preventDefault'](); }, !0x1), requestAnimationFrame(function() { _0x4a2b33['_drawVirtualJoystick'](); }); } return _0x335948['prototype']['setJoystickSensibility'] = function(_0x5b3dae) { this['_joystickSensibility'] = _0x5b3dae, this['_inversedSensibility'] = 0x1 / (this['_joystickSensibility'] / 0x3e8); } , _0x335948['prototype']['_onPointerDown'] = function(_0x2e5c58) { _0x2e5c58['preventDefault'](), (!0x0 === this['_leftJoystick'] ? _0x2e5c58['clientX'] < _0x335948['halfWidth'] : _0x2e5c58['clientX'] > _0x335948['halfWidth']) && this['_joystickPointerID'] < 0x0 ? (this['_joystickPointerID'] = _0x2e5c58['pointerId'], this['_joystickPointerStartPos']['x'] = _0x2e5c58['clientX'], this['_joystickPointerStartPos']['y'] = _0x2e5c58['clientY'], this['_joystickPointerPos'] = this['_joystickPointerStartPos']['clone'](), this['_joystickPreviousPointerPos'] = this['_joystickPointerStartPos']['clone'](), this['_deltaJoystickVector']['x'] = 0x0, this['_deltaJoystickVector']['y'] = 0x0, this['pressed'] = !0x0, this['_touches']['add'](_0x2e5c58['pointerId']['toString'](), _0x2e5c58)) : _0x335948['_globalJoystickIndex'] < 0x2 && this['_action'] && (this['_action'](), this['_touches']['add'](_0x2e5c58['pointerId']['toString'](), { 'x': _0x2e5c58['clientX'], 'y': _0x2e5c58['clientY'], 'prevX': _0x2e5c58['clientX'], 'prevY': _0x2e5c58['clientY'] })); } , _0x335948['prototype']['_onPointerMove'] = function(_0x5a40d4) { if (this['_joystickPointerID'] == _0x5a40d4['pointerId']) { this['_joystickPointerPos']['x'] = _0x5a40d4['clientX'], this['_joystickPointerPos']['y'] = _0x5a40d4['clientY'], this['_deltaJoystickVector'] = this['_joystickPointerPos']['clone'](), this['_deltaJoystickVector'] = this['_deltaJoystickVector']['subtract'](this['_joystickPointerStartPos']); var _0x2c90b6 = (this['reverseLeftRight'] ? -0x1 : 0x1) * this['_deltaJoystickVector']['x'] / this['_inversedSensibility']; switch (this['_axisTargetedByLeftAndRight']) { case _0x5e8161['X']: this['deltaPosition']['x'] = Math['min'](0x1, Math['max'](-0x1, _0x2c90b6)); break; case _0x5e8161['Y']: this['deltaPosition']['y'] = Math['min'](0x1, Math['max'](-0x1, _0x2c90b6)); break; case _0x5e8161['Z']: this['deltaPosition']['z'] = Math['min'](0x1, Math['max'](-0x1, _0x2c90b6)); } var _0x302778 = (this['reverseUpDown'] ? 0x1 : -0x1) * this['_deltaJoystickVector']['y'] / this['_inversedSensibility']; switch (this['_axisTargetedByUpAndDown']) { case _0x5e8161['X']: this['deltaPosition']['x'] = Math['min'](0x1, Math['max'](-0x1, _0x302778)); break; case _0x5e8161['Y']: this['deltaPosition']['y'] = Math['min'](0x1, Math['max'](-0x1, _0x302778)); break; case _0x5e8161['Z']: this['deltaPosition']['z'] = Math['min'](0x1, Math['max'](-0x1, _0x302778)); } } else { var _0x3fb9a2 = this['_touches']['get'](_0x5a40d4['pointerId']['toString']()); _0x3fb9a2 && (_0x3fb9a2['x'] = _0x5a40d4['clientX'], _0x3fb9a2['y'] = _0x5a40d4['clientY']); } } , _0x335948['prototype']['_onPointerUp'] = function(_0x4f4898) { if (this['_joystickPointerID'] == _0x4f4898['pointerId']) _0x335948['vjCanvasContext']['clearRect'](this['_joystickPointerStartPos']['x'] - 0x40, this['_joystickPointerStartPos']['y'] - 0x40, 0x80, 0x80), _0x335948['vjCanvasContext']['clearRect'](this['_joystickPreviousPointerPos']['x'] - 0x2a, this['_joystickPreviousPointerPos']['y'] - 0x2a, 0x54, 0x54), this['_joystickPointerID'] = -0x1, this['pressed'] = !0x1; else { var _0x39259e = this['_touches']['get'](_0x4f4898['pointerId']['toString']()); _0x39259e && _0x335948['vjCanvasContext']['clearRect'](_0x39259e['prevX'] - 0x2c, _0x39259e['prevY'] - 0x2c, 0x58, 0x58); } this['_deltaJoystickVector']['x'] = 0x0, this['_deltaJoystickVector']['y'] = 0x0, this['_touches']['remove'](_0x4f4898['pointerId']['toString']()); } , _0x335948['prototype']['setJoystickColor'] = function(_0x46b784) { this['_joystickColor'] = _0x46b784; } , _0x335948['prototype']['setActionOnTouch'] = function(_0x32f299) { this['_action'] = _0x32f299; } , _0x335948['prototype']['setAxisForLeftRight'] = function(_0x13349d) { switch (_0x13349d) { case _0x5e8161['X']: case _0x5e8161['Y']: case _0x5e8161['Z']: this['_axisTargetedByLeftAndRight'] = _0x13349d; break; default: this['_axisTargetedByLeftAndRight'] = _0x5e8161['X']; } } , _0x335948['prototype']['setAxisForUpDown'] = function(_0xccb820) { switch (_0xccb820) { case _0x5e8161['X']: case _0x5e8161['Y']: case _0x5e8161['Z']: this['_axisTargetedByUpAndDown'] = _0xccb820; break; default: this['_axisTargetedByUpAndDown'] = _0x5e8161['Y']; } } , _0x335948['prototype']['_drawVirtualJoystick'] = function() { var _0xa6b7c3 = this; this['pressed'] && this['_touches']['forEach'](function(_0xab0bd7, _0x1dbea9) { _0x1dbea9['pointerId'] === _0xa6b7c3['_joystickPointerID'] ? (_0x335948['vjCanvasContext']['clearRect'](_0xa6b7c3['_joystickPointerStartPos']['x'] - 0x40, _0xa6b7c3['_joystickPointerStartPos']['y'] - 0x40, 0x80, 0x80), _0x335948['vjCanvasContext']['clearRect'](_0xa6b7c3['_joystickPreviousPointerPos']['x'] - 0x2a, _0xa6b7c3['_joystickPreviousPointerPos']['y'] - 0x2a, 0x54, 0x54), _0x335948['vjCanvasContext']['beginPath'](), _0x335948['vjCanvasContext']['lineWidth'] = 0x6, _0x335948['vjCanvasContext']['strokeStyle'] = _0xa6b7c3['_joystickColor'], _0x335948['vjCanvasContext']['arc'](_0xa6b7c3['_joystickPointerStartPos']['x'], _0xa6b7c3['_joystickPointerStartPos']['y'], 0x28, 0x0, 0x2 * Math['PI'], !0x0), _0x335948['vjCanvasContext']['stroke'](), _0x335948['vjCanvasContext']['closePath'](), _0x335948['vjCanvasContext']['beginPath'](), _0x335948['vjCanvasContext']['strokeStyle'] = _0xa6b7c3['_joystickColor'], _0x335948['vjCanvasContext']['lineWidth'] = 0x2, _0x335948['vjCanvasContext']['arc'](_0xa6b7c3['_joystickPointerStartPos']['x'], _0xa6b7c3['_joystickPointerStartPos']['y'], 0x3c, 0x0, 0x2 * Math['PI'], !0x0), _0x335948['vjCanvasContext']['stroke'](), _0x335948['vjCanvasContext']['closePath'](), _0x335948['vjCanvasContext']['beginPath'](), _0x335948['vjCanvasContext']['strokeStyle'] = _0xa6b7c3['_joystickColor'], _0x335948['vjCanvasContext']['arc'](_0xa6b7c3['_joystickPointerPos']['x'], _0xa6b7c3['_joystickPointerPos']['y'], 0x28, 0x0, 0x2 * Math['PI'], !0x0), _0x335948['vjCanvasContext']['stroke'](), _0x335948['vjCanvasContext']['closePath'](), _0xa6b7c3['_joystickPreviousPointerPos'] = _0xa6b7c3['_joystickPointerPos']['clone']()) : (_0x335948['vjCanvasContext']['clearRect'](_0x1dbea9['prevX'] - 0x2c, _0x1dbea9['prevY'] - 0x2c, 0x58, 0x58), _0x335948['vjCanvasContext']['beginPath'](), _0x335948['vjCanvasContext']['fillStyle'] = 'white', _0x335948['vjCanvasContext']['beginPath'](), _0x335948['vjCanvasContext']['strokeStyle'] = 'red', _0x335948['vjCanvasContext']['lineWidth'] = 0x6, _0x335948['vjCanvasContext']['arc'](_0x1dbea9['x'], _0x1dbea9['y'], 0x28, 0x0, 0x2 * Math['PI'], !0x0), _0x335948['vjCanvasContext']['stroke'](), _0x335948['vjCanvasContext']['closePath'](), _0x1dbea9['prevX'] = _0x1dbea9['x'], _0x1dbea9['prevY'] = _0x1dbea9['y']); }), requestAnimationFrame(function() { _0xa6b7c3['_drawVirtualJoystick'](); }); } , _0x335948['prototype']['releaseCanvas'] = function() { _0x335948['Canvas'] && (_0x335948['Canvas']['removeEventListener']('pointerdown', this['_onPointerDownHandlerRef']), _0x335948['Canvas']['removeEventListener']('pointermove', this['_onPointerMoveHandlerRef']), _0x335948['Canvas']['removeEventListener']('pointerup', this['_onPointerUpHandlerRef']), _0x335948['Canvas']['removeEventListener']('pointerout', this['_onPointerUpHandlerRef']), window['removeEventListener']('resize', this['_onResize']), document['body']['removeChild'](_0x335948['Canvas']), _0x335948['Canvas'] = null); } , _0x335948['_globalJoystickIndex'] = 0x0, _0x335948; }(); _0x368109['prototype']['addVirtualJoystick'] = function() { return this['add'](new _0x472da2()), this; } ; var _0x472da2 = function() { function _0x158871() {} return _0x158871['prototype']['getLeftJoystick'] = function() { return this['_leftjoystick']; } , _0x158871['prototype']['getRightJoystick'] = function() { return this['_rightjoystick']; } , _0x158871['prototype']['checkInputs'] = function() { if (this['_leftjoystick']) { var _0x1db2e9 = this['camera'] , _0x339d97 = 0x32 * _0x1db2e9['_computeLocalCameraSpeed']() , _0x1b1ead = _0x47d24f['j']['RotationYawPitchRoll'](_0x1db2e9['rotation']['y'], _0x1db2e9['rotation']['x'], 0x0) , _0x19e23b = _0x47d24f['x']['TransformCoordinates'](new _0x47d24f['x'](this['_leftjoystick']['deltaPosition']['x'] * _0x339d97,this['_leftjoystick']['deltaPosition']['y'] * _0x339d97,this['_leftjoystick']['deltaPosition']['z'] * _0x339d97), _0x1b1ead); _0x1db2e9['cameraDirection'] = _0x1db2e9['cameraDirection']['add'](_0x19e23b), _0x1db2e9['cameraRotation'] = _0x1db2e9['cameraRotation']['addVector3'](this['_rightjoystick']['deltaPosition']), this['_leftjoystick']['pressed'] || (this['_leftjoystick']['deltaPosition'] = this['_leftjoystick']['deltaPosition']['scale'](0.9)), this['_rightjoystick']['pressed'] || (this['_rightjoystick']['deltaPosition'] = this['_rightjoystick']['deltaPosition']['scale'](0.9)); } } , _0x158871['prototype']['attachControl'] = function(_0x1612fb, _0x13445c) { this['_leftjoystick'] = new _0x48a1e1(!0x0), this['_leftjoystick']['setAxisForUpDown'](_0x5e8161['Z']), this['_leftjoystick']['setAxisForLeftRight'](_0x5e8161['X']), this['_leftjoystick']['setJoystickSensibility'](0.15), this['_rightjoystick'] = new _0x48a1e1(!0x1), this['_rightjoystick']['setAxisForUpDown'](_0x5e8161['X']), this['_rightjoystick']['setAxisForLeftRight'](_0x5e8161['Y']), this['_rightjoystick']['reverseUpDown'] = !0x0, this['_rightjoystick']['setJoystickSensibility'](0.05), this['_rightjoystick']['setJoystickColor']('yellow'); } , _0x158871['prototype']['detachControl'] = function(_0x2bcbc0) { this['_leftjoystick']['releaseCanvas'](), this['_rightjoystick']['releaseCanvas'](); } , _0x158871['prototype']['getClassName'] = function() { return 'FreeCameraVirtualJoystickInput'; } , _0x158871['prototype']['getSimpleName'] = function() { return 'virtualJoystick'; } , _0x158871; }(); _0x11fe9a['FreeCameraVirtualJoystickInput'] = _0x472da2; var _0x4c37b8 = function(_0x465602) { function _0xe740dd(_0x1677e4, _0x52f6b3, _0x590548, _0x2df9d6) { void 0x0 === _0x2df9d6 && (_0x2df9d6 = !0x0); var _0x304ff6 = _0x465602['call'](this, _0x1677e4, _0x52f6b3, _0x590548, _0x2df9d6) || this; return _0x304ff6['cameraDirection'] = new _0x47d24f['x'](0x0,0x0,0x0), _0x304ff6['cameraRotation'] = new _0x47d24f['w'](0x0,0x0), _0x304ff6['updateUpVectorFromRotation'] = !0x1, _0x304ff6['_tmpQuaternion'] = new _0x47d24f['q'](), _0x304ff6['rotation'] = new _0x47d24f['x'](0x0,0x0,0x0), _0x304ff6['speed'] = 0x2, _0x304ff6['noRotationConstraint'] = !0x1, _0x304ff6['lockedTarget'] = null, _0x304ff6['_currentTarget'] = _0x47d24f['x']['Zero'](), _0x304ff6['_initialFocalDistance'] = 0x1, _0x304ff6['_viewMatrix'] = _0x47d24f['j']['Zero'](), _0x304ff6['_camMatrix'] = _0x47d24f['j']['Zero'](), _0x304ff6['_cameraTransformMatrix'] = _0x47d24f['j']['Zero'](), _0x304ff6['_cameraRotationMatrix'] = _0x47d24f['j']['Zero'](), _0x304ff6['_referencePoint'] = new _0x47d24f['x'](0x0,0x0,0x1), _0x304ff6['_transformedReferencePoint'] = _0x47d24f['x']['Zero'](), _0x304ff6['_globalCurrentTarget'] = _0x47d24f['x']['Zero'](), _0x304ff6['_globalCurrentUpVector'] = _0x47d24f['x']['Zero'](), _0x304ff6['_defaultUp'] = _0x47d24f['x']['Up'](), _0x304ff6['_cachedRotationZ'] = 0x0, _0x304ff6['_cachedQuaternionRotationZ'] = 0x0, _0x304ff6; } return _0x420e5b['d'](_0xe740dd, _0x465602), _0xe740dd['prototype']['getFrontPosition'] = function(_0x386f56) { this['getWorldMatrix'](); var _0x2004d3 = this['getTarget']()['subtract'](this['position']); return _0x2004d3['normalize'](), _0x2004d3['scaleInPlace'](_0x386f56), this['globalPosition']['add'](_0x2004d3); } , _0xe740dd['prototype']['_getLockedTargetPosition'] = function() { return this['lockedTarget'] ? (this['lockedTarget']['absolutePosition'] && this['lockedTarget']['computeWorldMatrix'](), this['lockedTarget']['absolutePosition'] || this['lockedTarget']) : null; } , _0xe740dd['prototype']['storeState'] = function() { return this['_storedPosition'] = this['position']['clone'](), this['_storedRotation'] = this['rotation']['clone'](), this['rotationQuaternion'] && (this['_storedRotationQuaternion'] = this['rotationQuaternion']['clone']()), _0x465602['prototype']['storeState']['call'](this); } , _0xe740dd['prototype']['_restoreStateValues'] = function() { return !!_0x465602['prototype']['_restoreStateValues']['call'](this) && (this['position'] = this['_storedPosition']['clone'](), this['rotation'] = this['_storedRotation']['clone'](), this['rotationQuaternion'] && (this['rotationQuaternion'] = this['_storedRotationQuaternion']['clone']()), this['cameraDirection']['copyFromFloats'](0x0, 0x0, 0x0), this['cameraRotation']['copyFromFloats'](0x0, 0x0), !0x0); } , _0xe740dd['prototype']['_initCache'] = function() { _0x465602['prototype']['_initCache']['call'](this), this['_cache']['lockedTarget'] = new _0x47d24f['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']), this['_cache']['rotation'] = new _0x47d24f['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']), this['_cache']['rotationQuaternion'] = new _0x47d24f['q'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']); } , _0xe740dd['prototype']['_updateCache'] = function(_0x5177c2) { _0x5177c2 || _0x465602['prototype']['_updateCache']['call'](this); var _0x2eeb81 = this['_getLockedTargetPosition'](); _0x2eeb81 ? this['_cache']['lockedTarget'] ? this['_cache']['lockedTarget']['copyFrom'](_0x2eeb81) : this['_cache']['lockedTarget'] = _0x2eeb81['clone']() : this['_cache']['lockedTarget'] = null, this['_cache']['rotation']['copyFrom'](this['rotation']), this['rotationQuaternion'] && this['_cache']['rotationQuaternion']['copyFrom'](this['rotationQuaternion']); } , _0xe740dd['prototype']['_isSynchronizedViewMatrix'] = function() { if (!_0x465602['prototype']['_isSynchronizedViewMatrix']['call'](this)) return !0x1; var _0x123e30 = this['_getLockedTargetPosition'](); return (this['_cache']['lockedTarget'] ? this['_cache']['lockedTarget']['equals'](_0x123e30) : !_0x123e30) && (this['rotationQuaternion'] ? this['rotationQuaternion']['equals'](this['_cache']['rotationQuaternion']) : this['_cache']['rotation']['equals'](this['rotation'])); } , _0xe740dd['prototype']['_computeLocalCameraSpeed'] = function() { var _0x3564ed = this['getEngine'](); return this['speed'] * Math['sqrt'](_0x3564ed['getDeltaTime']() / (0x64 * _0x3564ed['getFps']())); } , _0xe740dd['prototype']['setTarget'] = function(_0x4a1ce9) { this['upVector']['normalize'](), this['_initialFocalDistance'] = _0x4a1ce9['subtract'](this['position'])['length'](), this['position']['z'] === _0x4a1ce9['z'] && (this['position']['z'] += _0x47d24f['h']), _0x47d24f['j']['LookAtLHToRef'](this['position'], _0x4a1ce9, this['_defaultUp'], this['_camMatrix']), this['_camMatrix']['invert'](), this['rotation']['x'] = Math['atan'](this['_camMatrix']['m'][0x6] / this['_camMatrix']['m'][0xa]); var _0x2d4069 = _0x4a1ce9['subtract'](this['position']); _0x2d4069['x'] >= 0x0 ? this['rotation']['y'] = -Math['atan'](_0x2d4069['z'] / _0x2d4069['x']) + Math['PI'] / 0x2 : this['rotation']['y'] = -Math['atan'](_0x2d4069['z'] / _0x2d4069['x']) - Math['PI'] / 0x2, this['rotation']['z'] = 0x0, isNaN(this['rotation']['x']) && (this['rotation']['x'] = 0x0), isNaN(this['rotation']['y']) && (this['rotation']['y'] = 0x0), isNaN(this['rotation']['z']) && (this['rotation']['z'] = 0x0), this['rotationQuaternion'] && _0x47d24f['q']['RotationYawPitchRollToRef'](this['rotation']['y'], this['rotation']['x'], this['rotation']['z'], this['rotationQuaternion']); } , _0xe740dd['prototype']['getTarget'] = function() { return this['_currentTarget']; } , _0xe740dd['prototype']['_decideIfNeedsToMove'] = function() { return Math['abs'](this['cameraDirection']['x']) > 0x0 || Math['abs'](this['cameraDirection']['y']) > 0x0 || Math['abs'](this['cameraDirection']['z']) > 0x0; } , _0xe740dd['prototype']['_updatePosition'] = function() { if (this['parent']) return this['parent']['getWorldMatrix']()['invertToRef'](_0x47d24f['t']['Matrix'][0x0]), _0x47d24f['x']['TransformNormalToRef'](this['cameraDirection'], _0x47d24f['t']['Matrix'][0x0], _0x47d24f['t']['Vector3'][0x0]), void this['position']['addInPlace'](_0x47d24f['t']['Vector3'][0x0]); this['position']['addInPlace'](this['cameraDirection']); } , _0xe740dd['prototype']['_checkInputs'] = function() { var _0x5b2398 = this['_decideIfNeedsToMove']() , _0x4f3f4c = Math['abs'](this['cameraRotation']['x']) > 0x0 || Math['abs'](this['cameraRotation']['y']) > 0x0; if (_0x5b2398 && this['_updatePosition'](), _0x4f3f4c) { if (this['rotation']['x'] += this['cameraRotation']['x'], this['rotation']['y'] += this['cameraRotation']['y'], this['rotationQuaternion']) this['rotation']['lengthSquared']() && _0x47d24f['q']['RotationYawPitchRollToRef'](this['rotation']['y'], this['rotation']['x'], this['rotation']['z'], this['rotationQuaternion']); if (!this['noRotationConstraint']) { var _0x1ea399 = Math['PI'] / 0x2 * 0.95; this['rotation']['x'] > _0x1ea399 && (this['rotation']['x'] = _0x1ea399), this['rotation']['x'] < -_0x1ea399 && (this['rotation']['x'] = -_0x1ea399); } } _0x5b2398 && (Math['abs'](this['cameraDirection']['x']) < this['speed'] * _0x47d24f['h'] && (this['cameraDirection']['x'] = 0x0), Math['abs'](this['cameraDirection']['y']) < this['speed'] * _0x47d24f['h'] && (this['cameraDirection']['y'] = 0x0), Math['abs'](this['cameraDirection']['z']) < this['speed'] * _0x47d24f['h'] && (this['cameraDirection']['z'] = 0x0), this['cameraDirection']['scaleInPlace'](this['inertia'])), _0x4f3f4c && (Math['abs'](this['cameraRotation']['x']) < this['speed'] * _0x47d24f['h'] && (this['cameraRotation']['x'] = 0x0), Math['abs'](this['cameraRotation']['y']) < this['speed'] * _0x47d24f['h'] && (this['cameraRotation']['y'] = 0x0), this['cameraRotation']['scaleInPlace'](this['inertia'])), _0x465602['prototype']['_checkInputs']['call'](this); } , _0xe740dd['prototype']['_updateCameraRotationMatrix'] = function() { this['rotationQuaternion'] ? this['rotationQuaternion']['toRotationMatrix'](this['_cameraRotationMatrix']) : _0x47d24f['j']['RotationYawPitchRollToRef'](this['rotation']['y'], this['rotation']['x'], this['rotation']['z'], this['_cameraRotationMatrix']); } , _0xe740dd['prototype']['_rotateUpVectorWithCameraRotationMatrix'] = function() { return _0x47d24f['x']['TransformNormalToRef'](this['_defaultUp'], this['_cameraRotationMatrix'], this['upVector']), this; } , _0xe740dd['prototype']['_getViewMatrix'] = function() { return this['lockedTarget'] && this['setTarget'](this['_getLockedTargetPosition']()), this['_updateCameraRotationMatrix'](), this['rotationQuaternion'] && this['_cachedQuaternionRotationZ'] != this['rotationQuaternion']['z'] ? (this['_rotateUpVectorWithCameraRotationMatrix'](), this['_cachedQuaternionRotationZ'] = this['rotationQuaternion']['z']) : this['_cachedRotationZ'] != this['rotation']['z'] && (this['_rotateUpVectorWithCameraRotationMatrix'](), this['_cachedRotationZ'] = this['rotation']['z']), _0x47d24f['x']['TransformCoordinatesToRef'](this['_referencePoint'], this['_cameraRotationMatrix'], this['_transformedReferencePoint']), this['position']['addToRef'](this['_transformedReferencePoint'], this['_currentTarget']), this['updateUpVectorFromRotation'] && (this['rotationQuaternion'] ? _0x47d24f['c']['Y']['rotateByQuaternionToRef'](this['rotationQuaternion'], this['upVector']) : (_0x47d24f['q']['FromEulerVectorToRef'](this['rotation'], this['_tmpQuaternion']), _0x47d24f['c']['Y']['rotateByQuaternionToRef'](this['_tmpQuaternion'], this['upVector']))), this['_computeViewMatrix'](this['position'], this['_currentTarget'], this['upVector']), this['_viewMatrix']; } , _0xe740dd['prototype']['_computeViewMatrix'] = function(_0x4c925d, _0x44ffac, _0x15e237) { if (this['parent']) { var _0x189f05 = this['parent']['getWorldMatrix'](); _0x47d24f['x']['TransformCoordinatesToRef'](_0x4c925d, _0x189f05, this['_globalPosition']), _0x47d24f['x']['TransformCoordinatesToRef'](_0x44ffac, _0x189f05, this['_globalCurrentTarget']), _0x47d24f['x']['TransformNormalToRef'](_0x15e237, _0x189f05, this['_globalCurrentUpVector']), this['_markSyncedWithParent'](); } else this['_globalPosition']['copyFrom'](_0x4c925d), this['_globalCurrentTarget']['copyFrom'](_0x44ffac), this['_globalCurrentUpVector']['copyFrom'](_0x15e237); this['getScene']()['useRightHandedSystem'] ? _0x47d24f['j']['LookAtRHToRef'](this['_globalPosition'], this['_globalCurrentTarget'], this['_globalCurrentUpVector'], this['_viewMatrix']) : _0x47d24f['j']['LookAtLHToRef'](this['_globalPosition'], this['_globalCurrentTarget'], this['_globalCurrentUpVector'], this['_viewMatrix']); } , _0xe740dd['prototype']['createRigCamera'] = function(_0x567418, _0x5a5d1b) { if (this['cameraRigMode'] !== _0x4504cf['a']['RIG_MODE_NONE']) { var _0x156226 = new _0xe740dd(_0x567418,this['position']['clone'](),this['getScene']()); return this['cameraRigMode'] !== _0x4504cf['a']['RIG_MODE_VR'] && this['cameraRigMode'] !== _0x4504cf['a']['RIG_MODE_WEBVR'] || (this['rotationQuaternion'] || (this['rotationQuaternion'] = new _0x47d24f['q']()), _0x156226['_cameraRigParams'] = {}, _0x156226['rotationQuaternion'] = new _0x47d24f['q']()), _0x156226; } return null; } , _0xe740dd['prototype']['_updateRigCameras'] = function() { var _0x18d512 = this['_rigCameras'][0x0] , _0x433114 = this['_rigCameras'][0x1]; switch (this['computeWorldMatrix'](), this['cameraRigMode']) { case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_ANAGLYPH']: case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL']: case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED']: case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_OVERUNDER']: var _0x104a7a = this['cameraRigMode'] === _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED'] ? 0x1 : -0x1 , _0x469c20 = this['cameraRigMode'] === _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED'] ? -0x1 : 0x1; this['_getRigCamPositionAndTarget'](this['_cameraRigParams']['stereoHalfAngle'] * _0x104a7a, _0x18d512), this['_getRigCamPositionAndTarget'](this['_cameraRigParams']['stereoHalfAngle'] * _0x469c20, _0x433114); break; case _0x4504cf['a']['RIG_MODE_VR']: _0x18d512['rotationQuaternion'] ? (_0x18d512['rotationQuaternion']['copyFrom'](this['rotationQuaternion']), _0x433114['rotationQuaternion']['copyFrom'](this['rotationQuaternion'])) : (_0x18d512['rotation']['copyFrom'](this['rotation']), _0x433114['rotation']['copyFrom'](this['rotation'])), _0x18d512['position']['copyFrom'](this['position']), _0x433114['position']['copyFrom'](this['position']); } _0x465602['prototype']['_updateRigCameras']['call'](this); } , _0xe740dd['prototype']['_getRigCamPositionAndTarget'] = function(_0x3b44de, _0x4176e2) { this['getTarget']()['subtractToRef'](this['position'], _0xe740dd['_TargetFocalPoint']), _0xe740dd['_TargetFocalPoint']['normalize']()['scaleInPlace'](this['_initialFocalDistance']); var _0x381419 = _0xe740dd['_TargetFocalPoint']['addInPlace'](this['position']); _0x47d24f['j']['TranslationToRef'](-_0x381419['x'], -_0x381419['y'], -_0x381419['z'], _0xe740dd['_TargetTransformMatrix']), _0xe740dd['_TargetTransformMatrix']['multiplyToRef'](_0x47d24f['j']['RotationY'](_0x3b44de), _0xe740dd['_RigCamTransformMatrix']), _0x47d24f['j']['TranslationToRef'](_0x381419['x'], _0x381419['y'], _0x381419['z'], _0xe740dd['_TargetTransformMatrix']), _0xe740dd['_RigCamTransformMatrix']['multiplyToRef'](_0xe740dd['_TargetTransformMatrix'], _0xe740dd['_RigCamTransformMatrix']), _0x47d24f['x']['TransformCoordinatesToRef'](this['position'], _0xe740dd['_RigCamTransformMatrix'], _0x4176e2['position']), _0x4176e2['setTarget'](_0x381419); } , _0xe740dd['prototype']['getClassName'] = function() { return 'TargetCamera'; } , _0xe740dd['_RigCamTransformMatrix'] = new _0x47d24f['j'](), _0xe740dd['_TargetTransformMatrix'] = new _0x47d24f['j'](), _0xe740dd['_TargetFocalPoint'] = new _0x47d24f['x'](), _0x420e5b['c']([Object(_0x3d4764['o'])()], _0xe740dd['prototype'], 'rotation', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0xe740dd['prototype'], 'speed', void 0x0), _0x420e5b['c']([Object(_0x3d4764['k'])('lockedTargetId')], _0xe740dd['prototype'], 'lockedTarget', void 0x0), _0xe740dd; }(_0x4504cf['a']) , _0xebce26 = function(_0x981fc7) { function _0x2129fb(_0x44e5c7, _0x252d6b, _0x10d948, _0x9c2aaa) { void 0x0 === _0x9c2aaa && (_0x9c2aaa = !0x0); var _0x521a4f = _0x981fc7['call'](this, _0x44e5c7, _0x252d6b, _0x10d948, _0x9c2aaa) || this; return _0x521a4f['ellipsoid'] = new _0x47d24f['x'](0.5,0x1,0.5), _0x521a4f['ellipsoidOffset'] = new _0x47d24f['x'](0x0,0x0,0x0), _0x521a4f['checkCollisions'] = !0x1, _0x521a4f['applyGravity'] = !0x1, _0x521a4f['_needMoveForGravity'] = !0x1, _0x521a4f['_oldPosition'] = _0x47d24f['x']['Zero'](), _0x521a4f['_diffPosition'] = _0x47d24f['x']['Zero'](), _0x521a4f['_newPosition'] = _0x47d24f['x']['Zero'](), _0x521a4f['_collisionMask'] = -0x1, _0x521a4f['_onCollisionPositionChange'] = function(_0x5d59b1, _0x15f2d3, _0xe63bfd) { void 0x0 === _0xe63bfd && (_0xe63bfd = null); var _0x267533; _0x267533 = _0x15f2d3, _0x521a4f['_newPosition']['copyFrom'](_0x267533), _0x521a4f['_newPosition']['subtractToRef'](_0x521a4f['_oldPosition'], _0x521a4f['_diffPosition']), _0x521a4f['_diffPosition']['length']() > _0x3647a9['b']['CollisionsEpsilon'] && (_0x521a4f['position']['addInPlace'](_0x521a4f['_diffPosition']), _0x521a4f['onCollide'] && _0xe63bfd && _0x521a4f['onCollide'](_0xe63bfd)); } , _0x521a4f['inputs'] = new _0x368109(_0x521a4f), _0x521a4f['inputs']['addKeyboard']()['addMouse'](), _0x521a4f; } return _0x420e5b['d'](_0x2129fb, _0x981fc7), Object['defineProperty'](_0x2129fb['prototype'], 'angularSensibility', { 'get': function() { var _0x1aeb17 = this['inputs']['attached']['mouse']; return _0x1aeb17 ? _0x1aeb17['angularSensibility'] : 0x0; }, 'set': function(_0x7b22a) { var _0x453869 = this['inputs']['attached']['mouse']; _0x453869 && (_0x453869['angularSensibility'] = _0x7b22a); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2129fb['prototype'], 'keysUp', { 'get': function() { var _0x47a660 = this['inputs']['attached']['keyboard']; return _0x47a660 ? _0x47a660['keysUp'] : []; }, 'set': function(_0x388652) { var _0x303f6a = this['inputs']['attached']['keyboard']; _0x303f6a && (_0x303f6a['keysUp'] = _0x388652); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2129fb['prototype'], 'keysDown', { 'get': function() { var _0x3dbb2c = this['inputs']['attached']['keyboard']; return _0x3dbb2c ? _0x3dbb2c['keysDown'] : []; }, 'set': function(_0x591a94) { var _0x4f842e = this['inputs']['attached']['keyboard']; _0x4f842e && (_0x4f842e['keysDown'] = _0x591a94); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2129fb['prototype'], 'keysLeft', { 'get': function() { var _0xa30be8 = this['inputs']['attached']['keyboard']; return _0xa30be8 ? _0xa30be8['keysLeft'] : []; }, 'set': function(_0x45067f) { var _0x474b1f = this['inputs']['attached']['keyboard']; _0x474b1f && (_0x474b1f['keysLeft'] = _0x45067f); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2129fb['prototype'], 'keysRight', { 'get': function() { var _0x969905 = this['inputs']['attached']['keyboard']; return _0x969905 ? _0x969905['keysRight'] : []; }, 'set': function(_0x2fc7e7) { var _0x55cd76 = this['inputs']['attached']['keyboard']; _0x55cd76 && (_0x55cd76['keysRight'] = _0x2fc7e7); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2129fb['prototype']['attachControl'] = function(_0x509003, _0x31f957) { this['inputs']['attachElement'](_0x509003, _0x31f957); } , _0x2129fb['prototype']['detachControl'] = function(_0x135fb1) { this['inputs']['detachElement'](_0x135fb1), this['cameraDirection'] = new _0x47d24f['x'](0x0,0x0,0x0), this['cameraRotation'] = new _0x47d24f['w'](0x0,0x0); } , Object['defineProperty'](_0x2129fb['prototype'], 'collisionMask', { 'get': function() { return this['_collisionMask']; }, 'set': function(_0x1b58f6) { this['_collisionMask'] = isNaN(_0x1b58f6) ? -0x1 : _0x1b58f6; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2129fb['prototype']['_collideWithWorld'] = function(_0x41050e) { (this['parent'] ? _0x47d24f['x']['TransformCoordinates'](this['position'], this['parent']['getWorldMatrix']()) : this['position'])['subtractFromFloatsToRef'](0x0, this['ellipsoid']['y'], 0x0, this['_oldPosition']), this['_oldPosition']['addInPlace'](this['ellipsoidOffset']); var _0x3c20a1 = this['getScene']()['collisionCoordinator']; this['_collider'] || (this['_collider'] = _0x3c20a1['createCollider']()), this['_collider']['_radius'] = this['ellipsoid'], this['_collider']['collisionMask'] = this['_collisionMask']; var _0x49c7ff = _0x41050e; this['applyGravity'] && (_0x49c7ff = _0x41050e['add'](this['getScene']()['gravity'])), _0x3c20a1['getNewPosition'](this['_oldPosition'], _0x49c7ff, this['_collider'], 0x3, null, this['_onCollisionPositionChange'], this['uniqueId']); } , _0x2129fb['prototype']['_checkInputs'] = function() { this['_localDirection'] || (this['_localDirection'] = _0x47d24f['x']['Zero'](), this['_transformedDirection'] = _0x47d24f['x']['Zero']()), this['inputs']['checkInputs'](), _0x981fc7['prototype']['_checkInputs']['call'](this); } , _0x2129fb['prototype']['_decideIfNeedsToMove'] = function() { return this['_needMoveForGravity'] || Math['abs'](this['cameraDirection']['x']) > 0x0 || Math['abs'](this['cameraDirection']['y']) > 0x0 || Math['abs'](this['cameraDirection']['z']) > 0x0; } , _0x2129fb['prototype']['_updatePosition'] = function() { this['checkCollisions'] && this['getScene']()['collisionsEnabled'] ? this['_collideWithWorld'](this['cameraDirection']) : _0x981fc7['prototype']['_updatePosition']['call'](this); } , _0x2129fb['prototype']['dispose'] = function() { this['inputs']['clear'](), _0x981fc7['prototype']['dispose']['call'](this); } , _0x2129fb['prototype']['getClassName'] = function() { return 'FreeCamera'; } , _0x420e5b['c']([Object(_0x3d4764['o'])()], _0x2129fb['prototype'], 'ellipsoid', void 0x0), _0x420e5b['c']([Object(_0x3d4764['o'])()], _0x2129fb['prototype'], 'ellipsoidOffset', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2129fb['prototype'], 'checkCollisions', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2129fb['prototype'], 'applyGravity', void 0x0), _0x2129fb; }(_0x4c37b8); _0x111b09['a']['AddNodeConstructor']('TouchCamera', function(_0x189e89, _0x4d7ae8) { return function() { return new _0x5a90a0(_0x189e89,_0x47d24f['x']['Zero'](),_0x4d7ae8); } ; }); var _0x5a90a0 = function(_0x46a633) { function _0x438974(_0x2e4a78, _0x1cb6e5, _0x2b79d6) { var _0x23b6d2 = _0x46a633['call'](this, _0x2e4a78, _0x1cb6e5, _0x2b79d6) || this; return _0x23b6d2['inputs']['addTouch'](), _0x23b6d2['_setupInputs'](), _0x23b6d2; } return _0x420e5b['d'](_0x438974, _0x46a633), Object['defineProperty'](_0x438974['prototype'], 'touchAngularSensibility', { 'get': function() { var _0x206237 = this['inputs']['attached']['touch']; return _0x206237 ? _0x206237['touchAngularSensibility'] : 0x0; }, 'set': function(_0x3fe229) { var _0x412f4c = this['inputs']['attached']['touch']; _0x412f4c && (_0x412f4c['touchAngularSensibility'] = _0x3fe229); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x438974['prototype'], 'touchMoveSensibility', { 'get': function() { var _0x417fc0 = this['inputs']['attached']['touch']; return _0x417fc0 ? _0x417fc0['touchMoveSensibility'] : 0x0; }, 'set': function(_0x4e36a6) { var _0x226aeb = this['inputs']['attached']['touch']; _0x226aeb && (_0x226aeb['touchMoveSensibility'] = _0x4e36a6); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x438974['prototype']['getClassName'] = function() { return 'TouchCamera'; } , _0x438974['prototype']['_setupInputs'] = function() { var _0x23ca3d = this['inputs']['attached']['mouse']; _0x23ca3d && (_0x23ca3d['touchEnabled'] = !0x1); } , _0x438974; }(_0xebce26); _0x111b09['a']['AddNodeConstructor']('ArcRotateCamera', function(_0x3f0ee3, _0x81ef4b) { return function() { return new _0x1fd852(_0x3f0ee3,0x0,0x0,0x1,_0x47d24f['x']['Zero'](),_0x81ef4b); } ; }); var _0x1fd852 = function(_0x20608f) { function _0x48916c(_0x572b88, _0x3ef570, _0x3d4d4d, _0x29f39a, _0x3fef8c, _0x2806fe, _0x535239) { void 0x0 === _0x535239 && (_0x535239 = !0x0); var _0x18cc3b = _0x20608f['call'](this, _0x572b88, _0x47d24f['x']['Zero'](), _0x2806fe, _0x535239) || this; return _0x18cc3b['_upVector'] = _0x47d24f['x']['Up'](), _0x18cc3b['inertialAlphaOffset'] = 0x0, _0x18cc3b['inertialBetaOffset'] = 0x0, _0x18cc3b['inertialRadiusOffset'] = 0x0, _0x18cc3b['lowerAlphaLimit'] = null, _0x18cc3b['upperAlphaLimit'] = null, _0x18cc3b['lowerBetaLimit'] = 0.01, _0x18cc3b['upperBetaLimit'] = Math['PI'] - 0.01, _0x18cc3b['lowerRadiusLimit'] = null, _0x18cc3b['upperRadiusLimit'] = null, _0x18cc3b['inertialPanningX'] = 0x0, _0x18cc3b['inertialPanningY'] = 0x0, _0x18cc3b['pinchToPanMaxDistance'] = 0x14, _0x18cc3b['panningDistanceLimit'] = null, _0x18cc3b['panningOriginTarget'] = _0x47d24f['x']['Zero'](), _0x18cc3b['panningInertia'] = 0.9, _0x18cc3b['zoomOnFactor'] = 0x1, _0x18cc3b['targetScreenOffset'] = _0x47d24f['w']['Zero'](), _0x18cc3b['allowUpsideDown'] = !0x0, _0x18cc3b['useInputToRestoreState'] = !0x0, _0x18cc3b['_viewMatrix'] = new _0x47d24f['j'](), _0x18cc3b['panningAxis'] = new _0x47d24f['x'](0x1,0x1,0x0), _0x18cc3b['onMeshTargetChangedObservable'] = new _0x2dbec2['c'](), _0x18cc3b['checkCollisions'] = !0x1, _0x18cc3b['collisionRadius'] = new _0x47d24f['x'](0.5,0.5,0.5), _0x18cc3b['_previousPosition'] = _0x47d24f['x']['Zero'](), _0x18cc3b['_collisionVelocity'] = _0x47d24f['x']['Zero'](), _0x18cc3b['_newPosition'] = _0x47d24f['x']['Zero'](), _0x18cc3b['_computationVector'] = _0x47d24f['x']['Zero'](), _0x18cc3b['_onCollisionPositionChange'] = function(_0x56a9cd, _0x170b24, _0x414996) { void 0x0 === _0x414996 && (_0x414996 = null), _0x414996 ? (_0x18cc3b['setPosition'](_0x170b24), _0x18cc3b['onCollide'] && _0x18cc3b['onCollide'](_0x414996)) : _0x18cc3b['_previousPosition']['copyFrom'](_0x18cc3b['_position']); var _0x3d7420 = Math['cos'](_0x18cc3b['alpha']) , _0x2aabe0 = Math['sin'](_0x18cc3b['alpha']) , _0x167808 = Math['cos'](_0x18cc3b['beta']) , _0x5c3241 = Math['sin'](_0x18cc3b['beta']); 0x0 === _0x5c3241 && (_0x5c3241 = 0.0001); var _0x1a87ae = _0x18cc3b['_getTargetPosition'](); _0x18cc3b['_computationVector']['copyFromFloats'](_0x18cc3b['radius'] * _0x3d7420 * _0x5c3241, _0x18cc3b['radius'] * _0x167808, _0x18cc3b['radius'] * _0x2aabe0 * _0x5c3241), _0x1a87ae['addToRef'](_0x18cc3b['_computationVector'], _0x18cc3b['_newPosition']), _0x18cc3b['_position']['copyFrom'](_0x18cc3b['_newPosition']); var _0xef2639 = _0x18cc3b['upVector']; _0x18cc3b['allowUpsideDown'] && _0x18cc3b['beta'] < 0x0 && (_0xef2639 = (_0xef2639 = _0xef2639['clone']())['negate']()), _0x18cc3b['_computeViewMatrix'](_0x18cc3b['_position'], _0x1a87ae, _0xef2639), _0x18cc3b['_viewMatrix']['addAtIndex'](0xc, _0x18cc3b['targetScreenOffset']['x']), _0x18cc3b['_viewMatrix']['addAtIndex'](0xd, _0x18cc3b['targetScreenOffset']['y']), _0x18cc3b['_collisionTriggered'] = !0x1; } , _0x18cc3b['_target'] = _0x47d24f['x']['Zero'](), _0x3fef8c && _0x18cc3b['setTarget'](_0x3fef8c), _0x18cc3b['alpha'] = _0x3ef570, _0x18cc3b['beta'] = _0x3d4d4d, _0x18cc3b['radius'] = _0x29f39a, _0x18cc3b['getViewMatrix'](), _0x18cc3b['inputs'] = new _0x13f537(_0x18cc3b), _0x18cc3b['inputs']['addKeyboard']()['addMouseWheel']()['addPointers'](), _0x18cc3b; } return _0x420e5b['d'](_0x48916c, _0x20608f), Object['defineProperty'](_0x48916c['prototype'], 'target', { 'get': function() { return this['_target']; }, 'set': function(_0x53e81d) { this['setTarget'](_0x53e81d); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'position', { 'get': function() { return this['_position']; }, 'set': function(_0x308291) { this['setPosition'](_0x308291); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'upVector', { 'get': function() { return this['_upVector']; }, 'set': function(_0x102ddb) { this['_upToYMatrix'] || (this['_YToUpMatrix'] = new _0x47d24f['j'](), this['_upToYMatrix'] = new _0x47d24f['j'](), this['_upVector'] = _0x47d24f['x']['Zero']()), _0x102ddb['normalize'](), this['_upVector']['copyFrom'](_0x102ddb), this['setMatUp'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x48916c['prototype']['setMatUp'] = function() { _0x47d24f['j']['RotationAlignToRef'](_0x47d24f['x']['UpReadOnly'], this['_upVector'], this['_YToUpMatrix']), _0x47d24f['j']['RotationAlignToRef'](this['_upVector'], _0x47d24f['x']['UpReadOnly'], this['_upToYMatrix']); } , Object['defineProperty'](_0x48916c['prototype'], 'angularSensibilityX', { 'get': function() { var _0x448f0d = this['inputs']['attached']['pointers']; return _0x448f0d ? _0x448f0d['angularSensibilityX'] : 0x0; }, 'set': function(_0x40b524) { var _0xad0d6a = this['inputs']['attached']['pointers']; _0xad0d6a && (_0xad0d6a['angularSensibilityX'] = _0x40b524); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'angularSensibilityY', { 'get': function() { var _0x3de2ac = this['inputs']['attached']['pointers']; return _0x3de2ac ? _0x3de2ac['angularSensibilityY'] : 0x0; }, 'set': function(_0x8a7027) { var _0xc7d279 = this['inputs']['attached']['pointers']; _0xc7d279 && (_0xc7d279['angularSensibilityY'] = _0x8a7027); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'pinchPrecision', { 'get': function() { var _0x3f7740 = this['inputs']['attached']['pointers']; return _0x3f7740 ? _0x3f7740['pinchPrecision'] : 0x0; }, 'set': function(_0x40d17b) { var _0x51784b = this['inputs']['attached']['pointers']; _0x51784b && (_0x51784b['pinchPrecision'] = _0x40d17b); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'pinchDeltaPercentage', { 'get': function() { var _0x3df93d = this['inputs']['attached']['pointers']; return _0x3df93d ? _0x3df93d['pinchDeltaPercentage'] : 0x0; }, 'set': function(_0x476c87) { var _0x6947e0 = this['inputs']['attached']['pointers']; _0x6947e0 && (_0x6947e0['pinchDeltaPercentage'] = _0x476c87); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'panningSensibility', { 'get': function() { var _0x208fa4 = this['inputs']['attached']['pointers']; return _0x208fa4 ? _0x208fa4['panningSensibility'] : 0x0; }, 'set': function(_0x2f5295) { var _0x3d1dae = this['inputs']['attached']['pointers']; _0x3d1dae && (_0x3d1dae['panningSensibility'] = _0x2f5295); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'keysUp', { 'get': function() { var _0x323754 = this['inputs']['attached']['keyboard']; return _0x323754 ? _0x323754['keysUp'] : []; }, 'set': function(_0x4dc46b) { var _0x5949f7 = this['inputs']['attached']['keyboard']; _0x5949f7 && (_0x5949f7['keysUp'] = _0x4dc46b); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'keysDown', { 'get': function() { var _0x31c2b7 = this['inputs']['attached']['keyboard']; return _0x31c2b7 ? _0x31c2b7['keysDown'] : []; }, 'set': function(_0x547a13) { var _0xc26f84 = this['inputs']['attached']['keyboard']; _0xc26f84 && (_0xc26f84['keysDown'] = _0x547a13); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'keysLeft', { 'get': function() { var _0x38b846 = this['inputs']['attached']['keyboard']; return _0x38b846 ? _0x38b846['keysLeft'] : []; }, 'set': function(_0x3494f0) { var _0x4da4bd = this['inputs']['attached']['keyboard']; _0x4da4bd && (_0x4da4bd['keysLeft'] = _0x3494f0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'keysRight', { 'get': function() { var _0x331a56 = this['inputs']['attached']['keyboard']; return _0x331a56 ? _0x331a56['keysRight'] : []; }, 'set': function(_0x2bc511) { var _0x531e87 = this['inputs']['attached']['keyboard']; _0x531e87 && (_0x531e87['keysRight'] = _0x2bc511); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'wheelPrecision', { 'get': function() { var _0x44abf2 = this['inputs']['attached']['mousewheel']; return _0x44abf2 ? _0x44abf2['wheelPrecision'] : 0x0; }, 'set': function(_0x4f64bb) { var _0x2623d9 = this['inputs']['attached']['mousewheel']; _0x2623d9 && (_0x2623d9['wheelPrecision'] = _0x4f64bb); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'wheelDeltaPercentage', { 'get': function() { var _0x43dc5f = this['inputs']['attached']['mousewheel']; return _0x43dc5f ? _0x43dc5f['wheelDeltaPercentage'] : 0x0; }, 'set': function(_0x4196b6) { var _0x2323d3 = this['inputs']['attached']['mousewheel']; _0x2323d3 && (_0x2323d3['wheelDeltaPercentage'] = _0x4196b6); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'bouncingBehavior', { 'get': function() { return this['_bouncingBehavior']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'useBouncingBehavior', { 'get': function() { return null != this['_bouncingBehavior']; }, 'set': function(_0x506ccb) { _0x506ccb !== this['useBouncingBehavior'] && (_0x506ccb ? (this['_bouncingBehavior'] = new _0x4648c8(), this['addBehavior'](this['_bouncingBehavior'])) : this['_bouncingBehavior'] && (this['removeBehavior'](this['_bouncingBehavior']), this['_bouncingBehavior'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'framingBehavior', { 'get': function() { return this['_framingBehavior']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'useFramingBehavior', { 'get': function() { return null != this['_framingBehavior']; }, 'set': function(_0x1c30f9) { _0x1c30f9 !== this['useFramingBehavior'] && (_0x1c30f9 ? (this['_framingBehavior'] = new _0x50a884(), this['addBehavior'](this['_framingBehavior'])) : this['_framingBehavior'] && (this['removeBehavior'](this['_framingBehavior']), this['_framingBehavior'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'autoRotationBehavior', { 'get': function() { return this['_autoRotationBehavior']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x48916c['prototype'], 'useAutoRotationBehavior', { 'get': function() { return null != this['_autoRotationBehavior']; }, 'set': function(_0x4d4bca) { _0x4d4bca !== this['useAutoRotationBehavior'] && (_0x4d4bca ? (this['_autoRotationBehavior'] = new _0x26d2c7(), this['addBehavior'](this['_autoRotationBehavior'])) : this['_autoRotationBehavior'] && (this['removeBehavior'](this['_autoRotationBehavior']), this['_autoRotationBehavior'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x48916c['prototype']['_initCache'] = function() { _0x20608f['prototype']['_initCache']['call'](this), this['_cache']['_target'] = new _0x47d24f['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']), this['_cache']['alpha'] = void 0x0, this['_cache']['beta'] = void 0x0, this['_cache']['radius'] = void 0x0, this['_cache']['targetScreenOffset'] = _0x47d24f['w']['Zero'](); } , _0x48916c['prototype']['_updateCache'] = function(_0x31f333) { _0x31f333 || _0x20608f['prototype']['_updateCache']['call'](this), this['_cache']['_target']['copyFrom'](this['_getTargetPosition']()), this['_cache']['alpha'] = this['alpha'], this['_cache']['beta'] = this['beta'], this['_cache']['radius'] = this['radius'], this['_cache']['targetScreenOffset']['copyFrom'](this['targetScreenOffset']); } , _0x48916c['prototype']['_getTargetPosition'] = function() { if (this['_targetHost'] && this['_targetHost']['getAbsolutePosition']) { var _0x233b33 = this['_targetHost']['absolutePosition']; this['_targetBoundingCenter'] ? _0x233b33['addToRef'](this['_targetBoundingCenter'], this['_target']) : this['_target']['copyFrom'](_0x233b33); } var _0x555f4c = this['_getLockedTargetPosition'](); return _0x555f4c || this['_target']; } , _0x48916c['prototype']['storeState'] = function() { return this['_storedAlpha'] = this['alpha'], this['_storedBeta'] = this['beta'], this['_storedRadius'] = this['radius'], this['_storedTarget'] = this['_getTargetPosition']()['clone'](), _0x20608f['prototype']['storeState']['call'](this); } , _0x48916c['prototype']['_restoreStateValues'] = function() { return !!_0x20608f['prototype']['_restoreStateValues']['call'](this) && (this['alpha'] = this['_storedAlpha'], this['beta'] = this['_storedBeta'], this['radius'] = this['_storedRadius'], this['setTarget'](this['_storedTarget']['clone']()), this['inertialAlphaOffset'] = 0x0, this['inertialBetaOffset'] = 0x0, this['inertialRadiusOffset'] = 0x0, this['inertialPanningX'] = 0x0, this['inertialPanningY'] = 0x0, !0x0); } , _0x48916c['prototype']['_isSynchronizedViewMatrix'] = function() { return !!_0x20608f['prototype']['_isSynchronizedViewMatrix']['call'](this) && (this['_cache']['_target']['equals'](this['_getTargetPosition']()) && this['_cache']['alpha'] === this['alpha'] && this['_cache']['beta'] === this['beta'] && this['_cache']['radius'] === this['radius'] && this['_cache']['targetScreenOffset']['equals'](this['targetScreenOffset'])); } , _0x48916c['prototype']['attachControl'] = function(_0x1dc5c1, _0x516d39, _0x35d731, _0x128e68) { var _0x46de72 = this; void 0x0 === _0x35d731 && (_0x35d731 = !0x0), void 0x0 === _0x128e68 && (_0x128e68 = 0x2), this['_useCtrlForPanning'] = _0x35d731, this['_panningMouseButton'] = _0x128e68, this['inputs']['attachElement'](_0x1dc5c1, _0x516d39), this['_reset'] = function() { _0x46de72['inertialAlphaOffset'] = 0x0, _0x46de72['inertialBetaOffset'] = 0x0, _0x46de72['inertialRadiusOffset'] = 0x0, _0x46de72['inertialPanningX'] = 0x0, _0x46de72['inertialPanningY'] = 0x0; } ; } , _0x48916c['prototype']['detachControl'] = function(_0xbd353e) { this['inputs']['detachElement'](_0xbd353e), this['_reset'] && this['_reset'](); } , _0x48916c['prototype']['_checkInputs'] = function() { if (!this['_collisionTriggered']) { if (this['inputs']['checkInputs'](), 0x0 !== this['inertialAlphaOffset'] || 0x0 !== this['inertialBetaOffset'] || 0x0 !== this['inertialRadiusOffset']) { var _0x4f4df5 = this['inertialAlphaOffset']; this['beta'] <= 0x0 && (_0x4f4df5 *= -0x1), this['getScene']()['useRightHandedSystem'] && (_0x4f4df5 *= -0x1), this['parent'] && this['parent']['_getWorldMatrixDeterminant']() < 0x0 && (_0x4f4df5 *= -0x1), this['alpha'] += _0x4f4df5, this['beta'] += this['inertialBetaOffset'], this['radius'] -= this['inertialRadiusOffset'], this['inertialAlphaOffset'] *= this['inertia'], this['inertialBetaOffset'] *= this['inertia'], this['inertialRadiusOffset'] *= this['inertia'], Math['abs'](this['inertialAlphaOffset']) < _0x47d24f['h'] && (this['inertialAlphaOffset'] = 0x0), Math['abs'](this['inertialBetaOffset']) < _0x47d24f['h'] && (this['inertialBetaOffset'] = 0x0), Math['abs'](this['inertialRadiusOffset']) < this['speed'] * _0x47d24f['h'] && (this['inertialRadiusOffset'] = 0x0); } if (0x0 !== this['inertialPanningX'] || 0x0 !== this['inertialPanningY']) { if (this['_localDirection'] || (this['_localDirection'] = _0x47d24f['x']['Zero'](), this['_transformedDirection'] = _0x47d24f['x']['Zero']()), this['_localDirection']['copyFromFloats'](this['inertialPanningX'], this['inertialPanningY'], this['inertialPanningY']), this['_localDirection']['multiplyInPlace'](this['panningAxis']), this['_viewMatrix']['invertToRef'](this['_cameraTransformMatrix']), _0x47d24f['x']['TransformNormalToRef'](this['_localDirection'], this['_cameraTransformMatrix'], this['_transformedDirection']), this['panningAxis']['y'] || (this['_transformedDirection']['y'] = 0x0), !this['_targetHost']) if (this['panningDistanceLimit']) this['_transformedDirection']['addInPlace'](this['_target']), _0x47d24f['x']['DistanceSquared'](this['_transformedDirection'], this['panningOriginTarget']) <= this['panningDistanceLimit'] * this['panningDistanceLimit'] && this['_target']['copyFrom'](this['_transformedDirection']); else this['_target']['addInPlace'](this['_transformedDirection']); this['inertialPanningX'] *= this['panningInertia'], this['inertialPanningY'] *= this['panningInertia'], Math['abs'](this['inertialPanningX']) < this['speed'] * _0x47d24f['h'] && (this['inertialPanningX'] = 0x0), Math['abs'](this['inertialPanningY']) < this['speed'] * _0x47d24f['h'] && (this['inertialPanningY'] = 0x0); } this['_checkLimits'](), _0x20608f['prototype']['_checkInputs']['call'](this); } } , _0x48916c['prototype']['_checkLimits'] = function() { null === this['lowerBetaLimit'] || void 0x0 === this['lowerBetaLimit'] ? this['allowUpsideDown'] && this['beta'] > Math['PI'] && (this['beta'] = this['beta'] - 0x2 * Math['PI']) : this['beta'] < this['lowerBetaLimit'] && (this['beta'] = this['lowerBetaLimit']), null === this['upperBetaLimit'] || void 0x0 === this['upperBetaLimit'] ? this['allowUpsideDown'] && this['beta'] < -Math['PI'] && (this['beta'] = this['beta'] + 0x2 * Math['PI']) : this['beta'] > this['upperBetaLimit'] && (this['beta'] = this['upperBetaLimit']), null !== this['lowerAlphaLimit'] && this['alpha'] < this['lowerAlphaLimit'] && (this['alpha'] = this['lowerAlphaLimit']), null !== this['upperAlphaLimit'] && this['alpha'] > this['upperAlphaLimit'] && (this['alpha'] = this['upperAlphaLimit']), null !== this['lowerRadiusLimit'] && this['radius'] < this['lowerRadiusLimit'] && (this['radius'] = this['lowerRadiusLimit'], this['inertialRadiusOffset'] = 0x0), null !== this['upperRadiusLimit'] && this['radius'] > this['upperRadiusLimit'] && (this['radius'] = this['upperRadiusLimit'], this['inertialRadiusOffset'] = 0x0); } , _0x48916c['prototype']['rebuildAnglesAndRadius'] = function() { this['_position']['subtractToRef'](this['_getTargetPosition'](), this['_computationVector']), 0x0 === this['_upVector']['x'] && 0x1 === this['_upVector']['y'] && 0x0 === this['_upVector']['z'] || _0x47d24f['x']['TransformCoordinatesToRef'](this['_computationVector'], this['_upToYMatrix'], this['_computationVector']), this['radius'] = this['_computationVector']['length'](), 0x0 === this['radius'] && (this['radius'] = 0.0001), 0x0 === this['_computationVector']['x'] && 0x0 === this['_computationVector']['z'] ? this['alpha'] = Math['PI'] / 0x2 : this['alpha'] = Math['acos'](this['_computationVector']['x'] / Math['sqrt'](Math['pow'](this['_computationVector']['x'], 0x2) + Math['pow'](this['_computationVector']['z'], 0x2))), this['_computationVector']['z'] < 0x0 && (this['alpha'] = 0x2 * Math['PI'] - this['alpha']), this['beta'] = Math['acos'](this['_computationVector']['y'] / this['radius']), this['_checkLimits'](); } , _0x48916c['prototype']['setPosition'] = function(_0x18b483) { this['_position']['equals'](_0x18b483) || (this['_position']['copyFrom'](_0x18b483), this['rebuildAnglesAndRadius']()); } , _0x48916c['prototype']['setTarget'] = function(_0x4935e5, _0x395f1b, _0x195340) { if (void 0x0 === _0x395f1b && (_0x395f1b = !0x1), void 0x0 === _0x195340 && (_0x195340 = !0x1), _0x4935e5['getBoundingInfo']) this['_targetBoundingCenter'] = _0x395f1b ? _0x4935e5['getBoundingInfo']()['boundingBox']['centerWorld']['clone']() : null, _0x4935e5['computeWorldMatrix'](), this['_targetHost'] = _0x4935e5, this['_target'] = this['_getTargetPosition'](), this['onMeshTargetChangedObservable']['notifyObservers'](this['_targetHost']); else { var _0x5c5c39 = _0x4935e5 , _0x24aa83 = this['_getTargetPosition'](); if (_0x24aa83 && !_0x195340 && _0x24aa83['equals'](_0x5c5c39)) return; this['_targetHost'] = null, this['_target'] = _0x5c5c39, this['_targetBoundingCenter'] = null, this['onMeshTargetChangedObservable']['notifyObservers'](null); } this['rebuildAnglesAndRadius'](); } , _0x48916c['prototype']['_getViewMatrix'] = function() { var _0x14d74d = Math['cos'](this['alpha']) , _0x59d696 = Math['sin'](this['alpha']) , _0x585601 = Math['cos'](this['beta']) , _0x2a6f55 = Math['sin'](this['beta']); 0x0 === _0x2a6f55 && (_0x2a6f55 = 0.0001); var _0x2b706b = this['_getTargetPosition'](); if (this['_computationVector']['copyFromFloats'](this['radius'] * _0x14d74d * _0x2a6f55, this['radius'] * _0x585601, this['radius'] * _0x59d696 * _0x2a6f55), 0x0 === this['_upVector']['x'] && 0x1 === this['_upVector']['y'] && 0x0 === this['_upVector']['z'] || _0x47d24f['x']['TransformCoordinatesToRef'](this['_computationVector'], this['_YToUpMatrix'], this['_computationVector']), _0x2b706b['addToRef'](this['_computationVector'], this['_newPosition']), this['getScene']()['collisionsEnabled'] && this['checkCollisions']) { var _0x399c06 = this['getScene']()['collisionCoordinator']; this['_collider'] || (this['_collider'] = _0x399c06['createCollider']()), this['_collider']['_radius'] = this['collisionRadius'], this['_newPosition']['subtractToRef'](this['_position'], this['_collisionVelocity']), this['_collisionTriggered'] = !0x0, _0x399c06['getNewPosition'](this['_position'], this['_collisionVelocity'], this['_collider'], 0x3, null, this['_onCollisionPositionChange'], this['uniqueId']); } else { this['_position']['copyFrom'](this['_newPosition']); var _0x4209b7 = this['upVector']; this['allowUpsideDown'] && _0x2a6f55 < 0x0 && (_0x4209b7 = (_0x4209b7 = _0x4209b7['clone']())['negate']()), this['_computeViewMatrix'](this['_position'], _0x2b706b, _0x4209b7), this['_viewMatrix']['addAtIndex'](0xc, this['targetScreenOffset']['x']), this['_viewMatrix']['addAtIndex'](0xd, this['targetScreenOffset']['y']); } return this['_currentTarget'] = _0x2b706b, this['_viewMatrix']; } , _0x48916c['prototype']['zoomOn'] = function(_0x1e03ac, _0x3bbfc5) { void 0x0 === _0x3bbfc5 && (_0x3bbfc5 = !0x1), _0x1e03ac = _0x1e03ac || this['getScene']()['meshes']; var _0x59749a = _0xb4719b['a']['MinMax'](_0x1e03ac) , _0x38b320 = _0x47d24f['x']['Distance'](_0x59749a['min'], _0x59749a['max']); this['radius'] = _0x38b320 * this['zoomOnFactor'], this['focusOn']({ 'min': _0x59749a['min'], 'max': _0x59749a['max'], 'distance': _0x38b320 }, _0x3bbfc5); } , _0x48916c['prototype']['focusOn'] = function(_0x4de4d8, _0x3911ab) { var _0x45d761, _0x50d721; if (void 0x0 === _0x3911ab && (_0x3911ab = !0x1), void 0x0 === _0x4de4d8['min']) { var _0x2501bc = _0x4de4d8 || this['getScene']()['meshes']; _0x45d761 = _0xb4719b['a']['MinMax'](_0x2501bc), _0x50d721 = _0x47d24f['x']['Distance'](_0x45d761['min'], _0x45d761['max']); } else { _0x45d761 = _0x4de4d8, _0x50d721 = _0x4de4d8['distance']; } this['_target'] = _0xb4719b['a']['Center'](_0x45d761), _0x3911ab || (this['maxZ'] = 0x2 * _0x50d721); } , _0x48916c['prototype']['createRigCamera'] = function(_0x33f907, _0x27a6ca) { var _0x52a0c4 = 0x0; switch (this['cameraRigMode']) { case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_ANAGLYPH']: case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL']: case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_OVERUNDER']: case _0x4504cf['a']['RIG_MODE_VR']: _0x52a0c4 = this['_cameraRigParams']['stereoHalfAngle'] * (0x0 === _0x27a6ca ? 0x1 : -0x1); break; case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED']: _0x52a0c4 = this['_cameraRigParams']['stereoHalfAngle'] * (0x0 === _0x27a6ca ? -0x1 : 0x1); } var _0x42ffea = new _0x48916c(_0x33f907,this['alpha'] + _0x52a0c4,this['beta'],this['radius'],this['_target'],this['getScene']()); return _0x42ffea['_cameraRigParams'] = {}, _0x42ffea; } , _0x48916c['prototype']['_updateRigCameras'] = function() { var _0x349d31 = this['_rigCameras'][0x0] , _0x97ea32 = this['_rigCameras'][0x1]; switch (_0x349d31['beta'] = _0x97ea32['beta'] = this['beta'], this['cameraRigMode']) { case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_ANAGLYPH']: case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL']: case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_OVERUNDER']: case _0x4504cf['a']['RIG_MODE_VR']: _0x349d31['alpha'] = this['alpha'] - this['_cameraRigParams']['stereoHalfAngle'], _0x97ea32['alpha'] = this['alpha'] + this['_cameraRigParams']['stereoHalfAngle']; break; case _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED']: _0x349d31['alpha'] = this['alpha'] + this['_cameraRigParams']['stereoHalfAngle'], _0x97ea32['alpha'] = this['alpha'] - this['_cameraRigParams']['stereoHalfAngle']; } _0x20608f['prototype']['_updateRigCameras']['call'](this); } , _0x48916c['prototype']['dispose'] = function() { this['inputs']['clear'](), _0x20608f['prototype']['dispose']['call'](this); } , _0x48916c['prototype']['getClassName'] = function() { return 'ArcRotateCamera'; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'alpha', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'beta', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'radius', void 0x0), _0x420e5b['c']([Object(_0x3d4764['o'])('target')], _0x48916c['prototype'], '_target', void 0x0), _0x420e5b['c']([Object(_0x3d4764['o'])('upVector')], _0x48916c['prototype'], '_upVector', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'inertialAlphaOffset', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'inertialBetaOffset', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'inertialRadiusOffset', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'lowerAlphaLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'upperAlphaLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'lowerBetaLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'upperBetaLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'lowerRadiusLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'upperRadiusLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'inertialPanningX', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'inertialPanningY', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'pinchToPanMaxDistance', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'panningDistanceLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['o'])()], _0x48916c['prototype'], 'panningOriginTarget', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'panningInertia', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'zoomOnFactor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'targetScreenOffset', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'allowUpsideDown', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x48916c['prototype'], 'useInputToRestoreState', void 0x0), _0x48916c; }(_0x4c37b8); _0x111b09['a']['AddNodeConstructor']('DeviceOrientationCamera', function(_0x16948b, _0x57b6cf) { return function() { return new _0x1cae74(_0x16948b,_0x47d24f['x']['Zero'](),_0x57b6cf); } ; }); var _0x1cae74 = function(_0x229dbb) { function _0x2534f8(_0x11e0b9, _0x20d448, _0x136043) { var _0x3c1497 = _0x229dbb['call'](this, _0x11e0b9, _0x20d448, _0x136043) || this; return _0x3c1497['_tmpDragQuaternion'] = new _0x47d24f['q'](), _0x3c1497['_disablePointerInputWhenUsingDeviceOrientation'] = !0x0, _0x3c1497['_dragFactor'] = 0x0, _0x3c1497['_quaternionCache'] = new _0x47d24f['q'](), _0x3c1497['inputs']['addDeviceOrientation'](), _0x3c1497['inputs']['_deviceOrientationInput'] && _0x3c1497['inputs']['_deviceOrientationInput']['_onDeviceOrientationChangedObservable']['addOnce'](function() { _0x3c1497['_disablePointerInputWhenUsingDeviceOrientation'] && _0x3c1497['inputs']['_mouseInput'] && (_0x3c1497['inputs']['_mouseInput']['_allowCameraRotation'] = !0x1, _0x3c1497['inputs']['_mouseInput']['onPointerMovedObservable']['add'](function(_0x39c598) { 0x0 != _0x3c1497['_dragFactor'] && (_0x3c1497['_initialQuaternion'] || (_0x3c1497['_initialQuaternion'] = new _0x47d24f['q']()), _0x47d24f['q']['FromEulerAnglesToRef'](0x0, _0x39c598['offsetX'] * _0x3c1497['_dragFactor'], 0x0, _0x3c1497['_tmpDragQuaternion']), _0x3c1497['_initialQuaternion']['multiplyToRef'](_0x3c1497['_tmpDragQuaternion'], _0x3c1497['_initialQuaternion'])); })); }), _0x3c1497; } return _0x420e5b['d'](_0x2534f8, _0x229dbb), _0x2534f8['prototype']['enableHorizontalDragging'] = function(_0x578653) { void 0x0 === _0x578653 && (_0x578653 = 0x1 / 0x12c), this['_dragFactor'] = _0x578653; } , _0x2534f8['prototype']['getClassName'] = function() { return 'DeviceOrientationCamera'; } , _0x2534f8['prototype']['_checkInputs'] = function() { _0x229dbb['prototype']['_checkInputs']['call'](this), this['_quaternionCache']['copyFrom'](this['rotationQuaternion']), this['_initialQuaternion'] && this['_initialQuaternion']['multiplyToRef'](this['rotationQuaternion'], this['rotationQuaternion']); } , _0x2534f8['prototype']['resetToCurrentRotation'] = function(_0x44befb) { var _0x49d2d8 = this; void 0x0 === _0x44befb && (_0x44befb = _0x47d24f['c']['Y']), this['rotationQuaternion'] && (this['_initialQuaternion'] || (this['_initialQuaternion'] = new _0x47d24f['q']()), this['_initialQuaternion']['copyFrom'](this['_quaternionCache'] || this['rotationQuaternion']), ['x', 'y', 'z']['forEach'](function(_0x53ad88) { _0x44befb[_0x53ad88] ? _0x49d2d8['_initialQuaternion'][_0x53ad88] *= -0x1 : _0x49d2d8['_initialQuaternion'][_0x53ad88] = 0x0; }), this['_initialQuaternion']['normalize'](), this['_initialQuaternion']['multiplyToRef'](this['rotationQuaternion'], this['rotationQuaternion'])); } , _0x2534f8; }(_0xebce26) , _0x31d159 = function(_0x370238) { function _0x5d474e(_0x4e88bf) { return _0x370238['call'](this, _0x4e88bf) || this; } return _0x420e5b['d'](_0x5d474e, _0x370238), _0x5d474e['prototype']['addKeyboard'] = function() { return this['add'](new _0x1d5ddb()), this; } , _0x5d474e['prototype']['addMouse'] = function(_0x5a8ca5) { return void 0x0 === _0x5a8ca5 && (_0x5a8ca5 = !0x0), this['add'](new _0xb29847(_0x5a8ca5)), this; } , _0x5d474e; }(_0x21d8d9) , _0x17cc19 = function(_0x330834) { function _0x1efed7(_0x580ce6, _0x161f45, _0x25c021, _0x51ecdc) { void 0x0 === _0x51ecdc && (_0x51ecdc = !0x0); var _0x584f4d = _0x330834['call'](this, _0x580ce6, _0x161f45, _0x25c021, _0x51ecdc) || this; return _0x584f4d['ellipsoid'] = new _0x47d24f['x'](0x1,0x1,0x1), _0x584f4d['ellipsoidOffset'] = new _0x47d24f['x'](0x0,0x0,0x0), _0x584f4d['checkCollisions'] = !0x1, _0x584f4d['applyGravity'] = !0x1, _0x584f4d['cameraDirection'] = _0x47d24f['x']['Zero'](), _0x584f4d['_trackRoll'] = 0x0, _0x584f4d['rollCorrect'] = 0x64, _0x584f4d['bankedTurn'] = !0x1, _0x584f4d['bankedTurnLimit'] = Math['PI'] / 0x2, _0x584f4d['bankedTurnMultiplier'] = 0x1, _0x584f4d['_needMoveForGravity'] = !0x1, _0x584f4d['_oldPosition'] = _0x47d24f['x']['Zero'](), _0x584f4d['_diffPosition'] = _0x47d24f['x']['Zero'](), _0x584f4d['_newPosition'] = _0x47d24f['x']['Zero'](), _0x584f4d['_collisionMask'] = -0x1, _0x584f4d['_onCollisionPositionChange'] = function(_0x372af3, _0x101e28, _0xea1aa1) { void 0x0 === _0xea1aa1 && (_0xea1aa1 = null); var _0x2e0095; _0x2e0095 = _0x101e28, _0x584f4d['_newPosition']['copyFrom'](_0x2e0095), _0x584f4d['_newPosition']['subtractToRef'](_0x584f4d['_oldPosition'], _0x584f4d['_diffPosition']), _0x584f4d['_diffPosition']['length']() > _0x3647a9['b']['CollisionsEpsilon'] && (_0x584f4d['position']['addInPlace'](_0x584f4d['_diffPosition']), _0x584f4d['onCollide'] && _0xea1aa1 && _0x584f4d['onCollide'](_0xea1aa1)); } , _0x584f4d['inputs'] = new _0x31d159(_0x584f4d), _0x584f4d['inputs']['addKeyboard']()['addMouse'](), _0x584f4d; } return _0x420e5b['d'](_0x1efed7, _0x330834), Object['defineProperty'](_0x1efed7['prototype'], 'angularSensibility', { 'get': function() { var _0x40946b = this['inputs']['attached']['mouse']; return _0x40946b ? _0x40946b['angularSensibility'] : 0x0; }, 'set': function(_0x585df3) { var _0x3020ee = this['inputs']['attached']['mouse']; _0x3020ee && (_0x3020ee['angularSensibility'] = _0x585df3); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1efed7['prototype'], 'keysForward', { 'get': function() { var _0x2696b5 = this['inputs']['attached']['keyboard']; return _0x2696b5 ? _0x2696b5['keysForward'] : []; }, 'set': function(_0x148052) { var _0x54fa9d = this['inputs']['attached']['keyboard']; _0x54fa9d && (_0x54fa9d['keysForward'] = _0x148052); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1efed7['prototype'], 'keysBackward', { 'get': function() { var _0xb04022 = this['inputs']['attached']['keyboard']; return _0xb04022 ? _0xb04022['keysBackward'] : []; }, 'set': function(_0x274277) { var _0x4d4f4b = this['inputs']['attached']['keyboard']; _0x4d4f4b && (_0x4d4f4b['keysBackward'] = _0x274277); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1efed7['prototype'], 'keysUp', { 'get': function() { var _0x358e1c = this['inputs']['attached']['keyboard']; return _0x358e1c ? _0x358e1c['keysUp'] : []; }, 'set': function(_0x5197dd) { var _0x482264 = this['inputs']['attached']['keyboard']; _0x482264 && (_0x482264['keysUp'] = _0x5197dd); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1efed7['prototype'], 'keysDown', { 'get': function() { var _0x4a30ed = this['inputs']['attached']['keyboard']; return _0x4a30ed ? _0x4a30ed['keysDown'] : []; }, 'set': function(_0x497581) { var _0xfd360c = this['inputs']['attached']['keyboard']; _0xfd360c && (_0xfd360c['keysDown'] = _0x497581); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1efed7['prototype'], 'keysLeft', { 'get': function() { var _0x2d916 = this['inputs']['attached']['keyboard']; return _0x2d916 ? _0x2d916['keysLeft'] : []; }, 'set': function(_0x222031) { var _0x354a3e = this['inputs']['attached']['keyboard']; _0x354a3e && (_0x354a3e['keysLeft'] = _0x222031); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1efed7['prototype'], 'keysRight', { 'get': function() { var _0x427263 = this['inputs']['attached']['keyboard']; return _0x427263 ? _0x427263['keysRight'] : []; }, 'set': function(_0x32cb8f) { var _0x1c7086 = this['inputs']['attached']['keyboard']; _0x1c7086 && (_0x1c7086['keysRight'] = _0x32cb8f); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1efed7['prototype']['attachControl'] = function(_0x5ef2c4, _0x43807f) { this['inputs']['attachElement'](_0x5ef2c4, _0x43807f); } , _0x1efed7['prototype']['detachControl'] = function(_0x5ec40b) { this['inputs']['detachElement'](_0x5ec40b), this['cameraDirection'] = new _0x47d24f['x'](0x0,0x0,0x0); } , Object['defineProperty'](_0x1efed7['prototype'], 'collisionMask', { 'get': function() { return this['_collisionMask']; }, 'set': function(_0x282fcf) { this['_collisionMask'] = isNaN(_0x282fcf) ? -0x1 : _0x282fcf; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1efed7['prototype']['_collideWithWorld'] = function(_0x48d517) { (this['parent'] ? _0x47d24f['x']['TransformCoordinates'](this['position'], this['parent']['getWorldMatrix']()) : this['position'])['subtractFromFloatsToRef'](0x0, this['ellipsoid']['y'], 0x0, this['_oldPosition']), this['_oldPosition']['addInPlace'](this['ellipsoidOffset']); var _0x3516b3 = this['getScene']()['collisionCoordinator']; this['_collider'] || (this['_collider'] = _0x3516b3['createCollider']()), this['_collider']['_radius'] = this['ellipsoid'], this['_collider']['collisionMask'] = this['_collisionMask']; var _0x54c9b2 = _0x48d517; this['applyGravity'] && (_0x54c9b2 = _0x48d517['add'](this['getScene']()['gravity'])), _0x3516b3['getNewPosition'](this['_oldPosition'], _0x54c9b2, this['_collider'], 0x3, null, this['_onCollisionPositionChange'], this['uniqueId']); } , _0x1efed7['prototype']['_checkInputs'] = function() { this['_localDirection'] || (this['_localDirection'] = _0x47d24f['x']['Zero'](), this['_transformedDirection'] = _0x47d24f['x']['Zero']()), this['inputs']['checkInputs'](), _0x330834['prototype']['_checkInputs']['call'](this); } , _0x1efed7['prototype']['_decideIfNeedsToMove'] = function() { return this['_needMoveForGravity'] || Math['abs'](this['cameraDirection']['x']) > 0x0 || Math['abs'](this['cameraDirection']['y']) > 0x0 || Math['abs'](this['cameraDirection']['z']) > 0x0; } , _0x1efed7['prototype']['_updatePosition'] = function() { this['checkCollisions'] && this['getScene']()['collisionsEnabled'] ? this['_collideWithWorld'](this['cameraDirection']) : _0x330834['prototype']['_updatePosition']['call'](this); } , _0x1efed7['prototype']['restoreRoll'] = function(_0x2b5c47) { var _0x4616f4 = this['_trackRoll'] , _0x34df0f = _0x4616f4 - this['rotation']['z']; Math['abs'](_0x34df0f) >= 0.001 && (this['rotation']['z'] += _0x34df0f / _0x2b5c47, Math['abs'](_0x4616f4 - this['rotation']['z']) <= 0.001 && (this['rotation']['z'] = _0x4616f4)); } , _0x1efed7['prototype']['dispose'] = function() { this['inputs']['clear'](), _0x330834['prototype']['dispose']['call'](this); } , _0x1efed7['prototype']['getClassName'] = function() { return 'FlyCamera'; } , _0x420e5b['c']([Object(_0x3d4764['o'])()], _0x1efed7['prototype'], 'ellipsoid', void 0x0), _0x420e5b['c']([Object(_0x3d4764['o'])()], _0x1efed7['prototype'], 'ellipsoidOffset', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1efed7['prototype'], 'checkCollisions', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1efed7['prototype'], 'applyGravity', void 0x0), _0x1efed7; }(_0x4c37b8) , _0x43e940 = function(_0x3c7ca2) { function _0x237c09(_0x46ab2e) { return _0x3c7ca2['call'](this, _0x46ab2e) || this; } return _0x420e5b['d'](_0x237c09, _0x3c7ca2), _0x237c09['prototype']['addKeyboard'] = function() { return this['add'](new _0x1ccc6f()), this; } , _0x237c09['prototype']['addMouseWheel'] = function() { return this['add'](new _0x1713da()), this; } , _0x237c09['prototype']['addPointers'] = function() { return this['add'](new _0x4da969()), this; } , _0x237c09['prototype']['addVRDeviceOrientation'] = function() { return console['warn']('DeviceOrientation\x20support\x20not\x20yet\x20implemented\x20for\x20FollowCamera.'), this; } , _0x237c09; }(_0x21d8d9); _0x111b09['a']['AddNodeConstructor']('FollowCamera', function(_0x3c739a, _0x1c659e) { return function() { return new _0x355f0c(_0x3c739a,_0x47d24f['x']['Zero'](),_0x1c659e); } ; }), _0x111b09['a']['AddNodeConstructor']('ArcFollowCamera', function(_0x433034, _0x222811) { return function() { return new _0x47910e(_0x433034,0x0,0x0,0x1,null,_0x222811); } ; }); var _0x5496d4, _0x355f0c = function(_0x5f5517) { function _0x291fe4(_0x13bba4, _0x5526c0, _0x9f0f7c, _0x52bc2a) { void 0x0 === _0x52bc2a && (_0x52bc2a = null); var _0x57f716 = _0x5f5517['call'](this, _0x13bba4, _0x5526c0, _0x9f0f7c) || this; return _0x57f716['radius'] = 0xc, _0x57f716['lowerRadiusLimit'] = null, _0x57f716['upperRadiusLimit'] = null, _0x57f716['rotationOffset'] = 0x0, _0x57f716['lowerRotationOffsetLimit'] = null, _0x57f716['upperRotationOffsetLimit'] = null, _0x57f716['heightOffset'] = 0x4, _0x57f716['lowerHeightOffsetLimit'] = null, _0x57f716['upperHeightOffsetLimit'] = null, _0x57f716['cameraAcceleration'] = 0.05, _0x57f716['maxCameraSpeed'] = 0x14, _0x57f716['lockedTarget'] = _0x52bc2a, _0x57f716['inputs'] = new _0x43e940(_0x57f716), _0x57f716['inputs']['addKeyboard']()['addMouseWheel']()['addPointers'](), _0x57f716; } return _0x420e5b['d'](_0x291fe4, _0x5f5517), _0x291fe4['prototype']['_follow'] = function(_0x10d760) { if (_0x10d760) { var _0x5d16d2; if (_0x10d760['rotationQuaternion']) { var _0x271edf = new _0x47d24f['j'](); _0x10d760['rotationQuaternion']['toRotationMatrix'](_0x271edf), _0x5d16d2 = Math['atan2'](_0x271edf['m'][0x8], _0x271edf['m'][0xa]); } else _0x5d16d2 = _0x10d760['rotation']['y']; var _0x1dfe0a = _0x1eb50e['h']['ToRadians'](this['rotationOffset']) + _0x5d16d2 , _0x2aaf16 = _0x10d760['getAbsolutePosition']() , _0x3d487e = _0x2aaf16['x'] + Math['sin'](_0x1dfe0a) * this['radius'] , _0x19aa3d = _0x2aaf16['z'] + Math['cos'](_0x1dfe0a) * this['radius'] , _0x1bed74 = _0x3d487e - this['position']['x'] , _0x559345 = _0x2aaf16['y'] + this['heightOffset'] - this['position']['y'] , _0x3b07e3 = _0x19aa3d - this['position']['z'] , _0x1da660 = _0x1bed74 * this['cameraAcceleration'] * 0x2 , _0x31e8a8 = _0x559345 * this['cameraAcceleration'] , _0x3f4a74 = _0x3b07e3 * this['cameraAcceleration'] * 0x2; (_0x1da660 > this['maxCameraSpeed'] || _0x1da660 < -this['maxCameraSpeed']) && (_0x1da660 = _0x1da660 < 0x1 ? -this['maxCameraSpeed'] : this['maxCameraSpeed']), (_0x31e8a8 > this['maxCameraSpeed'] || _0x31e8a8 < -this['maxCameraSpeed']) && (_0x31e8a8 = _0x31e8a8 < 0x1 ? -this['maxCameraSpeed'] : this['maxCameraSpeed']), (_0x3f4a74 > this['maxCameraSpeed'] || _0x3f4a74 < -this['maxCameraSpeed']) && (_0x3f4a74 = _0x3f4a74 < 0x1 ? -this['maxCameraSpeed'] : this['maxCameraSpeed']), this['position'] = new _0x47d24f['x'](this['position']['x'] + _0x1da660,this['position']['y'] + _0x31e8a8,this['position']['z'] + _0x3f4a74), this['setTarget'](_0x2aaf16); } } , _0x291fe4['prototype']['attachControl'] = function(_0x5c34ac, _0xe89569) { this['inputs']['attachElement'](_0x5c34ac, _0xe89569), this['_reset'] = function() {} ; } , _0x291fe4['prototype']['detachControl'] = function(_0x5b731f) { this['inputs']['detachElement'](_0x5b731f), this['_reset'] && this['_reset'](); } , _0x291fe4['prototype']['_checkInputs'] = function() { this['inputs']['checkInputs'](), this['_checkLimits'](), _0x5f5517['prototype']['_checkInputs']['call'](this), this['lockedTarget'] && this['_follow'](this['lockedTarget']); } , _0x291fe4['prototype']['_checkLimits'] = function() { null !== this['lowerRadiusLimit'] && this['radius'] < this['lowerRadiusLimit'] && (this['radius'] = this['lowerRadiusLimit']), null !== this['upperRadiusLimit'] && this['radius'] > this['upperRadiusLimit'] && (this['radius'] = this['upperRadiusLimit']), null !== this['lowerHeightOffsetLimit'] && this['heightOffset'] < this['lowerHeightOffsetLimit'] && (this['heightOffset'] = this['lowerHeightOffsetLimit']), null !== this['upperHeightOffsetLimit'] && this['heightOffset'] > this['upperHeightOffsetLimit'] && (this['heightOffset'] = this['upperHeightOffsetLimit']), null !== this['lowerRotationOffsetLimit'] && this['rotationOffset'] < this['lowerRotationOffsetLimit'] && (this['rotationOffset'] = this['lowerRotationOffsetLimit']), null !== this['upperRotationOffsetLimit'] && this['rotationOffset'] > this['upperRotationOffsetLimit'] && (this['rotationOffset'] = this['upperRotationOffsetLimit']); } , _0x291fe4['prototype']['getClassName'] = function() { return 'FollowCamera'; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x291fe4['prototype'], 'radius', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x291fe4['prototype'], 'lowerRadiusLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x291fe4['prototype'], 'upperRadiusLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x291fe4['prototype'], 'rotationOffset', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x291fe4['prototype'], 'lowerRotationOffsetLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x291fe4['prototype'], 'upperRotationOffsetLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x291fe4['prototype'], 'heightOffset', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x291fe4['prototype'], 'lowerHeightOffsetLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x291fe4['prototype'], 'upperHeightOffsetLimit', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x291fe4['prototype'], 'cameraAcceleration', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x291fe4['prototype'], 'maxCameraSpeed', void 0x0), _0x420e5b['c']([Object(_0x3d4764['k'])('lockedTargetId')], _0x291fe4['prototype'], 'lockedTarget', void 0x0), _0x291fe4; }(_0x4c37b8), _0x47910e = function(_0x58ebc5) { function _0x824fd3(_0x135b19, _0xfcdfca, _0x16cdd4, _0x1d48a3, _0x27c651, _0x1506d4) { var _0x43aaa3 = _0x58ebc5['call'](this, _0x135b19, _0x47d24f['x']['Zero'](), _0x1506d4) || this; return _0x43aaa3['alpha'] = _0xfcdfca, _0x43aaa3['beta'] = _0x16cdd4, _0x43aaa3['radius'] = _0x1d48a3, _0x43aaa3['target'] = _0x27c651, _0x43aaa3['_cartesianCoordinates'] = _0x47d24f['x']['Zero'](), _0x43aaa3['_follow'](), _0x43aaa3; } return _0x420e5b['d'](_0x824fd3, _0x58ebc5), _0x824fd3['prototype']['_follow'] = function() { if (this['target']) { this['_cartesianCoordinates']['x'] = this['radius'] * Math['cos'](this['alpha']) * Math['cos'](this['beta']), this['_cartesianCoordinates']['y'] = this['radius'] * Math['sin'](this['beta']), this['_cartesianCoordinates']['z'] = this['radius'] * Math['sin'](this['alpha']) * Math['cos'](this['beta']); var _0x11f372 = this['target']['getAbsolutePosition'](); this['position'] = _0x11f372['add'](this['_cartesianCoordinates']), this['setTarget'](_0x11f372); } } , _0x824fd3['prototype']['_checkInputs'] = function() { _0x58ebc5['prototype']['_checkInputs']['call'](this), this['_follow'](); } , _0x824fd3['prototype']['getClassName'] = function() { return 'ArcFollowCamera'; } , _0x824fd3; }(_0x4c37b8), _0x32d626 = _0x59bd00(0x23), _0x19e5af = _0x59bd00(0x27); !function(_0x3ec2bb) { _0x3ec2bb[_0x3ec2bb['VIVE'] = 0x0] = 'VIVE', _0x3ec2bb[_0x3ec2bb['OCULUS'] = 0x1] = 'OCULUS', _0x3ec2bb[_0x3ec2bb['WINDOWS'] = 0x2] = 'WINDOWS', _0x3ec2bb[_0x3ec2bb['GEAR_VR'] = 0x3] = 'GEAR_VR', _0x3ec2bb[_0x3ec2bb['DAYDREAM'] = 0x4] = 'DAYDREAM', _0x3ec2bb[_0x3ec2bb['GENERIC'] = 0x5] = 'GENERIC'; }(_0x5496d4 || (_0x5496d4 = {})); var _0x1364a4, _0x5894ac, _0xe1c9ed = function() { function _0x2a52e8() {} return _0x2a52e8['InitiateController'] = function(_0x51f9ae) { for (var _0x2d36ee = 0x0, _0x791ead = this['_ControllerFactories']; _0x2d36ee < _0x791ead['length']; _0x2d36ee++) { var _0x528bbf = _0x791ead[_0x2d36ee]; if (_0x528bbf['canCreate'](_0x51f9ae)) return _0x528bbf['create'](_0x51f9ae); } if (this['_DefaultControllerFactory']) return this['_DefaultControllerFactory'](_0x51f9ae); throw 'The\x20type\x20of\x20gamepad\x20you\x20are\x20trying\x20to\x20load\x20needs\x20to\x20be\x20imported\x20first\x20or\x20is\x20not\x20supported.'; } , _0x2a52e8['_ControllerFactories'] = [], _0x2a52e8['_DefaultControllerFactory'] = null, _0x2a52e8; }(), _0x20e106 = function(_0x57b58e) { function _0x346186(_0x4d08a7) { var _0x162aa3 = _0x57b58e['call'](this, _0x4d08a7['id'], _0x4d08a7['index'], _0x4d08a7) || this; return _0x162aa3['_deviceRoomPosition'] = _0x47d24f['x']['Zero'](), _0x162aa3['_deviceRoomRotationQuaternion'] = new _0x47d24f['q'](), _0x162aa3['devicePosition'] = _0x47d24f['x']['Zero'](), _0x162aa3['deviceRotationQuaternion'] = new _0x47d24f['q'](), _0x162aa3['deviceScaleFactor'] = 0x1, _0x162aa3['_trackPosition'] = !0x0, _0x162aa3['_maxRotationDistFromHeadset'] = Math['PI'] / 0x5, _0x162aa3['_draggedRoomRotation'] = 0x0, _0x162aa3['_leftHandSystemQuaternion'] = new _0x47d24f['q'](), _0x162aa3['_deviceToWorld'] = _0x47d24f['j']['Identity'](), _0x162aa3['_pointingPoseNode'] = null, _0x162aa3['_workingMatrix'] = _0x47d24f['j']['Identity'](), _0x162aa3['_meshAttachedObservable'] = new _0x2dbec2['c'](), _0x162aa3['type'] = _0x591e86['POSE_ENABLED'], _0x162aa3['controllerType'] = _0x5496d4['GENERIC'], _0x162aa3['position'] = _0x47d24f['x']['Zero'](), _0x162aa3['rotationQuaternion'] = new _0x47d24f['q'](), _0x162aa3['_calculatedPosition'] = _0x47d24f['x']['Zero'](), _0x162aa3['_calculatedRotation'] = new _0x47d24f['q'](), _0x47d24f['q']['RotationYawPitchRollToRef'](Math['PI'], 0x0, 0x0, _0x162aa3['_leftHandSystemQuaternion']), _0x162aa3; } return _0x420e5b['d'](_0x346186, _0x57b58e), _0x346186['prototype']['_disableTrackPosition'] = function(_0x176acd) { this['_trackPosition'] && (this['_calculatedPosition']['copyFrom'](_0x176acd), this['_trackPosition'] = !0x1); } , _0x346186['prototype']['update'] = function() { _0x57b58e['prototype']['update']['call'](this), this['_updatePoseAndMesh'](); } , _0x346186['prototype']['_updatePoseAndMesh'] = function() { var _0x2b8646 = this['browserGamepad']['pose']; if ((this['updateFromDevice'](_0x2b8646), !this['_trackPosition'] && _0x48707b['a']['LastCreatedScene'] && _0x48707b['a']['LastCreatedScene']['activeCamera'] && _0x48707b['a']['LastCreatedScene']['activeCamera']['devicePosition']) && ((_0x2460b9 = _0x48707b['a']['LastCreatedScene']['activeCamera'])['_computeDevicePosition'](), this['_deviceToWorld']['setTranslation'](_0x2460b9['devicePosition']), _0x2460b9['deviceRotationQuaternion'])) { var _0x2460b9; (_0x2460b9 = _0x2460b9)['_deviceRoomRotationQuaternion']['toEulerAnglesToRef'](_0x47d24f['t']['Vector3'][0x0]); var _0x359b57 = Math['atan2'](Math['sin'](_0x47d24f['t']['Vector3'][0x0]['y'] - this['_draggedRoomRotation']), Math['cos'](_0x47d24f['t']['Vector3'][0x0]['y'] - this['_draggedRoomRotation'])); if (Math['abs'](_0x359b57) > this['_maxRotationDistFromHeadset']) { var _0x4c08f0 = _0x359b57 - (_0x359b57 < 0x0 ? -this['_maxRotationDistFromHeadset'] : this['_maxRotationDistFromHeadset']); this['_draggedRoomRotation'] += _0x4c08f0; var _0x3eb009 = Math['sin'](-_0x4c08f0) , _0x2fc5c3 = Math['cos'](-_0x4c08f0); this['_calculatedPosition']['x'] = this['_calculatedPosition']['x'] * _0x2fc5c3 - this['_calculatedPosition']['z'] * _0x3eb009, this['_calculatedPosition']['z'] = this['_calculatedPosition']['x'] * _0x3eb009 + this['_calculatedPosition']['z'] * _0x2fc5c3; } } _0x47d24f['x']['TransformCoordinatesToRef'](this['_calculatedPosition'], this['_deviceToWorld'], this['devicePosition']), this['_deviceToWorld']['getRotationMatrixToRef'](this['_workingMatrix']), _0x47d24f['q']['FromRotationMatrixToRef'](this['_workingMatrix'], this['deviceRotationQuaternion']), this['deviceRotationQuaternion']['multiplyInPlace'](this['_calculatedRotation']), this['_mesh'] && (this['_mesh']['position']['copyFrom'](this['devicePosition']), this['_mesh']['rotationQuaternion'] && this['_mesh']['rotationQuaternion']['copyFrom'](this['deviceRotationQuaternion'])); } , _0x346186['prototype']['updateFromDevice'] = function(_0x1a46fa) { if (_0x1a46fa) { this['rawPose'] = _0x1a46fa, _0x1a46fa['position'] && (this['_deviceRoomPosition']['copyFromFloats'](_0x1a46fa['position'][0x0], _0x1a46fa['position'][0x1], -_0x1a46fa['position'][0x2]), this['_mesh'] && this['_mesh']['getScene']()['useRightHandedSystem'] && (this['_deviceRoomPosition']['z'] *= -0x1), this['_trackPosition'] && this['_deviceRoomPosition']['scaleToRef'](this['deviceScaleFactor'], this['_calculatedPosition']), this['_calculatedPosition']['addInPlace'](this['position'])); var _0xbfdb36 = this['rawPose']; _0x1a46fa['orientation'] && _0xbfdb36['orientation'] && (this['_deviceRoomRotationQuaternion']['copyFromFloats'](_0xbfdb36['orientation'][0x0], _0xbfdb36['orientation'][0x1], -_0xbfdb36['orientation'][0x2], -_0xbfdb36['orientation'][0x3]), this['_mesh'] && (this['_mesh']['getScene']()['useRightHandedSystem'] ? (this['_deviceRoomRotationQuaternion']['z'] *= -0x1, this['_deviceRoomRotationQuaternion']['w'] *= -0x1) : this['_deviceRoomRotationQuaternion']['multiplyToRef'](this['_leftHandSystemQuaternion'], this['_deviceRoomRotationQuaternion'])), this['_deviceRoomRotationQuaternion']['multiplyToRef'](this['rotationQuaternion'], this['_calculatedRotation'])); } } , _0x346186['prototype']['attachToMesh'] = function(_0x4770af) { if (this['_mesh'] && (this['_mesh']['parent'] = null), this['_mesh'] = _0x4770af, this['_poseControlledCamera'] && (this['_mesh']['parent'] = this['_poseControlledCamera']), this['_mesh']['rotationQuaternion'] || (this['_mesh']['rotationQuaternion'] = new _0x47d24f['q']()), this['_updatePoseAndMesh'](), this['_pointingPoseNode']) { for (var _0x58ce27 = [], _0x514877 = this['_pointingPoseNode']; _0x514877['parent']; ) _0x58ce27['push'](_0x514877['parent']), _0x514877 = _0x514877['parent']; _0x58ce27['reverse']()['forEach'](function(_0x5217c1) { _0x5217c1['computeWorldMatrix'](!0x0); }); } this['_meshAttachedObservable']['notifyObservers'](_0x4770af); } , _0x346186['prototype']['attachToPoseControlledCamera'] = function(_0x2584d8) { this['_poseControlledCamera'] = _0x2584d8, this['_mesh'] && (this['_mesh']['parent'] = this['_poseControlledCamera']); } , _0x346186['prototype']['dispose'] = function() { this['_mesh'] && this['_mesh']['dispose'](), this['_mesh'] = null, _0x57b58e['prototype']['dispose']['call'](this); } , Object['defineProperty'](_0x346186['prototype'], 'mesh', { 'get': function() { return this['_mesh']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x346186['prototype']['getForwardRay'] = function(_0x482de4) { if (void 0x0 === _0x482de4 && (_0x482de4 = 0x64), !this['mesh']) return new _0x19e5af['a'](_0x47d24f['x']['Zero'](),new _0x47d24f['x'](0x0,0x0,0x1),_0x482de4); var _0x499992 = this['_pointingPoseNode'] ? this['_pointingPoseNode']['getWorldMatrix']() : this['mesh']['getWorldMatrix']() , _0x24a92c = _0x499992['getTranslation']() , _0x357801 = new _0x47d24f['x'](0x0,0x0,-0x1) , _0x3a2d5f = _0x47d24f['x']['TransformNormal'](_0x357801, _0x499992) , _0x4131e3 = _0x47d24f['x']['Normalize'](_0x3a2d5f); return new _0x19e5af['a'](_0x24a92c,_0x4131e3,_0x482de4); } , _0x346186['POINTING_POSE'] = 'POINTING_POSE', _0x346186; }(_0x591e86); !function(_0x30b714) { _0x30b714[_0x30b714['A'] = 0x0] = 'A', _0x30b714[_0x30b714['B'] = 0x1] = 'B', _0x30b714[_0x30b714['X'] = 0x2] = 'X', _0x30b714[_0x30b714['Y'] = 0x3] = 'Y', _0x30b714[_0x30b714['Start'] = 0x4] = 'Start', _0x30b714[_0x30b714['Back'] = 0x5] = 'Back', _0x30b714[_0x30b714['LB'] = 0x6] = 'LB', _0x30b714[_0x30b714['RB'] = 0x7] = 'RB', _0x30b714[_0x30b714['LeftStick'] = 0x8] = 'LeftStick', _0x30b714[_0x30b714['RightStick'] = 0x9] = 'RightStick'; }(_0x1364a4 || (_0x1364a4 = {})), function(_0x5a0bd9) { _0x5a0bd9[_0x5a0bd9['Up'] = 0x0] = 'Up', _0x5a0bd9[_0x5a0bd9['Down'] = 0x1] = 'Down', _0x5a0bd9[_0x5a0bd9['Left'] = 0x2] = 'Left', _0x5a0bd9[_0x5a0bd9['Right'] = 0x3] = 'Right'; }(_0x5894ac || (_0x5894ac = {})); var _0x3f0248 = function(_0x538a98) { function _0x30e67a(_0x34b298, _0x468017, _0x29dc87, _0x51ff06) { void 0x0 === _0x51ff06 && (_0x51ff06 = !0x1); var _0x5e39ed = _0x538a98['call'](this, _0x34b298, _0x468017, _0x29dc87, 0x0, 0x1, 0x2, 0x3) || this; return _0x5e39ed['_leftTrigger'] = 0x0, _0x5e39ed['_rightTrigger'] = 0x0, _0x5e39ed['onButtonDownObservable'] = new _0x2dbec2['c'](), _0x5e39ed['onButtonUpObservable'] = new _0x2dbec2['c'](), _0x5e39ed['onPadDownObservable'] = new _0x2dbec2['c'](), _0x5e39ed['onPadUpObservable'] = new _0x2dbec2['c'](), _0x5e39ed['_buttonA'] = 0x0, _0x5e39ed['_buttonB'] = 0x0, _0x5e39ed['_buttonX'] = 0x0, _0x5e39ed['_buttonY'] = 0x0, _0x5e39ed['_buttonBack'] = 0x0, _0x5e39ed['_buttonStart'] = 0x0, _0x5e39ed['_buttonLB'] = 0x0, _0x5e39ed['_buttonRB'] = 0x0, _0x5e39ed['_buttonLeftStick'] = 0x0, _0x5e39ed['_buttonRightStick'] = 0x0, _0x5e39ed['_dPadUp'] = 0x0, _0x5e39ed['_dPadDown'] = 0x0, _0x5e39ed['_dPadLeft'] = 0x0, _0x5e39ed['_dPadRight'] = 0x0, _0x5e39ed['_isXboxOnePad'] = !0x1, _0x5e39ed['type'] = _0x591e86['XBOX'], _0x5e39ed['_isXboxOnePad'] = _0x51ff06, _0x5e39ed; } return _0x420e5b['d'](_0x30e67a, _0x538a98), _0x30e67a['prototype']['onlefttriggerchanged'] = function(_0x22eeaf) { this['_onlefttriggerchanged'] = _0x22eeaf; } , _0x30e67a['prototype']['onrighttriggerchanged'] = function(_0x36fa64) { this['_onrighttriggerchanged'] = _0x36fa64; } , Object['defineProperty'](_0x30e67a['prototype'], 'leftTrigger', { 'get': function() { return this['_leftTrigger']; }, 'set': function(_0x2a01b4) { this['_onlefttriggerchanged'] && this['_leftTrigger'] !== _0x2a01b4 && this['_onlefttriggerchanged'](_0x2a01b4), this['_leftTrigger'] = _0x2a01b4; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'rightTrigger', { 'get': function() { return this['_rightTrigger']; }, 'set': function(_0x12b03b) { this['_onrighttriggerchanged'] && this['_rightTrigger'] !== _0x12b03b && this['_onrighttriggerchanged'](_0x12b03b), this['_rightTrigger'] = _0x12b03b; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x30e67a['prototype']['onbuttondown'] = function(_0x35aab2) { this['_onbuttondown'] = _0x35aab2; } , _0x30e67a['prototype']['onbuttonup'] = function(_0x2e1e2b) { this['_onbuttonup'] = _0x2e1e2b; } , _0x30e67a['prototype']['ondpaddown'] = function(_0x443f67) { this['_ondpaddown'] = _0x443f67; } , _0x30e67a['prototype']['ondpadup'] = function(_0x474e09) { this['_ondpadup'] = _0x474e09; } , _0x30e67a['prototype']['_setButtonValue'] = function(_0x3416b5, _0x3fbe4b, _0x536beb) { return _0x3416b5 !== _0x3fbe4b && (0x1 === _0x3416b5 && (this['_onbuttondown'] && this['_onbuttondown'](_0x536beb), this['onButtonDownObservable']['notifyObservers'](_0x536beb)), 0x0 === _0x3416b5 && (this['_onbuttonup'] && this['_onbuttonup'](_0x536beb), this['onButtonUpObservable']['notifyObservers'](_0x536beb))), _0x3416b5; } , _0x30e67a['prototype']['_setDPadValue'] = function(_0x446718, _0x2bdf99, _0x1d24c0) { return _0x446718 !== _0x2bdf99 && (0x1 === _0x446718 && (this['_ondpaddown'] && this['_ondpaddown'](_0x1d24c0), this['onPadDownObservable']['notifyObservers'](_0x1d24c0)), 0x0 === _0x446718 && (this['_ondpadup'] && this['_ondpadup'](_0x1d24c0), this['onPadUpObservable']['notifyObservers'](_0x1d24c0))), _0x446718; } , Object['defineProperty'](_0x30e67a['prototype'], 'buttonA', { 'get': function() { return this['_buttonA']; }, 'set': function(_0x4062be) { this['_buttonA'] = this['_setButtonValue'](_0x4062be, this['_buttonA'], _0x1364a4['A']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'buttonB', { 'get': function() { return this['_buttonB']; }, 'set': function(_0xc17720) { this['_buttonB'] = this['_setButtonValue'](_0xc17720, this['_buttonB'], _0x1364a4['B']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'buttonX', { 'get': function() { return this['_buttonX']; }, 'set': function(_0x10ef56) { this['_buttonX'] = this['_setButtonValue'](_0x10ef56, this['_buttonX'], _0x1364a4['X']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'buttonY', { 'get': function() { return this['_buttonY']; }, 'set': function(_0x8d81e7) { this['_buttonY'] = this['_setButtonValue'](_0x8d81e7, this['_buttonY'], _0x1364a4['Y']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'buttonStart', { 'get': function() { return this['_buttonStart']; }, 'set': function(_0x5406d4) { this['_buttonStart'] = this['_setButtonValue'](_0x5406d4, this['_buttonStart'], _0x1364a4['Start']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'buttonBack', { 'get': function() { return this['_buttonBack']; }, 'set': function(_0x4ebad0) { this['_buttonBack'] = this['_setButtonValue'](_0x4ebad0, this['_buttonBack'], _0x1364a4['Back']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'buttonLB', { 'get': function() { return this['_buttonLB']; }, 'set': function(_0x39cc58) { this['_buttonLB'] = this['_setButtonValue'](_0x39cc58, this['_buttonLB'], _0x1364a4['LB']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'buttonRB', { 'get': function() { return this['_buttonRB']; }, 'set': function(_0x395abd) { this['_buttonRB'] = this['_setButtonValue'](_0x395abd, this['_buttonRB'], _0x1364a4['RB']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'buttonLeftStick', { 'get': function() { return this['_buttonLeftStick']; }, 'set': function(_0x14f4f2) { this['_buttonLeftStick'] = this['_setButtonValue'](_0x14f4f2, this['_buttonLeftStick'], _0x1364a4['LeftStick']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'buttonRightStick', { 'get': function() { return this['_buttonRightStick']; }, 'set': function(_0x123e95) { this['_buttonRightStick'] = this['_setButtonValue'](_0x123e95, this['_buttonRightStick'], _0x1364a4['RightStick']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'dPadUp', { 'get': function() { return this['_dPadUp']; }, 'set': function(_0x1b5e10) { this['_dPadUp'] = this['_setDPadValue'](_0x1b5e10, this['_dPadUp'], _0x5894ac['Up']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'dPadDown', { 'get': function() { return this['_dPadDown']; }, 'set': function(_0x3658f5) { this['_dPadDown'] = this['_setDPadValue'](_0x3658f5, this['_dPadDown'], _0x5894ac['Down']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'dPadLeft', { 'get': function() { return this['_dPadLeft']; }, 'set': function(_0x4941c0) { this['_dPadLeft'] = this['_setDPadValue'](_0x4941c0, this['_dPadLeft'], _0x5894ac['Left']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x30e67a['prototype'], 'dPadRight', { 'get': function() { return this['_dPadRight']; }, 'set': function(_0x3429cf) { this['_dPadRight'] = this['_setDPadValue'](_0x3429cf, this['_dPadRight'], _0x5894ac['Right']); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x30e67a['prototype']['update'] = function() { _0x538a98['prototype']['update']['call'](this), this['_isXboxOnePad'] ? (this['buttonA'] = this['browserGamepad']['buttons'][0x0]['value'], this['buttonB'] = this['browserGamepad']['buttons'][0x1]['value'], this['buttonX'] = this['browserGamepad']['buttons'][0x2]['value'], this['buttonY'] = this['browserGamepad']['buttons'][0x3]['value'], this['buttonLB'] = this['browserGamepad']['buttons'][0x4]['value'], this['buttonRB'] = this['browserGamepad']['buttons'][0x5]['value'], this['leftTrigger'] = this['browserGamepad']['axes'][0x2], this['rightTrigger'] = this['browserGamepad']['axes'][0x5], this['buttonBack'] = this['browserGamepad']['buttons'][0x9]['value'], this['buttonStart'] = this['browserGamepad']['buttons'][0x8]['value'], this['buttonLeftStick'] = this['browserGamepad']['buttons'][0x6]['value'], this['buttonRightStick'] = this['browserGamepad']['buttons'][0x7]['value'], this['dPadUp'] = this['browserGamepad']['buttons'][0xb]['value'], this['dPadDown'] = this['browserGamepad']['buttons'][0xc]['value'], this['dPadLeft'] = this['browserGamepad']['buttons'][0xd]['value'], this['dPadRight'] = this['browserGamepad']['buttons'][0xe]['value']) : (this['buttonA'] = this['browserGamepad']['buttons'][0x0]['value'], this['buttonB'] = this['browserGamepad']['buttons'][0x1]['value'], this['buttonX'] = this['browserGamepad']['buttons'][0x2]['value'], this['buttonY'] = this['browserGamepad']['buttons'][0x3]['value'], this['buttonLB'] = this['browserGamepad']['buttons'][0x4]['value'], this['buttonRB'] = this['browserGamepad']['buttons'][0x5]['value'], this['leftTrigger'] = this['browserGamepad']['buttons'][0x6]['value'], this['rightTrigger'] = this['browserGamepad']['buttons'][0x7]['value'], this['buttonBack'] = this['browserGamepad']['buttons'][0x8]['value'], this['buttonStart'] = this['browserGamepad']['buttons'][0x9]['value'], this['buttonLeftStick'] = this['browserGamepad']['buttons'][0xa]['value'], this['buttonRightStick'] = this['browserGamepad']['buttons'][0xb]['value'], this['dPadUp'] = this['browserGamepad']['buttons'][0xc]['value'], this['dPadDown'] = this['browserGamepad']['buttons'][0xd]['value'], this['dPadLeft'] = this['browserGamepad']['buttons'][0xe]['value'], this['dPadRight'] = this['browserGamepad']['buttons'][0xf]['value']); } , _0x30e67a['prototype']['dispose'] = function() { _0x538a98['prototype']['dispose']['call'](this), this['onButtonDownObservable']['clear'](), this['onButtonUpObservable']['clear'](), this['onPadDownObservable']['clear'](), this['onPadUpObservable']['clear'](); } , _0x30e67a; }(_0x591e86) , _0x1d5fe9 = function() { function _0xb34a24(_0x2c5888) { var _0x1c4e10 = this; this['_scene'] = _0x2c5888, this['_babylonGamepads'] = [], this['_oneGamepadConnected'] = !0x1, this['_isMonitoring'] = !0x1, this['onGamepadDisconnectedObservable'] = new _0x2dbec2['c'](), _0x32d626['a']['IsWindowObjectExist']() ? (this['_gamepadEventSupported'] = 'GamepadEvent'in window, this['_gamepadSupport'] = navigator['getGamepads'] || navigator['webkitGetGamepads'] || navigator['msGetGamepads'] || navigator['webkitGamepads']) : this['_gamepadEventSupported'] = !0x1, this['onGamepadConnectedObservable'] = new _0x2dbec2['c'](function(_0x1046d3) { for (var _0x3087a7 in _0x1c4e10['_babylonGamepads']) { var _0x3e9478 = _0x1c4e10['_babylonGamepads'][_0x3087a7]; _0x3e9478 && _0x3e9478['_isConnected'] && _0x1c4e10['onGamepadConnectedObservable']['notifyObserver'](_0x1046d3, _0x3e9478); } } ), this['_onGamepadConnectedEvent'] = function(_0x74e74a) { var _0x31c957, _0x52cf72 = _0x74e74a['gamepad']; _0x52cf72['index']in _0x1c4e10['_babylonGamepads'] && _0x1c4e10['_babylonGamepads'][_0x52cf72['index']]['isConnected'] || (_0x1c4e10['_babylonGamepads'][_0x52cf72['index']] ? ((_0x31c957 = _0x1c4e10['_babylonGamepads'][_0x52cf72['index']])['browserGamepad'] = _0x52cf72, _0x31c957['_isConnected'] = !0x0) : _0x31c957 = _0x1c4e10['_addNewGamepad'](_0x52cf72), _0x1c4e10['onGamepadConnectedObservable']['notifyObservers'](_0x31c957), _0x1c4e10['_startMonitoringGamepads']()); } , this['_onGamepadDisconnectedEvent'] = function(_0x368ba0) { var _0xe8bd8a = _0x368ba0['gamepad']; for (var _0x4d925c in _0x1c4e10['_babylonGamepads']) if (_0x1c4e10['_babylonGamepads'][_0x4d925c]['index'] === _0xe8bd8a['index']) { var _0x1d4b9f = _0x1c4e10['_babylonGamepads'][_0x4d925c]; _0x1d4b9f['_isConnected'] = !0x1, _0x1c4e10['onGamepadDisconnectedObservable']['notifyObservers'](_0x1d4b9f); break; } } , this['_gamepadSupport'] && (this['_updateGamepadObjects'](), this['_babylonGamepads']['length'] && this['_startMonitoringGamepads'](), this['_gamepadEventSupported'] ? (window['addEventListener']('gamepadconnected', this['_onGamepadConnectedEvent'], !0x1), window['addEventListener']('gamepaddisconnected', this['_onGamepadDisconnectedEvent'], !0x1)) : this['_startMonitoringGamepads']()); } return Object['defineProperty'](_0xb34a24['prototype'], 'gamepads', { 'get': function() { return this['_babylonGamepads']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xb34a24['prototype']['getGamepadByType'] = function(_0x352bcf) { void 0x0 === _0x352bcf && (_0x352bcf = _0x591e86['XBOX']); for (var _0x2482bc = 0x0, _0x45f283 = this['_babylonGamepads']; _0x2482bc < _0x45f283['length']; _0x2482bc++) { var _0x28b4e0 = _0x45f283[_0x2482bc]; if (_0x28b4e0 && _0x28b4e0['type'] === _0x352bcf) return _0x28b4e0; } return null; } , _0xb34a24['prototype']['dispose'] = function() { this['_gamepadEventSupported'] && (this['_onGamepadConnectedEvent'] && window['removeEventListener']('gamepadconnected', this['_onGamepadConnectedEvent']), this['_onGamepadDisconnectedEvent'] && window['removeEventListener']('gamepaddisconnected', this['_onGamepadDisconnectedEvent']), this['_onGamepadConnectedEvent'] = null, this['_onGamepadDisconnectedEvent'] = null), this['_babylonGamepads']['forEach'](function(_0x3305f8) { _0x3305f8['dispose'](); }), this['onGamepadConnectedObservable']['clear'](), this['onGamepadDisconnectedObservable']['clear'](), this['_oneGamepadConnected'] = !0x1, this['_stopMonitoringGamepads'](), this['_babylonGamepads'] = []; } , _0xb34a24['prototype']['_addNewGamepad'] = function(_0xc56006) { var _0x362d5e; this['_oneGamepadConnected'] || (this['_oneGamepadConnected'] = !0x0); var _0x290952 = -0x1 !== _0xc56006['id']['search']('Xbox\x20One'); return _0x362d5e = _0x290952 || -0x1 !== _0xc56006['id']['search']('Xbox\x20360') || -0x1 !== _0xc56006['id']['search']('xinput') ? new _0x3f0248(_0xc56006['id'],_0xc56006['index'],_0xc56006,_0x290952) : _0xc56006['pose'] ? _0xe1c9ed['InitiateController'](_0xc56006) : new _0x3f456f(_0xc56006['id'],_0xc56006['index'],_0xc56006), this['_babylonGamepads'][_0x362d5e['index']] = _0x362d5e, _0x362d5e; } , _0xb34a24['prototype']['_startMonitoringGamepads'] = function() { this['_isMonitoring'] || (this['_isMonitoring'] = !0x0, this['_scene'] || this['_checkGamepadsStatus']()); } , _0xb34a24['prototype']['_stopMonitoringGamepads'] = function() { this['_isMonitoring'] = !0x1; } , _0xb34a24['prototype']['_checkGamepadsStatus'] = function() { var _0x50f8d8 = this; for (var _0x1e9969 in (this['_updateGamepadObjects'](), this['_babylonGamepads'])) { var _0x2547fc = this['_babylonGamepads'][_0x1e9969]; _0x2547fc && _0x2547fc['isConnected'] && _0x2547fc['update'](); } this['_isMonitoring'] && !this['_scene'] && _0x1eb50e['h']['QueueNewFrame'](function() { _0x50f8d8['_checkGamepadsStatus'](); }); } , _0xb34a24['prototype']['_updateGamepadObjects'] = function() { for (var _0x5a98af = navigator['getGamepads'] ? navigator['getGamepads']() : navigator['webkitGetGamepads'] ? navigator['webkitGetGamepads']() : [], _0x4267c6 = 0x0; _0x4267c6 < _0x5a98af['length']; _0x4267c6++) { var _0x562c7e = _0x5a98af[_0x4267c6]; if (_0x562c7e) if (this['_babylonGamepads'][_0x562c7e['index']]) this['_babylonGamepads'][_0x4267c6]['browserGamepad'] = _0x562c7e, this['_babylonGamepads'][_0x4267c6]['isConnected'] || (this['_babylonGamepads'][_0x4267c6]['_isConnected'] = !0x0, this['onGamepadConnectedObservable']['notifyObservers'](this['_babylonGamepads'][_0x4267c6])); else { var _0x55961d = this['_addNewGamepad'](_0x562c7e); this['onGamepadConnectedObservable']['notifyObservers'](_0x55961d); } } } , _0xb34a24; }(); Object['defineProperty'](_0x366639['a']['prototype'], 'gamepadManager', { 'get': function() { if (!this['_gamepadManager']) { this['_gamepadManager'] = new _0x1d5fe9(this); var _0x564c96 = this['_getComponent'](_0x443f74['a']['NAME_GAMEPAD']); _0x564c96 || (_0x564c96 = new _0x44e17a(this), this['_addComponent'](_0x564c96)); } return this['_gamepadManager']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x368109['prototype']['addGamepad'] = function() { return this['add'](new _0x34e5b7()), this; } , _0x13f537['prototype']['addGamepad'] = function() { return this['add'](new _0x2b16b8()), this; } ; var _0x44e17a = function() { function _0x41cb65(_0x5f2f7f) { this['name'] = _0x443f74['a']['NAME_GAMEPAD'], this['scene'] = _0x5f2f7f; } return _0x41cb65['prototype']['register'] = function() { this['scene']['_beforeCameraUpdateStage']['registerStep'](_0x443f74['a']['STEP_BEFORECAMERAUPDATE_GAMEPAD'], this, this['_beforeCameraUpdate']); } , _0x41cb65['prototype']['rebuild'] = function() {} , _0x41cb65['prototype']['dispose'] = function() { var _0x4a505c = this['scene']['_gamepadManager']; _0x4a505c && (_0x4a505c['dispose'](), this['scene']['_gamepadManager'] = null); } , _0x41cb65['prototype']['_beforeCameraUpdate'] = function() { var _0x1b8a0a = this['scene']['_gamepadManager']; _0x1b8a0a && _0x1b8a0a['_isMonitoring'] && _0x1b8a0a['_checkGamepadsStatus'](); } , _0x41cb65; }(); _0x111b09['a']['AddNodeConstructor']('FreeCamera', function(_0x5b7b84, _0x199f1d) { return function() { return new _0x512fb8(_0x5b7b84,_0x47d24f['x']['Zero'](),_0x199f1d); } ; }); var _0x512fb8 = function(_0x16cbbe) { function _0x17836e(_0x289312, _0x50847f, _0x3bdace) { var _0x1f2276 = _0x16cbbe['call'](this, _0x289312, _0x50847f, _0x3bdace) || this; return _0x1f2276['inputs']['addGamepad'](), _0x1f2276; } return _0x420e5b['d'](_0x17836e, _0x16cbbe), Object['defineProperty'](_0x17836e['prototype'], 'gamepadAngularSensibility', { 'get': function() { var _0x3d6834 = this['inputs']['attached']['gamepad']; return _0x3d6834 ? _0x3d6834['gamepadAngularSensibility'] : 0x0; }, 'set': function(_0x3e94a1) { var _0x11dd7e = this['inputs']['attached']['gamepad']; _0x11dd7e && (_0x11dd7e['gamepadAngularSensibility'] = _0x3e94a1); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x17836e['prototype'], 'gamepadMoveSensibility', { 'get': function() { var _0x9cee60 = this['inputs']['attached']['gamepad']; return _0x9cee60 ? _0x9cee60['gamepadMoveSensibility'] : 0x0; }, 'set': function(_0x3aab4f) { var _0x4087bd = this['inputs']['attached']['gamepad']; _0x4087bd && (_0x4087bd['gamepadMoveSensibility'] = _0x3aab4f); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x17836e['prototype']['getClassName'] = function() { return 'UniversalCamera'; } , _0x17836e; }(_0x5a90a0); _0x4504cf['a']['_createDefaultParsedCamera'] = function(_0x4574f3, _0x12b110) { return new _0x512fb8(_0x4574f3,_0x47d24f['x']['Zero'](),_0x12b110); } , _0x111b09['a']['AddNodeConstructor']('GamepadCamera', function(_0x484208, _0x25a014) { return function() { return new _0x1ee953(_0x484208,_0x47d24f['x']['Zero'](),_0x25a014); } ; }); var _0x1ee953 = function(_0x370734) { function _0x5cd62a(_0x38231b, _0x571f88, _0x34a483) { return _0x370734['call'](this, _0x38231b, _0x571f88, _0x34a483) || this; } return _0x420e5b['d'](_0x5cd62a, _0x370734), _0x5cd62a['prototype']['getClassName'] = function() { return 'GamepadCamera'; } , _0x5cd62a; }(_0x512fb8) , _0x435d55 = _0x59bd00(0x1c) , _0x3e9e56 = _0x59bd00(0x5) , _0x1ea653 = '\x0aattribute\x20vec2\x20position;\x0auniform\x20vec2\x20scale;\x0a\x0avarying\x20vec2\x20vUV;\x0aconst\x20vec2\x20madd=vec2(0.5,0.5);\x0avoid\x20main(void)\x20{\x0avUV=(position*madd+madd)*scale;\x0agl_Position=vec4(position,0.0,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['postprocessVertexShader'] = _0x1ea653; var _0x1f5ab5 = function() { function _0x36955c(_0xcb5466, _0x8e7a8a, _0x42b12d, _0x37198f, _0x486bc1, _0x27bd9e, _0x28476d, _0x4372b4, _0x3774cb, _0x170e06, _0x536f42, _0x53b71f, _0x40bad7, _0x107f2c) { void 0x0 === _0x28476d && (_0x28476d = _0x24e342['a']['TEXTURE_NEAREST_SAMPLINGMODE']), void 0x0 === _0x170e06 && (_0x170e06 = null), void 0x0 === _0x536f42 && (_0x536f42 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x53b71f && (_0x53b71f = 'postprocess'), void 0x0 === _0x107f2c && (_0x107f2c = !0x1), this['name'] = _0xcb5466, this['width'] = -0x1, this['height'] = -0x1, this['_outputTexture'] = null, this['autoClear'] = !0x0, this['alphaMode'] = _0x24e342['a']['ALPHA_DISABLE'], this['animations'] = new Array(), this['enablePixelPerfectMode'] = !0x1, this['forceFullscreenViewport'] = !0x0, this['scaleMode'] = _0x24e342['a']['SCALEMODE_FLOOR'], this['alwaysForcePOT'] = !0x1, this['_samples'] = 0x1, this['adaptScaleToCurrentViewport'] = !0x1, this['_reusable'] = !0x1, this['_textures'] = new _0x435d55['a'](0x2), this['_currentRenderTextureInd'] = 0x0, this['_scaleRatio'] = new _0x47d24f['w'](0x1,0x1), this['_texelSize'] = _0x47d24f['w']['Zero'](), this['onActivateObservable'] = new _0x2dbec2['c'](), this['onSizeChangedObservable'] = new _0x2dbec2['c'](), this['onApplyObservable'] = new _0x2dbec2['c'](), this['onBeforeRenderObservable'] = new _0x2dbec2['c'](), this['onAfterRenderObservable'] = new _0x2dbec2['c'](), null != _0x27bd9e ? (this['_camera'] = _0x27bd9e, this['_scene'] = _0x27bd9e['getScene'](), _0x27bd9e['attachPostProcess'](this), this['_engine'] = this['_scene']['getEngine'](), this['_scene']['postProcesses']['push'](this), this['uniqueId'] = this['_scene']['getUniqueId']()) : _0x4372b4 && (this['_engine'] = _0x4372b4, this['_engine']['postProcesses']['push'](this)), this['_options'] = _0x486bc1, this['renderTargetSamplingMode'] = _0x28476d || _0x24e342['a']['TEXTURE_NEAREST_SAMPLINGMODE'], this['_reusable'] = _0x3774cb || !0x1, this['_textureType'] = _0x536f42, this['_samplers'] = _0x37198f || [], this['_samplers']['push']('textureSampler'), this['_fragmentUrl'] = _0x8e7a8a, this['_vertexUrl'] = _0x53b71f, this['_parameters'] = _0x42b12d || [], this['_parameters']['push']('scale'), this['_indexParameters'] = _0x40bad7, _0x107f2c || this['updateEffect'](_0x170e06); } return Object['defineProperty'](_0x36955c['prototype'], 'samples', { 'get': function() { return this['_samples']; }, 'set': function(_0x2c97f3) { var _0x2e02e0 = this; this['_samples'] = _0x2c97f3, this['_textures']['forEach'](function(_0x10ffdd) { _0x10ffdd['samples'] !== _0x2e02e0['_samples'] && _0x2e02e0['_engine']['updateRenderTargetTextureSampleCount'](_0x10ffdd, _0x2e02e0['_samples']); }); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x36955c['prototype']['getEffectName'] = function() { return this['_fragmentUrl']; } , Object['defineProperty'](_0x36955c['prototype'], 'onActivate', { 'set': function(_0x3d6404) { this['_onActivateObserver'] && this['onActivateObservable']['remove'](this['_onActivateObserver']), _0x3d6404 && (this['_onActivateObserver'] = this['onActivateObservable']['add'](_0x3d6404)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x36955c['prototype'], 'onSizeChanged', { 'set': function(_0xbfa73a) { this['_onSizeChangedObserver'] && this['onSizeChangedObservable']['remove'](this['_onSizeChangedObserver']), this['_onSizeChangedObserver'] = this['onSizeChangedObservable']['add'](_0xbfa73a); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x36955c['prototype'], 'onApply', { 'set': function(_0x2ca1a) { this['_onApplyObserver'] && this['onApplyObservable']['remove'](this['_onApplyObserver']), this['_onApplyObserver'] = this['onApplyObservable']['add'](_0x2ca1a); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x36955c['prototype'], 'onBeforeRender', { 'set': function(_0x3cb8c6) { this['_onBeforeRenderObserver'] && this['onBeforeRenderObservable']['remove'](this['_onBeforeRenderObserver']), this['_onBeforeRenderObserver'] = this['onBeforeRenderObservable']['add'](_0x3cb8c6); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x36955c['prototype'], 'onAfterRender', { 'set': function(_0x416d34) { this['_onAfterRenderObserver'] && this['onAfterRenderObservable']['remove'](this['_onAfterRenderObserver']), this['_onAfterRenderObserver'] = this['onAfterRenderObservable']['add'](_0x416d34); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x36955c['prototype'], 'inputTexture', { 'get': function() { return this['_textures']['data'][this['_currentRenderTextureInd']]; }, 'set': function(_0x3b802b) { this['_forcedOutputTexture'] = _0x3b802b; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x36955c['prototype']['getCamera'] = function() { return this['_camera']; } , Object['defineProperty'](_0x36955c['prototype'], 'texelSize', { 'get': function() { return this['_shareOutputWithPostProcess'] ? this['_shareOutputWithPostProcess']['texelSize'] : (this['_forcedOutputTexture'] && this['_texelSize']['copyFromFloats'](0x1 / this['_forcedOutputTexture']['width'], 0x1 / this['_forcedOutputTexture']['height']), this['_texelSize']); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x36955c['prototype']['getClassName'] = function() { return 'PostProcess'; } , _0x36955c['prototype']['getEngine'] = function() { return this['_engine']; } , _0x36955c['prototype']['getEffect'] = function() { return this['_effect']; } , _0x36955c['prototype']['shareOutputWith'] = function(_0x235dcc) { return this['_disposeTextures'](), this['_shareOutputWithPostProcess'] = _0x235dcc, this; } , _0x36955c['prototype']['useOwnOutput'] = function() { 0x0 == this['_textures']['length'] && (this['_textures'] = new _0x435d55['a'](0x2)), this['_shareOutputWithPostProcess'] = null; } , _0x36955c['prototype']['updateEffect'] = function(_0x5f2967, _0x50a0e4, _0x87175f, _0x436280, _0x4d9575, _0x306730) { void 0x0 === _0x5f2967 && (_0x5f2967 = null), void 0x0 === _0x50a0e4 && (_0x50a0e4 = null), void 0x0 === _0x87175f && (_0x87175f = null), this['_effect'] = this['_engine']['createEffect']({ 'vertex': this['_vertexUrl'], 'fragment': this['_fragmentUrl'] }, ['position'], _0x50a0e4 || this['_parameters'], _0x87175f || this['_samplers'], null !== _0x5f2967 ? _0x5f2967 : '', void 0x0, _0x4d9575, _0x306730, _0x436280 || this['_indexParameters']); } , _0x36955c['prototype']['isReusable'] = function() { return this['_reusable']; } , _0x36955c['prototype']['markTextureDirty'] = function() { this['width'] = -0x1; } , _0x36955c['prototype']['activate'] = function(_0x566d80, _0x1b200f, _0x505fd7) { var _0x2a8bc2 = this; void 0x0 === _0x1b200f && (_0x1b200f = null); var _0x10e462 = (_0x566d80 = _0x566d80 || this['_camera'])['getScene']() , _0xe746bd = _0x10e462['getEngine']() , _0x5c71f6 = _0xe746bd['getCaps']()['maxTextureSize'] , _0x45502a = (_0x1b200f ? _0x1b200f['width'] : this['_engine']['getRenderWidth'](!0x0)) * this['_options'] | 0x0 , _0x166b67 = (_0x1b200f ? _0x1b200f['height'] : this['_engine']['getRenderHeight'](!0x0)) * this['_options'] | 0x0 , _0x4473b7 = _0x566d80['parent']; !_0x4473b7 || _0x4473b7['leftCamera'] != _0x566d80 && _0x4473b7['rightCamera'] != _0x566d80 || (_0x45502a /= 0x2); var _0xf8b0bb, _0x5d4a2b = this['_options']['width'] || _0x45502a, _0x570cfc = this['_options']['height'] || _0x166b67; if (!this['_shareOutputWithPostProcess'] && !this['_forcedOutputTexture']) { if (this['adaptScaleToCurrentViewport']) { var _0x445754 = _0xe746bd['currentViewport']; _0x445754 && (_0x5d4a2b *= _0x445754['width'], _0x570cfc *= _0x445754['height']); } if ((this['renderTargetSamplingMode'] === _0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE'] || this['alwaysForcePOT']) && (this['_options']['width'] || (_0x5d4a2b = _0xe746bd['needPOTTextures'] ? _0x1eb50e['h']['GetExponentOfTwo'](_0x5d4a2b, _0x5c71f6, this['scaleMode']) : _0x5d4a2b), this['_options']['height'] || (_0x570cfc = _0xe746bd['needPOTTextures'] ? _0x1eb50e['h']['GetExponentOfTwo'](_0x570cfc, _0x5c71f6, this['scaleMode']) : _0x570cfc)), this['width'] !== _0x5d4a2b || this['height'] !== _0x570cfc) { if (this['_textures']['length'] > 0x0) { for (var _0x1f3748 = 0x0; _0x1f3748 < this['_textures']['length']; _0x1f3748++) this['_engine']['_releaseTexture'](this['_textures']['data'][_0x1f3748]); this['_textures']['reset'](); } this['width'] = _0x5d4a2b, this['height'] = _0x570cfc; var _0x13650c = { 'width': this['width'], 'height': this['height'] } , _0x59b7b8 = { 'generateMipMaps': !0x1, 'generateDepthBuffer': _0x505fd7 || 0x0 === _0x566d80['_postProcesses']['indexOf'](this), 'generateStencilBuffer': (_0x505fd7 || 0x0 === _0x566d80['_postProcesses']['indexOf'](this)) && this['_engine']['isStencilEnable'], 'samplingMode': this['renderTargetSamplingMode'], 'type': this['_textureType'] }; this['_textures']['push'](this['_engine']['createRenderTargetTexture'](_0x13650c, _0x59b7b8)), this['_reusable'] && this['_textures']['push'](this['_engine']['createRenderTargetTexture'](_0x13650c, _0x59b7b8)), this['_texelSize']['copyFromFloats'](0x1 / this['width'], 0x1 / this['height']), this['onSizeChangedObservable']['notifyObservers'](this); } this['_textures']['forEach'](function(_0x397979) { _0x397979['samples'] !== _0x2a8bc2['samples'] && _0x2a8bc2['_engine']['updateRenderTargetTextureSampleCount'](_0x397979, _0x2a8bc2['samples']); }); } return this['_shareOutputWithPostProcess'] ? _0xf8b0bb = this['_shareOutputWithPostProcess']['inputTexture'] : this['_forcedOutputTexture'] ? (_0xf8b0bb = this['_forcedOutputTexture'], this['width'] = this['_forcedOutputTexture']['width'], this['height'] = this['_forcedOutputTexture']['height']) : _0xf8b0bb = this['inputTexture'], this['enablePixelPerfectMode'] ? (this['_scaleRatio']['copyFromFloats'](_0x45502a / _0x5d4a2b, _0x166b67 / _0x570cfc), this['_engine']['bindFramebuffer'](_0xf8b0bb, 0x0, _0x45502a, _0x166b67, this['forceFullscreenViewport'])) : (this['_scaleRatio']['copyFromFloats'](0x1, 0x1), this['_engine']['bindFramebuffer'](_0xf8b0bb, 0x0, void 0x0, void 0x0, this['forceFullscreenViewport'])), this['onActivateObservable']['notifyObservers'](_0x566d80), this['autoClear'] && this['alphaMode'] === _0x24e342['a']['ALPHA_DISABLE'] && this['_engine']['clear'](this['clearColor'] ? this['clearColor'] : _0x10e462['clearColor'], _0x10e462['_allowPostProcessClearColor'], !0x0, !0x0), this['_reusable'] && (this['_currentRenderTextureInd'] = (this['_currentRenderTextureInd'] + 0x1) % 0x2), _0xf8b0bb; } , Object['defineProperty'](_0x36955c['prototype'], 'isSupported', { 'get': function() { return this['_effect']['isSupported']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x36955c['prototype'], 'aspectRatio', { 'get': function() { return this['_shareOutputWithPostProcess'] ? this['_shareOutputWithPostProcess']['aspectRatio'] : this['_forcedOutputTexture'] ? this['_forcedOutputTexture']['width'] / this['_forcedOutputTexture']['height'] : this['width'] / this['height']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x36955c['prototype']['isReady'] = function() { return this['_effect'] && this['_effect']['isReady'](); } , _0x36955c['prototype']['apply'] = function() { return this['_effect'] && this['_effect']['isReady']() ? (this['_engine']['enableEffect'](this['_effect']), this['_engine']['setState'](!0x1), this['_engine']['setDepthBuffer'](!0x1), this['_engine']['setDepthWrite'](!0x1), this['_engine']['setAlphaMode'](this['alphaMode']), this['alphaConstants'] && this['getEngine']()['setAlphaConstants'](this['alphaConstants']['r'], this['alphaConstants']['g'], this['alphaConstants']['b'], this['alphaConstants']['a']), _0x5ef901 = this['_shareOutputWithPostProcess'] ? this['_shareOutputWithPostProcess']['inputTexture'] : this['_forcedOutputTexture'] ? this['_forcedOutputTexture'] : this['inputTexture'], this['_effect']['_bindTexture']('textureSampler', _0x5ef901), this['_effect']['setVector2']('scale', this['_scaleRatio']), this['onApplyObservable']['notifyObservers'](this['_effect']), this['_effect']) : null; var _0x5ef901; } , _0x36955c['prototype']['_disposeTextures'] = function() { if (!this['_shareOutputWithPostProcess'] && !this['_forcedOutputTexture']) { if (this['_textures']['length'] > 0x0) for (var _0x41bb2b = 0x0; _0x41bb2b < this['_textures']['length']; _0x41bb2b++) this['_engine']['_releaseTexture'](this['_textures']['data'][_0x41bb2b]); this['_textures']['dispose'](); } } , _0x36955c['prototype']['dispose'] = function(_0x252543) { if (_0x252543 = _0x252543 || this['_camera'], this['_disposeTextures'](), this['_scene']) { var _0x36f3f9 = this['_scene']['postProcesses']['indexOf'](this); -0x1 !== _0x36f3f9 && this['_scene']['postProcesses']['splice'](_0x36f3f9, 0x1); } else { var _0x433c5d = this['_engine']['postProcesses']['indexOf'](this); -0x1 !== _0x433c5d && this['_engine']['postProcesses']['splice'](_0x433c5d, 0x1); } if (_0x252543) { if (_0x252543['detachPostProcess'](this), 0x0 === _0x252543['_postProcesses']['indexOf'](this) && _0x252543['_postProcesses']['length'] > 0x0) { var _0x2e3695 = this['_camera']['_getFirstPostProcess'](); _0x2e3695 && _0x2e3695['markTextureDirty'](); } this['onActivateObservable']['clear'](), this['onAfterRenderObservable']['clear'](), this['onApplyObservable']['clear'](), this['onBeforeRenderObservable']['clear'](), this['onSizeChangedObservable']['clear'](); } } , _0x36955c; }() , _0x915071 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0avoid\x20main(void)\x0a{\x0agl_FragColor=texture2D(textureSampler,vUV);\x0a}'; _0x3e9e56['a']['ShadersStore']['passPixelShader'] = _0x915071; var _0x4b0f6d = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20samplerCube\x20textureSampler;\x0avoid\x20main(void)\x0a{\x0avec2\x20uv=vUV*2.0-1.0;\x0a#ifdef\x20POSITIVEX\x0agl_FragColor=textureCube(textureSampler,vec3(1.001,uv.y,uv.x));\x0a#endif\x0a#ifdef\x20NEGATIVEX\x0agl_FragColor=textureCube(textureSampler,vec3(-1.001,uv.y,uv.x));\x0a#endif\x0a#ifdef\x20POSITIVEY\x0agl_FragColor=textureCube(textureSampler,vec3(uv.y,1.001,uv.x));\x0a#endif\x0a#ifdef\x20NEGATIVEY\x0agl_FragColor=textureCube(textureSampler,vec3(uv.y,-1.001,uv.x));\x0a#endif\x0a#ifdef\x20POSITIVEZ\x0agl_FragColor=textureCube(textureSampler,vec3(uv,1.001));\x0a#endif\x0a#ifdef\x20NEGATIVEZ\x0agl_FragColor=textureCube(textureSampler,vec3(uv,-1.001));\x0a#endif\x0a}'; _0x3e9e56['a']['ShadersStore']['passCubePixelShader'] = _0x4b0f6d; var _0x4b3169 = function(_0x2b9063) { function _0x3697d5(_0x781afb, _0x3262c0, _0x703038, _0x50c35c, _0x2431e4, _0x4ce893, _0x3388a6, _0x57b57f) { return void 0x0 === _0x703038 && (_0x703038 = null), void 0x0 === _0x3388a6 && (_0x3388a6 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x57b57f && (_0x57b57f = !0x1), _0x2b9063['call'](this, _0x781afb, 'pass', null, null, _0x3262c0, _0x703038, _0x50c35c, _0x2431e4, _0x4ce893, void 0x0, _0x3388a6, void 0x0, null, _0x57b57f) || this; } return _0x420e5b['d'](_0x3697d5, _0x2b9063), _0x3697d5; }(_0x1f5ab5) , _0x1180ef = function(_0x17b881) { function _0x7edce9(_0x20397c, _0x2e5da7, _0xc0e1f1, _0x6f4ecb, _0xfc67ab, _0x3726d2, _0x70ffc, _0x366f45) { void 0x0 === _0xc0e1f1 && (_0xc0e1f1 = null), void 0x0 === _0x70ffc && (_0x70ffc = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x366f45 && (_0x366f45 = !0x1); var _0x5b1738 = _0x17b881['call'](this, _0x20397c, 'passCube', null, null, _0x2e5da7, _0xc0e1f1, _0x6f4ecb, _0xfc67ab, _0x3726d2, '#define\x20POSITIVEX', _0x70ffc, void 0x0, null, _0x366f45) || this; return _0x5b1738['_face'] = 0x0, _0x5b1738; } return _0x420e5b['d'](_0x7edce9, _0x17b881), Object['defineProperty'](_0x7edce9['prototype'], 'face', { 'get': function() { return this['_face']; }, 'set': function(_0x3433f7) { if (!(_0x3433f7 < 0x0 || _0x3433f7 > 0x5)) switch (this['_face'] = _0x3433f7, this['_face']) { case 0x0: this['updateEffect']('#define\x20POSITIVEX'); break; case 0x1: this['updateEffect']('#define\x20NEGATIVEX'); break; case 0x2: this['updateEffect']('#define\x20POSITIVEY'); break; case 0x3: this['updateEffect']('#define\x20NEGATIVEY'); break; case 0x4: this['updateEffect']('#define\x20POSITIVEZ'); break; case 0x5: this['updateEffect']('#define\x20NEGATIVEZ'); } }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x7edce9; }(_0x1f5ab5); _0x3647a9['b']['_RescalePostProcessFactory'] = function(_0x3b2c88) { return new _0x4b3169('rescale',0x1,null,_0x3647a9['b']['TEXTURE_BILINEAR_SAMPLINGMODE'],_0x3b2c88,!0x1,_0x3647a9['b']['TEXTURETYPE_UNSIGNED_INT']); } ; var _0x5b868d = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20sampler2D\x20leftSampler;\x0avoid\x20main(void)\x0a{\x0avec4\x20leftFrag=texture2D(leftSampler,vUV);\x0aleftFrag=vec4(1.0,leftFrag.g,leftFrag.b,1.0);\x0avec4\x20rightFrag=texture2D(textureSampler,vUV);\x0arightFrag=vec4(rightFrag.r,1.0,1.0,1.0);\x0agl_FragColor=vec4(rightFrag.rgb*leftFrag.rgb,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['anaglyphPixelShader'] = _0x5b868d; var _0x14574e = function(_0x15593d) { function _0x15458f(_0x1a0caf, _0x3d60a5, _0x274654, _0x103f1f, _0x590ada, _0x5c72e6) { var _0x43d085 = _0x15593d['call'](this, _0x1a0caf, 'anaglyph', null, ['leftSampler'], _0x3d60a5, _0x274654[0x1], _0x103f1f, _0x590ada, _0x5c72e6) || this; return _0x43d085['_passedProcess'] = _0x274654[0x0]['_rigPostProcess'], _0x43d085['onApplyObservable']['add'](function(_0x593583) { _0x593583['setTextureFromPostProcess']('leftSampler', _0x43d085['_passedProcess']); }), _0x43d085; } return _0x420e5b['d'](_0x15458f, _0x15593d), _0x15458f; }(_0x1f5ab5); _0x4504cf['a']['_setStereoscopicAnaglyphRigMode'] = function(_0x73167b) { _0x73167b['_rigCameras'][0x0]['_rigPostProcess'] = new _0x4b3169(_0x73167b['name'] + '_passthru',0x1,_0x73167b['_rigCameras'][0x0]), _0x73167b['_rigCameras'][0x1]['_rigPostProcess'] = new _0x14574e(_0x73167b['name'] + '_anaglyph',0x1,_0x73167b['_rigCameras']); } , _0x111b09['a']['AddNodeConstructor']('AnaglyphArcRotateCamera', function(_0x2cb02b, _0x5a1384, _0x2b4a34) { return function() { return new _0x7ffe94(_0x2cb02b,0x0,0x0,0x1,_0x47d24f['x']['Zero'](),_0x2b4a34['interaxial_distance'],_0x5a1384); } ; }); var _0x7ffe94 = function(_0xe4818e) { function _0xd8fe33(_0x21b2d3, _0x24001c, _0x71ec28, _0x135e9f, _0x3fedd8, _0x654e44, _0x3e7495) { var _0x25d671 = _0xe4818e['call'](this, _0x21b2d3, _0x24001c, _0x71ec28, _0x135e9f, _0x3fedd8, _0x3e7495) || this; return _0x25d671['interaxialDistance'] = _0x654e44, _0x25d671['setCameraRigMode'](_0x4504cf['a']['RIG_MODE_STEREOSCOPIC_ANAGLYPH'], { 'interaxialDistance': _0x654e44 }), _0x25d671; } return _0x420e5b['d'](_0xd8fe33, _0xe4818e), _0xd8fe33['prototype']['getClassName'] = function() { return 'AnaglyphArcRotateCamera'; } , _0xd8fe33; }(_0x1fd852); _0x111b09['a']['AddNodeConstructor']('AnaglyphFreeCamera', function(_0x2a2675, _0x2a0180, _0x500145) { return function() { return new _0x328fe0(_0x2a2675,_0x47d24f['x']['Zero'](),_0x500145['interaxial_distance'],_0x2a0180); } ; }); var _0x328fe0 = function(_0x339d58) { function _0x255cb8(_0x3ad9f8, _0x55f975, _0x512fee, _0xfe9dbc) { var _0x2e2669 = _0x339d58['call'](this, _0x3ad9f8, _0x55f975, _0xfe9dbc) || this; return _0x2e2669['interaxialDistance'] = _0x512fee, _0x2e2669['setCameraRigMode'](_0x4504cf['a']['RIG_MODE_STEREOSCOPIC_ANAGLYPH'], { 'interaxialDistance': _0x512fee }), _0x2e2669; } return _0x420e5b['d'](_0x255cb8, _0x339d58), _0x255cb8['prototype']['getClassName'] = function() { return 'AnaglyphFreeCamera'; } , _0x255cb8; }(_0xebce26); _0x111b09['a']['AddNodeConstructor']('AnaglyphGamepadCamera', function(_0x144215, _0x1c3758, _0x3a6198) { return function() { return new _0x19cb45(_0x144215,_0x47d24f['x']['Zero'](),_0x3a6198['interaxial_distance'],_0x1c3758); } ; }); var _0x19cb45 = function(_0x40c218) { function _0x5f5b05(_0x32d282, _0x2d8721, _0x38b6a0, _0x27b5be) { var _0x157710 = _0x40c218['call'](this, _0x32d282, _0x2d8721, _0x27b5be) || this; return _0x157710['interaxialDistance'] = _0x38b6a0, _0x157710['setCameraRigMode'](_0x4504cf['a']['RIG_MODE_STEREOSCOPIC_ANAGLYPH'], { 'interaxialDistance': _0x38b6a0 }), _0x157710; } return _0x420e5b['d'](_0x5f5b05, _0x40c218), _0x5f5b05['prototype']['getClassName'] = function() { return 'AnaglyphGamepadCamera'; } , _0x5f5b05; }(_0x1ee953); _0x111b09['a']['AddNodeConstructor']('AnaglyphUniversalCamera', function(_0x4318fe, _0x5179a7, _0x347af8) { return function() { return new _0x25212a(_0x4318fe,_0x47d24f['x']['Zero'](),_0x347af8['interaxial_distance'],_0x5179a7); } ; }); var _0x25212a = function(_0x28f015) { function _0xd528cb(_0x15352c, _0x133e5b, _0x46dabe, _0x21646a) { var _0x337e05 = _0x28f015['call'](this, _0x15352c, _0x133e5b, _0x21646a) || this; return _0x337e05['interaxialDistance'] = _0x46dabe, _0x337e05['setCameraRigMode'](_0x4504cf['a']['RIG_MODE_STEREOSCOPIC_ANAGLYPH'], { 'interaxialDistance': _0x46dabe }), _0x337e05; } return _0x420e5b['d'](_0xd528cb, _0x28f015), _0xd528cb['prototype']['getClassName'] = function() { return 'AnaglyphUniversalCamera'; } , _0xd528cb; }(_0x512fb8) , _0x1359e0 = 'const\x20vec3\x20TWO=vec3(2.0,2.0,2.0);\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20camASampler;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20vec2\x20stepSize;\x0avoid\x20main(void)\x0a{\x0abool\x20useCamB;\x0avec2\x20texCoord1;\x0avec2\x20texCoord2;\x0avec3\x20frag1;\x0avec3\x20frag2;\x0a#ifdef\x20IS_STEREOSCOPIC_HORIZ\x0auseCamB=vUV.x>0.5;\x0atexCoord1=vec2(useCamB\x20?\x20(vUV.x-0.5)*2.0\x20:\x20vUV.x*2.0,vUV.y);\x0atexCoord2=vec2(texCoord1.x+stepSize.x,vUV.y);\x0a#else\x0auseCamB=vUV.y>0.5;\x0atexCoord1=vec2(vUV.x,useCamB\x20?\x20(vUV.y-0.5)*2.0\x20:\x20vUV.y*2.0);\x0atexCoord2=vec2(vUV.x,texCoord1.y+stepSize.y);\x0a#endif\x0a\x0aif\x20(useCamB){\x0afrag1=texture2D(textureSampler,texCoord1).rgb;\x0afrag2=texture2D(textureSampler,texCoord2).rgb;\x0a}else{\x0afrag1=texture2D(camASampler\x20,texCoord1).rgb;\x0afrag2=texture2D(camASampler\x20,texCoord2).rgb;\x0a}\x0agl_FragColor=vec4((frag1+frag2)/TWO,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['stereoscopicInterlacePixelShader'] = _0x1359e0; var _0x91c96a = function(_0x56fe9b) { function _0x31315e(_0x103ec5, _0x1cc9cb, _0x126edc, _0x2ee58e, _0x2b5de2, _0x4bef4e) { var _0x38164b = _0x56fe9b['call'](this, _0x103ec5, 'stereoscopicInterlace', ['stepSize'], ['camASampler'], 0x1, _0x1cc9cb[0x1], _0x2ee58e, _0x2b5de2, _0x4bef4e, _0x126edc ? '#define\x20IS_STEREOSCOPIC_HORIZ\x201' : void 0x0) || this; return _0x38164b['_passedProcess'] = _0x1cc9cb[0x0]['_rigPostProcess'], _0x38164b['_stepSize'] = new _0x47d24f['w'](0x1 / _0x38164b['width'],0x1 / _0x38164b['height']), _0x38164b['onSizeChangedObservable']['add'](function() { _0x38164b['_stepSize'] = new _0x47d24f['w'](0x1 / _0x38164b['width'],0x1 / _0x38164b['height']); }), _0x38164b['onApplyObservable']['add'](function(_0x4febaf) { _0x4febaf['setTextureFromPostProcess']('camASampler', _0x38164b['_passedProcess']), _0x4febaf['setFloat2']('stepSize', _0x38164b['_stepSize']['x'], _0x38164b['_stepSize']['y']); }), _0x38164b; } return _0x420e5b['d'](_0x31315e, _0x56fe9b), _0x31315e; }(_0x1f5ab5); _0x4504cf['a']['_setStereoscopicRigMode'] = function(_0x371311) { var _0x4666fc = _0x371311['cameraRigMode'] === _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL'] || _0x371311['cameraRigMode'] === _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED']; _0x371311['_rigCameras'][0x0]['_rigPostProcess'] = new _0x4b3169(_0x371311['name'] + '_passthru',0x1,_0x371311['_rigCameras'][0x0]), _0x371311['_rigCameras'][0x1]['_rigPostProcess'] = new _0x91c96a(_0x371311['name'] + '_stereoInterlace',_0x371311['_rigCameras'],_0x4666fc); } , _0x111b09['a']['AddNodeConstructor']('StereoscopicArcRotateCamera', function(_0x16a75f, _0x1d0af8, _0x2d8696) { return function() { return new _0x296f7e(_0x16a75f,0x0,0x0,0x1,_0x47d24f['x']['Zero'](),_0x2d8696['interaxial_distance'],_0x2d8696['isStereoscopicSideBySide'],_0x1d0af8); } ; }); var _0x296f7e = function(_0x5c4ff5) { function _0x133703(_0x9f7002, _0x139e04, _0x273852, _0x11283b, _0x56e7a7, _0x28a158, _0x2f6616, _0x6ef825) { var _0x347ab6 = _0x5c4ff5['call'](this, _0x9f7002, _0x139e04, _0x273852, _0x11283b, _0x56e7a7, _0x6ef825) || this; return _0x347ab6['interaxialDistance'] = _0x28a158, _0x347ab6['isStereoscopicSideBySide'] = _0x2f6616, _0x347ab6['setCameraRigMode'](_0x2f6616 ? _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL'] : _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_OVERUNDER'], { 'interaxialDistance': _0x28a158 }), _0x347ab6; } return _0x420e5b['d'](_0x133703, _0x5c4ff5), _0x133703['prototype']['getClassName'] = function() { return 'StereoscopicArcRotateCamera'; } , _0x133703; }(_0x1fd852); _0x111b09['a']['AddNodeConstructor']('StereoscopicFreeCamera', function(_0x48a5d2, _0x20c87c, _0x347819) { return function() { return new _0xc29ba(_0x48a5d2,_0x47d24f['x']['Zero'](),_0x347819['interaxial_distance'],_0x347819['isStereoscopicSideBySide'],_0x20c87c); } ; }); var _0xc29ba = function(_0x3c4dac) { function _0x525753(_0x4faf1d, _0x5a8dbc, _0x397f52, _0x3edd64, _0xaeaf5f) { var _0x27fea0 = _0x3c4dac['call'](this, _0x4faf1d, _0x5a8dbc, _0xaeaf5f) || this; return _0x27fea0['interaxialDistance'] = _0x397f52, _0x27fea0['isStereoscopicSideBySide'] = _0x3edd64, _0x27fea0['setCameraRigMode'](_0x3edd64 ? _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL'] : _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_OVERUNDER'], { 'interaxialDistance': _0x397f52 }), _0x27fea0; } return _0x420e5b['d'](_0x525753, _0x3c4dac), _0x525753['prototype']['getClassName'] = function() { return 'StereoscopicFreeCamera'; } , _0x525753; }(_0xebce26); _0x111b09['a']['AddNodeConstructor']('StereoscopicGamepadCamera', function(_0x5bdca7, _0x393fe5, _0x40835b) { return function() { return new _0x2eede8(_0x5bdca7,_0x47d24f['x']['Zero'](),_0x40835b['interaxial_distance'],_0x40835b['isStereoscopicSideBySide'],_0x393fe5); } ; }); var _0x2eede8 = function(_0x1661fb) { function _0x487eea(_0x4e801f, _0x231458, _0x4f0ccd, _0x2a4fe1, _0xc32005) { var _0x52f16f = _0x1661fb['call'](this, _0x4e801f, _0x231458, _0xc32005) || this; return _0x52f16f['interaxialDistance'] = _0x4f0ccd, _0x52f16f['isStereoscopicSideBySide'] = _0x2a4fe1, _0x52f16f['setCameraRigMode'](_0x2a4fe1 ? _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL'] : _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_OVERUNDER'], { 'interaxialDistance': _0x4f0ccd }), _0x52f16f; } return _0x420e5b['d'](_0x487eea, _0x1661fb), _0x487eea['prototype']['getClassName'] = function() { return 'StereoscopicGamepadCamera'; } , _0x487eea; }(_0x1ee953); _0x111b09['a']['AddNodeConstructor']('StereoscopicFreeCamera', function(_0x3fbb4b, _0x150301, _0x181241) { return function() { return new _0x566db4(_0x3fbb4b,_0x47d24f['x']['Zero'](),_0x181241['interaxial_distance'],_0x181241['isStereoscopicSideBySide'],_0x150301); } ; }); var _0x566db4 = function(_0x5de2c1) { function _0x5aa7b6(_0xc34329, _0xd7c692, _0x3e455a, _0x4a7b29, _0x4132de) { var _0x57861a = _0x5de2c1['call'](this, _0xc34329, _0xd7c692, _0x4132de) || this; return _0x57861a['interaxialDistance'] = _0x3e455a, _0x57861a['isStereoscopicSideBySide'] = _0x4a7b29, _0x57861a['setCameraRigMode'](_0x4a7b29 ? _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL'] : _0x4504cf['a']['RIG_MODE_STEREOSCOPIC_OVERUNDER'], { 'interaxialDistance': _0x3e455a }), _0x57861a; } return _0x420e5b['d'](_0x5aa7b6, _0x5de2c1), _0x5aa7b6['prototype']['getClassName'] = function() { return 'StereoscopicUniversalCamera'; } , _0x5aa7b6; }(_0x512fb8); _0x111b09['a']['AddNodeConstructor']('VirtualJoysticksCamera', function(_0x45a35f, _0x300fac) { return function() { return new _0xc5a594(_0x45a35f,_0x47d24f['x']['Zero'](),_0x300fac); } ; }); var _0xc5a594 = function(_0xfc84e5) { function _0x1b7c77(_0x434868, _0x116b66, _0x4cab2a) { var _0x5c4231 = _0xfc84e5['call'](this, _0x434868, _0x116b66, _0x4cab2a) || this; return _0x5c4231['inputs']['addVirtualJoystick'](), _0x5c4231; } return _0x420e5b['d'](_0x1b7c77, _0xfc84e5), _0x1b7c77['prototype']['getClassName'] = function() { return 'VirtualJoysticksCamera'; } , _0x1b7c77; }(_0xebce26) , _0x34ddcd = function() { function _0x1ce7ae() { this['compensateDistortion'] = !0x0, this['multiviewEnabled'] = !0x1; } return Object['defineProperty'](_0x1ce7ae['prototype'], 'aspectRatio', { 'get': function() { return this['hResolution'] / (0x2 * this['vResolution']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ce7ae['prototype'], 'aspectRatioFov', { 'get': function() { return 0x2 * Math['atan'](this['postProcessScaleFactor'] * this['vScreenSize'] / (0x2 * this['eyeToScreenDistance'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ce7ae['prototype'], 'leftHMatrix', { 'get': function() { var _0x766367 = 0x4 * (this['hScreenSize'] / 0x4 - this['lensSeparationDistance'] / 0x2) / this['hScreenSize']; return _0x47d24f['j']['Translation'](_0x766367, 0x0, 0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ce7ae['prototype'], 'rightHMatrix', { 'get': function() { var _0x4e127d = 0x4 * (this['hScreenSize'] / 0x4 - this['lensSeparationDistance'] / 0x2) / this['hScreenSize']; return _0x47d24f['j']['Translation'](-_0x4e127d, 0x0, 0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ce7ae['prototype'], 'leftPreViewMatrix', { 'get': function() { return _0x47d24f['j']['Translation'](0.5 * this['interpupillaryDistance'], 0x0, 0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ce7ae['prototype'], 'rightPreViewMatrix', { 'get': function() { return _0x47d24f['j']['Translation'](-0.5 * this['interpupillaryDistance'], 0x0, 0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1ce7ae['GetDefault'] = function() { var _0x5b3f4d = new _0x1ce7ae(); return _0x5b3f4d['hResolution'] = 0x500, _0x5b3f4d['vResolution'] = 0x320, _0x5b3f4d['hScreenSize'] = 0.149759993, _0x5b3f4d['vScreenSize'] = 0.0935999975, _0x5b3f4d['vScreenCenter'] = 0.0467999987, _0x5b3f4d['eyeToScreenDistance'] = 0.0410000011, _0x5b3f4d['lensSeparationDistance'] = 0.063500002, _0x5b3f4d['interpupillaryDistance'] = 0.064000003, _0x5b3f4d['distortionK'] = [0x1, 0.219999999, 0.239999995, 0x0], _0x5b3f4d['chromaAbCorrection'] = [0.995999992, -0.00400000019, 1.01400006, 0x0], _0x5b3f4d['postProcessScaleFactor'] = 1.714605507808412, _0x5b3f4d['lensCenterOffset'] = 0.151976421, _0x5b3f4d; } , _0x1ce7ae; }() , _0x472899 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20vec2\x20LensCenter;\x0auniform\x20vec2\x20Scale;\x0auniform\x20vec2\x20ScaleIn;\x0auniform\x20vec4\x20HmdWarpParam;\x0avec2\x20HmdWarp(vec2\x20in01)\x20{\x0avec2\x20theta=(in01-LensCenter)*ScaleIn;\x0afloat\x20rSq=theta.x*theta.x+theta.y*theta.y;\x0avec2\x20rvector=theta*(HmdWarpParam.x+HmdWarpParam.y*rSq+HmdWarpParam.z*rSq*rSq+HmdWarpParam.w*rSq*rSq*rSq);\x0areturn\x20LensCenter+Scale*rvector;\x0a}\x0avoid\x20main(void)\x0a{\x0avec2\x20tc=HmdWarp(vUV);\x0aif\x20(tc.x\x20<0.0\x20||\x20tc.x>1.0\x20||\x20tc.y<0.0\x20||\x20tc.y>1.0)\x0agl_FragColor=vec4(0.0,0.0,0.0,0.0);\x0aelse{\x0agl_FragColor=texture2D(textureSampler,tc);\x0a}\x0a}'; _0x3e9e56['a']['ShadersStore']['vrDistortionCorrectionPixelShader'] = _0x472899; var _0x5366ef = function(_0x11e94d) { function _0x5a116d(_0x584e20, _0x1a9275, _0x3d5468, _0x344ac9) { var _0x1aa4b0 = _0x11e94d['call'](this, _0x584e20, 'vrDistortionCorrection', ['LensCenter', 'Scale', 'ScaleIn', 'HmdWarpParam'], null, _0x344ac9['postProcessScaleFactor'], _0x1a9275, _0x11d14a['a']['BILINEAR_SAMPLINGMODE']) || this; return _0x1aa4b0['_isRightEye'] = _0x3d5468, _0x1aa4b0['_distortionFactors'] = _0x344ac9['distortionK'], _0x1aa4b0['_postProcessScaleFactor'] = _0x344ac9['postProcessScaleFactor'], _0x1aa4b0['_lensCenterOffset'] = _0x344ac9['lensCenterOffset'], _0x1aa4b0['adaptScaleToCurrentViewport'] = !0x0, _0x1aa4b0['onSizeChangedObservable']['add'](function() { _0x1aa4b0['_scaleIn'] = new _0x47d24f['w'](0x2,0x2 / _0x1aa4b0['aspectRatio']), _0x1aa4b0['_scaleFactor'] = new _0x47d24f['w'](0x1 / _0x1aa4b0['_postProcessScaleFactor'] * 0.5,0x1 / _0x1aa4b0['_postProcessScaleFactor'] * 0.5 * _0x1aa4b0['aspectRatio']), _0x1aa4b0['_lensCenter'] = new _0x47d24f['w'](_0x1aa4b0['_isRightEye'] ? 0.5 - 0.5 * _0x1aa4b0['_lensCenterOffset'] : 0.5 + 0.5 * _0x1aa4b0['_lensCenterOffset'],0.5); }), _0x1aa4b0['onApplyObservable']['add'](function(_0x42b2b1) { _0x42b2b1['setFloat2']('LensCenter', _0x1aa4b0['_lensCenter']['x'], _0x1aa4b0['_lensCenter']['y']), _0x42b2b1['setFloat2']('Scale', _0x1aa4b0['_scaleFactor']['x'], _0x1aa4b0['_scaleFactor']['y']), _0x42b2b1['setFloat2']('ScaleIn', _0x1aa4b0['_scaleIn']['x'], _0x1aa4b0['_scaleIn']['y']), _0x42b2b1['setFloat4']('HmdWarpParam', _0x1aa4b0['_distortionFactors'][0x0], _0x1aa4b0['_distortionFactors'][0x1], _0x1aa4b0['_distortionFactors'][0x2], _0x1aa4b0['_distortionFactors'][0x3]); }), _0x1aa4b0; } return _0x420e5b['d'](_0x5a116d, _0x11e94d), _0x5a116d; }(_0x1f5ab5) , _0xa7d01f = '#ifdef\x20GL_ES\x0aprecision\x20mediump\x20sampler2DArray;\x0a#endif\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2DArray\x20multiviewSampler;\x0auniform\x20int\x20imageIndex;\x0avoid\x20main(void)\x0a{\x0agl_FragColor=texture(multiviewSampler,vec3(vUV,imageIndex));\x0a}'; _0x3e9e56['a']['ShadersStore']['vrMultiviewToSingleviewPixelShader'] = _0xa7d01f; var _0x50c46d = _0x59bd00(0x3f) , _0x45a1f6 = _0x59bd00(0x53) , _0x21bf6d = _0x59bd00(0x5b); _0x3647a9['b']['prototype']['createRenderTargetCubeTexture'] = function(_0x20e2cd, _0x416415) { var _0x2b6bd5 = _0x420e5b['a']({ 'generateMipMaps': !0x0, 'generateDepthBuffer': !0x0, 'generateStencilBuffer': !0x1, 'type': _0x3647a9['b']['TEXTURETYPE_UNSIGNED_INT'], 'samplingMode': _0x3647a9['b']['TEXTURE_TRILINEAR_SAMPLINGMODE'], 'format': _0x3647a9['b']['TEXTUREFORMAT_RGBA'] }, _0x416415); _0x2b6bd5['generateStencilBuffer'] = _0x2b6bd5['generateDepthBuffer'] && _0x2b6bd5['generateStencilBuffer'], (_0x2b6bd5['type'] !== _0x3647a9['b']['TEXTURETYPE_FLOAT'] || this['_caps']['textureFloatLinearFiltering']) && (_0x2b6bd5['type'] !== _0x3647a9['b']['TEXTURETYPE_HALF_FLOAT'] || this['_caps']['textureHalfFloatLinearFiltering']) || (_0x2b6bd5['samplingMode'] = _0x3647a9['b']['TEXTURE_NEAREST_SAMPLINGMODE']); var _0x2b64f3 = this['_gl'] , _0x2a1057 = new _0x2826dc['a'](this,_0x2826dc['a']['DATASOURCE_RENDERTARGET']); this['_bindTextureDirectly'](_0x2b64f3['TEXTURE_CUBE_MAP'], _0x2a1057, !0x0); var _0x297e91 = this['_getSamplingParameters'](_0x2b6bd5['samplingMode'], _0x2b6bd5['generateMipMaps']); _0x2b6bd5['type'] !== _0x3647a9['b']['TEXTURETYPE_FLOAT'] || this['_caps']['textureFloat'] || (_0x2b6bd5['type'] = _0x3647a9['b']['TEXTURETYPE_UNSIGNED_INT'], _0x3f98cb['a']['Warn']('Float\x20textures\x20are\x20not\x20supported.\x20Cube\x20render\x20target\x20forced\x20to\x20TEXTURETYPE_UNESIGNED_BYTE\x20type')), _0x2b64f3['texParameteri'](_0x2b64f3['TEXTURE_CUBE_MAP'], _0x2b64f3['TEXTURE_MAG_FILTER'], _0x297e91['mag']), _0x2b64f3['texParameteri'](_0x2b64f3['TEXTURE_CUBE_MAP'], _0x2b64f3['TEXTURE_MIN_FILTER'], _0x297e91['min']), _0x2b64f3['texParameteri'](_0x2b64f3['TEXTURE_CUBE_MAP'], _0x2b64f3['TEXTURE_WRAP_S'], _0x2b64f3['CLAMP_TO_EDGE']), _0x2b64f3['texParameteri'](_0x2b64f3['TEXTURE_CUBE_MAP'], _0x2b64f3['TEXTURE_WRAP_T'], _0x2b64f3['CLAMP_TO_EDGE']); for (var _0x62f9c6 = 0x0; _0x62f9c6 < 0x6; _0x62f9c6++) _0x2b64f3['texImage2D'](_0x2b64f3['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0x62f9c6, 0x0, this['_getRGBABufferInternalSizedFormat'](_0x2b6bd5['type'], _0x2b6bd5['format']), _0x20e2cd, _0x20e2cd, 0x0, this['_getInternalFormat'](_0x2b6bd5['format']), this['_getWebGLTextureType'](_0x2b6bd5['type']), null); var _0xc73fa1 = _0x2b64f3['createFramebuffer'](); return this['_bindUnboundFramebuffer'](_0xc73fa1), _0x2a1057['_depthStencilBuffer'] = this['_setupFramebufferDepthAttachments'](_0x2b6bd5['generateStencilBuffer'], _0x2b6bd5['generateDepthBuffer'], _0x20e2cd, _0x20e2cd), _0x2b6bd5['generateMipMaps'] && _0x2b64f3['generateMipmap'](_0x2b64f3['TEXTURE_CUBE_MAP']), this['_bindTextureDirectly'](_0x2b64f3['TEXTURE_CUBE_MAP'], null), _0x2b64f3['bindRenderbuffer'](_0x2b64f3['RENDERBUFFER'], null), this['_bindUnboundFramebuffer'](null), _0x2a1057['_framebuffer'] = _0xc73fa1, _0x2a1057['width'] = _0x20e2cd, _0x2a1057['height'] = _0x20e2cd, _0x2a1057['isReady'] = !0x0, _0x2a1057['isCube'] = !0x0, _0x2a1057['samples'] = 0x1, _0x2a1057['generateMipMaps'] = _0x2b6bd5['generateMipMaps'], _0x2a1057['samplingMode'] = _0x2b6bd5['samplingMode'], _0x2a1057['type'] = _0x2b6bd5['type'], _0x2a1057['format'] = _0x2b6bd5['format'], _0x2a1057['_generateDepthBuffer'] = _0x2b6bd5['generateDepthBuffer'], _0x2a1057['_generateStencilBuffer'] = _0x2b6bd5['generateStencilBuffer'], this['_internalTexturesCache']['push'](_0x2a1057), _0x2a1057; } ; var _0xe8a585 = function(_0x285b38) { function _0x3e0265(_0x205e21, _0x3406c4, _0x353880, _0x416398, _0x6785a4, _0x1ea7dc, _0x369527, _0x54bc27, _0x95e1e4, _0x38cfa6, _0x303c84, _0x14ad1a, _0x369137) { void 0x0 === _0x6785a4 && (_0x6785a4 = !0x0), void 0x0 === _0x1ea7dc && (_0x1ea7dc = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x369527 && (_0x369527 = !0x1), void 0x0 === _0x54bc27 && (_0x54bc27 = _0x11d14a['a']['TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x95e1e4 && (_0x95e1e4 = !0x0), void 0x0 === _0x38cfa6 && (_0x38cfa6 = !0x1), void 0x0 === _0x303c84 && (_0x303c84 = !0x1), void 0x0 === _0x14ad1a && (_0x14ad1a = _0x24e342['a']['TEXTUREFORMAT_RGBA']), void 0x0 === _0x369137 && (_0x369137 = !0x1); var _0x9fe3f8 = _0x285b38['call'](this, null, _0x353880, !_0x416398) || this; return _0x9fe3f8['isCube'] = _0x369527, _0x9fe3f8['renderParticles'] = !0x0, _0x9fe3f8['renderSprites'] = !0x1, _0x9fe3f8['coordinatesMode'] = _0x11d14a['a']['PROJECTION_MODE'], _0x9fe3f8['ignoreCameraViewport'] = !0x1, _0x9fe3f8['onBeforeBindObservable'] = new _0x2dbec2['c'](), _0x9fe3f8['onAfterUnbindObservable'] = new _0x2dbec2['c'](), _0x9fe3f8['onBeforeRenderObservable'] = new _0x2dbec2['c'](), _0x9fe3f8['onAfterRenderObservable'] = new _0x2dbec2['c'](), _0x9fe3f8['onClearObservable'] = new _0x2dbec2['c'](), _0x9fe3f8['_currentRefreshId'] = -0x1, _0x9fe3f8['_refreshRate'] = 0x1, _0x9fe3f8['_samples'] = 0x1, _0x9fe3f8['boundingBoxPosition'] = _0x47d24f['x']['Zero'](), (_0x353880 = _0x9fe3f8['getScene']()) ? (_0x9fe3f8['renderList'] = new Array(), _0x9fe3f8['_engine'] = _0x353880['getEngine'](), _0x9fe3f8['name'] = _0x205e21, _0x9fe3f8['isRenderTarget'] = !0x0, _0x9fe3f8['_initialSizeParameter'] = _0x3406c4, _0x9fe3f8['_processSizeParameter'](_0x3406c4), _0x9fe3f8['_resizeObserver'] = _0x9fe3f8['getScene']()['getEngine']()['onResizeObservable']['add'](function() {}), _0x9fe3f8['_generateMipMaps'] = !!_0x416398, _0x9fe3f8['_doNotChangeAspectRatio'] = _0x6785a4, _0x9fe3f8['_renderingManager'] = new _0x21bf6d['b'](_0x353880), _0x9fe3f8['_renderingManager']['_useSceneAutoClearSetup'] = !0x0, _0x303c84 ? _0x9fe3f8 : (_0x9fe3f8['_renderTargetOptions'] = { 'generateMipMaps': _0x416398, 'type': _0x1ea7dc, 'format': _0x14ad1a, 'samplingMode': _0x54bc27, 'generateDepthBuffer': _0x95e1e4, 'generateStencilBuffer': _0x38cfa6 }, _0x54bc27 === _0x11d14a['a']['NEAREST_SAMPLINGMODE'] && (_0x9fe3f8['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x9fe3f8['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE']), _0x369137 || (_0x369527 ? (_0x9fe3f8['_texture'] = _0x353880['getEngine']()['createRenderTargetCubeTexture'](_0x9fe3f8['getRenderSize'](), _0x9fe3f8['_renderTargetOptions']), _0x9fe3f8['coordinatesMode'] = _0x11d14a['a']['INVCUBIC_MODE'], _0x9fe3f8['_textureMatrix'] = _0x47d24f['j']['Identity']()) : _0x9fe3f8['_texture'] = _0x353880['getEngine']()['createRenderTargetTexture'](_0x9fe3f8['_size'], _0x9fe3f8['_renderTargetOptions'])), _0x9fe3f8)) : _0x9fe3f8; } return _0x420e5b['d'](_0x3e0265, _0x285b38), Object['defineProperty'](_0x3e0265['prototype'], 'renderList', { 'get': function() { return this['_renderList']; }, 'set': function(_0x30d32b) { this['_renderList'] = _0x30d32b, this['_renderList'] && this['_hookArray'](this['_renderList']); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3e0265['prototype']['_hookArray'] = function(_0x2726dc) { var _0x273f42 = this , _0x8c58ec = _0x2726dc['push']; _0x2726dc['push'] = function() { for (var _0xae3246 = [], _0xbbbd31 = 0x0; _0xbbbd31 < arguments['length']; _0xbbbd31++) _0xae3246[_0xbbbd31] = arguments[_0xbbbd31]; var _0x18f969 = 0x0 === _0x2726dc['length'] , _0x5a93e4 = _0x8c58ec['apply'](_0x2726dc, _0xae3246); return _0x18f969 && _0x273f42['getScene']()['meshes']['forEach'](function(_0x3ed832) { _0x3ed832['_markSubMeshesAsLightDirty'](); }), _0x5a93e4; } ; var _0x5df4b6 = _0x2726dc['splice']; _0x2726dc['splice'] = function(_0x4f002c, _0x51e2ca) { var _0x300596 = _0x5df4b6['apply'](_0x2726dc, [_0x4f002c, _0x51e2ca]); return 0x0 === _0x2726dc['length'] && _0x273f42['getScene']()['meshes']['forEach'](function(_0x53f69d) { _0x53f69d['_markSubMeshesAsLightDirty'](); }), _0x300596; } ; } , Object['defineProperty'](_0x3e0265['prototype'], 'onAfterUnbind', { 'set': function(_0x59494a) { this['_onAfterUnbindObserver'] && this['onAfterUnbindObservable']['remove'](this['_onAfterUnbindObserver']), this['_onAfterUnbindObserver'] = this['onAfterUnbindObservable']['add'](_0x59494a); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3e0265['prototype'], 'onBeforeRender', { 'set': function(_0x2f048c) { this['_onBeforeRenderObserver'] && this['onBeforeRenderObservable']['remove'](this['_onBeforeRenderObserver']), this['_onBeforeRenderObserver'] = this['onBeforeRenderObservable']['add'](_0x2f048c); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3e0265['prototype'], 'onAfterRender', { 'set': function(_0x2e0112) { this['_onAfterRenderObserver'] && this['onAfterRenderObservable']['remove'](this['_onAfterRenderObserver']), this['_onAfterRenderObserver'] = this['onAfterRenderObservable']['add'](_0x2e0112); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3e0265['prototype'], 'onClear', { 'set': function(_0x524955) { this['_onClearObserver'] && this['onClearObservable']['remove'](this['_onClearObserver']), this['_onClearObserver'] = this['onClearObservable']['add'](_0x524955); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3e0265['prototype'], 'renderTargetOptions', { 'get': function() { return this['_renderTargetOptions']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3e0265['prototype']['_onRatioRescale'] = function() { this['_sizeRatio'] && this['resize'](this['_initialSizeParameter']); } , Object['defineProperty'](_0x3e0265['prototype'], 'boundingBoxSize', { 'get': function() { return this['_boundingBoxSize']; }, 'set': function(_0x134cae) { if (!this['_boundingBoxSize'] || !this['_boundingBoxSize']['equals'](_0x134cae)) { this['_boundingBoxSize'] = _0x134cae; var _0x90d61c = this['getScene'](); _0x90d61c && _0x90d61c['markAllMaterialsAsDirty'](_0x24e342['a']['MATERIAL_TextureDirtyFlag']); } }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3e0265['prototype']['createDepthStencilTexture'] = function(_0x280377, _0x4b6392, _0x2e4690) { if (void 0x0 === _0x280377 && (_0x280377 = 0x0), void 0x0 === _0x4b6392 && (_0x4b6392 = !0x0), void 0x0 === _0x2e4690 && (_0x2e4690 = !0x1), this['getScene']()) { var _0x346610 = this['getScene']()['getEngine'](); this['depthStencilTexture'] = _0x346610['createDepthStencilTexture'](this['_size'], { 'bilinearFiltering': _0x4b6392, 'comparisonFunction': _0x280377, 'generateStencil': _0x2e4690, 'isCube': this['isCube'] }), _0x346610['setFrameBufferDepthStencilTexture'](this); } } , _0x3e0265['prototype']['_processSizeParameter'] = function(_0x9eb208) { _0x9eb208['ratio'] ? (this['_sizeRatio'] = _0x9eb208['ratio'], this['_size'] = { 'width': this['_bestReflectionRenderTargetDimension'](this['_engine']['getRenderWidth'](), this['_sizeRatio']), 'height': this['_bestReflectionRenderTargetDimension'](this['_engine']['getRenderHeight'](), this['_sizeRatio']) }) : this['_size'] = _0x9eb208; } , Object['defineProperty'](_0x3e0265['prototype'], 'samples', { 'get': function() { return this['_samples']; }, 'set': function(_0xbc3497) { if (this['_samples'] !== _0xbc3497) { var _0x1a755f = this['getScene'](); _0x1a755f && (this['_samples'] = _0x1a755f['getEngine']()['updateRenderTargetTextureSampleCount'](this['_texture'], _0xbc3497)); } }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3e0265['prototype']['resetRefreshCounter'] = function() { this['_currentRefreshId'] = -0x1; } , Object['defineProperty'](_0x3e0265['prototype'], 'refreshRate', { 'get': function() { return this['_refreshRate']; }, 'set': function(_0x35434c) { this['_refreshRate'] = _0x35434c, this['resetRefreshCounter'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3e0265['prototype']['addPostProcess'] = function(_0x140298) { if (!this['_postProcessManager']) { var _0x3f4d3c = this['getScene'](); if (!_0x3f4d3c) return; this['_postProcessManager'] = new _0x45a1f6['a'](_0x3f4d3c), this['_postProcesses'] = new Array(); } this['_postProcesses']['push'](_0x140298), this['_postProcesses'][0x0]['autoClear'] = !0x1; } , _0x3e0265['prototype']['clearPostProcesses'] = function(_0x505428) { if (void 0x0 === _0x505428 && (_0x505428 = !0x1), this['_postProcesses']) { if (_0x505428) for (var _0x5cd077 = 0x0, _0x2e1b0d = this['_postProcesses']; _0x5cd077 < _0x2e1b0d['length']; _0x5cd077++) { _0x2e1b0d[_0x5cd077]['dispose'](); } this['_postProcesses'] = []; } } , _0x3e0265['prototype']['removePostProcess'] = function(_0x345853) { if (this['_postProcesses']) { var _0x3a1ac8 = this['_postProcesses']['indexOf'](_0x345853); -0x1 !== _0x3a1ac8 && (this['_postProcesses']['splice'](_0x3a1ac8, 0x1), this['_postProcesses']['length'] > 0x0 && (this['_postProcesses'][0x0]['autoClear'] = !0x1)); } } , _0x3e0265['prototype']['_shouldRender'] = function() { return -0x1 === this['_currentRefreshId'] ? (this['_currentRefreshId'] = 0x1, !0x0) : this['refreshRate'] === this['_currentRefreshId'] ? (this['_currentRefreshId'] = 0x1, !0x0) : (this['_currentRefreshId']++, !0x1); } , _0x3e0265['prototype']['getRenderSize'] = function() { return this['getRenderWidth'](); } , _0x3e0265['prototype']['getRenderWidth'] = function() { return this['_size']['width'] ? this['_size']['width'] : this['_size']; } , _0x3e0265['prototype']['getRenderHeight'] = function() { return this['_size']['width'] ? this['_size']['height'] : this['_size']; } , Object['defineProperty'](_0x3e0265['prototype'], 'canRescale', { 'get': function() { return !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3e0265['prototype']['scale'] = function(_0x2c7dc0) { var _0x1faddd = this['getRenderSize']() * _0x2c7dc0; this['resize'](_0x1faddd); } , _0x3e0265['prototype']['getReflectionTextureMatrix'] = function() { return this['isCube'] ? this['_textureMatrix'] : _0x285b38['prototype']['getReflectionTextureMatrix']['call'](this); } , _0x3e0265['prototype']['resize'] = function(_0x4ea4a4) { var _0x7ec7ab = this['isCube']; this['releaseInternalTexture'](); var _0x18d22c = this['getScene'](); _0x18d22c && (this['_processSizeParameter'](_0x4ea4a4), this['_texture'] = _0x7ec7ab ? _0x18d22c['getEngine']()['createRenderTargetCubeTexture'](this['getRenderSize'](), this['_renderTargetOptions']) : _0x18d22c['getEngine']()['createRenderTargetTexture'](this['_size'], this['_renderTargetOptions'])); } , _0x3e0265['prototype']['render'] = function(_0x59cd0d, _0x159948) { if (void 0x0 === _0x59cd0d && (_0x59cd0d = !0x1), void 0x0 === _0x159948 && (_0x159948 = !0x1), _0x106e8c = this['getScene']()) { var _0x26fdd1, _0x34c529 = _0x106e8c['getEngine'](); if (void 0x0 !== this['useCameraPostProcesses'] && (_0x59cd0d = this['useCameraPostProcesses']), this['_waitingRenderList']) { this['renderList'] = []; for (var _0x1c5628 = 0x0; _0x1c5628 < this['_waitingRenderList']['length']; _0x1c5628++) { var _0x562107 = this['_waitingRenderList'][_0x1c5628] , _0x12fe81 = _0x106e8c['getMeshByID'](_0x562107); _0x12fe81 && this['renderList']['push'](_0x12fe81); } delete this['_waitingRenderList']; } if (this['renderListPredicate']) { var _0x106e8c; if (this['renderList'] ? this['renderList']['length'] = 0x0 : this['renderList'] = [], !(_0x106e8c = this['getScene']())) return; var _0x41f854 = _0x106e8c['meshes']; for (_0x1c5628 = 0x0; _0x1c5628 < _0x41f854['length']; _0x1c5628++) { var _0x1dd12 = _0x41f854[_0x1c5628]; this['renderListPredicate'](_0x1dd12) && this['renderList']['push'](_0x1dd12); } } this['onBeforeBindObservable']['notifyObservers'](this), this['activeCamera'] ? (_0x26fdd1 = this['activeCamera'], _0x34c529['setViewport'](this['activeCamera']['viewport'], this['getRenderWidth'](), this['getRenderHeight']()), this['activeCamera'] !== _0x106e8c['activeCamera'] && _0x106e8c['setTransformMatrix'](this['activeCamera']['getViewMatrix'](), this['activeCamera']['getProjectionMatrix'](!0x0))) : (_0x26fdd1 = _0x106e8c['activeCamera']) && _0x34c529['setViewport'](_0x26fdd1['viewport'], this['getRenderWidth'](), this['getRenderHeight']()), this['_renderingManager']['reset'](); for (var _0x2b8d4c = this['renderList'] ? this['renderList'] : _0x106e8c['getActiveMeshes']()['data'], _0x1083e0 = this['renderList'] ? this['renderList']['length'] : _0x106e8c['getActiveMeshes']()['length'], _0x5d2f75 = _0x106e8c['getRenderId'](), _0x16ad3c = 0x0; _0x16ad3c < _0x1083e0; _0x16ad3c++) { if (_0x1dd12 = _0x2b8d4c[_0x16ad3c]) { if (!_0x1dd12['isReady'](0x0 === this['refreshRate'])) { this['resetRefreshCounter'](); continue; } _0x1dd12['_preActivateForIntermediateRendering'](_0x5d2f75); var _0x93eefd = void 0x0; if (_0x93eefd = !(this['renderList'] || !_0x26fdd1) && 0x0 == (_0x1dd12['layerMask'] & _0x26fdd1['layerMask']), _0x1dd12['isEnabled']() && _0x1dd12['isVisible'] && _0x1dd12['subMeshes'] && !_0x93eefd && _0x1dd12['_activate'](_0x5d2f75, !0x0)) { _0x1dd12['isAnInstance'] ? _0x1dd12 = _0x1dd12['sourceMesh'] : _0x1dd12['_internalAbstractMeshDataInfo']['_onlyForInstancesIntermediate'] = !0x1, _0x1dd12['_internalAbstractMeshDataInfo']['_isActiveIntermediate'] = !0x0; for (var _0x407e0c = 0x0; _0x407e0c < _0x1dd12['subMeshes']['length']; _0x407e0c++) { var _0x150dcb = _0x1dd12['subMeshes'][_0x407e0c]; _0x106e8c['_activeIndices']['addCount'](_0x150dcb['indexCount'], !0x1), this['_renderingManager']['dispatch'](_0x150dcb, _0x1dd12); } } } } for (var _0x139b14 = 0x0; _0x139b14 < _0x106e8c['particleSystems']['length']; _0x139b14++) { var _0x2515d8 = _0x106e8c['particleSystems'][_0x139b14] , _0x21b36b = _0x2515d8['emitter']; _0x2515d8['isStarted']() && _0x21b36b && _0x21b36b['position'] && _0x21b36b['isEnabled']() && (_0x2b8d4c['indexOf'](_0x21b36b) >= 0x0 && this['_renderingManager']['dispatchParticles'](_0x2515d8)); } if (this['isCube']) for (var _0x816606 = 0x0; _0x816606 < 0x6; _0x816606++) this['renderToTarget'](_0x816606, _0x2b8d4c, _0x59cd0d, _0x159948), _0x106e8c['incrementRenderId'](), _0x106e8c['resetCachedMaterial'](); else this['renderToTarget'](0x0, _0x2b8d4c, _0x59cd0d, _0x159948); this['onAfterUnbindObservable']['notifyObservers'](this), _0x106e8c['activeCamera'] && (this['activeCamera'] && this['activeCamera'] !== _0x106e8c['activeCamera'] && _0x106e8c['setTransformMatrix'](_0x106e8c['activeCamera']['getViewMatrix'](), _0x106e8c['activeCamera']['getProjectionMatrix'](!0x0)), _0x34c529['setViewport'](_0x106e8c['activeCamera']['viewport'])), _0x106e8c['resetCachedMaterial'](); } } , _0x3e0265['prototype']['_bestReflectionRenderTargetDimension'] = function(_0xeed557, _0xd4de05) { var _0x1f36f0 = _0xeed557 * _0xd4de05 , _0x38d54b = _0x1eb50e['h']['NearestPOT'](_0x1f36f0 + 0x4000 / (0x80 + _0x1f36f0)); return Math['min'](_0x1eb50e['h']['FloorPOT'](_0xeed557), _0x38d54b); } , _0x3e0265['prototype']['_bindFrameBuffer'] = function(_0x300afd) { void 0x0 === _0x300afd && (_0x300afd = 0x0); var _0x72c7fa = this['getScene'](); if (_0x72c7fa) { var _0x3ac386 = _0x72c7fa['getEngine'](); this['_texture'] && _0x3ac386['bindFramebuffer'](this['_texture'], this['isCube'] ? _0x300afd : void 0x0, void 0x0, void 0x0, this['ignoreCameraViewport'], this['depthStencilTexture'] ? this['depthStencilTexture'] : void 0x0); } } , _0x3e0265['prototype']['unbindFrameBuffer'] = function(_0x5d6267, _0x374de7) { var _0xdc7b96 = this; this['_texture'] && _0x5d6267['unBindFramebuffer'](this['_texture'], this['isCube'], function() { _0xdc7b96['onAfterRenderObservable']['notifyObservers'](_0x374de7); }); } , _0x3e0265['prototype']['renderToTarget'] = function(_0x26f480, _0x319c68, _0x255ecf, _0x3f9842) { var _0x1c394b = this['getScene'](); if (_0x1c394b) { var _0xbe52e3 = _0x1c394b['getEngine'](); if (this['_texture']) { this['_postProcessManager'] ? this['_postProcessManager']['_prepareFrame'](this['_texture'], this['_postProcesses']) : _0x255ecf && _0x1c394b['postProcessManager']['_prepareFrame'](this['_texture']) || this['_bindFrameBuffer'](_0x26f480), this['onBeforeRenderObservable']['notifyObservers'](_0x26f480), this['onClearObservable']['hasObservers']() ? this['onClearObservable']['notifyObservers'](_0xbe52e3) : _0xbe52e3['clear'](this['clearColor'] || _0x1c394b['clearColor'], !0x0, !0x0, !0x0), this['_doNotChangeAspectRatio'] || _0x1c394b['updateTransformMatrix'](!0x0); for (var _0x5872db = 0x0, _0x22f4ec = _0x1c394b['_beforeRenderTargetDrawStage']; _0x5872db < _0x22f4ec['length']; _0x5872db++) { _0x22f4ec[_0x5872db]['action'](this); } this['_renderingManager']['render'](this['customRenderFunction'], _0x319c68, this['renderParticles'], this['renderSprites']); for (var _0x206cc3 = 0x0, _0xd1e673 = _0x1c394b['_afterRenderTargetDrawStage']; _0x206cc3 < _0xd1e673['length']; _0x206cc3++) { _0xd1e673[_0x206cc3]['action'](this); } this['_postProcessManager'] ? this['_postProcessManager']['_finalizeFrame'](!0x1, this['_texture'], _0x26f480, this['_postProcesses'], this['ignoreCameraViewport']) : _0x255ecf && _0x1c394b['postProcessManager']['_finalizeFrame'](!0x1, this['_texture'], _0x26f480), this['_doNotChangeAspectRatio'] || _0x1c394b['updateTransformMatrix'](!0x0), _0x3f9842 && _0x1eb50e['h']['DumpFramebuffer'](this['getRenderWidth'](), this['getRenderHeight'](), _0xbe52e3), this['isCube'] && 0x5 !== _0x26f480 ? this['onAfterRenderObservable']['notifyObservers'](_0x26f480) : (this['isCube'] && 0x5 === _0x26f480 && _0xbe52e3['generateMipMapsForCubemap'](this['_texture']), this['unbindFrameBuffer'](_0xbe52e3, _0x26f480)); } } } , _0x3e0265['prototype']['setRenderingOrder'] = function(_0x550136, _0x402659, _0x1d4aa4, _0x3ff6b3) { void 0x0 === _0x402659 && (_0x402659 = null), void 0x0 === _0x1d4aa4 && (_0x1d4aa4 = null), void 0x0 === _0x3ff6b3 && (_0x3ff6b3 = null), this['_renderingManager']['setRenderingOrder'](_0x550136, _0x402659, _0x1d4aa4, _0x3ff6b3); } , _0x3e0265['prototype']['setRenderingAutoClearDepthStencil'] = function(_0x2c0392, _0x242269) { this['_renderingManager']['setRenderingAutoClearDepthStencil'](_0x2c0392, _0x242269), this['_renderingManager']['_useSceneAutoClearSetup'] = !0x1; } , _0x3e0265['prototype']['clone'] = function() { var _0x447229 = this['getSize']() , _0x160989 = new _0x3e0265(this['name'],_0x447229,this['getScene'](),this['_renderTargetOptions']['generateMipMaps'],this['_doNotChangeAspectRatio'],this['_renderTargetOptions']['type'],this['isCube'],this['_renderTargetOptions']['samplingMode'],this['_renderTargetOptions']['generateDepthBuffer'],this['_renderTargetOptions']['generateStencilBuffer']); return _0x160989['hasAlpha'] = this['hasAlpha'], _0x160989['level'] = this['level'], _0x160989['coordinatesMode'] = this['coordinatesMode'], this['renderList'] && (_0x160989['renderList'] = this['renderList']['slice'](0x0)), _0x160989; } , _0x3e0265['prototype']['serialize'] = function() { if (!this['name']) return null; var _0x583b1a = _0x285b38['prototype']['serialize']['call'](this); if (_0x583b1a['renderTargetSize'] = this['getRenderSize'](), _0x583b1a['renderList'] = [], this['renderList']) for (var _0x3065b8 = 0x0; _0x3065b8 < this['renderList']['length']; _0x3065b8++) _0x583b1a['renderList']['push'](this['renderList'][_0x3065b8]['id']); return _0x583b1a; } , _0x3e0265['prototype']['disposeFramebufferObjects'] = function() { var _0x17efd9 = this['getInternalTexture']() , _0x15e8f8 = this['getScene'](); _0x17efd9 && _0x15e8f8 && _0x15e8f8['getEngine']()['_releaseFramebufferObjects'](_0x17efd9); } , _0x3e0265['prototype']['dispose'] = function() { this['_postProcessManager'] && (this['_postProcessManager']['dispose'](), this['_postProcessManager'] = null), this['clearPostProcesses'](!0x0), this['_resizeObserver'] && (this['getScene']()['getEngine']()['onResizeObservable']['remove'](this['_resizeObserver']), this['_resizeObserver'] = null), this['renderList'] = null; var _0x143445 = this['getScene'](); if (_0x143445) { var _0x3ef06e = _0x143445['customRenderTargets']['indexOf'](this); _0x3ef06e >= 0x0 && _0x143445['customRenderTargets']['splice'](_0x3ef06e, 0x1); for (var _0x5201ff = 0x0, _0x1f9f05 = _0x143445['cameras']; _0x5201ff < _0x1f9f05['length']; _0x5201ff++) { var _0x2f476d = _0x1f9f05[_0x5201ff]; (_0x3ef06e = _0x2f476d['customRenderTargets']['indexOf'](this)) >= 0x0 && _0x2f476d['customRenderTargets']['splice'](_0x3ef06e, 0x1); } _0x285b38['prototype']['dispose']['call'](this); } } , _0x3e0265['prototype']['_rebuild'] = function() { this['refreshRate'] === _0x3e0265['REFRESHRATE_RENDER_ONCE'] && (this['refreshRate'] = _0x3e0265['REFRESHRATE_RENDER_ONCE']), this['_postProcessManager'] && this['_postProcessManager']['_rebuild'](); } , _0x3e0265['prototype']['freeRenderingGroups'] = function() { this['_renderingManager'] && this['_renderingManager']['freeRenderingGroups'](); } , _0x3e0265['prototype']['getViewCount'] = function() { return 0x1; } , _0x3e0265['REFRESHRATE_RENDER_ONCE'] = 0x0, _0x3e0265['REFRESHRATE_RENDER_ONEVERYFRAME'] = 0x1, _0x3e0265['REFRESHRATE_RENDER_ONEVERYTWOFRAMES'] = 0x2, _0x3e0265; }(_0x11d14a['a']); _0x11d14a['a']['_CreateRenderTargetTexture'] = function(_0x44f5a1, _0x1d2a9f, _0x1f94ab, _0x278445) { return new _0xe8a585(_0x44f5a1,_0x1d2a9f,_0x1f94ab,_0x278445); } ; var _0x5efbf9 = function(_0x2328ae) { function _0x414a5b(_0x427d49, _0x58fc96) { void 0x0 === _0x58fc96 && (_0x58fc96 = 0x200); var _0x3ba838 = _0x2328ae['call'](this, 'multiview\x20rtt', _0x58fc96, _0x427d49, !0x1, !0x0, _0x2826dc['a']['DATASOURCE_UNKNOWN'], !0x1, void 0x0, !0x1, !0x1, !0x0, void 0x0, !0x0) || this , _0x58fe4b = _0x427d49['getEngine']()['createMultiviewRenderTargetTexture'](_0x3ba838['getRenderWidth'](), _0x3ba838['getRenderHeight']()); return _0x58fe4b['isMultiview'] = !0x0, _0x3ba838['_texture'] = _0x58fe4b, _0x3ba838; } return _0x420e5b['d'](_0x414a5b, _0x2328ae), _0x414a5b['prototype']['_bindFrameBuffer'] = function(_0x688c80) { void 0x0 === _0x688c80 && (_0x688c80 = 0x0), this['_texture'] && this['getScene']()['getEngine']()['bindMultiviewFramebuffer'](this['_texture']); } , _0x414a5b['prototype']['getViewCount'] = function() { return 0x2; } , _0x414a5b; }(_0xe8a585); _0x3647a9['b']['prototype']['createMultiviewRenderTargetTexture'] = function(_0xb8a953, _0x4b153d) { var _0xba6c9d = this['_gl']; if (!this['getCaps']()['multiview']) throw 'Multiview\x20is\x20not\x20supported'; var _0x16085a = new _0x2826dc['a'](this,_0x2826dc['a']['DATASOURCE_UNKNOWN'],!0x0); return _0x16085a['width'] = _0xb8a953, _0x16085a['height'] = _0x4b153d, _0x16085a['_framebuffer'] = _0xba6c9d['createFramebuffer'](), _0x16085a['_colorTextureArray'] = _0xba6c9d['createTexture'](), _0xba6c9d['bindTexture'](_0xba6c9d['TEXTURE_2D_ARRAY'], _0x16085a['_colorTextureArray']), _0xba6c9d['texStorage3D'](_0xba6c9d['TEXTURE_2D_ARRAY'], 0x1, _0xba6c9d['RGBA8'], _0xb8a953, _0x4b153d, 0x2), _0x16085a['_depthStencilTextureArray'] = _0xba6c9d['createTexture'](), _0xba6c9d['bindTexture'](_0xba6c9d['TEXTURE_2D_ARRAY'], _0x16085a['_depthStencilTextureArray']), _0xba6c9d['texStorage3D'](_0xba6c9d['TEXTURE_2D_ARRAY'], 0x1, _0xba6c9d['DEPTH32F_STENCIL8'], _0xb8a953, _0x4b153d, 0x2), _0x16085a['isReady'] = !0x0, _0x16085a; } , _0x3647a9['b']['prototype']['bindMultiviewFramebuffer'] = function(_0x38b483) { var _0x109220 = this['_gl'] , _0x44665b = this['getCaps']()['multiview']; if (this['bindFramebuffer'](_0x38b483, void 0x0, void 0x0, void 0x0, !0x0), _0x109220['bindFramebuffer'](_0x109220['DRAW_FRAMEBUFFER'], _0x38b483['_framebuffer']), !_0x38b483['_colorTextureArray'] || !_0x38b483['_depthStencilTextureArray']) throw 'Invalid\x20multiview\x20frame\x20buffer'; _0x44665b['framebufferTextureMultiviewOVR'](_0x109220['DRAW_FRAMEBUFFER'], _0x109220['COLOR_ATTACHMENT0'], _0x38b483['_colorTextureArray'], 0x0, 0x0, 0x2), _0x44665b['framebufferTextureMultiviewOVR'](_0x109220['DRAW_FRAMEBUFFER'], _0x109220['DEPTH_STENCIL_ATTACHMENT'], _0x38b483['_depthStencilTextureArray'], 0x0, 0x0, 0x2); } , _0x4504cf['a']['prototype']['_useMultiviewToSingleView'] = !0x1, _0x4504cf['a']['prototype']['_multiviewTexture'] = null, _0x4504cf['a']['prototype']['_resizeOrCreateMultiviewTexture'] = function(_0x5e7a71, _0x5a6b41) { this['_multiviewTexture'] ? this['_multiviewTexture']['getRenderWidth']() == _0x5e7a71 && this['_multiviewTexture']['getRenderHeight']() == _0x5a6b41 || (this['_multiviewTexture']['dispose'](), this['_multiviewTexture'] = new _0x5efbf9(this['getScene'](),{ 'width': _0x5e7a71, 'height': _0x5a6b41 })) : this['_multiviewTexture'] = new _0x5efbf9(this['getScene'](),{ 'width': _0x5e7a71, 'height': _0x5a6b41 }); } , _0x366639['a']['prototype']['_transformMatrixR'] = _0x47d24f['j']['Zero'](), _0x366639['a']['prototype']['_multiviewSceneUbo'] = null, _0x366639['a']['prototype']['_createMultiviewUbo'] = function() { this['_multiviewSceneUbo'] = new _0x50c46d['a'](this['getEngine'](),void 0x0,!0x0), this['_multiviewSceneUbo']['addUniform']('viewProjection', 0x10), this['_multiviewSceneUbo']['addUniform']('viewProjectionR', 0x10), this['_multiviewSceneUbo']['addUniform']('view', 0x10); } , _0x366639['a']['prototype']['_updateMultiviewUbo'] = function(_0x5522ef, _0x149932) { _0x5522ef && _0x149932 && _0x5522ef['multiplyToRef'](_0x149932, this['_transformMatrixR']), _0x5522ef && _0x149932 && (_0x5522ef['multiplyToRef'](_0x149932, _0x47d24f['t']['Matrix'][0x0]), _0x47d24f['i']['GetRightPlaneToRef'](_0x47d24f['t']['Matrix'][0x0], this['_frustumPlanes'][0x3])), this['_multiviewSceneUbo'] && (this['_multiviewSceneUbo']['updateMatrix']('viewProjection', this['getTransformMatrix']()), this['_multiviewSceneUbo']['updateMatrix']('viewProjectionR', this['_transformMatrixR']), this['_multiviewSceneUbo']['updateMatrix']('view', this['_viewMatrix']), this['_multiviewSceneUbo']['update']()); } , _0x366639['a']['prototype']['_renderMultiviewToSingleView'] = function(_0x5586d9) { _0x5586d9['_resizeOrCreateMultiviewTexture'](_0x5586d9['_rigPostProcess'] && _0x5586d9['_rigPostProcess'] && _0x5586d9['_rigPostProcess']['width'] > 0x0 ? _0x5586d9['_rigPostProcess']['width'] / 0x2 : this['getEngine']()['getRenderWidth'](!0x0) / 0x2, _0x5586d9['_rigPostProcess'] && _0x5586d9['_rigPostProcess'] && _0x5586d9['_rigPostProcess']['height'] > 0x0 ? _0x5586d9['_rigPostProcess']['height'] : this['getEngine']()['getRenderHeight'](!0x0)), this['_multiviewSceneUbo'] || this['_createMultiviewUbo'](), _0x5586d9['outputRenderTarget'] = _0x5586d9['_multiviewTexture'], this['_renderForCamera'](_0x5586d9), _0x5586d9['outputRenderTarget'] = null; for (var _0x2919f1 = 0x0; _0x2919f1 < _0x5586d9['_rigCameras']['length']; _0x2919f1++) { var _0x38173f = this['getEngine'](); this['_activeCamera'] = _0x5586d9['_rigCameras'][_0x2919f1], _0x38173f['setViewport'](this['_activeCamera']['viewport']), this['postProcessManager'] && (this['postProcessManager']['_prepareFrame'](), this['postProcessManager']['_finalizeFrame'](this['_activeCamera']['isIntermediate'])); } } ; var _0x3462d5 = function(_0x28a1fb) { function _0x14b5cb(_0x4348e8, _0x363bf3, _0x154f73) { var _0x10df09 = _0x28a1fb['call'](this, _0x4348e8, 'vrMultiviewToSingleview', ['imageIndex'], ['multiviewSampler'], _0x154f73, _0x363bf3, _0x11d14a['a']['BILINEAR_SAMPLINGMODE']) || this; return _0x10df09['onSizeChangedObservable']['add'](function() {}), _0x10df09['onApplyObservable']['add'](function(_0x2ab559) { _0x363bf3['_scene']['activeCamera'] && _0x363bf3['_scene']['activeCamera']['isLeftCamera'] ? _0x2ab559['setInt']('imageIndex', 0x0) : _0x2ab559['setInt']('imageIndex', 0x1), _0x2ab559['setTexture']('multiviewSampler', _0x363bf3['_multiviewTexture']); }), _0x10df09; } return _0x420e5b['d'](_0x14b5cb, _0x28a1fb), _0x14b5cb; }(_0x1f5ab5); _0x4504cf['a']['_setVRRigMode'] = function(_0x5ac175, _0x119ddf) { var _0x4937eb = _0x119ddf['vrCameraMetrics'] || _0x34ddcd['GetDefault'](); _0x5ac175['_rigCameras'][0x0]['_cameraRigParams']['vrMetrics'] = _0x4937eb, _0x5ac175['_rigCameras'][0x0]['viewport'] = new _0x47d24f['z'](0x0,0x0,0.5,0x1), _0x5ac175['_rigCameras'][0x0]['_cameraRigParams']['vrWorkMatrix'] = new _0x47d24f['j'](), _0x5ac175['_rigCameras'][0x0]['_cameraRigParams']['vrHMatrix'] = _0x4937eb['leftHMatrix'], _0x5ac175['_rigCameras'][0x0]['_cameraRigParams']['vrPreViewMatrix'] = _0x4937eb['leftPreViewMatrix'], _0x5ac175['_rigCameras'][0x0]['getProjectionMatrix'] = _0x5ac175['_rigCameras'][0x0]['_getVRProjectionMatrix'], _0x5ac175['_rigCameras'][0x1]['_cameraRigParams']['vrMetrics'] = _0x4937eb, _0x5ac175['_rigCameras'][0x1]['viewport'] = new _0x47d24f['z'](0.5,0x0,0.5,0x1), _0x5ac175['_rigCameras'][0x1]['_cameraRigParams']['vrWorkMatrix'] = new _0x47d24f['j'](), _0x5ac175['_rigCameras'][0x1]['_cameraRigParams']['vrHMatrix'] = _0x4937eb['rightHMatrix'], _0x5ac175['_rigCameras'][0x1]['_cameraRigParams']['vrPreViewMatrix'] = _0x4937eb['rightPreViewMatrix'], _0x5ac175['_rigCameras'][0x1]['getProjectionMatrix'] = _0x5ac175['_rigCameras'][0x1]['_getVRProjectionMatrix'], _0x4937eb['multiviewEnabled'] && (_0x5ac175['getScene']()['getEngine']()['getCaps']()['multiview'] ? (_0x5ac175['_useMultiviewToSingleView'] = !0x0, _0x5ac175['_rigPostProcess'] = new _0x3462d5('VRMultiviewToSingleview',_0x5ac175,_0x4937eb['postProcessScaleFactor'])) : (_0x3f98cb['a']['Warn']('Multiview\x20is\x20not\x20supported,\x20falling\x20back\x20to\x20standard\x20rendering'), _0x4937eb['multiviewEnabled'] = !0x1)), _0x4937eb['compensateDistortion'] && (_0x5ac175['_rigCameras'][0x0]['_rigPostProcess'] = new _0x5366ef('VR_Distort_Compensation_Left',_0x5ac175['_rigCameras'][0x0],!0x1,_0x4937eb), _0x5ac175['_rigCameras'][0x1]['_rigPostProcess'] = new _0x5366ef('VR_Distort_Compensation_Right',_0x5ac175['_rigCameras'][0x1],!0x0,_0x4937eb)); } , _0x111b09['a']['AddNodeConstructor']('VRDeviceOrientationFreeCamera', function(_0xbc42fa, _0x472e32) { return function() { return new _0x54fc08(_0xbc42fa,0x0,0x0,0x1,_0x47d24f['x']['Zero'](),_0x472e32); } ; }); var _0x54fc08 = function(_0x23725b) { function _0x5c0ead(_0x1c8999, _0x7ac0a, _0x179802, _0x3ec95f, _0x9d06b4, _0x3fc44d, _0x5e455c, _0x53cea5) { void 0x0 === _0x5e455c && (_0x5e455c = !0x0), void 0x0 === _0x53cea5 && (_0x53cea5 = _0x34ddcd['GetDefault']()); var _0x4e93bd = _0x23725b['call'](this, _0x1c8999, _0x7ac0a, _0x179802, _0x3ec95f, _0x9d06b4, _0x3fc44d) || this; return _0x53cea5['compensateDistortion'] = _0x5e455c, _0x4e93bd['setCameraRigMode'](_0x4504cf['a']['RIG_MODE_VR'], { 'vrCameraMetrics': _0x53cea5 }), _0x4e93bd['inputs']['addVRDeviceOrientation'](), _0x4e93bd; } return _0x420e5b['d'](_0x5c0ead, _0x23725b), _0x5c0ead['prototype']['getClassName'] = function() { return 'VRDeviceOrientationArcRotateCamera'; } , _0x5c0ead; }(_0x1fd852); _0x111b09['a']['AddNodeConstructor']('VRDeviceOrientationFreeCamera', function(_0x5c218e, _0x42e93c) { return function() { return new _0x5515e(_0x5c218e,_0x47d24f['x']['Zero'](),_0x42e93c); } ; }); var _0x5515e = function(_0x4bd022) { function _0x2bbedb(_0x47f032, _0x31e716, _0x18c949, _0xb299f7, _0x22c1be) { void 0x0 === _0xb299f7 && (_0xb299f7 = !0x0), void 0x0 === _0x22c1be && (_0x22c1be = _0x34ddcd['GetDefault']()); var _0x3d8cc3 = _0x4bd022['call'](this, _0x47f032, _0x31e716, _0x18c949) || this; return _0x22c1be['compensateDistortion'] = _0xb299f7, _0x3d8cc3['setCameraRigMode'](_0x4504cf['a']['RIG_MODE_VR'], { 'vrCameraMetrics': _0x22c1be }), _0x3d8cc3; } return _0x420e5b['d'](_0x2bbedb, _0x4bd022), _0x2bbedb['prototype']['getClassName'] = function() { return 'VRDeviceOrientationFreeCamera'; } , _0x2bbedb; }(_0x1cae74); _0x111b09['a']['AddNodeConstructor']('VRDeviceOrientationGamepadCamera', function(_0x8e60cc, _0x312190) { return function() { return new _0x46ebe9(_0x8e60cc,_0x47d24f['x']['Zero'](),_0x312190); } ; }); var _0x46ebe9 = function(_0x367e81) { function _0x14b209(_0x9635d9, _0x3e56e3, _0x1c9226, _0x29c26b, _0x336d75) { void 0x0 === _0x29c26b && (_0x29c26b = !0x0), void 0x0 === _0x336d75 && (_0x336d75 = _0x34ddcd['GetDefault']()); var _0x45c828 = _0x367e81['call'](this, _0x9635d9, _0x3e56e3, _0x1c9226, _0x29c26b, _0x336d75) || this; return _0x45c828['inputs']['addGamepad'](), _0x45c828; } return _0x420e5b['d'](_0x14b209, _0x367e81), _0x14b209['prototype']['getClassName'] = function() { return 'VRDeviceOrientationGamepadCamera'; } , _0x14b209; }(_0x5515e) , _0x4e9f1d = _0x59bd00(0x41); _0x4504cf['a']['_setWebVRRigMode'] = function(_0x6e36d, _0x3958c7) { if (_0x3958c7['vrDisplay']) { var _0x1c63c4 = _0x3958c7['vrDisplay']['getEyeParameters']('left') , _0x1364ee = _0x3958c7['vrDisplay']['getEyeParameters']('right'); _0x6e36d['_rigCameras'][0x0]['viewport'] = new _0x47d24f['z'](0x0,0x0,0.5,0x1), _0x6e36d['_rigCameras'][0x0]['setCameraRigParameter']('left', !0x0), _0x6e36d['_rigCameras'][0x0]['setCameraRigParameter']('specs', _0x3958c7['specs']), _0x6e36d['_rigCameras'][0x0]['setCameraRigParameter']('eyeParameters', _0x1c63c4), _0x6e36d['_rigCameras'][0x0]['setCameraRigParameter']('frameData', _0x3958c7['frameData']), _0x6e36d['_rigCameras'][0x0]['setCameraRigParameter']('parentCamera', _0x3958c7['parentCamera']), _0x6e36d['_rigCameras'][0x0]['_cameraRigParams']['vrWorkMatrix'] = new _0x47d24f['j'](), _0x6e36d['_rigCameras'][0x0]['getProjectionMatrix'] = _0x6e36d['_getWebVRProjectionMatrix'], _0x6e36d['_rigCameras'][0x0]['parent'] = _0x6e36d, _0x6e36d['_rigCameras'][0x0]['_getViewMatrix'] = _0x6e36d['_getWebVRViewMatrix'], _0x6e36d['_rigCameras'][0x1]['viewport'] = new _0x47d24f['z'](0.5,0x0,0.5,0x1), _0x6e36d['_rigCameras'][0x1]['setCameraRigParameter']('eyeParameters', _0x1364ee), _0x6e36d['_rigCameras'][0x1]['setCameraRigParameter']('specs', _0x3958c7['specs']), _0x6e36d['_rigCameras'][0x1]['setCameraRigParameter']('frameData', _0x3958c7['frameData']), _0x6e36d['_rigCameras'][0x1]['setCameraRigParameter']('parentCamera', _0x3958c7['parentCamera']), _0x6e36d['_rigCameras'][0x1]['_cameraRigParams']['vrWorkMatrix'] = new _0x47d24f['j'](), _0x6e36d['_rigCameras'][0x1]['getProjectionMatrix'] = _0x6e36d['_getWebVRProjectionMatrix'], _0x6e36d['_rigCameras'][0x1]['parent'] = _0x6e36d, _0x6e36d['_rigCameras'][0x1]['_getViewMatrix'] = _0x6e36d['_getWebVRViewMatrix']; } } , Object['defineProperty'](_0x3647a9['b']['prototype'], 'isInVRExclusivePointerMode', { 'get': function() { return this['_vrExclusivePointerMode']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3647a9['b']['prototype']['_prepareVRComponent'] = function() { this['_vrSupported'] = !0x1, this['_vrExclusivePointerMode'] = !0x1, this['onVRDisplayChangedObservable'] = new _0x2dbec2['c'](), this['onVRRequestPresentComplete'] = new _0x2dbec2['c'](), this['onVRRequestPresentStart'] = new _0x2dbec2['c'](); } , _0x3647a9['b']['prototype']['isVRDevicePresent'] = function() { return !!this['_vrDisplay']; } , _0x3647a9['b']['prototype']['getVRDevice'] = function() { return this['_vrDisplay']; } , _0x3647a9['b']['prototype']['initWebVR'] = function() { return this['initWebVRAsync'](), this['onVRDisplayChangedObservable']; } , _0x3647a9['b']['prototype']['initWebVRAsync'] = function() { var _0x19c6e4 = this , _0x5c6514 = function() { var _0x4b0765 = { 'vrDisplay': _0x19c6e4['_vrDisplay'], 'vrSupported': _0x19c6e4['_vrSupported'] }; _0x19c6e4['onVRDisplayChangedObservable']['notifyObservers'](_0x4b0765), _0x19c6e4['_webVRInitPromise'] = new Promise(function(_0x68aad7) { _0x68aad7(_0x4b0765); } ); }; return this['_onVrDisplayConnect'] || (this['_onVrDisplayConnect'] = function(_0x43fa1a) { _0x19c6e4['_vrDisplay'] = _0x43fa1a['display'], _0x5c6514(); } , this['_onVrDisplayDisconnect'] = function() { _0x19c6e4['_vrDisplay']['cancelAnimationFrame'](_0x19c6e4['_frameHandler']), _0x19c6e4['_vrDisplay'] = void 0x0, _0x19c6e4['_frameHandler'] = _0x1eb50e['h']['QueueNewFrame'](_0x19c6e4['_bindedRenderFunction']), _0x5c6514(); } , this['_onVrDisplayPresentChange'] = function() { _0x19c6e4['_vrExclusivePointerMode'] = _0x19c6e4['_vrDisplay'] && _0x19c6e4['_vrDisplay']['isPresenting']; } , window['addEventListener']('vrdisplayconnect', this['_onVrDisplayConnect']), window['addEventListener']('vrdisplaydisconnect', this['_onVrDisplayDisconnect']), window['addEventListener']('vrdisplaypresentchange', this['_onVrDisplayPresentChange'])), this['_webVRInitPromise'] = this['_webVRInitPromise'] || this['_getVRDisplaysAsync'](), this['_webVRInitPromise']['then'](_0x5c6514), this['_webVRInitPromise']; } , _0x3647a9['b']['prototype']['_getVRDisplaysAsync'] = function() { var _0x37f02b = this; return new Promise(function(_0x453464) { navigator['getVRDisplays'] ? navigator['getVRDisplays']()['then'](function(_0x3fe7c2) { _0x37f02b['_vrSupported'] = !0x0, _0x37f02b['_vrDisplay'] = _0x3fe7c2[0x0], _0x453464({ 'vrDisplay': _0x37f02b['_vrDisplay'], 'vrSupported': _0x37f02b['_vrSupported'] }); }) : (_0x37f02b['_vrDisplay'] = void 0x0, _0x37f02b['_vrSupported'] = !0x1, _0x453464({ 'vrDisplay': _0x37f02b['_vrDisplay'], 'vrSupported': _0x37f02b['_vrSupported'] })); } ); } , _0x3647a9['b']['prototype']['enableVR'] = function() { var _0x2e4ae5 = this; if (this['_vrDisplay'] && !this['_vrDisplay']['isPresenting']) { this['onVRRequestPresentStart']['notifyObservers'](this), this['_vrDisplay']['requestPresent']([{ 'source': this['getRenderingCanvas']() }])['then'](function() { _0x2e4ae5['onVRRequestPresentComplete']['notifyObservers'](!0x0), _0x2e4ae5['_onVRFullScreenTriggered'](); })['catch'](function() { _0x2e4ae5['onVRRequestPresentComplete']['notifyObservers'](!0x1); }); } } , _0x3647a9['b']['prototype']['_onVRFullScreenTriggered'] = function() { if (this['_vrDisplay'] && this['_vrDisplay']['isPresenting']) { this['_oldSize'] = new _0x47d24f['r'](this['getRenderWidth'](),this['getRenderHeight']()), this['_oldHardwareScaleFactor'] = this['getHardwareScalingLevel'](); var _0x1a24eb = this['_vrDisplay']['getEyeParameters']('left'); this['setHardwareScalingLevel'](0x1), this['setSize'](0x2 * _0x1a24eb['renderWidth'], _0x1a24eb['renderHeight']); } else this['setHardwareScalingLevel'](this['_oldHardwareScaleFactor']), this['setSize'](this['_oldSize']['width'], this['_oldSize']['height']); } , _0x3647a9['b']['prototype']['disableVR'] = function() { var _0x5ae7d7 = this; this['_vrDisplay'] && this['_vrDisplay']['isPresenting'] && this['_vrDisplay']['exitPresent']()['then'](function() { return _0x5ae7d7['_onVRFullScreenTriggered'](); })['catch'](function() { return _0x5ae7d7['_onVRFullScreenTriggered'](); }), _0x32d626['a']['IsWindowObjectExist']() && (window['removeEventListener']('vrdisplaypointerrestricted', this['_onVRDisplayPointerRestricted']), window['removeEventListener']('vrdisplaypointerunrestricted', this['_onVRDisplayPointerUnrestricted']), this['_onVrDisplayConnect'] && (window['removeEventListener']('vrdisplayconnect', this['_onVrDisplayConnect']), this['_onVrDisplayDisconnect'] && window['removeEventListener']('vrdisplaydisconnect', this['_onVrDisplayDisconnect']), this['_onVrDisplayPresentChange'] && window['removeEventListener']('vrdisplaypresentchange', this['_onVrDisplayPresentChange']), this['_onVrDisplayConnect'] = null, this['_onVrDisplayDisconnect'] = null)); } , _0x3647a9['b']['prototype']['_connectVREvents'] = function(_0x52900f, _0x534074) { this['_onVRDisplayPointerRestricted'] = function() { _0x52900f && _0x52900f['requestPointerLock'](); } , this['_onVRDisplayPointerUnrestricted'] = function() { _0x534074['exitPointerLock'] && _0x534074['exitPointerLock'](); } , _0x32d626['a']['IsWindowObjectExist']() && (window['addEventListener']('vrdisplaypointerrestricted', this['_onVRDisplayPointerRestricted'], !0x1), window['addEventListener']('vrdisplaypointerunrestricted', this['_onVRDisplayPointerUnrestricted'], !0x1)); } , _0x3647a9['b']['prototype']['_submitVRFrame'] = function() { if (this['_vrDisplay'] && this['_vrDisplay']['isPresenting']) try { this['_vrDisplay']['submitFrame'](); } catch (_0x1d272d) { _0x1eb50e['h']['Warn']('webVR\x20submitFrame\x20has\x20had\x20an\x20unexpected\x20failure:\x20' + _0x1d272d); } } , _0x3647a9['b']['prototype']['isVRPresenting'] = function() { return this['_vrDisplay'] && this['_vrDisplay']['isPresenting']; } , _0x3647a9['b']['prototype']['_requestVRFrame'] = function() { this['_frameHandler'] = _0x1eb50e['h']['QueueNewFrame'](this['_bindedRenderFunction'], this['_vrDisplay']); } , _0x111b09['a']['AddNodeConstructor']('WebVRFreeCamera', function(_0x4cbbd9, _0x1b8ef4) { return function() { return new _0x45ae1b(_0x4cbbd9,_0x47d24f['x']['Zero'](),_0x1b8ef4); } ; }), _0x111b09['a']['AddNodeConstructor']('WebVRGamepadCamera', function(_0x4940f5, _0x36be22) { return function() { return new _0x45ae1b(_0x4940f5,_0x47d24f['x']['Zero'](),_0x36be22); } ; }); var _0x45ae1b = function(_0x30fd6a) { function _0x3828b4(_0x26d30b, _0x1cb2a5, _0x4b6718, _0x2a23b1) { void 0x0 === _0x2a23b1 && (_0x2a23b1 = {}); var _0x1ea075 = _0x30fd6a['call'](this, _0x26d30b, _0x1cb2a5, _0x4b6718) || this; _0x1ea075['webVROptions'] = _0x2a23b1, _0x1ea075['_vrDevice'] = null, _0x1ea075['rawPose'] = null, _0x1ea075['_specsVersion'] = '1.1', _0x1ea075['_attached'] = !0x1, _0x1ea075['_descendants'] = [], _0x1ea075['_deviceRoomPosition'] = _0x47d24f['x']['Zero'](), _0x1ea075['_deviceRoomRotationQuaternion'] = _0x47d24f['q']['Identity'](), _0x1ea075['_standingMatrix'] = null, _0x1ea075['devicePosition'] = _0x47d24f['x']['Zero'](), _0x1ea075['deviceRotationQuaternion'] = _0x47d24f['q']['Identity'](), _0x1ea075['deviceScaleFactor'] = 0x1, _0x1ea075['_deviceToWorld'] = _0x47d24f['j']['Identity'](), _0x1ea075['_worldToDevice'] = _0x47d24f['j']['Identity'](), _0x1ea075['controllers'] = [], _0x1ea075['onControllersAttachedObservable'] = new _0x2dbec2['c'](), _0x1ea075['onControllerMeshLoadedObservable'] = new _0x2dbec2['c'](), _0x1ea075['onPoseUpdatedFromDeviceObservable'] = new _0x2dbec2['c'](), _0x1ea075['_poseSet'] = !0x1, _0x1ea075['rigParenting'] = !0x0, _0x1ea075['_defaultHeight'] = void 0x0, _0x1ea075['_htmlElementAttached'] = null, _0x1ea075['_detachIfAttached'] = function() { var _0x57433f = _0x1ea075['getEngine']()['getVRDevice'](); _0x57433f && !_0x57433f['isPresenting'] && _0x1ea075['_htmlElementAttached'] && _0x1ea075['detachControl'](_0x1ea075['_htmlElementAttached']); } , _0x1ea075['_workingVector'] = _0x47d24f['x']['Zero'](), _0x1ea075['_oneVector'] = _0x47d24f['x']['One'](), _0x1ea075['_workingMatrix'] = _0x47d24f['j']['Identity'](), _0x1ea075['_tmpMatrix'] = new _0x47d24f['j'](), _0x1ea075['_cache']['position'] = _0x47d24f['x']['Zero'](), _0x2a23b1['defaultHeight'] && (_0x1ea075['_defaultHeight'] = _0x2a23b1['defaultHeight'], _0x1ea075['position']['y'] = _0x1ea075['_defaultHeight']), _0x1ea075['minZ'] = 0.1, 0x5 === arguments['length'] && (_0x1ea075['webVROptions'] = arguments[0x4]), null == _0x1ea075['webVROptions']['trackPosition'] && (_0x1ea075['webVROptions']['trackPosition'] = !0x0), null == _0x1ea075['webVROptions']['controllerMeshes'] && (_0x1ea075['webVROptions']['controllerMeshes'] = !0x0), null == _0x1ea075['webVROptions']['defaultLightingOnControllers'] && (_0x1ea075['webVROptions']['defaultLightingOnControllers'] = !0x0), _0x1ea075['rotationQuaternion'] = new _0x47d24f['q'](), _0x1ea075['webVROptions'] && _0x1ea075['webVROptions']['positionScale'] && (_0x1ea075['deviceScaleFactor'] = _0x1ea075['webVROptions']['positionScale']); var _0x2fa489 = _0x1ea075['getEngine'](); return _0x1ea075['_onVREnabled'] = function(_0x2c64bd) { _0x2c64bd && _0x1ea075['initControllers'](); } , _0x2fa489['onVRRequestPresentComplete']['add'](_0x1ea075['_onVREnabled']), _0x2fa489['initWebVR']()['add'](function(_0x396f4b) { _0x396f4b['vrDisplay'] && _0x1ea075['_vrDevice'] !== _0x396f4b['vrDisplay'] && (_0x1ea075['_vrDevice'] = _0x396f4b['vrDisplay'], _0x1ea075['setCameraRigMode'](_0x4504cf['a']['RIG_MODE_WEBVR'], { 'parentCamera': _0x1ea075, 'vrDisplay': _0x1ea075['_vrDevice'], 'frameData': _0x1ea075['_frameData'], 'specs': _0x1ea075['_specsVersion'] }), _0x1ea075['_attached'] && _0x1ea075['getEngine']()['enableVR']()); }), 'undefined' != typeof VRFrameData && (_0x1ea075['_frameData'] = new VRFrameData()), _0x2a23b1['useMultiview'] && (_0x1ea075['getScene']()['getEngine']()['getCaps']()['multiview'] ? (_0x1ea075['_useMultiviewToSingleView'] = !0x0, _0x1ea075['_rigPostProcess'] = new _0x3462d5('VRMultiviewToSingleview',_0x1ea075,0x1)) : (_0x3f98cb['a']['Warn']('Multiview\x20is\x20not\x20supported,\x20falling\x20back\x20to\x20standard\x20rendering'), _0x1ea075['_useMultiviewToSingleView'] = !0x1)), _0x4b6718['onBeforeCameraRenderObservable']['add'](function(_0x579974) { _0x579974['parent'] === _0x1ea075 && _0x1ea075['rigParenting'] && (_0x1ea075['_descendants'] = _0x1ea075['getDescendants'](!0x0, function(_0x58bec1) { var _0x3bc8e2 = _0x1ea075['controllers']['some'](function(_0x3836a5) { return _0x3836a5['_mesh'] === _0x58bec1; }) , _0xa1c107 = -0x1 !== _0x1ea075['_rigCameras']['indexOf'](_0x58bec1); return !_0x3bc8e2 && !_0xa1c107; }), _0x1ea075['_descendants']['forEach'](function(_0x57a0ff) { _0x57a0ff['parent'] = _0x579974; })); }), _0x4b6718['onAfterCameraRenderObservable']['add'](function(_0x57cc34) { _0x57cc34['parent'] === _0x1ea075 && _0x1ea075['rigParenting'] && _0x1ea075['_descendants']['forEach'](function(_0x45e38d) { _0x45e38d['parent'] = _0x1ea075; }); }), _0x1ea075; } return _0x420e5b['d'](_0x3828b4, _0x30fd6a), _0x3828b4['prototype']['deviceDistanceToRoomGround'] = function() { return this['_standingMatrix'] ? (this['_standingMatrix']['getTranslationToRef'](this['_workingVector']), this['_deviceRoomPosition']['y'] + this['_workingVector']['y']) : this['_defaultHeight'] || 0x0; } , _0x3828b4['prototype']['useStandingMatrix'] = function(_0x4de11) { var _0x38b168 = this; void 0x0 === _0x4de11 && (_0x4de11 = function(_0x4ea6cc) {} ), this['getEngine']()['initWebVRAsync']()['then'](function(_0x42a0a8) { _0x42a0a8['vrDisplay'] && _0x42a0a8['vrDisplay']['stageParameters'] && _0x42a0a8['vrDisplay']['stageParameters']['sittingToStandingTransform'] && _0x38b168['webVROptions']['trackPosition'] ? (_0x38b168['_standingMatrix'] = new _0x47d24f['j'](), _0x47d24f['j']['FromFloat32ArrayToRefScaled'](_0x42a0a8['vrDisplay']['stageParameters']['sittingToStandingTransform'], 0x0, 0x1, _0x38b168['_standingMatrix']), _0x38b168['getScene']()['useRightHandedSystem'] || _0x38b168['_standingMatrix'] && _0x38b168['_standingMatrix']['toggleModelMatrixHandInPlace'](), _0x4de11(!0x0)) : _0x4de11(!0x1); }); } , _0x3828b4['prototype']['useStandingMatrixAsync'] = function() { var _0x5066f5 = this; return new Promise(function(_0x17fedc) { _0x5066f5['useStandingMatrix'](function(_0xcb79e0) { _0x17fedc(_0xcb79e0); }); } ); } , _0x3828b4['prototype']['dispose'] = function() { this['_detachIfAttached'](), this['getEngine']()['onVRRequestPresentComplete']['removeCallback'](this['_onVREnabled']), this['_updateCacheWhenTrackingDisabledObserver'] && this['_scene']['onBeforeRenderObservable']['remove'](this['_updateCacheWhenTrackingDisabledObserver']), _0x30fd6a['prototype']['dispose']['call'](this); } , _0x3828b4['prototype']['getControllerByName'] = function(_0x408a69) { for (var _0x1754e4 = 0x0, _0x1dc4bc = this['controllers']; _0x1754e4 < _0x1dc4bc['length']; _0x1754e4++) { var _0x8d51aa = _0x1dc4bc[_0x1754e4]; if (_0x8d51aa['hand'] === _0x408a69) return _0x8d51aa; } return null; } , Object['defineProperty'](_0x3828b4['prototype'], 'leftController', { 'get': function() { return this['_leftController'] || (this['_leftController'] = this['getControllerByName']('left')), this['_leftController']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3828b4['prototype'], 'rightController', { 'get': function() { return this['_rightController'] || (this['_rightController'] = this['getControllerByName']('right')), this['_rightController']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3828b4['prototype']['getForwardRay'] = function(_0x8c6c72) { return void 0x0 === _0x8c6c72 && (_0x8c6c72 = 0x64), this['leftCamera'] ? _0x30fd6a['prototype']['getForwardRay']['call'](this, _0x8c6c72, this['leftCamera']['getWorldMatrix'](), this['leftCamera']['globalPosition']) : _0x30fd6a['prototype']['getForwardRay']['call'](this, _0x8c6c72); } , _0x3828b4['prototype']['_checkInputs'] = function() { this['_vrDevice'] && this['_vrDevice']['isPresenting'] && (this['_vrDevice']['getFrameData'](this['_frameData']), this['updateFromDevice'](this['_frameData']['pose'])), _0x30fd6a['prototype']['_checkInputs']['call'](this); } , _0x3828b4['prototype']['updateFromDevice'] = function(_0x2e8caf) { _0x2e8caf && _0x2e8caf['orientation'] && (this['rawPose'] = _0x2e8caf, this['_deviceRoomRotationQuaternion']['copyFromFloats'](_0x2e8caf['orientation'][0x0], _0x2e8caf['orientation'][0x1], -_0x2e8caf['orientation'][0x2], -_0x2e8caf['orientation'][0x3]), this['getScene']()['useRightHandedSystem'] && (this['_deviceRoomRotationQuaternion']['z'] *= -0x1, this['_deviceRoomRotationQuaternion']['w'] *= -0x1), this['webVROptions']['trackPosition'] && this['rawPose']['position'] && (this['_deviceRoomPosition']['copyFromFloats'](this['rawPose']['position'][0x0], this['rawPose']['position'][0x1], -this['rawPose']['position'][0x2]), this['getScene']()['useRightHandedSystem'] && (this['_deviceRoomPosition']['z'] *= -0x1)), this['_poseSet'] = !0x0); } , _0x3828b4['prototype']['attachControl'] = function(_0x50b61e, _0x499f4b) { _0x30fd6a['prototype']['attachControl']['call'](this, _0x50b61e, _0x499f4b), this['_attached'] = !0x0, this['_htmlElementAttached'] = _0x50b61e, _0x499f4b = !_0x4504cf['a']['ForceAttachControlToAlwaysPreventDefault'] && _0x499f4b, this['_vrDevice'] && this['getEngine']()['enableVR'](), window['addEventListener']('vrdisplaypresentchange', this['_detachIfAttached']); } , _0x3828b4['prototype']['detachControl'] = function(_0x3f54f9) { this['getScene']()['gamepadManager']['onGamepadConnectedObservable']['remove'](this['_onGamepadConnectedObserver']), this['getScene']()['gamepadManager']['onGamepadDisconnectedObservable']['remove'](this['_onGamepadDisconnectedObserver']), _0x30fd6a['prototype']['detachControl']['call'](this, _0x3f54f9), this['_attached'] = !0x1, this['getEngine']()['disableVR'](), window['removeEventListener']('vrdisplaypresentchange', this['_detachIfAttached']); } , _0x3828b4['prototype']['getClassName'] = function() { return 'WebVRFreeCamera'; } , _0x3828b4['prototype']['resetToCurrentRotation'] = function() { this['_vrDevice']['resetPose'](); } , _0x3828b4['prototype']['_updateRigCameras'] = function() { var _0x37d4a3 = this['_rigCameras'][0x0] , _0x460546 = this['_rigCameras'][0x1]; _0x37d4a3['rotationQuaternion']['copyFrom'](this['_deviceRoomRotationQuaternion']), _0x460546['rotationQuaternion']['copyFrom'](this['_deviceRoomRotationQuaternion']), _0x37d4a3['position']['copyFrom'](this['_deviceRoomPosition']), _0x460546['position']['copyFrom'](this['_deviceRoomPosition']); } , _0x3828b4['prototype']['_correctPositionIfNotTrackPosition'] = function(_0x32b9e2, _0xd3a7b3) { void 0x0 === _0xd3a7b3 && (_0xd3a7b3 = !0x1), this['rawPose'] && this['rawPose']['position'] && !this['webVROptions']['trackPosition'] && (_0x47d24f['j']['TranslationToRef'](this['rawPose']['position'][0x0], this['rawPose']['position'][0x1], -this['rawPose']['position'][0x2], this['_tmpMatrix']), _0xd3a7b3 || this['_tmpMatrix']['invert'](), this['_tmpMatrix']['multiplyToRef'](_0x32b9e2, _0x32b9e2)); } , _0x3828b4['prototype']['_updateCache'] = function(_0x81687f) { var _0x5df579 = this; this['rotationQuaternion']['equals'](this['_cache']['rotationQuaternion']) && this['position']['equals'](this['_cache']['position']) || (this['updateCacheCalled'] || (this['updateCacheCalled'] = !0x0, this['update']()), this['rotationQuaternion']['toRotationMatrix'](this['_workingMatrix']), _0x47d24f['x']['TransformCoordinatesToRef'](this['_deviceRoomPosition'], this['_workingMatrix'], this['_workingVector']), this['devicePosition']['subtractToRef'](this['_workingVector'], this['_workingVector']), _0x47d24f['j']['ComposeToRef'](this['_oneVector'], this['rotationQuaternion'], this['_workingVector'], this['_deviceToWorld']), this['_deviceToWorld']['getTranslationToRef'](this['_workingVector']), this['_workingVector']['addInPlace'](this['position']), this['_workingVector']['subtractInPlace'](this['_cache']['position']), this['_deviceToWorld']['setTranslation'](this['_workingVector']), this['_deviceToWorld']['invertToRef'](this['_worldToDevice']), this['controllers']['forEach'](function(_0x428426) { _0x428426['_deviceToWorld']['copyFrom'](_0x5df579['_deviceToWorld']), _0x5df579['_correctPositionIfNotTrackPosition'](_0x428426['_deviceToWorld']), _0x428426['update'](); })), _0x81687f || _0x30fd6a['prototype']['_updateCache']['call'](this), this['updateCacheCalled'] = !0x1; } , _0x3828b4['prototype']['_computeDevicePosition'] = function() { _0x47d24f['x']['TransformCoordinatesToRef'](this['_deviceRoomPosition'], this['_deviceToWorld'], this['devicePosition']); } , _0x3828b4['prototype']['update'] = function() { this['_computeDevicePosition'](), _0x47d24f['j']['FromQuaternionToRef'](this['_deviceRoomRotationQuaternion'], this['_workingMatrix']), this['_workingMatrix']['multiplyToRef'](this['_deviceToWorld'], this['_workingMatrix']), _0x47d24f['q']['FromRotationMatrixToRef'](this['_workingMatrix'], this['deviceRotationQuaternion']), this['_poseSet'] && this['onPoseUpdatedFromDeviceObservable']['notifyObservers'](null), _0x30fd6a['prototype']['update']['call'](this); } , _0x3828b4['prototype']['_getViewMatrix'] = function() { return _0x47d24f['j']['Identity'](); } , _0x3828b4['prototype']['_getWebVRViewMatrix'] = function() { var _0x2910e3 = this['_cameraRigParams']['parentCamera']; _0x2910e3['_updateCache'](); var _0x424870 = this['_cameraRigParams']['left'] ? this['_cameraRigParams']['frameData']['leftViewMatrix'] : this['_cameraRigParams']['frameData']['rightViewMatrix']; return _0x47d24f['j']['FromArrayToRef'](_0x424870, 0x0, this['_webvrViewMatrix']), this['getScene']()['useRightHandedSystem'] || this['_webvrViewMatrix']['toggleModelMatrixHandInPlace'](), this['_webvrViewMatrix']['getRotationMatrixToRef'](this['_cameraRotationMatrix']), _0x47d24f['x']['TransformCoordinatesToRef'](this['_referencePoint'], this['_cameraRotationMatrix'], this['_transformedReferencePoint']), this['position']['addToRef'](this['_transformedReferencePoint'], this['_currentTarget']), 0x1 !== _0x2910e3['deviceScaleFactor'] && (this['_webvrViewMatrix']['invert'](), _0x2910e3['deviceScaleFactor'] && (this['_webvrViewMatrix']['multiplyAtIndex'](0xc, _0x2910e3['deviceScaleFactor']), this['_webvrViewMatrix']['multiplyAtIndex'](0xd, _0x2910e3['deviceScaleFactor']), this['_webvrViewMatrix']['multiplyAtIndex'](0xe, _0x2910e3['deviceScaleFactor'])), this['_webvrViewMatrix']['invert']()), _0x2910e3['_correctPositionIfNotTrackPosition'](this['_webvrViewMatrix'], !0x0), _0x2910e3['_worldToDevice']['multiplyToRef'](this['_webvrViewMatrix'], this['_webvrViewMatrix']), this['_workingMatrix'] = this['_workingMatrix'] || _0x47d24f['j']['Identity'](), this['_webvrViewMatrix']['invertToRef'](this['_workingMatrix']), this['_workingMatrix']['multiplyToRef'](_0x2910e3['getWorldMatrix'](), this['_workingMatrix']), this['_workingMatrix']['getTranslationToRef'](this['_globalPosition']), this['_markSyncedWithParent'](), this['_webvrViewMatrix']; } , _0x3828b4['prototype']['_getWebVRProjectionMatrix'] = function() { var _0xede5d9 = this['parent']; _0xede5d9['_vrDevice']['depthNear'] = _0xede5d9['minZ'], _0xede5d9['_vrDevice']['depthFar'] = _0xede5d9['maxZ']; var _0x570918 = this['_cameraRigParams']['left'] ? this['_cameraRigParams']['frameData']['leftProjectionMatrix'] : this['_cameraRigParams']['frameData']['rightProjectionMatrix']; return _0x47d24f['j']['FromArrayToRef'](_0x570918, 0x0, this['_projectionMatrix']), this['getScene']()['useRightHandedSystem'] || this['_projectionMatrix']['toggleProjectionMatrixHandInPlace'](), this['_projectionMatrix']; } , _0x3828b4['prototype']['initControllers'] = function() { var _0xe3a6e3 = this; this['controllers'] = []; var _0x5538d5 = this['getScene']()['gamepadManager']; this['_onGamepadDisconnectedObserver'] = _0x5538d5['onGamepadDisconnectedObservable']['add'](function(_0x24651e) { if (_0x24651e['type'] === _0x591e86['POSE_ENABLED']) { var _0x20dad8 = _0x24651e; _0x20dad8['defaultModel'] && _0x20dad8['defaultModel']['setEnabled'](!0x1), 'right' === _0x20dad8['hand'] && (_0xe3a6e3['_rightController'] = null), 'left' === _0x20dad8['hand'] && (_0xe3a6e3['_leftController'] = null); var _0x2a3a58 = _0xe3a6e3['controllers']['indexOf'](_0x20dad8); -0x1 !== _0x2a3a58 && _0xe3a6e3['controllers']['splice'](_0x2a3a58, 0x1); } }), this['_onGamepadConnectedObserver'] = _0x5538d5['onGamepadConnectedObservable']['add'](function(_0x153210) { if (_0x153210['type'] === _0x591e86['POSE_ENABLED']) { var _0x29067b = _0x153210; if (_0xe3a6e3['webVROptions']['trackPosition'] || (_0x29067b['_disableTrackPosition'](new _0x47d24f['x']('left' == _0x29067b['hand'] ? -0.15 : 0.15,-0.5,0.25)), _0xe3a6e3['_updateCacheWhenTrackingDisabledObserver'] || (_0xe3a6e3['_updateCacheWhenTrackingDisabledObserver'] = _0xe3a6e3['_scene']['onBeforeRenderObservable']['add'](function() { _0xe3a6e3['_updateCache'](); }))), _0x29067b['deviceScaleFactor'] = _0xe3a6e3['deviceScaleFactor'], _0x29067b['_deviceToWorld']['copyFrom'](_0xe3a6e3['_deviceToWorld']), _0xe3a6e3['_correctPositionIfNotTrackPosition'](_0x29067b['_deviceToWorld']), _0xe3a6e3['webVROptions']['controllerMeshes'] && (_0x29067b['defaultModel'] ? _0x29067b['defaultModel']['setEnabled'](!0x0) : _0x29067b['initControllerMesh'](_0xe3a6e3['getScene'](), function(_0x513b6e) { if (_0x513b6e['scaling']['scaleInPlace'](_0xe3a6e3['deviceScaleFactor']), _0xe3a6e3['onControllerMeshLoadedObservable']['notifyObservers'](_0x29067b), _0xe3a6e3['webVROptions']['defaultLightingOnControllers']) { _0xe3a6e3['_lightOnControllers'] || (_0xe3a6e3['_lightOnControllers'] = new _0x4e9f1d['a']('vrControllersLight',new _0x47d24f['x'](0x0,0x1,0x0),_0xe3a6e3['getScene']())); var _0x205c4f = function(_0x1cda48, _0x100282) { var _0xb66e6b = _0x1cda48['getChildren'](); _0xb66e6b && 0x0 !== _0xb66e6b['length'] && _0xb66e6b['forEach'](function(_0x3360e1) { _0x100282['includedOnlyMeshes']['push'](_0x3360e1), _0x205c4f(_0x3360e1, _0x100282); }); }; _0xe3a6e3['_lightOnControllers']['includedOnlyMeshes']['push'](_0x513b6e), _0x205c4f(_0x513b6e, _0xe3a6e3['_lightOnControllers']); } })), _0x29067b['attachToPoseControlledCamera'](_0xe3a6e3), -0x1 === _0xe3a6e3['controllers']['indexOf'](_0x29067b)) { _0xe3a6e3['controllers']['push'](_0x29067b); for (var _0x51bad2 = !0x1, _0x4abf11 = 0x0; _0x4abf11 < _0xe3a6e3['controllers']['length']; _0x4abf11++) _0xe3a6e3['controllers'][_0x4abf11]['controllerType'] === _0x5496d4['VIVE'] && (_0x51bad2 ? _0xe3a6e3['controllers'][_0x4abf11]['hand'] = 'right' : (_0x51bad2 = !0x0, _0xe3a6e3['controllers'][_0x4abf11]['hand'] = 'left')); _0xe3a6e3['controllers']['length'] >= 0x2 && _0xe3a6e3['onControllersAttachedObservable']['notifyObservers'](_0xe3a6e3['controllers']); } } }); } , _0x3828b4; }(_0xebce26) , _0x3ef953 = function(_0x34bbe5) { function _0x45bd10(_0x2dc499) { var _0x270618 = _0x34bbe5['call'](this, _0x2dc499) || this; return _0x270618['onTriggerStateChangedObservable'] = new _0x2dbec2['c'](), _0x270618['onMainButtonStateChangedObservable'] = new _0x2dbec2['c'](), _0x270618['onSecondaryButtonStateChangedObservable'] = new _0x2dbec2['c'](), _0x270618['onPadStateChangedObservable'] = new _0x2dbec2['c'](), _0x270618['onPadValuesChangedObservable'] = new _0x2dbec2['c'](), _0x270618['pad'] = { 'x': 0x0, 'y': 0x0 }, _0x270618['_changes'] = { 'pressChanged': !0x1, 'touchChanged': !0x1, 'valueChanged': !0x1, 'changed': !0x1 }, _0x270618['_buttons'] = new Array(_0x2dc499['buttons']['length']), _0x270618['hand'] = _0x2dc499['hand'], _0x270618; } return _0x420e5b['d'](_0x45bd10, _0x34bbe5), _0x45bd10['prototype']['onButtonStateChange'] = function(_0xb00058) { this['_onButtonStateChange'] = _0xb00058; } , Object['defineProperty'](_0x45bd10['prototype'], 'defaultModel', { 'get': function() { return this['_defaultModel']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x45bd10['prototype']['update'] = function() { _0x34bbe5['prototype']['update']['call'](this); for (var _0x5bf146 = 0x0; _0x5bf146 < this['_buttons']['length']; _0x5bf146++) this['_setButtonValue'](this['browserGamepad']['buttons'][_0x5bf146], this['_buttons'][_0x5bf146], _0x5bf146); this['leftStick']['x'] === this['pad']['x'] && this['leftStick']['y'] === this['pad']['y'] || (this['pad']['x'] = this['leftStick']['x'], this['pad']['y'] = this['leftStick']['y'], this['onPadValuesChangedObservable']['notifyObservers'](this['pad'])); } , _0x45bd10['prototype']['_setButtonValue'] = function(_0x330107, _0x2bd65d, _0x490df0) { _0x330107 || (_0x330107 = { 'pressed': !0x1, 'touched': !0x1, 'value': 0x0 }), _0x2bd65d ? (this['_checkChanges'](_0x330107, _0x2bd65d), this['_changes']['changed'] && (this['_onButtonStateChange'] && this['_onButtonStateChange'](this['index'], _0x490df0, _0x330107), this['_handleButtonChange'](_0x490df0, _0x330107, this['_changes'])), this['_buttons'][_0x490df0]['pressed'] = _0x330107['pressed'], this['_buttons'][_0x490df0]['touched'] = _0x330107['touched'], this['_buttons'][_0x490df0]['value'] = _0x330107['value'] < 1e-8 ? 0x0 : _0x330107['value']) : this['_buttons'][_0x490df0] = { 'pressed': _0x330107['pressed'], 'touched': _0x330107['touched'], 'value': _0x330107['value'] }; } , _0x45bd10['prototype']['_checkChanges'] = function(_0x4c8ddf, _0x389a59) { return this['_changes']['pressChanged'] = _0x4c8ddf['pressed'] !== _0x389a59['pressed'], this['_changes']['touchChanged'] = _0x4c8ddf['touched'] !== _0x389a59['touched'], this['_changes']['valueChanged'] = _0x4c8ddf['value'] !== _0x389a59['value'], this['_changes']['changed'] = this['_changes']['pressChanged'] || this['_changes']['touchChanged'] || this['_changes']['valueChanged'], this['_changes']; } , _0x45bd10['prototype']['dispose'] = function() { _0x34bbe5['prototype']['dispose']['call'](this), this['onTriggerStateChangedObservable']['clear'](), this['onMainButtonStateChangedObservable']['clear'](), this['onSecondaryButtonStateChangedObservable']['clear'](), this['onPadStateChangedObservable']['clear'](), this['onPadValuesChangedObservable']['clear'](); } , _0x45bd10; }(_0x20e106) , _0x347427 = _0x59bd00(0x1f) , _0xe7dd57 = _0x59bd00(0x21) , _0x527e2f = function(_0x540495) { function _0x2dc368(_0x58598c, _0x43e1fc, _0x2cfc80, _0xadf8ff, _0x338696, _0x3535c0) { void 0x0 === _0x2cfc80 && (_0x2cfc80 = null), void 0x0 === _0x338696 && (_0x338696 = _0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x3535c0 && (_0x3535c0 = _0x24e342['a']['TEXTUREFORMAT_RGBA']); var _0x54f376 = _0x540495['call'](this, null, _0x2cfc80, !_0xadf8ff, void 0x0, _0x338696, void 0x0, void 0x0, void 0x0, void 0x0, _0x3535c0) || this; _0x54f376['name'] = _0x58598c, _0x54f376['_engine'] = _0x54f376['getScene']()['getEngine'](), _0x54f376['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x54f376['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x54f376['_generateMipMaps'] = _0xadf8ff, _0x43e1fc['getContext'] ? (_0x54f376['_canvas'] = _0x43e1fc, _0x54f376['_texture'] = _0x54f376['_engine']['createDynamicTexture'](_0x43e1fc['width'], _0x43e1fc['height'], _0xadf8ff, _0x338696)) : (_0x54f376['_canvas'] = document['createElement']('canvas'), _0x43e1fc['width'] || 0x0 === _0x43e1fc['width'] ? _0x54f376['_texture'] = _0x54f376['_engine']['createDynamicTexture'](_0x43e1fc['width'], _0x43e1fc['height'], _0xadf8ff, _0x338696) : _0x54f376['_texture'] = _0x54f376['_engine']['createDynamicTexture'](_0x43e1fc, _0x43e1fc, _0xadf8ff, _0x338696)); var _0x314c7f = _0x54f376['getSize'](); return _0x54f376['_canvas']['width'] = _0x314c7f['width'], _0x54f376['_canvas']['height'] = _0x314c7f['height'], _0x54f376['_context'] = _0x54f376['_canvas']['getContext']('2d'), _0x54f376; } return _0x420e5b['d'](_0x2dc368, _0x540495), _0x2dc368['prototype']['getClassName'] = function() { return 'DynamicTexture'; } , Object['defineProperty'](_0x2dc368['prototype'], 'canRescale', { 'get': function() { return !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2dc368['prototype']['_recreate'] = function(_0x181f75) { this['_canvas']['width'] = _0x181f75['width'], this['_canvas']['height'] = _0x181f75['height'], this['releaseInternalTexture'](), this['_texture'] = this['_engine']['createDynamicTexture'](_0x181f75['width'], _0x181f75['height'], this['_generateMipMaps'], this['samplingMode']); } , _0x2dc368['prototype']['scale'] = function(_0x5edf53) { var _0x539b3c = this['getSize'](); _0x539b3c['width'] *= _0x5edf53, _0x539b3c['height'] *= _0x5edf53, this['_recreate'](_0x539b3c); } , _0x2dc368['prototype']['scaleTo'] = function(_0x3bd0b3, _0x4875b1) { var _0x235f7a = this['getSize'](); _0x235f7a['width'] = _0x3bd0b3, _0x235f7a['height'] = _0x4875b1, this['_recreate'](_0x235f7a); } , _0x2dc368['prototype']['getContext'] = function() { return this['_context']; } , _0x2dc368['prototype']['clear'] = function() { var _0x3bb2a4 = this['getSize'](); this['_context']['fillRect'](0x0, 0x0, _0x3bb2a4['width'], _0x3bb2a4['height']); } , _0x2dc368['prototype']['update'] = function(_0x4e0e6e, _0x5b2e7d) { void 0x0 === _0x5b2e7d && (_0x5b2e7d = !0x1), this['_engine']['updateDynamicTexture'](this['_texture'], this['_canvas'], void 0x0 === _0x4e0e6e || _0x4e0e6e, _0x5b2e7d, this['_format'] || void 0x0); } , _0x2dc368['prototype']['drawText'] = function(_0x2c3ce7, _0xdc5f39, _0x5c7c61, _0x179f63, _0x3b198d, _0x3c95de, _0x28d028, _0x4f62d1) { void 0x0 === _0x4f62d1 && (_0x4f62d1 = !0x0); var _0x194ba1 = this['getSize'](); if (_0x3c95de && (this['_context']['fillStyle'] = _0x3c95de, this['_context']['fillRect'](0x0, 0x0, _0x194ba1['width'], _0x194ba1['height'])), this['_context']['font'] = _0x179f63, null == _0xdc5f39) { var _0x2be9db = this['_context']['measureText'](_0x2c3ce7); _0xdc5f39 = (_0x194ba1['width'] - _0x2be9db['width']) / 0x2; } if (null == _0x5c7c61) { var _0x3c2978 = parseInt(_0x179f63['replace'](/\D/g, '')); _0x5c7c61 = _0x194ba1['height'] / 0x2 + _0x3c2978 / 3.65; } this['_context']['fillStyle'] = _0x3b198d, this['_context']['fillText'](_0x2c3ce7, _0xdc5f39, _0x5c7c61), _0x4f62d1 && this['update'](_0x28d028); } , _0x2dc368['prototype']['clone'] = function() { var _0x172b0f = this['getScene'](); if (!_0x172b0f) return this; var _0x5954f1 = this['getSize']() , _0x3a7d17 = new _0x2dc368(this['name'],_0x5954f1,_0x172b0f,this['_generateMipMaps']); return _0x3a7d17['hasAlpha'] = this['hasAlpha'], _0x3a7d17['level'] = this['level'], _0x3a7d17['wrapU'] = this['wrapU'], _0x3a7d17['wrapV'] = this['wrapV'], _0x3a7d17; } , _0x2dc368['prototype']['serialize'] = function() { var _0x148066 = this['getScene'](); _0x148066 && !_0x148066['isReady']() && _0x3f98cb['a']['Warn']('The\x20scene\x20must\x20be\x20ready\x20before\x20serializing\x20the\x20dynamic\x20texture'); var _0x500835 = _0x540495['prototype']['serialize']['call'](this); return _0x500835['base64String'] = this['_canvas']['toDataURL'](), _0x500835['invertY'] = this['_invertY'], _0x500835['samplingMode'] = this['samplingMode'], _0x500835; } , _0x2dc368['prototype']['_rebuild'] = function() { this['update'](); } , _0x2dc368; }(_0x11d14a['a']) , _0x66bdd0 = (_0x59bd00(0x56), _0x59bd00(0x38), _0x59bd00(0x57), '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0a#include\x0a#include\x0a#include\x0avoid\x20main(void)\x0a{\x0avec4\x20result=texture2D(textureSampler,vUV);\x0a#ifdef\x20IMAGEPROCESSING\x0a#ifndef\x20FROMLINEARSPACE\x0a\x0aresult.rgb=toLinearSpace(result.rgb);\x0a#endif\x0aresult=applyImageProcessing(result);\x0a#else\x0a\x0a#ifdef\x20FROMLINEARSPACE\x0aresult=applyImageProcessing(result);\x0a#endif\x0a#endif\x0agl_FragColor=result;\x0a}'); _0x3e9e56['a']['ShadersStore']['imageProcessingPixelShader'] = _0x66bdd0; var _0x46186b = function(_0x53e72e) { function _0x3bc5b1(_0x1bb8cd, _0x18abec, _0x584016, _0x58874d, _0x3f40f1, _0x2615dd, _0x447d4c, _0x31be50) { void 0x0 === _0x584016 && (_0x584016 = null), void 0x0 === _0x447d4c && (_0x447d4c = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']); var _0x21b439 = _0x53e72e['call'](this, _0x1bb8cd, 'imageProcessing', [], [], _0x18abec, _0x584016, _0x58874d, _0x3f40f1, _0x2615dd, null, _0x447d4c, 'postprocess', null, !0x0) || this; return _0x21b439['_fromLinearSpace'] = !0x0, _0x21b439['_defines'] = { 'IMAGEPROCESSING': !0x1, 'VIGNETTE': !0x1, 'VIGNETTEBLENDMODEMULTIPLY': !0x1, 'VIGNETTEBLENDMODEOPAQUE': !0x1, 'TONEMAPPING': !0x1, 'TONEMAPPING_ACES': !0x1, 'CONTRAST': !0x1, 'COLORCURVES': !0x1, 'COLORGRADING': !0x1, 'COLORGRADING3D': !0x1, 'FROMLINEARSPACE': !0x1, 'SAMPLER3DGREENDEPTH': !0x1, 'SAMPLER3DBGRMAP': !0x1, 'IMAGEPROCESSINGPOSTPROCESS': !0x1, 'EXPOSURE': !0x1 }, _0x31be50 ? (_0x31be50['applyByPostProcess'] = !0x0, _0x21b439['_attachImageProcessingConfiguration'](_0x31be50, !0x0), _0x21b439['fromLinearSpace'] = !0x1) : (_0x21b439['_attachImageProcessingConfiguration'](null, !0x0), _0x21b439['imageProcessingConfiguration']['applyByPostProcess'] = !0x0), _0x21b439['onApply'] = function(_0x56eccf) { _0x21b439['imageProcessingConfiguration']['bind'](_0x56eccf, _0x21b439['aspectRatio']); } , _0x21b439; } return _0x420e5b['d'](_0x3bc5b1, _0x53e72e), Object['defineProperty'](_0x3bc5b1['prototype'], 'imageProcessingConfiguration', { 'get': function() { return this['_imageProcessingConfiguration']; }, 'set': function(_0x5555b7) { this['_attachImageProcessingConfiguration'](_0x5555b7); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3bc5b1['prototype']['_attachImageProcessingConfiguration'] = function(_0x1a1b22, _0x5cb7a1) { var _0x2153f1 = this; if (void 0x0 === _0x5cb7a1 && (_0x5cb7a1 = !0x1), _0x1a1b22 !== this['_imageProcessingConfiguration']) { if (this['_imageProcessingConfiguration'] && this['_imageProcessingObserver'] && this['_imageProcessingConfiguration']['onUpdateParameters']['remove'](this['_imageProcessingObserver']), _0x1a1b22) this['_imageProcessingConfiguration'] = _0x1a1b22; else { var _0x59b51d = null , _0x2e210c = this['getEngine']() , _0x5c72fa = this['getCamera'](); if (_0x5c72fa) _0x59b51d = _0x5c72fa['getScene'](); else if (_0x2e210c && _0x2e210c['scenes']) { var _0x16e2d7 = _0x2e210c['scenes']; _0x59b51d = _0x16e2d7[_0x16e2d7['length'] - 0x1]; } else _0x59b51d = _0x48707b['a']['LastCreatedScene']; this['_imageProcessingConfiguration'] = _0x59b51d['imageProcessingConfiguration']; } this['_imageProcessingConfiguration'] && (this['_imageProcessingObserver'] = this['_imageProcessingConfiguration']['onUpdateParameters']['add'](function() { _0x2153f1['_updateParameters'](); })), _0x5cb7a1 || this['_updateParameters'](); } } , Object['defineProperty'](_0x3bc5b1['prototype'], 'colorCurves', { 'get': function() { return this['imageProcessingConfiguration']['colorCurves']; }, 'set': function(_0x3e9b95) { this['imageProcessingConfiguration']['colorCurves'] = _0x3e9b95; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'colorCurvesEnabled', { 'get': function() { return this['imageProcessingConfiguration']['colorCurvesEnabled']; }, 'set': function(_0x4dc9a8) { this['imageProcessingConfiguration']['colorCurvesEnabled'] = _0x4dc9a8; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'colorGradingTexture', { 'get': function() { return this['imageProcessingConfiguration']['colorGradingTexture']; }, 'set': function(_0x417ee3) { this['imageProcessingConfiguration']['colorGradingTexture'] = _0x417ee3; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'colorGradingEnabled', { 'get': function() { return this['imageProcessingConfiguration']['colorGradingEnabled']; }, 'set': function(_0x341667) { this['imageProcessingConfiguration']['colorGradingEnabled'] = _0x341667; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'exposure', { 'get': function() { return this['imageProcessingConfiguration']['exposure']; }, 'set': function(_0x4727d3) { this['imageProcessingConfiguration']['exposure'] = _0x4727d3; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'toneMappingEnabled', { 'get': function() { return this['_imageProcessingConfiguration']['toneMappingEnabled']; }, 'set': function(_0x58e9e3) { this['_imageProcessingConfiguration']['toneMappingEnabled'] = _0x58e9e3; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'toneMappingType', { 'get': function() { return this['_imageProcessingConfiguration']['toneMappingType']; }, 'set': function(_0x3e992b) { this['_imageProcessingConfiguration']['toneMappingType'] = _0x3e992b; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'contrast', { 'get': function() { return this['imageProcessingConfiguration']['contrast']; }, 'set': function(_0x50787d) { this['imageProcessingConfiguration']['contrast'] = _0x50787d; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'vignetteStretch', { 'get': function() { return this['imageProcessingConfiguration']['vignetteStretch']; }, 'set': function(_0x412f9a) { this['imageProcessingConfiguration']['vignetteStretch'] = _0x412f9a; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'vignetteCentreX', { 'get': function() { return this['imageProcessingConfiguration']['vignetteCentreX']; }, 'set': function(_0xa1378a) { this['imageProcessingConfiguration']['vignetteCentreX'] = _0xa1378a; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'vignetteCentreY', { 'get': function() { return this['imageProcessingConfiguration']['vignetteCentreY']; }, 'set': function(_0x1cb4f6) { this['imageProcessingConfiguration']['vignetteCentreY'] = _0x1cb4f6; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'vignetteWeight', { 'get': function() { return this['imageProcessingConfiguration']['vignetteWeight']; }, 'set': function(_0x6c4431) { this['imageProcessingConfiguration']['vignetteWeight'] = _0x6c4431; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'vignetteColor', { 'get': function() { return this['imageProcessingConfiguration']['vignetteColor']; }, 'set': function(_0x435788) { this['imageProcessingConfiguration']['vignetteColor'] = _0x435788; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'vignetteCameraFov', { 'get': function() { return this['imageProcessingConfiguration']['vignetteCameraFov']; }, 'set': function(_0x1ecb13) { this['imageProcessingConfiguration']['vignetteCameraFov'] = _0x1ecb13; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'vignetteBlendMode', { 'get': function() { return this['imageProcessingConfiguration']['vignetteBlendMode']; }, 'set': function(_0x2decab) { this['imageProcessingConfiguration']['vignetteBlendMode'] = _0x2decab; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'vignetteEnabled', { 'get': function() { return this['imageProcessingConfiguration']['vignetteEnabled']; }, 'set': function(_0x2ca1c0) { this['imageProcessingConfiguration']['vignetteEnabled'] = _0x2ca1c0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3bc5b1['prototype'], 'fromLinearSpace', { 'get': function() { return this['_fromLinearSpace']; }, 'set': function(_0x3fae2e) { this['_fromLinearSpace'] !== _0x3fae2e && (this['_fromLinearSpace'] = _0x3fae2e, this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3bc5b1['prototype']['getClassName'] = function() { return 'ImageProcessingPostProcess'; } , _0x3bc5b1['prototype']['_updateParameters'] = function() { this['_defines']['FROMLINEARSPACE'] = this['_fromLinearSpace'], this['imageProcessingConfiguration']['prepareDefines'](this['_defines'], !0x0); var _0x6e04ce = ''; for (var _0x29761d in this['_defines']) this['_defines'][_0x29761d] && (_0x6e04ce += '#define\x20' + _0x29761d + ';\x0d\x0a'); var _0x2ac406 = ['textureSampler'] , _0x15c971 = ['scale']; _0x347427['a'] && (_0x347427['a']['PrepareSamplers'](_0x2ac406, this['_defines']), _0x347427['a']['PrepareUniforms'](_0x15c971, this['_defines'])), this['updateEffect'](_0x6e04ce, _0x15c971, _0x2ac406); } , _0x3bc5b1['prototype']['dispose'] = function(_0x10f22d) { _0x53e72e['prototype']['dispose']['call'](this, _0x10f22d), this['_imageProcessingConfiguration'] && this['_imageProcessingObserver'] && this['_imageProcessingConfiguration']['onUpdateParameters']['remove'](this['_imageProcessingObserver']), this['_imageProcessingConfiguration'] && (this['imageProcessingConfiguration']['applyByPostProcess'] = !0x1); } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x3bc5b1['prototype'], '_fromLinearSpace', void 0x0), _0x3bc5b1; }(_0x1f5ab5) , _0xb31206 = _0x59bd00(0xd) , _0x4209f7 = _0x59bd00(0x4); _0xb4719b['a']['_GroundMeshParser'] = function(_0x295c2c, _0xaca3ea) { return _0x49615a['Parse'](_0x295c2c, _0xaca3ea); } ; var _0x49615a = function(_0x25db6a) { function _0x5aba4c(_0x35d0e4, _0x3e68e6) { var _0x9f0355 = _0x25db6a['call'](this, _0x35d0e4, _0x3e68e6) || this; return _0x9f0355['generateOctree'] = !0x1, _0x9f0355; } return _0x420e5b['d'](_0x5aba4c, _0x25db6a), _0x5aba4c['prototype']['getClassName'] = function() { return 'GroundMesh'; } , Object['defineProperty'](_0x5aba4c['prototype'], 'subdivisions', { 'get': function() { return Math['min'](this['_subdivisionsX'], this['_subdivisionsY']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5aba4c['prototype'], 'subdivisionsX', { 'get': function() { return this['_subdivisionsX']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5aba4c['prototype'], 'subdivisionsY', { 'get': function() { return this['_subdivisionsY']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5aba4c['prototype']['optimize'] = function(_0x4386a2, _0x4b7c87) { void 0x0 === _0x4b7c87 && (_0x4b7c87 = 0x20), this['_subdivisionsX'] = _0x4386a2, this['_subdivisionsY'] = _0x4386a2, this['subdivide'](_0x4386a2); this['createOrUpdateSubmeshesOctree'] && this['createOrUpdateSubmeshesOctree'](_0x4b7c87); } , _0x5aba4c['prototype']['getHeightAtCoordinates'] = function(_0x29f82f, _0x5a5a04) { var _0x2a1afa = this['getWorldMatrix']() , _0x53f120 = _0x47d24f['t']['Matrix'][0x5]; _0x2a1afa['invertToRef'](_0x53f120); var _0x16bcdb = _0x47d24f['t']['Vector3'][0x8]; if (_0x47d24f['x']['TransformCoordinatesFromFloatsToRef'](_0x29f82f, 0x0, _0x5a5a04, _0x53f120, _0x16bcdb), _0x29f82f = _0x16bcdb['x'], _0x5a5a04 = _0x16bcdb['z'], _0x29f82f < this['_minX'] || _0x29f82f > this['_maxX'] || _0x5a5a04 < this['_minZ'] || _0x5a5a04 > this['_maxZ']) return this['position']['y']; this['_heightQuads'] && 0x0 != this['_heightQuads']['length'] || (this['_initHeightQuads'](), this['_computeHeightQuads']()); var _0x3afae9 = this['_getFacetAt'](_0x29f82f, _0x5a5a04) , _0x43c844 = -(_0x3afae9['x'] * _0x29f82f + _0x3afae9['z'] * _0x5a5a04 + _0x3afae9['w']) / _0x3afae9['y']; return _0x47d24f['x']['TransformCoordinatesFromFloatsToRef'](0x0, _0x43c844, 0x0, _0x2a1afa, _0x16bcdb), _0x16bcdb['y']; } , _0x5aba4c['prototype']['getNormalAtCoordinates'] = function(_0x355f3e, _0x192665) { var _0x1318cf = new _0x47d24f['x'](0x0,0x1,0x0); return this['getNormalAtCoordinatesToRef'](_0x355f3e, _0x192665, _0x1318cf), _0x1318cf; } , _0x5aba4c['prototype']['getNormalAtCoordinatesToRef'] = function(_0x226bec, _0x7253b2, _0x4ad6d3) { var _0x356e60 = this['getWorldMatrix']() , _0xae10ff = _0x47d24f['t']['Matrix'][0x5]; _0x356e60['invertToRef'](_0xae10ff); var _0x5d19f8 = _0x47d24f['t']['Vector3'][0x8]; if (_0x47d24f['x']['TransformCoordinatesFromFloatsToRef'](_0x226bec, 0x0, _0x7253b2, _0xae10ff, _0x5d19f8), _0x226bec = _0x5d19f8['x'], _0x7253b2 = _0x5d19f8['z'], _0x226bec < this['_minX'] || _0x226bec > this['_maxX'] || _0x7253b2 < this['_minZ'] || _0x7253b2 > this['_maxZ']) return this; this['_heightQuads'] && 0x0 != this['_heightQuads']['length'] || (this['_initHeightQuads'](), this['_computeHeightQuads']()); var _0x5a4f0f = this['_getFacetAt'](_0x226bec, _0x7253b2); return _0x47d24f['x']['TransformNormalFromFloatsToRef'](_0x5a4f0f['x'], _0x5a4f0f['y'], _0x5a4f0f['z'], _0x356e60, _0x4ad6d3), this; } , _0x5aba4c['prototype']['updateCoordinateHeights'] = function() { return this['_heightQuads'] && 0x0 != this['_heightQuads']['length'] || this['_initHeightQuads'](), this['_computeHeightQuads'](), this; } , _0x5aba4c['prototype']['_getFacetAt'] = function(_0x5a94fd, _0x3c1ca6) { var _0x410eb0 = Math['floor']((_0x5a94fd + this['_maxX']) * this['_subdivisionsX'] / this['_width']) , _0x3cc5d1 = Math['floor'](-(_0x3c1ca6 + this['_maxZ']) * this['_subdivisionsY'] / this['_height'] + this['_subdivisionsY']) , _0x39ee74 = this['_heightQuads'][_0x3cc5d1 * this['_subdivisionsX'] + _0x410eb0]; return _0x3c1ca6 < _0x39ee74['slope']['x'] * _0x5a94fd + _0x39ee74['slope']['y'] ? _0x39ee74['facet1'] : _0x39ee74['facet2']; } , _0x5aba4c['prototype']['_initHeightQuads'] = function() { var _0x25096d = this['_subdivisionsX'] , _0x35fec0 = this['_subdivisionsY']; this['_heightQuads'] = new Array(); for (var _0x3c7276 = 0x0; _0x3c7276 < _0x35fec0; _0x3c7276++) for (var _0x3f73d8 = 0x0; _0x3f73d8 < _0x25096d; _0x3f73d8++) { var _0xb28d04 = { 'slope': _0x47d24f['w']['Zero'](), 'facet1': new _0x47d24f['y'](0x0,0x0,0x0,0x0), 'facet2': new _0x47d24f['y'](0x0,0x0,0x0,0x0) }; this['_heightQuads'][_0x3c7276 * _0x25096d + _0x3f73d8] = _0xb28d04; } return this; } , _0x5aba4c['prototype']['_computeHeightQuads'] = function() { var _0x357e8a = this['getVerticesData'](_0x4209f7['b']['PositionKind']); if (!_0x357e8a) return this; for (var _0xce408c = _0x47d24f['t']['Vector3'][0x3], _0x3679f8 = _0x47d24f['t']['Vector3'][0x2], _0x57911e = _0x47d24f['t']['Vector3'][0x1], _0x40a51f = _0x47d24f['t']['Vector3'][0x0], _0x78e679 = _0x47d24f['t']['Vector3'][0x4], _0x1bc8f1 = _0x47d24f['t']['Vector3'][0x5], _0x43b37d = _0x47d24f['t']['Vector3'][0x6], _0xa3e5e6 = _0x47d24f['t']['Vector3'][0x7], _0x4ba9da = _0x47d24f['t']['Vector3'][0x8], _0x516cf0 = 0x0, _0xb0a582 = 0x0, _0x5828ec = 0x0, _0xc965dc = 0x0, _0x591254 = 0x0, _0xcc2555 = 0x0, _0x5e363e = 0x0, _0x21eaac = this['_subdivisionsX'], _0x265fed = this['_subdivisionsY'], _0x1e984a = 0x0; _0x1e984a < _0x265fed; _0x1e984a++) for (var _0x4a869e = 0x0; _0x4a869e < _0x21eaac; _0x4a869e++) { _0x516cf0 = 0x3 * _0x4a869e, _0xb0a582 = _0x1e984a * (_0x21eaac + 0x1) * 0x3, _0x5828ec = (_0x1e984a + 0x1) * (_0x21eaac + 0x1) * 0x3, _0xce408c['x'] = _0x357e8a[_0xb0a582 + _0x516cf0], _0xce408c['y'] = _0x357e8a[_0xb0a582 + _0x516cf0 + 0x1], _0xce408c['z'] = _0x357e8a[_0xb0a582 + _0x516cf0 + 0x2], _0x3679f8['x'] = _0x357e8a[_0xb0a582 + _0x516cf0 + 0x3], _0x3679f8['y'] = _0x357e8a[_0xb0a582 + _0x516cf0 + 0x4], _0x3679f8['z'] = _0x357e8a[_0xb0a582 + _0x516cf0 + 0x5], _0x57911e['x'] = _0x357e8a[_0x5828ec + _0x516cf0], _0x57911e['y'] = _0x357e8a[_0x5828ec + _0x516cf0 + 0x1], _0x57911e['z'] = _0x357e8a[_0x5828ec + _0x516cf0 + 0x2], _0x40a51f['x'] = _0x357e8a[_0x5828ec + _0x516cf0 + 0x3], _0x40a51f['y'] = _0x357e8a[_0x5828ec + _0x516cf0 + 0x4], _0x40a51f['z'] = _0x357e8a[_0x5828ec + _0x516cf0 + 0x5], _0xc965dc = (_0x40a51f['z'] - _0xce408c['z']) / (_0x40a51f['x'] - _0xce408c['x']), _0x591254 = _0xce408c['z'] - _0xc965dc * _0xce408c['x'], _0x3679f8['subtractToRef'](_0xce408c, _0x78e679), _0x57911e['subtractToRef'](_0xce408c, _0x1bc8f1), _0x40a51f['subtractToRef'](_0xce408c, _0x43b37d), _0x47d24f['x']['CrossToRef'](_0x43b37d, _0x1bc8f1, _0xa3e5e6), _0x47d24f['x']['CrossToRef'](_0x78e679, _0x43b37d, _0x4ba9da), _0xa3e5e6['normalize'](), _0x4ba9da['normalize'](), _0xcc2555 = -(_0xa3e5e6['x'] * _0xce408c['x'] + _0xa3e5e6['y'] * _0xce408c['y'] + _0xa3e5e6['z'] * _0xce408c['z']), _0x5e363e = -(_0x4ba9da['x'] * _0x3679f8['x'] + _0x4ba9da['y'] * _0x3679f8['y'] + _0x4ba9da['z'] * _0x3679f8['z']); var _0x2878ab = this['_heightQuads'][_0x1e984a * _0x21eaac + _0x4a869e]; _0x2878ab['slope']['copyFromFloats'](_0xc965dc, _0x591254), _0x2878ab['facet1']['copyFromFloats'](_0xa3e5e6['x'], _0xa3e5e6['y'], _0xa3e5e6['z'], _0xcc2555), _0x2878ab['facet2']['copyFromFloats'](_0x4ba9da['x'], _0x4ba9da['y'], _0x4ba9da['z'], _0x5e363e); } return this; } , _0x5aba4c['prototype']['serialize'] = function(_0x22af2f) { _0x25db6a['prototype']['serialize']['call'](this, _0x22af2f), _0x22af2f['subdivisionsX'] = this['_subdivisionsX'], _0x22af2f['subdivisionsY'] = this['_subdivisionsY'], _0x22af2f['minX'] = this['_minX'], _0x22af2f['maxX'] = this['_maxX'], _0x22af2f['minZ'] = this['_minZ'], _0x22af2f['maxZ'] = this['_maxZ'], _0x22af2f['width'] = this['_width'], _0x22af2f['height'] = this['_height']; } , _0x5aba4c['Parse'] = function(_0x3540c2, _0x2f0a6d) { var _0x325d46 = new _0x5aba4c(_0x3540c2['name'],_0x2f0a6d); return _0x325d46['_subdivisionsX'] = _0x3540c2['subdivisionsX'] || 0x1, _0x325d46['_subdivisionsY'] = _0x3540c2['subdivisionsY'] || 0x1, _0x325d46['_minX'] = _0x3540c2['minX'], _0x325d46['_maxX'] = _0x3540c2['maxX'], _0x325d46['_minZ'] = _0x3540c2['minZ'], _0x325d46['_maxZ'] = _0x3540c2['maxZ'], _0x325d46['_width'] = _0x3540c2['width'], _0x325d46['_height'] = _0x3540c2['height'], _0x325d46; } , _0x5aba4c; }(_0xb4719b['a']); _0xb31206['a']['CreateGround'] = function(_0x21347a) { var _0x1089cc, _0x48fac2, _0x532663 = [], _0x46d6c7 = [], _0x24605c = [], _0x42ed1a = [], _0x13f878 = _0x21347a['width'] || 0x1, _0x15e946 = _0x21347a['height'] || 0x1, _0x2a907b = _0x21347a['subdivisionsX'] || _0x21347a['subdivisions'] || 0x1, _0xd18acf = _0x21347a['subdivisionsY'] || _0x21347a['subdivisions'] || 0x1; for (_0x1089cc = 0x0; _0x1089cc <= _0xd18acf; _0x1089cc++) for (_0x48fac2 = 0x0; _0x48fac2 <= _0x2a907b; _0x48fac2++) { var _0x4e1318 = new _0x47d24f['x'](_0x48fac2 * _0x13f878 / _0x2a907b - _0x13f878 / 0x2,0x0,(_0xd18acf - _0x1089cc) * _0x15e946 / _0xd18acf - _0x15e946 / 0x2) , _0x31611b = new _0x47d24f['x'](0x0,0x1,0x0); _0x46d6c7['push'](_0x4e1318['x'], _0x4e1318['y'], _0x4e1318['z']), _0x24605c['push'](_0x31611b['x'], _0x31611b['y'], _0x31611b['z']), _0x42ed1a['push'](_0x48fac2 / _0x2a907b, 0x1 - _0x1089cc / _0xd18acf); } for (_0x1089cc = 0x0; _0x1089cc < _0xd18acf; _0x1089cc++) for (_0x48fac2 = 0x0; _0x48fac2 < _0x2a907b; _0x48fac2++) _0x532663['push'](_0x48fac2 + 0x1 + (_0x1089cc + 0x1) * (_0x2a907b + 0x1)), _0x532663['push'](_0x48fac2 + 0x1 + _0x1089cc * (_0x2a907b + 0x1)), _0x532663['push'](_0x48fac2 + _0x1089cc * (_0x2a907b + 0x1)), _0x532663['push'](_0x48fac2 + (_0x1089cc + 0x1) * (_0x2a907b + 0x1)), _0x532663['push'](_0x48fac2 + 0x1 + (_0x1089cc + 0x1) * (_0x2a907b + 0x1)), _0x532663['push'](_0x48fac2 + _0x1089cc * (_0x2a907b + 0x1)); var _0x6cacc3 = new _0xb31206['a'](); return _0x6cacc3['indices'] = _0x532663, _0x6cacc3['positions'] = _0x46d6c7, _0x6cacc3['normals'] = _0x24605c, _0x6cacc3['uvs'] = _0x42ed1a, _0x6cacc3; } , _0xb31206['a']['CreateTiledGround'] = function(_0x153e27) { var _0x3625c9, _0x53545d, _0x2cf16d, _0x5959b9, _0xb41632 = void 0x0 !== _0x153e27['xmin'] && null !== _0x153e27['xmin'] ? _0x153e27['xmin'] : -0x1, _0x4ee229 = void 0x0 !== _0x153e27['zmin'] && null !== _0x153e27['zmin'] ? _0x153e27['zmin'] : -0x1, _0x35679a = void 0x0 !== _0x153e27['xmax'] && null !== _0x153e27['xmax'] ? _0x153e27['xmax'] : 0x1, _0x3e8e54 = void 0x0 !== _0x153e27['zmax'] && null !== _0x153e27['zmax'] ? _0x153e27['zmax'] : 0x1, _0x215b5c = _0x153e27['subdivisions'] || { 'w': 0x1, 'h': 0x1 }, _0x52f3de = _0x153e27['precision'] || { 'w': 0x1, 'h': 0x1 }, _0x15f3be = new Array(), _0x17e7d3 = new Array(), _0x2c8f6b = new Array(), _0x360a19 = new Array(); _0x215b5c['h'] = _0x215b5c['h'] < 0x1 ? 0x1 : _0x215b5c['h'], _0x215b5c['w'] = _0x215b5c['w'] < 0x1 ? 0x1 : _0x215b5c['w'], _0x52f3de['w'] = _0x52f3de['w'] < 0x1 ? 0x1 : _0x52f3de['w'], _0x52f3de['h'] = _0x52f3de['h'] < 0x1 ? 0x1 : _0x52f3de['h']; var _0xd02efc = (_0x35679a - _0xb41632) / _0x215b5c['w'] , _0x26ae8c = (_0x3e8e54 - _0x4ee229) / _0x215b5c['h']; function _0x395529(_0x42a443, _0x4d6293, _0x5d40c4, _0x26e3ad) { var _0x424eae = _0x17e7d3['length'] / 0x3 , _0xd1c8ac = _0x52f3de['w'] + 0x1; for (_0x3625c9 = 0x0; _0x3625c9 < _0x52f3de['h']; _0x3625c9++) for (_0x53545d = 0x0; _0x53545d < _0x52f3de['w']; _0x53545d++) { var _0x3a7920 = [_0x424eae + _0x53545d + _0x3625c9 * _0xd1c8ac, _0x424eae + (_0x53545d + 0x1) + _0x3625c9 * _0xd1c8ac, _0x424eae + (_0x53545d + 0x1) + (_0x3625c9 + 0x1) * _0xd1c8ac, _0x424eae + _0x53545d + (_0x3625c9 + 0x1) * _0xd1c8ac]; _0x15f3be['push'](_0x3a7920[0x1]), _0x15f3be['push'](_0x3a7920[0x2]), _0x15f3be['push'](_0x3a7920[0x3]), _0x15f3be['push'](_0x3a7920[0x0]), _0x15f3be['push'](_0x3a7920[0x1]), _0x15f3be['push'](_0x3a7920[0x3]); } var _0x664003 = _0x47d24f['x']['Zero']() , _0x1c9fca = new _0x47d24f['x'](0x0,0x1,0x0); for (_0x3625c9 = 0x0; _0x3625c9 <= _0x52f3de['h']; _0x3625c9++) for (_0x664003['z'] = _0x3625c9 * (_0x26e3ad - _0x4d6293) / _0x52f3de['h'] + _0x4d6293, _0x53545d = 0x0; _0x53545d <= _0x52f3de['w']; _0x53545d++) _0x664003['x'] = _0x53545d * (_0x5d40c4 - _0x42a443) / _0x52f3de['w'] + _0x42a443, _0x664003['y'] = 0x0, _0x17e7d3['push'](_0x664003['x'], _0x664003['y'], _0x664003['z']), _0x2c8f6b['push'](_0x1c9fca['x'], _0x1c9fca['y'], _0x1c9fca['z']), _0x360a19['push'](_0x53545d / _0x52f3de['w'], _0x3625c9 / _0x52f3de['h']); } for (_0x2cf16d = 0x0; _0x2cf16d < _0x215b5c['h']; _0x2cf16d++) for (_0x5959b9 = 0x0; _0x5959b9 < _0x215b5c['w']; _0x5959b9++) _0x395529(_0xb41632 + _0x5959b9 * _0xd02efc, _0x4ee229 + _0x2cf16d * _0x26ae8c, _0xb41632 + (_0x5959b9 + 0x1) * _0xd02efc, _0x4ee229 + (_0x2cf16d + 0x1) * _0x26ae8c); var _0x3387d7 = new _0xb31206['a'](); return _0x3387d7['indices'] = _0x15f3be, _0x3387d7['positions'] = _0x17e7d3, _0x3387d7['normals'] = _0x2c8f6b, _0x3387d7['uvs'] = _0x360a19, _0x3387d7; } , _0xb31206['a']['CreateGroundFromHeightMap'] = function(_0x5b97b6) { var _0x3c81a4, _0x5ce6d2, _0x2316c8 = [], _0x256537 = [], _0x5712b8 = [], _0x2afb45 = [], _0x1e7c9c = _0x5b97b6['colorFilter'] || new _0x47d24f['e'](0.3,0.59,0.11), _0x505d98 = _0x5b97b6['alphaFilter'] || 0x0, _0x2b4a39 = !0x1; if (_0x5b97b6['minHeight'] > _0x5b97b6['maxHeight']) { _0x2b4a39 = !0x0; var _0x534c29 = _0x5b97b6['maxHeight']; _0x5b97b6['maxHeight'] = _0x5b97b6['minHeight'], _0x5b97b6['minHeight'] = _0x534c29; } for (_0x3c81a4 = 0x0; _0x3c81a4 <= _0x5b97b6['subdivisions']; _0x3c81a4++) for (_0x5ce6d2 = 0x0; _0x5ce6d2 <= _0x5b97b6['subdivisions']; _0x5ce6d2++) { var _0x38528a = new _0x47d24f['x'](_0x5ce6d2 * _0x5b97b6['width'] / _0x5b97b6['subdivisions'] - _0x5b97b6['width'] / 0x2,0x0,(_0x5b97b6['subdivisions'] - _0x3c81a4) * _0x5b97b6['height'] / _0x5b97b6['subdivisions'] - _0x5b97b6['height'] / 0x2) , _0x38c078 = 0x4 * (((_0x38528a['x'] + _0x5b97b6['width'] / 0x2) / _0x5b97b6['width'] * (_0x5b97b6['bufferWidth'] - 0x1) | 0x0) + ((0x1 - (_0x38528a['z'] + _0x5b97b6['height'] / 0x2) / _0x5b97b6['height']) * (_0x5b97b6['bufferHeight'] - 0x1) | 0x0) * _0x5b97b6['bufferWidth']) , _0x400c8a = _0x5b97b6['buffer'][_0x38c078] / 0xff , _0xf6ed1e = _0x5b97b6['buffer'][_0x38c078 + 0x1] / 0xff , _0x39234c = _0x5b97b6['buffer'][_0x38c078 + 0x2] / 0xff , _0xdbbf00 = _0x5b97b6['buffer'][_0x38c078 + 0x3] / 0xff; _0x2b4a39 && (_0x400c8a = 0x1 - _0x400c8a, _0xf6ed1e = 0x1 - _0xf6ed1e, _0x39234c = 0x1 - _0x39234c); var _0x181c64 = _0x400c8a * _0x1e7c9c['r'] + _0xf6ed1e * _0x1e7c9c['g'] + _0x39234c * _0x1e7c9c['b']; _0x38528a['y'] = _0xdbbf00 >= _0x505d98 ? _0x5b97b6['minHeight'] + (_0x5b97b6['maxHeight'] - _0x5b97b6['minHeight']) * _0x181c64 : _0x5b97b6['minHeight'] - _0x47d24f['h'], _0x256537['push'](_0x38528a['x'], _0x38528a['y'], _0x38528a['z']), _0x5712b8['push'](0x0, 0x0, 0x0), _0x2afb45['push'](_0x5ce6d2 / _0x5b97b6['subdivisions'], 0x1 - _0x3c81a4 / _0x5b97b6['subdivisions']); } for (_0x3c81a4 = 0x0; _0x3c81a4 < _0x5b97b6['subdivisions']; _0x3c81a4++) for (_0x5ce6d2 = 0x0; _0x5ce6d2 < _0x5b97b6['subdivisions']; _0x5ce6d2++) { var _0x328309 = _0x5ce6d2 + 0x1 + (_0x3c81a4 + 0x1) * (_0x5b97b6['subdivisions'] + 0x1) , _0x181d38 = _0x5ce6d2 + 0x1 + _0x3c81a4 * (_0x5b97b6['subdivisions'] + 0x1) , _0x1cf0b7 = _0x5ce6d2 + _0x3c81a4 * (_0x5b97b6['subdivisions'] + 0x1) , _0x5d4b69 = _0x5ce6d2 + (_0x3c81a4 + 0x1) * (_0x5b97b6['subdivisions'] + 0x1) , _0x168100 = _0x256537[0x3 * _0x328309 + 0x1] >= _0x5b97b6['minHeight'] , _0x1d61f8 = _0x256537[0x3 * _0x181d38 + 0x1] >= _0x5b97b6['minHeight'] , _0x16cb5d = _0x256537[0x3 * _0x1cf0b7 + 0x1] >= _0x5b97b6['minHeight']; _0x168100 && _0x1d61f8 && _0x16cb5d && (_0x2316c8['push'](_0x328309), _0x2316c8['push'](_0x181d38), _0x2316c8['push'](_0x1cf0b7)), _0x256537[0x3 * _0x5d4b69 + 0x1] >= _0x5b97b6['minHeight'] && _0x168100 && _0x16cb5d && (_0x2316c8['push'](_0x5d4b69), _0x2316c8['push'](_0x328309), _0x2316c8['push'](_0x1cf0b7)); } _0xb31206['a']['ComputeNormals'](_0x256537, _0x2316c8, _0x5712b8); var _0x59928f = new _0xb31206['a'](); return _0x59928f['indices'] = _0x2316c8, _0x59928f['positions'] = _0x256537, _0x59928f['normals'] = _0x5712b8, _0x59928f['uvs'] = _0x2afb45, _0x59928f; } , _0xb4719b['a']['CreateGround'] = function(_0x7bed65, _0x481067, _0x428b08, _0x1bb1a1, _0x5f1c45, _0x287a3d) { var _0x4e4dc1 = { 'width': _0x481067, 'height': _0x428b08, 'subdivisions': _0x1bb1a1, 'updatable': _0x287a3d }; return _0x88163d['CreateGround'](_0x7bed65, _0x4e4dc1, _0x5f1c45); } , _0xb4719b['a']['CreateTiledGround'] = function(_0x44d1ba, _0x565bee, _0x534af0, _0x16c40f, _0x945bae, _0x4521e6, _0x4da763, _0x72f0ea, _0x2fc091) { var _0x59bdef = { 'xmin': _0x565bee, 'zmin': _0x534af0, 'xmax': _0x16c40f, 'zmax': _0x945bae, 'subdivisions': _0x4521e6, 'precision': _0x4da763, 'updatable': _0x2fc091 }; return _0x88163d['CreateTiledGround'](_0x44d1ba, _0x59bdef, _0x72f0ea); } , _0xb4719b['a']['CreateGroundFromHeightMap'] = function(_0x508947, _0x3ecafa, _0x1583ee, _0x1a703d, _0x31b86d, _0x4247e4, _0x3f0444, _0x25a70a, _0x20964c, _0x21c4c1, _0x1e1d98) { var _0x1158c4 = { 'width': _0x1583ee, 'height': _0x1a703d, 'subdivisions': _0x31b86d, 'minHeight': _0x4247e4, 'maxHeight': _0x3f0444, 'updatable': _0x20964c, 'onReady': _0x21c4c1, 'alphaFilter': _0x1e1d98 }; return _0x88163d['CreateGroundFromHeightMap'](_0x508947, _0x3ecafa, _0x1158c4, _0x25a70a); } ; var _0x88163d = function() { function _0x463efa() {} return _0x463efa['CreateGround'] = function(_0x3b561a, _0x2892fd, _0x4d9fd8) { var _0x2445d8 = new _0x49615a(_0x3b561a,_0x4d9fd8); return _0x2445d8['_setReady'](!0x1), _0x2445d8['_subdivisionsX'] = _0x2892fd['subdivisionsX'] || _0x2892fd['subdivisions'] || 0x1, _0x2445d8['_subdivisionsY'] = _0x2892fd['subdivisionsY'] || _0x2892fd['subdivisions'] || 0x1, _0x2445d8['_width'] = _0x2892fd['width'] || 0x1, _0x2445d8['_height'] = _0x2892fd['height'] || 0x1, _0x2445d8['_maxX'] = _0x2445d8['_width'] / 0x2, _0x2445d8['_maxZ'] = _0x2445d8['_height'] / 0x2, _0x2445d8['_minX'] = -_0x2445d8['_maxX'], _0x2445d8['_minZ'] = -_0x2445d8['_maxZ'], _0xb31206['a']['CreateGround'](_0x2892fd)['applyToMesh'](_0x2445d8, _0x2892fd['updatable']), _0x2445d8['_setReady'](!0x0), _0x2445d8; } , _0x463efa['CreateTiledGround'] = function(_0x3dae38, _0x17e446, _0x15761d) { void 0x0 === _0x15761d && (_0x15761d = null); var _0x5e510f = new _0xb4719b['a'](_0x3dae38,_0x15761d); return _0xb31206['a']['CreateTiledGround'](_0x17e446)['applyToMesh'](_0x5e510f, _0x17e446['updatable']), _0x5e510f; } , _0x463efa['CreateGroundFromHeightMap'] = function(_0x5d78b6, _0x5f2748, _0x2b2582, _0x21815f) { void 0x0 === _0x21815f && (_0x21815f = null); var _0xa29418 = _0x2b2582['width'] || 0xa , _0x12cee4 = _0x2b2582['height'] || 0xa , _0x31ea73 = _0x2b2582['subdivisions'] || 0x1 , _0x592d83 = _0x2b2582['minHeight'] || 0x0 , _0x3b4a1a = _0x2b2582['maxHeight'] || 0x1 , _0x43cc17 = _0x2b2582['colorFilter'] || new _0x47d24f['e'](0.3,0.59,0.11) , _0x17b045 = _0x2b2582['alphaFilter'] || 0x0 , _0x1799b6 = _0x2b2582['updatable'] , _0x2c8fea = _0x2b2582['onReady']; _0x21815f = _0x21815f || _0x48707b['a']['LastCreatedScene']; var _0x368bca = new _0x49615a(_0x5d78b6,_0x21815f); _0x368bca['_subdivisionsX'] = _0x31ea73, _0x368bca['_subdivisionsY'] = _0x31ea73, _0x368bca['_width'] = _0xa29418, _0x368bca['_height'] = _0x12cee4, _0x368bca['_maxX'] = _0x368bca['_width'] / 0x2, _0x368bca['_maxZ'] = _0x368bca['_height'] / 0x2, _0x368bca['_minX'] = -_0x368bca['_maxX'], _0x368bca['_minZ'] = -_0x368bca['_maxZ'], _0x368bca['_setReady'](!0x1); return _0x1eb50e['h']['LoadImage'](_0x5f2748, function(_0x16fa12) { var _0x43d52f = document['createElement']('canvas') , _0x35830e = _0x43d52f['getContext']('2d'); if (!_0x35830e) throw new Error('Unable\x20to\x20get\x202d\x20context\x20for\x20CreateGroundFromHeightMap'); if (!_0x21815f['isDisposed']) { var _0x4707ef = _0x16fa12['width'] , _0x41dff9 = _0x16fa12['height']; _0x43d52f['width'] = _0x4707ef, _0x43d52f['height'] = _0x41dff9, _0x35830e['drawImage'](_0x16fa12, 0x0, 0x0); var _0x15cb9f = _0x35830e['getImageData'](0x0, 0x0, _0x4707ef, _0x41dff9)['data']; _0xb31206['a']['CreateGroundFromHeightMap']({ 'width': _0xa29418, 'height': _0x12cee4, 'subdivisions': _0x31ea73, 'minHeight': _0x592d83, 'maxHeight': _0x3b4a1a, 'colorFilter': _0x43cc17, 'buffer': _0x15cb9f, 'bufferWidth': _0x4707ef, 'bufferHeight': _0x41dff9, 'alphaFilter': _0x17b045 })['applyToMesh'](_0x368bca, _0x1799b6), _0x2c8fea && _0x2c8fea(_0x368bca), _0x368bca['_setReady'](!0x0); } }, function() {}, _0x21815f['offlineProvider']), _0x368bca; } , _0x463efa; }(); _0xb31206['a']['CreateTorus'] = function(_0x2bc950) { for (var _0x4a800c = [], _0x99f2e4 = [], _0x2b918c = [], _0x22c296 = [], _0xc08833 = _0x2bc950['diameter'] || 0x1, _0x1efdd2 = _0x2bc950['thickness'] || 0.5, _0x4615c4 = _0x2bc950['tessellation'] || 0x10, _0x931f0e = 0x0 === _0x2bc950['sideOrientation'] ? 0x0 : _0x2bc950['sideOrientation'] || _0xb31206['a']['DEFAULTSIDE'], _0x2df2aa = _0x4615c4 + 0x1, _0x439010 = 0x0; _0x439010 <= _0x4615c4; _0x439010++) for (var _0x151b91 = _0x439010 / _0x4615c4, _0x4f9b2a = _0x439010 * Math['PI'] * 0x2 / _0x4615c4 - Math['PI'] / 0x2, _0x1cfba4 = _0x47d24f['j']['Translation'](_0xc08833 / 0x2, 0x0, 0x0)['multiply'](_0x47d24f['j']['RotationY'](_0x4f9b2a)), _0x3e3b31 = 0x0; _0x3e3b31 <= _0x4615c4; _0x3e3b31++) { var _0x23c8f3 = 0x1 - _0x3e3b31 / _0x4615c4 , _0x2334ea = _0x3e3b31 * Math['PI'] * 0x2 / _0x4615c4 + Math['PI'] , _0x1ff42e = Math['cos'](_0x2334ea) , _0x5e54d1 = Math['sin'](_0x2334ea) , _0x16bdc1 = new _0x47d24f['x'](_0x1ff42e,_0x5e54d1,0x0) , _0x376a37 = _0x16bdc1['scale'](_0x1efdd2 / 0x2) , _0x5ea599 = new _0x47d24f['w'](_0x151b91,_0x23c8f3); _0x376a37 = _0x47d24f['x']['TransformCoordinates'](_0x376a37, _0x1cfba4), _0x16bdc1 = _0x47d24f['x']['TransformNormal'](_0x16bdc1, _0x1cfba4), _0x99f2e4['push'](_0x376a37['x'], _0x376a37['y'], _0x376a37['z']), _0x2b918c['push'](_0x16bdc1['x'], _0x16bdc1['y'], _0x16bdc1['z']), _0x22c296['push'](_0x5ea599['x'], _0x5ea599['y']); var _0x5735bf = (_0x439010 + 0x1) % _0x2df2aa , _0x667eec = (_0x3e3b31 + 0x1) % _0x2df2aa; _0x4a800c['push'](_0x439010 * _0x2df2aa + _0x3e3b31), _0x4a800c['push'](_0x439010 * _0x2df2aa + _0x667eec), _0x4a800c['push'](_0x5735bf * _0x2df2aa + _0x3e3b31), _0x4a800c['push'](_0x439010 * _0x2df2aa + _0x667eec), _0x4a800c['push'](_0x5735bf * _0x2df2aa + _0x667eec), _0x4a800c['push'](_0x5735bf * _0x2df2aa + _0x3e3b31); } _0xb31206['a']['_ComputeSides'](_0x931f0e, _0x99f2e4, _0x4a800c, _0x2b918c, _0x22c296, _0x2bc950['frontUVs'], _0x2bc950['backUVs']); var _0x48fa4d = new _0xb31206['a'](); return _0x48fa4d['indices'] = _0x4a800c, _0x48fa4d['positions'] = _0x99f2e4, _0x48fa4d['normals'] = _0x2b918c, _0x48fa4d['uvs'] = _0x22c296, _0x48fa4d; } , _0xb4719b['a']['CreateTorus'] = function(_0x14bc49, _0x2b9c4c, _0x1a5523, _0x1a2769, _0x420052, _0x452f4e, _0x307cfb) { var _0x1e388d = { 'diameter': _0x2b9c4c, 'thickness': _0x1a5523, 'tessellation': _0x1a2769, 'sideOrientation': _0x307cfb, 'updatable': _0x452f4e }; return _0x211acf['CreateTorus'](_0x14bc49, _0x1e388d, _0x420052); } ; var _0x2bd511, _0x211acf = function() { function _0x233ef1() {} return _0x233ef1['CreateTorus'] = function(_0x3554ce, _0x574761, _0x5d5543) { var _0x54965a = new _0xb4719b['a'](_0x3554ce,_0x5d5543); return _0x574761['sideOrientation'] = _0xb4719b['a']['_GetDefaultSideOrientation'](_0x574761['sideOrientation']), _0x54965a['_originalBuilderSideOrientation'] = _0x574761['sideOrientation'], _0xb31206['a']['CreateTorus'](_0x574761)['applyToMesh'](_0x54965a, _0x574761['updatable']), _0x54965a; } , _0x233ef1; }(), _0x1e5ba3 = _0x59bd00(0x35), _0x1f5267 = function() { function _0xfb7df2(_0x55c709, _0x29f333) { if (void 0x0 === _0x29f333 && (_0x29f333 = null), this['scene'] = _0x55c709, this['_pointerDownOnMeshAsked'] = !0x1, this['_isActionableMesh'] = !0x1, this['_teleportationRequestInitiated'] = !0x1, this['_teleportationBackRequestInitiated'] = !0x1, this['_rotationRightAsked'] = !0x1, this['_rotationLeftAsked'] = !0x1, this['_dpadPressed'] = !0x0, this['_activePointer'] = !0x1, this['_id'] = _0xfb7df2['_idCounter']++, _0x29f333) this['_gazeTracker'] = _0x29f333['clone']('gazeTracker'); else { this['_gazeTracker'] = _0xb4719b['a']['CreateTorus']('gazeTracker', 0.0035, 0.0025, 0x14, _0x55c709, !0x1), this['_gazeTracker']['bakeCurrentTransformIntoVertices'](), this['_gazeTracker']['isPickable'] = !0x1, this['_gazeTracker']['isVisible'] = !0x1; var _0xd4ec9c = new _0xe7dd57['a']('targetMat',_0x55c709); _0xd4ec9c['specularColor'] = _0x47d24f['e']['Black'](), _0xd4ec9c['emissiveColor'] = new _0x47d24f['e'](0.7,0.7,0.7), _0xd4ec9c['backFaceCulling'] = !0x1, this['_gazeTracker']['material'] = _0xd4ec9c; } } return _0xfb7df2['prototype']['_getForwardRay'] = function(_0x501f59) { return new _0x19e5af['a'](_0x47d24f['x']['Zero'](),new _0x47d24f['x'](0x0,0x0,_0x501f59)); } , _0xfb7df2['prototype']['_selectionPointerDown'] = function() { this['_pointerDownOnMeshAsked'] = !0x0, this['_currentHit'] && this['scene']['simulatePointerDown'](this['_currentHit'], { 'pointerId': this['_id'] }); } , _0xfb7df2['prototype']['_selectionPointerUp'] = function() { this['_currentHit'] && this['scene']['simulatePointerUp'](this['_currentHit'], { 'pointerId': this['_id'] }), this['_pointerDownOnMeshAsked'] = !0x1; } , _0xfb7df2['prototype']['_activatePointer'] = function() { this['_activePointer'] = !0x0; } , _0xfb7df2['prototype']['_deactivatePointer'] = function() { this['_activePointer'] = !0x1; } , _0xfb7df2['prototype']['_updatePointerDistance'] = function(_0x129d3c) { void 0x0 === _0x129d3c && (_0x129d3c = 0x64); } , _0xfb7df2['prototype']['dispose'] = function() { this['_interactionsEnabled'] = !0x1, this['_teleportationEnabled'] = !0x1, this['_gazeTracker'] && this['_gazeTracker']['dispose'](); } , _0xfb7df2['_idCounter'] = 0x0, _0xfb7df2; }(), _0x259d87 = function(_0x7bd319) { function _0x5a1de6(_0x275e86, _0x4ad670, _0x151063) { var _0x33d266 = _0x7bd319['call'](this, _0x4ad670, _0x151063) || this; _0x33d266['webVRController'] = _0x275e86, _0x33d266['_laserPointer'] = _0xb4719b['a']['CreateCylinder']('laserPointer', 0x1, 0.004, 0.0002, 0x14, 0x1, _0x4ad670, !0x1); var _0x234dd = new _0xe7dd57['a']('laserPointerMat',_0x4ad670); if (_0x234dd['emissiveColor'] = new _0x47d24f['e'](0.7,0.7,0.7), _0x234dd['alpha'] = 0.6, _0x33d266['_laserPointer']['material'] = _0x234dd, _0x33d266['_laserPointer']['rotation']['x'] = Math['PI'] / 0x2, _0x33d266['_laserPointer']['position']['z'] = -0.5, _0x33d266['_laserPointer']['isVisible'] = !0x1, _0x33d266['_laserPointer']['isPickable'] = !0x1, !_0x275e86['mesh']) { var _0x2a893c = new _0xb4719b['a']('preloadControllerMesh',_0x4ad670) , _0x4e250e = new _0xb4719b['a'](_0x20e106['POINTING_POSE'],_0x4ad670); _0x4e250e['rotation']['x'] = -0.7, _0x2a893c['addChild'](_0x4e250e), _0x275e86['attachToMesh'](_0x2a893c); } return _0x33d266['_setLaserPointerParent'](_0x275e86['mesh']), _0x33d266['_meshAttachedObserver'] = _0x275e86['_meshAttachedObservable']['add'](function(_0x2a54ed) { _0x33d266['_setLaserPointerParent'](_0x2a54ed); }), _0x33d266; } return _0x420e5b['d'](_0x5a1de6, _0x7bd319), _0x5a1de6['prototype']['_getForwardRay'] = function(_0x40facc) { return this['webVRController']['getForwardRay'](_0x40facc); } , _0x5a1de6['prototype']['_activatePointer'] = function() { _0x7bd319['prototype']['_activatePointer']['call'](this), this['_laserPointer']['isVisible'] = !0x0; } , _0x5a1de6['prototype']['_deactivatePointer'] = function() { _0x7bd319['prototype']['_deactivatePointer']['call'](this), this['_laserPointer']['isVisible'] = !0x1; } , _0x5a1de6['prototype']['_setLaserPointerColor'] = function(_0x1f5d19) { this['_laserPointer']['material']['emissiveColor'] = _0x1f5d19; } , _0x5a1de6['prototype']['_setLaserPointerParent'] = function(_0x58c274) { var _0x5b9bed = function(_0x5ab779) { _0x5ab779['isPickable'] = !0x1, _0x5ab779['getChildMeshes']()['forEach'](function(_0x33938f) { _0x5b9bed(_0x33938f); }); }; _0x5b9bed(_0x58c274); var _0x453ced = _0x58c274['getChildren'](void 0x0, !0x1) , _0x227a95 = _0x58c274; this['webVRController']['_pointingPoseNode'] = null; for (var _0x10cf1b = 0x0; _0x10cf1b < _0x453ced['length']; _0x10cf1b++) if (_0x453ced[_0x10cf1b]['name'] && _0x453ced[_0x10cf1b]['name']['indexOf'](_0x20e106['POINTING_POSE']) >= 0x0) { _0x227a95 = _0x453ced[_0x10cf1b], this['webVRController']['_pointingPoseNode'] = _0x227a95; break; } this['_laserPointer']['parent'] = _0x227a95; } , _0x5a1de6['prototype']['_updatePointerDistance'] = function(_0xa29682) { void 0x0 === _0xa29682 && (_0xa29682 = 0x64), this['_laserPointer']['scaling']['y'] = _0xa29682, this['_laserPointer']['position']['z'] = -_0xa29682 / 0x2; } , _0x5a1de6['prototype']['dispose'] = function() { _0x7bd319['prototype']['dispose']['call'](this), this['_laserPointer']['dispose'](), this['_meshAttachedObserver'] && this['webVRController']['_meshAttachedObservable']['remove'](this['_meshAttachedObserver']); } , _0x5a1de6; }(_0x1f5267), _0x558345 = function(_0x452240) { function _0x28dcd0(_0x56fa64, _0x27f264) { var _0x293069 = _0x452240['call'](this, _0x27f264) || this; return _0x293069['getCamera'] = _0x56fa64, _0x293069; } return _0x420e5b['d'](_0x28dcd0, _0x452240), _0x28dcd0['prototype']['_getForwardRay'] = function(_0xbcd527) { var _0x1c6a4b = this['getCamera'](); return _0x1c6a4b ? _0x1c6a4b['getForwardRay'](_0xbcd527) : new _0x19e5af['a'](_0x47d24f['x']['Zero'](),_0x47d24f['x']['Forward']()); } , _0x28dcd0; }(_0x1f5267), _0x43173f = function() { return function() {} ; }(), _0x443caf = function() { function _0x5f0ef5(_0x35ddd8, _0x53d570) { var _0x33fa00 = this; if (void 0x0 === _0x53d570 && (_0x53d570 = {}), this['webVROptions'] = _0x53d570, this['_webVRsupported'] = !0x1, this['_webVRready'] = !0x1, this['_webVRrequesting'] = !0x1, this['_webVRpresenting'] = !0x1, this['_fullscreenVRpresenting'] = !0x1, this['onEnteringVRObservable'] = new _0x2dbec2['c'](), this['onAfterEnteringVRObservable'] = new _0x2dbec2['c'](), this['onExitingVRObservable'] = new _0x2dbec2['c'](), this['onControllerMeshLoadedObservable'] = new _0x2dbec2['c'](), this['_useCustomVRButton'] = !0x1, this['_teleportationRequested'] = !0x1, this['_teleportActive'] = !0x1, this['_floorMeshesCollection'] = [], this['_rotationAllowed'] = !0x0, this['_teleportBackwardsVector'] = new _0x47d24f['x'](0x0,-0x1,-0x1), this['_isDefaultTeleportationTarget'] = !0x0, this['_teleportationFillColor'] = '#444444', this['_teleportationBorderColor'] = '#FFFFFF', this['_rotationAngle'] = 0x0, this['_haloCenter'] = new _0x47d24f['x'](0x0,0x0,0x0), this['_padSensibilityUp'] = 0.65, this['_padSensibilityDown'] = 0.35, this['_leftController'] = null, this['_rightController'] = null, this['onNewMeshSelected'] = new _0x2dbec2['c'](), this['onNewMeshPicked'] = new _0x2dbec2['c'](), this['onBeforeCameraTeleport'] = new _0x2dbec2['c'](), this['onAfterCameraTeleport'] = new _0x2dbec2['c'](), this['onSelectedMeshUnselected'] = new _0x2dbec2['c'](), this['teleportationEnabled'] = !0x0, this['_teleportationInitialized'] = !0x1, this['_interactionsEnabled'] = !0x1, this['_interactionsRequested'] = !0x1, this['_displayGaze'] = !0x0, this['_displayLaserPointer'] = !0x0, this['updateGazeTrackerScale'] = !0x0, this['updateGazeTrackerColor'] = !0x0, this['requestPointerLockOnFullScreen'] = !0x0, this['_onResize'] = function() { _0x33fa00['moveButtonToBottomRight'](), _0x33fa00['_fullscreenVRpresenting'] && _0x33fa00['_webVRready'] && _0x33fa00['exitVR'](); } , this['_onFullscreenChange'] = function() { var _0x2a401b = document; void 0x0 !== _0x2a401b['fullscreen'] ? _0x33fa00['_fullscreenVRpresenting'] = document['fullscreen'] : void 0x0 !== _0x2a401b['mozFullScreen'] ? _0x33fa00['_fullscreenVRpresenting'] = _0x2a401b['mozFullScreen'] : void 0x0 !== _0x2a401b['webkitIsFullScreen'] ? _0x33fa00['_fullscreenVRpresenting'] = _0x2a401b['webkitIsFullScreen'] : void 0x0 !== _0x2a401b['msIsFullScreen'] ? _0x33fa00['_fullscreenVRpresenting'] = _0x2a401b['msIsFullScreen'] : void 0x0 !== document['msFullscreenElement'] && (_0x33fa00['_fullscreenVRpresenting'] = document['msFullscreenElement']), !_0x33fa00['_fullscreenVRpresenting'] && _0x33fa00['_canvas'] && (_0x33fa00['exitVR'](), _0x33fa00['_useCustomVRButton'] || (_0x33fa00['_btnVR']['style']['top'] = _0x33fa00['_canvas']['offsetTop'] + _0x33fa00['_canvas']['offsetHeight'] - 0x46 + 'px', _0x33fa00['_btnVR']['style']['left'] = _0x33fa00['_canvas']['offsetLeft'] + _0x33fa00['_canvas']['offsetWidth'] - 0x64 + 'px')); } , this['_cachedAngularSensibility'] = { 'angularSensibilityX': null, 'angularSensibilityY': null, 'angularSensibility': null }, this['beforeRender'] = function() { _0x33fa00['_leftController'] && _0x33fa00['_leftController']['_activePointer'] && _0x33fa00['_castRayAndSelectObject'](_0x33fa00['_leftController']), _0x33fa00['_rightController'] && _0x33fa00['_rightController']['_activePointer'] && _0x33fa00['_castRayAndSelectObject'](_0x33fa00['_rightController']), _0x33fa00['_noControllerIsActive'] ? _0x33fa00['_castRayAndSelectObject'](_0x33fa00['_cameraGazer']) : _0x33fa00['_cameraGazer']['_gazeTracker']['isVisible'] = !0x1; } , this['_onNewGamepadConnected'] = function(_0x2a2470) { if (_0x2a2470['type'] !== _0x591e86['POSE_ENABLED']) _0x2a2470['leftStick'] && _0x2a2470['onleftstickchanged'](function(_0xd9204c) { _0x33fa00['_teleportationInitialized'] && _0x33fa00['teleportationEnabled'] && (!_0x33fa00['_leftController'] && !_0x33fa00['_rightController'] || _0x33fa00['_leftController'] && !_0x33fa00['_leftController']['_activePointer'] && _0x33fa00['_rightController'] && !_0x33fa00['_rightController']['_activePointer']) && (_0x33fa00['_checkTeleportWithRay'](_0xd9204c, _0x33fa00['_cameraGazer']), _0x33fa00['_checkTeleportBackwards'](_0xd9204c, _0x33fa00['_cameraGazer'])); }), _0x2a2470['rightStick'] && _0x2a2470['onrightstickchanged'](function(_0x247c8b) { _0x33fa00['_teleportationInitialized'] && _0x33fa00['_checkRotate'](_0x247c8b, _0x33fa00['_cameraGazer']); }), _0x2a2470['type'] === _0x591e86['XBOX'] && (_0x2a2470['onbuttondown'](function(_0xbe4a30) { _0x33fa00['_interactionsEnabled'] && _0xbe4a30 === _0x1364a4['A'] && _0x33fa00['_cameraGazer']['_selectionPointerDown'](); }), _0x2a2470['onbuttonup'](function(_0x574e2d) { _0x33fa00['_interactionsEnabled'] && _0x574e2d === _0x1364a4['A'] && _0x33fa00['_cameraGazer']['_selectionPointerUp'](); })); else { var _0x178753 = _0x2a2470 , _0x593a70 = new _0x259d87(_0x178753,_0x33fa00['_scene'],_0x33fa00['_cameraGazer']['_gazeTracker']); 'right' === _0x178753['hand'] || _0x33fa00['_leftController'] && _0x33fa00['_leftController']['webVRController'] != _0x178753 ? _0x33fa00['_rightController'] = _0x593a70 : _0x33fa00['_leftController'] = _0x593a70, _0x33fa00['_tryEnableInteractionOnController'](_0x593a70); } } , this['_tryEnableInteractionOnController'] = function(_0x212ade) { _0x33fa00['_interactionsRequested'] && !_0x212ade['_interactionsEnabled'] && _0x33fa00['_enableInteractionOnController'](_0x212ade), _0x33fa00['_teleportationRequested'] && !_0x212ade['_teleportationEnabled'] && _0x33fa00['_enableTeleportationOnController'](_0x212ade); } , this['_onNewGamepadDisconnected'] = function(_0x21fb66) { _0x21fb66 instanceof _0x3ef953 && ('left' === _0x21fb66['hand'] && null != _0x33fa00['_leftController'] && (_0x33fa00['_leftController']['dispose'](), _0x33fa00['_leftController'] = null), 'right' === _0x21fb66['hand'] && null != _0x33fa00['_rightController'] && (_0x33fa00['_rightController']['dispose'](), _0x33fa00['_rightController'] = null)); } , this['_workingVector'] = _0x47d24f['x']['Zero'](), this['_workingQuaternion'] = _0x47d24f['q']['Identity'](), this['_workingMatrix'] = _0x47d24f['j']['Identity'](), this['_scene'] = _0x35ddd8, this['_canvas'] = _0x35ddd8['getEngine']()['getRenderingCanvas'](), void 0x0 === _0x53d570['createFallbackVRDeviceOrientationFreeCamera'] && (_0x53d570['createFallbackVRDeviceOrientationFreeCamera'] = !0x0), void 0x0 === _0x53d570['createDeviceOrientationCamera'] && (_0x53d570['createDeviceOrientationCamera'] = !0x0), void 0x0 === _0x53d570['laserToggle'] && (_0x53d570['laserToggle'] = !0x0), void 0x0 === _0x53d570['defaultHeight'] && (_0x53d570['defaultHeight'] = 1.7), _0x53d570['useCustomVRButton'] && (this['_useCustomVRButton'] = !0x0, _0x53d570['customVRButton'] && (this['_btnVR'] = _0x53d570['customVRButton'])), _0x53d570['rayLength'] && (this['_rayLength'] = _0x53d570['rayLength']), this['_defaultHeight'] = _0x53d570['defaultHeight'], _0x53d570['positionScale'] && (this['_rayLength'] *= _0x53d570['positionScale'], this['_defaultHeight'] *= _0x53d570['positionScale']), this['_hasEnteredVR'] = !0x1, this['_scene']['activeCamera'] ? this['_position'] = this['_scene']['activeCamera']['position']['clone']() : this['_position'] = new _0x47d24f['x'](0x0,this['_defaultHeight'],0x0), _0x53d570['createDeviceOrientationCamera'] || !this['_scene']['activeCamera']) { if (this['_deviceOrientationCamera'] = new _0x1cae74('deviceOrientationVRHelper',this['_position']['clone'](),_0x35ddd8), this['_scene']['activeCamera'] && (this['_deviceOrientationCamera']['minZ'] = this['_scene']['activeCamera']['minZ'], this['_deviceOrientationCamera']['maxZ'] = this['_scene']['activeCamera']['maxZ'], this['_scene']['activeCamera']instanceof _0x4c37b8 && this['_scene']['activeCamera']['rotation'])) { var _0x3a26a7 = this['_scene']['activeCamera']; _0x3a26a7['rotationQuaternion'] ? this['_deviceOrientationCamera']['rotationQuaternion']['copyFrom'](_0x3a26a7['rotationQuaternion']) : this['_deviceOrientationCamera']['rotationQuaternion']['copyFrom'](_0x47d24f['q']['RotationYawPitchRoll'](_0x3a26a7['rotation']['y'], _0x3a26a7['rotation']['x'], _0x3a26a7['rotation']['z'])), this['_deviceOrientationCamera']['rotation'] = _0x3a26a7['rotation']['clone'](); } this['_scene']['activeCamera'] = this['_deviceOrientationCamera'], this['_canvas'] && this['_scene']['activeCamera']['attachControl'](this['_canvas']); } else this['_existingCamera'] = this['_scene']['activeCamera']; if (_0x53d570['createFallbackVRDeviceOrientationFreeCamera'] && (_0x53d570['useMultiview'] && (_0x53d570['vrDeviceOrientationCameraMetrics'] || (_0x53d570['vrDeviceOrientationCameraMetrics'] = _0x34ddcd['GetDefault']()), _0x53d570['vrDeviceOrientationCameraMetrics']['multiviewEnabled'] = !0x0), this['_vrDeviceOrientationCamera'] = new _0x5515e('VRDeviceOrientationVRHelper',this['_position'],this['_scene'],!0x0,_0x53d570['vrDeviceOrientationCameraMetrics']), this['_vrDeviceOrientationCamera']['angularSensibility'] = Number['MAX_VALUE']), this['_webVRCamera'] = new _0x45ae1b('WebVRHelper',this['_position'],this['_scene'],_0x53d570), this['_webVRCamera']['useStandingMatrix'](), this['_cameraGazer'] = new _0x558345(function() { return _0x33fa00['currentVRCamera']; } ,_0x35ddd8), !this['_useCustomVRButton']) { this['_btnVR'] = document['createElement']('BUTTON'), this['_btnVR']['className'] = 'babylonVRicon', this['_btnVR']['id'] = 'babylonVRiconbtn', this['_btnVR']['title'] = 'Click\x20to\x20switch\x20to\x20VR'; '.babylonVRicon.vrdisplaypresenting\x20{\x20display:\x20none;\x20}'; var _0x180c8a = document['createElement']('style'); _0x180c8a['appendChild'](document['createTextNode']('.babylonVRicon\x20{\x20position:\x20absolute;\x20right:\x2020px;\x20height:\x2050px;\x20width:\x2080px;\x20background-color:\x20rgba(51,51,51,0.7);\x20background-image:\x20url(data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%222048%22%20height%3D%221152%22%20viewBox%3D%220%200%202048%201152%22%20version%3D%221.1%22%3E%3Cpath%20transform%3D%22rotate%28180%201024%2C576.0000000000001%29%22%20d%3D%22m1109%2C896q17%2C0%2030%2C-12t13%2C-30t-12.5%2C-30.5t-30.5%2C-12.5l-170%2C0q-18%2C0%20-30.5%2C12.5t-12.5%2C30.5t13%2C30t30%2C12l170%2C0zm-85%2C256q59%2C0%20132.5%2C-1.5t154.5%2C-5.5t164.5%2C-11.5t163%2C-20t150%2C-30t124.5%2C-41.5q23%2C-11%2042%2C-24t38%2C-30q27%2C-25%2041%2C-61.5t14%2C-72.5l0%2C-257q0%2C-123%20-47%2C-232t-128%2C-190t-190%2C-128t-232%2C-47l-81%2C0q-37%2C0%20-68.5%2C14t-60.5%2C34.5t-55.5%2C45t-53%2C45t-53%2C34.5t-55.5%2C14t-55.5%2C-14t-53%2C-34.5t-53%2C-45t-55.5%2C-45t-60.5%2C-34.5t-68.5%2C-14l-81%2C0q-123%2C0%20-232%2C47t-190%2C128t-128%2C190t-47%2C232l0%2C257q0%2C68%2038%2C115t97%2C73q54%2C24%20124.5%2C41.5t150%2C30t163%2C20t164.5%2C11.5t154.5%2C5.5t132.5%2C1.5zm939%2C-298q0%2C39%20-24.5%2C67t-58.5%2C42q-54%2C23%20-122%2C39.5t-143.5%2C28t-155.5%2C19t-157%2C11t-148.5%2C5t-129.5%2C1.5q-59%2C0%20-130%2C-1.5t-148%2C-5t-157%2C-11t-155.5%2C-19t-143.5%2C-28t-122%2C-39.5q-34%2C-14%20-58.5%2C-42t-24.5%2C-67l0%2C-257q0%2C-106%2040.5%2C-199t110%2C-162.5t162.5%2C-109.5t199%2C-40l81%2C0q27%2C0%2052%2C14t50%2C34.5t51%2C44.5t55.5%2C44.5t63.5%2C34.5t74%2C14t74%2C-14t63.5%2C-34.5t55.5%2C-44.5t51%2C-44.5t50%2C-34.5t52%2C-14l14%2C0q37%2C0%2070%2C0.5t64.5%2C4.5t63.5%2C12t68%2C23q71%2C30%20128.5%2C78.5t98.5%2C110t63.5%2C133.5t22.5%2C149l0%2C257z%22%20fill%3D%22white%22%20/%3E%3C/svg%3E%0A);\x20background-size:\x2080%;\x20background-repeat:no-repeat;\x20background-position:\x20center;\x20border:\x20none;\x20outline:\x20none;\x20transition:\x20transform\x200.125s\x20ease-out\x20}\x20.babylonVRicon:hover\x20{\x20transform:\x20scale(1.05)\x20}\x20.babylonVRicon:active\x20{background-color:\x20rgba(51,51,51,1)\x20}\x20.babylonVRicon:focus\x20{background-color:\x20rgba(51,51,51,1)\x20}.babylonVRicon.vrdisplaypresenting\x20{\x20display:\x20none;\x20}')), document['getElementsByTagName']('head')[0x0]['appendChild'](_0x180c8a), this['moveButtonToBottomRight'](); } this['_btnVR'] && this['_btnVR']['addEventListener']('click', function() { _0x33fa00['isInVRMode'] ? _0x33fa00['exitVR']() : _0x33fa00['enterVR'](); }), window['addEventListener']('resize', this['_onResize']), document['addEventListener']('fullscreenchange', this['_onFullscreenChange'], !0x1), document['addEventListener']('mozfullscreenchange', this['_onFullscreenChange'], !0x1), document['addEventListener']('webkitfullscreenchange', this['_onFullscreenChange'], !0x1), document['addEventListener']('msfullscreenchange', this['_onFullscreenChange'], !0x1), document['onmsfullscreenchange'] = this['_onFullscreenChange'], _0x53d570['createFallbackVRDeviceOrientationFreeCamera'] ? this['displayVRButton']() : this['_scene']['getEngine']()['onVRDisplayChangedObservable']['add'](function(_0x1c3242) { _0x1c3242['vrDisplay'] && _0x33fa00['displayVRButton'](); }), this['_onKeyDown'] = function(_0x114b18) { 0x1b === _0x114b18['keyCode'] && _0x33fa00['isInVRMode'] && _0x33fa00['exitVR'](); } , document['addEventListener']('keydown', this['_onKeyDown']), this['_scene']['onPrePointerObservable']['add'](function() { _0x33fa00['isInVRMode'] && (_0x33fa00['exitVR'](), _0x33fa00['_fullscreenVRpresenting'] && _0x33fa00['_scene']['getEngine']()['exitFullscreen']()); }, _0xee889b['a']['POINTERDOUBLETAP'], !0x1), this['_onVRDisplayChanged'] = function(_0xe28b28) { return _0x33fa00['onVRDisplayChanged'](_0xe28b28); } , this['_onVrDisplayPresentChange'] = function() { return _0x33fa00['onVrDisplayPresentChange'](); } , this['_onVRRequestPresentStart'] = function() { _0x33fa00['_webVRrequesting'] = !0x0, _0x33fa00['updateButtonVisibility'](); } , this['_onVRRequestPresentComplete'] = function() { _0x33fa00['_webVRrequesting'] = !0x1, _0x33fa00['updateButtonVisibility'](); } , _0x35ddd8['getEngine']()['onVRDisplayChangedObservable']['add'](this['_onVRDisplayChanged']), _0x35ddd8['getEngine']()['onVRRequestPresentStart']['add'](this['_onVRRequestPresentStart']), _0x35ddd8['getEngine']()['onVRRequestPresentComplete']['add'](this['_onVRRequestPresentComplete']), window['addEventListener']('vrdisplaypresentchange', this['_onVrDisplayPresentChange']), _0x35ddd8['onDisposeObservable']['add'](function() { _0x33fa00['dispose'](); }), this['_webVRCamera']['onControllerMeshLoadedObservable']['add'](function(_0x5e0b57) { return _0x33fa00['_onDefaultMeshLoaded'](_0x5e0b57); }), this['_scene']['gamepadManager']['onGamepadConnectedObservable']['add'](this['_onNewGamepadConnected']), this['_scene']['gamepadManager']['onGamepadDisconnectedObservable']['add'](this['_onNewGamepadDisconnected']), this['updateButtonVisibility'](), this['_circleEase'] = new _0x4425fc(), this['_circleEase']['setEasingMode'](_0x5f17eb['EASINGMODE_EASEINOUT']), this['webVROptions']['floorMeshes'] && this['enableTeleportation']({ 'floorMeshes': this['webVROptions']['floorMeshes'] }); } return Object['defineProperty'](_0x5f0ef5['prototype'], 'onEnteringVR', { 'get': function() { return this['onEnteringVRObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'onExitingVR', { 'get': function() { return this['onExitingVRObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'onControllerMeshLoaded', { 'get': function() { return this['onControllerMeshLoadedObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'teleportationTarget', { 'get': function() { return this['_teleportationTarget']; }, 'set': function(_0x22c72b) { _0x22c72b && (_0x22c72b['name'] = 'teleportationTarget', this['_isDefaultTeleportationTarget'] = !0x1, this['_teleportationTarget'] = _0x22c72b); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'gazeTrackerMesh', { 'get': function() { return this['_cameraGazer']['_gazeTracker']; }, 'set': function(_0x2d8233) { _0x2d8233 && (this['_cameraGazer']['_gazeTracker'] && this['_cameraGazer']['_gazeTracker']['dispose'](), this['_leftController'] && this['_leftController']['_gazeTracker'] && this['_leftController']['_gazeTracker']['dispose'](), this['_rightController'] && this['_rightController']['_gazeTracker'] && this['_rightController']['_gazeTracker']['dispose'](), this['_cameraGazer']['_gazeTracker'] = _0x2d8233, this['_cameraGazer']['_gazeTracker']['bakeCurrentTransformIntoVertices'](), this['_cameraGazer']['_gazeTracker']['isPickable'] = !0x1, this['_cameraGazer']['_gazeTracker']['isVisible'] = !0x1, this['_cameraGazer']['_gazeTracker']['name'] = 'gazeTracker', this['_leftController'] && (this['_leftController']['_gazeTracker'] = this['_cameraGazer']['_gazeTracker']['clone']('gazeTracker')), this['_rightController'] && (this['_rightController']['_gazeTracker'] = this['_cameraGazer']['_gazeTracker']['clone']('gazeTracker'))); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'leftControllerGazeTrackerMesh', { 'get': function() { return this['_leftController'] ? this['_leftController']['_gazeTracker'] : null; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'rightControllerGazeTrackerMesh', { 'get': function() { return this['_rightController'] ? this['_rightController']['_gazeTracker'] : null; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'displayGaze', { 'get': function() { return this['_displayGaze']; }, 'set': function(_0x41b88b) { this['_displayGaze'] = _0x41b88b, _0x41b88b || (this['_cameraGazer']['_gazeTracker']['isVisible'] = !0x1, this['_leftController'] && (this['_leftController']['_gazeTracker']['isVisible'] = !0x1), this['_rightController'] && (this['_rightController']['_gazeTracker']['isVisible'] = !0x1)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'displayLaserPointer', { 'get': function() { return this['_displayLaserPointer']; }, 'set': function(_0x55b0be) { this['_displayLaserPointer'] = _0x55b0be, _0x55b0be ? (this['_rightController'] && this['_rightController']['_activatePointer'](), this['_leftController'] && this['_leftController']['_activatePointer']()) : (this['_rightController'] && (this['_rightController']['_deactivatePointer'](), this['_rightController']['_gazeTracker']['isVisible'] = !0x1), this['_leftController'] && (this['_leftController']['_deactivatePointer'](), this['_leftController']['_gazeTracker']['isVisible'] = !0x1)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'deviceOrientationCamera', { 'get': function() { return this['_deviceOrientationCamera']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'currentVRCamera', { 'get': function() { return this['_webVRready'] ? this['_webVRCamera'] : this['_scene']['activeCamera']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'webVRCamera', { 'get': function() { return this['_webVRCamera']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], 'vrDeviceOrientationCamera', { 'get': function() { return this['_vrDeviceOrientationCamera']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5f0ef5['prototype'], '_teleportationRequestInitiated', { 'get': function() { return this['_cameraGazer']['_teleportationRequestInitiated'] || null !== this['_leftController'] && this['_leftController']['_teleportationRequestInitiated'] || null !== this['_rightController'] && this['_rightController']['_teleportationRequestInitiated']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5f0ef5['prototype']['_onDefaultMeshLoaded'] = function(_0x742c12) { this['_leftController'] && this['_leftController']['webVRController'] == _0x742c12 && _0x742c12['mesh'] && this['_leftController']['_setLaserPointerParent'](_0x742c12['mesh']), this['_rightController'] && this['_rightController']['webVRController'] == _0x742c12 && _0x742c12['mesh'] && this['_rightController']['_setLaserPointerParent'](_0x742c12['mesh']); try { this['onControllerMeshLoadedObservable']['notifyObservers'](_0x742c12); } catch (_0x1b9066) { _0x3f98cb['a']['Warn']('Error\x20in\x20your\x20custom\x20logic\x20onControllerMeshLoaded:\x20' + _0x1b9066); } } , Object['defineProperty'](_0x5f0ef5['prototype'], 'isInVRMode', { 'get': function() { return this['_webVRpresenting'] || this['_fullscreenVRpresenting']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5f0ef5['prototype']['onVrDisplayPresentChange'] = function() { var _0x5ef1d4 = this['_scene']['getEngine']()['getVRDevice'](); if (_0x5ef1d4) { var _0x308114 = this['_webVRpresenting']; this['_webVRpresenting'] = _0x5ef1d4['isPresenting'], _0x308114 && !this['_webVRpresenting'] && this['exitVR'](); } else _0x3f98cb['a']['Warn']('Detected\x20VRDisplayPresentChange\x20on\x20an\x20unknown\x20VRDisplay.\x20Did\x20you\x20can\x20enterVR\x20on\x20the\x20vrExperienceHelper?'); this['updateButtonVisibility'](); } , _0x5f0ef5['prototype']['onVRDisplayChanged'] = function(_0x378edd) { this['_webVRsupported'] = _0x378edd['vrSupported'], this['_webVRready'] = !!_0x378edd['vrDisplay'], this['_webVRpresenting'] = _0x378edd['vrDisplay'] && _0x378edd['vrDisplay']['isPresenting'], this['updateButtonVisibility'](); } , _0x5f0ef5['prototype']['moveButtonToBottomRight'] = function() { this['_canvas'] && !this['_useCustomVRButton'] && (this['_btnVR']['style']['top'] = this['_canvas']['offsetTop'] + this['_canvas']['offsetHeight'] - 0x46 + 'px', this['_btnVR']['style']['left'] = this['_canvas']['offsetLeft'] + this['_canvas']['offsetWidth'] - 0x64 + 'px'); } , _0x5f0ef5['prototype']['displayVRButton'] = function() { this['_useCustomVRButton'] || this['_btnVRDisplayed'] || (document['body']['appendChild'](this['_btnVR']), this['_btnVRDisplayed'] = !0x0); } , _0x5f0ef5['prototype']['updateButtonVisibility'] = function() { this['_btnVR'] && !this['_useCustomVRButton'] && (this['_btnVR']['className'] = 'babylonVRicon', this['isInVRMode'] ? this['_btnVR']['className'] += '\x20vrdisplaypresenting' : (this['_webVRready'] && (this['_btnVR']['className'] += '\x20vrdisplayready'), this['_webVRsupported'] && (this['_btnVR']['className'] += '\x20vrdisplaysupported'), this['_webVRrequesting'] && (this['_btnVR']['className'] += '\x20vrdisplayrequesting'))); } , _0x5f0ef5['prototype']['enterVR'] = function() { var _0x20fe1a = this; if (this['onEnteringVRObservable']) try { this['onEnteringVRObservable']['notifyObservers'](this); } catch (_0x5c27d7) { _0x3f98cb['a']['Warn']('Error\x20in\x20your\x20custom\x20logic\x20onEnteringVR:\x20' + _0x5c27d7); } if (this['_scene']['activeCamera']) { if (this['_position'] = this['_scene']['activeCamera']['position']['clone'](), this['vrDeviceOrientationCamera'] && (this['vrDeviceOrientationCamera']['rotation'] = _0x47d24f['q']['FromRotationMatrix'](this['_scene']['activeCamera']['getWorldMatrix']()['getRotationMatrix']())['toEulerAngles'](), this['vrDeviceOrientationCamera']['angularSensibility'] = 0x7d0), this['webVRCamera']) { var _0x15c5e8 = this['webVRCamera']['deviceRotationQuaternion']['toEulerAngles']()['y'] , _0x2d0146 = _0x47d24f['q']['FromRotationMatrix'](this['_scene']['activeCamera']['getWorldMatrix']()['getRotationMatrix']())['toEulerAngles']()['y'] - _0x15c5e8 , _0x1c43c4 = this['webVRCamera']['rotationQuaternion']['toEulerAngles']()['y']; this['webVRCamera']['rotationQuaternion'] = _0x47d24f['q']['FromEulerAngles'](0x0, _0x1c43c4 + _0x2d0146, 0x0); } this['_existingCamera'] = this['_scene']['activeCamera'], this['_existingCamera']['angularSensibilityX'] && (this['_cachedAngularSensibility']['angularSensibilityX'] = this['_existingCamera']['angularSensibilityX'], this['_existingCamera']['angularSensibilityX'] = Number['MAX_VALUE']), this['_existingCamera']['angularSensibilityY'] && (this['_cachedAngularSensibility']['angularSensibilityY'] = this['_existingCamera']['angularSensibilityY'], this['_existingCamera']['angularSensibilityY'] = Number['MAX_VALUE']), this['_existingCamera']['angularSensibility'] && (this['_cachedAngularSensibility']['angularSensibility'] = this['_existingCamera']['angularSensibility'], this['_existingCamera']['angularSensibility'] = Number['MAX_VALUE']); } this['_webVRrequesting'] || (this['_webVRready'] ? this['_webVRpresenting'] || (this['_scene']['getEngine']()['onVRRequestPresentComplete']['addOnce'](function(_0x4022fb) { _0x20fe1a['onAfterEnteringVRObservable']['notifyObservers']({ 'success': _0x4022fb }); }), this['_webVRCamera']['position'] = this['_position'], this['_scene']['activeCamera'] = this['_webVRCamera']) : this['_vrDeviceOrientationCamera'] && (this['_vrDeviceOrientationCamera']['position'] = this['_position'], this['_scene']['activeCamera'] && (this['_vrDeviceOrientationCamera']['minZ'] = this['_scene']['activeCamera']['minZ']), this['_scene']['activeCamera'] = this['_vrDeviceOrientationCamera'], this['_scene']['getEngine']()['enterFullscreen'](this['requestPointerLockOnFullScreen']), this['updateButtonVisibility'](), this['_vrDeviceOrientationCamera']['onViewMatrixChangedObservable']['addOnce'](function() { _0x20fe1a['onAfterEnteringVRObservable']['notifyObservers']({ 'success': !0x0 }); })), this['_scene']['activeCamera'] && this['_canvas'] && this['_scene']['activeCamera']['attachControl'](this['_canvas']), this['_interactionsEnabled'] && this['_scene']['registerBeforeRender'](this['beforeRender']), this['_displayLaserPointer'] && [this['_leftController'], this['_rightController']]['forEach'](function(_0x1a88d0) { _0x1a88d0 && _0x1a88d0['_activatePointer'](); }), this['_hasEnteredVR'] = !0x0); } , _0x5f0ef5['prototype']['exitVR'] = function() { if (this['_hasEnteredVR']) { if (this['onExitingVRObservable']) try { this['onExitingVRObservable']['notifyObservers'](this); } catch (_0x156683) { _0x3f98cb['a']['Warn']('Error\x20in\x20your\x20custom\x20logic\x20onExitingVR:\x20' + _0x156683); } this['_webVRpresenting'] && this['_scene']['getEngine']()['disableVR'](), this['_scene']['activeCamera'] && (this['_position'] = this['_scene']['activeCamera']['position']['clone']()), this['vrDeviceOrientationCamera'] && (this['vrDeviceOrientationCamera']['angularSensibility'] = Number['MAX_VALUE']), this['_deviceOrientationCamera'] ? (this['_deviceOrientationCamera']['position'] = this['_position'], this['_scene']['activeCamera'] = this['_deviceOrientationCamera'], this['_canvas'] && this['_scene']['activeCamera']['attachControl'](this['_canvas']), this['_cachedAngularSensibility']['angularSensibilityX'] && (this['_deviceOrientationCamera']['angularSensibilityX'] = this['_cachedAngularSensibility']['angularSensibilityX'], this['_cachedAngularSensibility']['angularSensibilityX'] = null), this['_cachedAngularSensibility']['angularSensibilityY'] && (this['_deviceOrientationCamera']['angularSensibilityY'] = this['_cachedAngularSensibility']['angularSensibilityY'], this['_cachedAngularSensibility']['angularSensibilityY'] = null), this['_cachedAngularSensibility']['angularSensibility'] && (this['_deviceOrientationCamera']['angularSensibility'] = this['_cachedAngularSensibility']['angularSensibility'], this['_cachedAngularSensibility']['angularSensibility'] = null)) : this['_existingCamera'] && (this['_existingCamera']['position'] = this['_position'], this['_scene']['activeCamera'] = this['_existingCamera'], this['_cachedAngularSensibility']['angularSensibilityX'] && (this['_existingCamera']['angularSensibilityX'] = this['_cachedAngularSensibility']['angularSensibilityX'], this['_cachedAngularSensibility']['angularSensibilityX'] = null), this['_cachedAngularSensibility']['angularSensibilityY'] && (this['_existingCamera']['angularSensibilityY'] = this['_cachedAngularSensibility']['angularSensibilityY'], this['_cachedAngularSensibility']['angularSensibilityY'] = null), this['_cachedAngularSensibility']['angularSensibility'] && (this['_existingCamera']['angularSensibility'] = this['_cachedAngularSensibility']['angularSensibility'], this['_cachedAngularSensibility']['angularSensibility'] = null)), this['updateButtonVisibility'](), this['_interactionsEnabled'] && (this['_scene']['unregisterBeforeRender'](this['beforeRender']), this['_cameraGazer']['_gazeTracker']['isVisible'] = !0x1, this['_leftController'] && (this['_leftController']['_gazeTracker']['isVisible'] = !0x1), this['_rightController'] && (this['_rightController']['_gazeTracker']['isVisible'] = !0x1)), this['_scene']['getEngine']()['resize'](), [this['_leftController'], this['_rightController']]['forEach'](function(_0x473a1c) { _0x473a1c && _0x473a1c['_deactivatePointer'](); }), this['_hasEnteredVR'] = !0x1; var _0x50d9e5 = this['_scene']['getEngine'](); _0x50d9e5['_onVrDisplayPresentChange'] && _0x50d9e5['_onVrDisplayPresentChange'](); } } , Object['defineProperty'](_0x5f0ef5['prototype'], 'position', { 'get': function() { return this['_position']; }, 'set': function(_0x33c17a) { this['_position'] = _0x33c17a, this['_scene']['activeCamera'] && (this['_scene']['activeCamera']['position'] = _0x33c17a); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5f0ef5['prototype']['enableInteractions'] = function() { var _0x1eb395 = this; this['_interactionsEnabled'] || (this['_interactionsRequested'] = !0x0, this['_leftController'] && this['_enableInteractionOnController'](this['_leftController']), this['_rightController'] && this['_enableInteractionOnController'](this['_rightController']), this['raySelectionPredicate'] = function(_0x9a7cad) { return _0x9a7cad['isVisible'] && (_0x9a7cad['isPickable'] || _0x9a7cad['name'] === _0x1eb395['_floorMeshName']); } , this['meshSelectionPredicate'] = function() { return !0x0; } , this['_raySelectionPredicate'] = function(_0x39d1e5) { return !!(_0x1eb395['_isTeleportationFloor'](_0x39d1e5) || -0x1 === _0x39d1e5['name']['indexOf']('gazeTracker') && -0x1 === _0x39d1e5['name']['indexOf']('teleportationTarget') && -0x1 === _0x39d1e5['name']['indexOf']('torusTeleportation')) && _0x1eb395['raySelectionPredicate'](_0x39d1e5); } , this['_interactionsEnabled'] = !0x0); } , Object['defineProperty'](_0x5f0ef5['prototype'], '_noControllerIsActive', { 'get': function() { return !(this['_leftController'] && this['_leftController']['_activePointer'] || this['_rightController'] && this['_rightController']['_activePointer']); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5f0ef5['prototype']['_isTeleportationFloor'] = function(_0x3a2026) { for (var _0x2d1de5 = 0x0; _0x2d1de5 < this['_floorMeshesCollection']['length']; _0x2d1de5++) if (this['_floorMeshesCollection'][_0x2d1de5]['id'] === _0x3a2026['id']) return !0x0; return !(!this['_floorMeshName'] || _0x3a2026['name'] !== this['_floorMeshName']); } , _0x5f0ef5['prototype']['addFloorMesh'] = function(_0x3f7511) { this['_floorMeshesCollection'] && (this['_floorMeshesCollection']['indexOf'](_0x3f7511) > -0x1 || this['_floorMeshesCollection']['push'](_0x3f7511)); } , _0x5f0ef5['prototype']['removeFloorMesh'] = function(_0x321c22) { if (this['_floorMeshesCollection']) { var _0x2be947 = this['_floorMeshesCollection']['indexOf'](_0x321c22); -0x1 !== _0x2be947 && this['_floorMeshesCollection']['splice'](_0x2be947, 0x1); } } , _0x5f0ef5['prototype']['enableTeleportation'] = function(_0x10e6ee) { if (void 0x0 === _0x10e6ee && (_0x10e6ee = {}), !this['_teleportationInitialized']) { this['_teleportationRequested'] = !0x0, this['enableInteractions'](), _0x10e6ee['floorMeshName'] && (this['_floorMeshName'] = _0x10e6ee['floorMeshName']), _0x10e6ee['floorMeshes'] && (this['_floorMeshesCollection'] = _0x10e6ee['floorMeshes']), null != this['_leftController'] && this['_enableTeleportationOnController'](this['_leftController']), null != this['_rightController'] && this['_enableTeleportationOnController'](this['_rightController']); var _0x550863 = new _0x347427['a'](); _0x550863['vignetteColor'] = new _0x47d24f['f'](0x0,0x0,0x0,0x0), _0x550863['vignetteEnabled'] = !0x0, this['_postProcessMove'] = new _0x46186b('postProcessMove',0x1,this['_webVRCamera'],void 0x0,void 0x0,void 0x0,void 0x0,_0x550863), this['_webVRCamera']['detachPostProcess'](this['_postProcessMove']), this['_teleportationInitialized'] = !0x0, this['_isDefaultTeleportationTarget'] && (this['_createTeleportationCircles'](), this['_teleportationTarget']['scaling']['scaleInPlace'](this['_webVRCamera']['deviceScaleFactor'])); } } , _0x5f0ef5['prototype']['_enableInteractionOnController'] = function(_0x42bcbe) { var _0x4bff6d = this; _0x42bcbe['webVRController']['mesh'] && (_0x42bcbe['_interactionsEnabled'] = !0x0, this['isInVRMode'] && this['_displayLaserPointer'] && _0x42bcbe['_activatePointer'](), this['webVROptions']['laserToggle'] && _0x42bcbe['webVRController']['onMainButtonStateChangedObservable']['add'](function(_0x42b31b) { _0x4bff6d['_displayLaserPointer'] && 0x1 === _0x42b31b['value'] && (_0x42bcbe['_activePointer'] ? _0x42bcbe['_deactivatePointer']() : _0x42bcbe['_activatePointer'](), _0x4bff6d['displayGaze'] && (_0x42bcbe['_gazeTracker']['isVisible'] = _0x42bcbe['_activePointer'])); }), _0x42bcbe['webVRController']['onTriggerStateChangedObservable']['add'](function(_0x3ef20f) { var _0xe5df9a = _0x42bcbe; _0x4bff6d['_noControllerIsActive'] && (_0xe5df9a = _0x4bff6d['_cameraGazer']), _0xe5df9a['_pointerDownOnMeshAsked'] ? _0x3ef20f['value'] < _0x4bff6d['_padSensibilityDown'] && _0xe5df9a['_selectionPointerUp']() : _0x3ef20f['value'] > _0x4bff6d['_padSensibilityUp'] && _0xe5df9a['_selectionPointerDown'](); })); } , _0x5f0ef5['prototype']['_checkTeleportWithRay'] = function(_0x17954a, _0x315f45) { this['_teleportationRequestInitiated'] && !_0x315f45['_teleportationRequestInitiated'] || (_0x315f45['_teleportationRequestInitiated'] ? Math['sqrt'](_0x17954a['y'] * _0x17954a['y'] + _0x17954a['x'] * _0x17954a['x']) < this['_padSensibilityDown'] && (this['_teleportActive'] && this['teleportCamera'](this['_haloCenter']), _0x315f45['_teleportationRequestInitiated'] = !0x1) : _0x17954a['y'] < -this['_padSensibilityUp'] && _0x315f45['_dpadPressed'] && (_0x315f45['_activatePointer'](), _0x315f45['_teleportationRequestInitiated'] = !0x0)); } , _0x5f0ef5['prototype']['_checkRotate'] = function(_0x4c4ae9, _0x448ab7) { _0x448ab7['_teleportationRequestInitiated'] || (_0x448ab7['_rotationLeftAsked'] ? _0x4c4ae9['x'] > -this['_padSensibilityDown'] && (_0x448ab7['_rotationLeftAsked'] = !0x1) : _0x4c4ae9['x'] < -this['_padSensibilityUp'] && _0x448ab7['_dpadPressed'] && (_0x448ab7['_rotationLeftAsked'] = !0x0, this['_rotationAllowed'] && this['_rotateCamera'](!0x1)), _0x448ab7['_rotationRightAsked'] ? _0x4c4ae9['x'] < this['_padSensibilityDown'] && (_0x448ab7['_rotationRightAsked'] = !0x1) : _0x4c4ae9['x'] > this['_padSensibilityUp'] && _0x448ab7['_dpadPressed'] && (_0x448ab7['_rotationRightAsked'] = !0x0, this['_rotationAllowed'] && this['_rotateCamera'](!0x0))); } , _0x5f0ef5['prototype']['_checkTeleportBackwards'] = function(_0xf521ce, _0xf1fac2) { if (!_0xf1fac2['_teleportationRequestInitiated']) if (_0xf521ce['y'] > this['_padSensibilityUp'] && _0xf1fac2['_dpadPressed']) { if (!_0xf1fac2['_teleportationBackRequestInitiated']) { if (!this['currentVRCamera']) return; var _0x4eca3a = _0x47d24f['q']['FromRotationMatrix'](this['currentVRCamera']['getWorldMatrix']()['getRotationMatrix']()) , _0x349a9c = this['currentVRCamera']['position']; this['currentVRCamera']['devicePosition'] && this['currentVRCamera']['deviceRotationQuaternion'] && (_0x4eca3a = this['currentVRCamera']['deviceRotationQuaternion'], _0x349a9c = this['currentVRCamera']['devicePosition']), _0x4eca3a['toEulerAnglesToRef'](this['_workingVector']), this['_workingVector']['z'] = 0x0, this['_workingVector']['x'] = 0x0, _0x47d24f['q']['RotationYawPitchRollToRef'](this['_workingVector']['y'], this['_workingVector']['x'], this['_workingVector']['z'], this['_workingQuaternion']), this['_workingQuaternion']['toRotationMatrix'](this['_workingMatrix']), _0x47d24f['x']['TransformCoordinatesToRef'](this['_teleportBackwardsVector'], this['_workingMatrix'], this['_workingVector']); var _0x564f84 = new _0x19e5af['a'](_0x349a9c,this['_workingVector']) , _0x1f3289 = this['_scene']['pickWithRay'](_0x564f84, this['_raySelectionPredicate']); _0x1f3289 && _0x1f3289['pickedPoint'] && _0x1f3289['pickedMesh'] && this['_isTeleportationFloor'](_0x1f3289['pickedMesh']) && _0x1f3289['distance'] < 0x5 && this['teleportCamera'](_0x1f3289['pickedPoint']), _0xf1fac2['_teleportationBackRequestInitiated'] = !0x0; } } else _0xf1fac2['_teleportationBackRequestInitiated'] = !0x1; } , _0x5f0ef5['prototype']['_enableTeleportationOnController'] = function(_0x23a6a8) { var _0x3e16da = this; _0x23a6a8['webVRController']['mesh'] && (_0x23a6a8['_interactionsEnabled'] || this['_enableInteractionOnController'](_0x23a6a8), _0x23a6a8['_interactionsEnabled'] = !0x0, _0x23a6a8['_teleportationEnabled'] = !0x0, _0x23a6a8['webVRController']['controllerType'] === _0x5496d4['VIVE'] && (_0x23a6a8['_dpadPressed'] = !0x1, _0x23a6a8['webVRController']['onPadStateChangedObservable']['add'](function(_0x352f96) { _0x23a6a8['_dpadPressed'] = _0x352f96['pressed'], _0x23a6a8['_dpadPressed'] || (_0x23a6a8['_rotationLeftAsked'] = !0x1, _0x23a6a8['_rotationRightAsked'] = !0x1, _0x23a6a8['_teleportationBackRequestInitiated'] = !0x1); })), _0x23a6a8['webVRController']['onPadValuesChangedObservable']['add'](function(_0x177821) { _0x3e16da['teleportationEnabled'] && (_0x3e16da['_checkTeleportBackwards'](_0x177821, _0x23a6a8), _0x3e16da['_checkTeleportWithRay'](_0x177821, _0x23a6a8)), _0x3e16da['_checkRotate'](_0x177821, _0x23a6a8); })); } , _0x5f0ef5['prototype']['_createTeleportationCircles'] = function() { this['_teleportationTarget'] = _0xb4719b['a']['CreateGround']('teleportationTarget', 0x2, 0x2, 0x2, this['_scene']), this['_teleportationTarget']['isPickable'] = !0x1; var _0x40efe0 = new _0x527e2f('DynamicTexture',0x200,this['_scene'],!0x0); _0x40efe0['hasAlpha'] = !0x0; var _0x20b684 = _0x40efe0['getContext'](); _0x20b684['beginPath'](), _0x20b684['arc'](0x100, 0x100, 0xc8, 0x0, 0x2 * Math['PI'], !0x1), _0x20b684['fillStyle'] = this['_teleportationFillColor'], _0x20b684['fill'](), _0x20b684['lineWidth'] = 0xa, _0x20b684['strokeStyle'] = this['_teleportationBorderColor'], _0x20b684['stroke'](), _0x20b684['closePath'](), _0x40efe0['update'](); var _0x1e348c = new _0xe7dd57['a']('TextPlaneMaterial',this['_scene']); _0x1e348c['diffuseTexture'] = _0x40efe0, this['_teleportationTarget']['material'] = _0x1e348c; var _0x41d959 = _0xb4719b['a']['CreateTorus']('torusTeleportation', 0.75, 0.1, 0x19, this['_scene'], !0x1); _0x41d959['isPickable'] = !0x1, _0x41d959['parent'] = this['_teleportationTarget']; var _0x3675b1 = new _0x4452f5('animationInnerCircle','position.y',0x1e,_0x4452f5['ANIMATIONTYPE_FLOAT'],_0x4452f5['ANIMATIONLOOPMODE_CYCLE']) , _0x8febd6 = []; _0x8febd6['push']({ 'frame': 0x0, 'value': 0x0 }), _0x8febd6['push']({ 'frame': 0x1e, 'value': 0.4 }), _0x8febd6['push']({ 'frame': 0x3c, 'value': 0x0 }), _0x3675b1['setKeys'](_0x8febd6); var _0x347ad1 = new _0x1f2be0(); _0x347ad1['setEasingMode'](_0x5f17eb['EASINGMODE_EASEINOUT']), _0x3675b1['setEasingFunction'](_0x347ad1), _0x41d959['animations'] = [], _0x41d959['animations']['push'](_0x3675b1), this['_scene']['beginAnimation'](_0x41d959, 0x0, 0x3c, !0x0), this['_hideTeleportationTarget'](); } , _0x5f0ef5['prototype']['_displayTeleportationTarget'] = function() { this['_teleportActive'] = !0x0, this['_teleportationInitialized'] && (this['_teleportationTarget']['isVisible'] = !0x0, this['_isDefaultTeleportationTarget'] && (this['_teleportationTarget']['getChildren']()[0x0]['isVisible'] = !0x0)); } , _0x5f0ef5['prototype']['_hideTeleportationTarget'] = function() { this['_teleportActive'] = !0x1, this['_teleportationInitialized'] && (this['_teleportationTarget']['isVisible'] = !0x1, this['_isDefaultTeleportationTarget'] && (this['_teleportationTarget']['getChildren']()[0x0]['isVisible'] = !0x1)); } , _0x5f0ef5['prototype']['_rotateCamera'] = function(_0x1c68c2) { var _0x1027de = this; if (this['currentVRCamera']instanceof _0xebce26) { _0x1c68c2 ? this['_rotationAngle']++ : this['_rotationAngle']--, this['currentVRCamera']['animations'] = []; var _0x5cc3e9 = _0x47d24f['q']['FromRotationMatrix'](_0x47d24f['j']['RotationY'](Math['PI'] / 0x4 * this['_rotationAngle'])) , _0x1ebb9b = new _0x4452f5('animationRotation','rotationQuaternion',0x5a,_0x4452f5['ANIMATIONTYPE_QUATERNION'],_0x4452f5['ANIMATIONLOOPMODE_CONSTANT']) , _0x5bde23 = []; _0x5bde23['push']({ 'frame': 0x0, 'value': this['currentVRCamera']['rotationQuaternion'] }), _0x5bde23['push']({ 'frame': 0x6, 'value': _0x5cc3e9 }), _0x1ebb9b['setKeys'](_0x5bde23), _0x1ebb9b['setEasingFunction'](this['_circleEase']), this['currentVRCamera']['animations']['push'](_0x1ebb9b), this['_postProcessMove']['animations'] = []; var _0x3eeb00 = new _0x4452f5('animationPP','vignetteWeight',0x5a,_0x4452f5['ANIMATIONTYPE_FLOAT'],_0x4452f5['ANIMATIONLOOPMODE_CONSTANT']) , _0x3408e5 = []; _0x3408e5['push']({ 'frame': 0x0, 'value': 0x0 }), _0x3408e5['push']({ 'frame': 0x3, 'value': 0x4 }), _0x3408e5['push']({ 'frame': 0x6, 'value': 0x0 }), _0x3eeb00['setKeys'](_0x3408e5), _0x3eeb00['setEasingFunction'](this['_circleEase']), this['_postProcessMove']['animations']['push'](_0x3eeb00); var _0x41820a = new _0x4452f5('animationPP2','vignetteStretch',0x5a,_0x4452f5['ANIMATIONTYPE_FLOAT'],_0x4452f5['ANIMATIONLOOPMODE_CONSTANT']) , _0x5a6919 = []; _0x5a6919['push']({ 'frame': 0x0, 'value': 0x0 }), _0x5a6919['push']({ 'frame': 0x3, 'value': 0xa }), _0x5a6919['push']({ 'frame': 0x6, 'value': 0x0 }), _0x41820a['setKeys'](_0x5a6919), _0x41820a['setEasingFunction'](this['_circleEase']), this['_postProcessMove']['animations']['push'](_0x41820a), this['_postProcessMove']['imageProcessingConfiguration']['vignetteWeight'] = 0x0, this['_postProcessMove']['imageProcessingConfiguration']['vignetteStretch'] = 0x0, this['_postProcessMove']['samples'] = 0x4, this['_webVRCamera']['attachPostProcess'](this['_postProcessMove']), this['_scene']['beginAnimation'](this['_postProcessMove'], 0x0, 0x6, !0x1, 0x1, function() { _0x1027de['_webVRCamera']['detachPostProcess'](_0x1027de['_postProcessMove']); }), this['_scene']['beginAnimation'](this['currentVRCamera'], 0x0, 0x6, !0x1, 0x1); } } , _0x5f0ef5['prototype']['_moveTeleportationSelectorTo'] = function(_0x127e05, _0x43e705, _0x24effc) { if (_0x127e05['pickedPoint']) { _0x43e705['_teleportationRequestInitiated'] && (this['_displayTeleportationTarget'](), this['_haloCenter']['copyFrom'](_0x127e05['pickedPoint']), this['_teleportationTarget']['position']['copyFrom'](_0x127e05['pickedPoint'])); var _0x2c8d22 = this['_convertNormalToDirectionOfRay'](_0x127e05['getNormal'](!0x0, !0x1), _0x24effc); if (_0x2c8d22) { var _0x4ac80 = _0x47d24f['x']['Cross'](_0x47d24f['c']['Y'], _0x2c8d22) , _0x12d2c6 = _0x47d24f['x']['Cross'](_0x2c8d22, _0x4ac80); _0x47d24f['x']['RotationFromAxisToRef'](_0x12d2c6, _0x2c8d22, _0x4ac80, this['_teleportationTarget']['rotation']); } this['_teleportationTarget']['position']['y'] += 0.1; } } , _0x5f0ef5['prototype']['teleportCamera'] = function(_0xcae81b) { var _0xe7a926 = this; if (this['currentVRCamera']instanceof _0xebce26) { this['webVRCamera']['leftCamera'] ? (this['_workingVector']['copyFrom'](this['webVRCamera']['leftCamera']['globalPosition']), this['_workingVector']['subtractInPlace'](this['webVRCamera']['position']), _0xcae81b['subtractToRef'](this['_workingVector'], this['_workingVector'])) : this['_workingVector']['copyFrom'](_0xcae81b), this['isInVRMode'] ? this['_workingVector']['y'] += this['webVRCamera']['deviceDistanceToRoomGround']() * this['_webVRCamera']['deviceScaleFactor'] : this['_workingVector']['y'] += this['_defaultHeight'], this['onBeforeCameraTeleport']['notifyObservers'](this['_workingVector']), this['currentVRCamera']['animations'] = []; var _0x59e1e1 = new _0x4452f5('animationCameraTeleportation','position',0x5a,_0x4452f5['ANIMATIONTYPE_VECTOR3'],_0x4452f5['ANIMATIONLOOPMODE_CONSTANT']) , _0x49f602 = [{ 'frame': 0x0, 'value': this['currentVRCamera']['position'] }, { 'frame': 0xb, 'value': this['_workingVector'] }]; _0x59e1e1['setKeys'](_0x49f602), _0x59e1e1['setEasingFunction'](this['_circleEase']), this['currentVRCamera']['animations']['push'](_0x59e1e1), this['_postProcessMove']['animations'] = []; var _0x3e8245 = new _0x4452f5('animationPP','vignetteWeight',0x5a,_0x4452f5['ANIMATIONTYPE_FLOAT'],_0x4452f5['ANIMATIONLOOPMODE_CONSTANT']) , _0x56b57a = []; _0x56b57a['push']({ 'frame': 0x0, 'value': 0x0 }), _0x56b57a['push']({ 'frame': 0x5, 'value': 0x8 }), _0x56b57a['push']({ 'frame': 0xb, 'value': 0x0 }), _0x3e8245['setKeys'](_0x56b57a), this['_postProcessMove']['animations']['push'](_0x3e8245); var _0x48b367 = new _0x4452f5('animationPP2','vignetteStretch',0x5a,_0x4452f5['ANIMATIONTYPE_FLOAT'],_0x4452f5['ANIMATIONLOOPMODE_CONSTANT']) , _0x200c81 = []; _0x200c81['push']({ 'frame': 0x0, 'value': 0x0 }), _0x200c81['push']({ 'frame': 0x5, 'value': 0xa }), _0x200c81['push']({ 'frame': 0xb, 'value': 0x0 }), _0x48b367['setKeys'](_0x200c81), this['_postProcessMove']['animations']['push'](_0x48b367), this['_postProcessMove']['imageProcessingConfiguration']['vignetteWeight'] = 0x0, this['_postProcessMove']['imageProcessingConfiguration']['vignetteStretch'] = 0x0, this['_webVRCamera']['attachPostProcess'](this['_postProcessMove']), this['_scene']['beginAnimation'](this['_postProcessMove'], 0x0, 0xb, !0x1, 0x1, function() { _0xe7a926['_webVRCamera']['detachPostProcess'](_0xe7a926['_postProcessMove']); }), this['_scene']['beginAnimation'](this['currentVRCamera'], 0x0, 0xb, !0x1, 0x1, function() { _0xe7a926['onAfterCameraTeleport']['notifyObservers'](_0xe7a926['_workingVector']); }), this['_hideTeleportationTarget'](); } } , _0x5f0ef5['prototype']['_convertNormalToDirectionOfRay'] = function(_0xb78e83, _0x27ea14) { _0xb78e83 && (Math['acos'](_0x47d24f['x']['Dot'](_0xb78e83, _0x27ea14['direction'])) < Math['PI'] / 0x2 && _0xb78e83['scaleInPlace'](-0x1)); return _0xb78e83; } , _0x5f0ef5['prototype']['_castRayAndSelectObject'] = function(_0x8533a2) { if (this['currentVRCamera']instanceof _0xebce26) { var _0x3d988b = _0x8533a2['_getForwardRay'](this['_rayLength']) , _0xba9eb4 = this['_scene']['pickWithRay'](_0x3d988b, this['_raySelectionPredicate']); if (_0xba9eb4 && (_0x8533a2['_laserPointer'] && (_0xba9eb4['originMesh'] = _0x8533a2['_laserPointer']['parent']), this['_scene']['simulatePointerMove'](_0xba9eb4, { 'pointerId': _0x8533a2['_id'] })), _0x8533a2['_currentHit'] = _0xba9eb4, _0xba9eb4 && _0xba9eb4['pickedPoint']) { if (this['_displayGaze']) { var _0x28a4f2 = 0x1; _0x8533a2['_gazeTracker']['isVisible'] = !0x0, _0x8533a2['_isActionableMesh'] && (_0x28a4f2 = 0x3), this['updateGazeTrackerScale'] && (_0x8533a2['_gazeTracker']['scaling']['x'] = _0xba9eb4['distance'] * _0x28a4f2, _0x8533a2['_gazeTracker']['scaling']['y'] = _0xba9eb4['distance'] * _0x28a4f2, _0x8533a2['_gazeTracker']['scaling']['z'] = _0xba9eb4['distance'] * _0x28a4f2); var _0x34cd6f = this['_convertNormalToDirectionOfRay'](_0xba9eb4['getNormal'](), _0x3d988b); if (_0x34cd6f) { var _0x146c1e = _0x47d24f['x']['Cross'](_0x47d24f['c']['Y'], _0x34cd6f) , _0x44e231 = _0x47d24f['x']['Cross'](_0x34cd6f, _0x146c1e); _0x47d24f['x']['RotationFromAxisToRef'](_0x44e231, _0x34cd6f, _0x146c1e, _0x8533a2['_gazeTracker']['rotation']); } _0x8533a2['_gazeTracker']['position']['copyFrom'](_0xba9eb4['pickedPoint']), _0x8533a2['_gazeTracker']['position']['x'] < 0x0 ? _0x8533a2['_gazeTracker']['position']['x'] += 0.002 : _0x8533a2['_gazeTracker']['position']['x'] -= 0.002, _0x8533a2['_gazeTracker']['position']['y'] < 0x0 ? _0x8533a2['_gazeTracker']['position']['y'] += 0.002 : _0x8533a2['_gazeTracker']['position']['y'] -= 0.002, _0x8533a2['_gazeTracker']['position']['z'] < 0x0 ? _0x8533a2['_gazeTracker']['position']['z'] += 0.002 : _0x8533a2['_gazeTracker']['position']['z'] -= 0.002; } _0x8533a2['_updatePointerDistance'](_0xba9eb4['distance']); } else _0x8533a2['_updatePointerDistance'](), _0x8533a2['_gazeTracker']['isVisible'] = !0x1; if (_0xba9eb4 && _0xba9eb4['pickedMesh']) { if (this['_teleportationInitialized'] && this['_isTeleportationFloor'](_0xba9eb4['pickedMesh']) && _0xba9eb4['pickedPoint']) return _0x8533a2['_currentMeshSelected'] && !this['_isTeleportationFloor'](_0x8533a2['_currentMeshSelected']) && this['_notifySelectedMeshUnselected'](_0x8533a2['_currentMeshSelected']), _0x8533a2['_currentMeshSelected'] = null, void (_0x8533a2['_teleportationRequestInitiated'] && this['_moveTeleportationSelectorTo'](_0xba9eb4, _0x8533a2, _0x3d988b)); if (_0xba9eb4['pickedMesh'] !== _0x8533a2['_currentMeshSelected']) if (this['meshSelectionPredicate'](_0xba9eb4['pickedMesh'])) { this['onNewMeshPicked']['notifyObservers'](_0xba9eb4), _0x8533a2['_currentMeshSelected'] = _0xba9eb4['pickedMesh'], _0xba9eb4['pickedMesh']['isPickable'] && _0xba9eb4['pickedMesh']['actionManager'] ? (this['changeGazeColor'](new _0x47d24f['e'](0x0,0x0,0x1)), this['changeLaserColor'](new _0x47d24f['e'](0.2,0.2,0x1)), _0x8533a2['_isActionableMesh'] = !0x0) : (this['changeGazeColor'](new _0x47d24f['e'](0.7,0.7,0.7)), this['changeLaserColor'](new _0x47d24f['e'](0.7,0.7,0.7)), _0x8533a2['_isActionableMesh'] = !0x1); try { this['onNewMeshSelected']['notifyObservers'](_0xba9eb4['pickedMesh']); } catch (_0x4aaf07) { _0x3f98cb['a']['Warn']('Error\x20in\x20your\x20custom\x20logic\x20onNewMeshSelected:\x20' + _0x4aaf07); } } else this['_notifySelectedMeshUnselected'](_0x8533a2['_currentMeshSelected']), _0x8533a2['_currentMeshSelected'] = null, this['changeGazeColor'](new _0x47d24f['e'](0.7,0.7,0.7)), this['changeLaserColor'](new _0x47d24f['e'](0.7,0.7,0.7)); } else this['_notifySelectedMeshUnselected'](_0x8533a2['_currentMeshSelected']), _0x8533a2['_currentMeshSelected'] = null, this['changeGazeColor'](new _0x47d24f['e'](0.7,0.7,0.7)), this['changeLaserColor'](new _0x47d24f['e'](0.7,0.7,0.7)); } } , _0x5f0ef5['prototype']['_notifySelectedMeshUnselected'] = function(_0x153c2a) { _0x153c2a && this['onSelectedMeshUnselected']['notifyObservers'](_0x153c2a); } , _0x5f0ef5['prototype']['changeLaserColor'] = function(_0x8f0761) { this['_leftController'] && this['_leftController']['_setLaserPointerColor'](_0x8f0761), this['_rightController'] && this['_rightController']['_setLaserPointerColor'](_0x8f0761); } , _0x5f0ef5['prototype']['changeGazeColor'] = function(_0x4757db) { this['updateGazeTrackerColor'] && this['_cameraGazer']['_gazeTracker']['material'] && (this['_cameraGazer']['_gazeTracker']['material']['emissiveColor'] = _0x4757db, this['_leftController'] && (this['_leftController']['_gazeTracker']['material']['emissiveColor'] = _0x4757db), this['_rightController'] && (this['_rightController']['_gazeTracker']['material']['emissiveColor'] = _0x4757db)); } , _0x5f0ef5['prototype']['dispose'] = function() { this['isInVRMode'] && this['exitVR'](), this['_postProcessMove'] && this['_postProcessMove']['dispose'](), this['_webVRCamera'] && this['_webVRCamera']['dispose'](), this['_vrDeviceOrientationCamera'] && this['_vrDeviceOrientationCamera']['dispose'](), !this['_useCustomVRButton'] && this['_btnVR']['parentNode'] && document['body']['removeChild'](this['_btnVR']), this['_deviceOrientationCamera'] && this['_scene']['activeCamera'] != this['_deviceOrientationCamera'] && this['_deviceOrientationCamera']['dispose'](), this['_cameraGazer'] && this['_cameraGazer']['dispose'](), this['_leftController'] && this['_leftController']['dispose'](), this['_rightController'] && this['_rightController']['dispose'](), this['_teleportationTarget'] && this['_teleportationTarget']['dispose'](), this['_floorMeshesCollection'] = [], document['removeEventListener']('keydown', this['_onKeyDown']), window['removeEventListener']('vrdisplaypresentchange', this['_onVrDisplayPresentChange']), window['removeEventListener']('resize', this['_onResize']), document['removeEventListener']('fullscreenchange', this['_onFullscreenChange']), document['removeEventListener']('mozfullscreenchange', this['_onFullscreenChange']), document['removeEventListener']('webkitfullscreenchange', this['_onFullscreenChange']), document['removeEventListener']('msfullscreenchange', this['_onFullscreenChange']), document['onmsfullscreenchange'] = null, this['_scene']['getEngine']()['onVRDisplayChangedObservable']['removeCallback'](this['_onVRDisplayChanged']), this['_scene']['getEngine']()['onVRRequestPresentStart']['removeCallback'](this['_onVRRequestPresentStart']), this['_scene']['getEngine']()['onVRRequestPresentComplete']['removeCallback'](this['_onVRRequestPresentComplete']), window['removeEventListener']('vrdisplaypresentchange', this['_onVrDisplayPresentChange']), this['_scene']['gamepadManager']['onGamepadConnectedObservable']['removeCallback'](this['_onNewGamepadConnected']), this['_scene']['gamepadManager']['onGamepadDisconnectedObservable']['removeCallback'](this['_onNewGamepadDisconnected']), this['_scene']['unregisterBeforeRender'](this['beforeRender']); } , _0x5f0ef5['prototype']['getClassName'] = function() { return 'VRExperienceHelper'; } , _0x5f0ef5; }(), _0x4ba466 = function(_0x177a52) { function _0x1f742a(_0x15d968, _0xedb5bf) { var _0x182fd3 = _0x177a52['call'](this, _0x15d968, _0x47d24f['x']['Zero'](), _0xedb5bf) || this; return _0x182fd3['minZ'] = 0x0, _0x182fd3['rotationQuaternion'] = new _0x47d24f['q'](), _0x182fd3['cameraRigMode'] = _0x4504cf['a']['RIG_MODE_CUSTOM'], _0x182fd3['updateUpVectorFromRotation'] = !0x0, _0x182fd3['_updateNumberOfRigCameras'](0x1), _0x182fd3; } return _0x420e5b['d'](_0x1f742a, _0x177a52), _0x1f742a['prototype']['_updateNumberOfRigCameras'] = function(_0x3661ee) { for (void 0x0 === _0x3661ee && (_0x3661ee = 0x1); this['rigCameras']['length'] < _0x3661ee; ) { var _0x33531b = new _0x4c37b8('view:\x20' + this['rigCameras']['length'],_0x47d24f['x']['Zero'](),this['getScene']()); _0x33531b['minZ'] = 0x0, _0x33531b['parent'] = this, _0x33531b['rotationQuaternion'] = new _0x47d24f['q'](), _0x33531b['updateUpVectorFromRotation'] = !0x0, this['rigCameras']['push'](_0x33531b); } for (; this['rigCameras']['length'] > _0x3661ee; ) { var _0x563f0d = this['rigCameras']['pop'](); _0x563f0d && _0x563f0d['dispose'](); } } , _0x1f742a['prototype']['_updateForDualEyeDebugging'] = function(_0xcdba4c) { void 0x0 === _0xcdba4c && (_0xcdba4c = 0.01), this['_updateNumberOfRigCameras'](0x2), this['rigCameras'][0x0]['viewport'] = new _0x47d24f['z'](0x0,0x0,0.5,0x1), this['rigCameras'][0x0]['position']['x'] = -_0xcdba4c / 0x2, this['rigCameras'][0x0]['outputRenderTarget'] = null, this['rigCameras'][0x1]['viewport'] = new _0x47d24f['z'](0.5,0x0,0.5,0x1), this['rigCameras'][0x1]['position']['x'] = _0xcdba4c / 0x2, this['rigCameras'][0x1]['outputRenderTarget'] = null; } , _0x1f742a['prototype']['updateFromXRSessionManager'] = function(_0x5821d9) { var _0x3963f4 = this; if (!_0x5821d9['_currentXRFrame'] || !_0x5821d9['_currentXRFrame']['getDevicePose']) return !0x1; var _0x127d3b = _0x5821d9['_currentXRFrame']['getDevicePose'](_0x5821d9['_frameOfReference']); return !(!_0x127d3b || !_0x127d3b['poseModelMatrix']) && (_0x47d24f['j']['FromFloat32ArrayToRefScaled'](_0x127d3b['poseModelMatrix'], 0x0, 0x1, _0x1f742a['_TmpMatrix']), this['_scene']['useRightHandedSystem'] || _0x1f742a['_TmpMatrix']['toggleModelMatrixHandInPlace'](), _0x1f742a['_TmpMatrix']['getTranslationToRef'](this['position']), _0x1f742a['_TmpMatrix']['getRotationMatrixToRef'](_0x1f742a['_TmpMatrix']), _0x47d24f['q']['FromRotationMatrixToRef'](_0x1f742a['_TmpMatrix'], this['rotationQuaternion']), this['computeWorldMatrix'](), this['_updateNumberOfRigCameras'](_0x5821d9['_currentXRFrame']['views']['length']), _0x5821d9['_currentXRFrame']['views']['forEach'](function(_0x29769e, _0x45f68d) { _0x47d24f['j']['FromFloat32ArrayToRefScaled'](_0x127d3b['getViewMatrix'](_0x29769e), 0x0, 0x1, _0x3963f4['rigCameras'][_0x45f68d]['_computedViewMatrix']), _0x47d24f['j']['FromFloat32ArrayToRefScaled'](_0x29769e['projectionMatrix'], 0x0, 0x1, _0x3963f4['rigCameras'][_0x45f68d]['_projectionMatrix']), _0x3963f4['_scene']['useRightHandedSystem'] || (_0x3963f4['rigCameras'][_0x45f68d]['_computedViewMatrix']['toggleModelMatrixHandInPlace'](), _0x3963f4['rigCameras'][_0x45f68d]['_projectionMatrix']['toggleProjectionMatrixHandInPlace']()); var _0xa2ac25 = _0x5821d9['_xrSession']['baseLayer']['getViewport'](_0x29769e) , _0xeb2790 = _0x5821d9['_xrSession']['baseLayer']['framebufferWidth'] , _0x3f36ef = _0x5821d9['_xrSession']['baseLayer']['framebufferHeight']; _0x3963f4['rigCameras'][_0x45f68d]['viewport']['width'] = _0xa2ac25['width'] / _0xeb2790, _0x3963f4['rigCameras'][_0x45f68d]['viewport']['height'] = _0xa2ac25['height'] / _0x3f36ef, _0x3963f4['rigCameras'][_0x45f68d]['viewport']['x'] = _0xa2ac25['x'] / _0xeb2790, _0x3963f4['rigCameras'][_0x45f68d]['viewport']['y'] = _0xa2ac25['y'] / _0x3f36ef, _0x3963f4['rigCameras'][_0x45f68d]['outputRenderTarget'] = _0x5821d9['_sessionRenderTargetTexture']; }), !0x0); } , _0x1f742a['_TmpMatrix'] = new _0x47d24f['j'](), _0x1f742a; }(_0xebce26), _0x4cbfaa = function() { function _0x58f09d(_0x40e9fa) { this['scene'] = _0x40e9fa, this['onXRFrameObservable'] = new _0x2dbec2['c'](), this['onXRSessionEnded'] = new _0x2dbec2['c'](), this['_sessionRenderTargetTexture'] = null, this['_tmpMatrix'] = new _0x47d24f['j'](); } return _0x58f09d['prototype']['initializeAsync'] = function() { var _0xcfc3a = this; return _0x3f98cb['a']['Warn']('The\x20WebXR\x20APIs\x20are\x20still\x20under\x20development\x20and\x20are\x20subject\x20to\x20change\x20in\x20the\x20future.'), this['_xrNavigator'] = navigator, this['_xrNavigator']['xr'] ? this['_xrNavigator']['xr']['requestDevice']()['then'](function(_0x54803c) { return _0xcfc3a['_xrDevice'] = _0x54803c, _0xcfc3a['scene']['getEngine']()['_gl']['setCompatibleXRDevice'](_0xcfc3a['_xrDevice']); }) : Promise['reject']('webXR\x20not\x20supported\x20by\x20this\x20browser'); } , _0x58f09d['prototype']['enterXRAsync'] = function(_0x4720f9, _0x377ee8) { var _0x4a5141 = this; return this['_xrDevice']['requestSession'](_0x4720f9)['then'](function(_0x232308) { return _0x4a5141['_xrSession'] = _0x232308, _0x4a5141['_xrSession']['addEventListener']('end', function() { _0x4a5141['_sessionRenderTargetTexture'] = null, _0x4a5141['scene']['getEngine']()['restoreDefaultFramebuffer'](), _0x4a5141['scene']['getEngine']()['customAnimationFrameRequester'] = null, _0x4a5141['onXRSessionEnded']['notifyObservers'](null), _0x4a5141['scene']['getEngine']()['_renderLoop'](); }, { 'once': !0x0 }), _0x4a5141['_xrSession']['baseLayer'] = new XRWebGLLayer(_0x4a5141['_xrSession'],_0x4a5141['scene']['getEngine']()['_gl']), _0x4a5141['_xrSession']['requestFrameOfReference'](_0x377ee8); })['then'](function(_0x232c34) { _0x4a5141['_frameOfReference'] = _0x232c34, _0x4a5141['scene']['getEngine']()['customAnimationFrameRequester'] = { 'requestAnimationFrame': _0x4a5141['_xrSession']['requestAnimationFrame']['bind'](_0x4a5141['_xrSession']), 'renderFunction': function(_0x481616, _0x24c504) { _0x4a5141['_currentXRFrame'] = _0x24c504, _0x4a5141['onXRFrameObservable']['notifyObservers'](null), _0x4a5141['scene']['getEngine']()['_renderLoop'](); } }, _0x4a5141['_sessionRenderTargetTexture'] = _0x58f09d['_CreateRenderTargetTextureFromSession'](_0x4a5141['_xrSession'], _0x4a5141['scene']), window['cancelAnimationFrame'](_0x4a5141['scene']['getEngine']()['_frameHandler']), _0x4a5141['scene']['getEngine']()['_renderLoop'](); }); } , _0x58f09d['prototype']['exitXRAsync'] = function() { return this['_xrSession']['end'](); } , _0x58f09d['prototype']['environmentPointHitTestAsync'] = function(_0x19e6b2) { var _0x378e7a = this; return new Promise(function(_0x450d5b) { var _0x39d1d5 = new Float32Array([_0x19e6b2['origin']['x'], _0x19e6b2['origin']['y'], _0x19e6b2['origin']['z']]) , _0x346315 = new Float32Array([_0x19e6b2['direction']['x'], _0x19e6b2['direction']['y'], _0x19e6b2['direction']['z']]); _0x378e7a['scene']['useRightHandedSystem'] || (_0x39d1d5[0x2] *= -0x1, _0x346315[0x2] *= -0x1), _0x378e7a['_xrSession']['requestHitTest'](_0x39d1d5, _0x346315, _0x378e7a['_frameOfReference'])['then'](function(_0x4a2720) { if (_0x4a2720['length'] > 0x0) { _0x47d24f['j']['FromFloat32ArrayToRefScaled'](_0x4a2720[0x0]['hitMatrix'], 0x0, 0x1, _0x378e7a['_tmpMatrix']); var _0xc560e = _0x378e7a['_tmpMatrix']['getTranslation'](); _0x378e7a['scene']['useRightHandedSystem'] || (_0xc560e['z'] *= -0x1), _0x450d5b(_0xc560e); } else _0x450d5b(null); })['catch'](function() { _0x450d5b(null); }); } ); } , _0x58f09d['prototype']['supportsSessionAsync'] = function(_0x2d5f7c) { return this['_xrDevice']['supportsSession'](_0x2d5f7c)['then'](function() { return !0x0; })['catch'](function() { return !0x1; }); } , _0x58f09d['_CreateRenderTargetTextureFromSession'] = function(_0x535194, _0x1d52bd) { var _0x327a74 = new _0x2826dc['a'](_0x1d52bd['getEngine'](),_0x2826dc['a']['DATASOURCE_UNKNOWN'],!0x0); _0x327a74['width'] = _0x535194['baseLayer']['framebufferWidth'], _0x327a74['height'] = _0x535194['baseLayer']['framebufferHeight'], _0x327a74['_framebuffer'] = _0x535194['baseLayer']['framebuffer']; var _0xcc1535 = new _0xe8a585('XR\x20renderTargetTexture',{ 'width': _0x327a74['width'], 'height': _0x327a74['height'] },_0x1d52bd,void 0x0,void 0x0,void 0x0,void 0x0,void 0x0,void 0x0,void 0x0,void 0x0,void 0x0,!0x0); return _0xcc1535['_texture'] = _0x327a74, _0xcc1535; } , _0x58f09d['prototype']['dispose'] = function() { this['onXRFrameObservable']['clear'](), this['onXRSessionEnded']['clear'](); } , _0x58f09d; }(); !function(_0x1804ff) { _0x1804ff[_0x1804ff['ENTERING_XR'] = 0x0] = 'ENTERING_XR', _0x1804ff[_0x1804ff['EXITING_XR'] = 0x1] = 'EXITING_XR', _0x1804ff[_0x1804ff['IN_XR'] = 0x2] = 'IN_XR', _0x1804ff[_0x1804ff['NOT_IN_XR'] = 0x3] = 'NOT_IN_XR'; }(_0x2bd511 || (_0x2bd511 = {})); var _0x1bc230, _0x25d700 = function() { function _0x1d5e9a(_0x3d7e99) { this['scene'] = _0x3d7e99, this['state'] = _0x2bd511['NOT_IN_XR'], this['onStateChangedObservable'] = new _0x2dbec2['c'](), this['_nonVRCamera'] = null, this['_originalSceneAutoClear'] = !0x0, this['_supported'] = !0x1, this['camera'] = new _0x4ba466('',_0x3d7e99), this['_sessionManager'] = new _0x4cbfaa(_0x3d7e99), this['container'] = new _0x10c088['a']('',_0x3d7e99), this['camera']['parent'] = this['container']; } return _0x1d5e9a['prototype']['_setState'] = function(_0x265e75) { this['state'] = _0x265e75, this['onStateChangedObservable']['notifyObservers'](this['state']); } , _0x1d5e9a['CreateAsync'] = function(_0x467ace) { var _0x4e61a6 = new _0x1d5e9a(_0x467ace); return _0x4e61a6['_sessionManager']['initializeAsync']()['then'](function() { return _0x4e61a6['_supported'] = !0x0, _0x4e61a6; })['catch'](function() { return _0x4e61a6; }); } , _0x1d5e9a['prototype']['exitXRAsync'] = function() { return this['_setState'](_0x2bd511['EXITING_XR']), this['_sessionManager']['exitXRAsync'](); } , _0x1d5e9a['prototype']['enterXRAsync'] = function(_0x19e97f, _0x4c8461) { var _0x6ceba7 = this; if (!this['_supported']) throw 'XR\x20session\x20not\x20supported\x20by\x20this\x20browser'; return this['_setState'](_0x2bd511['ENTERING_XR']), this['_sessionManager']['enterXRAsync'](_0x19e97f, _0x4c8461)['then'](function() { _0x6ceba7['_originalSceneAutoClear'] = _0x6ceba7['scene']['autoClear'], _0x6ceba7['_nonVRCamera'] = _0x6ceba7['scene']['activeCamera'], _0x6ceba7['scene']['autoClear'] = !0x1, _0x6ceba7['scene']['activeCamera'] = _0x6ceba7['camera'], _0x6ceba7['_sessionManager']['onXRFrameObservable']['add'](function() { _0x6ceba7['camera']['updateFromXRSessionManager'](_0x6ceba7['_sessionManager']); }), _0x6ceba7['_sessionManager']['onXRSessionEnded']['addOnce'](function() { _0x6ceba7['camera']['rigCameras']['forEach'](function(_0x2899fe) { _0x2899fe['outputRenderTarget'] = null; }), _0x6ceba7['scene']['autoClear'] = _0x6ceba7['_originalSceneAutoClear'], _0x6ceba7['scene']['activeCamera'] = _0x6ceba7['_nonVRCamera'], _0x6ceba7['_sessionManager']['onXRFrameObservable']['clear'](), _0x6ceba7['_setState'](_0x2bd511['NOT_IN_XR']); }), _0x6ceba7['_setState'](_0x2bd511['IN_XR']); }); } , _0x1d5e9a['prototype']['environmentPointHitTestAsync'] = function(_0x5b0a31) { return this['_sessionManager']['environmentPointHitTestAsync'](_0x5b0a31); } , _0x1d5e9a['prototype']['setPositionOfCameraUsingContainer'] = function(_0x503635) { this['camera']['globalPosition']['subtractToRef'](_0x503635, _0x1d5e9a['_TmpVector']), this['container']['position']['subtractInPlace'](_0x1d5e9a['_TmpVector']); } , _0x1d5e9a['prototype']['rotateCameraByQuaternionUsingContainer'] = function(_0x3e3bc1) { this['container']['rotationQuaternion'] || (this['container']['rotationQuaternion'] = _0x47d24f['q']['FromEulerVector'](this['container']['rotation'])), this['container']['rotationQuaternion']['multiplyInPlace'](_0x3e3bc1), this['container']['position']['rotateByQuaternionAroundPointToRef'](_0x3e3bc1, this['camera']['globalPosition'], this['container']['position']); } , _0x1d5e9a['prototype']['supportsSessionAsync'] = function(_0x43ed8f) { return this['_supported'] ? this['_sessionManager']['supportsSessionAsync'](_0x43ed8f) : Promise['resolve'](!0x1); } , _0x1d5e9a['prototype']['dispose'] = function() { this['camera']['dispose'](), this['container']['dispose'](), this['onStateChangedObservable']['clear'](), this['_sessionManager']['dispose'](); } , _0x1d5e9a['_TmpVector'] = new _0x47d24f['x'](), _0x1d5e9a; }(), _0x3d4a78 = function() { function _0x53864e(_0x12cf6c, _0x2b3fc0) { this['element'] = _0x12cf6c, this['initializationOptions'] = _0x2b3fc0; } return _0x53864e['prototype']['update'] = function(_0x4be750) {} , _0x53864e; }(), _0x283f4d = function() { return function() {} ; }(), _0x34efa2 = function() { function _0x4548b0(_0x2c4fb0, _0x509a51) { var _0x1469c5 = this; if (this['scene'] = _0x2c4fb0, this['_buttons'] = [], this['_activeButton'] = null, this['activeButtonChangedObservable'] = new _0x2dbec2['c'](), this['_overlay'] = document['createElement']('div'), this['_overlay']['style']['cssText'] = 'z-index:11;position:\x20absolute;\x20right:\x2020px;bottom:\x2050px;', _0x509a51['customButtons']) this['_buttons'] = _0x509a51['customButtons']; else { var _0x4850e4 = document['createElement']('button'); _0x4850e4['style']['cssText'] = 'color:\x20#868686;\x20border-color:\x20#868686;\x20border-style:\x20solid;\x20margin-left:\x2010px;\x20height:\x2050px;\x20width:\x2080px;\x20background-color:\x20rgba(51,51,51,0.7);\x20background-repeat:no-repeat;\x20background-position:\x20center;\x20outline:\x20none;', _0x4850e4['innerText'] = 'HMD', this['_buttons']['push'](new _0x3d4a78(_0x4850e4,{ 'immersive': !0x0, 'outputContext': _0x509a51['outputCanvasContext'] })), this['_buttons'][this['_buttons']['length'] - 0x1]['update'] = function(_0x261cfe) { this['element']['style']['display'] = null === _0x261cfe || _0x261cfe === this ? '' : 'none', this['element']['innerText'] = _0x261cfe === this ? 'EXIT' : 'HMD'; } ; var _0x449ed3 = document['createElement']('button'); _0x449ed3['style']['cssText'] = _0x4850e4['style']['cssText'], _0x449ed3['innerText'] = 'Window', this['_buttons']['push'](new _0x3d4a78(_0x449ed3,{ 'immersive': !0x1, 'environmentIntegration': !0x0, 'outputContext': _0x509a51['outputCanvasContext'] })), this['_buttons'][this['_buttons']['length'] - 0x1]['update'] = function(_0x3a96a6) { this['element']['style']['display'] = null === _0x3a96a6 || _0x3a96a6 === this ? '' : 'none', this['element']['innerText'] = _0x3a96a6 === this ? 'EXIT' : 'Window'; } , this['_updateButtons'](null); } var _0x3846a7 = _0x2c4fb0['getEngine']()['getRenderingCanvas'](); _0x3846a7 && _0x3846a7['parentNode'] && (_0x3846a7['parentNode']['appendChild'](this['_overlay']), _0x2c4fb0['onDisposeObservable']['addOnce'](function() { _0x1469c5['dispose'](); })); } return _0x4548b0['CreateAsync'] = function(_0x4e6520, _0x8940b4, _0x2bc132) { var _0x5ca0b5 = this , _0x503dd5 = new _0x4548b0(_0x4e6520,_0x2bc132) , _0x3f2773 = _0x503dd5['_buttons']['map'](function(_0x4b08eb) { return _0x8940b4['supportsSessionAsync'](_0x4b08eb['initializationOptions']); }); return _0x8940b4['onStateChangedObservable']['add'](function(_0x508886) { _0x508886 == _0x2bd511['NOT_IN_XR'] && _0x503dd5['_updateButtons'](null); }), Promise['all'](_0x3f2773)['then'](function(_0x2451ce) { return _0x2451ce['forEach'](function(_0x365a6f, _0x1717f3) { _0x365a6f && (_0x503dd5['_overlay']['appendChild'](_0x503dd5['_buttons'][_0x1717f3]['element']), _0x503dd5['_buttons'][_0x1717f3]['element']['onclick'] = function() { return _0x420e5b['b'](_0x5ca0b5, void 0x0, void 0x0, function() { return _0x420e5b['e'](this, function(_0x20ff56) { switch (_0x20ff56['label']) { case 0x0: return _0x8940b4['state'] != _0x2bd511['IN_XR'] ? [0x3, 0x2] : (_0x503dd5['_updateButtons'](null), [0x4, _0x8940b4['exitXRAsync']()]); case 0x1: return _0x20ff56['sent'](), [0x2]; case 0x2: return _0x8940b4['state'] != _0x2bd511['NOT_IN_XR'] ? [0x3, 0x4] : (_0x503dd5['_updateButtons'](_0x503dd5['_buttons'][_0x1717f3]), [0x4, _0x8940b4['enterXRAsync'](_0x503dd5['_buttons'][_0x1717f3]['initializationOptions'], 'eye-level')]); case 0x3: _0x20ff56['sent'](), _0x20ff56['label'] = 0x4; case 0x4: return [0x2]; } }); }); } ); }), _0x503dd5; }); } , _0x4548b0['prototype']['_updateButtons'] = function(_0x49086e) { var _0x36d2c1 = this; this['_activeButton'] = _0x49086e, this['_buttons']['forEach'](function(_0xfb675a) { _0xfb675a['update'](_0x36d2c1['_activeButton']); }), this['activeButtonChangedObservable']['notifyObservers'](this['_activeButton']); } , _0x4548b0['prototype']['dispose'] = function() { var _0x289b61 = this['scene']['getEngine']()['getRenderingCanvas'](); _0x289b61 && _0x289b61['parentNode'] && _0x289b61['parentNode']['contains'](this['_overlay']) && _0x289b61['parentNode']['removeChild'](this['_overlay']), this['activeButtonChangedObservable']['clear'](); } , _0x4548b0; }(), _0x4f1d10 = function() { function _0x161fd2(_0x4fda43) { this['pointer'] = new _0x10c088['a']('controllerPointer',_0x4fda43); } return _0x161fd2['prototype']['dispose'] = function() { this['grip'] && this['grip']['dispose'](), this['pointer']['dispose'](); } , _0x161fd2; }(), _0xb25c80 = function() { function _0x275fe2(_0x22faff) { var _0x331295 = this; this['helper'] = _0x22faff, this['controllers'] = [], this['_tmpMatrix'] = new _0x47d24f['j'](), this['_frameObserver'] = _0x22faff['_sessionManager']['onXRFrameObservable']['add'](function() { if (_0x22faff['_sessionManager']['_currentXRFrame'] && _0x22faff['_sessionManager']['_currentXRFrame']['getDevicePose']) { var _0x1bbfb7 = _0x22faff['_sessionManager']['_currentXRFrame']; _0x22faff['_sessionManager']['_xrSession']['getInputSources']()['forEach'](function(_0x5bcb0c, _0x3029ea) { var _0x2032c0 = _0x1bbfb7['getInputPose'](_0x5bcb0c, _0x22faff['_sessionManager']['_frameOfReference']); if (_0x2032c0) { _0x331295['controllers']['length'] <= _0x3029ea && _0x331295['controllers']['push'](new _0x4f1d10(_0x22faff['container']['getScene']())); var _0x464f6c = _0x331295['controllers'][_0x3029ea]; _0x2032c0['gripMatrix'] && (_0x464f6c['grip'] || (_0x464f6c['grip'] = new _0x10c088['a']('controllerGrip',_0x22faff['container']['getScene']())), _0x47d24f['j']['FromFloat32ArrayToRefScaled'](_0x2032c0['gripMatrix'], 0x0, 0x1, _0x331295['_tmpMatrix']), _0x464f6c['grip']['getScene']()['useRightHandedSystem'] || _0x331295['_tmpMatrix']['toggleModelMatrixHandInPlace'](), _0x464f6c['grip']['rotationQuaternion'] || (_0x464f6c['grip']['rotationQuaternion'] = new _0x47d24f['q']()), _0x331295['_tmpMatrix']['decompose'](_0x464f6c['grip']['scaling'], _0x464f6c['grip']['rotationQuaternion'], _0x464f6c['grip']['position'])), _0x47d24f['j']['FromFloat32ArrayToRefScaled'](_0x2032c0['targetRay']['transformMatrix'], 0x0, 0x1, _0x331295['_tmpMatrix']), _0x464f6c['pointer']['getScene']()['useRightHandedSystem'] || _0x331295['_tmpMatrix']['toggleModelMatrixHandInPlace'](), _0x464f6c['pointer']['rotationQuaternion'] || (_0x464f6c['pointer']['rotationQuaternion'] = new _0x47d24f['q']()), _0x331295['_tmpMatrix']['decompose'](_0x464f6c['pointer']['scaling'], _0x464f6c['pointer']['rotationQuaternion'], _0x464f6c['pointer']['position']); } }); } }); } return _0x275fe2['prototype']['dispose'] = function() { this['controllers']['forEach'](function(_0x26fdd0) { _0x26fdd0['dispose'](); }), this['helper']['_sessionManager']['onXRFrameObservable']['remove'](this['_frameObserver']); } , _0x275fe2; }(), _0x531ff9 = function() { function _0x800695(_0x238d46, _0x41668c) { var _0x2a6ef = this; this['_canvas'] = null, this['canvasContext'] = null, _0x41668c || ((_0x41668c = document['createElement']('canvas'))['style']['cssText'] = 'position:absolute;\x20bottom:0px;right:0px;z-index:10;width:100%;height:100%;background-color:\x20#000000;'), this['_setManagedOutputCanvas'](_0x41668c), _0x238d46['onStateChangedObservable']['add'](function(_0x41e9f3) { _0x41e9f3 == _0x2bd511['ENTERING_XR'] ? _0x2a6ef['_addCanvas']() : _0x238d46['state'] == _0x2bd511['NOT_IN_XR'] && _0x2a6ef['_removeCanvas'](); }); } return _0x800695['prototype']['dispose'] = function() { this['_removeCanvas'](), this['_setManagedOutputCanvas'](null); } , _0x800695['prototype']['_setManagedOutputCanvas'] = function(_0xc0511f) { this['_removeCanvas'](), _0xc0511f ? (this['_canvas'] = _0xc0511f, this['canvasContext'] = this['_canvas']['getContext']('xrpresent')) : (this['_canvas'] = null, this['canvasContext'] = null); } , _0x800695['prototype']['_addCanvas'] = function() { this['_canvas'] && document['body']['appendChild'](this['_canvas']); } , _0x800695['prototype']['_removeCanvas'] = function() { this['_canvas'] && document['body']['contains'](this['_canvas']) && document['body']['removeChild'](this['_canvas']); } , _0x800695; }(), _0x171763 = (_0x1bc230 = { 'root': 0x0, 'found': !0x1 }, function(_0x233ca2, _0x52c0de, _0xf360ca, _0xcbac85) { _0x1bc230['root'] = 0x0, _0x1bc230['found'] = !0x1; var _0x20de15 = _0x52c0de * _0x52c0de - 0x4 * _0x233ca2 * _0xf360ca; if (_0x20de15 < 0x0) return _0x1bc230; var _0x414990 = Math['sqrt'](_0x20de15) , _0x5eaa88 = (-_0x52c0de - _0x414990) / (0x2 * _0x233ca2) , _0x1f965e = (-_0x52c0de + _0x414990) / (0x2 * _0x233ca2); if (_0x5eaa88 > _0x1f965e) { var _0x763d2 = _0x1f965e; _0x1f965e = _0x5eaa88, _0x5eaa88 = _0x763d2; } return _0x5eaa88 > 0x0 && _0x5eaa88 < _0xcbac85 ? (_0x1bc230['root'] = _0x5eaa88, _0x1bc230['found'] = !0x0, _0x1bc230) : _0x1f965e > 0x0 && _0x1f965e < _0xcbac85 ? (_0x1bc230['root'] = _0x1f965e, _0x1bc230['found'] = !0x0, _0x1bc230) : _0x1bc230; } ), _0xfc60c2 = function() { function _0x478636() { this['_collisionPoint'] = _0x47d24f['x']['Zero'](), this['_planeIntersectionPoint'] = _0x47d24f['x']['Zero'](), this['_tempVector'] = _0x47d24f['x']['Zero'](), this['_tempVector2'] = _0x47d24f['x']['Zero'](), this['_tempVector3'] = _0x47d24f['x']['Zero'](), this['_tempVector4'] = _0x47d24f['x']['Zero'](), this['_edge'] = _0x47d24f['x']['Zero'](), this['_baseToVertex'] = _0x47d24f['x']['Zero'](), this['_destinationPoint'] = _0x47d24f['x']['Zero'](), this['_slidePlaneNormal'] = _0x47d24f['x']['Zero'](), this['_displacementVector'] = _0x47d24f['x']['Zero'](), this['_radius'] = _0x47d24f['x']['One'](), this['_retry'] = 0x0, this['_basePointWorld'] = _0x47d24f['x']['Zero'](), this['_velocityWorld'] = _0x47d24f['x']['Zero'](), this['_normalizedVelocity'] = _0x47d24f['x']['Zero'](), this['_collisionMask'] = -0x1; } return Object['defineProperty'](_0x478636['prototype'], 'collisionMask', { 'get': function() { return this['_collisionMask']; }, 'set': function(_0x3a6292) { this['_collisionMask'] = isNaN(_0x3a6292) ? -0x1 : _0x3a6292; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x478636['prototype'], 'slidePlaneNormal', { 'get': function() { return this['_slidePlaneNormal']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x478636['prototype']['_initialize'] = function(_0x4c1189, _0x1e682e, _0x3ceb2c) { this['_velocity'] = _0x1e682e, _0x47d24f['x']['NormalizeToRef'](_0x1e682e, this['_normalizedVelocity']), this['_basePoint'] = _0x4c1189, _0x4c1189['multiplyToRef'](this['_radius'], this['_basePointWorld']), _0x1e682e['multiplyToRef'](this['_radius'], this['_velocityWorld']), this['_velocityWorldLength'] = this['_velocityWorld']['length'](), this['_epsilon'] = _0x3ceb2c, this['collisionFound'] = !0x1; } , _0x478636['prototype']['_checkPointInTriangle'] = function(_0x412caa, _0xd9bbd, _0x3c085e, _0x2ef32b, _0x194c67) { _0xd9bbd['subtractToRef'](_0x412caa, this['_tempVector']), _0x3c085e['subtractToRef'](_0x412caa, this['_tempVector2']), _0x47d24f['x']['CrossToRef'](this['_tempVector'], this['_tempVector2'], this['_tempVector4']); var _0x480adb = _0x47d24f['x']['Dot'](this['_tempVector4'], _0x194c67); return !(_0x480adb < 0x0) && (_0x2ef32b['subtractToRef'](_0x412caa, this['_tempVector3']), _0x47d24f['x']['CrossToRef'](this['_tempVector2'], this['_tempVector3'], this['_tempVector4']), !((_0x480adb = _0x47d24f['x']['Dot'](this['_tempVector4'], _0x194c67)) < 0x0) && (_0x47d24f['x']['CrossToRef'](this['_tempVector3'], this['_tempVector'], this['_tempVector4']), (_0x480adb = _0x47d24f['x']['Dot'](this['_tempVector4'], _0x194c67)) >= 0x0)); } , _0x478636['prototype']['_canDoCollision'] = function(_0x3e62f6, _0xb4494, _0x223498, _0x1596ac) { var _0x3ecda6 = _0x47d24f['x']['Distance'](this['_basePointWorld'], _0x3e62f6) , _0x233b08 = Math['max'](this['_radius']['x'], this['_radius']['y'], this['_radius']['z']); return !(_0x3ecda6 > this['_velocityWorldLength'] + _0x233b08 + _0xb4494) && !!function(_0x5cead2, _0x26976f, _0x50e7f9, _0x8b3a68) { return !(_0x5cead2['x'] > _0x50e7f9['x'] + _0x8b3a68 || _0x50e7f9['x'] - _0x8b3a68 > _0x26976f['x'] || _0x5cead2['y'] > _0x50e7f9['y'] + _0x8b3a68 || _0x50e7f9['y'] - _0x8b3a68 > _0x26976f['y'] || _0x5cead2['z'] > _0x50e7f9['z'] + _0x8b3a68 || _0x50e7f9['z'] - _0x8b3a68 > _0x26976f['z']); }(_0x223498, _0x1596ac, this['_basePointWorld'], this['_velocityWorldLength'] + _0x233b08); } , _0x478636['prototype']['_testTriangle'] = function(_0x1fa6be, _0x101d4f, _0x33d526, _0x3589c5, _0x3116d3, _0x2f02b0) { var _0x572b4e, _0x4bf5f1 = !0x1; _0x101d4f || (_0x101d4f = []), _0x101d4f[_0x1fa6be] || (_0x101d4f[_0x1fa6be] = new _0x47d24f['n'](0x0,0x0,0x0,0x0), _0x101d4f[_0x1fa6be]['copyFromPoints'](_0x33d526, _0x3589c5, _0x3116d3)); var _0x3a0ef1 = _0x101d4f[_0x1fa6be]; if (_0x2f02b0 || _0x3a0ef1['isFrontFacingTo'](this['_normalizedVelocity'], 0x0)) { var _0x45944a = _0x3a0ef1['signedDistanceTo'](this['_basePoint']) , _0x450db9 = _0x47d24f['x']['Dot'](_0x3a0ef1['normal'], this['_velocity']); if (0x0 == _0x450db9) { if (Math['abs'](_0x45944a) >= 0x1) return; _0x4bf5f1 = !0x0, _0x572b4e = 0x0; } else { var _0x35025c = (0x1 - _0x45944a) / _0x450db9; if ((_0x572b4e = (-0x1 - _0x45944a) / _0x450db9) > _0x35025c) { var _0x3d7763 = _0x35025c; _0x35025c = _0x572b4e, _0x572b4e = _0x3d7763; } if (_0x572b4e > 0x1 || _0x35025c < 0x0) return; _0x572b4e < 0x0 && (_0x572b4e = 0x0), _0x572b4e > 0x1 && (_0x572b4e = 0x1); } this['_collisionPoint']['copyFromFloats'](0x0, 0x0, 0x0); var _0x34c850 = !0x1 , _0x252931 = 0x1; if (_0x4bf5f1 || (this['_basePoint']['subtractToRef'](_0x3a0ef1['normal'], this['_planeIntersectionPoint']), this['_velocity']['scaleToRef'](_0x572b4e, this['_tempVector']), this['_planeIntersectionPoint']['addInPlace'](this['_tempVector']), this['_checkPointInTriangle'](this['_planeIntersectionPoint'], _0x33d526, _0x3589c5, _0x3116d3, _0x3a0ef1['normal']) && (_0x34c850 = !0x0, _0x252931 = _0x572b4e, this['_collisionPoint']['copyFrom'](this['_planeIntersectionPoint']))), !_0x34c850) { var _0x2e4207 = this['_velocity']['lengthSquared']() , _0x33840c = _0x2e4207; this['_basePoint']['subtractToRef'](_0x33d526, this['_tempVector']); var _0x1cbcb3 = 0x2 * _0x47d24f['x']['Dot'](this['_velocity'], this['_tempVector']) , _0x10afaf = this['_tempVector']['lengthSquared']() - 0x1 , _0x3d8e91 = _0x171763(_0x33840c, _0x1cbcb3, _0x10afaf, _0x252931); _0x3d8e91['found'] && (_0x252931 = _0x3d8e91['root'], _0x34c850 = !0x0, this['_collisionPoint']['copyFrom'](_0x33d526)), this['_basePoint']['subtractToRef'](_0x3589c5, this['_tempVector']), _0x1cbcb3 = 0x2 * _0x47d24f['x']['Dot'](this['_velocity'], this['_tempVector']), _0x10afaf = this['_tempVector']['lengthSquared']() - 0x1, (_0x3d8e91 = _0x171763(_0x33840c, _0x1cbcb3, _0x10afaf, _0x252931))['found'] && (_0x252931 = _0x3d8e91['root'], _0x34c850 = !0x0, this['_collisionPoint']['copyFrom'](_0x3589c5)), this['_basePoint']['subtractToRef'](_0x3116d3, this['_tempVector']), _0x1cbcb3 = 0x2 * _0x47d24f['x']['Dot'](this['_velocity'], this['_tempVector']), _0x10afaf = this['_tempVector']['lengthSquared']() - 0x1, (_0x3d8e91 = _0x171763(_0x33840c, _0x1cbcb3, _0x10afaf, _0x252931))['found'] && (_0x252931 = _0x3d8e91['root'], _0x34c850 = !0x0, this['_collisionPoint']['copyFrom'](_0x3116d3)), _0x3589c5['subtractToRef'](_0x33d526, this['_edge']), _0x33d526['subtractToRef'](this['_basePoint'], this['_baseToVertex']); var _0x3711e3 = this['_edge']['lengthSquared']() , _0x7e4cc0 = _0x47d24f['x']['Dot'](this['_edge'], this['_velocity']) , _0x17deab = _0x47d24f['x']['Dot'](this['_edge'], this['_baseToVertex']); if (_0x33840c = _0x3711e3 * -_0x2e4207 + _0x7e4cc0 * _0x7e4cc0, _0x1cbcb3 = _0x3711e3 * (0x2 * _0x47d24f['x']['Dot'](this['_velocity'], this['_baseToVertex'])) - 0x2 * _0x7e4cc0 * _0x17deab, _0x10afaf = _0x3711e3 * (0x1 - this['_baseToVertex']['lengthSquared']()) + _0x17deab * _0x17deab, (_0x3d8e91 = _0x171763(_0x33840c, _0x1cbcb3, _0x10afaf, _0x252931))['found']) { var _0x3006f7 = (_0x7e4cc0 * _0x3d8e91['root'] - _0x17deab) / _0x3711e3; _0x3006f7 >= 0x0 && _0x3006f7 <= 0x1 && (_0x252931 = _0x3d8e91['root'], _0x34c850 = !0x0, this['_edge']['scaleInPlace'](_0x3006f7), _0x33d526['addToRef'](this['_edge'], this['_collisionPoint'])); } _0x3116d3['subtractToRef'](_0x3589c5, this['_edge']), _0x3589c5['subtractToRef'](this['_basePoint'], this['_baseToVertex']), _0x3711e3 = this['_edge']['lengthSquared'](), _0x7e4cc0 = _0x47d24f['x']['Dot'](this['_edge'], this['_velocity']), _0x17deab = _0x47d24f['x']['Dot'](this['_edge'], this['_baseToVertex']), _0x33840c = _0x3711e3 * -_0x2e4207 + _0x7e4cc0 * _0x7e4cc0, _0x1cbcb3 = _0x3711e3 * (0x2 * _0x47d24f['x']['Dot'](this['_velocity'], this['_baseToVertex'])) - 0x2 * _0x7e4cc0 * _0x17deab, _0x10afaf = _0x3711e3 * (0x1 - this['_baseToVertex']['lengthSquared']()) + _0x17deab * _0x17deab, (_0x3d8e91 = _0x171763(_0x33840c, _0x1cbcb3, _0x10afaf, _0x252931))['found'] && (_0x3006f7 = (_0x7e4cc0 * _0x3d8e91['root'] - _0x17deab) / _0x3711e3) >= 0x0 && _0x3006f7 <= 0x1 && (_0x252931 = _0x3d8e91['root'], _0x34c850 = !0x0, this['_edge']['scaleInPlace'](_0x3006f7), _0x3589c5['addToRef'](this['_edge'], this['_collisionPoint'])), _0x33d526['subtractToRef'](_0x3116d3, this['_edge']), _0x3116d3['subtractToRef'](this['_basePoint'], this['_baseToVertex']), _0x3711e3 = this['_edge']['lengthSquared'](), _0x7e4cc0 = _0x47d24f['x']['Dot'](this['_edge'], this['_velocity']), _0x17deab = _0x47d24f['x']['Dot'](this['_edge'], this['_baseToVertex']), _0x33840c = _0x3711e3 * -_0x2e4207 + _0x7e4cc0 * _0x7e4cc0, _0x1cbcb3 = _0x3711e3 * (0x2 * _0x47d24f['x']['Dot'](this['_velocity'], this['_baseToVertex'])) - 0x2 * _0x7e4cc0 * _0x17deab, _0x10afaf = _0x3711e3 * (0x1 - this['_baseToVertex']['lengthSquared']()) + _0x17deab * _0x17deab, (_0x3d8e91 = _0x171763(_0x33840c, _0x1cbcb3, _0x10afaf, _0x252931))['found'] && (_0x3006f7 = (_0x7e4cc0 * _0x3d8e91['root'] - _0x17deab) / _0x3711e3) >= 0x0 && _0x3006f7 <= 0x1 && (_0x252931 = _0x3d8e91['root'], _0x34c850 = !0x0, this['_edge']['scaleInPlace'](_0x3006f7), _0x3116d3['addToRef'](this['_edge'], this['_collisionPoint'])); } if (_0x34c850) { var _0x3beeae = _0x252931 * this['_velocity']['length'](); (!this['collisionFound'] || _0x3beeae < this['_nearestDistance']) && (this['intersectionPoint'] ? this['intersectionPoint']['copyFrom'](this['_collisionPoint']) : this['intersectionPoint'] = this['_collisionPoint']['clone'](), this['_nearestDistance'] = _0x3beeae, this['collisionFound'] = !0x0); } } } , _0x478636['prototype']['_collide'] = function(_0x50b94e, _0x5b3220, _0x2ef2ba, _0x4de925, _0x380097, _0x515205, _0x11aaa9) { for (var _0xc26d60 = _0x4de925; _0xc26d60 < _0x380097; _0xc26d60 += 0x3) { var _0x57d7d8 = _0x5b3220[_0x2ef2ba[_0xc26d60] - _0x515205] , _0x11bae1 = _0x5b3220[_0x2ef2ba[_0xc26d60 + 0x1] - _0x515205] , _0x22e5ec = _0x5b3220[_0x2ef2ba[_0xc26d60 + 0x2] - _0x515205]; this['_testTriangle'](_0xc26d60, _0x50b94e, _0x22e5ec, _0x11bae1, _0x57d7d8, _0x11aaa9); } } , _0x478636['prototype']['_getResponse'] = function(_0x28573f, _0x4b73ab) { _0x28573f['addToRef'](_0x4b73ab, this['_destinationPoint']), _0x4b73ab['scaleInPlace'](this['_nearestDistance'] / _0x4b73ab['length']()), this['_basePoint']['addToRef'](_0x4b73ab, _0x28573f), _0x28573f['subtractToRef'](this['intersectionPoint'], this['_slidePlaneNormal']), this['_slidePlaneNormal']['normalize'](), this['_slidePlaneNormal']['scaleToRef'](this['_epsilon'], this['_displacementVector']), _0x28573f['addInPlace'](this['_displacementVector']), this['intersectionPoint']['addInPlace'](this['_displacementVector']), this['_slidePlaneNormal']['scaleInPlace'](_0x47d24f['n']['SignedDistanceToPlaneFromPositionAndNormal'](this['intersectionPoint'], this['_slidePlaneNormal'], this['_destinationPoint'])), this['_destinationPoint']['subtractInPlace'](this['_slidePlaneNormal']), this['_destinationPoint']['subtractToRef'](this['intersectionPoint'], _0x4b73ab); } , _0x478636; }(), _0x29a4cb = function() { function _0x20477f() { this['_scaledPosition'] = _0x47d24f['x']['Zero'](), this['_scaledVelocity'] = _0x47d24f['x']['Zero'](), this['_finalPosition'] = _0x47d24f['x']['Zero'](); } return _0x20477f['prototype']['getNewPosition'] = function(_0x23416f, _0xb9a692, _0x320d89, _0x401647, _0x29b573, _0x26eaa8, _0x17eb30) { _0x23416f['divideToRef'](_0x320d89['_radius'], this['_scaledPosition']), _0xb9a692['divideToRef'](_0x320d89['_radius'], this['_scaledVelocity']), _0x320d89['collidedMesh'] = null, _0x320d89['_retry'] = 0x0, _0x320d89['_initialVelocity'] = this['_scaledVelocity'], _0x320d89['_initialPosition'] = this['_scaledPosition'], this['_collideWithWorld'](this['_scaledPosition'], this['_scaledVelocity'], _0x320d89, _0x401647, this['_finalPosition'], _0x29b573), this['_finalPosition']['multiplyInPlace'](_0x320d89['_radius']), _0x26eaa8(_0x17eb30, this['_finalPosition'], _0x320d89['collidedMesh']); } , _0x20477f['prototype']['createCollider'] = function() { return new _0xfc60c2(); } , _0x20477f['prototype']['init'] = function(_0x36775e) { this['_scene'] = _0x36775e; } , _0x20477f['prototype']['_collideWithWorld'] = function(_0x31896c, _0x5a4362, _0xba913d, _0x2c7979, _0x272c34, _0x114a88) { void 0x0 === _0x114a88 && (_0x114a88 = null); var _0x1be19d = 0xa * _0x3647a9['b']['CollisionsEpsilon']; if (_0xba913d['_retry'] >= _0x2c7979) _0x272c34['copyFrom'](_0x31896c); else { var _0x16e63a = _0x114a88 ? _0x114a88['collisionMask'] : _0xba913d['collisionMask']; _0xba913d['_initialize'](_0x31896c, _0x5a4362, _0x1be19d); for (var _0x487448 = 0x0; _0x487448 < this['_scene']['meshes']['length']; _0x487448++) { var _0x4b4ac7 = this['_scene']['meshes'][_0x487448]; _0x4b4ac7['isEnabled']() && _0x4b4ac7['checkCollisions'] && _0x4b4ac7['subMeshes'] && _0x4b4ac7 !== _0x114a88 && 0x0 != (_0x16e63a & _0x4b4ac7['collisionGroup']) && _0x4b4ac7['_checkCollision'](_0xba913d); } _0xba913d['collisionFound'] ? (0x0 === _0x5a4362['x'] && 0x0 === _0x5a4362['y'] && 0x0 === _0x5a4362['z'] || _0xba913d['_getResponse'](_0x31896c, _0x5a4362), _0x5a4362['length']() <= _0x1be19d ? _0x272c34['copyFrom'](_0x31896c) : (_0xba913d['_retry']++, this['_collideWithWorld'](_0x31896c, _0x5a4362, _0xba913d, _0x2c7979, _0x272c34, _0x114a88))) : _0x31896c['addToRef'](_0x5a4362, _0x272c34); } } , _0x20477f; }(); _0x366639['a']['CollisionCoordinatorFactory'] = function() { return new _0x29a4cb(); } ; var _0x452236 = _0x59bd00(0x32) , _0x38ed73 = _0x59bd00(0x51) , _0x64f20a = _0x59bd00(0x6c) , _0x5022f8 = _0x59bd00(0x4d) , _0x3166db = _0x59bd00(0x2b) , _0x4435b0 = _0x59bd00(0x52) , _0x3007de = function() { function _0x172682(_0x673b1f, _0x1205d5, _0x461962, _0xef8081, _0x58c5c9, _0x121a04) { this['entries'] = new Array(), this['_boundingVectors'] = new Array(), this['_capacity'] = _0x461962, this['_depth'] = _0xef8081, this['_maxDepth'] = _0x58c5c9, this['_creationFunc'] = _0x121a04, this['_minPoint'] = _0x673b1f, this['_maxPoint'] = _0x1205d5, this['_boundingVectors']['push'](_0x673b1f['clone']()), this['_boundingVectors']['push'](_0x1205d5['clone']()), this['_boundingVectors']['push'](_0x673b1f['clone']()), this['_boundingVectors'][0x2]['x'] = _0x1205d5['x'], this['_boundingVectors']['push'](_0x673b1f['clone']()), this['_boundingVectors'][0x3]['y'] = _0x1205d5['y'], this['_boundingVectors']['push'](_0x673b1f['clone']()), this['_boundingVectors'][0x4]['z'] = _0x1205d5['z'], this['_boundingVectors']['push'](_0x1205d5['clone']()), this['_boundingVectors'][0x5]['z'] = _0x673b1f['z'], this['_boundingVectors']['push'](_0x1205d5['clone']()), this['_boundingVectors'][0x6]['x'] = _0x673b1f['x'], this['_boundingVectors']['push'](_0x1205d5['clone']()), this['_boundingVectors'][0x7]['y'] = _0x673b1f['y']; } return Object['defineProperty'](_0x172682['prototype'], 'capacity', { 'get': function() { return this['_capacity']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x172682['prototype'], 'minPoint', { 'get': function() { return this['_minPoint']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x172682['prototype'], 'maxPoint', { 'get': function() { return this['_maxPoint']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x172682['prototype']['addEntry'] = function(_0x1d5d56) { if (this['blocks']) for (var _0x31e1c8 = 0x0; _0x31e1c8 < this['blocks']['length']; _0x31e1c8++) { this['blocks'][_0x31e1c8]['addEntry'](_0x1d5d56); } else this['_creationFunc'](_0x1d5d56, this), this['entries']['length'] > this['capacity'] && this['_depth'] < this['_maxDepth'] && this['createInnerBlocks'](); } , _0x172682['prototype']['removeEntry'] = function(_0x5eb947) { if (this['blocks']) for (var _0x4ab826 = 0x0; _0x4ab826 < this['blocks']['length']; _0x4ab826++) { this['blocks'][_0x4ab826]['removeEntry'](_0x5eb947); } else { var _0x233117 = this['entries']['indexOf'](_0x5eb947); _0x233117 > -0x1 && this['entries']['splice'](_0x233117, 0x1); } } , _0x172682['prototype']['addEntries'] = function(_0x1166cb) { for (var _0xd2a3bf = 0x0; _0xd2a3bf < _0x1166cb['length']; _0xd2a3bf++) { var _0x4779c7 = _0x1166cb[_0xd2a3bf]; this['addEntry'](_0x4779c7); } } , _0x172682['prototype']['select'] = function(_0xb1f9f9, _0x5871e8, _0x427f33) { if (_0x5022f8['a']['IsInFrustum'](this['_boundingVectors'], _0xb1f9f9)) { if (this['blocks']) { for (var _0xd0fe2 = 0x0; _0xd0fe2 < this['blocks']['length']; _0xd0fe2++) { this['blocks'][_0xd0fe2]['select'](_0xb1f9f9, _0x5871e8, _0x427f33); } return; } _0x427f33 ? _0x5871e8['concat'](this['entries']) : _0x5871e8['concatWithNoDuplicate'](this['entries']); } } , _0x172682['prototype']['intersects'] = function(_0x18ff99, _0x7f9107, _0x16038e, _0x30a340) { if (_0x5022f8['a']['IntersectsSphere'](this['_minPoint'], this['_maxPoint'], _0x18ff99, _0x7f9107)) { if (this['blocks']) { for (var _0xdd60ba = 0x0; _0xdd60ba < this['blocks']['length']; _0xdd60ba++) { this['blocks'][_0xdd60ba]['intersects'](_0x18ff99, _0x7f9107, _0x16038e, _0x30a340); } return; } _0x30a340 ? _0x16038e['concat'](this['entries']) : _0x16038e['concatWithNoDuplicate'](this['entries']); } } , _0x172682['prototype']['intersectsRay'] = function(_0x546dee, _0x5738a7) { if (_0x546dee['intersectsBoxMinMax'](this['_minPoint'], this['_maxPoint'])) { if (this['blocks']) { for (var _0x342a03 = 0x0; _0x342a03 < this['blocks']['length']; _0x342a03++) { this['blocks'][_0x342a03]['intersectsRay'](_0x546dee, _0x5738a7); } return; } _0x5738a7['concatWithNoDuplicate'](this['entries']); } } , _0x172682['prototype']['createInnerBlocks'] = function() { _0x172682['_CreateBlocks'](this['_minPoint'], this['_maxPoint'], this['entries'], this['_capacity'], this['_depth'], this['_maxDepth'], this, this['_creationFunc']); } , _0x172682['_CreateBlocks'] = function(_0xad81de, _0x343360, _0x1537df, _0x59d670, _0x2e9914, _0x413977, _0x942cfb, _0x171ceb) { _0x942cfb['blocks'] = new Array(); for (var _0x3b0d23 = new _0x47d24f['x']((_0x343360['x'] - _0xad81de['x']) / 0x2,(_0x343360['y'] - _0xad81de['y']) / 0x2,(_0x343360['z'] - _0xad81de['z']) / 0x2), _0xba1c2a = 0x0; _0xba1c2a < 0x2; _0xba1c2a++) for (var _0x5a55c4 = 0x0; _0x5a55c4 < 0x2; _0x5a55c4++) for (var _0x53b69d = 0x0; _0x53b69d < 0x2; _0x53b69d++) { var _0x3f1eb1 = new _0x172682(_0xad81de['add'](_0x3b0d23['multiplyByFloats'](_0xba1c2a, _0x5a55c4, _0x53b69d)),_0xad81de['add'](_0x3b0d23['multiplyByFloats'](_0xba1c2a + 0x1, _0x5a55c4 + 0x1, _0x53b69d + 0x1)),_0x59d670,_0x2e9914 + 0x1,_0x413977,_0x171ceb); _0x3f1eb1['addEntries'](_0x1537df), _0x942cfb['blocks']['push'](_0x3f1eb1); } } , _0x172682; }() , _0x2c6e11 = function() { function _0x4c9fa0(_0x599998, _0x497d82, _0x140d93) { void 0x0 === _0x140d93 && (_0x140d93 = 0x2), this['maxDepth'] = _0x140d93, this['dynamicContent'] = new Array(), this['_maxBlockCapacity'] = _0x497d82 || 0x40, this['_selectionContent'] = new _0x435d55['b'](0x400), this['_creationFunc'] = _0x599998; } return _0x4c9fa0['prototype']['update'] = function(_0x261830, _0x2a549a, _0x397e9c) { _0x3007de['_CreateBlocks'](_0x261830, _0x2a549a, _0x397e9c, this['_maxBlockCapacity'], 0x0, this['maxDepth'], this, this['_creationFunc']); } , _0x4c9fa0['prototype']['addMesh'] = function(_0xacfbd7) { for (var _0x1f33fc = 0x0; _0x1f33fc < this['blocks']['length']; _0x1f33fc++) { this['blocks'][_0x1f33fc]['addEntry'](_0xacfbd7); } } , _0x4c9fa0['prototype']['removeMesh'] = function(_0x5bfd8c) { for (var _0x5a7380 = 0x0; _0x5a7380 < this['blocks']['length']; _0x5a7380++) { this['blocks'][_0x5a7380]['removeEntry'](_0x5bfd8c); } } , _0x4c9fa0['prototype']['select'] = function(_0x27914c, _0x1aa227) { this['_selectionContent']['reset'](); for (var _0x2cfef9 = 0x0; _0x2cfef9 < this['blocks']['length']; _0x2cfef9++) { this['blocks'][_0x2cfef9]['select'](_0x27914c, this['_selectionContent'], _0x1aa227); } return _0x1aa227 ? this['_selectionContent']['concat'](this['dynamicContent']) : this['_selectionContent']['concatWithNoDuplicate'](this['dynamicContent']), this['_selectionContent']; } , _0x4c9fa0['prototype']['intersects'] = function(_0x3b1268, _0x31058b, _0x58422b) { this['_selectionContent']['reset'](); for (var _0x1d3d47 = 0x0; _0x1d3d47 < this['blocks']['length']; _0x1d3d47++) { this['blocks'][_0x1d3d47]['intersects'](_0x3b1268, _0x31058b, this['_selectionContent'], _0x58422b); } return _0x58422b ? this['_selectionContent']['concat'](this['dynamicContent']) : this['_selectionContent']['concatWithNoDuplicate'](this['dynamicContent']), this['_selectionContent']; } , _0x4c9fa0['prototype']['intersectsRay'] = function(_0xb4528c) { this['_selectionContent']['reset'](); for (var _0x3370d2 = 0x0; _0x3370d2 < this['blocks']['length']; _0x3370d2++) { this['blocks'][_0x3370d2]['intersectsRay'](_0xb4528c, this['_selectionContent']); } return this['_selectionContent']['concatWithNoDuplicate'](this['dynamicContent']), this['_selectionContent']; } , _0x4c9fa0['CreationFuncForMeshes'] = function(_0xabb853, _0x4be86b) { var _0x132c59 = _0xabb853['getBoundingInfo'](); !_0xabb853['isBlocked'] && _0x132c59['boundingBox']['intersectsMinMax'](_0x4be86b['minPoint'], _0x4be86b['maxPoint']) && _0x4be86b['entries']['push'](_0xabb853); } , _0x4c9fa0['CreationFuncForSubMeshes'] = function(_0x450761, _0xeb6fd6) { _0x450761['getBoundingInfo']()['boundingBox']['intersectsMinMax'](_0xeb6fd6['minPoint'], _0xeb6fd6['maxPoint']) && _0xeb6fd6['entries']['push'](_0x450761); } , _0x4c9fa0; }(); _0x366639['a']['prototype']['createOrUpdateSelectionOctree'] = function(_0x542916, _0xc9857b) { void 0x0 === _0x542916 && (_0x542916 = 0x40), void 0x0 === _0xc9857b && (_0xc9857b = 0x2); var _0x11aac7 = this['_getComponent'](_0x443f74['a']['NAME_OCTREE']); _0x11aac7 || (_0x11aac7 = new _0x514ad3(this), this['_addComponent'](_0x11aac7)), this['_selectionOctree'] || (this['_selectionOctree'] = new _0x2c6e11(_0x2c6e11['CreationFuncForMeshes'],_0x542916,_0xc9857b)); var _0x10c7ff = this['getWorldExtends'](); return this['_selectionOctree']['update'](_0x10c7ff['min'], _0x10c7ff['max'], this['meshes']), this['_selectionOctree']; } , Object['defineProperty'](_0x366639['a']['prototype'], 'selectionOctree', { 'get': function() { return this['_selectionOctree']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x10c088['a']['prototype']['createOrUpdateSubmeshesOctree'] = function(_0x3574e4, _0x47eb80) { void 0x0 === _0x3574e4 && (_0x3574e4 = 0x40), void 0x0 === _0x47eb80 && (_0x47eb80 = 0x2); var _0x420999 = this['getScene']() , _0x460065 = _0x420999['_getComponent'](_0x443f74['a']['NAME_OCTREE']); _0x460065 || (_0x460065 = new _0x514ad3(_0x420999), _0x420999['_addComponent'](_0x460065)), this['_submeshesOctree'] || (this['_submeshesOctree'] = new _0x2c6e11(_0x2c6e11['CreationFuncForSubMeshes'],_0x3574e4,_0x47eb80)), this['computeWorldMatrix'](!0x0); var _0x25143c = this['getBoundingInfo']()['boundingBox']; return this['_submeshesOctree']['update'](_0x25143c['minimumWorld'], _0x25143c['maximumWorld'], this['subMeshes']), this['_submeshesOctree']; } ; var _0x514ad3 = function() { function _0x163c85(_0x4b2e6a) { this['name'] = _0x443f74['a']['NAME_OCTREE'], this['checksIsEnabled'] = !0x0, this['_tempRay'] = new _0x19e5af['a'](_0x47d24f['x']['Zero'](),new _0x47d24f['x'](0x1,0x1,0x1)), this['scene'] = _0x4b2e6a, this['scene']['getActiveMeshCandidates'] = this['getActiveMeshCandidates']['bind'](this), this['scene']['getActiveSubMeshCandidates'] = this['getActiveSubMeshCandidates']['bind'](this), this['scene']['getCollidingSubMeshCandidates'] = this['getCollidingSubMeshCandidates']['bind'](this), this['scene']['getIntersectingSubMeshCandidates'] = this['getIntersectingSubMeshCandidates']['bind'](this); } return _0x163c85['prototype']['register'] = function() { var _0x166006 = this; this['scene']['onMeshRemovedObservable']['add'](function(_0x4f9b7e) { var _0xcac6e3 = _0x166006['scene']['selectionOctree']; if (null != _0xcac6e3) { var _0x1c1227 = _0xcac6e3['dynamicContent']['indexOf'](_0x4f9b7e); -0x1 !== _0x1c1227 && _0xcac6e3['dynamicContent']['splice'](_0x1c1227, 0x1); } }), this['scene']['onMeshImportedObservable']['add'](function(_0x3afff6) { var _0x149bb1 = _0x166006['scene']['selectionOctree']; null != _0x149bb1 && _0x149bb1['addMesh'](_0x3afff6); }); } , _0x163c85['prototype']['getActiveMeshCandidates'] = function() { return this['scene']['_selectionOctree'] ? this['scene']['_selectionOctree']['select'](this['scene']['frustumPlanes']) : this['scene']['_getDefaultMeshCandidates'](); } , _0x163c85['prototype']['getActiveSubMeshCandidates'] = function(_0x72f5c) { return _0x72f5c['_submeshesOctree'] && _0x72f5c['useOctreeForRenderingSelection'] ? _0x72f5c['_submeshesOctree']['select'](this['scene']['frustumPlanes']) : this['scene']['_getDefaultSubMeshCandidates'](_0x72f5c); } , _0x163c85['prototype']['getIntersectingSubMeshCandidates'] = function(_0x45dffa, _0x555f0e) { return _0x45dffa['_submeshesOctree'] && _0x45dffa['useOctreeForPicking'] ? (_0x19e5af['a']['TransformToRef'](_0x555f0e, _0x45dffa['getWorldMatrix'](), this['_tempRay']), _0x45dffa['_submeshesOctree']['intersectsRay'](this['_tempRay'])) : this['scene']['_getDefaultSubMeshCandidates'](_0x45dffa); } , _0x163c85['prototype']['getCollidingSubMeshCandidates'] = function(_0x5245e8, _0x3c626a) { if (_0x5245e8['_submeshesOctree'] && _0x5245e8['useOctreeForCollisions']) { var _0x1a0fdf = _0x3c626a['_velocityWorldLength'] + Math['max'](_0x3c626a['_radius']['x'], _0x3c626a['_radius']['y'], _0x3c626a['_radius']['z']); return _0x5245e8['_submeshesOctree']['intersects'](_0x3c626a['_basePointWorld'], _0x1a0fdf); } return this['scene']['_getDefaultSubMeshCandidates'](_0x5245e8); } , _0x163c85['prototype']['rebuild'] = function() {} , _0x163c85['prototype']['dispose'] = function() {} , _0x163c85; }() , _0x3a535a = _0x59bd00(0x4a) , _0x9f26de = _0x59bd00(0x80) , _0x376023 = function() { return function() { this['_timeElapsedQueryEnded'] = !0x1; } ; }() , _0x5d4346 = function() { return function() { this['occlusionInternalRetryCounter'] = 0x0, this['isOcclusionQueryInProgress'] = !0x1, this['isOccluded'] = !0x1, this['occlusionRetryCount'] = -0x1, this['occlusionType'] = _0x10c088['a']['OCCLUSION_TYPE_NONE'], this['occlusionQueryAlgorithmType'] = _0x10c088['a']['OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE']; } ; }(); _0x3647a9['b']['prototype']['createQuery'] = function() { return this['_gl']['createQuery'](); } , _0x3647a9['b']['prototype']['deleteQuery'] = function(_0x2ad4a0) { return this['_gl']['deleteQuery'](_0x2ad4a0), this; } , _0x3647a9['b']['prototype']['isQueryResultAvailable'] = function(_0x540006) { return this['_gl']['getQueryParameter'](_0x540006, this['_gl']['QUERY_RESULT_AVAILABLE']); } , _0x3647a9['b']['prototype']['getQueryResult'] = function(_0x5a15d6) { return this['_gl']['getQueryParameter'](_0x5a15d6, this['_gl']['QUERY_RESULT']); } , _0x3647a9['b']['prototype']['beginOcclusionQuery'] = function(_0x12ecd5, _0x5dd823) { var _0x479f0b = this['_getGlAlgorithmType'](_0x12ecd5); return this['_gl']['beginQuery'](_0x479f0b, _0x5dd823), this; } , _0x3647a9['b']['prototype']['endOcclusionQuery'] = function(_0x1a96ed) { var _0x4b3a80 = this['_getGlAlgorithmType'](_0x1a96ed); return this['_gl']['endQuery'](_0x4b3a80), this; } , _0x3647a9['b']['prototype']['_createTimeQuery'] = function() { var _0x339d72 = this['getCaps']()['timerQuery']; return _0x339d72['createQueryEXT'] ? _0x339d72['createQueryEXT']() : this['createQuery'](); } , _0x3647a9['b']['prototype']['_deleteTimeQuery'] = function(_0x2df76e) { var _0x41d140 = this['getCaps']()['timerQuery']; _0x41d140['deleteQueryEXT'] ? _0x41d140['deleteQueryEXT'](_0x2df76e) : this['deleteQuery'](_0x2df76e); } , _0x3647a9['b']['prototype']['_getTimeQueryResult'] = function(_0x411e34) { var _0xc2ec3d = this['getCaps']()['timerQuery']; return _0xc2ec3d['getQueryObjectEXT'] ? _0xc2ec3d['getQueryObjectEXT'](_0x411e34, _0xc2ec3d['QUERY_RESULT_EXT']) : this['getQueryResult'](_0x411e34); } , _0x3647a9['b']['prototype']['_getTimeQueryAvailability'] = function(_0x2e3a0d) { var _0x2e48ef = this['getCaps']()['timerQuery']; return _0x2e48ef['getQueryObjectEXT'] ? _0x2e48ef['getQueryObjectEXT'](_0x2e3a0d, _0x2e48ef['QUERY_RESULT_AVAILABLE_EXT']) : this['isQueryResultAvailable'](_0x2e3a0d); } , _0x3647a9['b']['prototype']['startTimeQuery'] = function() { var _0x46b1b8 = this['getCaps']() , _0x469d08 = _0x46b1b8['timerQuery']; if (!_0x469d08) return null; var _0x31e4e2 = new _0x376023(); if (this['_gl']['getParameter'](_0x469d08['GPU_DISJOINT_EXT']), _0x46b1b8['canUseTimestampForTimerQuery']) _0x31e4e2['_startTimeQuery'] = this['_createTimeQuery'](), _0x469d08['queryCounterEXT'](_0x31e4e2['_startTimeQuery'], _0x469d08['TIMESTAMP_EXT']); else { if (this['_currentNonTimestampToken']) return this['_currentNonTimestampToken']; _0x31e4e2['_timeElapsedQuery'] = this['_createTimeQuery'](), _0x469d08['beginQueryEXT'] ? _0x469d08['beginQueryEXT'](_0x469d08['TIME_ELAPSED_EXT'], _0x31e4e2['_timeElapsedQuery']) : this['_gl']['beginQuery'](_0x469d08['TIME_ELAPSED_EXT'], _0x31e4e2['_timeElapsedQuery']), this['_currentNonTimestampToken'] = _0x31e4e2; } return _0x31e4e2; } , _0x3647a9['b']['prototype']['endTimeQuery'] = function(_0x41633f) { var _0x4cba57 = this['getCaps']() , _0x3a5cec = _0x4cba57['timerQuery']; if (!_0x3a5cec || !_0x41633f) return -0x1; if (_0x4cba57['canUseTimestampForTimerQuery']) { if (!_0x41633f['_startTimeQuery']) return -0x1; _0x41633f['_endTimeQuery'] || (_0x41633f['_endTimeQuery'] = this['_createTimeQuery'](), _0x3a5cec['queryCounterEXT'](_0x41633f['_endTimeQuery'], _0x3a5cec['TIMESTAMP_EXT'])); } else if (!_0x41633f['_timeElapsedQueryEnded']) { if (!_0x41633f['_timeElapsedQuery']) return -0x1; _0x3a5cec['endQueryEXT'] ? _0x3a5cec['endQueryEXT'](_0x3a5cec['TIME_ELAPSED_EXT']) : this['_gl']['endQuery'](_0x3a5cec['TIME_ELAPSED_EXT']), _0x41633f['_timeElapsedQueryEnded'] = !0x0; } var _0x9e07d1 = this['_gl']['getParameter'](_0x3a5cec['GPU_DISJOINT_EXT']) , _0x5534ed = !0x1; if (_0x41633f['_endTimeQuery'] ? _0x5534ed = this['_getTimeQueryAvailability'](_0x41633f['_endTimeQuery']) : _0x41633f['_timeElapsedQuery'] && (_0x5534ed = this['_getTimeQueryAvailability'](_0x41633f['_timeElapsedQuery'])), _0x5534ed && !_0x9e07d1) { var _0x3e029e = 0x0; if (_0x4cba57['canUseTimestampForTimerQuery']) { if (!_0x41633f['_startTimeQuery'] || !_0x41633f['_endTimeQuery']) return -0x1; var _0x1856c2 = this['_getTimeQueryResult'](_0x41633f['_startTimeQuery']); _0x3e029e = this['_getTimeQueryResult'](_0x41633f['_endTimeQuery']) - _0x1856c2, this['_deleteTimeQuery'](_0x41633f['_startTimeQuery']), this['_deleteTimeQuery'](_0x41633f['_endTimeQuery']), _0x41633f['_startTimeQuery'] = null, _0x41633f['_endTimeQuery'] = null; } else { if (!_0x41633f['_timeElapsedQuery']) return -0x1; _0x3e029e = this['_getTimeQueryResult'](_0x41633f['_timeElapsedQuery']), this['_deleteTimeQuery'](_0x41633f['_timeElapsedQuery']), _0x41633f['_timeElapsedQuery'] = null, _0x41633f['_timeElapsedQueryEnded'] = !0x1, this['_currentNonTimestampToken'] = null; } return _0x3e029e; } return -0x1; } , _0x3647a9['b']['prototype']['_getGlAlgorithmType'] = function(_0x359d21) { return _0x359d21 === _0x10c088['a']['OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE'] ? this['_gl']['ANY_SAMPLES_PASSED_CONSERVATIVE'] : this['_gl']['ANY_SAMPLES_PASSED']; } , Object['defineProperty'](_0x10c088['a']['prototype'], 'isOcclusionQueryInProgress', { 'get': function() { return this['_occlusionDataStorage']['isOcclusionQueryInProgress']; }, 'enumerable': !0x1, 'configurable': !0x0 }), Object['defineProperty'](_0x10c088['a']['prototype'], '_occlusionDataStorage', { 'get': function() { return this['__occlusionDataStorage'] || (this['__occlusionDataStorage'] = new _0x5d4346()), this['__occlusionDataStorage']; }, 'enumerable': !0x1, 'configurable': !0x0 }), Object['defineProperty'](_0x10c088['a']['prototype'], 'isOccluded', { 'get': function() { return this['_occlusionDataStorage']['isOccluded']; }, 'set': function(_0x50013a) { this['_occlusionDataStorage']['isOccluded'] = _0x50013a; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x10c088['a']['prototype'], 'occlusionQueryAlgorithmType', { 'get': function() { return this['_occlusionDataStorage']['occlusionQueryAlgorithmType']; }, 'set': function(_0x142ce0) { this['_occlusionDataStorage']['occlusionQueryAlgorithmType'] = _0x142ce0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x10c088['a']['prototype'], 'occlusionType', { 'get': function() { return this['_occlusionDataStorage']['occlusionType']; }, 'set': function(_0x2fca7b) { this['_occlusionDataStorage']['occlusionType'] = _0x2fca7b; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x10c088['a']['prototype'], 'occlusionRetryCount', { 'get': function() { return this['_occlusionDataStorage']['occlusionRetryCount']; }, 'set': function(_0x1522ad) { this['_occlusionDataStorage']['occlusionRetryCount'] = _0x1522ad; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x10c088['a']['prototype']['_checkOcclusionQuery'] = function() { var _0x3f779b = this['_occlusionDataStorage']; if (_0x3f779b['occlusionType'] === _0x10c088['a']['OCCLUSION_TYPE_NONE']) return _0x3f779b['isOccluded'] = !0x1, !0x1; var _0x1e2a9b = this['getEngine'](); if (_0x1e2a9b['webGLVersion'] < 0x2) return _0x3f779b['isOccluded'] = !0x1, !0x1; if (!_0x1e2a9b['isQueryResultAvailable']) return _0x3f779b['isOccluded'] = !0x1, !0x1; if (this['isOcclusionQueryInProgress'] && this['_occlusionQuery']) if (_0x1e2a9b['isQueryResultAvailable'](this['_occlusionQuery'])) { var _0x16aa13 = _0x1e2a9b['getQueryResult'](this['_occlusionQuery']); _0x3f779b['isOcclusionQueryInProgress'] = !0x1, _0x3f779b['occlusionInternalRetryCounter'] = 0x0, _0x3f779b['isOccluded'] = 0x1 !== _0x16aa13; } else { if (_0x3f779b['occlusionInternalRetryCounter']++, !(-0x1 !== _0x3f779b['occlusionRetryCount'] && _0x3f779b['occlusionInternalRetryCounter'] > _0x3f779b['occlusionRetryCount'])) return !0x1; _0x3f779b['isOcclusionQueryInProgress'] = !0x1, _0x3f779b['occlusionInternalRetryCounter'] = 0x0, _0x3f779b['isOccluded'] = _0x3f779b['occlusionType'] !== _0x10c088['a']['OCCLUSION_TYPE_OPTIMISTIC'] && _0x3f779b['isOccluded']; } var _0x1c62e3 = this['getScene'](); if (_0x1c62e3['getBoundingBoxRenderer']) { var _0x190cf1 = _0x1c62e3['getBoundingBoxRenderer'](); this['_occlusionQuery'] || (this['_occlusionQuery'] = _0x1e2a9b['createQuery']()), _0x1e2a9b['beginOcclusionQuery'](_0x3f779b['occlusionQueryAlgorithmType'], this['_occlusionQuery']), _0x190cf1['renderOcclusionBoundingBox'](this), _0x1e2a9b['endOcclusionQuery'](_0x3f779b['occlusionQueryAlgorithmType']), this['_occlusionDataStorage']['isOcclusionQueryInProgress'] = !0x0; } return _0x3f779b['isOccluded']; } ; _0x3647a9['b']['prototype']['createTransformFeedback'] = function() { return this['_gl']['createTransformFeedback'](); } , _0x3647a9['b']['prototype']['deleteTransformFeedback'] = function(_0x45a6da) { this['_gl']['deleteTransformFeedback'](_0x45a6da); } , _0x3647a9['b']['prototype']['bindTransformFeedback'] = function(_0x15de2c) { this['_gl']['bindTransformFeedback'](this['_gl']['TRANSFORM_FEEDBACK'], _0x15de2c); } , _0x3647a9['b']['prototype']['beginTransformFeedback'] = function(_0x3568ae) { void 0x0 === _0x3568ae && (_0x3568ae = !0x0), this['_gl']['beginTransformFeedback'](_0x3568ae ? this['_gl']['POINTS'] : this['_gl']['TRIANGLES']); } , _0x3647a9['b']['prototype']['endTransformFeedback'] = function() { this['_gl']['endTransformFeedback'](); } , _0x3647a9['b']['prototype']['setTranformFeedbackVaryings'] = function(_0x586937, _0x3ca339) { this['_gl']['transformFeedbackVaryings'](_0x586937, _0x3ca339, this['_gl']['INTERLEAVED_ATTRIBS']); } , _0x3647a9['b']['prototype']['bindTransformFeedbackBuffer'] = function(_0x34b853) { this['_gl']['bindBufferBase'](this['_gl']['TRANSFORM_FEEDBACK_BUFFER'], 0x0, _0x34b853 ? _0x34b853['underlyingResource'] : null); } ; var _0x1dee49 = _0x59bd00(0x6b) , _0xd2e1d8 = function() { function _0xfcc1ad() {} return _0xfcc1ad['COPY'] = 0x1, _0xfcc1ad['CUT'] = 0x2, _0xfcc1ad['PASTE'] = 0x3, _0xfcc1ad; }() , _0x3caadf = function() { function _0x493665(_0x343bf6, _0x272593) { this['type'] = _0x343bf6, this['event'] = _0x272593; } return _0x493665['GetTypeFromCharacter'] = function(_0x4695df) { switch (_0x4695df) { case 0x43: return _0xd2e1d8['COPY']; case 0x56: return _0xd2e1d8['PASTE']; case 0x58: return _0xd2e1d8['CUT']; default: return -0x1; } } , _0x493665; }() , _0x51b1a2 = _0x59bd00(0x3b) , _0x9514dd = _0x59bd00(0x37) , _0x4da668 = function() { function _0x4f98a1(_0xd22691, _0x592c26, _0x1402c1) { this['lengthComputable'] = _0xd22691, this['loaded'] = _0x592c26, this['total'] = _0x1402c1; } return _0x4f98a1['FromProgressEvent'] = function(_0x5dcecf) { return new _0x4f98a1(_0x5dcecf['lengthComputable'],_0x5dcecf['loaded'],_0x5dcecf['total']); } , _0x4f98a1; }() , _0x32da6b = function() { function _0x285b76() {} return Object['defineProperty'](_0x285b76, 'ForceFullSceneLoadingForIncremental', { 'get': function() { return _0x9514dd['a']['ForceFullSceneLoadingForIncremental']; }, 'set': function(_0x506a39) { _0x9514dd['a']['ForceFullSceneLoadingForIncremental'] = _0x506a39; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x285b76, 'ShowLoadingScreen', { 'get': function() { return _0x9514dd['a']['ShowLoadingScreen']; }, 'set': function(_0x20febe) { _0x9514dd['a']['ShowLoadingScreen'] = _0x20febe; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x285b76, 'loggingLevel', { 'get': function() { return _0x9514dd['a']['loggingLevel']; }, 'set': function(_0x160710) { _0x9514dd['a']['loggingLevel'] = _0x160710; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x285b76, 'CleanBoneMatrixWeights', { 'get': function() { return _0x9514dd['a']['CleanBoneMatrixWeights']; }, 'set': function(_0x55b7ab) { _0x9514dd['a']['CleanBoneMatrixWeights'] = _0x55b7ab; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x285b76['_getDefaultPlugin'] = function() { return _0x285b76['_registeredPlugins']['.babylon']; } , _0x285b76['_getPluginForExtension'] = function(_0x44bc73) { var _0x44d180 = _0x285b76['_registeredPlugins'][_0x44bc73]; return _0x44d180 || (_0x3f98cb['a']['Warn']('Unable\x20to\x20find\x20a\x20plugin\x20to\x20load\x20' + _0x44bc73 + '\x20files.\x20Trying\x20to\x20use\x20.babylon\x20default\x20plugin.\x20To\x20load\x20from\x20a\x20specific\x20filetype\x20(eg.\x20gltf)\x20see:\x20http://doc.babylonjs.com/how_to/load_from_any_file_type'), _0x285b76['_getDefaultPlugin']()); } , _0x285b76['_getPluginForDirectLoad'] = function(_0x389918) { for (var _0x556941 in _0x285b76['_registeredPlugins']) { var _0x83d1b7 = _0x285b76['_registeredPlugins'][_0x556941]['plugin']; if (_0x83d1b7['canDirectLoad'] && _0x83d1b7['canDirectLoad'](_0x389918)) return _0x285b76['_registeredPlugins'][_0x556941]; } return _0x285b76['_getDefaultPlugin'](); } , _0x285b76['_getPluginForFilename'] = function(_0x291f76) { var _0x41af7e = _0x291f76['indexOf']('?'); -0x1 !== _0x41af7e && (_0x291f76 = _0x291f76['substring'](0x0, _0x41af7e)); var _0x2cf23a = _0x291f76['lastIndexOf']('.') , _0x368234 = _0x291f76['substring'](_0x2cf23a, _0x291f76['length'])['toLowerCase'](); return _0x285b76['_getPluginForExtension'](_0x368234); } , _0x285b76['_getDirectLoad'] = function(_0x190f64) { return 'data:' === _0x190f64['substr'](0x0, 0x5) ? _0x190f64['substr'](0x5) : null; } , _0x285b76['_loadData'] = function(_0x3fde6b, _0x3c9690, _0x3b613c, _0x5e7274, _0x5bace1, _0xc4496d, _0x4c26ae) { var _0x4e9137, _0x5da655 = _0x285b76['_getDirectLoad'](_0x3fde6b['name']), _0x3a6310 = _0x4c26ae ? _0x285b76['_getPluginForExtension'](_0x4c26ae) : _0x5da655 ? _0x285b76['_getPluginForDirectLoad'](_0x3fde6b['name']) : _0x285b76['_getPluginForFilename'](_0x3fde6b['name']); if (!(_0x4e9137 = _0x3a6310['plugin']['createPlugin'] ? _0x3a6310['plugin']['createPlugin']() : _0x3a6310['plugin'])) throw 'The\x20loader\x20plugin\x20corresponding\x20to\x20the\x20file\x20type\x20you\x20are\x20trying\x20to\x20load\x20has\x20not\x20been\x20found.\x20If\x20using\x20es6,\x20please\x20import\x20the\x20plugin\x20you\x20wish\x20to\x20use\x20before.'; var _0x20f864, _0x1f0a1f = _0x3a6310['isBinary']; _0x285b76['OnPluginActivatedObservable']['notifyObservers'](_0x4e9137); var _0x2620a2 = function(_0x559e5c, _0x263c30) { _0x3c9690['isDisposed'] ? _0x5bace1('Scene\x20has\x20been\x20disposed') : (_0x3c9690['offlineProvider'] = _0x20f864, _0x3b613c(_0x4e9137, _0x559e5c, _0x263c30)); } , _0x12fba2 = null , _0x36a8da = !0x1 , _0x215985 = _0x4e9137['onDisposeObservable']; _0x215985 && _0x215985['add'](function() { _0x36a8da = !0x0, _0x12fba2 && (_0x12fba2['abort'](), _0x12fba2 = null), _0xc4496d(); }); var _0x2426b3 = function() { _0x36a8da || (_0x12fba2 = _0x1eb50e['h']['LoadFile'](_0x3fde6b['url'], _0x2620a2, _0x5e7274 ? function(_0x47d890) { _0x5e7274(_0x4da668['FromProgressEvent'](_0x47d890)); } : void 0x0, _0x20f864, _0x1f0a1f, function(_0x4e544c, _0x4f581f) { _0x5bace1('Failed\x20to\x20load\x20scene.' + (_0x4f581f ? '\x20' + _0x4f581f['message'] : ''), _0x4f581f); })); }; if (_0x5da655) return _0x2620a2(_0x5da655), _0x4e9137; var _0x42b658 = _0x3fde6b['file'] || _0x51b1a2['a']['FilesToLoad'][_0x3fde6b['name']['toLowerCase']()]; if (-0x1 === _0x3fde6b['rootUrl']['indexOf']('file:') || -0x1 !== _0x3fde6b['rootUrl']['indexOf']('file:') && !_0x42b658) { var _0x50bfb4 = _0x3c9690['getEngine']() , _0x1291ce = _0x50bfb4['enableOfflineSupport']; if (_0x1291ce) { for (var _0x930725 = !0x1, _0x30337e = 0x0, _0x461677 = _0x3c9690['disableOfflineSupportExceptionRules']; _0x30337e < _0x461677['length']; _0x30337e++) { if (_0x461677[_0x30337e]['test'](_0x3fde6b['url'])) { _0x930725 = !0x0; break; } } _0x1291ce = !_0x930725; } _0x1291ce && _0x3647a9['b']['OfflineProviderFactory'] ? _0x20f864 = _0x3647a9['b']['OfflineProviderFactory'](_0x3fde6b['url'], _0x2426b3, _0x50bfb4['disableManifestCheck']) : _0x2426b3(); } else _0x42b658 ? _0x12fba2 = _0x1eb50e['h']['ReadFile'](_0x42b658, _0x2620a2, _0x5e7274, _0x1f0a1f) : _0x5bace1('Unable\x20to\x20find\x20file\x20named\x20' + _0x3fde6b['name']); return _0x4e9137; } , _0x285b76['_getFileInfo'] = function(_0x1a80cf, _0x41a177) { var _0x56c798, _0x2bdb98, _0x2c2331 = null; if (_0x41a177) if (_0x41a177['name']) { var _0x20e732 = _0x41a177; _0x56c798 = _0x1a80cf + _0x20e732['name'], _0x2bdb98 = _0x20e732['name'], _0x2c2331 = _0x20e732; } else { var _0x33b739 = _0x41a177; if ('/' === _0x33b739['substr'](0x0, 0x1)) return _0x1eb50e['h']['Error']('Wrong\x20sceneFilename\x20parameter'), null; _0x56c798 = _0x1a80cf + _0x33b739, _0x2bdb98 = _0x33b739; } else _0x56c798 = _0x1a80cf, _0x2bdb98 = _0x1eb50e['h']['GetFilename'](_0x1a80cf), _0x1a80cf = _0x1eb50e['h']['GetFolderPath'](_0x1a80cf); return { 'url': _0x56c798, 'rootUrl': _0x1a80cf, 'name': _0x2bdb98, 'file': _0x2c2331 }; } , _0x285b76['GetPluginForExtension'] = function(_0x309160) { return _0x285b76['_getPluginForExtension'](_0x309160)['plugin']; } , _0x285b76['IsPluginForExtensionAvailable'] = function(_0x2d8e4a) { return !!_0x285b76['_registeredPlugins'][_0x2d8e4a]; } , _0x285b76['RegisterPlugin'] = function(_0x31bd94) { if ('string' == typeof _0x31bd94['extensions']) { var _0x8eb4e3 = _0x31bd94['extensions']; _0x285b76['_registeredPlugins'][_0x8eb4e3['toLowerCase']()] = { 'plugin': _0x31bd94, 'isBinary': !0x1 }; } else { var _0x32f258 = _0x31bd94['extensions']; Object['keys'](_0x32f258)['forEach'](function(_0x21fedc) { _0x285b76['_registeredPlugins'][_0x21fedc['toLowerCase']()] = { 'plugin': _0x31bd94, 'isBinary': _0x32f258[_0x21fedc]['isBinary'] }; }); } } , _0x285b76['ImportMesh'] = function(_0x3c281b, _0x164ae2, _0x63e9ba, _0x41bd67, _0x1a59bf, _0x5e29b1, _0x1997bb, _0x4cdd98) { if (void 0x0 === _0x63e9ba && (_0x63e9ba = ''), void 0x0 === _0x41bd67 && (_0x41bd67 = _0x48707b['a']['LastCreatedScene']), void 0x0 === _0x1a59bf && (_0x1a59bf = null), void 0x0 === _0x5e29b1 && (_0x5e29b1 = null), void 0x0 === _0x1997bb && (_0x1997bb = null), void 0x0 === _0x4cdd98 && (_0x4cdd98 = null), !_0x41bd67) return _0x3f98cb['a']['Error']('No\x20scene\x20available\x20to\x20import\x20mesh\x20to'), null; var _0x2f476b = _0x285b76['_getFileInfo'](_0x164ae2, _0x63e9ba); if (!_0x2f476b) return null; var _0x2cf650 = {}; _0x41bd67['_addPendingData'](_0x2cf650); var _0x1a3916 = function() { _0x41bd67['_removePendingData'](_0x2cf650); } , _0x4a110f = function(_0x55d634, _0x2ddf07) { var _0x416487 = 'Unable\x20to\x20import\x20meshes\x20from\x20' + _0x2f476b['url'] + ':\x20' + _0x55d634; _0x1997bb ? _0x1997bb(_0x41bd67, _0x416487, _0x2ddf07) : _0x3f98cb['a']['Error'](_0x416487), _0x1a3916(); } , _0x231dd6 = _0x5e29b1 ? function(_0x25c33c) { try { _0x5e29b1(_0x25c33c); } catch (_0x376d70) { _0x4a110f('Error\x20in\x20onProgress\x20callback', _0x376d70); } } : void 0x0 , _0x34a31c = function(_0xc258fd, _0x4529ba, _0x59d878, _0x584ecd) { if (_0x41bd67['importedMeshesFiles']['push'](_0x2f476b['url']), _0x1a59bf) try { _0x1a59bf(_0xc258fd, _0x4529ba, _0x59d878, _0x584ecd); } catch (_0xb12d62) { _0x4a110f('Error\x20in\x20onSuccess\x20callback', _0xb12d62); } _0x41bd67['_removePendingData'](_0x2cf650); }; return _0x285b76['_loadData'](_0x2f476b, _0x41bd67, function(_0x24a846, _0x231598, _0x18bbb3) { if (_0x24a846['rewriteRootURL'] && (_0x2f476b['rootUrl'] = _0x24a846['rewriteRootURL'](_0x2f476b['rootUrl'], _0x18bbb3)), _0x24a846['importMesh']) { var _0xb23eb0 = _0x24a846 , _0x41ee0b = new Array() , _0x485473 = new Array() , _0x38799b = new Array(); if (!_0xb23eb0['importMesh'](_0x3c281b, _0x41bd67, _0x231598, _0x2f476b['rootUrl'], _0x41ee0b, _0x485473, _0x38799b, _0x4a110f)) return; _0x41bd67['loadingPluginName'] = _0x24a846['name'], _0x34a31c(_0x41ee0b, _0x485473, _0x38799b, []); } else { _0x24a846['importMeshAsync'](_0x3c281b, _0x41bd67, _0x231598, _0x2f476b['rootUrl'], _0x231dd6, _0x2f476b['name'])['then'](function(_0x53a5e5) { _0x41bd67['loadingPluginName'] = _0x24a846['name'], _0x34a31c(_0x53a5e5['meshes'], _0x53a5e5['particleSystems'], _0x53a5e5['skeletons'], _0x53a5e5['animationGroups']); })['catch'](function(_0x1c678f) { _0x4a110f(_0x1c678f['message'], _0x1c678f); }); } }, _0x231dd6, _0x4a110f, _0x1a3916, _0x4cdd98); } , _0x285b76['ImportMeshAsync'] = function(_0x1b0537, _0x535dba, _0x46706f, _0x3883c2, _0x236bd2, _0x146d21) { return void 0x0 === _0x46706f && (_0x46706f = ''), void 0x0 === _0x3883c2 && (_0x3883c2 = _0x48707b['a']['LastCreatedScene']), void 0x0 === _0x236bd2 && (_0x236bd2 = null), void 0x0 === _0x146d21 && (_0x146d21 = null), new Promise(function(_0x2accee, _0x37f7ac) { _0x285b76['ImportMesh'](_0x1b0537, _0x535dba, _0x46706f, _0x3883c2, function(_0xbb3737, _0x48e6d3, _0x38f626, _0x3dadfd) { _0x2accee({ 'meshes': _0xbb3737, 'particleSystems': _0x48e6d3, 'skeletons': _0x38f626, 'animationGroups': _0x3dadfd }); }, _0x236bd2, function(_0x4a3476, _0xb77bc8, _0x4eba27) { _0x37f7ac(_0x4eba27 || new Error(_0xb77bc8)); }, _0x146d21); } ); } , _0x285b76['Load'] = function(_0x4e46d7, _0x4cdf9e, _0x33f876, _0x51e5d0, _0x2f2741, _0x35210f, _0x138e8f) { return void 0x0 === _0x4cdf9e && (_0x4cdf9e = ''), void 0x0 === _0x33f876 && (_0x33f876 = _0x48707b['a']['LastCreatedEngine']), void 0x0 === _0x51e5d0 && (_0x51e5d0 = null), void 0x0 === _0x2f2741 && (_0x2f2741 = null), void 0x0 === _0x35210f && (_0x35210f = null), void 0x0 === _0x138e8f && (_0x138e8f = null), _0x33f876 ? _0x285b76['Append'](_0x4e46d7, _0x4cdf9e, new _0x366639['a'](_0x33f876), _0x51e5d0, _0x2f2741, _0x35210f, _0x138e8f) : (_0x1eb50e['h']['Error']('No\x20engine\x20available'), null); } , _0x285b76['LoadAsync'] = function(_0x4360cc, _0x1b7675, _0x5aab5e, _0x2a968f, _0x42ae34) { return void 0x0 === _0x1b7675 && (_0x1b7675 = ''), void 0x0 === _0x5aab5e && (_0x5aab5e = _0x48707b['a']['LastCreatedEngine']), void 0x0 === _0x2a968f && (_0x2a968f = null), void 0x0 === _0x42ae34 && (_0x42ae34 = null), new Promise(function(_0x4fb332, _0x45b2ac) { _0x285b76['Load'](_0x4360cc, _0x1b7675, _0x5aab5e, function(_0x40a9d2) { _0x4fb332(_0x40a9d2); }, _0x2a968f, function(_0x20d5f0, _0xfc184a, _0x2b2bb4) { _0x45b2ac(_0x2b2bb4 || new Error(_0xfc184a)); }, _0x42ae34); } ); } , _0x285b76['Append'] = function(_0x181f2e, _0x384bd7, _0x3cc2fa, _0xf33f95, _0x297d68, _0x32852c, _0x3a1d47) { if (void 0x0 === _0x384bd7 && (_0x384bd7 = ''), void 0x0 === _0x3cc2fa && (_0x3cc2fa = _0x48707b['a']['LastCreatedScene']), void 0x0 === _0xf33f95 && (_0xf33f95 = null), void 0x0 === _0x297d68 && (_0x297d68 = null), void 0x0 === _0x32852c && (_0x32852c = null), void 0x0 === _0x3a1d47 && (_0x3a1d47 = null), !_0x3cc2fa) return _0x3f98cb['a']['Error']('No\x20scene\x20available\x20to\x20append\x20to'), null; var _0x6f9220 = _0x285b76['_getFileInfo'](_0x181f2e, _0x384bd7); if (!_0x6f9220) return null; _0x285b76['ShowLoadingScreen'] && _0x3cc2fa['getEngine']()['displayLoadingUI'](); var _0x381d1c = {}; _0x3cc2fa['_addPendingData'](_0x381d1c); var _0x4e9e15 = function() { _0x3cc2fa['_removePendingData'](_0x381d1c), _0x3cc2fa['getEngine']()['hideLoadingUI'](); } , _0x1b2317 = function(_0x1fb6a3, _0x203737) { var _0x8fc6ab = 'Unable\x20to\x20load\x20from\x20' + _0x6f9220['url'] + (_0x1fb6a3 ? ':\x20' + _0x1fb6a3 : ''); _0x32852c ? _0x32852c(_0x3cc2fa, _0x8fc6ab, _0x203737) : _0x3f98cb['a']['Error'](_0x8fc6ab), _0x4e9e15(); } , _0x3ebb49 = _0x297d68 ? function(_0x47dd8a) { try { _0x297d68(_0x47dd8a); } catch (_0x19e668) { _0x1b2317('Error\x20in\x20onProgress\x20callback', _0x19e668); } } : void 0x0 , _0x51224c = function() { if (_0xf33f95) try { _0xf33f95(_0x3cc2fa); } catch (_0x142db2) { _0x1b2317('Error\x20in\x20onSuccess\x20callback', _0x142db2); } _0x3cc2fa['_removePendingData'](_0x381d1c); }; return _0x285b76['_loadData'](_0x6f9220, _0x3cc2fa, function(_0x22cd78, _0x54da9b) { if (_0x22cd78['load']) { if (!_0x22cd78['load'](_0x3cc2fa, _0x54da9b, _0x6f9220['rootUrl'], _0x1b2317)) return; _0x3cc2fa['loadingPluginName'] = _0x22cd78['name'], _0x51224c(); } else { _0x22cd78['loadAsync'](_0x3cc2fa, _0x54da9b, _0x6f9220['rootUrl'], _0x3ebb49, _0x6f9220['name'])['then'](function() { _0x3cc2fa['loadingPluginName'] = _0x22cd78['name'], _0x51224c(); })['catch'](function(_0x1f1a32) { _0x1b2317(_0x1f1a32['message'], _0x1f1a32); }); } _0x285b76['ShowLoadingScreen'] && _0x3cc2fa['executeWhenReady'](function() { _0x3cc2fa['getEngine']()['hideLoadingUI'](); }); }, _0x3ebb49, _0x1b2317, _0x4e9e15, _0x3a1d47); } , _0x285b76['AppendAsync'] = function(_0x2e04c6, _0x11b782, _0x23ef64, _0x3479ab, _0x1291e0) { return void 0x0 === _0x11b782 && (_0x11b782 = ''), void 0x0 === _0x23ef64 && (_0x23ef64 = _0x48707b['a']['LastCreatedScene']), void 0x0 === _0x3479ab && (_0x3479ab = null), void 0x0 === _0x1291e0 && (_0x1291e0 = null), new Promise(function(_0xb5f2df, _0x32375d) { _0x285b76['Append'](_0x2e04c6, _0x11b782, _0x23ef64, function(_0x1df4a0) { _0xb5f2df(_0x1df4a0); }, _0x3479ab, function(_0x56d884, _0x2cd311, _0x2e2560) { _0x32375d(_0x2e2560 || new Error(_0x2cd311)); }, _0x1291e0); } ); } , _0x285b76['LoadAssetContainer'] = function(_0x55ea24, _0x1e837f, _0x44816f, _0x1a7469, _0xda4e79, _0x1596c5, _0x2f6902) { if (void 0x0 === _0x1e837f && (_0x1e837f = ''), void 0x0 === _0x44816f && (_0x44816f = _0x48707b['a']['LastCreatedScene']), void 0x0 === _0x1a7469 && (_0x1a7469 = null), void 0x0 === _0xda4e79 && (_0xda4e79 = null), void 0x0 === _0x1596c5 && (_0x1596c5 = null), void 0x0 === _0x2f6902 && (_0x2f6902 = null), !_0x44816f) return _0x3f98cb['a']['Error']('No\x20scene\x20available\x20to\x20load\x20asset\x20container\x20to'), null; var _0x39d515 = _0x285b76['_getFileInfo'](_0x55ea24, _0x1e837f); if (!_0x39d515) return null; var _0x210c53 = {}; _0x44816f['_addPendingData'](_0x210c53); var _0x14d86e = function() { _0x44816f['_removePendingData'](_0x210c53); } , _0x50b65a = function(_0x18f362, _0x3b017d) { var _0x34edd9 = 'Unable\x20to\x20load\x20assets\x20from\x20' + _0x39d515['url'] + (_0x18f362 ? ':\x20' + _0x18f362 : ''); _0x1596c5 ? _0x1596c5(_0x44816f, _0x34edd9, _0x3b017d) : _0x3f98cb['a']['Error'](_0x34edd9), _0x14d86e(); } , _0x454408 = _0xda4e79 ? function(_0x36ff94) { try { _0xda4e79(_0x36ff94); } catch (_0x12caa0) { _0x50b65a('Error\x20in\x20onProgress\x20callback', _0x12caa0); } } : void 0x0 , _0x1a6b30 = function(_0x56e495) { if (_0x1a7469) try { _0x1a7469(_0x56e495); } catch (_0x570792) { _0x50b65a('Error\x20in\x20onSuccess\x20callback', _0x570792); } _0x44816f['_removePendingData'](_0x210c53); }; return _0x285b76['_loadData'](_0x39d515, _0x44816f, function(_0x3985b6, _0x3332c1) { if (_0x3985b6['loadAssetContainer']) { var _0x4ec5bb = _0x3985b6['loadAssetContainer'](_0x44816f, _0x3332c1, _0x39d515['rootUrl'], _0x50b65a); if (!_0x4ec5bb) return; _0x44816f['loadingPluginName'] = _0x3985b6['name'], _0x1a6b30(_0x4ec5bb); } else if (_0x3985b6['loadAssetContainerAsync']) { _0x3985b6['loadAssetContainerAsync'](_0x44816f, _0x3332c1, _0x39d515['rootUrl'], _0x454408, _0x39d515['name'])['then'](function(_0x2ce605) { _0x44816f['loadingPluginName'] = _0x3985b6['name'], _0x1a6b30(_0x2ce605); })['catch'](function(_0x181620) { _0x50b65a(_0x181620['message'], _0x181620); }); } else _0x50b65a('LoadAssetContainer\x20is\x20not\x20supported\x20by\x20this\x20plugin.\x20Plugin\x20did\x20not\x20provide\x20a\x20loadAssetContainer\x20or\x20loadAssetContainerAsync\x20method.'); _0x285b76['ShowLoadingScreen'] && _0x44816f['executeWhenReady'](function() { _0x44816f['getEngine']()['hideLoadingUI'](); }); }, _0x454408, _0x50b65a, _0x14d86e, _0x2f6902); } , _0x285b76['LoadAssetContainerAsync'] = function(_0x442da8, _0x393b2a, _0x5d6214, _0xf05896, _0x6ff40f) { return void 0x0 === _0x393b2a && (_0x393b2a = ''), void 0x0 === _0x5d6214 && (_0x5d6214 = _0x48707b['a']['LastCreatedScene']), void 0x0 === _0xf05896 && (_0xf05896 = null), void 0x0 === _0x6ff40f && (_0x6ff40f = null), new Promise(function(_0x304d07, _0x3957ad) { _0x285b76['LoadAssetContainer'](_0x442da8, _0x393b2a, _0x5d6214, function(_0xf86aa3) { _0x304d07(_0xf86aa3); }, _0xf05896, function(_0x265aef, _0x4a68b8, _0x1b241a) { _0x3957ad(_0x1b241a || new Error(_0x4a68b8)); }, _0x6ff40f); } ); } , _0x285b76['NO_LOGGING'] = _0x24e342['a']['SCENELOADER_NO_LOGGING'], _0x285b76['MINIMAL_LOGGING'] = _0x24e342['a']['SCENELOADER_MINIMAL_LOGGING'], _0x285b76['SUMMARY_LOGGING'] = _0x24e342['a']['SCENELOADER_SUMMARY_LOGGING'], _0x285b76['DETAILED_LOGGING'] = _0x24e342['a']['SCENELOADER_DETAILED_LOGGING'], _0x285b76['OnPluginActivatedObservable'] = new _0x2dbec2['c'](), _0x285b76['_registeredPlugins'] = {}, _0x285b76; }() , _0x12de93 = function(_0x5d2dcc) { function _0x2e4b18(_0x4f59e7) { var _0x332099 = _0x5d2dcc['call'](this, _0x4f59e7) || this; return _0x332099['controllerType'] = _0x5496d4['DAYDREAM'], _0x332099; } return _0x420e5b['d'](_0x2e4b18, _0x5d2dcc), _0x2e4b18['prototype']['initControllerMesh'] = function(_0x4515c1, _0x4d1c22) { var _0x2c2ddc = this; _0x32da6b['ImportMesh']('', _0x2e4b18['MODEL_BASE_URL'], _0x2e4b18['MODEL_FILENAME'], _0x4515c1, function(_0x2ba525) { _0x2c2ddc['_defaultModel'] = _0x2ba525[0x1], _0x2c2ddc['attachToMesh'](_0x2c2ddc['_defaultModel']), _0x4d1c22 && _0x4d1c22(_0x2c2ddc['_defaultModel']); }); } , _0x2e4b18['prototype']['_handleButtonChange'] = function(_0x7998a7, _0x591682, _0x43ca4b) { if (0x0 === _0x7998a7) { var _0x3f2fd7 = this['onTriggerStateChangedObservable']; _0x3f2fd7 && _0x3f2fd7['notifyObservers'](_0x591682); } else _0x3f98cb['a']['Warn']('Unrecognized\x20Daydream\x20button\x20index:\x20' + _0x7998a7); } , _0x2e4b18['MODEL_BASE_URL'] = 'https://controllers.babylonjs.com/generic/', _0x2e4b18['MODEL_FILENAME'] = 'generic.babylon', _0x2e4b18['GAMEPAD_ID_PREFIX'] = 'Daydream', _0x2e4b18; }(_0x3ef953); _0xe1c9ed['_ControllerFactories']['push']({ 'canCreate': function(_0x4bd10f) { return 0x0 === _0x4bd10f['id']['indexOf'](_0x12de93['GAMEPAD_ID_PREFIX']); }, 'create': function(_0x269246) { return new _0x12de93(_0x269246); } }); var _0x5f3218 = function(_0x1a56ad) { function _0x3c686f(_0x4ebe8f) { var _0x5ab297 = _0x1a56ad['call'](this, _0x4ebe8f) || this; return _0x5ab297['_buttonIndexToObservableNameMap'] = ['onPadStateChangedObservable', 'onTriggerStateChangedObservable'], _0x5ab297['controllerType'] = _0x5496d4['GEAR_VR'], _0x5ab297['_calculatedPosition'] = new _0x47d24f['x']('left' == _0x5ab297['hand'] ? -0.15 : 0.15,-0.5,0.25), _0x5ab297['_disableTrackPosition'](_0x5ab297['_calculatedPosition']), _0x5ab297; } return _0x420e5b['d'](_0x3c686f, _0x1a56ad), _0x3c686f['prototype']['initControllerMesh'] = function(_0x41d1ba, _0x5509aa) { var _0x3d7749 = this; _0x32da6b['ImportMesh']('', _0x3c686f['MODEL_BASE_URL'], _0x3c686f['MODEL_FILENAME'], _0x41d1ba, function(_0x1957da) { var _0x299a26 = new _0xb4719b['a']('',_0x41d1ba); _0x1957da[0x1]['parent'] = _0x299a26, _0x1957da[0x1]['position']['z'] = -0.15, _0x3d7749['_defaultModel'] = _0x299a26, _0x3d7749['attachToMesh'](_0x3d7749['_defaultModel']), _0x5509aa && _0x5509aa(_0x3d7749['_defaultModel']); }); } , _0x3c686f['prototype']['_handleButtonChange'] = function(_0x42bc50, _0x4666d7, _0x2f64b5) { if (_0x42bc50 < this['_buttonIndexToObservableNameMap']['length']) { var _0x585fdf = this[this['_buttonIndexToObservableNameMap'][_0x42bc50]]; _0x585fdf && _0x585fdf['notifyObservers'](_0x4666d7); } } , _0x3c686f['MODEL_BASE_URL'] = 'https://controllers.babylonjs.com/generic/', _0x3c686f['MODEL_FILENAME'] = 'generic.babylon', _0x3c686f['GAMEPAD_ID_PREFIX'] = 'Gear\x20VR', _0x3c686f; }(_0x3ef953); _0xe1c9ed['_ControllerFactories']['push']({ 'canCreate': function(_0x547776) { return 0x0 === _0x547776['id']['indexOf'](_0x5f3218['GAMEPAD_ID_PREFIX']) || -0x1 !== _0x547776['id']['indexOf']('Oculus\x20Go'); }, 'create': function(_0x5d55a1) { return new _0x5f3218(_0x5d55a1); } }); var _0x4dc9ec = function(_0x3c3030) { function _0x32822f(_0x24f57b) { return _0x3c3030['call'](this, _0x24f57b) || this; } return _0x420e5b['d'](_0x32822f, _0x3c3030), _0x32822f['prototype']['initControllerMesh'] = function(_0x4e5909, _0x526737) { var _0x27d3fa = this; _0x32da6b['ImportMesh']('', _0x32822f['MODEL_BASE_URL'], _0x32822f['MODEL_FILENAME'], _0x4e5909, function(_0x574807) { _0x27d3fa['_defaultModel'] = _0x574807[0x1], _0x27d3fa['attachToMesh'](_0x27d3fa['_defaultModel']), _0x526737 && _0x526737(_0x27d3fa['_defaultModel']); }); } , _0x32822f['prototype']['_handleButtonChange'] = function(_0x123378, _0xe25e9c, _0x51ae04) { console['log']('Button\x20id:\x20' + _0x123378 + 'state:\x20'), console['dir'](_0xe25e9c); } , _0x32822f['MODEL_BASE_URL'] = 'https://controllers.babylonjs.com/generic/', _0x32822f['MODEL_FILENAME'] = 'generic.babylon', _0x32822f; }(_0x3ef953); _0xe1c9ed['_DefaultControllerFactory'] = function(_0x47ae42) { return new _0x4dc9ec(_0x47ae42); } ; var _0x47dc7f = function(_0x152d9a) { function _0x41a59b(_0x3b6a42) { var _0x4e3eb1 = _0x152d9a['call'](this, _0x3b6a42) || this; return _0x4e3eb1['onSecondaryTriggerStateChangedObservable'] = new _0x2dbec2['c'](), _0x4e3eb1['onThumbRestChangedObservable'] = new _0x2dbec2['c'](), _0x4e3eb1['controllerType'] = _0x5496d4['OCULUS'], _0x4e3eb1; } return _0x420e5b['d'](_0x41a59b, _0x152d9a), _0x41a59b['prototype']['initControllerMesh'] = function(_0x5846ec, _0x483738) { var _0xb97b07, _0x53c3c5 = this; _0xb97b07 = 'left' === this['hand'] ? _0x41a59b['MODEL_LEFT_FILENAME'] : _0x41a59b['MODEL_RIGHT_FILENAME'], _0x32da6b['ImportMesh']('', _0x41a59b['MODEL_BASE_URL'], _0xb97b07, _0x5846ec, function(_0x1e8119) { _0x53c3c5['_defaultModel'] = _0x1e8119[0x1], _0x53c3c5['attachToMesh'](_0x53c3c5['_defaultModel']), _0x483738 && _0x483738(_0x53c3c5['_defaultModel']); }); } , Object['defineProperty'](_0x41a59b['prototype'], 'onAButtonStateChangedObservable', { 'get': function() { if ('right' === this['hand']) return this['onMainButtonStateChangedObservable']; throw new Error('No\x20A\x20button\x20on\x20left\x20hand'); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x41a59b['prototype'], 'onBButtonStateChangedObservable', { 'get': function() { if ('right' === this['hand']) return this['onSecondaryButtonStateChangedObservable']; throw new Error('No\x20B\x20button\x20on\x20left\x20hand'); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x41a59b['prototype'], 'onXButtonStateChangedObservable', { 'get': function() { if ('left' === this['hand']) return this['onMainButtonStateChangedObservable']; throw new Error('No\x20X\x20button\x20on\x20right\x20hand'); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x41a59b['prototype'], 'onYButtonStateChangedObservable', { 'get': function() { if ('left' === this['hand']) return this['onSecondaryButtonStateChangedObservable']; throw new Error('No\x20Y\x20button\x20on\x20right\x20hand'); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x41a59b['prototype']['_handleButtonChange'] = function(_0x40b012, _0x3194c7, _0x5a8c16) { var _0x13b6fa = _0x3194c7 , _0xaf150e = 'right' === this['hand'] ? -0x1 : 0x1; switch (_0x40b012) { case 0x0: return void this['onPadStateChangedObservable']['notifyObservers'](_0x13b6fa); case 0x1: return this['_defaultModel'] && (this['_defaultModel']['getChildren']()[0x3]['rotation']['x'] = 0.2 * -_0x13b6fa['value'], this['_defaultModel']['getChildren']()[0x3]['position']['y'] = 0.005 * -_0x13b6fa['value'], this['_defaultModel']['getChildren']()[0x3]['position']['z'] = 0.005 * -_0x13b6fa['value']), void this['onTriggerStateChangedObservable']['notifyObservers'](_0x13b6fa); case 0x2: return this['_defaultModel'] && (this['_defaultModel']['getChildren']()[0x4]['position']['x'] = _0xaf150e * _0x13b6fa['value'] * 0.0035), void this['onSecondaryTriggerStateChangedObservable']['notifyObservers'](_0x13b6fa); case 0x3: return this['_defaultModel'] && (_0x13b6fa['pressed'] ? this['_defaultModel']['getChildren']()[0x1]['position']['y'] = -0.001 : this['_defaultModel']['getChildren']()[0x1]['position']['y'] = 0x0), void this['onMainButtonStateChangedObservable']['notifyObservers'](_0x13b6fa); case 0x4: return this['_defaultModel'] && (_0x13b6fa['pressed'] ? this['_defaultModel']['getChildren']()[0x2]['position']['y'] = -0.001 : this['_defaultModel']['getChildren']()[0x2]['position']['y'] = 0x0), void this['onSecondaryButtonStateChangedObservable']['notifyObservers'](_0x13b6fa); case 0x5: return void this['onThumbRestChangedObservable']['notifyObservers'](_0x13b6fa); } } , _0x41a59b['MODEL_BASE_URL'] = 'https://controllers.babylonjs.com/oculus/', _0x41a59b['MODEL_LEFT_FILENAME'] = 'left.babylon', _0x41a59b['MODEL_RIGHT_FILENAME'] = 'right.babylon', _0x41a59b; }(_0x3ef953); _0xe1c9ed['_ControllerFactories']['push']({ 'canCreate': function(_0x10fd29) { return -0x1 !== _0x10fd29['id']['indexOf']('Oculus\x20Touch'); }, 'create': function(_0x3c0908) { return new _0x47dc7f(_0x3c0908); } }); var _0x429076 = function(_0x5340bc) { function _0x1ba221(_0x554dd1) { var _0x40916f = _0x5340bc['call'](this, _0x554dd1) || this; return _0x40916f['controllerType'] = _0x5496d4['VIVE'], _0x40916f['_invertLeftStickY'] = !0x0, _0x40916f; } return _0x420e5b['d'](_0x1ba221, _0x5340bc), _0x1ba221['prototype']['initControllerMesh'] = function(_0x578b4f, _0x5c466e) { var _0x36e227 = this; _0x32da6b['ImportMesh']('', _0x1ba221['MODEL_BASE_URL'], _0x1ba221['MODEL_FILENAME'], _0x578b4f, function(_0x5443ca) { _0x36e227['_defaultModel'] = _0x5443ca[0x1], _0x36e227['attachToMesh'](_0x36e227['_defaultModel']), _0x5c466e && _0x5c466e(_0x36e227['_defaultModel']); }); } , Object['defineProperty'](_0x1ba221['prototype'], 'onLeftButtonStateChangedObservable', { 'get': function() { return this['onMainButtonStateChangedObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ba221['prototype'], 'onRightButtonStateChangedObservable', { 'get': function() { return this['onMainButtonStateChangedObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1ba221['prototype'], 'onMenuButtonStateChangedObservable', { 'get': function() { return this['onSecondaryButtonStateChangedObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1ba221['prototype']['_handleButtonChange'] = function(_0x351561, _0x248fd8, _0x21ee1b) { var _0x2e5118 = _0x248fd8; switch (_0x351561) { case 0x0: return void this['onPadStateChangedObservable']['notifyObservers'](_0x2e5118); case 0x1: return this['_defaultModel'] && (this['_defaultModel']['getChildren']()[0x6]['rotation']['x'] = 0.15 * -_0x2e5118['value']), void this['onTriggerStateChangedObservable']['notifyObservers'](_0x2e5118); case 0x2: return void this['onMainButtonStateChangedObservable']['notifyObservers'](_0x2e5118); case 0x3: return this['_defaultModel'] && (_0x2e5118['pressed'] ? this['_defaultModel']['getChildren']()[0x2]['position']['y'] = -0.001 : this['_defaultModel']['getChildren']()[0x2]['position']['y'] = 0x0), void this['onSecondaryButtonStateChangedObservable']['notifyObservers'](_0x2e5118); } } , _0x1ba221['MODEL_BASE_URL'] = 'https://controllers.babylonjs.com/vive/', _0x1ba221['MODEL_FILENAME'] = 'wand.babylon', _0x1ba221; }(_0x3ef953); _0xe1c9ed['_ControllerFactories']['push']({ 'canCreate': function(_0x3ef2fb) { return -0x1 !== _0x3ef2fb['id']['toLowerCase']()['indexOf']('openvr'); }, 'create': function(_0x2ad733) { return new _0x429076(_0x2ad733); } }); var _0x11318c = function() { return function() { this['buttonMeshes'] = {}, this['axisMeshes'] = {}; } ; }() , _0x2326db = function(_0x56025a) { function _0x4a9558(_0x2cadea) { var _0x17b36f = _0x56025a['call'](this, _0x2cadea) || this; return _0x17b36f['_mapping'] = { 'buttons': ['thumbstick', 'trigger', 'grip', 'menu', 'trackpad'], 'buttonMeshNames': { 'trigger': 'SELECT', 'menu': 'MENU', 'grip': 'GRASP', 'thumbstick': 'THUMBSTICK_PRESS', 'trackpad': 'TOUCHPAD_PRESS' }, 'buttonObservableNames': { 'trigger': 'onTriggerStateChangedObservable', 'menu': 'onSecondaryButtonStateChangedObservable', 'grip': 'onMainButtonStateChangedObservable', 'thumbstick': 'onPadStateChangedObservable', 'trackpad': 'onTrackpadChangedObservable' }, 'axisMeshNames': ['THUMBSTICK_X', 'THUMBSTICK_Y', 'TOUCHPAD_TOUCH_X', 'TOUCHPAD_TOUCH_Y'], 'pointingPoseMeshName': _0x20e106['POINTING_POSE'] }, _0x17b36f['onTrackpadChangedObservable'] = new _0x2dbec2['c'](), _0x17b36f['onTrackpadValuesChangedObservable'] = new _0x2dbec2['c'](), _0x17b36f['trackpad'] = { 'x': 0x0, 'y': 0x0 }, _0x17b36f['controllerType'] = _0x5496d4['WINDOWS'], _0x17b36f['_loadedMeshInfo'] = null, _0x17b36f; } return _0x420e5b['d'](_0x4a9558, _0x56025a), Object['defineProperty'](_0x4a9558['prototype'], 'onTriggerButtonStateChangedObservable', { 'get': function() { return this['onTriggerStateChangedObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4a9558['prototype'], 'onMenuButtonStateChangedObservable', { 'get': function() { return this['onSecondaryButtonStateChangedObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4a9558['prototype'], 'onGripButtonStateChangedObservable', { 'get': function() { return this['onMainButtonStateChangedObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4a9558['prototype'], 'onThumbstickButtonStateChangedObservable', { 'get': function() { return this['onPadStateChangedObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4a9558['prototype'], 'onTouchpadButtonStateChangedObservable', { 'get': function() { return this['onTrackpadChangedObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4a9558['prototype'], 'onTouchpadValuesChangedObservable', { 'get': function() { return this['onTrackpadValuesChangedObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4a9558['prototype']['_updateTrackpad'] = function() { !this['browserGamepad']['axes'] || this['browserGamepad']['axes'][0x2] == this['trackpad']['x'] && this['browserGamepad']['axes'][0x3] == this['trackpad']['y'] || (this['trackpad']['x'] = this['browserGamepad']['axes'][0x2], this['trackpad']['y'] = this['browserGamepad']['axes'][0x3], this['onTrackpadValuesChangedObservable']['notifyObservers'](this['trackpad'])); } , _0x4a9558['prototype']['update'] = function() { if (_0x56025a['prototype']['update']['call'](this), this['browserGamepad']['axes'] && (this['_updateTrackpad'](), this['_loadedMeshInfo'])) for (var _0x314ca0 = 0x0; _0x314ca0 < this['_mapping']['axisMeshNames']['length']; _0x314ca0++) this['_lerpAxisTransform'](_0x314ca0, this['browserGamepad']['axes'][_0x314ca0]); } , _0x4a9558['prototype']['_handleButtonChange'] = function(_0x2d3822, _0x5bea10, _0xcd88f4) { var _0x41f04c = this['_mapping']['buttons'][_0x2d3822]; if (_0x41f04c) { this['_updateTrackpad'](); var _0x2aabb9 = this[this['_mapping']['buttonObservableNames'][_0x41f04c]]; _0x2aabb9 && _0x2aabb9['notifyObservers'](_0x5bea10), this['_lerpButtonTransform'](_0x41f04c, _0x5bea10['value']); } } , _0x4a9558['prototype']['_lerpButtonTransform'] = function(_0x10fbfc, _0x35028c) { if (this['_loadedMeshInfo']) { var _0x2f4779 = this['_loadedMeshInfo']['buttonMeshes'][_0x10fbfc]; _0x2f4779['unpressed']['rotationQuaternion'] && _0x2f4779['pressed']['rotationQuaternion'] && _0x2f4779['value']['rotationQuaternion'] && (_0x47d24f['q']['SlerpToRef'](_0x2f4779['unpressed']['rotationQuaternion'], _0x2f4779['pressed']['rotationQuaternion'], _0x35028c, _0x2f4779['value']['rotationQuaternion']), _0x47d24f['x']['LerpToRef'](_0x2f4779['unpressed']['position'], _0x2f4779['pressed']['position'], _0x35028c, _0x2f4779['value']['position'])); } } , _0x4a9558['prototype']['_lerpAxisTransform'] = function(_0x434d6c, _0x2fb863) { if (this['_loadedMeshInfo']) { var _0x13a5d2 = this['_loadedMeshInfo']['axisMeshes'][_0x434d6c]; if (_0x13a5d2 && _0x13a5d2['min']['rotationQuaternion'] && _0x13a5d2['max']['rotationQuaternion'] && _0x13a5d2['value']['rotationQuaternion']) { var _0xc59377 = 0.5 * _0x2fb863 + 0.5; _0x47d24f['q']['SlerpToRef'](_0x13a5d2['min']['rotationQuaternion'], _0x13a5d2['max']['rotationQuaternion'], _0xc59377, _0x13a5d2['value']['rotationQuaternion']), _0x47d24f['x']['LerpToRef'](_0x13a5d2['min']['position'], _0x13a5d2['max']['position'], _0xc59377, _0x13a5d2['value']['position']); } } } , _0x4a9558['prototype']['initControllerMesh'] = function(_0x596524, _0x20d906, _0x3f39fa) { var _0x6cd52c, _0x5a1d04, _0x84231a = this; if (void 0x0 === _0x3f39fa && (_0x3f39fa = !0x1), _0x32da6b['IsPluginForExtensionAvailable']('.glb')) { var _0x1ff07f = 'default'; if (this['id'] && !_0x3f39fa) { var _0x23d644 = this['id']['match'](_0x4a9558['GAMEPAD_ID_PATTERN']); _0x1ff07f = _0x23d644 && _0x23d644[0x0] || _0x1ff07f; } _0x5a1d04 = 'left' === this['hand'] ? _0x4a9558['MODEL_LEFT_FILENAME'] : _0x4a9558['MODEL_RIGHT_FILENAME'], _0x6cd52c = _0x4a9558['MODEL_BASE_URL'] + _0x1ff07f + '/'; } else _0x3f98cb['a']['Warn']('You\x20need\x20to\x20reference\x20GLTF\x20loader\x20to\x20load\x20Windows\x20Motion\x20Controllers\x20model.\x20Falling\x20back\x20to\x20generic\x20models'), _0x6cd52c = _0x4dc9ec['MODEL_BASE_URL'], _0x5a1d04 = _0x4dc9ec['MODEL_FILENAME']; _0x32da6b['ImportMesh']('', _0x6cd52c, _0x5a1d04, _0x596524, function(_0x145bd6) { _0x84231a['_loadedMeshInfo'] = _0x84231a['processModel'](_0x596524, _0x145bd6), _0x84231a['_loadedMeshInfo'] && (_0x84231a['_defaultModel'] = _0x84231a['_loadedMeshInfo']['rootNode'], _0x84231a['attachToMesh'](_0x84231a['_defaultModel']), _0x20d906 && _0x20d906(_0x84231a['_defaultModel'])); }, null, function(_0x5b721c, _0x302706) { _0x3f98cb['a']['Log'](_0x302706), _0x3f98cb['a']['Warn']('Failed\x20to\x20retrieve\x20controller\x20model\x20from\x20the\x20remote\x20server:\x20' + _0x6cd52c + _0x5a1d04), _0x3f39fa || _0x84231a['initControllerMesh'](_0x5b721c, _0x20d906, !0x0); }); } , _0x4a9558['prototype']['processModel'] = function(_0x2117e7, _0x24e83c) { for (var _0x3b025a = null, _0x27bba1 = new _0xb4719b['a'](this['id'] + '\x20' + this['hand'],_0x2117e7), _0x2aa927 = null, _0x8b7f9 = 0x0; _0x8b7f9 < _0x24e83c['length']; _0x8b7f9++) { var _0x54efa9 = _0x24e83c[_0x8b7f9]; if (!_0x54efa9['parent']) { _0x54efa9['isPickable'] = !0x1, _0x2aa927 = _0x54efa9; break; } } return _0x2aa927 ? (_0x2aa927['setParent'](_0x27bba1), _0x3b025a = this['createMeshInfo'](_0x27bba1)) : _0x3f98cb['a']['Warn']('Could\x20not\x20find\x20root\x20node\x20in\x20model\x20file.'), _0x3b025a; } , _0x4a9558['prototype']['createMeshInfo'] = function(_0x1b9f5c) { var _0x4053d7, _0x61141f = new _0x11318c(); for (_0x61141f['rootNode'] = _0x1b9f5c, _0x61141f['buttonMeshes'] = {}, _0x61141f['axisMeshes'] = {}, _0x4053d7 = 0x0; _0x4053d7 < this['_mapping']['buttons']['length']; _0x4053d7++) { var _0xabb676 = this['_mapping']['buttonMeshNames'][this['_mapping']['buttons'][_0x4053d7]]; if (_0xabb676) { var _0x2d42a6 = _0x8a01a9(_0x1b9f5c, _0xabb676); if (_0x2d42a6) { var _0x735ffe = { 'index': _0x4053d7, 'value': _0x497be6(_0x2d42a6, 'VALUE'), 'pressed': _0x497be6(_0x2d42a6, 'PRESSED'), 'unpressed': _0x497be6(_0x2d42a6, 'UNPRESSED') }; _0x735ffe['value'] && _0x735ffe['pressed'] && _0x735ffe['unpressed'] ? _0x61141f['buttonMeshes'][this['_mapping']['buttons'][_0x4053d7]] = _0x735ffe : _0x3f98cb['a']['Warn']('Missing\x20button\x20submesh\x20under\x20mesh\x20with\x20name:\x20' + _0xabb676 + '(VALUE:\x20' + !!_0x735ffe['value'] + ',\x20PRESSED:\x20' + !!_0x735ffe['pressed'] + ',\x20UNPRESSED:' + !!_0x735ffe['unpressed'] + ')'); } else _0x3f98cb['a']['Warn']('Missing\x20button\x20mesh\x20with\x20name:\x20' + _0xabb676); } else _0x3f98cb['a']['Log']('Skipping\x20unknown\x20button\x20at\x20index:\x20' + _0x4053d7 + '\x20with\x20mapped\x20name:\x20' + this['_mapping']['buttons'][_0x4053d7]); } for (_0x4053d7 = 0x0; _0x4053d7 < this['_mapping']['axisMeshNames']['length']; _0x4053d7++) { var _0xfb878 = this['_mapping']['axisMeshNames'][_0x4053d7]; if (_0xfb878) { var _0x322b12 = _0x8a01a9(_0x1b9f5c, _0xfb878); if (_0x322b12) { var _0x17cde3 = { 'index': _0x4053d7, 'value': _0x497be6(_0x322b12, 'VALUE'), 'min': _0x497be6(_0x322b12, 'MIN'), 'max': _0x497be6(_0x322b12, 'MAX') }; _0x17cde3['value'] && _0x17cde3['min'] && _0x17cde3['max'] ? _0x61141f['axisMeshes'][_0x4053d7] = _0x17cde3 : _0x3f98cb['a']['Warn']('Missing\x20axis\x20submesh\x20under\x20mesh\x20with\x20name:\x20' + _0xfb878 + '(VALUE:\x20' + !!_0x17cde3['value'] + ',\x20MIN:\x20' + !!_0x17cde3['min'] + ',\x20MAX:' + !!_0x17cde3['max'] + ')'); } else _0x3f98cb['a']['Warn']('Missing\x20axis\x20mesh\x20with\x20name:\x20' + _0xfb878); } else _0x3f98cb['a']['Log']('Skipping\x20unknown\x20axis\x20at\x20index:\x20' + _0x4053d7); } return _0x61141f['pointingPoseNode'] = _0x8a01a9(_0x1b9f5c, this['_mapping']['pointingPoseMeshName']), _0x61141f['pointingPoseNode'] ? this['_pointingPoseNode'] = _0x61141f['pointingPoseNode'] : _0x3f98cb['a']['Warn']('Missing\x20pointing\x20pose\x20mesh\x20with\x20name:\x20' + this['_mapping']['pointingPoseMeshName']), _0x61141f; function _0x8a01a9(_0x31b37c, _0x3c859b) { return _0x31b37c['getChildren'](function(_0x49cbb6) { return _0x49cbb6['name'] === _0x3c859b; }, !0x1)[0x0]; } function _0x497be6(_0x59b11e, _0x3cc6f3) { return _0x59b11e['getChildren'](function(_0x5cfc7d) { return _0x5cfc7d['name'] == _0x3cc6f3; }, !0x0)[0x0]; } } , _0x4a9558['prototype']['getForwardRay'] = function(_0x14a137) { if (void 0x0 === _0x14a137 && (_0x14a137 = 0x64), !this['_loadedMeshInfo'] || !this['_loadedMeshInfo']['pointingPoseNode']) return _0x56025a['prototype']['getForwardRay']['call'](this, _0x14a137); var _0x5bde21 = this['_loadedMeshInfo']['pointingPoseNode']['getWorldMatrix']() , _0x2dc585 = _0x5bde21['getTranslation']() , _0x3745b6 = new _0x47d24f['x'](0x0,0x0,-0x1) , _0xd17152 = _0x47d24f['x']['TransformNormal'](_0x3745b6, _0x5bde21) , _0x55b4bd = _0x47d24f['x']['Normalize'](_0xd17152); return new _0x19e5af['a'](_0x2dc585,_0x55b4bd,_0x14a137); } , _0x4a9558['prototype']['dispose'] = function() { _0x56025a['prototype']['dispose']['call'](this), this['onTrackpadChangedObservable']['clear'](); } , _0x4a9558['MODEL_BASE_URL'] = 'https://controllers.babylonjs.com/microsoft/', _0x4a9558['MODEL_LEFT_FILENAME'] = 'left.glb', _0x4a9558['MODEL_RIGHT_FILENAME'] = 'right.glb', _0x4a9558['GAMEPAD_ID_PREFIX'] = 'Spatial\x20Controller\x20(Spatial\x20Interaction\x20Source)\x20', _0x4a9558['GAMEPAD_ID_PATTERN'] = /([0-9a-zA-Z]+-[0-9a-zA-Z]+)$/, _0x4a9558; }(_0x3ef953); _0xe1c9ed['_ControllerFactories']['push']({ 'canCreate': function(_0xa14c71) { return 0x0 === _0xa14c71['id']['indexOf'](_0x2326db['GAMEPAD_ID_PREFIX']); }, 'create': function(_0x4c9601) { return new _0x2326db(_0x4c9601); } }); var _0xb03fb9 = _0x59bd00(0x3a) , _0x401528 = _0x59bd00(0x34) , _0x1f7c5e = _0x59bd00(0x30) , _0x1d5ec6 = _0x59bd00(0x29) , _0x25a0c0 = function(_0x3f089b) { function _0x49c5fc(_0x3db23d, _0x56b495, _0x345c45) { void 0x0 === _0x56b495 && (_0x56b495 = _0x47d24f['e']['Gray']()), void 0x0 === _0x345c45 && (_0x345c45 = _0x1d5ec6['a']['DefaultUtilityLayer']); var _0x14ff9e = _0x3f089b['call'](this, _0x345c45) || this; _0x14ff9e['_pointerObserver'] = null, _0x14ff9e['snapDistance'] = 0x0, _0x14ff9e['onSnapObservable'] = new _0x2dbec2['c'](), _0x14ff9e['uniformScaling'] = !0x1, _0x14ff9e['_coloredMaterial'] = new _0xe7dd57['a']('',_0x345c45['utilityLayerScene']), _0x14ff9e['_coloredMaterial']['diffuseColor'] = _0x56b495, _0x14ff9e['_coloredMaterial']['specularColor'] = _0x56b495['subtract'](new _0x47d24f['e'](0.1,0.1,0.1)); var _0x38eb7f = new _0xe7dd57['a']('',_0x345c45['utilityLayerScene']); _0x38eb7f['diffuseColor'] = _0x56b495['add'](new _0x47d24f['e'](0.3,0.3,0.3)); var _0x35ebfd = new _0x10c088['a']('',_0x345c45['utilityLayerScene']) , _0x14d880 = _0x401528['a']['CreateBox']('yPosMesh', { 'size': 0.4 }, _0x345c45['utilityLayerScene']) , _0x4319be = _0x1e5ba3['a']['CreateCylinder']('cylinder', { 'diameterTop': 0.005, 'height': 0.275, 'diameterBottom': 0.005, 'tessellation': 0x60 }, _0x345c45['utilityLayerScene']); _0x4319be['material'] = _0x14ff9e['_coloredMaterial'], _0x35ebfd['addChild'](_0x14d880), _0x35ebfd['addChild'](_0x4319be), _0x14d880['scaling']['scaleInPlace'](0.1), _0x14d880['material'] = _0x14ff9e['_coloredMaterial'], _0x14d880['rotation']['x'] = Math['PI'] / 0x2, _0x14d880['position']['z'] += 0.3, _0x4319be['position']['z'] += 0.1375, _0x4319be['rotation']['x'] = Math['PI'] / 0x2, _0x35ebfd['lookAt'](_0x14ff9e['_rootMesh']['position']['add'](_0x3db23d)), _0x14ff9e['_rootMesh']['addChild'](_0x35ebfd), _0x35ebfd['scaling']['scaleInPlace'](0x1 / 0x3), _0x14ff9e['dragBehavior'] = new _0x292073['a']({ 'dragAxis': _0x3db23d }), _0x14ff9e['dragBehavior']['moveAttached'] = !0x1, _0x14ff9e['_rootMesh']['addBehavior'](_0x14ff9e['dragBehavior']); var _0x3d8009 = 0x0 , _0x506ee2 = new _0x47d24f['x']() , _0x30164e = { 'snapDistance': 0x0 }; _0x14ff9e['dragBehavior']['onDragObservable']['add'](function(_0xeed38c) { if (_0x14ff9e['attachedMesh']) { var _0x35f997 = _0xeed38c['dragDistance'] * (0x3 * _0x14ff9e['scaleRatio'] / _0x14ff9e['_rootMesh']['scaling']['length']()) , _0x36cbc6 = !0x1 , _0x3bd8b7 = 0x0; _0x14ff9e['uniformScaling'] ? (_0x14ff9e['attachedMesh']['scaling']['normalizeToRef'](_0x506ee2), _0x506ee2['y'] < 0x0 && _0x506ee2['scaleInPlace'](-0x1)) : _0x506ee2['copyFrom'](_0x3db23d), 0x0 == _0x14ff9e['snapDistance'] ? _0x506ee2['scaleToRef'](_0x35f997, _0x506ee2) : (_0x3d8009 += _0x35f997, Math['abs'](_0x3d8009) > _0x14ff9e['snapDistance'] ? (_0x3bd8b7 = Math['floor'](Math['abs'](_0x3d8009) / _0x14ff9e['snapDistance']), _0x3d8009 < 0x0 && (_0x3bd8b7 *= -0x1), _0x3d8009 %= _0x14ff9e['snapDistance'], _0x506ee2['scaleToRef'](_0x14ff9e['snapDistance'] * _0x3bd8b7, _0x506ee2), _0x36cbc6 = !0x0) : _0x506ee2['scaleInPlace'](0x0)), _0x14ff9e['attachedMesh']['scaling']['addInPlace'](_0x506ee2), _0x36cbc6 && (_0x30164e['snapDistance'] = _0x14ff9e['snapDistance'] * _0x3bd8b7, _0x14ff9e['onSnapObservable']['notifyObservers'](_0x30164e)); } }), _0x14ff9e['_pointerObserver'] = _0x345c45['utilityLayerScene']['onPointerObservable']['add'](function(_0x634661) { if (!_0x14ff9e['_customMeshSet']) { var _0x20771d = _0x634661['pickInfo'] && -0x1 != _0x14ff9e['_rootMesh']['getChildMeshes']()['indexOf'](_0x634661['pickInfo']['pickedMesh']) ? _0x38eb7f : _0x14ff9e['_coloredMaterial']; _0x14ff9e['_rootMesh']['getChildMeshes']()['forEach'](function(_0x251fad) { _0x251fad['material'] = _0x20771d, _0x251fad['color'] && (_0x251fad['color'] = _0x20771d['diffuseColor']); }); } }); var _0x7a92d1 = _0x345c45['_getSharedGizmoLight'](); return _0x7a92d1['includedOnlyMeshes'] = _0x7a92d1['includedOnlyMeshes']['concat'](_0x14ff9e['_rootMesh']['getChildMeshes']()), _0x14ff9e; } return _0x420e5b['d'](_0x49c5fc, _0x3f089b), _0x49c5fc['prototype']['_attachedMeshChanged'] = function(_0x401d98) { this['dragBehavior'] && (this['dragBehavior']['enabled'] = !!_0x401d98); } , _0x49c5fc['prototype']['dispose'] = function() { this['onSnapObservable']['clear'](), this['gizmoLayer']['utilityLayerScene']['onPointerObservable']['remove'](this['_pointerObserver']), this['dragBehavior']['detach'](), _0x3f089b['prototype']['dispose']['call'](this); } , _0x49c5fc['prototype']['setCustomMesh'] = function(_0xc59c44, _0x227109) { var _0x31e247 = this; void 0x0 === _0x227109 && (_0x227109 = !0x1), _0x3f089b['prototype']['setCustomMesh']['call'](this, _0xc59c44), _0x227109 && (this['_rootMesh']['getChildMeshes']()['forEach'](function(_0x20d2e9) { _0x20d2e9['material'] = _0x31e247['_coloredMaterial'], _0x20d2e9['color'] && (_0x20d2e9['color'] = _0x31e247['_coloredMaterial']['diffuseColor']); }), this['_customMeshSet'] = !0x1); } , _0x49c5fc; }(_0x1f7c5e['a']) , _0x523a20 = _0x59bd00(0x2e) , _0x4c2fa7 = _0x59bd00(0x28) , _0x4f5163 = function(_0x23c8ef) { function _0x5b71b(_0xd9128e, _0x7d99b) { void 0x0 === _0xd9128e && (_0xd9128e = _0x47d24f['e']['Gray']()), void 0x0 === _0x7d99b && (_0x7d99b = _0x1d5ec6['a']['DefaultKeepDepthUtilityLayer']); var _0x200373 = _0x23c8ef['call'](this, _0x7d99b) || this; _0x200373['_boundingDimensions'] = new _0x47d24f['x'](0x1,0x1,0x1), _0x200373['_renderObserver'] = null, _0x200373['_pointerObserver'] = null, _0x200373['_scaleDragSpeed'] = 0.2, _0x200373['_tmpQuaternion'] = new _0x47d24f['q'](), _0x200373['_tmpVector'] = new _0x47d24f['x'](0x0,0x0,0x0), _0x200373['_tmpRotationMatrix'] = new _0x47d24f['j'](), _0x200373['ignoreChildren'] = !0x1, _0x200373['includeChildPredicate'] = null, _0x200373['rotationSphereSize'] = 0.1, _0x200373['scaleBoxSize'] = 0.1, _0x200373['fixedDragMeshScreenSize'] = !0x1, _0x200373['fixedDragMeshScreenSizeDistanceFactor'] = 0xa, _0x200373['onDragStartObservable'] = new _0x2dbec2['c'](), _0x200373['onScaleBoxDragObservable'] = new _0x2dbec2['c'](), _0x200373['onScaleBoxDragEndObservable'] = new _0x2dbec2['c'](), _0x200373['onRotationSphereDragObservable'] = new _0x2dbec2['c'](), _0x200373['onRotationSphereDragEndObservable'] = new _0x2dbec2['c'](), _0x200373['scalePivot'] = null, _0x200373['_existingMeshScale'] = new _0x47d24f['x'](), _0x200373['_dragMesh'] = null, _0x200373['pointerDragBehavior'] = new _0x292073['a'](), _0x200373['_updateScale'] = !0x1, _0x200373['_anchorMesh'] = new _0x10c088['a']('anchor',_0x7d99b['utilityLayerScene']), _0x200373['coloredMaterial'] = new _0xe7dd57['a']('',_0x7d99b['utilityLayerScene']), _0x200373['coloredMaterial']['disableLighting'] = !0x0, _0x200373['hoverColoredMaterial'] = new _0xe7dd57['a']('',_0x7d99b['utilityLayerScene']), _0x200373['hoverColoredMaterial']['disableLighting'] = !0x0, _0x200373['_lineBoundingBox'] = new _0x10c088['a']('',_0x7d99b['utilityLayerScene']), _0x200373['_lineBoundingBox']['rotationQuaternion'] = new _0x47d24f['q'](); var _0x1f8d58 = []; _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](0x0,0x0,0x0), new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],0x0,0x0)] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](0x0,0x0,0x0), new _0x47d24f['x'](0x0,_0x200373['_boundingDimensions']['y'],0x0)] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](0x0,0x0,0x0), new _0x47d24f['x'](0x0,0x0,_0x200373['_boundingDimensions']['z'])] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],0x0,0x0), new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],_0x200373['_boundingDimensions']['y'],0x0)] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],0x0,0x0), new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],0x0,_0x200373['_boundingDimensions']['z'])] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](0x0,_0x200373['_boundingDimensions']['y'],0x0), new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],_0x200373['_boundingDimensions']['y'],0x0)] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](0x0,_0x200373['_boundingDimensions']['y'],0x0), new _0x47d24f['x'](0x0,_0x200373['_boundingDimensions']['y'],_0x200373['_boundingDimensions']['z'])] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](0x0,0x0,_0x200373['_boundingDimensions']['z']), new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],0x0,_0x200373['_boundingDimensions']['z'])] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](0x0,0x0,_0x200373['_boundingDimensions']['z']), new _0x47d24f['x'](0x0,_0x200373['_boundingDimensions']['y'],_0x200373['_boundingDimensions']['z'])] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],_0x200373['_boundingDimensions']['y'],_0x200373['_boundingDimensions']['z']), new _0x47d24f['x'](0x0,_0x200373['_boundingDimensions']['y'],_0x200373['_boundingDimensions']['z'])] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],_0x200373['_boundingDimensions']['y'],_0x200373['_boundingDimensions']['z']), new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],0x0,_0x200373['_boundingDimensions']['z'])] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['push'](_0x4c2fa7['a']['CreateLines']('lines', { 'points': [new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],_0x200373['_boundingDimensions']['y'],_0x200373['_boundingDimensions']['z']), new _0x47d24f['x'](_0x200373['_boundingDimensions']['x'],_0x200373['_boundingDimensions']['y'],0x0)] }, _0x7d99b['utilityLayerScene'])), _0x1f8d58['forEach'](function(_0x545f90) { _0x545f90['color'] = _0xd9128e, _0x545f90['position']['addInPlace'](new _0x47d24f['x'](-_0x200373['_boundingDimensions']['x'] / 0x2,-_0x200373['_boundingDimensions']['y'] / 0x2,-_0x200373['_boundingDimensions']['z'] / 0x2)), _0x545f90['isPickable'] = !0x1, _0x200373['_lineBoundingBox']['addChild'](_0x545f90); }), _0x200373['_rootMesh']['addChild'](_0x200373['_lineBoundingBox']), _0x200373['setColor'](_0xd9128e), _0x200373['_rotateSpheresParent'] = new _0x10c088['a']('',_0x7d99b['utilityLayerScene']), _0x200373['_rotateSpheresParent']['rotationQuaternion'] = new _0x47d24f['q'](); for (var _0x41b0b6 = function(_0x3a04d5) { var _0x3b5663 = _0x523a20['a']['CreateSphere']('', { 'diameter': 0x1 }, _0x7d99b['utilityLayerScene']); _0x3b5663['rotationQuaternion'] = new _0x47d24f['q'](), _0x3b5663['material'] = _0x234234['coloredMaterial'], (_0x19fb9e = new _0x292073['a']({}))['moveAttached'] = !0x1, _0x19fb9e['updateDragPlane'] = !0x1, _0x3b5663['addBehavior'](_0x19fb9e); var _0x2d3930 = new _0x47d24f['x'](0x1,0x0,0x0) , _0x2c94e1 = 0x0; _0x19fb9e['onDragStartObservable']['add'](function() { _0x2d3930['copyFrom'](_0x3b5663['forward']), _0x2c94e1 = 0x0; }), _0x19fb9e['onDragObservable']['add'](function(_0x133d0f) { if (_0x200373['onRotationSphereDragObservable']['notifyObservers']({}), _0x200373['attachedMesh']) { var _0x19d23a = _0x200373['attachedMesh']['parent']; if (_0x19d23a && _0x19d23a['scaling'] && _0x19d23a['scaling']['isNonUniformWithinEpsilon'](0.001)) return void _0x3f98cb['a']['Warn']('BoundingBoxGizmo\x20controls\x20are\x20not\x20supported\x20on\x20child\x20meshes\x20with\x20non-uniform\x20parent\x20scaling'); _0x23c3c5['a']['_RemoveAndStorePivotPoint'](_0x200373['attachedMesh']); var _0x2551eb = _0x2d3930 , _0x16fb70 = _0x133d0f['dragPlaneNormal']['scale'](_0x47d24f['x']['Dot'](_0x133d0f['dragPlaneNormal'], _0x2551eb)) , _0x59bd11 = _0x2551eb['subtract'](_0x16fb70)['normalizeToNew']() , _0x112290 = _0x47d24f['x']['Dot'](_0x59bd11, _0x133d0f['delta']) < 0x0 ? Math['abs'](_0x133d0f['delta']['length']()) : -Math['abs'](_0x133d0f['delta']['length']()); _0x112290 = _0x112290 / _0x200373['_boundingDimensions']['length']() * _0x200373['_anchorMesh']['scaling']['length'](), _0x200373['attachedMesh']['rotationQuaternion'] || (_0x200373['attachedMesh']['rotationQuaternion'] = _0x47d24f['q']['RotationYawPitchRoll'](_0x200373['attachedMesh']['rotation']['y'], _0x200373['attachedMesh']['rotation']['x'], _0x200373['attachedMesh']['rotation']['z'])), _0x200373['_anchorMesh']['rotationQuaternion'] || (_0x200373['_anchorMesh']['rotationQuaternion'] = _0x47d24f['q']['RotationYawPitchRoll'](_0x200373['_anchorMesh']['rotation']['y'], _0x200373['_anchorMesh']['rotation']['x'], _0x200373['_anchorMesh']['rotation']['z'])), _0x2c94e1 += _0x112290, Math['abs'](_0x2c94e1) <= 0x2 * Math['PI'] && (_0x3a04d5 >= 0x8 ? _0x47d24f['q']['RotationYawPitchRollToRef'](0x0, 0x0, _0x112290, _0x200373['_tmpQuaternion']) : _0x3a04d5 >= 0x4 ? _0x47d24f['q']['RotationYawPitchRollToRef'](_0x112290, 0x0, 0x0, _0x200373['_tmpQuaternion']) : _0x47d24f['q']['RotationYawPitchRollToRef'](0x0, _0x112290, 0x0, _0x200373['_tmpQuaternion']), _0x200373['_anchorMesh']['addChild'](_0x200373['attachedMesh']), _0x200373['_anchorMesh']['rotationQuaternion']['multiplyToRef'](_0x200373['_tmpQuaternion'], _0x200373['_anchorMesh']['rotationQuaternion']), _0x200373['_anchorMesh']['removeChild'](_0x200373['attachedMesh']), _0x200373['attachedMesh']['setParent'](_0x19d23a)), _0x200373['updateBoundingBox'](), _0x23c3c5['a']['_RestorePivotPoint'](_0x200373['attachedMesh']); } _0x200373['_updateDummy'](); }), _0x19fb9e['onDragStartObservable']['add'](function() { _0x200373['onDragStartObservable']['notifyObservers']({}), _0x200373['_selectNode'](_0x3b5663); }), _0x19fb9e['onDragEndObservable']['add'](function() { _0x200373['onRotationSphereDragEndObservable']['notifyObservers']({}), _0x200373['_selectNode'](null), _0x200373['_updateDummy'](); }), _0x234234['_rotateSpheresParent']['addChild'](_0x3b5663); }, _0x234234 = this, _0x4b2256 = 0x0; _0x4b2256 < 0xc; _0x4b2256++) _0x41b0b6(_0x4b2256); _0x200373['_rootMesh']['addChild'](_0x200373['_rotateSpheresParent']), _0x200373['_scaleBoxesParent'] = new _0x10c088['a']('',_0x7d99b['utilityLayerScene']), _0x200373['_scaleBoxesParent']['rotationQuaternion'] = new _0x47d24f['q'](); for (var _0x516f22 = 0x0; _0x516f22 < 0x2; _0x516f22++) for (var _0x2d8bd2 = 0x0; _0x2d8bd2 < 0x2; _0x2d8bd2++) for (var _0x19fb9e, _0x1153f7 = function() { var _0x6a7401 = _0x401528['a']['CreateBox']('', { 'size': 0x1 }, _0x7d99b['utilityLayerScene']); _0x6a7401['material'] = _0x16c395['coloredMaterial']; var _0x2dedd0 = new _0x47d24f['x'](0x0 == _0x516f22 ? -0x1 : 0x1,0x0 == _0x2d8bd2 ? -0x1 : 0x1,0x0 == _0x4828d2 ? -0x1 : 0x1); (_0x19fb9e = new _0x292073['a']({ 'dragAxis': _0x2dedd0 }))['moveAttached'] = !0x1, _0x6a7401['addBehavior'](_0x19fb9e), _0x19fb9e['onDragObservable']['add'](function(_0x370673) { if (_0x200373['onScaleBoxDragObservable']['notifyObservers']({}), _0x200373['attachedMesh']) { var _0x3645e1 = _0x200373['attachedMesh']['parent']; if (_0x3645e1 && _0x3645e1['scaling'] && _0x3645e1['scaling']['isNonUniformWithinEpsilon'](0.001)) return void _0x3f98cb['a']['Warn']('BoundingBoxGizmo\x20controls\x20are\x20not\x20supported\x20on\x20child\x20meshes\x20with\x20non-uniform\x20parent\x20scaling'); _0x23c3c5['a']['_RemoveAndStorePivotPoint'](_0x200373['attachedMesh']); var _0x5a3f31 = _0x370673['dragDistance'] / _0x200373['_boundingDimensions']['length']() * _0x200373['_anchorMesh']['scaling']['length']() , _0x11c09b = new _0x47d24f['x'](_0x5a3f31,_0x5a3f31,_0x5a3f31); _0x11c09b['scaleInPlace'](_0x200373['_scaleDragSpeed']), _0x200373['updateBoundingBox'](), _0x200373['scalePivot'] ? (_0x200373['attachedMesh']['getWorldMatrix']()['getRotationMatrixToRef'](_0x200373['_tmpRotationMatrix']), _0x200373['_boundingDimensions']['scaleToRef'](0.5, _0x200373['_tmpVector']), _0x47d24f['x']['TransformCoordinatesToRef'](_0x200373['_tmpVector'], _0x200373['_tmpRotationMatrix'], _0x200373['_tmpVector']), _0x200373['_anchorMesh']['position']['subtractInPlace'](_0x200373['_tmpVector']), _0x200373['_boundingDimensions']['multiplyToRef'](_0x200373['scalePivot'], _0x200373['_tmpVector']), _0x47d24f['x']['TransformCoordinatesToRef'](_0x200373['_tmpVector'], _0x200373['_tmpRotationMatrix'], _0x200373['_tmpVector']), _0x200373['_anchorMesh']['position']['addInPlace'](_0x200373['_tmpVector'])) : (_0x6a7401['absolutePosition']['subtractToRef'](_0x200373['_anchorMesh']['position'], _0x200373['_tmpVector']), _0x200373['_anchorMesh']['position']['subtractInPlace'](_0x200373['_tmpVector'])), _0x200373['_anchorMesh']['addChild'](_0x200373['attachedMesh']), _0x200373['_anchorMesh']['scaling']['addInPlace'](_0x11c09b), (_0x200373['_anchorMesh']['scaling']['x'] < 0x0 || _0x200373['_anchorMesh']['scaling']['y'] < 0x0 || _0x200373['_anchorMesh']['scaling']['z'] < 0x0) && _0x200373['_anchorMesh']['scaling']['subtractInPlace'](_0x11c09b), _0x200373['_anchorMesh']['removeChild'](_0x200373['attachedMesh']), _0x200373['attachedMesh']['setParent'](_0x3645e1), _0x23c3c5['a']['_RestorePivotPoint'](_0x200373['attachedMesh']); } _0x200373['_updateDummy'](); }), _0x19fb9e['onDragStartObservable']['add'](function() { _0x200373['onDragStartObservable']['notifyObservers']({}), _0x200373['_selectNode'](_0x6a7401); }), _0x19fb9e['onDragEndObservable']['add'](function() { _0x200373['onScaleBoxDragEndObservable']['notifyObservers']({}), _0x200373['_selectNode'](null), _0x200373['_updateDummy'](); }), _0x16c395['_scaleBoxesParent']['addChild'](_0x6a7401); }, _0x16c395 = this, _0x4828d2 = 0x0; _0x4828d2 < 0x2; _0x4828d2++) _0x1153f7(); _0x200373['_rootMesh']['addChild'](_0x200373['_scaleBoxesParent']); var _0x288acd = new Array(); return _0x200373['_pointerObserver'] = _0x7d99b['utilityLayerScene']['onPointerObservable']['add'](function(_0x2ac785) { _0x288acd[_0x2ac785['event']['pointerId']] ? _0x2ac785['pickInfo'] && _0x2ac785['pickInfo']['pickedMesh'] != _0x288acd[_0x2ac785['event']['pointerId']] && (_0x288acd[_0x2ac785['event']['pointerId']]['material'] = _0x200373['coloredMaterial'], delete _0x288acd[_0x2ac785['event']['pointerId']]) : _0x200373['_rotateSpheresParent']['getChildMeshes']()['concat'](_0x200373['_scaleBoxesParent']['getChildMeshes']())['forEach'](function(_0x617a95) { _0x2ac785['pickInfo'] && _0x2ac785['pickInfo']['pickedMesh'] == _0x617a95 && (_0x288acd[_0x2ac785['event']['pointerId']] = _0x617a95, _0x617a95['material'] = _0x200373['hoverColoredMaterial']); }); }), _0x200373['_renderObserver'] = _0x200373['gizmoLayer']['originalScene']['onBeforeRenderObservable']['add'](function() { _0x200373['attachedMesh'] && !_0x200373['_existingMeshScale']['equals'](_0x200373['attachedMesh']['scaling']) ? _0x200373['updateBoundingBox']() : _0x200373['fixedDragMeshScreenSize'] && (_0x200373['_updateRotationSpheres'](), _0x200373['_updateScaleBoxes']()), _0x200373['_dragMesh'] && _0x200373['attachedMesh'] && _0x200373['pointerDragBehavior']['dragging'] && (_0x200373['_lineBoundingBox']['position']['rotateByQuaternionToRef'](_0x200373['_rootMesh']['rotationQuaternion'], _0x200373['_tmpVector']), _0x200373['attachedMesh']['setAbsolutePosition'](_0x200373['_dragMesh']['position']['add'](_0x200373['_tmpVector']['scale'](-0x1)))); }), _0x200373['updateBoundingBox'](), _0x200373; } return _0x420e5b['d'](_0x5b71b, _0x23c8ef), _0x5b71b['prototype']['setColor'] = function(_0x49a865) { this['coloredMaterial']['emissiveColor'] = _0x49a865, this['hoverColoredMaterial']['emissiveColor'] = _0x49a865['clone']()['add'](new _0x47d24f['e'](0.3,0.3,0.3)), this['_lineBoundingBox']['getChildren']()['forEach'](function(_0x1964a7) { _0x1964a7['color'] && (_0x1964a7['color'] = _0x49a865); }); } , _0x5b71b['prototype']['_attachedMeshChanged'] = function(_0x56c591) { var _0x560fc6 = this; if (_0x56c591) { _0x23c3c5['a']['_RemoveAndStorePivotPoint'](_0x56c591); var _0xb3bed5 = _0x56c591['parent']; this['_anchorMesh']['addChild'](_0x56c591), this['_anchorMesh']['removeChild'](_0x56c591), _0x56c591['setParent'](_0xb3bed5), _0x23c3c5['a']['_RestorePivotPoint'](_0x56c591), this['updateBoundingBox'](), _0x56c591['getChildMeshes'](!0x1)['forEach'](function(_0x3469c7) { _0x3469c7['markAsDirty']('scaling'); }), this['gizmoLayer']['utilityLayerScene']['onAfterRenderObservable']['addOnce'](function() { _0x560fc6['_updateDummy'](); }); } } , _0x5b71b['prototype']['_selectNode'] = function(_0x3573bf) { this['_rotateSpheresParent']['getChildMeshes']()['concat'](this['_scaleBoxesParent']['getChildMeshes']())['forEach'](function(_0x327849) { _0x327849['isVisible'] = !_0x3573bf || _0x327849 == _0x3573bf; }); } , _0x5b71b['prototype']['updateBoundingBox'] = function() { if (this['attachedMesh']) { _0x23c3c5['a']['_RemoveAndStorePivotPoint'](this['attachedMesh']); var _0x1fcf77 = this['attachedMesh']['parent']; this['attachedMesh']['setParent'](null); var _0x136ac4 = null; this['attachedMesh']['skeleton'] && (_0x136ac4 = this['attachedMesh']['skeleton']['overrideMesh'], this['attachedMesh']['skeleton']['overrideMesh'] = null), this['_update'](), this['attachedMesh']['rotationQuaternion'] || (this['attachedMesh']['rotationQuaternion'] = _0x47d24f['q']['RotationYawPitchRoll'](this['attachedMesh']['rotation']['y'], this['attachedMesh']['rotation']['x'], this['attachedMesh']['rotation']['z'])), this['_anchorMesh']['rotationQuaternion'] || (this['_anchorMesh']['rotationQuaternion'] = _0x47d24f['q']['RotationYawPitchRoll'](this['_anchorMesh']['rotation']['y'], this['_anchorMesh']['rotation']['x'], this['_anchorMesh']['rotation']['z'])), this['_anchorMesh']['rotationQuaternion']['copyFrom'](this['attachedMesh']['rotationQuaternion']), this['_tmpQuaternion']['copyFrom'](this['attachedMesh']['rotationQuaternion']), this['_tmpVector']['copyFrom'](this['attachedMesh']['position']), this['attachedMesh']['rotationQuaternion']['set'](0x0, 0x0, 0x0, 0x1), this['attachedMesh']['position']['set'](0x0, 0x0, 0x0); var _0x23e1d3 = this['attachedMesh']['getHierarchyBoundingVectors'](!this['ignoreChildren'], this['includeChildPredicate']); _0x23e1d3['max']['subtractToRef'](_0x23e1d3['min'], this['_boundingDimensions']), this['_lineBoundingBox']['scaling']['copyFrom'](this['_boundingDimensions']), this['_lineBoundingBox']['position']['set']((_0x23e1d3['max']['x'] + _0x23e1d3['min']['x']) / 0x2, (_0x23e1d3['max']['y'] + _0x23e1d3['min']['y']) / 0x2, (_0x23e1d3['max']['z'] + _0x23e1d3['min']['z']) / 0x2), this['_rotateSpheresParent']['position']['copyFrom'](this['_lineBoundingBox']['position']), this['_scaleBoxesParent']['position']['copyFrom'](this['_lineBoundingBox']['position']), this['_lineBoundingBox']['computeWorldMatrix'](), this['_anchorMesh']['position']['copyFrom'](this['_lineBoundingBox']['absolutePosition']), this['attachedMesh']['rotationQuaternion']['copyFrom'](this['_tmpQuaternion']), this['attachedMesh']['position']['copyFrom'](this['_tmpVector']), this['attachedMesh']['setParent'](_0x1fcf77), this['attachedMesh']['skeleton'] && (this['attachedMesh']['skeleton']['overrideMesh'] = _0x136ac4); } this['_updateRotationSpheres'](), this['_updateScaleBoxes'](), this['attachedMesh'] && (this['_existingMeshScale']['copyFrom'](this['attachedMesh']['scaling']), _0x23c3c5['a']['_RestorePivotPoint'](this['attachedMesh'])); } , _0x5b71b['prototype']['_updateRotationSpheres'] = function() { for (var _0x267c48 = this['_rotateSpheresParent']['getChildMeshes'](), _0x150cc0 = 0x0; _0x150cc0 < 0x3; _0x150cc0++) for (var _0x5c1391 = 0x0; _0x5c1391 < 0x2; _0x5c1391++) for (var _0x2499b0 = 0x0; _0x2499b0 < 0x2; _0x2499b0++) { var _0x2c4ef2 = 0x4 * _0x150cc0 + 0x2 * _0x5c1391 + _0x2499b0; if (0x0 == _0x150cc0 && (_0x267c48[_0x2c4ef2]['position']['set'](this['_boundingDimensions']['x'] / 0x2, this['_boundingDimensions']['y'] * _0x5c1391, this['_boundingDimensions']['z'] * _0x2499b0), _0x267c48[_0x2c4ef2]['position']['addInPlace'](new _0x47d24f['x'](-this['_boundingDimensions']['x'] / 0x2,-this['_boundingDimensions']['y'] / 0x2,-this['_boundingDimensions']['z'] / 0x2)), _0x267c48[_0x2c4ef2]['lookAt'](_0x47d24f['x']['Cross'](_0x267c48[_0x2c4ef2]['position']['normalizeToNew'](), _0x47d24f['x']['Right']())['normalizeToNew']()['add'](_0x267c48[_0x2c4ef2]['position']))), 0x1 == _0x150cc0 && (_0x267c48[_0x2c4ef2]['position']['set'](this['_boundingDimensions']['x'] * _0x5c1391, this['_boundingDimensions']['y'] / 0x2, this['_boundingDimensions']['z'] * _0x2499b0), _0x267c48[_0x2c4ef2]['position']['addInPlace'](new _0x47d24f['x'](-this['_boundingDimensions']['x'] / 0x2,-this['_boundingDimensions']['y'] / 0x2,-this['_boundingDimensions']['z'] / 0x2)), _0x267c48[_0x2c4ef2]['lookAt'](_0x47d24f['x']['Cross'](_0x267c48[_0x2c4ef2]['position']['normalizeToNew'](), _0x47d24f['x']['Up']())['normalizeToNew']()['add'](_0x267c48[_0x2c4ef2]['position']))), 0x2 == _0x150cc0 && (_0x267c48[_0x2c4ef2]['position']['set'](this['_boundingDimensions']['x'] * _0x5c1391, this['_boundingDimensions']['y'] * _0x2499b0, this['_boundingDimensions']['z'] / 0x2), _0x267c48[_0x2c4ef2]['position']['addInPlace'](new _0x47d24f['x'](-this['_boundingDimensions']['x'] / 0x2,-this['_boundingDimensions']['y'] / 0x2,-this['_boundingDimensions']['z'] / 0x2)), _0x267c48[_0x2c4ef2]['lookAt'](_0x47d24f['x']['Cross'](_0x267c48[_0x2c4ef2]['position']['normalizeToNew'](), _0x47d24f['x']['Forward']())['normalizeToNew']()['add'](_0x267c48[_0x2c4ef2]['position']))), this['fixedDragMeshScreenSize'] && this['gizmoLayer']['utilityLayerScene']['activeCamera']) { _0x267c48[_0x2c4ef2]['absolutePosition']['subtractToRef'](this['gizmoLayer']['utilityLayerScene']['activeCamera']['position'], this['_tmpVector']); var _0x3a7ed4 = this['rotationSphereSize'] * this['_tmpVector']['length']() / this['fixedDragMeshScreenSizeDistanceFactor']; _0x267c48[_0x2c4ef2]['scaling']['set'](_0x3a7ed4, _0x3a7ed4, _0x3a7ed4); } else _0x267c48[_0x2c4ef2]['scaling']['set'](this['rotationSphereSize'], this['rotationSphereSize'], this['rotationSphereSize']); } } , _0x5b71b['prototype']['_updateScaleBoxes'] = function() { for (var _0x32b0f8 = this['_scaleBoxesParent']['getChildMeshes'](), _0x5755c2 = 0x0; _0x5755c2 < 0x2; _0x5755c2++) for (var _0x50a9f0 = 0x0; _0x50a9f0 < 0x2; _0x50a9f0++) for (var _0x4d6488 = 0x0; _0x4d6488 < 0x2; _0x4d6488++) { var _0x3a81fe = 0x4 * _0x5755c2 + 0x2 * _0x50a9f0 + _0x4d6488; if (_0x32b0f8[_0x3a81fe]) if (_0x32b0f8[_0x3a81fe]['position']['set'](this['_boundingDimensions']['x'] * _0x5755c2, this['_boundingDimensions']['y'] * _0x50a9f0, this['_boundingDimensions']['z'] * _0x4d6488), _0x32b0f8[_0x3a81fe]['position']['addInPlace'](new _0x47d24f['x'](-this['_boundingDimensions']['x'] / 0x2,-this['_boundingDimensions']['y'] / 0x2,-this['_boundingDimensions']['z'] / 0x2)), this['fixedDragMeshScreenSize'] && this['gizmoLayer']['utilityLayerScene']['activeCamera']) { _0x32b0f8[_0x3a81fe]['absolutePosition']['subtractToRef'](this['gizmoLayer']['utilityLayerScene']['activeCamera']['position'], this['_tmpVector']); var _0x1cfedd = this['scaleBoxSize'] * this['_tmpVector']['length']() / this['fixedDragMeshScreenSizeDistanceFactor']; _0x32b0f8[_0x3a81fe]['scaling']['set'](_0x1cfedd, _0x1cfedd, _0x1cfedd); } else _0x32b0f8[_0x3a81fe]['scaling']['set'](this['scaleBoxSize'], this['scaleBoxSize'], this['scaleBoxSize']); } } , _0x5b71b['prototype']['setEnabledRotationAxis'] = function(_0x9362d6) { this['_rotateSpheresParent']['getChildMeshes']()['forEach'](function(_0x107b18, _0x40c572) { _0x40c572 < 0x4 ? _0x107b18['setEnabled'](-0x1 != _0x9362d6['indexOf']('x')) : _0x40c572 < 0x8 ? _0x107b18['setEnabled'](-0x1 != _0x9362d6['indexOf']('y')) : _0x107b18['setEnabled'](-0x1 != _0x9362d6['indexOf']('z')); }); } , _0x5b71b['prototype']['setEnabledScaling'] = function(_0xf6ad78) { this['_scaleBoxesParent']['getChildMeshes']()['forEach'](function(_0x43e4a1, _0x4d10df) { _0x43e4a1['setEnabled'](_0xf6ad78); }); } , _0x5b71b['prototype']['_updateDummy'] = function() { this['_dragMesh'] && (this['_dragMesh']['position']['copyFrom'](this['_lineBoundingBox']['getAbsolutePosition']()), this['_dragMesh']['scaling']['copyFrom'](this['_lineBoundingBox']['scaling']), this['_dragMesh']['rotationQuaternion']['copyFrom'](this['_rootMesh']['rotationQuaternion'])); } , _0x5b71b['prototype']['enableDragBehavior'] = function() { this['_dragMesh'] = _0xb4719b['a']['CreateBox']('dummy', 0x1, this['gizmoLayer']['utilityLayerScene']), this['_dragMesh']['visibility'] = 0x0, this['_dragMesh']['rotationQuaternion'] = new _0x47d24f['q'](), this['pointerDragBehavior']['useObjectOrienationForDragging'] = !0x1, this['_dragMesh']['addBehavior'](this['pointerDragBehavior']); } , _0x5b71b['prototype']['dispose'] = function() { this['gizmoLayer']['utilityLayerScene']['onPointerObservable']['remove'](this['_pointerObserver']), this['gizmoLayer']['originalScene']['onBeforeRenderObservable']['remove'](this['_renderObserver']), this['_lineBoundingBox']['dispose'](), this['_rotateSpheresParent']['dispose'](), this['_scaleBoxesParent']['dispose'](), this['_dragMesh'] && this['_dragMesh']['dispose'](), _0x23c8ef['prototype']['dispose']['call'](this); } , _0x5b71b['MakeNotPickableAndWrapInBoundingBox'] = function(_0x435752) { var _0x257cd4 = function(_0x1e3561) { _0x1e3561['isPickable'] = !0x1, _0x1e3561['getChildMeshes']()['forEach'](function(_0xe051a0) { _0x257cd4(_0xe051a0); }); }; _0x257cd4(_0x435752), _0x435752['rotationQuaternion'] || (_0x435752['rotationQuaternion'] = _0x47d24f['q']['RotationYawPitchRoll'](_0x435752['rotation']['y'], _0x435752['rotation']['x'], _0x435752['rotation']['z'])); var _0x2681c2 = _0x435752['position']['clone']() , _0x288335 = _0x435752['rotationQuaternion']['clone'](); _0x435752['rotationQuaternion']['set'](0x0, 0x0, 0x0, 0x1), _0x435752['position']['set'](0x0, 0x0, 0x0); var _0x15e1e0 = _0x401528['a']['CreateBox']('box', { 'size': 0x1 }, _0x435752['getScene']()) , _0x40bc8d = _0x435752['getHierarchyBoundingVectors'](); return _0x40bc8d['max']['subtractToRef'](_0x40bc8d['min'], _0x15e1e0['scaling']), 0x0 === _0x15e1e0['scaling']['y'] && (_0x15e1e0['scaling']['y'] = _0x47d24f['h']), 0x0 === _0x15e1e0['scaling']['x'] && (_0x15e1e0['scaling']['x'] = _0x47d24f['h']), 0x0 === _0x15e1e0['scaling']['z'] && (_0x15e1e0['scaling']['z'] = _0x47d24f['h']), _0x15e1e0['position']['set']((_0x40bc8d['max']['x'] + _0x40bc8d['min']['x']) / 0x2, (_0x40bc8d['max']['y'] + _0x40bc8d['min']['y']) / 0x2, (_0x40bc8d['max']['z'] + _0x40bc8d['min']['z']) / 0x2), _0x435752['addChild'](_0x15e1e0), _0x435752['rotationQuaternion']['copyFrom'](_0x288335), _0x435752['position']['copyFrom'](_0x2681c2), _0x435752['removeChild'](_0x15e1e0), _0x15e1e0['addChild'](_0x435752), _0x15e1e0['visibility'] = 0x0, _0x15e1e0; } , _0x5b71b['prototype']['setCustomMesh'] = function(_0x394704) { _0x3f98cb['a']['Error']('Custom\x20meshes\x20are\x20not\x20supported\x20on\x20this\x20gizmo'); } , _0x5b71b; }(_0x1f7c5e['a']) , _0x599bce = function(_0x164a5d) { function _0x20f292(_0x532650, _0x19e528, _0x5ce4b3, _0x80d7c8) { void 0x0 === _0x19e528 && (_0x19e528 = _0x47d24f['e']['Gray']()), void 0x0 === _0x5ce4b3 && (_0x5ce4b3 = _0x1d5ec6['a']['DefaultUtilityLayer']), void 0x0 === _0x80d7c8 && (_0x80d7c8 = 0x20); var _0x314ed8 = _0x164a5d['call'](this, _0x5ce4b3) || this; _0x314ed8['_pointerObserver'] = null, _0x314ed8['snapDistance'] = 0x0, _0x314ed8['onSnapObservable'] = new _0x2dbec2['c'](); var _0x1182b = new _0xe7dd57['a']('',_0x5ce4b3['utilityLayerScene']); _0x1182b['diffuseColor'] = _0x19e528, _0x1182b['specularColor'] = _0x19e528['subtract'](new _0x47d24f['e'](0.1,0.1,0.1)); var _0x5d5cee = new _0xe7dd57['a']('',_0x5ce4b3['utilityLayerScene']); _0x5d5cee['diffuseColor'] = _0x19e528['add'](new _0x47d24f['e'](0.3,0.3,0.3)); var _0x4ed2e2 = new _0x10c088['a']('',_0x5ce4b3['utilityLayerScene']) , _0x3372b7 = _0xb4719b['a']['CreateTorus']('', 0.6, 0.03, _0x80d7c8, _0x5ce4b3['utilityLayerScene']); _0x3372b7['visibility'] = 0x0; var _0x4ff1c8 = _0xb4719b['a']['CreateTorus']('', 0.6, 0.005, _0x80d7c8, _0x5ce4b3['utilityLayerScene']); _0x4ff1c8['material'] = _0x1182b, _0x4ff1c8['rotation']['x'] = Math['PI'] / 0x2, _0x3372b7['rotation']['x'] = Math['PI'] / 0x2, _0x4ed2e2['addChild'](_0x4ff1c8), _0x4ed2e2['addChild'](_0x3372b7), _0x4ed2e2['lookAt'](_0x314ed8['_rootMesh']['position']['add'](_0x532650)), _0x314ed8['_rootMesh']['addChild'](_0x4ed2e2), _0x4ed2e2['scaling']['scaleInPlace'](0x1 / 0x3), _0x314ed8['dragBehavior'] = new _0x292073['a']({ 'dragPlaneNormal': _0x532650 }), _0x314ed8['dragBehavior']['moveAttached'] = !0x1, _0x314ed8['dragBehavior']['maxDragAngle'] = 0x9 * Math['PI'] / 0x14, _0x314ed8['dragBehavior']['_useAlternatePickedPointAboveMaxDragAngle'] = !0x0, _0x314ed8['_rootMesh']['addBehavior'](_0x314ed8['dragBehavior']); var _0x5bd73f = new _0x47d24f['x'](); _0x314ed8['dragBehavior']['onDragStartObservable']['add'](function(_0x7a0d69) { _0x314ed8['attachedMesh'] && _0x5bd73f['copyFrom'](_0x7a0d69['dragPlanePoint']); }); var _0x2d4c4b = new _0x47d24f['j']() , _0x4c55bd = new _0x47d24f['x']() , _0x29aa03 = new _0x47d24f['x']() , _0x27d0ea = { 'snapDistance': 0x0 } , _0x59c2c2 = 0x0 , _0xf26032 = new _0x47d24f['j']() , _0x4b9887 = new _0x47d24f['x']() , _0x3b13d8 = new _0x47d24f['q'](); _0x314ed8['dragBehavior']['onDragObservable']['add'](function(_0x3b7f9d) { if (_0x314ed8['attachedMesh']) { _0x314ed8['attachedMesh']['rotationQuaternion'] || (_0x314ed8['attachedMesh']['rotationQuaternion'] = _0x47d24f['q']['RotationYawPitchRoll'](_0x314ed8['attachedMesh']['rotation']['y'], _0x314ed8['attachedMesh']['rotation']['x'], _0x314ed8['attachedMesh']['rotation']['z'])); var _0x28efcf = _0x314ed8['attachedMesh']['parent']; _0x28efcf && _0x314ed8['attachedMesh']['setParent'](null); var _0x39852b = _0x3b7f9d['dragPlanePoint']['subtract'](_0x314ed8['attachedMesh']['absolutePosition'])['normalize']() , _0x448685 = _0x5bd73f['subtract'](_0x314ed8['attachedMesh']['absolutePosition'])['normalize']() , _0x4d7b9c = _0x47d24f['x']['Cross'](_0x39852b, _0x448685) , _0x1386dc = _0x47d24f['x']['Dot'](_0x39852b, _0x448685) , _0x335752 = Math['atan2'](_0x4d7b9c['length'](), _0x1386dc); if (_0x4c55bd['copyFrom'](_0x532650), _0x29aa03['copyFrom'](_0x532650), _0x314ed8['updateGizmoRotationToMatchAttachedMesh'] && (_0x314ed8['attachedMesh']['rotationQuaternion']['toRotationMatrix'](_0x2d4c4b), _0x29aa03 = _0x47d24f['x']['TransformCoordinates'](_0x4c55bd, _0x2d4c4b)), _0x5ce4b3['utilityLayerScene']['activeCamera']) { var _0x2fbe02 = _0x5ce4b3['utilityLayerScene']['activeCamera']['position']['subtract'](_0x314ed8['attachedMesh']['position']); _0x47d24f['x']['Dot'](_0x2fbe02, _0x29aa03) > 0x0 && (_0x4c55bd['scaleInPlace'](-0x1), _0x29aa03['scaleInPlace'](-0x1)); } _0x47d24f['x']['Dot'](_0x29aa03, _0x4d7b9c) > 0x0 && (_0x335752 = -_0x335752); var _0x17d9b3 = !0x1; if (0x0 != _0x314ed8['snapDistance']) if (_0x59c2c2 += _0x335752, Math['abs'](_0x59c2c2) > _0x314ed8['snapDistance']) { var _0x5e7be4 = Math['floor'](Math['abs'](_0x59c2c2) / _0x314ed8['snapDistance']); _0x59c2c2 < 0x0 && (_0x5e7be4 *= -0x1), _0x59c2c2 %= _0x314ed8['snapDistance'], _0x335752 = _0x314ed8['snapDistance'] * _0x5e7be4, _0x17d9b3 = !0x0; } else _0x335752 = 0x0; _0xf26032['reset'](), _0x314ed8['attachedMesh']['parent'] && (_0x314ed8['attachedMesh']['parent']['computeWorldMatrix']()['invertToRef'](_0xf26032), _0xf26032['getRotationMatrixToRef'](_0xf26032), _0x47d24f['x']['TransformCoordinatesToRef'](_0x4c55bd, _0xf26032, _0x4c55bd)); var _0x3537ff = Math['sin'](_0x335752 / 0x2); _0x3b13d8['set'](_0x4c55bd['x'] * _0x3537ff, _0x4c55bd['y'] * _0x3537ff, _0x4c55bd['z'] * _0x3537ff, Math['cos'](_0x335752 / 0x2)), _0xf26032['determinant']() > 0x0 && (_0x3b13d8['toEulerAnglesToRef'](_0x4b9887), _0x47d24f['q']['RotationYawPitchRollToRef'](_0x4b9887['y'], -_0x4b9887['x'], -_0x4b9887['z'], _0x3b13d8)), _0x314ed8['updateGizmoRotationToMatchAttachedMesh'] ? _0x314ed8['attachedMesh']['rotationQuaternion']['multiplyToRef'](_0x3b13d8, _0x314ed8['attachedMesh']['rotationQuaternion']) : _0x3b13d8['multiplyToRef'](_0x314ed8['attachedMesh']['rotationQuaternion'], _0x314ed8['attachedMesh']['rotationQuaternion']), _0x5bd73f['copyFrom'](_0x3b7f9d['dragPlanePoint']), _0x17d9b3 && (_0x27d0ea['snapDistance'] = _0x335752, _0x314ed8['onSnapObservable']['notifyObservers'](_0x27d0ea)), _0x28efcf && _0x314ed8['attachedMesh']['setParent'](_0x28efcf); } }), _0x314ed8['_pointerObserver'] = _0x5ce4b3['utilityLayerScene']['onPointerObservable']['add'](function(_0x216e27) { if (!_0x314ed8['_customMeshSet']) { var _0x2e1264 = _0x216e27['pickInfo'] && -0x1 != _0x314ed8['_rootMesh']['getChildMeshes']()['indexOf'](_0x216e27['pickInfo']['pickedMesh']) ? _0x5d5cee : _0x1182b; _0x314ed8['_rootMesh']['getChildMeshes']()['forEach'](function(_0x34d30c) { _0x34d30c['material'] = _0x2e1264, _0x34d30c['color'] && (_0x34d30c['color'] = _0x2e1264['diffuseColor']); }); } }); var _0x26e1e7 = _0x5ce4b3['_getSharedGizmoLight'](); return _0x26e1e7['includedOnlyMeshes'] = _0x26e1e7['includedOnlyMeshes']['concat'](_0x314ed8['_rootMesh']['getChildMeshes'](!0x1)), _0x314ed8; } return _0x420e5b['d'](_0x20f292, _0x164a5d), _0x20f292['prototype']['_attachedMeshChanged'] = function(_0x2c2898) { this['dragBehavior'] && (this['dragBehavior']['enabled'] = !!_0x2c2898); } , _0x20f292['prototype']['dispose'] = function() { this['onSnapObservable']['clear'](), this['gizmoLayer']['utilityLayerScene']['onPointerObservable']['remove'](this['_pointerObserver']), this['dragBehavior']['detach'](), _0x164a5d['prototype']['dispose']['call'](this); } , _0x20f292; }(_0x1f7c5e['a']) , _0x25dc9b = function(_0x3143c0) { function _0x1a33f7(_0x4a39b6, _0x520506) { void 0x0 === _0x4a39b6 && (_0x4a39b6 = _0x1d5ec6['a']['DefaultUtilityLayer']), void 0x0 === _0x520506 && (_0x520506 = 0x20); var _0x12c12a = _0x3143c0['call'](this, _0x4a39b6) || this; return _0x12c12a['onDragStartObservable'] = new _0x2dbec2['c'](), _0x12c12a['onDragEndObservable'] = new _0x2dbec2['c'](), _0x12c12a['xGizmo'] = new _0x599bce(new _0x47d24f['x'](0x1,0x0,0x0),_0x47d24f['e']['Red']()['scale'](0.5),_0x4a39b6,_0x520506), _0x12c12a['yGizmo'] = new _0x599bce(new _0x47d24f['x'](0x0,0x1,0x0),_0x47d24f['e']['Green']()['scale'](0.5),_0x4a39b6,_0x520506), _0x12c12a['zGizmo'] = new _0x599bce(new _0x47d24f['x'](0x0,0x0,0x1),_0x47d24f['e']['Blue']()['scale'](0.5),_0x4a39b6,_0x520506), [_0x12c12a['xGizmo'], _0x12c12a['yGizmo'], _0x12c12a['zGizmo']]['forEach'](function(_0x1a0e2b) { _0x1a0e2b['dragBehavior']['onDragStartObservable']['add'](function() { _0x12c12a['onDragStartObservable']['notifyObservers']({}); }), _0x1a0e2b['dragBehavior']['onDragEndObservable']['add'](function() { _0x12c12a['onDragEndObservable']['notifyObservers']({}); }); }), _0x12c12a['attachedMesh'] = null, _0x12c12a; } return _0x420e5b['d'](_0x1a33f7, _0x3143c0), Object['defineProperty'](_0x1a33f7['prototype'], 'attachedMesh', { 'get': function() { return this['xGizmo']['attachedMesh']; }, 'set': function(_0x3b6724) { this['xGizmo'] && (this['xGizmo']['attachedMesh'] = _0x3b6724, this['yGizmo']['attachedMesh'] = _0x3b6724, this['zGizmo']['attachedMesh'] = _0x3b6724); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1a33f7['prototype'], 'updateGizmoRotationToMatchAttachedMesh', { 'get': function() { return this['xGizmo']['updateGizmoRotationToMatchAttachedMesh']; }, 'set': function(_0x56cc3a) { this['xGizmo'] && (this['xGizmo']['updateGizmoRotationToMatchAttachedMesh'] = _0x56cc3a, this['yGizmo']['updateGizmoRotationToMatchAttachedMesh'] = _0x56cc3a, this['zGizmo']['updateGizmoRotationToMatchAttachedMesh'] = _0x56cc3a); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1a33f7['prototype'], 'snapDistance', { 'get': function() { return this['xGizmo']['snapDistance']; }, 'set': function(_0x49d012) { this['xGizmo'] && (this['xGizmo']['snapDistance'] = _0x49d012, this['yGizmo']['snapDistance'] = _0x49d012, this['zGizmo']['snapDistance'] = _0x49d012); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1a33f7['prototype'], 'scaleRatio', { 'get': function() { return this['xGizmo']['scaleRatio']; }, 'set': function(_0x507cf9) { this['xGizmo'] && (this['xGizmo']['scaleRatio'] = _0x507cf9, this['yGizmo']['scaleRatio'] = _0x507cf9, this['zGizmo']['scaleRatio'] = _0x507cf9); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1a33f7['prototype']['dispose'] = function() { this['xGizmo']['dispose'](), this['yGizmo']['dispose'](), this['zGizmo']['dispose'](), this['onDragStartObservable']['clear'](), this['onDragEndObservable']['clear'](); } , _0x1a33f7['prototype']['setCustomMesh'] = function(_0x899d1a) { _0x3f98cb['a']['Error']('Custom\x20meshes\x20are\x20not\x20supported\x20on\x20this\x20gizmo,\x20please\x20set\x20the\x20custom\x20meshes\x20on\x20the\x20gizmos\x20contained\x20within\x20this\x20one\x20(gizmo.xGizmo,\x20gizmo.yGizmo,\x20gizmo.zGizmo)'); } , _0x1a33f7; }(_0x1f7c5e['a']) , _0x3773db = function(_0x412e1e) { function _0xfb2a99(_0x34831d) { void 0x0 === _0x34831d && (_0x34831d = _0x1d5ec6['a']['DefaultUtilityLayer']); var _0x6e375e = _0x412e1e['call'](this, _0x34831d) || this; return _0x6e375e['onDragStartObservable'] = new _0x2dbec2['c'](), _0x6e375e['onDragEndObservable'] = new _0x2dbec2['c'](), _0x6e375e['xGizmo'] = new _0xb03fb9['a'](new _0x47d24f['x'](0x1,0x0,0x0),_0x47d24f['e']['Red']()['scale'](0.5),_0x34831d), _0x6e375e['yGizmo'] = new _0xb03fb9['a'](new _0x47d24f['x'](0x0,0x1,0x0),_0x47d24f['e']['Green']()['scale'](0.5),_0x34831d), _0x6e375e['zGizmo'] = new _0xb03fb9['a'](new _0x47d24f['x'](0x0,0x0,0x1),_0x47d24f['e']['Blue']()['scale'](0.5),_0x34831d), [_0x6e375e['xGizmo'], _0x6e375e['yGizmo'], _0x6e375e['zGizmo']]['forEach'](function(_0x4c3872) { _0x4c3872['dragBehavior']['onDragStartObservable']['add'](function() { _0x6e375e['onDragStartObservable']['notifyObservers']({}); }), _0x4c3872['dragBehavior']['onDragEndObservable']['add'](function() { _0x6e375e['onDragEndObservable']['notifyObservers']({}); }); }), _0x6e375e['attachedMesh'] = null, _0x6e375e; } return _0x420e5b['d'](_0xfb2a99, _0x412e1e), Object['defineProperty'](_0xfb2a99['prototype'], 'attachedMesh', { 'get': function() { return this['xGizmo']['attachedMesh']; }, 'set': function(_0x59c79e) { this['xGizmo'] && (this['xGizmo']['attachedMesh'] = _0x59c79e, this['yGizmo']['attachedMesh'] = _0x59c79e, this['zGizmo']['attachedMesh'] = _0x59c79e); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xfb2a99['prototype'], 'updateGizmoRotationToMatchAttachedMesh', { 'get': function() { return this['xGizmo']['updateGizmoRotationToMatchAttachedMesh']; }, 'set': function(_0x2d85a8) { this['xGizmo'] && (this['xGizmo']['updateGizmoRotationToMatchAttachedMesh'] = _0x2d85a8, this['yGizmo']['updateGizmoRotationToMatchAttachedMesh'] = _0x2d85a8, this['zGizmo']['updateGizmoRotationToMatchAttachedMesh'] = _0x2d85a8); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xfb2a99['prototype'], 'snapDistance', { 'get': function() { return this['xGizmo']['snapDistance']; }, 'set': function(_0x2fb25f) { this['xGizmo'] && (this['xGizmo']['snapDistance'] = _0x2fb25f, this['yGizmo']['snapDistance'] = _0x2fb25f, this['zGizmo']['snapDistance'] = _0x2fb25f); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xfb2a99['prototype'], 'scaleRatio', { 'get': function() { return this['xGizmo']['scaleRatio']; }, 'set': function(_0x2e5d34) { this['xGizmo'] && (this['xGizmo']['scaleRatio'] = _0x2e5d34, this['yGizmo']['scaleRatio'] = _0x2e5d34, this['zGizmo']['scaleRatio'] = _0x2e5d34); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xfb2a99['prototype']['dispose'] = function() { this['xGizmo']['dispose'](), this['yGizmo']['dispose'](), this['zGizmo']['dispose'](), this['onDragStartObservable']['clear'](), this['onDragEndObservable']['clear'](); } , _0xfb2a99['prototype']['setCustomMesh'] = function(_0x46add0) { _0x3f98cb['a']['Error']('Custom\x20meshes\x20are\x20not\x20supported\x20on\x20this\x20gizmo,\x20please\x20set\x20the\x20custom\x20meshes\x20on\x20the\x20gizmos\x20contained\x20within\x20this\x20one\x20(gizmo.xGizmo,\x20gizmo.yGizmo,\x20gizmo.zGizmo)'); } , _0xfb2a99; }(_0x1f7c5e['a']); _0xb31206['a']['CreatePolyhedron'] = function(_0x3ca018) { var _0x3d7cbc = []; _0x3d7cbc[0x0] = { 'vertex': [[0x0, 0x0, 1.732051], [1.632993, 0x0, -0.5773503], [-0.8164966, 1.414214, -0.5773503], [-0.8164966, -1.414214, -0.5773503]], 'face': [[0x0, 0x1, 0x2], [0x0, 0x2, 0x3], [0x0, 0x3, 0x1], [0x1, 0x3, 0x2]] }, _0x3d7cbc[0x1] = { 'vertex': [[0x0, 0x0, 1.414214], [1.414214, 0x0, 0x0], [0x0, 1.414214, 0x0], [-1.414214, 0x0, 0x0], [0x0, -1.414214, 0x0], [0x0, 0x0, -1.414214]], 'face': [[0x0, 0x1, 0x2], [0x0, 0x2, 0x3], [0x0, 0x3, 0x4], [0x0, 0x4, 0x1], [0x1, 0x4, 0x5], [0x1, 0x5, 0x2], [0x2, 0x5, 0x3], [0x3, 0x5, 0x4]] }, _0x3d7cbc[0x2] = { 'vertex': [[0x0, 0x0, 1.070466], [0.7136442, 0x0, 0.7978784], [-0.3568221, 0.618034, 0.7978784], [-0.3568221, -0.618034, 0.7978784], [0.7978784, 0.618034, 0.3568221], [0.7978784, -0.618034, 0.3568221], [-0.9341724, 0.381966, 0.3568221], [0.1362939, 0x1, 0.3568221], [0.1362939, -0x1, 0.3568221], [-0.9341724, -0.381966, 0.3568221], [0.9341724, 0.381966, -0.3568221], [0.9341724, -0.381966, -0.3568221], [-0.7978784, 0.618034, -0.3568221], [-0.1362939, 0x1, -0.3568221], [-0.1362939, -0x1, -0.3568221], [-0.7978784, -0.618034, -0.3568221], [0.3568221, 0.618034, -0.7978784], [0.3568221, -0.618034, -0.7978784], [-0.7136442, 0x0, -0.7978784], [0x0, 0x0, -1.070466]], 'face': [[0x0, 0x1, 0x4, 0x7, 0x2], [0x0, 0x2, 0x6, 0x9, 0x3], [0x0, 0x3, 0x8, 0x5, 0x1], [0x1, 0x5, 0xb, 0xa, 0x4], [0x2, 0x7, 0xd, 0xc, 0x6], [0x3, 0x9, 0xf, 0xe, 0x8], [0x4, 0xa, 0x10, 0xd, 0x7], [0x5, 0x8, 0xe, 0x11, 0xb], [0x6, 0xc, 0x12, 0xf, 0x9], [0xa, 0xb, 0x11, 0x13, 0x10], [0xc, 0xd, 0x10, 0x13, 0x12], [0xe, 0xf, 0x12, 0x13, 0x11]] }, _0x3d7cbc[0x3] = { 'vertex': [[0x0, 0x0, 1.175571], [1.051462, 0x0, 0.5257311], [0.3249197, 0x1, 0.5257311], [-0.8506508, 0.618034, 0.5257311], [-0.8506508, -0.618034, 0.5257311], [0.3249197, -0x1, 0.5257311], [0.8506508, 0.618034, -0.5257311], [0.8506508, -0.618034, -0.5257311], [-0.3249197, 0x1, -0.5257311], [-1.051462, 0x0, -0.5257311], [-0.3249197, -0x1, -0.5257311], [0x0, 0x0, -1.175571]], 'face': [[0x0, 0x1, 0x2], [0x0, 0x2, 0x3], [0x0, 0x3, 0x4], [0x0, 0x4, 0x5], [0x0, 0x5, 0x1], [0x1, 0x5, 0x7], [0x1, 0x7, 0x6], [0x1, 0x6, 0x2], [0x2, 0x6, 0x8], [0x2, 0x8, 0x3], [0x3, 0x8, 0x9], [0x3, 0x9, 0x4], [0x4, 0x9, 0xa], [0x4, 0xa, 0x5], [0x5, 0xa, 0x7], [0x6, 0x7, 0xb], [0x6, 0xb, 0x8], [0x7, 0xa, 0xb], [0x8, 0xb, 0x9], [0x9, 0xb, 0xa]] }, _0x3d7cbc[0x4] = { 'vertex': [[0x0, 0x0, 1.070722], [0.7148135, 0x0, 0.7971752], [-0.104682, 0.7071068, 0.7971752], [-0.6841528, 0.2071068, 0.7971752], [-0.104682, -0.7071068, 0.7971752], [0.6101315, 0.7071068, 0.5236279], [1.04156, 0.2071068, 0.1367736], [0.6101315, -0.7071068, 0.5236279], [-0.3574067, 0x1, 0.1367736], [-0.7888348, -0.5, 0.5236279], [-0.9368776, 0.5, 0.1367736], [-0.3574067, -0x1, 0.1367736], [0.3574067, 0x1, -0.1367736], [0.9368776, -0.5, -0.1367736], [0.7888348, 0.5, -0.5236279], [0.3574067, -0x1, -0.1367736], [-0.6101315, 0.7071068, -0.5236279], [-1.04156, -0.2071068, -0.1367736], [-0.6101315, -0.7071068, -0.5236279], [0.104682, 0.7071068, -0.7971752], [0.6841528, -0.2071068, -0.7971752], [0.104682, -0.7071068, -0.7971752], [-0.7148135, 0x0, -0.7971752], [0x0, 0x0, -1.070722]], 'face': [[0x0, 0x2, 0x3], [0x1, 0x6, 0x5], [0x4, 0x9, 0xb], [0x7, 0xf, 0xd], [0x8, 0x10, 0xa], [0xc, 0xe, 0x13], [0x11, 0x16, 0x12], [0x14, 0x15, 0x17], [0x0, 0x1, 0x5, 0x2], [0x0, 0x3, 0x9, 0x4], [0x0, 0x4, 0x7, 0x1], [0x1, 0x7, 0xd, 0x6], [0x2, 0x5, 0xc, 0x8], [0x2, 0x8, 0xa, 0x3], [0x3, 0xa, 0x11, 0x9], [0x4, 0xb, 0xf, 0x7], [0x5, 0x6, 0xe, 0xc], [0x6, 0xd, 0x14, 0xe], [0x8, 0xc, 0x13, 0x10], [0x9, 0x11, 0x12, 0xb], [0xa, 0x10, 0x16, 0x11], [0xb, 0x12, 0x15, 0xf], [0xd, 0xf, 0x15, 0x14], [0xe, 0x14, 0x17, 0x13], [0x10, 0x13, 0x17, 0x16], [0x12, 0x16, 0x17, 0x15]] }, _0x3d7cbc[0x5] = { 'vertex': [[0x0, 0x0, 1.322876], [1.309307, 0x0, 0.1889822], [-0.9819805, 0.8660254, 0.1889822], [0.1636634, -1.299038, 0.1889822], [0.3273268, 0.8660254, -0.9449112], [-0.8183171, -0.4330127, -0.9449112]], 'face': [[0x0, 0x3, 0x1], [0x2, 0x4, 0x5], [0x0, 0x1, 0x4, 0x2], [0x0, 0x2, 0x5, 0x3], [0x1, 0x3, 0x5, 0x4]] }, _0x3d7cbc[0x6] = { 'vertex': [[0x0, 0x0, 1.159953], [1.013464, 0x0, 0.5642542], [-0.3501431, 0.9510565, 0.5642542], [-0.7715208, -0.6571639, 0.5642542], [0.6633206, 0.9510565, -0.03144481], [0.8682979, -0.6571639, -0.3996071], [-1.121664, 0.2938926, -0.03144481], [-0.2348831, -1.063314, -0.3996071], [0.5181548, 0.2938926, -0.9953061], [-0.5850262, -0.112257, -0.9953061]], 'face': [[0x0, 0x1, 0x4, 0x2], [0x0, 0x2, 0x6, 0x3], [0x1, 0x5, 0x8, 0x4], [0x3, 0x6, 0x9, 0x7], [0x5, 0x7, 0x9, 0x8], [0x0, 0x3, 0x7, 0x5, 0x1], [0x2, 0x4, 0x8, 0x9, 0x6]] }, _0x3d7cbc[0x7] = { 'vertex': [[0x0, 0x0, 1.118034], [0.8944272, 0x0, 0.6708204], [-0.2236068, 0.8660254, 0.6708204], [-0.7826238, -0.4330127, 0.6708204], [0.6708204, 0.8660254, 0.2236068], [1.006231, -0.4330127, -0.2236068], [-1.006231, 0.4330127, 0.2236068], [-0.6708204, -0.8660254, -0.2236068], [0.7826238, 0.4330127, -0.6708204], [0.2236068, -0.8660254, -0.6708204], [-0.8944272, 0x0, -0.6708204], [0x0, 0x0, -1.118034]], 'face': [[0x0, 0x1, 0x4, 0x2], [0x0, 0x2, 0x6, 0x3], [0x1, 0x5, 0x8, 0x4], [0x3, 0x6, 0xa, 0x7], [0x5, 0x9, 0xb, 0x8], [0x7, 0xa, 0xb, 0x9], [0x0, 0x3, 0x7, 0x9, 0x5, 0x1], [0x2, 0x4, 0x8, 0xb, 0xa, 0x6]] }, _0x3d7cbc[0x8] = { 'vertex': [[-0.729665, 0.670121, 0.319155], [-0.655235, -0.29213, -0.754096], [-0.093922, -0.607123, 0.537818], [0.702196, 0.595691, 0.485187], [0.776626, -0.36656, -0.588064]], 'face': [[0x1, 0x4, 0x2], [0x0, 0x1, 0x2], [0x3, 0x0, 0x2], [0x4, 0x3, 0x2], [0x4, 0x1, 0x0, 0x3]] }, _0x3d7cbc[0x9] = { 'vertex': [[-0.868849, -0.100041, 0.61257], [-0.329458, 0.976099, 0.28078], [-0.26629, -0.013796, -0.477654], [-0.13392, -1.034115, 0.229829], [0.738834, 0.707117, -0.307018], [0.859683, -0.535264, -0.338508]], 'face': [[0x3, 0x0, 0x2], [0x5, 0x3, 0x2], [0x4, 0x5, 0x2], [0x1, 0x4, 0x2], [0x0, 0x1, 0x2], [0x0, 0x3, 0x5, 0x4, 0x1]] }, _0x3d7cbc[0xa] = { 'vertex': [[-0.610389, 0.243975, 0.531213], [-0.187812, -0.48795, -0.664016], [-0.187812, 0.9759, -0.664016], [0.187812, -0.9759, 0.664016], [0.798201, 0.243975, 0.132803]], 'face': [[0x1, 0x3, 0x0], [0x3, 0x4, 0x0], [0x3, 0x1, 0x4], [0x0, 0x2, 0x1], [0x0, 0x4, 0x2], [0x2, 0x4, 0x1]] }, _0x3d7cbc[0xb] = { 'vertex': [[-1.028778, 0.392027, -0.048786], [-0.640503, -0.646161, 0.621837], [-0.125162, -0.395663, -0.540059], [0.004683, 0.888447, -0.651988], [0.125161, 0.395663, 0.540059], [0.632925, -0.791376, 0.433102], [1.031672, 0.157063, -0.354165]], 'face': [[0x3, 0x2, 0x0], [0x2, 0x1, 0x0], [0x2, 0x5, 0x1], [0x0, 0x4, 0x3], [0x0, 0x1, 0x4], [0x4, 0x1, 0x5], [0x2, 0x3, 0x6], [0x3, 0x4, 0x6], [0x5, 0x2, 0x6], [0x4, 0x5, 0x6]] }, _0x3d7cbc[0xc] = { 'vertex': [[-0.669867, 0.334933, -0.529576], [-0.669867, 0.334933, 0.529577], [-0.4043, 1.212901, 0x0], [-0.334933, -0.669867, -0.529576], [-0.334933, -0.669867, 0.529577], [0.334933, 0.669867, -0.529576], [0.334933, 0.669867, 0.529577], [0.4043, -1.212901, 0x0], [0.669867, -0.334933, -0.529576], [0.669867, -0.334933, 0.529577]], 'face': [[0x8, 0x9, 0x7], [0x6, 0x5, 0x2], [0x3, 0x8, 0x7], [0x5, 0x0, 0x2], [0x4, 0x3, 0x7], [0x0, 0x1, 0x2], [0x9, 0x4, 0x7], [0x1, 0x6, 0x2], [0x9, 0x8, 0x5, 0x6], [0x8, 0x3, 0x0, 0x5], [0x3, 0x4, 0x1, 0x0], [0x4, 0x9, 0x6, 0x1]] }, _0x3d7cbc[0xd] = { 'vertex': [[-0.931836, 0.219976, -0.264632], [-0.636706, 0.318353, 0.692816], [-0.613483, -0.735083, -0.264632], [-0.326545, 0.979634, 0x0], [-0.318353, -0.636706, 0.692816], [-0.159176, 0.477529, -0.856368], [0.159176, -0.477529, -0.856368], [0.318353, 0.636706, 0.692816], [0.326545, -0.979634, 0x0], [0.613482, 0.735082, -0.264632], [0.636706, -0.318353, 0.692816], [0.931835, -0.219977, -0.264632]], 'face': [[0xb, 0xa, 0x8], [0x7, 0x9, 0x3], [0x6, 0xb, 0x8], [0x9, 0x5, 0x3], [0x2, 0x6, 0x8], [0x5, 0x0, 0x3], [0x4, 0x2, 0x8], [0x0, 0x1, 0x3], [0xa, 0x4, 0x8], [0x1, 0x7, 0x3], [0xa, 0xb, 0x9, 0x7], [0xb, 0x6, 0x5, 0x9], [0x6, 0x2, 0x0, 0x5], [0x2, 0x4, 0x1, 0x0], [0x4, 0xa, 0x7, 0x1]] }, _0x3d7cbc[0xe] = { 'vertex': [[-0.93465, 0.300459, -0.271185], [-0.838689, -0.260219, -0.516017], [-0.711319, 0.717591, 0.128359], [-0.710334, -0.156922, 0.080946], [-0.599799, 0.556003, -0.725148], [-0.503838, -0.004675, -0.969981], [-0.487004, 0.26021, 0.48049], [-0.460089, -0.750282, -0.512622], [-0.376468, 0.973135, -0.325605], [-0.331735, -0.646985, 0.084342], [-0.254001, 0.831847, 0.530001], [-0.125239, -0.494738, -0.966586], [0.029622, 0.027949, 0.730817], [0.056536, -0.982543, -0.262295], [0.08085, 1.087391, 0.076037], [0.125583, -0.532729, 0.485984], [0.262625, 0.599586, 0.780328], [0.391387, -0.726999, -0.716259], [0.513854, -0.868287, 0.139347], [0.597475, 0.85513, 0.326364], [0.641224, 0.109523, 0.783723], [0.737185, -0.451155, 0.538891], [0.848705, -0.612742, -0.314616], [0.976075, 0.365067, 0.32976], [1.072036, -0.19561, 0.084927]], 'face': [[0xf, 0x12, 0x15], [0xc, 0x14, 0x10], [0x6, 0xa, 0x2], [0x3, 0x0, 0x1], [0x9, 0x7, 0xd], [0x2, 0x8, 0x4, 0x0], [0x0, 0x4, 0x5, 0x1], [0x1, 0x5, 0xb, 0x7], [0x7, 0xb, 0x11, 0xd], [0xd, 0x11, 0x16, 0x12], [0x12, 0x16, 0x18, 0x15], [0x15, 0x18, 0x17, 0x14], [0x14, 0x17, 0x13, 0x10], [0x10, 0x13, 0xe, 0xa], [0xa, 0xe, 0x8, 0x2], [0xf, 0x9, 0xd, 0x12], [0xc, 0xf, 0x15, 0x14], [0x6, 0xc, 0x10, 0xa], [0x3, 0x6, 0x2, 0x0], [0x9, 0x3, 0x1, 0x7], [0x9, 0xf, 0xc, 0x6, 0x3], [0x16, 0x11, 0xb, 0x5, 0x4, 0x8, 0xe, 0x13, 0x17, 0x18]] }; var _0xa749e0, _0x1b1753, _0x4169cf, _0x2e9fae, _0xf51273, _0x45a6cd, _0x3d2e08 = _0x3ca018['type'] && (_0x3ca018['type'] < 0x0 || _0x3ca018['type'] >= _0x3d7cbc['length']) ? 0x0 : _0x3ca018['type'] || 0x0, _0x1a9b16 = _0x3ca018['size'], _0x293575 = _0x3ca018['sizeX'] || _0x1a9b16 || 0x1, _0xaddd03 = _0x3ca018['sizeY'] || _0x1a9b16 || 0x1, _0x7d7fe = _0x3ca018['sizeZ'] || _0x1a9b16 || 0x1, _0x22fd6f = _0x3ca018['custom'] || _0x3d7cbc[_0x3d2e08], _0x32c3ff = _0x22fd6f['face']['length'], _0xe6b143 = _0x3ca018['faceUV'] || new Array(_0x32c3ff), _0x3d91b4 = _0x3ca018['faceColors'], _0x548174 = void 0x0 === _0x3ca018['flat'] || _0x3ca018['flat'], _0x5e6cbd = 0x0 === _0x3ca018['sideOrientation'] ? 0x0 : _0x3ca018['sideOrientation'] || _0xb31206['a']['DEFAULTSIDE'], _0x4a615d = new Array(), _0x2a5d5a = new Array(), _0x42b311 = new Array(), _0x306c6d = new Array(), _0x3a320f = new Array(), _0xc9d114 = 0x0, _0x5c7725 = 0x0, _0x212908 = new Array(), _0xf60ef7 = 0x0, _0x50b008 = 0x0; if (_0x548174) for (_0x50b008 = 0x0; _0x50b008 < _0x32c3ff; _0x50b008++) _0x3d91b4 && void 0x0 === _0x3d91b4[_0x50b008] && (_0x3d91b4[_0x50b008] = new _0x47d24f['f'](0x1,0x1,0x1,0x1)), _0xe6b143 && void 0x0 === _0xe6b143[_0x50b008] && (_0xe6b143[_0x50b008] = new _0x47d24f['y'](0x0,0x0,0x1,0x1)); if (_0x548174) for (_0x50b008 = 0x0; _0x50b008 < _0x32c3ff; _0x50b008++) { var _0x241459 = _0x22fd6f['face'][_0x50b008]['length']; for (_0x4169cf = 0x2 * Math['PI'] / _0x241459, _0x2e9fae = 0.5 * Math['tan'](_0x4169cf / 0x2), _0xf51273 = 0.5, _0xf60ef7 = 0x0; _0xf60ef7 < _0x241459; _0xf60ef7++) _0x4a615d['push'](_0x22fd6f['vertex'][_0x22fd6f['face'][_0x50b008][_0xf60ef7]][0x0] * _0x293575, _0x22fd6f['vertex'][_0x22fd6f['face'][_0x50b008][_0xf60ef7]][0x1] * _0xaddd03, _0x22fd6f['vertex'][_0x22fd6f['face'][_0x50b008][_0xf60ef7]][0x2] * _0x7d7fe), _0x212908['push'](_0xc9d114), _0xc9d114++, _0xa749e0 = _0xe6b143[_0x50b008]['x'] + (_0xe6b143[_0x50b008]['z'] - _0xe6b143[_0x50b008]['x']) * (0.5 + _0x2e9fae), _0x1b1753 = _0xe6b143[_0x50b008]['y'] + (_0xe6b143[_0x50b008]['w'] - _0xe6b143[_0x50b008]['y']) * (_0xf51273 - 0.5), _0x306c6d['push'](_0xa749e0, _0x1b1753), _0x45a6cd = _0x2e9fae * Math['cos'](_0x4169cf) - _0xf51273 * Math['sin'](_0x4169cf), _0xf51273 = _0x2e9fae * Math['sin'](_0x4169cf) + _0xf51273 * Math['cos'](_0x4169cf), _0x2e9fae = _0x45a6cd, _0x3d91b4 && _0x3a320f['push'](_0x3d91b4[_0x50b008]['r'], _0x3d91b4[_0x50b008]['g'], _0x3d91b4[_0x50b008]['b'], _0x3d91b4[_0x50b008]['a']); for (_0xf60ef7 = 0x0; _0xf60ef7 < _0x241459 - 0x2; _0xf60ef7++) _0x2a5d5a['push'](_0x212908[0x0 + _0x5c7725], _0x212908[_0xf60ef7 + 0x2 + _0x5c7725], _0x212908[_0xf60ef7 + 0x1 + _0x5c7725]); _0x5c7725 += _0x241459; } else { for (_0xf60ef7 = 0x0; _0xf60ef7 < _0x22fd6f['vertex']['length']; _0xf60ef7++) _0x4a615d['push'](_0x22fd6f['vertex'][_0xf60ef7][0x0] * _0x293575, _0x22fd6f['vertex'][_0xf60ef7][0x1] * _0xaddd03, _0x22fd6f['vertex'][_0xf60ef7][0x2] * _0x7d7fe), _0x306c6d['push'](0x0, 0x0); for (_0x50b008 = 0x0; _0x50b008 < _0x32c3ff; _0x50b008++) for (_0xf60ef7 = 0x0; _0xf60ef7 < _0x22fd6f['face'][_0x50b008]['length'] - 0x2; _0xf60ef7++) _0x2a5d5a['push'](_0x22fd6f['face'][_0x50b008][0x0], _0x22fd6f['face'][_0x50b008][_0xf60ef7 + 0x2], _0x22fd6f['face'][_0x50b008][_0xf60ef7 + 0x1]); } _0xb31206['a']['ComputeNormals'](_0x4a615d, _0x2a5d5a, _0x42b311), _0xb31206['a']['_ComputeSides'](_0x5e6cbd, _0x4a615d, _0x2a5d5a, _0x42b311, _0x306c6d, _0x3ca018['frontUVs'], _0x3ca018['backUVs']); var _0x216d63 = new _0xb31206['a'](); return _0x216d63['positions'] = _0x4a615d, _0x216d63['indices'] = _0x2a5d5a, _0x216d63['normals'] = _0x42b311, _0x216d63['uvs'] = _0x306c6d, _0x3d91b4 && _0x548174 && (_0x216d63['colors'] = _0x3a320f), _0x216d63; } , _0xb4719b['a']['CreatePolyhedron'] = function(_0x52d2c6, _0x593bf3, _0x4d12f4) { return _0x230c05['CreatePolyhedron'](_0x52d2c6, _0x593bf3, _0x4d12f4); } ; var _0x230c05 = function() { function _0x160954() {} return _0x160954['CreatePolyhedron'] = function(_0x18aa72, _0x53d163, _0x1b8370) { void 0x0 === _0x1b8370 && (_0x1b8370 = null); var _0xac84e8 = new _0xb4719b['a'](_0x18aa72,_0x1b8370); return _0x53d163['sideOrientation'] = _0xb4719b['a']['_GetDefaultSideOrientation'](_0x53d163['sideOrientation']), _0xac84e8['_originalBuilderSideOrientation'] = _0x53d163['sideOrientation'], _0xb31206['a']['CreatePolyhedron'](_0x53d163)['applyToMesh'](_0xac84e8, _0x53d163['updatable']), _0xac84e8; } , _0x160954; }() , _0x2297f6 = function(_0x1dca73) { function _0x22dad2(_0x1c21a3) { void 0x0 === _0x1c21a3 && (_0x1c21a3 = _0x1d5ec6['a']['DefaultUtilityLayer']); var _0x5586e1 = _0x1dca73['call'](this, _0x1c21a3) || this; _0x5586e1['onDragStartObservable'] = new _0x2dbec2['c'](), _0x5586e1['onDragEndObservable'] = new _0x2dbec2['c'](), _0x5586e1['xGizmo'] = new _0x25a0c0(new _0x47d24f['x'](0x1,0x0,0x0),_0x47d24f['e']['Red']()['scale'](0.5),_0x1c21a3), _0x5586e1['yGizmo'] = new _0x25a0c0(new _0x47d24f['x'](0x0,0x1,0x0),_0x47d24f['e']['Green']()['scale'](0.5),_0x1c21a3), _0x5586e1['zGizmo'] = new _0x25a0c0(new _0x47d24f['x'](0x0,0x0,0x1),_0x47d24f['e']['Blue']()['scale'](0.5),_0x1c21a3), _0x5586e1['uniformScaleGizmo'] = new _0x25a0c0(new _0x47d24f['x'](0x0,0x1,0x0),_0x47d24f['e']['Yellow']()['scale'](0.5),_0x1c21a3), _0x5586e1['uniformScaleGizmo']['updateGizmoRotationToMatchAttachedMesh'] = !0x1, _0x5586e1['uniformScaleGizmo']['uniformScaling'] = !0x0; var _0x4763dc = _0x230c05['CreatePolyhedron']('', { 'type': 0x1 }, _0x5586e1['uniformScaleGizmo']['gizmoLayer']['utilityLayerScene']); _0x4763dc['scaling']['scaleInPlace'](0.02), _0x4763dc['visibility'] = 0x0; var _0x5e979d = _0x230c05['CreatePolyhedron']('', { 'type': 0x1 }, _0x5586e1['uniformScaleGizmo']['gizmoLayer']['utilityLayerScene']); _0x5e979d['scaling']['scaleInPlace'](0.007), _0x4763dc['addChild'](_0x5e979d), _0x5586e1['uniformScaleGizmo']['setCustomMesh'](_0x4763dc, !0x0); var _0x3b9b94 = _0x1c21a3['_getSharedGizmoLight'](); return _0x3b9b94['includedOnlyMeshes'] = _0x3b9b94['includedOnlyMeshes']['concat'](_0x5e979d), [_0x5586e1['xGizmo'], _0x5586e1['yGizmo'], _0x5586e1['zGizmo'], _0x5586e1['uniformScaleGizmo']]['forEach'](function(_0x307ca6) { _0x307ca6['dragBehavior']['onDragStartObservable']['add'](function() { _0x5586e1['onDragStartObservable']['notifyObservers']({}); }), _0x307ca6['dragBehavior']['onDragEndObservable']['add'](function() { _0x5586e1['onDragEndObservable']['notifyObservers']({}); }); }), _0x5586e1['attachedMesh'] = null, _0x5586e1; } return _0x420e5b['d'](_0x22dad2, _0x1dca73), Object['defineProperty'](_0x22dad2['prototype'], 'attachedMesh', { 'get': function() { return this['xGizmo']['attachedMesh']; }, 'set': function(_0x2cc218) { this['xGizmo'] && (this['xGizmo']['attachedMesh'] = _0x2cc218, this['yGizmo']['attachedMesh'] = _0x2cc218, this['zGizmo']['attachedMesh'] = _0x2cc218, this['uniformScaleGizmo']['attachedMesh'] = _0x2cc218); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x22dad2['prototype'], 'updateGizmoRotationToMatchAttachedMesh', { 'get': function() { return this['xGizmo']['updateGizmoRotationToMatchAttachedMesh']; }, 'set': function(_0x4faed4) { _0x4faed4 || _0x3f98cb['a']['Warn']('Setting\x20updateGizmoRotationToMatchAttachedMesh\x20=\x20false\x20on\x20scaling\x20gizmo\x20is\x20not\x20supported.'), this['xGizmo'] && (this['xGizmo']['updateGizmoRotationToMatchAttachedMesh'] = _0x4faed4, this['yGizmo']['updateGizmoRotationToMatchAttachedMesh'] = _0x4faed4, this['zGizmo']['updateGizmoRotationToMatchAttachedMesh'] = _0x4faed4); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x22dad2['prototype'], 'snapDistance', { 'get': function() { return this['xGizmo']['snapDistance']; }, 'set': function(_0x3519ba) { this['xGizmo'] && (this['xGizmo']['snapDistance'] = _0x3519ba, this['yGizmo']['snapDistance'] = _0x3519ba, this['zGizmo']['snapDistance'] = _0x3519ba, this['uniformScaleGizmo']['snapDistance'] = _0x3519ba); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x22dad2['prototype'], 'scaleRatio', { 'get': function() { return this['xGizmo']['scaleRatio']; }, 'set': function(_0x56da2c) { this['xGizmo'] && (this['xGizmo']['scaleRatio'] = _0x56da2c, this['yGizmo']['scaleRatio'] = _0x56da2c, this['zGizmo']['scaleRatio'] = _0x56da2c, this['uniformScaleGizmo']['scaleRatio'] = _0x56da2c); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x22dad2['prototype']['dispose'] = function() { this['xGizmo']['dispose'](), this['yGizmo']['dispose'](), this['zGizmo']['dispose'](), this['uniformScaleGizmo']['dispose'](), this['onDragStartObservable']['clear'](), this['onDragEndObservable']['clear'](); } , _0x22dad2; }(_0x1f7c5e['a']) , _0x2a5726 = function() { function _0x1c8fb5(_0x5f1f70) { var _0x3a9791 = this; this['scene'] = _0x5f1f70, this['clearGizmoOnEmptyPointerEvent'] = !0x1, this['onAttachedToMeshObservable'] = new _0x2dbec2['c'](), this['_gizmosEnabled'] = { 'positionGizmo': !0x1, 'rotationGizmo': !0x1, 'scaleGizmo': !0x1, 'boundingBoxGizmo': !0x1 }, this['_pointerObserver'] = null, this['_attachedMesh'] = null, this['_boundingBoxColor'] = _0x47d24f['e']['FromHexString']('#0984e3'), this['boundingBoxDragBehavior'] = new _0x2bbcb9(), this['attachableMeshes'] = null, this['usePointerToAttachGizmos'] = !0x0, this['_defaultKeepDepthUtilityLayer'] = new _0x1d5ec6['a'](_0x5f1f70), this['_defaultKeepDepthUtilityLayer']['utilityLayerScene']['autoClearDepthAndStencil'] = !0x1, this['_defaultUtilityLayer'] = _0x1d5ec6['a']['DefaultUtilityLayer'], this['gizmos'] = { 'positionGizmo': null, 'rotationGizmo': null, 'scaleGizmo': null, 'boundingBoxGizmo': null }, this['_pointerObserver'] = _0x5f1f70['onPointerObservable']['add'](function(_0x270a47) { if (_0x3a9791['usePointerToAttachGizmos'] && _0x270a47['type'] == _0xee889b['a']['POINTERDOWN']) if (_0x270a47['pickInfo'] && _0x270a47['pickInfo']['pickedMesh']) { var _0x60776b = _0x270a47['pickInfo']['pickedMesh']; if (null == _0x3a9791['attachableMeshes']) for (; _0x60776b && null != _0x60776b['parent']; ) _0x60776b = _0x60776b['parent']; else { var _0x32ea17 = !0x1; _0x3a9791['attachableMeshes']['forEach'](function(_0x24a4a2) { _0x60776b && (_0x60776b == _0x24a4a2 || _0x60776b['isDescendantOf'](_0x24a4a2)) && (_0x60776b = _0x24a4a2, _0x32ea17 = !0x0); }), _0x32ea17 || (_0x60776b = null); } _0x60776b instanceof _0x10c088['a'] ? _0x3a9791['_attachedMesh'] != _0x60776b && _0x3a9791['attachToMesh'](_0x60776b) : _0x3a9791['clearGizmoOnEmptyPointerEvent'] && _0x3a9791['attachToMesh'](null); } else _0x3a9791['clearGizmoOnEmptyPointerEvent'] && _0x3a9791['attachToMesh'](null); }); } return _0x1c8fb5['prototype']['attachToMesh'] = function(_0x4ceb1c) { for (var _0x2486b8 in (this['_attachedMesh'] && this['_attachedMesh']['removeBehavior'](this['boundingBoxDragBehavior']), this['_attachedMesh'] = _0x4ceb1c, this['gizmos'])) { var _0x4a5521 = this['gizmos'][_0x2486b8]; _0x4a5521 && this['_gizmosEnabled'][_0x2486b8] && (_0x4a5521['attachedMesh'] = _0x4ceb1c); } this['boundingBoxGizmoEnabled'] && this['_attachedMesh'] && this['_attachedMesh']['addBehavior'](this['boundingBoxDragBehavior']), this['onAttachedToMeshObservable']['notifyObservers'](_0x4ceb1c); } , Object['defineProperty'](_0x1c8fb5['prototype'], 'positionGizmoEnabled', { 'get': function() { return this['_gizmosEnabled']['positionGizmo']; }, 'set': function(_0x73412) { _0x73412 ? (this['gizmos']['positionGizmo'] || (this['gizmos']['positionGizmo'] = new _0x3773db(this['_defaultUtilityLayer'])), this['gizmos']['positionGizmo']['attachedMesh'] = this['_attachedMesh']) : this['gizmos']['positionGizmo'] && (this['gizmos']['positionGizmo']['attachedMesh'] = null), this['_gizmosEnabled']['positionGizmo'] = _0x73412; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1c8fb5['prototype'], 'rotationGizmoEnabled', { 'get': function() { return this['_gizmosEnabled']['rotationGizmo']; }, 'set': function(_0x1e282c) { _0x1e282c ? (this['gizmos']['rotationGizmo'] || (this['gizmos']['rotationGizmo'] = new _0x25dc9b(this['_defaultUtilityLayer'])), this['gizmos']['rotationGizmo']['attachedMesh'] = this['_attachedMesh']) : this['gizmos']['rotationGizmo'] && (this['gizmos']['rotationGizmo']['attachedMesh'] = null), this['_gizmosEnabled']['rotationGizmo'] = _0x1e282c; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1c8fb5['prototype'], 'scaleGizmoEnabled', { 'get': function() { return this['_gizmosEnabled']['scaleGizmo']; }, 'set': function(_0x1806f1) { _0x1806f1 ? (this['gizmos']['scaleGizmo'] = this['gizmos']['scaleGizmo'] || new _0x2297f6(this['_defaultUtilityLayer']), this['gizmos']['scaleGizmo']['attachedMesh'] = this['_attachedMesh']) : this['gizmos']['scaleGizmo'] && (this['gizmos']['scaleGizmo']['attachedMesh'] = null), this['_gizmosEnabled']['scaleGizmo'] = _0x1806f1; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1c8fb5['prototype'], 'boundingBoxGizmoEnabled', { 'get': function() { return this['_gizmosEnabled']['boundingBoxGizmo']; }, 'set': function(_0xd4800d) { _0xd4800d ? (this['gizmos']['boundingBoxGizmo'] = this['gizmos']['boundingBoxGizmo'] || new _0x4f5163(this['_boundingBoxColor'],this['_defaultKeepDepthUtilityLayer']), this['gizmos']['boundingBoxGizmo']['attachedMesh'] = this['_attachedMesh'], this['_attachedMesh'] && (this['_attachedMesh']['removeBehavior'](this['boundingBoxDragBehavior']), this['_attachedMesh']['addBehavior'](this['boundingBoxDragBehavior']))) : this['gizmos']['boundingBoxGizmo'] && (this['_attachedMesh'] && this['_attachedMesh']['removeBehavior'](this['boundingBoxDragBehavior']), this['gizmos']['boundingBoxGizmo']['attachedMesh'] = null), this['_gizmosEnabled']['boundingBoxGizmo'] = _0xd4800d; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1c8fb5['prototype']['dispose'] = function() { for (var _0x33cd70 in (this['scene']['onPointerObservable']['remove'](this['_pointerObserver']), this['gizmos'])) { var _0xd78988 = this['gizmos'][_0x33cd70]; _0xd78988 && _0xd78988['dispose'](); } this['_defaultKeepDepthUtilityLayer']['dispose'](), this['boundingBoxDragBehavior']['detach'](), this['onAttachedToMeshObservable']['clear'](); } , _0x1c8fb5; }() , _0x16b020 = _0x59bd00(0x26) , _0x2074d3 = function(_0x38e27a) { function _0x2ce47d() { var _0xd2bea9 = null !== _0x38e27a && _0x38e27a['apply'](this, arguments) || this; return _0xd2bea9['_needProjectionMatrixCompute'] = !0x0, _0xd2bea9; } return _0x420e5b['d'](_0x2ce47d, _0x38e27a), _0x2ce47d['prototype']['_setPosition'] = function(_0x4387d4) { this['_position'] = _0x4387d4; } , Object['defineProperty'](_0x2ce47d['prototype'], 'position', { 'get': function() { return this['_position']; }, 'set': function(_0x4b50fd) { this['_setPosition'](_0x4b50fd); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2ce47d['prototype']['_setDirection'] = function(_0x360cd6) { this['_direction'] = _0x360cd6; } , Object['defineProperty'](_0x2ce47d['prototype'], 'direction', { 'get': function() { return this['_direction']; }, 'set': function(_0x378796) { this['_setDirection'](_0x378796); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ce47d['prototype'], 'shadowMinZ', { 'get': function() { return this['_shadowMinZ']; }, 'set': function(_0x24b833) { this['_shadowMinZ'] = _0x24b833, this['forceProjectionMatrixCompute'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2ce47d['prototype'], 'shadowMaxZ', { 'get': function() { return this['_shadowMaxZ']; }, 'set': function(_0x3bf115) { this['_shadowMaxZ'] = _0x3bf115, this['forceProjectionMatrixCompute'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2ce47d['prototype']['computeTransformedInformation'] = function() { return !(!this['parent'] || !this['parent']['getWorldMatrix']) && (this['transformedPosition'] || (this['transformedPosition'] = _0x47d24f['x']['Zero']()), _0x47d24f['x']['TransformCoordinatesToRef'](this['position'], this['parent']['getWorldMatrix'](), this['transformedPosition']), this['direction'] && (this['transformedDirection'] || (this['transformedDirection'] = _0x47d24f['x']['Zero']()), _0x47d24f['x']['TransformNormalToRef'](this['direction'], this['parent']['getWorldMatrix'](), this['transformedDirection'])), !0x0); } , _0x2ce47d['prototype']['getDepthScale'] = function() { return 0x32; } , _0x2ce47d['prototype']['getShadowDirection'] = function(_0x222f50) { return this['transformedDirection'] ? this['transformedDirection'] : this['direction']; } , _0x2ce47d['prototype']['getAbsolutePosition'] = function() { return this['transformedPosition'] ? this['transformedPosition'] : this['position']; } , _0x2ce47d['prototype']['setDirectionToTarget'] = function(_0x1fb2ab) { return this['direction'] = _0x47d24f['x']['Normalize'](_0x1fb2ab['subtract'](this['position'])), this['direction']; } , _0x2ce47d['prototype']['getRotation'] = function() { this['direction']['normalize'](); var _0x121e18 = _0x47d24f['x']['Cross'](this['direction'], _0x47d24f['c']['Y']) , _0x3bd6de = _0x47d24f['x']['Cross'](_0x121e18, this['direction']); return _0x47d24f['x']['RotationFromAxis'](_0x121e18, _0x3bd6de, this['direction']); } , _0x2ce47d['prototype']['needCube'] = function() { return !0x1; } , _0x2ce47d['prototype']['needProjectionMatrixCompute'] = function() { return this['_needProjectionMatrixCompute']; } , _0x2ce47d['prototype']['forceProjectionMatrixCompute'] = function() { this['_needProjectionMatrixCompute'] = !0x0; } , _0x2ce47d['prototype']['_initCache'] = function() { _0x38e27a['prototype']['_initCache']['call'](this), this['_cache']['position'] = _0x47d24f['x']['Zero'](); } , _0x2ce47d['prototype']['_isSynchronized'] = function() { return !!this['_cache']['position']['equals'](this['position']); } , _0x2ce47d['prototype']['computeWorldMatrix'] = function(_0x25e19c) { return !_0x25e19c && this['isSynchronized']() ? (this['_currentRenderId'] = this['getScene']()['getRenderId'](), this['_worldMatrix']) : (this['_updateCache'](), this['_cache']['position']['copyFrom'](this['position']), this['_worldMatrix'] || (this['_worldMatrix'] = _0x47d24f['j']['Identity']()), _0x47d24f['j']['TranslationToRef'](this['position']['x'], this['position']['y'], this['position']['z'], this['_worldMatrix']), this['parent'] && this['parent']['getWorldMatrix'] && (this['_worldMatrix']['multiplyToRef'](this['parent']['getWorldMatrix'](), this['_worldMatrix']), this['_markSyncedWithParent']()), this['_worldMatrixDeterminantIsDirty'] = !0x0, this['_worldMatrix']); } , _0x2ce47d['prototype']['getDepthMinZ'] = function(_0xa3a6a4) { return void 0x0 !== this['shadowMinZ'] ? this['shadowMinZ'] : _0xa3a6a4['minZ']; } , _0x2ce47d['prototype']['getDepthMaxZ'] = function(_0x3b47e3) { return void 0x0 !== this['shadowMaxZ'] ? this['shadowMaxZ'] : _0x3b47e3['maxZ']; } , _0x2ce47d['prototype']['setShadowProjectionMatrix'] = function(_0x1ad615, _0x39d7bc, _0x3d2576) { return this['customProjectionMatrixBuilder'] ? this['customProjectionMatrixBuilder'](_0x39d7bc, _0x3d2576, _0x1ad615) : this['_setDefaultShadowProjectionMatrix'](_0x1ad615, _0x39d7bc, _0x3d2576), this; } , _0x420e5b['c']([Object(_0x3d4764['o'])()], _0x2ce47d['prototype'], 'position', null), _0x420e5b['c']([Object(_0x3d4764['o'])()], _0x2ce47d['prototype'], 'direction', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2ce47d['prototype'], 'shadowMinZ', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2ce47d['prototype'], 'shadowMaxZ', null), _0x2ce47d; }(_0x16b020['a']); _0x111b09['a']['AddNodeConstructor']('Light_Type_1', function(_0x229596, _0x3fffad) { return function() { return new _0x54b98c(_0x229596,_0x47d24f['x']['Zero'](),_0x3fffad); } ; }); var _0x54b98c = function(_0x1d154f) { function _0x4dc4df(_0x543b96, _0x3ffa7e, _0x1e3d83) { var _0x2eece1 = _0x1d154f['call'](this, _0x543b96, _0x1e3d83) || this; return _0x2eece1['_shadowFrustumSize'] = 0x0, _0x2eece1['_shadowOrthoScale'] = 0.1, _0x2eece1['autoUpdateExtends'] = !0x0, _0x2eece1['_orthoLeft'] = Number['MAX_VALUE'], _0x2eece1['_orthoRight'] = Number['MIN_VALUE'], _0x2eece1['_orthoTop'] = Number['MIN_VALUE'], _0x2eece1['_orthoBottom'] = Number['MAX_VALUE'], _0x2eece1['position'] = _0x3ffa7e['scale'](-0x1), _0x2eece1['direction'] = _0x3ffa7e, _0x2eece1; } return _0x420e5b['d'](_0x4dc4df, _0x1d154f), Object['defineProperty'](_0x4dc4df['prototype'], 'shadowFrustumSize', { 'get': function() { return this['_shadowFrustumSize']; }, 'set': function(_0x4638c1) { this['_shadowFrustumSize'] = _0x4638c1, this['forceProjectionMatrixCompute'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4dc4df['prototype'], 'shadowOrthoScale', { 'get': function() { return this['_shadowOrthoScale']; }, 'set': function(_0x235780) { this['_shadowOrthoScale'] = _0x235780, this['forceProjectionMatrixCompute'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4dc4df['prototype']['getClassName'] = function() { return 'DirectionalLight'; } , _0x4dc4df['prototype']['getTypeID'] = function() { return _0x16b020['a']['LIGHTTYPEID_DIRECTIONALLIGHT']; } , _0x4dc4df['prototype']['_setDefaultShadowProjectionMatrix'] = function(_0x12bc65, _0x1581da, _0x1fc913) { this['shadowFrustumSize'] > 0x0 ? this['_setDefaultFixedFrustumShadowProjectionMatrix'](_0x12bc65) : this['_setDefaultAutoExtendShadowProjectionMatrix'](_0x12bc65, _0x1581da, _0x1fc913); } , _0x4dc4df['prototype']['_setDefaultFixedFrustumShadowProjectionMatrix'] = function(_0x128000) { var _0x468e46 = this['getScene']()['activeCamera']; _0x468e46 && _0x47d24f['j']['OrthoLHToRef'](this['shadowFrustumSize'], this['shadowFrustumSize'], void 0x0 !== this['shadowMinZ'] ? this['shadowMinZ'] : _0x468e46['minZ'], void 0x0 !== this['shadowMaxZ'] ? this['shadowMaxZ'] : _0x468e46['maxZ'], _0x128000); } , _0x4dc4df['prototype']['_setDefaultAutoExtendShadowProjectionMatrix'] = function(_0x5b9409, _0x15a9f4, _0x2ffd8a) { var _0x1b22d7 = this['getScene']()['activeCamera']; if (_0x1b22d7) { if (this['autoUpdateExtends'] || this['_orthoLeft'] === Number['MAX_VALUE']) { var _0x406ff9 = _0x47d24f['x']['Zero'](); this['_orthoLeft'] = Number['MAX_VALUE'], this['_orthoRight'] = Number['MIN_VALUE'], this['_orthoTop'] = Number['MIN_VALUE'], this['_orthoBottom'] = Number['MAX_VALUE']; for (var _0x3fc73d = 0x0; _0x3fc73d < _0x2ffd8a['length']; _0x3fc73d++) { var _0x238154 = _0x2ffd8a[_0x3fc73d]; if (_0x238154) for (var _0x50e5b5 = _0x238154['getBoundingInfo']()['boundingBox'], _0x21a398 = 0x0; _0x21a398 < _0x50e5b5['vectorsWorld']['length']; _0x21a398++) _0x47d24f['x']['TransformCoordinatesToRef'](_0x50e5b5['vectorsWorld'][_0x21a398], _0x15a9f4, _0x406ff9), _0x406ff9['x'] < this['_orthoLeft'] && (this['_orthoLeft'] = _0x406ff9['x']), _0x406ff9['y'] < this['_orthoBottom'] && (this['_orthoBottom'] = _0x406ff9['y']), _0x406ff9['x'] > this['_orthoRight'] && (this['_orthoRight'] = _0x406ff9['x']), _0x406ff9['y'] > this['_orthoTop'] && (this['_orthoTop'] = _0x406ff9['y']); } } var _0x454cac = this['_orthoRight'] - this['_orthoLeft'] , _0x5b35f5 = this['_orthoTop'] - this['_orthoBottom']; _0x47d24f['j']['OrthoOffCenterLHToRef'](this['_orthoLeft'] - _0x454cac * this['shadowOrthoScale'], this['_orthoRight'] + _0x454cac * this['shadowOrthoScale'], this['_orthoBottom'] - _0x5b35f5 * this['shadowOrthoScale'], this['_orthoTop'] + _0x5b35f5 * this['shadowOrthoScale'], void 0x0 !== this['shadowMinZ'] ? this['shadowMinZ'] : _0x1b22d7['minZ'], void 0x0 !== this['shadowMaxZ'] ? this['shadowMaxZ'] : _0x1b22d7['maxZ'], _0x5b9409); } } , _0x4dc4df['prototype']['_buildUniformLayout'] = function() { this['_uniformBuffer']['addUniform']('vLightData', 0x4), this['_uniformBuffer']['addUniform']('vLightDiffuse', 0x4), this['_uniformBuffer']['addUniform']('vLightSpecular', 0x3), this['_uniformBuffer']['addUniform']('shadowsInfo', 0x3), this['_uniformBuffer']['addUniform']('depthValues', 0x2), this['_uniformBuffer']['create'](); } , _0x4dc4df['prototype']['transferToEffect'] = function(_0x2afe78, _0x2aaf72) { return this['computeTransformedInformation']() ? (this['_uniformBuffer']['updateFloat4']('vLightData', this['transformedDirection']['x'], this['transformedDirection']['y'], this['transformedDirection']['z'], 0x1, _0x2aaf72), this) : (this['_uniformBuffer']['updateFloat4']('vLightData', this['direction']['x'], this['direction']['y'], this['direction']['z'], 0x1, _0x2aaf72), this); } , _0x4dc4df['prototype']['getDepthMinZ'] = function(_0x5a51df) { return 0x1; } , _0x4dc4df['prototype']['getDepthMaxZ'] = function(_0x7d85e0) { return 0x1; } , _0x4dc4df['prototype']['prepareLightSpecificDefines'] = function(_0x3bb47c, _0x1f66ac) { _0x3bb47c['DIRLIGHT' + _0x1f66ac] = !0x0; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4dc4df['prototype'], 'shadowFrustumSize', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4dc4df['prototype'], 'shadowOrthoScale', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4dc4df['prototype'], 'autoUpdateExtends', void 0x0), _0x4dc4df; }(_0x2074d3); _0xb4719b['a']['CreateHemisphere'] = function(_0x474733, _0x5b5e02, _0x158484, _0xd38980) { var _0x264518 = { 'segments': _0x5b5e02, 'diameter': _0x158484 }; return _0x2f585d['CreateHemisphere'](_0x474733, _0x264518, _0xd38980); } ; var _0x2f585d = function() { function _0x1d98bd() {} return _0x1d98bd['CreateHemisphere'] = function(_0x43b6dd, _0x47680a, _0x11b6c5) { _0x47680a['diameter'] || (_0x47680a['diameter'] = 0x1), _0x47680a['segments'] || (_0x47680a['segments'] = 0x10); var _0x4f6145 = _0x523a20['a']['CreateSphere']('', { 'slice': 0.5, 'diameter': _0x47680a['diameter'], 'segments': _0x47680a['segments'] }, _0x11b6c5) , _0x5a1513 = _0xb4719b['a']['CreateDisc']('', _0x47680a['diameter'] / 0x2, 0x3 * _0x47680a['segments'] + (0x4 - _0x47680a['segments']), _0x11b6c5); _0x5a1513['rotation']['x'] = -Math['PI'] / 0x2, _0x5a1513['parent'] = _0x4f6145; var _0x4a311d = _0xb4719b['a']['MergeMeshes']([_0x5a1513, _0x4f6145], !0x0); return _0x4a311d['name'] = _0x43b6dd, _0x4a311d; } , _0x1d98bd; }(); _0x111b09['a']['AddNodeConstructor']('Light_Type_2', function(_0x5e2975, _0x3ade1a) { return function() { return new _0x43ed51(_0x5e2975,_0x47d24f['x']['Zero'](),_0x47d24f['x']['Zero'](),0x0,0x0,_0x3ade1a); } ; }); var _0x43ed51 = function(_0x2c33f0) { function _0x58f118(_0x4d4595, _0x41b0b1, _0x156eb2, _0x142ed2, _0xa581e3, _0x1718e8) { var _0x43a7b4 = _0x2c33f0['call'](this, _0x4d4595, _0x1718e8) || this; return _0x43a7b4['_innerAngle'] = 0x0, _0x43a7b4['_projectionTextureMatrix'] = _0x47d24f['j']['Zero'](), _0x43a7b4['_projectionTextureLightNear'] = 0.000001, _0x43a7b4['_projectionTextureLightFar'] = 0x3e8, _0x43a7b4['_projectionTextureUpDirection'] = _0x47d24f['x']['Up'](), _0x43a7b4['_projectionTextureViewLightDirty'] = !0x0, _0x43a7b4['_projectionTextureProjectionLightDirty'] = !0x0, _0x43a7b4['_projectionTextureDirty'] = !0x0, _0x43a7b4['_projectionTextureViewTargetVector'] = _0x47d24f['x']['Zero'](), _0x43a7b4['_projectionTextureViewLightMatrix'] = _0x47d24f['j']['Zero'](), _0x43a7b4['_projectionTextureProjectionLightMatrix'] = _0x47d24f['j']['Zero'](), _0x43a7b4['_projectionTextureScalingMatrix'] = _0x47d24f['j']['FromValues'](0.5, 0x0, 0x0, 0x0, 0x0, 0.5, 0x0, 0x0, 0x0, 0x0, 0.5, 0x0, 0.5, 0.5, 0.5, 0x1), _0x43a7b4['position'] = _0x41b0b1, _0x43a7b4['direction'] = _0x156eb2, _0x43a7b4['angle'] = _0x142ed2, _0x43a7b4['exponent'] = _0xa581e3, _0x43a7b4; } return _0x420e5b['d'](_0x58f118, _0x2c33f0), Object['defineProperty'](_0x58f118['prototype'], 'angle', { 'get': function() { return this['_angle']; }, 'set': function(_0x4227fb) { this['_angle'] = _0x4227fb, this['_cosHalfAngle'] = Math['cos'](0.5 * _0x4227fb), this['_projectionTextureProjectionLightDirty'] = !0x0, this['forceProjectionMatrixCompute'](), this['_computeAngleValues'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x58f118['prototype'], 'innerAngle', { 'get': function() { return this['_innerAngle']; }, 'set': function(_0x43d5ff) { this['_innerAngle'] = _0x43d5ff, this['_computeAngleValues'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x58f118['prototype'], 'shadowAngleScale', { 'get': function() { return this['_shadowAngleScale']; }, 'set': function(_0x343617) { this['_shadowAngleScale'] = _0x343617, this['forceProjectionMatrixCompute'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x58f118['prototype'], 'projectionTextureMatrix', { 'get': function() { return this['_projectionTextureMatrix']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x58f118['prototype'], 'projectionTextureLightNear', { 'get': function() { return this['_projectionTextureLightNear']; }, 'set': function(_0x10938d) { this['_projectionTextureLightNear'] = _0x10938d, this['_projectionTextureProjectionLightDirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x58f118['prototype'], 'projectionTextureLightFar', { 'get': function() { return this['_projectionTextureLightFar']; }, 'set': function(_0xc9f8c1) { this['_projectionTextureLightFar'] = _0xc9f8c1, this['_projectionTextureProjectionLightDirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x58f118['prototype'], 'projectionTextureUpDirection', { 'get': function() { return this['_projectionTextureUpDirection']; }, 'set': function(_0x432498) { this['_projectionTextureUpDirection'] = _0x432498, this['_projectionTextureProjectionLightDirty'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x58f118['prototype'], 'projectionTexture', { 'get': function() { return this['_projectionTexture']; }, 'set': function(_0x584319) { var _0x774ce9 = this; if (this['_projectionTexture'] !== _0x584319 && (this['_projectionTexture'] = _0x584319, this['_projectionTextureDirty'] = !0x0, this['_projectionTexture'] && !this['_projectionTexture']['isReady']())) { var _0x51b250 = this['_projectionTexture']; _0x51b250['onLoadObservable'] && _0x51b250['onLoadObservable']['addOnce'](function() { _0x774ce9['_markMeshesAsLightDirty'](); }); } }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x58f118['prototype']['getClassName'] = function() { return 'SpotLight'; } , _0x58f118['prototype']['getTypeID'] = function() { return _0x16b020['a']['LIGHTTYPEID_SPOTLIGHT']; } , _0x58f118['prototype']['_setDirection'] = function(_0xbf2103) { _0x2c33f0['prototype']['_setDirection']['call'](this, _0xbf2103), this['_projectionTextureViewLightDirty'] = !0x0; } , _0x58f118['prototype']['_setPosition'] = function(_0x1df615) { _0x2c33f0['prototype']['_setPosition']['call'](this, _0x1df615), this['_projectionTextureViewLightDirty'] = !0x0; } , _0x58f118['prototype']['_setDefaultShadowProjectionMatrix'] = function(_0x21a8ae, _0x44d5d0, _0x325776) { var _0x53a6ff = this['getScene']()['activeCamera']; if (_0x53a6ff) { this['_shadowAngleScale'] = this['_shadowAngleScale'] || 0x1; var _0x57aaab = this['_shadowAngleScale'] * this['_angle']; _0x47d24f['j']['PerspectiveFovLHToRef'](_0x57aaab, 0x1, this['getDepthMinZ'](_0x53a6ff), this['getDepthMaxZ'](_0x53a6ff), _0x21a8ae); } } , _0x58f118['prototype']['_computeProjectionTextureViewLightMatrix'] = function() { this['_projectionTextureViewLightDirty'] = !0x1, this['_projectionTextureDirty'] = !0x0, this['position']['addToRef'](this['direction'], this['_projectionTextureViewTargetVector']), _0x47d24f['j']['LookAtLHToRef'](this['position'], this['_projectionTextureViewTargetVector'], this['_projectionTextureUpDirection'], this['_projectionTextureViewLightMatrix']); } , _0x58f118['prototype']['_computeProjectionTextureProjectionLightMatrix'] = function() { this['_projectionTextureProjectionLightDirty'] = !0x1, this['_projectionTextureDirty'] = !0x0; var _0x45207f = this['projectionTextureLightFar'] , _0x544c47 = this['projectionTextureLightNear'] , _0x53d955 = _0x45207f / (_0x45207f - _0x544c47) , _0x4e8ac6 = -_0x53d955 * _0x544c47 , _0xb21242 = 0x1 / Math['tan'](this['_angle'] / 0x2); _0x47d24f['j']['FromValuesToRef'](_0xb21242 / 0x1, 0x0, 0x0, 0x0, 0x0, _0xb21242, 0x0, 0x0, 0x0, 0x0, _0x53d955, 0x1, 0x0, 0x0, _0x4e8ac6, 0x0, this['_projectionTextureProjectionLightMatrix']); } , _0x58f118['prototype']['_computeProjectionTextureMatrix'] = function() { this['_projectionTextureDirty'] = !0x1, this['_projectionTextureViewLightMatrix']['multiplyToRef'](this['_projectionTextureProjectionLightMatrix'], this['_projectionTextureMatrix']), this['_projectionTextureMatrix']['multiplyToRef'](this['_projectionTextureScalingMatrix'], this['_projectionTextureMatrix']); } , _0x58f118['prototype']['_buildUniformLayout'] = function() { this['_uniformBuffer']['addUniform']('vLightData', 0x4), this['_uniformBuffer']['addUniform']('vLightDiffuse', 0x4), this['_uniformBuffer']['addUniform']('vLightSpecular', 0x3), this['_uniformBuffer']['addUniform']('vLightDirection', 0x3), this['_uniformBuffer']['addUniform']('vLightFalloff', 0x4), this['_uniformBuffer']['addUniform']('shadowsInfo', 0x3), this['_uniformBuffer']['addUniform']('depthValues', 0x2), this['_uniformBuffer']['create'](); } , _0x58f118['prototype']['_computeAngleValues'] = function() { this['_lightAngleScale'] = 0x1 / Math['max'](0.001, Math['cos'](0.5 * this['_innerAngle']) - this['_cosHalfAngle']), this['_lightAngleOffset'] = -this['_cosHalfAngle'] * this['_lightAngleScale']; } , _0x58f118['prototype']['transferToEffect'] = function(_0x1aa4c6, _0x877a45) { var _0x50f641; return this['computeTransformedInformation']() ? (this['_uniformBuffer']['updateFloat4']('vLightData', this['transformedPosition']['x'], this['transformedPosition']['y'], this['transformedPosition']['z'], this['exponent'], _0x877a45), _0x50f641 = _0x47d24f['x']['Normalize'](this['transformedDirection'])) : (this['_uniformBuffer']['updateFloat4']('vLightData', this['position']['x'], this['position']['y'], this['position']['z'], this['exponent'], _0x877a45), _0x50f641 = _0x47d24f['x']['Normalize'](this['direction'])), this['_uniformBuffer']['updateFloat4']('vLightDirection', _0x50f641['x'], _0x50f641['y'], _0x50f641['z'], this['_cosHalfAngle'], _0x877a45), this['_uniformBuffer']['updateFloat4']('vLightFalloff', this['range'], this['_inverseSquaredRange'], this['_lightAngleScale'], this['_lightAngleOffset'], _0x877a45), this['projectionTexture'] && this['projectionTexture']['isReady']() && (this['_projectionTextureViewLightDirty'] && this['_computeProjectionTextureViewLightMatrix'](), this['_projectionTextureProjectionLightDirty'] && this['_computeProjectionTextureProjectionLightMatrix'](), this['_projectionTextureDirty'] && this['_computeProjectionTextureMatrix'](), _0x1aa4c6['setMatrix']('textureProjectionMatrix' + _0x877a45, this['_projectionTextureMatrix']), _0x1aa4c6['setTexture']('projectionLightSampler' + _0x877a45, this['projectionTexture'])), this; } , _0x58f118['prototype']['dispose'] = function() { _0x2c33f0['prototype']['dispose']['call'](this), this['_projectionTexture'] && this['_projectionTexture']['dispose'](); } , _0x58f118['prototype']['prepareLightSpecificDefines'] = function(_0x5b953e, _0x4a2c10) { _0x5b953e['SPOTLIGHT' + _0x4a2c10] = !0x0, _0x5b953e['PROJECTEDLIGHTTEXTURE' + _0x4a2c10] = !(!this['projectionTexture'] || !this['projectionTexture']['isReady']()); } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x58f118['prototype'], 'angle', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x58f118['prototype'], 'innerAngle', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x58f118['prototype'], 'shadowAngleScale', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x58f118['prototype'], 'exponent', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x58f118['prototype'], 'projectionTextureLightNear', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x58f118['prototype'], 'projectionTextureLightFar', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x58f118['prototype'], 'projectionTextureUpDirection', null), _0x420e5b['c']([Object(_0x3d4764['m'])('projectedLightTexture')], _0x58f118['prototype'], '_projectionTexture', void 0x0), _0x58f118; }(_0x2074d3) , _0x49b2ba = function(_0x4f0bb4) { function _0x1b23b8(_0x34b04d) { var _0x1ce36a = _0x4f0bb4['call'](this, _0x34b04d) || this; return _0x1ce36a['cachedPosition'] = new _0x47d24f['x'](), _0x1ce36a['cachedForward'] = new _0x47d24f['x'](0x0,0x0,0x1), _0x1ce36a['_light'] = null, _0x1ce36a['attachedMesh'] = new _0x10c088['a']('',_0x1ce36a['gizmoLayer']['utilityLayerScene']), _0x1ce36a['_material'] = new _0xe7dd57['a']('light',_0x1ce36a['gizmoLayer']['originalScene']), _0x1ce36a['_material']['diffuseColor'] = new _0x47d24f['e'](0.5,0.5,0.5), _0x1ce36a['_material']['specularColor'] = new _0x47d24f['e'](0.1,0.1,0.1), _0x1ce36a; } return _0x420e5b['d'](_0x1b23b8, _0x4f0bb4), Object['defineProperty'](_0x1b23b8['prototype'], 'light', { 'get': function() { return this['_light']; }, 'set': function(_0x230555) { var _0x38eed1 = this; if (this['_light'] = _0x230555, _0x230555) { this['_lightMesh'] && this['_lightMesh']['dispose'](), _0x230555 instanceof _0x4e9f1d['a'] ? this['_lightMesh'] = _0x1b23b8['_CreateHemisphericLightMesh'](this['gizmoLayer']['utilityLayerScene']) : this['_lightMesh'] = _0x230555 instanceof _0x54b98c ? _0x1b23b8['_CreateDirectionalLightMesh'](this['gizmoLayer']['utilityLayerScene']) : _0x230555 instanceof _0x43ed51 ? _0x1b23b8['_CreateSpotLightMesh'](this['gizmoLayer']['utilityLayerScene']) : _0x1b23b8['_CreatePointLightMesh'](this['gizmoLayer']['utilityLayerScene']), this['_lightMesh']['getChildMeshes'](!0x1)['forEach'](function(_0x5631b5) { _0x5631b5['material'] = _0x38eed1['_material']; }), this['_lightMesh']['parent'] = this['_rootMesh']; var _0x5e2df5 = this['gizmoLayer']['_getSharedGizmoLight'](); _0x5e2df5['includedOnlyMeshes'] = _0x5e2df5['includedOnlyMeshes']['concat'](this['_lightMesh']['getChildMeshes'](!0x1)), this['_lightMesh']['rotationQuaternion'] = new _0x47d24f['q'](), _0x230555['position'] && this['attachedMesh']['position']['copyFrom'](_0x230555['position']), _0x230555['direction'] && this['attachedMesh']['setDirection'](_0x230555['direction']), this['_update'](); } }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1b23b8['prototype']['_update'] = function() { _0x4f0bb4['prototype']['_update']['call'](this), this['_light'] && (this['_light']['position'] && (this['attachedMesh']['position']['equals'](this['cachedPosition']) ? this['attachedMesh']['position']['copyFrom'](this['_light']['position']) : (this['_light']['position']['copyFrom'](this['attachedMesh']['position']), this['cachedPosition']['copyFrom'](this['attachedMesh']['position']))), this['_light']['direction'] && (_0x47d24f['x']['DistanceSquared'](this['attachedMesh']['forward'], this['cachedForward']) > 0.0001 ? (this['_light']['direction']['copyFrom'](this['attachedMesh']['forward']), this['cachedForward']['copyFrom'](this['attachedMesh']['forward'])) : _0x47d24f['x']['DistanceSquared'](this['attachedMesh']['forward'], this['_light']['direction']) > 0.0001 && (this['attachedMesh']['setDirection'](this['_light']['direction']), this['cachedForward']['copyFrom'](this['_lightMesh']['forward']))), this['_light']['isEnabled']() ? this['_material']['diffuseColor']['set'](this['_light']['diffuse']['r'] / 0x3, this['_light']['diffuse']['g'] / 0x3, this['_light']['diffuse']['b'] / 0x3) : this['_material']['diffuseColor']['set'](0x0, 0x0, 0x0)); } , _0x1b23b8['prototype']['dispose'] = function() { this['_material']['dispose'](), _0x4f0bb4['prototype']['dispose']['call'](this); } , _0x1b23b8['_CreateHemisphericLightMesh'] = function(_0xf7eaef) { var _0x5a1712 = new _0xb4719b['a']('hemisphereLight',_0xf7eaef) , _0x5c28db = _0x2f585d['CreateHemisphere'](_0x5a1712['name'], { 'segments': 0xa, 'diameter': 0x1 }, _0xf7eaef); _0x5c28db['position']['z'] = -0.15, _0x5c28db['rotation']['x'] = Math['PI'] / 0x2, _0x5c28db['parent'] = _0x5a1712; var _0x227db0 = this['_createLightLines'](0x3, _0xf7eaef); return _0x227db0['parent'] = _0x5a1712, _0x227db0['position']['z'], _0x5a1712['scaling']['scaleInPlace'](_0x1b23b8['_Scale']), _0x5a1712['rotation']['x'] = Math['PI'] / 0x2, _0x5a1712; } , _0x1b23b8['_CreatePointLightMesh'] = function(_0x2229e6) { var _0xa59179 = new _0xb4719b['a']('pointLight',_0x2229e6) , _0x205a7e = _0x523a20['a']['CreateSphere'](_0xa59179['name'], { 'segments': 0xa, 'diameter': 0x1 }, _0x2229e6); return _0x205a7e['rotation']['x'] = Math['PI'] / 0x2, _0x205a7e['parent'] = _0xa59179, this['_createLightLines'](0x5, _0x2229e6)['parent'] = _0xa59179, _0xa59179['scaling']['scaleInPlace'](_0x1b23b8['_Scale']), _0xa59179['rotation']['x'] = Math['PI'] / 0x2, _0xa59179; } , _0x1b23b8['_CreateSpotLightMesh'] = function(_0x1c98e8) { var _0xca1498 = new _0xb4719b['a']('spotLight',_0x1c98e8); _0x523a20['a']['CreateSphere'](_0xca1498['name'], { 'segments': 0xa, 'diameter': 0x1 }, _0x1c98e8)['parent'] = _0xca1498; var _0x20a1b6 = _0x2f585d['CreateHemisphere'](_0xca1498['name'], { 'segments': 0xa, 'diameter': 0x2 }, _0x1c98e8); return _0x20a1b6['parent'] = _0xca1498, _0x20a1b6['rotation']['x'] = -Math['PI'] / 0x2, this['_createLightLines'](0x2, _0x1c98e8)['parent'] = _0xca1498, _0xca1498['scaling']['scaleInPlace'](_0x1b23b8['_Scale']), _0xca1498['rotation']['x'] = Math['PI'] / 0x2, _0xca1498; } , _0x1b23b8['_CreateDirectionalLightMesh'] = function(_0x59395e) { var _0x32f6fd = new _0xb4719b['a']('directionalLight',_0x59395e) , _0x2b085b = new _0xb4719b['a'](_0x32f6fd['name'],_0x59395e); _0x2b085b['parent'] = _0x32f6fd, _0x523a20['a']['CreateSphere'](_0x32f6fd['name'], { 'diameter': 1.2, 'segments': 0xa }, _0x59395e)['parent'] = _0x2b085b; var _0x18d3f0 = _0xb4719b['a']['CreateCylinder'](_0x32f6fd['name'], 0x6, 0.3, 0.3, 0x6, 0x1, _0x59395e); _0x18d3f0['parent'] = _0x2b085b, (_0x4d7ae0 = _0x18d3f0['clone'](_0x32f6fd['name']))['scaling']['y'] = 0.5, _0x4d7ae0['position']['x'] += 1.25, (_0x1ae3c2 = _0x18d3f0['clone'](_0x32f6fd['name']))['scaling']['y'] = 0.5, _0x1ae3c2['position']['x'] += -1.25; var _0x4d7ae0, _0x1ae3c2, _0x486a90 = _0xb4719b['a']['CreateCylinder'](_0x32f6fd['name'], 0x1, 0x0, 0.6, 0x6, 0x1, _0x59395e); return _0x486a90['position']['y'] += 0x3, _0x486a90['parent'] = _0x2b085b, (_0x4d7ae0 = _0x486a90['clone'](_0x32f6fd['name']))['position']['y'] = 1.5, _0x4d7ae0['position']['x'] += 1.25, (_0x1ae3c2 = _0x486a90['clone'](_0x32f6fd['name']))['position']['y'] = 1.5, _0x1ae3c2['position']['x'] += -1.25, _0x2b085b['scaling']['scaleInPlace'](_0x1b23b8['_Scale']), _0x2b085b['rotation']['z'] = Math['PI'] / 0x2, _0x2b085b['rotation']['y'] = Math['PI'] / 0x2, _0x32f6fd; } , _0x1b23b8['_Scale'] = 0.007, _0x1b23b8['_createLightLines'] = function(_0x86adde, _0x205be4) { var _0x1f7cb8 = new _0xb4719b['a']('root',_0x205be4); _0x1f7cb8['rotation']['x'] = Math['PI'] / 0x2; var _0x55890e = new _0xb4719b['a']('linePivot',_0x205be4); _0x55890e['parent'] = _0x1f7cb8; var _0x522456 = _0xb4719b['a']['CreateCylinder']('line', 0x2, 0.2, 0.3, 0x6, 0x1, _0x205be4); if (_0x522456['position']['y'] = _0x522456['scaling']['y'] / 0x2 + 1.2, _0x522456['parent'] = _0x55890e, _0x86adde < 0x2) return _0x55890e; for (var _0x43b1fb = 0x0; _0x43b1fb < 0x4; _0x43b1fb++) { (_0x1800bd = _0x55890e['clone']('lineParentClone'))['rotation']['z'] = Math['PI'] / 0x4, _0x1800bd['rotation']['y'] = Math['PI'] / 0x2 + Math['PI'] / 0x2 * _0x43b1fb, _0x1800bd['getChildMeshes']()[0x0]['scaling']['y'] = 0.5, _0x1800bd['getChildMeshes']()[0x0]['scaling']['x'] = _0x1800bd['getChildMeshes']()[0x0]['scaling']['z'] = 0.8, _0x1800bd['getChildMeshes']()[0x0]['position']['y'] = _0x1800bd['getChildMeshes']()[0x0]['scaling']['y'] / 0x2 + 1.2; } if (_0x86adde < 0x3) return _0x1f7cb8; for (_0x43b1fb = 0x0; _0x43b1fb < 0x4; _0x43b1fb++) { (_0x1800bd = _0x55890e['clone']('linePivotClone'))['rotation']['z'] = Math['PI'] / 0x2, _0x1800bd['rotation']['y'] = Math['PI'] / 0x2 * _0x43b1fb; } if (_0x86adde < 0x4) return _0x1f7cb8; for (_0x43b1fb = 0x0; _0x43b1fb < 0x4; _0x43b1fb++) { var _0x1800bd; (_0x1800bd = _0x55890e['clone']('linePivotClone'))['rotation']['z'] = Math['PI'] + Math['PI'] / 0x4, _0x1800bd['rotation']['y'] = Math['PI'] / 0x2 + Math['PI'] / 0x2 * _0x43b1fb, _0x1800bd['getChildMeshes']()[0x0]['scaling']['y'] = 0.5, _0x1800bd['getChildMeshes']()[0x0]['scaling']['x'] = _0x1800bd['getChildMeshes']()[0x0]['scaling']['z'] = 0.8, _0x1800bd['getChildMeshes']()[0x0]['position']['y'] = _0x1800bd['getChildMeshes']()[0x0]['scaling']['y'] / 0x2 + 1.2; } return _0x86adde < 0x5 ? _0x1f7cb8 : ((_0x1800bd = _0x55890e['clone']('linePivotClone'))['rotation']['z'] = Math['PI'], _0x1f7cb8); } , _0x1b23b8; }(_0x1f7c5e['a']) , _0x134235 = _0x59bd00(0x2c); _0x3e9e56['a']['IncludesShadersStore']['kernelBlurVaryingDeclaration'] = 'varying\x20vec2\x20sampleCoord{X};'; var _0x2db27d = '#ifdef\x20DOF\x0afactor=sampleCoC(sampleCoord{X});\x0acomputedWeight=KERNEL_WEIGHT{X}*factor;\x0asumOfWeights+=computedWeight;\x0a#else\x0acomputedWeight=KERNEL_WEIGHT{X};\x0a#endif\x0a#ifdef\x20PACKEDFLOAT\x0ablend+=unpack(texture2D(textureSampler,sampleCoord{X}))*computedWeight;\x0a#else\x0ablend+=texture2D(textureSampler,sampleCoord{X})*computedWeight;\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['kernelBlurFragment'] = _0x2db27d; var _0x3d2ba4 = '#ifdef\x20DOF\x0afactor=sampleCoC(sampleCenter+delta*KERNEL_DEP_OFFSET{X});\x0acomputedWeight=KERNEL_DEP_WEIGHT{X}*factor;\x0asumOfWeights+=computedWeight;\x0a#else\x0acomputedWeight=KERNEL_DEP_WEIGHT{X};\x0a#endif\x0a#ifdef\x20PACKEDFLOAT\x0ablend+=unpack(texture2D(textureSampler,sampleCenter+delta*KERNEL_DEP_OFFSET{X}))*computedWeight;\x0a#else\x0ablend+=texture2D(textureSampler,sampleCenter+delta*KERNEL_DEP_OFFSET{X})*computedWeight;\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['kernelBlurFragment2'] = _0x3d2ba4; var _0x3c7e5d = '\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20vec2\x20delta;\x0a\x0avarying\x20vec2\x20sampleCenter;\x0a#ifdef\x20DOF\x0auniform\x20sampler2D\x20circleOfConfusionSampler;\x0auniform\x20vec2\x20cameraMinMaxZ;\x0afloat\x20sampleDistance(const\x20in\x20vec2\x20offset)\x20{\x0afloat\x20depth=texture2D(circleOfConfusionSampler,offset).g;\x0areturn\x20cameraMinMaxZ.x+(cameraMinMaxZ.y-cameraMinMaxZ.x)*depth;\x0a}\x0afloat\x20sampleCoC(const\x20in\x20vec2\x20offset)\x20{\x0afloat\x20coc=texture2D(circleOfConfusionSampler,offset).r;\x0areturn\x20coc;\x0a}\x0a#endif\x0a#include[0..varyingCount]\x0a#ifdef\x20PACKEDFLOAT\x0avec4\x20pack(float\x20depth)\x0a{\x0aconst\x20vec4\x20bit_shift=vec4(255.0*255.0*255.0,255.0*255.0,255.0,1.0);\x0aconst\x20vec4\x20bit_mask=vec4(0.0,1.0/255.0,1.0/255.0,1.0/255.0);\x0avec4\x20res=fract(depth*bit_shift);\x0ares-=res.xxyz*bit_mask;\x0areturn\x20res;\x0a}\x0afloat\x20unpack(vec4\x20color)\x0a{\x0aconst\x20vec4\x20bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);\x0areturn\x20dot(color,bit_shift);\x0a}\x0a#endif\x0avoid\x20main(void)\x0a{\x0afloat\x20computedWeight=0.0;\x0a#ifdef\x20PACKEDFLOAT\x0afloat\x20blend=0.;\x0a#else\x0avec4\x20blend=vec4(0.);\x0a#endif\x0a#ifdef\x20DOF\x0afloat\x20sumOfWeights=CENTER_WEIGHT;\x0afloat\x20factor=0.0;\x0a\x0a#ifdef\x20PACKEDFLOAT\x0ablend+=unpack(texture2D(textureSampler,sampleCenter))*CENTER_WEIGHT;\x0a#else\x0ablend+=texture2D(textureSampler,sampleCenter)*CENTER_WEIGHT;\x0a#endif\x0a#endif\x0a#include[0..varyingCount]\x0a#include[0..depCount]\x0a#ifdef\x20PACKEDFLOAT\x0agl_FragColor=pack(blend);\x0a#else\x0agl_FragColor=blend;\x0a#endif\x0a#ifdef\x20DOF\x0agl_FragColor/=sumOfWeights;\x0a#endif\x0a}'; _0x3e9e56['a']['ShadersStore']['kernelBlurPixelShader'] = _0x3c7e5d; _0x3e9e56['a']['IncludesShadersStore']['kernelBlurVertex'] = 'sampleCoord{X}=sampleCenter+delta*KERNEL_OFFSET{X};'; var _0x48a777 = '\x0aattribute\x20vec2\x20position;\x0a\x0auniform\x20vec2\x20delta;\x0a\x0avarying\x20vec2\x20sampleCenter;\x0a#include[0..varyingCount]\x0aconst\x20vec2\x20madd=vec2(0.5,0.5);\x0avoid\x20main(void)\x20{\x0asampleCenter=(position*madd+madd);\x0a#include[0..varyingCount]\x0agl_Position=vec4(position,0.0,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['kernelBlurVertexShader'] = _0x48a777; var _0x1c8af1 = function(_0x273bbc) { function _0x2573f2(_0x2ee571, _0x2deab6, _0x1d9f8f, _0x401cb0, _0x4fb92a, _0x2b62a3, _0x558b49, _0x33b058, _0x1fa172, _0x196237, _0xa12b68) { void 0x0 === _0x2b62a3 && (_0x2b62a3 = _0x11d14a['a']['BILINEAR_SAMPLINGMODE']), void 0x0 === _0x1fa172 && (_0x1fa172 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x196237 && (_0x196237 = ''), void 0x0 === _0xa12b68 && (_0xa12b68 = !0x1); var _0x4342f6 = _0x273bbc['call'](this, _0x2ee571, 'kernelBlur', ['delta', 'direction', 'cameraMinMaxZ'], ['circleOfConfusionSampler'], _0x401cb0, _0x4fb92a, _0x2b62a3, _0x558b49, _0x33b058, null, _0x1fa172, 'kernelBlur', { 'varyingCount': 0x0, 'depCount': 0x0 }, !0x0) || this; return _0x4342f6['direction'] = _0x2deab6, _0x4342f6['blockCompilation'] = _0xa12b68, _0x4342f6['_packedFloat'] = !0x1, _0x4342f6['_staticDefines'] = '', _0x4342f6['_staticDefines'] = _0x196237, _0x4342f6['onApplyObservable']['add'](function(_0x741e26) { _0x4342f6['_outputTexture'] ? _0x741e26['setFloat2']('delta', 0x1 / _0x4342f6['_outputTexture']['width'] * _0x4342f6['direction']['x'], 0x1 / _0x4342f6['_outputTexture']['height'] * _0x4342f6['direction']['y']) : _0x741e26['setFloat2']('delta', 0x1 / _0x4342f6['width'] * _0x4342f6['direction']['x'], 0x1 / _0x4342f6['height'] * _0x4342f6['direction']['y']); }), _0x4342f6['kernel'] = _0x1d9f8f, _0x4342f6; } return _0x420e5b['d'](_0x2573f2, _0x273bbc), Object['defineProperty'](_0x2573f2['prototype'], 'kernel', { 'get': function() { return this['_idealKernel']; }, 'set': function(_0x51590d) { this['_idealKernel'] !== _0x51590d && (_0x51590d = Math['max'](_0x51590d, 0x1), this['_idealKernel'] = _0x51590d, this['_kernel'] = this['_nearestBestKernel'](_0x51590d), this['blockCompilation'] || this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2573f2['prototype'], 'packedFloat', { 'get': function() { return this['_packedFloat']; }, 'set': function(_0x2db3e2) { this['_packedFloat'] !== _0x2db3e2 && (this['_packedFloat'] = _0x2db3e2, this['blockCompilation'] || this['_updateParameters']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2573f2['prototype']['updateEffect'] = function(_0x1116c4, _0x15b00e, _0x3b6f47, _0x3c7b48, _0x8a43a9, _0x2f481d) { void 0x0 === _0x1116c4 && (_0x1116c4 = null), void 0x0 === _0x15b00e && (_0x15b00e = null), void 0x0 === _0x3b6f47 && (_0x3b6f47 = null), this['_updateParameters'](_0x8a43a9, _0x2f481d); } , _0x2573f2['prototype']['_updateParameters'] = function(_0x55c874, _0x42fb02) { for (var _0x1665de = this['_kernel'], _0x1230e5 = (_0x1665de - 0x1) / 0x2, _0x52dbc7 = [], _0x4780fa = [], _0x37c2c9 = 0x0, _0x36e9e7 = 0x0; _0x36e9e7 < _0x1665de; _0x36e9e7++) { var _0x318cbb = _0x36e9e7 / (_0x1665de - 0x1) , _0x5efb6b = this['_gaussianWeight'](0x2 * _0x318cbb - 0x1); _0x52dbc7[_0x36e9e7] = _0x36e9e7 - _0x1230e5, _0x4780fa[_0x36e9e7] = _0x5efb6b, _0x37c2c9 += _0x5efb6b; } for (_0x36e9e7 = 0x0; _0x36e9e7 < _0x4780fa['length']; _0x36e9e7++) _0x4780fa[_0x36e9e7] /= _0x37c2c9; var _0x44b0be = [] , _0x29bafb = [] , _0x133132 = []; for (_0x36e9e7 = 0x0; _0x36e9e7 <= _0x1230e5; _0x36e9e7 += 0x2) { var _0x4e1517 = Math['min'](_0x36e9e7 + 0x1, Math['floor'](_0x1230e5)); if (_0x36e9e7 === _0x4e1517) _0x133132['push']({ 'o': _0x52dbc7[_0x36e9e7], 'w': _0x4780fa[_0x36e9e7] }); else { var _0x1ce29b = _0x4e1517 === _0x1230e5 , _0x2a938e = _0x4780fa[_0x36e9e7] + _0x4780fa[_0x4e1517] * (_0x1ce29b ? 0.5 : 0x1) , _0x42c24b = _0x52dbc7[_0x36e9e7] + 0x1 / (0x1 + _0x4780fa[_0x36e9e7] / _0x4780fa[_0x4e1517]); 0x0 === _0x42c24b ? (_0x133132['push']({ 'o': _0x52dbc7[_0x36e9e7], 'w': _0x4780fa[_0x36e9e7] }), _0x133132['push']({ 'o': _0x52dbc7[_0x36e9e7 + 0x1], 'w': _0x4780fa[_0x36e9e7 + 0x1] })) : (_0x133132['push']({ 'o': _0x42c24b, 'w': _0x2a938e }), _0x133132['push']({ 'o': -_0x42c24b, 'w': _0x2a938e })); } } for (_0x36e9e7 = 0x0; _0x36e9e7 < _0x133132['length']; _0x36e9e7++) _0x29bafb[_0x36e9e7] = _0x133132[_0x36e9e7]['o'], _0x44b0be[_0x36e9e7] = _0x133132[_0x36e9e7]['w']; _0x52dbc7 = _0x29bafb, _0x4780fa = _0x44b0be; var _0x3497cb = this['getEngine']()['getCaps']()['maxVaryingVectors'] , _0x396046 = Math['max'](_0x3497cb, 0x0) - 0x1 , _0x2fc9ff = Math['min'](_0x52dbc7['length'], _0x396046) , _0x31f2aa = ''; _0x31f2aa += this['_staticDefines'], -0x1 != this['_staticDefines']['indexOf']('DOF') && (_0x31f2aa += '#define\x20CENTER_WEIGHT\x20' + this['_glslFloat'](_0x4780fa[_0x2fc9ff - 0x1]) + '\x0d\x0a', _0x2fc9ff--); for (_0x36e9e7 = 0x0; _0x36e9e7 < _0x2fc9ff; _0x36e9e7++) _0x31f2aa += '#define\x20KERNEL_OFFSET' + _0x36e9e7 + '\x20' + this['_glslFloat'](_0x52dbc7[_0x36e9e7]) + '\x0d\x0a', _0x31f2aa += '#define\x20KERNEL_WEIGHT' + _0x36e9e7 + '\x20' + this['_glslFloat'](_0x4780fa[_0x36e9e7]) + '\x0d\x0a'; var _0x2af8ba = 0x0; for (_0x36e9e7 = _0x396046; _0x36e9e7 < _0x52dbc7['length']; _0x36e9e7++) _0x31f2aa += '#define\x20KERNEL_DEP_OFFSET' + _0x2af8ba + '\x20' + this['_glslFloat'](_0x52dbc7[_0x36e9e7]) + '\x0d\x0a', _0x31f2aa += '#define\x20KERNEL_DEP_WEIGHT' + _0x2af8ba + '\x20' + this['_glslFloat'](_0x4780fa[_0x36e9e7]) + '\x0d\x0a', _0x2af8ba++; this['packedFloat'] && (_0x31f2aa += '#define\x20PACKEDFLOAT\x201'), this['blockCompilation'] = !0x1, _0x273bbc['prototype']['updateEffect']['call'](this, _0x31f2aa, null, null, { 'varyingCount': _0x2fc9ff, 'depCount': _0x2af8ba }, _0x55c874, _0x42fb02); } , _0x2573f2['prototype']['_nearestBestKernel'] = function(_0x2c6079) { for (var _0x4d813c = Math['round'](_0x2c6079), _0x2d41e0 = 0x0, _0x32c2ca = [_0x4d813c, _0x4d813c - 0x1, _0x4d813c + 0x1, _0x4d813c - 0x2, _0x4d813c + 0x2]; _0x2d41e0 < _0x32c2ca['length']; _0x2d41e0++) { var _0x32b876 = _0x32c2ca[_0x2d41e0]; if (_0x32b876 % 0x2 != 0x0 && Math['floor'](_0x32b876 / 0x2) % 0x2 == 0x0 && _0x32b876 > 0x0) return Math['max'](_0x32b876, 0x3); } return Math['max'](_0x4d813c, 0x3); } , _0x2573f2['prototype']['_gaussianWeight'] = function(_0x130544) { var _0x145e42 = -_0x130544 * _0x130544 / (0x1 / 0x3 * 0x2 * (0x1 / 0x3)); return 0x1 / (Math['sqrt'](0x2 * Math['PI']) * (0x1 / 0x3)) * Math['exp'](_0x145e42); } , _0x2573f2['prototype']['_glslFloat'] = function(_0x4e959b, _0xa6200c) { return void 0x0 === _0xa6200c && (_0xa6200c = 0x8), _0x4e959b['toFixed'](_0xa6200c)['replace'](/0+$/, ''); } , _0x2573f2; }(_0x1f5ab5) , _0x285bd8 = function(_0x26da8a) { function _0x200407(_0x33bc09, _0x2b2c5c, _0x399b92, _0x322175, _0x4afe81, _0x234e45, _0x5b82fb) { void 0x0 === _0x4afe81 && (_0x4afe81 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x234e45 && (_0x234e45 = _0x11d14a['a']['BILINEAR_SAMPLINGMODE']), void 0x0 === _0x5b82fb && (_0x5b82fb = !0x0); var _0x30d247 = _0x26da8a['call'](this, _0x33bc09, _0x2b2c5c, _0x399b92, _0x322175, !0x0, _0x4afe81, !0x1, _0x234e45, _0x5b82fb) || this; return _0x30d247['scene'] = _0x399b92, _0x30d247['mirrorPlane'] = new _0x47d24f['n'](0x0,0x1,0x0,0x1), _0x30d247['_transformMatrix'] = _0x47d24f['j']['Zero'](), _0x30d247['_mirrorMatrix'] = _0x47d24f['j']['Zero'](), _0x30d247['_adaptiveBlurKernel'] = 0x0, _0x30d247['_blurKernelX'] = 0x0, _0x30d247['_blurKernelY'] = 0x0, _0x30d247['_blurRatio'] = 0x1, _0x30d247['ignoreCameraViewport'] = !0x0, _0x30d247['_updateGammaSpace'](), _0x30d247['_imageProcessingConfigChangeObserver'] = _0x399b92['imageProcessingConfiguration']['onUpdateParameters']['add'](function() { _0x30d247['_updateGammaSpace']; }), _0x30d247['onBeforeRenderObservable']['add'](function() { _0x47d24f['j']['ReflectionToRef'](_0x30d247['mirrorPlane'], _0x30d247['_mirrorMatrix']), _0x30d247['_savedViewMatrix'] = _0x399b92['getViewMatrix'](), _0x30d247['_mirrorMatrix']['multiplyToRef'](_0x30d247['_savedViewMatrix'], _0x30d247['_transformMatrix']), _0x399b92['setTransformMatrix'](_0x30d247['_transformMatrix'], _0x399b92['getProjectionMatrix']()), _0x399b92['clipPlane'] = _0x30d247['mirrorPlane'], _0x399b92['getEngine']()['cullBackFaces'] = !0x1, _0x399b92['_mirroredCameraPosition'] = _0x47d24f['x']['TransformCoordinates'](_0x399b92['activeCamera']['globalPosition'], _0x30d247['_mirrorMatrix']); }), _0x30d247['onAfterRenderObservable']['add'](function() { _0x399b92['setTransformMatrix'](_0x30d247['_savedViewMatrix'], _0x399b92['getProjectionMatrix']()), _0x399b92['getEngine']()['cullBackFaces'] = !0x0, _0x399b92['_mirroredCameraPosition'] = null, _0x399b92['clipPlane'] = null; }), _0x30d247; } return _0x420e5b['d'](_0x200407, _0x26da8a), Object['defineProperty'](_0x200407['prototype'], 'blurRatio', { 'get': function() { return this['_blurRatio']; }, 'set': function(_0x46d91b) { this['_blurRatio'] !== _0x46d91b && (this['_blurRatio'] = _0x46d91b, this['_preparePostProcesses']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x200407['prototype'], 'adaptiveBlurKernel', { 'set': function(_0x116add) { this['_adaptiveBlurKernel'] = _0x116add, this['_autoComputeBlurKernel'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x200407['prototype'], 'blurKernel', { 'set': function(_0x15eb8c) { this['blurKernelX'] = _0x15eb8c, this['blurKernelY'] = _0x15eb8c; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x200407['prototype'], 'blurKernelX', { 'get': function() { return this['_blurKernelX']; }, 'set': function(_0x56bc24) { this['_blurKernelX'] !== _0x56bc24 && (this['_blurKernelX'] = _0x56bc24, this['_preparePostProcesses']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x200407['prototype'], 'blurKernelY', { 'get': function() { return this['_blurKernelY']; }, 'set': function(_0x492a81) { this['_blurKernelY'] !== _0x492a81 && (this['_blurKernelY'] = _0x492a81, this['_preparePostProcesses']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x200407['prototype']['_autoComputeBlurKernel'] = function() { var _0x3a285d = this['getScene']()['getEngine']() , _0x230b52 = this['getRenderWidth']() / _0x3a285d['getRenderWidth']() , _0x36e240 = this['getRenderHeight']() / _0x3a285d['getRenderHeight'](); this['blurKernelX'] = this['_adaptiveBlurKernel'] * _0x230b52, this['blurKernelY'] = this['_adaptiveBlurKernel'] * _0x36e240; } , _0x200407['prototype']['_onRatioRescale'] = function() { this['_sizeRatio'] && (this['resize'](this['_initialSizeParameter']), this['_adaptiveBlurKernel'] || this['_preparePostProcesses']()), this['_adaptiveBlurKernel'] && this['_autoComputeBlurKernel'](); } , _0x200407['prototype']['_updateGammaSpace'] = function() { this['gammaSpace'] = !this['scene']['imageProcessingConfiguration']['isEnabled'] || !this['scene']['imageProcessingConfiguration']['applyByPostProcess']; } , _0x200407['prototype']['_preparePostProcesses'] = function() { if (this['clearPostProcesses'](!0x0), this['_blurKernelX'] && this['_blurKernelY']) { var _0x36069d = this['getScene']()['getEngine']() , _0x5d4f27 = _0x36069d['getCaps']()['textureFloatRender'] ? _0x24e342['a']['TEXTURETYPE_FLOAT'] : _0x24e342['a']['TEXTURETYPE_HALF_FLOAT']; this['_blurX'] = new _0x1c8af1('horizontal\x20blur',new _0x47d24f['w'](0x1,0x0),this['_blurKernelX'],this['_blurRatio'],null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x36069d,!0x1,_0x5d4f27), this['_blurX']['autoClear'] = !0x1, 0x1 === this['_blurRatio'] && this['samples'] < 0x2 && this['_texture'] ? this['_blurX']['inputTexture'] = this['_texture'] : this['_blurX']['alwaysForcePOT'] = !0x0, this['_blurY'] = new _0x1c8af1('vertical\x20blur',new _0x47d24f['w'](0x0,0x1),this['_blurKernelY'],this['_blurRatio'],null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x36069d,!0x1,_0x5d4f27), this['_blurY']['autoClear'] = !0x1, this['_blurY']['alwaysForcePOT'] = 0x1 !== this['_blurRatio'], this['addPostProcess'](this['_blurX']), this['addPostProcess'](this['_blurY']); } else this['_blurY'] && (this['removePostProcess'](this['_blurY']), this['_blurY']['dispose'](), this['_blurY'] = null), this['_blurX'] && (this['removePostProcess'](this['_blurX']), this['_blurX']['dispose'](), this['_blurX'] = null); } , _0x200407['prototype']['clone'] = function() { var _0x99bc6e = this['getScene'](); if (!_0x99bc6e) return this; var _0x1ecfbc = this['getSize']() , _0x5e55c5 = new _0x200407(this['name'],_0x1ecfbc['width'],_0x99bc6e,this['_renderTargetOptions']['generateMipMaps'],this['_renderTargetOptions']['type'],this['_renderTargetOptions']['samplingMode'],this['_renderTargetOptions']['generateDepthBuffer']); return _0x5e55c5['hasAlpha'] = this['hasAlpha'], _0x5e55c5['level'] = this['level'], _0x5e55c5['mirrorPlane'] = this['mirrorPlane']['clone'](), this['renderList'] && (_0x5e55c5['renderList'] = this['renderList']['slice'](0x0)), _0x5e55c5; } , _0x200407['prototype']['serialize'] = function() { if (!this['name']) return null; var _0x341ec5 = _0x26da8a['prototype']['serialize']['call'](this); return _0x341ec5['mirrorPlane'] = this['mirrorPlane']['asArray'](), _0x341ec5; } , _0x200407['prototype']['dispose'] = function() { _0x26da8a['prototype']['dispose']['call'](this), this['scene']['imageProcessingConfiguration']['onUpdateParameters']['remove'](this['_imageProcessingConfigChangeObserver']); } , _0x200407; }(_0xe8a585); _0x11d14a['a']['_CreateMirror'] = function(_0x4573c, _0x23e045, _0x3c1e27, _0x2f6d9d) { return new _0x285bd8(_0x4573c,_0x23e045,_0x3c1e27,_0x2f6d9d); } , _0x3647a9['b']['prototype']['_createDepthStencilCubeTexture'] = function(_0x6767e2, _0x1b1c41) { var _0x4805bd = new _0x2826dc['a'](this,_0x2826dc['a']['DATASOURCE_UNKNOWN']); if (_0x4805bd['isCube'] = !0x0, 0x1 === this['webGLVersion']) return _0x3f98cb['a']['Error']('Depth\x20cube\x20texture\x20is\x20not\x20supported\x20by\x20WebGL\x201.'), _0x4805bd; var _0x575139 = _0x420e5b['a']({ 'bilinearFiltering': !0x1, 'comparisonFunction': 0x0, 'generateStencil': !0x1 }, _0x1b1c41) , _0x101270 = this['_gl']; this['_bindTextureDirectly'](_0x101270['TEXTURE_CUBE_MAP'], _0x4805bd, !0x0), this['_setupDepthStencilTexture'](_0x4805bd, _0x6767e2, _0x575139['generateStencil'], _0x575139['bilinearFiltering'], _0x575139['comparisonFunction']); for (var _0x309bea = 0x0; _0x309bea < 0x6; _0x309bea++) _0x575139['generateStencil'] ? _0x101270['texImage2D'](_0x101270['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0x309bea, 0x0, _0x101270['DEPTH24_STENCIL8'], _0x6767e2, _0x6767e2, 0x0, _0x101270['DEPTH_STENCIL'], _0x101270['UNSIGNED_INT_24_8'], null) : _0x101270['texImage2D'](_0x101270['TEXTURE_CUBE_MAP_POSITIVE_X'] + _0x309bea, 0x0, _0x101270['DEPTH_COMPONENT24'], _0x6767e2, _0x6767e2, 0x0, _0x101270['DEPTH_COMPONENT'], _0x101270['UNSIGNED_INT'], null); return this['_bindTextureDirectly'](_0x101270['TEXTURE_CUBE_MAP'], null), _0x4805bd; } , _0x3647a9['b']['prototype']['_partialLoadFile'] = function(_0x11283d, _0x39c6c0, _0x3a2f97, _0x39dfbb, _0x422641) { void 0x0 === _0x422641 && (_0x422641 = null); this['_loadFile'](_0x11283d, function(_0x359aea) { _0x3a2f97[_0x39c6c0] = _0x359aea, _0x3a2f97['_internalCount']++, 0x6 === _0x3a2f97['_internalCount'] && _0x39dfbb(_0x3a2f97); }, void 0x0, void 0x0, !0x0, function(_0xed310c, _0x223ca8) { _0x422641 && _0xed310c && _0x422641(_0xed310c['status'] + '\x20' + _0xed310c['statusText'], _0x223ca8); }); } , _0x3647a9['b']['prototype']['_cascadeLoadFiles'] = function(_0x2c3b54, _0xb4c2b5, _0x5bc435, _0x42df15) { void 0x0 === _0x42df15 && (_0x42df15 = null); var _0x533795 = []; _0x533795['_internalCount'] = 0x0; for (var _0x522d47 = 0x0; _0x522d47 < 0x6; _0x522d47++) this['_partialLoadFile'](_0x5bc435[_0x522d47], _0x522d47, _0x533795, _0xb4c2b5, _0x42df15); } , _0x3647a9['b']['prototype']['_cascadeLoadImgs'] = function(_0x327c58, _0x5562cf, _0x27fa8b, _0x59b5f2) { void 0x0 === _0x59b5f2 && (_0x59b5f2 = null); var _0x6cf16 = []; _0x6cf16['_internalCount'] = 0x0; for (var _0x4c4afc = 0x0; _0x4c4afc < 0x6; _0x4c4afc++) this['_partialLoadImg'](_0x27fa8b[_0x4c4afc], _0x4c4afc, _0x6cf16, _0x327c58, _0x5562cf, _0x59b5f2); } , _0x3647a9['b']['prototype']['_partialLoadImg'] = function(_0x356faf, _0x378c2c, _0x346e45, _0x5b5556, _0x2d3eed, _0x3c86da) { var _0x1440fa; void 0x0 === _0x3c86da && (_0x3c86da = null); _0x1440fa = _0x1eb50e['h']['LoadImage'](_0x356faf, function() { _0x346e45[_0x378c2c] = _0x1440fa, _0x346e45['_internalCount']++, _0x5b5556 && _0x5b5556['_removePendingData'](_0x1440fa), 0x6 === _0x346e45['_internalCount'] && _0x2d3eed(_0x346e45); }, function(_0x590358, _0x42d291) { _0x5b5556 && _0x5b5556['_removePendingData'](_0x1440fa), _0x3c86da && _0x3c86da(_0x590358, _0x42d291); }, _0x5b5556 ? _0x5b5556['offlineProvider'] : null), _0x5b5556 && _0x5b5556['_addPendingData'](_0x1440fa); } , _0x3647a9['b']['prototype']['createCubeTexture'] = function(_0x238caa, _0x15fba0, _0x1741c4, _0x2382d0, _0x2b02e0, _0x421fc9, _0x2b2dc6, _0x570c06, _0x2add4d, _0x3a407a, _0xedc29e, _0x3f961c, _0x3d0dbc) { var _0x1c3c69 = this; void 0x0 === _0x2b02e0 && (_0x2b02e0 = null), void 0x0 === _0x421fc9 && (_0x421fc9 = null), void 0x0 === _0x570c06 && (_0x570c06 = null), void 0x0 === _0x2add4d && (_0x2add4d = !0x1), void 0x0 === _0x3a407a && (_0x3a407a = 0x0), void 0x0 === _0xedc29e && (_0xedc29e = 0x0), void 0x0 === _0x3f961c && (_0x3f961c = null), void 0x0 === _0x3d0dbc && (_0x3d0dbc = []); var _0x5df30b = this['_gl'] , _0x24a815 = _0x3f961c || new _0x2826dc['a'](this,_0x2826dc['a']['DATASOURCE_CUBE']); _0x24a815['isCube'] = !0x0, _0x24a815['url'] = _0x238caa, _0x24a815['generateMipMaps'] = !_0x2382d0, _0x24a815['_lodGenerationScale'] = _0x3a407a, _0x24a815['_lodGenerationOffset'] = _0xedc29e, this['_doNotHandleContextLost'] || (_0x24a815['_extension'] = _0x570c06, _0x24a815['_files'] = _0x1741c4); for (var _0x340e52 = _0x238caa['lastIndexOf']('.'), _0x2602e4 = _0x570c06 || (_0x340e52 > -0x1 ? _0x238caa['substring'](_0x340e52)['toLowerCase']() : ''), _0x877b52 = null, _0x3dab51 = 0x0, _0x3804e1 = _0x3647a9['b']['_TextureLoaders']; _0x3dab51 < _0x3804e1['length']; _0x3dab51++) { var _0xe47523 = _0x3804e1[_0x3dab51]; if (-0x1 === _0x3d0dbc['indexOf'](_0xe47523) && _0xe47523['canLoad'](_0x2602e4, this['_textureFormatInUse'], _0x3f961c, !0x1, !0x1)) { _0x877b52 = _0xe47523; break; } } if (_0x877b52) { _0x238caa = _0x877b52['transformUrl'](_0x238caa, this['_textureFormatInUse']); var _0x2d7f7a = function(_0x36f8a2) { _0x1c3c69['_bindTextureDirectly'](_0x5df30b['TEXTURE_CUBE_MAP'], _0x24a815, !0x0), _0x877b52['loadCubeData'](_0x36f8a2, _0x24a815, _0x2add4d, _0x2b02e0, _0x421fc9); }; _0x1741c4 && 0x6 === _0x1741c4['length'] ? _0x877b52['supportCascades'] ? this['_cascadeLoadFiles'](_0x15fba0, _0x2d7f7a, _0x1741c4, _0x421fc9) : _0x421fc9 ? _0x421fc9('Textures\x20type\x20does\x20not\x20support\x20cascades.') : _0x3f98cb['a']['Warn']('Texture\x20loader\x20does\x20not\x20support\x20cascades.') : this['_loadFile'](_0x238caa, _0x2d7f7a, void 0x0, void 0x0, !0x0, function(_0x1f1981, _0x244af8) { if (_0x877b52) { var _0x10e1c3 = _0x877b52['getFallbackTextureUrl'](_0x24a815['url'], _0x1c3c69['_textureFormatInUse']); if (_0x3f98cb['a']['Warn'](_0x877b52['constructor']['name'] + '\x20failed\x20when\x20trying\x20to\x20load\x20' + _0x24a815['url'] + ',\x20falling\x20back\x20to\x20the\x20next\x20supported\x20loader'), _0x10e1c3) return _0x3d0dbc['push'](_0x877b52), void _0x1c3c69['createCubeTexture'](_0x10e1c3, _0x15fba0, _0x1741c4, _0x2382d0, _0x2b02e0, _0x421fc9, _0x2b2dc6, _0x2602e4, _0x2add4d, _0x3a407a, _0xedc29e, _0x24a815, _0x3d0dbc); } _0x421fc9 && _0x1f1981 && _0x421fc9(_0x1f1981['status'] + '\x20' + _0x1f1981['statusText'], _0x244af8); }); } else { if (!_0x1741c4) throw new Error('Cannot\x20load\x20cubemap\x20because\x20files\x20were\x20not\x20defined'); this['_cascadeLoadImgs'](_0x15fba0, function(_0x4fe527) { var _0x324abb = _0x1c3c69['needPOTTextures'] ? _0x1eb50e['h']['GetExponentOfTwo'](_0x4fe527[0x0]['width'], _0x1c3c69['_caps']['maxCubemapTextureSize']) : _0x4fe527[0x0]['width'] , _0x55ecc8 = _0x324abb; if (_0x1c3c69['_prepareWorkingCanvas'](), _0x1c3c69['_workingCanvas'] && _0x1c3c69['_workingContext']) { _0x1c3c69['_workingCanvas']['width'] = _0x324abb, _0x1c3c69['_workingCanvas']['height'] = _0x55ecc8; var _0x58c798 = [_0x5df30b['TEXTURE_CUBE_MAP_POSITIVE_X'], _0x5df30b['TEXTURE_CUBE_MAP_POSITIVE_Y'], _0x5df30b['TEXTURE_CUBE_MAP_POSITIVE_Z'], _0x5df30b['TEXTURE_CUBE_MAP_NEGATIVE_X'], _0x5df30b['TEXTURE_CUBE_MAP_NEGATIVE_Y'], _0x5df30b['TEXTURE_CUBE_MAP_NEGATIVE_Z']]; _0x1c3c69['_bindTextureDirectly'](_0x5df30b['TEXTURE_CUBE_MAP'], _0x24a815, !0x0), _0x1c3c69['_unpackFlipY'](!0x1); for (var _0x1f303c = _0x2b2dc6 ? _0x1c3c69['_getInternalFormat'](_0x2b2dc6) : _0x1c3c69['_gl']['RGBA'], _0x5665fc = 0x0; _0x5665fc < _0x58c798['length']; _0x5665fc++) _0x4fe527[_0x5665fc]['width'] !== _0x324abb || _0x4fe527[_0x5665fc]['height'] !== _0x55ecc8 ? (_0x1c3c69['_workingContext']['drawImage'](_0x4fe527[_0x5665fc], 0x0, 0x0, _0x4fe527[_0x5665fc]['width'], _0x4fe527[_0x5665fc]['height'], 0x0, 0x0, _0x324abb, _0x55ecc8), _0x5df30b['texImage2D'](_0x58c798[_0x5665fc], 0x0, _0x1f303c, _0x1f303c, _0x5df30b['UNSIGNED_BYTE'], _0x1c3c69['_workingCanvas'])) : _0x5df30b['texImage2D'](_0x58c798[_0x5665fc], 0x0, _0x1f303c, _0x1f303c, _0x5df30b['UNSIGNED_BYTE'], _0x4fe527[_0x5665fc]); _0x2382d0 || _0x5df30b['generateMipmap'](_0x5df30b['TEXTURE_CUBE_MAP']), _0x1c3c69['_setCubeMapTextureParams'](!_0x2382d0), _0x24a815['width'] = _0x324abb, _0x24a815['height'] = _0x55ecc8, _0x24a815['isReady'] = !0x0, _0x2b2dc6 && (_0x24a815['format'] = _0x2b2dc6), _0x24a815['onLoadedObservable']['notifyObservers'](_0x24a815), _0x24a815['onLoadedObservable']['clear'](), _0x2b02e0 && _0x2b02e0(); } }, _0x1741c4, _0x421fc9); } return this['_internalTexturesCache']['push'](_0x24a815), _0x24a815; } ; var _0x1ed101 = function(_0x118b7e) { function _0x474285(_0x133ed7, _0x5db56c, _0x1a2168, _0x1ff047, _0x127934, _0x3a5809, _0x52c27e, _0x40c995, _0x52b5ab, _0x21619d, _0x75160d, _0x19e69a, _0x2cc7eb) { void 0x0 === _0x1a2168 && (_0x1a2168 = null), void 0x0 === _0x1ff047 && (_0x1ff047 = !0x1), void 0x0 === _0x127934 && (_0x127934 = null), void 0x0 === _0x3a5809 && (_0x3a5809 = null), void 0x0 === _0x52c27e && (_0x52c27e = null), void 0x0 === _0x40c995 && (_0x40c995 = _0x24e342['a']['TEXTUREFORMAT_RGBA']), void 0x0 === _0x52b5ab && (_0x52b5ab = !0x1), void 0x0 === _0x21619d && (_0x21619d = null), void 0x0 === _0x75160d && (_0x75160d = !0x1), void 0x0 === _0x19e69a && (_0x19e69a = 0.8), void 0x0 === _0x2cc7eb && (_0x2cc7eb = 0x0); var _0x1d60c4 = _0x118b7e['call'](this, _0x5db56c) || this; if (_0x1d60c4['boundingBoxPosition'] = _0x47d24f['x']['Zero'](), _0x1d60c4['_rotationY'] = 0x0, _0x1d60c4['_prefiltered'] = !0x1, _0x1d60c4['name'] = _0x133ed7, _0x1d60c4['url'] = _0x133ed7, _0x1d60c4['_noMipmap'] = _0x1ff047, _0x1d60c4['hasAlpha'] = !0x1, _0x1d60c4['_format'] = _0x40c995, _0x1d60c4['isCube'] = !0x0, _0x1d60c4['_textureMatrix'] = _0x47d24f['j']['Identity'](), _0x1d60c4['_createPolynomials'] = _0x75160d, _0x1d60c4['coordinatesMode'] = _0x11d14a['a']['CUBIC_MODE'], !_0x133ed7 && !_0x127934) return _0x1d60c4; var _0x290c33 = _0x133ed7['lastIndexOf']('.') , _0x19bbd0 = _0x21619d || (_0x290c33 > -0x1 ? _0x133ed7['substring'](_0x290c33)['toLowerCase']() : '') , _0x59ca14 = '.dds' === _0x19bbd0 , _0x4464f4 = '.env' === _0x19bbd0; if (_0x4464f4 ? (_0x1d60c4['gammaSpace'] = !0x1, _0x1d60c4['_prefiltered'] = !0x1) : (_0x1d60c4['_prefiltered'] = _0x52b5ab, _0x52b5ab && (_0x1d60c4['gammaSpace'] = !0x1)), _0x1d60c4['_texture'] = _0x1d60c4['_getFromCache'](_0x133ed7, _0x1ff047), !_0x127934 && (_0x4464f4 || _0x59ca14 || _0x1a2168 || (_0x1a2168 = ['_px.jpg', '_py.jpg', '_pz.jpg', '_nx.jpg', '_ny.jpg', '_nz.jpg']), _0x127934 = [], _0x1a2168)) for (var _0xc5d639 = 0x0; _0xc5d639 < _0x1a2168['length']; _0xc5d639++) _0x127934['push'](_0x133ed7 + _0x1a2168[_0xc5d639]); return _0x1d60c4['_files'] = _0x127934, _0x1d60c4['_texture'] ? _0x3a5809 && (_0x1d60c4['_texture']['isReady'] ? _0x1eb50e['h']['SetImmediate'](function() { return _0x3a5809(); }) : _0x1d60c4['_texture']['onLoadedObservable']['add'](_0x3a5809)) : _0x5db56c['useDelayedTextureLoading'] ? _0x1d60c4['delayLoadState'] = _0x24e342['a']['DELAYLOADSTATE_NOTLOADED'] : _0x1d60c4['_texture'] = _0x52b5ab ? _0x5db56c['getEngine']()['createPrefilteredCubeTexture'](_0x133ed7, _0x5db56c, _0x19e69a, _0x2cc7eb, _0x3a5809, _0x52c27e, _0x40c995, _0x21619d, _0x1d60c4['_createPolynomials']) : _0x5db56c['getEngine']()['createCubeTexture'](_0x133ed7, _0x5db56c, _0x127934, _0x1ff047, _0x3a5809, _0x52c27e, _0x1d60c4['_format'], _0x21619d, !0x1, _0x19e69a, _0x2cc7eb), _0x1d60c4; } return _0x420e5b['d'](_0x474285, _0x118b7e), Object['defineProperty'](_0x474285['prototype'], 'boundingBoxSize', { 'get': function() { return this['_boundingBoxSize']; }, 'set': function(_0x86728b) { if (!this['_boundingBoxSize'] || !this['_boundingBoxSize']['equals'](_0x86728b)) { this['_boundingBoxSize'] = _0x86728b; var _0x48d2e0 = this['getScene'](); _0x48d2e0 && _0x48d2e0['markAllMaterialsAsDirty'](_0x24e342['a']['MATERIAL_TextureDirtyFlag']); } }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x474285['prototype'], 'rotationY', { 'get': function() { return this['_rotationY']; }, 'set': function(_0x309a44) { this['_rotationY'] = _0x309a44, this['setReflectionTextureMatrix'](_0x47d24f['j']['RotationY'](this['_rotationY'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x474285['prototype'], 'noMipmap', { 'get': function() { return this['_noMipmap']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x474285['CreateFromImages'] = function(_0x25a421, _0x4cd588, _0x2f0391) { var _0x7cbebd = ''; return _0x25a421['forEach'](function(_0x2b0d2b) { return _0x7cbebd += _0x2b0d2b; }), new _0x474285(_0x7cbebd,_0x4cd588,null,_0x2f0391,_0x25a421); } , _0x474285['CreateFromPrefilteredData'] = function(_0x5ab6a7, _0x528488, _0x3e706f, _0x1f6c45) { return void 0x0 === _0x3e706f && (_0x3e706f = null), void 0x0 === _0x1f6c45 && (_0x1f6c45 = !0x0), new _0x474285(_0x5ab6a7,_0x528488,null,!0x1,null,null,null,void 0x0,!0x0,_0x3e706f,_0x1f6c45); } , Object['defineProperty'](_0x474285['prototype'], 'isPrefiltered', { 'get': function() { return this['_prefiltered']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x474285['prototype']['getClassName'] = function() { return 'CubeTexture'; } , _0x474285['prototype']['updateURL'] = function(_0x158fe5, _0xee2295, _0x696449) { this['url'] && (this['releaseInternalTexture'](), this['getScene']()['markAllMaterialsAsDirty'](_0x24e342['a']['MATERIAL_TextureDirtyFlag'])), this['url'] = _0x158fe5, this['delayLoadState'] = _0x24e342['a']['DELAYLOADSTATE_NOTLOADED'], this['_prefiltered'] = !0x1, _0x696449 && (this['_delayedOnLoad'] = _0x696449), this['delayLoad'](_0xee2295); } , _0x474285['prototype']['delayLoad'] = function(_0x2f152e) { if (this['delayLoadState'] === _0x24e342['a']['DELAYLOADSTATE_NOTLOADED']) { var _0x226390 = this['getScene'](); _0x226390 && (this['delayLoadState'] = _0x24e342['a']['DELAYLOADSTATE_LOADED'], this['_texture'] = this['_getFromCache'](this['url'], this['_noMipmap']), this['_texture'] || (this['_prefiltered'] ? this['_texture'] = _0x226390['getEngine']()['createPrefilteredCubeTexture'](this['url'], _0x226390, this['lodGenerationScale'], this['lodGenerationOffset'], this['_delayedOnLoad'], void 0x0, this['_format'], void 0x0, this['_createPolynomials']) : this['_texture'] = _0x226390['getEngine']()['createCubeTexture'](this['url'], _0x226390, this['_files'], this['_noMipmap'], this['_delayedOnLoad'], null, this['_format'], _0x2f152e))); } } , _0x474285['prototype']['getReflectionTextureMatrix'] = function() { return this['_textureMatrix']; } , _0x474285['prototype']['setReflectionTextureMatrix'] = function(_0x2c9d69) { var _0x4a9e30 = this; _0x2c9d69['updateFlag'] !== this['_textureMatrix']['updateFlag'] && (_0x2c9d69['isIdentity']() !== this['_textureMatrix']['isIdentity']() && this['getScene']()['markAllMaterialsAsDirty'](_0x24e342['a']['MATERIAL_TextureDirtyFlag'], function(_0x2871ec) { return -0x1 !== _0x2871ec['getActiveTextures']()['indexOf'](_0x4a9e30); }), this['_textureMatrix'] = _0x2c9d69); } , _0x474285['Parse'] = function(_0x4628cb, _0x34df64, _0x1a3c81) { var _0x2d18f8 = _0x3d4764['a']['Parse'](function() { var _0x2a2910 = !0x1; return _0x4628cb['prefiltered'] && (_0x2a2910 = _0x4628cb['prefiltered']), new _0x474285(_0x1a3c81 + _0x4628cb['name'],_0x34df64,_0x4628cb['extensions'],!0x1,null,null,null,void 0x0,_0x2a2910); }, _0x4628cb, _0x34df64); if (_0x4628cb['boundingBoxPosition'] && (_0x2d18f8['boundingBoxPosition'] = _0x47d24f['x']['FromArray'](_0x4628cb['boundingBoxPosition'])), _0x4628cb['boundingBoxSize'] && (_0x2d18f8['boundingBoxSize'] = _0x47d24f['x']['FromArray'](_0x4628cb['boundingBoxSize'])), _0x4628cb['animations']) for (var _0x2b91a1 = 0x0; _0x2b91a1 < _0x4628cb['animations']['length']; _0x2b91a1++) { var _0x43f03f = _0x4628cb['animations'][_0x2b91a1] , _0x3619d8 = _0x376b99['a']['GetClass']('BABYLON.Animation'); _0x3619d8 && _0x2d18f8['animations']['push'](_0x3619d8['Parse'](_0x43f03f)); } return _0x2d18f8; } , _0x474285['prototype']['clone'] = function() { var _0x6a09db = this , _0x297eba = this['getScene']() , _0x5549ff = 0x0 , _0x372c59 = _0x3d4764['a']['Clone'](function() { if (!_0x297eba) return _0x6a09db; var _0x2d344c = new _0x474285(_0x6a09db['url'],_0x297eba,_0x6a09db['_extensions'],_0x6a09db['_noMipmap'],_0x6a09db['_files']); return _0x5549ff = _0x2d344c['uniqueId'], _0x2d344c; }, this); return _0x372c59['uniqueId'] = _0x5549ff, _0x372c59; } , _0x420e5b['c']([Object(_0x3d4764['c'])('rotationY')], _0x474285['prototype'], 'rotationY', null), _0x420e5b['c']([Object(_0x3d4764['j'])('textureMatrix')], _0x474285['prototype'], '_textureMatrix', void 0x0), _0x474285; }(_0x134235['a']); _0x11d14a['a']['_CubeTextureParser'] = _0x1ed101['Parse'], _0x376b99['a']['RegisteredTypes']['BABYLON.CubeTexture'] = _0x1ed101; var _0x2efc06 = _0x59bd00(0xf) , _0x58ad99 = _0x59bd00(0x40) , _0xdc76ae = _0x59bd00(0x4b) , _0x2085b2 = _0x59bd00(0x12) , _0x3c985d = '\x20uniform\x20vec4\x20vPrimaryColor;\x0a#ifdef\x20USEHIGHLIGHTANDSHADOWCOLORS\x0auniform\x20vec4\x20vPrimaryColorShadow;\x0a#endif\x0auniform\x20float\x20shadowLevel;\x0auniform\x20float\x20alpha;\x0a#ifdef\x20DIFFUSE\x0auniform\x20vec2\x20vDiffuseInfos;\x0a#endif\x0a#ifdef\x20REFLECTION\x0auniform\x20vec2\x20vReflectionInfos;\x0auniform\x20mat4\x20reflectionMatrix;\x0auniform\x20vec3\x20vReflectionMicrosurfaceInfos;\x0a#endif\x0a#if\x20defined(REFLECTIONFRESNEL)\x20||\x20defined(OPACITYFRESNEL)\x0auniform\x20vec3\x20vBackgroundCenter;\x0a#endif\x0a#ifdef\x20REFLECTIONFRESNEL\x0auniform\x20vec4\x20vReflectionControl;\x0a#endif\x0a#if\x20defined(REFLECTIONMAP_SPHERICAL)\x20||\x20defined(REFLECTIONMAP_PROJECTION)\x20||\x20defined(REFRACTION)\x0auniform\x20mat4\x20view;\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['backgroundFragmentDeclaration'] = _0x3c985d; var _0x36f1f4 = 'layout(std140,column_major)\x20uniform;\x0auniform\x20Material\x0a{\x0auniform\x20vec4\x20vPrimaryColor;\x0auniform\x20vec4\x20vPrimaryColorShadow;\x0auniform\x20vec2\x20vDiffuseInfos;\x0auniform\x20vec2\x20vReflectionInfos;\x0auniform\x20mat4\x20diffuseMatrix;\x0auniform\x20mat4\x20reflectionMatrix;\x0auniform\x20vec3\x20vReflectionMicrosurfaceInfos;\x0auniform\x20float\x20fFovMultiplier;\x0auniform\x20float\x20pointSize;\x0auniform\x20float\x20shadowLevel;\x0auniform\x20float\x20alpha;\x0a#if\x20defined(REFLECTIONFRESNEL)\x20||\x20defined(OPACITYFRESNEL)\x0auniform\x20vec3\x20vBackgroundCenter;\x0a#endif\x0a#ifdef\x20REFLECTIONFRESNEL\x0auniform\x20vec4\x20vReflectionControl;\x0a#endif\x0a};\x0auniform\x20Scene\x20{\x0amat4\x20viewProjection;\x0a#ifdef\x20MULTIVIEW\x0amat4\x20viewProjectionR;\x0a#endif\x0amat4\x20view;\x0a};'; _0x3e9e56['a']['IncludesShadersStore']['backgroundUboDeclaration'] = _0x36f1f4; _0x59bd00(0x71), _0x59bd00(0x54), _0x59bd00(0x55), _0x59bd00(0x78), _0x59bd00(0x70), _0x59bd00(0x5f), _0x59bd00(0x62), _0x59bd00(0x59), _0x59bd00(0x72), _0x59bd00(0x63); var _0x31f593 = '#ifdef\x20TEXTURELODSUPPORT\x0a#extension\x20GL_EXT_shader_texture_lod\x20:\x20enable\x0a#endif\x0aprecision\x20highp\x20float;\x0a#include<__decl__backgroundFragment>\x0a#define\x20RECIPROCAL_PI2\x200.15915494\x0a\x0auniform\x20vec3\x20vEyePosition;\x0a\x0avarying\x20vec3\x20vPositionW;\x0a#ifdef\x20MAINUV1\x0avarying\x20vec2\x20vMainUV1;\x0a#endif\x0a#ifdef\x20MAINUV2\x0avarying\x20vec2\x20vMainUV2;\x0a#endif\x0a#ifdef\x20NORMAL\x0avarying\x20vec3\x20vNormalW;\x0a#endif\x0a#ifdef\x20DIFFUSE\x0a#if\x20DIFFUSEDIRECTUV\x20==\x201\x0a#define\x20vDiffuseUV\x20vMainUV1\x0a#elif\x20DIFFUSEDIRECTUV\x20==\x202\x0a#define\x20vDiffuseUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vDiffuseUV;\x0a#endif\x0auniform\x20sampler2D\x20diffuseSampler;\x0a#endif\x0a\x0a#ifdef\x20REFLECTION\x0a#ifdef\x20REFLECTIONMAP_3D\x0a#define\x20sampleReflection(s,c)\x20textureCube(s,c)\x0auniform\x20samplerCube\x20reflectionSampler;\x0a#ifdef\x20TEXTURELODSUPPORT\x0a#define\x20sampleReflectionLod(s,c,l)\x20textureCubeLodEXT(s,c,l)\x0a#else\x0auniform\x20samplerCube\x20reflectionSamplerLow;\x0auniform\x20samplerCube\x20reflectionSamplerHigh;\x0a#endif\x0a#else\x0a#define\x20sampleReflection(s,c)\x20texture2D(s,c)\x0auniform\x20sampler2D\x20reflectionSampler;\x0a#ifdef\x20TEXTURELODSUPPORT\x0a#define\x20sampleReflectionLod(s,c,l)\x20texture2DLodEXT(s,c,l)\x0a#else\x0auniform\x20samplerCube\x20reflectionSamplerLow;\x0auniform\x20samplerCube\x20reflectionSamplerHigh;\x0a#endif\x0a#endif\x0a#ifdef\x20REFLECTIONMAP_SKYBOX\x0avarying\x20vec3\x20vPositionUVW;\x0a#else\x0a#if\x20defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED)\x20||\x20defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\x0avarying\x20vec3\x20vDirectionW;\x0a#endif\x0a#endif\x0a#include\x0a#endif\x0a\x0a#ifndef\x20FROMLINEARSPACE\x0a#define\x20FROMLINEARSPACE;\x0a#endif\x0a\x0a#ifndef\x20SHADOWONLY\x0a#define\x20SHADOWONLY;\x0a#endif\x0a#include\x0a\x0a#include<__decl__lightFragment>[0..maxSimultaneousLights]\x0a#include\x0a#include\x0a#include\x0a#include\x0a#include\x0a\x0a#include\x0a#ifdef\x20REFLECTIONFRESNEL\x0a#define\x20FRESNEL_MAXIMUM_ON_ROUGH\x200.25\x0avec3\x20fresnelSchlickEnvironmentGGX(float\x20VdotN,vec3\x20reflectance0,vec3\x20reflectance90,float\x20smoothness)\x0a{\x0a\x0afloat\x20weight=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);\x0areturn\x20reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));\x0a}\x0a#endif\x0avoid\x20main(void)\x20{\x0a#include\x0avec3\x20viewDirectionW=normalize(vEyePosition-vPositionW);\x0a\x0a#ifdef\x20NORMAL\x0avec3\x20normalW=normalize(vNormalW);\x0a#else\x0avec3\x20normalW=vec3(0.0,1.0,0.0);\x0a#endif\x0a\x0afloat\x20shadow=1.;\x0afloat\x20globalShadow=0.;\x0afloat\x20shadowLightCount=0.;\x0a#include[0..maxSimultaneousLights]\x0a#ifdef\x20SHADOWINUSE\x0aglobalShadow/=shadowLightCount;\x0a#else\x0aglobalShadow=1.0;\x0a#endif\x0a\x0avec4\x20reflectionColor=vec4(1.,1.,1.,1.);\x0a#ifdef\x20REFLECTION\x0avec3\x20reflectionVector=computeReflectionCoords(vec4(vPositionW,1.0),normalW);\x0a#ifdef\x20REFLECTIONMAP_OPPOSITEZ\x0areflectionVector.z*=-1.0;\x0a#endif\x0a\x0a#ifdef\x20REFLECTIONMAP_3D\x0avec3\x20reflectionCoords=reflectionVector;\x0a#else\x0avec2\x20reflectionCoords=reflectionVector.xy;\x0a#ifdef\x20REFLECTIONMAP_PROJECTION\x0areflectionCoords/=reflectionVector.z;\x0a#endif\x0areflectionCoords.y=1.0-reflectionCoords.y;\x0a#endif\x0a#ifdef\x20REFLECTIONBLUR\x0afloat\x20reflectionLOD=vReflectionInfos.y;\x0a#ifdef\x20TEXTURELODSUPPORT\x0a\x0areflectionLOD=reflectionLOD*log2(vReflectionMicrosurfaceInfos.x)*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;\x0areflectionColor=sampleReflectionLod(reflectionSampler,reflectionCoords,reflectionLOD);\x0a#else\x0afloat\x20lodReflectionNormalized=saturate(reflectionLOD);\x0afloat\x20lodReflectionNormalizedDoubled=lodReflectionNormalized*2.0;\x0avec4\x20reflectionSpecularMid=sampleReflection(reflectionSampler,reflectionCoords);\x0aif(lodReflectionNormalizedDoubled<1.0){\x0areflectionColor=mix(\x0asampleReflection(reflectionSamplerHigh,reflectionCoords),\x0areflectionSpecularMid,\x0alodReflectionNormalizedDoubled\x0a);\x0a}\x20else\x20{\x0areflectionColor=mix(\x0areflectionSpecularMid,\x0asampleReflection(reflectionSamplerLow,reflectionCoords),\x0alodReflectionNormalizedDoubled-1.0\x0a);\x0a}\x0a#endif\x0a#else\x0avec4\x20reflectionSample=sampleReflection(reflectionSampler,reflectionCoords);\x0areflectionColor=reflectionSample;\x0a#endif\x0a#ifdef\x20RGBDREFLECTION\x0areflectionColor.rgb=fromRGBD(reflectionColor);\x0a#endif\x0a#ifdef\x20GAMMAREFLECTION\x0areflectionColor.rgb=toLinearSpace(reflectionColor.rgb);\x0a#endif\x0a#ifdef\x20REFLECTIONBGR\x0areflectionColor.rgb=reflectionColor.bgr;\x0a#endif\x0a\x0areflectionColor.rgb*=vReflectionInfos.x;\x0a#endif\x0a\x0avec3\x20diffuseColor=vec3(1.,1.,1.);\x0afloat\x20finalAlpha=alpha;\x0a#ifdef\x20DIFFUSE\x0avec4\x20diffuseMap=texture2D(diffuseSampler,vDiffuseUV);\x0a#ifdef\x20GAMMADIFFUSE\x0adiffuseMap.rgb=toLinearSpace(diffuseMap.rgb);\x0a#endif\x0a\x0adiffuseMap.rgb*=vDiffuseInfos.y;\x0a#ifdef\x20DIFFUSEHASALPHA\x0afinalAlpha*=diffuseMap.a;\x0a#endif\x0adiffuseColor=diffuseMap.rgb;\x0a#endif\x0a\x0a#ifdef\x20REFLECTIONFRESNEL\x0avec3\x20colorBase=diffuseColor;\x0a#else\x0avec3\x20colorBase=reflectionColor.rgb*diffuseColor;\x0a#endif\x0acolorBase=max(colorBase,0.0);\x0a\x0a#ifdef\x20USERGBCOLOR\x0avec3\x20finalColor=colorBase;\x0a#else\x0a#ifdef\x20USEHIGHLIGHTANDSHADOWCOLORS\x0avec3\x20mainColor=mix(vPrimaryColorShadow.rgb,vPrimaryColor.rgb,colorBase);\x0a#else\x0avec3\x20mainColor=vPrimaryColor.rgb;\x0a#endif\x0avec3\x20finalColor=colorBase*mainColor;\x0a#endif\x0a\x0a#ifdef\x20REFLECTIONFRESNEL\x0avec3\x20reflectionAmount=vReflectionControl.xxx;\x0avec3\x20reflectionReflectance0=vReflectionControl.yyy;\x0avec3\x20reflectionReflectance90=vReflectionControl.zzz;\x0afloat\x20VdotN=dot(normalize(vEyePosition),normalW);\x0avec3\x20planarReflectionFresnel=fresnelSchlickEnvironmentGGX(saturate(VdotN),reflectionReflectance0,reflectionReflectance90,1.0);\x0areflectionAmount*=planarReflectionFresnel;\x0a#ifdef\x20REFLECTIONFALLOFF\x0afloat\x20reflectionDistanceFalloff=1.0-saturate(length(vPositionW.xyz-vBackgroundCenter)*vReflectionControl.w);\x0areflectionDistanceFalloff*=reflectionDistanceFalloff;\x0areflectionAmount*=reflectionDistanceFalloff;\x0a#endif\x0afinalColor=mix(finalColor,reflectionColor.rgb,saturate(reflectionAmount));\x0a#endif\x0a#ifdef\x20OPACITYFRESNEL\x0afloat\x20viewAngleToFloor=dot(normalW,normalize(vEyePosition-vBackgroundCenter));\x0a\x0aconst\x20float\x20startAngle=0.1;\x0afloat\x20fadeFactor=saturate(viewAngleToFloor/startAngle);\x0afinalAlpha*=fadeFactor*fadeFactor;\x0a#endif\x0a\x0a#ifdef\x20SHADOWINUSE\x0afinalColor=mix(finalColor*shadowLevel,finalColor,globalShadow);\x0a#endif\x0a\x0avec4\x20color=vec4(finalColor,finalAlpha);\x0a#include\x0a#ifdef\x20IMAGEPROCESSINGPOSTPROCESS\x0a\x0a\x0acolor.rgb=clamp(color.rgb,0.,30.0);\x0a#else\x0a\x0acolor=applyImageProcessing(color);\x0a#endif\x0a#ifdef\x20PREMULTIPLYALPHA\x0a\x0acolor.rgb*=color.a;\x0a#endif\x0a#ifdef\x20NOISE\x0acolor.rgb+=dither(vPositionW.xy,0.5);\x0acolor=max(color,0.0);\x0a#endif\x0agl_FragColor=color;\x0a}\x0a'; _0x3e9e56['a']['ShadersStore']['backgroundPixelShader'] = _0x31f593; var _0x392c1b = 'uniform\x20mat4\x20view;\x0auniform\x20mat4\x20viewProjection;\x0auniform\x20float\x20shadowLevel;\x0a#ifdef\x20DIFFUSE\x0auniform\x20mat4\x20diffuseMatrix;\x0auniform\x20vec2\x20vDiffuseInfos;\x0a#endif\x0a#ifdef\x20REFLECTION\x0auniform\x20vec2\x20vReflectionInfos;\x0auniform\x20mat4\x20reflectionMatrix;\x0auniform\x20vec3\x20vReflectionMicrosurfaceInfos;\x0auniform\x20float\x20fFovMultiplier;\x0a#endif\x0a#ifdef\x20POINTSIZE\x0auniform\x20float\x20pointSize;\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['backgroundVertexDeclaration'] = _0x392c1b; _0x59bd00(0x43), _0x59bd00(0x44), _0x59bd00(0x60), _0x59bd00(0x64), _0x59bd00(0x45), _0x59bd00(0x46), _0x59bd00(0x5a), _0x59bd00(0x74), _0x59bd00(0x75); var _0x22db18 = 'precision\x20highp\x20float;\x0a#include<__decl__backgroundVertex>\x0a#include\x0a\x0aattribute\x20vec3\x20position;\x0a#ifdef\x20NORMAL\x0aattribute\x20vec3\x20normal;\x0a#endif\x0a#include\x0a\x0a#include\x0a\x0avarying\x20vec3\x20vPositionW;\x0a#ifdef\x20NORMAL\x0avarying\x20vec3\x20vNormalW;\x0a#endif\x0a#ifdef\x20UV1\x0aattribute\x20vec2\x20uv;\x0a#endif\x0a#ifdef\x20UV2\x0aattribute\x20vec2\x20uv2;\x0a#endif\x0a#ifdef\x20MAINUV1\x0avarying\x20vec2\x20vMainUV1;\x0a#endif\x0a#ifdef\x20MAINUV2\x0avarying\x20vec2\x20vMainUV2;\x0a#endif\x0a#if\x20defined(DIFFUSE)\x20&&\x20DIFFUSEDIRECTUV\x20==\x200\x0avarying\x20vec2\x20vDiffuseUV;\x0a#endif\x0a#include\x0a#include\x0a#include<__decl__lightFragment>[0..maxSimultaneousLights]\x0a#ifdef\x20REFLECTIONMAP_SKYBOX\x0avarying\x20vec3\x20vPositionUVW;\x0a#endif\x0a#if\x20defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED)\x20||\x20defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\x0avarying\x20vec3\x20vDirectionW;\x0a#endif\x0avoid\x20main(void)\x20{\x0a#ifdef\x20REFLECTIONMAP_SKYBOX\x0a#ifdef\x20REFLECTIONMAP_SKYBOX_TRANSFORMED\x0avPositionUVW=(reflectionMatrix*vec4(position,1.0)).xyz;\x0a#else\x0avPositionUVW=position;\x0a#endif\x0a#endif\x0a#include\x0a#include\x0a#ifdef\x20MULTIVIEW\x0aif\x20(gl_ViewID_OVR\x20==\x200u)\x20{\x0agl_Position=viewProjection*finalWorld*vec4(position,1.0);\x0a}\x20else\x20{\x0agl_Position=viewProjectionR*finalWorld*vec4(position,1.0);\x0a}\x0a#else\x0agl_Position=viewProjection*finalWorld*vec4(position,1.0);\x0a#endif\x0avec4\x20worldPos=finalWorld*vec4(position,1.0);\x0avPositionW=vec3(worldPos);\x0a#ifdef\x20NORMAL\x0amat3\x20normalWorld=mat3(finalWorld);\x0a#ifdef\x20NONUNIFORMSCALING\x0anormalWorld=transposeMat3(inverseMat3(normalWorld));\x0a#endif\x0avNormalW=normalize(normalWorld*normal);\x0a#endif\x0a#if\x20defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED)\x20||\x20defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\x0avDirectionW=normalize(vec3(finalWorld*vec4(position,0.0)));\x0a#ifdef\x20EQUIRECTANGULAR_RELFECTION_FOV\x0amat3\x20screenToWorld=inverseMat3(mat3(finalWorld*viewProjection));\x0avec3\x20segment=mix(vDirectionW,screenToWorld*vec3(0.0,0.0,1.0),abs(fFovMultiplier-1.0));\x0aif\x20(fFovMultiplier<=1.0)\x20{\x0avDirectionW=normalize(segment);\x0a}\x20else\x20{\x0avDirectionW=normalize(vDirectionW+(vDirectionW-segment));\x0a}\x0a#endif\x0a#endif\x0a#ifndef\x20UV1\x0avec2\x20uv=vec2(0.,0.);\x0a#endif\x0a#ifndef\x20UV2\x0avec2\x20uv2=vec2(0.,0.);\x0a#endif\x0a#ifdef\x20MAINUV1\x0avMainUV1=uv;\x0a#endif\x0a#ifdef\x20MAINUV2\x0avMainUV2=uv2;\x0a#endif\x0a#if\x20defined(DIFFUSE)\x20&&\x20DIFFUSEDIRECTUV\x20==\x200\x0aif\x20(vDiffuseInfos.x\x20==\x200.)\x0a{\x0avDiffuseUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));\x0a}\x0aelse\x0a{\x0avDiffuseUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));\x0a}\x0a#endif\x0a\x0a#include\x0a\x0a#include\x0a\x0a#include[0..maxSimultaneousLights]\x0a\x0a#ifdef\x20VERTEXCOLOR\x0avColor=color;\x0a#endif\x0a\x0a#ifdef\x20POINTSIZE\x0agl_PointSize=pointSize;\x0a#endif\x0a}\x0a'; _0x3e9e56['a']['ShadersStore']['backgroundVertexShader'] = _0x22db18; var _0x348d01 = function(_0x33bd4e) { function _0x54060b() { var _0x733a46 = _0x33bd4e['call'](this) || this; return _0x733a46['DIFFUSE'] = !0x1, _0x733a46['DIFFUSEDIRECTUV'] = 0x0, _0x733a46['GAMMADIFFUSE'] = !0x1, _0x733a46['DIFFUSEHASALPHA'] = !0x1, _0x733a46['OPACITYFRESNEL'] = !0x1, _0x733a46['REFLECTIONBLUR'] = !0x1, _0x733a46['REFLECTIONFRESNEL'] = !0x1, _0x733a46['REFLECTIONFALLOFF'] = !0x1, _0x733a46['TEXTURELODSUPPORT'] = !0x1, _0x733a46['PREMULTIPLYALPHA'] = !0x1, _0x733a46['USERGBCOLOR'] = !0x1, _0x733a46['USEHIGHLIGHTANDSHADOWCOLORS'] = !0x1, _0x733a46['NOISE'] = !0x1, _0x733a46['REFLECTIONBGR'] = !0x1, _0x733a46['IMAGEPROCESSING'] = !0x1, _0x733a46['VIGNETTE'] = !0x1, _0x733a46['VIGNETTEBLENDMODEMULTIPLY'] = !0x1, _0x733a46['VIGNETTEBLENDMODEOPAQUE'] = !0x1, _0x733a46['TONEMAPPING'] = !0x1, _0x733a46['TONEMAPPING_ACES'] = !0x1, _0x733a46['CONTRAST'] = !0x1, _0x733a46['COLORCURVES'] = !0x1, _0x733a46['COLORGRADING'] = !0x1, _0x733a46['COLORGRADING3D'] = !0x1, _0x733a46['SAMPLER3DGREENDEPTH'] = !0x1, _0x733a46['SAMPLER3DBGRMAP'] = !0x1, _0x733a46['IMAGEPROCESSINGPOSTPROCESS'] = !0x1, _0x733a46['EXPOSURE'] = !0x1, _0x733a46['MULTIVIEW'] = !0x1, _0x733a46['REFLECTION'] = !0x1, _0x733a46['REFLECTIONMAP_3D'] = !0x1, _0x733a46['REFLECTIONMAP_SPHERICAL'] = !0x1, _0x733a46['REFLECTIONMAP_PLANAR'] = !0x1, _0x733a46['REFLECTIONMAP_CUBIC'] = !0x1, _0x733a46['REFLECTIONMAP_PROJECTION'] = !0x1, _0x733a46['REFLECTIONMAP_SKYBOX'] = !0x1, _0x733a46['REFLECTIONMAP_SKYBOX_TRANSFORMED'] = !0x1, _0x733a46['REFLECTIONMAP_EXPLICIT'] = !0x1, _0x733a46['REFLECTIONMAP_EQUIRECTANGULAR'] = !0x1, _0x733a46['REFLECTIONMAP_EQUIRECTANGULAR_FIXED'] = !0x1, _0x733a46['REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED'] = !0x1, _0x733a46['INVERTCUBICMAP'] = !0x1, _0x733a46['REFLECTIONMAP_OPPOSITEZ'] = !0x1, _0x733a46['LODINREFLECTIONALPHA'] = !0x1, _0x733a46['GAMMAREFLECTION'] = !0x1, _0x733a46['RGBDREFLECTION'] = !0x1, _0x733a46['EQUIRECTANGULAR_RELFECTION_FOV'] = !0x1, _0x733a46['MAINUV1'] = !0x1, _0x733a46['MAINUV2'] = !0x1, _0x733a46['UV1'] = !0x1, _0x733a46['UV2'] = !0x1, _0x733a46['CLIPPLANE'] = !0x1, _0x733a46['CLIPPLANE2'] = !0x1, _0x733a46['CLIPPLANE3'] = !0x1, _0x733a46['CLIPPLANE4'] = !0x1, _0x733a46['POINTSIZE'] = !0x1, _0x733a46['FOG'] = !0x1, _0x733a46['NORMAL'] = !0x1, _0x733a46['NUM_BONE_INFLUENCERS'] = 0x0, _0x733a46['BonesPerMesh'] = 0x0, _0x733a46['INSTANCES'] = !0x1, _0x733a46['SHADOWFLOAT'] = !0x1, _0x733a46['rebuild'](), _0x733a46; } return _0x420e5b['d'](_0x54060b, _0x33bd4e), _0x54060b; }(_0x58ad99['a']) , _0x4ac990 = function(_0x1effe0) { function _0x499bf8(_0x2987f2, _0x237b35) { var _0x120228 = _0x1effe0['call'](this, _0x2987f2, _0x237b35) || this; return _0x120228['primaryColor'] = _0x47d24f['e']['White'](), _0x120228['_primaryColorShadowLevel'] = 0x0, _0x120228['_primaryColorHighlightLevel'] = 0x0, _0x120228['reflectionTexture'] = null, _0x120228['reflectionBlur'] = 0x0, _0x120228['diffuseTexture'] = null, _0x120228['_shadowLights'] = null, _0x120228['shadowLights'] = null, _0x120228['shadowLevel'] = 0x0, _0x120228['sceneCenter'] = _0x47d24f['x']['Zero'](), _0x120228['opacityFresnel'] = !0x0, _0x120228['reflectionFresnel'] = !0x1, _0x120228['reflectionFalloffDistance'] = 0x0, _0x120228['reflectionAmount'] = 0x1, _0x120228['reflectionReflectance0'] = 0.05, _0x120228['reflectionReflectance90'] = 0.5, _0x120228['useRGBColor'] = !0x0, _0x120228['enableNoise'] = !0x1, _0x120228['_fovMultiplier'] = 0x1, _0x120228['useEquirectangularFOV'] = !0x1, _0x120228['_maxSimultaneousLights'] = 0x4, _0x120228['maxSimultaneousLights'] = 0x4, _0x120228['_imageProcessingObserver'] = null, _0x120228['switchToBGR'] = !0x1, _0x120228['_renderTargets'] = new _0x435d55['a'](0x10), _0x120228['_reflectionControls'] = _0x47d24f['y']['Zero'](), _0x120228['_white'] = _0x47d24f['e']['White'](), _0x120228['_primaryShadowColor'] = _0x47d24f['e']['Black'](), _0x120228['_primaryHighlightColor'] = _0x47d24f['e']['Black'](), _0x120228['_attachImageProcessingConfiguration'](null), _0x120228['getRenderTargetTextures'] = function() { return _0x120228['_renderTargets']['reset'](), _0x120228['_diffuseTexture'] && _0x120228['_diffuseTexture']['isRenderTarget'] && _0x120228['_renderTargets']['push'](_0x120228['_diffuseTexture']), _0x120228['_reflectionTexture'] && _0x120228['_reflectionTexture']['isRenderTarget'] && _0x120228['_renderTargets']['push'](_0x120228['_reflectionTexture']), _0x120228['_renderTargets']; } , _0x120228; } return _0x420e5b['d'](_0x499bf8, _0x1effe0), Object['defineProperty'](_0x499bf8['prototype'], '_perceptualColor', { 'get': function() { return this['__perceptualColor']; }, 'set': function(_0xf19d3f) { this['__perceptualColor'] = _0xf19d3f, this['_computePrimaryColorFromPerceptualColor'](), this['_markAllSubMeshesAsLightsDirty'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'primaryColorShadowLevel', { 'get': function() { return this['_primaryColorShadowLevel']; }, 'set': function(_0x2da2d6) { this['_primaryColorShadowLevel'] = _0x2da2d6, this['_computePrimaryColors'](), this['_markAllSubMeshesAsLightsDirty'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'primaryColorHighlightLevel', { 'get': function() { return this['_primaryColorHighlightLevel']; }, 'set': function(_0x32ee5f) { this['_primaryColorHighlightLevel'] = _0x32ee5f, this['_computePrimaryColors'](), this['_markAllSubMeshesAsLightsDirty'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'reflectionStandardFresnelWeight', { 'set': function(_0x2405e3) { var _0x35468c = _0x2405e3; _0x35468c < 0.5 ? (_0x35468c *= 0x2, this['reflectionReflectance0'] = _0x499bf8['StandardReflectance0'] * _0x35468c, this['reflectionReflectance90'] = _0x499bf8['StandardReflectance90'] * _0x35468c) : (_0x35468c = 0x2 * _0x35468c - 0x1, this['reflectionReflectance0'] = _0x499bf8['StandardReflectance0'] + (0x1 - _0x499bf8['StandardReflectance0']) * _0x35468c, this['reflectionReflectance90'] = _0x499bf8['StandardReflectance90'] + (0x1 - _0x499bf8['StandardReflectance90']) * _0x35468c); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'fovMultiplier', { 'get': function() { return this['_fovMultiplier']; }, 'set': function(_0x401941) { isNaN(_0x401941) && (_0x401941 = 0x1), this['_fovMultiplier'] = Math['max'](0x0, Math['min'](0x2, _0x401941)); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x499bf8['prototype']['_attachImageProcessingConfiguration'] = function(_0x10b483) { var _0x3d46c8 = this; _0x10b483 !== this['_imageProcessingConfiguration'] && (this['_imageProcessingConfiguration'] && this['_imageProcessingObserver'] && this['_imageProcessingConfiguration']['onUpdateParameters']['remove'](this['_imageProcessingObserver']), this['_imageProcessingConfiguration'] = _0x10b483 || this['getScene']()['imageProcessingConfiguration'], this['_imageProcessingConfiguration'] && (this['_imageProcessingObserver'] = this['_imageProcessingConfiguration']['onUpdateParameters']['add'](function() { _0x3d46c8['_computePrimaryColorFromPerceptualColor'](), _0x3d46c8['_markAllSubMeshesAsImageProcessingDirty'](); }))); } , Object['defineProperty'](_0x499bf8['prototype'], 'imageProcessingConfiguration', { 'get': function() { return this['_imageProcessingConfiguration']; }, 'set': function(_0x3ed269) { this['_attachImageProcessingConfiguration'](_0x3ed269), this['_markAllSubMeshesAsTexturesDirty'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'cameraColorCurvesEnabled', { 'get': function() { return this['imageProcessingConfiguration']['colorCurvesEnabled']; }, 'set': function(_0x22ef15) { this['imageProcessingConfiguration']['colorCurvesEnabled'] = _0x22ef15; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'cameraColorGradingEnabled', { 'get': function() { return this['imageProcessingConfiguration']['colorGradingEnabled']; }, 'set': function(_0x56fc63) { this['imageProcessingConfiguration']['colorGradingEnabled'] = _0x56fc63; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'cameraToneMappingEnabled', { 'get': function() { return this['_imageProcessingConfiguration']['toneMappingEnabled']; }, 'set': function(_0xc640bc) { this['_imageProcessingConfiguration']['toneMappingEnabled'] = _0xc640bc; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'cameraExposure', { 'get': function() { return this['_imageProcessingConfiguration']['exposure']; }, 'set': function(_0x55cae8) { this['_imageProcessingConfiguration']['exposure'] = _0x55cae8; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'cameraContrast', { 'get': function() { return this['_imageProcessingConfiguration']['contrast']; }, 'set': function(_0x89f065) { this['_imageProcessingConfiguration']['contrast'] = _0x89f065; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'cameraColorGradingTexture', { 'get': function() { return this['_imageProcessingConfiguration']['colorGradingTexture']; }, 'set': function(_0x249e0a) { this['imageProcessingConfiguration']['colorGradingTexture'] = _0x249e0a; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'cameraColorCurves', { 'get': function() { return this['imageProcessingConfiguration']['colorCurves']; }, 'set': function(_0x51c5df) { this['imageProcessingConfiguration']['colorCurves'] = _0x51c5df; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x499bf8['prototype'], 'hasRenderTargetTextures', { 'get': function() { return !(!this['_diffuseTexture'] || !this['_diffuseTexture']['isRenderTarget']) || !(!this['_reflectionTexture'] || !this['_reflectionTexture']['isRenderTarget']); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x499bf8['prototype']['needAlphaTesting'] = function() { return !0x0; } , _0x499bf8['prototype']['needAlphaBlending'] = function() { return this['alpha'] < 0x0 || null != this['_diffuseTexture'] && this['_diffuseTexture']['hasAlpha']; } , _0x499bf8['prototype']['isReadyForSubMesh'] = function(_0x12e966, _0x33a76e, _0x1d33a4) { var _0x21aa65 = this; if (void 0x0 === _0x1d33a4 && (_0x1d33a4 = !0x1), _0x33a76e['effect'] && this['isFrozen'] && this['_wasPreviouslyReady']) return !0x0; _0x33a76e['_materialDefines'] || (_0x33a76e['_materialDefines'] = new _0x348d01()); var _0x23dc81 = this['getScene']() , _0x290840 = _0x33a76e['_materialDefines']; if (!this['checkReadyOnEveryCall'] && _0x33a76e['effect'] && _0x290840['_renderId'] === _0x23dc81['getRenderId']()) return !0x0; var _0x4029cf = _0x23dc81['getEngine'](); if (_0x2efc06['a']['PrepareDefinesForLights'](_0x23dc81, _0x12e966, _0x290840, !0x1, this['_maxSimultaneousLights']), _0x290840['_needNormals'] = !0x0, _0x2efc06['a']['PrepareDefinesForMultiview'](_0x23dc81, _0x290840), _0x290840['_areTexturesDirty']) { if (_0x290840['_needUVs'] = !0x1, _0x23dc81['texturesEnabled']) { if (_0x23dc81['getEngine']()['getCaps']()['textureLOD'] && (_0x290840['TEXTURELODSUPPORT'] = !0x0), this['_diffuseTexture'] && _0x2085b2['a']['DiffuseTextureEnabled']) { if (!this['_diffuseTexture']['isReadyOrNotBlocking']()) return !0x1; _0x2efc06['a']['PrepareDefinesForMergedUV'](this['_diffuseTexture'], _0x290840, 'DIFFUSE'), _0x290840['DIFFUSEHASALPHA'] = this['_diffuseTexture']['hasAlpha'], _0x290840['GAMMADIFFUSE'] = this['_diffuseTexture']['gammaSpace'], _0x290840['OPACITYFRESNEL'] = this['_opacityFresnel']; } else _0x290840['DIFFUSE'] = !0x1, _0x290840['DIFFUSEHASALPHA'] = !0x1, _0x290840['GAMMADIFFUSE'] = !0x1, _0x290840['OPACITYFRESNEL'] = !0x1; var _0x584eaa = this['_reflectionTexture']; if (_0x584eaa && _0x2085b2['a']['ReflectionTextureEnabled']) { if (!_0x584eaa['isReadyOrNotBlocking']()) return !0x1; switch (_0x290840['REFLECTION'] = !0x0, _0x290840['GAMMAREFLECTION'] = _0x584eaa['gammaSpace'], _0x290840['RGBDREFLECTION'] = _0x584eaa['isRGBD'], _0x290840['REFLECTIONBLUR'] = this['_reflectionBlur'] > 0x0, _0x290840['REFLECTIONMAP_OPPOSITEZ'] = this['getScene']()['useRightHandedSystem'] ? !_0x584eaa['invertZ'] : _0x584eaa['invertZ'], _0x290840['LODINREFLECTIONALPHA'] = _0x584eaa['lodLevelInAlpha'], _0x290840['EQUIRECTANGULAR_RELFECTION_FOV'] = this['useEquirectangularFOV'], _0x290840['REFLECTIONBGR'] = this['switchToBGR'], _0x584eaa['coordinatesMode'] === _0x11d14a['a']['INVCUBIC_MODE'] && (_0x290840['INVERTCUBICMAP'] = !0x0), _0x290840['REFLECTIONMAP_3D'] = _0x584eaa['isCube'], _0x584eaa['coordinatesMode']) { case _0x11d14a['a']['EXPLICIT_MODE']: _0x290840['REFLECTIONMAP_EXPLICIT'] = !0x0; break; case _0x11d14a['a']['PLANAR_MODE']: _0x290840['REFLECTIONMAP_PLANAR'] = !0x0; break; case _0x11d14a['a']['PROJECTION_MODE']: _0x290840['REFLECTIONMAP_PROJECTION'] = !0x0; break; case _0x11d14a['a']['SKYBOX_MODE']: _0x290840['REFLECTIONMAP_SKYBOX'] = !0x0, _0x290840['REFLECTIONMAP_SKYBOX_TRANSFORMED'] = !_0x584eaa['getReflectionTextureMatrix']()['isIdentity'](); break; case _0x11d14a['a']['SPHERICAL_MODE']: _0x290840['REFLECTIONMAP_SPHERICAL'] = !0x0; break; case _0x11d14a['a']['EQUIRECTANGULAR_MODE']: _0x290840['REFLECTIONMAP_EQUIRECTANGULAR'] = !0x0; break; case _0x11d14a['a']['FIXED_EQUIRECTANGULAR_MODE']: _0x290840['REFLECTIONMAP_EQUIRECTANGULAR_FIXED'] = !0x0; break; case _0x11d14a['a']['FIXED_EQUIRECTANGULAR_MIRRORED_MODE']: _0x290840['REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED'] = !0x0; break; case _0x11d14a['a']['CUBIC_MODE']: case _0x11d14a['a']['INVCUBIC_MODE']: default: _0x290840['REFLECTIONMAP_CUBIC'] = !0x0; } this['reflectionFresnel'] ? (_0x290840['REFLECTIONFRESNEL'] = !0x0, _0x290840['REFLECTIONFALLOFF'] = this['reflectionFalloffDistance'] > 0x0, this['_reflectionControls']['x'] = this['reflectionAmount'], this['_reflectionControls']['y'] = this['reflectionReflectance0'], this['_reflectionControls']['z'] = this['reflectionReflectance90'], this['_reflectionControls']['w'] = 0x1 / this['reflectionFalloffDistance']) : (_0x290840['REFLECTIONFRESNEL'] = !0x1, _0x290840['REFLECTIONFALLOFF'] = !0x1); } else _0x290840['REFLECTION'] = !0x1, _0x290840['REFLECTIONFRESNEL'] = !0x1, _0x290840['REFLECTIONFALLOFF'] = !0x1, _0x290840['REFLECTIONBLUR'] = !0x1, _0x290840['REFLECTIONMAP_3D'] = !0x1, _0x290840['REFLECTIONMAP_SPHERICAL'] = !0x1, _0x290840['REFLECTIONMAP_PLANAR'] = !0x1, _0x290840['REFLECTIONMAP_CUBIC'] = !0x1, _0x290840['REFLECTIONMAP_PROJECTION'] = !0x1, _0x290840['REFLECTIONMAP_SKYBOX'] = !0x1, _0x290840['REFLECTIONMAP_SKYBOX_TRANSFORMED'] = !0x1, _0x290840['REFLECTIONMAP_EXPLICIT'] = !0x1, _0x290840['REFLECTIONMAP_EQUIRECTANGULAR'] = !0x1, _0x290840['REFLECTIONMAP_EQUIRECTANGULAR_FIXED'] = !0x1, _0x290840['REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED'] = !0x1, _0x290840['INVERTCUBICMAP'] = !0x1, _0x290840['REFLECTIONMAP_OPPOSITEZ'] = !0x1, _0x290840['LODINREFLECTIONALPHA'] = !0x1, _0x290840['GAMMAREFLECTION'] = !0x1, _0x290840['RGBDREFLECTION'] = !0x1; } _0x290840['PREMULTIPLYALPHA'] = this['alphaMode'] === _0x24e342['a']['ALPHA_PREMULTIPLIED'] || this['alphaMode'] === _0x24e342['a']['ALPHA_PREMULTIPLIED_PORTERDUFF'], _0x290840['USERGBCOLOR'] = this['_useRGBColor'], _0x290840['NOISE'] = this['_enableNoise']; } if (_0x290840['_areLightsDirty'] && (_0x290840['USEHIGHLIGHTANDSHADOWCOLORS'] = !this['_useRGBColor'] && (0x0 !== this['_primaryColorShadowLevel'] || 0x0 !== this['_primaryColorHighlightLevel'])), _0x290840['_areImageProcessingDirty'] && this['_imageProcessingConfiguration']) { if (!this['_imageProcessingConfiguration']['isReady']()) return !0x1; this['_imageProcessingConfiguration']['prepareDefines'](_0x290840); } if (_0x2efc06['a']['PrepareDefinesForMisc'](_0x12e966, _0x23dc81, !0x1, this['pointsCloud'], this['fogEnabled'], this['_shouldTurnAlphaTestOn'](_0x12e966), _0x290840), _0x2efc06['a']['PrepareDefinesForFrameBoundValues'](_0x23dc81, _0x4029cf, _0x290840, _0x1d33a4), _0x2efc06['a']['PrepareDefinesForAttributes'](_0x12e966, _0x290840, !0x1, !0x0, !0x1) && _0x12e966 && (_0x23dc81['getEngine']()['getCaps']()['standardDerivatives'] || _0x12e966['isVerticesDataPresent'](_0x4209f7['b']['NormalKind']) || (_0x12e966['createNormals'](!0x0), _0x3f98cb['a']['Warn']('BackgroundMaterial:\x20Normals\x20have\x20been\x20created\x20for\x20the\x20mesh:\x20' + _0x12e966['name']))), _0x290840['isDirty']) { _0x290840['markAsProcessed'](), _0x23dc81['resetCachedMaterial'](); var _0x243668 = new _0x3e9e56['c'](); _0x290840['FOG'] && _0x243668['addFallback'](0x0, 'FOG'), _0x290840['POINTSIZE'] && _0x243668['addFallback'](0x1, 'POINTSIZE'), _0x290840['MULTIVIEW'] && _0x243668['addFallback'](0x0, 'MULTIVIEW'), _0x2efc06['a']['HandleFallbacksForShadows'](_0x290840, _0x243668, this['_maxSimultaneousLights']), _0x290840['NUM_BONE_INFLUENCERS'] > 0x0 && _0x243668['addCPUSkinningFallback'](0x0, _0x12e966); var _0x23f190 = [_0x4209f7['b']['PositionKind']]; _0x290840['NORMAL'] && _0x23f190['push'](_0x4209f7['b']['NormalKind']), _0x290840['UV1'] && _0x23f190['push'](_0x4209f7['b']['UVKind']), _0x290840['UV2'] && _0x23f190['push'](_0x4209f7['b']['UV2Kind']), _0x2efc06['a']['PrepareAttributesForBones'](_0x23f190, _0x12e966, _0x290840, _0x243668), _0x2efc06['a']['PrepareAttributesForInstances'](_0x23f190, _0x290840); var _0x7cea1e = ['world', 'view', 'viewProjection', 'vEyePosition', 'vLightsType', 'vFogInfos', 'vFogColor', 'pointSize', 'vClipPlane', 'vClipPlane2', 'vClipPlane3', 'vClipPlane4', 'mBones', 'vPrimaryColor', 'vPrimaryColorShadow', 'vReflectionInfos', 'reflectionMatrix', 'vReflectionMicrosurfaceInfos', 'fFovMultiplier', 'shadowLevel', 'alpha', 'vBackgroundCenter', 'vReflectionControl', 'vDiffuseInfos', 'diffuseMatrix'] , _0x300ea2 = ['diffuseSampler', 'reflectionSampler', 'reflectionSamplerLow', 'reflectionSamplerHigh'] , _0x22425e = ['Material', 'Scene']; _0x347427['a'] && (_0x347427['a']['PrepareUniforms'](_0x7cea1e, _0x290840), _0x347427['a']['PrepareSamplers'](_0x300ea2, _0x290840)), _0x2efc06['a']['PrepareUniformsAndSamplersList']({ 'uniformsNames': _0x7cea1e, 'uniformBuffersNames': _0x22425e, 'samplers': _0x300ea2, 'defines': _0x290840, 'maxSimultaneousLights': this['_maxSimultaneousLights'] }); var _0x356351 = _0x290840['toString'](); _0x33a76e['setEffect'](_0x23dc81['getEngine']()['createEffect']('background', { 'attributes': _0x23f190, 'uniformsNames': _0x7cea1e, 'uniformBuffersNames': _0x22425e, 'samplers': _0x300ea2, 'defines': _0x356351, 'fallbacks': _0x243668, 'onCompiled': function(_0x1ae4d7) { _0x21aa65['onCompiled'] && _0x21aa65['onCompiled'](_0x1ae4d7), _0x21aa65['bindSceneUniformBuffer'](_0x1ae4d7, _0x23dc81['getSceneUniformBuffer']()); }, 'onError': this['onError'], 'indexParameters': { 'maxSimultaneousLights': this['_maxSimultaneousLights'] } }, _0x4029cf), _0x290840), this['buildUniformLayout'](); } return !(!_0x33a76e['effect'] || !_0x33a76e['effect']['isReady']()) && (_0x290840['_renderId'] = _0x23dc81['getRenderId'](), this['_wasPreviouslyReady'] = !0x0, !0x0); } , _0x499bf8['prototype']['_computePrimaryColorFromPerceptualColor'] = function() { this['__perceptualColor'] && (this['_primaryColor']['copyFrom'](this['__perceptualColor']), this['_primaryColor']['toLinearSpaceToRef'](this['_primaryColor']), this['_imageProcessingConfiguration'] && this['_primaryColor']['scaleToRef'](0x1 / this['_imageProcessingConfiguration']['exposure'], this['_primaryColor']), this['_computePrimaryColors']()); } , _0x499bf8['prototype']['_computePrimaryColors'] = function() { 0x0 === this['_primaryColorShadowLevel'] && 0x0 === this['_primaryColorHighlightLevel'] || (this['_primaryColor']['scaleToRef'](this['_primaryColorShadowLevel'], this['_primaryShadowColor']), this['_primaryColor']['subtractToRef'](this['_primaryShadowColor'], this['_primaryShadowColor']), this['_white']['subtractToRef'](this['_primaryColor'], this['_primaryHighlightColor']), this['_primaryHighlightColor']['scaleToRef'](this['_primaryColorHighlightLevel'], this['_primaryHighlightColor']), this['_primaryColor']['addToRef'](this['_primaryHighlightColor'], this['_primaryHighlightColor'])); } , _0x499bf8['prototype']['buildUniformLayout'] = function() { this['_uniformBuffer']['addUniform']('vPrimaryColor', 0x4), this['_uniformBuffer']['addUniform']('vPrimaryColorShadow', 0x4), this['_uniformBuffer']['addUniform']('vDiffuseInfos', 0x2), this['_uniformBuffer']['addUniform']('vReflectionInfos', 0x2), this['_uniformBuffer']['addUniform']('diffuseMatrix', 0x10), this['_uniformBuffer']['addUniform']('reflectionMatrix', 0x10), this['_uniformBuffer']['addUniform']('vReflectionMicrosurfaceInfos', 0x3), this['_uniformBuffer']['addUniform']('fFovMultiplier', 0x1), this['_uniformBuffer']['addUniform']('pointSize', 0x1), this['_uniformBuffer']['addUniform']('shadowLevel', 0x1), this['_uniformBuffer']['addUniform']('alpha', 0x1), this['_uniformBuffer']['addUniform']('vBackgroundCenter', 0x3), this['_uniformBuffer']['addUniform']('vReflectionControl', 0x4), this['_uniformBuffer']['create'](); } , _0x499bf8['prototype']['unbind'] = function() { this['_diffuseTexture'] && this['_diffuseTexture']['isRenderTarget'] && this['_uniformBuffer']['setTexture']('diffuseSampler', null), this['_reflectionTexture'] && this['_reflectionTexture']['isRenderTarget'] && this['_uniformBuffer']['setTexture']('reflectionSampler', null), _0x1effe0['prototype']['unbind']['call'](this); } , _0x499bf8['prototype']['bindOnlyWorldMatrix'] = function(_0x5d47a1) { this['_activeEffect']['setMatrix']('world', _0x5d47a1); } , _0x499bf8['prototype']['bindForSubMesh'] = function(_0x143f43, _0x169e61, _0x401725) { var _0x4f0d7b = this['getScene']() , _0x56ec2d = _0x401725['_materialDefines']; if (_0x56ec2d) { var _0x592021 = _0x401725['effect']; if (_0x592021) { this['_activeEffect'] = _0x592021, this['bindOnlyWorldMatrix'](_0x143f43), _0x2efc06['a']['BindBonesParameters'](_0x169e61, this['_activeEffect']); var _0x17dba9 = this['_mustRebind'](_0x4f0d7b, _0x592021, _0x169e61['visibility']); if (_0x17dba9) { this['_uniformBuffer']['bindToEffect'](_0x592021, 'Material'), this['bindViewProjection'](_0x592021); var _0x3027d9 = this['_reflectionTexture']; this['_uniformBuffer']['useUbo'] && this['isFrozen'] && this['_uniformBuffer']['isSync'] || (_0x4f0d7b['texturesEnabled'] && (this['_diffuseTexture'] && _0x2085b2['a']['DiffuseTextureEnabled'] && (this['_uniformBuffer']['updateFloat2']('vDiffuseInfos', this['_diffuseTexture']['coordinatesIndex'], this['_diffuseTexture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_diffuseTexture'], this['_uniformBuffer'], 'diffuse')), _0x3027d9 && _0x2085b2['a']['ReflectionTextureEnabled'] && (this['_uniformBuffer']['updateMatrix']('reflectionMatrix', _0x3027d9['getReflectionTextureMatrix']()), this['_uniformBuffer']['updateFloat2']('vReflectionInfos', _0x3027d9['level'], this['_reflectionBlur']), this['_uniformBuffer']['updateFloat3']('vReflectionMicrosurfaceInfos', _0x3027d9['getSize']()['width'], _0x3027d9['lodGenerationScale'], _0x3027d9['lodGenerationOffset']))), this['shadowLevel'] > 0x0 && this['_uniformBuffer']['updateFloat']('shadowLevel', this['shadowLevel']), this['_uniformBuffer']['updateFloat']('alpha', this['alpha']), this['pointsCloud'] && this['_uniformBuffer']['updateFloat']('pointSize', this['pointSize']), _0x56ec2d['USEHIGHLIGHTANDSHADOWCOLORS'] ? (this['_uniformBuffer']['updateColor4']('vPrimaryColor', this['_primaryHighlightColor'], 0x1), this['_uniformBuffer']['updateColor4']('vPrimaryColorShadow', this['_primaryShadowColor'], 0x1)) : this['_uniformBuffer']['updateColor4']('vPrimaryColor', this['_primaryColor'], 0x1)), this['_uniformBuffer']['updateFloat']('fFovMultiplier', this['_fovMultiplier']), _0x4f0d7b['texturesEnabled'] && (this['_diffuseTexture'] && _0x2085b2['a']['DiffuseTextureEnabled'] && this['_uniformBuffer']['setTexture']('diffuseSampler', this['_diffuseTexture']), _0x3027d9 && _0x2085b2['a']['ReflectionTextureEnabled'] && (_0x56ec2d['REFLECTIONBLUR'] && _0x56ec2d['TEXTURELODSUPPORT'] ? this['_uniformBuffer']['setTexture']('reflectionSampler', _0x3027d9) : _0x56ec2d['REFLECTIONBLUR'] ? (this['_uniformBuffer']['setTexture']('reflectionSampler', _0x3027d9['_lodTextureMid'] || _0x3027d9), this['_uniformBuffer']['setTexture']('reflectionSamplerLow', _0x3027d9['_lodTextureLow'] || _0x3027d9), this['_uniformBuffer']['setTexture']('reflectionSamplerHigh', _0x3027d9['_lodTextureHigh'] || _0x3027d9)) : this['_uniformBuffer']['setTexture']('reflectionSampler', _0x3027d9), _0x56ec2d['REFLECTIONFRESNEL'] && (this['_uniformBuffer']['updateFloat3']('vBackgroundCenter', this['sceneCenter']['x'], this['sceneCenter']['y'], this['sceneCenter']['z']), this['_uniformBuffer']['updateFloat4']('vReflectionControl', this['_reflectionControls']['x'], this['_reflectionControls']['y'], this['_reflectionControls']['z'], this['_reflectionControls']['w'])))), _0x2efc06['a']['BindClipPlane'](this['_activeEffect'], _0x4f0d7b), _0x2efc06['a']['BindEyePosition'](_0x592021, _0x4f0d7b); } !_0x17dba9 && this['isFrozen'] || (_0x4f0d7b['lightsEnabled'] && _0x2efc06['a']['BindLights'](_0x4f0d7b, _0x169e61, this['_activeEffect'], _0x56ec2d, this['_maxSimultaneousLights'], !0x1), this['bindView'](_0x592021), _0x2efc06['a']['BindFogParameters'](_0x4f0d7b, _0x169e61, this['_activeEffect'], !0x0), this['_imageProcessingConfiguration'] && this['_imageProcessingConfiguration']['bind'](this['_activeEffect'])), this['_uniformBuffer']['update'](), this['_afterBind'](_0x169e61, this['_activeEffect']); } } } , _0x499bf8['prototype']['dispose'] = function(_0x4dc1bc, _0x45a4e7) { void 0x0 === _0x4dc1bc && (_0x4dc1bc = !0x1), void 0x0 === _0x45a4e7 && (_0x45a4e7 = !0x1), _0x45a4e7 && (this['diffuseTexture'] && this['diffuseTexture']['dispose'](), this['reflectionTexture'] && this['reflectionTexture']['dispose']()), this['_renderTargets']['dispose'](), this['_imageProcessingConfiguration'] && this['_imageProcessingObserver'] && this['_imageProcessingConfiguration']['onUpdateParameters']['remove'](this['_imageProcessingObserver']), _0x1effe0['prototype']['dispose']['call'](this, _0x4dc1bc); } , _0x499bf8['prototype']['clone'] = function(_0x3b295e) { var _0xfba36f = this; return _0x3d4764['a']['Clone'](function() { return new _0x499bf8(_0x3b295e,_0xfba36f['getScene']()); }, this); } , _0x499bf8['prototype']['serialize'] = function() { var _0x484036 = _0x3d4764['a']['Serialize'](this); return _0x484036['customType'] = 'BABYLON.BackgroundMaterial', _0x484036; } , _0x499bf8['prototype']['getClassName'] = function() { return 'BackgroundMaterial'; } , _0x499bf8['Parse'] = function(_0x1847a8, _0x407167, _0x5a78d1) { return _0x3d4764['a']['Parse'](function() { return new _0x499bf8(_0x1847a8['name'],_0x407167); }, _0x1847a8, _0x407167, _0x5a78d1); } , _0x499bf8['StandardReflectance0'] = 0.05, _0x499bf8['StandardReflectance90'] = 0.5, _0x420e5b['c']([Object(_0x3d4764['e'])()], _0x499bf8['prototype'], '_primaryColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsLightsDirty')], _0x499bf8['prototype'], 'primaryColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])()], _0x499bf8['prototype'], '__perceptualColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_primaryColorShadowLevel', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_primaryColorHighlightLevel', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsLightsDirty')], _0x499bf8['prototype'], 'primaryColorHighlightLevel', null), _0x420e5b['c']([Object(_0x3d4764['m'])()], _0x499bf8['prototype'], '_reflectionTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'reflectionTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_reflectionBlur', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'reflectionBlur', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])()], _0x499bf8['prototype'], '_diffuseTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'diffuseTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'shadowLights', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_shadowLevel', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'shadowLevel', void 0x0), _0x420e5b['c']([Object(_0x3d4764['o'])()], _0x499bf8['prototype'], '_sceneCenter', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'sceneCenter', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_opacityFresnel', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'opacityFresnel', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_reflectionFresnel', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'reflectionFresnel', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_reflectionFalloffDistance', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'reflectionFalloffDistance', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_reflectionAmount', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'reflectionAmount', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_reflectionReflectance0', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'reflectionReflectance0', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_reflectionReflectance90', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'reflectionReflectance90', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_useRGBColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'useRGBColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_enableNoise', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'enableNoise', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x499bf8['prototype'], '_maxSimultaneousLights', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x499bf8['prototype'], 'maxSimultaneousLights', void 0x0), _0x420e5b['c']([Object(_0x3d4764['i'])()], _0x499bf8['prototype'], '_imageProcessingConfiguration', void 0x0), _0x499bf8; }(_0xdc76ae['a']); _0x376b99['a']['RegisteredTypes']['BABYLON.BackgroundMaterial'] = _0x4ac990; var _0x404635 = _0x59bd00(0x50) , _0x1a1e8f = function() { function _0x291aab(_0x5a039c, _0x1a5f47) { var _0xe020b0 = this; this['_errorHandler'] = function(_0x40ce17, _0x179153) { _0xe020b0['onErrorObservable']['notifyObservers']({ 'message': _0x40ce17, 'exception': _0x179153 }); } , this['_options'] = _0x420e5b['a']({}, _0x291aab['_getDefaultOptions'](), _0x5a039c), this['_scene'] = _0x1a5f47, this['onErrorObservable'] = new _0x2dbec2['c'](), this['_setupBackground'](), this['_setupImageProcessing'](); } return _0x291aab['_getDefaultOptions'] = function() { return { 'createGround': !0x0, 'groundSize': 0xf, 'groundTexture': this['_groundTextureCDNUrl'], 'groundColor': new _0x47d24f['e'](0.2,0.2,0.3)['toLinearSpace']()['scale'](0x3), 'groundOpacity': 0.9, 'enableGroundShadow': !0x0, 'groundShadowLevel': 0.5, 'enableGroundMirror': !0x1, 'groundMirrorSizeRatio': 0.3, 'groundMirrorBlurKernel': 0x40, 'groundMirrorAmount': 0x1, 'groundMirrorFresnelWeight': 0x1, 'groundMirrorFallOffDistance': 0x0, 'groundMirrorTextureType': _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'], 'groundYBias': 0.00001, 'createSkybox': !0x0, 'skyboxSize': 0x14, 'skyboxTexture': this['_skyboxTextureCDNUrl'], 'skyboxColor': new _0x47d24f['e'](0.2,0.2,0.3)['toLinearSpace']()['scale'](0x3), 'backgroundYRotation': 0x0, 'sizeAuto': !0x0, 'rootPosition': _0x47d24f['x']['Zero'](), 'setupImageProcessing': !0x0, 'environmentTexture': this['_environmentTextureCDNUrl'], 'cameraExposure': 0.8, 'cameraContrast': 1.2, 'toneMappingEnabled': !0x0 }; } , Object['defineProperty'](_0x291aab['prototype'], 'rootMesh', { 'get': function() { return this['_rootMesh']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x291aab['prototype'], 'skybox', { 'get': function() { return this['_skybox']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x291aab['prototype'], 'skyboxTexture', { 'get': function() { return this['_skyboxTexture']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x291aab['prototype'], 'skyboxMaterial', { 'get': function() { return this['_skyboxMaterial']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x291aab['prototype'], 'ground', { 'get': function() { return this['_ground']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x291aab['prototype'], 'groundTexture', { 'get': function() { return this['_groundTexture']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x291aab['prototype'], 'groundMirror', { 'get': function() { return this['_groundMirror']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x291aab['prototype'], 'groundMirrorRenderList', { 'get': function() { return this['_groundMirror'] ? this['_groundMirror']['renderList'] : null; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x291aab['prototype'], 'groundMaterial', { 'get': function() { return this['_groundMaterial']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x291aab['prototype']['updateOptions'] = function(_0x21f3bd) { var _0x10c21b = _0x420e5b['a']({}, this['_options'], _0x21f3bd); this['_ground'] && !_0x10c21b['createGround'] && (this['_ground']['dispose'](), this['_ground'] = null), this['_groundMaterial'] && !_0x10c21b['createGround'] && (this['_groundMaterial']['dispose'](), this['_groundMaterial'] = null), this['_groundTexture'] && this['_options']['groundTexture'] != _0x10c21b['groundTexture'] && (this['_groundTexture']['dispose'](), this['_groundTexture'] = null), this['_skybox'] && !_0x10c21b['createSkybox'] && (this['_skybox']['dispose'](), this['_skybox'] = null), this['_skyboxMaterial'] && !_0x10c21b['createSkybox'] && (this['_skyboxMaterial']['dispose'](), this['_skyboxMaterial'] = null), this['_skyboxTexture'] && this['_options']['skyboxTexture'] != _0x10c21b['skyboxTexture'] && (this['_skyboxTexture']['dispose'](), this['_skyboxTexture'] = null), this['_groundMirror'] && !_0x10c21b['enableGroundMirror'] && (this['_groundMirror']['dispose'](), this['_groundMirror'] = null), this['_scene']['environmentTexture'] && this['_options']['environmentTexture'] != _0x10c21b['environmentTexture'] && this['_scene']['environmentTexture']['dispose'](), this['_options'] = _0x10c21b, this['_setupBackground'](), this['_setupImageProcessing'](); } , _0x291aab['prototype']['setMainColor'] = function(_0x2008e6) { this['groundMaterial'] && (this['groundMaterial']['primaryColor'] = _0x2008e6), this['skyboxMaterial'] && (this['skyboxMaterial']['primaryColor'] = _0x2008e6), this['groundMirror'] && (this['groundMirror']['clearColor'] = new _0x47d24f['f'](_0x2008e6['r'],_0x2008e6['g'],_0x2008e6['b'],0x1)); } , _0x291aab['prototype']['_setupImageProcessing'] = function() { this['_options']['setupImageProcessing'] && (this['_scene']['imageProcessingConfiguration']['contrast'] = this['_options']['cameraContrast'], this['_scene']['imageProcessingConfiguration']['exposure'] = this['_options']['cameraExposure'], this['_scene']['imageProcessingConfiguration']['toneMappingEnabled'] = this['_options']['toneMappingEnabled'], this['_setupEnvironmentTexture']()); } , _0x291aab['prototype']['_setupEnvironmentTexture'] = function() { if (!this['_scene']['environmentTexture']) if (this['_options']['environmentTexture']instanceof _0x134235['a']) this['_scene']['environmentTexture'] = this['_options']['environmentTexture']; else { var _0x1fa138 = _0x1ed101['CreateFromPrefilteredData'](this['_options']['environmentTexture'], this['_scene']); this['_scene']['environmentTexture'] = _0x1fa138; } } , _0x291aab['prototype']['_setupBackground'] = function() { this['_rootMesh'] || (this['_rootMesh'] = new _0xb4719b['a']('BackgroundHelper',this['_scene'])), this['_rootMesh']['rotation']['y'] = this['_options']['backgroundYRotation']; var _0x4a53de = this['_getSceneSize'](); this['_options']['createGround'] && (this['_setupGround'](_0x4a53de), this['_setupGroundMaterial'](), this['_setupGroundDiffuseTexture'](), this['_options']['enableGroundMirror'] && this['_setupGroundMirrorTexture'](_0x4a53de), this['_setupMirrorInGroundMaterial']()), this['_options']['createSkybox'] && (this['_setupSkybox'](_0x4a53de), this['_setupSkyboxMaterial'](), this['_setupSkyboxReflectionTexture']()), this['_rootMesh']['position']['x'] = _0x4a53de['rootPosition']['x'], this['_rootMesh']['position']['z'] = _0x4a53de['rootPosition']['z'], this['_rootMesh']['position']['y'] = _0x4a53de['rootPosition']['y']; } , _0x291aab['prototype']['_getSceneSize'] = function() { var _0x37cd20 = this , _0x543834 = this['_options']['groundSize'] , _0x1816c1 = this['_options']['skyboxSize'] , _0x45c56e = this['_options']['rootPosition']; if (!this['_scene']['meshes'] || 0x1 === this['_scene']['meshes']['length']) return { 'groundSize': _0x543834, 'skyboxSize': _0x1816c1, 'rootPosition': _0x45c56e }; var _0x53cee8 = this['_scene']['getWorldExtends'](function(_0x3bec57) { return _0x3bec57 !== _0x37cd20['_ground'] && _0x3bec57 !== _0x37cd20['_rootMesh'] && _0x3bec57 !== _0x37cd20['_skybox']; }) , _0x47e687 = _0x53cee8['max']['subtract'](_0x53cee8['min']); if (this['_options']['sizeAuto']) { this['_scene']['activeCamera']instanceof _0x1fd852 && this['_scene']['activeCamera']['upperRadiusLimit'] && (_0x1816c1 = _0x543834 = 0x2 * this['_scene']['activeCamera']['upperRadiusLimit']); var _0x58a19b = _0x47e687['length'](); _0x58a19b > _0x543834 && (_0x1816c1 = _0x543834 = 0x2 * _0x58a19b), _0x543834 *= 1.1, _0x1816c1 *= 1.5, (_0x45c56e = _0x53cee8['min']['add'](_0x47e687['scale'](0.5)))['y'] = _0x53cee8['min']['y'] - this['_options']['groundYBias']; } return { 'groundSize': _0x543834, 'skyboxSize': _0x1816c1, 'rootPosition': _0x45c56e }; } , _0x291aab['prototype']['_setupGround'] = function(_0x3fe550) { var _0x2f6f05 = this; this['_ground'] && !this['_ground']['isDisposed']() || (this['_ground'] = _0xb4719b['a']['CreatePlane']('BackgroundPlane', _0x3fe550['groundSize'], this['_scene']), this['_ground']['rotation']['x'] = Math['PI'] / 0x2, this['_ground']['parent'] = this['_rootMesh'], this['_ground']['onDisposeObservable']['add'](function() { _0x2f6f05['_ground'] = null; })), this['_ground']['receiveShadows'] = this['_options']['enableGroundShadow']; } , _0x291aab['prototype']['_setupGroundMaterial'] = function() { this['_groundMaterial'] || (this['_groundMaterial'] = new _0x4ac990('BackgroundPlaneMaterial',this['_scene'])), this['_groundMaterial']['alpha'] = this['_options']['groundOpacity'], this['_groundMaterial']['alphaMode'] = _0x24e342['a']['ALPHA_PREMULTIPLIED_PORTERDUFF'], this['_groundMaterial']['shadowLevel'] = this['_options']['groundShadowLevel'], this['_groundMaterial']['primaryColor'] = this['_options']['groundColor'], this['_groundMaterial']['useRGBColor'] = !0x1, this['_groundMaterial']['enableNoise'] = !0x0, this['_ground'] && (this['_ground']['material'] = this['_groundMaterial']); } , _0x291aab['prototype']['_setupGroundDiffuseTexture'] = function() { if (this['_groundMaterial'] && !this['_groundTexture']) if (this['_options']['groundTexture']instanceof _0x134235['a']) this['_groundMaterial']['diffuseTexture'] = this['_options']['groundTexture']; else { var _0x5d5dc = new _0x11d14a['a'](this['_options']['groundTexture'],this['_scene'],void 0x0,void 0x0,void 0x0,void 0x0,this['_errorHandler']); _0x5d5dc['gammaSpace'] = !0x1, _0x5d5dc['hasAlpha'] = !0x0, this['_groundMaterial']['diffuseTexture'] = _0x5d5dc; } } , _0x291aab['prototype']['_setupGroundMirrorTexture'] = function(_0x135a95) { var _0x52893e = _0x11d14a['a']['CLAMP_ADDRESSMODE']; if (!this['_groundMirror'] && (this['_groundMirror'] = new _0x285bd8('BackgroundPlaneMirrorTexture',{ 'ratio': this['_options']['groundMirrorSizeRatio'] },this['_scene'],!0x1,this['_options']['groundMirrorTextureType'],_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],!0x0), this['_groundMirror']['mirrorPlane'] = new _0x47d24f['n'](0x0,-0x1,0x0,_0x135a95['rootPosition']['y']), this['_groundMirror']['anisotropicFilteringLevel'] = 0x1, this['_groundMirror']['wrapU'] = _0x52893e, this['_groundMirror']['wrapV'] = _0x52893e, this['_groundMirror']['gammaSpace'] = !0x1, this['_groundMirror']['renderList'])) for (var _0x1e34c5 = 0x0; _0x1e34c5 < this['_scene']['meshes']['length']; _0x1e34c5++) { var _0x28210a = this['_scene']['meshes'][_0x1e34c5]; _0x28210a !== this['_ground'] && _0x28210a !== this['_skybox'] && _0x28210a !== this['_rootMesh'] && this['_groundMirror']['renderList']['push'](_0x28210a); } this['_groundMirror']['clearColor'] = new _0x47d24f['f'](this['_options']['groundColor']['r'],this['_options']['groundColor']['g'],this['_options']['groundColor']['b'],0x1), this['_groundMirror']['adaptiveBlurKernel'] = this['_options']['groundMirrorBlurKernel']; } , _0x291aab['prototype']['_setupMirrorInGroundMaterial'] = function() { this['_groundMaterial'] && (this['_groundMaterial']['reflectionTexture'] = this['_groundMirror'], this['_groundMaterial']['reflectionFresnel'] = !0x0, this['_groundMaterial']['reflectionAmount'] = this['_options']['groundMirrorAmount'], this['_groundMaterial']['reflectionStandardFresnelWeight'] = this['_options']['groundMirrorFresnelWeight'], this['_groundMaterial']['reflectionFalloffDistance'] = this['_options']['groundMirrorFallOffDistance']); } , _0x291aab['prototype']['_setupSkybox'] = function(_0x1f7111) { var _0x5c21a7 = this; this['_skybox'] && !this['_skybox']['isDisposed']() || (this['_skybox'] = _0xb4719b['a']['CreateBox']('BackgroundSkybox', _0x1f7111['skyboxSize'], this['_scene'], void 0x0, _0xb4719b['a']['BACKSIDE']), this['_skybox']['onDisposeObservable']['add'](function() { _0x5c21a7['_skybox'] = null; })), this['_skybox']['parent'] = this['_rootMesh']; } , _0x291aab['prototype']['_setupSkyboxMaterial'] = function() { this['_skybox'] && (this['_skyboxMaterial'] || (this['_skyboxMaterial'] = new _0x4ac990('BackgroundSkyboxMaterial',this['_scene'])), this['_skyboxMaterial']['useRGBColor'] = !0x1, this['_skyboxMaterial']['primaryColor'] = this['_options']['skyboxColor'], this['_skyboxMaterial']['enableNoise'] = !0x0, this['_skybox']['material'] = this['_skyboxMaterial']); } , _0x291aab['prototype']['_setupSkyboxReflectionTexture'] = function() { this['_skyboxMaterial'] && (this['_skyboxTexture'] || (this['_options']['skyboxTexture']instanceof _0x134235['a'] ? this['_skyboxMaterial']['reflectionTexture'] = this['_options']['skyboxTexture'] : (this['_skyboxTexture'] = new _0x1ed101(this['_options']['skyboxTexture'],this['_scene'],void 0x0,void 0x0,void 0x0,void 0x0,this['_errorHandler']), this['_skyboxTexture']['coordinatesMode'] = _0x11d14a['a']['SKYBOX_MODE'], this['_skyboxTexture']['gammaSpace'] = !0x1, this['_skyboxMaterial']['reflectionTexture'] = this['_skyboxTexture']))); } , _0x291aab['prototype']['dispose'] = function() { this['_groundMaterial'] && this['_groundMaterial']['dispose'](!0x0, !0x0), this['_skyboxMaterial'] && this['_skyboxMaterial']['dispose'](!0x0, !0x0), this['_rootMesh']['dispose'](!0x1); } , _0x291aab['_groundTextureCDNUrl'] = 'https://assets.babylonjs.com/environments/backgroundGround.png', _0x291aab['_skyboxTextureCDNUrl'] = 'https://assets.babylonjs.com/environments/backgroundSkybox.dds', _0x291aab['_environmentTextureCDNUrl'] = 'https://assets.babylonjs.com/environments/environmentSpecular.env', _0x291aab; }() , _0x483560 = _0x59bd00(0x2a) , _0x998373 = function(_0x2c5678) { function _0x66c74d(_0x4f0fe6, _0x29ef2a, _0x101356, _0xd0f03f, _0x52c4ee) { void 0x0 === _0x52c4ee && (_0x52c4ee = null); var _0xf3535 = _0x2c5678['call'](this, _0x4f0fe6, _0xd0f03f) || this; _0xf3535['_useDirectMapping'] = !0x1, _0xf3535['onLoadErrorObservable'] = new _0x2dbec2['c'](), _0x4f0fe6 = _0x4f0fe6 || 'photoDome', _0x101356['resolution'] = 0x0 | Math['abs'](_0x101356['resolution']) || 0x20, _0x101356['size'] = Math['abs'](_0x101356['size']) || (_0xd0f03f['activeCamera'] ? 0.48 * _0xd0f03f['activeCamera']['maxZ'] : 0x3e8), void 0x0 === _0x101356['useDirectMapping'] ? _0xf3535['_useDirectMapping'] = !0x0 : _0xf3535['_useDirectMapping'] = _0x101356['useDirectMapping'], void 0x0 === _0x101356['faceForward'] && (_0x101356['faceForward'] = !0x0), _0xf3535['_setReady'](!0x1); var _0x364ff7 = _0xf3535['_material'] = new _0x4ac990(_0x4f0fe6 + '_material',_0xd0f03f); if (_0xf3535['_mesh'] = _0xb4719b['a']['CreateSphere'](_0x4f0fe6 + '_mesh', _0x101356['resolution'], _0x101356['size'], _0xd0f03f, !0x1, _0xb4719b['a']['BACKSIDE']), _0x364ff7['opacityFresnel'] = !0x1, _0x364ff7['useEquirectangularFOV'] = !0x0, _0x364ff7['fovMultiplier'] = 0x1, _0xf3535['photoTexture'] = new _0x11d14a['a'](_0x29ef2a,_0xd0f03f,!0x0,!_0xf3535['_useDirectMapping'],void 0x0,void 0x0,function(_0x887b4e, _0x5763ca) { _0xf3535['onLoadErrorObservable']['notifyObservers'](_0x887b4e || 'Unknown\x20error\x20occured'), _0x52c4ee && _0x52c4ee(_0x887b4e, _0x5763ca); } ), _0xf3535['photoTexture']['onLoadObservable']['addOnce'](function() { _0xf3535['_setReady'](!0x0); }), _0xf3535['_mesh']['material'] = _0x364ff7, _0xf3535['_mesh']['parent'] = _0xf3535, _0x101356['faceForward'] && _0xd0f03f['activeCamera']) { var _0x563368 = _0xd0f03f['activeCamera'] , _0x11cb7d = _0x47d24f['x']['Forward']() , _0x32c2ff = _0x47d24f['x']['TransformNormal'](_0x11cb7d, _0x563368['getViewMatrix']()); _0x32c2ff['normalize'](), _0xf3535['rotation']['y'] = Math['acos'](_0x47d24f['x']['Dot'](_0x11cb7d, _0x32c2ff)); } return _0xf3535; } return _0x420e5b['d'](_0x66c74d, _0x2c5678), Object['defineProperty'](_0x66c74d['prototype'], 'photoTexture', { 'get': function() { return this['_photoTexture']; }, 'set': function(_0x4057e5) { this['_photoTexture'] !== _0x4057e5 && (this['_photoTexture'] = _0x4057e5, this['_useDirectMapping'] ? (this['_photoTexture']['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_photoTexture']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_material']['diffuseTexture'] = this['_photoTexture']) : (this['_photoTexture']['coordinatesMode'] = _0x11d14a['a']['FIXED_EQUIRECTANGULAR_MIRRORED_MODE'], this['_photoTexture']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_material']['reflectionTexture'] = this['_photoTexture'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x66c74d['prototype'], 'fovMultiplier', { 'get': function() { return this['_material']['fovMultiplier']; }, 'set': function(_0x1fa2f0) { this['_material']['fovMultiplier'] = _0x1fa2f0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x66c74d['prototype']['dispose'] = function(_0x43229f, _0xa5e790) { void 0x0 === _0xa5e790 && (_0xa5e790 = !0x1), this['_photoTexture']['dispose'](), this['_mesh']['dispose'](), this['_material']['dispose'](), this['onLoadErrorObservable']['clear'](), _0x2c5678['prototype']['dispose']['call'](this, _0x43229f, _0xa5e790); } , _0x66c74d; }(_0x483560['a']) , _0xc2bc0 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0a#include\x0avoid\x20main(void)\x0a{\x0agl_FragColor=vec4(fromRGBD(texture2D(textureSampler,vUV)),1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['rgbdDecodePixelShader'] = _0xc2bc0; var _0x92f7b4 = function() { function _0x14011b() {} return _0x14011b['_ExpandDefaultBRDFTexture'] = function(_0x564041) { var _0xb44438 = _0x564041['getEngine']() , _0x41d9f4 = _0xb44438['getCaps']() , _0x446892 = !0x1; if (_0x41d9f4['textureHalfFloatRender'] && _0x41d9f4['textureHalfFloatLinearFiltering'] ? (_0x446892 = !0x0, _0x564041['type'] = _0x24e342['a']['TEXTURETYPE_HALF_FLOAT']) : _0x41d9f4['textureFloatRender'] && _0x41d9f4['textureFloatLinearFiltering'] && (_0x446892 = !0x0, _0x564041['type'] = _0x24e342['a']['TEXTURETYPE_FLOAT']), _0x446892) { _0x564041['isReady'] = !0x1; var _0x2c6f5d = new _0x1f5ab5('rgbdDecode','rgbdDecode',null,null,0x1,null,_0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE'],_0xb44438,!0x1,void 0x0,_0x564041['type'],void 0x0,null,!0x1); _0x564041['_isRGBD'] = !0x1, _0x564041['invertY'] = !0x1; var _0x4c4a5d = _0xb44438['createRenderTargetTexture'](_0x564041['width'], { 'generateDepthBuffer': !0x1, 'generateMipMaps': !0x1, 'generateStencilBuffer': !0x1, 'samplingMode': _0x24e342['a']['TEXTURE_BILINEAR_SAMPLINGMODE'], 'type': _0x564041['type'], 'format': _0x24e342['a']['TEXTUREFORMAT_RGBA'] }); _0x2c6f5d['getEffect']()['executeWhenCompiled'](function() { _0x2c6f5d['onApply'] = function(_0x37e6de) { _0x37e6de['_bindTexture']('textureSampler', _0x564041), _0x37e6de['setFloat2']('scale', 0x1, 0x1); } , _0xb44438['scenes'][0x0]['postProcessManager']['directRender']([_0x2c6f5d], _0x4c4a5d, !0x0), _0xb44438['restoreDefaultFramebuffer'](), _0xb44438['_releaseTexture'](_0x564041), _0xb44438['_releaseFramebufferObjects'](_0x4c4a5d), _0x2c6f5d && _0x2c6f5d['dispose'](), _0x4c4a5d['_swapAndDie'](_0x564041), _0x564041['isReady'] = !0x0; }); } } , _0x14011b['GetEnvironmentBRDFTexture'] = function(_0x1cc0cd) { var _0x2e9adf = this; if (!_0x1cc0cd['environmentBRDFTexture']) { var _0x111b1f = _0x1cc0cd['useDelayedTextureLoading']; _0x1cc0cd['useDelayedTextureLoading'] = !0x1; var _0x25eb4c = _0x11d14a['a']['CreateFromBase64String'](this['_environmentBRDFBase64Texture'], 'EnvironmentBRDFTexture', _0x1cc0cd, !0x0, !0x0, _0x11d14a['a']['BILINEAR_SAMPLINGMODE']); _0x25eb4c['_texture']['_isRGBD'] = !0x0, _0x25eb4c['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x25eb4c['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x1cc0cd['environmentBRDFTexture'] = _0x25eb4c, _0x1cc0cd['useDelayedTextureLoading'] = _0x111b1f, _0x25eb4c['onLoadObservable']['addOnce'](function() { _0x2e9adf['_ExpandDefaultBRDFTexture'](_0x25eb4c['_texture']); }); } return _0x1cc0cd['environmentBRDFTexture']; } , _0x14011b['_environmentBRDFBase64Texture'] = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAgAElEQVR4Xuy9Ccx261oW9q5v/r7/33ufgalSbWtiTJsmTZOmSdOkpVKsWhxAxIJFQaCKUkpFiiBFKjKPh3PO7hjb2LmNnYxtjbGtbY21rQGkgCgiIKPMM5x99ruatZ7puq/7up/nWd/3bzzABjb/9675Xeu5hnt41rv8s+evW9fz+ZT+W9N/63o6re3v+nlfvq2CbdZT2hbW7dukDbf/a/9uS3G7E69Ln9PifK50sHSMvD2ur3+XY/E2++dyPelDPoU7Jm9XTm2uab86vJ56gvSd80dzXflA+Zul74PHwGuGv/MXLv+kL4Lfp56r3DM8ef6utE10Xnu97fra7uWi2/etZ8BV/F3F+fdni/8Dn9O4KSvt/cxPMa+HY5Qx024OHF3cM7zHdcsy3uAeuu3wPve3S2OVthHH09v5e9BuCT0HHgPlHsjz+3uxNALYAJ9JgAigALyBmQGPQEcAxwRQgVhIogwcIoAG2HYsM1gR3IokEDD5biMBhMeSoLXkweCoAxsGcDoX3Xi3nkCFACnfiQaPARECgPaVAMZjEuAsNttAjIBZSY8HXHkuFctt4Npj2e8+B/ImFOnwEcg9SPEqcNdyDBSZemwipBkwmvMwocG9Gm6nCDUisHpb+iSRTp+2kQTQAJ9cACt8cwRN/Ss5IJBJ7a2qC0AHYK4gUkpuQE2uoTiJfMPw4epjeqdRXYE5Rhu0me7aGCwIKtfFD0sAmklCgWBmG3utbfCrfdtlBUpK6qUIpwCkkUYDIg4yp4QhAeW9GDBwLR6glgysC8PvZq6o2MJMT3jdhtKqI0WiMfeTCMhs54BqzwNPyLueclxzS/3+XQI0jtSSQrmly4ecv249Z+U/gQOoNj+HBKj+yhGEtn9/2C10qLaWLH5Tz6KykeI3FTb7wM0uRJMWlZtmQwgXFgAr23VwDGRjADoPOgMIQ1pigNdnCrbviaqvFMopuDpvHjB8/RXoeI8ydGp4RAM2x13NzQtr74BkQoFZlceBDQTugIlaixa7kbn5nl3wNgVNpxGKi2OvQxJmjOJ24riNB/sKX0VJPS/zjNfTTgAp9s95AIj9K9DPqPQc22+nS6C0eYAGZJMLyF+sPPwGVggXypcH8HggA5gwbCjHhy9v1Z7yDIY4Gie3nIMGrQHUUNVBVeq14rnyOeiBvWjVl8QgQoZ6NajErESk0n0wx4CLFLuXJ5gOE4J8gtV4cW2RlYbvrO5lVWMk10KU6lpwrHbBr8cHn8+EMdH5YPl2H4gANhCmPEABLTsBp/5k+Y1TwGReWlGTgqiy6WFrxXcEQQTilLw8mUP5AIh1pbJnTgUrOiYIVBZKMAXqW7GISigAyjbYgkWfyyqyTTI5ZckLokEehQNxAs8TYMHF8X3w+3kSrcc1qozPAsAUqbfLX8B5AKgyFGBidOcIiB8JAMdZWV4fGak/nU+Sd0BC266CANbTqdp+zPZHmX9Uf1Txju1HxS6DbeeAZtOtavtKAILAhw9B1aCNjhyJELDZrldlFwRB1YT2nJtUNnVTBPJ41Y+dAQwOE2eD6+EBWZ4FDDRUFmUn7ZiLzjkgGbgOTTTintG1y2QiuKh2ZSKrLoDDVt4RI90jc28CMunnC/AK27iBhEB+FHgme78rtk2w5b+vcguSAKLyH5YCfT6ghAgFeAh+H9PXBxcBPiKICjo4fnEE+ODLk1NJQ7M9PACXK2iqgTa1DTpPHo59FYGgNZuM9T1AoBphFMIPIhXPMzG1Q/jBVYceAobVqCElHYo+uzwBPKvGyXBuY1O9YjZBQzOP312TK4PAVjDw/Hn/p5CEJKI2puq15C/jXFz7kiZB2CPLckzzzIPjlMtbPuT89WtK/rUSoOkFMDV/KvflEp6pCnCtH614yRPU0AAScxjvlwGABFFGlgQ12MJD+QCt7HX88bEE2aRFFnhGOdBO5hWsLDOx/mzZT6meSgAa9cLrYnA6O0yqxSDpbG/uFRAXwDWPYUsG1s2Le91Yp8CJsK5VM6wYUJyMGLLqjESsCcykC80XsddknltlRSC/fL+GBFAdXXw97fDrafnnzl+fG4FyIrAAPggD9nsTNQIhsLfziwqAVX+r5IcqAQKMxZlYUBaSQVUog4jWgXJhCGKah1QlQIUDZlDSQCm804n1+6rfQOAqEALA0SCMcwdeqZyqONKIQBsAVoBWKlcvRKnq6YHSKmAa/LJKUZFBJMf3tEdeJvmGY05cIx1XkXIlH8re8/J0SeK6I3LMvQCSAHQYULL8OhfApT6X2BN2v4YSRxW/Hivf4ALcScuPAx9JxxIHwKY6AXiIfC5+mHBNj63rW2cAwyMiDiQnygJ3AQzEZ+6BG+iCGBQ4BqD1cTHlKFTJUA3kyi0RyHF8EAAVWOg+vBCSqLeMFFnct64jOXAcW6SM8wHbLcgEUNT/3BKA2BJsWnoFAahKgGv79V2Bs5WAWkbkHAAMirgnoA1ajN8REKHay/IesCzkDdrzfMR6/B5moHuLORMu1PtKipbG9wGldsSgQVSpqdkWECRtRcPyn1DQGTVvl+rPh7pYOA2tvKxE8DOBJJuq+4/i7rj0SKpN9zA9QpFQbV9EtBxbZ1uPUcYDuAlDAEn5z83i7yRgld91AXZiftMXkG9oAartCqQKQOgIhOKHMX8elsbWF8mgdRSnm0QfJry4SoCEhAwND9EMjFE+wCXXJlS/o7ZK9RXwDhNDl0jsgJ2r81cpz8a0MpfrkJNA53sQqWsHXI8mCXZdCDImRAHmuvljjiO+Z+0FUG5GCMLy6/YcAAB/B30igdOZ4/2dDRJBIKCNQyggxfheNfn4kh8qsSGKei6v5l7VDyQEcSBzWIEKgDeTtkubWQvKg5StfBsXI4DDd2ky2EBirkt3pw3BXbFnQdjGVqSoj9weBi3fB1QqHyaIe0FEZMmmnigfNqoYwDOge4zg1AovQhcCmflOgjgbX4jrCLavWzpCa8/EOQ5xXds2y687f0ObDchdgC4M2E4wqAQYYsiDcrcRDSjVRRiQlQds/5WzAE3mHSoJlJGfIoeW8jezBDON+R7/URIQE4IyJvcJQT5XSzqCLhHJtOFN9pBVh0iil5U+5BhUnM6qw3G2UOCo4w/hkNUGtDWIa3mOgVC8CsjhtVhSN/c7ALl0J0Aqs6BkUkASUWMFiapFKoLwRCgBBJCUf9wE1MCswoEKdOcSChlQf76y8PlOGkeAeYZCMkwg+SlJ4PfIQal9uQZULKW4sAxVi2N1rr2zMusyXx/cKtZXqtrtFJxQ5C4xKBWeARc7D6F2GlAQLu4j3zoRoEwXPqRTkKMBMJt9pWLWAZbX2mON8gDTyTl4Jgbc7lrFd8HxiPdH3N9tkSGAU24DtmU+7gYsTT8lHGjlPhPz13gZFV01BWUbpWr+tazYyMOoI8TkCKg4ISgUtRIQcDwk9xhQ0u4jIQHL6m0bqDn5xANopvZ/vMZfvpGoYbscRNWbLEITA55VGMhAkZMrsfYAqQa3JBsgBiKJUTKuOg9x3PBa8ZljsjCqZojlqPIy/CFCMg6pfEe6ZvNdA+JbPrSGAG0egO36C8p+KTtYe/ttGZBzBKz+uv5fzotMPQLz/r3YRbhqAYDOgdvnDDzJIPNb4BxK8kX5AnQghqk74cJAubXqB7aWBodSMnU8Qw8MdHPMdv/cwOUEnhvEvnLRxnusgD0n0AM5CgmCMp1T2epj9ffu8XuJQFLwEZH5Z9OIH11FJoACfnohSNDwo63/DBnkyyo5gTDbv329AtpokhAOKtq23shiD21ZxIUW9VBwHACYsdomk5+HEiiTGSQ4uCsggqYg/L547mJyMZ5mNqdKRc0Eq0HDAMNrZyJS5SfaXlpqvEfRwOXjRKrIcxoitWUSI8WcUth8TYY81LPoJQs75+2SSM9F0DUYcHfcRLvFgijzdyAC2DL/rQyIQEdXYGYE1jKgz/Tbkh/Z/5QsqH3jBpQqL4AM3Fmv3QOFEDgoe9l/tZ1RAuEsROLPKo6v0VpVoGx34bBDYBxUD14EMQwciGp+CgGggMeOgq45Lnd13MZR8gjAFfYNDBUcoYturN7MmtMwTolJOoN35Ca6oUS+1uVDz38tVQFKAhBagBvQC1gpHJDgB3vPiUAX00MG38TzXtGl1e/lDdJoM5l9vGH4EF03IA+UMkBRPY0TgAcrcgpISra7TOUDhKswpBN1zen9npIAVANdDjrOHQycROMOr0xy0KrjT4C5FwO3R6nU8RHJwgN5AKPgh8EN/iRKaIJDafeAvmf+uBNAUn07GagP/jLYIkIoNzB2BVb9i8x5R+DsugFj277adAYrzcjzFQIkCkhYssIpYKtOQUkedI4qUlXeoQFmPkloQhPhPIrtVVZQgpsHY5DQi4A1TRiVw/ygNMqnnErPDgsw9TLz7lwHbPhIofsE411geVYtgtDEhFUPXVZUY8o7jMQR62n556sDaM1AUSlw2ASkbH3JI1T1hwRhecBQMTAqraw+EYCNz2dife4baDfHJRyNks3affEAYGCyIk8lEVlRZdKunVcBVA1YNUiniIE7INmhUIwMmmVKcxFIFGGNMvDTYMZcSrnO7BbbRzxae+6ufViQUZR/wX2738WFVoIICgYKW8jvQd8Bt4Xx6Aggeh9AHPejamN23ycF7Qs/mouoFrmC264z+yEYOKPP5ABZ9y64VYJOOYfIFaBSSVeAmWKRA0DlEqpbH2XFePkjHqj9TH65v6gMKfw0lpHPpxS5objAaP5FmjOhQ5PEdnyRhFMEV3cdJe3w/uNZguVpk6AiIPMABGJ1X0ffyZDUCNwgavB9SviJbiMTQGkCyglA1QFI8bypBHAuAOcHRK6g2K1uHK8tvrTx0/kAn2TD47Ux7sOB+shrdn8yhqfKASufBbi2h2FPQX7WXdUPiCPt6hUujXs7aB9VGmTnMhrkADgmPaO+Qez72CafOfdQb6JO1Kl7xgpNhDIq5Y3W1+cXOJiZ9cuH7SEA9gCUeQC5538v2aVLUZWApt4JrOkhROqPDoG2LczZrQBwchCYeBjrk+pB0rFlrGEosLswrD/OFdT7AgqGg5oVy5NLRXZ+vAKoA5C6hBreI3YzNIja9Qg1AdVvY7oRRpQl1wAVDUk9hVXKq4gDvh9/g6LgziGMQExuxwBMuIUeifVast11dZJ9LCYu1IDxh8pf/l4+7PyNtQpgfxUoE0EH/GWAaTdQ1EWECFV1RO8ArwubeoISotjfgFGp8UDRe3G6BK4KKYq5xhgUH6wAJ6s6D6gQpBznsvLwgAqsOEK68YO3s5bMhD09AlACWQQi5VIM0COwiuWjmDx0FjzvgxW/13pcSnnm2dC9jZKl5WGIHhFNACqPkc7lCGCU/TcuwLmCMeiNQzDg7gPa234RHqBysJPAhxG6hbhfwKgpxfkxMAHCgmTUwJtOEiqVrC61/EFg7Ci3AppXF9Atdh+kuFUdFaCFojm3IgECEBeK60kKAHUoZhfuS4B7lAcwKh8kHHUmH0u9nhSqkjviFgRiXI1fXwmA3wWgG39aP0BR1aPqnwY9WGhX/89DsRsKiPZfyAHg4EOlaOAC8jDEAKZOuQJUdraYUtl9vkFZP6tmgyShUB0GD37PSLldTG8SgA0AQ3VXRAT3xrgIJiiy3CoB6UDEJNa+YIYoJeciRxERlrPMMCaCZKLKvxSQmu/vzhkkEtnBgeIj+PHK6nLcNpOkeYZ0rOXX1xCAXgZi2oCx3s+WPq8zbiBfmgE6lP/KhWGcXZfBvji4iBAkmA2ZEIvS8QuBpfthldqqIZUWYdA64OLgRIUS2fUjrgEJLSozuUQmgUu6jXAbqxSOLAJra++HJ1McpC9K8Q8fRyQ9DVgDZ6G+W+WKSgxarVWoJglCnHtEIJVTpkuB9hozAeQkYGc6sCkD7oABN5AHeHUDBVTlC5mWX6X+jRwQmCVcqOUpTtzV4zfrjsAyYQMCV8XonbLfbPa/PT/rYurDDkkBO8/INeQnzOpolZlUipXWKEE9IDQf2az/oQSgIRGtvt0KRUURfiMYpNWJtaGO5SyrblSVKcfu9SWMzl9DEQ3uci09lY2Sn4ZAQDzqZZdzd8qY+OQrwdKxdJiR7tXy68//X2sF3kCArwTLLiCe/PMY9S+jEx2BBYyr2e+DQOQITJ2/Dex54Jfz0r4DV8AAQXWwyq7sPHK6Tc6MrHy8Pg8DVhAR9w5bgyN1V+oULkOw4rXZ5bpa4O/ZSKGZeJ26qnzFvlGrKjk1N+sZZoqgAoLo5R4UuTNpmVKtPgcLVCWC/B2ciwDS3gmgtgLvBJB7Ajrgt/kBTPwBkKlvIJ0zWF8v6A1KBIaVgTYgfaNQ0C8gyMEMD6oy1DME+QPnGsiiIrnU8wDDj9aPzh+pUDsFERYMHv7eJjwZqa5UdgzbiEQiIA2TewFoRCIyJhrhToj8nMqO1rcHA+a9XKslGA9g+508AYr1GCLAd1/+BXAAGwjw58AR6M3ed6x/vhKb5KOcQQXQRE9A7ari+j8QyUR2P3QEMJhVlaGJQL6hLkywKoKgsU7AZs8ZXHbboHKgBgwmKqMBxZliBbyZBKDscAs64jjnkVlGWWG+T45EgOwiwmF9xiYmDUzqeETVVSVRhKgkDiCIgFh0olCQaxl0ZmwSGdbrKTgYrBfHLGQHBFC6AakBCJOBEPcnV065AEwEFqA/QvVVCIBKZ5xE/nLVHnNVARUbB7/L8nMeQrgDAQKfjGykYHQDHEAT+UIsvgUX93XlJgFqoxKiPDSTyFMJNbmfcikiuabAzddpwTtSvn4LrrpWbvIqAx+eLiwSSt9UwOZMRNLNPDNa71UaQatzJ6b7kUBfL1qRNwIer9q4knS1mQC2o9gZgbIfQCT+ynYtUUd5AdMViKQRdAIa1dfJQZkPeArw4cZgXBqWDYGd8VraYhjmLuGo1mUYmAdkE4M8gJAQq2ry/hTj2n3QlSAcGilFaqxUVS/zyuSB0FfPIYmMlLKj6JbwgHxgRgS3RHviCPaTBGG3rcajNolZUnDrAxvfnqQ6vsqptO2W33D+pjVNBW4EMAX+mpgTicCB+isAO1U3vf0+BHCKT0qPA8e4B8wH4OCJYvSIHBhcYP10M0+5IpX4U27DNiXVLfA8Nc4m5arPt8AyyI5z9yHeQ1CR2BmIwa9IyBCmrezX17mRarXsugaNTiBqUnMuw90fIiqZVwDiFm6nKLJ1AUF1xXzXvAfdt6b+9GzpXsq8C7uPzrGJAHJ8nysBhgjodeCqDFjdgAoFirJHGf2q4FAdEACtpcEg9m84toM/zgMwucBwCcOE3ja4DocenKehOQ8FAdD80FgBR+VAsz5oJXXVBGnpo9IgAaHIlEzqiZJm+cYAQgsee96oEUiXtqicWiV0UFkogIzICwEb5DdGuQv3Pei+heszmKOKST2MChGUWBA5VAIwrwI7l5Bgu6HnWoKzbcDQHASKb+P3fqJPdwQWRmTF7FQIuurPwLPHxRIK21NPGn3gcznGOQ8kNBp0DQ8+HuQEEqtMz3HUKzZOJjOQUsIjQBYOQg1Uc71MbF0CadfplLXadOuompaDc+BkKbkNXaf3eZlCVPIc7CzpHI0g8nUJVVbfsQ2T8n2UI6IxI1xCdOzlN9YQoDQDbe8FhERgbt1V4J9OBAbqb/IGBGIdJsCtL+xmQgUcMAeB784/ytzT8XF/UFRHMNW22wHGCSwNavH9m4fQvw6rADeZ9T+UAKyXpgajzrp3yWKkxhVHHhBIvDqRZgmQXZMBemCfdVYfBIJzAJnoXJs2EIUF6YjY7Pdmp9gNIeDaMgHAj4PWXoDtkEFFQM73L3YvhxGh5QeFB9uf8EPqn8MFta5lxicnBWFyUYAVb6AELSaTEECsmAQu88B761JbCoDY21a53rgKqy5tiMCzKYqr5hQAOcnYUtnfIAutEmxqkJprNM+lkV0BZEhITSYLzGCIE1BCQNP5Bq6Bk7+Pdwd4B5Q7EOsFuTwqRNheCZYcQHkbcHshSCnxuV4A/jFQfBlIeYBmYk405dfH+sZyF+UqD2yg9N7Kl+FGg79Ty4+B3x7MlKJTEonBgAPZgjpI/HUdxcgV4MAOSKVnXwXo+ZpN/MrJVACnsqHqWPCNAFeQ0wESa7dGOQEPKHUNVbfrIQJ1LeeVYZK4z4bQ8Vv5a023KfiO+R46sgzcZL09kBeI9l1+4/mbN/mHFuD9F0HbLwTz36jsuQ/AN/6gkkfvA9BqX8Dis/xC6UmJnYpPrEfTZh6A3Nc/JLTqbO8Q+EhubVwASdXxYZOX5vqGMwEVwPuuQCWfZJKQBvMoL1GPaxQX9pIJqpjMKvakSxGACpxJlFTUSTigC7heF88XkgOCiIiGn2fbFfco32eOiKYqAeIat0XLbzp/M5QBs33fQR8QAai8aQTC5aYKgKFBUThUf87Ccx8BgM6oNzkItPjFPTCrKhuP24ZhAgGfVLGr6KyIImRQg9JE0nCMxhNtkDThEoNoYj5AwyjqBAxCvG+gvjFRdNQuOpZQS6da/KzwWkid00ehqJ0SnwPtTBhQgEXuISYARYLBfYfvh3c0x4p57ey+QCYwnoAASuafp/4CKewAwex/+Zxv9nZgUb8vpbum7pFDyF8TcgNVI8sorevK47UEg8ozCgvatqzEVoWdsyiDC9RNq71NJFq34bPMdtAUxwN7KdVUdlTZ9oESm3MH/fXOxaCq9MDZBUd5fm2IF/AmTrAqaIBAoDeupJbP2pgyxz2YpHNkVMVCX3ev7DdFDkFZ77H78rMrrmEngPYyEHgNGAK9/G1e/rkdEsGnGoJoPbkESRZGhZV7sIBI4w4AjAPRxfvgNsR+mA02gEbwUJwW2XxUZSQQHhhORTtq37Xdw1jdKw8PJhfCCHWzRDGX3VfgmU3oKVDX6hESEDXq7gPckJIFKj7rxgXGdxmFtc8Qj6X2IfdBBBiSQyUtrdae/Cw5soBUA6Fe457PtfyL529JIUDOA4zj/5wfcFl+Uv8Cyv1fPyGIXUF9qJzsK/sX8kDgvmjg98Dds/ITNp8HHD4sV/Iz5ASDbdrOm6Nn4dMDdQR6c91RYxERhVbi6v1LvcNodK8jEMm0qLgnlQw643SM56rnLeQQqam7/nwyvhfhtcgkYQ+s+Iw1qfq8g3JGR4ljPVUCaD8NHrgAUv9qz8yEoPIQAPR1fRz/s5NA6yfXdeL9+sghVJBWf+QUCv8juGFwNUs1b/OtW4hLfiOVta7BJv6G+wK5WHgoK56PRqDqkZkFhQU9g3Zs7wfhwahsicXAA0k8b5c7RIJ0NqX0mpyNWpOzKeDvJSoRM7h9OW5EXjsB+IlA7QdCqyPA+B+TfEgARaWd+peBVKgUwoVyXKfwvvMvjUNyFEYto3xAuek+BEBr13IGloVtOFCecgA8zj47V4EwaPfD2Ds+hrBwOEhZyXqOYgz6QtRsOK26uHNWMIrvlwd0e35+WNZB28s/IDDEPZKKPKveKvSiONw5BnZ+AriRy9AvFBXkQLmK8TV4Z9AjjuXDawiQmoF8CHDOoZRN/tX+gEoMj1P/FB5YgnDhgWgSUvuZUEMQAzqBpwMfHoXLFtsEHrNzE1TKUsvqAgEK1NgMF1I4BttItbsJPpOMixVMkgJcL+totbXDRF/sBBQg8I4VUmA6a+cG+w0AlrkHcR+c46lSHt+n0T49wKLzZKW398ITgXcB62n58PNf33MAthcAMv9VcYNqAMf3rgowjv+bwgrVL4MDlLRsL/cbAL8OQgSb+duCMp4S3Oxtcw68Lw675j56au9jcmWjtV1HYnFgm+jbj52EGsyjBKBSsyISFnSPyhlIex+7D3zuSArOEWUAPzpJSC6l3aUeIPF+BC6g7k6iYVzH8XXLb84E0H4dWLgAsP9NnSnpp0KEieRf2P4ryn3KiiuAovo5q6wqA5k0pCsg++1i/4w6va+107gNDzzMitvtKHlH1rer3NyRWAZLHkyjBJ9TjKjSMJNxD5yLUUPlYtQAN66C7g8DePaYBrgBCB05WOAyAbfEnQd4RDwtQekJwycCJ4jDuBrafnspKBIA/zYAv/EnBH+YB4jVv5f1d4pq1L+M3sZ2lRhggCrga/UH1uxYcEM09T6O9oXH7MIEP3XVkQsA1g7J2BU4YglBP1JjbbuVMjoiyYRqwG2A7PMMChBMmH01zQ8lJJrYkdiyYgOJDgM8Idvv+QSlB7JSdj3zD7yuZMbmw/ehPMd2PysBpNh/awkusX6uBvCEIIj504AtMTyDfWYOACblbAKvHtuAAFwHVQKUDe8n7wLwhkk7aEWmiTvTIYBxGp4cTOynLLtLOlUpd4PCVhzsQEG3YYGn+9Hx+yE8HMA7A5hdzWOPo67XLVP19OmQge4VEddjkncezNS7wudQHYyQkORQbVglMC7VuoDlt+whQJkKfLZTgWuv/xYW4Cu8EPTb0Rns21dGQOdbMFEStIm8OKtvjm+ARUAVZTwXItD+VhGA2CoF21jLuwOKRTlMoHp6D2BmrgFl2lmhXJkRtscrMoAR12bXazvMdtcOSriyTqZ8hhQcUYgwpKfATHZRgo3vT7PiFjBehe36CJz6nQMqfKGxY8ihF5rkdRQelXujCHdbtvyW87fWRqBUDoQ3A7vaP0wSUrMAwzxAuTj8t5MczIBM/2SCQZCinQ5i+sO5ASQsJhS8HnYk+bNT3CrO5YECmeVR5MKUolz0EC1h0YCr46UMjo4rgO+hgBCGIK7WPUsKSk1F/wMMcme7a7QD95FaiUys3S3nIQzstT0pDDDXb7+fJwx1T+haypgSzkCRswW5vU/9dWsigNoHkJ1AfSFIN/lX7H++pAN5gJpbQIAXJar/ti/Ssv4wyFG5wFnIUh+WETlhxbF5RCiGBArIyAmoZBiHFHUbfJR9cjAPvVeSU/0DHdAjafE58D5GgxiJqausQGgqrjbLZB+AVso5dRfVisBFSKse2DVzzl4AACAASURBVHG+d6MEnXQYBuiW2I1iK0Ew5ABYKQ+Lehii/MnyW8EBtLn/KRdQau2+5l/WlWQOhwQ2XDBKzgB3YUG5VF8StOEBxFHkCOpgDpJ6VlExD5Fvu0wmwkDq5QmUWyDQtudJqk3TfavOItnhoAnsdQxs0Z+AjSZRqRAVbjAY0UVEg85+L0sdEZAs2RB5wqBHb5IuOyCPACh2//yJvvNjVT0kGHN85VK8Q5gjq57bSOsyAWwjPs8HKEm9Eg5so8kk+loizlcFOO4/lgdw6l3IAQEkljkrLVW8PMzYRbC9MrxqQMiKzQnC4hCs+sgYPSqtuapByaPoARIm9vi62T4LgLSchAKaB5QlHLG+5iLmgcv9ENahoJ62p1R4augyOknCI7F6pOrq/E28OkpPqv441+DJwpNqu2fLbzv/jTYZKHoHwP6EN4IojCqmBHPSrwzgEsO7z+WR6ux/U3FMILJCU4LOOAGt2D5WR863wI6Se2HWP6iHz+QHQhC5EKLdA1ZY7Rj89xvF/3PHVUQEy6AioJyAUbDJON8AonIsEYCZFdghiumuPrp/oduAc1EeIu1iw8WyLCI2v/1YzfWxjIzBhKi0tSGAWgoE1Vf2Pylu3/bXLH0lgDI4JjoDEUhVwRQ4SdXREncU+wiw02EC11CTdnST6/YKEDZDbodXGdWBiprvBI8bwMbWUFYReslGHqwB0PouwcfdTE5IHxYgvKaFaGqf4bJ8z4bbgfriMzEJRoyrxbOIvscbkx8YKD187/A7bCHA5gCO2H9j++nloHZdnAdwTUC9+QAVgOQEjM1v7GrUtpPg06oMLC3zAHo95ibMQOMchCGTHjkUYmvbGEUgxeyp6UhpjUaaQROAOMg7WPUZ9BNUC26/X8uPsmqp+yAciAG7B4iKm8NldC+G+QxwBvOqLr4D5mTYNXTufQG5cnfdEOAj9hAg9QHUMmD9bFXeuYFi+00F4EAeAKoAM6RQkpL1BiPAVL4AW5FZyWViDpR+Yj2/xBETYDiwHNnk5262EdeH3zO00ex08kB0eRFshJnpDyhOgJQECcMM9N51sLrOkoiK1UWi8gg4jboLp9ZTyylnYBwUEVxQTj0GWrzrjSgr/7hQIwoB0vLlI85/s00Gyom/NiMwzwswNf9W/quhANf/XYiQL9pYaVR0tPciJyCBPJcbSLiKLfzICYzW4/HNgxxVCgTAYtLQbsG4jV55sESgFb02HmV7bgc6JTLrSS1ZpgHIce6g6jAJ8BnlDsFJ8fiTEoSkzvI7B0QYq3AP0D4UHIUT2n3g3bGksRMAhgDoAvS7AEQzkLPwg/ZgtX1WwHT/tv9PBIFAzuvH4A6AT6HBKCfg1nPTkJswVAgPIZpvfJR1FwMndBRFUUXyDMHMoIjtfpBzEE7FDjD41MtDRLa23BKqWc8obTsdK5xV3dCxKEcULQuIs+cWIiDy9TyOGHx45kOAdqZuCPCR2QHYtwDTjEByAHPlP1b4WPGLylqlbtvXmwmq2pTZVwIsCJAELCF0bToBshET3PygycfyregzMGpNCpvPa9WlQyiVKAXZwAwBk8jMfvFQwrCQDhJ1B0QGxL1SY+Qc8jWq645UkJ1LlEnnigs7qX4Y0AOWIh+7vSK3uRDAHvuo0kf3YvnI87eBA8DXgQEJgKV3th/yAC1Gty/5aPsE6l5jefE+AFNa65TpyOa3LDUkCKW7gMfvYlNR31dKzfup5J9yDfXUbMkHbkGA0JCOs73aiaiBb1xCvV+s+0CkSCZAXmy1GZyj5GR8be4KTWkLcx+VQ5zDmAPxTOhhibq5EXP9ktRniGFG6Y8Qg72+7ejLbz9/m58LUMuA29uAfMlPZvupFdgTReshwISfU3eXzFOTe1T874EunYABq2jogUFfj+gAzgBosW7XVRS1M0DpE1C6nHiwzIQJrDASjILYlMpE5xsCNmp4AnAitJlyMCQsoBsRmAYnHnkMQnYysVvokcr4PHMu4MhxPNj5/hoCaLG/sv+cDMyXS9n/Rgz5JpdYvgwu+bkdS5MBHkttC+Ymyg2QYvrEnlBgAoTO5ItkWtj7H51DJdkEwVQ5E4m2TCyNu/z+zWx01nFSTrmdXpmKWpm9b2CFFAO6Q3YKJP2kHsIXzh02Hr1IZzCTwDsC6Mcovd3HEn/6tHwUOIBU5qMXgir7X4G8HSQnBct2FWylZbjTDgxlQB3Ti31Nwo2n6qJb8Ouq8whKfO0GCYeh9qm23qvKVOKwALdT17fEg/qjcwus2tH+JibsJRO5dZgSnu58QEbSQYD78XGpt7w8aNm9pPGHA13bZqV+0gkNrj9SanVd6vu/cUpPY8N8D036uwP4qPPfCsqA4oUgNXtvW4Fr8k4QQ+KDTBQYBxelFJbf7IMq1N22uANOqtGXl4lEdhHl0c2FCO1644TeODRo18/AwLgWB7LVNyYEPSA4e26uq7iMKF+BTiOy7k+y+qTYxoHEA1wp2ygHESYIu8DxRL8nDPND8TkD7QLU9U4Rw3LEMVi3FX3fnQBaGZDtP/1GQFX5pu7JNeiQwAI5f20OA5RzYLU1CT6I9SvzdyoBhoCorTdQ9XGIQMnMPGjS5YzDiTqMxACvgyNKJPYqCAjQUd4gg50n3dghawdRS6wqpY4HpwQjXB8Dpw/eHqg6KiiJyV6zVuzHO4oIdMr5jLdFlxMreuQ6zPJKJOtp+R3GAaSOQN//r5KBAejrHAFeT5+F/S9K1xKI+UsL1TbbFgBGlQDTSOStcwGu4feZikAH8F5ZAzdR4u4AEOraWC1kfgJLgNBTkXCvYN7Abs85r7zRfi/C6jfy4cGvVXnG8s9c1xGw9p3IWL29gwgch3mGkdLPEcbyO87fLhyABbyu+2+XyxOCbPkvxWfZ/le16+UEUMlVyY9cBAMQiUKBs4YiwgmYcmO+8dVhRCFCISgcJgAksX+6JxpUbTG4HLbdxjXgMB+dN1DtvJskrIgsHDnOgdCdI7gPeHcUYc0q9VyCsOcCYgDOHLvEBnPEgFsFzmuinDl2EvbYy0efv92XAXcwxMnAAuym1CUkwFJfIgi0xLpKgM6gAC8CehmtCBBSVswTqFhWEREO9GELbz43uo3qQPyA8fE7KRiTVs3Ee5JyuYEpG23bce0w44HmCW2kknZwl2epCO5Y2KBiYh8qtOsdXedTiOTFuwAdxmhio22X2JE1wvGuIDr2TgCuFbh2/gEJkNrLWYHG1mflr0osSAKteRjnA2CgYahl9J9QCSCCqjdJxd8E+C6wjzQCkT2PYvC+zS+E2bPr5BaEk+jF3gZ8naoFq3cIWraxg0qEGsCjXIHdp6fm1i4zqUWqOusCZo93hGimlR7ifeVElt95/tvZAbye1Vr9OCiEBJAI7CYATdyeyQAAzJWDxBOKNMpXpfCALD5P+EkPB50EaIpRXbtN3WoimVdvaAD4ELTC+hp7bNYLUKtrG9h1b/GDMCQ4t3MfnX6AFq8HjijJsZ48BOseA3qkOa16PSdCJJmvcfY4RwDs4/04BBgT0NGQoW2/E4CpAuyqHGT/tynDGaje/mPdv9lkkyfougEIHyIywAlBmYjaw+lVAgY9AZksfPbfDpbqRQSAo9h+FALIfgFM01EfvbTwISHo68d+CAXEkCx6lQkAyxGyGFn9XtmS3UYMlL7CKzDOqLZSVL1MWPLFZggeY9+Z7I4dI+29/EvVAWzgxrhf2P8cX2v7rxOAwzyAidPbMfybg0WugBN3w/gfwgl2EC4bD3kGpdiiStBczAzwMI8xEe/n62U1miOEQO2NwrVr6AHYW/o2uM2A7JBF7zv0VV+rJIO1d42KNOw5tTOZdQFHlH1MPLEjOS1t/BQSj1xVb/lOANUBqOTf5gagGzAp3a7rOWTAfxGkUAFQyj+qEDhiKI+gUx3gpCOBHFVa2fcSNijrrpQ68QKRipnGHAAvE4oE76hKcCRJCDZ96DQOlQbnrHLPjo+sepQLMUCs9/7pCu/A6ADmQ4exNdfPvwdI5SDG5xEhACQLe85g+Zjzd7QqQHUAnYYgWfrLj0V0AjbbvP0FLkFWCHzXYPry+SiDRKGN3wGYrEYMWpGJnwX8Uy3+FDCVA0Fwl7+HuYFAQaOQJo3UTqzuj+fUd7ZSAefqu4Dx9TzdRcw4DSb+Adi7gOzvq92HF57DDmA5nXYCaA4AgS+mA1eHYJXe/IhojadtHkD/GAiCFC23XV5vgEss+gSh3HbGCXB+IcjOK8ArN4Gs/dT1ZshHoUcGKg+WrkuZArdudWWlUlSggRgPdm/dZ7Z9MYQwQxqjfMVRZZ8KATJxvDBnAONk+z7LxxoHwAlAOx/A2X9WfBMWZO2umX3RMhx2A3oyqE4A1FxWDcqgrjb7gBMwHYNlSASdg9RjYBJnXcXWjUAu8abKjgKwsQPR4DFA7XUf1lCD7eX4uAYoHVeCR5oBYJ90WlChLLPdd4Y0bBCy33oRdytg6mX2Pka2fjaRWckmdBZz51s+9vyd5AC4AUi0BocdgPhCD8oTjHoEhpl/DAPIXRSTKpt4fDKvPSBRHTjiBMhZWBXsEAea6lDR2wMsOQl3/IgQzHX5we7IxoEdIPxIAGuw9q+FCSFORs5ZdAb905KDkeX2uQFzno6CI8WUOP1R8T6puiOg3AugHMfyu87f2c0BVNXfS4DzCcBi+f1rvrbLs0RhbXsf6N08Qh34Cjx4XPvQzDU6BwFOoAf4KBk4kdSbDhEq0R0H9egcfQWm+wUDzpNJxyG4ezRDCLGyx4Cm40oQziX1RiQyC1gFdgXI014enFPv2XPbJKA99k4AugrQeSNw+ZWgrhPIQDfKfqAbsJMwNO3FBPpWnYCBaAaeUn3RTVgGOTYvuWUCGIFi1oc6Wt/LPUwpfnM8DOoGpcE2gsx6dr3vTMYhA4PjxVl9/p7tWiwo1DXqMKEuHbTk4r2udp2UWpHuNKg7qq5CEH3c9bT8y+fvSg7gVH4XAC1/8HLQrhPI1p8sf3oUrPzCyqucgVHR3j75lu53oF2HOW/UHciE45pxvAXsWfOwioB2m65TWfM6kCYy/BKIw/2OuwlvzS2wuoSQv7MmJ22z6/GEkvcShzO5gHFYMFLjScU+oOwvxAHMlgE3AtgdwK7qBfD8MpBm/znj75qCMDnGrwwzai0ah0I1t2FBHTzRNGHOJ0jQvwAnAJY8Bi/1LYC9g+xEFiStzDJmh975vgIL4lIW3hHFEeWOlbYHMHvdcyRiieNpIURIENA/z85nTCqaxKaTe9NEcew88vxbGfDjzn9nXdfXoQsQSAAagJK17lQFVJJPqLl8O5DJvqsZhPnyzSD1cwNMVYCPWewzq65JwsFNxWoDgvZgrG9BHoPRgEEkBkcg1/uPY3dJLuh+ZhqERMUgAvc8ITQTPU4GWpWeCyHaPnb7QVKP7k2196S4fMxpa9+6XtKhg2rMvrySBX9/71qicGMnAOsAsAXYVgBUC3CLuVVnIAx/IAP3CrFu1x9CCDPr1hUkXEP4YVTfAs8RRd633SQMM1hl/Dq7BU1PxkYmQyT+4YYuokc6wSBRhFGXdXv6NTDGRBGTTQzgx+zDJHocsGsXrNbNzCt+7GAkiKeqAxFJ9Zbn6ycXExHQ8rt3B1DmARTAp/ZffEloiqMzwNjaiw7AekLeJytzywmg6or8QRAW2ONDzC+Sdq21FwnJ5gkSkellRsUphu9Zf3negf3WwA1A2SEGR0rFAUnCKHdT6fYkIYTXQgQqLG5MLo8JCxjAjyAIysKzo1CZ+lEu4VEO4JFz/1UOwTmAfOzl95y/ew8BUhIQGoHMxKDtkFQVoAqAcQIq2VcdACp1IZV8ea7VV6g8txCze5CEwQNcH7e4CHxYlZ6IHMw2eZ0CXSG6dJmsXrwEr0sfbRrYT1D5GUCOHUH8XTmujo41tv6xRXaADOfFjwlixgU4ktiGucsleGsu95stAwYTguqYA7IPHUAiAHQADejmrUDGAaj3A3AfP7kFGeejXe6QAWTo0xeh/Qag5/DAgpfCg8gJiAYhCUY1r8Ak/goBHggBqOtQEdQ0MZATcI6jEp0Gl3IoCKEeaKN99zM5gHLo5T/3VLdALYqhR4q9r+8o8Gh/vidOgctzmOzkm1J1fLaGfDwZ75turcAfnwmglQGTC6iWv1QGqvLie/62A9vP1tqryT+4T75NGLsPyoBVM9FRuBKeSBASaZjhxMcqzCnBbHMN0i1kQmrnsLbUOYHwtWBKRWlZ2FdQANyGzog4HgPePiHw9Vu1ndl3fE0BUb3QOH/gEiYz949S+x3IHNbosEyTXWfbrQrw8efvyUnA103M30ICSwiVGIAQWvJN5AlkC7BX/gqWiAxEac928E1UBSowvfXmbsCedW8kF6u4sbUHk3i2h2AybBhm4uPwgtWJPZFdfxzEw3DBNbXMnSO67qJuXcfB9viJhKEU3qh2kPQ7Tgo2jGCnosmi4wA+4fw9YQhQ+wJqQnCQCzCkUMy6qA5E3YFSyeHijVJSuZCy/nWvamnxOOVx4Y1R3YDAnmSNDYW4dWxXYeu8bWzZGX75GgYuYaTuQxC6DEVMPD3gKb8xVvH5c3VBX2Pip4UPXTAf6MCbAbez9t24vrk6RXJRuLNNYgpzAJ9w/t71lJOADfA0LbjE/y7bn3MBocqneF3P2ustB4CarP5M7I/QRNUj1Q9sf+gEoklCZM9kiZHUWZPH05W+VR20gipFPEIMx5yCDnscGUwm554aLjhQD6oRI3fRV/y8dqIUN0MS5p5VpxKruj9mxwH83vP3ZgeQQoAW/4uWYOMEMqtEbwdyuYF8U0yMj8oILFXDgLy+FxbMVAWiNl855RbPaZ1CfRCq34A7/Caz/u1h+fPGLsErXA1LkjSYVmh3joCQIqU+ThI+NHrDXAApJitqPwwQdhpCA7bw/tgH9q/PBFR8MnegyCapPeUGOu4kCg2WT8wEYJKAriRY1Do3Can4P4PCdvpZAO+fENxoz3v2fpjwIyu/37HkPurNU/0BJuPPoBFuwwCnM4GI7XTXvmulVKDzcw/I1bxgYB8H/ryVr8AkEPQBOyaWHtHUsTAZj7OSDj8P8gixawiIZPBK7xJkF8KPwwJ4LnSNyyeev0+GAKkJKMX87e8GYKwU+EpApPYtbq+KNZP1f0zsP1MqrByqwV5vm0ziKXIpw88CwcE0aj+WLbhIEMcBnzhWX8+U4otS2GOJ4UW6gIhARtb9kCMY1PGPOoK5F4qQqovkLgI+lU97TqStU6HB8knn7/NJwN0yY9//4M1ATtmz+hq1Dyz+TAmwC2YRJhR7hA6jTtxRIIqO0QBdgOQHEB0Pvo9KzDUo0oN5gkuQbkFYWQ3c46TSAxkfbRr0gdpFZOOPq92BudbBG30soD0QnQM4WDmIHUC79kQSFtBzZcAA6EAQ/P22sy6fdP7+9XTa4n+YDYghQAF3dgNzswHTl4gn/hQyUBN/qjewNh6dggTzZFVAhQczoQJGXEMFR0LxAxO+oZvsYQHUcxk4nOxgnTn+U6sGDpgi/ozU9oUtDxp1elZ9qNod2z0MASrpEhgPHLM91Y6quxBm7AAUqWxjYPnk8/evKf73SUAVAiRQ92YFauD73EAmAaPSqnEIVNhYWdq28KZL0EVNQX1rHVUDjJmOKglRLN5JHlpAWcvecxL9dX7t44DfdwlToUSQXIus/FNIYr7SMKHyT0gKqhg9VHdJEj37bis9NQwwLqdv/3cH8K+cf2BdswOwbwYSFYGw/790DuaLktYf8wc4wDtOga0/5wK4n0A1C0X9AWa5SACa1mW1HuJ9l/H3gGkDWoUM9vhzoD5u3Xvhi/ITI7II1x+w848G+uDlINFxu0nCAxOVlC1nh+AnDXnCGYcFOO0XQgVTATjoAOD57ASQFD2FAV718fXgOE9A2fx4WUsUZl505cB8+9jqT3xm2+w6BDOLy3f/qfxCmW9QQw3KBZgsv4rlrYK76wvj8w6ooYqhzb9ne76KEaD3sxOwFJBKiPFCcwFvVAhx4LjKfjvbf2B+gCYJAOuwGnHAAUw7CEsWy+/bHQC8DkyWAHkmIIQA5Aoa0OfzAL6lF4ZuryegJvvIUQRx/h50ZELBh52ikJZ84Ri6Hr3XN0CM3PbpuYf+ul5Y4GLwHikNuvz0sWJCiYDvyKKj0uqcDMDuNgccQFf1C8kPwehdmlTvQ5UDH+q5Y051HioHIJZRE9GeA/j9579rQ4BcAeg7Aazni94AbLwZhAP14ZQ+AtnYg8ookn0qNFDHiZKHUA7kWrtU7+h8WFY0bRo79bTMQGIcyBT01NsPEu8vZtSf9b/nUoTH6ChpA761uOxnekCsVzOR2IuIwR4frqXTazBFDsWxhSFCrNTOQeyBdxoPikCUa9DLIAQNqxHqusgBbATQQoBtZaoGtLf/2L/r6757zUCiLFicQVVXmdArrgHZlpN44rNRcCYLZd+jun9+KHxt9VEJ0AzJoJ8/iGCoHUqLAUOXguGFAe08OJ2Sc7uzGLz8PZxLCBU7JrhhiHHABWjSyOfuqLYEMJTp3PqDDoD3r9/5UMvvGOiqX2B3AJ9y/sHdAfifB8MfBcXpwZkkAOTqxaBx1r89cL2NTSTWrcNcAADMgTGoAIQVAyKLmbDgsd2BnGcQjiGO9ftgZtcynzOInYQ6Bja2PNUFOIBKx6GV9miooFV/cOzAiuO5p3II1QHokOKwA5CEY1U+Z912aSjOI/27npY/sBNASgKmdwPm7L/rAlRvBAp+LIR6AHqTgcaOIN8o19orYvZIuXuKHrUIy7BA6bW38i5s2HdToGWTzN+p7YUPUe1VHm60zoIkUF0oIb0hLiAP/n78r+lKuoEDJNENPzoW+pADECU4TRAFiHZMmLBgygEooLdjV8DLGYZp3+UPnH/INgLhLwQbMpidD7CRCCbV4B0BrjnIDng5j6Ao5UDd661UDUOmpIeDH+AyY/tFt54Dew0X5qx/ulXBNdVjxTbZAV5kg8FzmatTVQEFTk8GTEz5u3bOHdl5RTT7toNS4gyJtOPMhxn+OjPIDjmAGOD+haQ9EA+IImwDHjmAdj+WP3j+IWgEKra/JPbaewJNDJ+dgv35rwzmcFJQshz1xaIOlLYfwJEIk4or33FogXY+r3ONOwS8qtQRIGH50Dmo3EOfFLT25fsWEIsGsT3PU7fB109PkwHYTc5XcH2cfVUIQpVkPZwHiN1Pc1EFeOzcvGIbhyBbjS0YRyFDPeOjHYAHv52D0NZvfy2fev5hqgLYNwPX9wLugIO3BRd34EDdgF5sa6jspsSHlQXOAzCAEYg6FLCq9xSln1TnQ12BY+s/tvz+GG249gIBGADDmn/vHJ3wZHhcva+06cPZghPqPkhA9sIDQ0YvwOK/OAewnvhYUf4Ax0UNCzKZ7gRgGoGq7Uewi98KQOBXIENJ0PQHgBoai06qbxSYXhiSQwH3wg2p6jb558hgVum7jiGoLqjynzzfUYfQcw/FMj+OFHrE4VxJMP9ehw5WbRzQuk06KmeiQw/vKPx5oxCkqv5kv75VcOEIXD6h5wAemwPwpGfyB9V9ebLHJOB29uVfPf+IqQLYMiDW+LneL5KCWBmISoFH8gBBmNAHNKs9gsL+naKIYrE7tl/afQXIkbKP1h8lBTbP6vMBUiCFi47uQxW95f5tOuo7G07wL+DwN+om+ErJbmomoAIWkM6LcADbzTNk4y17uy+KyGgZ5QFm9y3favm0nQDKZCDMAcDfBbQy9uewAADlmntUeIBAGuUBuH5f8g4dIHeSe0mYRQjBpb0af+P5Rw5gBPbR+qNkwLAkUOaBwlBVYI63EWQCFt2u7ZAC5wcOuAq2s1WRBxUMFd8710L3aLSPstwjiz9yEOb7Bd2Jj7H6qPyFgHYH8K+df1TkAGhOAP5ISDf2D0IA5wx0SLDfnKDcZwYXtwebPEQv+RerfOsALAR2QOEflRCcU2sdzcPSOkh6bqC/rgv4YTw/mSeAee46XCiJt471f2ozEc21Vw7Egss7gmMAb2PRkQk9N2vN273g0GVs9ZWjwGXoIDIB2BxAifdLjd9WBvavxO8GkPmAuPwXNgkpyy9aev2LN9FZlPQZAdk5AU8GjYDIlaADwP6AunxEFu1c6i8cdHq9dwNHEn6szGbgB92CR1xAPR78WKUClwW+AFe2x37fY26iF++XkC/cRsy1j4iC3YghjwDghxwAjS8bOliSsMRgAd+u35LDVmpdPv38Y6IT0DcEpZ8N2y5fTAxSXYGz+YCw979Yc9X6q94F4MODBstCEPPADknmEWQQAXAW7EMXwAMF5xlMOoRpwB/OEwhFd2FDQAZB8xQm/ZSb6OcEWi/+GNiW2F8EwBmMGMIoQnn0snC+ATmAf30nAOwE5CnBQAZF6eGXg6re8otCgmSftfn562OugPfLjTKFueu/+/dIJNHWUQOSAWveKqoaCGDXoRs1F02Qgbm2eq2s+QhxpXad9UMF18dDBXQEFdp+TUXlORibK2PymXAhX+9khSAC8aiRSF4z9vhDHX5MFAiqosxEHvScXEhAY4mz9WX7/d/wtWFW+f05vDNY/tD5x3UOIMf6+AYg/LWgFAqU3wUAu29m/+WuwB4ZOMBj6BDlCvLNFcCMbTzo7UQ4gIFEGyyWsLQNVyDx4QYOQOkQRMzsyUSFHpPJQ2HXvQsYAD6o0fNeKsTZlw2nCw+s/zCxGTuL/c51ZuVZZ3EU4M2eI3mM8gt4TxrgrYNKxDBa5q0+EgqGCzsByBxAfUfAdjJ6EYgDvnhRiCgDGhWnacJ2HcfxPjlonQQO+uwIuiW+/FgmKwDWfSiAeYDPgfWY8ns4DNyCULH5sAM8wjCB1wFqdxrxhPXvZvdji74fWWT1LbDngNqO1aAXxdxo8SX4B2U7vD57Dhvz1+0ciVnws9Ph614+4/wTYQ7AvSLMvAtQ/UKwfVGInDrsGnrgVWFovdC3NQAAIABJREFUg6hL0PfLZyZUcwT2e1WCA8uYypLPVAD6Vt4CWYNsDuyHiaMb44/cCJCZs/1e9brkMcg1xI7HWloFUAUqY8uFks8ouNsmfBfBhAMopeNOjb88W7TzDHj8rvx2JhsWWELwQFfkBt8jX+fyh3cCiHIAXA4E218Ayu3BJiGYKwkl9pUvB6GfFVcEUSyPA3XQF2Be/MHA058r8Lp9AzNWHiEcgV4vlwAzCjhQfJmTIMfy1OMNEniWcqxVLZbbgJfeLYAgMccKCIZtdXzsvKY7yUgBXX2HA85BvjvAX8tY7fW1yVBB5i/QGbTvtHzm+SeDHIAvB6a4f9tZTw22IKIyYK8qwOsoL1CHPcT8ZnBQX0CDoH97kB+gDGrYQuQKZtR9ZptqsDMg+w5Dx/Xdfbox/gSRBDVz5SlcjD9dKfBHm5t41Ak5trF0sPvQqafLbcw5AKPeNKMR80W95Jw7Ro75K9DhuSL4IWDLc/7tuNbbrqflM88/lacD55eClqYfyAGU14DLEmB1AtvD3E4avCLsQCJwP46c/lvOYRU03B6z7oY8MHYcOAKjqvPq3gf0/HHYOjtyCRJhkRLr/ScThzzPYTLTzzC3CUALZksmcRjSTyKqY9Iy2X044QBA0fmXftC9qERduQ9R/oATk5Gtt8fx39WGCqD8IjxZ/o1KAPmHQcorwdyPg/jJQdIRmORf3BlomoGqsyBg8mzB3ChkFN6EFzYZaId1MLlIALylIL07aFfYW9cjGExwjhKKsK1U9FjJPQHpWFtup8qVYUJNeQK4rkBNmaBQwcw6SiLi4Ld/BwlBUX6ThITABqLjkptWaH9upcj7vodyBO1KpdUPypajbZGcls86/3ROAuZfB6r23v5SkP9BEJsErL8VOGgAqgMumApswM2JQEjuWZDmG6VyBKZzz27nCMLNAdDuwEN4e7TsSuygUI5AhgqPCAnmwD4Aarn+x+YIDs0JsAN7/9TtIhTb47sBDjQWuXCFzq3seQN9GzF+u7xO5hi0SuNxvdpbEk2qHtl6f13xtvYYyx/ZCcAmAfEnws1rwrD2X1/80V4Lli4jeGX4IAfgHIFqCFI9AwQ8m/2fcQR2GwtKtupe9RWIY/ud17iy2hPIQyokE1dAT1Phg3Apg8qDV3MinzC/EKh4cSQHKhVswRPJKMfUU+8gPAn6B0YWP3QPzl3pUKSRDth6SvwiUaQwCbfF4yZCWT77/DM5CUjvBDRvB6Y3BO1gFu8LKE0KNd6eJAOX9MuKCkk45Qw80LYlUeIvr4P+QYZFyTuYc3W2l0DPg1uqe6lw0ENjmnHXlRNKSsPlthMWfvpYj+w0LHaX70N0vSZJdtBNGMIJwZm2ksQgGmvapB/lPjRAu4oukneaECy4y9iQtv5Atr84gnYP0nmWzz7/rEgC4lTg9lqwBK4A+KU6UOP5BuI6wCNiMHkDNNg8PRiJQalzAnm6TlZ2pd5+mY3xWZmPOACtwkN3AKw9RQwO7L7DTp0Tj11BMdV9qFR0dE5rUc31TCYSnXUPKg1IJAhIBFJVahHuKOuMym7/bqQy8zNgY4dAyu5afi0Z9cMC3Na6ALyO5XMqAagkYPCWYJfph7IgkkSvG5BLejJ+F6XEzNYyZCCGN+8fhPjp8QrPoFYkhARm7bM6b8kke0CidjLxAE0FtrgSoZy9aH9vrn9uymUcDBsqICfKkpHzYeurANlddpAsyhN0cf6BygEnASX4yZ53HQT1Szirb5KYMF5cCGCJYfmj558TSUCcAGTfEdjyA9uBsB+gNf3YDsB8rB4ZhLE9tgDTkHY9ATzk2YE8zhFYCzsCPDsGBE9SSQW2OFygHEbef257OPfwvJ2E5aGkYL6yg2FDBZxI5ikVD5cF5zXhBWb4RagUtw9b58MkIc8RTCjy+/pj21BFhxyt38EqvM4VJDzwdS6fe/75gABK/I6/FORzAUgI6aJ7cb8nA6OKwgVYpR+FBwrkmRj2757+9hrdW0YgFDkB8x0qSMsxbVCBD79RFjuLNFEFlyovIY81BHtg4feA0PsGPoe24pFDUcSiJ+F4YvQxe70fopQ2dgV0vPDlIH2gN/LJZwzKergduwEFbusQkEhtWFDuk8wJkAuw14Ak0v5e/s1MAOmXgV8HAGNIQD8V7nIBfmbg3hDEyT2cvWfAXrZFsDRQ+r5+VnelzGUw8+C0/QAGvEafLQANcZgsOJ+bv0McBhglJ+Da6+qEFc6S41E7wBwmK01qLT3L6XkHcN7J8p4lu3zPBhWOUby/X8WwD2CsvvgWIAQgg1Y5ExdGoAp3SoazLoEVvYUG7Y7uy4KE4fJ55/dQFYCAL2cF0u8F1sQf/VIQlg1Vpr/zHgADOH6TMCq5nAw0o/QMlAjwipR6roBcSjVdcHwA7TTQcxlLw1t9FwDwNNgBho8oL9qfCnucK1AgMkQZWfhJV6DyDHWZKMfh9YS5AVVFKGosGqgUuPk8cQhgHcG+HVQ+GgG0MYpuwRLGelr+2Pm1DgFsyhxVARDsOgm4X4J7PwDYbfGKcGvRm9I3WMH+BVxhPkCoPyQK5bkUYE3YoMEWA7kX+3uQmOOYcCJyEiLEAPCqMEKGQMPQgex8x3koZWb7Hln+npXf1z3KFYAaDhwJ2/UplXe/GkzqS6Q1EwIY+y5fL6YtfSKAGPwYBu8GaSOA02nrAsS5ALYMmMKD7UthXmA7kX9V+P7Vq7IzMYAyY9mwlu7QtvO2AvjkBDxJsFLj8VmpESp4rp66otNottXuMSIMALBLYtlrUkqYQDEmB0MTQ7AL9Z7qUCQj3214UvmBfuhgyUHnF+oA707o8bZfHdsAlSoAPTfAAIxJJIOYqhQRgA0pgFCxwkfhA4N/I9Pl88/vDQhgAy+WAfnVYNgKjIk/9U4AahvmrsBKAOkNQumGlb+L0+iBOQM7mi1YuwMGJOLUvxBGENdXaz0CuSIX+2Meo1DAQKtj6ZXi8zTcQls4UIwiT4cMlniwb36k8Hy+rmsQquavNx3BWny/rLs+zBd4wrAq7hXXEYprUEIrj47BEtvI0itSSGFB++7FFShiWP6t8+umClB/GKTG/uwGUPlFGbBafpoIlPMB9SIGGX8LCN8PgOvd37IJiN2FJRSvtZG6M3zaoItBnNdU28xn64cCKvnmgQ5LgtKdIgef+e9dCwzOQV1fuRU7MIk8REnOkYhImvF3Qgtf9ne2vpMY9MqOVlsRir0nHmR9cmAiYRKT4B2QCcf56BAsYayn5Y+fz+t6em9S+1wFSMqP9f+SGMQXgkQdgfyeQHgpSK8TUCUJUbkVYbjYXABL7seKDkpvVD0CuwIwDtd8PIjduoClwV/6t9tVeXrCAKYpL1/D8fyAV+5jIYZRWFk1sN9FAXYfpJ3wQbsF4QA6hNGz8AiS9nf+ZoI8LIhRzUfOIYjXZduwdQwF1Og0PFn4fRoppnXLF+wEsM0DwNmAhQAoDDDvCtgOZasB+8FLrsDZ/M7U4GL53ew/tOyYW2jLGxCUDUcVF4ruQgPlCgSwndXMxxY9AOgKujB2MXYnrOjE4+4cE/kBp9aySuFjbkdqjwX8cD9l73W+QJGDXoZAtSodvSwUwWaBR/vn8dFAinbcEomy5Ug6PUfAxFMIAJ0PhhD1XECMy584r+f19PpiCWDrB8i1f3QD9V0BOCdgXA2oIIjmC8gkIDiJMEkYATYCfk/RRwQShAxVqSKiQK2GbUSc3XUJZOsjMkk2O6Ya4QlEA9BEGDBVafCk8fhSYb6mQSsyAkoBFsFhXx2OVn9k+2PyaCDT4YICJ8fxM9so4kiS3sY4g1/ts/yJ19fXT8v5YrP/rRFoAzV3APZyAWKSULX04tXh3B/QqQI4BZ0OBY6qP4OG3EfpAOzG8R0S6BIFhyTYCcjHZCLCh97bFvYbgBePUghFEgfUv5la9+0fWyoUPQ+spp4slUvIy4JJP9rqd5wBKPu+FZUklVprcCty0ATkVP0FzABsxLCeli987/ra6eJ8lQgArH8lgEIG21fmkIBfEhpXA8y8ARUedHIAxuYfJAAkEA+dNGw1bPLyUKnbnjYMgTMGDT9en7lXQJEROIlBqOHASvG0AzgBuZQVI5DNgj1MBO5ohqNMEoWO/W0o4B2AdzPKKhtnEHbrHXMJeL06Zrehw35doiQYqb1yCvacNgfACcDdMHzha+vPL5frjSWA11uNf/8VoOwGaguw7QfYL4SnCZMDaD39oiRYYFh+cciAUij5QRJAE+7BiiTAysvntkqtgRw5CR9CYHZfHgtn8k2GAEWZOKCx35vuyCDmd0RgkpvC5vecwcSsQEVQBkCdY5S7zKDh79CAkvc4UBnAc9i/PaDLeas7gFePK2CzYwitPhAoKroiHU94jRiWL3pt/dnl8nQXhwD4I6FRI5BtFEpfGpN+/ZJgfeBYJaAMPyp5IhxWb0EUJsmHgx72hay/BiEeNzqGWh6QhQkFPFlU4HZU296LfJ4hQcC5ujkChF/eZ6IvQIJ2IgE5VvV23RbcmnhGCT/1k2EIUvu3tuq9mD0RcGzxWbUdQWR3VAiPyUa5l0YAREC1XGhdEB57+aL3rD+zXJ5uT6fzhc4BQDtwdgL7acqvA2GzEMf26heEqtqXGDvIERgXIBKCQYnQEQUafFHi4+2tcto8gIGryQXwXmW/pi5IV96F8HbsFo7kCDyN7UcLymoRmcQxvz2+2W744lJBLtOhAA5ivD+WCKpiypZfJBN/jFllTyDXoLKAtoBk8HtwewehtsHviODXboHDFhsWLF/88+tP7QSwbHkATP6h9S+xP1t/3SKcvmjPAdCUYdoeByWCpS0fEAKAXhOCdwt+aCJkG4A81AnshZjIVkugCWDyddTPZkCX60fnQS7Eba8gnY9zcCZiUTml+jbufzpZRKDEI3PcHOUetDuIQeqBHpBNVW0kGPs3hhwFtF27P905yHG+/WxzD7xuPS1f/HPrT1xcnu5OF+t1IoDcD2BifwQ6hgSqHEgtwjXDD+8CiKoAveWDvMBxoEckAEBy4UEhBVboTAIuOeeBWgaVpY12XOMO4HgxQWEIwJG/3kt1/yngmr3B8cTuQJOMeuOvpYZ2N6zNJ5WddBgMMFRlQxwZuHPlQFTS46GBU+fJZh/lGiJX0F/uwb8nAb/kZ9cf23IAmwvoE4B/S1DL7HtnoJN+yu4zMRTQ0HITz5M6C3LoEcJwXQBkVvEGZrweUuLqCFROQOj9QOnrAB6UFflaG+iZJIJwYxgyRGD3pIODX7kGSShh6c6SwiG1f3Q5MFb2puLevvMbeXu5A23f50MCD352Bo20EkGmzxsB/OjFxel2J4AtD+DKfyUHoNqDtxsTOYIcBuwAoFmBJjwo4ImqA327PwRzQBxuP6P2EVjztXbtPWiMSPjxeROJ2EDHAqK5g1ZXLyTJZMPuJQC3y9Lba2AV5rDHWOlQlSeJ4EBFoecODBEEnYU6BEBw4/2aVPmOVUfAd+0+dZYiQNG9lOXaFSBZ2EQkfm889k4AX/oz6w8vmQBOy3rVCKCUAqEBKOoK7LUI5zcDmRZhsPoWEEwUTVkr0TwhFHDgo0SeU00gDwaf0O5UtAv6Bpx7cOdWpNPKkh5OjRjseZ8SBoz31ZOHYrC70GLY9gsEOjULUDuCbihB8+XZlVg1Va8wo9CkhBKgrAxcrf6oysJBwPFKWFPBDO28fWLga7XOYPnSn15/cFP/zQWcLk43iQD43QA5CVjfCcDNQUnl9y/NVYEM9qZNrPTqF4S1/U/H8I7giAuIgdzIxuhqlySyEstYnQBqEn6ODmzBslOaNPCgrsQ+gVmC8S4jDgX62+rjJlLyispgw+9jtyYioJh55jgFNBwmoN2uahoc36qnBWkP5Eftvtn+ES8Aad+JY31yBpCw3B3Al/3U+gN7DuDidLP9l9qCg1eEj+YFmJ8Vy+BAd1CHuQgJXFlvZP0tcXRJYAbEodozMDKwpxS87wgYzKGrCEuZjarkvmKCUWTn6/7d6oFXW3NekSj0oB7E8J1ZgAg4RRwS2CbcKe8I9C4D933q30wafLxCjk7VSfFnwoa++jdyZutfPi9f9pPr919cphzAaTldLxfrXg7slQTxp8NMIpAcQB0ctR8AlB1mDbZBpPIAbR8P8njdvm2YxS/k1FRfba90mo/J17Q/tEH1oIGtnZ8DAEM7gwlHFVKmz8H4GNNWZUAZtjrr/cu+KqnYA7sHbL5q0QYcJfZiJfeA9jP67BU0d9AUM4rZjy7HqscMGaht6n12Mwu9wiuCQcCzU0HiWb78J9fvLTmAZSOAy9NNIgDIAVA7cCOH7dBifgCrPr/+y7T8stJbd5AufqYikI/zQkEPRAFq6kGftwMw9bdhcBUiAAgFYHZK3w0DWO91so+JDn1FJaZwXgOqjCcNXMLvLVCKvV0xfke9DbgIasiJyGOcAHyEK4C23nLNM4AfhQcR+PvLNTGE5JCvffnyn1i/u1QBdgdwuecB9jAgqgi0Xwr2MwRdVYAbgvacQCYODAnQgqOTMNoVxP8VLOP8gFJfBdZk08gh1GuEYU3bKEcwk0C0DiQmCL6urnMwLshvKYFe7nenXdhCpUG2B3YNan+kLuCDSUMRkfDgZxcSxfdG8YO23h6IkQwUAI8RAFYjJtSfkoNa/dsxl6/48fW7qgNIeYDrrRqQXgQqZge6dmDbJFQV2839L+CkDsGa1Rd2viQUiQQ8CBCoPjdgQOlKc2jD899By7DR6Qm1t8BHZYPrFSVFVuR964HSGyhRHC38Bfy8Sd5zInwwAK/PLS8NHIJNINp7wKpsSILCnmMgt1Bnu+/UGsiOVXZs/9t32vNrcF/aeY9m+/0x05i3x9HHtyRhyYYJZD0tX/Fj63dsnYA1CXhxut5CgfV0XhoBbOFA6f/nBKHN/PccgF+XnIAdoD4k8KraTwByydADSIDeZekD9Q/JgYHQcQ9dEgJdFrG/vVcAmWEfA+q9CgVYjW34gNDVnYR6e00a9lx2+jGtOxASDElioj9gnPW3ScyR5WcF7ib2yOEUQomIZLScySxtjySyEcCPrt+OBJAcwO4CLuPJQQX0pUkoA7mqPvyEmKv50zpZ2hN5AQoRFMjtEM8kMcgJ7A9I2HjlGjwRAZEQAB1QJXEQKKmPIDofxuXKLfBRrWPiUEABl8gA4mxUaT43A1Bu24nZrW73iMCC0MT9gz4DBAWC07kCqB5YIHmV98dB2w6Ae0L7ryKOEcBH6r+tX77yR9ZvUw7gtBFB/akwGw7YFuCcKwCHYJt+GuDrgBBVAQ9oVnml+p0qwKLzARGwJdg6Sj1PHKiB1hXUc1KC0V9LftQy3yBIJHh7kTqu3TsPmW7VwRKItfgxcWgngL7iEYDvJgA7JCGsOpPPY5xAIVpU2VG8zw5BOQoP9IBgSN0j0ihOYDv38lU/vP7NrQRYQoDiAPaegNN5SS/+VAQArcG7jQdlr7G7bRNuIUB2DC7Dz4Duf5YuwIAkIIEXAmxQf3Yn3RxCDGZWzP0M7lpjQtmHhXM8HYIIE36iemBy883f1KM7MDKgvR9ojsF/c84P6LcEz4Mcz6Cs8zQBdBqGGKgj8CtgoxMp1xmRgl3uE4T6WG27RAA/tH7r3glY+wC2XoDTzZYH2MKARgDtRaGt9MevC6eqgJnm65OADcAIVJ0TaEMuIAUJOjrWKGO/r49Ljggu1i6/zqu9qga0HDps3ykBWhXXbzCSx4S2WksqilBilW+uxd4B5QTwWu36jvJT9cESQR/w6nyodhFAUYWTs5u3+W5fUOERATxV/XvEgOTKcX/5nAjgB9dvKY1Aex9AqQSUZOCu5vZ9gb72314ZZhuDIgeAICt/RySgbD4s25XHbtMGQl4+yOonYPpjaAUmYIsuQ+MNOuuNNlMYwNbcaG6Y14jcgW9OYo33kIQzdisEVun5E8fcRmnhO7cBq4mFj+M/434xgBuBWSVEUPDfqKSsqk8jAEzI+Wtm8mIgxxa/3QuzjygRLl/9d9dvIgewlwJrMnDrCajNPr5F2PYE0OvDTD2fHYACPMb5A1fgQC1IgBS9Den8Vz2GIJkDiUHW+hILCg9gGlPZrlt1h6vtkoinivr4O4lH3otTgz4zr4DerhipB49djytr+Lw/gsCebx7wvJ+ezIPgsX+jy5hxAkgkcWzOxPFC7b8oD6rz2dxEuu7lq39g/caeA7AzBEvWv8T8+bPp/MOkH/QI5Gx/+uJcCVCOIG3XBlNT83oMnD+ACm4GvlB2E1fT+l7VYBRCiOahmHSMT/BvQAxdS6TyrU4sCQnupAV/HoqdsMNqq/EiVMLlY+lQgtUeaSByAibTb0qDGYD1mUZOQIcPiljwGmb/ZkC/MPs/VfufcRI2R1Cub/ma71+/YZsMdLF1AEIIAMnA6z0ZmOcHsBtIIBVvDS6Ah4RgetAZcK4SoBW/kgCouSKAemwHUjhusG7fN1D8fbhLwtiuwocYVsUBao8gD2uGmTDaD4A4kjHEGDgE+dITdUYGMak2Ac9ruicMBh1q9pAcnpD5b6roXcIs0Mueve1n1D2NuQLco/a/PScbFlgHpdZte+L1LV/zfevX7WXAy5T44xzATgSnkgzcEoHcIQgNQjgvIFcGsCRokn6mHbjlAbziCxdQv4TNBcgGoO06egnCHjCDEKJCsRv/91qJUaPVnH/WcAA/5Qo0+AWQBVDtvspZcGDwxAai2iXHNCHUWTgSr9YM5PZZKTvaYiTqNyT+ly3Ex0KEXpIPv0sBtfoeaR06BHuvl6/53vWvKgJAB5A6A/07Asx8AaP4AGjpAJoLYMBXh5Dr+MY1uKYhC275rgA4ToORbhJCYGM1wKh6zykU5R0RA4UKXqM9QfS2kU5BTFe27iSdw0Pc1hCsMxq4AXFEa8j9Of1PhU2QAxFJFDYwIPDIrIT9UMCCZr8L+f72yKOAj8GKLiLaRrkIdc0N3EguviSIJIFOaHnH96z/TyOA9Xq5WNJ8gFwFyAnBm6012AJeJATxfQDmBSGo8JT1VwRByTmboYd8gVTofq5gH4JEChVcPcUfWXhJNKTkzol0YG3CDuUICPYyd2GPrz7xFfjXk0U+wZIH+gc8JlIGg50BydAfK769B6iYNmfwhPgfMucI3OhvBdzHEUD7bmzlX5T670nAd3z3+leGDmB/Uch6KRuCavyPCcLtEoPPoOLcB+A/l+NQmS50Bx7cJiyIAC6qAZYUCgjihKKCaB3QM65hMBeh6LKBozyu0vSivN4D9BTeazFexYQbCFqIFUEoAvkFIYAXUPNnRY8qDJFFb9vbZF4E9McTgM81LO/4O+tf3gjgYgP5xem6/Lsrf8oJ7HMDttxAi//FT4nnVuCk1qU6gPmBAmKO98v2ZZBah9BsPdp9BCLkCCJHEGX9DYB61YBRJUHAP0w4kuYOld67CO8bED6aioptxbVqL+cIZPXABx1zZUN/RqvaBUqWsHoWHyktdAA5b8IWeqToCLTob7w2/nvGDURxflTjj8iiHx5wBaB9Xr72u9a/BHMBahKQcwDpdWHr/ivCtTtwSv079r+ShVJ6ArkDNxCFiXftfrbWzknDomh+eRqC/RJhA5OuBoSuYNYRhDkFHTrIpeatu/aKPIytz2AvYeBLOQZj9aE4GIYDlC/QDkBbfHQmFXTTLwZhkrGqOAP6WTKICSBOBvaBHIcFinw4dFDbLF/7nev/ERFAcQAJ/LsL2H9FuE8ATdHrdOL6Ik9Ue5hEVIFW1JxcgJnYw+ssUFsSUQCYKgIG5NNuwB+3W0IEEFv4CVcB/fZ+DkBEJ6iW9h2EZQ9FDHHyr+3FYRAThgItghPV2cLOlqL4jKz4BvDGMSF454CtVP8poMd9+27A229FEB6ko7BgTCaVCMgJbedavvY71r9YQoCS8MNOwLpsOV3ltwa3ZCA6gPIGIQwBTIKPAa/ATstMYq2/rsJDkkUBBoOOqwgE7h4pyKaf4zkCA+uZ6gFPPKo9DAdcgcz9Z1BCmbEXDlhwT+QDqOKAgz8kAPEz6A0gDHhPAArYjyGAXlPPvBvQ6q2s/iH7P3iDcHIUMUks7/zb6/8qHUCO/wsBZAeQJgjV14VlN4C9AbXjrzQHgSMAckg3DtU8/b0vM3Zf5AyicEAtFwm+qvwZcNsZ0uOxVj4tP/tZAuEx81AOLX4jCFbXvr7TWvHrQWp/TwnGxCcq6VQm5ghABRK6QuDDBFgyOZvwRRHASPWjRF4vwddzAyrWRzJCoOo3/4zsv3UKJZTogX93AO/89vUvcBLQxP9pXsDWJHS1hwIXJ/sbgibbjwlAagl28T4qegGeDgssYCnGd2U9jOfFtqIMiMdvQIri/8i6Ry5DQPNoDuBQ30A6nwUvfDowr4CP4Qmhnam3LVIEvxgUr9UnBHX5Ds8aE4IlJs7Aa3eglXKGDBjgngwAoFK1VYgwsvfz66Nk4/LOv7X++cv2SrCWBPQOYCOAXA1YL+qPiJpWYCYA/FwUNi1riouKH+QAyBUY5zCt+lEVQZcOK2xB7SX0Z+r/IekMdN+p87xPaA6j5wPweD4rcIQAmHRGVQFDCrWxxzsUJgX7uZ8DiMhFHQNDkkYqHpRdMoDmoC4BQAjWFHqWALzSWycROwHlOJZ3fdv65zAEqGVAJID29+4AlvzSUFvrL2Cn9wcWglD2v4JHhQmZMIJwwE7hRetOScKOQ9hed+Iy/a6/P1D8EPht+/2vrtprl+EhOw/8/SHTLxVZmOtgQZ2T4Rg6AFHK9Ha/DD90KKzS3lFEBKBdANpkPp+10EwOCHrlDup1POItwUwuWo2Vxe+TQnM1CvRzRLG862+s/9PFVeoDSLX/9Xq5XMq8gNIDsPcD1HkC28tCytuC9vi/5QLs5KCi9hTrLz4hmIYFLBfk0GJ0BrlS97hvoIGylxT0wN+zARLQUbigCEYAMDzmNig6IUcx+wecQuQHpglgMmesYnE4AAAgAElEQVQwRwAWpPiJATln+z3oFbBRCc3flIfo2XpW03FuwAKSHUI7lwJuDPCx+isSgT6Ad33r+mcvLtfbi8tley1YIoDcDmyagbBJCN4WJMHP/QGo/jv4CzCa8pvmoR38CuQR8CfzAlRVaFBMwCbthnx7v1rQlH4EViCEx+QBwpIiqmrfLRwigHqNVqnLGXgpHntEAArQPZCzYs8RgnAE1a1YYHRVHyoY2xE1McTxeEwWihReBAHMHmM9Le/66+uf2QlgdwBpHkBxAzQfwDiAbTvzpqDa/beBYOsU3L52Dgd25aT8gKsAJJC1TkIgCRcGFMvfs/u0jux+ze2HDUY2NxCSwyAUMJTgQD9DGBluA8KYCRv0NgBjOsdcCIBQbOSjYnzW+xmV77kCre7t7Uc+ro9A384ykx/oOYPY7iuC6C/zrmAW2GW7cQixvPtb1v9+I4AN/DUMKOEAtgOXv9u04ev6Q6JV4fPPiYEDSGW9Bn6XACz7ZiA6AqgABUB3l5VBaEnCFvM64cHmPXq5garCojyo7Lo4loa9WDrhEmaAbxWbCUWrOypu8Rc6BzAmAKXe9vg4UNvVNoBb6vAzCDmXYOkHjzMCOKp1/Hds52fUXrXz+mVj8NpzWdAXp2IJyRPI8u5vXv/b/Y1AFycggBwG2EpAmhvQXhySkoEK/MYNMPjt5/1xZ4Iw4HdhgOoPiJzAWYCYty0Oo1j/mBQqNAfE0LaLlD1W/P45WFnb59m/+t2KaNijc4228etHLkCFDHWZKZURAcg2Yq3u7CBeDAG0GFo3CcXKrkAbAbmQ5B5zmIYe9Aap5Bttw26Ft13e/U3rn94IIKt/TQRe5ETgHgbYqcHmpSEpGQjKf4gQGvh9ApDyAFL1rc1vtr6fK0hrAYwm4QiEYGJuDgIYzDZP4M5hOvjw3D0IHwgRuEMwtPP6fAreKl8QuwDb/BMpPPoF+wvD3klYsKrmInYOXjWZAJSqI9D83/ExMQRRuQGlvscJwKv2TGhQCCFyFuV6l3d/4/m/urhachVgvb7Y8gDpZ8JdMrCSAYQI6dXhSAD5rUGm7JfAjDMFfViACg3g7zqBArPYCZSuQgvIsj26AASbdQMWhna7FC6U/43MPS2H3oKxgk+SwBNyBFEQoMIL3tYTAmcOyu8aiuVZ2SKyQACV+xSRAm87H/+3bzRyB0pNLaGo0MCqtyaA4yDv2/92TruddwrLu//a+b+4vFzqK8G2dwPCJKCwMajOF9hfGVbKgBH4ySGYnEAC4YnyBPsD5+2IDLTiN/W3sbxX/BbF23Ws9WnwAYW4xB/rvQBt3sevmQF4sM1EjsCCK1J/XK6A2tbzWukIRKvyk8IBRxRzdh89Ayu0KttFYNYlPkscTDhepZsXQbseATRW7nYmbf1VeKJDiG3p8u5vWP+z1AmY1Z8SgIUQQP3NlOE0UzD/glAmgqT0ojdAJAQl+I3dz25gL9OBM6jHauCs+Yi6La2LlrvEH1KAJ450VBECZCdg6KDjEDTRKJCiYxl7Bt5CKbmGvN1zJiyI3yCk5wNwoKCIQS+z3kOpdSM7TRDxPvM2PyIDDgdmE30vngAi9dcksLz69et/kjoBKwHUMqAMBUpOoBDFnhRMYUCz+Qr8eRlXBEKVL2AvNXr7uSUfM8irwjYHgI1DKgSwjT3gHNzEINybQgCO7QHwqk6gGnv0dthFOOMSZtQ9Jo/Y7mdYiW4/BFyz6DGJNJDoPe36ppga2Lx+liDG5IDqXc7tY2qr6PF2nlxG8bklBQ/c0frR8dGBLK9+3fqnLi72RqAtAdj6AEwFgPIB0BW4v0249ARI5Qcy6ILflwtLCNDgV7Ypys7uAJenEMLsWxXaVxQcQdTGICQUkSDM3YGxmjO8IzDn7WY6DTnh1/k8Un8J3ADsFnIN6HgOdg0YMtjt/NGOKP/j1R4beR4f/7Nys+L3qwOWYhCQNpR4DPjt9/Nhgj3m8upfXf+jWgW4PN1cqARg7hDMJGHbgrfGocvTzbqcL6z157jfuoINnL2koAO/yBskgJPi5/DBx/cFYAxo+kwVAWv3AeZBV6ElkkJICSx+XQZRt1fgMeqf9pkFf5l+yv4g2t9qrT9PHO8r5ecZf33lx7VouyNC6G2DYENA279bgg5B/kYRQE/de3mBBvRRjiDRTdl+efX/Xf9kKwO2MABDgpoUzGpvXhxSl209AQjyQgCvu0agdeklBZsTqIDhBKEBOQBYKv7WE2BB3iJ4sP3UbahDBp45iOqOHoBBaz+360HIaaCH4UFUVoTlEsBB4lCDXWUBFODt3pEjeIwbUMfywO2FAx7ACuwxAeikGlp+Bu0oHPAJwrm43RJAnNhr1xNvU0hgefX/Pv/7rQzY2oA30LuKABBA7RosyzYXANWA6gYMeBMZaOXHHEGGqKsMCHKAZCAnCS3wMRzIeiwSi2zlW55AATzODRjtF1UDooTAxIeewaQbWbmN+j+xUqCgzWTB23ir75U/dgneXzQV7wGdnUSc2GO3gMlBlSj0gG3XocD8YglgjhyKrvsQokMCy+m0vPpXzv9ucQCp+SfF+xd7nO9j/50URA4gdQjmHxItRLBQebACWiQEAewJdDm+r63C6XMDuX2PgLH8wgnU/VwlwBNDcx42AMAJSirmN2ptyn7aEcR5Axs6FID3t1dv91HUoJf17b7dB5XckE2d11+2ZzDrygD6DFb3Y5b/qBMYuQMGn46v58OBPph7Ci/tP/20GB7d5hUUCaRly6v/1/pvp8lAbS4AzAnYSWBvDirZ/0wAygGcLtar2hMgwc8JQV0ZSMoN/+XPFvwFpna7ppmFMJraNwIpwLahAfcVcB6B5xM4fa7EYwHM+1njr6x/FPfTGYOE4XTsPwoXur8cxKTAtNDWe4AzUBthxJY/VngmCaXidhvrDlCxEcz9+r93GLEbsADUYG5nbvE8hx8xkAvgyx7+GLhv+3t59S+v764OAN4JUBN+OSnYEoDrdf07kcHNcpneFbAnA43659LgDmAEf/D3pu8j8LNTyFl46w4A4KY8yKSRt4O+A4799ecGcBvPxyFBrN4zVQL9HoIoQHixBBA5hjjut/DGnAFSQVluXYIKDRjQ6Dp6YG+hgz1qAUc7zljpfQIwcAPwS0KKELxFt0e2yt1b58kgdhAa/NvS5dW/tL5zJ4C9AuDtfwoF0iSgPFW4/r0t253ARgCZDPYwIKu/dAMYBiDY8z7NqlsXwGEBbseVgLatbx6KQoFY7YMQARKLHtzHk4MGzBPtxZ2aAmX/Izfhge2Jw1t4a+61ytuwQIGeKUJVArzizwLfA5v1P123Vc1GSAxS5xDAelv73/a0JNOz/kgT7ZryxZlf8sVl/m/lIGLgl+++vPp/nr/m4nKbC9A6AQvoMRSA2H8H+77NBnpIAu4/MX5RqgE504+hADoB9/cGmrmQAMnAhAW7gyjqjPkCIAKT+LPgdklEU7yzvQOeMND2H3QCtaphgwMP0RjMeMbHOAALWntmdTwLa64MzIIeodqoJUr6WRhbEjnmBBqxWfi1n+zWBNEHOFt7ZfURphFJoAtQ21uXYH1Gs/498LdAYXn1f1+/quYA9nkA2eLnRqCNGPZXhOV6P/67EwEQQCGENDloy/hDEtAAXocACdi2X4BDAvyM4Hfb1ap7dhKUGEQAa/XHDsQcKphZhFHyEMID0y6MPkH/qnEvTNBGfFbd57bTxMFQL+rJVxSBXqm9Bz7uPU4Etq17wPdOIB95J1xW3raMrXtU/x8BXhOAsu4NkBy7z9j6mW20e9hCgL+4fgX3Aeygh0qAj/8TKezgL6HB1f5Ogevl6nS7TxHegZz/k+DH/oDXIfZvLsCqO24D6l6bgXxSUIcCZd8gPDBqTIlEMwcAzxeDviozzQDU8ftkPiDs/JsDuiYTVvG2lXYA3jNwVsAm9LzCe0VXZOHjdwZ2epOUpQ0mEQ9qH8PPxPkRGaDJ96FFpNL9GP9p6s8OQH3eCOB/W78M3gewzwPY7X1xAqD8Tf2zSygOIOUA9jzCXg68OF+mGLW4gALq2BE0sCdiMOBfXjefffxfgNryBiU5Z1wCTCay7oEVHtXdA72XKDRuIoOeHQaercGMHMJEo4+aV2DBfYwQeqGDygbw9r2wQCm8pRBUdeEQzAxDezSV7POE0LH9zg+o/MAR+++3xSVo0zHUYJWeVXZLFHPALyS1vPt/OX/xNh24qT5MCqLEX4n767/FATQiSI7gct3fF2hDAAX+5gJs/A+A38mghQUq/o9CgbIcY3u/bYGjrxD4/YrSi9wBdBIyQXjAxzmC5iXsX4oongL2tK8nCG34tTtoBKCThR706axuOU0fVvD2YcEoDChA8HYfQedDAQvex9l/RQCjZRa4x9X/GPAL2Szv/gvrF17CZKCdCPYuwNwMlBN+JdY3/17lHEAmghoSXJ5ubQiA4PdEwLH/Dvha+wfwQwXBgZtcA69vVty6iwb7AgZcj9N+W+iwLx20DmuXgKCL7T6v0Uofqfsx1edwIHIBfrmmCmPY3VuJmCjsMWLgM2mosEARgl5mCWAmFLB+Ymz3lVtggPJ5ewQQ7VtgjDmE3jJPEsu7//z6Ba0PwKp/6QYsOYC9VHjZ4n8AfM0HXGy5gDo5KLmApOAF1P7vZNcT0JEMjPLzNnVbtP8cKoC6S4LAPAABHCYZVUC6RGIDNNt8b/sR1n0HoEOEo44g2p4hbz/3CQDWyhmDDOhy7Dngo6NgW2913PoIb/e96nOGAD/j/seXj8jBry/2u8HWJwF76xrEHw/86gDe9efOn3+5vRIsx/yl9FfLgpdpTgDY/jRHAGx//Xy1L98JYLk4XzUXsCkmJgWbC2jgx9i/kIFalgEP1QKv9pwLaKpucwJo/znhV8godgE8qWhEAjo0YKBiLkCBWCn8jOrPbFMsOpCC+4XeiDBmw4CYDKyu+2DBx/rKCaiEIFPEnOr3E34I0ZYz8O7A0ouO/4+ovz4DHreAu/2riCKtXd71P58/73J/KWhpBU4u4GLv7kvJvp0M9lLgen1xlbL/hgQgFNjfMLy7gJwHgERgIgGbHEygKUAvJJHj/qra1h342L4pf10nOgY1UQgSEFOKo3wAgr6XHLTvEMJwowAKAWqP5EOAx5IAgpeOUe26tvYJjt498Na9vIC1+O2IHviPt/x4VKX63i2oJRFBIPgUAWi1j+J5u1wBm4GrfEEM7j4ppLXLu/7H9XN3AoAeAGgKSuqPLiCDvZIAgj/b/0ICpgpgQoEE9Jb4KwDOy43dj8BPicE9LodtYeKQJwx0BFllIUSwoFbOoCizTQaOHIGfhmxpwQLdhwwWfk/IATzyBaIzeQCv7wz04jKU4S8kY6nCAlkpvLf8SCHHQK9AjlBt59JW3G57xBH40KCdAVXdVwdY83ukYH3B8q4/u35OygFk5S9lwKL+l+ACWP0t+Hf7X3IAez/A8voFkkBK7rVQAO1/IQN0CW1ZcgnFLVhAc3/AHAlURYeXitjwgKsCCPbob9VbYG38TG4gQYRTgQz4SQKYnA7M2j6bC7Db+TDAq35s7RVoLbTVpxj8WtubXe9XAGwiz+v9yAEw9C0oj6u/phsL/TngY8CxvPPPnD+LQ4BL6PzbYv+LDejl31zm2x3A1ZLmEOTYH/7dw4DTcr5sgH8v5AFsTqARQ7b+Bey1/s/gz58hRHCkALMJnfWn2YWzwPdhAJOEzRdYGOO2ESnY5TpsUCFDXpbbnCPwegMfL5klABsa9JN9EfRV7O+tfE/TZ+J+b8+tlvdtf0QArMYM7Nj+27i/D28mD+8H2AOMPpcjLu/8H9bPvLg43V5yCACx/5b533MBu+LveYDkGK6WDegpJ1Dsf/p3dwKnPQ/w3toQ1KoBrTKArqApfKkeKOUvio9xP6u+cAHO4rcwAGcSHksS6lAgyhcoQvBaD8oeTC8uDkHBdzv3G0sAKhBQNIAQLleqrL2lhb7510D3ZNEDu03t4ZY6VEAnEG0dq72y62P119bfUsa82isyqATwtf/d+hnJAUAIsMX8HALkEmAigaT6xQHsFYGrbP+3f1siME0PXt4LpUAsCxIRbMqf4/9CFsb2jxxBjfuBHKifQCcCmQwKLLHEGKn9yAX08wSVANyPhRxPBJY9tiFbaOSxZKD3Q3g2+uGl4zxArPk+M9CjBIasNvX9UMCnCvswR+AhlL0XiAAbxfCj2N4Tx0jn9Xr8Bss7/pvzp5cQ4HJ/H8B6vYUALfGHmX/4+2qFECD9vdn+Av6Lq9P2YyO3G/j3+H2P/fPfORfQQN5yAwh8QwI1iVjCBPVvBjK0Dtc8Qg4JIgJQLqDvBmy8H6t+QAD0UlGGu53uOxf/c9YAHcJRIogIwGp9OsOYAHRtYOQHGhBHGt9zBlbB8XoTPBqsLJx1jM+WPqIDPnaDooLxGPqWTB4HfHWM5R1/ev20y4v2PgAs+212fyeDZv139b/cY/715rKEADvwKwnc5XBgCwPu1uX1BR3AeSOBnAisAOfPuXFoW28dAeUIcq5AJwuRIFDJRckwIAd8g5DKE+j16B7y37MvHDVvOEajPyIATx8cHjQIquRhZOv1UcbVAEsJI6BHQUDbr6fhDOkZiD8e9Ec0nwMDa+x7cb2H6tMMf6EjTxzLO/7r9VMvLtb9xR4p+ZdBn2v+W24gx/07Eeyfd/ufbX+J/3MIkEOBXf2Xq9Pd6SJVAgrw939LCXBXavhcS4MW+Coc8O4A8wUJ/E3to8qAXm7dgA0HEPS4XbXy+SfNMNvf4IlAbb0AZl/q0beq3q//67pAWzrnAlitPQkcI4Aj8Lehgf7kLbungFnTr91BPwRQsJ6L9DmbgHCc8wAvTvnLkZav+S/Pn9KqACkPsCl8TvLt4C8uYF9ecwA5BChEUJJ/16e7vay4hQA7AZwvE/ghD3BKFQEJfugXSCAuPQMF4HkZTBJqYA+qBSo34FRfkYFqFS75AiCGmdeO8ctF5LsF0jEb5BD+fRdg10Ylwm2YMaDVZ47ibTBxlADQwHPIwFDVbmDGAfSIIYb0nO3XoD9a2Ovp+kjhR+tH1BDtv3z1f77+vpYETC6gZP0vU8a/qn4lgBQS7HH/5fXe9ZeTgEuy/1en7d9CAFc1D1DUvuQFQP1LjgDzAiZHsIO45BIQ6Br0NvZ/ihtoJGDCAAd6jPXt31bhdTlwPgcQ6XwM+jgc6JOBNfJlW7XUqjwDPgK9zR54kI/MfboiG20rQLfjMJBx6yhXYHW6F/Nj1kDF20xD3gFoGL9R4N/OtnzVf3r+pEQAGfw1CZjBX23/9nmL/5dN3W8urlIOoGT/M/B35c9/329/ny7Peykwlfu2f4vlb9b/XAmhdQgmABfXkPoGPDnYnEADPcwlyOofE0LJDwzCAflGIeEGahMPWvxRJSBS+p4DsG5hZP81CYz9wBwJHCEAFRJo9e4X/Y7bfF8AHIGeCcLCegR4Xh+TQl+/31gC+I/Pv/fyMjf0bBOCNsXfSGDr+tvBX4Cfkn+76m9JQEEAF9e76hcSuN+cwOYOdiDvIE8EUMGdKwPJwvtcQMsbtLZhGxY0oCP4PRH08gN2XZuR2EqDXDmwLb24XQHlUx1Ag7PP7D/dATSFHnsDHQwwLfiynrbyVtNHdl85gEjxLVlYrWUHoFRc5/yZIHpuYBzRR0DuAfyp4I9Ip+YAvvJPrR+/JQG3EuBWAUhJv9P1BvIN/JUIdvXPyn+9EcZ6c7H925J/dxdX6+3+K0OJCHYHsFyttwncRf0TGaDCa1fQHEAUFiRwJHLAvxNAo3wAVwG4q3AEfKwolL8R+E35dSIQAwLc1iq6LQPyOv95PgAoxrln/1UiEN3CDAGMlT4igHnlV87BG+1jBBCB3roB9gIMVAXcX2gCmCGP5Sv+w/PHpclAadbfRgAb6Av4S9y/EwISwN4HcLq9vC5xfwZ/jv8vrncCuC8EUElAOQF0AJAsbG6hgJxDBFxeQI/235JAI4lMHKYleFwe1B2DnCjULsDG+FFI4ElgnNzz2YMetHFdL9VX0oVRTcBSgHIADYjNcVjAItARpEr5C+AiMB8BOULZO4ftGjlXUPIMRTd7ZMDbNmdwhBTamfrhQbR2Bvx7DuDL/+T5d+0hwNLAv2f+r5abqwb668vrZP1r7H992j43B7Bl/wH8ORG4EcBdCQHQCdi/W7cguoGm/MkxDBOEUDFQpcPUkMT9AQr4Nh+gm4RY9TG5x87gMZOEElRnQgCv/rxEx/rj6j9TBNKBdQRWzeesvncA5ZjewjNQLeCRWHhfD2ZPALHVH5OBBvws2EdAHa1XBHBkn+XL/oP1Yy63PoBN+bcQIMf/l9c5BNj+zUSwkcCeF7hOwK8EUMDf/t3Vf3MBy+V6l+L/13L8j7mAMkGo5AZagjAGfysncpkwrhog6DFv0EsANmIYKX+rDkRuICKApvhRvd8TwNPtf3MBbOWbVuttojDAK7tWfQVw3DKpr1LzPgE0SPvtFAGoMAGVWqXvijOYA/yLIIAjQPYZiDnnsHzpv3f+6MuLZZ8MtIcAxf5fn26utr8LAVyXrP96k4ng9iK5gBT7b+C/Xva4v9j/i+vTQ3UAmQBqInB5rWb5k9UvxIAJwaL8UDHA0iF2DKL6Q2ehs/01b9CSf3YbjPHjsKCpc8sZ+OQgAzyO+Y8RgCWB+fg/0nxebj83mjhKAB7wiVgKiNjs4/aWCGLrrxW/ncPb9t46G9vHoB/F/KP1Mxb/MQRwdJ/lS/6d9aNKErCAf7f+1zkEqARQlD8TwfVa4/8M+rvLFPdvBPCQHcBOAOdTAftrOQFYwL65ggL45gJ8GNBCAKwWmJDAgF41D2G2nxOEHBaozyr5p2y/Ajluh8ZeZfs56u/BexT/a+tfQOj13tt6Ze0biO0RME7n+N5+5vxAi7uTA4hCALVOEQC7CAYyGnuv6J4g4m0iIP+iIYAvevf5I65yGXC3/0X5r9brqwz+q5sU/yfrvzmAlvzblf/qtIF/+3e3/fm/jQQeLjIBbCTAoUAjBgR/yf7bngEuFba+gig3gD0CbPuf0jGYiMCHBQXYZT2/G8Am/ljxkQqa/VY5AFxb8gR+WbzEqz3rPdr/eQLwYUDLIKh1s2rP2x0DPOcKUOERpBb0niBOp6U6l55LmCWEN8oB8LWNAoHli951/q0XS+rxb4m/BP6dAKoD2EgAwL+TQLL/l2j9r9f7y+vlYXcBWwhweb47Lyn+T3mAkgsoroCVH/MBLQTA3gFdHeBEoSaA8mahca8AOgZfGozmBDRN7vUCMDkUILPa6wwAg3scAign0JbZTIB3AQ3IqPhWxVm5vUvA7Xt/s/Wfs/gYViiQz4JdbZeOt/8iaP2faLsIgLM5gegcIyDPEIo6xvKFX7v+5hQCbHMA1uvN/l9t9j+DP7mAFPdf7nmA0+3lzVb6yyHA9a7+95vSZ+BvDmAH/+X16dnp6nzbgJ8IIOUBGhFwdcDmBHjeAPcQ2H4BmwhMSi+TgyIXUPoHxlODZ8KBkQOwcbzX+pG9n1H/PvBbwo2Dgaa62u57RVexPapv/DeTwQwBRKFAs/ps41vmwW8zcgW/WAjgaPy/fa/lC776/JtSG/CW9MvgL/Z/cwGb/U9uYLf/V1vdP6t/tv07AewkkP7bgP9wcXN6dnF9erZcvn6TwF7Ab11AcwboBF6rk4dUglA3EcVlQqv2SAqqOjCr/Dr5Z5t/Wj4AI38Ldjb/nAPo2/tY/b3Vt0eyII9UfkwAfJwEMEUIzWm0mNoSg1d7tuYe2O1YDcgN7iqeP7rs7wUBHAXz0e2LG1j++Feuv2F3AJdb0q9Z/+QCNsCfbi5vltuNAPbYf6v97wnATfmXDfBIAA+XN7v6P9vU//Lm9Hy9eO9VUv1GApYQwA3UUMGGBVwh0L0Ctp247wSwAuDnDbQXkPas/wwBoMpzDmDkAFDhEeYW2J4A5lS/ALQHcAtka/85qacdwMjqK7W36t4HfLkmb81HRMFWvUcK7+sE8Fjw7w7g87/s/GEbAWwlv80BXN8k+7//d7PlAHbVT+Df/0vWPxHAupf+LnPcv4F/A/6m/pkAXlqX1y4S4N9TXYAjhL37D/MEcV7gMRWC+XbhXva/vIY8mB0oJgFZE68IwJKASgRqhW8gt+t7qu9j+z7AOd73YYEigQKsFl4UR6Cs/hjsvdg+AnkvBxDnAqyT8ATRcgCjDP9svN8D7hFQH9mW8wDLH/uS84duIcBOADvw1+vrDP5EAgn81QEU9b9Z7i+v1ruLm9P91fWSlX99uLxeduXP/72UgF/An/7d3cCu9vY/mxtIpNAmENFEIpxUVLsEsVyIvz3gW4b5NeN2tmBMBOplIT4hiIafy4I2GIh0vtj1eQKYAb8CcTPhSAjNIbBKN9XluB4BaR0Bxt3Wntt9RiGAjd/fJIB2P2aThI4APvcLX/+Qq8uL2633//pmcwA5D7D/u+4EgODfcgCXN9n236TYf4v5i/pf3qzPLm+WlzYCuLhen51PP5+Bnohg3YFv3UDLDxQnwF2D+DlZfTOrsJJBATo2DuH8gWL92farvoCS6OMfIFEOwHb6aa2PC389sM8RgFJ3tuz9zz4HgGRh1RvJoSm+B7aP72fcwBzIE1mp+F8ve1zcj6HF4x1ApNBHlyuQP0X99xDgj37B+Z/ZZgJuan+9xf03hQh24G9hADiA9XYD/9Vm+wv4N9t/c3q4SjF/Uv/b00YALy2Xr9/toN8AvxQnYN2ATw5ymbCBn+cP6O7BXi4gKbt6bwB3A7b2Xp8HKOt0yQ/7ARG+jyWAfkxvXwLOCh+BfmTnrcqzSs8TQM/2Ixn0/44s/S93Angq+HcC+OzPf/2fvry8uN0SgDebA7jNZLA5gE39b5r9v0rKf3dVwb/eX93sln8jgedXxfrfnl66uj29clpeuzovmwNA8AchgUsS2vkDLUegmoZ8+3CL++EVUykAAAroSURBVDkUwLIgZ/zbJKAxAWjVj+DPZT6l7PGyWOHbPrG954SftfqYsUfgq2y+dQUjy+/t/Tzoe0m8Iwm+IyQRJQY5CXg0B3BU6WeBPbtdLzxYPuvzzv/U5gA2639zs+z/7mHAzbolBHcCKMm/jQCutth/j/vX7d+HTADPrm63uH99fnW7vHx1e9r+eyXZ//KfJ4HdGVTg49++aUj1CpQ3BtlwoCi8bwyypBCVAIvi4zyAErdj/d/W+THhZ0OAluizfqAY//ZvWm8V3y+zQI8dgFZ5TQYc51vwzzkAb917BKCAGW3PDuCXAgG8LyQAdwfwhz/n9X/y+uridkv+3dxuJHC6ubrdqwHbsj0EuLpZNtW/u7peGwHs4F835X92dbs8v9pU/2ZX/pev7k6vXFy/nuN/JADrBhIBaBJoCcG4cxAJoLx5WLYM0wtD5roA2fpz7K8IwCb4uJVHE0ADvFfz7RxK/Ru4LUGwQnMI4IFdYmmO171LaLF128cvs1UAuz5ah8vV30cJAMH1S9kBsGN5TCJw+Yw/cv4ntiagHfy3y04A1zc78HfwX+/gT7H/dVb/6xL3327gT9b/6nZ96fpueWVT/qvb01tOl++5bur/cxnojQwa+I/mBLhV2L9dKH5vQNQEZBN+HOPrz9zO44t43MiLYFXlO2XnRxY/EUSk9t6y2+x+ZPObVe+B3TuDPiG8SQAWokdDgzckCfjpn/n6P745gOub8/XtXQoBbm4365/UPxHAHvfvsf/VzXp/fbs829Q/Kf/6/Pou2f7ru9MrV3ent17drq+cTxvoy38YCvx8Sgru/xVHgJWBLWmI5cFSDrTJQPdCkVwJ4NmC/sUgUcZ/3vIfaemJQK+s/XiZBWzbPlJ2julVjK/jcgR++ZsBrAhg1va/kSHALwYH8CJCgBeSA/i0P3T+x7YGoNu7083t7XJzfbvF/nseYI//r28T+K9vlx38V7fLw/Vu+9dn13fLS9cp4ffy9d36yvX98tbru9PblqvX7hL4fzaDfPt7A74lAp8cTETguwYxIahLghgCqAQgZvltzV/N+ceY36f1UNl1lb/E9Sd6y7+N8dneKzvvFR7t/yzwtaIzyBXAjzqAxxDAiAx+KYYA7zME8Ac/7fV/9Ob24vbm9ny9EcDN3XK7hQBIAJv1v7o93V/fnh6ub9eH6xTzP7++O710fXd6+ebu9Jbr7b/709uu79e3J+AXAkguYN0/RwRAvQKibbg1BJWOQZwp2HthCJf+et1+JRTAWL7pfQ/sNr7nuD599m5AJfSsbbcqbxXcO4A5oCt1j9T8TQIoYc2L7QN4nyGAT/nU8z+yxf27A7jL1YDbXflvr2+T/b/ewL9Z/7vl2fXt6dn13en5zQ7+9eWbu2UD/ltv7k9vu3k4vd9y9Z77jQDWnQTKfxgKIBFgGJAbhUTbsJowZDsES6mPXxdWynyo8tFbfjDJx8k8m85TyTyM1ft/FzKYA3oP5M0dPA34PYv/JgH8EieAT/797/21m/Lf3adE4O3mAG53F7Db/5vbZVP+++u79eHmdrHgv1/ecvNweuvt/entG/hv7s9vP59+5tT+804guQAmgVYitKVBnEWIU4jt68PGrw23qt+SegXY0b/JynNZT8X1aOf93x70bZsE3gjoPZC/SQD9rr+ogagk0zj0+IXsA3ifcQCf+MnnX3N3d0oEcJcSgDe7+q+3O/jvNuu/3t/cnZ7d3C278t/cry/fFvA/rG+/fVje/+756YNOFz97fT79NBHARgg2HIhDgdw1OJwjYF8eqgmgB3rM67eIXgO9WHf+19p6SwocpyfrjqBn8EZgfpMAPMij0l4P0DPrflkSwO/5hPf+6vv75ADu7vdqwM3N3cXdzd2m/uvdzd3ycLOp/93p+e39ksD/sLzl9uH0trtnp7ffPjt9wN2z0wdd3b7n5fPpp06JAJgEOBTQYUBT/1IaxAlBJfmH7xDEST6+xIdKz5F8qfKrd/O0WL84gAJg/JeXqdq8An16tdSbBKB7BHp9ALPAf7MKMN8RsHzc7z7/g/cPp5v73QGsexLw9m7J4D/d394vz27u1me3D8tLt/fry3cPy1vunu3gf7+75+sH3L+0/Irbh9c/4Hz6yVMigB4JRKXBEv+rSUL0GnE38Qd7+5Xql7l6GMe3Rt+WnPMKX1Q9+jft6y08gtv//SYBqJzDTKb/KAEcJYJflg7gYz72vb/y4dmm/psLWG5v7k63t3enu9u7Dfynh9v707O7DfwPp5fvHk5vuX++vu3++fL+98/XD3x4efngh5dPv+p8+vFTIgAmAZUP4N6AKP7HdwTYdwNibb/9BFjSdGXum9pbkFulb3G4BbwHuQJ4H/SFJLZ/33cJYFQJeKP6AGbLgL8YCEDF9rPLODcx0vEX0gfw0b/z/MHPn59ubvcQYFP/9fb2frm/vV/v7+5Pz+6fLS/dPZxevn92esv9S6e3Pzw/vf/Dy6e/79nLp7//+VtO/9B68RNXiQCYBEoYsP0bhQB2fkD78RCeAdisPv/mXwx6m7zzoG5ttiU2t/82m95UHoFs/36TAHRD0Wxr8C8VBzAL9veZJOBH/vb3ftBGAPfPLm/v7k63dw+nu7v70/3tw/pw/3B6fv/s9PLDS8tbH146vf3ZS+sHPH/L8sHPX1l/1ctvW37N6fLHb86nHz2dTz8mCGALBdABYGMQTxDCl4Xa2X42wccqz026kcK3hhwEeQTs2eUYy79JAG8SQNSbP0sKf08cwG/7iPMHJAew3jw8XNzd3Z/v7p8tD/fPTs8fXjq9/Oyl5a3PXz693/NX1g986a3Lr3zlbadf/cr7nf7h08WPXJ9PP3w6n34ECOAnIAwoyUDVC8CTgLi5BxW/NOew1iewl/9KLI9Kj0BWoJ4F+psOIIH7zRDAViQUYGfB/j7jAD78w197+7Pny83Ds+X2/tly9/Cw3j97aXn+7KXl5ecvn976/JX1/V552/IrXnnb+g+89f2XX/u2D/z/2zuXnYSBMAqf0YhAW1pKuQVUVDRqCG5MUBN0oRt3bnwMX8c38EmMD+DGxBgX3qKocUc0mk5NkQk/ZWw1bozMgnBpWJ5zvv8yrbfM0QLHIzieiAH4FED7ACL9xS4APQlI7wxM7+4jOvm9pKejObng+1H9K9ErA/jeslDYOrAygH9oADs7PK3piCU1b1wzWEI3mKYZnmFazDZt5KwMypkcqtki6pbzuuTiFhz34HgIGIBIf5r8YtxHEz+I+PLmXb/YP0VOXwK/xW/0e9Rn2XUZzkcRgioBoqlA9QB69ESben+GALa231O67sV0YyRupJA00yMpy2a27aDg5FHJl7xaucKaca1V4LiEi5uuAfgEQPGf1vy0xqcNPXnCy0QcJvZgyn8n9RUBKAKQbQaGj/56kqVPBgqKVzZujBL7nzGAZrOtpczYuGmxhGUzw8myTK6IUmkSi5Uqa05Mt7c4TsFxAY4ruLjr4r8vfj/1hfBF2gu8F3W8OIwzmOJRqR5mDIoABpeJxHz9N++qBKCiHwIDaKy+JWx7LO5kPb1QhDM1g9mFGttYWfP2OY7BcQKOc3Bcd7Df7XT9/VpfHPWlgo8WeVD0UUkvS3tFAIPjyN+Inv5XGcCQGUC9/hwrlQ1tbn602FjH5u7eywHHIVwcgeOsi/v+jN9v6vn1O+AG6vEwUf/kWjDVFQGEpzwdPSoD6J9UfIX2wWWiYS8BPgCAPOYxoDrtqQAAAABJRU5ErkJggg==', _0x14011b; }() , _0x5a9c6c = function() { function _0x1db7e1(_0x1c70bc) { this['_isEnabled'] = !0x1, this['isEnabled'] = !0x1, this['intensity'] = 0x1, this['roughness'] = 0x0, this['_indiceOfRefraction'] = _0x1db7e1['_DefaultIndiceOfRefraction'], this['indiceOfRefraction'] = _0x1db7e1['_DefaultIndiceOfRefraction'], this['_texture'] = null, this['texture'] = null, this['_bumpTexture'] = null, this['bumpTexture'] = null, this['_isTintEnabled'] = !0x1, this['isTintEnabled'] = !0x1, this['tintColor'] = _0x47d24f['e']['White'](), this['tintColorAtDistance'] = 0x1, this['tintThickness'] = 0x1, this['_tintTexture'] = null, this['tintTexture'] = null, this['_internalMarkAllSubMeshesAsTexturesDirty'] = _0x1c70bc; } return _0x1db7e1['prototype']['_markAllSubMeshesAsTexturesDirty'] = function() { this['_internalMarkAllSubMeshesAsTexturesDirty'](); } , _0x1db7e1['prototype']['isReadyForSubMesh'] = function(_0x5d2d64, _0x3ca9c1, _0x5b363b, _0x56b2da) { if (_0x5d2d64['_areTexturesDirty'] && _0x3ca9c1['texturesEnabled']) { if (this['_texture'] && _0x2085b2['a']['ClearCoatTextureEnabled'] && !this['_texture']['isReadyOrNotBlocking']()) return !0x1; if (_0x5b363b['getCaps']()['standardDerivatives'] && this['_bumpTexture'] && _0x2085b2['a']['ClearCoatBumpTextureEnabled'] && !_0x56b2da && !this['_bumpTexture']['isReady']()) return !0x1; if (this['_isTintEnabled'] && this['_tintTexture'] && _0x2085b2['a']['ClearCoatTintTextureEnabled'] && !this['_tintTexture']['isReadyOrNotBlocking']()) return !0x1; } return !0x0; } , _0x1db7e1['prototype']['prepareDefines'] = function(_0x16d778, _0xb68cf8) { this['_isEnabled'] ? (_0x16d778['CLEARCOAT'] = !0x0, _0x16d778['_areTexturesDirty'] && _0xb68cf8['texturesEnabled'] && (this['_texture'] && _0x2085b2['a']['ClearCoatTextureEnabled'] ? _0x2efc06['a']['PrepareDefinesForMergedUV'](this['_texture'], _0x16d778, 'CLEARCOAT_TEXTURE') : _0x16d778['CLEARCOAT_TEXTURE'] = !0x1, this['_bumpTexture'] && _0x2085b2['a']['ClearCoatBumpTextureEnabled'] ? _0x2efc06['a']['PrepareDefinesForMergedUV'](this['_bumpTexture'], _0x16d778, 'CLEARCOAT_BUMP') : _0x16d778['CLEARCOAT_BUMP'] = !0x1, _0x16d778['CLEARCOAT_DEFAULTIOR'] = this['_indiceOfRefraction'] === _0x1db7e1['_DefaultIndiceOfRefraction'], this['_isTintEnabled'] ? (_0x16d778['CLEARCOAT_TINT'] = !0x0, this['_tintTexture'] && _0x2085b2['a']['ClearCoatTintTextureEnabled'] ? _0x2efc06['a']['PrepareDefinesForMergedUV'](this['_tintTexture'], _0x16d778, 'CLEARCOAT_TINT_TEXTURE') : _0x16d778['CLEARCOAT_TINT_TEXTURE'] = !0x1) : (_0x16d778['CLEARCOAT_TINT'] = !0x1, _0x16d778['CLEARCOAT_TINT_TEXTURE'] = !0x1))) : (_0x16d778['CLEARCOAT'] = !0x1, _0x16d778['CLEARCOAT_TEXTURE'] = !0x1, _0x16d778['CLEARCOAT_BUMP'] = !0x1, _0x16d778['CLEARCOAT_TINT'] = !0x1, _0x16d778['CLEARCOAT_TINT_TEXTURE'] = !0x1); } , _0x1db7e1['prototype']['bindForSubMesh'] = function(_0x1eff2d, _0x2d99bb, _0x5cf648, _0x3087a5, _0x58469c, _0x5ca279, _0x571fa3) { if (!_0x1eff2d['useUbo'] || !_0x58469c || !_0x1eff2d['isSync']) { this['_texture'] && _0x2085b2['a']['ClearCoatTextureEnabled'] && (_0x1eff2d['updateFloat2']('vClearCoatInfos', this['_texture']['coordinatesIndex'], this['_texture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_texture'], _0x1eff2d, 'clearCoat')), this['_bumpTexture'] && _0x5cf648['getCaps']()['standardDerivatives'] && _0x2085b2['a']['ClearCoatTextureEnabled'] && !_0x3087a5 && (_0x1eff2d['updateFloat2']('vClearCoatBumpInfos', this['_bumpTexture']['coordinatesIndex'], this['_bumpTexture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_bumpTexture'], _0x1eff2d, 'clearCoatBump'), _0x2d99bb['_mirroredCameraPosition'] ? _0x1eff2d['updateFloat2']('vClearCoatTangentSpaceParams', _0x5ca279 ? 0x1 : -0x1, _0x571fa3 ? 0x1 : -0x1) : _0x1eff2d['updateFloat2']('vClearCoatTangentSpaceParams', _0x5ca279 ? -0x1 : 0x1, _0x571fa3 ? -0x1 : 0x1)), this['_tintTexture'] && _0x2085b2['a']['ClearCoatTintTextureEnabled'] && (_0x1eff2d['updateFloat2']('vClearCoatTintInfos', this['_tintTexture']['coordinatesIndex'], this['_tintTexture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_tintTexture'], _0x1eff2d, 'clearCoatTint')), _0x1eff2d['updateFloat2']('vClearCoatParams', this['intensity'], this['roughness']); var _0x460064 = 0x1 - this['_indiceOfRefraction'] , _0x193af4 = 0x1 + this['_indiceOfRefraction'] , _0x419880 = Math['pow'](-_0x460064 / _0x193af4, 0x2) , _0x488770 = 0x1 / this['_indiceOfRefraction']; _0x1eff2d['updateFloat4']('vClearCoatRefractionParams', _0x419880, _0x488770, _0x460064, _0x193af4), this['_isTintEnabled'] && (_0x1eff2d['updateFloat4']('vClearCoatTintParams', this['tintColor']['r'], this['tintColor']['g'], this['tintColor']['b'], Math['max'](0.00001, this['tintThickness'])), _0x1eff2d['updateFloat']('clearCoatColorAtDistance', Math['max'](0.00001, this['tintColorAtDistance']))); } _0x2d99bb['texturesEnabled'] && (this['_texture'] && _0x2085b2['a']['ClearCoatTextureEnabled'] && _0x1eff2d['setTexture']('clearCoatSampler', this['_texture']), this['_bumpTexture'] && _0x5cf648['getCaps']()['standardDerivatives'] && _0x2085b2['a']['ClearCoatBumpTextureEnabled'] && !_0x3087a5 && _0x1eff2d['setTexture']('clearCoatBumpSampler', this['_bumpTexture']), this['_isTintEnabled'] && this['_tintTexture'] && _0x2085b2['a']['ClearCoatTintTextureEnabled'] && _0x1eff2d['setTexture']('clearCoatTintSampler', this['_tintTexture'])); } , _0x1db7e1['prototype']['hasTexture'] = function(_0x31d5fb) { return this['_texture'] === _0x31d5fb || (this['_bumpTexture'] === _0x31d5fb || this['_tintTexture'] === _0x31d5fb); } , _0x1db7e1['prototype']['getActiveTextures'] = function(_0x466392) { this['_texture'] && _0x466392['push'](this['_texture']), this['_bumpTexture'] && _0x466392['push'](this['_bumpTexture']), this['_tintTexture'] && _0x466392['push'](this['_tintTexture']); } , _0x1db7e1['prototype']['getAnimatables'] = function(_0x5ca45b) { this['_texture'] && this['_texture']['animations'] && this['_texture']['animations']['length'] > 0x0 && _0x5ca45b['push'](this['_texture']), this['_bumpTexture'] && this['_bumpTexture']['animations'] && this['_bumpTexture']['animations']['length'] > 0x0 && _0x5ca45b['push'](this['_bumpTexture']), this['_tintTexture'] && this['_tintTexture']['animations'] && this['_tintTexture']['animations']['length'] > 0x0 && _0x5ca45b['push'](this['_tintTexture']); } , _0x1db7e1['prototype']['dispose'] = function(_0x58302a) { _0x58302a && (this['_texture'] && this['_texture']['dispose'](), this['_bumpTexture'] && this['_bumpTexture']['dispose'](), this['_tintTexture'] && this['_tintTexture']['dispose']()); } , _0x1db7e1['prototype']['getClassName'] = function() { return 'PBRClearCoatConfiguration'; } , _0x1db7e1['AddFallbacks'] = function(_0x2f9900, _0x100159, _0x3ae18a) { return _0x2f9900['CLEARCOAT_BUMP'] && _0x100159['addFallback'](_0x3ae18a++, 'CLEARCOAT_BUMP'), _0x2f9900['CLEARCOAT_TINT'] && _0x100159['addFallback'](_0x3ae18a++, 'CLEARCOAT_TINT'), _0x2f9900['CLEARCOAT'] && _0x100159['addFallback'](_0x3ae18a++, 'CLEARCOAT'), _0x3ae18a; } , _0x1db7e1['AddUniforms'] = function(_0x4c7d50) { _0x4c7d50['push']('vClearCoatTangentSpaceParams', 'vClearCoatParams', 'vClearCoatRefractionParams', 'vClearCoatTintParams', 'clearCoatColorAtDistance', 'clearCoatMatrix', 'clearCoatBumpMatrix', 'clearCoatTintMatrix', 'vClearCoatInfos', 'vClearCoatBumpInfos', 'vClearCoatTintInfos'); } , _0x1db7e1['AddSamplers'] = function(_0x2bf0b1) { _0x2bf0b1['push']('clearCoatSampler', 'clearCoatBumpSampler', 'clearCoatTintSampler'); } , _0x1db7e1['PrepareUniformBuffer'] = function(_0x27657f) { _0x27657f['addUniform']('vClearCoatParams', 0x2), _0x27657f['addUniform']('vClearCoatRefractionParams', 0x4), _0x27657f['addUniform']('vClearCoatInfos', 0x2), _0x27657f['addUniform']('clearCoatMatrix', 0x10), _0x27657f['addUniform']('vClearCoatBumpInfos', 0x2), _0x27657f['addUniform']('vClearCoatTangentSpaceParams', 0x2), _0x27657f['addUniform']('clearCoatBumpMatrix', 0x10), _0x27657f['addUniform']('vClearCoatTintParams', 0x4), _0x27657f['addUniform']('clearCoatColorAtDistance', 0x1), _0x27657f['addUniform']('vClearCoatTintInfos', 0x2), _0x27657f['addUniform']('clearCoatTintMatrix', 0x10); } , _0x1db7e1['prototype']['copyTo'] = function(_0x403386) { _0x3d4764['a']['Clone'](function() { return _0x403386; }, this); } , _0x1db7e1['prototype']['serialize'] = function() { return _0x3d4764['a']['Serialize'](this); } , _0x1db7e1['prototype']['parse'] = function(_0x3886f1) { var _0x4687c4 = this; _0x3d4764['a']['Parse'](function() { return _0x4687c4; }, _0x3886f1, null); } , _0x1db7e1['_DefaultIndiceOfRefraction'] = 1.5, _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1db7e1['prototype'], '_isEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1db7e1['prototype'], 'isEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1db7e1['prototype'], 'intensity', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1db7e1['prototype'], 'roughness', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1db7e1['prototype'], '_indiceOfRefraction', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1db7e1['prototype'], 'indiceOfRefraction', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])()], _0x1db7e1['prototype'], '_texture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1db7e1['prototype'], 'texture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])()], _0x1db7e1['prototype'], '_bumpTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1db7e1['prototype'], 'bumpTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1db7e1['prototype'], '_isTintEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1db7e1['prototype'], 'isTintEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])()], _0x1db7e1['prototype'], 'tintColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1db7e1['prototype'], 'tintColorAtDistance', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1db7e1['prototype'], 'tintThickness', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])()], _0x1db7e1['prototype'], '_tintTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1db7e1['prototype'], 'tintTexture', void 0x0), _0x1db7e1; }() , _0x458d88 = function() { function _0x1c4dd0(_0x2240ff) { this['_isEnabled'] = !0x1, this['isEnabled'] = !0x1, this['intensity'] = 0x1, this['direction'] = new _0x47d24f['w'](0x1,0x0), this['_texture'] = null, this['texture'] = null, this['_internalMarkAllSubMeshesAsTexturesDirty'] = _0x2240ff; } return _0x1c4dd0['prototype']['_markAllSubMeshesAsTexturesDirty'] = function() { this['_internalMarkAllSubMeshesAsTexturesDirty'](); } , _0x1c4dd0['prototype']['isReadyForSubMesh'] = function(_0x97e775, _0x40809f) { return !(_0x97e775['_areTexturesDirty'] && _0x40809f['texturesEnabled'] && this['_texture'] && _0x2085b2['a']['AnisotropicTextureEnabled'] && !this['_texture']['isReadyOrNotBlocking']()); } , _0x1c4dd0['prototype']['prepareDefines'] = function(_0x3a0ac0, _0x180ab3, _0x384f4e) { this['_isEnabled'] ? (_0x3a0ac0['ANISOTROPIC'] = this['_isEnabled'], this['_isEnabled'] && !_0x180ab3['isVerticesDataPresent'](_0x4209f7['b']['TangentKind']) && (_0x3a0ac0['_needUVs'] = !0x0, _0x3a0ac0['MAINUV1'] = !0x0), _0x3a0ac0['_areTexturesDirty'] && _0x384f4e['texturesEnabled'] && (this['_texture'] && _0x2085b2['a']['AnisotropicTextureEnabled'] ? _0x2efc06['a']['PrepareDefinesForMergedUV'](this['_texture'], _0x3a0ac0, 'ANISOTROPIC_TEXTURE') : _0x3a0ac0['ANISOTROPIC_TEXTURE'] = !0x1)) : (_0x3a0ac0['ANISOTROPIC'] = !0x1, _0x3a0ac0['ANISOTROPIC_TEXTURE'] = !0x1); } , _0x1c4dd0['prototype']['bindForSubMesh'] = function(_0x8c06c8, _0xca5289, _0x13fa18) { _0x8c06c8['useUbo'] && _0x13fa18 && _0x8c06c8['isSync'] || (this['_texture'] && _0x2085b2['a']['AnisotropicTextureEnabled'] && (_0x8c06c8['updateFloat2']('vAnisotropyInfos', this['_texture']['coordinatesIndex'], this['_texture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_texture'], _0x8c06c8, 'anisotropy')), _0x8c06c8['updateFloat3']('vAnisotropy', this['direction']['x'], this['direction']['y'], this['intensity'])), _0xca5289['texturesEnabled'] && this['_texture'] && _0x2085b2['a']['AnisotropicTextureEnabled'] && _0x8c06c8['setTexture']('anisotropySampler', this['_texture']); } , _0x1c4dd0['prototype']['hasTexture'] = function(_0x271cb8) { return this['_texture'] === _0x271cb8; } , _0x1c4dd0['prototype']['getActiveTextures'] = function(_0x19e7c1) { this['_texture'] && _0x19e7c1['push'](this['_texture']); } , _0x1c4dd0['prototype']['getAnimatables'] = function(_0x552e21) { this['_texture'] && this['_texture']['animations'] && this['_texture']['animations']['length'] > 0x0 && _0x552e21['push'](this['_texture']); } , _0x1c4dd0['prototype']['dispose'] = function(_0x3be491) { _0x3be491 && this['_texture'] && this['_texture']['dispose'](); } , _0x1c4dd0['prototype']['getClassName'] = function() { return 'PBRAnisotropicConfiguration'; } , _0x1c4dd0['AddFallbacks'] = function(_0x1a8b4e, _0x5c537f, _0x40a08a) { return _0x1a8b4e['ANISOTROPIC'] && _0x5c537f['addFallback'](_0x40a08a++, 'ANISOTROPIC'), _0x40a08a; } , _0x1c4dd0['AddUniforms'] = function(_0x4e0fee) { _0x4e0fee['push']('vAnisotropy', 'vAnisotropyInfos', 'anisotropyMatrix'); } , _0x1c4dd0['PrepareUniformBuffer'] = function(_0x38f837) { _0x38f837['addUniform']('vAnisotropy', 0x3), _0x38f837['addUniform']('vAnisotropyInfos', 0x2), _0x38f837['addUniform']('anisotropyMatrix', 0x10); } , _0x1c4dd0['AddSamplers'] = function(_0x3dea01) { _0x3dea01['push']('anisotropySampler'); } , _0x1c4dd0['prototype']['copyTo'] = function(_0x4dab92) { _0x3d4764['a']['Clone'](function() { return _0x4dab92; }, this); } , _0x1c4dd0['prototype']['serialize'] = function() { return _0x3d4764['a']['Serialize'](this); } , _0x1c4dd0['prototype']['parse'] = function(_0x1e9c4e) { var _0x3f23b4 = this; _0x3d4764['a']['Parse'](function() { return _0x3f23b4; }, _0x1e9c4e, null); } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1c4dd0['prototype'], '_isEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1c4dd0['prototype'], 'isEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1c4dd0['prototype'], 'intensity', void 0x0), _0x420e5b['c']([Object(_0x3d4764['n'])()], _0x1c4dd0['prototype'], 'direction', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])()], _0x1c4dd0['prototype'], '_texture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1c4dd0['prototype'], 'texture', void 0x0), _0x1c4dd0; }() , _0x285c02 = function() { function _0x4468b2(_0x54ef24) { this['_useEnergyConservation'] = _0x4468b2['DEFAULT_USE_ENERGY_CONSERVATION'], this['useEnergyConservation'] = _0x4468b2['DEFAULT_USE_ENERGY_CONSERVATION'], this['_useSmithVisibilityHeightCorrelated'] = _0x4468b2['DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED'], this['useSmithVisibilityHeightCorrelated'] = _0x4468b2['DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED'], this['_useSphericalHarmonics'] = _0x4468b2['DEFAULT_USE_SPHERICAL_HARMONICS'], this['useSphericalHarmonics'] = _0x4468b2['DEFAULT_USE_SPHERICAL_HARMONICS'], this['_internalMarkAllSubMeshesAsMiscDirty'] = _0x54ef24; } return _0x4468b2['prototype']['_markAllSubMeshesAsMiscDirty'] = function() { this['_internalMarkAllSubMeshesAsMiscDirty'](); } , _0x4468b2['prototype']['prepareDefines'] = function(_0x4f2761) { _0x4f2761['BRDF_V_HEIGHT_CORRELATED'] = this['_useSmithVisibilityHeightCorrelated'], _0x4f2761['MS_BRDF_ENERGY_CONSERVATION'] = this['_useEnergyConservation'] && this['_useSmithVisibilityHeightCorrelated'], _0x4f2761['SPHERICAL_HARMONICS'] = this['_useSphericalHarmonics']; } , _0x4468b2['prototype']['getClassName'] = function() { return 'PBRBRDFConfiguration'; } , _0x4468b2['prototype']['copyTo'] = function(_0x2dc999) { _0x3d4764['a']['Clone'](function() { return _0x2dc999; }, this); } , _0x4468b2['prototype']['serialize'] = function() { return _0x3d4764['a']['Serialize'](this); } , _0x4468b2['prototype']['parse'] = function(_0x430152) { var _0x585dfd = this; _0x3d4764['a']['Parse'](function() { return _0x585dfd; }, _0x430152, null); } , _0x4468b2['DEFAULT_USE_ENERGY_CONSERVATION'] = !0x0, _0x4468b2['DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED'] = !0x0, _0x4468b2['DEFAULT_USE_SPHERICAL_HARMONICS'] = !0x0, _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4468b2['prototype'], '_useEnergyConservation', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsMiscDirty')], _0x4468b2['prototype'], 'useEnergyConservation', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4468b2['prototype'], '_useSmithVisibilityHeightCorrelated', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsMiscDirty')], _0x4468b2['prototype'], 'useSmithVisibilityHeightCorrelated', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4468b2['prototype'], '_useSphericalHarmonics', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsMiscDirty')], _0x4468b2['prototype'], 'useSphericalHarmonics', void 0x0), _0x4468b2; }() , _0x39cb46 = function() { function _0x1bddf0(_0x2037b6) { this['_isEnabled'] = !0x1, this['isEnabled'] = !0x1, this['_linkSheenWithAlbedo'] = !0x1, this['linkSheenWithAlbedo'] = !0x1, this['intensity'] = 0x1, this['color'] = _0x47d24f['e']['White'](), this['_texture'] = null, this['texture'] = null, this['_internalMarkAllSubMeshesAsTexturesDirty'] = _0x2037b6; } return _0x1bddf0['prototype']['_markAllSubMeshesAsTexturesDirty'] = function() { this['_internalMarkAllSubMeshesAsTexturesDirty'](); } , _0x1bddf0['prototype']['isReadyForSubMesh'] = function(_0x596843, _0x37c6f2) { return !(_0x596843['_areTexturesDirty'] && _0x37c6f2['texturesEnabled'] && this['_texture'] && _0x2085b2['a']['SheenTextureEnabled'] && !this['_texture']['isReadyOrNotBlocking']()); } , _0x1bddf0['prototype']['prepareDefines'] = function(_0x4ae6b7, _0x33c4c0) { this['_isEnabled'] ? (_0x4ae6b7['SHEEN'] = this['_isEnabled'], _0x4ae6b7['SHEEN_LINKWITHALBEDO'] = this['_linkSheenWithAlbedo'], _0x4ae6b7['_areTexturesDirty'] && _0x33c4c0['texturesEnabled'] && (this['_texture'] && _0x2085b2['a']['SheenTextureEnabled'] ? _0x2efc06['a']['PrepareDefinesForMergedUV'](this['_texture'], _0x4ae6b7, 'SHEEN_TEXTURE') : _0x4ae6b7['SHEEN_TEXTURE'] = !0x1)) : (_0x4ae6b7['SHEEN'] = !0x1, _0x4ae6b7['SHEEN_TEXTURE'] = !0x1, _0x4ae6b7['SHEEN_LINKWITHALBEDO'] = !0x1); } , _0x1bddf0['prototype']['bindForSubMesh'] = function(_0x26bcab, _0x401699, _0x1ce13b) { _0x26bcab['useUbo'] && _0x1ce13b && _0x26bcab['isSync'] || (this['_texture'] && _0x2085b2['a']['SheenTextureEnabled'] && (_0x26bcab['updateFloat2']('vSheenInfos', this['_texture']['coordinatesIndex'], this['_texture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_texture'], _0x26bcab, 'sheen')), _0x26bcab['updateFloat4']('vSheenColor', this['color']['r'], this['color']['g'], this['color']['b'], this['intensity'])), _0x401699['texturesEnabled'] && this['_texture'] && _0x2085b2['a']['SheenTextureEnabled'] && _0x26bcab['setTexture']('sheenSampler', this['_texture']); } , _0x1bddf0['prototype']['hasTexture'] = function(_0x30e3d2) { return this['_texture'] === _0x30e3d2; } , _0x1bddf0['prototype']['getActiveTextures'] = function(_0x3602e2) { this['_texture'] && _0x3602e2['push'](this['_texture']); } , _0x1bddf0['prototype']['getAnimatables'] = function(_0x1c275c) { this['_texture'] && this['_texture']['animations'] && this['_texture']['animations']['length'] > 0x0 && _0x1c275c['push'](this['_texture']); } , _0x1bddf0['prototype']['dispose'] = function(_0xac9c03) { _0xac9c03 && this['_texture'] && this['_texture']['dispose'](); } , _0x1bddf0['prototype']['getClassName'] = function() { return 'PBRSheenConfiguration'; } , _0x1bddf0['AddFallbacks'] = function(_0x4b0e62, _0x268c2f, _0x4929e0) { return _0x4b0e62['SHEEN'] && _0x268c2f['addFallback'](_0x4929e0++, 'SHEEN'), _0x4929e0; } , _0x1bddf0['AddUniforms'] = function(_0x284fbf) { _0x284fbf['push']('vSheenColor', 'vSheenInfos', 'sheenMatrix'); } , _0x1bddf0['PrepareUniformBuffer'] = function(_0x4f959e) { _0x4f959e['addUniform']('vSheenColor', 0x4), _0x4f959e['addUniform']('vSheenInfos', 0x2), _0x4f959e['addUniform']('sheenMatrix', 0x10); } , _0x1bddf0['AddSamplers'] = function(_0x5ba20d) { _0x5ba20d['push']('sheenSampler'); } , _0x1bddf0['prototype']['copyTo'] = function(_0x2d150f) { _0x3d4764['a']['Clone'](function() { return _0x2d150f; }, this); } , _0x1bddf0['prototype']['serialize'] = function() { return _0x3d4764['a']['Serialize'](this); } , _0x1bddf0['prototype']['parse'] = function(_0x4a7653) { var _0x4a31c6 = this; _0x3d4764['a']['Parse'](function() { return _0x4a31c6; }, _0x4a7653, null); } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1bddf0['prototype'], '_isEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1bddf0['prototype'], 'isEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1bddf0['prototype'], '_linkSheenWithAlbedo', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1bddf0['prototype'], 'linkSheenWithAlbedo', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x1bddf0['prototype'], 'intensity', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])()], _0x1bddf0['prototype'], 'color', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])()], _0x1bddf0['prototype'], '_texture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1bddf0['prototype'], 'texture', void 0x0), _0x1bddf0; }() , _0x4cb0e6 = function() { function _0x59584(_0x2c1009) { this['_isRefractionEnabled'] = !0x1, this['isRefractionEnabled'] = !0x1, this['_isTranslucencyEnabled'] = !0x1, this['isTranslucencyEnabled'] = !0x1, this['_isScatteringEnabled'] = !0x1, this['refractionIntensity'] = 0x1, this['translucencyIntensity'] = 0x1, this['scatteringIntensity'] = 0x1, this['_thicknessTexture'] = null, this['thicknessTexture'] = null, this['_refractionTexture'] = null, this['refractionTexture'] = null, this['_indexOfRefraction'] = 0x1, this['indexOfRefraction'] = 0x1, this['_invertRefractionY'] = !0x1, this['invertRefractionY'] = !0x1, this['_linkRefractionWithTransparency'] = !0x1, this['linkRefractionWithTransparency'] = !0x1, this['minimumThickness'] = 0x0, this['maximumThickness'] = 0x1, this['tintColor'] = _0x47d24f['e']['White'](), this['tintColorAtDistance'] = 0x1, this['diffusionDistance'] = _0x47d24f['e']['White'](), this['_useMaskFromThicknessTexture'] = !0x1, this['useMaskFromThicknessTexture'] = !0x1, this['_internalMarkAllSubMeshesAsTexturesDirty'] = _0x2c1009; } return _0x59584['prototype']['_markAllSubMeshesAsTexturesDirty'] = function() { this['_internalMarkAllSubMeshesAsTexturesDirty'](); } , _0x59584['prototype']['isReadyForSubMesh'] = function(_0x52d62c, _0x142737) { if (_0x52d62c['_areTexturesDirty'] && _0x142737['texturesEnabled']) { if (this['_thicknessTexture'] && _0x2085b2['a']['ThicknessTextureEnabled'] && !this['_thicknessTexture']['isReadyOrNotBlocking']()) return !0x1; var _0x94997f = this['_getRefractionTexture'](_0x142737); if (_0x94997f && _0x2085b2['a']['RefractionTextureEnabled'] && !_0x94997f['isReadyOrNotBlocking']()) return !0x1; } return !0x0; } , _0x59584['prototype']['prepareDefines'] = function(_0x5aafa5, _0x214093) { if (_0x5aafa5['_areTexturesDirty'] && (_0x5aafa5['SUBSURFACE'] = !0x1, _0x5aafa5['SS_TRANSLUCENCY'] = this['_isTranslucencyEnabled'], _0x5aafa5['SS_SCATERRING'] = this['_isScatteringEnabled'], _0x5aafa5['SS_THICKNESSANDMASK_TEXTURE'] = !0x1, _0x5aafa5['SS_MASK_FROM_THICKNESS_TEXTURE'] = !0x1, _0x5aafa5['SS_REFRACTION'] = !0x1, _0x5aafa5['SS_REFRACTIONMAP_3D'] = !0x1, _0x5aafa5['SS_GAMMAREFRACTION'] = !0x1, _0x5aafa5['SS_RGBDREFRACTION'] = !0x1, _0x5aafa5['SS_REFRACTIONMAP_OPPOSITEZ'] = !0x1, _0x5aafa5['SS_LODINREFRACTIONALPHA'] = !0x1, _0x5aafa5['SS_LINKREFRACTIONTOTRANSPARENCY'] = !0x1, (this['_isRefractionEnabled'] || this['_isTranslucencyEnabled'] || this['_isScatteringEnabled']) && (_0x5aafa5['SUBSURFACE'] = !0x0, _0x5aafa5['_areTexturesDirty'] && _0x214093['texturesEnabled'] && this['_thicknessTexture'] && _0x2085b2['a']['ThicknessTextureEnabled'] && _0x2efc06['a']['PrepareDefinesForMergedUV'](this['_thicknessTexture'], _0x5aafa5, 'SS_THICKNESSANDMASK_TEXTURE'), _0x5aafa5['SS_MASK_FROM_THICKNESS_TEXTURE'] = this['_useMaskFromThicknessTexture']), this['_isRefractionEnabled'] && _0x214093['texturesEnabled'])) { var _0x2f30a3 = this['_getRefractionTexture'](_0x214093); _0x2f30a3 && _0x2085b2['a']['RefractionTextureEnabled'] && (_0x5aafa5['SS_REFRACTION'] = !0x0, _0x5aafa5['SS_REFRACTIONMAP_3D'] = _0x2f30a3['isCube'], _0x5aafa5['SS_GAMMAREFRACTION'] = _0x2f30a3['gammaSpace'], _0x5aafa5['SS_RGBDREFRACTION'] = _0x2f30a3['isRGBD'], _0x5aafa5['SS_REFRACTIONMAP_OPPOSITEZ'] = _0x2f30a3['invertZ'], _0x5aafa5['SS_LODINREFRACTIONALPHA'] = _0x2f30a3['lodLevelInAlpha'], _0x5aafa5['SS_LINKREFRACTIONTOTRANSPARENCY'] = this['_linkRefractionWithTransparency']); } } , _0x59584['prototype']['bindForSubMesh'] = function(_0x3b59e1, _0x26d31e, _0x1d2c12, _0x1b31f1, _0xf80128) { var _0x9b6fa7 = this['_getRefractionTexture'](_0x26d31e); if (!_0x3b59e1['useUbo'] || !_0x1b31f1 || !_0x3b59e1['isSync']) { if (this['_thicknessTexture'] && _0x2085b2['a']['ThicknessTextureEnabled'] && (_0x3b59e1['updateFloat2']('vThicknessInfos', this['_thicknessTexture']['coordinatesIndex'], this['_thicknessTexture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_thicknessTexture'], _0x3b59e1, 'thickness')), _0x3b59e1['updateFloat2']('vThicknessParam', this['minimumThickness'], this['maximumThickness'] - this['minimumThickness']), _0x9b6fa7 && _0x2085b2['a']['RefractionTextureEnabled']) { _0x3b59e1['updateMatrix']('refractionMatrix', _0x9b6fa7['getReflectionTextureMatrix']()); var _0x1425ff = 0x1; _0x9b6fa7['isCube'] || _0x9b6fa7['depth'] && (_0x1425ff = _0x9b6fa7['depth']), _0x3b59e1['updateFloat4']('vRefractionInfos', _0x9b6fa7['level'], 0x1 / this['_indexOfRefraction'], _0x1425ff, this['_invertRefractionY'] ? -0x1 : 0x1), _0x3b59e1['updateFloat3']('vRefractionMicrosurfaceInfos', _0x9b6fa7['getSize']()['width'], _0x9b6fa7['lodGenerationScale'], _0x9b6fa7['lodGenerationOffset']); } _0x3b59e1['updateColor3']('vDiffusionDistance', this['diffusionDistance']), _0x3b59e1['updateFloat4']('vTintColor', this['tintColor']['r'], this['tintColor']['g'], this['tintColor']['b'], this['tintColorAtDistance']), _0x3b59e1['updateFloat3']('vSubSurfaceIntensity', this['refractionIntensity'], this['translucencyIntensity'], this['scatteringIntensity']); } _0x26d31e['texturesEnabled'] && (this['_thicknessTexture'] && _0x2085b2['a']['ThicknessTextureEnabled'] && _0x3b59e1['setTexture']('thicknessSampler', this['_thicknessTexture']), _0x9b6fa7 && _0x2085b2['a']['RefractionTextureEnabled'] && (_0xf80128 ? _0x3b59e1['setTexture']('refractionSampler', _0x9b6fa7) : (_0x3b59e1['setTexture']('refractionSampler', _0x9b6fa7['_lodTextureMid'] || _0x9b6fa7), _0x3b59e1['setTexture']('refractionSamplerLow', _0x9b6fa7['_lodTextureLow'] || _0x9b6fa7), _0x3b59e1['setTexture']('refractionSamplerHigh', _0x9b6fa7['_lodTextureHigh'] || _0x9b6fa7)))); } , _0x59584['prototype']['unbind'] = function(_0x29f75a) { return !(!this['_refractionTexture'] || !this['_refractionTexture']['isRenderTarget']) && (_0x29f75a['setTexture']('refractionSampler', null), !0x0); } , _0x59584['prototype']['_getRefractionTexture'] = function(_0x83269d) { return this['_refractionTexture'] ? this['_refractionTexture'] : this['_isRefractionEnabled'] ? _0x83269d['environmentTexture'] : null; } , Object['defineProperty'](_0x59584['prototype'], 'disableAlphaBlending', { 'get': function() { return this['isRefractionEnabled'] && this['_linkRefractionWithTransparency']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x59584['prototype']['fillRenderTargetTextures'] = function(_0x2cb0f8) { _0x2085b2['a']['RefractionTextureEnabled'] && this['_refractionTexture'] && this['_refractionTexture']['isRenderTarget'] && _0x2cb0f8['push'](this['_refractionTexture']); } , _0x59584['prototype']['hasTexture'] = function(_0x1f9cdf) { return this['_thicknessTexture'] === _0x1f9cdf || this['_refractionTexture'] === _0x1f9cdf; } , _0x59584['prototype']['hasRenderTargetTextures'] = function() { return !!(_0x2085b2['a']['RefractionTextureEnabled'] && this['_refractionTexture'] && this['_refractionTexture']['isRenderTarget']); } , _0x59584['prototype']['getActiveTextures'] = function(_0x357d1e) { this['_thicknessTexture'] && _0x357d1e['push'](this['_thicknessTexture']), this['_refractionTexture'] && _0x357d1e['push'](this['_refractionTexture']); } , _0x59584['prototype']['getAnimatables'] = function(_0x480328) { this['_thicknessTexture'] && this['_thicknessTexture']['animations'] && this['_thicknessTexture']['animations']['length'] > 0x0 && _0x480328['push'](this['_thicknessTexture']), this['_refractionTexture'] && this['_refractionTexture']['animations'] && this['_refractionTexture']['animations']['length'] > 0x0 && _0x480328['push'](this['_refractionTexture']); } , _0x59584['prototype']['dispose'] = function(_0x368b0d) { _0x368b0d && (this['_thicknessTexture'] && this['_thicknessTexture']['dispose'](), this['_refractionTexture'] && this['_refractionTexture']['dispose']()); } , _0x59584['prototype']['getClassName'] = function() { return 'PBRSubSurfaceConfiguration'; } , _0x59584['AddFallbacks'] = function(_0x1e5a4a, _0x3302dd, _0x5947de) { return _0x1e5a4a['SS_SCATERRING'] && _0x3302dd['addFallback'](_0x5947de++, 'SS_SCATERRING'), _0x1e5a4a['SS_TRANSLUCENCY'] && _0x3302dd['addFallback'](_0x5947de++, 'SS_TRANSLUCENCY'), _0x5947de; } , _0x59584['AddUniforms'] = function(_0x165556) { _0x165556['push']('vDiffusionDistance', 'vTintColor', 'vSubSurfaceIntensity', 'vRefractionMicrosurfaceInfos', 'vRefractionInfos', 'vThicknessInfos', 'vThicknessParam', 'refractionMatrix', 'thicknessMatrix'); } , _0x59584['AddSamplers'] = function(_0x508f64) { _0x508f64['push']('thicknessSampler', 'refractionSampler', 'refractionSamplerLow', 'refractionSamplerHigh'); } , _0x59584['PrepareUniformBuffer'] = function(_0x1e253d) { _0x1e253d['addUniform']('vRefractionMicrosurfaceInfos', 0x3), _0x1e253d['addUniform']('vRefractionInfos', 0x4), _0x1e253d['addUniform']('refractionMatrix', 0x10), _0x1e253d['addUniform']('vThicknessInfos', 0x2), _0x1e253d['addUniform']('thicknessMatrix', 0x10), _0x1e253d['addUniform']('vThicknessParam', 0x2), _0x1e253d['addUniform']('vDiffusionDistance', 0x3), _0x1e253d['addUniform']('vTintColor', 0x4), _0x1e253d['addUniform']('vSubSurfaceIntensity', 0x3); } , _0x59584['prototype']['copyTo'] = function(_0x367f29) { _0x3d4764['a']['Clone'](function() { return _0x367f29; }, this); } , _0x59584['prototype']['serialize'] = function() { return _0x3d4764['a']['Serialize'](this); } , _0x59584['prototype']['parse'] = function(_0x49ab63) { var _0x288dde = this; _0x3d4764['a']['Parse'](function() { return _0x288dde; }, _0x49ab63, null); } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x59584['prototype'], '_isRefractionEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x59584['prototype'], 'isRefractionEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x59584['prototype'], '_isTranslucencyEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x59584['prototype'], 'isTranslucencyEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x59584['prototype'], '_isScatteringEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x59584['prototype'], 'refractionIntensity', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x59584['prototype'], 'translucencyIntensity', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x59584['prototype'], 'scatteringIntensity', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])()], _0x59584['prototype'], '_thicknessTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x59584['prototype'], 'thicknessTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x59584['prototype'], 'refractionTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x59584['prototype'], 'indexOfRefraction', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x59584['prototype'], 'invertRefractionY', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x59584['prototype'], 'linkRefractionWithTransparency', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x59584['prototype'], 'minimumThickness', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x59584['prototype'], 'maximumThickness', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])()], _0x59584['prototype'], 'tintColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x59584['prototype'], 'tintColorAtDistance', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])()], _0x59584['prototype'], 'diffusionDistance', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x59584['prototype'], '_useMaskFromThicknessTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x59584['prototype'], 'useMaskFromThicknessTexture', void 0x0), _0x59584; }() , _0x16c375 = 'uniform\x20vec3\x20vReflectionColor;\x0auniform\x20vec4\x20vAlbedoColor;\x0a\x0auniform\x20vec4\x20vLightingIntensity;\x0auniform\x20vec4\x20vReflectivityColor;\x0auniform\x20vec3\x20vEmissiveColor;\x0auniform\x20float\x20visibility;\x0a\x0a#ifdef\x20ALBEDO\x0auniform\x20vec2\x20vAlbedoInfos;\x0a#endif\x0a#ifdef\x20AMBIENT\x0auniform\x20vec4\x20vAmbientInfos;\x0a#endif\x0a#ifdef\x20BUMP\x0auniform\x20vec3\x20vBumpInfos;\x0auniform\x20vec2\x20vTangentSpaceParams;\x0a#endif\x0a#ifdef\x20OPACITY\x0auniform\x20vec2\x20vOpacityInfos;\x0a#endif\x0a#ifdef\x20EMISSIVE\x0auniform\x20vec2\x20vEmissiveInfos;\x0a#endif\x0a#ifdef\x20LIGHTMAP\x0auniform\x20vec2\x20vLightmapInfos;\x0a#endif\x0a#ifdef\x20REFLECTIVITY\x0auniform\x20vec3\x20vReflectivityInfos;\x0a#endif\x0a#ifdef\x20MICROSURFACEMAP\x0auniform\x20vec2\x20vMicroSurfaceSamplerInfos;\x0a#endif\x0a\x0a#if\x20defined(REFLECTIONMAP_SPHERICAL)\x20||\x20defined(REFLECTIONMAP_PROJECTION)\x20||\x20defined(SS_REFRACTION)\x0auniform\x20mat4\x20view;\x0a#endif\x0a\x0a#ifdef\x20REFLECTION\x0auniform\x20vec2\x20vReflectionInfos;\x0auniform\x20mat4\x20reflectionMatrix;\x0auniform\x20vec3\x20vReflectionMicrosurfaceInfos;\x0a#if\x20defined(USE_LOCAL_REFLECTIONMAP_CUBIC)\x20&&\x20defined(REFLECTIONMAP_CUBIC)\x0auniform\x20vec3\x20vReflectionPosition;\x0auniform\x20vec3\x20vReflectionSize;\x0a#endif\x0a#endif\x0a\x0a#ifdef\x20CLEARCOAT\x0auniform\x20vec2\x20vClearCoatParams;\x0auniform\x20vec4\x20vClearCoatRefractionParams;\x0a#ifdef\x20CLEARCOAT_TEXTURE\x0auniform\x20vec2\x20vClearCoatInfos;\x0auniform\x20mat4\x20clearCoatMatrix;\x0a#endif\x0a#ifdef\x20CLEARCOAT_BUMP\x0auniform\x20vec2\x20vClearCoatBumpInfos;\x0auniform\x20vec2\x20vClearCoatTangentSpaceParams;\x0auniform\x20mat4\x20clearCoatBumpMatrix;\x0a#endif\x0a#ifdef\x20CLEARCOAT_TINT\x0auniform\x20vec4\x20vClearCoatTintParams;\x0auniform\x20float\x20clearCoatColorAtDistance;\x0a#ifdef\x20CLEARCOAT_TINT_TEXTURE\x0auniform\x20vec2\x20vClearCoatTintInfos;\x0auniform\x20mat4\x20clearCoatTintMatrix;\x0a#endif\x0a#endif\x0a#endif\x0a\x0a#ifdef\x20ANISOTROPIC\x0auniform\x20vec3\x20vAnisotropy;\x0a#ifdef\x20ANISOTROPIC_TEXTURE\x0auniform\x20vec2\x20vAnisotropyInfos;\x0auniform\x20mat4\x20anisotropyMatrix;\x0a#endif\x0a#endif\x0a\x0a#ifdef\x20SHEEN\x0auniform\x20vec4\x20vSheenColor;\x0a#ifdef\x20SHEEN_TEXTURE\x0auniform\x20vec2\x20vSheenInfos;\x0auniform\x20mat4\x20sheenMatrix;\x0a#endif\x0a#endif\x0a\x0a#ifdef\x20SUBSURFACE\x0a#ifdef\x20SS_REFRACTION\x0auniform\x20vec3\x20vRefractionMicrosurfaceInfos;\x0auniform\x20vec4\x20vRefractionInfos;\x0auniform\x20mat4\x20refractionMatrix;\x0a#endif\x0a#ifdef\x20SS_THICKNESSANDMASK_TEXTURE\x0auniform\x20vec2\x20vThicknessInfos;\x0auniform\x20mat4\x20thicknessMatrix;;\x0a#endif\x0auniform\x20vec2\x20vThicknessParam;\x0auniform\x20vec3\x20vDiffusionDistance;\x0auniform\x20vec4\x20vTintColor;\x0auniform\x20vec3\x20vSubSurfaceIntensity;\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['pbrFragmentDeclaration'] = _0x16c375; var _0x315bc5 = 'layout(std140,column_major)\x20uniform;\x0auniform\x20Material\x0a{\x0auniform\x20vec2\x20vAlbedoInfos;\x0auniform\x20vec4\x20vAmbientInfos;\x0auniform\x20vec2\x20vOpacityInfos;\x0auniform\x20vec2\x20vEmissiveInfos;\x0auniform\x20vec2\x20vLightmapInfos;\x0auniform\x20vec3\x20vReflectivityInfos;\x0auniform\x20vec2\x20vMicroSurfaceSamplerInfos;\x0auniform\x20vec2\x20vReflectionInfos;\x0auniform\x20vec3\x20vReflectionPosition;\x0auniform\x20vec3\x20vReflectionSize;\x0auniform\x20vec3\x20vBumpInfos;\x0auniform\x20mat4\x20albedoMatrix;\x0auniform\x20mat4\x20ambientMatrix;\x0auniform\x20mat4\x20opacityMatrix;\x0auniform\x20mat4\x20emissiveMatrix;\x0auniform\x20mat4\x20lightmapMatrix;\x0auniform\x20mat4\x20reflectivityMatrix;\x0auniform\x20mat4\x20microSurfaceSamplerMatrix;\x0auniform\x20mat4\x20bumpMatrix;\x0auniform\x20vec2\x20vTangentSpaceParams;\x0auniform\x20mat4\x20reflectionMatrix;\x0auniform\x20vec3\x20vReflectionColor;\x0auniform\x20vec4\x20vAlbedoColor;\x0auniform\x20vec4\x20vLightingIntensity;\x0auniform\x20vec3\x20vReflectionMicrosurfaceInfos;\x0auniform\x20float\x20pointSize;\x0auniform\x20vec4\x20vReflectivityColor;\x0auniform\x20vec3\x20vEmissiveColor;\x0auniform\x20float\x20visibility;\x0auniform\x20vec2\x20vClearCoatParams;\x0auniform\x20vec4\x20vClearCoatRefractionParams;\x0auniform\x20vec2\x20vClearCoatInfos;\x0auniform\x20mat4\x20clearCoatMatrix;\x0auniform\x20vec2\x20vClearCoatBumpInfos;\x0auniform\x20vec2\x20vClearCoatTangentSpaceParams;\x0auniform\x20mat4\x20clearCoatBumpMatrix;\x0auniform\x20vec4\x20vClearCoatTintParams;\x0auniform\x20float\x20clearCoatColorAtDistance;\x0auniform\x20vec2\x20vClearCoatTintInfos;\x0auniform\x20mat4\x20clearCoatTintMatrix;\x0auniform\x20vec3\x20vAnisotropy;\x0auniform\x20vec2\x20vAnisotropyInfos;\x0auniform\x20mat4\x20anisotropyMatrix;\x0auniform\x20vec4\x20vSheenColor;\x0auniform\x20vec2\x20vSheenInfos;\x0auniform\x20mat4\x20sheenMatrix;\x0auniform\x20vec3\x20vRefractionMicrosurfaceInfos;\x0auniform\x20vec4\x20vRefractionInfos;\x0auniform\x20mat4\x20refractionMatrix;\x0auniform\x20vec2\x20vThicknessInfos;\x0auniform\x20mat4\x20thicknessMatrix;\x0auniform\x20vec2\x20vThicknessParam;\x0auniform\x20vec3\x20vDiffusionDistance;\x0auniform\x20vec4\x20vTintColor;\x0auniform\x20vec3\x20vSubSurfaceIntensity;\x0a};\x0auniform\x20Scene\x20{\x0amat4\x20viewProjection;\x0a#ifdef\x20MULTIVIEW\x0amat4\x20viewProjectionR;\x0a#endif\x0amat4\x20view;\x0a};'; _0x3e9e56['a']['IncludesShadersStore']['pbrUboDeclaration'] = _0x315bc5; var _0x33e164 = 'uniform\x20vec4\x20vEyePosition;\x0auniform\x20vec3\x20vAmbientColor;\x0auniform\x20vec4\x20vCameraInfos;\x0a\x0avarying\x20vec3\x20vPositionW;\x0a#if\x20DEBUGMODE>0\x0auniform\x20vec2\x20vDebugMode;\x0avarying\x20vec4\x20vClipSpacePosition;\x0a#endif\x0a#ifdef\x20MAINUV1\x0avarying\x20vec2\x20vMainUV1;\x0a#endif\x0a#ifdef\x20MAINUV2\x0avarying\x20vec2\x20vMainUV2;\x0a#endif\x0a#ifdef\x20NORMAL\x0avarying\x20vec3\x20vNormalW;\x0a#if\x20defined(USESPHERICALFROMREFLECTIONMAP)\x20&&\x20defined(USESPHERICALINVERTEX)\x0avarying\x20vec3\x20vEnvironmentIrradiance;\x0a#endif\x0a#endif\x0a#ifdef\x20VERTEXCOLOR\x0avarying\x20vec4\x20vColor;\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['pbrFragmentExtraDeclaration'] = _0x33e164; var _0x17495a = '#ifdef\x20ALBEDO\x0a#if\x20ALBEDODIRECTUV\x20==\x201\x0a#define\x20vAlbedoUV\x20vMainUV1\x0a#elif\x20ALBEDODIRECTUV\x20==\x202\x0a#define\x20vAlbedoUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vAlbedoUV;\x0a#endif\x0auniform\x20sampler2D\x20albedoSampler;\x0a#endif\x0a#ifdef\x20AMBIENT\x0a#if\x20AMBIENTDIRECTUV\x20==\x201\x0a#define\x20vAmbientUV\x20vMainUV1\x0a#elif\x20AMBIENTDIRECTUV\x20==\x202\x0a#define\x20vAmbientUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vAmbientUV;\x0a#endif\x0auniform\x20sampler2D\x20ambientSampler;\x0a#endif\x0a#ifdef\x20OPACITY\x0a#if\x20OPACITYDIRECTUV\x20==\x201\x0a#define\x20vOpacityUV\x20vMainUV1\x0a#elif\x20OPACITYDIRECTUV\x20==\x202\x0a#define\x20vOpacityUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vOpacityUV;\x0a#endif\x0auniform\x20sampler2D\x20opacitySampler;\x0a#endif\x0a#ifdef\x20EMISSIVE\x0a#if\x20EMISSIVEDIRECTUV\x20==\x201\x0a#define\x20vEmissiveUV\x20vMainUV1\x0a#elif\x20EMISSIVEDIRECTUV\x20==\x202\x0a#define\x20vEmissiveUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vEmissiveUV;\x0a#endif\x0auniform\x20sampler2D\x20emissiveSampler;\x0a#endif\x0a#ifdef\x20LIGHTMAP\x0a#if\x20LIGHTMAPDIRECTUV\x20==\x201\x0a#define\x20vLightmapUV\x20vMainUV1\x0a#elif\x20LIGHTMAPDIRECTUV\x20==\x202\x0a#define\x20vLightmapUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vLightmapUV;\x0a#endif\x0auniform\x20sampler2D\x20lightmapSampler;\x0a#endif\x0a#ifdef\x20REFLECTIVITY\x0a#if\x20REFLECTIVITYDIRECTUV\x20==\x201\x0a#define\x20vReflectivityUV\x20vMainUV1\x0a#elif\x20REFLECTIVITYDIRECTUV\x20==\x202\x0a#define\x20vReflectivityUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vReflectivityUV;\x0a#endif\x0auniform\x20sampler2D\x20reflectivitySampler;\x0a#endif\x0a#ifdef\x20MICROSURFACEMAP\x0a#if\x20MICROSURFACEMAPDIRECTUV\x20==\x201\x0a#define\x20vMicroSurfaceSamplerUV\x20vMainUV1\x0a#elif\x20MICROSURFACEMAPDIRECTUV\x20==\x202\x0a#define\x20vMicroSurfaceSamplerUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vMicroSurfaceSamplerUV;\x0a#endif\x0auniform\x20sampler2D\x20microSurfaceSampler;\x0a#endif\x0a#ifdef\x20CLEARCOAT\x0a#ifdef\x20CLEARCOAT_TEXTURE\x0a#if\x20CLEARCOAT_TEXTUREDIRECTUV\x20==\x201\x0a#define\x20vClearCoatUV\x20vMainUV1\x0a#elif\x20CLEARCOAT_TEXTUREDIRECTUV\x20==\x202\x0a#define\x20vClearCoatUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vClearCoatUV;\x0a#endif\x0auniform\x20sampler2D\x20clearCoatSampler;\x0a#endif\x0a#ifdef\x20CLEARCOAT_BUMP\x0a#if\x20CLEARCOAT_BUMPDIRECTUV\x20==\x201\x0a#define\x20vClearCoatBumpUV\x20vMainUV1\x0a#elif\x20CLEARCOAT_BUMPDIRECTUV\x20==\x202\x0a#define\x20vClearCoatBumpUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vClearCoatBumpUV;\x0a#endif\x0auniform\x20sampler2D\x20clearCoatBumpSampler;\x0a#endif\x0a#ifdef\x20CLEARCOAT_TINT_TEXTURE\x0a#if\x20CLEARCOAT_TINT_TEXTUREDIRECTUV\x20==\x201\x0a#define\x20vClearCoatTintUV\x20vMainUV1\x0a#elif\x20CLEARCOAT_TINT_TEXTUREDIRECTUV\x20==\x202\x0a#define\x20vClearCoatTintUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vClearCoatTintUV;\x0a#endif\x0auniform\x20sampler2D\x20clearCoatTintSampler;\x0a#endif\x0a#endif\x0a#ifdef\x20SHEEN\x0a#ifdef\x20SHEEN_TEXTURE\x0a#if\x20SHEEN_TEXTUREDIRECTUV\x20==\x201\x0a#define\x20vSheenUV\x20vMainUV1\x0a#elif\x20SHEEN_TEXTUREDIRECTUV\x20==\x202\x0a#define\x20vSheenUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vSheenUV;\x0a#endif\x0auniform\x20sampler2D\x20sheenSampler;\x0a#endif\x0a#endif\x0a#ifdef\x20ANISOTROPIC\x0a#ifdef\x20ANISOTROPIC_TEXTURE\x0a#if\x20ANISOTROPIC_TEXTUREDIRECTUV\x20==\x201\x0a#define\x20vAnisotropyUV\x20vMainUV1\x0a#elif\x20ANISOTROPIC_TEXTUREDIRECTUV\x20==\x202\x0a#define\x20vAnisotropyUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vAnisotropyUV;\x0a#endif\x0auniform\x20sampler2D\x20anisotropySampler;\x0a#endif\x0a#endif\x0a\x0a#ifdef\x20REFLECTION\x0a#ifdef\x20REFLECTIONMAP_3D\x0a#define\x20sampleReflection(s,c)\x20textureCube(s,c)\x0auniform\x20samplerCube\x20reflectionSampler;\x0a#ifdef\x20LODBASEDMICROSFURACE\x0a#define\x20sampleReflectionLod(s,c,l)\x20textureCubeLodEXT(s,c,l)\x0a#else\x0auniform\x20samplerCube\x20reflectionSamplerLow;\x0auniform\x20samplerCube\x20reflectionSamplerHigh;\x0a#endif\x0a#else\x0a#define\x20sampleReflection(s,c)\x20texture2D(s,c)\x0auniform\x20sampler2D\x20reflectionSampler;\x0a#ifdef\x20LODBASEDMICROSFURACE\x0a#define\x20sampleReflectionLod(s,c,l)\x20texture2DLodEXT(s,c,l)\x0a#else\x0auniform\x20samplerCube\x20reflectionSamplerLow;\x0auniform\x20samplerCube\x20reflectionSamplerHigh;\x0a#endif\x0a#endif\x0a#ifdef\x20REFLECTIONMAP_SKYBOX\x0avarying\x20vec3\x20vPositionUVW;\x0a#else\x0a#if\x20defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED)\x20||\x20defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\x0avarying\x20vec3\x20vDirectionW;\x0a#endif\x0a#endif\x0a#endif\x0a#ifdef\x20ENVIRONMENTBRDF\x0auniform\x20sampler2D\x20environmentBrdfSampler;\x0a#endif\x0a\x0a#ifdef\x20SUBSURFACE\x0a#ifdef\x20SS_REFRACTION\x0a#ifdef\x20SS_REFRACTIONMAP_3D\x0a#define\x20sampleRefraction(s,c)\x20textureCube(s,c)\x0auniform\x20samplerCube\x20refractionSampler;\x0a#ifdef\x20LODBASEDMICROSFURACE\x0a#define\x20sampleRefractionLod(s,c,l)\x20textureCubeLodEXT(s,c,l)\x0a#else\x0auniform\x20samplerCube\x20refractionSamplerLow;\x0auniform\x20samplerCube\x20refractionSamplerHigh;\x0a#endif\x0a#else\x0a#define\x20sampleRefraction(s,c)\x20texture2D(s,c)\x0auniform\x20sampler2D\x20refractionSampler;\x0a#ifdef\x20LODBASEDMICROSFURACE\x0a#define\x20sampleRefractionLod(s,c,l)\x20texture2DLodEXT(s,c,l)\x0a#else\x0auniform\x20samplerCube\x20refractionSamplerLow;\x0auniform\x20samplerCube\x20refractionSamplerHigh;\x0a#endif\x0a#endif\x0a#endif\x0a#ifdef\x20SS_THICKNESSANDMASK_TEXTURE\x0a#if\x20SS_THICKNESSANDMASK_TEXTUREDIRECTUV\x20==\x201\x0a#define\x20vThicknessUV\x20vMainUV1\x0a#elif\x20SS_THICKNESSANDMASK_TEXTUREDIRECTUV\x20==\x202\x0a#define\x20vThicknessUV\x20vMainUV2\x0a#else\x0avarying\x20vec2\x20vThicknessUV;\x0a#endif\x0auniform\x20sampler2D\x20thicknessSampler;\x0a#endif\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['pbrFragmentSamplersDeclaration'] = _0x17495a; _0x59bd00(0x58); var _0x15f11f = '\x0a#define\x20RECIPROCAL_PI2\x200.15915494\x0a#define\x20RECIPROCAL_PI\x200.31830988618\x0a\x0a#define\x20MINIMUMVARIANCE\x200.0005\x0afloat\x20convertRoughnessToAverageSlope(float\x20roughness)\x0a{\x0a\x0areturn\x20square(roughness)+MINIMUMVARIANCE;\x0a}\x0afloat\x20fresnelGrazingReflectance(float\x20reflectance0)\x20{\x0a\x0a\x0afloat\x20reflectance90=saturate(reflectance0*25.0);\x0areturn\x20reflectance90;\x0a}\x0avec2\x20getAARoughnessFactors(vec3\x20normalVector)\x20{\x0a#ifdef\x20SPECULARAA\x0avec3\x20nDfdx=dFdx(normalVector.xyz);\x0avec3\x20nDfdy=dFdy(normalVector.xyz);\x0afloat\x20slopeSquare=max(dot(nDfdx,nDfdx),dot(nDfdy,nDfdy));\x0a\x0afloat\x20geometricRoughnessFactor=pow(saturate(slopeSquare),0.333);\x0a\x0afloat\x20geometricAlphaGFactor=sqrt(slopeSquare);\x0a\x0ageometricAlphaGFactor*=0.75;\x0areturn\x20vec2(geometricRoughnessFactor,geometricAlphaGFactor);\x0a#else\x0areturn\x20vec2(0.);\x0a#endif\x0a}\x0a#ifdef\x20ANISOTROPIC\x0a\x0a\x0avec2\x20getAnisotropicRoughness(float\x20alphaG,float\x20anisotropy)\x20{\x0afloat\x20alphaT=max(alphaG*(1.0+anisotropy),MINIMUMVARIANCE);\x0afloat\x20alphaB=max(alphaG*(1.0-anisotropy),MINIMUMVARIANCE);\x0areturn\x20vec2(alphaT,alphaB);\x0a}\x0a\x0a\x0avec3\x20getAnisotropicBentNormals(const\x20vec3\x20T,const\x20vec3\x20B,const\x20vec3\x20N,const\x20vec3\x20V,float\x20anisotropy)\x20{\x0avec3\x20anisotropicFrameDirection=anisotropy>=0.0\x20?\x20B\x20:\x20T;\x0avec3\x20anisotropicFrameTangent=cross(normalize(anisotropicFrameDirection),V);\x0avec3\x20anisotropicFrameNormal=cross(anisotropicFrameTangent,anisotropicFrameDirection);\x0avec3\x20anisotropicNormal=normalize(mix(N,anisotropicFrameNormal,abs(anisotropy)));\x0areturn\x20anisotropicNormal;\x0a\x0a}\x0a#endif\x0a#if\x20defined(CLEARCOAT)\x20||\x20defined(SS_REFRACTION)\x0a\x0a\x0a\x0avec3\x20cocaLambert(vec3\x20alpha,float\x20distance)\x20{\x0areturn\x20exp(-alpha*distance);\x0a}\x0a\x0avec3\x20cocaLambert(float\x20NdotVRefract,float\x20NdotLRefract,vec3\x20alpha,float\x20thickness)\x20{\x0areturn\x20cocaLambert(alpha,(thickness*((NdotLRefract+NdotVRefract)/(NdotLRefract*NdotVRefract))));\x0a}\x0a\x0avec3\x20computeColorAtDistanceInMedia(vec3\x20color,float\x20distance)\x20{\x0areturn\x20-log(color)/distance;\x0a}\x0avec3\x20computeClearCoatAbsorption(float\x20NdotVRefract,float\x20NdotLRefract,vec3\x20clearCoatColor,float\x20clearCoatThickness,float\x20clearCoatIntensity)\x20{\x0avec3\x20clearCoatAbsorption=mix(vec3(1.0),\x0acocaLambert(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness),\x0aclearCoatIntensity);\x0areturn\x20clearCoatAbsorption;\x0a}\x0a#endif\x0a\x0a\x0a\x0a\x0a#ifdef\x20MICROSURFACEAUTOMATIC\x0afloat\x20computeDefaultMicroSurface(float\x20microSurface,vec3\x20reflectivityColor)\x0a{\x0aconst\x20float\x20kReflectivityNoAlphaWorkflow_SmoothnessMax=0.95;\x0afloat\x20reflectivityLuminance=getLuminance(reflectivityColor);\x0afloat\x20reflectivityLuma=sqrt(reflectivityLuminance);\x0amicroSurface=reflectivityLuma*kReflectivityNoAlphaWorkflow_SmoothnessMax;\x0areturn\x20microSurface;\x0a}\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['pbrHelperFunctions'] = _0x15f11f; var _0x34b39f = '#ifdef\x20USESPHERICALFROMREFLECTIONMAP\x0a#ifdef\x20SPHERICAL_HARMONICS\x0auniform\x20vec3\x20vSphericalL00;\x0auniform\x20vec3\x20vSphericalL1_1;\x0auniform\x20vec3\x20vSphericalL10;\x0auniform\x20vec3\x20vSphericalL11;\x0auniform\x20vec3\x20vSphericalL2_2;\x0auniform\x20vec3\x20vSphericalL2_1;\x0auniform\x20vec3\x20vSphericalL20;\x0auniform\x20vec3\x20vSphericalL21;\x0auniform\x20vec3\x20vSphericalL22;\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0avec3\x20computeEnvironmentIrradiance(vec3\x20normal)\x20{\x0areturn\x20vSphericalL00\x0a+vSphericalL1_1*(normal.y)\x0a+vSphericalL10*(normal.z)\x0a+vSphericalL11*(normal.x)\x0a+vSphericalL2_2*(normal.y*normal.x)\x0a+vSphericalL2_1*(normal.y*normal.z)\x0a+vSphericalL20*((3.0*normal.z*normal.z)-1.0)\x0a+vSphericalL21*(normal.z*normal.x)\x0a+vSphericalL22*(normal.x*normal.x-(normal.y*normal.y));\x0a}\x0a#else\x0auniform\x20vec3\x20vSphericalX;\x0auniform\x20vec3\x20vSphericalY;\x0auniform\x20vec3\x20vSphericalZ;\x0auniform\x20vec3\x20vSphericalXX_ZZ;\x0auniform\x20vec3\x20vSphericalYY_ZZ;\x0auniform\x20vec3\x20vSphericalZZ;\x0auniform\x20vec3\x20vSphericalXY;\x0auniform\x20vec3\x20vSphericalYZ;\x0auniform\x20vec3\x20vSphericalZX;\x0a\x0avec3\x20computeEnvironmentIrradiance(vec3\x20normal)\x20{\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0afloat\x20Nx=normal.x;\x0afloat\x20Ny=normal.y;\x0afloat\x20Nz=normal.z;\x0avec3\x20C1=vSphericalZZ.rgb;\x0avec3\x20Cx=vSphericalX.rgb;\x0avec3\x20Cy=vSphericalY.rgb;\x0avec3\x20Cz=vSphericalZ.rgb;\x0avec3\x20Cxx_zz=vSphericalXX_ZZ.rgb;\x0avec3\x20Cyy_zz=vSphericalYY_ZZ.rgb;\x0avec3\x20Cxy=vSphericalXY.rgb;\x0avec3\x20Cyz=vSphericalYZ.rgb;\x0avec3\x20Czx=vSphericalZX.rgb;\x0avec3\x20a1=Cyy_zz*Ny+Cy;\x0avec3\x20a2=Cyz*Nz+a1;\x0avec3\x20b1=Czx*Nz+Cx;\x0avec3\x20b2=Cxy*Ny+b1;\x0avec3\x20b3=Cxx_zz*Nx+b2;\x0avec3\x20t1=Cz*Nz+C1;\x0avec3\x20t2=a2*Ny+t1;\x0avec3\x20t3=b3*Nx+t2;\x0areturn\x20t3;\x0a}\x0a#endif\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['harmonicsFunctions'] = _0x34b39f; var _0x1608df = '\x0astruct\x20preLightingInfo\x0a{\x0a\x0avec3\x20lightOffset;\x0afloat\x20lightDistanceSquared;\x0afloat\x20lightDistance;\x0a\x0afloat\x20attenuation;\x0a\x0avec3\x20L;\x0avec3\x20H;\x0afloat\x20NdotV;\x0afloat\x20NdotLUnclamped;\x0afloat\x20NdotL;\x0afloat\x20VdotH;\x0afloat\x20roughness;\x0a};\x0apreLightingInfo\x20computePointAndSpotPreLightingInfo(vec4\x20lightData,vec3\x20V,vec3\x20N)\x20{\x0apreLightingInfo\x20result;\x0a\x0aresult.lightOffset=lightData.xyz-vPositionW;\x0aresult.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);\x0a\x0aresult.lightDistance=sqrt(result.lightDistanceSquared);\x0a\x0aresult.L=normalize(result.lightOffset);\x0aresult.H=normalize(V+result.L);\x0aresult.VdotH=saturate(dot(V,result.H));\x0aresult.NdotLUnclamped=dot(N,result.L);\x0aresult.NdotL=saturateEps(result.NdotLUnclamped);\x0areturn\x20result;\x0a}\x0apreLightingInfo\x20computeDirectionalPreLightingInfo(vec4\x20lightData,vec3\x20V,vec3\x20N)\x20{\x0apreLightingInfo\x20result;\x0a\x0aresult.lightDistance=length(-lightData.xyz);\x0a\x0aresult.L=normalize(-lightData.xyz);\x0aresult.H=normalize(V+result.L);\x0aresult.VdotH=saturate(dot(V,result.H));\x0aresult.NdotLUnclamped=dot(N,result.L);\x0aresult.NdotL=saturateEps(result.NdotLUnclamped);\x0areturn\x20result;\x0a}\x0apreLightingInfo\x20computeHemisphericPreLightingInfo(vec4\x20lightData,vec3\x20V,vec3\x20N)\x20{\x0apreLightingInfo\x20result;\x0a\x0a\x0aresult.NdotL=dot(N,lightData.xyz)*0.5+0.5;\x0aresult.NdotL=saturateEps(result.NdotL);\x0aresult.NdotLUnclamped=result.NdotL;\x0a#ifdef\x20SPECULARTERM\x0aresult.L=normalize(lightData.xyz);\x0aresult.H=normalize(V+result.L);\x0aresult.VdotH=saturate(dot(V,result.H));\x0a#endif\x0areturn\x20result;\x0a}'; _0x3e9e56['a']['IncludesShadersStore']['pbrDirectLightingSetupFunctions'] = _0x1608df; var _0x10c819 = 'float\x20computeDistanceLightFalloff_Standard(vec3\x20lightOffset,float\x20range)\x0a{\x0areturn\x20max(0.,1.0-length(lightOffset)/range);\x0a}\x0afloat\x20computeDistanceLightFalloff_Physical(float\x20lightDistanceSquared)\x0a{\x0areturn\x201.0/maxEps(lightDistanceSquared);\x0a}\x0afloat\x20computeDistanceLightFalloff_GLTF(float\x20lightDistanceSquared,float\x20inverseSquaredRange)\x0a{\x0afloat\x20lightDistanceFalloff=1.0/maxEps(lightDistanceSquared);\x0afloat\x20factor=lightDistanceSquared*inverseSquaredRange;\x0afloat\x20attenuation=saturate(1.0-factor*factor);\x0aattenuation*=attenuation;\x0a\x0alightDistanceFalloff*=attenuation;\x0areturn\x20lightDistanceFalloff;\x0a}\x0afloat\x20computeDistanceLightFalloff(vec3\x20lightOffset,float\x20lightDistanceSquared,float\x20range,float\x20inverseSquaredRange)\x0a{\x0a#ifdef\x20USEPHYSICALLIGHTFALLOFF\x0areturn\x20computeDistanceLightFalloff_Physical(lightDistanceSquared);\x0a#elif\x20defined(USEGLTFLIGHTFALLOFF)\x0areturn\x20computeDistanceLightFalloff_GLTF(lightDistanceSquared,inverseSquaredRange);\x0a#else\x0areturn\x20computeDistanceLightFalloff_Standard(lightOffset,range);\x0a#endif\x0a}\x0afloat\x20computeDirectionalLightFalloff_Standard(vec3\x20lightDirection,vec3\x20directionToLightCenterW,float\x20cosHalfAngle,float\x20exponent)\x0a{\x0afloat\x20falloff=0.0;\x0afloat\x20cosAngle=maxEps(dot(-lightDirection,directionToLightCenterW));\x0aif\x20(cosAngle>=cosHalfAngle)\x0a{\x0afalloff=max(0.,pow(cosAngle,exponent));\x0a}\x0areturn\x20falloff;\x0a}\x0afloat\x20computeDirectionalLightFalloff_Physical(vec3\x20lightDirection,vec3\x20directionToLightCenterW,float\x20cosHalfAngle)\x0a{\x0aconst\x20float\x20kMinusLog2ConeAngleIntensityRatio=6.64385618977;\x0a\x0a\x0a\x0a\x0a\x0afloat\x20concentrationKappa=kMinusLog2ConeAngleIntensityRatio/(1.0-cosHalfAngle);\x0a\x0a\x0avec4\x20lightDirectionSpreadSG=vec4(-lightDirection*concentrationKappa,-concentrationKappa);\x0afloat\x20falloff=exp2(dot(vec4(directionToLightCenterW,1.0),lightDirectionSpreadSG));\x0areturn\x20falloff;\x0a}\x0afloat\x20computeDirectionalLightFalloff_GLTF(vec3\x20lightDirection,vec3\x20directionToLightCenterW,float\x20lightAngleScale,float\x20lightAngleOffset)\x0a{\x0a\x0a\x0a\x0afloat\x20cd=dot(-lightDirection,directionToLightCenterW);\x0afloat\x20falloff=saturate(cd*lightAngleScale+lightAngleOffset);\x0a\x0afalloff*=falloff;\x0areturn\x20falloff;\x0a}\x0afloat\x20computeDirectionalLightFalloff(vec3\x20lightDirection,vec3\x20directionToLightCenterW,float\x20cosHalfAngle,float\x20exponent,float\x20lightAngleScale,float\x20lightAngleOffset)\x0a{\x0a#ifdef\x20USEPHYSICALLIGHTFALLOFF\x0areturn\x20computeDirectionalLightFalloff_Physical(lightDirection,directionToLightCenterW,cosHalfAngle);\x0a#elif\x20defined(USEGLTFLIGHTFALLOFF)\x0areturn\x20computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenterW,lightAngleScale,lightAngleOffset);\x0a#else\x0areturn\x20computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent);\x0a#endif\x0a}'; _0x3e9e56['a']['IncludesShadersStore']['pbrDirectLightingFalloffFunctions'] = _0x10c819; var _0x47ca06 = '\x0a#define\x20FRESNEL_MAXIMUM_ON_ROUGH\x200.25\x0a\x0a\x0a\x0a\x0a#ifdef\x20MS_BRDF_ENERGY_CONSERVATION\x0a\x0a\x0avec3\x20getEnergyConservationFactor(const\x20vec3\x20specularEnvironmentR0,const\x20vec3\x20environmentBrdf)\x20{\x0areturn\x201.0+specularEnvironmentR0*(1.0/environmentBrdf.y-1.0);\x0a}\x0a#endif\x0a#ifdef\x20ENVIRONMENTBRDF\x0avec3\x20getBRDFLookup(float\x20NdotV,float\x20perceptualRoughness,sampler2D\x20brdfSampler)\x20{\x0a\x0avec2\x20UV=vec2(NdotV,perceptualRoughness);\x0a\x0avec4\x20brdfLookup=texture2D(brdfSampler,UV);\x0a#ifdef\x20ENVIRONMENTBRDF_RGBD\x0abrdfLookup.rgb=fromRGBD(brdfLookup.rgba);\x0a#endif\x0areturn\x20brdfLookup.rgb;\x0a}\x0avec3\x20getReflectanceFromBRDFLookup(const\x20vec3\x20specularEnvironmentR0,const\x20vec3\x20environmentBrdf)\x20{\x0a#ifdef\x20BRDF_V_HEIGHT_CORRELATED\x0avec3\x20reflectance=mix(environmentBrdf.xxx,environmentBrdf.yyy,specularEnvironmentR0);\x0a#else\x0avec3\x20reflectance=specularEnvironmentR0*environmentBrdf.x+environmentBrdf.y;\x0a#endif\x0areturn\x20reflectance;\x0a}\x0a#endif\x0a#if\x20!defined(ENVIRONMENTBRDF)\x20||\x20defined(REFLECTIONMAP_SKYBOX)\x20||\x20defined(ALPHAFRESNEL)\x0avec3\x20getReflectanceFromAnalyticalBRDFLookup_Jones(float\x20VdotN,vec3\x20reflectance0,vec3\x20reflectance90,float\x20smoothness)\x0a{\x0a\x0afloat\x20weight=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);\x0areturn\x20reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));\x0a}\x0a#endif\x0a#if\x20defined(SHEEN)\x20&&\x20defined(REFLECTION)\x0a\x0avec3\x20getSheenReflectanceFromBRDFLookup(const\x20vec3\x20reflectance0,const\x20vec3\x20environmentBrdf)\x20{\x0avec3\x20sheenEnvironmentReflectance=reflectance0*environmentBrdf.b;\x0areturn\x20sheenEnvironmentReflectance;\x0a}\x0a#endif\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0avec3\x20fresnelSchlickGGX(float\x20VdotH,vec3\x20reflectance0,vec3\x20reflectance90)\x0a{\x0areturn\x20reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);\x0a}\x0afloat\x20fresnelSchlickGGX(float\x20VdotH,float\x20reflectance0,float\x20reflectance90)\x0a{\x0areturn\x20reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);\x0a}\x0a#ifdef\x20CLEARCOAT\x0a\x0a\x0a\x0a\x0a\x0avec3\x20getR0RemappedForClearCoat(vec3\x20f0)\x20{\x0a#ifdef\x20CLEARCOAT_DEFAULTIOR\x0a#ifdef\x20MOBILE\x0areturn\x20saturate(f0*(f0*0.526868+0.529324)-0.0482256);\x0a#else\x0areturn\x20saturate(f0*(f0*(0.941892-0.263008*f0)+0.346479)-0.0285998);\x0a#endif\x0a#else\x0avec3\x20s=sqrt(f0);\x0avec3\x20t=(vClearCoatRefractionParams.z+vClearCoatRefractionParams.w*s)/(vClearCoatRefractionParams.w+vClearCoatRefractionParams.z*s);\x0areturn\x20t*t;\x0a#endif\x0a}\x0a#endif\x0a\x0a\x0a\x0a\x0a\x0a\x0afloat\x20normalDistributionFunction_TrowbridgeReitzGGX(float\x20NdotH,float\x20alphaG)\x0a{\x0a\x0a\x0a\x0afloat\x20a2=square(alphaG);\x0afloat\x20d=NdotH*NdotH*(a2-1.0)+1.0;\x0areturn\x20a2/(PI*d*d);\x0a}\x0a#ifdef\x20SHEEN\x0a\x0afloat\x20normalDistributionFunction_CharlieSheen(float\x20NdotH,float\x20alphaG)\x0a{\x0afloat\x20invR=1./alphaG;\x0afloat\x20cos2h=NdotH*NdotH;\x0afloat\x20sin2h=1.-cos2h;\x0areturn\x20(2.+invR)*pow(sin2h,invR*.5)/(2.*PI);\x0a}\x0a#endif\x0a#ifdef\x20ANISOTROPIC\x0a\x0a\x0afloat\x20normalDistributionFunction_BurleyGGX_Anisotropic(float\x20NdotH,float\x20TdotH,float\x20BdotH,const\x20vec2\x20alphaTB)\x20{\x0afloat\x20a2=alphaTB.x*alphaTB.y;\x0avec3\x20v=vec3(alphaTB.y*TdotH,alphaTB.x*BdotH,a2*NdotH);\x0afloat\x20v2=dot(v,v);\x0afloat\x20w2=a2/v2;\x0areturn\x20a2*w2*w2*RECIPROCAL_PI;\x0a}\x0a#endif\x0a\x0a\x0a\x0a\x0a#ifdef\x20BRDF_V_HEIGHT_CORRELATED\x0a\x0a\x0a\x0afloat\x20smithVisibility_GGXCorrelated(float\x20NdotL,float\x20NdotV,float\x20alphaG)\x20{\x0a#ifdef\x20MOBILE\x0a\x0afloat\x20GGXV=NdotL*(NdotV*(1.0-alphaG)+alphaG);\x0afloat\x20GGXL=NdotV*(NdotL*(1.0-alphaG)+alphaG);\x0areturn\x200.5/(GGXV+GGXL);\x0a#else\x0afloat\x20a2=alphaG*alphaG;\x0afloat\x20GGXV=NdotL*sqrt(NdotV*(NdotV-a2*NdotV)+a2);\x0afloat\x20GGXL=NdotV*sqrt(NdotL*(NdotL-a2*NdotL)+a2);\x0areturn\x200.5/(GGXV+GGXL);\x0a#endif\x0a}\x0a#else\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0afloat\x20smithVisibilityG1_TrowbridgeReitzGGXFast(float\x20dot,float\x20alphaG)\x0a{\x0a#ifdef\x20MOBILE\x0a\x0areturn\x201.0/(dot+alphaG+(1.0-alphaG)*dot\x20));\x0a#else\x0afloat\x20alphaSquared=alphaG*alphaG;\x0areturn\x201.0/(dot+sqrt(alphaSquared+(1.0-alphaSquared)*dot*dot));\x0a#endif\x0a}\x0afloat\x20smithVisibility_TrowbridgeReitzGGXFast(float\x20NdotL,float\x20NdotV,float\x20alphaG)\x0a{\x0afloat\x20visibility=smithVisibilityG1_TrowbridgeReitzGGXFast(NdotL,alphaG)*smithVisibilityG1_TrowbridgeReitzGGXFast(NdotV,alphaG);\x0a\x0areturn\x20visibility;\x0a}\x0a#endif\x0a#ifdef\x20ANISOTROPIC\x0a\x0a\x0afloat\x20smithVisibility_GGXCorrelated_Anisotropic(float\x20NdotL,float\x20NdotV,float\x20TdotV,float\x20BdotV,float\x20TdotL,float\x20BdotL,const\x20vec2\x20alphaTB)\x20{\x0afloat\x20lambdaV=NdotL*length(vec3(alphaTB.x*TdotV,alphaTB.y*BdotV,NdotV));\x0afloat\x20lambdaL=NdotV*length(vec3(alphaTB.x*TdotL,alphaTB.y*BdotL,NdotL));\x0afloat\x20v=0.5/(lambdaV+lambdaL);\x0areturn\x20v;\x0a}\x0a#endif\x0a#ifdef\x20CLEARCOAT\x0afloat\x20visibility_Kelemen(float\x20VdotH)\x20{\x0a\x0a\x0a\x0areturn\x200.25/(VdotH*VdotH);\x0a}\x0a#endif\x0a#ifdef\x20SHEEN\x0a\x0a\x0a\x0afloat\x20visibility_Ashikhmin(float\x20NdotL,float\x20NdotV)\x0a{\x0areturn\x201./(4.*(NdotL+NdotV-NdotL*NdotV));\x0a}\x0a#endif\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0afloat\x20diffuseBRDF_Burley(float\x20NdotL,float\x20NdotV,float\x20VdotH,float\x20roughness)\x20{\x0a\x0a\x0afloat\x20diffuseFresnelNV=pow5(saturateEps(1.0-NdotL));\x0afloat\x20diffuseFresnelNL=pow5(saturateEps(1.0-NdotV));\x0afloat\x20diffuseFresnel90=0.5+2.0*VdotH*VdotH*roughness;\x0afloat\x20fresnel\x20=\x0a(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL)\x20*\x0a(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);\x0areturn\x20fresnel/PI;\x0a}\x0a#ifdef\x20SS_TRANSLUCENCY\x0a\x0a\x0avec3\x20transmittanceBRDF_Burley(const\x20vec3\x20tintColor,const\x20vec3\x20diffusionDistance,float\x20thickness)\x20{\x0avec3\x20S=1./maxEps(diffusionDistance);\x0avec3\x20temp=exp((-0.333333333*thickness)*S);\x0areturn\x20tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);\x0a}\x0a\x0a\x0afloat\x20computeWrappedDiffuseNdotL(float\x20NdotL,float\x20w)\x20{\x0afloat\x20t=1.0+w;\x0afloat\x20invt2=1.0/square(t);\x0areturn\x20saturate((NdotL+w)*invt2);\x0a}\x0a#endif\x0a'; _0x3e9e56['a']['IncludesShadersStore']['pbrBRDFFunctions'] = _0x47ca06; var _0x3ead30 = '#define\x20CLEARCOATREFLECTANCE90\x201.0\x0a\x0astruct\x20lightingInfo\x0a{\x0avec3\x20diffuse;\x0a#ifdef\x20SPECULARTERM\x0avec3\x20specular;\x0a#endif\x0a#ifdef\x20CLEARCOAT\x0a\x0a\x0avec4\x20clearCoat;\x0a#endif\x0a#ifdef\x20SHEEN\x0avec3\x20sheen;\x0a#endif\x0a};\x0a\x0afloat\x20adjustRoughnessFromLightProperties(float\x20roughness,float\x20lightRadius,float\x20lightDistance)\x20{\x0a#if\x20defined(USEPHYSICALLIGHTFALLOFF)\x20||\x20defined(USEGLTFLIGHTFALLOFF)\x0a\x0afloat\x20lightRoughness=lightRadius/lightDistance;\x0a\x0afloat\x20totalRoughness=saturate(lightRoughness+roughness);\x0areturn\x20totalRoughness;\x0a#else\x0areturn\x20roughness;\x0a#endif\x0a}\x0avec3\x20computeHemisphericDiffuseLighting(preLightingInfo\x20info,vec3\x20lightColor,vec3\x20groundColor)\x20{\x0areturn\x20mix(groundColor,lightColor,info.NdotL);\x0a}\x0avec3\x20computeDiffuseLighting(preLightingInfo\x20info,vec3\x20lightColor)\x20{\x0afloat\x20diffuseTerm=diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness);\x0areturn\x20diffuseTerm*info.attenuation*info.NdotL*lightColor;\x0a}\x0avec3\x20computeProjectionTextureDiffuseLighting(sampler2D\x20projectionLightSampler,mat4\x20textureProjectionMatrix){\x0avec4\x20strq=textureProjectionMatrix*vec4(vPositionW,1.0);\x0astrq/=strq.w;\x0avec3\x20textureColor=texture2D(projectionLightSampler,strq.xy).rgb;\x0areturn\x20toLinearSpace(textureColor);\x0a}\x0a#ifdef\x20SS_TRANSLUCENCY\x0avec3\x20computeDiffuseAndTransmittedLighting(preLightingInfo\x20info,vec3\x20lightColor,vec3\x20transmittance)\x20{\x0afloat\x20NdotL=absEps(info.NdotLUnclamped);\x0a\x0afloat\x20wrapNdotL=computeWrappedDiffuseNdotL(NdotL,0.02);\x0a\x0afloat\x20trAdapt=step(0.,info.NdotLUnclamped);\x0avec3\x20transmittanceNdotL=mix(transmittance*wrapNdotL,vec3(wrapNdotL),trAdapt);\x0afloat\x20diffuseTerm=diffuseBRDF_Burley(NdotL,info.NdotV,info.VdotH,info.roughness);\x0areturn\x20diffuseTerm*transmittanceNdotL*info.attenuation*lightColor;\x0a}\x0a#endif\x0a#ifdef\x20SPECULARTERM\x0avec3\x20computeSpecularLighting(preLightingInfo\x20info,vec3\x20N,vec3\x20reflectance0,vec3\x20reflectance90,float\x20geometricRoughnessFactor,vec3\x20lightColor)\x20{\x0afloat\x20NdotH=saturateEps(dot(N,info.H));\x0afloat\x20roughness=max(info.roughness,geometricRoughnessFactor);\x0afloat\x20alphaG=convertRoughnessToAverageSlope(roughness);\x0avec3\x20fresnel=fresnelSchlickGGX(info.VdotH,reflectance0,reflectance90);\x0afloat\x20distribution=normalDistributionFunction_TrowbridgeReitzGGX(NdotH,alphaG);\x0a#ifdef\x20BRDF_V_HEIGHT_CORRELATED\x0afloat\x20visibility=smithVisibility_GGXCorrelated(info.NdotL,info.NdotV,alphaG);\x0a#else\x0afloat\x20visibility=smithVisibility_TrowbridgeReitzGGXFast(info.NdotL,info.NdotV,alphaG);\x0a#endif\x0avec3\x20specTerm=fresnel*distribution*visibility;\x0areturn\x20specTerm*info.attenuation*info.NdotL*lightColor;\x0a}\x0a#endif\x0a#ifdef\x20ANISOTROPIC\x0avec3\x20computeAnisotropicSpecularLighting(preLightingInfo\x20info,vec3\x20V,vec3\x20N,vec3\x20T,vec3\x20B,float\x20anisotropy,vec3\x20reflectance0,vec3\x20reflectance90,float\x20geometricRoughnessFactor,vec3\x20lightColor)\x20{\x0afloat\x20NdotH=saturateEps(dot(N,info.H));\x0afloat\x20TdotH=dot(T,info.H);\x0afloat\x20BdotH=dot(B,info.H);\x0afloat\x20TdotV=dot(T,V);\x0afloat\x20BdotV=dot(B,V);\x0afloat\x20TdotL=dot(T,info.L);\x0afloat\x20BdotL=dot(B,info.L);\x0afloat\x20alphaG=convertRoughnessToAverageSlope(info.roughness);\x0avec2\x20alphaTB=getAnisotropicRoughness(alphaG,anisotropy);\x0aalphaTB=max(alphaTB,square(geometricRoughnessFactor));\x0avec3\x20fresnel=fresnelSchlickGGX(info.VdotH,reflectance0,reflectance90);\x0afloat\x20distribution=normalDistributionFunction_BurleyGGX_Anisotropic(NdotH,TdotH,BdotH,alphaTB);\x0afloat\x20visibility=smithVisibility_GGXCorrelated_Anisotropic(info.NdotL,info.NdotV,TdotV,BdotV,TdotL,BdotL,alphaTB);\x0avec3\x20specTerm=fresnel*distribution*visibility;\x0areturn\x20specTerm*info.attenuation*info.NdotL*lightColor;\x0a}\x0a#endif\x0a#ifdef\x20CLEARCOAT\x0avec4\x20computeClearCoatLighting(preLightingInfo\x20info,vec3\x20Ncc,float\x20geometricRoughnessFactor,float\x20clearCoatIntensity,vec3\x20lightColor)\x20{\x0afloat\x20NccdotL=saturateEps(dot(Ncc,info.L));\x0afloat\x20NccdotH=saturateEps(dot(Ncc,info.H));\x0afloat\x20clearCoatRoughness=max(info.roughness,geometricRoughnessFactor);\x0afloat\x20alphaG=convertRoughnessToAverageSlope(clearCoatRoughness);\x0afloat\x20fresnel=fresnelSchlickGGX(info.VdotH,vClearCoatRefractionParams.x,CLEARCOATREFLECTANCE90);\x0afresnel*=clearCoatIntensity;\x0afloat\x20distribution=normalDistributionFunction_TrowbridgeReitzGGX(NccdotH,alphaG);\x0afloat\x20visibility=visibility_Kelemen(info.VdotH);\x0afloat\x20clearCoatTerm=fresnel*distribution*visibility;\x0areturn\x20vec4(\x0aclearCoatTerm*info.attenuation*NccdotL*lightColor,\x0a1.0-fresnel\x0a);\x0a}\x0avec3\x20computeClearCoatLightingAbsorption(float\x20NdotVRefract,vec3\x20L,vec3\x20Ncc,vec3\x20clearCoatColor,float\x20clearCoatThickness,float\x20clearCoatIntensity)\x20{\x0avec3\x20LRefract=-refract(L,Ncc,vClearCoatRefractionParams.y);\x0afloat\x20NdotLRefract=saturateEps(dot(Ncc,LRefract));\x0avec3\x20absorption=computeClearCoatAbsorption(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness,clearCoatIntensity);\x0areturn\x20absorption;\x0a}\x0a#endif\x0a#ifdef\x20SHEEN\x0avec3\x20computeSheenLighting(preLightingInfo\x20info,vec3\x20N,vec3\x20reflectance0,vec3\x20reflectance90,float\x20geometricRoughnessFactor,vec3\x20lightColor)\x20{\x0afloat\x20NdotH=saturateEps(dot(N,info.H));\x0afloat\x20roughness=max(info.roughness,geometricRoughnessFactor);\x0afloat\x20alphaG=convertRoughnessToAverageSlope(roughness);\x0a\x0a\x0avec3\x20fresnel=reflectance0;\x0afloat\x20distribution=normalDistributionFunction_CharlieSheen(NdotH,alphaG);\x0afloat\x20visibility=visibility_Ashikhmin(info.NdotL,info.NdotV);\x0avec3\x20sheenTerm=fresnel*distribution*visibility;\x0areturn\x20sheenTerm*info.attenuation*info.NdotL*lightColor;\x0a}\x0a#endif\x0a'; _0x3e9e56['a']['IncludesShadersStore']['pbrDirectLightingFunctions'] = _0x3ead30; var _0x369938 = '#if\x20defined(REFLECTION)\x20||\x20defined(SS_REFRACTION)\x0afloat\x20getLodFromAlphaG(float\x20cubeMapDimensionPixels,float\x20microsurfaceAverageSlope)\x20{\x0afloat\x20microsurfaceAverageSlopeTexels=microsurfaceAverageSlope*cubeMapDimensionPixels;\x0afloat\x20lod=log2(microsurfaceAverageSlopeTexels);\x0areturn\x20lod;\x0a}\x0a#endif\x0a#if\x20defined(ENVIRONMENTBRDF)\x20&&\x20defined(RADIANCEOCCLUSION)\x0afloat\x20environmentRadianceOcclusion(float\x20ambientOcclusion,float\x20NdotVUnclamped)\x20{\x0a\x0a\x0afloat\x20temp=NdotVUnclamped+ambientOcclusion;\x0areturn\x20saturate(square(temp)-1.0+ambientOcclusion);\x0a}\x0a#endif\x0a#if\x20defined(ENVIRONMENTBRDF)\x20&&\x20defined(HORIZONOCCLUSION)\x0afloat\x20environmentHorizonOcclusion(vec3\x20view,vec3\x20normal)\x20{\x0a\x0avec3\x20reflection=reflect(view,normal);\x0afloat\x20temp=saturate(1.0+1.1*dot(reflection,normal));\x0areturn\x20square(temp);\x0a}\x0a#endif\x0a\x0a\x0a\x0a\x0a#if\x20defined(LODINREFLECTIONALPHA)\x20||\x20defined(SS_LODINREFRACTIONALPHA)\x0a\x0a\x0a#define\x20UNPACK_LOD(x)\x20(1.0-x)*255.0\x0afloat\x20getLodFromAlphaG(float\x20cubeMapDimensionPixels,float\x20alphaG,float\x20NdotV)\x20{\x0afloat\x20microsurfaceAverageSlope=alphaG;\x0a\x0a\x0a\x0a\x0a\x0a\x0amicrosurfaceAverageSlope*=sqrt(abs(NdotV));\x0areturn\x20getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);\x0a}\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['pbrIBLFunctions'] = _0x369938; _0x59bd00(0x79), _0x59bd00(0x7a), _0x59bd00(0x7b), _0x59bd00(0x73); var _0x349494 = '#if\x20DEBUGMODE>0\x0aif\x20(vClipSpacePosition.x/vClipSpacePosition.w= 0x1) && _0x305844['prototype']['needAlphaBlendingForMesh']['call'](this, _0x3cb252); } , _0x4f4a57['prototype']['needAlphaTesting'] = function() { return !!this['_forceAlphaTest'] || !this['subSurface']['disableAlphaBlending'] && (null != this['_albedoTexture'] && this['_albedoTexture']['hasAlpha'] && (null == this['_transparencyMode'] || this['_transparencyMode'] === _0x4f4a57['PBRMATERIAL_ALPHATEST'])); } , _0x4f4a57['prototype']['_shouldUseAlphaFromAlbedoTexture'] = function() { return null != this['_albedoTexture'] && this['_albedoTexture']['hasAlpha'] && this['_useAlphaFromAlbedoTexture'] && this['_transparencyMode'] !== _0x4f4a57['PBRMATERIAL_OPAQUE']; } , _0x4f4a57['prototype']['getAlphaTestTexture'] = function() { return this['_albedoTexture']; } , _0x4f4a57['prototype']['isReadyForSubMesh'] = function(_0x534431, _0x3c1446, _0x443e51) { if (_0x3c1446['effect'] && this['isFrozen'] && this['_wasPreviouslyReady']) return !0x0; _0x3c1446['_materialDefines'] || (_0x3c1446['_materialDefines'] = new _0x164c48()); var _0x5b5bbc = _0x3c1446['_materialDefines']; if (!this['checkReadyOnEveryCall'] && _0x3c1446['effect'] && _0x5b5bbc['_renderId'] === this['getScene']()['getRenderId']()) return !0x0; var _0x272af9 = this['getScene']() , _0x2e2d24 = _0x272af9['getEngine'](); if (_0x5b5bbc['_areTexturesDirty'] && _0x272af9['texturesEnabled']) { if (this['_albedoTexture'] && _0x2085b2['a']['DiffuseTextureEnabled'] && !this['_albedoTexture']['isReadyOrNotBlocking']()) return !0x1; if (this['_ambientTexture'] && _0x2085b2['a']['AmbientTextureEnabled'] && !this['_ambientTexture']['isReadyOrNotBlocking']()) return !0x1; if (this['_opacityTexture'] && _0x2085b2['a']['OpacityTextureEnabled'] && !this['_opacityTexture']['isReadyOrNotBlocking']()) return !0x1; var _0x5b9839 = this['_getReflectionTexture'](); if (_0x5b9839 && _0x2085b2['a']['ReflectionTextureEnabled'] && !_0x5b9839['isReadyOrNotBlocking']()) return !0x1; if (this['_lightmapTexture'] && _0x2085b2['a']['LightmapTextureEnabled'] && !this['_lightmapTexture']['isReadyOrNotBlocking']()) return !0x1; if (this['_emissiveTexture'] && _0x2085b2['a']['EmissiveTextureEnabled'] && !this['_emissiveTexture']['isReadyOrNotBlocking']()) return !0x1; if (_0x2085b2['a']['SpecularTextureEnabled']) { if (this['_metallicTexture']) { if (!this['_metallicTexture']['isReadyOrNotBlocking']()) return !0x1; } else if (this['_reflectivityTexture'] && !this['_reflectivityTexture']['isReadyOrNotBlocking']()) return !0x1; if (this['_microSurfaceTexture'] && !this['_microSurfaceTexture']['isReadyOrNotBlocking']()) return !0x1; } if (_0x2e2d24['getCaps']()['standardDerivatives'] && this['_bumpTexture'] && _0x2085b2['a']['BumpTextureEnabled'] && !this['_disableBumpMap'] && !this['_bumpTexture']['isReady']()) return !0x1; if (this['_environmentBRDFTexture'] && _0x2085b2['a']['ReflectionTextureEnabled'] && !this['_environmentBRDFTexture']['isReady']()) return !0x1; } if (!(this['subSurface']['isReadyForSubMesh'](_0x5b5bbc, _0x272af9) && this['clearCoat']['isReadyForSubMesh'](_0x5b5bbc, _0x272af9, _0x2e2d24, this['_disableBumpMap']) && this['sheen']['isReadyForSubMesh'](_0x5b5bbc, _0x272af9) && this['anisotropy']['isReadyForSubMesh'](_0x5b5bbc, _0x272af9))) return !0x1; if (_0x5b5bbc['_areImageProcessingDirty'] && this['_imageProcessingConfiguration'] && !this['_imageProcessingConfiguration']['isReady']()) return !0x1; _0x2e2d24['getCaps']()['standardDerivatives'] || _0x534431['isVerticesDataPresent'](_0x4209f7['b']['NormalKind']) || (_0x534431['createNormals'](!0x0), _0x3f98cb['a']['Warn']('PBRMaterial:\x20Normals\x20have\x20been\x20created\x20for\x20the\x20mesh:\x20' + _0x534431['name'])); var _0x20d5eb = _0x3c1446['effect'] , _0xf4e499 = this['_prepareEffect'](_0x534431, _0x5b5bbc, this['onCompiled'], this['onError'], _0x443e51); return _0xf4e499 && (this['allowShaderHotSwapping'] && _0x20d5eb && !_0xf4e499['isReady']() ? (_0xf4e499 = _0x20d5eb, _0x5b5bbc['markAsUnprocessed']()) : (_0x272af9['resetCachedMaterial'](), _0x3c1446['setEffect'](_0xf4e499, _0x5b5bbc), this['buildUniformLayout']())), !(!_0x3c1446['effect'] || !_0x3c1446['effect']['isReady']()) && (_0x5b5bbc['_renderId'] = _0x272af9['getRenderId'](), this['_wasPreviouslyReady'] = !0x0, !0x0); } , _0x4f4a57['prototype']['isMetallicWorkflow'] = function() { return !(null == this['_metallic'] && null == this['_roughness'] && !this['_metallicTexture']); } , _0x4f4a57['prototype']['_prepareEffect'] = function(_0xf3ee97, _0x1d5133, _0x47745b, _0x2bcb9a, _0x359907, _0x372fb9) { if (void 0x0 === _0x47745b && (_0x47745b = null), void 0x0 === _0x2bcb9a && (_0x2bcb9a = null), void 0x0 === _0x359907 && (_0x359907 = null), void 0x0 === _0x372fb9 && (_0x372fb9 = null), this['_prepareDefines'](_0xf3ee97, _0x1d5133, _0x359907, _0x372fb9), !_0x1d5133['isDirty']) return null; _0x1d5133['markAsProcessed'](); var _0x1009b5 = this['getScene']()['getEngine']() , _0x2f7614 = new _0x3e9e56['c']() , _0x5c819e = 0x0; _0x1d5133['USESPHERICALINVERTEX'] && _0x2f7614['addFallback'](_0x5c819e++, 'USESPHERICALINVERTEX'), _0x1d5133['FOG'] && _0x2f7614['addFallback'](_0x5c819e, 'FOG'), _0x1d5133['SPECULARAA'] && _0x2f7614['addFallback'](_0x5c819e, 'SPECULARAA'), _0x1d5133['POINTSIZE'] && _0x2f7614['addFallback'](_0x5c819e, 'POINTSIZE'), _0x1d5133['LOGARITHMICDEPTH'] && _0x2f7614['addFallback'](_0x5c819e, 'LOGARITHMICDEPTH'), _0x1d5133['PARALLAX'] && _0x2f7614['addFallback'](_0x5c819e, 'PARALLAX'), _0x1d5133['PARALLAXOCCLUSION'] && _0x2f7614['addFallback'](_0x5c819e++, 'PARALLAXOCCLUSION'), _0x5c819e = _0x458d88['AddFallbacks'](_0x1d5133, _0x2f7614, _0x5c819e), _0x5c819e = _0x458d88['AddFallbacks'](_0x1d5133, _0x2f7614, _0x5c819e), _0x5c819e = _0x4cb0e6['AddFallbacks'](_0x1d5133, _0x2f7614, _0x5c819e), _0x5c819e = _0x39cb46['AddFallbacks'](_0x1d5133, _0x2f7614, _0x5c819e), _0x1d5133['ENVIRONMENTBRDF'] && _0x2f7614['addFallback'](_0x5c819e++, 'ENVIRONMENTBRDF'), _0x1d5133['TANGENT'] && _0x2f7614['addFallback'](_0x5c819e++, 'TANGENT'), _0x1d5133['BUMP'] && _0x2f7614['addFallback'](_0x5c819e++, 'BUMP'), _0x5c819e = _0x2efc06['a']['HandleFallbacksForShadows'](_0x1d5133, _0x2f7614, this['_maxSimultaneousLights'], _0x5c819e++), _0x1d5133['SPECULARTERM'] && _0x2f7614['addFallback'](_0x5c819e++, 'SPECULARTERM'), _0x1d5133['USESPHERICALFROMREFLECTIONMAP'] && _0x2f7614['addFallback'](_0x5c819e++, 'USESPHERICALFROMREFLECTIONMAP'), _0x1d5133['LIGHTMAP'] && _0x2f7614['addFallback'](_0x5c819e++, 'LIGHTMAP'), _0x1d5133['NORMAL'] && _0x2f7614['addFallback'](_0x5c819e++, 'NORMAL'), _0x1d5133['AMBIENT'] && _0x2f7614['addFallback'](_0x5c819e++, 'AMBIENT'), _0x1d5133['EMISSIVE'] && _0x2f7614['addFallback'](_0x5c819e++, 'EMISSIVE'), _0x1d5133['VERTEXCOLOR'] && _0x2f7614['addFallback'](_0x5c819e++, 'VERTEXCOLOR'), _0x1d5133['NUM_BONE_INFLUENCERS'] > 0x0 && _0x2f7614['addCPUSkinningFallback'](_0x5c819e++, _0xf3ee97), _0x1d5133['MORPHTARGETS'] && _0x2f7614['addFallback'](_0x5c819e++, 'MORPHTARGETS'), _0x1d5133['MULTIVIEW'] && _0x2f7614['addFallback'](0x0, 'MULTIVIEW'); var _0x3cc61f = [_0x4209f7['b']['PositionKind']]; _0x1d5133['NORMAL'] && _0x3cc61f['push'](_0x4209f7['b']['NormalKind']), _0x1d5133['TANGENT'] && _0x3cc61f['push'](_0x4209f7['b']['TangentKind']), _0x1d5133['UV1'] && _0x3cc61f['push'](_0x4209f7['b']['UVKind']), _0x1d5133['UV2'] && _0x3cc61f['push'](_0x4209f7['b']['UV2Kind']), _0x1d5133['VERTEXCOLOR'] && _0x3cc61f['push'](_0x4209f7['b']['ColorKind']), _0x2efc06['a']['PrepareAttributesForBones'](_0x3cc61f, _0xf3ee97, _0x1d5133, _0x2f7614), _0x2efc06['a']['PrepareAttributesForInstances'](_0x3cc61f, _0x1d5133), _0x2efc06['a']['PrepareAttributesForMorphTargets'](_0x3cc61f, _0xf3ee97, _0x1d5133); var _0x53fe84 = 'pbr' , _0x5403bc = ['world', 'view', 'viewProjection', 'vEyePosition', 'vLightsType', 'vAmbientColor', 'vAlbedoColor', 'vReflectivityColor', 'vEmissiveColor', 'visibility', 'vReflectionColor', 'vFogInfos', 'vFogColor', 'pointSize', 'vAlbedoInfos', 'vAmbientInfos', 'vOpacityInfos', 'vReflectionInfos', 'vReflectionPosition', 'vReflectionSize', 'vEmissiveInfos', 'vReflectivityInfos', 'vMicroSurfaceSamplerInfos', 'vBumpInfos', 'vLightmapInfos', 'mBones', 'vClipPlane', 'vClipPlane2', 'vClipPlane3', 'vClipPlane4', 'albedoMatrix', 'ambientMatrix', 'opacityMatrix', 'reflectionMatrix', 'emissiveMatrix', 'reflectivityMatrix', 'normalMatrix', 'microSurfaceSamplerMatrix', 'bumpMatrix', 'lightmapMatrix', 'vLightingIntensity', 'logarithmicDepthConstant', 'vSphericalX', 'vSphericalY', 'vSphericalZ', 'vSphericalXX_ZZ', 'vSphericalYY_ZZ', 'vSphericalZZ', 'vSphericalXY', 'vSphericalYZ', 'vSphericalZX', 'vSphericalL00', 'vSphericalL1_1', 'vSphericalL10', 'vSphericalL11', 'vSphericalL2_2', 'vSphericalL2_1', 'vSphericalL20', 'vSphericalL21', 'vSphericalL22', 'vReflectionMicrosurfaceInfos', 'vTangentSpaceParams', 'boneTextureWidth', 'vDebugMode'] , _0x15ad58 = ['albedoSampler', 'reflectivitySampler', 'ambientSampler', 'emissiveSampler', 'bumpSampler', 'lightmapSampler', 'opacitySampler', 'reflectionSampler', 'reflectionSamplerLow', 'reflectionSamplerHigh', 'microSurfaceSampler', 'environmentBrdfSampler', 'boneSampler'] , _0x581ae0 = ['Material', 'Scene']; _0x4cb0e6['AddUniforms'](_0x5403bc), _0x4cb0e6['AddSamplers'](_0x15ad58), _0x5a9c6c['AddUniforms'](_0x5403bc), _0x5a9c6c['AddSamplers'](_0x15ad58), _0x458d88['AddUniforms'](_0x5403bc), _0x458d88['AddSamplers'](_0x15ad58), _0x39cb46['AddUniforms'](_0x5403bc), _0x39cb46['AddSamplers'](_0x15ad58), _0x347427['a'] && (_0x347427['a']['PrepareUniforms'](_0x5403bc, _0x1d5133), _0x347427['a']['PrepareSamplers'](_0x15ad58, _0x1d5133)), _0x2efc06['a']['PrepareUniformsAndSamplersList']({ 'uniformsNames': _0x5403bc, 'uniformBuffersNames': _0x581ae0, 'samplers': _0x15ad58, 'defines': _0x1d5133, 'maxSimultaneousLights': this['_maxSimultaneousLights'] }), this['customShaderNameResolve'] && (_0x53fe84 = this['customShaderNameResolve'](_0x53fe84, _0x5403bc, _0x581ae0, _0x15ad58, _0x1d5133)); var _0x567a03 = _0x1d5133['toString'](); return _0x1009b5['createEffect'](_0x53fe84, { 'attributes': _0x3cc61f, 'uniformsNames': _0x5403bc, 'uniformBuffersNames': _0x581ae0, 'samplers': _0x15ad58, 'defines': _0x567a03, 'fallbacks': _0x2f7614, 'onCompiled': _0x47745b, 'onError': _0x2bcb9a, 'indexParameters': { 'maxSimultaneousLights': this['_maxSimultaneousLights'], 'maxSimultaneousMorphTargets': _0x1d5133['NUM_MORPH_INFLUENCERS'] } }, _0x1009b5); } , _0x4f4a57['prototype']['_prepareDefines'] = function(_0x48689e, _0x43c419, _0x5e5914, _0x49f811) { void 0x0 === _0x5e5914 && (_0x5e5914 = null), void 0x0 === _0x49f811 && (_0x49f811 = null); var _0x40f046 = this['getScene']() , _0x39c41d = _0x40f046['getEngine'](); if (_0x2efc06['a']['PrepareDefinesForLights'](_0x40f046, _0x48689e, _0x43c419, !0x0, this['_maxSimultaneousLights'], this['_disableLighting']), _0x43c419['_needNormals'] = !0x0, _0x2efc06['a']['PrepareDefinesForMultiview'](_0x40f046, _0x43c419), _0x43c419['METALLICWORKFLOW'] = this['isMetallicWorkflow'](), _0x43c419['_areTexturesDirty']) { if (_0x43c419['_needUVs'] = !0x1, _0x40f046['texturesEnabled']) { _0x40f046['getEngine']()['getCaps']()['textureLOD'] && (_0x43c419['LODBASEDMICROSFURACE'] = !0x0), this['_albedoTexture'] && _0x2085b2['a']['DiffuseTextureEnabled'] ? _0x2efc06['a']['PrepareDefinesForMergedUV'](this['_albedoTexture'], _0x43c419, 'ALBEDO') : _0x43c419['ALBEDO'] = !0x1, this['_ambientTexture'] && _0x2085b2['a']['AmbientTextureEnabled'] ? (_0x2efc06['a']['PrepareDefinesForMergedUV'](this['_ambientTexture'], _0x43c419, 'AMBIENT'), _0x43c419['AMBIENTINGRAYSCALE'] = this['_useAmbientInGrayScale']) : _0x43c419['AMBIENT'] = !0x1, this['_opacityTexture'] && _0x2085b2['a']['OpacityTextureEnabled'] ? (_0x2efc06['a']['PrepareDefinesForMergedUV'](this['_opacityTexture'], _0x43c419, 'OPACITY'), _0x43c419['OPACITYRGB'] = this['_opacityTexture']['getAlphaFromRGB']) : _0x43c419['OPACITY'] = !0x1; var _0x3f7051 = this['_getReflectionTexture'](); if (_0x3f7051 && _0x2085b2['a']['ReflectionTextureEnabled']) { switch (_0x43c419['REFLECTION'] = !0x0, _0x43c419['GAMMAREFLECTION'] = _0x3f7051['gammaSpace'], _0x43c419['RGBDREFLECTION'] = _0x3f7051['isRGBD'], _0x43c419['REFLECTIONMAP_OPPOSITEZ'] = this['getScene']()['useRightHandedSystem'] ? !_0x3f7051['invertZ'] : _0x3f7051['invertZ'], _0x43c419['LODINREFLECTIONALPHA'] = _0x3f7051['lodLevelInAlpha'], _0x3f7051['coordinatesMode'] === _0x11d14a['a']['INVCUBIC_MODE'] && (_0x43c419['INVERTCUBICMAP'] = !0x0), _0x43c419['REFLECTIONMAP_3D'] = _0x3f7051['isCube'], _0x43c419['REFLECTIONMAP_CUBIC'] = !0x1, _0x43c419['REFLECTIONMAP_EXPLICIT'] = !0x1, _0x43c419['REFLECTIONMAP_PLANAR'] = !0x1, _0x43c419['REFLECTIONMAP_PROJECTION'] = !0x1, _0x43c419['REFLECTIONMAP_SKYBOX'] = !0x1, _0x43c419['REFLECTIONMAP_SPHERICAL'] = !0x1, _0x43c419['REFLECTIONMAP_EQUIRECTANGULAR'] = !0x1, _0x43c419['REFLECTIONMAP_EQUIRECTANGULAR_FIXED'] = !0x1, _0x43c419['REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED'] = !0x1, _0x43c419['REFLECTIONMAP_SKYBOX_TRANSFORMED'] = !0x1, _0x3f7051['coordinatesMode']) { case _0x11d14a['a']['EXPLICIT_MODE']: _0x43c419['REFLECTIONMAP_EXPLICIT'] = !0x0; break; case _0x11d14a['a']['PLANAR_MODE']: _0x43c419['REFLECTIONMAP_PLANAR'] = !0x0; break; case _0x11d14a['a']['PROJECTION_MODE']: _0x43c419['REFLECTIONMAP_PROJECTION'] = !0x0; break; case _0x11d14a['a']['SKYBOX_MODE']: _0x43c419['REFLECTIONMAP_SKYBOX'] = !0x0; break; case _0x11d14a['a']['SPHERICAL_MODE']: _0x43c419['REFLECTIONMAP_SPHERICAL'] = !0x0; break; case _0x11d14a['a']['EQUIRECTANGULAR_MODE']: _0x43c419['REFLECTIONMAP_EQUIRECTANGULAR'] = !0x0; break; case _0x11d14a['a']['FIXED_EQUIRECTANGULAR_MODE']: _0x43c419['REFLECTIONMAP_EQUIRECTANGULAR_FIXED'] = !0x0; break; case _0x11d14a['a']['FIXED_EQUIRECTANGULAR_MIRRORED_MODE']: _0x43c419['REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED'] = !0x0; break; case _0x11d14a['a']['CUBIC_MODE']: case _0x11d14a['a']['INVCUBIC_MODE']: default: _0x43c419['REFLECTIONMAP_CUBIC'] = !0x0, _0x43c419['USE_LOCAL_REFLECTIONMAP_CUBIC'] = !!_0x3f7051['boundingBoxSize']; } _0x3f7051['coordinatesMode'] !== _0x11d14a['a']['SKYBOX_MODE'] ? _0x3f7051['sphericalPolynomial'] && (_0x43c419['USESPHERICALFROMREFLECTIONMAP'] = !0x0, this['_forceIrradianceInFragment'] || _0x40f046['getEngine']()['getCaps']()['maxVaryingVectors'] <= 0x8 ? _0x43c419['USESPHERICALINVERTEX'] = !0x1 : _0x43c419['USESPHERICALINVERTEX'] = !0x0) : _0x43c419['REFLECTIONMAP_SKYBOX_TRANSFORMED'] = !_0x3f7051['getReflectionTextureMatrix']()['isIdentity'](); } else _0x43c419['REFLECTION'] = !0x1, _0x43c419['REFLECTIONMAP_3D'] = !0x1, _0x43c419['REFLECTIONMAP_SPHERICAL'] = !0x1, _0x43c419['REFLECTIONMAP_PLANAR'] = !0x1, _0x43c419['REFLECTIONMAP_CUBIC'] = !0x1, _0x43c419['USE_LOCAL_REFLECTIONMAP_CUBIC'] = !0x1, _0x43c419['REFLECTIONMAP_PROJECTION'] = !0x1, _0x43c419['REFLECTIONMAP_SKYBOX'] = !0x1, _0x43c419['REFLECTIONMAP_SKYBOX_TRANSFORMED'] = !0x1, _0x43c419['REFLECTIONMAP_EXPLICIT'] = !0x1, _0x43c419['REFLECTIONMAP_EQUIRECTANGULAR'] = !0x1, _0x43c419['REFLECTIONMAP_EQUIRECTANGULAR_FIXED'] = !0x1, _0x43c419['REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED'] = !0x1, _0x43c419['INVERTCUBICMAP'] = !0x1, _0x43c419['USESPHERICALFROMREFLECTIONMAP'] = !0x1, _0x43c419['USESPHERICALINVERTEX'] = !0x1, _0x43c419['REFLECTIONMAP_OPPOSITEZ'] = !0x1, _0x43c419['LODINREFLECTIONALPHA'] = !0x1, _0x43c419['GAMMAREFLECTION'] = !0x1, _0x43c419['RGBDREFLECTION'] = !0x1; this['_lightmapTexture'] && _0x2085b2['a']['LightmapTextureEnabled'] ? (_0x2efc06['a']['PrepareDefinesForMergedUV'](this['_lightmapTexture'], _0x43c419, 'LIGHTMAP'), _0x43c419['USELIGHTMAPASSHADOWMAP'] = this['_useLightmapAsShadowmap'], _0x43c419['GAMMALIGHTMAP'] = this['_lightmapTexture']['gammaSpace']) : _0x43c419['LIGHTMAP'] = !0x1, this['_emissiveTexture'] && _0x2085b2['a']['EmissiveTextureEnabled'] ? _0x2efc06['a']['PrepareDefinesForMergedUV'](this['_emissiveTexture'], _0x43c419, 'EMISSIVE') : _0x43c419['EMISSIVE'] = !0x1, _0x2085b2['a']['SpecularTextureEnabled'] ? (this['_metallicTexture'] ? (_0x2efc06['a']['PrepareDefinesForMergedUV'](this['_metallicTexture'], _0x43c419, 'REFLECTIVITY'), _0x43c419['ROUGHNESSSTOREINMETALMAPALPHA'] = this['_useRoughnessFromMetallicTextureAlpha'], _0x43c419['ROUGHNESSSTOREINMETALMAPGREEN'] = !this['_useRoughnessFromMetallicTextureAlpha'] && this['_useRoughnessFromMetallicTextureGreen'], _0x43c419['METALLNESSSTOREINMETALMAPBLUE'] = this['_useMetallnessFromMetallicTextureBlue'], _0x43c419['AOSTOREINMETALMAPRED'] = this['_useAmbientOcclusionFromMetallicTextureRed']) : this['_reflectivityTexture'] ? (_0x2efc06['a']['PrepareDefinesForMergedUV'](this['_reflectivityTexture'], _0x43c419, 'REFLECTIVITY'), _0x43c419['MICROSURFACEFROMREFLECTIVITYMAP'] = this['_useMicroSurfaceFromReflectivityMapAlpha'], _0x43c419['MICROSURFACEAUTOMATIC'] = this['_useAutoMicroSurfaceFromReflectivityMap']) : _0x43c419['REFLECTIVITY'] = !0x1, this['_microSurfaceTexture'] ? _0x2efc06['a']['PrepareDefinesForMergedUV'](this['_microSurfaceTexture'], _0x43c419, 'MICROSURFACEMAP') : _0x43c419['MICROSURFACEMAP'] = !0x1) : (_0x43c419['REFLECTIVITY'] = !0x1, _0x43c419['MICROSURFACEMAP'] = !0x1), _0x40f046['getEngine']()['getCaps']()['standardDerivatives'] && this['_bumpTexture'] && _0x2085b2['a']['BumpTextureEnabled'] && !this['_disableBumpMap'] ? (_0x2efc06['a']['PrepareDefinesForMergedUV'](this['_bumpTexture'], _0x43c419, 'BUMP'), this['_useParallax'] && this['_albedoTexture'] && _0x2085b2['a']['DiffuseTextureEnabled'] ? (_0x43c419['PARALLAX'] = !0x0, _0x43c419['PARALLAXOCCLUSION'] = !!this['_useParallaxOcclusion']) : _0x43c419['PARALLAX'] = !0x1, _0x43c419['OBJECTSPACE_NORMALMAP'] = this['_useObjectSpaceNormalMap']) : _0x43c419['BUMP'] = !0x1, this['_environmentBRDFTexture'] && _0x2085b2['a']['ReflectionTextureEnabled'] ? (_0x43c419['ENVIRONMENTBRDF'] = !0x0, _0x43c419['ENVIRONMENTBRDF_RGBD'] = this['_environmentBRDFTexture']['isRGBD']) : (_0x43c419['ENVIRONMENTBRDF'] = !0x1, _0x43c419['ENVIRONMENTBRDF_RGBD'] = !0x1), this['_shouldUseAlphaFromAlbedoTexture']() ? _0x43c419['ALPHAFROMALBEDO'] = !0x0 : _0x43c419['ALPHAFROMALBEDO'] = !0x1; } _0x43c419['SPECULAROVERALPHA'] = this['_useSpecularOverAlpha'], this['_lightFalloff'] === _0x4f4a57['LIGHTFALLOFF_STANDARD'] ? (_0x43c419['USEPHYSICALLIGHTFALLOFF'] = !0x1, _0x43c419['USEGLTFLIGHTFALLOFF'] = !0x1) : this['_lightFalloff'] === _0x4f4a57['LIGHTFALLOFF_GLTF'] ? (_0x43c419['USEPHYSICALLIGHTFALLOFF'] = !0x1, _0x43c419['USEGLTFLIGHTFALLOFF'] = !0x0) : (_0x43c419['USEPHYSICALLIGHTFALLOFF'] = !0x0, _0x43c419['USEGLTFLIGHTFALLOFF'] = !0x1), _0x43c419['RADIANCEOVERALPHA'] = this['_useRadianceOverAlpha'], !this['backFaceCulling'] && this['_twoSidedLighting'] ? _0x43c419['TWOSIDEDLIGHTING'] = !0x0 : _0x43c419['TWOSIDEDLIGHTING'] = !0x1, _0x43c419['ALPHATESTVALUE'] = this['_alphaCutOff'] + (this['_alphaCutOff'] % 0x1 == 0x0 ? '.' : ''), _0x43c419['PREMULTIPLYALPHA'] = this['alphaMode'] === _0x24e342['a']['ALPHA_PREMULTIPLIED'] || this['alphaMode'] === _0x24e342['a']['ALPHA_PREMULTIPLIED_PORTERDUFF'], _0x43c419['ALPHABLEND'] = this['needAlphaBlendingForMesh'](_0x48689e), _0x43c419['ALPHAFRESNEL'] = this['_useAlphaFresnel'] || this['_useLinearAlphaFresnel'], _0x43c419['LINEARALPHAFRESNEL'] = this['_useLinearAlphaFresnel'], _0x43c419['SPECULARAA'] = _0x40f046['getEngine']()['getCaps']()['standardDerivatives'] && this['_enableSpecularAntiAliasing']; } _0x43c419['_areImageProcessingDirty'] && this['_imageProcessingConfiguration'] && this['_imageProcessingConfiguration']['prepareDefines'](_0x43c419), _0x43c419['FORCENORMALFORWARD'] = this['_forceNormalForward'], _0x43c419['RADIANCEOCCLUSION'] = this['_useRadianceOcclusion'], _0x43c419['HORIZONOCCLUSION'] = this['_useHorizonOcclusion'], _0x43c419['_areMiscDirty'] && (_0x2efc06['a']['PrepareDefinesForMisc'](_0x48689e, _0x40f046, this['_useLogarithmicDepth'], this['pointsCloud'], this['fogEnabled'], this['_shouldTurnAlphaTestOn'](_0x48689e) || this['_forceAlphaTest'], _0x43c419), _0x43c419['UNLIT'] = this['_unlit'] || (this['pointsCloud'] || this['wireframe']) && !_0x48689e['isVerticesDataPresent'](_0x4209f7['b']['NormalKind']), _0x43c419['DEBUGMODE'] = this['_debugMode']), this['subSurface']['prepareDefines'](_0x43c419, _0x40f046), this['clearCoat']['prepareDefines'](_0x43c419, _0x40f046), this['anisotropy']['prepareDefines'](_0x43c419, _0x48689e, _0x40f046), this['brdf']['prepareDefines'](_0x43c419), this['sheen']['prepareDefines'](_0x43c419, _0x40f046), _0x2efc06['a']['PrepareDefinesForFrameBoundValues'](_0x40f046, _0x39c41d, _0x43c419, !!_0x5e5914, _0x49f811), _0x2efc06['a']['PrepareDefinesForAttributes'](_0x48689e, _0x43c419, !0x0, !0x0, !0x0, this['_transparencyMode'] !== _0x4f4a57['PBRMATERIAL_OPAQUE']); } , _0x4f4a57['prototype']['forceCompilation'] = function(_0x6c741a, _0x627a6b, _0x2e242f) { var _0x409cf4 = this , _0x48b25c = _0x420e5b['a']({ 'clipPlane': !0x1 }, _0x2e242f) , _0x116e6e = new _0x164c48() , _0x24e7d7 = this['_prepareEffect'](_0x6c741a, _0x116e6e, void 0x0, void 0x0, void 0x0, _0x48b25c['clipPlane']); _0x24e7d7['isReady']() ? _0x627a6b && _0x627a6b(this) : _0x24e7d7['onCompileObservable']['add'](function() { _0x627a6b && _0x627a6b(_0x409cf4); }); } , _0x4f4a57['prototype']['buildUniformLayout'] = function() { var _0x358d52 = this['_uniformBuffer']; _0x358d52['addUniform']('vAlbedoInfos', 0x2), _0x358d52['addUniform']('vAmbientInfos', 0x4), _0x358d52['addUniform']('vOpacityInfos', 0x2), _0x358d52['addUniform']('vEmissiveInfos', 0x2), _0x358d52['addUniform']('vLightmapInfos', 0x2), _0x358d52['addUniform']('vReflectivityInfos', 0x3), _0x358d52['addUniform']('vMicroSurfaceSamplerInfos', 0x2), _0x358d52['addUniform']('vReflectionInfos', 0x2), _0x358d52['addUniform']('vReflectionPosition', 0x3), _0x358d52['addUniform']('vReflectionSize', 0x3), _0x358d52['addUniform']('vBumpInfos', 0x3), _0x358d52['addUniform']('albedoMatrix', 0x10), _0x358d52['addUniform']('ambientMatrix', 0x10), _0x358d52['addUniform']('opacityMatrix', 0x10), _0x358d52['addUniform']('emissiveMatrix', 0x10), _0x358d52['addUniform']('lightmapMatrix', 0x10), _0x358d52['addUniform']('reflectivityMatrix', 0x10), _0x358d52['addUniform']('microSurfaceSamplerMatrix', 0x10), _0x358d52['addUniform']('bumpMatrix', 0x10), _0x358d52['addUniform']('vTangentSpaceParams', 0x2), _0x358d52['addUniform']('reflectionMatrix', 0x10), _0x358d52['addUniform']('vReflectionColor', 0x3), _0x358d52['addUniform']('vAlbedoColor', 0x4), _0x358d52['addUniform']('vLightingIntensity', 0x4), _0x358d52['addUniform']('vReflectionMicrosurfaceInfos', 0x3), _0x358d52['addUniform']('pointSize', 0x1), _0x358d52['addUniform']('vReflectivityColor', 0x4), _0x358d52['addUniform']('vEmissiveColor', 0x3), _0x358d52['addUniform']('visibility', 0x1), _0x5a9c6c['PrepareUniformBuffer'](_0x358d52), _0x458d88['PrepareUniformBuffer'](_0x358d52), _0x39cb46['PrepareUniformBuffer'](_0x358d52), _0x4cb0e6['PrepareUniformBuffer'](_0x358d52), _0x358d52['create'](); } , _0x4f4a57['prototype']['unbind'] = function() { if (this['_activeEffect']) { var _0x5cc011 = !0x1; this['_reflectionTexture'] && this['_reflectionTexture']['isRenderTarget'] && (this['_activeEffect']['setTexture']('reflection2DSampler', null), _0x5cc011 = !0x0), this['subSurface']['unbind'](this['_activeEffect']) && (_0x5cc011 = !0x0), _0x5cc011 && this['_markAllSubMeshesAsTexturesDirty'](); } _0x305844['prototype']['unbind']['call'](this); } , _0x4f4a57['prototype']['bindForSubMesh'] = function(_0x2f9c69, _0xf7f3cd, _0x1626ce) { var _0x30628c = this['getScene']() , _0x205357 = _0x1626ce['_materialDefines']; if (_0x205357) { var _0x392b09 = _0x1626ce['effect']; if (_0x392b09) { this['_activeEffect'] = _0x392b09, _0x205357['INSTANCES'] || this['bindOnlyWorldMatrix'](_0x2f9c69), _0x205357['OBJECTSPACE_NORMALMAP'] && (_0x2f9c69['toNormalMatrix'](this['_normalMatrix']), this['bindOnlyNormalMatrix'](this['_normalMatrix'])); var _0x4f826c = this['_mustRebind'](_0x30628c, _0x392b09, _0xf7f3cd['visibility']); _0x2efc06['a']['BindBonesParameters'](_0xf7f3cd, this['_activeEffect']); var _0x3e118f = null , _0x1474a4 = this['_uniformBuffer']; if (_0x4f826c) { var _0x3616c2 = _0x30628c['getEngine'](); if (_0x1474a4['bindToEffect'](_0x392b09, 'Material'), this['bindViewProjection'](_0x392b09), _0x3e118f = this['_getReflectionTexture'](), !_0x1474a4['useUbo'] || !this['isFrozen'] || !_0x1474a4['isSync']) { if (_0x30628c['texturesEnabled']) { if (this['_albedoTexture'] && _0x2085b2['a']['DiffuseTextureEnabled'] && (_0x1474a4['updateFloat2']('vAlbedoInfos', this['_albedoTexture']['coordinatesIndex'], this['_albedoTexture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_albedoTexture'], _0x1474a4, 'albedo')), this['_ambientTexture'] && _0x2085b2['a']['AmbientTextureEnabled'] && (_0x1474a4['updateFloat4']('vAmbientInfos', this['_ambientTexture']['coordinatesIndex'], this['_ambientTexture']['level'], this['_ambientTextureStrength'], this['_ambientTextureImpactOnAnalyticalLights']), _0x2efc06['a']['BindTextureMatrix'](this['_ambientTexture'], _0x1474a4, 'ambient')), this['_opacityTexture'] && _0x2085b2['a']['OpacityTextureEnabled'] && (_0x1474a4['updateFloat2']('vOpacityInfos', this['_opacityTexture']['coordinatesIndex'], this['_opacityTexture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_opacityTexture'], _0x1474a4, 'opacity')), _0x3e118f && _0x2085b2['a']['ReflectionTextureEnabled']) { if (_0x1474a4['updateMatrix']('reflectionMatrix', _0x3e118f['getReflectionTextureMatrix']()), _0x1474a4['updateFloat2']('vReflectionInfos', _0x3e118f['level'], 0x0), _0x3e118f['boundingBoxSize']) { var _0x119030 = _0x3e118f; _0x1474a4['updateVector3']('vReflectionPosition', _0x119030['boundingBoxPosition']), _0x1474a4['updateVector3']('vReflectionSize', _0x119030['boundingBoxSize']); } var _0xbedf16 = _0x3e118f['sphericalPolynomial']; if (_0x205357['USESPHERICALFROMREFLECTIONMAP'] && _0xbedf16) if (_0x205357['SPHERICAL_HARMONICS']) { var _0x2d40b9 = _0xbedf16['preScaledHarmonics']; this['_activeEffect']['setVector3']('vSphericalL00', _0x2d40b9['l00']), this['_activeEffect']['setVector3']('vSphericalL1_1', _0x2d40b9['l1_1']), this['_activeEffect']['setVector3']('vSphericalL10', _0x2d40b9['l10']), this['_activeEffect']['setVector3']('vSphericalL11', _0x2d40b9['l11']), this['_activeEffect']['setVector3']('vSphericalL2_2', _0x2d40b9['l2_2']), this['_activeEffect']['setVector3']('vSphericalL2_1', _0x2d40b9['l2_1']), this['_activeEffect']['setVector3']('vSphericalL20', _0x2d40b9['l20']), this['_activeEffect']['setVector3']('vSphericalL21', _0x2d40b9['l21']), this['_activeEffect']['setVector3']('vSphericalL22', _0x2d40b9['l22']); } else this['_activeEffect']['setFloat3']('vSphericalX', _0xbedf16['x']['x'], _0xbedf16['x']['y'], _0xbedf16['x']['z']), this['_activeEffect']['setFloat3']('vSphericalY', _0xbedf16['y']['x'], _0xbedf16['y']['y'], _0xbedf16['y']['z']), this['_activeEffect']['setFloat3']('vSphericalZ', _0xbedf16['z']['x'], _0xbedf16['z']['y'], _0xbedf16['z']['z']), this['_activeEffect']['setFloat3']('vSphericalXX_ZZ', _0xbedf16['xx']['x'] - _0xbedf16['zz']['x'], _0xbedf16['xx']['y'] - _0xbedf16['zz']['y'], _0xbedf16['xx']['z'] - _0xbedf16['zz']['z']), this['_activeEffect']['setFloat3']('vSphericalYY_ZZ', _0xbedf16['yy']['x'] - _0xbedf16['zz']['x'], _0xbedf16['yy']['y'] - _0xbedf16['zz']['y'], _0xbedf16['yy']['z'] - _0xbedf16['zz']['z']), this['_activeEffect']['setFloat3']('vSphericalZZ', _0xbedf16['zz']['x'], _0xbedf16['zz']['y'], _0xbedf16['zz']['z']), this['_activeEffect']['setFloat3']('vSphericalXY', _0xbedf16['xy']['x'], _0xbedf16['xy']['y'], _0xbedf16['xy']['z']), this['_activeEffect']['setFloat3']('vSphericalYZ', _0xbedf16['yz']['x'], _0xbedf16['yz']['y'], _0xbedf16['yz']['z']), this['_activeEffect']['setFloat3']('vSphericalZX', _0xbedf16['zx']['x'], _0xbedf16['zx']['y'], _0xbedf16['zx']['z']); _0x1474a4['updateFloat3']('vReflectionMicrosurfaceInfos', _0x3e118f['getSize']()['width'], _0x3e118f['lodGenerationScale'], _0x3e118f['lodGenerationOffset']); } this['_emissiveTexture'] && _0x2085b2['a']['EmissiveTextureEnabled'] && (_0x1474a4['updateFloat2']('vEmissiveInfos', this['_emissiveTexture']['coordinatesIndex'], this['_emissiveTexture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_emissiveTexture'], _0x1474a4, 'emissive')), this['_lightmapTexture'] && _0x2085b2['a']['LightmapTextureEnabled'] && (_0x1474a4['updateFloat2']('vLightmapInfos', this['_lightmapTexture']['coordinatesIndex'], this['_lightmapTexture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_lightmapTexture'], _0x1474a4, 'lightmap')), _0x2085b2['a']['SpecularTextureEnabled'] && (this['_metallicTexture'] ? (_0x1474a4['updateFloat3']('vReflectivityInfos', this['_metallicTexture']['coordinatesIndex'], this['_metallicTexture']['level'], this['_ambientTextureStrength']), _0x2efc06['a']['BindTextureMatrix'](this['_metallicTexture'], _0x1474a4, 'reflectivity')) : this['_reflectivityTexture'] && (_0x1474a4['updateFloat3']('vReflectivityInfos', this['_reflectivityTexture']['coordinatesIndex'], this['_reflectivityTexture']['level'], 0x1), _0x2efc06['a']['BindTextureMatrix'](this['_reflectivityTexture'], _0x1474a4, 'reflectivity')), this['_microSurfaceTexture'] && (_0x1474a4['updateFloat2']('vMicroSurfaceSamplerInfos', this['_microSurfaceTexture']['coordinatesIndex'], this['_microSurfaceTexture']['level']), _0x2efc06['a']['BindTextureMatrix'](this['_microSurfaceTexture'], _0x1474a4, 'microSurfaceSampler'))), this['_bumpTexture'] && _0x3616c2['getCaps']()['standardDerivatives'] && _0x2085b2['a']['BumpTextureEnabled'] && !this['_disableBumpMap'] && (_0x1474a4['updateFloat3']('vBumpInfos', this['_bumpTexture']['coordinatesIndex'], this['_bumpTexture']['level'], this['_parallaxScaleBias']), _0x2efc06['a']['BindTextureMatrix'](this['_bumpTexture'], _0x1474a4, 'bump'), _0x30628c['_mirroredCameraPosition'] ? _0x1474a4['updateFloat2']('vTangentSpaceParams', this['_invertNormalMapX'] ? 0x1 : -0x1, this['_invertNormalMapY'] ? 0x1 : -0x1) : _0x1474a4['updateFloat2']('vTangentSpaceParams', this['_invertNormalMapX'] ? -0x1 : 0x1, this['_invertNormalMapY'] ? -0x1 : 0x1)); } this['pointsCloud'] && _0x1474a4['updateFloat']('pointSize', this['pointSize']), _0x205357['METALLICWORKFLOW'] ? (_0x47d24f['t']['Color3'][0x0]['r'] = void 0x0 === this['_metallic'] || null === this['_metallic'] ? 0x1 : this['_metallic'], _0x47d24f['t']['Color3'][0x0]['g'] = void 0x0 === this['_roughness'] || null === this['_roughness'] ? 0x1 : this['_roughness'], _0x1474a4['updateColor4']('vReflectivityColor', _0x47d24f['t']['Color3'][0x0], 0x0)) : _0x1474a4['updateColor4']('vReflectivityColor', this['_reflectivityColor'], this['_microSurface']), _0x1474a4['updateColor3']('vEmissiveColor', _0x2085b2['a']['EmissiveTextureEnabled'] ? this['_emissiveColor'] : _0x47d24f['e']['BlackReadOnly']), _0x1474a4['updateColor3']('vReflectionColor', this['_reflectionColor']), _0x1474a4['updateColor4']('vAlbedoColor', this['_albedoColor'], this['alpha']), _0x1474a4['updateFloat']('visibility', _0xf7f3cd['visibility']), this['_lightingInfos']['x'] = this['_directIntensity'], this['_lightingInfos']['y'] = this['_emissiveIntensity'], this['_lightingInfos']['z'] = this['_environmentIntensity'], this['_lightingInfos']['w'] = this['_specularIntensity'], _0x1474a4['updateVector4']('vLightingIntensity', this['_lightingInfos']); } _0x30628c['texturesEnabled'] && (this['_albedoTexture'] && _0x2085b2['a']['DiffuseTextureEnabled'] && _0x1474a4['setTexture']('albedoSampler', this['_albedoTexture']), this['_ambientTexture'] && _0x2085b2['a']['AmbientTextureEnabled'] && _0x1474a4['setTexture']('ambientSampler', this['_ambientTexture']), this['_opacityTexture'] && _0x2085b2['a']['OpacityTextureEnabled'] && _0x1474a4['setTexture']('opacitySampler', this['_opacityTexture']), _0x3e118f && _0x2085b2['a']['ReflectionTextureEnabled'] && (_0x205357['LODBASEDMICROSFURACE'] ? _0x1474a4['setTexture']('reflectionSampler', _0x3e118f) : (_0x1474a4['setTexture']('reflectionSampler', _0x3e118f['_lodTextureMid'] || _0x3e118f), _0x1474a4['setTexture']('reflectionSamplerLow', _0x3e118f['_lodTextureLow'] || _0x3e118f), _0x1474a4['setTexture']('reflectionSamplerHigh', _0x3e118f['_lodTextureHigh'] || _0x3e118f))), _0x205357['ENVIRONMENTBRDF'] && _0x1474a4['setTexture']('environmentBrdfSampler', this['_environmentBRDFTexture']), this['_emissiveTexture'] && _0x2085b2['a']['EmissiveTextureEnabled'] && _0x1474a4['setTexture']('emissiveSampler', this['_emissiveTexture']), this['_lightmapTexture'] && _0x2085b2['a']['LightmapTextureEnabled'] && _0x1474a4['setTexture']('lightmapSampler', this['_lightmapTexture']), _0x2085b2['a']['SpecularTextureEnabled'] && (this['_metallicTexture'] ? _0x1474a4['setTexture']('reflectivitySampler', this['_metallicTexture']) : this['_reflectivityTexture'] && _0x1474a4['setTexture']('reflectivitySampler', this['_reflectivityTexture']), this['_microSurfaceTexture'] && _0x1474a4['setTexture']('microSurfaceSampler', this['_microSurfaceTexture'])), this['_bumpTexture'] && _0x3616c2['getCaps']()['standardDerivatives'] && _0x2085b2['a']['BumpTextureEnabled'] && !this['_disableBumpMap'] && _0x1474a4['setTexture']('bumpSampler', this['_bumpTexture'])), this['subSurface']['bindForSubMesh'](_0x1474a4, _0x30628c, _0x3616c2, this['isFrozen'], _0x205357['LODBASEDMICROSFURACE']), this['clearCoat']['bindForSubMesh'](_0x1474a4, _0x30628c, _0x3616c2, this['_disableBumpMap'], this['isFrozen'], this['_invertNormalMapX'], this['_invertNormalMapY']), this['anisotropy']['bindForSubMesh'](_0x1474a4, _0x30628c, this['isFrozen']), this['sheen']['bindForSubMesh'](_0x1474a4, _0x30628c, this['isFrozen']), _0x2efc06['a']['BindClipPlane'](this['_activeEffect'], _0x30628c), _0x30628c['ambientColor']['multiplyToRef'](this['_ambientColor'], this['_globalAmbientColor']); var _0x19b676 = _0x30628c['_forcedViewPosition'] ? _0x30628c['_forcedViewPosition'] : _0x30628c['_mirroredCameraPosition'] ? _0x30628c['_mirroredCameraPosition'] : _0x30628c['activeCamera']['globalPosition'] , _0x2c4d42 = _0x30628c['useRightHandedSystem'] === (null != _0x30628c['_mirroredCameraPosition']); _0x392b09['setFloat4']('vEyePosition', _0x19b676['x'], _0x19b676['y'], _0x19b676['z'], _0x2c4d42 ? -0x1 : 0x1), _0x392b09['setColor3']('vAmbientColor', this['_globalAmbientColor']), _0x392b09['setFloat2']('vDebugMode', this['debugLimit'], this['debugFactor']); } !_0x4f826c && this['isFrozen'] || (_0x30628c['lightsEnabled'] && !this['_disableLighting'] && _0x2efc06['a']['BindLights'](_0x30628c, _0xf7f3cd, this['_activeEffect'], _0x205357, this['_maxSimultaneousLights'], this['_lightFalloff'] !== _0x4f4a57['LIGHTFALLOFF_STANDARD']), (_0x30628c['fogEnabled'] && _0xf7f3cd['applyFog'] && _0x30628c['fogMode'] !== _0x366639['a']['FOGMODE_NONE'] || _0x3e118f) && this['bindView'](_0x392b09), _0x2efc06['a']['BindFogParameters'](_0x30628c, _0xf7f3cd, this['_activeEffect'], !0x0), _0x205357['NUM_MORPH_INFLUENCERS'] && _0x2efc06['a']['BindMorphTargetParameters'](_0xf7f3cd, this['_activeEffect']), this['_imageProcessingConfiguration']['bind'](this['_activeEffect']), _0x2efc06['a']['BindLogDepth'](_0x205357, this['_activeEffect'], _0x30628c)), _0x1474a4['update'](), this['_afterBind'](_0xf7f3cd, this['_activeEffect']); } } } , _0x4f4a57['prototype']['getAnimatables'] = function() { var _0x3e6676 = []; return this['_albedoTexture'] && this['_albedoTexture']['animations'] && this['_albedoTexture']['animations']['length'] > 0x0 && _0x3e6676['push'](this['_albedoTexture']), this['_ambientTexture'] && this['_ambientTexture']['animations'] && this['_ambientTexture']['animations']['length'] > 0x0 && _0x3e6676['push'](this['_ambientTexture']), this['_opacityTexture'] && this['_opacityTexture']['animations'] && this['_opacityTexture']['animations']['length'] > 0x0 && _0x3e6676['push'](this['_opacityTexture']), this['_reflectionTexture'] && this['_reflectionTexture']['animations'] && this['_reflectionTexture']['animations']['length'] > 0x0 && _0x3e6676['push'](this['_reflectionTexture']), this['_emissiveTexture'] && this['_emissiveTexture']['animations'] && this['_emissiveTexture']['animations']['length'] > 0x0 && _0x3e6676['push'](this['_emissiveTexture']), this['_metallicTexture'] && this['_metallicTexture']['animations'] && this['_metallicTexture']['animations']['length'] > 0x0 ? _0x3e6676['push'](this['_metallicTexture']) : this['_reflectivityTexture'] && this['_reflectivityTexture']['animations'] && this['_reflectivityTexture']['animations']['length'] > 0x0 && _0x3e6676['push'](this['_reflectivityTexture']), this['_bumpTexture'] && this['_bumpTexture']['animations'] && this['_bumpTexture']['animations']['length'] > 0x0 && _0x3e6676['push'](this['_bumpTexture']), this['_lightmapTexture'] && this['_lightmapTexture']['animations'] && this['_lightmapTexture']['animations']['length'] > 0x0 && _0x3e6676['push'](this['_lightmapTexture']), this['subSurface']['getAnimatables'](_0x3e6676), this['clearCoat']['getAnimatables'](_0x3e6676), this['sheen']['getAnimatables'](_0x3e6676), this['anisotropy']['getAnimatables'](_0x3e6676), _0x3e6676; } , _0x4f4a57['prototype']['_getReflectionTexture'] = function() { return this['_reflectionTexture'] ? this['_reflectionTexture'] : this['getScene']()['environmentTexture']; } , _0x4f4a57['prototype']['getActiveTextures'] = function() { var _0x2d67e9 = _0x305844['prototype']['getActiveTextures']['call'](this); return this['_albedoTexture'] && _0x2d67e9['push'](this['_albedoTexture']), this['_ambientTexture'] && _0x2d67e9['push'](this['_ambientTexture']), this['_opacityTexture'] && _0x2d67e9['push'](this['_opacityTexture']), this['_reflectionTexture'] && _0x2d67e9['push'](this['_reflectionTexture']), this['_emissiveTexture'] && _0x2d67e9['push'](this['_emissiveTexture']), this['_reflectivityTexture'] && _0x2d67e9['push'](this['_reflectivityTexture']), this['_metallicTexture'] && _0x2d67e9['push'](this['_metallicTexture']), this['_microSurfaceTexture'] && _0x2d67e9['push'](this['_microSurfaceTexture']), this['_bumpTexture'] && _0x2d67e9['push'](this['_bumpTexture']), this['_lightmapTexture'] && _0x2d67e9['push'](this['_lightmapTexture']), this['subSurface']['getActiveTextures'](_0x2d67e9), this['clearCoat']['getActiveTextures'](_0x2d67e9), this['sheen']['getActiveTextures'](_0x2d67e9), this['anisotropy']['getActiveTextures'](_0x2d67e9), _0x2d67e9; } , _0x4f4a57['prototype']['hasTexture'] = function(_0x2cb989) { return !!_0x305844['prototype']['hasTexture']['call'](this, _0x2cb989) || (this['_albedoTexture'] === _0x2cb989 || (this['_ambientTexture'] === _0x2cb989 || (this['_opacityTexture'] === _0x2cb989 || (this['_reflectionTexture'] === _0x2cb989 || (this['_reflectivityTexture'] === _0x2cb989 || (this['_metallicTexture'] === _0x2cb989 || (this['_microSurfaceTexture'] === _0x2cb989 || (this['_bumpTexture'] === _0x2cb989 || (this['_lightmapTexture'] === _0x2cb989 || (this['subSurface']['hasTexture'](_0x2cb989) || this['clearCoat']['hasTexture'](_0x2cb989) || this['sheen']['hasTexture'](_0x2cb989) || this['anisotropy']['hasTexture'](_0x2cb989))))))))))); } , _0x4f4a57['prototype']['dispose'] = function(_0x40f061, _0xef0df) { _0xef0df && (this['_albedoTexture'] && this['_albedoTexture']['dispose'](), this['_ambientTexture'] && this['_ambientTexture']['dispose'](), this['_opacityTexture'] && this['_opacityTexture']['dispose'](), this['_reflectionTexture'] && this['_reflectionTexture']['dispose'](), this['_environmentBRDFTexture'] && this['getScene']()['environmentBRDFTexture'] !== this['_environmentBRDFTexture'] && this['_environmentBRDFTexture']['dispose'](), this['_emissiveTexture'] && this['_emissiveTexture']['dispose'](), this['_metallicTexture'] && this['_metallicTexture']['dispose'](), this['_reflectivityTexture'] && this['_reflectivityTexture']['dispose'](), this['_bumpTexture'] && this['_bumpTexture']['dispose'](), this['_lightmapTexture'] && this['_lightmapTexture']['dispose']()), this['subSurface']['dispose'](_0xef0df), this['clearCoat']['dispose'](_0xef0df), this['sheen']['dispose'](_0xef0df), this['anisotropy']['dispose'](_0xef0df), this['_renderTargets']['dispose'](), this['_imageProcessingConfiguration'] && this['_imageProcessingObserver'] && this['_imageProcessingConfiguration']['onUpdateParameters']['remove'](this['_imageProcessingObserver']), _0x305844['prototype']['dispose']['call'](this, _0x40f061, _0xef0df); } , _0x4f4a57['PBRMATERIAL_OPAQUE'] = 0x0, _0x4f4a57['PBRMATERIAL_ALPHATEST'] = 0x1, _0x4f4a57['PBRMATERIAL_ALPHABLEND'] = 0x2, _0x4f4a57['PBRMATERIAL_ALPHATESTANDBLEND'] = 0x3, _0x4f4a57['DEFAULT_AO_ON_ANALYTICAL_LIGHTS'] = 0x0, _0x4f4a57['LIGHTFALLOFF_PHYSICAL'] = 0x0, _0x4f4a57['LIGHTFALLOFF_GLTF'] = 0x1, _0x4f4a57['LIGHTFALLOFF_STANDARD'] = 0x2, _0x420e5b['c']([Object(_0x3d4764['i'])()], _0x4f4a57['prototype'], '_imageProcessingConfiguration', void 0x0), _0x420e5b['c']([Object(_0x3d4764['b'])('_markAllSubMeshesAsMiscDirty')], _0x4f4a57['prototype'], 'debugMode', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4f4a57['prototype'], 'useLogarithmicDepth', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4f4a57['prototype'], 'transparencyMode', null), _0x4f4a57; }(_0xdc76ae['a']) , _0x36df35 = function(_0x54b803) { function _0x153271(_0x5c7b7a, _0x26ef68) { var _0x1ec8dd = _0x54b803['call'](this, _0x5c7b7a, _0x26ef68) || this; return _0x1ec8dd['directIntensity'] = 0x1, _0x1ec8dd['emissiveIntensity'] = 0x1, _0x1ec8dd['environmentIntensity'] = 0x1, _0x1ec8dd['specularIntensity'] = 0x1, _0x1ec8dd['disableBumpMap'] = !0x1, _0x1ec8dd['ambientTextureStrength'] = 0x1, _0x1ec8dd['ambientTextureImpactOnAnalyticalLights'] = _0x153271['DEFAULT_AO_ON_ANALYTICAL_LIGHTS'], _0x1ec8dd['ambientColor'] = new _0x47d24f['e'](0x0,0x0,0x0), _0x1ec8dd['albedoColor'] = new _0x47d24f['e'](0x1,0x1,0x1), _0x1ec8dd['reflectivityColor'] = new _0x47d24f['e'](0x1,0x1,0x1), _0x1ec8dd['reflectionColor'] = new _0x47d24f['e'](0x1,0x1,0x1), _0x1ec8dd['emissiveColor'] = new _0x47d24f['e'](0x0,0x0,0x0), _0x1ec8dd['microSurface'] = 0x1, _0x1ec8dd['useLightmapAsShadowmap'] = !0x1, _0x1ec8dd['useAlphaFromAlbedoTexture'] = !0x1, _0x1ec8dd['forceAlphaTest'] = !0x1, _0x1ec8dd['alphaCutOff'] = 0.4, _0x1ec8dd['useSpecularOverAlpha'] = !0x0, _0x1ec8dd['useMicroSurfaceFromReflectivityMapAlpha'] = !0x1, _0x1ec8dd['useRoughnessFromMetallicTextureAlpha'] = !0x0, _0x1ec8dd['useRoughnessFromMetallicTextureGreen'] = !0x1, _0x1ec8dd['useMetallnessFromMetallicTextureBlue'] = !0x1, _0x1ec8dd['useAmbientOcclusionFromMetallicTextureRed'] = !0x1, _0x1ec8dd['useAmbientInGrayScale'] = !0x1, _0x1ec8dd['useAutoMicroSurfaceFromReflectivityMap'] = !0x1, _0x1ec8dd['useRadianceOverAlpha'] = !0x0, _0x1ec8dd['useObjectSpaceNormalMap'] = !0x1, _0x1ec8dd['useParallax'] = !0x1, _0x1ec8dd['useParallaxOcclusion'] = !0x1, _0x1ec8dd['parallaxScaleBias'] = 0.05, _0x1ec8dd['disableLighting'] = !0x1, _0x1ec8dd['forceIrradianceInFragment'] = !0x1, _0x1ec8dd['maxSimultaneousLights'] = 0x4, _0x1ec8dd['invertNormalMapX'] = !0x1, _0x1ec8dd['invertNormalMapY'] = !0x1, _0x1ec8dd['twoSidedLighting'] = !0x1, _0x1ec8dd['useAlphaFresnel'] = !0x1, _0x1ec8dd['useLinearAlphaFresnel'] = !0x1, _0x1ec8dd['environmentBRDFTexture'] = null, _0x1ec8dd['forceNormalForward'] = !0x1, _0x1ec8dd['enableSpecularAntiAliasing'] = !0x1, _0x1ec8dd['useHorizonOcclusion'] = !0x0, _0x1ec8dd['useRadianceOcclusion'] = !0x0, _0x1ec8dd['unlit'] = !0x1, _0x1ec8dd['_environmentBRDFTexture'] = _0x92f7b4['GetEnvironmentBRDFTexture'](_0x26ef68), _0x1ec8dd; } return _0x420e5b['d'](_0x153271, _0x54b803), Object['defineProperty'](_0x153271['prototype'], 'refractionTexture', { 'get': function() { return this['subSurface']['refractionTexture']; }, 'set': function(_0x432425) { this['subSurface']['refractionTexture'] = _0x432425, _0x432425 ? this['subSurface']['isRefractionEnabled'] = !0x0 : this['subSurface']['linkRefractionWithTransparency'] || (this['subSurface']['isRefractionEnabled'] = !0x1); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'indexOfRefraction', { 'get': function() { return 0x1 / this['subSurface']['indexOfRefraction']; }, 'set': function(_0x50613b) { this['subSurface']['indexOfRefraction'] = 0x1 / _0x50613b; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'invertRefractionY', { 'get': function() { return this['subSurface']['invertRefractionY']; }, 'set': function(_0x2ed85c) { this['subSurface']['invertRefractionY'] = _0x2ed85c; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'linkRefractionWithTransparency', { 'get': function() { return this['subSurface']['linkRefractionWithTransparency']; }, 'set': function(_0x307beb) { this['subSurface']['linkRefractionWithTransparency'] = _0x307beb, _0x307beb && (this['subSurface']['isRefractionEnabled'] = !0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'usePhysicalLightFalloff', { 'get': function() { return this['_lightFalloff'] === _0x327952['LIGHTFALLOFF_PHYSICAL']; }, 'set': function(_0x125a7c) { _0x125a7c !== this['usePhysicalLightFalloff'] && (this['_markAllSubMeshesAsTexturesDirty'](), this['_lightFalloff'] = _0x125a7c ? _0x327952['LIGHTFALLOFF_PHYSICAL'] : _0x327952['LIGHTFALLOFF_STANDARD']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'useGLTFLightFalloff', { 'get': function() { return this['_lightFalloff'] === _0x327952['LIGHTFALLOFF_GLTF']; }, 'set': function(_0x5be031) { _0x5be031 !== this['useGLTFLightFalloff'] && (this['_markAllSubMeshesAsTexturesDirty'](), this['_lightFalloff'] = _0x5be031 ? _0x327952['LIGHTFALLOFF_GLTF'] : _0x327952['LIGHTFALLOFF_STANDARD']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'imageProcessingConfiguration', { 'get': function() { return this['_imageProcessingConfiguration']; }, 'set': function(_0x5807d2) { this['_attachImageProcessingConfiguration'](_0x5807d2), this['_markAllSubMeshesAsTexturesDirty'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'cameraColorCurvesEnabled', { 'get': function() { return this['imageProcessingConfiguration']['colorCurvesEnabled']; }, 'set': function(_0x5da8d9) { this['imageProcessingConfiguration']['colorCurvesEnabled'] = _0x5da8d9; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'cameraColorGradingEnabled', { 'get': function() { return this['imageProcessingConfiguration']['colorGradingEnabled']; }, 'set': function(_0x321ef6) { this['imageProcessingConfiguration']['colorGradingEnabled'] = _0x321ef6; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'cameraToneMappingEnabled', { 'get': function() { return this['_imageProcessingConfiguration']['toneMappingEnabled']; }, 'set': function(_0x466fd8) { this['_imageProcessingConfiguration']['toneMappingEnabled'] = _0x466fd8; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'cameraExposure', { 'get': function() { return this['_imageProcessingConfiguration']['exposure']; }, 'set': function(_0x15c753) { this['_imageProcessingConfiguration']['exposure'] = _0x15c753; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'cameraContrast', { 'get': function() { return this['_imageProcessingConfiguration']['contrast']; }, 'set': function(_0x20403f) { this['_imageProcessingConfiguration']['contrast'] = _0x20403f; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'cameraColorGradingTexture', { 'get': function() { return this['_imageProcessingConfiguration']['colorGradingTexture']; }, 'set': function(_0x38dae9) { this['_imageProcessingConfiguration']['colorGradingTexture'] = _0x38dae9; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x153271['prototype'], 'cameraColorCurves', { 'get': function() { return this['_imageProcessingConfiguration']['colorCurves']; }, 'set': function(_0x309939) { this['_imageProcessingConfiguration']['colorCurves'] = _0x309939; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x153271['prototype']['getClassName'] = function() { return 'PBRMaterial'; } , _0x153271['prototype']['clone'] = function(_0x2f8769) { var _0x22c7a3 = this , _0x325319 = _0x3d4764['a']['Clone'](function() { return new _0x153271(_0x2f8769,_0x22c7a3['getScene']()); }, this); return _0x325319['id'] = _0x2f8769, _0x325319['name'] = _0x2f8769, this['clearCoat']['copyTo'](_0x325319['clearCoat']), this['anisotropy']['copyTo'](_0x325319['anisotropy']), this['brdf']['copyTo'](_0x325319['brdf']), this['sheen']['copyTo'](_0x325319['sheen']), _0x325319; } , _0x153271['prototype']['serialize'] = function() { var _0x5df22f = _0x3d4764['a']['Serialize'](this); return _0x5df22f['customType'] = 'BABYLON.PBRMaterial', _0x5df22f['clearCoat'] = this['clearCoat']['serialize'](), _0x5df22f['anisotropy'] = this['anisotropy']['serialize'](), _0x5df22f['brdf'] = this['brdf']['serialize'](), _0x5df22f['sheen'] = this['sheen']['serialize'](), _0x5df22f; } , _0x153271['Parse'] = function(_0x56c8cb, _0x40c943, _0x22884c) { var _0x4a876a = _0x3d4764['a']['Parse'](function() { return new _0x153271(_0x56c8cb['name'],_0x40c943); }, _0x56c8cb, _0x40c943, _0x22884c); return _0x56c8cb['clearCoat'] && _0x4a876a['clearCoat']['parse'](_0x56c8cb['clearCoat']), _0x56c8cb['anisotropy'] && _0x4a876a['anisotropy']['parse'](_0x56c8cb['anisotropy']), _0x56c8cb['brdf'] && _0x4a876a['brdf']['parse'](_0x56c8cb['brdf']), _0x56c8cb['sheen'] && _0x4a876a['sheen']['parse'](_0x56c8cb['brdf']), _0x4a876a; } , _0x153271['PBRMATERIAL_OPAQUE'] = _0x327952['PBRMATERIAL_OPAQUE'], _0x153271['PBRMATERIAL_ALPHATEST'] = _0x327952['PBRMATERIAL_ALPHATEST'], _0x153271['PBRMATERIAL_ALPHABLEND'] = _0x327952['PBRMATERIAL_ALPHABLEND'], _0x153271['PBRMATERIAL_ALPHATESTANDBLEND'] = _0x327952['PBRMATERIAL_ALPHATESTANDBLEND'], _0x153271['DEFAULT_AO_ON_ANALYTICAL_LIGHTS'] = _0x327952['DEFAULT_AO_ON_ANALYTICAL_LIGHTS'], _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'directIntensity', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'emissiveIntensity', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'environmentIntensity', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'specularIntensity', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'disableBumpMap', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'albedoTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'ambientTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'ambientTextureStrength', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'ambientTextureImpactOnAnalyticalLights', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesAndMiscDirty')], _0x153271['prototype'], 'opacityTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'reflectionTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'emissiveTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'reflectivityTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'metallicTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'metallic', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'roughness', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'microSurfaceTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'bumpTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', null)], _0x153271['prototype'], 'lightmapTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])('ambient'), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'ambientColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])('albedo'), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'albedoColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])('reflectivity'), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'reflectivityColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])('reflection'), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'reflectionColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])('emissive'), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'emissiveColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'microSurface', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useLightmapAsShadowmap', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesAndMiscDirty')], _0x153271['prototype'], 'useAlphaFromAlbedoTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesAndMiscDirty')], _0x153271['prototype'], 'forceAlphaTest', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesAndMiscDirty')], _0x153271['prototype'], 'alphaCutOff', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useSpecularOverAlpha', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useMicroSurfaceFromReflectivityMapAlpha', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useRoughnessFromMetallicTextureAlpha', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useRoughnessFromMetallicTextureGreen', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useMetallnessFromMetallicTextureBlue', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useAmbientOcclusionFromMetallicTextureRed', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useAmbientInGrayScale', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useAutoMicroSurfaceFromReflectivityMap', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x153271['prototype'], 'usePhysicalLightFalloff', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x153271['prototype'], 'useGLTFLightFalloff', null), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useRadianceOverAlpha', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useObjectSpaceNormalMap', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useParallax', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useParallaxOcclusion', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'parallaxScaleBias', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsLightsDirty')], _0x153271['prototype'], 'disableLighting', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'forceIrradianceInFragment', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsLightsDirty')], _0x153271['prototype'], 'maxSimultaneousLights', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'invertNormalMapX', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'invertNormalMapY', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'twoSidedLighting', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useAlphaFresnel', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useLinearAlphaFresnel', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'environmentBRDFTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'forceNormalForward', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'enableSpecularAntiAliasing', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useHorizonOcclusion', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x153271['prototype'], 'useRadianceOcclusion', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsMiscDirty')], _0x153271['prototype'], 'unlit', void 0x0), _0x153271; }(_0x327952); _0x376b99['a']['RegisteredTypes']['BABYLON.PBRMaterial'] = _0x36df35; var _0x412209 = _0x59bd00(0x3e) , _0x11fa1f = _0x59bd00(0x47); function _0x2fae77(_0x5ed502) { return _0x5ed502['charCodeAt'](0x0) + (_0x5ed502['charCodeAt'](0x1) << 0x8) + (_0x5ed502['charCodeAt'](0x2) << 0x10) + (_0x5ed502['charCodeAt'](0x3) << 0x18); } var _0x355976 = _0x2fae77('DXT1') , _0xdb2105 = _0x2fae77('DXT3') , _0x174918 = _0x2fae77('DXT5') , _0x29b551 = _0x2fae77('DX10') , _0x364f7e = function() { function _0x2d1ccf() {} return _0x2d1ccf['GetDDSInfo'] = function(_0x15f324) { var _0x173b68 = new Int32Array(_0x15f324,0x0,0x1f) , _0x2bf030 = new Int32Array(_0x15f324,0x0,0x23) , _0xf9b0a5 = 0x1; 0x20000 & _0x173b68[0x2] && (_0xf9b0a5 = Math['max'](0x1, _0x173b68[0x7])); var _0x5e5810 = _0x173b68[0x15] , _0x275e73 = _0x5e5810 === _0x29b551 ? _0x2bf030[0x20] : 0x0 , _0x403594 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']; switch (_0x5e5810) { case 0x71: _0x403594 = _0x24e342['a']['TEXTURETYPE_HALF_FLOAT']; break; case 0x74: _0x403594 = _0x24e342['a']['TEXTURETYPE_FLOAT']; break; case _0x29b551: if (0xa === _0x275e73) { _0x403594 = _0x24e342['a']['TEXTURETYPE_HALF_FLOAT']; break; } } return { 'width': _0x173b68[0x4], 'height': _0x173b68[0x3], 'mipmapCount': _0xf9b0a5, 'isFourCC': 0x4 == (0x4 & _0x173b68[0x14]), 'isRGB': 0x40 == (0x40 & _0x173b68[0x14]), 'isLuminance': 0x20000 == (0x20000 & _0x173b68[0x14]), 'isCube': 0x200 == (0x200 & _0x173b68[0x1c]), 'isCompressed': _0x5e5810 === _0x355976 || _0x5e5810 === _0xdb2105 || _0x5e5810 === _0x174918, 'dxgiFormat': _0x275e73, 'textureType': _0x403594 }; } , _0x2d1ccf['_ToHalfFloat'] = function(_0x3c7f48) { _0x2d1ccf['_FloatView'] || (_0x2d1ccf['_FloatView'] = new Float32Array(0x1), _0x2d1ccf['_Int32View'] = new Int32Array(_0x2d1ccf['_FloatView']['buffer'])), _0x2d1ccf['_FloatView'][0x0] = _0x3c7f48; var _0x189f0a = _0x2d1ccf['_Int32View'][0x0] , _0x4d6857 = _0x189f0a >> 0x10 & 0x8000 , _0xa6fe6 = _0x189f0a >> 0xc & 0x7ff , _0x158f7a = _0x189f0a >> 0x17 & 0xff; return _0x158f7a < 0x67 ? _0x4d6857 : _0x158f7a > 0x8e ? (_0x4d6857 |= 0x7c00, _0x4d6857 |= (0xff == _0x158f7a ? 0x0 : 0x1) && 0x7fffff & _0x189f0a) : _0x158f7a < 0x71 ? _0x4d6857 |= ((_0xa6fe6 |= 0x800) >> 0x72 - _0x158f7a) + (_0xa6fe6 >> 0x71 - _0x158f7a & 0x1) : (_0x4d6857 |= _0x158f7a - 0x70 << 0xa | _0xa6fe6 >> 0x1, _0x4d6857 += 0x1 & _0xa6fe6); } , _0x2d1ccf['_FromHalfFloat'] = function(_0x47fdf6) { var _0x4d6d16 = (0x8000 & _0x47fdf6) >> 0xf , _0x7e4781 = (0x7c00 & _0x47fdf6) >> 0xa , _0x1f2548 = 0x3ff & _0x47fdf6; return 0x0 === _0x7e4781 ? (_0x4d6d16 ? -0x1 : 0x1) * Math['pow'](0x2, -0xe) * (_0x1f2548 / Math['pow'](0x2, 0xa)) : 0x1f == _0x7e4781 ? _0x1f2548 ? NaN : 0x1 / 0x0 * (_0x4d6d16 ? -0x1 : 0x1) : (_0x4d6d16 ? -0x1 : 0x1) * Math['pow'](0x2, _0x7e4781 - 0xf) * (0x1 + _0x1f2548 / Math['pow'](0x2, 0xa)); } , _0x2d1ccf['_GetHalfFloatAsFloatRGBAArrayBuffer'] = function(_0x4b5fce, _0x3daf4d, _0xb83e9, _0x5a0389, _0x4c9175, _0x4d2e95) { for (var _0x43daff = new Float32Array(_0x5a0389), _0x17c30d = new Uint16Array(_0x4c9175,_0xb83e9), _0x470068 = 0x0, _0x3d3d5f = 0x0; _0x3d3d5f < _0x3daf4d; _0x3d3d5f++) for (var _0x5807e8 = 0x0; _0x5807e8 < _0x4b5fce; _0x5807e8++) { var _0x593675 = 0x4 * (_0x5807e8 + _0x3d3d5f * _0x4b5fce); _0x43daff[_0x470068] = _0x2d1ccf['_FromHalfFloat'](_0x17c30d[_0x593675]), _0x43daff[_0x470068 + 0x1] = _0x2d1ccf['_FromHalfFloat'](_0x17c30d[_0x593675 + 0x1]), _0x43daff[_0x470068 + 0x2] = _0x2d1ccf['_FromHalfFloat'](_0x17c30d[_0x593675 + 0x2]), _0x2d1ccf['StoreLODInAlphaChannel'] ? _0x43daff[_0x470068 + 0x3] = _0x4d2e95 : _0x43daff[_0x470068 + 0x3] = _0x2d1ccf['_FromHalfFloat'](_0x17c30d[_0x593675 + 0x3]), _0x470068 += 0x4; } return _0x43daff; } , _0x2d1ccf['_GetHalfFloatRGBAArrayBuffer'] = function(_0x136d2b, _0x2c7f81, _0x1ba191, _0x3084bc, _0x54f346, _0x228504) { if (_0x2d1ccf['StoreLODInAlphaChannel']) { for (var _0x52d722 = new Uint16Array(_0x3084bc), _0x1ec543 = new Uint16Array(_0x54f346,_0x1ba191), _0x29ca76 = 0x0, _0x1ddb8a = 0x0; _0x1ddb8a < _0x2c7f81; _0x1ddb8a++) for (var _0x379474 = 0x0; _0x379474 < _0x136d2b; _0x379474++) { var _0x8a2987 = 0x4 * (_0x379474 + _0x1ddb8a * _0x136d2b); _0x52d722[_0x29ca76] = _0x1ec543[_0x8a2987], _0x52d722[_0x29ca76 + 0x1] = _0x1ec543[_0x8a2987 + 0x1], _0x52d722[_0x29ca76 + 0x2] = _0x1ec543[_0x8a2987 + 0x2], _0x52d722[_0x29ca76 + 0x3] = _0x2d1ccf['_ToHalfFloat'](_0x228504), _0x29ca76 += 0x4; } return _0x52d722; } return new Uint16Array(_0x54f346,_0x1ba191,_0x3084bc); } , _0x2d1ccf['_GetFloatRGBAArrayBuffer'] = function(_0x393535, _0x24602c, _0x2accd1, _0x4bfeb8, _0x3b60d4, _0x2f38a1) { if (_0x2d1ccf['StoreLODInAlphaChannel']) { for (var _0x48214f = new Float32Array(_0x4bfeb8), _0x170cba = new Float32Array(_0x3b60d4,_0x2accd1), _0x593080 = 0x0, _0x39c159 = 0x0; _0x39c159 < _0x24602c; _0x39c159++) for (var _0x1cde27 = 0x0; _0x1cde27 < _0x393535; _0x1cde27++) { var _0x22fb29 = 0x4 * (_0x1cde27 + _0x39c159 * _0x393535); _0x48214f[_0x593080] = _0x170cba[_0x22fb29], _0x48214f[_0x593080 + 0x1] = _0x170cba[_0x22fb29 + 0x1], _0x48214f[_0x593080 + 0x2] = _0x170cba[_0x22fb29 + 0x2], _0x48214f[_0x593080 + 0x3] = _0x2f38a1, _0x593080 += 0x4; } return _0x48214f; } return new Float32Array(_0x3b60d4,_0x2accd1,_0x4bfeb8); } , _0x2d1ccf['_GetFloatAsUIntRGBAArrayBuffer'] = function(_0x5627b9, _0x4c1418, _0x2c6d44, _0xbe49cd, _0x453d84, _0x66004e) { for (var _0xcc389e = new Uint8Array(_0xbe49cd), _0x104f9f = new Float32Array(_0x453d84,_0x2c6d44), _0x59a7c3 = 0x0, _0xf4a74c = 0x0; _0xf4a74c < _0x4c1418; _0xf4a74c++) for (var _0x4df2c2 = 0x0; _0x4df2c2 < _0x5627b9; _0x4df2c2++) { var _0x2b1584 = 0x4 * (_0x4df2c2 + _0xf4a74c * _0x5627b9); _0xcc389e[_0x59a7c3] = 0xff * _0x77cead['a']['Clamp'](_0x104f9f[_0x2b1584]), _0xcc389e[_0x59a7c3 + 0x1] = 0xff * _0x77cead['a']['Clamp'](_0x104f9f[_0x2b1584 + 0x1]), _0xcc389e[_0x59a7c3 + 0x2] = 0xff * _0x77cead['a']['Clamp'](_0x104f9f[_0x2b1584 + 0x2]), _0x2d1ccf['StoreLODInAlphaChannel'] ? _0xcc389e[_0x59a7c3 + 0x3] = _0x66004e : _0xcc389e[_0x59a7c3 + 0x3] = 0xff * _0x77cead['a']['Clamp'](_0x104f9f[_0x2b1584 + 0x3]), _0x59a7c3 += 0x4; } return _0xcc389e; } , _0x2d1ccf['_GetHalfFloatAsUIntRGBAArrayBuffer'] = function(_0x59f1de, _0x2bfabd, _0x56bce7, _0x58a96a, _0xd4be1e, _0x1c54fe) { for (var _0x1ffb2c = new Uint8Array(_0x58a96a), _0x13a79b = new Uint16Array(_0xd4be1e,_0x56bce7), _0x564265 = 0x0, _0x4ee083 = 0x0; _0x4ee083 < _0x2bfabd; _0x4ee083++) for (var _0x193194 = 0x0; _0x193194 < _0x59f1de; _0x193194++) { var _0x240cdb = 0x4 * (_0x193194 + _0x4ee083 * _0x59f1de); _0x1ffb2c[_0x564265] = 0xff * _0x77cead['a']['Clamp'](_0x2d1ccf['_FromHalfFloat'](_0x13a79b[_0x240cdb])), _0x1ffb2c[_0x564265 + 0x1] = 0xff * _0x77cead['a']['Clamp'](_0x2d1ccf['_FromHalfFloat'](_0x13a79b[_0x240cdb + 0x1])), _0x1ffb2c[_0x564265 + 0x2] = 0xff * _0x77cead['a']['Clamp'](_0x2d1ccf['_FromHalfFloat'](_0x13a79b[_0x240cdb + 0x2])), _0x2d1ccf['StoreLODInAlphaChannel'] ? _0x1ffb2c[_0x564265 + 0x3] = _0x1c54fe : _0x1ffb2c[_0x564265 + 0x3] = 0xff * _0x77cead['a']['Clamp'](_0x2d1ccf['_FromHalfFloat'](_0x13a79b[_0x240cdb + 0x3])), _0x564265 += 0x4; } return _0x1ffb2c; } , _0x2d1ccf['_GetRGBAArrayBuffer'] = function(_0x498f83, _0x221989, _0x476e6c, _0x13a3e2, _0x183ef1, _0x57dc54, _0x264967, _0x219dd9, _0x29eaa5) { for (var _0x5bcb7a = new Uint8Array(_0x13a3e2), _0x1da28f = new Uint8Array(_0x183ef1,_0x476e6c), _0x21c848 = 0x0, _0x567f41 = 0x0; _0x567f41 < _0x221989; _0x567f41++) for (var _0x42b309 = 0x0; _0x42b309 < _0x498f83; _0x42b309++) { var _0x49ea22 = 0x4 * (_0x42b309 + _0x567f41 * _0x498f83); _0x5bcb7a[_0x21c848] = _0x1da28f[_0x49ea22 + _0x57dc54], _0x5bcb7a[_0x21c848 + 0x1] = _0x1da28f[_0x49ea22 + _0x264967], _0x5bcb7a[_0x21c848 + 0x2] = _0x1da28f[_0x49ea22 + _0x219dd9], _0x5bcb7a[_0x21c848 + 0x3] = _0x1da28f[_0x49ea22 + _0x29eaa5], _0x21c848 += 0x4; } return _0x5bcb7a; } , _0x2d1ccf['_ExtractLongWordOrder'] = function(_0x5157ff) { return 0x0 === _0x5157ff || 0xff === _0x5157ff || -0x1000000 === _0x5157ff ? 0x0 : 0x1 + _0x2d1ccf['_ExtractLongWordOrder'](_0x5157ff >> 0x8); } , _0x2d1ccf['_GetRGBArrayBuffer'] = function(_0x1a8e53, _0x1cf247, _0x3d28a8, _0x5c938e, _0x536006, _0x21b785, _0x106ce9, _0x3c2ecf) { for (var _0x3d3944 = new Uint8Array(_0x5c938e), _0x281719 = new Uint8Array(_0x536006,_0x3d28a8), _0xc86eb0 = 0x0, _0x20ee8c = 0x0; _0x20ee8c < _0x1cf247; _0x20ee8c++) for (var _0x1203f1 = 0x0; _0x1203f1 < _0x1a8e53; _0x1203f1++) { var _0x306365 = 0x3 * (_0x1203f1 + _0x20ee8c * _0x1a8e53); _0x3d3944[_0xc86eb0] = _0x281719[_0x306365 + _0x21b785], _0x3d3944[_0xc86eb0 + 0x1] = _0x281719[_0x306365 + _0x106ce9], _0x3d3944[_0xc86eb0 + 0x2] = _0x281719[_0x306365 + _0x3c2ecf], _0xc86eb0 += 0x3; } return _0x3d3944; } , _0x2d1ccf['_GetLuminanceArrayBuffer'] = function(_0x1ace00, _0x5967a6, _0x2bb2af, _0x459caf, _0x217455) { for (var _0x555f6a = new Uint8Array(_0x459caf), _0x12869c = new Uint8Array(_0x217455,_0x2bb2af), _0x3d0b8e = 0x0, _0x4aee6c = 0x0; _0x4aee6c < _0x5967a6; _0x4aee6c++) for (var _0x58ec7a = 0x0; _0x58ec7a < _0x1ace00; _0x58ec7a++) { var _0x2615ac = _0x58ec7a + _0x4aee6c * _0x1ace00; _0x555f6a[_0x3d0b8e] = _0x12869c[_0x2615ac], _0x3d0b8e++; } return _0x555f6a; } , _0x2d1ccf['UploadDDSLevels'] = function(_0x2442fe, _0x388ce9, _0x3e7241, _0x5a0448, _0x2d1818, _0x172f5c, _0x5098c3, _0x356fe8) { void 0x0 === _0x5098c3 && (_0x5098c3 = -0x1); var _0x5cd22a = null; _0x5a0448['sphericalPolynomial'] && (_0x5cd22a = new Array()); var _0x7dc3e2, _0x24bc06, _0x502133, _0x53ddfd, _0x5a1e6c, _0x12901b, _0x3aa519, _0x1752a2 = _0x2442fe['getCaps']()['s3tc'], _0x27f0ff = new Int32Array(_0x3e7241,0x0,0x1f), _0x13e5fc = 0x0, _0x4a89d0 = 0x0, _0x418a37 = 0x1; if (0x20534444 === _0x27f0ff[0x0]) if (_0x5a0448['isFourCC'] || _0x5a0448['isRGB'] || _0x5a0448['isLuminance']) if (!_0x5a0448['isCompressed'] || _0x1752a2) { var _0x24ed9a = _0x27f0ff[0x16]; _0x53ddfd = _0x27f0ff[0x1] + 0x4; var _0x1c44ac, _0x12dd50 = !0x1; if (_0x5a0448['isFourCC']) switch (_0x7dc3e2 = _0x27f0ff[0x15]) { case _0x355976: _0x418a37 = 0x8, _0x4a89d0 = _0x1752a2['COMPRESSED_RGBA_S3TC_DXT1_EXT']; break; case _0xdb2105: _0x418a37 = 0x10, _0x4a89d0 = _0x1752a2['COMPRESSED_RGBA_S3TC_DXT3_EXT']; break; case _0x174918: _0x418a37 = 0x10, _0x4a89d0 = _0x1752a2['COMPRESSED_RGBA_S3TC_DXT5_EXT']; break; case 0x71: case 0x74: _0x12dd50 = !0x0; break; case _0x29b551: _0x53ddfd += 0x14; var _0x470f76 = !0x1; switch (_0x5a0448['dxgiFormat']) { case 0xa: _0x12dd50 = !0x0, _0x470f76 = !0x0; break; case 0x58: _0x5a0448['isRGB'] = !0x0, _0x5a0448['isFourCC'] = !0x1, _0x24ed9a = 0x20, _0x470f76 = !0x0; } if (_0x470f76) break; default: return void console['error']('Unsupported\x20FourCC\x20code:', (_0x1c44ac = _0x7dc3e2, String['fromCharCode'](0xff & _0x1c44ac, _0x1c44ac >> 0x8 & 0xff, _0x1c44ac >> 0x10 & 0xff, _0x1c44ac >> 0x18 & 0xff))); } var _0x1c6b7d = _0x2d1ccf['_ExtractLongWordOrder'](_0x27f0ff[0x17]) , _0x46d70c = _0x2d1ccf['_ExtractLongWordOrder'](_0x27f0ff[0x18]) , _0x12583d = _0x2d1ccf['_ExtractLongWordOrder'](_0x27f0ff[0x19]) , _0x1c7c96 = _0x2d1ccf['_ExtractLongWordOrder'](_0x27f0ff[0x1a]); _0x12dd50 && (_0x4a89d0 = _0x2442fe['_getRGBABufferInternalSizedFormat'](_0x5a0448['textureType'])), _0x12901b = 0x1, 0x20000 & _0x27f0ff[0x2] && !0x1 !== _0x2d1818 && (_0x12901b = Math['max'](0x1, _0x27f0ff[0x7])); for (var _0x1c8f6a = _0x356fe8 || 0x0; _0x1c8f6a < _0x172f5c; _0x1c8f6a++) { for (_0x24bc06 = _0x27f0ff[0x4], _0x502133 = _0x27f0ff[0x3], _0x3aa519 = 0x0; _0x3aa519 < _0x12901b; ++_0x3aa519) { if (-0x1 === _0x5098c3 || _0x5098c3 === _0x3aa519) { var _0x3934ef = -0x1 === _0x5098c3 ? _0x3aa519 : 0x0; if (!_0x5a0448['isCompressed'] && _0x5a0448['isFourCC']) { _0x388ce9['format'] = _0x24e342['a']['TEXTUREFORMAT_RGBA'], _0x13e5fc = _0x24bc06 * _0x502133 * 0x4; var _0x5964f7 = null; _0x2442fe['_badOS'] || _0x2442fe['_badDesktopOS'] || !_0x2442fe['getCaps']()['textureHalfFloat'] && !_0x2442fe['getCaps']()['textureFloat'] ? (0x80 === _0x24ed9a ? (_0x5964f7 = _0x2d1ccf['_GetFloatAsUIntRGBAArrayBuffer'](_0x24bc06, _0x502133, _0x53ddfd, _0x13e5fc, _0x3e7241, _0x3934ef), _0x5cd22a && 0x0 == _0x3934ef && _0x5cd22a['push'](_0x2d1ccf['_GetFloatRGBAArrayBuffer'](_0x24bc06, _0x502133, _0x53ddfd, _0x13e5fc, _0x3e7241, _0x3934ef))) : 0x40 === _0x24ed9a && (_0x5964f7 = _0x2d1ccf['_GetHalfFloatAsUIntRGBAArrayBuffer'](_0x24bc06, _0x502133, _0x53ddfd, _0x13e5fc, _0x3e7241, _0x3934ef), _0x5cd22a && 0x0 == _0x3934ef && _0x5cd22a['push'](_0x2d1ccf['_GetHalfFloatAsFloatRGBAArrayBuffer'](_0x24bc06, _0x502133, _0x53ddfd, _0x13e5fc, _0x3e7241, _0x3934ef))), _0x388ce9['type'] = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']) : 0x80 === _0x24ed9a ? (_0x388ce9['type'] = _0x24e342['a']['TEXTURETYPE_FLOAT'], _0x5964f7 = _0x2d1ccf['_GetFloatRGBAArrayBuffer'](_0x24bc06, _0x502133, _0x53ddfd, _0x13e5fc, _0x3e7241, _0x3934ef), _0x5cd22a && 0x0 == _0x3934ef && _0x5cd22a['push'](_0x5964f7)) : 0x40 !== _0x24ed9a || _0x2442fe['getCaps']()['textureHalfFloat'] ? (_0x388ce9['type'] = _0x24e342['a']['TEXTURETYPE_HALF_FLOAT'], _0x5964f7 = _0x2d1ccf['_GetHalfFloatRGBAArrayBuffer'](_0x24bc06, _0x502133, _0x53ddfd, _0x13e5fc, _0x3e7241, _0x3934ef), _0x5cd22a && 0x0 == _0x3934ef && _0x5cd22a['push'](_0x2d1ccf['_GetHalfFloatAsFloatRGBAArrayBuffer'](_0x24bc06, _0x502133, _0x53ddfd, _0x13e5fc, _0x3e7241, _0x3934ef))) : (_0x388ce9['type'] = _0x24e342['a']['TEXTURETYPE_FLOAT'], _0x5964f7 = _0x2d1ccf['_GetHalfFloatAsFloatRGBAArrayBuffer'](_0x24bc06, _0x502133, _0x53ddfd, _0x13e5fc, _0x3e7241, _0x3934ef), _0x5cd22a && 0x0 == _0x3934ef && _0x5cd22a['push'](_0x5964f7)), _0x5964f7 && _0x2442fe['_uploadDataToTextureDirectly'](_0x388ce9, _0x5964f7, _0x1c8f6a, _0x3934ef); } else if (_0x5a0448['isRGB']) _0x388ce9['type'] = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'], 0x18 === _0x24ed9a ? (_0x388ce9['format'] = _0x24e342['a']['TEXTUREFORMAT_RGB'], _0x13e5fc = _0x24bc06 * _0x502133 * 0x3, _0x5a1e6c = _0x2d1ccf['_GetRGBArrayBuffer'](_0x24bc06, _0x502133, _0x53ddfd, _0x13e5fc, _0x3e7241, _0x1c6b7d, _0x46d70c, _0x12583d), _0x2442fe['_uploadDataToTextureDirectly'](_0x388ce9, _0x5a1e6c, _0x1c8f6a, _0x3934ef)) : (_0x388ce9['format'] = _0x24e342['a']['TEXTUREFORMAT_RGBA'], _0x13e5fc = _0x24bc06 * _0x502133 * 0x4, _0x5a1e6c = _0x2d1ccf['_GetRGBAArrayBuffer'](_0x24bc06, _0x502133, _0x53ddfd, _0x13e5fc, _0x3e7241, _0x1c6b7d, _0x46d70c, _0x12583d, _0x1c7c96), _0x2442fe['_uploadDataToTextureDirectly'](_0x388ce9, _0x5a1e6c, _0x1c8f6a, _0x3934ef)); else if (_0x5a0448['isLuminance']) { var _0x3ef464 = _0x2442fe['_getUnpackAlignement']() , _0x233334 = _0x24bc06; _0x13e5fc = Math['floor']((_0x24bc06 + _0x3ef464 - 0x1) / _0x3ef464) * _0x3ef464 * (_0x502133 - 0x1) + _0x233334, _0x5a1e6c = _0x2d1ccf['_GetLuminanceArrayBuffer'](_0x24bc06, _0x502133, _0x53ddfd, _0x13e5fc, _0x3e7241), _0x388ce9['format'] = _0x24e342['a']['TEXTUREFORMAT_LUMINANCE'], _0x388ce9['type'] = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'], _0x2442fe['_uploadDataToTextureDirectly'](_0x388ce9, _0x5a1e6c, _0x1c8f6a, _0x3934ef); } else _0x13e5fc = Math['max'](0x4, _0x24bc06) / 0x4 * Math['max'](0x4, _0x502133) / 0x4 * _0x418a37, _0x5a1e6c = new Uint8Array(_0x3e7241,_0x53ddfd,_0x13e5fc), _0x388ce9['type'] = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'], _0x2442fe['_uploadCompressedDataToTextureDirectly'](_0x388ce9, _0x4a89d0, _0x24bc06, _0x502133, _0x5a1e6c, _0x1c8f6a, _0x3934ef); } _0x53ddfd += _0x24ed9a ? _0x24bc06 * _0x502133 * (_0x24ed9a / 0x8) : _0x13e5fc, _0x24bc06 *= 0.5, _0x502133 *= 0.5, _0x24bc06 = Math['max'](0x1, _0x24bc06), _0x502133 = Math['max'](0x1, _0x502133); } if (void 0x0 !== _0x356fe8) break; } _0x5cd22a && _0x5cd22a['length'] > 0x0 ? _0x5a0448['sphericalPolynomial'] = _0x11fa1f['a']['ConvertCubeMapToSphericalPolynomial']({ 'size': _0x27f0ff[0x4], 'right': _0x5cd22a[0x0], 'left': _0x5cd22a[0x1], 'up': _0x5cd22a[0x2], 'down': _0x5cd22a[0x3], 'front': _0x5cd22a[0x4], 'back': _0x5cd22a[0x5], 'format': _0x24e342['a']['TEXTUREFORMAT_RGBA'], 'type': _0x24e342['a']['TEXTURETYPE_FLOAT'], 'gammaSpace': !0x1 }) : _0x5a0448['sphericalPolynomial'] = void 0x0; } else _0x3f98cb['a']['Error']('Compressed\x20textures\x20are\x20not\x20supported\x20on\x20this\x20platform.'); else _0x3f98cb['a']['Error']('Unsupported\x20format,\x20must\x20contain\x20a\x20FourCC,\x20RGB\x20or\x20LUMINANCE\x20code'); else _0x3f98cb['a']['Error']('Invalid\x20magic\x20number\x20in\x20DDS\x20header'); } , _0x2d1ccf['StoreLODInAlphaChannel'] = !0x1, _0x2d1ccf; }(); _0x3647a9['b']['prototype']['createPrefilteredCubeTexture'] = function(_0x2eb930, _0x5118fc, _0xe92b33, _0x4d0043, _0x143090, _0x5e7d0d, _0x4c74ee, _0x76348c, _0x28c610) { var _0x5e92fd = this; void 0x0 === _0x143090 && (_0x143090 = null), void 0x0 === _0x5e7d0d && (_0x5e7d0d = null), void 0x0 === _0x76348c && (_0x76348c = null), void 0x0 === _0x28c610 && (_0x28c610 = !0x0); return this['createCubeTexture'](_0x2eb930, _0x5118fc, null, !0x1, function(_0x3b8604) { if (_0x3b8604) { var _0x365331 = _0x3b8604['texture']; if (_0x28c610 ? _0x3b8604['info']['sphericalPolynomial'] && (_0x365331['_sphericalPolynomial'] = _0x3b8604['info']['sphericalPolynomial']) : _0x365331['_sphericalPolynomial'] = new _0x412209['b'](), _0x365331['_dataSource'] = _0x2826dc['a']['DATASOURCE_CUBEPREFILTERED'], _0x5e92fd['getCaps']()['textureLOD']) _0x143090 && _0x143090(_0x365331); else { var _0xbe4a = _0x5e92fd['_gl'] , _0x1e1010 = _0x3b8604['width']; if (_0x1e1010) { for (var _0x3dfc6c = [], _0x2a1907 = 0x0; _0x2a1907 < 0x3; _0x2a1907++) { var _0x5ccf8f = 0x1 - _0x2a1907 / 0x2 , _0x5f06f7 = _0x4d0043 , _0x2ea7c4 = _0x77cead['a']['Log2'](_0x1e1010) * _0xe92b33 + _0x4d0043 , _0x1fdf1e = _0x5f06f7 + (_0x2ea7c4 - _0x5f06f7) * _0x5ccf8f , _0x4a8607 = Math['round'](Math['min'](Math['max'](_0x1fdf1e, 0x0), _0x2ea7c4)) , _0x55114b = new _0x2826dc['a'](_0x5e92fd,_0x2826dc['a']['DATASOURCE_TEMP']); if (_0x55114b['type'] = _0x365331['type'], _0x55114b['format'] = _0x365331['format'], _0x55114b['width'] = Math['pow'](0x2, Math['max'](_0x77cead['a']['Log2'](_0x1e1010) - _0x4a8607, 0x0)), _0x55114b['height'] = _0x55114b['width'], _0x55114b['isCube'] = !0x0, _0x5e92fd['_bindTextureDirectly'](_0xbe4a['TEXTURE_CUBE_MAP'], _0x55114b, !0x0), _0xbe4a['texParameteri'](_0xbe4a['TEXTURE_CUBE_MAP'], _0xbe4a['TEXTURE_MAG_FILTER'], _0xbe4a['LINEAR']), _0xbe4a['texParameteri'](_0xbe4a['TEXTURE_CUBE_MAP'], _0xbe4a['TEXTURE_MIN_FILTER'], _0xbe4a['LINEAR']), _0xbe4a['texParameteri'](_0xbe4a['TEXTURE_CUBE_MAP'], _0xbe4a['TEXTURE_WRAP_S'], _0xbe4a['CLAMP_TO_EDGE']), _0xbe4a['texParameteri'](_0xbe4a['TEXTURE_CUBE_MAP'], _0xbe4a['TEXTURE_WRAP_T'], _0xbe4a['CLAMP_TO_EDGE']), _0x3b8604['isDDS']) { var _0x45883c = _0x3b8604['info'] , _0x566cc8 = _0x3b8604['data']; _0x5e92fd['_unpackFlipY'](_0x45883c['isCompressed']), _0x364f7e['UploadDDSLevels'](_0x5e92fd, _0x55114b, _0x566cc8, _0x45883c, !0x0, 0x6, _0x4a8607); } else _0x3f98cb['a']['Warn']('DDS\x20is\x20the\x20only\x20prefiltered\x20cube\x20map\x20supported\x20so\x20far.'); _0x5e92fd['_bindTextureDirectly'](_0xbe4a['TEXTURE_CUBE_MAP'], null); var _0x466d88 = new _0x134235['a'](_0x5118fc); _0x466d88['isCube'] = !0x0, _0x466d88['_texture'] = _0x55114b, _0x55114b['isReady'] = !0x0, _0x3dfc6c['push'](_0x466d88); } _0x365331['_lodTextureHigh'] = _0x3dfc6c[0x2], _0x365331['_lodTextureMid'] = _0x3dfc6c[0x1], _0x365331['_lodTextureLow'] = _0x3dfc6c[0x0], _0x143090 && _0x143090(_0x365331); } } } else _0x143090 && _0x143090(null); }, _0x5e7d0d, _0x4c74ee, _0x76348c, _0x28c610, _0xe92b33, _0x4d0043); } ; var _0x5b0fba = function() { function _0x1e3347() { this['supportCascades'] = !0x0; } return _0x1e3347['prototype']['canLoad'] = function(_0xecf22b, _0x107a57, _0x279fba, _0x274b39, _0x4cd5f1) { return 0x0 === _0xecf22b['indexOf']('.dds'); } , _0x1e3347['prototype']['transformUrl'] = function(_0xead36b, _0x2a6551) { return _0xead36b; } , _0x1e3347['prototype']['getFallbackTextureUrl'] = function(_0x28c674, _0x417cd0) { return null; } , _0x1e3347['prototype']['loadCubeData'] = function(_0x5d8416, _0x3ec1ea, _0x302152, _0x2d29a4, _0x5323fc) { var _0x1ac63b, _0x1d82da = _0x3ec1ea['getEngine'](), _0x59f01d = !0x1; if (Array['isArray'](_0x5d8416)) for (var _0xcabe39 = 0x0; _0xcabe39 < _0x5d8416['length']; _0xcabe39++) { var _0x2fcc9e = _0x5d8416[_0xcabe39]; _0x1ac63b = _0x364f7e['GetDDSInfo'](_0x2fcc9e), _0x3ec1ea['width'] = _0x1ac63b['width'], _0x3ec1ea['height'] = _0x1ac63b['height'], _0x59f01d = (_0x1ac63b['isRGB'] || _0x1ac63b['isLuminance'] || _0x1ac63b['mipmapCount'] > 0x1) && _0x3ec1ea['generateMipMaps'], _0x1d82da['_unpackFlipY'](_0x1ac63b['isCompressed']), _0x364f7e['UploadDDSLevels'](_0x1d82da, _0x3ec1ea, _0x2fcc9e, _0x1ac63b, _0x59f01d, 0x6, -0x1, _0xcabe39), _0x1ac63b['isFourCC'] || 0x1 !== _0x1ac63b['mipmapCount'] || _0x1d82da['generateMipMapsForCubemap'](_0x3ec1ea); } else { var _0x325948 = _0x5d8416; _0x1ac63b = _0x364f7e['GetDDSInfo'](_0x325948), _0x3ec1ea['width'] = _0x1ac63b['width'], _0x3ec1ea['height'] = _0x1ac63b['height'], _0x302152 && (_0x1ac63b['sphericalPolynomial'] = new _0x412209['b']()), _0x59f01d = (_0x1ac63b['isRGB'] || _0x1ac63b['isLuminance'] || _0x1ac63b['mipmapCount'] > 0x1) && _0x3ec1ea['generateMipMaps'], _0x1d82da['_unpackFlipY'](_0x1ac63b['isCompressed']), _0x364f7e['UploadDDSLevels'](_0x1d82da, _0x3ec1ea, _0x325948, _0x1ac63b, _0x59f01d, 0x6), _0x1ac63b['isFourCC'] || 0x1 !== _0x1ac63b['mipmapCount'] || _0x1d82da['generateMipMapsForCubemap'](_0x3ec1ea); } _0x1d82da['_setCubeMapTextureParams'](_0x59f01d), _0x3ec1ea['isReady'] = !0x0, _0x2d29a4 && _0x2d29a4({ 'isDDS': !0x0, 'width': _0x3ec1ea['width'], 'info': _0x1ac63b, 'data': _0x5d8416, 'texture': _0x3ec1ea }); } , _0x1e3347['prototype']['loadData'] = function(_0x32938c, _0x4405e6, _0x2d2334) { var _0x32984d = _0x364f7e['GetDDSInfo'](_0x32938c) , _0x17b679 = (_0x32984d['isRGB'] || _0x32984d['isLuminance'] || _0x32984d['mipmapCount'] > 0x1) && _0x4405e6['generateMipMaps'] && _0x32984d['width'] >> _0x32984d['mipmapCount'] - 0x1 == 0x1; _0x2d2334(_0x32984d['width'], _0x32984d['height'], _0x17b679, _0x32984d['isFourCC'], function() { _0x364f7e['UploadDDSLevels'](_0x4405e6['getEngine'](), _0x4405e6, _0x32938c, _0x32984d, _0x17b679, 0x1); }); } , _0x1e3347; }(); _0x3647a9['b']['_TextureLoaders']['push'](new _0x5b0fba()); var _0x2c08c1 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0a#include\x0avoid\x20main(void)\x0a{\x0agl_FragColor=toRGBD(texture2D(textureSampler,vUV).rgb);\x0a}'; _0x3e9e56['a']['ShadersStore']['rgbdEncodePixelShader'] = _0x2c08c1; var _0x4cf463 = function() { function _0x501b71() {} return _0x501b71['GetEnvInfo'] = function(_0x4f38ae) { for (var _0x14228c = new DataView(_0x4f38ae), _0x5af918 = 0x0, _0x47adb8 = 0x0; _0x47adb8 < _0x501b71['_MagicBytes']['length']; _0x47adb8++) if (_0x14228c['getUint8'](_0x5af918++) !== _0x501b71['_MagicBytes'][_0x47adb8]) return _0x3f98cb['a']['Error']('Not\x20a\x20babylon\x20environment\x20map'), null; for (var _0x5e743f = '', _0x52814a = 0x0; _0x52814a = _0x14228c['getUint8'](_0x5af918++); ) _0x5e743f += String['fromCharCode'](_0x52814a); var _0x57706c = JSON['parse'](_0x5e743f); return _0x57706c['specular'] && (_0x57706c['specular']['specularDataPosition'] = _0x5af918, _0x57706c['specular']['lodGenerationScale'] = _0x57706c['specular']['lodGenerationScale'] || 0.8), _0x57706c; } , _0x501b71['CreateEnvTextureAsync'] = function(_0x3167aa) { var _0x342033 = this , _0x44d914 = _0x3167aa['getInternalTexture'](); if (!_0x44d914) return Promise['reject']('The\x20cube\x20texture\x20is\x20invalid.'); if (!_0x3167aa['_prefiltered']) return Promise['reject']('The\x20cube\x20texture\x20is\x20invalid\x20(not\x20prefiltered).'); var _0x141f46 = _0x44d914['getEngine'](); if (_0x141f46 && _0x141f46['premultipliedAlpha']) return Promise['reject']('Env\x20texture\x20can\x20only\x20be\x20created\x20when\x20the\x20engine\x20is\x20created\x20with\x20the\x20premultipliedAlpha\x20option\x20set\x20to\x20false.'); if (_0x3167aa['textureType'] === _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']) return Promise['reject']('The\x20cube\x20texture\x20should\x20allow\x20HDR\x20(Full\x20Float\x20or\x20Half\x20Float).'); var _0x206b0c = _0x141f46['getRenderingCanvas'](); if (!_0x206b0c) return Promise['reject']('Env\x20texture\x20can\x20only\x20be\x20created\x20when\x20the\x20engine\x20is\x20associated\x20to\x20a\x20canvas.'); var _0x2304d5 = _0x24e342['a']['TEXTURETYPE_FLOAT']; if (!_0x141f46['getCaps']()['textureFloatRender'] && (_0x2304d5 = _0x24e342['a']['TEXTURETYPE_HALF_FLOAT'], !_0x141f46['getCaps']()['textureHalfFloatRender'])) return Promise['reject']('Env\x20texture\x20can\x20only\x20be\x20created\x20when\x20the\x20browser\x20supports\x20half\x20float\x20or\x20full\x20float\x20rendering.'); var _0x5854c5 = _0x44d914['width'] , _0x24fe2d = new _0x366639['a'](_0x141f46) , _0x19796b = {} , _0x35eee0 = [] , _0x167be7 = _0x77cead['a']['Log2'](_0x44d914['width']); _0x167be7 = Math['round'](_0x167be7); for (var _0x2ce0c2 = function(_0x4c5326) { for (var _0xd89f6e = Math['pow'](0x2, _0x167be7 - _0x4c5326), _0x5aa674 = function(_0x56b15f) { var _0x421a8f = _0x3167aa['readPixels'](_0x56b15f, _0x4c5326) , _0x19f979 = _0x141f46['createRawTexture'](_0x421a8f, _0xd89f6e, _0xd89f6e, _0x24e342['a']['TEXTUREFORMAT_RGBA'], !0x1, !0x1, _0x24e342['a']['TEXTURE_NEAREST_SAMPLINGMODE'], null, _0x2304d5) , _0x23f8da = new Promise(function(_0x1ed1cf, _0x2d5986) { var _0x56c5e5 = new _0x1f5ab5('rgbdEncode','rgbdEncode',null,null,0x1,null,_0x24e342['a']['TEXTURE_NEAREST_SAMPLINGMODE'],_0x141f46,!0x1,void 0x0,_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'],void 0x0,null,!0x1); _0x56c5e5['getEffect']()['executeWhenCompiled'](function() { _0x56c5e5['onApply'] = function(_0x33ee1c) { _0x33ee1c['_bindTexture']('textureSampler', _0x19f979); } ; var _0x328497 = _0x141f46['getRenderWidth']() , _0x548345 = _0x141f46['getRenderHeight'](); _0x141f46['setSize'](_0xd89f6e, _0xd89f6e), _0x24fe2d['postProcessManager']['directRender']([_0x56c5e5], null), _0x1eb50e['h']['ToBlob'](_0x206b0c, function(_0x5409fb) { var _0x19ec72 = new FileReader(); _0x19ec72['onload'] = function(_0x253eb1) { var _0x48b179 = _0x253eb1['target']['result']; _0x19796b[0x6 * _0x4c5326 + _0x56b15f] = _0x48b179, _0x1ed1cf(); } , _0x19ec72['readAsArrayBuffer'](_0x5409fb); }), _0x141f46['setSize'](_0x328497, _0x548345); }); } ); _0x35eee0['push'](_0x23f8da); }, _0x241ab8 = 0x0; _0x241ab8 < 0x6; _0x241ab8++) _0x5aa674(_0x241ab8); }, _0x320b06 = 0x0; _0x320b06 <= _0x167be7; _0x320b06++) _0x2ce0c2(_0x320b06); return Promise['all'](_0x35eee0)['then'](function() { _0x24fe2d['dispose'](); for (var _0x580bdc = { 'version': 0x1, 'width': _0x5854c5, 'irradiance': _0x342033['_CreateEnvTextureIrradiance'](_0x3167aa), 'specular': { 'mipmaps': [], 'lodGenerationScale': _0x3167aa['lodGenerationScale'] } }, _0xd8fc7b = 0x0, _0x45efed = 0x0; _0x45efed <= _0x167be7; _0x45efed++) for (var _0x59f1d9 = 0x0; _0x59f1d9 < 0x6; _0x59f1d9++) { var _0x36e343 = _0x19796b[0x6 * _0x45efed + _0x59f1d9]['byteLength']; _0x580bdc['specular']['mipmaps']['push']({ 'length': _0x36e343, 'position': _0xd8fc7b }), _0xd8fc7b += _0x36e343; } for (var _0x29e14c = JSON['stringify'](_0x580bdc), _0x53f71e = new ArrayBuffer(_0x29e14c['length'] + 0x1), _0x3a2518 = new Uint8Array(_0x53f71e), _0x2a45d8 = (_0x45efed = 0x0, _0x29e14c['length']); _0x45efed < _0x2a45d8; _0x45efed++) _0x3a2518[_0x45efed] = _0x29e14c['charCodeAt'](_0x45efed); _0x3a2518[_0x29e14c['length']] = 0x0; var _0x22f237 = _0x501b71['_MagicBytes']['length'] + _0xd8fc7b + _0x53f71e['byteLength'] , _0x589f40 = new ArrayBuffer(_0x22f237) , _0x241033 = new Uint8Array(_0x589f40) , _0x473a2f = new DataView(_0x589f40) , _0x39d71d = 0x0; for (_0x45efed = 0x0; _0x45efed < _0x501b71['_MagicBytes']['length']; _0x45efed++) _0x473a2f['setUint8'](_0x39d71d++, _0x501b71['_MagicBytes'][_0x45efed]); _0x241033['set'](new Uint8Array(_0x53f71e), _0x39d71d), _0x39d71d += _0x53f71e['byteLength']; for (_0x45efed = 0x0; _0x45efed <= _0x167be7; _0x45efed++) for (_0x59f1d9 = 0x0; _0x59f1d9 < 0x6; _0x59f1d9++) { var _0x1c3f67 = _0x19796b[0x6 * _0x45efed + _0x59f1d9]; _0x241033['set'](new Uint8Array(_0x1c3f67), _0x39d71d), _0x39d71d += _0x1c3f67['byteLength']; } return _0x589f40; }); } , _0x501b71['_CreateEnvTextureIrradiance'] = function(_0x51bc88) { var _0x2b3606 = _0x51bc88['sphericalPolynomial']; return null == _0x2b3606 ? null : { 'x': [_0x2b3606['x']['x'], _0x2b3606['x']['y'], _0x2b3606['x']['z']], 'y': [_0x2b3606['y']['x'], _0x2b3606['y']['y'], _0x2b3606['y']['z']], 'z': [_0x2b3606['z']['x'], _0x2b3606['z']['y'], _0x2b3606['z']['z']], 'xx': [_0x2b3606['xx']['x'], _0x2b3606['xx']['y'], _0x2b3606['xx']['z']], 'yy': [_0x2b3606['yy']['x'], _0x2b3606['yy']['y'], _0x2b3606['yy']['z']], 'zz': [_0x2b3606['zz']['x'], _0x2b3606['zz']['y'], _0x2b3606['zz']['z']], 'yz': [_0x2b3606['yz']['x'], _0x2b3606['yz']['y'], _0x2b3606['yz']['z']], 'zx': [_0x2b3606['zx']['x'], _0x2b3606['zx']['y'], _0x2b3606['zx']['z']], 'xy': [_0x2b3606['xy']['x'], _0x2b3606['xy']['y'], _0x2b3606['xy']['z']] }; } , _0x501b71['UploadEnvLevelsAsync'] = function(_0x5d900f, _0x21004d, _0x53ea49) { if (0x1 !== _0x53ea49['version']) throw new Error('Unsupported\x20babylon\x20environment\x20map\x20version\x20\x22' + _0x53ea49['version'] + '\x22'); var _0x567122 = _0x53ea49['specular']; if (!_0x567122) return Promise['resolve'](); var _0x398494 = _0x77cead['a']['Log2'](_0x53ea49['width']); if (_0x398494 = Math['round'](_0x398494) + 0x1, _0x567122['mipmaps']['length'] !== 0x6 * _0x398494) throw new Error('Unsupported\x20specular\x20mipmaps\x20number\x20\x22' + _0x567122['mipmaps']['length'] + '\x22'); _0x5d900f['_lodGenerationScale'] = _0x567122['lodGenerationScale']; for (var _0x42b3f8 = new Array(_0x398494), _0x26c51d = 0x0; _0x26c51d < _0x398494; _0x26c51d++) { _0x42b3f8[_0x26c51d] = new Array(0x6); for (var _0x1e3b2f = 0x0; _0x1e3b2f < 0x6; _0x1e3b2f++) { var _0x3df9cb = _0x567122['mipmaps'][0x6 * _0x26c51d + _0x1e3b2f]; _0x42b3f8[_0x26c51d][_0x1e3b2f] = new Uint8Array(_0x21004d,_0x567122['specularDataPosition'] + _0x3df9cb['position'],_0x3df9cb['length']); } } return _0x501b71['UploadLevelsAsync'](_0x5d900f, _0x42b3f8); } , _0x501b71['UploadLevelsAsync'] = function(_0x5c9a6d, _0x5a9049) { if (!_0x1eb50e['h']['IsExponentOfTwo'](_0x5c9a6d['width'])) throw new Error('Texture\x20size\x20must\x20be\x20a\x20power\x20of\x20two'); var _0x594666 = Math['round'](_0x77cead['a']['Log2'](_0x5c9a6d['width'])) + 0x1 , _0x124628 = _0x5c9a6d['getEngine']() , _0x599907 = !0x1 , _0x870160 = !0x1 , _0x3c9f07 = null , _0x272ac2 = null , _0x36c742 = null , _0x1ded21 = _0x124628['getCaps'](); if (_0x5c9a6d['format'] = _0x24e342['a']['TEXTUREFORMAT_RGBA'], _0x5c9a6d['type'] = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'], _0x5c9a6d['generateMipMaps'] = !0x0, _0x124628['updateTextureSamplingMode'](_0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE'], _0x5c9a6d), _0x1ded21['textureLOD'] ? _0x124628['webGLVersion'] < 0x2 ? _0x599907 = !0x1 : _0x1ded21['textureHalfFloatRender'] && _0x1ded21['textureHalfFloatLinearFiltering'] ? (_0x599907 = !0x0, _0x5c9a6d['type'] = _0x24e342['a']['TEXTURETYPE_HALF_FLOAT']) : _0x1ded21['textureFloatRender'] && _0x1ded21['textureFloatLinearFiltering'] && (_0x599907 = !0x0, _0x5c9a6d['type'] = _0x24e342['a']['TEXTURETYPE_FLOAT']) : (_0x599907 = !0x1, _0x870160 = !0x0, _0x36c742 = {}), _0x599907) _0x3c9f07 = new _0x1f5ab5('rgbdDecode','rgbdDecode',null,null,0x1,null,_0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE'],_0x124628,!0x1,void 0x0,_0x5c9a6d['type'],void 0x0,null,!0x1), _0x5c9a6d['_isRGBD'] = !0x1, _0x5c9a6d['invertY'] = !0x1, _0x272ac2 = _0x124628['createRenderTargetCubeTexture'](_0x5c9a6d['width'], { 'generateDepthBuffer': !0x1, 'generateMipMaps': !0x0, 'generateStencilBuffer': !0x1, 'samplingMode': _0x24e342['a']['TEXTURE_TRILINEAR_SAMPLINGMODE'], 'type': _0x5c9a6d['type'], 'format': _0x24e342['a']['TEXTUREFORMAT_RGBA'] }); else if (_0x5c9a6d['_isRGBD'] = !0x0, _0x5c9a6d['invertY'] = !0x0, _0x870160) for (var _0x357513 = _0x5c9a6d['_lodGenerationScale'], _0x379f14 = _0x5c9a6d['_lodGenerationOffset'], _0x39db3c = 0x0; _0x39db3c < 0x3; _0x39db3c++) { var _0x149176 = (_0x594666 - 0x1) * _0x357513 + _0x379f14 , _0x5438d7 = _0x379f14 + (_0x149176 - _0x379f14) * (0x1 - _0x39db3c / 0x2) , _0x5ed6f = Math['round'](Math['min'](Math['max'](_0x5438d7, 0x0), _0x149176)) , _0x72da10 = new _0x2826dc['a'](_0x124628,_0x2826dc['a']['DATASOURCE_TEMP']); _0x72da10['isCube'] = !0x0, _0x72da10['invertY'] = !0x0, _0x72da10['generateMipMaps'] = !0x1, _0x124628['updateTextureSamplingMode'](_0x24e342['a']['TEXTURE_LINEAR_LINEAR'], _0x72da10); var _0x6d8c1f = new _0x134235['a'](null); switch (_0x6d8c1f['isCube'] = !0x0, _0x6d8c1f['_texture'] = _0x72da10, _0x36c742[_0x5ed6f] = _0x6d8c1f, _0x39db3c) { case 0x0: _0x5c9a6d['_lodTextureLow'] = _0x6d8c1f; break; case 0x1: _0x5c9a6d['_lodTextureMid'] = _0x6d8c1f; break; case 0x2: _0x5c9a6d['_lodTextureHigh'] = _0x6d8c1f; } } var _0xbbb55a = [] , _0x214af7 = function(_0xc64870) { for (var _0x5ce854 = function(_0x34ad38) { var _0x2e2203 = _0x5a9049[_0xc64870][_0x34ad38] , _0x1b0cd7 = new Blob([_0x2e2203],{ 'type': 'image/png' }) , _0xc60012 = URL['createObjectURL'](_0x1b0cd7) , _0x298313 = new Image(); _0x298313['src'] = _0xc60012; var _0x4c687d = new Promise(function(_0x50c91f, _0x4e50c1) { _0x298313['onload'] = function() { if (_0x599907) { var _0xce0fa7 = _0x124628['createTexture'](null, !0x0, !0x0, null, _0x24e342['a']['TEXTURE_NEAREST_SAMPLINGMODE'], null, function(_0x2f7192) { _0x4e50c1(_0x2f7192); }, _0x298313); _0x3c9f07['getEffect']()['executeWhenCompiled'](function() { _0x3c9f07['onApply'] = function(_0x45d79f) { _0x45d79f['_bindTexture']('textureSampler', _0xce0fa7), _0x45d79f['setFloat2']('scale', 0x1, 0x1); } , _0x124628['scenes'][0x0]['postProcessManager']['directRender']([_0x3c9f07], _0x272ac2, !0x0, _0x34ad38, _0xc64870), _0x124628['restoreDefaultFramebuffer'](), _0xce0fa7['dispose'](), window['URL']['revokeObjectURL'](_0xc60012), _0x50c91f(); }); } else { if (_0x124628['_uploadImageToTexture'](_0x5c9a6d, _0x298313, _0x34ad38, _0xc64870), _0x870160) { var _0x190915 = _0x36c742[_0xc64870]; _0x190915 && _0x124628['_uploadImageToTexture'](_0x190915['_texture'], _0x298313, _0x34ad38, 0x0); } _0x50c91f(); } } , _0x298313['onerror'] = function(_0x1d2544) { _0x4e50c1(_0x1d2544); } ; } ); _0xbbb55a['push'](_0x4c687d); }, _0x28e69d = 0x0; _0x28e69d < 0x6; _0x28e69d++) _0x5ce854(_0x28e69d); }; for (_0x39db3c = 0x0; _0x39db3c < _0x5a9049['length']; _0x39db3c++) _0x214af7(_0x39db3c); if (_0x5a9049['length'] < _0x594666) { var _0x2a37da = void 0x0 , _0x31f881 = Math['pow'](0x2, _0x594666 - 0x1 - _0x5a9049['length']) , _0x742648 = _0x31f881 * _0x31f881 * 0x4; switch (_0x5c9a6d['type']) { case _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']: _0x2a37da = new Uint8Array(_0x742648); break; case _0x24e342['a']['TEXTURETYPE_HALF_FLOAT']: _0x2a37da = new Uint16Array(_0x742648); break; case _0x24e342['a']['TEXTURETYPE_FLOAT']: _0x2a37da = new Float32Array(_0x742648); } for (_0x39db3c = _0x5a9049['length']; _0x39db3c < _0x594666; _0x39db3c++) for (var _0xfd481f = 0x0; _0xfd481f < 0x6; _0xfd481f++) _0x124628['_uploadArrayBufferViewToTexture'](_0x5c9a6d, _0x2a37da, _0xfd481f, _0x39db3c); } return Promise['all'](_0xbbb55a)['then'](function() { _0x272ac2 && (_0x124628['_releaseFramebufferObjects'](_0x272ac2), _0x272ac2['_swapAndDie'](_0x5c9a6d)), _0x3c9f07 && _0x3c9f07['dispose'](), _0x870160 && (_0x5c9a6d['_lodTextureHigh'] && _0x5c9a6d['_lodTextureHigh']['_texture'] && (_0x5c9a6d['_lodTextureHigh']['_texture']['isReady'] = !0x0), _0x5c9a6d['_lodTextureMid'] && _0x5c9a6d['_lodTextureMid']['_texture'] && (_0x5c9a6d['_lodTextureMid']['_texture']['isReady'] = !0x0), _0x5c9a6d['_lodTextureLow'] && _0x5c9a6d['_lodTextureLow']['_texture'] && (_0x5c9a6d['_lodTextureLow']['_texture']['isReady'] = !0x0)); }); } , _0x501b71['UploadEnvSpherical'] = function(_0x513822, _0x11cb1a) { 0x1 !== _0x11cb1a['version'] && _0x3f98cb['a']['Warn']('Unsupported\x20babylon\x20environment\x20map\x20version\x20\x22' + _0x11cb1a['version'] + '\x22'); var _0x41925c = _0x11cb1a['irradiance']; if (_0x41925c) { var _0x1b018f = new _0x412209['b'](); _0x47d24f['x']['FromArrayToRef'](_0x41925c['x'], 0x0, _0x1b018f['x']), _0x47d24f['x']['FromArrayToRef'](_0x41925c['y'], 0x0, _0x1b018f['y']), _0x47d24f['x']['FromArrayToRef'](_0x41925c['z'], 0x0, _0x1b018f['z']), _0x47d24f['x']['FromArrayToRef'](_0x41925c['xx'], 0x0, _0x1b018f['xx']), _0x47d24f['x']['FromArrayToRef'](_0x41925c['yy'], 0x0, _0x1b018f['yy']), _0x47d24f['x']['FromArrayToRef'](_0x41925c['zz'], 0x0, _0x1b018f['zz']), _0x47d24f['x']['FromArrayToRef'](_0x41925c['yz'], 0x0, _0x1b018f['yz']), _0x47d24f['x']['FromArrayToRef'](_0x41925c['zx'], 0x0, _0x1b018f['zx']), _0x47d24f['x']['FromArrayToRef'](_0x41925c['xy'], 0x0, _0x1b018f['xy']), _0x513822['_sphericalPolynomial'] = _0x1b018f; } } , _0x501b71['_UpdateRGBDAsync'] = function(_0xffc38f, _0x3f7294, _0x5012fa, _0x5d4a88, _0x4dbca3) { return _0xffc38f['_dataSource'] = _0x2826dc['a']['DATASOURCE_CUBERAW_RGBD'], _0xffc38f['_bufferViewArrayArray'] = _0x3f7294, _0xffc38f['_lodGenerationScale'] = _0x5d4a88, _0xffc38f['_lodGenerationOffset'] = _0x4dbca3, _0xffc38f['_sphericalPolynomial'] = _0x5012fa, _0x501b71['UploadLevelsAsync'](_0xffc38f, _0x3f7294)['then'](function() { _0xffc38f['isReady'] = !0x0; }); } , _0x501b71['_MagicBytes'] = [0x86, 0x16, 0x87, 0x96, 0xf6, 0xd6, 0x96, 0x36], _0x501b71; }(); _0x2826dc['a']['_UpdateRGBDAsync'] = _0x4cf463['_UpdateRGBDAsync']; var _0x4c9cf9 = function() { function _0x2ac571() { this['supportCascades'] = !0x1; } return _0x2ac571['prototype']['canLoad'] = function(_0x38a93b, _0x906a12, _0x52648a, _0x2ad24a, _0x3df0ab) { return 0x0 === _0x38a93b['indexOf']('.env'); } , _0x2ac571['prototype']['transformUrl'] = function(_0x30ecdc, _0x5e606d) { return _0x30ecdc; } , _0x2ac571['prototype']['getFallbackTextureUrl'] = function(_0x1523a3, _0xb4527d) { return null; } , _0x2ac571['prototype']['loadCubeData'] = function(_0x101d0d, _0x49da6a, _0x312c54, _0x28df7f, _0x11e883) { if (!Array['isArray'](_0x101d0d)) { _0x101d0d = _0x101d0d; var _0xb61898 = _0x4cf463['GetEnvInfo'](_0x101d0d); _0xb61898 ? (_0x49da6a['width'] = _0xb61898['width'], _0x49da6a['height'] = _0xb61898['width'], _0x4cf463['UploadEnvSpherical'](_0x49da6a, _0xb61898), _0x4cf463['UploadEnvLevelsAsync'](_0x49da6a, _0x101d0d, _0xb61898)['then'](function() { _0x49da6a['isReady'] = !0x0, _0x28df7f && _0x28df7f(); })) : _0x11e883 && _0x11e883('Can\x20not\x20parse\x20the\x20environment\x20file', null); } } , _0x2ac571['prototype']['loadData'] = function(_0x1bd36a, _0x1bef60, _0x5dc12e) { throw '.env\x20not\x20supported\x20in\x202d.'; } , _0x2ac571; }(); _0x3647a9['b']['_TextureLoaders']['push'](new _0x4c9cf9()); var _0x4346df = function() { function _0x460a96(_0x4a2a18, _0x2286f5, _0x387b52, _0x5559cb) { this['arrayBuffer'] = _0x4a2a18, this['isInvalid'] = !0x1; var _0x1ccde2 = new Uint8Array(this['arrayBuffer'],0x0,0xc); if (0xab !== _0x1ccde2[0x0] || 0x4b !== _0x1ccde2[0x1] || 0x54 !== _0x1ccde2[0x2] || 0x58 !== _0x1ccde2[0x3] || 0x20 !== _0x1ccde2[0x4] || 0x31 !== _0x1ccde2[0x5] || 0x31 !== _0x1ccde2[0x6] || 0xbb !== _0x1ccde2[0x7] || 0xd !== _0x1ccde2[0x8] || 0xa !== _0x1ccde2[0x9] || 0x1a !== _0x1ccde2[0xa] || 0xa !== _0x1ccde2[0xb]) return this['isInvalid'] = !0x0, void _0x3f98cb['a']['Error']('texture\x20missing\x20KTX\x20identifier'); var _0x44aeaa = Uint32Array['BYTES_PER_ELEMENT'] , _0x207f1b = new DataView(this['arrayBuffer'],0xc,0xd * _0x44aeaa) , _0x15a6f6 = 0x4030201 === _0x207f1b['getUint32'](0x0, !0x0); this['glType'] = _0x207f1b['getUint32'](0x1 * _0x44aeaa, _0x15a6f6), this['glTypeSize'] = _0x207f1b['getUint32'](0x2 * _0x44aeaa, _0x15a6f6), this['glFormat'] = _0x207f1b['getUint32'](0x3 * _0x44aeaa, _0x15a6f6), this['glInternalFormat'] = _0x207f1b['getUint32'](0x4 * _0x44aeaa, _0x15a6f6), this['glBaseInternalFormat'] = _0x207f1b['getUint32'](0x5 * _0x44aeaa, _0x15a6f6), this['pixelWidth'] = _0x207f1b['getUint32'](0x6 * _0x44aeaa, _0x15a6f6), this['pixelHeight'] = _0x207f1b['getUint32'](0x7 * _0x44aeaa, _0x15a6f6), this['pixelDepth'] = _0x207f1b['getUint32'](0x8 * _0x44aeaa, _0x15a6f6), this['numberOfArrayElements'] = _0x207f1b['getUint32'](0x9 * _0x44aeaa, _0x15a6f6), this['numberOfFaces'] = _0x207f1b['getUint32'](0xa * _0x44aeaa, _0x15a6f6), this['numberOfMipmapLevels'] = _0x207f1b['getUint32'](0xb * _0x44aeaa, _0x15a6f6), this['bytesOfKeyValueData'] = _0x207f1b['getUint32'](0xc * _0x44aeaa, _0x15a6f6), 0x0 === this['glType'] ? (this['numberOfMipmapLevels'] = Math['max'](0x1, this['numberOfMipmapLevels']), 0x0 !== this['pixelHeight'] && 0x0 === this['pixelDepth'] ? 0x0 === this['numberOfArrayElements'] ? this['numberOfFaces'] === _0x2286f5 ? this['loadType'] = _0x460a96['COMPRESSED_2D'] : _0x3f98cb['a']['Error']('number\x20of\x20faces\x20expected' + _0x2286f5 + ',\x20but\x20found\x20' + this['numberOfFaces']) : _0x3f98cb['a']['Error']('texture\x20arrays\x20not\x20currently\x20supported') : _0x3f98cb['a']['Error']('only\x202D\x20textures\x20currently\x20supported')) : _0x3f98cb['a']['Error']('only\x20compressed\x20formats\x20currently\x20supported'); } return _0x460a96['prototype']['uploadLevels'] = function(_0x54792f, _0x1c8727) { switch (this['loadType']) { case _0x460a96['COMPRESSED_2D']: this['_upload2DCompressedLevels'](_0x54792f, _0x1c8727); break; case _0x460a96['TEX_2D']: case _0x460a96['COMPRESSED_3D']: case _0x460a96['TEX_3D']: } } , _0x460a96['prototype']['_upload2DCompressedLevels'] = function(_0x1efc19, _0x237ded) { for (var _0x3eefb8 = _0x460a96['HEADER_LEN'] + this['bytesOfKeyValueData'], _0x4643aa = this['pixelWidth'], _0x3ae71b = this['pixelHeight'], _0x4f940a = _0x237ded ? this['numberOfMipmapLevels'] : 0x1, _0x2744b2 = 0x0; _0x2744b2 < _0x4f940a; _0x2744b2++) { var _0x25d249 = new Int32Array(this['arrayBuffer'],_0x3eefb8,0x1)[0x0]; _0x3eefb8 += 0x4; for (var _0x12e7ee = 0x0; _0x12e7ee < this['numberOfFaces']; _0x12e7ee++) { var _0x2762b1 = new Uint8Array(this['arrayBuffer'],_0x3eefb8,_0x25d249); _0x1efc19['getEngine']()['_uploadCompressedDataToTextureDirectly'](_0x1efc19, this['glInternalFormat'], _0x4643aa, _0x3ae71b, _0x2762b1, _0x12e7ee, _0x2744b2), _0x3eefb8 += _0x25d249, _0x3eefb8 += 0x3 - (_0x25d249 + 0x3) % 0x4; } _0x4643aa = Math['max'](0x1, 0.5 * _0x4643aa), _0x3ae71b = Math['max'](0x1, 0.5 * _0x3ae71b); } } , _0x460a96['HEADER_LEN'] = 0x40, _0x460a96['COMPRESSED_2D'] = 0x0, _0x460a96['COMPRESSED_3D'] = 0x1, _0x460a96['TEX_2D'] = 0x2, _0x460a96['TEX_3D'] = 0x3, _0x460a96; }() , _0x5d037e = function() { function _0x4ff824() { this['supportCascades'] = !0x1; } return _0x4ff824['prototype']['canLoad'] = function(_0xbf468c, _0x3b0d7c, _0x135d49, _0x301def, _0x2e89e1) { return !(!_0x3b0d7c || _0x301def || _0x135d49 || _0x2e89e1); } , _0x4ff824['prototype']['transformUrl'] = function(_0xaabbb3, _0x1ee354) { var _0x549be8 = _0xaabbb3['lastIndexOf']('.'); return -0x1 != _0x549be8 && 'ktx' == _0xaabbb3['substring'](_0x549be8 + 0x1) ? _0xaabbb3 : (_0x549be8 > -0x1 ? _0xaabbb3['substring'](0x0, _0x549be8) : _0xaabbb3) + _0x1ee354; } , _0x4ff824['prototype']['getFallbackTextureUrl'] = function(_0x36fe80, _0x389866) { var _0x53058c = new RegExp(_0x389866 + '$'); return _0x36fe80['replace'](_0x53058c, ''); } , _0x4ff824['prototype']['loadCubeData'] = function(_0x2925b1, _0x32a790, _0x44c6fe, _0x4e0017, _0x2b92c5) { if (!Array['isArray'](_0x2925b1)) { _0x32a790['_invertVScale'] = !_0x32a790['invertY']; var _0x3821a4 = _0x32a790['getEngine']() , _0x165a8b = new _0x4346df(_0x2925b1,0x6) , _0x48da9f = _0x165a8b['numberOfMipmapLevels'] > 0x1 && _0x32a790['generateMipMaps']; _0x3821a4['_unpackFlipY'](!0x0), _0x165a8b['uploadLevels'](_0x32a790, _0x32a790['generateMipMaps']), _0x32a790['width'] = _0x165a8b['pixelWidth'], _0x32a790['height'] = _0x165a8b['pixelHeight'], _0x3821a4['_setCubeMapTextureParams'](_0x48da9f), _0x32a790['isReady'] = !0x0; } } , _0x4ff824['prototype']['loadData'] = function(_0x375697, _0x3b527a, _0x58801b) { _0x3b527a['_invertVScale'] = !_0x3b527a['invertY']; var _0x5ce2cb = new _0x4346df(_0x375697,0x1); _0x58801b(_0x5ce2cb['pixelWidth'], _0x5ce2cb['pixelHeight'], !0x1, !0x0, function() { _0x5ce2cb['uploadLevels'](_0x3b527a, _0x3b527a['generateMipMaps']); }, _0x5ce2cb['isInvalid']); } , _0x4ff824; }(); _0x3647a9['b']['_TextureLoaders']['unshift'](new _0x5d037e()); _0x366639['a']['prototype']['createDefaultLight'] = function(_0x1bb13d) { if (void 0x0 === _0x1bb13d && (_0x1bb13d = !0x1), _0x1bb13d && this['lights']) for (var _0x1eaf8c = 0x0; _0x1eaf8c < this['lights']['length']; _0x1eaf8c++) this['lights'][_0x1eaf8c]['dispose'](); 0x0 === this['lights']['length'] && new _0x4e9f1d['a']('default\x20light',_0x47d24f['x']['Up'](),this); } , _0x366639['a']['prototype']['createDefaultCamera'] = function(_0x215301, _0x5ad33c, _0x1cf950) { if (void 0x0 === _0x215301 && (_0x215301 = !0x1), void 0x0 === _0x5ad33c && (_0x5ad33c = !0x1), void 0x0 === _0x1cf950 && (_0x1cf950 = !0x1), _0x5ad33c && this['activeCamera'] && (this['activeCamera']['dispose'](), this['activeCamera'] = null), !this['activeCamera']) { var _0x11a431, _0xd7b829 = this['getWorldExtends'](), _0x4c3105 = _0xd7b829['max']['subtract'](_0xd7b829['min']), _0x5320d3 = _0xd7b829['min']['add'](_0x4c3105['scale'](0.5)), _0xc1b9ae = 1.5 * _0x4c3105['length'](); if (isFinite(_0xc1b9ae) || (_0xc1b9ae = 0x1, _0x5320d3['copyFromFloats'](0x0, 0x0, 0x0)), _0x215301) { var _0x17f933 = new _0x1fd852('default\x20camera',-Math['PI'] / 0x2,Math['PI'] / 0x2,_0xc1b9ae,_0x5320d3,this); _0x17f933['lowerRadiusLimit'] = 0.01 * _0xc1b9ae, _0x17f933['wheelPrecision'] = 0x64 / _0xc1b9ae, _0x11a431 = _0x17f933; } else { var _0x168133 = new _0xebce26('default\x20camera',new _0x47d24f['x'](_0x5320d3['x'],_0x5320d3['y'],-_0xc1b9ae),this); _0x168133['setTarget'](_0x5320d3), _0x11a431 = _0x168133; } _0x11a431['minZ'] = 0.01 * _0xc1b9ae, _0x11a431['maxZ'] = 0x3e8 * _0xc1b9ae, _0x11a431['speed'] = 0.2 * _0xc1b9ae, this['activeCamera'] = _0x11a431; var _0x3badc4 = this['getEngine']()['getRenderingCanvas'](); _0x1cf950 && _0x3badc4 && _0x11a431['attachControl'](_0x3badc4); } } , _0x366639['a']['prototype']['createDefaultCameraOrLight'] = function(_0x161e06, _0x182c57, _0x313f10) { void 0x0 === _0x161e06 && (_0x161e06 = !0x1), void 0x0 === _0x182c57 && (_0x182c57 = !0x1), void 0x0 === _0x313f10 && (_0x313f10 = !0x1), this['createDefaultLight'](_0x182c57), this['createDefaultCamera'](_0x161e06, _0x182c57, _0x313f10); } , _0x366639['a']['prototype']['createDefaultSkybox'] = function(_0x277a08, _0x5eba3d, _0x432c16, _0x4ee2e2, _0x448c4d) { if (void 0x0 === _0x5eba3d && (_0x5eba3d = !0x1), void 0x0 === _0x432c16 && (_0x432c16 = 0x3e8), void 0x0 === _0x4ee2e2 && (_0x4ee2e2 = 0x0), void 0x0 === _0x448c4d && (_0x448c4d = !0x0), !_0x277a08) return _0x3f98cb['a']['Warn']('Can\x20not\x20create\x20default\x20skybox\x20without\x20environment\x20texture.'), null; _0x448c4d && _0x277a08 && (this['environmentTexture'] = _0x277a08); var _0x50ee9b = _0xb4719b['a']['CreateBox']('hdrSkyBox', _0x432c16, this); if (_0x5eba3d) { var _0x11077e = new _0x36df35('skyBox',this); _0x11077e['backFaceCulling'] = !0x1, _0x11077e['reflectionTexture'] = _0x277a08['clone'](), _0x11077e['reflectionTexture'] && (_0x11077e['reflectionTexture']['coordinatesMode'] = _0x11d14a['a']['SKYBOX_MODE']), _0x11077e['microSurface'] = 0x1 - _0x4ee2e2, _0x11077e['disableLighting'] = !0x0, _0x11077e['twoSidedLighting'] = !0x0, _0x50ee9b['infiniteDistance'] = !0x0, _0x50ee9b['material'] = _0x11077e; } else { var _0x4464a9 = new _0xe7dd57['a']('skyBox',this); _0x4464a9['backFaceCulling'] = !0x1, _0x4464a9['reflectionTexture'] = _0x277a08['clone'](), _0x4464a9['reflectionTexture'] && (_0x4464a9['reflectionTexture']['coordinatesMode'] = _0x11d14a['a']['SKYBOX_MODE']), _0x4464a9['disableLighting'] = !0x0, _0x50ee9b['infiniteDistance'] = !0x0, _0x50ee9b['material'] = _0x4464a9; } return _0x50ee9b['isPickable'] = !0x1, _0x50ee9b; } , _0x366639['a']['prototype']['createDefaultEnvironment'] = function(_0x4f738e) { return _0x1a1e8f ? new _0x1a1e8f(_0x4f738e,this) : null; } , _0x366639['a']['prototype']['createDefaultVRExperience'] = function(_0x477a11) { return void 0x0 === _0x477a11 && (_0x477a11 = {}), new _0x443caf(this,_0x477a11); } , _0x366639['a']['prototype']['createDefaultXRExperienceAsync'] = function() { var _0xa216f1 = this; return _0x25d700['CreateAsync'](this)['then'](function(_0x304a32) { var _0x4fbbd8 = new _0x531ff9(_0x304a32); return _0x34efa2['CreateAsync'](_0xa216f1, _0x304a32, { 'outputCanvasContext': _0x4fbbd8['canvasContext'] })['then'](function(_0x5c3f9d) { return new _0xb25c80(_0x304a32), _0x304a32; }); }); } ; var _0x4251b7 = function(_0x41952e) { function _0x193c1e(_0x16e667, _0x12b481, _0x41ac7b, _0x1c003d, _0x37631c, _0x421347, _0x2aed88) { void 0x0 === _0x1c003d && (_0x1c003d = !0x1), void 0x0 === _0x37631c && (_0x37631c = !0x1), void 0x0 === _0x421347 && (_0x421347 = _0x11d14a['a']['TRILINEAR_SAMPLINGMODE']), void 0x0 === _0x2aed88 && (_0x2aed88 = { 'autoPlay': !0x0, 'loop': !0x0, 'autoUpdateTexture': !0x0 }); var _0x5b9970 = _0x41952e['call'](this, null, _0x41ac7b, !_0x1c003d, _0x37631c) || this; _0x5b9970['_onUserActionRequestedObservable'] = null, _0x5b9970['_stillImageCaptured'] = !0x1, _0x5b9970['_displayingPosterTexture'] = !0x1, _0x5b9970['_createInternalTexture'] = function() { if (null != _0x5b9970['_texture']) { if (!_0x5b9970['_displayingPosterTexture']) return; _0x5b9970['_texture']['dispose'](), _0x5b9970['_displayingPosterTexture'] = !0x1; } if (!_0x5b9970['_engine']['needPOTTextures'] || _0x1eb50e['h']['IsExponentOfTwo'](_0x5b9970['video']['videoWidth']) && _0x1eb50e['h']['IsExponentOfTwo'](_0x5b9970['video']['videoHeight']) ? (_0x5b9970['wrapU'] = _0x11d14a['a']['WRAP_ADDRESSMODE'], _0x5b9970['wrapV'] = _0x11d14a['a']['WRAP_ADDRESSMODE']) : (_0x5b9970['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x5b9970['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x5b9970['_generateMipMaps'] = !0x1), _0x5b9970['_texture'] = _0x5b9970['_engine']['createDynamicTexture'](_0x5b9970['video']['videoWidth'], _0x5b9970['video']['videoHeight'], _0x5b9970['_generateMipMaps'], _0x5b9970['samplingMode']), _0x5b9970['video']['autoplay'] || _0x5b9970['_settings']['poster']) _0x5b9970['_texture']['isReady'] = !0x0, _0x5b9970['_updateInternalTexture'](), _0x5b9970['onLoadObservable']['hasObservers']() && _0x5b9970['onLoadObservable']['notifyObservers'](_0x5b9970); else { var _0x56af35 = _0x5b9970['video']['onplaying'] , _0x281337 = !0x1 , _0x194584 = _0x5b9970['video']['muted']; _0x5b9970['video']['muted'] = !0x0, _0x5b9970['video']['onplaying'] = function() { _0x5b9970['video']['muted'] = _0x194584, _0x5b9970['video']['onplaying'] = _0x56af35, _0x5b9970['_texture']['isReady'] = !0x0, _0x5b9970['_updateInternalTexture'](), _0x281337 || _0x5b9970['video']['pause'](), _0x5b9970['onLoadObservable']['hasObservers']() && _0x5b9970['onLoadObservable']['notifyObservers'](_0x5b9970); } ; var _0x51b6e4 = _0x5b9970['video']['play'](); _0x51b6e4 ? _0x51b6e4['then'](function() {})['catch'](function() { _0x281337 = !0x0, _0x5b9970['_onUserActionRequestedObservable'] && _0x5b9970['_onUserActionRequestedObservable']['hasObservers']() && _0x5b9970['_onUserActionRequestedObservable']['notifyObservers'](_0x5b9970); }) : (_0x5b9970['video']['onplaying'] = _0x56af35, _0x5b9970['_texture']['isReady'] = !0x0, _0x5b9970['_updateInternalTexture'](), _0x5b9970['onLoadObservable']['hasObservers']() && _0x5b9970['onLoadObservable']['notifyObservers'](_0x5b9970)); } } , _0x5b9970['reset'] = function() { null != _0x5b9970['_texture'] && (_0x5b9970['_displayingPosterTexture'] || (_0x5b9970['_texture']['dispose'](), _0x5b9970['_texture'] = null)); } , _0x5b9970['_updateInternalTexture'] = function() { null != _0x5b9970['_texture'] && _0x5b9970['_texture']['isReady'] && (_0x5b9970['video']['readyState'] < _0x5b9970['video']['HAVE_CURRENT_DATA'] || _0x5b9970['_displayingPosterTexture'] || _0x5b9970['_engine']['updateVideoTexture'](_0x5b9970['_texture'], _0x5b9970['video'], _0x5b9970['_invertY'])); } , _0x5b9970['_engine'] = _0x5b9970['getScene']()['getEngine'](), _0x5b9970['_generateMipMaps'] = _0x1c003d, _0x5b9970['_initialSamplingMode'] = _0x421347, _0x5b9970['autoUpdateTexture'] = _0x2aed88['autoUpdateTexture'], _0x5b9970['name'] = _0x16e667 || _0x5b9970['_getName'](_0x12b481), _0x5b9970['video'] = _0x5b9970['_getVideo'](_0x12b481), _0x5b9970['_settings'] = _0x2aed88, _0x2aed88['poster'] && (_0x5b9970['video']['poster'] = _0x2aed88['poster']), void 0x0 !== _0x2aed88['autoPlay'] && (_0x5b9970['video']['autoplay'] = _0x2aed88['autoPlay']), void 0x0 !== _0x2aed88['loop'] && (_0x5b9970['video']['loop'] = _0x2aed88['loop']), _0x5b9970['video']['setAttribute']('playsinline', ''), _0x5b9970['video']['addEventListener']('paused', _0x5b9970['_updateInternalTexture']), _0x5b9970['video']['addEventListener']('seeked', _0x5b9970['_updateInternalTexture']), _0x5b9970['video']['addEventListener']('emptied', _0x5b9970['reset']), _0x5b9970['_createInternalTextureOnEvent'] = _0x2aed88['poster'] && !_0x2aed88['autoPlay'] ? 'play' : 'canplay', _0x5b9970['video']['addEventListener'](_0x5b9970['_createInternalTextureOnEvent'], _0x5b9970['_createInternalTexture']); var _0x949722 = _0x5b9970['video']['readyState'] >= _0x5b9970['video']['HAVE_CURRENT_DATA']; return !_0x2aed88['poster'] || _0x2aed88['autoPlay'] && _0x949722 ? _0x949722 && _0x5b9970['_createInternalTexture']() : (_0x5b9970['_texture'] = _0x5b9970['_engine']['createTexture'](_0x2aed88['poster'], !0x1, !0x0, _0x41ac7b), _0x5b9970['_displayingPosterTexture'] = !0x0), _0x5b9970; } return _0x420e5b['d'](_0x193c1e, _0x41952e), Object['defineProperty'](_0x193c1e['prototype'], 'onUserActionRequestedObservable', { 'get': function() { return this['_onUserActionRequestedObservable'] || (this['_onUserActionRequestedObservable'] = new _0x2dbec2['c']()), this['_onUserActionRequestedObservable']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x193c1e['prototype']['_getName'] = function(_0x576a8e) { return _0x576a8e instanceof HTMLVideoElement ? _0x576a8e['currentSrc'] : 'object' == typeof _0x576a8e ? _0x576a8e['toString']() : _0x576a8e; } , _0x193c1e['prototype']['_getVideo'] = function(_0xcecf20) { if (_0xcecf20 instanceof HTMLVideoElement) return _0x1eb50e['h']['SetCorsBehavior'](_0xcecf20['currentSrc'], _0xcecf20), _0xcecf20; var _0x17cce8 = document['createElement']('video'); return 'string' == typeof _0xcecf20 ? (_0x1eb50e['h']['SetCorsBehavior'](_0xcecf20, _0x17cce8), _0x17cce8['src'] = _0xcecf20) : (_0x1eb50e['h']['SetCorsBehavior'](_0xcecf20[0x0], _0x17cce8), _0xcecf20['forEach'](function(_0x5a0634) { var _0x3d1e43 = document['createElement']('source'); _0x3d1e43['src'] = _0x5a0634, _0x17cce8['appendChild'](_0x3d1e43); })), _0x17cce8; } , _0x193c1e['prototype']['_rebuild'] = function() { this['update'](); } , _0x193c1e['prototype']['update'] = function() { this['autoUpdateTexture'] && this['updateTexture'](!0x0); } , _0x193c1e['prototype']['updateTexture'] = function(_0x3d557b) { _0x3d557b && (this['video']['paused'] && this['_stillImageCaptured'] || (this['_stillImageCaptured'] = !0x0, this['_updateInternalTexture']())); } , _0x193c1e['prototype']['updateURL'] = function(_0x3eb338) { this['video']['src'] = _0x3eb338; } , _0x193c1e['prototype']['dispose'] = function() { _0x41952e['prototype']['dispose']['call'](this), this['_onUserActionRequestedObservable'] && (this['_onUserActionRequestedObservable']['clear'](), this['_onUserActionRequestedObservable'] = null), this['video']['removeEventListener'](this['_createInternalTextureOnEvent'], this['_createInternalTexture']), this['video']['removeEventListener']('paused', this['_updateInternalTexture']), this['video']['removeEventListener']('seeked', this['_updateInternalTexture']), this['video']['removeEventListener']('emptied', this['reset']), this['video']['pause'](); } , _0x193c1e['CreateFromStreamAsync'] = function(_0x263fa5, _0x4a1fa6) { var _0x1c995e = document['createElement']('video'); return _0x1c995e['setAttribute']('autoplay', ''), _0x1c995e['setAttribute']('muted', 'true'), _0x1c995e['setAttribute']('playsinline', ''), _0x1c995e['muted'] = !0x0, void 0x0 !== _0x1c995e['mozSrcObject'] ? _0x1c995e['mozSrcObject'] = _0x4a1fa6 : 'object' == typeof _0x1c995e['srcObject'] ? _0x1c995e['srcObject'] = _0x4a1fa6 : (window['URL'] = window['URL'] || window['webkitURL'] || window['mozURL'] || window['msURL'], _0x1c995e['src'] = window['URL'] && window['URL']['createObjectURL'](_0x4a1fa6)), new Promise(function(_0x467f27) { var _0x4f0e42 = function() { _0x467f27(new _0x193c1e('video',_0x1c995e,_0x263fa5,!0x0,!0x0)), _0x1c995e['removeEventListener']('playing', _0x4f0e42); }; _0x1c995e['addEventListener']('playing', _0x4f0e42), _0x1c995e['play'](); } ); } , _0x193c1e['CreateFromWebCamAsync'] = function(_0x220f95, _0x374b56, _0x4634d0) { var _0x525577, _0x1a3784 = this; return void 0x0 === _0x4634d0 && (_0x4634d0 = !0x1), _0x374b56 && _0x374b56['deviceId'] && (_0x525577 = { 'exact': _0x374b56['deviceId'] }), navigator['mediaDevices'] ? navigator['mediaDevices']['getUserMedia']({ 'video': _0x374b56, 'audio': _0x4634d0 })['then'](function(_0x214288) { return _0x1a3784['CreateFromStreamAsync'](_0x220f95, _0x214288); }) : (navigator['getUserMedia'] = navigator['getUserMedia'] || navigator['webkitGetUserMedia'] || navigator['mozGetUserMedia'] || navigator['msGetUserMedia'], navigator['getUserMedia'] && navigator['getUserMedia']({ 'video': { 'deviceId': _0x525577, 'width': { 'min': _0x374b56 && _0x374b56['minWidth'] || 0x100, 'max': _0x374b56 && _0x374b56['maxWidth'] || 0x280 }, 'height': { 'min': _0x374b56 && _0x374b56['minHeight'] || 0x100, 'max': _0x374b56 && _0x374b56['maxHeight'] || 0x1e0 } }, 'audio': _0x4634d0 }, function(_0x2f9478) { return _0x1a3784['CreateFromStreamAsync'](_0x220f95, _0x2f9478); }, function(_0x48b1f3) { _0x3f98cb['a']['Error'](_0x48b1f3['name']); }), Promise['reject']('No\x20support\x20for\x20userMedia\x20on\x20this\x20device')); } , _0x193c1e['CreateFromWebCam'] = function(_0x501308, _0x145ff0, _0x2b8c62, _0x4c26bb) { void 0x0 === _0x4c26bb && (_0x4c26bb = !0x1), this['CreateFromWebCamAsync'](_0x501308, _0x2b8c62, _0x4c26bb)['then'](function(_0x15f7d1) { _0x145ff0 && _0x145ff0(_0x15f7d1); })['catch'](function(_0x82bbe5) { _0x3f98cb['a']['Error'](_0x82bbe5['name']); }); } , _0x193c1e; }(_0x11d14a['a']) , _0x5d5d98 = function(_0x167838) { function _0x34669d(_0x15b208, _0x5d704e, _0x1ce275, _0x12695c) { var _0x3c204d = _0x167838['call'](this, _0x15b208, _0x12695c) || this; _0x3c204d['_useDirectMapping'] = !0x1, _0x3c204d['_videoMode'] = _0x34669d['MODE_MONOSCOPIC'], _0x3c204d['_onBeforeCameraRenderObserver'] = null, _0x12695c = _0x3c204d['getScene'](), _0x15b208 = _0x15b208 || 'videoDome', _0x1ce275['resolution'] = 0x0 | Math['abs'](_0x1ce275['resolution']) || 0x20, _0x1ce275['clickToPlay'] = Boolean(_0x1ce275['clickToPlay']), _0x1ce275['autoPlay'] = void 0x0 === _0x1ce275['autoPlay'] || Boolean(_0x1ce275['autoPlay']), _0x1ce275['loop'] = void 0x0 === _0x1ce275['loop'] || Boolean(_0x1ce275['loop']), _0x1ce275['size'] = Math['abs'](_0x1ce275['size']) || (_0x12695c['activeCamera'] ? 0.48 * _0x12695c['activeCamera']['maxZ'] : 0x3e8), void 0x0 === _0x1ce275['useDirectMapping'] ? _0x3c204d['_useDirectMapping'] = !0x0 : _0x3c204d['_useDirectMapping'] = _0x1ce275['useDirectMapping'], void 0x0 === _0x1ce275['faceForward'] && (_0x1ce275['faceForward'] = !0x0), _0x3c204d['_setReady'](!0x1); var _0x5a2a0e = { 'loop': _0x1ce275['loop'], 'autoPlay': _0x1ce275['autoPlay'], 'autoUpdateTexture': !0x0, 'poster': _0x1ce275['poster'] } , _0x3c1e66 = _0x3c204d['_material'] = new _0x4ac990(_0x15b208 + '_material',_0x12695c) , _0x3ea37b = _0x3c204d['_videoTexture'] = new _0x4251b7(_0x15b208 + '_texture',_0x5d704e,_0x12695c,!0x1,_0x3c204d['_useDirectMapping'],_0x11d14a['a']['TRILINEAR_SAMPLINGMODE'],_0x5a2a0e); if (_0x3c204d['_mesh'] = _0xb4719b['a']['CreateSphere'](_0x15b208 + '_mesh', _0x1ce275['resolution'], _0x1ce275['size'], _0x12695c, !0x1, _0xb4719b['a']['BACKSIDE']), _0x3ea37b['onLoadObservable']['addOnce'](function() { _0x3c204d['_setReady'](!0x0); }), _0x3c1e66['useEquirectangularFOV'] = !0x0, _0x3c1e66['fovMultiplier'] = 0x1, _0x3c1e66['opacityFresnel'] = !0x1, _0x3c204d['_useDirectMapping'] ? (_0x3ea37b['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x3ea37b['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x3c1e66['diffuseTexture'] = _0x3ea37b) : (_0x3ea37b['coordinatesMode'] = _0x11d14a['a']['FIXED_EQUIRECTANGULAR_MIRRORED_MODE'], _0x3ea37b['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x3c1e66['reflectionTexture'] = _0x3ea37b), _0x3c204d['_mesh']['material'] = _0x3c1e66, _0x3c204d['_mesh']['parent'] = _0x3c204d, _0x1ce275['clickToPlay'] && (_0x12695c['onPointerUp'] = function() { _0x3c204d['_videoTexture']['video']['play'](); } ), _0x1ce275['faceForward'] && _0x12695c['activeCamera']) { var _0x44c644 = _0x12695c['activeCamera'] , _0xfb35c7 = _0x47d24f['x']['Forward']() , _0x550fd0 = _0x47d24f['x']['TransformNormal'](_0xfb35c7, _0x44c644['getViewMatrix']()); _0x550fd0['normalize'](), _0x3c204d['rotation']['y'] = Math['acos'](_0x47d24f['x']['Dot'](_0xfb35c7, _0x550fd0)); } return _0x3c204d; } return _0x420e5b['d'](_0x34669d, _0x167838), Object['defineProperty'](_0x34669d['prototype'], 'videoTexture', { 'get': function() { return this['_videoTexture']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34669d['prototype'], 'fovMultiplier', { 'get': function() { return this['_material']['fovMultiplier']; }, 'set': function(_0x275c77) { this['_material']['fovMultiplier'] = _0x275c77; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x34669d['prototype'], 'videoMode', { 'get': function() { return this['_videoMode']; }, 'set': function(_0x1f6870) { this['_videoMode'] !== _0x1f6870 && this['_changeVideoMode'](_0x1f6870); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x34669d['prototype']['_changeVideoMode'] = function(_0x5170a3) { var _0x37dfd1 = this; switch (this['_scene']['onBeforeCameraRenderObservable']['remove'](this['_onBeforeCameraRenderObserver']), this['_videoMode'] = _0x5170a3, this['_videoTexture']['uScale'] = 0x1, this['_videoTexture']['vScale'] = 0x1, this['_videoTexture']['uOffset'] = 0x0, this['_videoTexture']['vOffset'] = 0x0, _0x5170a3) { case _0x34669d['MODE_SIDEBYSIDE']: this['_videoTexture']['uScale'] = 0.5, this['_onBeforeCameraRenderObserver'] = this['_scene']['onBeforeCameraRenderObservable']['add'](function(_0x1cdf80) { _0x37dfd1['_videoTexture']['uOffset'] = _0x1cdf80['isRightCamera'] ? 0.5 : 0x0; }); break; case _0x34669d['MODE_TOPBOTTOM']: this['_videoTexture']['vScale'] = 0.5, this['_onBeforeCameraRenderObserver'] = this['_scene']['onBeforeCameraRenderObservable']['add'](function(_0x402a92) { _0x37dfd1['_videoTexture']['vOffset'] = _0x402a92['isRightCamera'] ? 0.5 : 0x0; }); } } , _0x34669d['prototype']['dispose'] = function(_0x4aa8f4, _0x4e0ca4) { void 0x0 === _0x4e0ca4 && (_0x4e0ca4 = !0x1), this['_videoTexture']['dispose'](), this['_mesh']['dispose'](), this['_material']['dispose'](), this['_scene']['onBeforeCameraRenderObservable']['remove'](this['_onBeforeCameraRenderObserver']), _0x167838['prototype']['dispose']['call'](this, _0x4aa8f4, _0x4e0ca4); } , _0x34669d['MODE_MONOSCOPIC'] = 0x0, _0x34669d['MODE_TOPBOTTOM'] = 0x1, _0x34669d['MODE_SIDEBYSIDE'] = 0x2, _0x34669d; }(_0x483560['a']) , _0x4e1e4d = function() { function _0x397093(_0x1a8f1b) { this['engine'] = _0x1a8f1b, this['_captureGPUFrameTime'] = !0x1, this['_gpuFrameTime'] = new _0x1eb50e['f'](), this['_captureShaderCompilationTime'] = !0x1, this['_shaderCompilationTime'] = new _0x1eb50e['f'](), this['_onBeginFrameObserver'] = null, this['_onEndFrameObserver'] = null, this['_onBeforeShaderCompilationObserver'] = null, this['_onAfterShaderCompilationObserver'] = null; } return Object['defineProperty'](_0x397093['prototype'], 'gpuFrameTimeCounter', { 'get': function() { return this['_gpuFrameTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x397093['prototype'], 'captureGPUFrameTime', { 'get': function() { return this['_captureGPUFrameTime']; }, 'set': function(_0x2c3d94) { var _0x42a6b8 = this; _0x2c3d94 !== this['_captureGPUFrameTime'] && (this['_captureGPUFrameTime'] = _0x2c3d94, _0x2c3d94 ? (this['_onBeginFrameObserver'] = this['engine']['onBeginFrameObservable']['add'](function() { _0x42a6b8['_gpuFrameTimeToken'] || (_0x42a6b8['_gpuFrameTimeToken'] = _0x42a6b8['engine']['startTimeQuery']()); }), this['_onEndFrameObserver'] = this['engine']['onEndFrameObservable']['add'](function() { if (_0x42a6b8['_gpuFrameTimeToken']) { var _0x17489a = _0x42a6b8['engine']['endTimeQuery'](_0x42a6b8['_gpuFrameTimeToken']); _0x17489a > -0x1 && (_0x42a6b8['_gpuFrameTimeToken'] = null, _0x42a6b8['_gpuFrameTime']['fetchNewFrame'](), _0x42a6b8['_gpuFrameTime']['addCount'](_0x17489a, !0x0)); } })) : (this['engine']['onBeginFrameObservable']['remove'](this['_onBeginFrameObserver']), this['_onBeginFrameObserver'] = null, this['engine']['onEndFrameObservable']['remove'](this['_onEndFrameObserver']), this['_onEndFrameObserver'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x397093['prototype'], 'shaderCompilationTimeCounter', { 'get': function() { return this['_shaderCompilationTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x397093['prototype'], 'captureShaderCompilationTime', { 'get': function() { return this['_captureShaderCompilationTime']; }, 'set': function(_0x2607bc) { var _0xf540ab = this; _0x2607bc !== this['_captureShaderCompilationTime'] && (this['_captureShaderCompilationTime'] = _0x2607bc, _0x2607bc ? (this['_onBeforeShaderCompilationObserver'] = this['engine']['onBeforeShaderCompilationObservable']['add'](function() { _0xf540ab['_shaderCompilationTime']['fetchNewFrame'](), _0xf540ab['_shaderCompilationTime']['beginMonitoring'](); }), this['_onAfterShaderCompilationObserver'] = this['engine']['onAfterShaderCompilationObservable']['add'](function() { _0xf540ab['_shaderCompilationTime']['endMonitoring'](); })) : (this['engine']['onBeforeShaderCompilationObservable']['remove'](this['_onBeforeShaderCompilationObserver']), this['_onBeforeShaderCompilationObserver'] = null, this['engine']['onAfterShaderCompilationObservable']['remove'](this['_onAfterShaderCompilationObserver']), this['_onAfterShaderCompilationObserver'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x397093['prototype']['dispose'] = function() { this['engine']['onBeginFrameObservable']['remove'](this['_onBeginFrameObserver']), this['_onBeginFrameObserver'] = null, this['engine']['onEndFrameObservable']['remove'](this['_onEndFrameObserver']), this['_onEndFrameObserver'] = null, this['engine']['onBeforeShaderCompilationObservable']['remove'](this['_onBeforeShaderCompilationObserver']), this['_onBeforeShaderCompilationObserver'] = null, this['engine']['onAfterShaderCompilationObservable']['remove'](this['_onAfterShaderCompilationObserver']), this['_onAfterShaderCompilationObserver'] = null, this['engine'] = null; } , _0x397093; }() , _0x4114e9 = function() { function _0x7e2b02(_0x233cc8) { var _0x57e88c = this; this['scene'] = _0x233cc8, this['_captureActiveMeshesEvaluationTime'] = !0x1, this['_activeMeshesEvaluationTime'] = new _0x1eb50e['f'](), this['_captureRenderTargetsRenderTime'] = !0x1, this['_renderTargetsRenderTime'] = new _0x1eb50e['f'](), this['_captureFrameTime'] = !0x1, this['_frameTime'] = new _0x1eb50e['f'](), this['_captureRenderTime'] = !0x1, this['_renderTime'] = new _0x1eb50e['f'](), this['_captureInterFrameTime'] = !0x1, this['_interFrameTime'] = new _0x1eb50e['f'](), this['_captureParticlesRenderTime'] = !0x1, this['_particlesRenderTime'] = new _0x1eb50e['f'](), this['_captureSpritesRenderTime'] = !0x1, this['_spritesRenderTime'] = new _0x1eb50e['f'](), this['_capturePhysicsTime'] = !0x1, this['_physicsTime'] = new _0x1eb50e['f'](), this['_captureAnimationsTime'] = !0x1, this['_animationsTime'] = new _0x1eb50e['f'](), this['_captureCameraRenderTime'] = !0x1, this['_cameraRenderTime'] = new _0x1eb50e['f'](), this['_onBeforeActiveMeshesEvaluationObserver'] = null, this['_onAfterActiveMeshesEvaluationObserver'] = null, this['_onBeforeRenderTargetsRenderObserver'] = null, this['_onAfterRenderTargetsRenderObserver'] = null, this['_onAfterRenderObserver'] = null, this['_onBeforeDrawPhaseObserver'] = null, this['_onAfterDrawPhaseObserver'] = null, this['_onBeforeAnimationsObserver'] = null, this['_onBeforeParticlesRenderingObserver'] = null, this['_onAfterParticlesRenderingObserver'] = null, this['_onBeforeSpritesRenderingObserver'] = null, this['_onAfterSpritesRenderingObserver'] = null, this['_onBeforePhysicsObserver'] = null, this['_onAfterPhysicsObserver'] = null, this['_onAfterAnimationsObserver'] = null, this['_onBeforeCameraRenderObserver'] = null, this['_onAfterCameraRenderObserver'] = null, this['_onBeforeAnimationsObserver'] = _0x233cc8['onBeforeAnimationsObservable']['add'](function() { _0x57e88c['_captureActiveMeshesEvaluationTime'] && _0x57e88c['_activeMeshesEvaluationTime']['fetchNewFrame'](), _0x57e88c['_captureRenderTargetsRenderTime'] && _0x57e88c['_renderTargetsRenderTime']['fetchNewFrame'](), _0x57e88c['_captureFrameTime'] && (_0x1eb50e['h']['StartPerformanceCounter']('Scene\x20rendering'), _0x57e88c['_frameTime']['beginMonitoring']()), _0x57e88c['_captureInterFrameTime'] && _0x57e88c['_interFrameTime']['endMonitoring'](), _0x57e88c['_captureParticlesRenderTime'] && _0x57e88c['_particlesRenderTime']['fetchNewFrame'](), _0x57e88c['_captureSpritesRenderTime'] && _0x57e88c['_spritesRenderTime']['fetchNewFrame'](), _0x57e88c['_captureAnimationsTime'] && _0x57e88c['_animationsTime']['beginMonitoring'](), _0x57e88c['scene']['getEngine']()['_drawCalls']['fetchNewFrame'](); }), this['_onAfterRenderObserver'] = _0x233cc8['onAfterRenderObservable']['add'](function() { _0x57e88c['_captureFrameTime'] && (_0x1eb50e['h']['EndPerformanceCounter']('Scene\x20rendering'), _0x57e88c['_frameTime']['endMonitoring']()), _0x57e88c['_captureRenderTime'] && _0x57e88c['_renderTime']['endMonitoring'](!0x1), _0x57e88c['_captureInterFrameTime'] && _0x57e88c['_interFrameTime']['beginMonitoring'](); }); } return Object['defineProperty'](_0x7e2b02['prototype'], 'activeMeshesEvaluationTimeCounter', { 'get': function() { return this['_activeMeshesEvaluationTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'captureActiveMeshesEvaluationTime', { 'get': function() { return this['_captureActiveMeshesEvaluationTime']; }, 'set': function(_0x188a5b) { var _0x5bef85 = this; _0x188a5b !== this['_captureActiveMeshesEvaluationTime'] && (this['_captureActiveMeshesEvaluationTime'] = _0x188a5b, _0x188a5b ? (this['_onBeforeActiveMeshesEvaluationObserver'] = this['scene']['onBeforeActiveMeshesEvaluationObservable']['add'](function() { _0x1eb50e['h']['StartPerformanceCounter']('Active\x20meshes\x20evaluation'), _0x5bef85['_activeMeshesEvaluationTime']['beginMonitoring'](); }), this['_onAfterActiveMeshesEvaluationObserver'] = this['scene']['onAfterActiveMeshesEvaluationObservable']['add'](function() { _0x1eb50e['h']['EndPerformanceCounter']('Active\x20meshes\x20evaluation'), _0x5bef85['_activeMeshesEvaluationTime']['endMonitoring'](); })) : (this['scene']['onBeforeActiveMeshesEvaluationObservable']['remove'](this['_onBeforeActiveMeshesEvaluationObserver']), this['_onBeforeActiveMeshesEvaluationObserver'] = null, this['scene']['onAfterActiveMeshesEvaluationObservable']['remove'](this['_onAfterActiveMeshesEvaluationObserver']), this['_onAfterActiveMeshesEvaluationObserver'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'renderTargetsRenderTimeCounter', { 'get': function() { return this['_renderTargetsRenderTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'captureRenderTargetsRenderTime', { 'get': function() { return this['_captureRenderTargetsRenderTime']; }, 'set': function(_0x1f650b) { var _0x619d4f = this; _0x1f650b !== this['_captureRenderTargetsRenderTime'] && (this['_captureRenderTargetsRenderTime'] = _0x1f650b, _0x1f650b ? (this['_onBeforeRenderTargetsRenderObserver'] = this['scene']['onBeforeRenderTargetsRenderObservable']['add'](function() { _0x1eb50e['h']['StartPerformanceCounter']('Render\x20targets\x20rendering'), _0x619d4f['_renderTargetsRenderTime']['beginMonitoring'](); }), this['_onAfterRenderTargetsRenderObserver'] = this['scene']['onAfterRenderTargetsRenderObservable']['add'](function() { _0x1eb50e['h']['EndPerformanceCounter']('Render\x20targets\x20rendering'), _0x619d4f['_renderTargetsRenderTime']['endMonitoring'](!0x1); })) : (this['scene']['onBeforeRenderTargetsRenderObservable']['remove'](this['_onBeforeRenderTargetsRenderObserver']), this['_onBeforeRenderTargetsRenderObserver'] = null, this['scene']['onAfterRenderTargetsRenderObservable']['remove'](this['_onAfterRenderTargetsRenderObserver']), this['_onAfterRenderTargetsRenderObserver'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'particlesRenderTimeCounter', { 'get': function() { return this['_particlesRenderTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'captureParticlesRenderTime', { 'get': function() { return this['_captureParticlesRenderTime']; }, 'set': function(_0x5e5b47) { var _0x33a696 = this; _0x5e5b47 !== this['_captureParticlesRenderTime'] && (this['_captureParticlesRenderTime'] = _0x5e5b47, _0x5e5b47 ? (this['_onBeforeParticlesRenderingObserver'] = this['scene']['onBeforeParticlesRenderingObservable']['add'](function() { _0x1eb50e['h']['StartPerformanceCounter']('Particles'), _0x33a696['_particlesRenderTime']['beginMonitoring'](); }), this['_onAfterParticlesRenderingObserver'] = this['scene']['onAfterParticlesRenderingObservable']['add'](function() { _0x1eb50e['h']['EndPerformanceCounter']('Particles'), _0x33a696['_particlesRenderTime']['endMonitoring'](!0x1); })) : (this['scene']['onBeforeParticlesRenderingObservable']['remove'](this['_onBeforeParticlesRenderingObserver']), this['_onBeforeParticlesRenderingObserver'] = null, this['scene']['onAfterParticlesRenderingObservable']['remove'](this['_onAfterParticlesRenderingObserver']), this['_onAfterParticlesRenderingObserver'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'spritesRenderTimeCounter', { 'get': function() { return this['_spritesRenderTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'captureSpritesRenderTime', { 'get': function() { return this['_captureSpritesRenderTime']; }, 'set': function(_0x1b3e69) { var _0x3b2e58 = this; _0x1b3e69 !== this['_captureSpritesRenderTime'] && (this['_captureSpritesRenderTime'] = _0x1b3e69, this['scene']['spriteManagers'] && (_0x1b3e69 ? (this['_onBeforeSpritesRenderingObserver'] = this['scene']['onBeforeSpritesRenderingObservable']['add'](function() { _0x1eb50e['h']['StartPerformanceCounter']('Sprites'), _0x3b2e58['_spritesRenderTime']['beginMonitoring'](); }), this['_onAfterSpritesRenderingObserver'] = this['scene']['onAfterSpritesRenderingObservable']['add'](function() { _0x1eb50e['h']['EndPerformanceCounter']('Sprites'), _0x3b2e58['_spritesRenderTime']['endMonitoring'](!0x1); })) : (this['scene']['onBeforeSpritesRenderingObservable']['remove'](this['_onBeforeSpritesRenderingObserver']), this['_onBeforeSpritesRenderingObserver'] = null, this['scene']['onAfterSpritesRenderingObservable']['remove'](this['_onAfterSpritesRenderingObserver']), this['_onAfterSpritesRenderingObserver'] = null))); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'physicsTimeCounter', { 'get': function() { return this['_physicsTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'capturePhysicsTime', { 'get': function() { return this['_capturePhysicsTime']; }, 'set': function(_0x1a7546) { var _0x499c32 = this; _0x1a7546 !== this['_capturePhysicsTime'] && this['scene']['onBeforePhysicsObservable'] && (this['_capturePhysicsTime'] = _0x1a7546, _0x1a7546 ? (this['_onBeforePhysicsObserver'] = this['scene']['onBeforePhysicsObservable']['add'](function() { _0x1eb50e['h']['StartPerformanceCounter']('Physics'), _0x499c32['_physicsTime']['beginMonitoring'](); }), this['_onAfterPhysicsObserver'] = this['scene']['onAfterPhysicsObservable']['add'](function() { _0x1eb50e['h']['EndPerformanceCounter']('Physics'), _0x499c32['_physicsTime']['endMonitoring'](); })) : (this['scene']['onBeforePhysicsObservable']['remove'](this['_onBeforePhysicsObserver']), this['_onBeforePhysicsObserver'] = null, this['scene']['onAfterPhysicsObservable']['remove'](this['_onAfterPhysicsObserver']), this['_onAfterPhysicsObserver'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'animationsTimeCounter', { 'get': function() { return this['_animationsTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'captureAnimationsTime', { 'get': function() { return this['_captureAnimationsTime']; }, 'set': function(_0x514cfc) { var _0x53d21b = this; _0x514cfc !== this['_captureAnimationsTime'] && (this['_captureAnimationsTime'] = _0x514cfc, _0x514cfc ? this['_onAfterAnimationsObserver'] = this['scene']['onAfterAnimationsObservable']['add'](function() { _0x53d21b['_animationsTime']['endMonitoring'](); }) : (this['scene']['onAfterAnimationsObservable']['remove'](this['_onAfterAnimationsObserver']), this['_onAfterAnimationsObserver'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'frameTimeCounter', { 'get': function() { return this['_frameTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'captureFrameTime', { 'get': function() { return this['_captureFrameTime']; }, 'set': function(_0x40e492) { this['_captureFrameTime'] = _0x40e492; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'interFrameTimeCounter', { 'get': function() { return this['_interFrameTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'captureInterFrameTime', { 'get': function() { return this['_captureInterFrameTime']; }, 'set': function(_0x5bbda8) { this['_captureInterFrameTime'] = _0x5bbda8; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'renderTimeCounter', { 'get': function() { return this['_renderTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'captureRenderTime', { 'get': function() { return this['_captureRenderTime']; }, 'set': function(_0x135da3) { var _0x24eef2 = this; _0x135da3 !== this['_captureRenderTime'] && (this['_captureRenderTime'] = _0x135da3, _0x135da3 ? (this['_onBeforeDrawPhaseObserver'] = this['scene']['onBeforeDrawPhaseObservable']['add'](function() { _0x24eef2['_renderTime']['beginMonitoring'](), _0x1eb50e['h']['StartPerformanceCounter']('Main\x20render'); }), this['_onAfterDrawPhaseObserver'] = this['scene']['onAfterDrawPhaseObservable']['add'](function() { _0x24eef2['_renderTime']['endMonitoring'](!0x1), _0x1eb50e['h']['EndPerformanceCounter']('Main\x20render'); })) : (this['scene']['onBeforeDrawPhaseObservable']['remove'](this['_onBeforeDrawPhaseObserver']), this['_onBeforeDrawPhaseObserver'] = null, this['scene']['onAfterDrawPhaseObservable']['remove'](this['_onAfterDrawPhaseObserver']), this['_onAfterDrawPhaseObserver'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'cameraRenderTimeCounter', { 'get': function() { return this['_cameraRenderTime']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'captureCameraRenderTime', { 'get': function() { return this['_captureCameraRenderTime']; }, 'set': function(_0x1227e1) { var _0x381095 = this; _0x1227e1 !== this['_captureCameraRenderTime'] && (this['_captureCameraRenderTime'] = _0x1227e1, _0x1227e1 ? (this['_onBeforeCameraRenderObserver'] = this['scene']['onBeforeCameraRenderObservable']['add'](function(_0x2e93a2) { _0x381095['_cameraRenderTime']['beginMonitoring'](), _0x1eb50e['h']['StartPerformanceCounter']('Rendering\x20camera\x20' + _0x2e93a2['name']); }), this['_onAfterCameraRenderObserver'] = this['scene']['onAfterCameraRenderObservable']['add'](function(_0x1d5747) { _0x381095['_cameraRenderTime']['endMonitoring'](!0x1), _0x1eb50e['h']['EndPerformanceCounter']('Rendering\x20camera\x20' + _0x1d5747['name']); })) : (this['scene']['onBeforeCameraRenderObservable']['remove'](this['_onBeforeCameraRenderObserver']), this['_onBeforeCameraRenderObserver'] = null, this['scene']['onAfterCameraRenderObservable']['remove'](this['_onAfterCameraRenderObserver']), this['_onAfterCameraRenderObserver'] = null)); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7e2b02['prototype'], 'drawCallsCounter', { 'get': function() { return this['scene']['getEngine']()['_drawCalls']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x7e2b02['prototype']['dispose'] = function() { this['scene']['onAfterRenderObservable']['remove'](this['_onAfterRenderObserver']), this['_onAfterRenderObserver'] = null, this['scene']['onBeforeActiveMeshesEvaluationObservable']['remove'](this['_onBeforeActiveMeshesEvaluationObserver']), this['_onBeforeActiveMeshesEvaluationObserver'] = null, this['scene']['onAfterActiveMeshesEvaluationObservable']['remove'](this['_onAfterActiveMeshesEvaluationObserver']), this['_onAfterActiveMeshesEvaluationObserver'] = null, this['scene']['onBeforeRenderTargetsRenderObservable']['remove'](this['_onBeforeRenderTargetsRenderObserver']), this['_onBeforeRenderTargetsRenderObserver'] = null, this['scene']['onAfterRenderTargetsRenderObservable']['remove'](this['_onAfterRenderTargetsRenderObserver']), this['_onAfterRenderTargetsRenderObserver'] = null, this['scene']['onBeforeAnimationsObservable']['remove'](this['_onBeforeAnimationsObserver']), this['_onBeforeAnimationsObserver'] = null, this['scene']['onBeforeParticlesRenderingObservable']['remove'](this['_onBeforeParticlesRenderingObserver']), this['_onBeforeParticlesRenderingObserver'] = null, this['scene']['onAfterParticlesRenderingObservable']['remove'](this['_onAfterParticlesRenderingObserver']), this['_onAfterParticlesRenderingObserver'] = null, this['_onBeforeSpritesRenderingObserver'] && (this['scene']['onBeforeSpritesRenderingObservable']['remove'](this['_onBeforeSpritesRenderingObserver']), this['_onBeforeSpritesRenderingObserver'] = null), this['_onAfterSpritesRenderingObserver'] && (this['scene']['onAfterSpritesRenderingObservable']['remove'](this['_onAfterSpritesRenderingObserver']), this['_onAfterSpritesRenderingObserver'] = null), this['scene']['onBeforeDrawPhaseObservable']['remove'](this['_onBeforeDrawPhaseObserver']), this['_onBeforeDrawPhaseObserver'] = null, this['scene']['onAfterDrawPhaseObservable']['remove'](this['_onAfterDrawPhaseObserver']), this['_onAfterDrawPhaseObserver'] = null, this['_onBeforePhysicsObserver'] && (this['scene']['onBeforePhysicsObservable']['remove'](this['_onBeforePhysicsObserver']), this['_onBeforePhysicsObserver'] = null), this['_onAfterPhysicsObserver'] && (this['scene']['onAfterPhysicsObservable']['remove'](this['_onAfterPhysicsObserver']), this['_onAfterPhysicsObserver'] = null), this['scene']['onAfterAnimationsObservable']['remove'](this['_onAfterAnimationsObserver']), this['_onAfterAnimationsObserver'] = null, this['scene']['onBeforeCameraRenderObservable']['remove'](this['_onBeforeCameraRenderObserver']), this['_onBeforeCameraRenderObserver'] = null, this['scene']['onAfterCameraRenderObservable']['remove'](this['_onAfterCameraRenderObserver']), this['_onAfterCameraRenderObserver'] = null, this['scene'] = null; } , _0x7e2b02; }() , _0x10d420 = _0x59bd00(0x14) , _0x3bcfb4 = '#ifdef\x20DIFFUSE\x0avarying\x20vec2\x20vUVDiffuse;\x0auniform\x20sampler2D\x20diffuseSampler;\x0a#endif\x0a#ifdef\x20OPACITY\x0avarying\x20vec2\x20vUVOpacity;\x0auniform\x20sampler2D\x20opacitySampler;\x0auniform\x20float\x20opacityIntensity;\x0a#endif\x0a#ifdef\x20EMISSIVE\x0avarying\x20vec2\x20vUVEmissive;\x0auniform\x20sampler2D\x20emissiveSampler;\x0a#endif\x0a#ifdef\x20VERTEXALPHA\x0avarying\x20vec4\x20vColor;\x0a#endif\x0auniform\x20vec4\x20glowColor;\x0avoid\x20main(void)\x0a{\x0avec4\x20finalColor=glowColor;\x0a\x0a#ifdef\x20DIFFUSE\x0avec4\x20albedoTexture=texture2D(diffuseSampler,vUVDiffuse);\x0afinalColor.a*=albedoTexture.a;\x0a#endif\x0a#ifdef\x20OPACITY\x0avec4\x20opacityMap=texture2D(opacitySampler,vUVOpacity);\x0a#ifdef\x20OPACITYRGB\x0afinalColor.a*=getLuminance(opacityMap.rgb);\x0a#else\x0afinalColor.a*=opacityMap.a;\x0a#endif\x0afinalColor.a*=opacityIntensity;\x0a#endif\x0a#ifdef\x20VERTEXALPHA\x0afinalColor.a*=vColor.a;\x0a#endif\x0a#ifdef\x20ALPHATEST\x0aif\x20(finalColor.a 0x4 && (_0x49925f['push'](_0x4209f7['b']['MatricesIndicesExtraKind']), _0x49925f['push'](_0x4209f7['b']['MatricesWeightsExtraKind'])), _0x1a53bd['push']('#define\x20NUM_BONE_INFLUENCERS\x20' + _0x5bda28['numBoneInfluencers']), _0x1a53bd['push']('#define\x20BonesPerMesh\x20' + (_0x5bda28['skeleton'] ? _0x5bda28['skeleton']['bones']['length'] + 0x1 : 0x0))) : _0x1a53bd['push']('#define\x20NUM_BONE_INFLUENCERS\x200'); var _0x584693 = _0x5bda28['morphTargetManager'] , _0x310029 = 0x0; _0x584693 && _0x584693['numInfluencers'] > 0x0 && (_0x1a53bd['push']('#define\x20MORPHTARGETS'), _0x310029 = _0x584693['numInfluencers'], _0x1a53bd['push']('#define\x20NUM_MORPH_INFLUENCERS\x20' + _0x310029), _0x2efc06['a']['PrepareAttributesForMorphTargets'](_0x49925f, _0x5bda28, { 'NUM_MORPH_INFLUENCERS': _0x310029 })), _0x2e7ff4 && (_0x1a53bd['push']('#define\x20INSTANCES'), _0x49925f['push']('world0'), _0x49925f['push']('world1'), _0x49925f['push']('world2'), _0x49925f['push']('world3')), this['_addCustomEffectDefines'](_0x1a53bd); var _0x4cc5ce = _0x1a53bd['join']('\x0a'); return this['_cachedDefines'] !== _0x4cc5ce && (this['_cachedDefines'] = _0x4cc5ce, this['_effectLayerMapGenerationEffect'] = this['_scene']['getEngine']()['createEffect']('glowMapGeneration', _0x49925f, ['world', 'mBones', 'viewProjection', 'glowColor', 'morphTargetInfluences', 'diffuseMatrix', 'emissiveMatrix', 'opacityMatrix', 'opacityIntensity'], ['diffuseSampler', 'emissiveSampler', 'opacitySampler'], _0x4cc5ce, void 0x0, void 0x0, void 0x0, { 'maxSimultaneousMorphTargets': _0x310029 })), this['_effectLayerMapGenerationEffect']['isReady'](); } , _0x568661['prototype']['render'] = function() { var _0x550c73 = this['_mergeEffect']; if (_0x550c73['isReady']()) { for (var _0x1c7bd9 = 0x0; _0x1c7bd9 < this['_postProcesses']['length']; _0x1c7bd9++) if (!this['_postProcesses'][_0x1c7bd9]['isReady']()) return; var _0x2b04bc = this['_scene']['getEngine'](); this['onBeforeComposeObservable']['notifyObservers'](this), _0x2b04bc['enableEffect'](_0x550c73), _0x2b04bc['setState'](!0x1), _0x2b04bc['bindBuffers'](this['_vertexBuffers'], this['_indexBuffer'], _0x550c73); var _0xa5963a = _0x2b04bc['getAlphaMode'](); _0x2b04bc['setAlphaMode'](this['_effectLayerOptions']['alphaBlendingMode']), this['_internalRender'](_0x550c73), _0x2b04bc['setAlphaMode'](_0xa5963a), this['onAfterComposeObservable']['notifyObservers'](this); var _0x306fdb = this['_mainTexture']['getSize'](); this['_setMainTextureSize'](), _0x306fdb['width'] === this['_mainTextureDesiredSize']['width'] && _0x306fdb['height'] === this['_mainTextureDesiredSize']['height'] || (this['onSizeChangedObservable']['notifyObservers'](this), this['_disposeTextureAndPostProcesses'](), this['_createMainTexture'](), this['_createTextureAndPostProcesses']()); } } , _0x568661['prototype']['hasMesh'] = function(_0x155519) { return -0x1 === this['renderingGroupId'] || _0x155519['renderingGroupId'] === this['renderingGroupId']; } , _0x568661['prototype']['shouldRender'] = function() { return this['isEnabled'] && this['_shouldRender']; } , _0x568661['prototype']['_shouldRenderMesh'] = function(_0x1b34b6) { return !0x0; } , _0x568661['prototype']['_canRenderMesh'] = function(_0x1d8dae, _0x5cbea8) { return !_0x5cbea8['needAlphaBlendingForMesh'](_0x1d8dae); } , _0x568661['prototype']['_shouldRenderEmissiveTextureForMesh'] = function() { return !0x0; } , _0x568661['prototype']['_renderSubMesh'] = function(_0x1dc55f, _0x63a3b2) { var _0x488ec8 = this; if (void 0x0 === _0x63a3b2 && (_0x63a3b2 = !0x1), this['shouldRender']()) { var _0x3d95d1 = _0x1dc55f['getMaterial']() , _0x349399 = _0x1dc55f['getRenderingMesh']() , _0x21c364 = this['_scene'] , _0x365525 = _0x21c364['getEngine'](); if (_0x349399['_internalAbstractMeshDataInfo']['_isActiveIntermediate'] = !0x1, _0x3d95d1 && this['_canRenderMesh'](_0x349399, _0x3d95d1)) { _0x365525['setState'](_0x3d95d1['backFaceCulling']); var _0x4929c8 = _0x349399['_getInstancesRenderList'](_0x1dc55f['_id']); if (!_0x4929c8['mustReturn'] && this['_shouldRenderMesh'](_0x349399)) { var _0x44c3b7 = _0x4929c8['hardwareInstancedRendering'][_0x1dc55f['_id']]; if (this['_setEmissiveTextureAndColor'](_0x349399, _0x1dc55f, _0x3d95d1), this['_isReady'](_0x1dc55f, _0x44c3b7, this['_emissiveTextureAndColor']['texture'])) { _0x365525['enableEffect'](this['_effectLayerMapGenerationEffect']), _0x349399['_bind'](_0x1dc55f, this['_effectLayerMapGenerationEffect'], _0x10d420['a']['TriangleFillMode']), this['_effectLayerMapGenerationEffect']['setMatrix']('viewProjection', _0x21c364['getTransformMatrix']()), this['_effectLayerMapGenerationEffect']['setFloat4']('glowColor', this['_emissiveTextureAndColor']['color']['r'], this['_emissiveTextureAndColor']['color']['g'], this['_emissiveTextureAndColor']['color']['b'], this['_emissiveTextureAndColor']['color']['a']); var _0x3a0183 = _0x3d95d1['needAlphaTesting']() , _0x565352 = _0x3d95d1['getAlphaTestTexture']() , _0x47b439 = _0x565352 && _0x565352['hasAlpha'] && (_0x3d95d1['useAlphaFromDiffuseTexture'] || _0x3d95d1['_useAlphaFromAlbedoTexture']); if (_0x565352 && (_0x3a0183 || _0x47b439)) this['_effectLayerMapGenerationEffect']['setTexture']('diffuseSampler', _0x565352), (_0x2ad28e = _0x565352['getTextureMatrix']()) && this['_effectLayerMapGenerationEffect']['setMatrix']('diffuseMatrix', _0x2ad28e); var _0x2ad28e, _0xa53e97 = _0x3d95d1['opacityTexture']; if (_0xa53e97) this['_effectLayerMapGenerationEffect']['setTexture']('opacitySampler', _0xa53e97), this['_effectLayerMapGenerationEffect']['setFloat']('opacityIntensity', _0xa53e97['level']), (_0x2ad28e = _0xa53e97['getTextureMatrix']()) && this['_effectLayerMapGenerationEffect']['setMatrix']('opacityMatrix', _0x2ad28e); this['_emissiveTextureAndColor']['texture'] && (this['_effectLayerMapGenerationEffect']['setTexture']('emissiveSampler', this['_emissiveTextureAndColor']['texture']), this['_effectLayerMapGenerationEffect']['setMatrix']('emissiveMatrix', this['_emissiveTextureAndColor']['texture']['getTextureMatrix']())), _0x349399['useBones'] && _0x349399['computeBonesUsingShaders'] && _0x349399['skeleton'] && this['_effectLayerMapGenerationEffect']['setMatrices']('mBones', _0x349399['skeleton']['getTransformMatrices'](_0x349399)), _0x2efc06['a']['BindMorphTargetParameters'](_0x349399, this['_effectLayerMapGenerationEffect']), _0x63a3b2 && _0x365525['setAlphaMode'](_0x3d95d1['alphaMode']), _0x349399['_processRendering'](_0x1dc55f, this['_effectLayerMapGenerationEffect'], _0x10d420['a']['TriangleFillMode'], _0x4929c8, _0x44c3b7, function(_0x33b4a7, _0x385232) { return _0x488ec8['_effectLayerMapGenerationEffect']['setMatrix']('world', _0x385232); }); } else this['_mainTexture']['resetRefreshCounter'](); } } } } , _0x568661['prototype']['_rebuild'] = function() { var _0x3078ce = this['_vertexBuffers'][_0x4209f7['b']['PositionKind']]; _0x3078ce && _0x3078ce['_rebuild'](), this['_generateIndexBuffer'](); } , _0x568661['prototype']['_disposeTextureAndPostProcesses'] = function() { this['_mainTexture']['dispose'](); for (var _0x81fa30 = 0x0; _0x81fa30 < this['_postProcesses']['length']; _0x81fa30++) this['_postProcesses'][_0x81fa30] && this['_postProcesses'][_0x81fa30]['dispose'](); this['_postProcesses'] = []; for (_0x81fa30 = 0x0; _0x81fa30 < this['_textures']['length']; _0x81fa30++) this['_textures'][_0x81fa30] && this['_textures'][_0x81fa30]['dispose'](); this['_textures'] = []; } , _0x568661['prototype']['dispose'] = function() { var _0x5ab6c5 = this['_vertexBuffers'][_0x4209f7['b']['PositionKind']]; _0x5ab6c5 && (_0x5ab6c5['dispose'](), this['_vertexBuffers'][_0x4209f7['b']['PositionKind']] = null), this['_indexBuffer'] && (this['_scene']['getEngine']()['_releaseBuffer'](this['_indexBuffer']), this['_indexBuffer'] = null), this['_disposeTextureAndPostProcesses'](); var _0x177e61 = this['_scene']['effectLayers']['indexOf'](this, 0x0); _0x177e61 > -0x1 && this['_scene']['effectLayers']['splice'](_0x177e61, 0x1), this['onDisposeObservable']['notifyObservers'](this), this['onDisposeObservable']['clear'](), this['onBeforeRenderMainTextureObservable']['clear'](), this['onBeforeComposeObservable']['clear'](), this['onAfterComposeObservable']['clear'](), this['onSizeChangedObservable']['clear'](); } , _0x568661['prototype']['getClassName'] = function() { return 'EffectLayer'; } , _0x568661['Parse'] = function(_0x16004c, _0x5586a3, _0x4ff0ee) { return _0x1eb50e['h']['Instantiate'](_0x16004c['customType'])['Parse'](_0x16004c, _0x5586a3, _0x4ff0ee); } , _0x568661['_SceneComponentInitialization'] = function(_0x4bebfd) { throw _0x2757ee['a']['WarnImport']('EffectLayerSceneComponent'); } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x568661['prototype'], 'name', void 0x0), _0x420e5b['c']([Object(_0x3d4764['f'])()], _0x568661['prototype'], 'neutralColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x568661['prototype'], 'isEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['d'])()], _0x568661['prototype'], 'camera', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x568661['prototype'], 'renderingGroupId', null), _0x568661; }(); _0x20925f['a']['AddParser'](_0x443f74['a']['NAME_EFFECTLAYER'], function(_0x14da16, _0x16f38d, _0x1f0a60, _0x293d42) { if (_0x14da16['effectLayers']) { _0x1f0a60['effectLayers'] || (_0x1f0a60['effectLayers'] = new Array()); for (var _0x5654cc = 0x0; _0x5654cc < _0x14da16['effectLayers']['length']; _0x5654cc++) { var _0xdd0785 = _0x2cd16f['Parse'](_0x14da16['effectLayers'][_0x5654cc], _0x16f38d, _0x293d42); _0x1f0a60['effectLayers']['push'](_0xdd0785); } } }), _0x20925f['a']['prototype']['removeEffectLayer'] = function(_0xb8de15) { var _0x3deb9c = this['effectLayers']['indexOf'](_0xb8de15); return -0x1 !== _0x3deb9c && this['effectLayers']['splice'](_0x3deb9c, 0x1), _0x3deb9c; } , _0x20925f['a']['prototype']['addEffectLayer'] = function(_0x164023) { this['effectLayers']['push'](_0x164023); } ; var _0x166241 = function() { function _0x36d8b6(_0x208a1c) { this['name'] = _0x443f74['a']['NAME_EFFECTLAYER'], this['_renderEffects'] = !0x1, this['_needStencil'] = !0x1, this['_previousStencilState'] = !0x1, this['scene'] = _0x208a1c, this['_engine'] = _0x208a1c['getEngine'](), _0x208a1c['effectLayers'] = new Array(); } return _0x36d8b6['prototype']['register'] = function() { this['scene']['_isReadyForMeshStage']['registerStep'](_0x443f74['a']['STEP_ISREADYFORMESH_EFFECTLAYER'], this, this['_isReadyForMesh']), this['scene']['_cameraDrawRenderTargetStage']['registerStep'](_0x443f74['a']['STEP_CAMERADRAWRENDERTARGET_EFFECTLAYER'], this, this['_renderMainTexture']), this['scene']['_beforeCameraDrawStage']['registerStep'](_0x443f74['a']['STEP_BEFORECAMERADRAW_EFFECTLAYER'], this, this['_setStencil']), this['scene']['_afterRenderingGroupDrawStage']['registerStep'](_0x443f74['a']['STEP_AFTERRENDERINGGROUPDRAW_EFFECTLAYER_DRAW'], this, this['_drawRenderingGroup']), this['scene']['_afterCameraDrawStage']['registerStep'](_0x443f74['a']['STEP_AFTERCAMERADRAW_EFFECTLAYER'], this, this['_setStencilBack']), this['scene']['_afterCameraDrawStage']['registerStep'](_0x443f74['a']['STEP_AFTERCAMERADRAW_EFFECTLAYER_DRAW'], this, this['_drawCamera']); } , _0x36d8b6['prototype']['rebuild'] = function() { for (var _0x43c2d1 = 0x0, _0xc29118 = this['scene']['effectLayers']; _0x43c2d1 < _0xc29118['length']; _0x43c2d1++) { _0xc29118[_0x43c2d1]['_rebuild'](); } } , _0x36d8b6['prototype']['serialize'] = function(_0x24b9c2) { _0x24b9c2['effectLayers'] = []; for (var _0xd9140 = 0x0, _0xb48ba8 = this['scene']['effectLayers']; _0xd9140 < _0xb48ba8['length']; _0xd9140++) { var _0x9ea016 = _0xb48ba8[_0xd9140]; _0x9ea016['serialize'] && _0x24b9c2['effectLayers']['push'](_0x9ea016['serialize']()); } } , _0x36d8b6['prototype']['addFromContainer'] = function(_0x1d9f3b) { var _0x393500 = this; _0x1d9f3b['effectLayers'] && _0x1d9f3b['effectLayers']['forEach'](function(_0x12e6a1) { _0x393500['scene']['addEffectLayer'](_0x12e6a1); }); } , _0x36d8b6['prototype']['removeFromContainer'] = function(_0x4649c6, _0x17e6bf) { var _0x2dba86 = this; _0x4649c6['effectLayers'] && _0x4649c6['effectLayers']['forEach'](function(_0x1e7697) { _0x2dba86['scene']['removeEffectLayer'](_0x1e7697), _0x17e6bf && _0x1e7697['dispose'](); }); } , _0x36d8b6['prototype']['dispose'] = function() { for (var _0xd95864 = this['scene']['effectLayers']; _0xd95864['length']; ) _0xd95864[0x0]['dispose'](); } , _0x36d8b6['prototype']['_isReadyForMesh'] = function(_0x57a703, _0x2812cc) { for (var _0x4530b1 = 0x0, _0x351964 = this['scene']['effectLayers']; _0x4530b1 < _0x351964['length']; _0x4530b1++) { var _0x26b002 = _0x351964[_0x4530b1]; if (_0x26b002['hasMesh'](_0x57a703)) for (var _0x316f47 = 0x0, _0x35a23f = _0x57a703['subMeshes']; _0x316f47 < _0x35a23f['length']; _0x316f47++) { var _0x73f6e7 = _0x35a23f[_0x316f47]; if (!_0x26b002['isReady'](_0x73f6e7, _0x2812cc)) return !0x1; } } return !0x0; } , _0x36d8b6['prototype']['_renderMainTexture'] = function(_0x19c056) { this['_renderEffects'] = !0x1, this['_needStencil'] = !0x1; var _0x30289d = !0x1 , _0x1a2ae2 = this['scene']['effectLayers']; if (_0x1a2ae2 && _0x1a2ae2['length'] > 0x0) { this['_previousStencilState'] = this['_engine']['getStencilBuffer'](); for (var _0x566adc = 0x0, _0x5a259a = _0x1a2ae2; _0x566adc < _0x5a259a['length']; _0x566adc++) { var _0x18a075 = _0x5a259a[_0x566adc]; if (_0x18a075['shouldRender']() && (!_0x18a075['camera'] || _0x18a075['camera']['cameraRigMode'] === _0x4504cf['a']['RIG_MODE_NONE'] && _0x19c056 === _0x18a075['camera'] || _0x18a075['camera']['cameraRigMode'] !== _0x4504cf['a']['RIG_MODE_NONE'] && _0x18a075['camera']['_rigCameras']['indexOf'](_0x19c056) > -0x1)) { this['_renderEffects'] = !0x0, this['_needStencil'] = this['_needStencil'] || _0x18a075['needStencil'](); var _0x59d47d = _0x18a075['_mainTexture']; _0x59d47d['_shouldRender']() && (this['scene']['incrementRenderId'](), _0x59d47d['render'](!0x1, !0x1), _0x30289d = !0x0); } } this['scene']['incrementRenderId'](); } return _0x30289d; } , _0x36d8b6['prototype']['_setStencil'] = function() { this['_needStencil'] && this['_engine']['setStencilBuffer'](!0x0); } , _0x36d8b6['prototype']['_setStencilBack'] = function() { this['_needStencil'] && this['_engine']['setStencilBuffer'](this['_previousStencilState']); } , _0x36d8b6['prototype']['_draw'] = function(_0xc46b15) { if (this['_renderEffects']) { this['_engine']['setDepthBuffer'](!0x1); for (var _0x549d6c = this['scene']['effectLayers'], _0x3014f0 = 0x0; _0x3014f0 < _0x549d6c['length']; _0x3014f0++) { var _0x4a8af4 = _0x549d6c[_0x3014f0]; _0x4a8af4['renderingGroupId'] === _0xc46b15 && _0x4a8af4['shouldRender']() && _0x4a8af4['render'](); } this['_engine']['setDepthBuffer'](!0x0); } } , _0x36d8b6['prototype']['_drawCamera'] = function() { this['_renderEffects'] && this['_draw'](-0x1); } , _0x36d8b6['prototype']['_drawRenderingGroup'] = function(_0x329931) { !this['scene']['_isInIntermediateRendering']() && this['_renderEffects'] && this['_draw'](_0x329931); } , _0x36d8b6; }(); _0x2cd16f['_SceneComponentInitialization'] = function(_0x3908f1) { var _0x1f0c32 = _0x3908f1['_getComponent'](_0x443f74['a']['NAME_EFFECTLAYER']); _0x1f0c32 || (_0x1f0c32 = new _0x166241(_0x3908f1), _0x3908f1['_addComponent'](_0x1f0c32)); } ; var _0x52f095 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0a#ifdef\x20EMISSIVE\x0auniform\x20sampler2D\x20textureSampler2;\x0a#endif\x0a\x0auniform\x20float\x20offset;\x0avoid\x20main(void)\x20{\x0avec4\x20baseColor=texture2D(textureSampler,vUV);\x0a#ifdef\x20EMISSIVE\x0abaseColor+=texture2D(textureSampler2,vUV);\x0abaseColor*=offset;\x0a#else\x0abaseColor.a=abs(offset-baseColor.a);\x0a#ifdef\x20STROKE\x0afloat\x20alpha=smoothstep(.0,.1,baseColor.a);\x0abaseColor.a=alpha;\x0abaseColor.rgb=baseColor.rgb*alpha;\x0a#endif\x0a#endif\x0agl_FragColor=baseColor;\x0a}'; _0x3e9e56['a']['ShadersStore']['glowMapMergePixelShader'] = _0x52f095; var _0x54039d = '\x0aattribute\x20vec2\x20position;\x0a\x0avarying\x20vec2\x20vUV;\x0aconst\x20vec2\x20madd=vec2(0.5,0.5);\x0avoid\x20main(void)\x20{\x0avUV=position*madd+madd;\x0agl_Position=vec4(position,0.0,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['glowMapMergeVertexShader'] = _0x54039d; _0x20925f['a']['prototype']['getGlowLayerByName'] = function(_0x30418d) { for (var _0x3c88e6 = 0x0; _0x3c88e6 < this['effectLayers']['length']; _0x3c88e6++) if (this['effectLayers'][_0x3c88e6]['name'] === _0x30418d && this['effectLayers'][_0x3c88e6]['getEffectName']() === _0x54ec31['EffectName']) return this['effectLayers'][_0x3c88e6]; return null; } ; var _0x54ec31 = function(_0x2c3bc9) { function _0xdd3bd0(_0x192f7a, _0x10ba49, _0x40d6ff) { var _0xf0739b = _0x2c3bc9['call'](this, _0x192f7a, _0x10ba49) || this; return _0xf0739b['_intensity'] = 0x1, _0xf0739b['_includedOnlyMeshes'] = [], _0xf0739b['_excludedMeshes'] = [], _0xf0739b['neutralColor'] = new _0x47d24f['f'](0x0,0x0,0x0,0x1), _0xf0739b['_options'] = _0x420e5b['a']({ 'mainTextureRatio': _0xdd3bd0['DefaultTextureRatio'], 'blurKernelSize': 0x20, 'mainTextureFixedSize': void 0x0, 'camera': null, 'mainTextureSamples': 0x1, 'renderingGroupId': -0x1 }, _0x40d6ff), _0xf0739b['_init']({ 'alphaBlendingMode': _0x24e342['a']['ALPHA_ADD'], 'camera': _0xf0739b['_options']['camera'], 'mainTextureFixedSize': _0xf0739b['_options']['mainTextureFixedSize'], 'mainTextureRatio': _0xf0739b['_options']['mainTextureRatio'], 'renderingGroupId': _0xf0739b['_options']['renderingGroupId'] }), _0xf0739b; } return _0x420e5b['d'](_0xdd3bd0, _0x2c3bc9), Object['defineProperty'](_0xdd3bd0['prototype'], 'blurKernelSize', { 'get': function() { return this['_horizontalBlurPostprocess1']['kernel']; }, 'set': function(_0xb525c3) { this['_horizontalBlurPostprocess1']['kernel'] = _0xb525c3, this['_verticalBlurPostprocess1']['kernel'] = _0xb525c3, this['_horizontalBlurPostprocess2']['kernel'] = _0xb525c3, this['_verticalBlurPostprocess2']['kernel'] = _0xb525c3; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdd3bd0['prototype'], 'intensity', { 'get': function() { return this['_intensity']; }, 'set': function(_0x2fcad8) { this['_intensity'] = _0x2fcad8; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xdd3bd0['prototype']['getEffectName'] = function() { return _0xdd3bd0['EffectName']; } , _0xdd3bd0['prototype']['_createMergeEffect'] = function() { return this['_engine']['createEffect']('glowMapMerge', [_0x4209f7['b']['PositionKind']], ['offset'], ['textureSampler', 'textureSampler2'], '#define\x20EMISSIVE\x20\x0a'); } , _0xdd3bd0['prototype']['_createTextureAndPostProcesses'] = function() { var _0x541c76 = this , _0x418c49 = this['_mainTextureDesiredSize']['width'] , _0x54944c = this['_mainTextureDesiredSize']['height']; _0x418c49 = this['_engine']['needPOTTextures'] ? _0x1eb50e['h']['GetExponentOfTwo'](_0x418c49, this['_maxSize']) : _0x418c49, _0x54944c = this['_engine']['needPOTTextures'] ? _0x1eb50e['h']['GetExponentOfTwo'](_0x54944c, this['_maxSize']) : _0x54944c; var _0x37af47 = 0x0; _0x37af47 = this['_engine']['getCaps']()['textureHalfFloatRender'] ? _0x24e342['a']['TEXTURETYPE_HALF_FLOAT'] : _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'], this['_blurTexture1'] = new _0xe8a585('GlowLayerBlurRTT',{ 'width': _0x418c49, 'height': _0x54944c },this['_scene'],!0x1,!0x0,_0x37af47), this['_blurTexture1']['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_blurTexture1']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_blurTexture1']['updateSamplingMode'](_0x11d14a['a']['BILINEAR_SAMPLINGMODE']), this['_blurTexture1']['renderParticles'] = !0x1, this['_blurTexture1']['ignoreCameraViewport'] = !0x0; var _0x1c9391 = Math['floor'](_0x418c49 / 0x2) , _0x2902d3 = Math['floor'](_0x54944c / 0x2); this['_blurTexture2'] = new _0xe8a585('GlowLayerBlurRTT2',{ 'width': _0x1c9391, 'height': _0x2902d3 },this['_scene'],!0x1,!0x0,_0x37af47), this['_blurTexture2']['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_blurTexture2']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_blurTexture2']['updateSamplingMode'](_0x11d14a['a']['BILINEAR_SAMPLINGMODE']), this['_blurTexture2']['renderParticles'] = !0x1, this['_blurTexture2']['ignoreCameraViewport'] = !0x0, this['_textures'] = [this['_blurTexture1'], this['_blurTexture2']], this['_horizontalBlurPostprocess1'] = new _0x1c8af1('GlowLayerHBP1',new _0x47d24f['w'](0x1,0x0),this['_options']['blurKernelSize'] / 0x2,{ 'width': _0x418c49, 'height': _0x54944c },null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1,_0x37af47), this['_horizontalBlurPostprocess1']['width'] = _0x418c49, this['_horizontalBlurPostprocess1']['height'] = _0x54944c, this['_horizontalBlurPostprocess1']['onApplyObservable']['add'](function(_0x3fbd26) { _0x3fbd26['setTexture']('textureSampler', _0x541c76['_mainTexture']); }), this['_verticalBlurPostprocess1'] = new _0x1c8af1('GlowLayerVBP1',new _0x47d24f['w'](0x0,0x1),this['_options']['blurKernelSize'] / 0x2,{ 'width': _0x418c49, 'height': _0x54944c },null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1,_0x37af47), this['_horizontalBlurPostprocess2'] = new _0x1c8af1('GlowLayerHBP2',new _0x47d24f['w'](0x1,0x0),this['_options']['blurKernelSize'] / 0x2,{ 'width': _0x1c9391, 'height': _0x2902d3 },null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1,_0x37af47), this['_horizontalBlurPostprocess2']['width'] = _0x1c9391, this['_horizontalBlurPostprocess2']['height'] = _0x2902d3, this['_horizontalBlurPostprocess2']['onApplyObservable']['add'](function(_0x5edfe3) { _0x5edfe3['setTexture']('textureSampler', _0x541c76['_blurTexture1']); }), this['_verticalBlurPostprocess2'] = new _0x1c8af1('GlowLayerVBP2',new _0x47d24f['w'](0x0,0x1),this['_options']['blurKernelSize'] / 0x2,{ 'width': _0x1c9391, 'height': _0x2902d3 },null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1,_0x37af47), this['_postProcesses'] = [this['_horizontalBlurPostprocess1'], this['_verticalBlurPostprocess1'], this['_horizontalBlurPostprocess2'], this['_verticalBlurPostprocess2']], this['_postProcesses1'] = [this['_horizontalBlurPostprocess1'], this['_verticalBlurPostprocess1']], this['_postProcesses2'] = [this['_horizontalBlurPostprocess2'], this['_verticalBlurPostprocess2']], this['_mainTexture']['samples'] = this['_options']['mainTextureSamples'], this['_mainTexture']['onAfterUnbindObservable']['add'](function() { var _0xaad43b = _0x541c76['_blurTexture1']['getInternalTexture'](); _0xaad43b && (_0x541c76['_scene']['postProcessManager']['directRender'](_0x541c76['_postProcesses1'], _0xaad43b, !0x0), (_0xaad43b = _0x541c76['_blurTexture2']['getInternalTexture']()) && _0x541c76['_scene']['postProcessManager']['directRender'](_0x541c76['_postProcesses2'], _0xaad43b, !0x0)); }), this['_postProcesses']['map'](function(_0x11c1ed) { _0x11c1ed['autoClear'] = !0x1; }); } , _0xdd3bd0['prototype']['isReady'] = function(_0x50b411, _0x5520f7) { var _0x443784 = _0x50b411['getMaterial']() , _0x2bf441 = _0x50b411['getRenderingMesh'](); if (!_0x443784 || !_0x2bf441) return !0x1; var _0x19ad56 = _0x443784['emissiveTexture']; return _0x2c3bc9['prototype']['_isReady']['call'](this, _0x50b411, _0x5520f7, _0x19ad56); } , _0xdd3bd0['prototype']['needStencil'] = function() { return !0x1; } , _0xdd3bd0['prototype']['_canRenderMesh'] = function(_0x2d189d, _0x475c29) { return !0x0; } , _0xdd3bd0['prototype']['_internalRender'] = function(_0x5e7604) { _0x5e7604['setTexture']('textureSampler', this['_blurTexture1']), _0x5e7604['setTexture']('textureSampler2', this['_blurTexture2']), _0x5e7604['setFloat']('offset', this['_intensity']); var _0x2cf20f = this['_engine'] , _0x394cab = _0x2cf20f['getStencilBuffer'](); _0x2cf20f['setStencilBuffer'](!0x1), _0x2cf20f['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, 0x6), _0x2cf20f['setStencilBuffer'](_0x394cab); } , _0xdd3bd0['prototype']['_setEmissiveTextureAndColor'] = function(_0x333dc0, _0x18eef2, _0x4231a0) { var _0x4654a9 = 0x1; this['customEmissiveTextureSelector'] ? this['_emissiveTextureAndColor']['texture'] = this['customEmissiveTextureSelector'](_0x333dc0, _0x18eef2, _0x4231a0) : _0x4231a0 ? (this['_emissiveTextureAndColor']['texture'] = _0x4231a0['emissiveTexture'], this['_emissiveTextureAndColor']['texture'] && (_0x4654a9 = this['_emissiveTextureAndColor']['texture']['level'])) : this['_emissiveTextureAndColor']['texture'] = null, this['customEmissiveColorSelector'] ? this['customEmissiveColorSelector'](_0x333dc0, _0x18eef2, _0x4231a0, this['_emissiveTextureAndColor']['color']) : _0x4231a0['emissiveColor'] ? this['_emissiveTextureAndColor']['color']['set'](_0x4231a0['emissiveColor']['r'] * _0x4654a9, _0x4231a0['emissiveColor']['g'] * _0x4654a9, _0x4231a0['emissiveColor']['b'] * _0x4654a9, _0x4231a0['alpha']) : this['_emissiveTextureAndColor']['color']['set'](this['neutralColor']['r'], this['neutralColor']['g'], this['neutralColor']['b'], this['neutralColor']['a']); } , _0xdd3bd0['prototype']['_shouldRenderMesh'] = function(_0x7881e8) { return this['hasMesh'](_0x7881e8); } , _0xdd3bd0['prototype']['_addCustomEffectDefines'] = function(_0x31fbe3) { _0x31fbe3['push']('#define\x20GLOW'); } , _0xdd3bd0['prototype']['addExcludedMesh'] = function(_0x57d234) { -0x1 === this['_excludedMeshes']['indexOf'](_0x57d234['uniqueId']) && this['_excludedMeshes']['push'](_0x57d234['uniqueId']); } , _0xdd3bd0['prototype']['removeExcludedMesh'] = function(_0xb82146) { var _0x5ad3f7 = this['_excludedMeshes']['indexOf'](_0xb82146['uniqueId']); -0x1 !== _0x5ad3f7 && this['_excludedMeshes']['splice'](_0x5ad3f7, 0x1); } , _0xdd3bd0['prototype']['addIncludedOnlyMesh'] = function(_0xdd892a) { -0x1 === this['_includedOnlyMeshes']['indexOf'](_0xdd892a['uniqueId']) && this['_includedOnlyMeshes']['push'](_0xdd892a['uniqueId']); } , _0xdd3bd0['prototype']['removeIncludedOnlyMesh'] = function(_0xbd22a4) { var _0x2dfc85 = this['_includedOnlyMeshes']['indexOf'](_0xbd22a4['uniqueId']); -0x1 !== _0x2dfc85 && this['_includedOnlyMeshes']['splice'](_0x2dfc85, 0x1); } , _0xdd3bd0['prototype']['hasMesh'] = function(_0x24be1f) { return !!_0x2c3bc9['prototype']['hasMesh']['call'](this, _0x24be1f) && (this['_includedOnlyMeshes']['length'] ? -0x1 !== this['_includedOnlyMeshes']['indexOf'](_0x24be1f['uniqueId']) : !this['_excludedMeshes']['length'] || -0x1 === this['_excludedMeshes']['indexOf'](_0x24be1f['uniqueId'])); } , _0xdd3bd0['prototype']['_disposeMesh'] = function(_0x42e047) { this['removeIncludedOnlyMesh'](_0x42e047), this['removeExcludedMesh'](_0x42e047); } , _0xdd3bd0['prototype']['getClassName'] = function() { return 'GlowLayer'; } , _0xdd3bd0['prototype']['serialize'] = function() { var _0x5dbe81, _0xe86e63 = _0x3d4764['a']['Serialize'](this); if (_0xe86e63['customType'] = 'BABYLON.GlowLayer', _0xe86e63['includedMeshes'] = [], this['_includedOnlyMeshes']['length']) for (_0x5dbe81 = 0x0; _0x5dbe81 < this['_includedOnlyMeshes']['length']; _0x5dbe81++) { (_0x4497aa = this['_scene']['getMeshByUniqueID'](this['_includedOnlyMeshes'][_0x5dbe81])) && _0xe86e63['includedMeshes']['push'](_0x4497aa['id']); } if (_0xe86e63['excludedMeshes'] = [], this['_excludedMeshes']['length']) for (_0x5dbe81 = 0x0; _0x5dbe81 < this['_excludedMeshes']['length']; _0x5dbe81++) { var _0x4497aa; (_0x4497aa = this['_scene']['getMeshByUniqueID'](this['_excludedMeshes'][_0x5dbe81])) && _0xe86e63['excludedMeshes']['push'](_0x4497aa['id']); } return _0xe86e63; } , _0xdd3bd0['Parse'] = function(_0x20ae66, _0x42ff70, _0x474577) { var _0x31eee6, _0x49e41f = _0x3d4764['a']['Parse'](function() { return new _0xdd3bd0(_0x20ae66['name'],_0x42ff70,_0x20ae66['options']); }, _0x20ae66, _0x42ff70, _0x474577); for (_0x31eee6 = 0x0; _0x31eee6 < _0x20ae66['excludedMeshes']['length']; _0x31eee6++) { (_0x24d512 = _0x42ff70['getMeshByID'](_0x20ae66['excludedMeshes'][_0x31eee6])) && _0x49e41f['addExcludedMesh'](_0x24d512); } for (_0x31eee6 = 0x0; _0x31eee6 < _0x20ae66['includedMeshes']['length']; _0x31eee6++) { var _0x24d512; (_0x24d512 = _0x42ff70['getMeshByID'](_0x20ae66['includedMeshes'][_0x31eee6])) && _0x49e41f['addIncludedOnlyMesh'](_0x24d512); } return _0x49e41f; } , _0xdd3bd0['EffectName'] = 'GlowLayer', _0xdd3bd0['DefaultBlurKernelSize'] = 0x20, _0xdd3bd0['DefaultTextureRatio'] = 0.5, _0x420e5b['c']([Object(_0x3d4764['c'])()], _0xdd3bd0['prototype'], 'blurKernelSize', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0xdd3bd0['prototype'], 'intensity', null), _0x420e5b['c']([Object(_0x3d4764['c'])('options')], _0xdd3bd0['prototype'], '_options', void 0x0), _0xdd3bd0; }(_0x2cd16f); _0x376b99['a']['RegisteredTypes']['BABYLON.GlowLayer'] = _0x54ec31; var _0x2c8201 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0a\x0auniform\x20vec2\x20screenSize;\x0auniform\x20vec2\x20direction;\x0auniform\x20float\x20blurWidth;\x0a\x0afloat\x20getLuminance(vec3\x20color)\x0a{\x0areturn\x20dot(color,vec3(0.2126,0.7152,0.0722));\x0a}\x0avoid\x20main(void)\x0a{\x0afloat\x20weights[7];\x0aweights[0]=0.05;\x0aweights[1]=0.1;\x0aweights[2]=0.2;\x0aweights[3]=0.3;\x0aweights[4]=0.2;\x0aweights[5]=0.1;\x0aweights[6]=0.05;\x0avec2\x20texelSize=vec2(1.0/screenSize.x,1.0/screenSize.y);\x0avec2\x20texelStep=texelSize*direction*blurWidth;\x0avec2\x20start=vUV-3.0*texelStep;\x0avec4\x20baseColor=vec4(0.,0.,0.,0.);\x0avec2\x20texelOffset=vec2(0.,0.);\x0afor\x20(int\x20i=0;\x20i<7;\x20i++)\x0a{\x0a\x0avec4\x20texel=texture2D(textureSampler,start+texelOffset);\x0abaseColor.a+=texel.a*weights[i];\x0a\x0afloat\x20luminance=getLuminance(baseColor.rgb);\x0afloat\x20luminanceTexel=getLuminance(texel.rgb);\x0afloat\x20choice=step(luminanceTexel,luminance);\x0abaseColor.rgb=choice*baseColor.rgb+(1.0-choice)*texel.rgb;\x0atexelOffset+=texelStep;\x0a}\x0agl_FragColor=baseColor;\x0a}'; _0x3e9e56['a']['ShadersStore']['glowBlurPostProcessPixelShader'] = _0x2c8201; _0x20925f['a']['prototype']['getHighlightLayerByName'] = function(_0x2da669) { for (var _0x1ba1d1 = 0x0; _0x1ba1d1 < this['effectLayers']['length']; _0x1ba1d1++) if (this['effectLayers'][_0x1ba1d1]['name'] === _0x2da669 && this['effectLayers'][_0x1ba1d1]['getEffectName']() === _0x15f267['EffectName']) return this['effectLayers'][_0x1ba1d1]; return null; } ; var _0x195281 = function(_0x5e8827) { function _0x1cb22(_0x2da9ca, _0x4a67e6, _0x3f69a2, _0x405e81, _0x111dce, _0x2bb3bb, _0x245bbe, _0x5eece0) { void 0x0 === _0x2bb3bb && (_0x2bb3bb = _0x11d14a['a']['BILINEAR_SAMPLINGMODE']); var _0x2fb418 = _0x5e8827['call'](this, _0x2da9ca, 'glowBlurPostProcess', ['screenSize', 'direction', 'blurWidth'], null, _0x405e81, _0x111dce, _0x2bb3bb, _0x245bbe, _0x5eece0) || this; return _0x2fb418['direction'] = _0x4a67e6, _0x2fb418['kernel'] = _0x3f69a2, _0x2fb418['onApplyObservable']['add'](function(_0x534f00) { _0x534f00['setFloat2']('screenSize', _0x2fb418['width'], _0x2fb418['height']), _0x534f00['setVector2']('direction', _0x2fb418['direction']), _0x534f00['setFloat']('blurWidth', _0x2fb418['kernel']); }), _0x2fb418; } return _0x420e5b['d'](_0x1cb22, _0x5e8827), _0x1cb22; }(_0x1f5ab5) , _0x15f267 = function(_0x41ec80) { function _0x359546(_0x10f613, _0x5eb7d8, _0x36ec35) { var _0x3c2243 = _0x41ec80['call'](this, _0x10f613, _0x5eb7d8) || this; return _0x3c2243['name'] = _0x10f613, _0x3c2243['innerGlow'] = !0x0, _0x3c2243['outerGlow'] = !0x0, _0x3c2243['onBeforeBlurObservable'] = new _0x2dbec2['c'](), _0x3c2243['onAfterBlurObservable'] = new _0x2dbec2['c'](), _0x3c2243['_instanceGlowingMeshStencilReference'] = _0x359546['GlowingMeshStencilReference']++, _0x3c2243['_meshes'] = {}, _0x3c2243['_excludedMeshes'] = {}, _0x3c2243['neutralColor'] = _0x359546['NeutralColor'], _0x3c2243['_engine']['isStencilEnable'] || _0x3f98cb['a']['Warn']('Rendering\x20the\x20Highlight\x20Layer\x20requires\x20the\x20stencil\x20to\x20be\x20active\x20on\x20the\x20canvas.\x20var\x20engine\x20=\x20new\x20Engine(canvas,\x20antialias,\x20{\x20stencil:\x20true\x20}'), _0x3c2243['_options'] = _0x420e5b['a']({ 'mainTextureRatio': 0.5, 'blurTextureSizeRatio': 0.5, 'blurHorizontalSize': 0x1, 'blurVerticalSize': 0x1, 'alphaBlendingMode': _0x24e342['a']['ALPHA_COMBINE'], 'camera': null, 'renderingGroupId': -0x1 }, _0x36ec35), _0x3c2243['_init']({ 'alphaBlendingMode': _0x3c2243['_options']['alphaBlendingMode'], 'camera': _0x3c2243['_options']['camera'], 'mainTextureFixedSize': _0x3c2243['_options']['mainTextureFixedSize'], 'mainTextureRatio': _0x3c2243['_options']['mainTextureRatio'], 'renderingGroupId': _0x3c2243['_options']['renderingGroupId'] }), _0x3c2243['_shouldRender'] = !0x1, _0x3c2243; } return _0x420e5b['d'](_0x359546, _0x41ec80), Object['defineProperty'](_0x359546['prototype'], 'blurHorizontalSize', { 'get': function() { return this['_horizontalBlurPostprocess']['kernel']; }, 'set': function(_0x3a30dc) { this['_horizontalBlurPostprocess']['kernel'] = _0x3a30dc; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x359546['prototype'], 'blurVerticalSize', { 'get': function() { return this['_verticalBlurPostprocess']['kernel']; }, 'set': function(_0x5a4542) { this['_verticalBlurPostprocess']['kernel'] = _0x5a4542; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x359546['prototype']['getEffectName'] = function() { return _0x359546['EffectName']; } , _0x359546['prototype']['_createMergeEffect'] = function() { return this['_engine']['createEffect']('glowMapMerge', [_0x4209f7['b']['PositionKind']], ['offset'], ['textureSampler'], this['_options']['isStroke'] ? '#define\x20STROKE\x20\x0a' : void 0x0); } , _0x359546['prototype']['_createTextureAndPostProcesses'] = function() { var _0x1132f6 = this , _0x4b8b1f = this['_mainTextureDesiredSize']['width'] * this['_options']['blurTextureSizeRatio'] , _0x21278c = this['_mainTextureDesiredSize']['height'] * this['_options']['blurTextureSizeRatio']; _0x4b8b1f = this['_engine']['needPOTTextures'] ? _0x1eb50e['h']['GetExponentOfTwo'](_0x4b8b1f, this['_maxSize']) : _0x4b8b1f, _0x21278c = this['_engine']['needPOTTextures'] ? _0x1eb50e['h']['GetExponentOfTwo'](_0x21278c, this['_maxSize']) : _0x21278c; var _0x2a2d58 = 0x0; _0x2a2d58 = this['_engine']['getCaps']()['textureHalfFloatRender'] ? _0x24e342['a']['TEXTURETYPE_HALF_FLOAT'] : _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'], this['_blurTexture'] = new _0xe8a585('HighlightLayerBlurRTT',{ 'width': _0x4b8b1f, 'height': _0x21278c },this['_scene'],!0x1,!0x0,_0x2a2d58), this['_blurTexture']['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_blurTexture']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_blurTexture']['anisotropicFilteringLevel'] = 0x10, this['_blurTexture']['updateSamplingMode'](_0x11d14a['a']['TRILINEAR_SAMPLINGMODE']), this['_blurTexture']['renderParticles'] = !0x1, this['_blurTexture']['ignoreCameraViewport'] = !0x0, this['_textures'] = [this['_blurTexture']], this['_options']['alphaBlendingMode'] === _0x24e342['a']['ALPHA_COMBINE'] ? (this['_downSamplePostprocess'] = new _0x4b3169('HighlightLayerPPP',this['_options']['blurTextureSizeRatio'],null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],this['_scene']['getEngine']()), this['_downSamplePostprocess']['onApplyObservable']['add'](function(_0xca839d) { _0xca839d['setTexture']('textureSampler', _0x1132f6['_mainTexture']); }), this['_horizontalBlurPostprocess'] = new _0x195281('HighlightLayerHBP',new _0x47d24f['w'](0x1,0x0),this['_options']['blurHorizontalSize'],0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],this['_scene']['getEngine']()), this['_horizontalBlurPostprocess']['onApplyObservable']['add'](function(_0x5b55f5) { _0x5b55f5['setFloat2']('screenSize', _0x4b8b1f, _0x21278c); }), this['_verticalBlurPostprocess'] = new _0x195281('HighlightLayerVBP',new _0x47d24f['w'](0x0,0x1),this['_options']['blurVerticalSize'],0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],this['_scene']['getEngine']()), this['_verticalBlurPostprocess']['onApplyObservable']['add'](function(_0x1877ee) { _0x1877ee['setFloat2']('screenSize', _0x4b8b1f, _0x21278c); }), this['_postProcesses'] = [this['_downSamplePostprocess'], this['_horizontalBlurPostprocess'], this['_verticalBlurPostprocess']]) : (this['_horizontalBlurPostprocess'] = new _0x1c8af1('HighlightLayerHBP',new _0x47d24f['w'](0x1,0x0),this['_options']['blurHorizontalSize'] / 0x2,{ 'width': _0x4b8b1f, 'height': _0x21278c },null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1,_0x2a2d58), this['_horizontalBlurPostprocess']['width'] = _0x4b8b1f, this['_horizontalBlurPostprocess']['height'] = _0x21278c, this['_horizontalBlurPostprocess']['onApplyObservable']['add'](function(_0x40791f) { _0x40791f['setTexture']('textureSampler', _0x1132f6['_mainTexture']); }), this['_verticalBlurPostprocess'] = new _0x1c8af1('HighlightLayerVBP',new _0x47d24f['w'](0x0,0x1),this['_options']['blurVerticalSize'] / 0x2,{ 'width': _0x4b8b1f, 'height': _0x21278c },null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1,_0x2a2d58), this['_postProcesses'] = [this['_horizontalBlurPostprocess'], this['_verticalBlurPostprocess']]), this['_mainTexture']['onAfterUnbindObservable']['add'](function() { _0x1132f6['onBeforeBlurObservable']['notifyObservers'](_0x1132f6); var _0x13a303 = _0x1132f6['_blurTexture']['getInternalTexture'](); _0x13a303 && _0x1132f6['_scene']['postProcessManager']['directRender'](_0x1132f6['_postProcesses'], _0x13a303, !0x0), _0x1132f6['onAfterBlurObservable']['notifyObservers'](_0x1132f6); }), this['_postProcesses']['map'](function(_0x564ad9) { _0x564ad9['autoClear'] = !0x1; }); } , _0x359546['prototype']['needStencil'] = function() { return !0x0; } , _0x359546['prototype']['isReady'] = function(_0x4ecd4c, _0x3aba0a) { var _0x129be3 = _0x4ecd4c['getMaterial']() , _0x4abee7 = _0x4ecd4c['getRenderingMesh'](); if (!_0x129be3 || !_0x4abee7 || !this['_meshes']) return !0x1; var _0x28bcac = null , _0x4f0b66 = this['_meshes'][_0x4abee7['uniqueId']]; return _0x4f0b66 && _0x4f0b66['glowEmissiveOnly'] && _0x129be3 && (_0x28bcac = _0x129be3['emissiveTexture']), _0x41ec80['prototype']['_isReady']['call'](this, _0x4ecd4c, _0x3aba0a, _0x28bcac); } , _0x359546['prototype']['_internalRender'] = function(_0x110935) { _0x110935['setTexture']('textureSampler', this['_blurTexture']); var _0x1f54c6 = this['_engine']; _0x1f54c6['cacheStencilState'](), _0x1f54c6['setStencilOperationPass'](_0x24e342['a']['REPLACE']), _0x1f54c6['setStencilOperationFail'](_0x24e342['a']['KEEP']), _0x1f54c6['setStencilOperationDepthFail'](_0x24e342['a']['KEEP']), _0x1f54c6['setStencilMask'](0x0), _0x1f54c6['setStencilBuffer'](!0x0), _0x1f54c6['setStencilFunctionReference'](this['_instanceGlowingMeshStencilReference']), this['outerGlow'] && (_0x110935['setFloat']('offset', 0x0), _0x1f54c6['setStencilFunction'](_0x24e342['a']['NOTEQUAL']), _0x1f54c6['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, 0x6)), this['innerGlow'] && (_0x110935['setFloat']('offset', 0x1), _0x1f54c6['setStencilFunction'](_0x24e342['a']['EQUAL']), _0x1f54c6['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, 0x6)), _0x1f54c6['restoreStencilState'](); } , _0x359546['prototype']['shouldRender'] = function() { return !!_0x41ec80['prototype']['shouldRender']['call'](this) && !!this['_meshes']; } , _0x359546['prototype']['_shouldRenderMesh'] = function(_0x4422dd) { return (!this['_excludedMeshes'] || !this['_excludedMeshes'][_0x4422dd['uniqueId']]) && !!_0x41ec80['prototype']['hasMesh']['call'](this, _0x4422dd); } , _0x359546['prototype']['_setEmissiveTextureAndColor'] = function(_0x4595be, _0x4fe9cc, _0x5dca95) { var _0x4d5325 = this['_meshes'][_0x4595be['uniqueId']]; _0x4d5325 ? this['_emissiveTextureAndColor']['color']['set'](_0x4d5325['color']['r'], _0x4d5325['color']['g'], _0x4d5325['color']['b'], 0x1) : this['_emissiveTextureAndColor']['color']['set'](this['neutralColor']['r'], this['neutralColor']['g'], this['neutralColor']['b'], this['neutralColor']['a']), _0x4d5325 && _0x4d5325['glowEmissiveOnly'] && _0x5dca95 ? (this['_emissiveTextureAndColor']['texture'] = _0x5dca95['emissiveTexture'], this['_emissiveTextureAndColor']['color']['set'](0x1, 0x1, 0x1, 0x1)) : this['_emissiveTextureAndColor']['texture'] = null; } , _0x359546['prototype']['addExcludedMesh'] = function(_0x5c8d81) { this['_excludedMeshes'] && (this['_excludedMeshes'][_0x5c8d81['uniqueId']] || (this['_excludedMeshes'][_0x5c8d81['uniqueId']] = { 'mesh': _0x5c8d81, 'beforeBind': _0x5c8d81['onBeforeBindObservable']['add'](function(_0xb3fc50) { _0xb3fc50['getEngine']()['setStencilBuffer'](!0x1); }), 'afterRender': _0x5c8d81['onAfterRenderObservable']['add'](function(_0x4db7e6) { _0x4db7e6['getEngine']()['setStencilBuffer'](!0x0); }) })); } , _0x359546['prototype']['removeExcludedMesh'] = function(_0x1a7402) { if (this['_excludedMeshes']) { var _0xc8ff0 = this['_excludedMeshes'][_0x1a7402['uniqueId']]; _0xc8ff0 && (_0xc8ff0['beforeBind'] && _0x1a7402['onBeforeBindObservable']['remove'](_0xc8ff0['beforeBind']), _0xc8ff0['afterRender'] && _0x1a7402['onAfterRenderObservable']['remove'](_0xc8ff0['afterRender'])), this['_excludedMeshes'][_0x1a7402['uniqueId']] = null; } } , _0x359546['prototype']['hasMesh'] = function(_0x12f4c9) { return !!this['_meshes'] && (!!_0x41ec80['prototype']['hasMesh']['call'](this, _0x12f4c9) && (void 0x0 !== this['_meshes'][_0x12f4c9['uniqueId']] && null !== this['_meshes'][_0x12f4c9['uniqueId']])); } , _0x359546['prototype']['addMesh'] = function(_0x3c071a, _0x55669c, _0x2d2340) { var _0x4befb3 = this; if (void 0x0 === _0x2d2340 && (_0x2d2340 = !0x1), this['_meshes']) { var _0x45d341 = this['_meshes'][_0x3c071a['uniqueId']]; _0x45d341 ? _0x45d341['color'] = _0x55669c : (this['_meshes'][_0x3c071a['uniqueId']] = { 'mesh': _0x3c071a, 'color': _0x55669c, 'observerHighlight': _0x3c071a['onBeforeBindObservable']['add'](function(_0x4bfddf) { _0x4befb3['_excludedMeshes'] && _0x4befb3['_excludedMeshes'][_0x4bfddf['uniqueId']] ? _0x4befb3['_defaultStencilReference'](_0x4bfddf) : _0x4bfddf['getScene']()['getEngine']()['setStencilFunctionReference'](_0x4befb3['_instanceGlowingMeshStencilReference']); }), 'observerDefault': _0x3c071a['onAfterRenderObservable']['add'](this['_defaultStencilReference']), 'glowEmissiveOnly': _0x2d2340 }, _0x3c071a['onDisposeObservable']['add'](function() { _0x4befb3['_disposeMesh'](_0x3c071a); })), this['_shouldRender'] = !0x0; } } , _0x359546['prototype']['removeMesh'] = function(_0x2afb4d) { if (this['_meshes']) { var _0x5e3642 = this['_meshes'][_0x2afb4d['uniqueId']]; for (var _0x384910 in (_0x5e3642 && (_0x5e3642['observerHighlight'] && _0x2afb4d['onBeforeBindObservable']['remove'](_0x5e3642['observerHighlight']), _0x5e3642['observerDefault'] && _0x2afb4d['onAfterRenderObservable']['remove'](_0x5e3642['observerDefault']), delete this['_meshes'][_0x2afb4d['uniqueId']]), this['_shouldRender'] = !0x1, this['_meshes'])) if (this['_meshes'][_0x384910]) { this['_shouldRender'] = !0x0; break; } } } , _0x359546['prototype']['_defaultStencilReference'] = function(_0x22a58c) { _0x22a58c['getScene']()['getEngine']()['setStencilFunctionReference'](_0x359546['NormalMeshStencilReference']); } , _0x359546['prototype']['_disposeMesh'] = function(_0x5ba9c8) { this['removeMesh'](_0x5ba9c8), this['removeExcludedMesh'](_0x5ba9c8); } , _0x359546['prototype']['dispose'] = function() { if (this['_meshes']) { for (var _0x2a983e in this['_meshes']) { (_0x2277c1 = this['_meshes'][_0x2a983e]) && _0x2277c1['mesh'] && (_0x2277c1['observerHighlight'] && _0x2277c1['mesh']['onBeforeBindObservable']['remove'](_0x2277c1['observerHighlight']), _0x2277c1['observerDefault'] && _0x2277c1['mesh']['onAfterRenderObservable']['remove'](_0x2277c1['observerDefault'])); } this['_meshes'] = null; } if (this['_excludedMeshes']) { for (var _0x2a983e in this['_excludedMeshes']) { var _0x2277c1; (_0x2277c1 = this['_excludedMeshes'][_0x2a983e]) && (_0x2277c1['beforeBind'] && _0x2277c1['mesh']['onBeforeBindObservable']['remove'](_0x2277c1['beforeBind']), _0x2277c1['afterRender'] && _0x2277c1['mesh']['onAfterRenderObservable']['remove'](_0x2277c1['afterRender'])); } this['_excludedMeshes'] = null; } _0x41ec80['prototype']['dispose']['call'](this); } , _0x359546['prototype']['getClassName'] = function() { return 'HighlightLayer'; } , _0x359546['prototype']['serialize'] = function() { var _0x24b7f5 = _0x3d4764['a']['Serialize'](this); if (_0x24b7f5['customType'] = 'BABYLON.HighlightLayer', _0x24b7f5['meshes'] = [], this['_meshes']) for (var _0x355051 in this['_meshes']) { var _0x30bbcd = this['_meshes'][_0x355051]; _0x30bbcd && _0x24b7f5['meshes']['push']({ 'glowEmissiveOnly': _0x30bbcd['glowEmissiveOnly'], 'color': _0x30bbcd['color']['asArray'](), 'meshId': _0x30bbcd['mesh']['id'] }); } if (_0x24b7f5['excludedMeshes'] = [], this['_excludedMeshes']) for (var _0x23e9a9 in this['_excludedMeshes']) { var _0x2a755b = this['_excludedMeshes'][_0x23e9a9]; _0x2a755b && _0x24b7f5['excludedMeshes']['push'](_0x2a755b['mesh']['id']); } return _0x24b7f5; } , _0x359546['Parse'] = function(_0x2eaf74, _0x8aa236, _0xe1138c) { var _0x340c65, _0x40d835 = _0x3d4764['a']['Parse'](function() { return new _0x359546(_0x2eaf74['name'],_0x8aa236,_0x2eaf74['options']); }, _0x2eaf74, _0x8aa236, _0xe1138c); for (_0x340c65 = 0x0; _0x340c65 < _0x2eaf74['excludedMeshes']['length']; _0x340c65++) { (_0x63bf40 = _0x8aa236['getMeshByID'](_0x2eaf74['excludedMeshes'][_0x340c65])) && _0x40d835['addExcludedMesh'](_0x63bf40); } for (_0x340c65 = 0x0; _0x340c65 < _0x2eaf74['meshes']['length']; _0x340c65++) { var _0x63bf40, _0x101975 = _0x2eaf74['meshes'][_0x340c65]; (_0x63bf40 = _0x8aa236['getMeshByID'](_0x101975['meshId'])) && _0x40d835['addMesh'](_0x63bf40, _0x47d24f['e']['FromArray'](_0x101975['color']), _0x101975['glowEmissiveOnly']); } return _0x40d835; } , _0x359546['EffectName'] = 'HighlightLayer', _0x359546['NeutralColor'] = new _0x47d24f['f'](0x0,0x0,0x0,0x0), _0x359546['GlowingMeshStencilReference'] = 0x2, _0x359546['NormalMeshStencilReference'] = 0x1, _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x359546['prototype'], 'innerGlow', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x359546['prototype'], 'outerGlow', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x359546['prototype'], 'blurHorizontalSize', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x359546['prototype'], 'blurVerticalSize', null), _0x420e5b['c']([Object(_0x3d4764['c'])('options')], _0x359546['prototype'], '_options', void 0x0), _0x359546; }(_0x2cd16f); _0x376b99['a']['RegisteredTypes']['BABYLON.HighlightLayer'] = _0x15f267; var _0xaecb64 = function() { function _0x5be279(_0x272674) { this['name'] = _0x443f74['a']['NAME_LAYER'], this['scene'] = _0x272674, this['_engine'] = _0x272674['getEngine'](), _0x272674['layers'] = new Array(); } return _0x5be279['prototype']['register'] = function() { this['scene']['_beforeCameraDrawStage']['registerStep'](_0x443f74['a']['STEP_BEFORECAMERADRAW_LAYER'], this, this['_drawCameraBackground']), this['scene']['_afterCameraDrawStage']['registerStep'](_0x443f74['a']['STEP_AFTERCAMERADRAW_LAYER'], this, this['_drawCameraForeground']), this['scene']['_beforeRenderTargetDrawStage']['registerStep'](_0x443f74['a']['STEP_BEFORERENDERTARGETDRAW_LAYER'], this, this['_drawRenderTargetBackground']), this['scene']['_afterRenderTargetDrawStage']['registerStep'](_0x443f74['a']['STEP_AFTERRENDERTARGETDRAW_LAYER'], this, this['_drawRenderTargetForeground']); } , _0x5be279['prototype']['rebuild'] = function() { for (var _0x4e5197 = 0x0, _0x40f5a8 = this['scene']['layers']; _0x4e5197 < _0x40f5a8['length']; _0x4e5197++) { _0x40f5a8[_0x4e5197]['_rebuild'](); } } , _0x5be279['prototype']['dispose'] = function() { for (var _0x3c28cb = this['scene']['layers']; _0x3c28cb['length']; ) _0x3c28cb[0x0]['dispose'](); } , _0x5be279['prototype']['_draw'] = function(_0x1d49fc) { var _0x4acd23 = this['scene']['layers']; if (_0x4acd23['length']) { this['_engine']['setDepthBuffer'](!0x1); for (var _0x25edea = 0x0, _0xb7253d = _0x4acd23; _0x25edea < _0xb7253d['length']; _0x25edea++) { var _0xeb3b04 = _0xb7253d[_0x25edea]; _0x1d49fc(_0xeb3b04) && _0xeb3b04['render'](); } this['_engine']['setDepthBuffer'](!0x0); } } , _0x5be279['prototype']['_drawCameraPredicate'] = function(_0x4d5bfe, _0x43d401, _0x2b7424) { return !_0x4d5bfe['renderOnlyInRenderTargetTextures'] && _0x4d5bfe['isBackground'] === _0x43d401 && 0x0 != (_0x4d5bfe['layerMask'] & _0x2b7424); } , _0x5be279['prototype']['_drawCameraBackground'] = function(_0x445bc2) { var _0x2e8185 = this; this['_draw'](function(_0x33aef7) { return _0x2e8185['_drawCameraPredicate'](_0x33aef7, !0x0, _0x445bc2['layerMask']); }); } , _0x5be279['prototype']['_drawCameraForeground'] = function(_0x200944) { var _0x549af2 = this; this['_draw'](function(_0x202417) { return _0x549af2['_drawCameraPredicate'](_0x202417, !0x1, _0x200944['layerMask']); }); } , _0x5be279['prototype']['_drawRenderTargetPredicate'] = function(_0x56b89a, _0x293df4, _0x36d70c, _0x1cb6b4) { return _0x56b89a['renderTargetTextures']['length'] > 0x0 && _0x56b89a['isBackground'] === _0x293df4 && _0x56b89a['renderTargetTextures']['indexOf'](_0x1cb6b4) > -0x1 && 0x0 != (_0x56b89a['layerMask'] & _0x36d70c); } , _0x5be279['prototype']['_drawRenderTargetBackground'] = function(_0x4ed0b6) { var _0x50d2e6 = this; this['_draw'](function(_0x200d9d) { return _0x50d2e6['_drawRenderTargetPredicate'](_0x200d9d, !0x0, _0x50d2e6['scene']['activeCamera']['layerMask'], _0x4ed0b6); }); } , _0x5be279['prototype']['_drawRenderTargetForeground'] = function(_0x32fba3) { var _0x3a168c = this; this['_draw'](function(_0x90e599) { return _0x3a168c['_drawRenderTargetPredicate'](_0x90e599, !0x1, _0x3a168c['scene']['activeCamera']['layerMask'], _0x32fba3); }); } , _0x5be279; }() , _0x16a025 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0a\x0auniform\x20vec4\x20color;\x0avoid\x20main(void)\x20{\x0avec4\x20baseColor=texture2D(textureSampler,vUV);\x0a#ifdef\x20ALPHATEST\x0aif\x20(baseColor.a<0.4)\x0adiscard;\x0a#endif\x0agl_FragColor=baseColor*color;\x0a}'; _0x3e9e56['a']['ShadersStore']['layerPixelShader'] = _0x16a025; var _0x4ad547 = '\x0aattribute\x20vec2\x20position;\x0a\x0auniform\x20vec2\x20scale;\x0auniform\x20vec2\x20offset;\x0auniform\x20mat4\x20textureMatrix;\x0a\x0avarying\x20vec2\x20vUV;\x0aconst\x20vec2\x20madd=vec2(0.5,0.5);\x0avoid\x20main(void)\x20{\x0avec2\x20shiftedPosition=position*scale+offset;\x0avUV=vec2(textureMatrix*vec4(shiftedPosition*madd+madd,1.0,0.0));\x0agl_Position=vec4(shiftedPosition,0.0,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['layerVertexShader'] = _0x4ad547; var _0x34c7bd = function() { function _0x20ec7a(_0x628c4e, _0x773925, _0x24ed5c, _0x24bb26, _0x5cfa9c) { this['name'] = _0x628c4e, this['scale'] = new _0x47d24f['w'](0x1,0x1), this['offset'] = new _0x47d24f['w'](0x0,0x0), this['alphaBlendingMode'] = _0x24e342['a']['ALPHA_COMBINE'], this['layerMask'] = 0xfffffff, this['renderTargetTextures'] = [], this['renderOnlyInRenderTargetTextures'] = !0x1, this['_vertexBuffers'] = {}, this['onDisposeObservable'] = new _0x2dbec2['c'](), this['onBeforeRenderObservable'] = new _0x2dbec2['c'](), this['onAfterRenderObservable'] = new _0x2dbec2['c'](), this['texture'] = _0x773925 ? new _0x11d14a['a'](_0x773925,_0x24ed5c,!0x0) : null, this['isBackground'] = void 0x0 === _0x24bb26 || _0x24bb26, this['color'] = void 0x0 === _0x5cfa9c ? new _0x47d24f['f'](0x1,0x1,0x1,0x1) : _0x5cfa9c, this['_scene'] = _0x24ed5c || _0x48707b['a']['LastCreatedScene']; var _0xe89437 = this['_scene']['_getComponent'](_0x443f74['a']['NAME_LAYER']); _0xe89437 || (_0xe89437 = new _0xaecb64(this['_scene']), this['_scene']['_addComponent'](_0xe89437)), this['_scene']['layers']['push'](this); var _0x5838ee = this['_scene']['getEngine']() , _0xa04b4e = []; _0xa04b4e['push'](0x1, 0x1), _0xa04b4e['push'](-0x1, 0x1), _0xa04b4e['push'](-0x1, -0x1), _0xa04b4e['push'](0x1, -0x1); var _0x512738 = new _0x4209f7['b'](_0x5838ee,_0xa04b4e,_0x4209f7['b']['PositionKind'],!0x1,!0x1,0x2); this['_vertexBuffers'][_0x4209f7['b']['PositionKind']] = _0x512738, this['_createIndexBuffer'](), this['_effect'] = _0x5838ee['createEffect']('layer', [_0x4209f7['b']['PositionKind']], ['textureMatrix', 'color', 'scale', 'offset'], ['textureSampler'], ''), this['_alphaTestEffect'] = _0x5838ee['createEffect']('layer', [_0x4209f7['b']['PositionKind']], ['textureMatrix', 'color', 'scale', 'offset'], ['textureSampler'], '#define\x20ALPHATEST'); } return Object['defineProperty'](_0x20ec7a['prototype'], 'onDispose', { 'set': function(_0x92ba04) { this['_onDisposeObserver'] && this['onDisposeObservable']['remove'](this['_onDisposeObserver']), this['_onDisposeObserver'] = this['onDisposeObservable']['add'](_0x92ba04); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x20ec7a['prototype'], 'onBeforeRender', { 'set': function(_0x4728ee) { this['_onBeforeRenderObserver'] && this['onBeforeRenderObservable']['remove'](this['_onBeforeRenderObserver']), this['_onBeforeRenderObserver'] = this['onBeforeRenderObservable']['add'](_0x4728ee); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x20ec7a['prototype'], 'onAfterRender', { 'set': function(_0x3790c5) { this['_onAfterRenderObserver'] && this['onAfterRenderObservable']['remove'](this['_onAfterRenderObserver']), this['_onAfterRenderObserver'] = this['onAfterRenderObservable']['add'](_0x3790c5); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x20ec7a['prototype']['_createIndexBuffer'] = function() { var _0x3d590e = this['_scene']['getEngine']() , _0xc0cc21 = []; _0xc0cc21['push'](0x0), _0xc0cc21['push'](0x1), _0xc0cc21['push'](0x2), _0xc0cc21['push'](0x0), _0xc0cc21['push'](0x2), _0xc0cc21['push'](0x3), this['_indexBuffer'] = _0x3d590e['createIndexBuffer'](_0xc0cc21); } , _0x20ec7a['prototype']['_rebuild'] = function() { var _0x5ec77f = this['_vertexBuffers'][_0x4209f7['b']['PositionKind']]; _0x5ec77f && _0x5ec77f['_rebuild'](), this['_createIndexBuffer'](); } , _0x20ec7a['prototype']['render'] = function() { var _0x4fc508 = this['alphaTest'] ? this['_alphaTestEffect'] : this['_effect']; if (_0x4fc508['isReady']() && this['texture'] && this['texture']['isReady']()) { var _0x32ddd9 = this['_scene']['getEngine'](); this['onBeforeRenderObservable']['notifyObservers'](this), _0x32ddd9['enableEffect'](_0x4fc508), _0x32ddd9['setState'](!0x1), _0x4fc508['setTexture']('textureSampler', this['texture']), _0x4fc508['setMatrix']('textureMatrix', this['texture']['getTextureMatrix']()), _0x4fc508['setFloat4']('color', this['color']['r'], this['color']['g'], this['color']['b'], this['color']['a']), _0x4fc508['setVector2']('offset', this['offset']), _0x4fc508['setVector2']('scale', this['scale']), _0x32ddd9['bindBuffers'](this['_vertexBuffers'], this['_indexBuffer'], _0x4fc508), this['alphaTest'] ? _0x32ddd9['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, 0x6) : (_0x32ddd9['setAlphaMode'](this['alphaBlendingMode']), _0x32ddd9['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, 0x6), _0x32ddd9['setAlphaMode'](_0x24e342['a']['ALPHA_DISABLE'])), this['onAfterRenderObservable']['notifyObservers'](this); } } , _0x20ec7a['prototype']['dispose'] = function() { var _0x3204de = this['_vertexBuffers'][_0x4209f7['b']['PositionKind']]; _0x3204de && (_0x3204de['dispose'](), this['_vertexBuffers'][_0x4209f7['b']['PositionKind']] = null), this['_indexBuffer'] && (this['_scene']['getEngine']()['_releaseBuffer'](this['_indexBuffer']), this['_indexBuffer'] = null), this['texture'] && (this['texture']['dispose'](), this['texture'] = null), this['renderTargetTextures'] = []; var _0x127d34 = this['_scene']['layers']['indexOf'](this); this['_scene']['layers']['splice'](_0x127d34, 0x1), this['onDisposeObservable']['notifyObservers'](this), this['onDisposeObservable']['clear'](), this['onAfterRenderObservable']['clear'](), this['onBeforeRenderObservable']['clear'](); } , _0x20ec7a; }() , _0x12501b = function() { function _0x191d18(_0x204281, _0x2acb5f, _0x3f65a6, _0x2d36b3, _0x23a273) { this['size'] = _0x204281, this['position'] = _0x2acb5f, this['alphaMode'] = _0x24e342['a']['ALPHA_ONEONE'], this['color'] = _0x3f65a6 || new _0x47d24f['e'](0x1,0x1,0x1), this['texture'] = _0x2d36b3 ? new _0x11d14a['a'](_0x2d36b3,_0x23a273['getScene'](),!0x0) : null, this['_system'] = _0x23a273, _0x23a273['lensFlares']['push'](this); } return _0x191d18['AddFlare'] = function(_0x3094d5, _0x990af, _0x1094b4, _0x4a5d71, _0xa6a015) { return new _0x191d18(_0x3094d5,_0x990af,_0x1094b4,_0x4a5d71,_0xa6a015); } , _0x191d18['prototype']['dispose'] = function() { this['texture'] && this['texture']['dispose'](); var _0x11fde1 = this['_system']['lensFlares']['indexOf'](this); this['_system']['lensFlares']['splice'](_0x11fde1, 0x1); } , _0x191d18; }() , _0x31d384 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0a\x0auniform\x20vec4\x20color;\x0avoid\x20main(void)\x20{\x0avec4\x20baseColor=texture2D(textureSampler,vUV);\x0agl_FragColor=baseColor*color;\x0a}'; _0x3e9e56['a']['ShadersStore']['lensFlarePixelShader'] = _0x31d384; var _0x265817 = '\x0aattribute\x20vec2\x20position;\x0a\x0auniform\x20mat4\x20viewportMatrix;\x0a\x0avarying\x20vec2\x20vUV;\x0aconst\x20vec2\x20madd=vec2(0.5,0.5);\x0avoid\x20main(void)\x20{\x0avUV=position*madd+madd;\x0agl_Position=viewportMatrix*vec4(position,0.0,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['lensFlareVertexShader'] = _0x265817; var _0x48364d = function() { function _0x5de9e2(_0x5a343b, _0x629b89, _0x40a5d1) { this['name'] = _0x5a343b, this['lensFlares'] = new Array(), this['borderLimit'] = 0x12c, this['viewportBorder'] = 0x0, this['layerMask'] = 0xfffffff, this['_vertexBuffers'] = {}, this['_isEnabled'] = !0x0, this['_scene'] = _0x40a5d1 || _0x48707b['a']['LastCreatedScene'], _0x5de9e2['_SceneComponentInitialization'](this['_scene']), this['_emitter'] = _0x629b89, this['id'] = _0x5a343b, _0x40a5d1['lensFlareSystems']['push'](this), this['meshesSelectionPredicate'] = function(_0x3d1d7d) { return _0x40a5d1['activeCamera'] && _0x3d1d7d['material'] && _0x3d1d7d['isVisible'] && _0x3d1d7d['isEnabled']() && _0x3d1d7d['isBlocker'] && 0x0 != (_0x3d1d7d['layerMask'] & _0x40a5d1['activeCamera']['layerMask']); } ; var _0x449728 = _0x40a5d1['getEngine']() , _0x3a9a69 = []; _0x3a9a69['push'](0x1, 0x1), _0x3a9a69['push'](-0x1, 0x1), _0x3a9a69['push'](-0x1, -0x1), _0x3a9a69['push'](0x1, -0x1), this['_vertexBuffers'][_0x4209f7['b']['PositionKind']] = new _0x4209f7['b'](_0x449728,_0x3a9a69,_0x4209f7['b']['PositionKind'],!0x1,!0x1,0x2); var _0xc40f8a = []; _0xc40f8a['push'](0x0), _0xc40f8a['push'](0x1), _0xc40f8a['push'](0x2), _0xc40f8a['push'](0x0), _0xc40f8a['push'](0x2), _0xc40f8a['push'](0x3), this['_indexBuffer'] = _0x449728['createIndexBuffer'](_0xc40f8a), this['_effect'] = _0x449728['createEffect']('lensFlare', [_0x4209f7['b']['PositionKind']], ['color', 'viewportMatrix'], ['textureSampler'], ''); } return Object['defineProperty'](_0x5de9e2['prototype'], 'isEnabled', { 'get': function() { return this['_isEnabled']; }, 'set': function(_0x4a79f6) { this['_isEnabled'] = _0x4a79f6; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5de9e2['prototype']['getScene'] = function() { return this['_scene']; } , _0x5de9e2['prototype']['getEmitter'] = function() { return this['_emitter']; } , _0x5de9e2['prototype']['setEmitter'] = function(_0x3e5872) { this['_emitter'] = _0x3e5872; } , _0x5de9e2['prototype']['getEmitterPosition'] = function() { return this['_emitter']['getAbsolutePosition'] ? this['_emitter']['getAbsolutePosition']() : this['_emitter']['position']; } , _0x5de9e2['prototype']['computeEffectivePosition'] = function(_0x396f85) { var _0x24ed78 = this['getEmitterPosition'](); return _0x24ed78 = _0x47d24f['x']['Project'](_0x24ed78, _0x47d24f['j']['Identity'](), this['_scene']['getTransformMatrix'](), _0x396f85), this['_positionX'] = _0x24ed78['x'], this['_positionY'] = _0x24ed78['y'], _0x24ed78 = _0x47d24f['x']['TransformCoordinates'](this['getEmitterPosition'](), this['_scene']['getViewMatrix']()), this['viewportBorder'] > 0x0 && (_0x396f85['x'] -= this['viewportBorder'], _0x396f85['y'] -= this['viewportBorder'], _0x396f85['width'] += 0x2 * this['viewportBorder'], _0x396f85['height'] += 0x2 * this['viewportBorder'], _0x24ed78['x'] += this['viewportBorder'], _0x24ed78['y'] += this['viewportBorder'], this['_positionX'] += this['viewportBorder'], this['_positionY'] += this['viewportBorder']), _0x24ed78['z'] > 0x0 && (this['_positionX'] > _0x396f85['x'] && this['_positionX'] < _0x396f85['x'] + _0x396f85['width'] && this['_positionY'] > _0x396f85['y'] && (this['_positionY'], _0x396f85['y'], _0x396f85['height']), !0x0); } , _0x5de9e2['prototype']['_isVisible'] = function() { if (!this['_isEnabled'] || !this['_scene']['activeCamera']) return !0x1; var _0x6b1bc1 = this['getEmitterPosition']()['subtract'](this['_scene']['activeCamera']['globalPosition']) , _0x5c2b0d = _0x6b1bc1['length'](); _0x6b1bc1['normalize'](); var _0x27f283 = new _0x19e5af['a'](this['_scene']['activeCamera']['globalPosition'],_0x6b1bc1) , _0x541223 = this['_scene']['pickWithRay'](_0x27f283, this['meshesSelectionPredicate'], !0x0); return !_0x541223 || !_0x541223['hit'] || _0x541223['distance'] > _0x5c2b0d; } , _0x5de9e2['prototype']['render'] = function() { if (!this['_effect']['isReady']() || !this['_scene']['activeCamera']) return !0x1; var _0x1b0eef, _0x1c9d86, _0x553ee9 = this['_scene']['getEngine'](), _0x3c4f55 = this['_scene']['activeCamera']['viewport']['toGlobal'](_0x553ee9['getRenderWidth'](!0x0), _0x553ee9['getRenderHeight'](!0x0)); if (!this['computeEffectivePosition'](_0x3c4f55)) return !0x1; if (!this['_isVisible']()) return !0x1; var _0x404792 = (_0x1b0eef = this['_positionX'] < this['borderLimit'] + _0x3c4f55['x'] ? this['borderLimit'] + _0x3c4f55['x'] - this['_positionX'] : this['_positionX'] > _0x3c4f55['x'] + _0x3c4f55['width'] - this['borderLimit'] ? this['_positionX'] - _0x3c4f55['x'] - _0x3c4f55['width'] + this['borderLimit'] : 0x0) > (_0x1c9d86 = this['_positionY'] < this['borderLimit'] + _0x3c4f55['y'] ? this['borderLimit'] + _0x3c4f55['y'] - this['_positionY'] : this['_positionY'] > _0x3c4f55['y'] + _0x3c4f55['height'] - this['borderLimit'] ? this['_positionY'] - _0x3c4f55['y'] - _0x3c4f55['height'] + this['borderLimit'] : 0x0) ? _0x1b0eef : _0x1c9d86; (_0x404792 -= this['viewportBorder']) > this['borderLimit'] && (_0x404792 = this['borderLimit']); var _0x5f2346 = 0x1 - _0x77cead['a']['Clamp'](_0x404792 / this['borderLimit'], 0x0, 0x1); if (_0x5f2346 < 0x0) return !0x1; _0x5f2346 > 0x1 && (_0x5f2346 = 0x1), this['viewportBorder'] > 0x0 && (_0x3c4f55['x'] += this['viewportBorder'], _0x3c4f55['y'] += this['viewportBorder'], _0x3c4f55['width'] -= 0x2 * this['viewportBorder'], _0x3c4f55['height'] -= 0x2 * this['viewportBorder'], this['_positionX'] -= this['viewportBorder'], this['_positionY'] -= this['viewportBorder']); var _0x5427bd = _0x3c4f55['x'] + _0x3c4f55['width'] / 0x2 , _0x408eda = _0x3c4f55['y'] + _0x3c4f55['height'] / 0x2 , _0x5b8a79 = _0x5427bd - this['_positionX'] , _0x5c73ac = _0x408eda - this['_positionY']; _0x553ee9['enableEffect'](this['_effect']), _0x553ee9['setState'](!0x1), _0x553ee9['setDepthBuffer'](!0x1), _0x553ee9['bindBuffers'](this['_vertexBuffers'], this['_indexBuffer'], this['_effect']); for (var _0x1dc356 = 0x0; _0x1dc356 < this['lensFlares']['length']; _0x1dc356++) { var _0x57ede5 = this['lensFlares'][_0x1dc356]; _0x553ee9['setAlphaMode'](_0x57ede5['alphaMode']); var _0x3fb5db = _0x5427bd - _0x5b8a79 * _0x57ede5['position'] , _0x19fef8 = _0x408eda - _0x5c73ac * _0x57ede5['position'] , _0x3e962e = _0x57ede5['size'] , _0x5a3a22 = _0x57ede5['size'] * _0x553ee9['getAspectRatio'](this['_scene']['activeCamera'], !0x0) , _0x5a4a60 = _0x3fb5db / (_0x3c4f55['width'] + 0x2 * _0x3c4f55['x']) * 0x2 - 0x1 , _0x31ab38 = 0x1 - _0x19fef8 / (_0x3c4f55['height'] + 0x2 * _0x3c4f55['y']) * 0x2 , _0x23bcfb = _0x47d24f['j']['FromValues'](_0x3e962e / 0x2, 0x0, 0x0, 0x0, 0x0, _0x5a3a22 / 0x2, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, _0x5a4a60, _0x31ab38, 0x0, 0x1); this['_effect']['setMatrix']('viewportMatrix', _0x23bcfb), this['_effect']['setTexture']('textureSampler', _0x57ede5['texture']), this['_effect']['setFloat4']('color', _0x57ede5['color']['r'] * _0x5f2346, _0x57ede5['color']['g'] * _0x5f2346, _0x57ede5['color']['b'] * _0x5f2346, 0x1), _0x553ee9['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, 0x6); } return _0x553ee9['setDepthBuffer'](!0x0), _0x553ee9['setAlphaMode'](_0x24e342['a']['ALPHA_DISABLE']), !0x0; } , _0x5de9e2['prototype']['dispose'] = function() { var _0x5bab76 = this['_vertexBuffers'][_0x4209f7['b']['PositionKind']]; for (_0x5bab76 && (_0x5bab76['dispose'](), this['_vertexBuffers'][_0x4209f7['b']['PositionKind']] = null), this['_indexBuffer'] && (this['_scene']['getEngine']()['_releaseBuffer'](this['_indexBuffer']), this['_indexBuffer'] = null); this['lensFlares']['length']; ) this['lensFlares'][0x0]['dispose'](); var _0x111424 = this['_scene']['lensFlareSystems']['indexOf'](this); this['_scene']['lensFlareSystems']['splice'](_0x111424, 0x1); } , _0x5de9e2['Parse'] = function(_0x145e41, _0x20164b, _0x40583e) { var _0x452d5f = _0x20164b['getLastEntryByID'](_0x145e41['emitterId']) , _0x3e486c = _0x145e41['name'] || 'lensFlareSystem#' + _0x145e41['emitterId'] , _0x2f12d0 = new _0x5de9e2(_0x3e486c,_0x452d5f,_0x20164b); _0x2f12d0['id'] = _0x145e41['id'] || _0x3e486c, _0x2f12d0['borderLimit'] = _0x145e41['borderLimit']; for (var _0x5ab608 = 0x0; _0x5ab608 < _0x145e41['flares']['length']; _0x5ab608++) { var _0x4fea25 = _0x145e41['flares'][_0x5ab608]; _0x12501b['AddFlare'](_0x4fea25['size'], _0x4fea25['position'], _0x47d24f['e']['FromArray'](_0x4fea25['color']), _0x4fea25['textureName'] ? _0x40583e + _0x4fea25['textureName'] : '', _0x2f12d0); } return _0x2f12d0; } , _0x5de9e2['prototype']['serialize'] = function() { var _0x304efb = {}; _0x304efb['id'] = this['id'], _0x304efb['name'] = this['name'], _0x304efb['emitterId'] = this['getEmitter']()['id'], _0x304efb['borderLimit'] = this['borderLimit'], _0x304efb['flares'] = []; for (var _0x165789 = 0x0; _0x165789 < this['lensFlares']['length']; _0x165789++) { var _0x382b70 = this['lensFlares'][_0x165789]; _0x304efb['flares']['push']({ 'size': _0x382b70['size'], 'position': _0x382b70['position'], 'color': _0x382b70['color']['asArray'](), 'textureName': _0x1eb50e['h']['GetFilename'](_0x382b70['texture'] ? _0x382b70['texture']['name'] : '') }); } return _0x304efb; } , _0x5de9e2['_SceneComponentInitialization'] = function(_0x13e39e) { throw _0x2757ee['a']['WarnImport']('LensFlareSystemSceneComponent'); } , _0x5de9e2; }(); _0x20925f['a']['AddParser'](_0x443f74['a']['NAME_LENSFLARESYSTEM'], function(_0x46bb90, _0x5a9d21, _0xa85eab, _0x4ccf50) { if (void 0x0 !== _0x46bb90['lensFlareSystems'] && null !== _0x46bb90['lensFlareSystems']) { _0xa85eab['lensFlareSystems'] || (_0xa85eab['lensFlareSystems'] = new Array()); for (var _0x52b8b4 = 0x0, _0x1fc788 = _0x46bb90['lensFlareSystems']['length']; _0x52b8b4 < _0x1fc788; _0x52b8b4++) { var _0x42b63e = _0x46bb90['lensFlareSystems'][_0x52b8b4] , _0x3cc331 = _0x48364d['Parse'](_0x42b63e, _0x5a9d21, _0x4ccf50); _0xa85eab['lensFlareSystems']['push'](_0x3cc331); } } }), _0x20925f['a']['prototype']['getLensFlareSystemByName'] = function(_0xda54d2) { for (var _0x18b0e6 = 0x0; _0x18b0e6 < this['lensFlareSystems']['length']; _0x18b0e6++) if (this['lensFlareSystems'][_0x18b0e6]['name'] === _0xda54d2) return this['lensFlareSystems'][_0x18b0e6]; return null; } , _0x20925f['a']['prototype']['getLensFlareSystemByID'] = function(_0x17b325) { for (var _0x532fb3 = 0x0; _0x532fb3 < this['lensFlareSystems']['length']; _0x532fb3++) if (this['lensFlareSystems'][_0x532fb3]['id'] === _0x17b325) return this['lensFlareSystems'][_0x532fb3]; return null; } , _0x20925f['a']['prototype']['removeLensFlareSystem'] = function(_0x2560bd) { var _0x2e0ffa = this['lensFlareSystems']['indexOf'](_0x2560bd); return -0x1 !== _0x2e0ffa && this['lensFlareSystems']['splice'](_0x2e0ffa, 0x1), _0x2e0ffa; } , _0x20925f['a']['prototype']['addLensFlareSystem'] = function(_0x4e91dd) { this['lensFlareSystems']['push'](_0x4e91dd); } ; var _0x38fcd4 = function() { function _0x3acda6(_0x567218) { this['name'] = _0x443f74['a']['NAME_LENSFLARESYSTEM'], this['scene'] = _0x567218, _0x567218['lensFlareSystems'] = new Array(); } return _0x3acda6['prototype']['register'] = function() { this['scene']['_afterCameraDrawStage']['registerStep'](_0x443f74['a']['STEP_AFTERCAMERADRAW_LENSFLARESYSTEM'], this, this['_draw']); } , _0x3acda6['prototype']['rebuild'] = function() {} , _0x3acda6['prototype']['addFromContainer'] = function(_0x4f07c3) { var _0x17aa54 = this; _0x4f07c3['lensFlareSystems'] && _0x4f07c3['lensFlareSystems']['forEach'](function(_0x41c354) { _0x17aa54['scene']['addLensFlareSystem'](_0x41c354); }); } , _0x3acda6['prototype']['removeFromContainer'] = function(_0x37e564, _0x30839b) { var _0x14e069 = this; _0x37e564['lensFlareSystems'] && _0x37e564['lensFlareSystems']['forEach'](function(_0x27e324) { _0x14e069['scene']['removeLensFlareSystem'](_0x27e324), _0x30839b && _0x27e324['dispose'](); }); } , _0x3acda6['prototype']['serialize'] = function(_0x3fc0b1) { _0x3fc0b1['lensFlareSystems'] = []; for (var _0x3f785c = 0x0, _0x55c44a = this['scene']['lensFlareSystems']; _0x3f785c < _0x55c44a['length']; _0x3f785c++) { var _0x510dce = _0x55c44a[_0x3f785c]; _0x3fc0b1['lensFlareSystems']['push'](_0x510dce['serialize']()); } } , _0x3acda6['prototype']['dispose'] = function() { for (var _0x59a4be = this['scene']['lensFlareSystems']; _0x59a4be['length']; ) _0x59a4be[0x0]['dispose'](); } , _0x3acda6['prototype']['_draw'] = function(_0x1e6c51) { if (this['scene']['lensFlaresEnabled']) { var _0x217432 = this['scene']['lensFlareSystems']; _0x1eb50e['h']['StartPerformanceCounter']('Lens\x20flares', _0x217432['length'] > 0x0); for (var _0x8a8f60 = 0x0, _0x3af0b5 = _0x217432; _0x8a8f60 < _0x3af0b5['length']; _0x8a8f60++) { var _0x30b8d7 = _0x3af0b5[_0x8a8f60]; 0x0 != (_0x1e6c51['layerMask'] & _0x30b8d7['layerMask']) && _0x30b8d7['render'](); } _0x1eb50e['h']['EndPerformanceCounter']('Lens\x20flares', _0x217432['length'] > 0x0); } } , _0x3acda6; }(); _0x48364d['_SceneComponentInitialization'] = function(_0xf768a0) { var _0x50621f = _0xf768a0['_getComponent'](_0x443f74['a']['NAME_LENSFLARESYSTEM']); _0x50621f || (_0x50621f = new _0x38fcd4(_0xf768a0), _0xf768a0['_addComponent'](_0x50621f)); } ; var _0x3dd3d8 = '#ifndef\x20FLOAT\x0avec4\x20pack(float\x20depth)\x0a{\x0aconst\x20vec4\x20bit_shift=vec4(255.0*255.0*255.0,255.0*255.0,255.0,1.0);\x0aconst\x20vec4\x20bit_mask=vec4(0.0,1.0/255.0,1.0/255.0,1.0/255.0);\x0avec4\x20res=fract(depth*bit_shift);\x0ares-=res.xxyz*bit_mask;\x0areturn\x20res;\x0a}\x0a#endif\x0avarying\x20float\x20vDepthMetric;\x0a#ifdef\x20ALPHATEST\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20diffuseSampler;\x0a#endif\x0auniform\x20vec3\x20biasAndScale;\x0auniform\x20vec2\x20depthValues;\x0avoid\x20main(void)\x0a{\x0a#ifdef\x20ALPHATEST\x0aif\x20(texture2D(diffuseSampler,vUV).a<0.4)\x0adiscard;\x0a#endif\x0afloat\x20depth=vDepthMetric;\x0a#ifdef\x20ESM\x0adepth=clamp(exp(-min(87.,biasAndScale.z*depth)),0.,1.);\x0a#endif\x0a#ifdef\x20FLOAT\x0agl_FragColor=vec4(depth,1.0,1.0,1.0);\x0a#else\x0agl_FragColor=pack(depth);\x0a#endif\x0a}'; _0x3e9e56['a']['ShadersStore']['shadowMapPixelShader'] = _0x3dd3d8; var _0x3af816 = '\x0aattribute\x20vec3\x20position;\x0a#ifdef\x20NORMAL\x0aattribute\x20vec3\x20normal;\x0auniform\x20vec3\x20lightData;\x0a#endif\x0a#include\x0a#include\x0a#include[0..maxSimultaneousMorphTargets]\x0a\x0a#include\x0a#include\x0auniform\x20mat4\x20viewProjection;\x0auniform\x20vec3\x20biasAndScale;\x0auniform\x20vec2\x20depthValues;\x0avarying\x20float\x20vDepthMetric;\x0a#ifdef\x20ALPHATEST\x0avarying\x20vec2\x20vUV;\x0auniform\x20mat4\x20diffuseMatrix;\x0a#ifdef\x20UV1\x0aattribute\x20vec2\x20uv;\x0a#endif\x0a#ifdef\x20UV2\x0aattribute\x20vec2\x20uv2;\x0a#endif\x0a#endif\x0avoid\x20main(void)\x0a{\x0avec3\x20positionUpdated=position;\x0a#include[0..maxSimultaneousMorphTargets]\x0a#include\x0a#include\x0avec4\x20worldPos=finalWorld*vec4(positionUpdated,1.0);\x0a\x0a#ifdef\x20NORMAL\x0amat3\x20normalWorld=mat3(finalWorld);\x0a#ifdef\x20NONUNIFORMSCALING\x0anormalWorld=transposeMat3(inverseMat3(normalWorld));\x0a#endif\x0avec3\x20worldNor=normalize(normalWorld*normal);\x0a#ifdef\x20DIRECTIONINLIGHTDATA\x0avec3\x20worldLightDir=normalize(-lightData.xyz);\x0a#else\x0avec3\x20directionToLight=lightData.xyz-worldPos.xyz;\x0avec3\x20worldLightDir=normalize(directionToLight);\x0a#endif\x0afloat\x20ndl=dot(worldNor,worldLightDir);\x0afloat\x20sinNL=sqrt(1.0-ndl*ndl);\x0afloat\x20normalBias=biasAndScale.y*sinNL;\x0aworldPos.xyz-=worldNor*normalBias;\x0a#endif\x0a\x0agl_Position=viewProjection*worldPos;\x0a#ifdef\x20DEPTHTEXTURE\x0a\x0agl_Position.z+=biasAndScale.x*gl_Position.w;\x0a#endif\x0a\x0avDepthMetric=((gl_Position.z+depthValues.x)/(depthValues.y))+biasAndScale.x;\x0a#ifdef\x20ALPHATEST\x0a#ifdef\x20UV1\x0avUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));\x0a#endif\x0a#ifdef\x20UV2\x0avUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));\x0a#endif\x0a#endif\x0a}'; _0x3e9e56['a']['ShadersStore']['shadowMapVertexShader'] = _0x3af816; var _0x380079 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0a\x0auniform\x20vec2\x20screenSize;\x0avoid\x20main(void)\x0a{\x0avec4\x20colorDepth=vec4(0.0);\x0afor\x20(int\x20x=-OFFSET;\x20x<=OFFSET;\x20x++)\x0afor\x20(int\x20y=-OFFSET;\x20y<=OFFSET;\x20y++)\x0acolorDepth+=texture2D(textureSampler,vUV+vec2(x,y)/screenSize);\x0agl_FragColor=(colorDepth/float((OFFSET*2+1)*(OFFSET*2+1)));\x0a}'; _0x3e9e56['a']['ShadersStore']['depthBoxBlurPixelShader'] = _0x380079; var _0x4149be = function() { function _0x4117ab(_0x466c79, _0x72027d, _0x1d6c97) { this['onBeforeShadowMapRenderObservable'] = new _0x2dbec2['c'](), this['onBeforeShadowMapRenderMeshObservable'] = new _0x2dbec2['c'](), this['_bias'] = 0.00005, this['_normalBias'] = 0x0, this['_blurBoxOffset'] = 0x1, this['_blurScale'] = 0x2, this['_blurKernel'] = 0x1, this['_useKernelBlur'] = !0x1, this['_filter'] = _0x4117ab['FILTER_NONE'], this['_filteringQuality'] = _0x4117ab['QUALITY_HIGH'], this['_contactHardeningLightSizeUVRatio'] = 0.1, this['_darkness'] = 0x0, this['_transparencyShadow'] = !0x1, this['frustumEdgeFalloff'] = 0x0, this['forceBackFacesOnly'] = !0x1, this['_lightDirection'] = _0x47d24f['x']['Zero'](), this['_viewMatrix'] = _0x47d24f['j']['Zero'](), this['_projectionMatrix'] = _0x47d24f['j']['Zero'](), this['_transformMatrix'] = _0x47d24f['j']['Zero'](), this['_cachedPosition'] = new _0x47d24f['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']), this['_cachedDirection'] = new _0x47d24f['x'](Number['MAX_VALUE'],Number['MAX_VALUE'],Number['MAX_VALUE']), this['_currentFaceIndex'] = 0x0, this['_currentFaceIndexCache'] = 0x0, this['_defaultTextureMatrix'] = _0x47d24f['j']['Identity'](), this['_mapSize'] = _0x466c79, this['_light'] = _0x72027d, this['_scene'] = _0x72027d['getScene'](), _0x72027d['_shadowGenerator'] = this, _0x4117ab['_SceneComponentInitialization'](this['_scene']); var _0x46ad22 = this['_scene']['getEngine']()['getCaps'](); _0x1d6c97 ? _0x46ad22['textureFloatRender'] && _0x46ad22['textureFloatLinearFiltering'] ? this['_textureType'] = _0x24e342['a']['TEXTURETYPE_FLOAT'] : _0x46ad22['textureHalfFloatRender'] && _0x46ad22['textureHalfFloatLinearFiltering'] ? this['_textureType'] = _0x24e342['a']['TEXTURETYPE_HALF_FLOAT'] : this['_textureType'] = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'] : _0x46ad22['textureHalfFloatRender'] && _0x46ad22['textureHalfFloatLinearFiltering'] ? this['_textureType'] = _0x24e342['a']['TEXTURETYPE_HALF_FLOAT'] : _0x46ad22['textureFloatRender'] && _0x46ad22['textureFloatLinearFiltering'] ? this['_textureType'] = _0x24e342['a']['TEXTURETYPE_FLOAT'] : this['_textureType'] = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'], this['_initializeGenerator'](), this['_applyFilterValues'](); } return Object['defineProperty'](_0x4117ab['prototype'], 'bias', { 'get': function() { return this['_bias']; }, 'set': function(_0x28157f) { this['_bias'] = _0x28157f; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'normalBias', { 'get': function() { return this['_normalBias']; }, 'set': function(_0x5b91c3) { this['_normalBias'] = _0x5b91c3; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'blurBoxOffset', { 'get': function() { return this['_blurBoxOffset']; }, 'set': function(_0x3ce44b) { this['_blurBoxOffset'] !== _0x3ce44b && (this['_blurBoxOffset'] = _0x3ce44b, this['_disposeBlurPostProcesses']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'blurScale', { 'get': function() { return this['_blurScale']; }, 'set': function(_0x422b90) { this['_blurScale'] !== _0x422b90 && (this['_blurScale'] = _0x422b90, this['_disposeBlurPostProcesses']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'blurKernel', { 'get': function() { return this['_blurKernel']; }, 'set': function(_0x545613) { this['_blurKernel'] !== _0x545613 && (this['_blurKernel'] = _0x545613, this['_disposeBlurPostProcesses']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'useKernelBlur', { 'get': function() { return this['_useKernelBlur']; }, 'set': function(_0x5aaeb) { this['_useKernelBlur'] !== _0x5aaeb && (this['_useKernelBlur'] = _0x5aaeb, this['_disposeBlurPostProcesses']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'depthScale', { 'get': function() { return void 0x0 !== this['_depthScale'] ? this['_depthScale'] : this['_light']['getDepthScale'](); }, 'set': function(_0x8906c2) { this['_depthScale'] = _0x8906c2; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'filter', { 'get': function() { return this['_filter']; }, 'set': function(_0x365b8d) { if (this['_light']['needCube']()) { if (_0x365b8d === _0x4117ab['FILTER_BLUREXPONENTIALSHADOWMAP']) return void (this['useExponentialShadowMap'] = !0x0); if (_0x365b8d === _0x4117ab['FILTER_BLURCLOSEEXPONENTIALSHADOWMAP']) return void (this['useCloseExponentialShadowMap'] = !0x0); if (_0x365b8d === _0x4117ab['FILTER_PCF'] || _0x365b8d === _0x4117ab['FILTER_PCSS']) return void (this['usePoissonSampling'] = !0x0); } _0x365b8d !== _0x4117ab['FILTER_PCF'] && _0x365b8d !== _0x4117ab['FILTER_PCSS'] || 0x1 !== this['_scene']['getEngine']()['webGLVersion'] ? this['_filter'] !== _0x365b8d && (this['_filter'] = _0x365b8d, this['_disposeBlurPostProcesses'](), this['_applyFilterValues'](), this['_light']['_markMeshesAsLightDirty']()) : this['usePoissonSampling'] = !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'usePoissonSampling', { 'get': function() { return this['filter'] === _0x4117ab['FILTER_POISSONSAMPLING']; }, 'set': function(_0x243740) { (_0x243740 || this['filter'] === _0x4117ab['FILTER_POISSONSAMPLING']) && (this['filter'] = _0x243740 ? _0x4117ab['FILTER_POISSONSAMPLING'] : _0x4117ab['FILTER_NONE']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'useExponentialShadowMap', { 'get': function() { return this['filter'] === _0x4117ab['FILTER_EXPONENTIALSHADOWMAP']; }, 'set': function(_0x430ff5) { (_0x430ff5 || this['filter'] === _0x4117ab['FILTER_EXPONENTIALSHADOWMAP']) && (this['filter'] = _0x430ff5 ? _0x4117ab['FILTER_EXPONENTIALSHADOWMAP'] : _0x4117ab['FILTER_NONE']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'useBlurExponentialShadowMap', { 'get': function() { return this['filter'] === _0x4117ab['FILTER_BLUREXPONENTIALSHADOWMAP']; }, 'set': function(_0xcbefc6) { (_0xcbefc6 || this['filter'] === _0x4117ab['FILTER_BLUREXPONENTIALSHADOWMAP']) && (this['filter'] = _0xcbefc6 ? _0x4117ab['FILTER_BLUREXPONENTIALSHADOWMAP'] : _0x4117ab['FILTER_NONE']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'useCloseExponentialShadowMap', { 'get': function() { return this['filter'] === _0x4117ab['FILTER_CLOSEEXPONENTIALSHADOWMAP']; }, 'set': function(_0x6988a) { (_0x6988a || this['filter'] === _0x4117ab['FILTER_CLOSEEXPONENTIALSHADOWMAP']) && (this['filter'] = _0x6988a ? _0x4117ab['FILTER_CLOSEEXPONENTIALSHADOWMAP'] : _0x4117ab['FILTER_NONE']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'useBlurCloseExponentialShadowMap', { 'get': function() { return this['filter'] === _0x4117ab['FILTER_BLURCLOSEEXPONENTIALSHADOWMAP']; }, 'set': function(_0x52ff60) { (_0x52ff60 || this['filter'] === _0x4117ab['FILTER_BLURCLOSEEXPONENTIALSHADOWMAP']) && (this['filter'] = _0x52ff60 ? _0x4117ab['FILTER_BLURCLOSEEXPONENTIALSHADOWMAP'] : _0x4117ab['FILTER_NONE']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'usePercentageCloserFiltering', { 'get': function() { return this['filter'] === _0x4117ab['FILTER_PCF']; }, 'set': function(_0x401942) { (_0x401942 || this['filter'] === _0x4117ab['FILTER_PCF']) && (this['filter'] = _0x401942 ? _0x4117ab['FILTER_PCF'] : _0x4117ab['FILTER_NONE']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'filteringQuality', { 'get': function() { return this['_filteringQuality']; }, 'set': function(_0x49ffca) { this['_filteringQuality'] = _0x49ffca; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'useContactHardeningShadow', { 'get': function() { return this['filter'] === _0x4117ab['FILTER_PCSS']; }, 'set': function(_0x9fb4af) { (_0x9fb4af || this['filter'] === _0x4117ab['FILTER_PCSS']) && (this['filter'] = _0x9fb4af ? _0x4117ab['FILTER_PCSS'] : _0x4117ab['FILTER_NONE']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x4117ab['prototype'], 'contactHardeningLightSizeUVRatio', { 'get': function() { return this['_contactHardeningLightSizeUVRatio']; }, 'set': function(_0x139e02) { this['_contactHardeningLightSizeUVRatio'] = _0x139e02; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4117ab['prototype']['getDarkness'] = function() { return this['_darkness']; } , _0x4117ab['prototype']['setDarkness'] = function(_0x2ef78b) { return this['_darkness'] = _0x2ef78b >= 0x1 ? 0x1 : _0x2ef78b <= 0x0 ? 0x0 : _0x2ef78b, this; } , _0x4117ab['prototype']['setTransparencyShadow'] = function(_0x1403ff) { return this['_transparencyShadow'] = _0x1403ff, this; } , _0x4117ab['prototype']['getShadowMap'] = function() { return this['_shadowMap']; } , _0x4117ab['prototype']['getShadowMapForRendering'] = function() { return this['_shadowMap2'] ? this['_shadowMap2'] : this['_shadowMap']; } , _0x4117ab['prototype']['addShadowCaster'] = function(_0x5c797b, _0x3058f8) { var _0x28a1b5; return void 0x0 === _0x3058f8 && (_0x3058f8 = !0x0), this['_shadowMap'] ? (this['_shadowMap']['renderList'] || (this['_shadowMap']['renderList'] = []), this['_shadowMap']['renderList']['push'](_0x5c797b), _0x3058f8 && (_0x28a1b5 = this['_shadowMap']['renderList'])['push']['apply'](_0x28a1b5, _0x5c797b['getChildMeshes']()), this) : this; } , _0x4117ab['prototype']['removeShadowCaster'] = function(_0xab2792, _0x5d7d2c) { if (void 0x0 === _0x5d7d2c && (_0x5d7d2c = !0x0), !this['_shadowMap'] || !this['_shadowMap']['renderList']) return this; var _0xc4f65 = this['_shadowMap']['renderList']['indexOf'](_0xab2792); if (-0x1 !== _0xc4f65 && this['_shadowMap']['renderList']['splice'](_0xc4f65, 0x1), _0x5d7d2c) for (var _0x5a7bf0 = 0x0, _0x5a5fa7 = _0xab2792['getChildren'](); _0x5a7bf0 < _0x5a5fa7['length']; _0x5a7bf0++) { var _0x156cc6 = _0x5a5fa7[_0x5a7bf0]; this['removeShadowCaster'](_0x156cc6); } return this; } , _0x4117ab['prototype']['getLight'] = function() { return this['_light']; } , _0x4117ab['prototype']['_initializeGenerator'] = function() { this['_light']['_markMeshesAsLightDirty'](), this['_initializeShadowMap'](); } , _0x4117ab['prototype']['_initializeShadowMap'] = function() { var _0x557274 = this , _0x540802 = this['_scene']['getEngine'](); _0x540802['webGLVersion'] > 0x1 ? (this['_shadowMap'] = new _0xe8a585(this['_light']['name'] + '_shadowMap',this['_mapSize'],this['_scene'],!0x1,!0x0,this['_textureType'],this['_light']['needCube'](),void 0x0,!0x1,!0x1), this['_shadowMap']['createDepthStencilTexture'](_0x24e342['a']['LESS'], !0x0)) : this['_shadowMap'] = new _0xe8a585(this['_light']['name'] + '_shadowMap',this['_mapSize'],this['_scene'],!0x1,!0x0,this['_textureType'],this['_light']['needCube']()), this['_shadowMap']['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_shadowMap']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_shadowMap']['anisotropicFilteringLevel'] = 0x1, this['_shadowMap']['updateSamplingMode'](_0x11d14a['a']['BILINEAR_SAMPLINGMODE']), this['_shadowMap']['renderParticles'] = !0x1, this['_shadowMap']['ignoreCameraViewport'] = !0x0, this['_shadowMap']['onBeforeRenderObservable']['add'](function(_0x6f23d5) { _0x557274['_currentFaceIndex'] = _0x6f23d5, _0x557274['_filter'] === _0x4117ab['FILTER_PCF'] && _0x540802['setColorWrite'](!0x1); }), this['_shadowMap']['customRenderFunction'] = this['_renderForShadowMap']['bind'](this), this['_shadowMap']['onAfterUnbindObservable']['add'](function() { if (_0x557274['_filter'] === _0x4117ab['FILTER_PCF'] && _0x540802['setColorWrite'](!0x0), _0x557274['useBlurExponentialShadowMap'] || _0x557274['useBlurCloseExponentialShadowMap']) { var _0x1aef5f = _0x557274['getShadowMapForRendering'](); _0x1aef5f && _0x557274['_scene']['postProcessManager']['directRender'](_0x557274['_blurPostProcesses'], _0x1aef5f['getInternalTexture'](), !0x0); } }); var _0x284c61 = new _0x47d24f['f'](0x0,0x0,0x0,0x0) , _0x319ff5 = new _0x47d24f['f'](0x1,0x1,0x1,0x1); this['_shadowMap']['onClearObservable']['add'](function(_0x1eefaf) { _0x557274['_filter'] === _0x4117ab['FILTER_PCF'] ? _0x1eefaf['clear'](_0x319ff5, !0x1, !0x0, !0x1) : _0x557274['useExponentialShadowMap'] || _0x557274['useBlurExponentialShadowMap'] ? _0x1eefaf['clear'](_0x284c61, !0x0, !0x0, !0x1) : _0x1eefaf['clear'](_0x319ff5, !0x0, !0x0, !0x1); }); } , _0x4117ab['prototype']['_initializeBlurRTTAndPostProcesses'] = function() { var _0x531beb = this , _0x31fb75 = this['_scene']['getEngine']() , _0x4538c8 = this['_mapSize'] / this['blurScale']; this['useKernelBlur'] && 0x1 === this['blurScale'] || (this['_shadowMap2'] = new _0xe8a585(this['_light']['name'] + '_shadowMap2',_0x4538c8,this['_scene'],!0x1,!0x0,this['_textureType']), this['_shadowMap2']['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_shadowMap2']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_shadowMap2']['updateSamplingMode'](_0x11d14a['a']['BILINEAR_SAMPLINGMODE'])), this['useKernelBlur'] ? (this['_kernelBlurXPostprocess'] = new _0x1c8af1(this['_light']['name'] + 'KernelBlurX',new _0x47d24f['w'](0x1,0x0),this['blurKernel'],0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x31fb75,!0x1,this['_textureType']), this['_kernelBlurXPostprocess']['width'] = _0x4538c8, this['_kernelBlurXPostprocess']['height'] = _0x4538c8, this['_kernelBlurXPostprocess']['onApplyObservable']['add'](function(_0xd44592) { _0xd44592['setTexture']('textureSampler', _0x531beb['_shadowMap']); }), this['_kernelBlurYPostprocess'] = new _0x1c8af1(this['_light']['name'] + 'KernelBlurY',new _0x47d24f['w'](0x0,0x1),this['blurKernel'],0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x31fb75,!0x1,this['_textureType']), this['_kernelBlurXPostprocess']['autoClear'] = !0x1, this['_kernelBlurYPostprocess']['autoClear'] = !0x1, this['_textureType'] === _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'] && (this['_kernelBlurXPostprocess']['packedFloat'] = !0x0, this['_kernelBlurYPostprocess']['packedFloat'] = !0x0), this['_blurPostProcesses'] = [this['_kernelBlurXPostprocess'], this['_kernelBlurYPostprocess']]) : (this['_boxBlurPostprocess'] = new _0x1f5ab5(this['_light']['name'] + 'DepthBoxBlur','depthBoxBlur',['screenSize', 'boxOffset'],[],0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x31fb75,!0x1,'#define\x20OFFSET\x20' + this['_blurBoxOffset'],this['_textureType']), this['_boxBlurPostprocess']['onApplyObservable']['add'](function(_0x25a93a) { _0x25a93a['setFloat2']('screenSize', _0x4538c8, _0x4538c8), _0x25a93a['setTexture']('textureSampler', _0x531beb['_shadowMap']); }), this['_boxBlurPostprocess']['autoClear'] = !0x1, this['_blurPostProcesses'] = [this['_boxBlurPostprocess']]); } , _0x4117ab['prototype']['_renderForShadowMap'] = function(_0x2a4077, _0xcdf0e1, _0xaf8996, _0x25382f) { var _0x3ff1aa, _0x425ffc = this['_scene']['getEngine'](); if (_0x25382f['length']) { for (_0x425ffc['setColorWrite'](!0x1), _0x3ff1aa = 0x0; _0x3ff1aa < _0x25382f['length']; _0x3ff1aa++) this['_renderSubMeshForShadowMap'](_0x25382f['data'][_0x3ff1aa]); _0x425ffc['setColorWrite'](!0x0); } for (_0x3ff1aa = 0x0; _0x3ff1aa < _0x2a4077['length']; _0x3ff1aa++) this['_renderSubMeshForShadowMap'](_0x2a4077['data'][_0x3ff1aa]); for (_0x3ff1aa = 0x0; _0x3ff1aa < _0xcdf0e1['length']; _0x3ff1aa++) this['_renderSubMeshForShadowMap'](_0xcdf0e1['data'][_0x3ff1aa]); if (this['_transparencyShadow']) for (_0x3ff1aa = 0x0; _0x3ff1aa < _0xaf8996['length']; _0x3ff1aa++) this['_renderSubMeshForShadowMap'](_0xaf8996['data'][_0x3ff1aa]); } , _0x4117ab['prototype']['_renderSubMeshForShadowMap'] = function(_0x1e60e2) { var _0x426e81 = this , _0x4dbaa7 = _0x1e60e2['getRenderingMesh']() , _0x1d31f5 = this['_scene'] , _0x2c224a = _0x1d31f5['getEngine']() , _0x1e1eb0 = _0x1e60e2['getMaterial'](); if (_0x4dbaa7['_internalAbstractMeshDataInfo']['_isActiveIntermediate'] = !0x1, _0x1e1eb0 && 0x0 !== _0x1e60e2['verticesCount']) { _0x2c224a['setState'](_0x1e1eb0['backFaceCulling']); var _0x304913 = _0x4dbaa7['_getInstancesRenderList'](_0x1e60e2['_id']); if (!_0x304913['mustReturn']) { var _0x417def = _0x2c224a['getCaps']()['instancedArrays'] && null !== _0x304913['visibleInstances'][_0x1e60e2['_id']] && void 0x0 !== _0x304913['visibleInstances'][_0x1e60e2['_id']]; if (this['isReady'](_0x1e60e2, _0x417def)) { if (_0x2c224a['enableEffect'](this['_effect']), _0x4dbaa7['_bind'](_0x1e60e2, this['_effect'], _0x10d420['a']['TriangleFillMode']), this['_effect']['setFloat3']('biasAndScale', this['bias'], this['normalBias'], this['depthScale']), this['_effect']['setMatrix']('viewProjection', this['getTransformMatrix']()), this['getLight']()['getTypeID']() === _0x16b020['a']['LIGHTTYPEID_DIRECTIONALLIGHT'] ? this['_effect']['setVector3']('lightData', this['_cachedDirection']) : this['_effect']['setVector3']('lightData', this['_cachedPosition']), _0x1d31f5['activeCamera'] && this['_effect']['setFloat2']('depthValues', this['getLight']()['getDepthMinZ'](_0x1d31f5['activeCamera']), this['getLight']()['getDepthMinZ'](_0x1d31f5['activeCamera']) + this['getLight']()['getDepthMaxZ'](_0x1d31f5['activeCamera'])), _0x1e1eb0 && _0x1e1eb0['needAlphaTesting']()) { var _0x4786ef = _0x1e1eb0['getAlphaTestTexture'](); _0x4786ef && (this['_effect']['setTexture']('diffuseSampler', _0x4786ef), this['_effect']['setMatrix']('diffuseMatrix', _0x4786ef['getTextureMatrix']() || this['_defaultTextureMatrix'])); } if (_0x4dbaa7['useBones'] && _0x4dbaa7['computeBonesUsingShaders'] && _0x4dbaa7['skeleton']) { var _0x3ccca7 = _0x4dbaa7['skeleton']; if (_0x3ccca7['isUsingTextureForMatrices']) { var _0x218096 = _0x3ccca7['getTransformMatrixTexture'](); if (!_0x218096) return; this['_effect']['setTexture']('boneSampler', _0x218096), this['_effect']['setFloat']('boneTextureWidth', 0x4 * (_0x3ccca7['bones']['length'] + 0x1)); } else this['_effect']['setMatrices']('mBones', _0x3ccca7['getTransformMatrices'](_0x4dbaa7)); } _0x2efc06['a']['BindMorphTargetParameters'](_0x4dbaa7, this['_effect']), this['forceBackFacesOnly'] && _0x2c224a['setState'](!0x0, 0x0, !0x1, !0x0), this['onBeforeShadowMapRenderMeshObservable']['notifyObservers'](_0x4dbaa7), this['onBeforeShadowMapRenderObservable']['notifyObservers'](this['_effect']), _0x4dbaa7['_processRendering'](_0x1e60e2, this['_effect'], _0x10d420['a']['TriangleFillMode'], _0x304913, _0x417def, function(_0x49e144, _0x54005e) { return _0x426e81['_effect']['setMatrix']('world', _0x54005e); }), this['forceBackFacesOnly'] && _0x2c224a['setState'](!0x0, 0x0, !0x1, !0x1); } else this['_shadowMap'] && this['_shadowMap']['resetRefreshCounter'](); } } } , _0x4117ab['prototype']['_applyFilterValues'] = function() { this['_shadowMap'] && (this['filter'] === _0x4117ab['FILTER_NONE'] || this['filter'] === _0x4117ab['FILTER_PCSS'] ? this['_shadowMap']['updateSamplingMode'](_0x11d14a['a']['NEAREST_SAMPLINGMODE']) : this['_shadowMap']['updateSamplingMode'](_0x11d14a['a']['BILINEAR_SAMPLINGMODE'])); } , _0x4117ab['prototype']['forceCompilation'] = function(_0xb3524a, _0x364b1a) { var _0x2300c5 = this , _0x171046 = _0x420e5b['a']({ 'useInstances': !0x1 }, _0x364b1a) , _0x2dfb2c = this['getShadowMap'](); if (_0x2dfb2c) { var _0x24462a = _0x2dfb2c['renderList']; if (_0x24462a) { for (var _0x3bc092 = new Array(), _0x180b03 = 0x0, _0x44eaa6 = _0x24462a; _0x180b03 < _0x44eaa6['length']; _0x180b03++) { var _0x546773 = _0x44eaa6[_0x180b03]; _0x3bc092['push']['apply'](_0x3bc092, _0x546773['subMeshes']); } if (0x0 !== _0x3bc092['length']) { var _0x5ab671 = 0x0 , _0x3e8a17 = function() { if (_0x2300c5['_scene'] && _0x2300c5['_scene']['getEngine']()) { for (; _0x2300c5['isReady'](_0x3bc092[_0x5ab671], _0x171046['useInstances']); ) if (++_0x5ab671 >= _0x3bc092['length']) return void (_0xb3524a && _0xb3524a(_0x2300c5)); setTimeout(_0x3e8a17, 0x10); } }; _0x3e8a17(); } else _0xb3524a && _0xb3524a(this); } else _0xb3524a && _0xb3524a(this); } else _0xb3524a && _0xb3524a(this); } , _0x4117ab['prototype']['forceCompilationAsync'] = function(_0x5bac5d) { var _0x32bb93 = this; return new Promise(function(_0x302d56) { _0x32bb93['forceCompilation'](function() { _0x302d56(); }, _0x5bac5d); } ); } , _0x4117ab['prototype']['isReady'] = function(_0x39129a, _0x8469e0) { var _0x4ca5a1 = []; this['_textureType'] !== _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'] && _0x4ca5a1['push']('#define\x20FLOAT'), this['useExponentialShadowMap'] || this['useBlurExponentialShadowMap'] ? _0x4ca5a1['push']('#define\x20ESM') : (this['usePercentageCloserFiltering'] || this['useContactHardeningShadow']) && _0x4ca5a1['push']('#define\x20DEPTHTEXTURE'); var _0x81d9e = [_0x4209f7['b']['PositionKind']] , _0x4ed021 = _0x39129a['getMesh']() , _0x5a79e3 = _0x39129a['getMaterial'](); if (this['normalBias'] && _0x4ed021['isVerticesDataPresent'](_0x4209f7['b']['NormalKind']) && (_0x81d9e['push'](_0x4209f7['b']['NormalKind']), _0x4ca5a1['push']('#define\x20NORMAL'), _0x4ed021['nonUniformScaling'] && _0x4ca5a1['push']('#define\x20NONUNIFORMSCALING'), this['getLight']()['getTypeID']() === _0x16b020['a']['LIGHTTYPEID_DIRECTIONALLIGHT'] && _0x4ca5a1['push']('#define\x20DIRECTIONINLIGHTDATA')), _0x5a79e3 && _0x5a79e3['needAlphaTesting']()) { var _0x2e0f54 = _0x5a79e3['getAlphaTestTexture'](); _0x2e0f54 && (_0x4ca5a1['push']('#define\x20ALPHATEST'), _0x4ed021['isVerticesDataPresent'](_0x4209f7['b']['UVKind']) && (_0x81d9e['push'](_0x4209f7['b']['UVKind']), _0x4ca5a1['push']('#define\x20UV1')), _0x4ed021['isVerticesDataPresent'](_0x4209f7['b']['UV2Kind']) && 0x1 === _0x2e0f54['coordinatesIndex'] && (_0x81d9e['push'](_0x4209f7['b']['UV2Kind']), _0x4ca5a1['push']('#define\x20UV2'))); } if (_0x4ed021['useBones'] && _0x4ed021['computeBonesUsingShaders'] && _0x4ed021['skeleton']) { _0x81d9e['push'](_0x4209f7['b']['MatricesIndicesKind']), _0x81d9e['push'](_0x4209f7['b']['MatricesWeightsKind']), _0x4ed021['numBoneInfluencers'] > 0x4 && (_0x81d9e['push'](_0x4209f7['b']['MatricesIndicesExtraKind']), _0x81d9e['push'](_0x4209f7['b']['MatricesWeightsExtraKind'])); var _0x425b1b = _0x4ed021['skeleton']; _0x4ca5a1['push']('#define\x20NUM_BONE_INFLUENCERS\x20' + _0x4ed021['numBoneInfluencers']), _0x425b1b['isUsingTextureForMatrices'] ? _0x4ca5a1['push']('#define\x20BONETEXTURE') : _0x4ca5a1['push']('#define\x20BonesPerMesh\x20' + (_0x425b1b['bones']['length'] + 0x1)); } else _0x4ca5a1['push']('#define\x20NUM_BONE_INFLUENCERS\x200'); var _0x46b75f = _0x4ed021['morphTargetManager'] , _0xf5e6cc = 0x0; if (_0x46b75f && _0x46b75f['numInfluencers'] > 0x0 && (_0x4ca5a1['push']('#define\x20MORPHTARGETS'), _0xf5e6cc = _0x46b75f['numInfluencers'], _0x4ca5a1['push']('#define\x20NUM_MORPH_INFLUENCERS\x20' + _0xf5e6cc), _0x2efc06['a']['PrepareAttributesForMorphTargets'](_0x81d9e, _0x4ed021, { 'NUM_MORPH_INFLUENCERS': _0xf5e6cc })), _0x8469e0 && (_0x4ca5a1['push']('#define\x20INSTANCES'), _0x81d9e['push']('world0'), _0x81d9e['push']('world1'), _0x81d9e['push']('world2'), _0x81d9e['push']('world3')), this['customShaderOptions'] && this['customShaderOptions']['defines']) for (var _0x48123 = 0x0, _0x1198ac = this['customShaderOptions']['defines']; _0x48123 < _0x1198ac['length']; _0x48123++) { var _0x4d69bb = _0x1198ac[_0x48123]; -0x1 === _0x4ca5a1['indexOf'](_0x4d69bb) && _0x4ca5a1['push'](_0x4d69bb); } var _0x525257 = _0x4ca5a1['join']('\x0a'); if (this['_cachedDefines'] !== _0x525257) { this['_cachedDefines'] = _0x525257; var _0x4792bf = 'shadowMap' , _0x2cb303 = ['world', 'mBones', 'viewProjection', 'diffuseMatrix', 'lightData', 'depthValues', 'biasAndScale', 'morphTargetInfluences', 'boneTextureWidth'] , _0x349788 = ['diffuseSampler', 'boneSampler']; if (this['customShaderOptions']) { if (_0x4792bf = this['customShaderOptions']['shaderName'], this['customShaderOptions']['attributes']) for (var _0xd19eb9 = 0x0, _0xf786d3 = this['customShaderOptions']['attributes']; _0xd19eb9 < _0xf786d3['length']; _0xd19eb9++) { var _0x5ca12d = _0xf786d3[_0xd19eb9]; -0x1 === _0x81d9e['indexOf'](_0x5ca12d) && _0x81d9e['push'](_0x5ca12d); } if (this['customShaderOptions']['uniforms']) for (var _0x53a4aa = 0x0, _0x50a4f1 = this['customShaderOptions']['uniforms']; _0x53a4aa < _0x50a4f1['length']; _0x53a4aa++) { var _0x5bb47b = _0x50a4f1[_0x53a4aa]; -0x1 === _0x2cb303['indexOf'](_0x5bb47b) && _0x2cb303['push'](_0x5bb47b); } if (this['customShaderOptions']['samplers']) for (var _0x402440 = 0x0, _0x423f42 = this['customShaderOptions']['samplers']; _0x402440 < _0x423f42['length']; _0x402440++) { var _0x1a2ee8 = _0x423f42[_0x402440]; -0x1 === _0x349788['indexOf'](_0x1a2ee8) && _0x349788['push'](_0x1a2ee8); } } this['_effect'] = this['_scene']['getEngine']()['createEffect'](_0x4792bf, _0x81d9e, _0x2cb303, _0x349788, _0x525257, void 0x0, void 0x0, void 0x0, { 'maxSimultaneousMorphTargets': _0xf5e6cc }); } return !!this['_effect']['isReady']() && ((this['useBlurExponentialShadowMap'] || this['useBlurCloseExponentialShadowMap']) && (this['_blurPostProcesses'] && this['_blurPostProcesses']['length'] || this['_initializeBlurRTTAndPostProcesses']()), !(this['_kernelBlurXPostprocess'] && !this['_kernelBlurXPostprocess']['isReady']()) && (!(this['_kernelBlurYPostprocess'] && !this['_kernelBlurYPostprocess']['isReady']()) && !(this['_boxBlurPostprocess'] && !this['_boxBlurPostprocess']['isReady']()))); } , _0x4117ab['prototype']['prepareDefines'] = function(_0x1e1f31, _0x24c5f8) { var _0x20927b = this['_scene'] , _0x53dd97 = this['_light']; _0x20927b['shadowsEnabled'] && _0x53dd97['shadowEnabled'] && (_0x1e1f31['SHADOW' + _0x24c5f8] = !0x0, this['useContactHardeningShadow'] && (_0x1e1f31['SHADOWPCSS' + _0x24c5f8] = !0x0, this['_filteringQuality'] === _0x4117ab['QUALITY_LOW'] ? _0x1e1f31['SHADOWLOWQUALITY' + _0x24c5f8] = !0x0 : this['_filteringQuality'] === _0x4117ab['QUALITY_MEDIUM'] && (_0x1e1f31['SHADOWMEDIUMQUALITY' + _0x24c5f8] = !0x0)), this['usePercentageCloserFiltering'] ? (_0x1e1f31['SHADOWPCF' + _0x24c5f8] = !0x0, this['_filteringQuality'] === _0x4117ab['QUALITY_LOW'] ? _0x1e1f31['SHADOWLOWQUALITY' + _0x24c5f8] = !0x0 : this['_filteringQuality'] === _0x4117ab['QUALITY_MEDIUM'] && (_0x1e1f31['SHADOWMEDIUMQUALITY' + _0x24c5f8] = !0x0)) : this['usePoissonSampling'] ? _0x1e1f31['SHADOWPOISSON' + _0x24c5f8] = !0x0 : this['useExponentialShadowMap'] || this['useBlurExponentialShadowMap'] ? _0x1e1f31['SHADOWESM' + _0x24c5f8] = !0x0 : (this['useCloseExponentialShadowMap'] || this['useBlurCloseExponentialShadowMap']) && (_0x1e1f31['SHADOWCLOSEESM' + _0x24c5f8] = !0x0), _0x53dd97['needCube']() && (_0x1e1f31['SHADOWCUBE' + _0x24c5f8] = !0x0)); } , _0x4117ab['prototype']['bindShadowLight'] = function(_0x37569a, _0x36ffaa) { var _0x52474f = this['_light'] , _0x1416f5 = this['_scene']; if (_0x1416f5['shadowsEnabled'] && _0x52474f['shadowEnabled']) { var _0x4463b1 = _0x1416f5['activeCamera']; if (_0x4463b1) { var _0x4f7298 = this['getShadowMap'](); _0x4f7298 && (_0x52474f['needCube']() || _0x36ffaa['setMatrix']('lightMatrix' + _0x37569a, this['getTransformMatrix']()), this['_filter'] === _0x4117ab['FILTER_PCF'] ? (_0x36ffaa['setDepthStencilTexture']('shadowSampler' + _0x37569a, this['getShadowMapForRendering']()), _0x52474f['_uniformBuffer']['updateFloat4']('shadowsInfo', this['getDarkness'](), _0x4f7298['getSize']()['width'], 0x1 / _0x4f7298['getSize']()['width'], this['frustumEdgeFalloff'], _0x37569a)) : this['_filter'] === _0x4117ab['FILTER_PCSS'] ? (_0x36ffaa['setDepthStencilTexture']('shadowSampler' + _0x37569a, this['getShadowMapForRendering']()), _0x36ffaa['setTexture']('depthSampler' + _0x37569a, this['getShadowMapForRendering']()), _0x52474f['_uniformBuffer']['updateFloat4']('shadowsInfo', this['getDarkness'](), 0x1 / _0x4f7298['getSize']()['width'], this['_contactHardeningLightSizeUVRatio'] * _0x4f7298['getSize']()['width'], this['frustumEdgeFalloff'], _0x37569a)) : (_0x36ffaa['setTexture']('shadowSampler' + _0x37569a, this['getShadowMapForRendering']()), _0x52474f['_uniformBuffer']['updateFloat4']('shadowsInfo', this['getDarkness'](), this['blurScale'] / _0x4f7298['getSize']()['width'], this['depthScale'], this['frustumEdgeFalloff'], _0x37569a)), _0x52474f['_uniformBuffer']['updateFloat2']('depthValues', this['getLight']()['getDepthMinZ'](_0x4463b1), this['getLight']()['getDepthMinZ'](_0x4463b1) + this['getLight']()['getDepthMaxZ'](_0x4463b1), _0x37569a)); } } } , _0x4117ab['prototype']['getTransformMatrix'] = function() { var _0x79f24 = this['_scene']; if (this['_currentRenderID'] === _0x79f24['getRenderId']() && this['_currentFaceIndexCache'] === this['_currentFaceIndex']) return this['_transformMatrix']; this['_currentRenderID'] = _0x79f24['getRenderId'](), this['_currentFaceIndexCache'] = this['_currentFaceIndex']; var _0x210b00 = this['_light']['position']; if (this['_light']['computeTransformedInformation']() && (_0x210b00 = this['_light']['transformedPosition']), _0x47d24f['x']['NormalizeToRef'](this['_light']['getShadowDirection'](this['_currentFaceIndex']), this['_lightDirection']), 0x1 === Math['abs'](_0x47d24f['x']['Dot'](this['_lightDirection'], _0x47d24f['x']['Up']())) && (this['_lightDirection']['z'] = 1e-13), this['_light']['needProjectionMatrixCompute']() || !this['_cachedPosition'] || !this['_cachedDirection'] || !_0x210b00['equals'](this['_cachedPosition']) || !this['_lightDirection']['equals'](this['_cachedDirection'])) { this['_cachedPosition']['copyFrom'](_0x210b00), this['_cachedDirection']['copyFrom'](this['_lightDirection']), _0x47d24f['j']['LookAtLHToRef'](_0x210b00, _0x210b00['add'](this['_lightDirection']), _0x47d24f['x']['Up'](), this['_viewMatrix']); var _0x5e17a0 = this['getShadowMap'](); if (_0x5e17a0) { var _0xd8e89f = _0x5e17a0['renderList']; _0xd8e89f && this['_light']['setShadowProjectionMatrix'](this['_projectionMatrix'], this['_viewMatrix'], _0xd8e89f); } this['_viewMatrix']['multiplyToRef'](this['_projectionMatrix'], this['_transformMatrix']); } return this['_transformMatrix']; } , _0x4117ab['prototype']['recreateShadowMap'] = function() { var _0x45d488 = this['_shadowMap']; if (_0x45d488) { var _0xaacced = _0x45d488['renderList']; this['_disposeRTTandPostProcesses'](), this['_initializeGenerator'](), this['filter'] = this['filter'], this['_applyFilterValues'](), this['_shadowMap']['renderList'] = _0xaacced; } } , _0x4117ab['prototype']['_disposeBlurPostProcesses'] = function() { this['_shadowMap2'] && (this['_shadowMap2']['dispose'](), this['_shadowMap2'] = null), this['_boxBlurPostprocess'] && (this['_boxBlurPostprocess']['dispose'](), this['_boxBlurPostprocess'] = null), this['_kernelBlurXPostprocess'] && (this['_kernelBlurXPostprocess']['dispose'](), this['_kernelBlurXPostprocess'] = null), this['_kernelBlurYPostprocess'] && (this['_kernelBlurYPostprocess']['dispose'](), this['_kernelBlurYPostprocess'] = null), this['_blurPostProcesses'] = []; } , _0x4117ab['prototype']['_disposeRTTandPostProcesses'] = function() { this['_shadowMap'] && (this['_shadowMap']['dispose'](), this['_shadowMap'] = null), this['_disposeBlurPostProcesses'](); } , _0x4117ab['prototype']['dispose'] = function() { this['_disposeRTTandPostProcesses'](), this['_light'] && (this['_light']['_shadowGenerator'] = null, this['_light']['_markMeshesAsLightDirty']()); } , _0x4117ab['prototype']['serialize'] = function() { var _0x5b20a4 = {} , _0x1e3140 = this['getShadowMap'](); if (!_0x1e3140) return _0x5b20a4; if (_0x5b20a4['lightId'] = this['_light']['id'], _0x5b20a4['mapSize'] = _0x1e3140['getRenderSize'](), _0x5b20a4['useExponentialShadowMap'] = this['useExponentialShadowMap'], _0x5b20a4['useBlurExponentialShadowMap'] = this['useBlurExponentialShadowMap'], _0x5b20a4['useCloseExponentialShadowMap'] = this['useBlurExponentialShadowMap'], _0x5b20a4['useBlurCloseExponentialShadowMap'] = this['useBlurExponentialShadowMap'], _0x5b20a4['usePoissonSampling'] = this['usePoissonSampling'], _0x5b20a4['forceBackFacesOnly'] = this['forceBackFacesOnly'], _0x5b20a4['depthScale'] = this['depthScale'], _0x5b20a4['darkness'] = this['getDarkness'](), _0x5b20a4['blurBoxOffset'] = this['blurBoxOffset'], _0x5b20a4['blurKernel'] = this['blurKernel'], _0x5b20a4['blurScale'] = this['blurScale'], _0x5b20a4['useKernelBlur'] = this['useKernelBlur'], _0x5b20a4['transparencyShadow'] = this['_transparencyShadow'], _0x5b20a4['frustumEdgeFalloff'] = this['frustumEdgeFalloff'], _0x5b20a4['bias'] = this['bias'], _0x5b20a4['normalBias'] = this['normalBias'], _0x5b20a4['usePercentageCloserFiltering'] = this['usePercentageCloserFiltering'], _0x5b20a4['useContactHardeningShadow'] = this['useContactHardeningShadow'], _0x5b20a4['filteringQuality'] = this['filteringQuality'], _0x5b20a4['contactHardeningLightSizeUVRatio'] = this['contactHardeningLightSizeUVRatio'], _0x5b20a4['renderList'] = [], _0x1e3140['renderList']) for (var _0x302913 = 0x0; _0x302913 < _0x1e3140['renderList']['length']; _0x302913++) { var _0x4ab4e3 = _0x1e3140['renderList'][_0x302913]; _0x5b20a4['renderList']['push'](_0x4ab4e3['id']); } return _0x5b20a4; } , _0x4117ab['Parse'] = function(_0x192492, _0x277462) { for (var _0x1fdf93 = _0x277462['getLightByID'](_0x192492['lightId']), _0x58cebb = new _0x4117ab(_0x192492['mapSize'],_0x1fdf93), _0x5aff99 = _0x58cebb['getShadowMap'](), _0x1bcec9 = 0x0; _0x1bcec9 < _0x192492['renderList']['length']; _0x1bcec9++) { _0x277462['getMeshesByID'](_0x192492['renderList'][_0x1bcec9])['forEach'](function(_0x9a82fb) { _0x5aff99 && (_0x5aff99['renderList'] || (_0x5aff99['renderList'] = []), _0x5aff99['renderList']['push'](_0x9a82fb)); }); } return _0x192492['usePoissonSampling'] ? _0x58cebb['usePoissonSampling'] = !0x0 : _0x192492['useExponentialShadowMap'] ? _0x58cebb['useExponentialShadowMap'] = !0x0 : _0x192492['useBlurExponentialShadowMap'] ? _0x58cebb['useBlurExponentialShadowMap'] = !0x0 : _0x192492['useCloseExponentialShadowMap'] ? _0x58cebb['useCloseExponentialShadowMap'] = !0x0 : _0x192492['useBlurCloseExponentialShadowMap'] ? _0x58cebb['useBlurCloseExponentialShadowMap'] = !0x0 : _0x192492['usePercentageCloserFiltering'] ? _0x58cebb['usePercentageCloserFiltering'] = !0x0 : _0x192492['useContactHardeningShadow'] && (_0x58cebb['useContactHardeningShadow'] = !0x0), _0x192492['filteringQuality'] && (_0x58cebb['filteringQuality'] = _0x192492['filteringQuality']), _0x192492['contactHardeningLightSizeUVRatio'] ? _0x58cebb['contactHardeningLightSizeUVRatio'] = _0x192492['contactHardeningLightSizeUVRatio'] : _0x192492['useVarianceShadowMap'] ? _0x58cebb['useExponentialShadowMap'] = !0x0 : _0x192492['useBlurVarianceShadowMap'] && (_0x58cebb['useBlurExponentialShadowMap'] = !0x0), _0x192492['depthScale'] && (_0x58cebb['depthScale'] = _0x192492['depthScale']), _0x192492['blurScale'] && (_0x58cebb['blurScale'] = _0x192492['blurScale']), _0x192492['blurBoxOffset'] && (_0x58cebb['blurBoxOffset'] = _0x192492['blurBoxOffset']), _0x192492['useKernelBlur'] && (_0x58cebb['useKernelBlur'] = _0x192492['useKernelBlur']), _0x192492['blurKernel'] && (_0x58cebb['blurKernel'] = _0x192492['blurKernel']), void 0x0 !== _0x192492['bias'] && (_0x58cebb['bias'] = _0x192492['bias']), void 0x0 !== _0x192492['normalBias'] && (_0x58cebb['normalBias'] = _0x192492['normalBias']), void 0x0 !== _0x192492['frustumEdgeFalloff'] && (_0x58cebb['frustumEdgeFalloff'] = _0x192492['frustumEdgeFalloff']), _0x192492['darkness'] && _0x58cebb['setDarkness'](_0x192492['darkness']), _0x192492['transparencyShadow'] && _0x58cebb['setTransparencyShadow'](!0x0), _0x58cebb['forceBackFacesOnly'] = _0x192492['forceBackFacesOnly'], _0x58cebb; } , _0x4117ab['FILTER_NONE'] = 0x0, _0x4117ab['FILTER_EXPONENTIALSHADOWMAP'] = 0x1, _0x4117ab['FILTER_POISSONSAMPLING'] = 0x2, _0x4117ab['FILTER_BLUREXPONENTIALSHADOWMAP'] = 0x3, _0x4117ab['FILTER_CLOSEEXPONENTIALSHADOWMAP'] = 0x4, _0x4117ab['FILTER_BLURCLOSEEXPONENTIALSHADOWMAP'] = 0x5, _0x4117ab['FILTER_PCF'] = 0x6, _0x4117ab['FILTER_PCSS'] = 0x7, _0x4117ab['QUALITY_HIGH'] = 0x0, _0x4117ab['QUALITY_MEDIUM'] = 0x1, _0x4117ab['QUALITY_LOW'] = 0x2, _0x4117ab['_SceneComponentInitialization'] = function(_0x40cffd) { throw _0x2757ee['a']['WarnImport']('ShadowGeneratorSceneComponent'); } , _0x4117ab; }(); _0x20925f['a']['AddParser'](_0x443f74['a']['NAME_SHADOWGENERATOR'], function(_0x4dc0bf, _0x3dd6ac) { if (void 0x0 !== _0x4dc0bf['shadowGenerators'] && null !== _0x4dc0bf['shadowGenerators']) for (var _0x319fd2 = 0x0, _0x33d86a = _0x4dc0bf['shadowGenerators']['length']; _0x319fd2 < _0x33d86a; _0x319fd2++) { var _0x103343 = _0x4dc0bf['shadowGenerators'][_0x319fd2]; _0x4149be['Parse'](_0x103343, _0x3dd6ac); } }); var _0xdcb1a1 = function() { function _0x314994(_0x34f4d6) { this['name'] = _0x443f74['a']['NAME_SHADOWGENERATOR'], this['scene'] = _0x34f4d6; } return _0x314994['prototype']['register'] = function() { this['scene']['_gatherRenderTargetsStage']['registerStep'](_0x443f74['a']['STEP_GATHERRENDERTARGETS_SHADOWGENERATOR'], this, this['_gatherRenderTargets']); } , _0x314994['prototype']['rebuild'] = function() {} , _0x314994['prototype']['serialize'] = function(_0x100ac3) { _0x100ac3['shadowGenerators'] = []; for (var _0x3359bd = 0x0, _0x4913a2 = this['scene']['lights']; _0x3359bd < _0x4913a2['length']; _0x3359bd++) { var _0x4487d4 = _0x4913a2[_0x3359bd]['getShadowGenerator'](); _0x4487d4 && _0x100ac3['shadowGenerators']['push'](_0x4487d4['serialize']()); } } , _0x314994['prototype']['addFromContainer'] = function(_0x4665c9) {} , _0x314994['prototype']['removeFromContainer'] = function(_0x356ce6, _0x4c29a0) {} , _0x314994['prototype']['dispose'] = function() {} , _0x314994['prototype']['_gatherRenderTargets'] = function(_0x19bff1) { var _0x4a181c = this['scene']; if (this['scene']['shadowsEnabled']) for (var _0xfa858e = 0x0; _0xfa858e < _0x4a181c['lights']['length']; _0xfa858e++) { var _0x102666 = _0x4a181c['lights'][_0xfa858e] , _0x3ce93a = _0x102666['getShadowGenerator'](); if (_0x102666['isEnabled']() && _0x102666['shadowEnabled'] && _0x3ce93a) { var _0x226df1 = _0x3ce93a['getShadowMap'](); -0x1 !== _0x4a181c['textures']['indexOf'](_0x226df1) && _0x19bff1['push'](_0x226df1); } } } , _0x314994; }(); _0x4149be['_SceneComponentInitialization'] = function(_0x1b5072) { var _0x1a063f = _0x1b5072['_getComponent'](_0x443f74['a']['NAME_SHADOWGENERATOR']); _0x1a063f || (_0x1a063f = new _0xdcb1a1(_0x1b5072), _0x1b5072['_addComponent'](_0x1a063f)); } , _0x111b09['a']['AddNodeConstructor']('Light_Type_0', function(_0x5e6170, _0x100898) { return function() { return new _0x2494d8(_0x5e6170,_0x47d24f['x']['Zero'](),_0x100898); } ; }); var _0x2494d8 = function(_0x1d6c7b) { function _0x2c35c4(_0x4d2893, _0x29b6e5, _0x295392) { var _0x384baf = _0x1d6c7b['call'](this, _0x4d2893, _0x295392) || this; return _0x384baf['_shadowAngle'] = Math['PI'] / 0x2, _0x384baf['position'] = _0x29b6e5, _0x384baf; } return _0x420e5b['d'](_0x2c35c4, _0x1d6c7b), Object['defineProperty'](_0x2c35c4['prototype'], 'shadowAngle', { 'get': function() { return this['_shadowAngle']; }, 'set': function(_0x3715d5) { this['_shadowAngle'] = _0x3715d5, this['forceProjectionMatrixCompute'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2c35c4['prototype'], 'direction', { 'get': function() { return this['_direction']; }, 'set': function(_0x1c21a8) { var _0x3f2061 = this['needCube'](); this['_direction'] = _0x1c21a8, this['needCube']() !== _0x3f2061 && this['_shadowGenerator'] && this['_shadowGenerator']['recreateShadowMap'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2c35c4['prototype']['getClassName'] = function() { return 'PointLight'; } , _0x2c35c4['prototype']['getTypeID'] = function() { return _0x16b020['a']['LIGHTTYPEID_POINTLIGHT']; } , _0x2c35c4['prototype']['needCube'] = function() { return !this['direction']; } , _0x2c35c4['prototype']['getShadowDirection'] = function(_0x5545fb) { if (this['direction']) return _0x1d6c7b['prototype']['getShadowDirection']['call'](this, _0x5545fb); switch (_0x5545fb) { case 0x0: return new _0x47d24f['x'](0x1,0x0,0x0); case 0x1: return new _0x47d24f['x'](-0x1,0x0,0x0); case 0x2: return new _0x47d24f['x'](0x0,-0x1,0x0); case 0x3: return new _0x47d24f['x'](0x0,0x1,0x0); case 0x4: return new _0x47d24f['x'](0x0,0x0,0x1); case 0x5: return new _0x47d24f['x'](0x0,0x0,-0x1); } return _0x47d24f['x']['Zero'](); } , _0x2c35c4['prototype']['_setDefaultShadowProjectionMatrix'] = function(_0x5184f4, _0x43e14b, _0x4a3dad) { var _0x3c486b = this['getScene']()['activeCamera']; _0x3c486b && _0x47d24f['j']['PerspectiveFovLHToRef'](this['shadowAngle'], 0x1, this['getDepthMinZ'](_0x3c486b), this['getDepthMaxZ'](_0x3c486b), _0x5184f4); } , _0x2c35c4['prototype']['_buildUniformLayout'] = function() { this['_uniformBuffer']['addUniform']('vLightData', 0x4), this['_uniformBuffer']['addUniform']('vLightDiffuse', 0x4), this['_uniformBuffer']['addUniform']('vLightSpecular', 0x3), this['_uniformBuffer']['addUniform']('vLightFalloff', 0x4), this['_uniformBuffer']['addUniform']('shadowsInfo', 0x3), this['_uniformBuffer']['addUniform']('depthValues', 0x2), this['_uniformBuffer']['create'](); } , _0x2c35c4['prototype']['transferToEffect'] = function(_0x53ef0b, _0x477872) { return this['computeTransformedInformation']() ? this['_uniformBuffer']['updateFloat4']('vLightData', this['transformedPosition']['x'], this['transformedPosition']['y'], this['transformedPosition']['z'], 0x0, _0x477872) : this['_uniformBuffer']['updateFloat4']('vLightData', this['position']['x'], this['position']['y'], this['position']['z'], 0x0, _0x477872), this['_uniformBuffer']['updateFloat4']('vLightFalloff', this['range'], this['_inverseSquaredRange'], 0x0, 0x0, _0x477872), this; } , _0x2c35c4['prototype']['prepareLightSpecificDefines'] = function(_0x3e1de7, _0x4cde81) { _0x3e1de7['POINTLIGHT' + _0x4cde81] = !0x0; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x2c35c4['prototype'], 'shadowAngle', null), _0x2c35c4; }(_0x2074d3) , _0x217c1d = function() { function _0x1f1410(_0x3dbdc6, _0x434ddb, _0x429d6a) { var _0x5329e4 = this; void 0x0 === _0x434ddb && (_0x434ddb = ''), void 0x0 === _0x429d6a && (_0x429d6a = 'black'), this['_renderingCanvas'] = _0x3dbdc6, this['_loadingText'] = _0x434ddb, this['_loadingDivBackgroundColor'] = _0x429d6a, this['_resizeLoadingUI'] = function() { var _0x4c1dda = _0x5329e4['_renderingCanvas']['getBoundingClientRect']() , _0xcdaf8e = window['getComputedStyle'](_0x5329e4['_renderingCanvas'])['position']; _0x5329e4['_loadingDiv'] && (_0x5329e4['_loadingDiv']['style']['position'] = 'fixed' === _0xcdaf8e ? 'fixed' : 'absolute', _0x5329e4['_loadingDiv']['style']['left'] = _0x4c1dda['left'] + 'px', _0x5329e4['_loadingDiv']['style']['top'] = _0x4c1dda['top'] + 'px', _0x5329e4['_loadingDiv']['style']['width'] = _0x4c1dda['width'] + 'px', _0x5329e4['_loadingDiv']['style']['height'] = _0x4c1dda['height'] + 'px'); } ; } return _0x1f1410['prototype']['displayLoadingUI'] = function() { if (!this['_loadingDiv']) { this['_loadingDiv'] = document['createElement']('div'), this['_loadingDiv']['id'] = 'babylonjsLoadingDiv', this['_loadingDiv']['style']['opacity'] = '0', this['_loadingDiv']['style']['transition'] = 'opacity\x201.5s\x20ease', this['_loadingDiv']['style']['pointerEvents'] = 'none', this['_loadingTextDiv'] = document['createElement']('div'), this['_loadingTextDiv']['style']['position'] = 'absolute', this['_loadingTextDiv']['style']['left'] = '0', this['_loadingTextDiv']['style']['top'] = '50%', this['_loadingTextDiv']['style']['marginTop'] = '80px', this['_loadingTextDiv']['style']['width'] = '100%', this['_loadingTextDiv']['style']['height'] = '20px', this['_loadingTextDiv']['style']['fontFamily'] = 'Arial', this['_loadingTextDiv']['style']['fontSize'] = '14px', this['_loadingTextDiv']['style']['color'] = 'white', this['_loadingTextDiv']['style']['textAlign'] = 'center', this['_loadingTextDiv']['innerHTML'] = 'Loading', this['_loadingDiv']['appendChild'](this['_loadingTextDiv']), this['_loadingTextDiv']['innerHTML'] = this['_loadingText']; var _0x39441e = document['createElement']('style'); _0x39441e['type'] = 'text/css'; _0x39441e['innerHTML'] = '@-webkit-keyframes\x20spin1\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x200%\x20{\x20-webkit-transform:\x20rotate(0deg);}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20100%\x20{\x20-webkit-transform:\x20rotate(360deg);}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@keyframes\x20spin1\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x200%\x20{\x20transform:\x20rotate(0deg);}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20100%\x20{\x20transform:\x20rotate(360deg);}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}', document['getElementsByTagName']('head')[0x0]['appendChild'](_0x39441e); var _0xefd94b = new Image(); _0x1f1410['DefaultLogoUrl'] ? _0xefd94b['src'] = _0x1f1410['DefaultLogoUrl'] : _0xefd94b['src'] = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxODAuMTcgMjA4LjA0Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZjt9LmNscy0ye2ZpbGw6I2UwNjg0Yjt9LmNscy0ze2ZpbGw6I2JiNDY0Yjt9LmNscy00e2ZpbGw6I2UwZGVkODt9LmNscy01e2ZpbGw6I2Q1ZDJjYTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPkJhYnlsb25Mb2dvPC90aXRsZT48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iUGFnZV9FbGVtZW50cyIgZGF0YS1uYW1lPSJQYWdlIEVsZW1lbnRzIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik05MC4wOSwwLDAsNTJWMTU2bDkwLjA5LDUyLDkwLjA4LTUyVjUyWiIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxODAuMTcgNTIuMDEgMTUxLjk3IDM1LjczIDEyNC44NSA1MS4zOSAxNTMuMDUgNjcuNjcgMTgwLjE3IDUyLjAxIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjI3LjEyIDY3LjY3IDExNy4yMSAxNS42NiA5MC4wOCAwIDAgNTIuMDEgMjcuMTIgNjcuNjciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNjEuODkgMTIwLjMgOTAuMDggMTM2LjU4IDExOC4yOCAxMjAuMyA5MC4wOCAxMDQuMDIgNjEuODkgMTIwLjMiLz48cG9seWdvbiBjbGFzcz0iY2xzLTMiIHBvaW50cz0iMTUzLjA1IDY3LjY3IDE1My4wNSAxNDAuMzcgOTAuMDggMTc2LjcyIDI3LjEyIDE0MC4zNyAyNy4xMiA2Ny42NyAwIDUyLjAxIDAgMTU2LjAzIDkwLjA4IDIwOC4wNCAxODAuMTcgMTU2LjAzIDE4MC4xNyA1Mi4wMSAxNTMuMDUgNjcuNjciLz48cG9seWdvbiBjbGFzcz0iY2xzLTMiIHBvaW50cz0iOTAuMDggNzEuNDYgNjEuODkgODcuNzQgNjEuODkgMTIwLjMgOTAuMDggMTA0LjAyIDExOC4yOCAxMjAuMyAxMTguMjggODcuNzQgOTAuMDggNzEuNDYiLz48cG9seWdvbiBjbGFzcz0iY2xzLTQiIHBvaW50cz0iMTUzLjA1IDY3LjY3IDExOC4yOCA4Ny43NCAxMTguMjggMTIwLjMgOTAuMDggMTM2LjU4IDkwLjA4IDE3Ni43MiAxNTMuMDUgMTQwLjM3IDE1My4wNSA2Ny42NyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtNSIgcG9pbnRzPSIyNy4xMiA2Ny42NyA2MS44OSA4Ny43NCA2MS44OSAxMjAuMyA5MC4wOCAxMzYuNTggOTAuMDggMTc2LjcyIDI3LjEyIDE0MC4zNyAyNy4xMiA2Ny42NyIvPjwvZz48L2c+PC9zdmc+', _0xefd94b['style']['position'] = 'absolute', _0xefd94b['style']['left'] = '50%', _0xefd94b['style']['top'] = '50%', _0xefd94b['style']['width'] = '10vw', _0xefd94b['style']['height'] = '10vw', _0xefd94b['style']['marginLeft'] = '-5vw', _0xefd94b['style']['marginTop'] = '-5vw'; var _0x27ac96 = new Image(); _0x1f1410['DefaultSpinnerUrl'] ? _0x27ac96['src'] = _0x1f1410['DefaultSpinnerUrl'] : _0x27ac96['src'] = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzOTIgMzkyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2UwNjg0Yjt9LmNscy0ye2ZpbGw6bm9uZTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPlNwaW5uZXJJY29uPC90aXRsZT48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iU3Bpbm5lciI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDAuMjEsMTI2LjQzYzMuNy03LjMxLDcuNjctMTQuNDQsMTItMjEuMzJsMy4zNi01LjEsMy41Mi01YzEuMjMtMS42MywyLjQxLTMuMjksMy42NS00LjkxczIuNTMtMy4yMSwzLjgyLTQuNzlBMTg1LjIsMTg1LjIsMCwwLDEsODMuNCw2Ny40M2EyMDgsMjA4LDAsMCwxLDE5LTE1LjY2YzMuMzUtMi40MSw2Ljc0LTQuNzgsMTAuMjUtN3M3LjExLTQuMjgsMTAuNzUtNi4zMmM3LjI5LTQsMTQuNzMtOCwyMi41My0xMS40OSwzLjktMS43Miw3Ljg4LTMuMywxMi00LjY0YTEwNC4yMiwxMDQuMjIsMCwwLDEsMTIuNDQtMy4yMyw2Mi40NCw2Mi40NCwwLDAsMSwxMi43OC0xLjM5QTI1LjkyLDI1LjkyLDAsMCwxLDE5NiwyMS40NGE2LjU1LDYuNTUsMCwwLDEsMi4wNSw5LDYuNjYsNi42NiwwLDAsMS0xLjY0LDEuNzhsLS40MS4yOWEyMi4wNywyMi4wNywwLDAsMS01Ljc4LDMsMzAuNDIsMzAuNDIsMCwwLDEtNS42NywxLjYyLDM3LjgyLDM3LjgyLDAsMCwxLTUuNjkuNzFjLTEsMC0xLjkuMTgtMi44NS4yNmwtMi44NS4yNHEtNS43Mi41MS0xMS40OCwxLjFjLTMuODQuNC03LjcxLjgyLTExLjU4LDEuNGExMTIuMzQsMTEyLjM0LDAsMCwwLTIyLjk0LDUuNjFjLTMuNzIsMS4zNS03LjM0LDMtMTAuOTQsNC42NHMtNy4xNCwzLjUxLTEwLjYsNS41MUExNTEuNiwxNTEuNiwwLDAsMCw2OC41Niw4N0M2Ny4yMyw4OC40OCw2Niw5MCw2NC42NCw5MS41NnMtMi41MSwzLjE1LTMuNzUsNC43M2wtMy41NCw0LjljLTEuMTMsMS42Ni0yLjIzLDMuMzUtMy4zMyw1YTEyNywxMjcsMCwwLDAtMTAuOTMsMjEuNDksMS41OCwxLjU4LDAsMSwxLTMtMS4xNVM0MC4xOSwxMjYuNDcsNDAuMjEsMTI2LjQzWiIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgd2lkdGg9IjM5MiIgaGVpZ2h0PSIzOTIiLz48L2c+PC9nPjwvc3ZnPg==', _0x27ac96['style']['position'] = 'absolute', _0x27ac96['style']['left'] = '50%', _0x27ac96['style']['top'] = '50%', _0x27ac96['style']['width'] = '18vw', _0x27ac96['style']['height'] = '18vw', _0x27ac96['style']['marginLeft'] = '-9vw', _0x27ac96['style']['marginTop'] = '-9vw', _0x27ac96['style']['animation'] = 'spin1\x200.75s\x20infinite\x20linear', _0x27ac96['style']['webkitAnimation'] = 'spin1\x200.75s\x20infinite\x20linear', _0x27ac96['style']['transformOrigin'] = '50%\x2050%', _0x27ac96['style']['webkitTransformOrigin'] = '50%\x2050%', this['_loadingDiv']['appendChild'](_0xefd94b), this['_loadingDiv']['appendChild'](_0x27ac96), this['_resizeLoadingUI'](), window['addEventListener']('resize', this['_resizeLoadingUI']), this['_loadingDiv']['style']['backgroundColor'] = this['_loadingDivBackgroundColor'], document['body']['appendChild'](this['_loadingDiv']), this['_loadingDiv']['style']['opacity'] = '1'; } } , _0x1f1410['prototype']['hideLoadingUI'] = function() { var _0x5d62a1 = this; if (this['_loadingDiv']) { this['_loadingDiv']['style']['opacity'] = '0', this['_loadingDiv']['addEventListener']('transitionend', function() { _0x5d62a1['_loadingDiv'] && (_0x5d62a1['_loadingDiv']['parentElement'] && _0x5d62a1['_loadingDiv']['parentElement']['removeChild'](_0x5d62a1['_loadingDiv']), window['removeEventListener']('resize', _0x5d62a1['_resizeLoadingUI']), _0x5d62a1['_loadingDiv'] = null); }); } } , Object['defineProperty'](_0x1f1410['prototype'], 'loadingUIText', { 'get': function() { return this['_loadingText']; }, 'set': function(_0x204b6c) { this['_loadingText'] = _0x204b6c, this['_loadingTextDiv'] && (this['_loadingTextDiv']['innerHTML'] = this['_loadingText']); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1f1410['prototype'], 'loadingUIBackgroundColor', { 'get': function() { return this['_loadingDivBackgroundColor']; }, 'set': function(_0x2060c1) { this['_loadingDivBackgroundColor'] = _0x2060c1, this['_loadingDiv'] && (this['_loadingDiv']['style']['backgroundColor'] = this['_loadingDivBackgroundColor']); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1f1410['DefaultLogoUrl'] = '', _0x1f1410['DefaultSpinnerUrl'] = '', _0x1f1410; }(); _0x3647a9['b']['DefaultLoadingScreenFactory'] = function(_0x87d905) { return new _0x217c1d(_0x87d905); } ; var _0x2328b6 = _0x59bd00(0x39) , _0x20b869 = _0x59bd00(0x42) , _0x52deea = function() { function _0x3e4ab1() {} return _0x3e4ab1['ConvertPanoramaToCubemap'] = function(_0x800bcd, _0x1744a6, _0x119532, _0x1b8ae2) { if (!_0x800bcd) throw 'ConvertPanoramaToCubemap:\x20input\x20cannot\x20be\x20null'; if (_0x800bcd['length'] != _0x1744a6 * _0x119532 * 0x3) throw 'ConvertPanoramaToCubemap:\x20input\x20size\x20is\x20wrong'; return { 'front': this['CreateCubemapTexture'](_0x1b8ae2, this['FACE_FRONT'], _0x800bcd, _0x1744a6, _0x119532), 'back': this['CreateCubemapTexture'](_0x1b8ae2, this['FACE_BACK'], _0x800bcd, _0x1744a6, _0x119532), 'left': this['CreateCubemapTexture'](_0x1b8ae2, this['FACE_LEFT'], _0x800bcd, _0x1744a6, _0x119532), 'right': this['CreateCubemapTexture'](_0x1b8ae2, this['FACE_RIGHT'], _0x800bcd, _0x1744a6, _0x119532), 'up': this['CreateCubemapTexture'](_0x1b8ae2, this['FACE_UP'], _0x800bcd, _0x1744a6, _0x119532), 'down': this['CreateCubemapTexture'](_0x1b8ae2, this['FACE_DOWN'], _0x800bcd, _0x1744a6, _0x119532), 'size': _0x1b8ae2, 'type': _0x24e342['a']['TEXTURETYPE_FLOAT'], 'format': _0x24e342['a']['TEXTUREFORMAT_RGB'], 'gammaSpace': !0x1 }; } , _0x3e4ab1['CreateCubemapTexture'] = function(_0x2a103a, _0x204da7, _0x217b67, _0x3d0670, _0x43b5a4) { for (var _0x266a94 = new ArrayBuffer(_0x2a103a * _0x2a103a * 0x4 * 0x3), _0x3e7b74 = new Float32Array(_0x266a94), _0x3ee90f = _0x204da7[0x1]['subtract'](_0x204da7[0x0])['scale'](0x1 / _0x2a103a), _0x271790 = _0x204da7[0x3]['subtract'](_0x204da7[0x2])['scale'](0x1 / _0x2a103a), _0x59307a = 0x1 / _0x2a103a, _0x544398 = 0x0, _0x2033be = 0x0; _0x2033be < _0x2a103a; _0x2033be++) { for (var _0x2c1c4d = _0x204da7[0x0], _0x2f711a = _0x204da7[0x2], _0x15290f = 0x0; _0x15290f < _0x2a103a; _0x15290f++) { var _0x19abb8 = _0x2f711a['subtract'](_0x2c1c4d)['scale'](_0x544398)['add'](_0x2c1c4d); _0x19abb8['normalize'](); var _0x57dba4 = this['CalcProjectionSpherical'](_0x19abb8, _0x217b67, _0x3d0670, _0x43b5a4); _0x3e7b74[_0x2033be * _0x2a103a * 0x3 + 0x3 * _0x15290f + 0x0] = _0x57dba4['r'], _0x3e7b74[_0x2033be * _0x2a103a * 0x3 + 0x3 * _0x15290f + 0x1] = _0x57dba4['g'], _0x3e7b74[_0x2033be * _0x2a103a * 0x3 + 0x3 * _0x15290f + 0x2] = _0x57dba4['b'], _0x2c1c4d = _0x2c1c4d['add'](_0x3ee90f), _0x2f711a = _0x2f711a['add'](_0x271790); } _0x544398 += _0x59307a; } return _0x3e7b74; } , _0x3e4ab1['CalcProjectionSpherical'] = function(_0x3f94ce, _0x59de80, _0x31580b, _0x40734f) { for (var _0x49ca2f = Math['atan2'](_0x3f94ce['z'], _0x3f94ce['x']), _0x8c2316 = Math['acos'](_0x3f94ce['y']); _0x49ca2f < -Math['PI']; ) _0x49ca2f += 0x2 * Math['PI']; for (; _0x49ca2f > Math['PI']; ) _0x49ca2f -= 0x2 * Math['PI']; var _0x29b0da = _0x49ca2f / Math['PI'] , _0x424b26 = _0x8c2316 / Math['PI']; _0x29b0da = 0.5 * _0x29b0da + 0.5; var _0x504ff1 = Math['round'](_0x29b0da * _0x31580b); _0x504ff1 < 0x0 ? _0x504ff1 = 0x0 : _0x504ff1 >= _0x31580b && (_0x504ff1 = _0x31580b - 0x1); var _0x2ac060 = Math['round'](_0x424b26 * _0x40734f); _0x2ac060 < 0x0 ? _0x2ac060 = 0x0 : _0x2ac060 >= _0x40734f && (_0x2ac060 = _0x40734f - 0x1); var _0x28821a = _0x40734f - _0x2ac060 - 0x1; return { 'r': _0x59de80[_0x28821a * _0x31580b * 0x3 + 0x3 * _0x504ff1 + 0x0], 'g': _0x59de80[_0x28821a * _0x31580b * 0x3 + 0x3 * _0x504ff1 + 0x1], 'b': _0x59de80[_0x28821a * _0x31580b * 0x3 + 0x3 * _0x504ff1 + 0x2] }; } , _0x3e4ab1['FACE_FRONT'] = [new _0x47d24f['x'](-0x1,-0x1,-0x1), new _0x47d24f['x'](0x1,-0x1,-0x1), new _0x47d24f['x'](-0x1,0x1,-0x1), new _0x47d24f['x'](0x1,0x1,-0x1)], _0x3e4ab1['FACE_BACK'] = [new _0x47d24f['x'](0x1,-0x1,0x1), new _0x47d24f['x'](-0x1,-0x1,0x1), new _0x47d24f['x'](0x1,0x1,0x1), new _0x47d24f['x'](-0x1,0x1,0x1)], _0x3e4ab1['FACE_RIGHT'] = [new _0x47d24f['x'](0x1,-0x1,-0x1), new _0x47d24f['x'](0x1,-0x1,0x1), new _0x47d24f['x'](0x1,0x1,-0x1), new _0x47d24f['x'](0x1,0x1,0x1)], _0x3e4ab1['FACE_LEFT'] = [new _0x47d24f['x'](-0x1,-0x1,0x1), new _0x47d24f['x'](-0x1,-0x1,-0x1), new _0x47d24f['x'](-0x1,0x1,0x1), new _0x47d24f['x'](-0x1,0x1,-0x1)], _0x3e4ab1['FACE_DOWN'] = [new _0x47d24f['x'](-0x1,0x1,-0x1), new _0x47d24f['x'](0x1,0x1,-0x1), new _0x47d24f['x'](-0x1,0x1,0x1), new _0x47d24f['x'](0x1,0x1,0x1)], _0x3e4ab1['FACE_UP'] = [new _0x47d24f['x'](-0x1,-0x1,0x1), new _0x47d24f['x'](0x1,-0x1,0x1), new _0x47d24f['x'](-0x1,-0x1,-0x1), new _0x47d24f['x'](0x1,-0x1,-0x1)], _0x3e4ab1; }() , _0x32da9b = function() { function _0x56c6ee() {} return _0x56c6ee['Ldexp'] = function(_0x54e032, _0x440861) { return _0x440861 > 0x3ff ? _0x54e032 * Math['pow'](0x2, 0x3ff) * Math['pow'](0x2, _0x440861 - 0x3ff) : _0x440861 < -0x432 ? _0x54e032 * Math['pow'](0x2, -0x432) * Math['pow'](0x2, _0x440861 + 0x432) : _0x54e032 * Math['pow'](0x2, _0x440861); } , _0x56c6ee['Rgbe2float'] = function(_0xe78650, _0x3c7f03, _0x43d49a, _0x576aea, _0x34aff9, _0x3c2051) { _0x34aff9 > 0x0 ? (_0x34aff9 = this['Ldexp'](0x1, _0x34aff9 - 0x88), _0xe78650[_0x3c2051 + 0x0] = _0x3c7f03 * _0x34aff9, _0xe78650[_0x3c2051 + 0x1] = _0x43d49a * _0x34aff9, _0xe78650[_0x3c2051 + 0x2] = _0x576aea * _0x34aff9) : (_0xe78650[_0x3c2051 + 0x0] = 0x0, _0xe78650[_0x3c2051 + 0x1] = 0x0, _0xe78650[_0x3c2051 + 0x2] = 0x0); } , _0x56c6ee['readStringLine'] = function(_0x4d213b, _0x20a481) { for (var _0x118ab6 = '', _0x334278 = '', _0x16bf01 = _0x20a481; _0x16bf01 < _0x4d213b['length'] - _0x20a481 && '\x0a' != (_0x334278 = String['fromCharCode'](_0x4d213b[_0x16bf01])); _0x16bf01++) _0x118ab6 += _0x334278; return _0x118ab6; } , _0x56c6ee['RGBE_ReadHeader'] = function(_0x303826) { var _0x39bbb1, _0x37577a, _0x5cacd1 = this['readStringLine'](_0x303826, 0x0); if ('#' != _0x5cacd1[0x0] || '?' != _0x5cacd1[0x1]) throw 'Bad\x20HDR\x20Format.'; var _0x52e0c1 = !0x1 , _0x24124b = !0x1 , _0x19bc3c = 0x0; do { _0x19bc3c += _0x5cacd1['length'] + 0x1, 'FORMAT=32-bit_rle_rgbe' == (_0x5cacd1 = this['readStringLine'](_0x303826, _0x19bc3c)) ? _0x24124b = !0x0 : 0x0 == _0x5cacd1['length'] && (_0x52e0c1 = !0x0); } while (!_0x52e0c1); if (!_0x24124b) throw 'HDR\x20Bad\x20header\x20format,\x20unsupported\x20FORMAT'; _0x19bc3c += _0x5cacd1['length'] + 0x1, _0x5cacd1 = this['readStringLine'](_0x303826, _0x19bc3c); var _0x2f7da2 = /^\-Y (.*) \+X (.*)$/g['exec'](_0x5cacd1); if (!_0x2f7da2 || _0x2f7da2['length'] < 0x3) throw 'HDR\x20Bad\x20header\x20format,\x20no\x20size'; if (_0x37577a = parseInt(_0x2f7da2[0x2]), _0x39bbb1 = parseInt(_0x2f7da2[0x1]), _0x37577a < 0x8 || _0x37577a > 0x7fff) throw 'HDR\x20Bad\x20header\x20format,\x20unsupported\x20size'; return { 'height': _0x39bbb1, 'width': _0x37577a, 'dataPosition': _0x19bc3c += _0x5cacd1['length'] + 0x1 }; } , _0x56c6ee['GetCubeMapTextureData'] = function(_0x37c5f1, _0x914448) { var _0x20a5a9 = new Uint8Array(_0x37c5f1) , _0xb4cb37 = this['RGBE_ReadHeader'](_0x20a5a9) , _0x35d291 = this['RGBE_ReadPixels_RLE'](_0x20a5a9, _0xb4cb37); return _0x52deea['ConvertPanoramaToCubemap'](_0x35d291, _0xb4cb37['width'], _0xb4cb37['height'], _0x914448); } , _0x56c6ee['RGBE_ReadPixels'] = function(_0x88bce3, _0x1a9c41) { return this['RGBE_ReadPixels_RLE'](_0x88bce3, _0x1a9c41); } , _0x56c6ee['RGBE_ReadPixels_RLE'] = function(_0x55a995, _0x113084) { for (var _0x5adc4c, _0x2f432c, _0x699216, _0x3d04e3, _0x30287b, _0x203c8c = _0x113084['height'], _0x524f18 = _0x113084['width'], _0x8f0be0 = _0x113084['dataPosition'], _0x25869c = 0x0, _0x34f734 = 0x0, _0x3b5f63 = 0x0, _0xb0d6d = new ArrayBuffer(0x4 * _0x524f18), _0xfef64d = new Uint8Array(_0xb0d6d), _0x3fe3e2 = new ArrayBuffer(_0x113084['width'] * _0x113084['height'] * 0x4 * 0x3), _0xb6601b = new Float32Array(_0x3fe3e2); _0x203c8c > 0x0; ) { if (_0x5adc4c = _0x55a995[_0x8f0be0++], _0x2f432c = _0x55a995[_0x8f0be0++], _0x699216 = _0x55a995[_0x8f0be0++], _0x3d04e3 = _0x55a995[_0x8f0be0++], 0x2 != _0x5adc4c || 0x2 != _0x2f432c || 0x80 & _0x699216) throw 'HDR\x20Bad\x20header\x20format,\x20not\x20RLE'; if ((_0x699216 << 0x8 | _0x3d04e3) != _0x524f18) throw 'HDR\x20Bad\x20header\x20format,\x20wrong\x20scan\x20line\x20width'; for (_0x25869c = 0x0, _0x3b5f63 = 0x0; _0x3b5f63 < 0x4; _0x3b5f63++) for (_0x34f734 = (_0x3b5f63 + 0x1) * _0x524f18; _0x25869c < _0x34f734; ) if (_0x5adc4c = _0x55a995[_0x8f0be0++], _0x2f432c = _0x55a995[_0x8f0be0++], _0x5adc4c > 0x80) { if (0x0 == (_0x30287b = _0x5adc4c - 0x80) || _0x30287b > _0x34f734 - _0x25869c) throw 'HDR\x20Bad\x20Format,\x20bad\x20scanline\x20data\x20(run)'; for (; _0x30287b-- > 0x0; ) _0xfef64d[_0x25869c++] = _0x2f432c; } else { if (0x0 == (_0x30287b = _0x5adc4c) || _0x30287b > _0x34f734 - _0x25869c) throw 'HDR\x20Bad\x20Format,\x20bad\x20scanline\x20data\x20(non-run)'; if (_0xfef64d[_0x25869c++] = _0x2f432c, --_0x30287b > 0x0) for (var _0x49559c = 0x0; _0x49559c < _0x30287b; _0x49559c++) _0xfef64d[_0x25869c++] = _0x55a995[_0x8f0be0++]; } for (_0x3b5f63 = 0x0; _0x3b5f63 < _0x524f18; _0x3b5f63++) _0x5adc4c = _0xfef64d[_0x3b5f63], _0x2f432c = _0xfef64d[_0x3b5f63 + _0x524f18], _0x699216 = _0xfef64d[_0x3b5f63 + 0x2 * _0x524f18], _0x3d04e3 = _0xfef64d[_0x3b5f63 + 0x3 * _0x524f18], this['Rgbe2float'](_0xb6601b, _0x5adc4c, _0x2f432c, _0x699216, _0x3d04e3, (_0x113084['height'] - _0x203c8c) * _0x524f18 * 0x3 + 0x3 * _0x3b5f63); _0x203c8c--; } return _0xb6601b; } , _0x56c6ee; }() , _0x52697b = function(_0x3ff4b9) { function _0x1c99bd(_0x1bfdcb, _0x3fad82, _0x5ac2a8, _0x279ba9, _0x499b2c, _0x404e33, _0x32fead, _0x55f375, _0x52fcfb) { void 0x0 === _0x279ba9 && (_0x279ba9 = !0x1), void 0x0 === _0x499b2c && (_0x499b2c = !0x0), void 0x0 === _0x404e33 && (_0x404e33 = !0x1), void 0x0 === _0x32fead && (_0x32fead = !0x1), void 0x0 === _0x55f375 && (_0x55f375 = null), void 0x0 === _0x52fcfb && (_0x52fcfb = null); var _0x183bfb = _0x3ff4b9['call'](this, _0x3fad82) || this; return _0x183bfb['_generateHarmonics'] = !0x0, _0x183bfb['_onLoad'] = null, _0x183bfb['_onError'] = null, _0x183bfb['coordinatesMode'] = _0x11d14a['a']['CUBIC_MODE'], _0x183bfb['_isBlocking'] = !0x0, _0x183bfb['_rotationY'] = 0x0, _0x183bfb['boundingBoxPosition'] = _0x47d24f['x']['Zero'](), _0x1bfdcb ? (_0x183bfb['name'] = _0x1bfdcb, _0x183bfb['url'] = _0x1bfdcb, _0x183bfb['hasAlpha'] = !0x1, _0x183bfb['isCube'] = !0x0, _0x183bfb['_textureMatrix'] = _0x47d24f['j']['Identity'](), _0x183bfb['_onLoad'] = _0x55f375, _0x183bfb['_onError'] = _0x52fcfb, _0x183bfb['gammaSpace'] = _0x404e33, _0x183bfb['_noMipmap'] = _0x279ba9, _0x183bfb['_size'] = _0x5ac2a8, _0x183bfb['_texture'] = _0x183bfb['_getFromCache'](_0x1bfdcb, _0x183bfb['_noMipmap']), _0x183bfb['_texture'] ? _0x55f375 && (_0x183bfb['_texture']['isReady'] ? _0x1eb50e['h']['SetImmediate'](function() { return _0x55f375(); }) : _0x183bfb['_texture']['onLoadedObservable']['add'](_0x55f375)) : _0x3fad82['useDelayedTextureLoading'] ? _0x183bfb['delayLoadState'] = _0x3647a9['b']['DELAYLOADSTATE_NOTLOADED'] : _0x183bfb['loadTexture'](), _0x183bfb) : _0x183bfb; } return _0x420e5b['d'](_0x1c99bd, _0x3ff4b9), Object['defineProperty'](_0x1c99bd['prototype'], 'isBlocking', { 'get': function() { return this['_isBlocking']; }, 'set': function(_0x299e48) { this['_isBlocking'] = _0x299e48; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1c99bd['prototype'], 'rotationY', { 'get': function() { return this['_rotationY']; }, 'set': function(_0x16b6b0) { this['_rotationY'] = _0x16b6b0, this['setReflectionTextureMatrix'](_0x47d24f['j']['RotationY'](this['_rotationY'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1c99bd['prototype'], 'boundingBoxSize', { 'get': function() { return this['_boundingBoxSize']; }, 'set': function(_0x278a60) { if (!this['_boundingBoxSize'] || !this['_boundingBoxSize']['equals'](_0x278a60)) { this['_boundingBoxSize'] = _0x278a60; var _0x13031e = this['getScene'](); _0x13031e && _0x13031e['markAllMaterialsAsDirty'](_0x24e342['a']['MATERIAL_TextureDirtyFlag']); } }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1c99bd['prototype']['getClassName'] = function() { return 'HDRCubeTexture'; } , _0x1c99bd['prototype']['loadTexture'] = function() { var _0x440dec = this , _0x25cfb1 = this['getScene'](); _0x25cfb1 && (this['_texture'] = _0x25cfb1['getEngine']()['createRawCubeTextureFromUrl'](this['url'], _0x25cfb1, this['_size'], _0x3647a9['b']['TEXTUREFORMAT_RGB'], _0x25cfb1['getEngine']()['getCaps']()['textureFloat'] ? _0x3647a9['b']['TEXTURETYPE_FLOAT'] : _0x3647a9['b']['TEXTURETYPE_UNSIGNED_INT'], this['_noMipmap'], function(_0x54ba37) { _0x440dec['lodGenerationOffset'] = 0x0, _0x440dec['lodGenerationScale'] = 0.8; var _0x4dcb1a = _0x440dec['getScene'](); if (!_0x4dcb1a) return null; var _0x59b819 = _0x32da9b['GetCubeMapTextureData'](_0x54ba37, _0x440dec['_size']); if (_0x440dec['_generateHarmonics']) { var _0x1f3963 = _0x11fa1f['a']['ConvertCubeMapToSphericalPolynomial'](_0x59b819); _0x440dec['sphericalPolynomial'] = _0x1f3963; } for (var _0x46eb00 = [], _0x872825 = null, _0x243b6d = 0x0; _0x243b6d < 0x6; _0x243b6d++) { if (!_0x4dcb1a['getEngine']()['getCaps']()['textureFloat']) { var _0x133923 = new ArrayBuffer(_0x440dec['_size'] * _0x440dec['_size'] * 0x3); _0x872825 = new Uint8Array(_0x133923); } var _0x2ade07 = _0x59b819[_0x1c99bd['_facesMapping'][_0x243b6d]]; if (_0x440dec['gammaSpace'] || _0x872825) for (var _0x197d6f = 0x0; _0x197d6f < _0x440dec['_size'] * _0x440dec['_size']; _0x197d6f++) if (_0x440dec['gammaSpace'] && (_0x2ade07[0x3 * _0x197d6f + 0x0] = Math['pow'](_0x2ade07[0x3 * _0x197d6f + 0x0], _0x47d24f['u']), _0x2ade07[0x3 * _0x197d6f + 0x1] = Math['pow'](_0x2ade07[0x3 * _0x197d6f + 0x1], _0x47d24f['u']), _0x2ade07[0x3 * _0x197d6f + 0x2] = Math['pow'](_0x2ade07[0x3 * _0x197d6f + 0x2], _0x47d24f['u'])), _0x872825) { var _0x562b33 = Math['max'](0xff * _0x2ade07[0x3 * _0x197d6f + 0x0], 0x0) , _0x5228ed = Math['max'](0xff * _0x2ade07[0x3 * _0x197d6f + 0x1], 0x0) , _0x27b391 = Math['max'](0xff * _0x2ade07[0x3 * _0x197d6f + 0x2], 0x0) , _0x54984f = Math['max'](Math['max'](_0x562b33, _0x5228ed), _0x27b391); if (_0x54984f > 0xff) { var _0x557a32 = 0xff / _0x54984f; _0x562b33 *= _0x557a32, _0x5228ed *= _0x557a32, _0x27b391 *= _0x557a32; } _0x872825[0x3 * _0x197d6f + 0x0] = _0x562b33, _0x872825[0x3 * _0x197d6f + 0x1] = _0x5228ed, _0x872825[0x3 * _0x197d6f + 0x2] = _0x27b391; } _0x872825 ? _0x46eb00['push'](_0x872825) : _0x46eb00['push'](_0x2ade07); } return _0x46eb00; }, null, this['_onLoad'], this['_onError'])); } , _0x1c99bd['prototype']['clone'] = function() { var _0x1553db = this['getScene'](); if (!_0x1553db) return this; var _0x2d784b = new _0x1c99bd(this['url'],_0x1553db,this['_size'],this['_noMipmap'],this['_generateHarmonics'],this['gammaSpace']); return _0x2d784b['level'] = this['level'], _0x2d784b['wrapU'] = this['wrapU'], _0x2d784b['wrapV'] = this['wrapV'], _0x2d784b['coordinatesIndex'] = this['coordinatesIndex'], _0x2d784b['coordinatesMode'] = this['coordinatesMode'], _0x2d784b; } , _0x1c99bd['prototype']['delayLoad'] = function() { this['delayLoadState'] === _0x3647a9['b']['DELAYLOADSTATE_NOTLOADED'] && (this['delayLoadState'] = _0x3647a9['b']['DELAYLOADSTATE_LOADED'], this['_texture'] = this['_getFromCache'](this['url'], this['_noMipmap']), this['_texture'] || this['loadTexture']()); } , _0x1c99bd['prototype']['getReflectionTextureMatrix'] = function() { return this['_textureMatrix']; } , _0x1c99bd['prototype']['setReflectionTextureMatrix'] = function(_0x415857) { var _0x340459 = this; this['_textureMatrix'] = _0x415857, _0x415857['updateFlag'] !== this['_textureMatrix']['updateFlag'] && _0x415857['isIdentity']() !== this['_textureMatrix']['isIdentity']() && this['getScene']()['markAllMaterialsAsDirty'](_0x24e342['a']['MATERIAL_TextureDirtyFlag'], function(_0x23ec79) { return -0x1 !== _0x23ec79['getActiveTextures']()['indexOf'](_0x340459); }); } , _0x1c99bd['Parse'] = function(_0x5c817d, _0x294ca2, _0x1f5b38) { var _0x2144d5 = null; return _0x5c817d['name'] && !_0x5c817d['isRenderTarget'] && ((_0x2144d5 = new _0x1c99bd(_0x1f5b38 + _0x5c817d['name'],_0x294ca2,_0x5c817d['size'],_0x5c817d['noMipmap'],_0x5c817d['generateHarmonics'],_0x5c817d['useInGammaSpace']))['name'] = _0x5c817d['name'], _0x2144d5['hasAlpha'] = _0x5c817d['hasAlpha'], _0x2144d5['level'] = _0x5c817d['level'], _0x2144d5['coordinatesMode'] = _0x5c817d['coordinatesMode'], _0x2144d5['isBlocking'] = _0x5c817d['isBlocking']), _0x2144d5 && (_0x5c817d['boundingBoxPosition'] && (_0x2144d5['boundingBoxPosition'] = _0x47d24f['x']['FromArray'](_0x5c817d['boundingBoxPosition'])), _0x5c817d['boundingBoxSize'] && (_0x2144d5['boundingBoxSize'] = _0x47d24f['x']['FromArray'](_0x5c817d['boundingBoxSize'])), _0x5c817d['rotationY'] && (_0x2144d5['rotationY'] = _0x5c817d['rotationY'])), _0x2144d5; } , _0x1c99bd['prototype']['serialize'] = function() { if (!this['name']) return null; var _0xc504ee = {}; return _0xc504ee['name'] = this['name'], _0xc504ee['hasAlpha'] = this['hasAlpha'], _0xc504ee['isCube'] = !0x0, _0xc504ee['level'] = this['level'], _0xc504ee['size'] = this['_size'], _0xc504ee['coordinatesMode'] = this['coordinatesMode'], _0xc504ee['useInGammaSpace'] = this['gammaSpace'], _0xc504ee['generateHarmonics'] = this['_generateHarmonics'], _0xc504ee['customType'] = 'BABYLON.HDRCubeTexture', _0xc504ee['noMipmap'] = this['_noMipmap'], _0xc504ee['isBlocking'] = this['_isBlocking'], _0xc504ee['rotationY'] = this['_rotationY'], _0xc504ee; } , _0x1c99bd['_facesMapping'] = ['right', 'left', 'up', 'down', 'front', 'back'], _0x1c99bd; }(_0x134235['a']); _0x376b99['a']['RegisteredTypes']['BABYLON.HDRCubeTexture'] = _0x52697b; var _0x38b295 = function() { function _0x5c284d(_0x3226b3, _0xf30708, _0xa20a47) { void 0x0 === _0xf30708 && (_0xf30708 = 0x0), void 0x0 === _0xa20a47 && (_0xa20a47 = null), this['name'] = _0x3226b3, this['animations'] = new Array(), this['_positions'] = null, this['_normals'] = null, this['_tangents'] = null, this['onInfluenceChanged'] = new _0x2dbec2['c'](), this['_onDataLayoutChanged'] = new _0x2dbec2['c'](), this['_animationPropertiesOverride'] = null, this['_scene'] = _0xa20a47 || _0x48707b['a']['LastCreatedScene'], this['influence'] = _0xf30708; } return Object['defineProperty'](_0x5c284d['prototype'], 'influence', { 'get': function() { return this['_influence']; }, 'set': function(_0x1c17d0) { if (this['_influence'] !== _0x1c17d0) { var _0x2c6347 = this['_influence']; this['_influence'] = _0x1c17d0, this['onInfluenceChanged']['hasObservers'] && this['onInfluenceChanged']['notifyObservers'](0x0 === _0x2c6347 || 0x0 === _0x1c17d0); } }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5c284d['prototype'], 'animationPropertiesOverride', { 'get': function() { return !this['_animationPropertiesOverride'] && this['_scene'] ? this['_scene']['animationPropertiesOverride'] : this['_animationPropertiesOverride']; }, 'set': function(_0x4cb26f) { this['_animationPropertiesOverride'] = _0x4cb26f; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5c284d['prototype'], 'hasPositions', { 'get': function() { return !!this['_positions']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5c284d['prototype'], 'hasNormals', { 'get': function() { return !!this['_normals']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5c284d['prototype'], 'hasTangents', { 'get': function() { return !!this['_tangents']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5c284d['prototype']['setPositions'] = function(_0x430f70) { var _0x2e2b42 = this['hasPositions']; this['_positions'] = _0x430f70, _0x2e2b42 !== this['hasPositions'] && this['_onDataLayoutChanged']['notifyObservers'](void 0x0); } , _0x5c284d['prototype']['getPositions'] = function() { return this['_positions']; } , _0x5c284d['prototype']['setNormals'] = function(_0x3ed4c) { var _0x5ca11b = this['hasNormals']; this['_normals'] = _0x3ed4c, _0x5ca11b !== this['hasNormals'] && this['_onDataLayoutChanged']['notifyObservers'](void 0x0); } , _0x5c284d['prototype']['getNormals'] = function() { return this['_normals']; } , _0x5c284d['prototype']['setTangents'] = function(_0x3ad7d4) { var _0x374d48 = this['hasTangents']; this['_tangents'] = _0x3ad7d4, _0x374d48 !== this['hasTangents'] && this['_onDataLayoutChanged']['notifyObservers'](void 0x0); } , _0x5c284d['prototype']['getTangents'] = function() { return this['_tangents']; } , _0x5c284d['prototype']['serialize'] = function() { var _0x387f76 = {}; return _0x387f76['name'] = this['name'], _0x387f76['influence'] = this['influence'], _0x387f76['positions'] = Array['prototype']['slice']['call'](this['getPositions']()), null != this['id'] && (_0x387f76['id'] = this['id']), this['hasNormals'] && (_0x387f76['normals'] = Array['prototype']['slice']['call'](this['getNormals']())), this['hasTangents'] && (_0x387f76['tangents'] = Array['prototype']['slice']['call'](this['getTangents']())), _0x3d4764['a']['AppendSerializedAnimations'](this, _0x387f76), _0x387f76; } , _0x5c284d['prototype']['getClassName'] = function() { return 'MorphTarget'; } , _0x5c284d['Parse'] = function(_0x20f99f) { var _0x3db845 = new _0x5c284d(_0x20f99f['name'],_0x20f99f['influence']); if (_0x3db845['setPositions'](_0x20f99f['positions']), null != _0x20f99f['id'] && (_0x3db845['id'] = _0x20f99f['id']), _0x20f99f['normals'] && _0x3db845['setNormals'](_0x20f99f['normals']), _0x20f99f['tangents'] && _0x3db845['setTangents'](_0x20f99f['tangents']), _0x20f99f['animations']) for (var _0x35234f = 0x0; _0x35234f < _0x20f99f['animations']['length']; _0x35234f++) { var _0x3a5b21 = _0x20f99f['animations'][_0x35234f] , _0x2b0a2e = _0x376b99['a']['GetClass']('BABYLON.Animation'); _0x2b0a2e && _0x3db845['animations']['push'](_0x2b0a2e['Parse'](_0x3a5b21)); } return _0x3db845; } , _0x5c284d['FromMesh'] = function(_0x1c18c9, _0x2eab83, _0x13f59e) { _0x2eab83 || (_0x2eab83 = _0x1c18c9['name']); var _0x47fa3d = new _0x5c284d(_0x2eab83,_0x13f59e,_0x1c18c9['getScene']()); return _0x47fa3d['setPositions'](_0x1c18c9['getVerticesData'](_0x4209f7['b']['PositionKind'])), _0x1c18c9['isVerticesDataPresent'](_0x4209f7['b']['NormalKind']) && _0x47fa3d['setNormals'](_0x1c18c9['getVerticesData'](_0x4209f7['b']['NormalKind'])), _0x1c18c9['isVerticesDataPresent'](_0x4209f7['b']['TangentKind']) && _0x47fa3d['setTangents'](_0x1c18c9['getVerticesData'](_0x4209f7['b']['TangentKind'])), _0x47fa3d; } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x5c284d['prototype'], 'id', void 0x0), _0x5c284d; }() , _0x3d8243 = function() { function _0x31f00a(_0x4a3ba1) { void 0x0 === _0x4a3ba1 && (_0x4a3ba1 = null), this['_targets'] = new Array(), this['_targetInfluenceChangedObservers'] = new Array(), this['_targetDataLayoutChangedObservers'] = new Array(), this['_activeTargets'] = new _0x435d55['a'](0x10), this['_supportsNormals'] = !0x1, this['_supportsTangents'] = !0x1, this['_vertexCount'] = 0x0, this['_uniqueId'] = 0x0, this['_tempInfluences'] = new Array(), _0x4a3ba1 || (_0x4a3ba1 = _0x48707b['a']['LastCreatedScene']), this['_scene'] = _0x4a3ba1, this['_scene'] && (this['_scene']['morphTargetManagers']['push'](this), this['_uniqueId'] = this['_scene']['getUniqueId']()); } return Object['defineProperty'](_0x31f00a['prototype'], 'uniqueId', { 'get': function() { return this['_uniqueId']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31f00a['prototype'], 'vertexCount', { 'get': function() { return this['_vertexCount']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31f00a['prototype'], 'supportsNormals', { 'get': function() { return this['_supportsNormals']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31f00a['prototype'], 'supportsTangents', { 'get': function() { return this['_supportsTangents']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31f00a['prototype'], 'numTargets', { 'get': function() { return this['_targets']['length']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31f00a['prototype'], 'numInfluencers', { 'get': function() { return this['_activeTargets']['length']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x31f00a['prototype'], 'influences', { 'get': function() { return this['_influences']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x31f00a['prototype']['getActiveTarget'] = function(_0x269709) { return this['_activeTargets']['data'][_0x269709]; } , _0x31f00a['prototype']['getTarget'] = function(_0x4e32a5) { return this['_targets'][_0x4e32a5]; } , _0x31f00a['prototype']['addTarget'] = function(_0x1f1fa1) { var _0x5d4597 = this; this['_targets']['push'](_0x1f1fa1), this['_targetInfluenceChangedObservers']['push'](_0x1f1fa1['onInfluenceChanged']['add'](function(_0x449996) { _0x5d4597['_syncActiveTargets'](_0x449996); })), this['_targetDataLayoutChangedObservers']['push'](_0x1f1fa1['_onDataLayoutChanged']['add'](function() { _0x5d4597['_syncActiveTargets'](!0x0); })), this['_syncActiveTargets'](!0x0); } , _0x31f00a['prototype']['removeTarget'] = function(_0x7ee43e) { var _0x5d755f = this['_targets']['indexOf'](_0x7ee43e); _0x5d755f >= 0x0 && (this['_targets']['splice'](_0x5d755f, 0x1), _0x7ee43e['onInfluenceChanged']['remove'](this['_targetInfluenceChangedObservers']['splice'](_0x5d755f, 0x1)[0x0]), _0x7ee43e['_onDataLayoutChanged']['remove'](this['_targetDataLayoutChangedObservers']['splice'](_0x5d755f, 0x1)[0x0]), this['_syncActiveTargets'](!0x0)); } , _0x31f00a['prototype']['serialize'] = function() { var _0x4cd354 = {}; _0x4cd354['id'] = this['uniqueId'], _0x4cd354['targets'] = []; for (var _0x2434b5 = 0x0, _0x219bc1 = this['_targets']; _0x2434b5 < _0x219bc1['length']; _0x2434b5++) { var _0x48adb6 = _0x219bc1[_0x2434b5]; _0x4cd354['targets']['push'](_0x48adb6['serialize']()); } return _0x4cd354; } , _0x31f00a['prototype']['_syncActiveTargets'] = function(_0x434156) { var _0x3d984b = 0x0; this['_activeTargets']['reset'](), this['_supportsNormals'] = !0x0, this['_supportsTangents'] = !0x0, this['_vertexCount'] = 0x0; for (var _0x2b97d7 = 0x0, _0x5e2956 = this['_targets']; _0x2b97d7 < _0x5e2956['length']; _0x2b97d7++) { var _0x189abf = _0x5e2956[_0x2b97d7]; if (0x0 !== _0x189abf['influence']) { this['_activeTargets']['push'](_0x189abf), this['_tempInfluences'][_0x3d984b++] = _0x189abf['influence'], this['_supportsNormals'] = this['_supportsNormals'] && _0x189abf['hasNormals'], this['_supportsTangents'] = this['_supportsTangents'] && _0x189abf['hasTangents']; var _0x1c270e = _0x189abf['getPositions'](); if (_0x1c270e) { var _0x2c2b9f = _0x1c270e['length'] / 0x3; if (0x0 === this['_vertexCount']) this['_vertexCount'] = _0x2c2b9f; else if (this['_vertexCount'] !== _0x2c2b9f) return void _0x3f98cb['a']['Error']('Incompatible\x20target.\x20Targets\x20must\x20all\x20have\x20the\x20same\x20vertices\x20count.'); } } } this['_influences'] && this['_influences']['length'] === _0x3d984b || (this['_influences'] = new Float32Array(_0x3d984b)); for (var _0x461bdc = 0x0; _0x461bdc < _0x3d984b; _0x461bdc++) this['_influences'][_0x461bdc] = this['_tempInfluences'][_0x461bdc]; _0x434156 && this['synchronize'](); } , _0x31f00a['prototype']['synchronize'] = function() { if (this['_scene']) for (var _0x301505 = 0x0, _0x317a7 = this['_scene']['meshes']; _0x301505 < _0x317a7['length']; _0x301505++) { var _0x4d605a = _0x317a7[_0x301505]; _0x4d605a['morphTargetManager'] === this && _0x4d605a['_syncGeometryWithMorphTargetManager'](); } } , _0x31f00a['Parse'] = function(_0x34c223, _0x48924e) { var _0x369ee4 = new _0x31f00a(_0x48924e); _0x369ee4['_uniqueId'] = _0x34c223['id']; for (var _0x187ae9 = 0x0, _0x196baa = _0x34c223['targets']; _0x187ae9 < _0x196baa['length']; _0x187ae9++) { var _0x645e59 = _0x196baa[_0x187ae9]; _0x369ee4['addTarget'](_0x38b295['Parse'](_0x645e59)); } return _0x369ee4; } , _0x31f00a; }() , _0x216137 = _0x59bd00(0x1b) , _0x400e0d = _0x59bd00(0x25) , _0x19d308 = function() { function _0x4dfa3b(_0x458c42, _0x2b5611) { if (void 0x0 === _0x2b5611 && (_0x2b5611 = _0x4dfa3b['DefaultPluginFactory']()), this['_physicsPlugin'] = _0x2b5611, this['_impostors'] = [], this['_joints'] = [], !this['_physicsPlugin']['isSupported']()) throw new Error('Physics\x20Engine\x20' + this['_physicsPlugin']['name'] + '\x20cannot\x20be\x20found.\x20Please\x20make\x20sure\x20it\x20is\x20included.'); _0x458c42 = _0x458c42 || new _0x47d24f['x'](0x0,-9.807,0x0), this['setGravity'](_0x458c42), this['setTimeStep'](); } return _0x4dfa3b['DefaultPluginFactory'] = function() { throw _0x2757ee['a']['WarnImport']('CannonJSPlugin'); } , _0x4dfa3b['prototype']['setGravity'] = function(_0x15e211) { this['gravity'] = _0x15e211, this['_physicsPlugin']['setGravity'](this['gravity']); } , _0x4dfa3b['prototype']['setTimeStep'] = function(_0x1bfb5e) { void 0x0 === _0x1bfb5e && (_0x1bfb5e = 0x1 / 0x3c), this['_physicsPlugin']['setTimeStep'](_0x1bfb5e); } , _0x4dfa3b['prototype']['getTimeStep'] = function() { return this['_physicsPlugin']['getTimeStep'](); } , _0x4dfa3b['prototype']['dispose'] = function() { this['_impostors']['forEach'](function(_0xcc5d8b) { _0xcc5d8b['dispose'](); }), this['_physicsPlugin']['dispose'](); } , _0x4dfa3b['prototype']['getPhysicsPluginName'] = function() { return this['_physicsPlugin']['name']; } , _0x4dfa3b['prototype']['addImpostor'] = function(_0x3d0767) { _0x3d0767['uniqueId'] = this['_impostors']['push'](_0x3d0767), _0x3d0767['parent'] || this['_physicsPlugin']['generatePhysicsBody'](_0x3d0767); } , _0x4dfa3b['prototype']['removeImpostor'] = function(_0x25422b) { var _0x3da358 = this['_impostors']['indexOf'](_0x25422b); _0x3da358 > -0x1 && (this['_impostors']['splice'](_0x3da358, 0x1)['length'] && this['getPhysicsPlugin']()['removePhysicsBody'](_0x25422b)); } , _0x4dfa3b['prototype']['addJoint'] = function(_0x44d6da, _0x120e9d, _0x5a3a77) { var _0x353d6a = { 'mainImpostor': _0x44d6da, 'connectedImpostor': _0x120e9d, 'joint': _0x5a3a77 }; _0x5a3a77['physicsPlugin'] = this['_physicsPlugin'], this['_joints']['push'](_0x353d6a), this['_physicsPlugin']['generateJoint'](_0x353d6a); } , _0x4dfa3b['prototype']['removeJoint'] = function(_0x439476, _0x109a6e, _0x4cf64d) { var _0x24e021 = this['_joints']['filter'](function(_0x293cd0) { return _0x293cd0['connectedImpostor'] === _0x109a6e && _0x293cd0['joint'] === _0x4cf64d && _0x293cd0['mainImpostor'] === _0x439476; }); _0x24e021['length'] && this['_physicsPlugin']['removeJoint'](_0x24e021[0x0]); } , _0x4dfa3b['prototype']['_step'] = function(_0x4a5193) { var _0x43a0cc = this; this['_impostors']['forEach'](function(_0x53a7a0) { _0x53a7a0['isBodyInitRequired']() && _0x43a0cc['_physicsPlugin']['generatePhysicsBody'](_0x53a7a0); }), _0x4a5193 > 0.1 ? _0x4a5193 = 0.1 : _0x4a5193 <= 0x0 && (_0x4a5193 = 0x1 / 0x3c), this['_physicsPlugin']['executeStep'](_0x4a5193, this['_impostors']); } , _0x4dfa3b['prototype']['getPhysicsPlugin'] = function() { return this['_physicsPlugin']; } , _0x4dfa3b['prototype']['getImpostors'] = function() { return this['_impostors']; } , _0x4dfa3b['prototype']['getImpostorForPhysicsObject'] = function(_0xf12cd3) { for (var _0x2bd3a1 = 0x0; _0x2bd3a1 < this['_impostors']['length']; ++_0x2bd3a1) if (this['_impostors'][_0x2bd3a1]['object'] === _0xf12cd3) return this['_impostors'][_0x2bd3a1]; return null; } , _0x4dfa3b['prototype']['getImpostorWithPhysicsBody'] = function(_0xcf94ce) { for (var _0x3602bf = 0x0; _0x3602bf < this['_impostors']['length']; ++_0x3602bf) if (this['_impostors'][_0x3602bf]['physicsBody'] === _0xcf94ce) return this['_impostors'][_0x3602bf]; return null; } , _0x4dfa3b['prototype']['raycast'] = function(_0x4ad1ad, _0x495d57) { return this['_physicsPlugin']['raycast'](_0x4ad1ad, _0x495d57); } , _0x4dfa3b['Epsilon'] = 0.001, _0x4dfa3b; }() , _0x3ec199 = function() { function _0x359098() { this['_hasHit'] = !0x1, this['_hitDistance'] = 0x0, this['_hitNormalWorld'] = _0x47d24f['x']['Zero'](), this['_hitPointWorld'] = _0x47d24f['x']['Zero'](), this['_rayFromWorld'] = _0x47d24f['x']['Zero'](), this['_rayToWorld'] = _0x47d24f['x']['Zero'](); } return Object['defineProperty'](_0x359098['prototype'], 'hasHit', { 'get': function() { return this['_hasHit']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x359098['prototype'], 'hitDistance', { 'get': function() { return this['_hitDistance']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x359098['prototype'], 'hitNormalWorld', { 'get': function() { return this['_hitNormalWorld']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x359098['prototype'], 'hitPointWorld', { 'get': function() { return this['_hitPointWorld']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x359098['prototype'], 'rayFromWorld', { 'get': function() { return this['_rayFromWorld']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x359098['prototype'], 'rayToWorld', { 'get': function() { return this['_rayToWorld']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x359098['prototype']['setHitData'] = function(_0x1e7cb2, _0x2c4044) { this['_hasHit'] = !0x0, this['_hitNormalWorld'] = new _0x47d24f['x'](_0x1e7cb2['x'],_0x1e7cb2['y'],_0x1e7cb2['z']), this['_hitPointWorld'] = new _0x47d24f['x'](_0x2c4044['x'],_0x2c4044['y'],_0x2c4044['z']); } , _0x359098['prototype']['setHitDistance'] = function(_0x2b46ba) { this['_hitDistance'] = _0x2b46ba; } , _0x359098['prototype']['calculateHitDistance'] = function() { this['_hitDistance'] = _0x47d24f['x']['Distance'](this['_rayFromWorld'], this['_hitPointWorld']); } , _0x359098['prototype']['reset'] = function(_0x2df171, _0x5e7cd1) { void 0x0 === _0x2df171 && (_0x2df171 = _0x47d24f['x']['Zero']()), void 0x0 === _0x5e7cd1 && (_0x5e7cd1 = _0x47d24f['x']['Zero']()), this['_rayFromWorld'] = _0x2df171, this['_rayToWorld'] = _0x5e7cd1, this['_hasHit'] = !0x1, this['_hitDistance'] = 0x0, this['_hitNormalWorld'] = _0x47d24f['x']['Zero'](), this['_hitPointWorld'] = _0x47d24f['x']['Zero'](); } , _0x359098; }() , _0x5271b3 = function() { function _0x37342d(_0x39aa89, _0x369139, _0x2a7c6a) { void 0x0 === _0x39aa89 && (_0x39aa89 = !0x0), void 0x0 === _0x369139 && (_0x369139 = 0xa), void 0x0 === _0x2a7c6a && (_0x2a7c6a = CANNON), this['_useDeltaForWorldStep'] = _0x39aa89, this['name'] = 'CannonJSPlugin', this['_physicsMaterials'] = new Array(), this['_fixedTimeStep'] = 0x1 / 0x3c, this['_removeAfterStep'] = new Array(), this['_minus90X'] = new _0x47d24f['q'](-0.7071067811865475,0x0,0x0,0.7071067811865475), this['_plus90X'] = new _0x47d24f['q'](0.7071067811865475,0x0,0x0,0.7071067811865475), this['_tmpPosition'] = _0x47d24f['x']['Zero'](), this['_tmpDeltaPosition'] = _0x47d24f['x']['Zero'](), this['_tmpUnityRotation'] = new _0x47d24f['q'](), this['BJSCANNON'] = _0x2a7c6a, this['isSupported']() ? (this['_extendNamespace'](), this['world'] = new this['BJSCANNON']['World'](), this['world']['broadphase'] = new this['BJSCANNON']['NaiveBroadphase'](), this['world']['solver']['iterations'] = _0x369139, this['_cannonRaycastResult'] = new this['BJSCANNON']['RaycastResult'](), this['_raycastResult'] = new _0x3ec199()) : _0x3f98cb['a']['Error']('CannonJS\x20is\x20not\x20available.\x20Please\x20make\x20sure\x20you\x20included\x20the\x20js\x20file.'); } return _0x37342d['prototype']['setGravity'] = function(_0x2d34df) { this['world']['gravity']['copy'](_0x2d34df); } , _0x37342d['prototype']['setTimeStep'] = function(_0x509c18) { this['_fixedTimeStep'] = _0x509c18; } , _0x37342d['prototype']['getTimeStep'] = function() { return this['_fixedTimeStep']; } , _0x37342d['prototype']['executeStep'] = function(_0x1e7cae) { var _0x1c7d14 = this; window['ig']['useTheCorrectBabylon'] = !0x0; var _0x544470 = 0x1; window['ig']['gameScene'] && (_0x544470 = window['ig']['gameScene']['physicsDeltaFactor']); this['world']['step'](this['_fixedTimeStep'], this['_useDeltaForWorldStep'] ? _0x1e7cae * _0x544470 : 0x0, 0x3); this['_removeAfterStep']['length'] > 0x0 && (this['_removeAfterStep']['forEach'](function(_0x13e2ab) { _0x1c7d14['world']['remove'](_0x13e2ab['physicsBody']); }), this['_removeAfterStep'] = []); } , _0x37342d['prototype']['applyImpulse'] = function(_0x3772bb, _0x29a243, _0x3bd45c) { var _0x395258 = new this['BJSCANNON']['Vec3'](_0x3bd45c['x'],_0x3bd45c['y'],_0x3bd45c['z']) , _0x21e5e9 = new this['BJSCANNON']['Vec3'](_0x29a243['x'],_0x29a243['y'],_0x29a243['z']); _0x3772bb['physicsBody']['applyImpulse'](_0x21e5e9, _0x395258); } , _0x37342d['prototype']['applyForce'] = function(_0xe1b821, _0x32162d, _0x156ecf) { var _0x1fea53 = new this['BJSCANNON']['Vec3'](_0x156ecf['x'],_0x156ecf['y'],_0x156ecf['z']) , _0x5697ad = new this['BJSCANNON']['Vec3'](_0x32162d['x'],_0x32162d['y'],_0x32162d['z']); _0xe1b821['physicsBody']['applyForce'](_0x5697ad, _0x1fea53); } , _0x37342d['prototype']['generatePhysicsBody'] = function(_0x54239b) { if (_0x54239b['parent']) _0x54239b['physicsBody'] && (this['removePhysicsBody'](_0x54239b), _0x54239b['forceUpdate']()); else { if (_0x54239b['isBodyInitRequired']()) { var _0x1f0ae0 = this['_createShape'](_0x54239b) , _0x348c00 = _0x54239b['physicsBody']; _0x348c00 && this['removePhysicsBody'](_0x54239b); var _0x4245a6 = this['_addMaterial']('mat-' + _0x54239b['uniqueId'], _0x54239b['getParam']('friction'), _0x54239b['getParam']('restitution')) , _0x53afa0 = { 'mass': _0x54239b['getParam']('mass'), 'material': _0x4245a6 } , _0x203be7 = _0x54239b['getParam']('nativeOptions'); for (var _0x83b099 in _0x203be7) _0x203be7['hasOwnProperty'](_0x83b099) && (_0x53afa0[_0x83b099] = _0x203be7[_0x83b099]); _0x54239b['physicsBody'] = new this['BJSCANNON']['Body'](_0x53afa0), _0x54239b['physicsBody']['addEventListener']('collide', _0x54239b['onCollide']), this['world']['addEventListener']('preStep', _0x54239b['beforeStep']), this['world']['addEventListener']('postStep', _0x54239b['afterStep']), _0x54239b['physicsBody']['addShape'](_0x1f0ae0), this['world']['add'](_0x54239b['physicsBody']), _0x348c00 && ['force', 'torque', 'velocity', 'angularVelocity']['forEach'](function(_0x153c81) { _0x54239b['physicsBody'][_0x153c81]['copy'](_0x348c00[_0x153c81]); }), this['_processChildMeshes'](_0x54239b); } this['_updatePhysicsBodyTransformation'](_0x54239b); } } , _0x37342d['prototype']['_processChildMeshes'] = function(_0x180d4f) { var _0x452424 = this , _0x349a14 = _0x180d4f['object']['getChildMeshes'] ? _0x180d4f['object']['getChildMeshes'](!0x0) : [] , _0x247a2a = _0x180d4f['object']['rotationQuaternion']; if (_0x349a14['length']) { var _0x194aa6 = function(_0x4fc1c3, _0xd3a4bb) { if (_0x247a2a && _0xd3a4bb['rotationQuaternion']) { var _0x4570e7 = _0xd3a4bb['getPhysicsImpostor'](); if (_0x4570e7) if (_0x4570e7['parent'] !== _0x180d4f) { var _0x49fa47 = _0xd3a4bb['getAbsolutePosition']()['subtract'](_0x180d4f['object']['getAbsolutePosition']()) , _0x59e608 = _0xd3a4bb['rotationQuaternion']['multiply'](_0x47d24f['q']['Inverse'](_0x247a2a)); _0x4570e7['physicsBody'] && (_0x452424['removePhysicsBody'](_0x4570e7), _0x4570e7['physicsBody'] = null), _0x4570e7['parent'] = _0x180d4f, _0x4570e7['resetUpdateFlags'](), _0x180d4f['physicsBody']['addShape'](_0x452424['_createShape'](_0x4570e7), new _0x452424['BJSCANNON']['Vec3'](_0x49fa47['x'],_0x49fa47['y'],_0x49fa47['z']), new _0x452424['BJSCANNON']['Quaternion'](_0x59e608['x'],_0x59e608['y'],_0x59e608['z'],_0x59e608['w'])), _0x180d4f['physicsBody']['mass'] += _0x4570e7['getParam']('mass'); } _0x247a2a['multiplyInPlace'](_0xd3a4bb['rotationQuaternion']), _0xd3a4bb['getChildMeshes'](!0x0)['filter'](function(_0x2b606d) { return !!_0x2b606d['physicsImpostor']; })['forEach'](_0x194aa6['bind'](_0x452424, _0xd3a4bb['getAbsolutePosition']())); } }; _0x349a14['filter'](function(_0x4d58d8) { return !!_0x4d58d8['physicsImpostor']; })['forEach'](_0x194aa6['bind'](this, _0x180d4f['object']['getAbsolutePosition']())); } } , _0x37342d['prototype']['removePhysicsBody'] = function(_0x275fa4) { _0x275fa4['physicsBody']['removeEventListener']('collide', _0x275fa4['onCollide']), this['world']['removeEventListener']('preStep', _0x275fa4['beforeStep']), this['world']['removeEventListener']('postStep', _0x275fa4['afterStep']), this['_removeAfterStep']['push'](_0x275fa4); } , _0x37342d['prototype']['generateJoint'] = function(_0x10fd66) { var _0x2b1112 = _0x10fd66['mainImpostor']['physicsBody'] , _0x3a73f7 = _0x10fd66['connectedImpostor']['physicsBody']; if (_0x2b1112 && _0x3a73f7) { var _0x50d533, _0x2b34e7 = _0x10fd66['joint']['jointData'], _0x27d332 = { 'pivotA': _0x2b34e7['mainPivot'] ? new this['BJSCANNON']['Vec3']()['copy'](_0x2b34e7['mainPivot']) : null, 'pivotB': _0x2b34e7['connectedPivot'] ? new this['BJSCANNON']['Vec3']()['copy'](_0x2b34e7['connectedPivot']) : null, 'axisA': _0x2b34e7['mainAxis'] ? new this['BJSCANNON']['Vec3']()['copy'](_0x2b34e7['mainAxis']) : null, 'axisB': _0x2b34e7['connectedAxis'] ? new this['BJSCANNON']['Vec3']()['copy'](_0x2b34e7['connectedAxis']) : null, 'maxForce': _0x2b34e7['nativeParams']['maxForce'], 'collideConnected': !!_0x2b34e7['collision'] }; switch (_0x10fd66['joint']['type']) { case _0x400e0d['e']['HingeJoint']: case _0x400e0d['e']['Hinge2Joint']: _0x50d533 = new this['BJSCANNON']['HingeConstraint'](_0x2b1112,_0x3a73f7,_0x27d332); break; case _0x400e0d['e']['DistanceJoint']: _0x50d533 = new this['BJSCANNON']['DistanceConstraint'](_0x2b1112,_0x3a73f7,_0x2b34e7['maxDistance'] || 0x2); break; case _0x400e0d['e']['SpringJoint']: var _0x3d8a36 = _0x2b34e7; _0x50d533 = new this['BJSCANNON']['Spring'](_0x2b1112,_0x3a73f7,{ 'restLength': _0x3d8a36['length'], 'stiffness': _0x3d8a36['stiffness'], 'damping': _0x3d8a36['damping'], 'localAnchorA': _0x27d332['pivotA'], 'localAnchorB': _0x27d332['pivotB'] }); break; case _0x400e0d['e']['LockJoint']: _0x50d533 = new this['BJSCANNON']['LockConstraint'](_0x2b1112,_0x3a73f7,_0x27d332); break; case _0x400e0d['e']['PointToPointJoint']: case _0x400e0d['e']['BallAndSocketJoint']: default: _0x50d533 = new this['BJSCANNON']['PointToPointConstraint'](_0x2b1112,_0x27d332['pivotA'],_0x3a73f7,_0x27d332['pivotB'],_0x27d332['maxForce']); } _0x50d533['collideConnected'] = !!_0x2b34e7['collision'], _0x10fd66['joint']['physicsJoint'] = _0x50d533, _0x10fd66['joint']['type'] !== _0x400e0d['e']['SpringJoint'] ? this['world']['addConstraint'](_0x50d533) : (_0x10fd66['joint']['jointData']['forceApplicationCallback'] = _0x10fd66['joint']['jointData']['forceApplicationCallback'] || function() { _0x50d533['applyForce'](); } , _0x10fd66['mainImpostor']['registerAfterPhysicsStep'](_0x10fd66['joint']['jointData']['forceApplicationCallback'])); } } , _0x37342d['prototype']['removeJoint'] = function(_0x2659eb) { _0x2659eb['joint']['type'] !== _0x400e0d['e']['SpringJoint'] ? this['world']['removeConstraint'](_0x2659eb['joint']['physicsJoint']) : _0x2659eb['mainImpostor']['unregisterAfterPhysicsStep'](_0x2659eb['joint']['jointData']['forceApplicationCallback']); } , _0x37342d['prototype']['_addMaterial'] = function(_0x2162fa, _0x2f1bac, _0x2cfc8f) { var _0x2550e3, _0x4cc7ba; for (_0x2550e3 = 0x0; _0x2550e3 < this['_physicsMaterials']['length']; _0x2550e3++) if ((_0x4cc7ba = this['_physicsMaterials'][_0x2550e3])['friction'] === _0x2f1bac && _0x4cc7ba['restitution'] === _0x2cfc8f) return _0x4cc7ba; var _0x57c896 = new this['BJSCANNON']['Material'](_0x2162fa); return _0x57c896['friction'] = _0x2f1bac, _0x57c896['restitution'] = _0x2cfc8f, this['_physicsMaterials']['push'](_0x57c896), _0x57c896; } , _0x37342d['prototype']['_checkWithEpsilon'] = function(_0x4b5775) { return _0x4b5775 < _0x19d308['Epsilon'] ? _0x19d308['Epsilon'] : _0x4b5775; } , _0x37342d['prototype']['_createShape'] = function(_0xa1f88b) { var _0x183d67, _0x2988e = _0xa1f88b['object'], _0x58822f = _0xa1f88b['getObjectExtendSize'](); switch (_0xa1f88b['type']) { case _0x216137['a']['SphereImpostor']: var _0x258634 = _0x58822f['x'] , _0x452386 = _0x58822f['y'] , _0x4b47a9 = _0x58822f['z']; _0x183d67 = new this['BJSCANNON']['Sphere'](Math['max'](this['_checkWithEpsilon'](_0x258634), this['_checkWithEpsilon'](_0x452386), this['_checkWithEpsilon'](_0x4b47a9)) / 0x2); break; case _0x216137['a']['CylinderImpostor']: var _0x18c1b1 = _0xa1f88b['getParam']('nativeOptions'); _0x18c1b1 || (_0x18c1b1 = {}); var _0x5b302c = void 0x0 !== _0x18c1b1['radiusTop'] ? _0x18c1b1['radiusTop'] : this['_checkWithEpsilon'](_0x58822f['x']) / 0x2 , _0x436a47 = void 0x0 !== _0x18c1b1['radiusBottom'] ? _0x18c1b1['radiusBottom'] : this['_checkWithEpsilon'](_0x58822f['x']) / 0x2 , _0xcd071a = void 0x0 !== _0x18c1b1['height'] ? _0x18c1b1['height'] : this['_checkWithEpsilon'](_0x58822f['y']) , _0x23949d = void 0x0 !== _0x18c1b1['numSegments'] ? _0x18c1b1['numSegments'] : 0x10; _0x183d67 = new this['BJSCANNON']['Cylinder'](_0x5b302c,_0x436a47,_0xcd071a,_0x23949d); var _0x5b1903 = new this['BJSCANNON']['Quaternion'](); _0x5b1903['setFromAxisAngle'](new this['BJSCANNON']['Vec3'](0x1,0x0,0x0), -Math['PI'] / 0x2); var _0x23edf = new this['BJSCANNON']['Vec3'](0x0,0x0,0x0); _0x183d67['transformAllPoints'](_0x23edf, _0x5b1903); break; case _0x216137['a']['BoxImpostor']: var _0x1dbde1 = _0x58822f['scale'](0.5); _0x183d67 = new this['BJSCANNON']['Box'](new this['BJSCANNON']['Vec3'](this['_checkWithEpsilon'](_0x1dbde1['x']),this['_checkWithEpsilon'](_0x1dbde1['y']),this['_checkWithEpsilon'](_0x1dbde1['z']))); break; case _0x216137['a']['PlaneImpostor']: _0x3f98cb['a']['Warn']('Attention,\x20PlaneImposter\x20might\x20not\x20behave\x20as\x20you\x20expect.\x20Consider\x20using\x20BoxImposter\x20instead'), _0x183d67 = new this['BJSCANNON']['Plane'](); break; case _0x216137['a']['MeshImpostor']: var _0x40fcac = _0x2988e['getVerticesData'] ? _0x2988e['getVerticesData'](_0x4209f7['b']['PositionKind']) : [] , _0x1169c7 = _0x2988e['getIndices'] ? _0x2988e['getIndices']() : []; if (!_0x40fcac) return; var _0x2061eb = _0x2988e['position']['clone']() , _0x82a0d = _0x2988e['rotation'] && _0x2988e['rotation']['clone']() , _0x55edd6 = _0x2988e['rotationQuaternion'] && _0x2988e['rotationQuaternion']['clone'](); _0x2988e['position']['copyFromFloats'](0x0, 0x0, 0x0), _0x2988e['rotation'] && _0x2988e['rotation']['copyFromFloats'](0x0, 0x0, 0x0), _0x2988e['rotationQuaternion'] && _0x2988e['rotationQuaternion']['copyFrom'](_0xa1f88b['getParentsRotation']()), _0x2988e['rotationQuaternion'] && _0x2988e['parent'] && _0x2988e['rotationQuaternion']['conjugateInPlace'](); var _0x3006c2, _0x1fc26a = _0x2988e['computeWorldMatrix'](!0x0), _0x588619 = new Array(); for (_0x3006c2 = 0x0; _0x3006c2 < _0x40fcac['length']; _0x3006c2 += 0x3) _0x47d24f['x']['TransformCoordinates'](_0x47d24f['x']['FromArray'](_0x40fcac, _0x3006c2), _0x1fc26a)['toArray'](_0x588619, _0x3006c2); _0x3f98cb['a']['Warn']('MeshImpostor\x20only\x20collides\x20against\x20spheres.'), _0x183d67 = new this['BJSCANNON']['Trimesh'](_0x588619,_0x1169c7), _0x2988e['position']['copyFrom'](_0x2061eb), _0x82a0d && _0x2988e['rotation'] && _0x2988e['rotation']['copyFrom'](_0x82a0d), _0x55edd6 && _0x2988e['rotationQuaternion'] && _0x2988e['rotationQuaternion']['copyFrom'](_0x55edd6); break; case _0x216137['a']['HeightmapImpostor']: var _0x2e41d3 = _0x2988e['position']['clone']() , _0x3f2254 = _0x2988e['rotation'] && _0x2988e['rotation']['clone']() , _0x308ccf = _0x2988e['rotationQuaternion'] && _0x2988e['rotationQuaternion']['clone'](); _0x2988e['position']['copyFromFloats'](0x0, 0x0, 0x0), _0x2988e['rotation'] && _0x2988e['rotation']['copyFromFloats'](0x0, 0x0, 0x0), _0x2988e['rotationQuaternion'] && _0x2988e['rotationQuaternion']['copyFrom'](_0xa1f88b['getParentsRotation']()), _0x2988e['rotationQuaternion'] && _0x2988e['parent'] && _0x2988e['rotationQuaternion']['conjugateInPlace'](), _0x2988e['rotationQuaternion'] && _0x2988e['rotationQuaternion']['multiplyInPlace'](this['_minus90X']), _0x183d67 = this['_createHeightmap'](_0x2988e), _0x2988e['position']['copyFrom'](_0x2e41d3), _0x3f2254 && _0x2988e['rotation'] && _0x2988e['rotation']['copyFrom'](_0x3f2254), _0x308ccf && _0x2988e['rotationQuaternion'] && _0x2988e['rotationQuaternion']['copyFrom'](_0x308ccf), _0x2988e['computeWorldMatrix'](!0x0); break; case _0x216137['a']['ParticleImpostor']: _0x183d67 = new this['BJSCANNON']['Particle'](); break; case _0x216137['a']['NoImpostor']: _0x183d67 = new this['BJSCANNON']['Box'](new this['BJSCANNON']['Vec3'](0x0,0x0,0x0)); } return _0x183d67; } , _0x37342d['prototype']['_createHeightmap'] = function(_0x3b248b, _0x2a7661) { var _0x57561f, _0x336efa = _0x3b248b['getVerticesData'](_0x4209f7['b']['PositionKind']), _0x33005a = _0x3b248b['computeWorldMatrix'](!0x0), _0x6ac2e1 = new Array(); for (_0x57561f = 0x0; _0x57561f < _0x336efa['length']; _0x57561f += 0x3) _0x47d24f['x']['TransformCoordinates'](_0x47d24f['x']['FromArray'](_0x336efa, _0x57561f), _0x33005a)['toArray'](_0x6ac2e1, _0x57561f); _0x336efa = _0x6ac2e1; for (var _0x55a650 = new Array(), _0x445561 = _0x2a7661 || ~~(Math['sqrt'](_0x336efa['length'] / 0x3) - 0x1), _0x4e5001 = _0x3b248b['getBoundingInfo'](), _0x20ffe9 = Math['min'](_0x4e5001['boundingBox']['extendSizeWorld']['x'], _0x4e5001['boundingBox']['extendSizeWorld']['y']), _0x5863ae = _0x4e5001['boundingBox']['extendSizeWorld']['z'], _0x1029bd = 0x2 * _0x20ffe9 / _0x445561, _0x508729 = 0x0; _0x508729 < _0x336efa['length']; _0x508729 += 0x3) { var _0x305912 = Math['round'](_0x336efa[_0x508729 + 0x0] / _0x1029bd + _0x445561 / 0x2) , _0x86cce5 = Math['round'](-0x1 * (_0x336efa[_0x508729 + 0x1] / _0x1029bd - _0x445561 / 0x2)) , _0x361be1 = -_0x336efa[_0x508729 + 0x2] + _0x5863ae; _0x55a650[_0x305912] || (_0x55a650[_0x305912] = []), _0x55a650[_0x305912][_0x86cce5] || (_0x55a650[_0x305912][_0x86cce5] = _0x361be1), _0x55a650[_0x305912][_0x86cce5] = Math['max'](_0x361be1, _0x55a650[_0x305912][_0x86cce5]); } for (_0x305912 = 0x0; _0x305912 <= _0x445561; ++_0x305912) { if (!_0x55a650[_0x305912]) { for (var _0x3f9351 = 0x1; !_0x55a650[(_0x305912 + _0x3f9351) % _0x445561]; ) _0x3f9351++; _0x55a650[_0x305912] = _0x55a650[(_0x305912 + _0x3f9351) % _0x445561]['slice'](); } for (_0x86cce5 = 0x0; _0x86cce5 <= _0x445561; ++_0x86cce5) if (!_0x55a650[_0x305912][_0x86cce5]) { var _0x5b026b; for (_0x3f9351 = 0x1; void 0x0 === _0x5b026b; ) _0x5b026b = _0x55a650[_0x305912][(_0x86cce5 + _0x3f9351++) % _0x445561]; _0x55a650[_0x305912][_0x86cce5] = _0x5b026b; } } var _0x2bca2e = new this['BJSCANNON']['Heightfield'](_0x55a650,{ 'elementSize': _0x1029bd }); return _0x2bca2e['minY'] = _0x5863ae, _0x2bca2e; } , _0x37342d['prototype']['_updatePhysicsBodyTransformation'] = function(_0x2e2dff) { var _0x12f43b = _0x2e2dff['object']; if (_0x12f43b['computeWorldMatrix'] && _0x12f43b['computeWorldMatrix'](!0x0), _0x12f43b['getBoundingInfo']()) { var _0x4c49bc = _0x2e2dff['getObjectCenter'](); this['_tmpDeltaPosition']['copyFrom'](_0x12f43b['getAbsolutePivotPoint']()['subtract'](_0x4c49bc)), this['_tmpDeltaPosition']['divideInPlace'](_0x2e2dff['object']['scaling']), this['_tmpPosition']['copyFrom'](_0x4c49bc); var _0x2fdbdb = _0x12f43b['rotationQuaternion']; if (_0x2fdbdb) { if (_0x2e2dff['type'] !== _0x216137['a']['PlaneImpostor'] && _0x2e2dff['type'] !== _0x216137['a']['HeightmapImpostor'] || (_0x2fdbdb = _0x2fdbdb['multiply'](this['_minus90X']), _0x2e2dff['setDeltaRotation'](this['_plus90X'])), _0x2e2dff['type'] === _0x216137['a']['HeightmapImpostor']) { var _0x4aac61 = _0x12f43b , _0x234c76 = _0x4aac61['getBoundingInfo']() , _0xfbd9c = _0x4aac61['rotationQuaternion']; _0x4aac61['rotationQuaternion'] = this['_tmpUnityRotation'], _0x4aac61['computeWorldMatrix'](!0x0); var _0x444fc2 = _0x4c49bc['clone']() , _0x40b471 = _0x4aac61['getPivotMatrix'](); _0x40b471 = _0x40b471 ? _0x40b471['clone']() : _0x47d24f['j']['Identity'](); var _0x5cbbf8 = _0x47d24f['j']['Translation'](_0x234c76['boundingBox']['extendSizeWorld']['x'], 0x0, -_0x234c76['boundingBox']['extendSizeWorld']['z']); _0x4aac61['setPreTransformMatrix'](_0x5cbbf8), _0x4aac61['computeWorldMatrix'](!0x0); var _0x2ed90f = _0x234c76['boundingBox']['centerWorld']['subtract'](_0x4c49bc)['subtract'](_0x4aac61['position'])['negate'](); this['_tmpPosition']['copyFromFloats'](_0x2ed90f['x'], _0x2ed90f['y'] - _0x234c76['boundingBox']['extendSizeWorld']['y'], _0x2ed90f['z']), this['_tmpDeltaPosition']['copyFrom'](_0x234c76['boundingBox']['centerWorld']['subtract'](_0x444fc2)), this['_tmpDeltaPosition']['y'] += _0x234c76['boundingBox']['extendSizeWorld']['y'], _0x4aac61['rotationQuaternion'] = _0xfbd9c, _0x4aac61['setPreTransformMatrix'](_0x40b471), _0x4aac61['computeWorldMatrix'](!0x0); } else _0x2e2dff['type'] === _0x216137['a']['MeshImpostor'] && this['_tmpDeltaPosition']['copyFromFloats'](0x0, 0x0, 0x0); _0x2e2dff['setDeltaPosition'](this['_tmpDeltaPosition']), _0x2e2dff['physicsBody']['position']['copy'](this['_tmpPosition']), _0x2e2dff['physicsBody']['quaternion']['copy'](_0x2fdbdb); } } } , _0x37342d['prototype']['setTransformationFromPhysicsBody'] = function(_0x1b62ba) { _0x1b62ba['object']['position']['copyFrom'](_0x1b62ba['physicsBody']['position']), _0x1b62ba['object']['rotationQuaternion'] && _0x1b62ba['object']['rotationQuaternion']['copyFrom'](_0x1b62ba['physicsBody']['quaternion']); } , _0x37342d['prototype']['setPhysicsBodyTransformation'] = function(_0x55da91, _0x3cffc2, _0x11f7d0) { _0x55da91['physicsBody']['position']['copy'](_0x3cffc2), _0x55da91['physicsBody']['quaternion']['copy'](_0x11f7d0); } , _0x37342d['prototype']['isSupported'] = function() { return void 0x0 !== this['BJSCANNON']; } , _0x37342d['prototype']['setLinearVelocity'] = function(_0x4ab947, _0x281eb9) { _0x4ab947['physicsBody']['velocity']['copy'](_0x281eb9); } , _0x37342d['prototype']['setAngularVelocity'] = function(_0x3b574f, _0x2f8ca2) { _0x3b574f['physicsBody']['angularVelocity']['copy'](_0x2f8ca2); } , _0x37342d['prototype']['getLinearVelocity'] = function(_0x32fc1c) { var _0x574e37 = _0x32fc1c['physicsBody']['velocity']; return _0x574e37 ? new _0x47d24f['x'](_0x574e37['x'],_0x574e37['y'],_0x574e37['z']) : null; } , _0x37342d['prototype']['getAngularVelocity'] = function(_0x136734) { var _0x4a231e = _0x136734['physicsBody']['angularVelocity']; return _0x4a231e ? new _0x47d24f['x'](_0x4a231e['x'],_0x4a231e['y'],_0x4a231e['z']) : null; } , _0x37342d['prototype']['setBodyMass'] = function(_0x41d14f, _0x59a5d1) { _0x41d14f['physicsBody']['mass'] = _0x59a5d1, _0x41d14f['physicsBody']['updateMassProperties'](); } , _0x37342d['prototype']['getBodyMass'] = function(_0x3ad312) { return _0x3ad312['physicsBody']['mass']; } , _0x37342d['prototype']['getBodyFriction'] = function(_0x47d0a3) { return _0x47d0a3['physicsBody']['material']['friction']; } , _0x37342d['prototype']['setBodyFriction'] = function(_0x57eb4a, _0x288bf2) { _0x57eb4a['physicsBody']['material']['friction'] = _0x288bf2; } , _0x37342d['prototype']['getBodyRestitution'] = function(_0x54e24b) { return _0x54e24b['physicsBody']['material']['restitution']; } , _0x37342d['prototype']['setBodyRestitution'] = function(_0x4940d2, _0xb7ad41) { _0x4940d2['physicsBody']['material']['restitution'] = _0xb7ad41; } , _0x37342d['prototype']['sleepBody'] = function(_0x4745a9) { _0x4745a9['physicsBody']['sleep'](); } , _0x37342d['prototype']['wakeUpBody'] = function(_0x589615) { _0x589615['physicsBody']['wakeUp'](); } , _0x37342d['prototype']['updateDistanceJoint'] = function(_0xb490ae, _0x1ada4b) { _0xb490ae['physicsJoint']['distance'] = _0x1ada4b; } , _0x37342d['prototype']['setMotor'] = function(_0x467fe8, _0x51407a, _0x59e098, _0x21116b) { _0x21116b || (_0x467fe8['physicsJoint']['enableMotor'](), _0x467fe8['physicsJoint']['setMotorSpeed'](_0x51407a), _0x59e098 && this['setLimit'](_0x467fe8, _0x59e098)); } , _0x37342d['prototype']['setLimit'] = function(_0x1581a8, _0x436fa8, _0x1d7cc6) { _0x1581a8['physicsJoint']['motorEquation']['maxForce'] = _0x436fa8, _0x1581a8['physicsJoint']['motorEquation']['minForce'] = void 0x0 === _0x1d7cc6 ? -_0x436fa8 : _0x1d7cc6; } , _0x37342d['prototype']['syncMeshWithImpostor'] = function(_0x1e25b1, _0x4df934) { var _0x5b6af7 = _0x4df934['physicsBody']; _0x1e25b1['position']['x'] = _0x5b6af7['position']['x'], _0x1e25b1['position']['y'] = _0x5b6af7['position']['y'], _0x1e25b1['position']['z'] = _0x5b6af7['position']['z'], _0x1e25b1['rotationQuaternion'] && (_0x1e25b1['rotationQuaternion']['x'] = _0x5b6af7['quaternion']['x'], _0x1e25b1['rotationQuaternion']['y'] = _0x5b6af7['quaternion']['y'], _0x1e25b1['rotationQuaternion']['z'] = _0x5b6af7['quaternion']['z'], _0x1e25b1['rotationQuaternion']['w'] = _0x5b6af7['quaternion']['w']); } , _0x37342d['prototype']['getRadius'] = function(_0x3d5078) { return _0x3d5078['physicsBody']['shapes'][0x0]['boundingSphereRadius']; } , _0x37342d['prototype']['getBoxSizeToRef'] = function(_0x42fa7d, _0x36a870) { var _0x1b6061 = _0x42fa7d['physicsBody']['shapes'][0x0]; _0x36a870['x'] = 0x2 * _0x1b6061['halfExtents']['x'], _0x36a870['y'] = 0x2 * _0x1b6061['halfExtents']['y'], _0x36a870['z'] = 0x2 * _0x1b6061['halfExtents']['z']; } , _0x37342d['prototype']['dispose'] = function() {} , _0x37342d['prototype']['_extendNamespace'] = function() { var _0x33249c = new this['BJSCANNON']['Vec3']() , _0x6b9bac = this['BJSCANNON']; this['BJSCANNON']['World']['prototype']['step'] = function(_0x1a40b5, _0x7fe0a5, _0x44726a) { if (_0x44726a = _0x44726a || 0xa, 0x0 === (_0x7fe0a5 = _0x7fe0a5 || 0x0)) this['internalStep'](_0x1a40b5), this['time'] += _0x1a40b5; else { var _0x153b90 = Math['floor']((this['time'] + _0x7fe0a5) / _0x1a40b5) - Math['floor'](this['time'] / _0x1a40b5); _0x153b90 = Math['min'](_0x153b90, _0x44726a) || 0x1; for (var _0x150648 = performance['now'](), _0x240b37 = 0x0; _0x240b37 !== _0x153b90 && (this['internalStep'](_0x1a40b5), !(performance['now']() - _0x150648 > 0x3e8 * _0x1a40b5)); _0x240b37++) ; this['time'] += _0x7fe0a5; for (var _0x5ea0b2 = this['time'] % _0x1a40b5 / _0x1a40b5, _0x28594d = _0x33249c, _0x2a294d = this['bodies'], _0x374e53 = 0x0; _0x374e53 !== _0x2a294d['length']; _0x374e53++) { var _0x531381 = _0x2a294d[_0x374e53]; _0x531381['type'] !== _0x6b9bac['Body']['STATIC'] && _0x531381['sleepState'] !== _0x6b9bac['Body']['SLEEPING'] ? (_0x531381['position']['vsub'](_0x531381['previousPosition'], _0x28594d), _0x28594d['scale'](_0x5ea0b2, _0x28594d), _0x531381['position']['vadd'](_0x28594d, _0x531381['interpolatedPosition'])) : (_0x531381['interpolatedPosition']['copy'](_0x531381['position']), _0x531381['interpolatedQuaternion']['copy'](_0x531381['quaternion'])); } } } ; } , _0x37342d['prototype']['raycast'] = function(_0x6b4aec, _0x31f614) { return this['_cannonRaycastResult']['reset'](), this['world']['raycastClosest'](_0x6b4aec, _0x31f614, {}, this['_cannonRaycastResult']), this['_raycastResult']['reset'](_0x6b4aec, _0x31f614), this['_cannonRaycastResult']['hasHit'] && (this['_raycastResult']['setHitData']({ 'x': this['_cannonRaycastResult']['hitNormalWorld']['x'], 'y': this['_cannonRaycastResult']['hitNormalWorld']['y'], 'z': this['_cannonRaycastResult']['hitNormalWorld']['z'] }, { 'x': this['_cannonRaycastResult']['hitPointWorld']['x'], 'y': this['_cannonRaycastResult']['hitPointWorld']['y'], 'z': this['_cannonRaycastResult']['hitPointWorld']['z'] }), this['_raycastResult']['setHitDistance'](this['_cannonRaycastResult']['distance'])), this['_raycastResult']; } , _0x37342d; }(); _0x19d308['DefaultPluginFactory'] = function() { return new _0x5271b3(); } ; var _0x272b2e = function() { function _0x1d2405(_0x9e6d9c, _0x2d448f) { void 0x0 === _0x2d448f && (_0x2d448f = OIMO), this['name'] = 'OimoJSPlugin', this['_tmpImpostorsArray'] = [], this['_tmpPositionVector'] = _0x47d24f['x']['Zero'](), this['BJSOIMO'] = _0x2d448f, this['world'] = new this['BJSOIMO']['World']({ 'iterations': _0x9e6d9c }), this['world']['clear'](), this['_raycastResult'] = new _0x3ec199(); } return _0x1d2405['prototype']['setGravity'] = function(_0x2ecbd2) { this['world']['gravity']['copy'](_0x2ecbd2); } , _0x1d2405['prototype']['setTimeStep'] = function(_0x1ecc60) { this['world']['timeStep'] = _0x1ecc60; } , _0x1d2405['prototype']['getTimeStep'] = function() { return this['world']['timeStep']; } , _0x1d2405['prototype']['executeStep'] = function(_0x52faac, _0x9f5e0f) { var _0x2d8c80 = this; _0x9f5e0f['forEach'](function(_0x13577e) { _0x13577e['beforeStep'](); }), this['world']['step'](), _0x9f5e0f['forEach'](function(_0x440b63) { _0x440b63['afterStep'](), _0x2d8c80['_tmpImpostorsArray'][_0x440b63['uniqueId']] = _0x440b63; }); for (var _0x3a3fb8 = this['world']['contacts']; null !== _0x3a3fb8; ) if (!_0x3a3fb8['touching'] || _0x3a3fb8['body1']['sleeping'] || _0x3a3fb8['body2']['sleeping']) { var _0x42ad14 = this['_tmpImpostorsArray'][+_0x3a3fb8['body1']['name']] , _0x9680e8 = this['_tmpImpostorsArray'][+_0x3a3fb8['body2']['name']]; _0x42ad14 && _0x9680e8 ? (_0x42ad14['onCollide']({ 'body': _0x9680e8['physicsBody'] }), _0x9680e8['onCollide']({ 'body': _0x42ad14['physicsBody'] }), _0x3a3fb8 = _0x3a3fb8['next']) : _0x3a3fb8 = _0x3a3fb8['next']; } else _0x3a3fb8 = _0x3a3fb8['next']; } , _0x1d2405['prototype']['applyImpulse'] = function(_0x733745, _0x258a7a, _0x2303f8) { var _0x19e531 = _0x733745['physicsBody']['mass']; _0x733745['physicsBody']['applyImpulse'](_0x2303f8['scale'](this['world']['invScale']), _0x258a7a['scale'](this['world']['invScale'] * _0x19e531)); } , _0x1d2405['prototype']['applyForce'] = function(_0x5e9a98, _0x10c015, _0x4f05d2) { _0x3f98cb['a']['Warn']('Oimo\x20doesn\x27t\x20support\x20applying\x20force.\x20Using\x20impule\x20instead.'), this['applyImpulse'](_0x5e9a98, _0x10c015, _0x4f05d2); } , _0x1d2405['prototype']['generatePhysicsBody'] = function(_0xcb52b9) { var _0x25903c = this; if (_0xcb52b9['parent']) _0xcb52b9['physicsBody'] && (this['removePhysicsBody'](_0xcb52b9), _0xcb52b9['forceUpdate']()); else { if (_0xcb52b9['isBodyInitRequired']()) { var _0x4fde26 = { 'name': _0xcb52b9['uniqueId'], 'config': [_0xcb52b9['getParam']('mass') || 0x1, _0xcb52b9['getParam']('friction'), _0xcb52b9['getParam']('restitution')], 'size': [], 'type': [], 'pos': [], 'posShape': [], 'rot': [], 'rotShape': [], 'move': 0x0 !== _0xcb52b9['getParam']('mass'), 'density': _0xcb52b9['getParam']('mass'), 'friction': _0xcb52b9['getParam']('friction'), 'restitution': _0xcb52b9['getParam']('restitution'), 'world': this['world'] } , _0x1ee0fe = [_0xcb52b9]; (_0x5a5504 = _0xcb52b9['object'])['getChildMeshes'] && _0x5a5504['getChildMeshes']()['forEach'](function(_0x470adc) { _0x470adc['physicsImpostor'] && _0x1ee0fe['push'](_0x470adc['physicsImpostor']); }); var _0x33f807 = function(_0x39984f) { return Math['max'](_0x39984f, _0x19d308['Epsilon']); } , _0x1f04ee = new _0x47d24f['q'](); _0x1ee0fe['forEach'](function(_0x2b05aa) { if (_0x2b05aa['object']['rotationQuaternion']) { var _0x1e10b4 = _0x2b05aa['object']['rotationQuaternion']; _0x1f04ee = _0x1e10b4['clone'](); var _0x32aada = _0x1e10b4['toEulerAngles']() , _0x1e22e7 = _0x2b05aa['getObjectExtendSize'](); if (_0x2b05aa === _0xcb52b9) { var _0x587fcc = _0xcb52b9['getObjectCenter'](); _0xcb52b9['object']['getAbsolutePivotPoint']()['subtractToRef'](_0x587fcc, _0x25903c['_tmpPositionVector']), _0x25903c['_tmpPositionVector']['divideInPlace'](_0xcb52b9['object']['scaling']), _0x4fde26['pos']['push'](_0x587fcc['x']), _0x4fde26['pos']['push'](_0x587fcc['y']), _0x4fde26['pos']['push'](_0x587fcc['z']), _0x4fde26['posShape']['push'](0x0, 0x0, 0x0), _0x4fde26['rotShape']['push'](0x0, 0x0, 0x0); } else { var _0x2f0ee3 = _0x2b05aa['object']['getAbsolutePosition']()['subtract'](_0xcb52b9['object']['getAbsolutePosition']()); _0x4fde26['posShape']['push'](_0x2f0ee3['x']), _0x4fde26['posShape']['push'](_0x2f0ee3['y']), _0x4fde26['posShape']['push'](_0x2f0ee3['z']), _0x4fde26['pos']['push'](0x0, 0x0, 0x0), _0x4fde26['rotShape']['push'](57.29577951308232 * _0x32aada['x']), _0x4fde26['rotShape']['push'](57.29577951308232 * _0x32aada['y']), _0x4fde26['rotShape']['push'](57.29577951308232 * _0x32aada['z']); } switch (_0x2b05aa['type']) { case _0x216137['a']['ParticleImpostor']: _0x3f98cb['a']['Warn']('No\x20Particle\x20support\x20in\x20OIMO.js.\x20using\x20SphereImpostor\x20instead'); case _0x216137['a']['SphereImpostor']: var _0x1ce382 = _0x1e22e7['x'] , _0x1c4a49 = _0x1e22e7['y'] , _0x4b246d = _0x1e22e7['z'] , _0x87deca = Math['max'](_0x33f807(_0x1ce382), _0x33f807(_0x1c4a49), _0x33f807(_0x4b246d)) / 0x2; _0x4fde26['type']['push']('sphere'), _0x4fde26['size']['push'](_0x87deca), _0x4fde26['size']['push'](_0x87deca), _0x4fde26['size']['push'](_0x87deca); break; case _0x216137['a']['CylinderImpostor']: var _0x18b385 = _0x33f807(_0x1e22e7['x']) / 0x2 , _0x4f2d65 = _0x33f807(_0x1e22e7['y']); _0x4fde26['type']['push']('cylinder'), _0x4fde26['size']['push'](_0x18b385), _0x4fde26['size']['push'](_0x4f2d65), _0x4fde26['size']['push'](_0x4f2d65); break; case _0x216137['a']['PlaneImpostor']: case _0x216137['a']['BoxImpostor']: default: _0x18b385 = _0x33f807(_0x1e22e7['x']), _0x4f2d65 = _0x33f807(_0x1e22e7['y']); var _0x15f63d = _0x33f807(_0x1e22e7['z']); _0x4fde26['type']['push']('box'), _0x4fde26['size']['push'](_0x18b385), _0x4fde26['size']['push'](_0x4f2d65), _0x4fde26['size']['push'](_0x15f63d); } _0x2b05aa['object']['rotationQuaternion'] = _0x1e10b4; } }), _0xcb52b9['physicsBody'] = this['world']['add'](_0x4fde26), _0xcb52b9['physicsBody']['resetQuaternion'](_0x1f04ee), _0xcb52b9['physicsBody']['updatePosition'](0x0); } else this['_tmpPositionVector']['copyFromFloats'](0x0, 0x0, 0x0); var _0x5a5504; _0xcb52b9['setDeltaPosition'](this['_tmpPositionVector']); } } , _0x1d2405['prototype']['removePhysicsBody'] = function(_0x1f6775) { this['world']['removeRigidBody'](_0x1f6775['physicsBody']); } , _0x1d2405['prototype']['generateJoint'] = function(_0x1b937a) { var _0x717564 = _0x1b937a['mainImpostor']['physicsBody'] , _0x48a5e1 = _0x1b937a['connectedImpostor']['physicsBody']; if (_0x717564 && _0x48a5e1) { var _0x339b0b, _0x491869 = _0x1b937a['joint']['jointData'], _0x5208eb = _0x491869['nativeParams'] || {}, _0x259de4 = { 'body1': _0x717564, 'body2': _0x48a5e1, 'axe1': _0x5208eb['axe1'] || (_0x491869['mainAxis'] ? _0x491869['mainAxis']['asArray']() : null), 'axe2': _0x5208eb['axe2'] || (_0x491869['connectedAxis'] ? _0x491869['connectedAxis']['asArray']() : null), 'pos1': _0x5208eb['pos1'] || (_0x491869['mainPivot'] ? _0x491869['mainPivot']['asArray']() : null), 'pos2': _0x5208eb['pos2'] || (_0x491869['connectedPivot'] ? _0x491869['connectedPivot']['asArray']() : null), 'min': _0x5208eb['min'], 'max': _0x5208eb['max'], 'collision': _0x5208eb['collision'] || _0x491869['collision'], 'spring': _0x5208eb['spring'], 'world': this['world'] }; switch (_0x1b937a['joint']['type']) { case _0x400e0d['e']['BallAndSocketJoint']: _0x339b0b = 'jointBall'; break; case _0x400e0d['e']['SpringJoint']: _0x3f98cb['a']['Warn']('OIMO.js\x20doesn\x27t\x20support\x20Spring\x20Constraint.\x20Simulating\x20using\x20DistanceJoint\x20instead'); var _0x4a6a4f = _0x491869; _0x259de4['min'] = _0x4a6a4f['length'] || _0x259de4['min'], _0x259de4['max'] = Math['max'](_0x259de4['min'], _0x259de4['max']); case _0x400e0d['e']['DistanceJoint']: _0x339b0b = 'jointDistance', _0x259de4['max'] = _0x491869['maxDistance']; break; case _0x400e0d['e']['PrismaticJoint']: _0x339b0b = 'jointPrisme'; break; case _0x400e0d['e']['SliderJoint']: _0x339b0b = 'jointSlide'; break; case _0x400e0d['e']['WheelJoint']: _0x339b0b = 'jointWheel'; break; case _0x400e0d['e']['HingeJoint']: default: _0x339b0b = 'jointHinge'; } _0x259de4['type'] = _0x339b0b, _0x1b937a['joint']['physicsJoint'] = this['world']['add'](_0x259de4); } } , _0x1d2405['prototype']['removeJoint'] = function(_0x468425) { try { this['world']['removeJoint'](_0x468425['joint']['physicsJoint']); } catch (_0x4e1478) { _0x3f98cb['a']['Warn'](_0x4e1478); } } , _0x1d2405['prototype']['isSupported'] = function() { return void 0x0 !== this['BJSOIMO']; } , _0x1d2405['prototype']['setTransformationFromPhysicsBody'] = function(_0x1f334b) { _0x1f334b['physicsBody']['sleeping'] || (_0x1f334b['object']['position']['copyFrom'](_0x1f334b['physicsBody']['getPosition']()), _0x1f334b['object']['rotationQuaternion'] && _0x1f334b['object']['rotationQuaternion']['copyFrom'](_0x1f334b['physicsBody']['getQuaternion']())); } , _0x1d2405['prototype']['setPhysicsBodyTransformation'] = function(_0x26ec65, _0x4a2d2e, _0x18c3dd) { var _0x696a0e = _0x26ec65['physicsBody']; _0x696a0e['position']['copy'](_0x4a2d2e), _0x696a0e['orientation']['copy'](_0x18c3dd), _0x696a0e['syncShapes'](), _0x696a0e['awake'](); } , _0x1d2405['prototype']['setLinearVelocity'] = function(_0x122d7f, _0x4d43be) { _0x122d7f['physicsBody']['linearVelocity']['copy'](_0x4d43be); } , _0x1d2405['prototype']['setAngularVelocity'] = function(_0x4210e9, _0x1cbbca) { _0x4210e9['physicsBody']['angularVelocity']['copy'](_0x1cbbca); } , _0x1d2405['prototype']['getLinearVelocity'] = function(_0x704eb4) { var _0x5c16b4 = _0x704eb4['physicsBody']['linearVelocity']; return _0x5c16b4 ? new _0x47d24f['x'](_0x5c16b4['x'],_0x5c16b4['y'],_0x5c16b4['z']) : null; } , _0x1d2405['prototype']['getAngularVelocity'] = function(_0x79ab0) { var _0xe40007 = _0x79ab0['physicsBody']['angularVelocity']; return _0xe40007 ? new _0x47d24f['x'](_0xe40007['x'],_0xe40007['y'],_0xe40007['z']) : null; } , _0x1d2405['prototype']['setBodyMass'] = function(_0x15d5c7, _0x20f4cd) { var _0x426af8 = 0x0 === _0x20f4cd; _0x15d5c7['physicsBody']['shapes']['density'] = _0x426af8 ? 0x1 : _0x20f4cd, _0x15d5c7['physicsBody']['setupMass'](_0x426af8 ? 0x2 : 0x1); } , _0x1d2405['prototype']['getBodyMass'] = function(_0x3533a9) { return _0x3533a9['physicsBody']['shapes']['density']; } , _0x1d2405['prototype']['getBodyFriction'] = function(_0x30871e) { return _0x30871e['physicsBody']['shapes']['friction']; } , _0x1d2405['prototype']['setBodyFriction'] = function(_0x2b85f9, _0x44d310) { _0x2b85f9['physicsBody']['shapes']['friction'] = _0x44d310; } , _0x1d2405['prototype']['getBodyRestitution'] = function(_0x3cf7bd) { return _0x3cf7bd['physicsBody']['shapes']['restitution']; } , _0x1d2405['prototype']['setBodyRestitution'] = function(_0x1dc41f, _0x12f888) { _0x1dc41f['physicsBody']['shapes']['restitution'] = _0x12f888; } , _0x1d2405['prototype']['sleepBody'] = function(_0x4f00df) { _0x4f00df['physicsBody']['sleep'](); } , _0x1d2405['prototype']['wakeUpBody'] = function(_0x18fb46) { _0x18fb46['physicsBody']['awake'](); } , _0x1d2405['prototype']['updateDistanceJoint'] = function(_0x4a8780, _0x52e117, _0x40ef03) { _0x4a8780['physicsJoint']['limitMotor']['upperLimit'] = _0x52e117, void 0x0 !== _0x40ef03 && (_0x4a8780['physicsJoint']['limitMotor']['lowerLimit'] = _0x40ef03); } , _0x1d2405['prototype']['setMotor'] = function(_0x3f7648, _0x10701d, _0x19ae0d, _0x4468c3) { void 0x0 !== _0x19ae0d ? _0x3f98cb['a']['Warn']('OimoJS\x20plugin\x20currently\x20has\x20unexpected\x20behavior\x20when\x20using\x20setMotor\x20with\x20force\x20parameter') : _0x19ae0d = 0xf4240, _0x10701d *= -0x1; var _0x572a76 = _0x4468c3 ? _0x3f7648['physicsJoint']['rotationalLimitMotor2'] : _0x3f7648['physicsJoint']['rotationalLimitMotor1'] || _0x3f7648['physicsJoint']['rotationalLimitMotor'] || _0x3f7648['physicsJoint']['limitMotor']; _0x572a76 && _0x572a76['setMotor'](_0x10701d, _0x19ae0d); } , _0x1d2405['prototype']['setLimit'] = function(_0x57e486, _0x19342b, _0x5249de, _0x138d06) { var _0x8a2e8f = _0x138d06 ? _0x57e486['physicsJoint']['rotationalLimitMotor2'] : _0x57e486['physicsJoint']['rotationalLimitMotor1'] || _0x57e486['physicsJoint']['rotationalLimitMotor'] || _0x57e486['physicsJoint']['limitMotor']; _0x8a2e8f && _0x8a2e8f['setLimit'](_0x19342b, void 0x0 === _0x5249de ? -_0x19342b : _0x5249de); } , _0x1d2405['prototype']['syncMeshWithImpostor'] = function(_0x234c6f, _0x17bafa) { var _0x27f818 = _0x17bafa['physicsBody']; _0x234c6f['position']['x'] = _0x27f818['position']['x'], _0x234c6f['position']['y'] = _0x27f818['position']['y'], _0x234c6f['position']['z'] = _0x27f818['position']['z'], _0x234c6f['rotationQuaternion'] && (_0x234c6f['rotationQuaternion']['x'] = _0x27f818['orientation']['x'], _0x234c6f['rotationQuaternion']['y'] = _0x27f818['orientation']['y'], _0x234c6f['rotationQuaternion']['z'] = _0x27f818['orientation']['z'], _0x234c6f['rotationQuaternion']['w'] = _0x27f818['orientation']['s']); } , _0x1d2405['prototype']['getRadius'] = function(_0x593265) { return _0x593265['physicsBody']['shapes']['radius']; } , _0x1d2405['prototype']['getBoxSizeToRef'] = function(_0x4e8743, _0x244934) { var _0x47f805 = _0x4e8743['physicsBody']['shapes']; _0x244934['x'] = 0x2 * _0x47f805['halfWidth'], _0x244934['y'] = 0x2 * _0x47f805['halfHeight'], _0x244934['z'] = 0x2 * _0x47f805['halfDepth']; } , _0x1d2405['prototype']['dispose'] = function() { this['world']['clear'](); } , _0x1d2405['prototype']['raycast'] = function(_0x481170, _0x421a63) { return _0x3f98cb['a']['Warn']('raycast\x20is\x20not\x20currently\x20supported\x20by\x20the\x20Oimo\x20physics\x20plugin'), this['_raycastResult']['reset'](_0x481170, _0x421a63), this['_raycastResult']; } , _0x1d2405; }(); _0xb31206['a']['CreateRibbon'] = function(_0x4d95ed) { var _0x313e46 = _0x4d95ed['pathArray'] , _0x453f29 = _0x4d95ed['closeArray'] || !0x1 , _0x4fc08e = _0x4d95ed['closePath'] || !0x1 , _0x3a0c00 = _0x4d95ed['invertUV'] || !0x1 , _0x414526 = Math['floor'](_0x313e46[0x0]['length'] / 0x2) , _0x57cd0c = _0x4d95ed['offset'] || _0x414526; _0x57cd0c = _0x57cd0c > _0x414526 ? _0x414526 : Math['floor'](_0x57cd0c); var _0x59b861, _0x36c447, _0xed112d, _0x5a7a24, _0x54633f = 0x0 === _0x4d95ed['sideOrientation'] ? 0x0 : _0x4d95ed['sideOrientation'] || _0xb31206['a']['DEFAULTSIDE'], _0x1723b0 = _0x4d95ed['uvs'], _0x1c2b35 = _0x4d95ed['colors'], _0x177a50 = [], _0x172bea = [], _0x54ea4b = [], _0x105d2a = [], _0x228db8 = [], _0x440536 = [], _0x19264a = [], _0x5c6568 = [], _0x2f8882 = [], _0x4384ff = []; if (_0x313e46['length'] < 0x2) { var _0x2f4309 = [] , _0x191e8d = []; for (_0xed112d = 0x0; _0xed112d < _0x313e46[0x0]['length'] - _0x57cd0c; _0xed112d++) _0x2f4309['push'](_0x313e46[0x0][_0xed112d]), _0x191e8d['push'](_0x313e46[0x0][_0xed112d + _0x57cd0c]); _0x313e46 = [_0x2f4309, _0x191e8d]; } var _0x1e8fc6, _0x52cb74, _0x4056cc, _0x377a63, _0x30a401, _0x5fb975 = 0x0, _0x17ba9e = _0x4fc08e ? 0x1 : 0x0; for (_0x59b861 = _0x313e46[0x0]['length'], _0x36c447 = 0x0; _0x36c447 < _0x313e46['length']; _0x36c447++) { for (_0x19264a[_0x36c447] = 0x0, _0x228db8[_0x36c447] = [0x0], _0x59b861 = _0x59b861 < (_0x52cb74 = (_0x1e8fc6 = _0x313e46[_0x36c447])['length']) ? _0x59b861 : _0x52cb74, _0x5a7a24 = 0x0; _0x5a7a24 < _0x52cb74; ) _0x177a50['push'](_0x1e8fc6[_0x5a7a24]['x'], _0x1e8fc6[_0x5a7a24]['y'], _0x1e8fc6[_0x5a7a24]['z']), _0x5a7a24 > 0x0 && (_0x4056cc = _0x1e8fc6[_0x5a7a24]['subtract'](_0x1e8fc6[_0x5a7a24 - 0x1])['length']() + _0x19264a[_0x36c447], _0x228db8[_0x36c447]['push'](_0x4056cc), _0x19264a[_0x36c447] = _0x4056cc), _0x5a7a24++; _0x4fc08e && (_0x5a7a24--, _0x177a50['push'](_0x1e8fc6[0x0]['x'], _0x1e8fc6[0x0]['y'], _0x1e8fc6[0x0]['z']), _0x4056cc = _0x1e8fc6[_0x5a7a24]['subtract'](_0x1e8fc6[0x0])['length']() + _0x19264a[_0x36c447], _0x228db8[_0x36c447]['push'](_0x4056cc), _0x19264a[_0x36c447] = _0x4056cc), _0x2f8882[_0x36c447] = _0x52cb74 + _0x17ba9e, _0x4384ff[_0x36c447] = _0x5fb975, _0x5fb975 += _0x52cb74 + _0x17ba9e; } var _0x1929ee, _0x230043, _0x2c20b5 = null, _0x1623bc = null; for (_0xed112d = 0x0; _0xed112d < _0x59b861 + _0x17ba9e; _0xed112d++) { for (_0x5c6568[_0xed112d] = 0x0, _0x440536[_0xed112d] = [0x0], _0x36c447 = 0x0; _0x36c447 < _0x313e46['length'] - 0x1; _0x36c447++) _0x377a63 = _0x313e46[_0x36c447], _0x30a401 = _0x313e46[_0x36c447 + 0x1], _0xed112d === _0x59b861 ? (_0x2c20b5 = _0x377a63[0x0], _0x1623bc = _0x30a401[0x0]) : (_0x2c20b5 = _0x377a63[_0xed112d], _0x1623bc = _0x30a401[_0xed112d]), _0x4056cc = _0x1623bc['subtract'](_0x2c20b5)['length']() + _0x5c6568[_0xed112d], _0x440536[_0xed112d]['push'](_0x4056cc), _0x5c6568[_0xed112d] = _0x4056cc; _0x453f29 && _0x1623bc && _0x2c20b5 && (_0x377a63 = _0x313e46[_0x36c447], _0x30a401 = _0x313e46[0x0], _0xed112d === _0x59b861 && (_0x1623bc = _0x30a401[0x0]), _0x4056cc = _0x1623bc['subtract'](_0x2c20b5)['length']() + _0x5c6568[_0xed112d], _0x5c6568[_0xed112d] = _0x4056cc); } if (_0x1723b0) for (_0x36c447 = 0x0; _0x36c447 < _0x1723b0['length']; _0x36c447++) _0x105d2a['push'](_0x1723b0[_0x36c447]['x'], _0x1723b0[_0x36c447]['y']); else for (_0x36c447 = 0x0; _0x36c447 < _0x313e46['length']; _0x36c447++) for (_0xed112d = 0x0; _0xed112d < _0x59b861 + _0x17ba9e; _0xed112d++) _0x1929ee = 0x0 != _0x19264a[_0x36c447] ? _0x228db8[_0x36c447][_0xed112d] / _0x19264a[_0x36c447] : 0x0, _0x230043 = 0x0 != _0x5c6568[_0xed112d] ? _0x440536[_0xed112d][_0x36c447] / _0x5c6568[_0xed112d] : 0x0, _0x3a0c00 ? _0x105d2a['push'](_0x230043, _0x1929ee) : _0x105d2a['push'](_0x1929ee, _0x230043); for (var _0x3490be = 0x0, _0x4ff348 = _0x2f8882[_0x36c447 = 0x0] - 0x1, _0x5ced74 = _0x2f8882[_0x36c447 + 0x1] - 0x1, _0x41b47f = _0x4ff348 < _0x5ced74 ? _0x4ff348 : _0x5ced74, _0x302b39 = _0x4384ff[0x1] - _0x4384ff[0x0], _0x268d1e = _0x453f29 ? _0x2f8882['length'] : _0x2f8882['length'] - 0x1; _0x3490be <= _0x41b47f && _0x36c447 < _0x268d1e; ) _0x172bea['push'](_0x3490be, _0x3490be + _0x302b39, _0x3490be + 0x1), _0x172bea['push'](_0x3490be + _0x302b39 + 0x1, _0x3490be + 0x1, _0x3490be + _0x302b39), (_0x3490be += 0x1) === _0x41b47f && (++_0x36c447 === _0x2f8882['length'] - 0x1 ? (_0x302b39 = _0x4384ff[0x0] - _0x4384ff[_0x36c447], _0x4ff348 = _0x2f8882[_0x36c447] - 0x1, _0x5ced74 = _0x2f8882[0x0] - 0x1) : (_0x302b39 = _0x4384ff[_0x36c447 + 0x1] - _0x4384ff[_0x36c447], _0x4ff348 = _0x2f8882[_0x36c447] - 0x1, _0x5ced74 = _0x2f8882[_0x36c447 + 0x1] - 0x1), _0x3490be = _0x4384ff[_0x36c447], _0x41b47f = _0x4ff348 < _0x5ced74 ? _0x4ff348 + _0x3490be : _0x5ced74 + _0x3490be); if (_0xb31206['a']['ComputeNormals'](_0x177a50, _0x172bea, _0x54ea4b), _0x4fc08e) { var _0xaf80ee = 0x0 , _0x5a7f8f = 0x0; for (_0x36c447 = 0x0; _0x36c447 < _0x313e46['length']; _0x36c447++) _0xaf80ee = 0x3 * _0x4384ff[_0x36c447], _0x5a7f8f = _0x36c447 + 0x1 < _0x313e46['length'] ? 0x3 * (_0x4384ff[_0x36c447 + 0x1] - 0x1) : _0x54ea4b['length'] - 0x3, _0x54ea4b[_0xaf80ee] = 0.5 * (_0x54ea4b[_0xaf80ee] + _0x54ea4b[_0x5a7f8f]), _0x54ea4b[_0xaf80ee + 0x1] = 0.5 * (_0x54ea4b[_0xaf80ee + 0x1] + _0x54ea4b[_0x5a7f8f + 0x1]), _0x54ea4b[_0xaf80ee + 0x2] = 0.5 * (_0x54ea4b[_0xaf80ee + 0x2] + _0x54ea4b[_0x5a7f8f + 0x2]), _0x54ea4b[_0x5a7f8f] = _0x54ea4b[_0xaf80ee], _0x54ea4b[_0x5a7f8f + 0x1] = _0x54ea4b[_0xaf80ee + 0x1], _0x54ea4b[_0x5a7f8f + 0x2] = _0x54ea4b[_0xaf80ee + 0x2]; } _0xb31206['a']['_ComputeSides'](_0x54633f, _0x177a50, _0x172bea, _0x54ea4b, _0x105d2a, _0x4d95ed['frontUVs'], _0x4d95ed['backUVs']); var _0x958a48 = null; if (_0x1c2b35) { _0x958a48 = new Float32Array(0x4 * _0x1c2b35['length']); for (var _0x4ffbbc = 0x0; _0x4ffbbc < _0x1c2b35['length']; _0x4ffbbc++) _0x958a48[0x4 * _0x4ffbbc] = _0x1c2b35[_0x4ffbbc]['r'], _0x958a48[0x4 * _0x4ffbbc + 0x1] = _0x1c2b35[_0x4ffbbc]['g'], _0x958a48[0x4 * _0x4ffbbc + 0x2] = _0x1c2b35[_0x4ffbbc]['b'], _0x958a48[0x4 * _0x4ffbbc + 0x3] = _0x1c2b35[_0x4ffbbc]['a']; } var _0x4b8812 = new _0xb31206['a']() , _0x57b15e = new Float32Array(_0x177a50) , _0x55ae41 = new Float32Array(_0x54ea4b) , _0x1e279f = new Float32Array(_0x105d2a); return _0x4b8812['indices'] = _0x172bea, _0x4b8812['positions'] = _0x57b15e, _0x4b8812['normals'] = _0x55ae41, _0x4b8812['uvs'] = _0x1e279f, _0x958a48 && _0x4b8812['set'](_0x958a48, _0x4209f7['b']['ColorKind']), _0x4fc08e && (_0x4b8812['_idx'] = _0x4384ff), _0x4b8812; } , _0xb4719b['a']['CreateRibbon'] = function(_0x2ef2a0, _0x24ac87, _0x8fcfe1, _0x4de7ec, _0x34a89c, _0x3273ed, _0x1b23e3, _0x5b447f, _0x50e00b) { return void 0x0 === _0x8fcfe1 && (_0x8fcfe1 = !0x1), void 0x0 === _0x1b23e3 && (_0x1b23e3 = !0x1), _0x129ee8['CreateRibbon'](_0x2ef2a0, { 'pathArray': _0x24ac87, 'closeArray': _0x8fcfe1, 'closePath': _0x4de7ec, 'offset': _0x34a89c, 'updatable': _0x1b23e3, 'sideOrientation': _0x5b447f, 'instance': _0x50e00b }, _0x3273ed); } ; var _0x129ee8 = function() { function _0x4f75a1() {} return _0x4f75a1['CreateRibbon'] = function(_0x55be5e, _0xd9f8d7, _0x11de80) { void 0x0 === _0x11de80 && (_0x11de80 = null); var _0x250689 = _0xd9f8d7['pathArray'] , _0x3176f9 = _0xd9f8d7['closeArray'] , _0x17875c = _0xd9f8d7['closePath'] , _0x21551e = _0xb4719b['a']['_GetDefaultSideOrientation'](_0xd9f8d7['sideOrientation']) , _0x50268c = _0xd9f8d7['instance'] , _0x173b5c = _0xd9f8d7['updatable']; if (_0x50268c) { var _0x3f9795 = _0x47d24f['t']['Vector3'][0x0]['setAll'](Number['MAX_VALUE']) , _0x12c6f6 = _0x47d24f['t']['Vector3'][0x1]['setAll'](-Number['MAX_VALUE']) , _0x33603e = _0x50268c['getVerticesData'](_0x4209f7['b']['PositionKind']); if (function(_0x120066) { for (var _0x51edf9 = _0x250689[0x0]['length'], _0x24254d = _0x50268c, _0x42c6c3 = 0x0, _0x1e35ca = _0x24254d['_originalBuilderSideOrientation'] === _0xb4719b['a']['DOUBLESIDE'] ? 0x2 : 0x1, _0x1217f5 = 0x1; _0x1217f5 <= _0x1e35ca; ++_0x1217f5) for (var _0x214e4c = 0x0; _0x214e4c < _0x250689['length']; ++_0x214e4c) { var _0x2f778d = _0x250689[_0x214e4c] , _0x34b77e = _0x2f778d['length']; _0x51edf9 = _0x51edf9 < _0x34b77e ? _0x51edf9 : _0x34b77e; for (var _0x104b84 = 0x0; _0x104b84 < _0x51edf9; ++_0x104b84) { var _0x5d89a4 = _0x2f778d[_0x104b84]; _0x120066[_0x42c6c3] = _0x5d89a4['x'], _0x120066[_0x42c6c3 + 0x1] = _0x5d89a4['y'], _0x120066[_0x42c6c3 + 0x2] = _0x5d89a4['z'], _0x3f9795['minimizeInPlaceFromFloats'](_0x5d89a4['x'], _0x5d89a4['y'], _0x5d89a4['z']), _0x12c6f6['maximizeInPlaceFromFloats'](_0x5d89a4['x'], _0x5d89a4['y'], _0x5d89a4['z']), _0x42c6c3 += 0x3; } _0x24254d['_creationDataStorage'] && _0x24254d['_creationDataStorage']['closePath'] && (_0x5d89a4 = _0x2f778d[0x0], _0x120066[_0x42c6c3] = _0x5d89a4['x'], _0x120066[_0x42c6c3 + 0x1] = _0x5d89a4['y'], _0x120066[_0x42c6c3 + 0x2] = _0x5d89a4['z'], _0x42c6c3 += 0x3); } }(_0x33603e), _0x50268c['_boundingInfo'] ? _0x50268c['_boundingInfo']['reConstruct'](_0x3f9795, _0x12c6f6, _0x50268c['_worldMatrix']) : _0x50268c['_boundingInfo'] = new _0x3166db['a'](_0x3f9795,_0x12c6f6,_0x50268c['_worldMatrix']), _0x50268c['updateVerticesData'](_0x4209f7['b']['PositionKind'], _0x33603e, !0x1, !0x1), _0xd9f8d7['colors']) { for (var _0x4755c9 = _0x50268c['getVerticesData'](_0x4209f7['b']['ColorKind']), _0x2df902 = 0x0, _0x6f79e4 = 0x0; _0x2df902 < _0xd9f8d7['colors']['length']; _0x2df902++, _0x6f79e4 += 0x4) { var _0x41b79a = _0xd9f8d7['colors'][_0x2df902]; _0x4755c9[_0x6f79e4] = _0x41b79a['r'], _0x4755c9[_0x6f79e4 + 0x1] = _0x41b79a['g'], _0x4755c9[_0x6f79e4 + 0x2] = _0x41b79a['b'], _0x4755c9[_0x6f79e4 + 0x3] = _0x41b79a['a']; } _0x50268c['updateVerticesData'](_0x4209f7['b']['ColorKind'], _0x4755c9, !0x1, !0x1); } if (_0xd9f8d7['uvs']) { for (var _0x5b1cb0 = _0x50268c['getVerticesData'](_0x4209f7['b']['UVKind']), _0x3b8d5b = 0x0; _0x3b8d5b < _0xd9f8d7['uvs']['length']; _0x3b8d5b++) _0x5b1cb0[0x2 * _0x3b8d5b] = _0xd9f8d7['uvs'][_0x3b8d5b]['x'], _0x5b1cb0[0x2 * _0x3b8d5b + 0x1] = _0xd9f8d7['uvs'][_0x3b8d5b]['y']; _0x50268c['updateVerticesData'](_0x4209f7['b']['UVKind'], _0x5b1cb0, !0x1, !0x1); } if (!_0x50268c['areNormalsFrozen'] || _0x50268c['isFacetDataEnabled']) { var _0x3c8abd = _0x50268c['getIndices']() , _0x141d81 = _0x50268c['getVerticesData'](_0x4209f7['b']['NormalKind']) , _0x4384f3 = _0x50268c['isFacetDataEnabled'] ? _0x50268c['getFacetDataParameters']() : null; if (_0xb31206['a']['ComputeNormals'](_0x33603e, _0x3c8abd, _0x141d81, _0x4384f3), _0x50268c['_creationDataStorage'] && _0x50268c['_creationDataStorage']['closePath']) for (var _0x123660 = 0x0, _0x2e71a4 = 0x0, _0x2b5307 = 0x0; _0x2b5307 < _0x250689['length']; _0x2b5307++) _0x123660 = 0x3 * _0x50268c['_creationDataStorage']['idx'][_0x2b5307], _0x2e71a4 = _0x2b5307 + 0x1 < _0x250689['length'] ? 0x3 * (_0x50268c['_creationDataStorage']['idx'][_0x2b5307 + 0x1] - 0x1) : _0x141d81['length'] - 0x3, _0x141d81[_0x123660] = 0.5 * (_0x141d81[_0x123660] + _0x141d81[_0x2e71a4]), _0x141d81[_0x123660 + 0x1] = 0.5 * (_0x141d81[_0x123660 + 0x1] + _0x141d81[_0x2e71a4 + 0x1]), _0x141d81[_0x123660 + 0x2] = 0.5 * (_0x141d81[_0x123660 + 0x2] + _0x141d81[_0x2e71a4 + 0x2]), _0x141d81[_0x2e71a4] = _0x141d81[_0x123660], _0x141d81[_0x2e71a4 + 0x1] = _0x141d81[_0x123660 + 0x1], _0x141d81[_0x2e71a4 + 0x2] = _0x141d81[_0x123660 + 0x2]; _0x50268c['areNormalsFrozen'] || _0x50268c['updateVerticesData'](_0x4209f7['b']['NormalKind'], _0x141d81, !0x1, !0x1); } return _0x50268c; } var _0x12e6e1 = new _0xb4719b['a'](_0x55be5e,_0x11de80); _0x12e6e1['_originalBuilderSideOrientation'] = _0x21551e, _0x12e6e1['_creationDataStorage'] = new _0xb4719b['b'](); var _0x57a5e7 = _0xb31206['a']['CreateRibbon'](_0xd9f8d7); return _0x17875c && (_0x12e6e1['_creationDataStorage']['idx'] = _0x57a5e7['_idx']), _0x12e6e1['_creationDataStorage']['closePath'] = _0x17875c, _0x12e6e1['_creationDataStorage']['closeArray'] = _0x3176f9, _0x57a5e7['applyToMesh'](_0x12e6e1, _0x173b5c), _0x12e6e1; } , _0x4f75a1; }(); _0xb4719b['a']['ExtrudeShape'] = function(_0x411e81, _0xb8cd2c, _0xb5a7a7, _0x3f3f22, _0x5801f8, _0x3fc69c, _0x5989b2, _0x60a431, _0x5c56ee, _0x1ed639) { void 0x0 === _0x5989b2 && (_0x5989b2 = null); var _0x47e318 = { 'shape': _0xb8cd2c, 'path': _0xb5a7a7, 'scale': _0x3f3f22, 'rotation': _0x5801f8, 'cap': 0x0 === _0x3fc69c ? 0x0 : _0x3fc69c || _0xb4719b['a']['NO_CAP'], 'sideOrientation': _0x5c56ee, 'instance': _0x1ed639, 'updatable': _0x60a431 }; return _0x39250a['ExtrudeShape'](_0x411e81, _0x47e318, _0x5989b2); } , _0xb4719b['a']['ExtrudeShapeCustom'] = function(_0x1eec24, _0x171064, _0x3ff6dc, _0x577a9e, _0x1e3835, _0x595103, _0x87e994, _0xf0d9b0, _0x2236a7, _0x5dd23a, _0x1741f8, _0x546791) { var _0x5ac572 = { 'shape': _0x171064, 'path': _0x3ff6dc, 'scaleFunction': _0x577a9e, 'rotationFunction': _0x1e3835, 'ribbonCloseArray': _0x595103, 'ribbonClosePath': _0x87e994, 'cap': 0x0 === _0xf0d9b0 ? 0x0 : _0xf0d9b0 || _0xb4719b['a']['NO_CAP'], 'sideOrientation': _0x1741f8, 'instance': _0x546791, 'updatable': _0x5dd23a }; return _0x39250a['ExtrudeShapeCustom'](_0x1eec24, _0x5ac572, _0x2236a7); } ; var _0x39250a = function() { function _0x31253e() {} return _0x31253e['ExtrudeShape'] = function(_0x3def26, _0x4f8541, _0x164f79) { void 0x0 === _0x164f79 && (_0x164f79 = null); var _0x827aa = _0x4f8541['path'] , _0x91cf94 = _0x4f8541['shape'] , _0x165086 = _0x4f8541['scale'] || 0x1 , _0x167cc3 = _0x4f8541['rotation'] || 0x0 , _0x963a7b = 0x0 === _0x4f8541['cap'] ? 0x0 : _0x4f8541['cap'] || _0xb4719b['a']['NO_CAP'] , _0x176d72 = _0x4f8541['updatable'] , _0x213be7 = _0xb4719b['a']['_GetDefaultSideOrientation'](_0x4f8541['sideOrientation']) , _0x484b7e = _0x4f8541['instance'] || null , _0xd78459 = _0x4f8541['invertUV'] || !0x1; return _0x31253e['_ExtrudeShapeGeneric'](_0x3def26, _0x91cf94, _0x827aa, _0x165086, _0x167cc3, null, null, !0x1, !0x1, _0x963a7b, !0x1, _0x164f79, !!_0x176d72, _0x213be7, _0x484b7e, _0xd78459, _0x4f8541['frontUVs'] || null, _0x4f8541['backUVs'] || null); } , _0x31253e['ExtrudeShapeCustom'] = function(_0x4715d1, _0x2c9e6e, _0x4c2a1b) { void 0x0 === _0x4c2a1b && (_0x4c2a1b = null); var _0x429984 = _0x2c9e6e['path'] , _0xe97ae0 = _0x2c9e6e['shape'] , _0x364e49 = _0x2c9e6e['scaleFunction'] || function() { return 0x1; } , _0x5e9abd = _0x2c9e6e['rotationFunction'] || function() { return 0x0; } , _0x92229d = _0x2c9e6e['ribbonCloseArray'] || !0x1 , _0x351949 = _0x2c9e6e['ribbonClosePath'] || !0x1 , _0x35b394 = 0x0 === _0x2c9e6e['cap'] ? 0x0 : _0x2c9e6e['cap'] || _0xb4719b['a']['NO_CAP'] , _0x4fffff = _0x2c9e6e['updatable'] , _0x2018e4 = _0xb4719b['a']['_GetDefaultSideOrientation'](_0x2c9e6e['sideOrientation']) , _0x41d538 = _0x2c9e6e['instance'] , _0x5c9ff7 = _0x2c9e6e['invertUV'] || !0x1; return _0x31253e['_ExtrudeShapeGeneric'](_0x4715d1, _0xe97ae0, _0x429984, null, null, _0x364e49, _0x5e9abd, _0x92229d, _0x351949, _0x35b394, !0x0, _0x4c2a1b, !!_0x4fffff, _0x2018e4, _0x41d538 || null, _0x5c9ff7, _0x2c9e6e['frontUVs'] || null, _0x2c9e6e['backUVs'] || null); } , _0x31253e['_ExtrudeShapeGeneric'] = function(_0x3966a1, _0x25147f, _0x55ca73, _0x43a37c, _0x2d9d52, _0x1131f2, _0x3bf9b6, _0x4c600d, _0x559b5e, _0x147b9b, _0x2d10a4, _0x4a70cc, _0x4b4345, _0xf5595e, _0x30736c, _0x497490, _0x4daf2b, _0xcd652d) { var _0x205d47, _0x45c81e, _0x246527 = function(_0x3cee11, _0x4a6c64, _0x59d42e, _0xeb7383, _0x451547, _0x118117, _0x176f74, _0x53cb5c, _0x3f4fd3, _0x2ce56f) { for (var _0xed3edc = _0x59d42e['getTangents'](), _0x2c80a8 = _0x59d42e['getNormals'](), _0xa8a49b = _0x59d42e['getBinormals'](), _0x3dd51c = _0x59d42e['getDistances'](), _0x2e98c4 = 0x0, _0x5bd0ba = _0x2ce56f && _0x53cb5c ? _0x53cb5c : function() { return null !== _0x118117 ? _0x118117 : 0x0; } , _0x2f0196 = _0x2ce56f && _0x176f74 ? _0x176f74 : function() { return null !== _0x451547 ? _0x451547 : 0x1; } , _0x5a43fa = _0x3f4fd3 === _0xb4719b['a']['NO_CAP'] || _0x3f4fd3 === _0xb4719b['a']['CAP_END'] ? 0x0 : 0x2, _0xa56342 = _0x47d24f['t']['Matrix'][0x0], _0x56a706 = 0x0; _0x56a706 < _0x4a6c64['length']; _0x56a706++) { for (var _0x58ea90 = new Array(), _0x5c22a9 = _0x5bd0ba(_0x56a706, _0x3dd51c[_0x56a706]), _0x2d0d54 = _0x2f0196(_0x56a706, _0x3dd51c[_0x56a706]), _0x2cae82 = 0x0; _0x2cae82 < _0x3cee11['length']; _0x2cae82++) { _0x47d24f['j']['RotationAxisToRef'](_0xed3edc[_0x56a706], _0x2e98c4, _0xa56342); var _0x43fed6 = _0xed3edc[_0x56a706]['scale'](_0x3cee11[_0x2cae82]['z'])['add'](_0x2c80a8[_0x56a706]['scale'](_0x3cee11[_0x2cae82]['x']))['add'](_0xa8a49b[_0x56a706]['scale'](_0x3cee11[_0x2cae82]['y'])) , _0x226b49 = _0x58ea90[_0x2cae82] ? _0x58ea90[_0x2cae82] : _0x47d24f['x']['Zero'](); _0x47d24f['x']['TransformCoordinatesToRef'](_0x43fed6, _0xa56342, _0x226b49), _0x226b49['scaleInPlace'](_0x2d0d54)['addInPlace'](_0x4a6c64[_0x56a706]), _0x58ea90[_0x2cae82] = _0x226b49; } _0xeb7383[_0x5a43fa] = _0x58ea90, _0x2e98c4 += _0x5c22a9, _0x5a43fa++; } var _0x29c29 = function(_0x5af281) { var _0x373f18, _0x176705 = Array(), _0x26f24c = _0x47d24f['x']['Zero'](); for (_0x373f18 = 0x0; _0x373f18 < _0x5af281['length']; _0x373f18++) _0x26f24c['addInPlace'](_0x5af281[_0x373f18]); for (_0x26f24c['scaleInPlace'](0x1 / _0x5af281['length']), _0x373f18 = 0x0; _0x373f18 < _0x5af281['length']; _0x373f18++) _0x176705['push'](_0x26f24c); return _0x176705; }; switch (_0x3f4fd3) { case _0xb4719b['a']['NO_CAP']: break; case _0xb4719b['a']['CAP_START']: _0xeb7383[0x0] = _0x29c29(_0xeb7383[0x2]), _0xeb7383[0x1] = _0xeb7383[0x2]; break; case _0xb4719b['a']['CAP_END']: _0xeb7383[_0x5a43fa] = _0xeb7383[_0x5a43fa - 0x1], _0xeb7383[_0x5a43fa + 0x1] = _0x29c29(_0xeb7383[_0x5a43fa - 0x1]); break; case _0xb4719b['a']['CAP_ALL']: _0xeb7383[0x0] = _0x29c29(_0xeb7383[0x2]), _0xeb7383[0x1] = _0xeb7383[0x2], _0xeb7383[_0x5a43fa] = _0xeb7383[_0x5a43fa - 0x1], _0xeb7383[_0x5a43fa + 0x1] = _0x29c29(_0xeb7383[_0x5a43fa - 0x1]); } return _0xeb7383; }; if (_0x30736c) { var _0xae1bbe = _0x30736c['_creationDataStorage']; return _0x205d47 = _0xae1bbe['path3D']['update'](_0x55ca73), _0x45c81e = _0x246527(_0x25147f, _0x55ca73, _0xae1bbe['path3D'], _0xae1bbe['pathArray'], _0x43a37c, _0x2d9d52, _0x1131f2, _0x3bf9b6, _0xae1bbe['cap'], _0x2d10a4), _0x30736c = _0xb4719b['a']['CreateRibbon']('', _0x45c81e, !0x1, !0x1, 0x0, _0x4a70cc || void 0x0, !0x1, 0x0, _0x30736c); } _0x45c81e = _0x246527(_0x25147f, _0x55ca73, _0x205d47 = new _0x47d24f['m'](_0x55ca73), new Array(), _0x43a37c, _0x2d9d52, _0x1131f2, _0x3bf9b6, _0x147b9b = _0x147b9b < 0x0 || _0x147b9b > 0x3 ? 0x0 : _0x147b9b, _0x2d10a4); var _0xdc5c88 = _0x129ee8['CreateRibbon'](_0x3966a1, { 'pathArray': _0x45c81e, 'closeArray': _0x4c600d, 'closePath': _0x559b5e, 'updatable': _0x4b4345, 'sideOrientation': _0xf5595e, 'invertUV': _0x497490, 'frontUVs': _0x4daf2b || void 0x0, 'backUVs': _0xcd652d || void 0x0 }, _0x4a70cc); return _0xdc5c88['_creationDataStorage']['pathArray'] = _0x45c81e, _0xdc5c88['_creationDataStorage']['path3D'] = _0x205d47, _0xdc5c88['_creationDataStorage']['cap'] = _0x147b9b, _0xdc5c88; } , _0x31253e; }() , _0x23f8ee = function() { function _0x29fcbc(_0x34da30, _0x43f558) { var _0x160ca4 = this; void 0x0 === _0x34da30 && (_0x34da30 = !0x0), void 0x0 === _0x43f558 && (_0x43f558 = Ammo), this['_useDeltaForWorldStep'] = _0x34da30, this['bjsAMMO'] = {}, this['name'] = 'AmmoJSPlugin', this['_timeStep'] = 0x1 / 0x3c, this['_fixedTimeStep'] = 0x1 / 0x3c, this['_maxSteps'] = 0x5, this['_tmpQuaternion'] = new _0x47d24f['q'](), this['_tmpContactCallbackResult'] = !0x1, this['_tmpVector'] = new _0x47d24f['x'](), this['_tmpMatrix'] = new _0x47d24f['j'](), 'function' == typeof _0x43f558 ? _0x43f558(this['bjsAMMO']) : this['bjsAMMO'] = _0x43f558, this['isSupported']() ? (this['_collisionConfiguration'] = new this['bjsAMMO']['btSoftBodyRigidBodyCollisionConfiguration'](), this['_dispatcher'] = new this['bjsAMMO']['btCollisionDispatcher'](this['_collisionConfiguration']), this['_overlappingPairCache'] = new this['bjsAMMO']['btDbvtBroadphase'](), this['_solver'] = new this['bjsAMMO']['btSequentialImpulseConstraintSolver'](), this['_softBodySolver'] = new this['bjsAMMO']['btDefaultSoftBodySolver'](), this['world'] = new this['bjsAMMO']['btSoftRigidDynamicsWorld'](this['_dispatcher'],this['_overlappingPairCache'],this['_solver'],this['_collisionConfiguration'],this['_softBodySolver']), this['_tmpAmmoConcreteContactResultCallback'] = new this['bjsAMMO']['ConcreteContactResultCallback'](), this['_tmpAmmoConcreteContactResultCallback']['addSingleResult'] = function() { _0x160ca4['_tmpContactCallbackResult'] = !0x0; } , this['_raycastResult'] = new _0x3ec199(), this['_tmpAmmoTransform'] = new this['bjsAMMO']['btTransform'](), this['_tmpAmmoTransform']['setIdentity'](), this['_tmpAmmoQuaternion'] = new this['bjsAMMO']['btQuaternion'](0x0,0x0,0x0,0x1), this['_tmpAmmoVectorA'] = new this['bjsAMMO']['btVector3'](0x0,0x0,0x0), this['_tmpAmmoVectorB'] = new this['bjsAMMO']['btVector3'](0x0,0x0,0x0), this['_tmpAmmoVectorC'] = new this['bjsAMMO']['btVector3'](0x0,0x0,0x0), this['_tmpAmmoVectorD'] = new this['bjsAMMO']['btVector3'](0x0,0x0,0x0)) : _0x3f98cb['a']['Error']('AmmoJS\x20is\x20not\x20available.\x20Please\x20make\x20sure\x20you\x20included\x20the\x20js\x20file.'); } return _0x29fcbc['prototype']['setGravity'] = function(_0x2dce75) { this['_tmpAmmoVectorA']['setValue'](_0x2dce75['x'], _0x2dce75['y'], _0x2dce75['z']), this['world']['setGravity'](this['_tmpAmmoVectorA']), this['world']['getWorldInfo']()['set_m_gravity'](this['_tmpAmmoVectorA']); } , _0x29fcbc['prototype']['setTimeStep'] = function(_0x32fe59) { this['_timeStep'] = _0x32fe59; } , _0x29fcbc['prototype']['setFixedTimeStep'] = function(_0x56f923) { this['_fixedTimeStep'] = _0x56f923; } , _0x29fcbc['prototype']['setMaxSteps'] = function(_0xf15c9e) { this['_maxSteps'] = _0xf15c9e; } , _0x29fcbc['prototype']['getTimeStep'] = function() { return this['_timeStep']; } , _0x29fcbc['prototype']['_isImpostorInContact'] = function(_0xbb20ed) { return this['_tmpContactCallbackResult'] = !0x1, this['world']['contactTest'](_0xbb20ed['physicsBody'], this['_tmpAmmoConcreteContactResultCallback']), this['_tmpContactCallbackResult']; } , _0x29fcbc['prototype']['_isImpostorPairInContact'] = function(_0x4223d3, _0x571535) { return this['_tmpContactCallbackResult'] = !0x1, this['world']['contactPairTest'](_0x4223d3['physicsBody'], _0x571535['physicsBody'], this['_tmpAmmoConcreteContactResultCallback']), this['_tmpContactCallbackResult']; } , _0x29fcbc['prototype']['_stepSimulation'] = function(_0x465f71, _0x2cb791, _0x444d25) { if (void 0x0 === _0x465f71 && (_0x465f71 = 0x1 / 0x3c), void 0x0 === _0x2cb791 && (_0x2cb791 = 0xa), void 0x0 === _0x444d25 && (_0x444d25 = 0x1 / 0x3c), 0x0 == _0x2cb791) this['world']['stepSimulation'](_0x465f71, 0x0); else for (; _0x2cb791 > 0x0 && _0x465f71 > 0x0; ) _0x465f71 - _0x444d25 < _0x444d25 ? (this['world']['stepSimulation'](_0x465f71, 0x0), _0x465f71 = 0x0) : (_0x465f71 -= _0x444d25, this['world']['stepSimulation'](_0x444d25, 0x0)), _0x2cb791--; } , _0x29fcbc['prototype']['executeStep'] = function(_0x408a2e, _0x5433a3) { for (var _0x3fb799 = 0x0, _0x59cecf = _0x5433a3; _0x3fb799 < _0x59cecf['length']; _0x3fb799++) { var _0x1718a0 = _0x59cecf[_0x3fb799]; _0x1718a0['soft'] || _0x1718a0['beforeStep'](); } this['_stepSimulation'](this['_useDeltaForWorldStep'] ? _0x408a2e : this['_timeStep'], this['_maxSteps'], this['_fixedTimeStep']); for (var _0x3709f7 = 0x0, _0x23b110 = _0x5433a3; _0x3709f7 < _0x23b110['length']; _0x3709f7++) { var _0x302d34 = _0x23b110[_0x3709f7]; if (_0x302d34['soft'] ? this['_afterSoftStep'](_0x302d34) : _0x302d34['afterStep'](), _0x302d34['_onPhysicsCollideCallbacks']['length'] > 0x0 && this['_isImpostorInContact'](_0x302d34)) for (var _0x4576b3 = 0x0, _0x3e4e53 = _0x302d34['_onPhysicsCollideCallbacks']; _0x4576b3 < _0x3e4e53['length']; _0x4576b3++) for (var _0x5a8d70 = 0x0, _0x40581c = _0x3e4e53[_0x4576b3]['otherImpostors']; _0x5a8d70 < _0x40581c['length']; _0x5a8d70++) { var _0x5655b8 = _0x40581c[_0x5a8d70]; (_0x302d34['physicsBody']['isActive']() || _0x5655b8['physicsBody']['isActive']()) && this['_isImpostorPairInContact'](_0x302d34, _0x5655b8) && (_0x302d34['onCollide']({ 'body': _0x5655b8['physicsBody'] }), _0x5655b8['onCollide']({ 'body': _0x302d34['physicsBody'] })); } } } , _0x29fcbc['prototype']['_afterSoftStep'] = function(_0x2950fb) { _0x2950fb['type'] === _0x216137['a']['RopeImpostor'] ? this['_ropeStep'](_0x2950fb) : this['_softbodyOrClothStep'](_0x2950fb); } , _0x29fcbc['prototype']['_ropeStep'] = function(_0x230e66) { for (var _0x49bc5d, _0x1f1ba3, _0x46f6b9, _0x52e2c4, _0x63f786 = _0x230e66['physicsBody']['get_m_nodes'](), _0x188e05 = _0x63f786['size'](), _0x42d7c2 = new Array(), _0x376342 = 0x0; _0x376342 < _0x188e05; _0x376342++) _0x1f1ba3 = (_0x49bc5d = _0x63f786['at'](_0x376342)['get_m_x']())['x'](), _0x46f6b9 = _0x49bc5d['y'](), _0x52e2c4 = _0x49bc5d['z'](), _0x42d7c2['push'](new _0x47d24f['x'](_0x1f1ba3,_0x46f6b9,_0x52e2c4)); var _0x2aab27 = _0x230e66['object'] , _0x114b2d = _0x230e66['getParam']('shape'); _0x230e66['_isFromLine'] ? _0x230e66['object'] = _0x4c2fa7['a']['CreateLines']('lines', { 'points': _0x42d7c2, 'instance': _0x2aab27 }) : _0x230e66['object'] = _0x39250a['ExtrudeShape']('ext', { 'shape': _0x114b2d, 'path': _0x42d7c2, 'instance': _0x2aab27 }); } , _0x29fcbc['prototype']['_softbodyOrClothStep'] = function(_0x37d17) { var _0x2fb0b7 = _0x37d17['type'] === _0x216137['a']['ClothImpostor'] ? 0x1 : -0x1 , _0x2a589f = _0x37d17['object'] , _0xbe5b82 = _0x2a589f['getVerticesData'](_0x4209f7['b']['PositionKind']); _0xbe5b82 || (_0xbe5b82 = []); var _0x2bc988 = _0x2a589f['getVerticesData'](_0x4209f7['b']['NormalKind']); _0x2bc988 || (_0x2bc988 = []); for (var _0x3f9f4d, _0x2689ca, _0x440b12, _0x391fbb, _0x244736, _0x4efbbe, _0x16bbd1, _0x570130, _0x542396 = _0xbe5b82['length'] / 0x3, _0x58ce6c = _0x37d17['physicsBody']['get_m_nodes'](), _0x4e9917 = 0x0; _0x4e9917 < _0x542396; _0x4e9917++) { var _0x29d519; _0x440b12 = (_0x2689ca = (_0x3f9f4d = _0x58ce6c['at'](_0x4e9917))['get_m_x']())['x'](), _0x391fbb = _0x2689ca['y'](), _0x244736 = _0x2689ca['z']() * _0x2fb0b7, _0x4efbbe = (_0x29d519 = _0x3f9f4d['get_m_n']())['x'](), _0x16bbd1 = _0x29d519['y'](), _0x570130 = _0x29d519['z']() * _0x2fb0b7, _0xbe5b82[0x3 * _0x4e9917] = _0x440b12, _0xbe5b82[0x3 * _0x4e9917 + 0x1] = _0x391fbb, _0xbe5b82[0x3 * _0x4e9917 + 0x2] = _0x244736, _0x2bc988[0x3 * _0x4e9917] = _0x4efbbe, _0x2bc988[0x3 * _0x4e9917 + 0x1] = _0x16bbd1, _0x2bc988[0x3 * _0x4e9917 + 0x2] = _0x570130; } var _0xcaf9fd = new _0xb31206['a'](); _0xcaf9fd['positions'] = _0xbe5b82, _0xcaf9fd['normals'] = _0x2bc988, _0xcaf9fd['uvs'] = _0x2a589f['getVerticesData'](_0x4209f7['b']['UVKind']), _0xcaf9fd['colors'] = _0x2a589f['getVerticesData'](_0x4209f7['b']['ColorKind']), _0x2a589f && _0x2a589f['getIndices'] && (_0xcaf9fd['indices'] = _0x2a589f['getIndices']()), _0xcaf9fd['applyToMesh'](_0x2a589f); } , _0x29fcbc['prototype']['applyImpulse'] = function(_0x13978e, _0x1ae824, _0x11c24e) { if (_0x13978e['soft']) _0x3f98cb['a']['Warn']('Cannot\x20be\x20applied\x20to\x20a\x20soft\x20body'); else { _0x13978e['physicsBody']['activate'](); var _0x5402ab = this['_tmpAmmoVectorA'] , _0x5b39f2 = this['_tmpAmmoVectorB']; _0x13978e['object'] && _0x13978e['object']['getWorldMatrix'] && (_0x13978e['object']['getWorldMatrix']()['invertToRef'](this['_tmpMatrix']), _0x47d24f['x']['TransformCoordinatesToRef'](_0x11c24e, this['_tmpMatrix'], this['_tmpVector']), _0x11c24e = this['_tmpVector']), _0x5402ab['setValue'](_0x11c24e['x'], _0x11c24e['y'], _0x11c24e['z']), _0x5b39f2['setValue'](_0x1ae824['x'], _0x1ae824['y'], _0x1ae824['z']), _0x13978e['physicsBody']['applyImpulse'](_0x5b39f2, _0x5402ab); } } , _0x29fcbc['prototype']['applyForce'] = function(_0x3cd51d, _0xeb857d, _0x4327d8) { if (_0x3cd51d['soft']) _0x3f98cb['a']['Warn']('Cannot\x20be\x20applied\x20to\x20a\x20soft\x20body'); else { _0x3cd51d['physicsBody']['activate'](); var _0x5878d6 = this['_tmpAmmoVectorA'] , _0xe50ff3 = this['_tmpAmmoVectorB']; _0x3cd51d['object'] && _0x3cd51d['object']['getWorldMatrix'] && (_0x3cd51d['object']['getWorldMatrix']()['invertToRef'](this['_tmpMatrix']), _0x47d24f['x']['TransformCoordinatesToRef'](_0x4327d8, this['_tmpMatrix'], this['_tmpVector']), _0x4327d8 = this['_tmpVector']), _0x5878d6['setValue'](_0x4327d8['x'], _0x4327d8['y'], _0x4327d8['z']), _0xe50ff3['setValue'](_0xeb857d['x'], _0xeb857d['y'], _0xeb857d['z']), _0x3cd51d['physicsBody']['applyForce'](_0xe50ff3, _0x5878d6); } } , _0x29fcbc['prototype']['generatePhysicsBody'] = function(_0x405108) { if (_0x405108['_pluginData']['toDispose'] = [], _0x405108['parent']) _0x405108['physicsBody'] && (this['removePhysicsBody'](_0x405108), _0x405108['forceUpdate']()); else if (_0x405108['isBodyInitRequired']()) { var _0x599971 = this['_createShape'](_0x405108) , _0x11b3f4 = _0x405108['getParam']('mass'); if (_0x405108['_pluginData']['mass'] = _0x11b3f4, _0x405108['soft']) _0x599971['get_m_cfg']()['set_collisions'](0x11), _0x599971['get_m_cfg']()['set_kDP'](_0x405108['getParam']('damping')), Ammo['castObject'](_0x599971, Ammo['btCollisionObject'])['getCollisionShape']()['setMargin'](_0x405108['getParam']('margin')), _0x599971['setActivationState'](_0x29fcbc['DISABLE_DEACTIVATION_FLAG']), this['world']['addSoftBody'](_0x599971, 0x1, -0x1), _0x405108['physicsBody'] = _0x599971, _0x405108['_pluginData']['toDispose']['push'](_0x599971), this['setBodyPressure'](_0x405108, 0x0), _0x405108['type'] === _0x216137['a']['SoftbodyImpostor'] && this['setBodyPressure'](_0x405108, _0x405108['getParam']('pressure')), this['setBodyStiffness'](_0x405108, _0x405108['getParam']('stiffness')), this['setBodyVelocityIterations'](_0x405108, _0x405108['getParam']('velocityIterations')), this['setBodyPositionIterations'](_0x405108, _0x405108['getParam']('positionIterations')); else { var _0x3a3727 = new Ammo['btVector3'](0x0,0x0,0x0) , _0xcb93c7 = new Ammo['btTransform'](); _0xcb93c7['setIdentity'](), 0x0 !== _0x11b3f4 && _0x599971['calculateLocalInertia'](_0x11b3f4, _0x3a3727), this['_tmpAmmoVectorA']['setValue'](_0x405108['object']['position']['x'], _0x405108['object']['position']['y'], _0x405108['object']['position']['z']), this['_tmpAmmoQuaternion']['setValue'](_0x405108['object']['rotationQuaternion']['x'], _0x405108['object']['rotationQuaternion']['y'], _0x405108['object']['rotationQuaternion']['z'], _0x405108['object']['rotationQuaternion']['w']), _0xcb93c7['setOrigin'](this['_tmpAmmoVectorA']), _0xcb93c7['setRotation'](this['_tmpAmmoQuaternion']); var _0x3d9d71 = new Ammo['btDefaultMotionState'](_0xcb93c7) , _0x4f2988 = new Ammo['btRigidBodyConstructionInfo'](_0x11b3f4,_0x3d9d71,_0x599971,_0x3a3727) , _0x84f13e = new Ammo['btRigidBody'](_0x4f2988); 0x0 === _0x11b3f4 && (_0x84f13e['setCollisionFlags'](_0x84f13e['getCollisionFlags']() | _0x29fcbc['KINEMATIC_FLAG']), _0x84f13e['setActivationState'](_0x29fcbc['DISABLE_DEACTIVATION_FLAG'])), _0x405108['type'] != _0x216137['a']['NoImpostor'] || _0x599971['getChildShape'] || _0x84f13e['setCollisionFlags'](_0x84f13e['getCollisionFlags']() | _0x29fcbc['DISABLE_COLLISION_FLAG']), this['world']['addRigidBody'](_0x84f13e), _0x405108['physicsBody'] = _0x84f13e, _0x405108['_pluginData']['toDispose'] = _0x405108['_pluginData']['toDispose']['concat']([_0x84f13e, _0x4f2988, _0x3d9d71, _0xcb93c7, _0x3a3727, _0x599971]); } this['setBodyRestitution'](_0x405108, _0x405108['getParam']('restitution')), this['setBodyFriction'](_0x405108, _0x405108['getParam']('friction')); } } , _0x29fcbc['prototype']['removePhysicsBody'] = function(_0x998404) { var _0x54f10e = this; this['world'] && (this['world']['removeRigidBody'](_0x998404['physicsBody']), _0x998404['_pluginData'] && _0x998404['_pluginData']['toDispose']['forEach'](function(_0x10b7f5) { _0x54f10e['bjsAMMO']['destroy'](_0x10b7f5); })); } , _0x29fcbc['prototype']['generateJoint'] = function(_0x4c2a77) { var _0x59c57c = _0x4c2a77['mainImpostor']['physicsBody'] , _0x1acab0 = _0x4c2a77['connectedImpostor']['physicsBody']; if (_0x59c57c && _0x1acab0) { var _0x3ac3ee, _0x1a3871 = _0x4c2a77['joint']['jointData']; switch (_0x1a3871['mainPivot'] || (_0x1a3871['mainPivot'] = new _0x47d24f['x'](0x0,0x0,0x0)), _0x1a3871['connectedPivot'] || (_0x1a3871['connectedPivot'] = new _0x47d24f['x'](0x0,0x0,0x0)), _0x4c2a77['joint']['type']) { case _0x400e0d['e']['DistanceJoint']: var _0x391843 = _0x1a3871['maxDistance']; _0x391843 && (_0x1a3871['mainPivot'] = new _0x47d24f['x'](0x0,-_0x391843 / 0x2,0x0), _0x1a3871['connectedPivot'] = new _0x47d24f['x'](0x0,_0x391843 / 0x2,0x0)), _0x3ac3ee = new Ammo['btPoint2PointConstraint'](_0x59c57c,_0x1acab0,new Ammo['btVector3'](_0x1a3871['mainPivot']['x'],_0x1a3871['mainPivot']['y'],_0x1a3871['mainPivot']['z']),new Ammo['btVector3'](_0x1a3871['connectedPivot']['x'],_0x1a3871['connectedPivot']['y'],_0x1a3871['connectedPivot']['z'])); break; case _0x400e0d['e']['HingeJoint']: _0x1a3871['mainAxis'] || (_0x1a3871['mainAxis'] = new _0x47d24f['x'](0x0,0x0,0x0)), _0x1a3871['connectedAxis'] || (_0x1a3871['connectedAxis'] = new _0x47d24f['x'](0x0,0x0,0x0)); var _0x24b61f = new Ammo['btVector3'](_0x1a3871['mainAxis']['x'],_0x1a3871['mainAxis']['y'],_0x1a3871['mainAxis']['z']) , _0x37bf46 = new Ammo['btVector3'](_0x1a3871['connectedAxis']['x'],_0x1a3871['connectedAxis']['y'],_0x1a3871['connectedAxis']['z']); _0x3ac3ee = new Ammo['btHingeConstraint'](_0x59c57c,_0x1acab0,new Ammo['btVector3'](_0x1a3871['mainPivot']['x'],_0x1a3871['mainPivot']['y'],_0x1a3871['mainPivot']['z']),new Ammo['btVector3'](_0x1a3871['connectedPivot']['x'],_0x1a3871['connectedPivot']['y'],_0x1a3871['connectedPivot']['z']),_0x24b61f,_0x37bf46); break; case _0x400e0d['e']['BallAndSocketJoint']: _0x3ac3ee = new Ammo['btPoint2PointConstraint'](_0x59c57c,_0x1acab0,new Ammo['btVector3'](_0x1a3871['mainPivot']['x'],_0x1a3871['mainPivot']['y'],_0x1a3871['mainPivot']['z']),new Ammo['btVector3'](_0x1a3871['connectedPivot']['x'],_0x1a3871['connectedPivot']['y'],_0x1a3871['connectedPivot']['z'])); break; default: _0x3f98cb['a']['Warn']('JointType\x20not\x20currently\x20supported\x20by\x20the\x20Ammo\x20plugin,\x20falling\x20back\x20to\x20PhysicsJoint.BallAndSocketJoint'), _0x3ac3ee = new Ammo['btPoint2PointConstraint'](_0x59c57c,_0x1acab0,new Ammo['btVector3'](_0x1a3871['mainPivot']['x'],_0x1a3871['mainPivot']['y'],_0x1a3871['mainPivot']['z']),new Ammo['btVector3'](_0x1a3871['connectedPivot']['x'],_0x1a3871['connectedPivot']['y'],_0x1a3871['connectedPivot']['z'])); } this['world']['addConstraint'](_0x3ac3ee, !_0x4c2a77['joint']['jointData']['collision']), _0x4c2a77['joint']['physicsJoint'] = _0x3ac3ee; } } , _0x29fcbc['prototype']['removeJoint'] = function(_0x4fc910) { this['world'] && this['world']['removeConstraint'](_0x4fc910['joint']['physicsJoint']); } , _0x29fcbc['prototype']['_addMeshVerts'] = function(_0x5b104e, _0x1ce47e, _0x4dec9f) { var _0x30ee89 = this , _0x13bd25 = 0x0; if (_0x4dec9f && _0x4dec9f['getIndices'] && _0x4dec9f['getWorldMatrix'] && _0x4dec9f['getChildMeshes']) { var _0x3957fb = _0x4dec9f['getIndices'](); _0x3957fb || (_0x3957fb = []); var _0x8aee6f = _0x4dec9f['getVerticesData'](_0x4209f7['b']['PositionKind']); _0x8aee6f || (_0x8aee6f = []), _0x4dec9f['computeWorldMatrix'](!0x1); for (var _0x48d3d2 = _0x3957fb['length'] / 0x3, _0x2350ca = 0x0; _0x2350ca < _0x48d3d2; _0x2350ca++) { for (var _0x4dc728 = [], _0x29cdb7 = 0x0; _0x29cdb7 < 0x3; _0x29cdb7++) { var _0x51e70, _0x52316f = new _0x47d24f['x'](_0x8aee6f[0x3 * _0x3957fb[0x3 * _0x2350ca + _0x29cdb7] + 0x0],_0x8aee6f[0x3 * _0x3957fb[0x3 * _0x2350ca + _0x29cdb7] + 0x1],_0x8aee6f[0x3 * _0x3957fb[0x3 * _0x2350ca + _0x29cdb7] + 0x2]); _0x47d24f['j']['ScalingToRef'](_0x4dec9f['scaling']['x'], _0x4dec9f['scaling']['y'], _0x4dec9f['scaling']['z'], this['_tmpMatrix']), _0x52316f = _0x47d24f['x']['TransformCoordinates'](_0x52316f, this['_tmpMatrix']), (_0x51e70 = 0x0 == _0x29cdb7 ? this['_tmpAmmoVectorA'] : 0x1 == _0x29cdb7 ? this['_tmpAmmoVectorB'] : this['_tmpAmmoVectorC'])['setValue'](_0x52316f['x'], _0x52316f['y'], _0x52316f['z']), _0x4dc728['push'](_0x51e70); } _0x5b104e['addTriangle'](_0x4dc728[0x0], _0x4dc728[0x1], _0x4dc728[0x2]), _0x13bd25++; } _0x4dec9f['getChildMeshes']()['forEach'](function(_0xcf8ab6) { _0x13bd25 += _0x30ee89['_addMeshVerts'](_0x5b104e, _0x1ce47e, _0xcf8ab6); }); } return _0x13bd25; } , _0x29fcbc['prototype']['_softVertexData'] = function(_0x59608d) { var _0x423971 = _0x59608d['object']; if (_0x423971 && _0x423971['getIndices'] && _0x423971['getWorldMatrix'] && _0x423971['getChildMeshes']) { var _0x2ee28d = _0x423971['getIndices'](); _0x2ee28d || (_0x2ee28d = []); var _0x2e71fb = _0x423971['getVerticesData'](_0x4209f7['b']['PositionKind']); _0x2e71fb || (_0x2e71fb = []); var _0x274b35 = _0x423971['getVerticesData'](_0x4209f7['b']['NormalKind']); _0x274b35 || (_0x274b35 = []), _0x423971['computeWorldMatrix'](!0x1); for (var _0x156cbd = [], _0x33a78d = [], _0x308365 = 0x0; _0x308365 < _0x2e71fb['length']; _0x308365 += 0x3) { var _0x4dddbb = new _0x47d24f['x'](_0x2e71fb[_0x308365],_0x2e71fb[_0x308365 + 0x1],_0x2e71fb[_0x308365 + 0x2]) , _0x189002 = new _0x47d24f['x'](_0x274b35[_0x308365],_0x274b35[_0x308365 + 0x1],_0x274b35[_0x308365 + 0x2]); _0x4dddbb = _0x47d24f['x']['TransformCoordinates'](_0x4dddbb, _0x423971['getWorldMatrix']()), _0x189002 = _0x47d24f['x']['TransformNormal'](_0x189002, _0x423971['getWorldMatrix']()), _0x156cbd['push'](_0x4dddbb['x'], _0x4dddbb['y'], _0x4dddbb['z']), _0x33a78d['push'](_0x189002['x'], _0x189002['y'], _0x189002['z']); } var _0x58c421 = new _0xb31206['a'](); return _0x58c421['positions'] = _0x156cbd, _0x58c421['normals'] = _0x33a78d, _0x58c421['uvs'] = _0x423971['getVerticesData'](_0x4209f7['b']['UVKind']), _0x58c421['colors'] = _0x423971['getVerticesData'](_0x4209f7['b']['ColorKind']), _0x423971 && _0x423971['getIndices'] && (_0x58c421['indices'] = _0x423971['getIndices']()), _0x58c421['applyToMesh'](_0x423971), _0x423971['position'] = _0x47d24f['x']['Zero'](), _0x423971['rotationQuaternion'] = null, _0x423971['rotation'] = _0x47d24f['x']['Zero'](), _0x423971['computeWorldMatrix'](!0x0), _0x58c421; } return _0xb31206['a']['ExtractFromMesh'](_0x423971); } , _0x29fcbc['prototype']['_createSoftbody'] = function(_0x2dba48) { var _0x270aa4 = _0x2dba48['object']; if (_0x270aa4 && _0x270aa4['getIndices']) { var _0x45204e = _0x270aa4['getIndices'](); _0x45204e || (_0x45204e = []); var _0x3c23ca = this['_softVertexData'](_0x2dba48) , _0x2d6753 = _0x3c23ca['positions'] , _0xbdadba = _0x3c23ca['normals']; if (null === _0x2d6753 || null === _0xbdadba) return new Ammo['btCompoundShape'](); for (var _0x4cbb4c = [], _0x1f631c = [], _0x4f540f = 0x0; _0x4f540f < _0x2d6753['length']; _0x4f540f += 0x3) { var _0x14d5d7 = new _0x47d24f['x'](_0x2d6753[_0x4f540f],_0x2d6753[_0x4f540f + 0x1],_0x2d6753[_0x4f540f + 0x2]) , _0x72a936 = new _0x47d24f['x'](_0xbdadba[_0x4f540f],_0xbdadba[_0x4f540f + 0x1],_0xbdadba[_0x4f540f + 0x2]); _0x4cbb4c['push'](_0x14d5d7['x'], _0x14d5d7['y'], -_0x14d5d7['z']), _0x1f631c['push'](_0x72a936['x'], _0x72a936['y'], -_0x72a936['z']); } var _0x48d56e = new Ammo['btSoftBodyHelpers']()['CreateFromTriMesh'](this['world']['getWorldInfo'](), _0x4cbb4c, _0x270aa4['getIndices'](), _0x45204e['length'] / 0x3, !0x0) , _0x2e7ed2 = _0x2d6753['length'] / 0x3 , _0x58d61d = _0x48d56e['get_m_nodes'](); for (_0x4f540f = 0x0; _0x4f540f < _0x2e7ed2; _0x4f540f++) { var _0x588a3f; (_0x588a3f = _0x58d61d['at'](_0x4f540f)['get_m_n']())['setX'](_0x1f631c[0x3 * _0x4f540f]), _0x588a3f['setY'](_0x1f631c[0x3 * _0x4f540f + 0x1]), _0x588a3f['setZ'](_0x1f631c[0x3 * _0x4f540f + 0x2]); } return _0x48d56e; } } , _0x29fcbc['prototype']['_createCloth'] = function(_0x3a9150) { var _0x4443bb = _0x3a9150['object']; if (_0x4443bb && _0x4443bb['getIndices']) { var _0x2d6dde = _0x4443bb['getIndices'](); _0x2d6dde || (_0x2d6dde = []); var _0x200cac = this['_softVertexData'](_0x3a9150) , _0x5dda78 = _0x200cac['positions'] , _0x3b0c75 = _0x200cac['normals']; if (null === _0x5dda78 || null === _0x3b0c75) return new Ammo['btCompoundShape'](); var _0x25343f = _0x5dda78['length'] , _0x44e059 = Math['sqrt'](_0x25343f / 0x3); _0x3a9150['segments'] = _0x44e059; var _0x2ecccc = _0x44e059 - 0x1; return this['_tmpAmmoVectorA']['setValue'](_0x5dda78[0x0], _0x5dda78[0x1], _0x5dda78[0x2]), this['_tmpAmmoVectorB']['setValue'](_0x5dda78[0x3 * _0x2ecccc], _0x5dda78[0x3 * _0x2ecccc + 0x1], _0x5dda78[0x3 * _0x2ecccc + 0x2]), this['_tmpAmmoVectorD']['setValue'](_0x5dda78[_0x25343f - 0x3], _0x5dda78[_0x25343f - 0x2], _0x5dda78[_0x25343f - 0x1]), this['_tmpAmmoVectorC']['setValue'](_0x5dda78[_0x25343f - 0x3 - 0x3 * _0x2ecccc], _0x5dda78[_0x25343f - 0x2 - 0x3 * _0x2ecccc], _0x5dda78[_0x25343f - 0x1 - 0x3 * _0x2ecccc]), new Ammo['btSoftBodyHelpers']()['CreatePatch'](this['world']['getWorldInfo'](), this['_tmpAmmoVectorA'], this['_tmpAmmoVectorB'], this['_tmpAmmoVectorC'], this['_tmpAmmoVectorD'], _0x44e059, _0x44e059, _0x3a9150['getParam']('fixedPoints'), !0x0); } } , _0x29fcbc['prototype']['_createRope'] = function(_0x1379a3) { var _0x12b8fb, _0x265de0, _0x4ffcb2 = this['_softVertexData'](_0x1379a3), _0x2da529 = _0x4ffcb2['positions'], _0x32125c = _0x4ffcb2['normals']; if (null === _0x2da529 || null === _0x32125c) return new Ammo['btCompoundShape'](); _0x4ffcb2['applyToMesh'](_0x1379a3['object'], !0x0), _0x1379a3['_isFromLine'] = !0x0; if (0x0 === _0x32125c['map'](function(_0x41b065) { return _0x41b065 * _0x41b065; })['reduce'](function(_0x4b9dc0, _0x10c430) { return _0x4b9dc0 + _0x10c430; })) _0x265de0 = (_0x12b8fb = _0x2da529['length']) / 0x3 - 0x1, this['_tmpAmmoVectorA']['setValue'](_0x2da529[0x0], _0x2da529[0x1], _0x2da529[0x2]), this['_tmpAmmoVectorB']['setValue'](_0x2da529[_0x12b8fb - 0x3], _0x2da529[_0x12b8fb - 0x2], _0x2da529[_0x12b8fb - 0x1]); else { _0x1379a3['_isFromLine'] = !0x1; var _0x53cf3c = _0x1379a3['getParam']('path'); if (null === _0x1379a3['getParam']('shape')) return _0x3f98cb['a']['Warn']('No\x20shape\x20available\x20for\x20extruded\x20mesh'), new Ammo['btCompoundShape'](); if (_0x2da529['length'] % (0x3 * _0x53cf3c['length']) != 0x0) return _0x3f98cb['a']['Warn']('Path\x20does\x20not\x20match\x20extrusion'), new Ammo['btCompoundShape'](); _0x265de0 = (_0x12b8fb = _0x53cf3c['length']) - 0x1, this['_tmpAmmoVectorA']['setValue'](_0x53cf3c[0x0]['x'], _0x53cf3c[0x0]['y'], _0x53cf3c[0x0]['z']), this['_tmpAmmoVectorB']['setValue'](_0x53cf3c[_0x12b8fb - 0x1]['x'], _0x53cf3c[_0x12b8fb - 0x1]['y'], _0x53cf3c[_0x12b8fb - 0x1]['z']); } _0x1379a3['segments'] = _0x265de0; var _0x22a62b = _0x1379a3['getParam']('fixedPoints'); _0x22a62b = _0x22a62b > 0x3 ? 0x3 : _0x22a62b; var _0x42485a = new Ammo['btSoftBodyHelpers']()['CreateRope'](this['world']['getWorldInfo'](), this['_tmpAmmoVectorA'], this['_tmpAmmoVectorB'], _0x265de0 - 0x1, _0x22a62b); return _0x42485a['get_m_cfg']()['set_collisions'](0x11), _0x42485a; } , _0x29fcbc['prototype']['_addHullVerts'] = function(_0x2bae80, _0x53b4f8, _0x4e41c7) { var _0x202a47 = this , _0xe918c7 = 0x0; if (_0x4e41c7 && _0x4e41c7['getIndices'] && _0x4e41c7['getWorldMatrix'] && _0x4e41c7['getChildMeshes']) { var _0x1abdf6 = _0x4e41c7['getIndices'](); _0x1abdf6 || (_0x1abdf6 = []); var _0x438f9a = _0x4e41c7['getVerticesData'](_0x4209f7['b']['PositionKind']); _0x438f9a || (_0x438f9a = []), _0x4e41c7['computeWorldMatrix'](!0x1); for (var _0x3fa8bb = _0x1abdf6['length'] / 0x3, _0xdd0184 = 0x0; _0xdd0184 < _0x3fa8bb; _0xdd0184++) { for (var _0x115e80 = [], _0x412a13 = 0x0; _0x412a13 < 0x3; _0x412a13++) { var _0x30b5f5, _0x493005 = new _0x47d24f['x'](_0x438f9a[0x3 * _0x1abdf6[0x3 * _0xdd0184 + _0x412a13] + 0x0],_0x438f9a[0x3 * _0x1abdf6[0x3 * _0xdd0184 + _0x412a13] + 0x1],_0x438f9a[0x3 * _0x1abdf6[0x3 * _0xdd0184 + _0x412a13] + 0x2]); _0x47d24f['j']['ScalingToRef'](_0x4e41c7['scaling']['x'], _0x4e41c7['scaling']['y'], _0x4e41c7['scaling']['z'], this['_tmpMatrix']), _0x493005 = _0x47d24f['x']['TransformCoordinates'](_0x493005, this['_tmpMatrix']), (_0x30b5f5 = 0x0 == _0x412a13 ? this['_tmpAmmoVectorA'] : 0x1 == _0x412a13 ? this['_tmpAmmoVectorB'] : this['_tmpAmmoVectorC'])['setValue'](_0x493005['x'], _0x493005['y'], _0x493005['z']), _0x115e80['push'](_0x30b5f5); } _0x2bae80['addPoint'](_0x115e80[0x0], !0x0), _0x2bae80['addPoint'](_0x115e80[0x1], !0x0), _0x2bae80['addPoint'](_0x115e80[0x2], !0x0), _0xe918c7++; } _0x4e41c7['getChildMeshes']()['forEach'](function(_0x4a9b50) { _0xe918c7 += _0x202a47['_addHullVerts'](_0x2bae80, _0x53b4f8, _0x4a9b50); }); } return _0xe918c7; } , _0x29fcbc['prototype']['_createShape'] = function(_0x512f87, _0x696122) { var _0x51988b = this; void 0x0 === _0x696122 && (_0x696122 = !0x1); var _0x5c30f4, _0x4a9f99 = _0x512f87['object'], _0xa11218 = _0x512f87['getObjectExtendSize'](); if (!_0x696122) { var _0x3e3803 = _0x512f87['object']['getChildMeshes'] ? _0x512f87['object']['getChildMeshes'](!0x0) : []; _0x5c30f4 = new Ammo['btCompoundShape'](); var _0x50d9c8 = 0x0; if (_0x3e3803['forEach'](function(_0xa29353) { var _0x5b1da9 = _0xa29353['getPhysicsImpostor'](); if (_0x5b1da9) { if (_0x5b1da9['type'] == _0x216137['a']['MeshImpostor']) throw 'A\x20child\x20MeshImpostor\x20is\x20not\x20supported.\x20Only\x20primitive\x20impostors\x20are\x20supported\x20as\x20children\x20(eg.\x20box\x20or\x20sphere)'; var _0x5e200b = _0x51988b['_createShape'](_0x5b1da9) , _0x2c2a7d = _0xa29353['parent']['getWorldMatrix']()['clone']() , _0x3ecb8c = new _0x47d24f['x'](); _0x2c2a7d['decompose'](_0x3ecb8c), _0x51988b['_tmpAmmoTransform']['getOrigin']()['setValue'](_0xa29353['position']['x'] * _0x3ecb8c['x'], _0xa29353['position']['y'] * _0x3ecb8c['y'], _0xa29353['position']['z'] * _0x3ecb8c['z']), _0x51988b['_tmpAmmoQuaternion']['setValue'](_0xa29353['rotationQuaternion']['x'], _0xa29353['rotationQuaternion']['y'], _0xa29353['rotationQuaternion']['z'], _0xa29353['rotationQuaternion']['w']), _0x51988b['_tmpAmmoTransform']['setRotation'](_0x51988b['_tmpAmmoQuaternion']), _0x5c30f4['addChildShape'](_0x51988b['_tmpAmmoTransform'], _0x5e200b), _0x5b1da9['dispose'](), _0x50d9c8++; } }), _0x50d9c8 > 0x0) { if (_0x512f87['type'] != _0x216137['a']['NoImpostor']) { var _0x411084 = this['_createShape'](_0x512f87, !0x0); _0x411084 && (this['_tmpAmmoTransform']['getOrigin']()['setValue'](0x0, 0x0, 0x0), this['_tmpAmmoQuaternion']['setValue'](0x0, 0x0, 0x0, 0x1), this['_tmpAmmoTransform']['setRotation'](this['_tmpAmmoQuaternion']), _0x5c30f4['addChildShape'](this['_tmpAmmoTransform'], _0x411084)); } return _0x5c30f4; } Ammo['destroy'](_0x5c30f4), _0x5c30f4 = null; } switch (_0x512f87['type']) { case _0x216137['a']['SphereImpostor']: _0x5c30f4 = new Ammo['btSphereShape'](_0xa11218['x'] / 0x2); break; case _0x216137['a']['CylinderImpostor']: this['_tmpAmmoVectorA']['setValue'](_0xa11218['x'] / 0x2, _0xa11218['y'] / 0x2, _0xa11218['z'] / 0x2), _0x5c30f4 = new Ammo['btCylinderShape'](this['_tmpAmmoVectorA']); break; case _0x216137['a']['PlaneImpostor']: case _0x216137['a']['BoxImpostor']: this['_tmpAmmoVectorA']['setValue'](_0xa11218['x'] / 0x2, _0xa11218['y'] / 0x2, _0xa11218['z'] / 0x2), _0x5c30f4 = new Ammo['btBoxShape'](this['_tmpAmmoVectorA']); break; case _0x216137['a']['MeshImpostor']: if (0x0 == _0x512f87['getParam']('mass')) { var _0x324bf7 = new Ammo['btTriangleMesh'](); _0x512f87['_pluginData']['toDispose']['push'](_0x324bf7); var _0x4c4f66 = this['_addMeshVerts'](_0x324bf7, _0x4a9f99, _0x4a9f99); _0x5c30f4 = 0x0 == _0x4c4f66 ? new Ammo['btCompoundShape']() : new Ammo['btBvhTriangleMeshShape'](_0x324bf7); break; } case _0x216137['a']['ConvexHullImpostor']: var _0x368995 = new Ammo['btConvexHullShape'](); 0x0 == (_0x4c4f66 = this['_addHullVerts'](_0x368995, _0x4a9f99, _0x4a9f99)) ? (_0x512f87['_pluginData']['toDispose']['push'](_0x368995), _0x5c30f4 = new Ammo['btCompoundShape']()) : _0x5c30f4 = _0x368995; break; case _0x216137['a']['NoImpostor']: _0x5c30f4 = new Ammo['btSphereShape'](_0xa11218['x'] / 0x2); break; case _0x216137['a']['SoftbodyImpostor']: _0x5c30f4 = this['_createSoftbody'](_0x512f87); break; case _0x216137['a']['ClothImpostor']: _0x5c30f4 = this['_createCloth'](_0x512f87); break; case _0x216137['a']['RopeImpostor']: _0x5c30f4 = this['_createRope'](_0x512f87); break; default: _0x3f98cb['a']['Warn']('The\x20impostor\x20type\x20is\x20not\x20currently\x20supported\x20by\x20the\x20ammo\x20plugin.'); } return _0x5c30f4; } , _0x29fcbc['prototype']['setTransformationFromPhysicsBody'] = function(_0x246eef) { _0x246eef['physicsBody']['getMotionState']()['getWorldTransform'](this['_tmpAmmoTransform']), _0x246eef['object']['position']['set'](this['_tmpAmmoTransform']['getOrigin']()['x'](), this['_tmpAmmoTransform']['getOrigin']()['y'](), this['_tmpAmmoTransform']['getOrigin']()['z']()), _0x246eef['object']['rotationQuaternion'] ? _0x246eef['object']['rotationQuaternion']['set'](this['_tmpAmmoTransform']['getRotation']()['x'](), this['_tmpAmmoTransform']['getRotation']()['y'](), this['_tmpAmmoTransform']['getRotation']()['z'](), this['_tmpAmmoTransform']['getRotation']()['w']()) : _0x246eef['object']['rotation'] && (this['_tmpQuaternion']['set'](this['_tmpAmmoTransform']['getRotation']()['x'](), this['_tmpAmmoTransform']['getRotation']()['y'](), this['_tmpAmmoTransform']['getRotation']()['z'](), this['_tmpAmmoTransform']['getRotation']()['w']()), this['_tmpQuaternion']['toEulerAnglesToRef'](_0x246eef['object']['rotation'])); } , _0x29fcbc['prototype']['setPhysicsBodyTransformation'] = function(_0x29b013, _0x21e084, _0x236cca) { var _0x3b8464 = _0x29b013['physicsBody']['getWorldTransform'](); if (_0x3b8464['getOrigin']()['x']() != _0x21e084['x'] || _0x3b8464['getOrigin']()['y']() != _0x21e084['y'] || _0x3b8464['getOrigin']()['z']() != _0x21e084['z'] || _0x3b8464['getRotation']()['x']() != _0x236cca['x'] || _0x3b8464['getRotation']()['y']() != _0x236cca['y'] || _0x3b8464['getRotation']()['z']() != _0x236cca['z'] || _0x3b8464['getRotation']()['w']() != _0x236cca['w']) if (this['_tmpAmmoVectorA']['setValue'](_0x21e084['x'], _0x21e084['y'], _0x21e084['z']), _0x3b8464['setOrigin'](this['_tmpAmmoVectorA']), this['_tmpAmmoQuaternion']['setValue'](_0x236cca['x'], _0x236cca['y'], _0x236cca['z'], _0x236cca['w']), _0x3b8464['setRotation'](this['_tmpAmmoQuaternion']), _0x29b013['physicsBody']['setWorldTransform'](_0x3b8464), 0x0 == _0x29b013['mass']) { var _0x66c2ea = _0x29b013['physicsBody']['getMotionState'](); _0x66c2ea && _0x66c2ea['setWorldTransform'](_0x3b8464); } else _0x29b013['physicsBody']['activate'](); } , _0x29fcbc['prototype']['isSupported'] = function() { return void 0x0 !== this['bjsAMMO']; } , _0x29fcbc['prototype']['setLinearVelocity'] = function(_0xed3700, _0xf38c70) { this['_tmpAmmoVectorA']['setValue'](_0xf38c70['x'], _0xf38c70['y'], _0xf38c70['z']), _0xed3700['soft'] ? _0xed3700['physicsBody']['linearVelocity'](this['_tmpAmmoVectorA']) : _0xed3700['physicsBody']['setLinearVelocity'](this['_tmpAmmoVectorA']); } , _0x29fcbc['prototype']['setAngularVelocity'] = function(_0x44ce77, _0x461c88) { this['_tmpAmmoVectorA']['setValue'](_0x461c88['x'], _0x461c88['y'], _0x461c88['z']), _0x44ce77['soft'] ? _0x44ce77['physicsBody']['angularVelocity'](this['_tmpAmmoVectorA']) : _0x44ce77['physicsBody']['setAngularVelocity'](this['_tmpAmmoVectorA']); } , _0x29fcbc['prototype']['getLinearVelocity'] = function(_0xd85c96) { if (_0xd85c96['soft']) var _0x5e8f61 = _0xd85c96['physicsBody']['linearVelocity'](); else _0x5e8f61 = _0xd85c96['physicsBody']['getLinearVelocity'](); if (!_0x5e8f61) return null; var _0x5bd61c = new _0x47d24f['x'](_0x5e8f61['x'](),_0x5e8f61['y'](),_0x5e8f61['z']()); return Ammo['destroy'](_0x5e8f61), _0x5bd61c; } , _0x29fcbc['prototype']['getAngularVelocity'] = function(_0x30cde1) { if (_0x30cde1['soft']) var _0x4a6ceb = _0x30cde1['physicsBody']['angularVelocity'](); else _0x4a6ceb = _0x30cde1['physicsBody']['getAngularVelocity'](); if (!_0x4a6ceb) return null; var _0x2ee15b = new _0x47d24f['x'](_0x4a6ceb['x'](),_0x4a6ceb['y'](),_0x4a6ceb['z']()); return Ammo['destroy'](_0x4a6ceb), _0x2ee15b; } , _0x29fcbc['prototype']['setBodyMass'] = function(_0x3efecd, _0x37b95e) { _0x3efecd['soft'] ? _0x3efecd['physicsBody']['setTotalMass'](_0x37b95e, !0x1) : _0x3efecd['physicsBody']['setMassProps'](_0x37b95e), _0x3efecd['_pluginData']['mass'] = _0x37b95e; } , _0x29fcbc['prototype']['getBodyMass'] = function(_0x183523) { return _0x183523['_pluginData']['mass'] || 0x0; } , _0x29fcbc['prototype']['getBodyFriction'] = function(_0x521d57) { return _0x521d57['_pluginData']['friction'] || 0x0; } , _0x29fcbc['prototype']['setBodyFriction'] = function(_0x57cbdc, _0x2e1e3c) { _0x57cbdc['soft'] ? _0x57cbdc['physicsBody']['get_m_cfg']()['set_kDF'](_0x2e1e3c) : _0x57cbdc['physicsBody']['setFriction'](_0x2e1e3c), _0x57cbdc['_pluginData']['friction'] = _0x2e1e3c; } , _0x29fcbc['prototype']['getBodyRestitution'] = function(_0x5ed1f6) { return _0x5ed1f6['_pluginData']['restitution'] || 0x0; } , _0x29fcbc['prototype']['setBodyRestitution'] = function(_0x45a021, _0x2572dd) { _0x45a021['physicsBody']['setRestitution'](_0x2572dd), _0x45a021['_pluginData']['restitution'] = _0x2572dd; } , _0x29fcbc['prototype']['getBodyPressure'] = function(_0x1a9f03) { return _0x1a9f03['soft'] ? _0x1a9f03['_pluginData']['pressure'] || 0x0 : (_0x3f98cb['a']['Warn']('Pressure\x20is\x20not\x20a\x20property\x20of\x20a\x20rigid\x20body'), 0x0); } , _0x29fcbc['prototype']['setBodyPressure'] = function(_0x4e592f, _0x467c85) { _0x4e592f['soft'] ? _0x4e592f['type'] === _0x216137['a']['SoftbodyImpostor'] ? (_0x4e592f['physicsBody']['get_m_cfg']()['set_kPR'](_0x467c85), _0x4e592f['_pluginData']['pressure'] = _0x467c85) : (_0x4e592f['physicsBody']['get_m_cfg']()['set_kPR'](0x0), _0x4e592f['_pluginData']['pressure'] = 0x0) : _0x3f98cb['a']['Warn']('Pressure\x20can\x20only\x20be\x20applied\x20to\x20a\x20softbody'); } , _0x29fcbc['prototype']['getBodyStiffness'] = function(_0x4a6e97) { return _0x4a6e97['soft'] ? _0x4a6e97['_pluginData']['stiffness'] || 0x0 : (_0x3f98cb['a']['Warn']('Stiffness\x20is\x20not\x20a\x20property\x20of\x20a\x20rigid\x20body'), 0x0); } , _0x29fcbc['prototype']['setBodyStiffness'] = function(_0x3679c1, _0xc84bfb) { _0x3679c1['soft'] ? (_0xc84bfb = (_0xc84bfb = _0xc84bfb < 0x0 ? 0x0 : _0xc84bfb) > 0x1 ? 0x1 : _0xc84bfb, _0x3679c1['physicsBody']['get_m_materials']()['at'](0x0)['set_m_kLST'](_0xc84bfb), _0x3679c1['_pluginData']['stiffness'] = _0xc84bfb) : _0x3f98cb['a']['Warn']('Stiffness\x20cannot\x20be\x20applied\x20to\x20a\x20rigid\x20body'); } , _0x29fcbc['prototype']['getBodyVelocityIterations'] = function(_0x2f2ed8) { return _0x2f2ed8['soft'] ? _0x2f2ed8['_pluginData']['velocityIterations'] || 0x0 : (_0x3f98cb['a']['Warn']('Velocity\x20iterations\x20is\x20not\x20a\x20property\x20of\x20a\x20rigid\x20body'), 0x0); } , _0x29fcbc['prototype']['setBodyVelocityIterations'] = function(_0x1eb778, _0x466673) { _0x1eb778['soft'] ? (_0x466673 = _0x466673 < 0x0 ? 0x0 : _0x466673, _0x1eb778['physicsBody']['get_m_cfg']()['set_viterations'](_0x466673), _0x1eb778['_pluginData']['velocityIterations'] = _0x466673) : _0x3f98cb['a']['Warn']('Velocity\x20iterations\x20cannot\x20be\x20applied\x20to\x20a\x20rigid\x20body'); } , _0x29fcbc['prototype']['getBodyPositionIterations'] = function(_0x318570) { return _0x318570['soft'] ? _0x318570['_pluginData']['positionIterations'] || 0x0 : (_0x3f98cb['a']['Warn']('Position\x20iterations\x20is\x20not\x20a\x20property\x20of\x20a\x20rigid\x20body'), 0x0); } , _0x29fcbc['prototype']['setBodyPositionIterations'] = function(_0x3e46e0, _0x266a87) { _0x3e46e0['soft'] ? (_0x266a87 = _0x266a87 < 0x0 ? 0x0 : _0x266a87, _0x3e46e0['physicsBody']['get_m_cfg']()['set_piterations'](_0x266a87), _0x3e46e0['_pluginData']['positionIterations'] = _0x266a87) : _0x3f98cb['a']['Warn']('Position\x20iterations\x20cannot\x20be\x20applied\x20to\x20a\x20rigid\x20body'); } , _0x29fcbc['prototype']['appendAnchor'] = function(_0x147e83, _0x4f3b9d, _0x1a5109, _0x50b358, _0x3ae0b2, _0x5633c7) { void 0x0 === _0x3ae0b2 && (_0x3ae0b2 = 0x1), void 0x0 === _0x5633c7 && (_0x5633c7 = !0x1); var _0x4dbe5f = _0x147e83['segments'] , _0x206970 = Math['round']((_0x4dbe5f - 0x1) * _0x1a5109) + _0x4dbe5f * (_0x4dbe5f - 0x1 - Math['round']((_0x4dbe5f - 0x1) * _0x50b358)); _0x147e83['physicsBody']['appendAnchor'](_0x206970, _0x4f3b9d['physicsBody'], _0x5633c7, _0x3ae0b2); } , _0x29fcbc['prototype']['appendHook'] = function(_0x448772, _0x721485, _0x4146d9, _0x537760, _0x5eab43) { void 0x0 === _0x537760 && (_0x537760 = 0x1), void 0x0 === _0x5eab43 && (_0x5eab43 = !0x1); var _0xf66492 = Math['round'](_0x448772['segments'] * _0x4146d9); _0x448772['physicsBody']['appendAnchor'](_0xf66492, _0x721485['physicsBody'], _0x5eab43, _0x537760); } , _0x29fcbc['prototype']['sleepBody'] = function(_0x1933e4) { _0x3f98cb['a']['Warn']('sleepBody\x20is\x20not\x20currently\x20supported\x20by\x20the\x20Ammo\x20physics\x20plugin'); } , _0x29fcbc['prototype']['wakeUpBody'] = function(_0x1b1820) { _0x1b1820['physicsBody']['activate'](); } , _0x29fcbc['prototype']['updateDistanceJoint'] = function(_0x369921, _0x40761c, _0xb15da3) { _0x3f98cb['a']['Warn']('updateDistanceJoint\x20is\x20not\x20currently\x20supported\x20by\x20the\x20Ammo\x20physics\x20plugin'); } , _0x29fcbc['prototype']['setMotor'] = function(_0x2555fa, _0x26e4a7, _0x4e5c43, _0x56dfed) { _0x2555fa['physicsJoint']['enableAngularMotor'](!0x0, _0x26e4a7, _0x4e5c43); } , _0x29fcbc['prototype']['setLimit'] = function(_0x57a1cb, _0x1ad81f, _0xdc60d7) { _0x3f98cb['a']['Warn']('setLimit\x20is\x20not\x20currently\x20supported\x20by\x20the\x20Ammo\x20physics\x20plugin'); } , _0x29fcbc['prototype']['syncMeshWithImpostor'] = function(_0x59a92b, _0x58d3d8) { _0x58d3d8['physicsBody']['getMotionState']()['getWorldTransform'](this['_tmpAmmoTransform']), _0x59a92b['position']['x'] = this['_tmpAmmoTransform']['getOrigin']()['x'](), _0x59a92b['position']['y'] = this['_tmpAmmoTransform']['getOrigin']()['y'](), _0x59a92b['position']['z'] = this['_tmpAmmoTransform']['getOrigin']()['z'](), _0x59a92b['rotationQuaternion'] && (_0x59a92b['rotationQuaternion']['x'] = this['_tmpAmmoTransform']['getRotation']()['x'](), _0x59a92b['rotationQuaternion']['y'] = this['_tmpAmmoTransform']['getRotation']()['y'](), _0x59a92b['rotationQuaternion']['z'] = this['_tmpAmmoTransform']['getRotation']()['z'](), _0x59a92b['rotationQuaternion']['w'] = this['_tmpAmmoTransform']['getRotation']()['w']()); } , _0x29fcbc['prototype']['getRadius'] = function(_0x581698) { return _0x581698['getObjectExtendSize']()['x'] / 0x2; } , _0x29fcbc['prototype']['getBoxSizeToRef'] = function(_0x48b458, _0x2e047d) { var _0x305b8b = _0x48b458['getObjectExtendSize'](); _0x2e047d['x'] = _0x305b8b['x'], _0x2e047d['y'] = _0x305b8b['y'], _0x2e047d['z'] = _0x305b8b['z']; } , _0x29fcbc['prototype']['dispose'] = function() { Ammo['destroy'](this['world']), Ammo['destroy'](this['_solver']), Ammo['destroy'](this['_overlappingPairCache']), Ammo['destroy'](this['_dispatcher']), Ammo['destroy'](this['_collisionConfiguration']), Ammo['destroy'](this['_tmpAmmoVectorA']), Ammo['destroy'](this['_tmpAmmoVectorB']), Ammo['destroy'](this['_tmpAmmoVectorC']), Ammo['destroy'](this['_tmpAmmoTransform']), Ammo['destroy'](this['_tmpAmmoQuaternion']), Ammo['destroy'](this['_tmpAmmoConcreteContactResultCallback']), this['world'] = null; } , _0x29fcbc['prototype']['raycast'] = function(_0x192c9d, _0x131167) { this['_tmpAmmoVectorRCA'] = new this['bjsAMMO']['btVector3'](_0x192c9d['x'],_0x192c9d['y'],_0x192c9d['z']), this['_tmpAmmoVectorRCB'] = new this['bjsAMMO']['btVector3'](_0x131167['x'],_0x131167['y'],_0x131167['z']); var _0x19e939 = new this['bjsAMMO']['ClosestRayResultCallback'](this['_tmpAmmoVectorRCA'],this['_tmpAmmoVectorRCB']); return this['world']['rayTest'](this['_tmpAmmoVectorRCA'], this['_tmpAmmoVectorRCB'], _0x19e939), this['_raycastResult']['reset'](_0x192c9d, _0x131167), _0x19e939['hasHit']() && (this['_raycastResult']['setHitData']({ 'x': _0x19e939['get_m_hitNormalWorld']()['x'](), 'y': _0x19e939['get_m_hitNormalWorld']()['y'](), 'z': _0x19e939['get_m_hitNormalWorld']()['z']() }, { 'x': _0x19e939['get_m_hitPointWorld']()['x'](), 'y': _0x19e939['get_m_hitPointWorld']()['y'](), 'z': _0x19e939['get_m_hitPointWorld']()['z']() }), this['_raycastResult']['calculateHitDistance']()), Ammo['destroy'](_0x19e939), Ammo['destroy'](this['_tmpAmmoVectorRCA']), Ammo['destroy'](this['_tmpAmmoVectorRCB']), this['_raycastResult']; } , _0x29fcbc['DISABLE_COLLISION_FLAG'] = 0x4, _0x29fcbc['KINEMATIC_FLAG'] = 0x2, _0x29fcbc['DISABLE_DEACTIVATION_FLAG'] = 0x4, _0x29fcbc; }(); _0x20925f['a']['prototype']['removeReflectionProbe'] = function(_0x40c760) { if (!this['reflectionProbes']) return -0x1; var _0x492f1a = this['reflectionProbes']['indexOf'](_0x40c760); return -0x1 !== _0x492f1a && this['reflectionProbes']['splice'](_0x492f1a, 0x1), _0x492f1a; } , _0x20925f['a']['prototype']['addReflectionProbe'] = function(_0xc31864) { this['reflectionProbes'] || (this['reflectionProbes'] = []), this['reflectionProbes']['push'](_0xc31864); } ; var _0x5872ea = function() { function _0x357ad1(_0x55f371, _0x170e85, _0x38e967, _0x2bfcee, _0x306c77) { var _0x2d4ab9 = this; void 0x0 === _0x2bfcee && (_0x2bfcee = !0x0), void 0x0 === _0x306c77 && (_0x306c77 = !0x1), this['name'] = _0x55f371, this['_viewMatrix'] = _0x47d24f['j']['Identity'](), this['_target'] = _0x47d24f['x']['Zero'](), this['_add'] = _0x47d24f['x']['Zero'](), this['_invertYAxis'] = !0x1, this['position'] = _0x47d24f['x']['Zero'](), this['_scene'] = _0x38e967, this['_scene']['reflectionProbes'] || (this['_scene']['reflectionProbes'] = new Array()), this['_scene']['reflectionProbes']['push'](this), this['_renderTargetTexture'] = new _0xe8a585(_0x55f371,_0x170e85,_0x38e967,_0x2bfcee,!0x0,_0x306c77 ? _0x24e342['a']['TEXTURETYPE_FLOAT'] : _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'],!0x0), this['_renderTargetTexture']['onBeforeRenderObservable']['add'](function(_0x28acde) { switch (_0x28acde) { case 0x0: _0x2d4ab9['_add']['copyFromFloats'](0x1, 0x0, 0x0); break; case 0x1: _0x2d4ab9['_add']['copyFromFloats'](-0x1, 0x0, 0x0); break; case 0x2: _0x2d4ab9['_add']['copyFromFloats'](0x0, _0x2d4ab9['_invertYAxis'] ? 0x1 : -0x1, 0x0); break; case 0x3: _0x2d4ab9['_add']['copyFromFloats'](0x0, _0x2d4ab9['_invertYAxis'] ? -0x1 : 0x1, 0x0); break; case 0x4: _0x2d4ab9['_add']['copyFromFloats'](0x0, 0x0, 0x1); break; case 0x5: _0x2d4ab9['_add']['copyFromFloats'](0x0, 0x0, -0x1); } _0x2d4ab9['_attachedMesh'] && _0x2d4ab9['position']['copyFrom'](_0x2d4ab9['_attachedMesh']['getAbsolutePosition']()), _0x2d4ab9['position']['addToRef'](_0x2d4ab9['_add'], _0x2d4ab9['_target']), _0x47d24f['j']['LookAtLHToRef'](_0x2d4ab9['position'], _0x2d4ab9['_target'], _0x47d24f['x']['Up'](), _0x2d4ab9['_viewMatrix']), _0x38e967['activeCamera'] && (_0x2d4ab9['_projectionMatrix'] = _0x47d24f['j']['PerspectiveFovLH'](Math['PI'] / 0x2, 0x1, _0x38e967['activeCamera']['minZ'], _0x38e967['activeCamera']['maxZ']), _0x38e967['setTransformMatrix'](_0x2d4ab9['_viewMatrix'], _0x2d4ab9['_projectionMatrix'])), _0x38e967['_forcedViewPosition'] = _0x2d4ab9['position']; }), this['_renderTargetTexture']['onAfterUnbindObservable']['add'](function() { _0x38e967['_forcedViewPosition'] = null, _0x38e967['updateTransformMatrix'](!0x0); }); } return Object['defineProperty'](_0x357ad1['prototype'], 'samples', { 'get': function() { return this['_renderTargetTexture']['samples']; }, 'set': function(_0x413d5b) { this['_renderTargetTexture']['samples'] = _0x413d5b; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x357ad1['prototype'], 'refreshRate', { 'get': function() { return this['_renderTargetTexture']['refreshRate']; }, 'set': function(_0x421569) { this['_renderTargetTexture']['refreshRate'] = _0x421569; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x357ad1['prototype']['getScene'] = function() { return this['_scene']; } , Object['defineProperty'](_0x357ad1['prototype'], 'cubeTexture', { 'get': function() { return this['_renderTargetTexture']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x357ad1['prototype'], 'renderList', { 'get': function() { return this['_renderTargetTexture']['renderList']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x357ad1['prototype']['attachToMesh'] = function(_0x281d49) { this['_attachedMesh'] = _0x281d49; } , _0x357ad1['prototype']['setRenderingAutoClearDepthStencil'] = function(_0x35206c, _0x4fb1e4) { this['_renderTargetTexture']['setRenderingAutoClearDepthStencil'](_0x35206c, _0x4fb1e4); } , _0x357ad1['prototype']['dispose'] = function() { var _0x376349 = this['_scene']['reflectionProbes']['indexOf'](this); -0x1 !== _0x376349 && this['_scene']['reflectionProbes']['splice'](_0x376349, 0x1), this['_renderTargetTexture'] && (this['_renderTargetTexture']['dispose'](), this['_renderTargetTexture'] = null); } , _0x357ad1['prototype']['toString'] = function(_0x593d0a) { var _0x4452ca = 'Name:\x20' + this['name']; return _0x593d0a && (_0x4452ca += ',\x20position:\x20' + this['position']['toString'](), this['_attachedMesh'] && (_0x4452ca += ',\x20attached\x20mesh:\x20' + this['_attachedMesh']['name'])), _0x4452ca; } , _0x357ad1['prototype']['getClassName'] = function() { return 'ReflectionProbe'; } , _0x357ad1['prototype']['serialize'] = function() { var _0x30178b = _0x3d4764['a']['Serialize'](this, this['_renderTargetTexture']['serialize']()); return _0x30178b['isReflectionProbe'] = !0x0, _0x30178b; } , _0x357ad1['Parse'] = function(_0x399fba, _0x350926, _0x387652) { var _0x568e1c = null; if (_0x350926['reflectionProbes']) for (var _0x10222b = 0x0; _0x10222b < _0x350926['reflectionProbes']['length']; _0x10222b++) { var _0x54fb87 = _0x350926['reflectionProbes'][_0x10222b]; if (_0x54fb87['name'] === _0x399fba['name']) { _0x568e1c = _0x54fb87; break; } } return (_0x568e1c = _0x3d4764['a']['Parse'](function() { return _0x568e1c || new _0x357ad1(_0x399fba['name'],_0x399fba['renderTargetSize'],_0x350926,_0x399fba['_generateMipMaps']); }, _0x399fba, _0x350926, _0x387652))['cubeTexture']['_waitingRenderList'] = _0x399fba['renderList'], _0x399fba['_attachedMesh'] && _0x568e1c['attachToMesh'](_0x350926['getMeshByID'](_0x399fba['_attachedMesh'])), _0x568e1c; } , _0x420e5b['c']([Object(_0x3d4764['k'])()], _0x357ad1['prototype'], '_attachedMesh', void 0x0), _0x420e5b['c']([Object(_0x3d4764['o'])()], _0x357ad1['prototype'], 'position', void 0x0), _0x357ad1; }() , _0x5a7665 = function(_0x447948, _0x3f3853, _0x4d8d11, _0x46e1c7) { for (var _0x528df7 = 0x0, _0x406716 = _0x3f3853['materials']['length']; _0x528df7 < _0x406716; _0x528df7++) { var _0x94f0cf = _0x3f3853['materials'][_0x528df7]; if (_0x94f0cf['id'] === _0x447948) return _0x10d420['a']['Parse'](_0x94f0cf, _0x4d8d11, _0x46e1c7); } return null; } , _0x5c77f2 = function(_0x513681, _0xfa8801, _0x1b9319) { for (var _0x1c5486 in _0xfa8801) if (_0x513681['name'] === _0xfa8801[_0x1c5486]) return _0x1b9319['push'](_0x513681['id']), !0x0; return !(!_0x513681['parentId'] || -0x1 === _0x1b9319['indexOf'](_0x513681['parentId'])) && (_0x1b9319['push'](_0x513681['id']), !0x0); } , _0x22d7d3 = function(_0x3060f4, _0xf17643) { return _0x3060f4 + '\x20of\x20' + (_0xf17643 ? _0xf17643['file'] + '\x20from\x20' + _0xf17643['name'] + '\x20version:\x20' + _0xf17643['version'] + ',\x20exporter\x20version:\x20' + _0xf17643['exporter_version'] : 'unknown'); } , _0x2f7abf = function(_0x17f2d6, _0x2aa39c) { var _0x9b7067 = _0x2aa39c; if (_0x2aa39c['_waitingData']['lods']) { if (_0x2aa39c['_waitingData']['lods']['ids'] && _0x2aa39c['_waitingData']['lods']['ids']['length'] > 0x0) { var _0x1612ca = _0x2aa39c['_waitingData']['lods']['ids'] , _0x7b5822 = _0x9b7067['isEnabled'](!0x1); if (_0x2aa39c['_waitingData']['lods']['distances']) { var _0x5ccd33 = _0x2aa39c['_waitingData']['lods']['distances']; if (_0x5ccd33['length'] >= _0x1612ca['length']) { var _0x113566 = _0x5ccd33['length'] > _0x1612ca['length'] ? _0x5ccd33[_0x5ccd33['length'] - 0x1] : 0x0; _0x9b7067['setEnabled'](!0x1); for (var _0x4d4075 = 0x0; _0x4d4075 < _0x1612ca['length']; _0x4d4075++) { var _0x1f7cfc = _0x1612ca[_0x4d4075] , _0x51c300 = _0x17f2d6['getMeshByID'](_0x1f7cfc); null != _0x51c300 && _0x9b7067['addLODLevel'](_0x5ccd33[_0x4d4075], _0x51c300); } _0x113566 > 0x0 && _0x9b7067['addLODLevel'](_0x113566, null), !0x0 === _0x7b5822 && _0x9b7067['setEnabled'](!0x0); } else _0x1eb50e['h']['Warn']('Invalid\x20level\x20of\x20detail\x20distances\x20for\x20' + _0x2aa39c['name']); } } _0x2aa39c['_waitingData']['lods'] = null; } } , _0x3fb1e5 = function(_0x15088d, _0x11f2c1, _0x420c2b, _0x48fc3f, _0x4dfefa) { void 0x0 === _0x4dfefa && (_0x4dfefa = !0x1); var _0x5502c9 = new _0x3c968a(_0x15088d) , _0x597137 = 'importScene\x20has\x20failed\x20JSON\x20parse'; try { var _0x46a874 = JSON['parse'](_0x11f2c1); _0x597137 = ''; var _0x2673c3, _0x4f3dfc, _0x3a9cb4 = _0x32da6b['loggingLevel'] === _0x32da6b['DETAILED_LOGGING']; if (void 0x0 !== _0x46a874['environmentTexture'] && null !== _0x46a874['environmentTexture']) { var _0x506a81 = void 0x0 === _0x46a874['isPBR'] || _0x46a874['isPBR']; if (_0x46a874['environmentTextureType'] && 'BABYLON.HDRCubeTexture' === _0x46a874['environmentTextureType']) { var _0x5b97df = _0x46a874['environmentTextureSize'] ? _0x46a874['environmentTextureSize'] : 0x80 , _0x1ef329 = new _0x52697b((_0x46a874['environmentTexture']['match'](/https?:\/\//g) ? '' : _0x420c2b) + _0x46a874['environmentTexture'],_0x15088d,_0x5b97df,!0x0,!_0x506a81); _0x46a874['environmentTextureRotationY'] && (_0x1ef329['rotationY'] = _0x46a874['environmentTextureRotationY']), _0x15088d['environmentTexture'] = _0x1ef329; } else if (_0x1eb50e['h']['EndsWith'](_0x46a874['environmentTexture'], '.env')) { var _0x110db9 = new _0x1ed101((_0x46a874['environmentTexture']['match'](/https?:\/\//g) ? '' : _0x420c2b) + _0x46a874['environmentTexture'],_0x15088d); _0x46a874['environmentTextureRotationY'] && (_0x110db9['rotationY'] = _0x46a874['environmentTextureRotationY']), _0x15088d['environmentTexture'] = _0x110db9; } else { var _0x579984 = _0x1ed101['CreateFromPrefilteredData']((_0x46a874['environmentTexture']['match'](/https?:\/\//g) ? '' : _0x420c2b) + _0x46a874['environmentTexture'], _0x15088d); _0x46a874['environmentTextureRotationY'] && (_0x579984['rotationY'] = _0x46a874['environmentTextureRotationY']), _0x15088d['environmentTexture'] = _0x579984; } if (!0x0 === _0x46a874['createDefaultSkybox']) { var _0x361b1d = void 0x0 !== _0x15088d['activeCamera'] && null !== _0x15088d['activeCamera'] ? (_0x15088d['activeCamera']['maxZ'] - _0x15088d['activeCamera']['minZ']) / 0x2 : 0x3e8 , _0x16cfd7 = _0x46a874['skyboxBlurLevel'] || 0x0; _0x15088d['createDefaultSkybox'](_0x15088d['environmentTexture'], _0x506a81, _0x361b1d, _0x16cfd7); } _0x5502c9['environmentTexture'] = _0x15088d['environmentTexture']; } if (void 0x0 !== _0x46a874['lights'] && null !== _0x46a874['lights']) for (_0x2673c3 = 0x0, _0x4f3dfc = _0x46a874['lights']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x437b36 = _0x46a874['lights'][_0x2673c3] , _0x3a9cee = _0x16b020['a']['Parse'](_0x437b36, _0x15088d); _0x3a9cee && (_0x5502c9['lights']['push'](_0x3a9cee), _0x597137 += 0x0 === _0x2673c3 ? '\x0a\x09Lights:' : '', _0x597137 += '\x0a\x09\x09' + _0x3a9cee['toString'](_0x3a9cb4)); } if (void 0x0 !== _0x46a874['reflectionProbes'] && null !== _0x46a874['reflectionProbes']) for (_0x2673c3 = 0x0, _0x4f3dfc = _0x46a874['reflectionProbes']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x50b5bb = _0x46a874['reflectionProbes'][_0x2673c3] , _0x459279 = _0x5872ea['Parse'](_0x50b5bb, _0x15088d, _0x420c2b); _0x459279 && (_0x5502c9['reflectionProbes']['push'](_0x459279), _0x597137 += 0x0 === _0x2673c3 ? '\x0a\x09Reflection\x20Probes:' : '', _0x597137 += '\x0a\x09\x09' + _0x459279['toString'](_0x3a9cb4)); } if (void 0x0 !== _0x46a874['animations'] && null !== _0x46a874['animations']) for (_0x2673c3 = 0x0, _0x4f3dfc = _0x46a874['animations']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x78f601 = _0x46a874['animations'][_0x2673c3] , _0x1e0a52 = _0x376b99['a']['GetClass']('BABYLON.Animation'); if (_0x1e0a52) { var _0x464a86 = _0x1e0a52['Parse'](_0x78f601); _0x15088d['animations']['push'](_0x464a86), _0x5502c9['animations']['push'](_0x464a86), _0x597137 += 0x0 === _0x2673c3 ? '\x0a\x09Animations:' : '', _0x597137 += '\x0a\x09\x09' + _0x464a86['toString'](_0x3a9cb4); } } if (void 0x0 !== _0x46a874['materials'] && null !== _0x46a874['materials']) for (_0x2673c3 = 0x0, _0x4f3dfc = _0x46a874['materials']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x379039 = _0x46a874['materials'][_0x2673c3] , _0x56c843 = _0x10d420['a']['Parse'](_0x379039, _0x15088d, _0x420c2b); if (_0x56c843) _0x5502c9['materials']['push'](_0x56c843), _0x597137 += 0x0 === _0x2673c3 ? '\x0a\x09Materials:' : '', _0x597137 += '\x0a\x09\x09' + _0x56c843['toString'](_0x3a9cb4), _0x56c843['getActiveTextures']()['forEach'](function(_0x325cd3) { -0x1 == _0x5502c9['textures']['indexOf'](_0x325cd3) && _0x5502c9['textures']['push'](_0x325cd3); }); } if (void 0x0 !== _0x46a874['multiMaterials'] && null !== _0x46a874['multiMaterials']) for (_0x2673c3 = 0x0, _0x4f3dfc = _0x46a874['multiMaterials']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x420d88 = _0x46a874['multiMaterials'][_0x2673c3] , _0x2de81a = _0x20b869['a']['ParseMultiMaterial'](_0x420d88, _0x15088d); _0x5502c9['multiMaterials']['push'](_0x2de81a), _0x597137 += 0x0 === _0x2673c3 ? '\x0a\x09MultiMaterials:' : '', _0x597137 += '\x0a\x09\x09' + _0x2de81a['toString'](_0x3a9cb4), _0x2de81a['getActiveTextures']()['forEach'](function(_0x5b8806) { -0x1 == _0x5502c9['textures']['indexOf'](_0x5b8806) && _0x5502c9['textures']['push'](_0x5b8806); }); } if (void 0x0 !== _0x46a874['morphTargetManagers'] && null !== _0x46a874['morphTargetManagers']) for (var _0x14cdfc = 0x0, _0x19b06a = _0x46a874['morphTargetManagers']; _0x14cdfc < _0x19b06a['length']; _0x14cdfc++) { var _0x177f3b = _0x19b06a[_0x14cdfc]; _0x5502c9['morphTargetManagers']['push'](_0x3d8243['Parse'](_0x177f3b, _0x15088d)); } if (void 0x0 !== _0x46a874['skeletons'] && null !== _0x46a874['skeletons']) for (_0x2673c3 = 0x0, _0x4f3dfc = _0x46a874['skeletons']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x302b94 = _0x46a874['skeletons'][_0x2673c3] , _0x16a512 = _0x48b7c1['Parse'](_0x302b94, _0x15088d); _0x5502c9['skeletons']['push'](_0x16a512), _0x597137 += 0x0 === _0x2673c3 ? '\x0a\x09Skeletons:' : '', _0x597137 += '\x0a\x09\x09' + _0x16a512['toString'](_0x3a9cb4); } var _0x4004da = _0x46a874['geometries']; if (null != _0x4004da) { var _0x1007f2 = new Array() , _0x332afc = _0x4004da['vertexData']; if (null != _0x332afc) for (_0x2673c3 = 0x0, _0x4f3dfc = _0x332afc['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x44cdd8 = _0x332afc[_0x2673c3]; _0x1007f2['push'](_0x2328b6['a']['Parse'](_0x44cdd8, _0x15088d, _0x420c2b)); } _0x1007f2['forEach'](function(_0x2578ce) { _0x2578ce && _0x5502c9['geometries']['push'](_0x2578ce); }); } if (void 0x0 !== _0x46a874['transformNodes'] && null !== _0x46a874['transformNodes']) for (_0x2673c3 = 0x0, _0x4f3dfc = _0x46a874['transformNodes']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x382a89 = _0x46a874['transformNodes'][_0x2673c3] , _0x183e50 = _0x483560['a']['Parse'](_0x382a89, _0x15088d, _0x420c2b); _0x5502c9['transformNodes']['push'](_0x183e50); } if (void 0x0 !== _0x46a874['meshes'] && null !== _0x46a874['meshes']) for (_0x2673c3 = 0x0, _0x4f3dfc = _0x46a874['meshes']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x39e0f2 = _0x46a874['meshes'][_0x2673c3] , _0x41c1af = _0xb4719b['a']['Parse'](_0x39e0f2, _0x15088d, _0x420c2b); _0x5502c9['meshes']['push'](_0x41c1af), _0x597137 += 0x0 === _0x2673c3 ? '\x0a\x09Meshes:' : '', _0x597137 += '\x0a\x09\x09' + _0x41c1af['toString'](_0x3a9cb4); } if (void 0x0 !== _0x46a874['cameras'] && null !== _0x46a874['cameras']) for (_0x2673c3 = 0x0, _0x4f3dfc = _0x46a874['cameras']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x19a060 = _0x46a874['cameras'][_0x2673c3] , _0x27ddd4 = _0x4504cf['a']['Parse'](_0x19a060, _0x15088d); _0x5502c9['cameras']['push'](_0x27ddd4), _0x597137 += 0x0 === _0x2673c3 ? '\x0a\x09Cameras:' : '', _0x597137 += '\x0a\x09\x09' + _0x27ddd4['toString'](_0x3a9cb4); } if (void 0x0 !== _0x46a874['animationGroups'] && null !== _0x46a874['animationGroups']) for (_0x2673c3 = 0x0, _0x4f3dfc = _0x46a874['animationGroups']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x35c60d = _0x46a874['animationGroups'][_0x2673c3] , _0x4c01da = _0x46b94c['Parse'](_0x35c60d, _0x15088d); _0x5502c9['animationGroups']['push'](_0x4c01da), _0x597137 += 0x0 === _0x2673c3 ? '\x0a\x09AnimationGroups:' : '', _0x597137 += '\x0a\x09\x09' + _0x4c01da['toString'](_0x3a9cb4); } for (_0x2673c3 = 0x0, _0x4f3dfc = _0x15088d['cameras']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { (_0x27ddd4 = _0x15088d['cameras'][_0x2673c3])['_waitingParentId'] && (_0x27ddd4['parent'] = _0x15088d['getLastEntryByID'](_0x27ddd4['_waitingParentId']), _0x27ddd4['_waitingParentId'] = null); } for (_0x2673c3 = 0x0, _0x4f3dfc = _0x15088d['lights']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0xbd2cfb = _0x15088d['lights'][_0x2673c3]; _0xbd2cfb && _0xbd2cfb['_waitingParentId'] && (_0xbd2cfb['parent'] = _0x15088d['getLastEntryByID'](_0xbd2cfb['_waitingParentId']), _0xbd2cfb['_waitingParentId'] = null); } for (_0x2673c3 = 0x0, _0x4f3dfc = _0x15088d['transformNodes']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x466477 = _0x15088d['transformNodes'][_0x2673c3]; _0x466477['_waitingParentId'] && (_0x466477['parent'] = _0x15088d['getLastEntryByID'](_0x466477['_waitingParentId']), _0x466477['_waitingParentId'] = null); } for (_0x2673c3 = 0x0, _0x4f3dfc = _0x15088d['meshes']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { (_0x41c1af = _0x15088d['meshes'][_0x2673c3])['_waitingParentId'] && (_0x41c1af['parent'] = _0x15088d['getLastEntryByID'](_0x41c1af['_waitingParentId']), _0x41c1af['_waitingParentId'] = null), _0x41c1af['_waitingData']['lods'] && _0x2f7abf(_0x15088d, _0x41c1af); } for (_0x2673c3 = 0x0, _0x4f3dfc = _0x15088d['skeletons']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { (_0x16a512 = _0x15088d['skeletons'][_0x2673c3])['_hasWaitingData'] && (null != _0x16a512['bones'] && _0x16a512['bones']['forEach'](function(_0x33cc4d) { if (_0x33cc4d['_waitingTransformNodeId']) { var _0x4895b6 = _0x15088d['getLastEntryByID'](_0x33cc4d['_waitingTransformNodeId']); _0x4895b6 && _0x33cc4d['linkTransformNode'](_0x4895b6), _0x33cc4d['_waitingTransformNodeId'] = null; } }), _0x16a512['_hasWaitingData'] = null); } for (_0x2673c3 = 0x0, _0x4f3dfc = _0x15088d['meshes']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x1c930b = _0x15088d['meshes'][_0x2673c3]; _0x1c930b['_waitingData']['freezeWorldMatrix'] ? (_0x1c930b['freezeWorldMatrix'](), _0x1c930b['_waitingData']['freezeWorldMatrix'] = null) : _0x1c930b['computeWorldMatrix'](!0x0); } for (_0x2673c3 = 0x0, _0x4f3dfc = _0x15088d['lights']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { var _0x26a1d0 = _0x15088d['lights'][_0x2673c3]; if (_0x26a1d0['_excludedMeshesIds']['length'] > 0x0) { for (var _0x4edc97 = 0x0; _0x4edc97 < _0x26a1d0['_excludedMeshesIds']['length']; _0x4edc97++) { var _0x2a1da6 = _0x15088d['getMeshByID'](_0x26a1d0['_excludedMeshesIds'][_0x4edc97]); _0x2a1da6 && _0x26a1d0['excludedMeshes']['push'](_0x2a1da6); } _0x26a1d0['_excludedMeshesIds'] = []; } if (_0x26a1d0['_includedOnlyMeshesIds']['length'] > 0x0) { for (var _0x2c93f1 = 0x0; _0x2c93f1 < _0x26a1d0['_includedOnlyMeshesIds']['length']; _0x2c93f1++) { var _0x183ca3 = _0x15088d['getMeshByID'](_0x26a1d0['_includedOnlyMeshesIds'][_0x2c93f1]); _0x183ca3 && _0x26a1d0['includedOnlyMeshes']['push'](_0x183ca3); } _0x26a1d0['_includedOnlyMeshesIds'] = []; } } for (_0x20925f['a']['Parse'](_0x46a874, _0x15088d, _0x5502c9, _0x420c2b), _0x2673c3 = 0x0, _0x4f3dfc = _0x15088d['meshes']['length']; _0x2673c3 < _0x4f3dfc; _0x2673c3++) { (_0x41c1af = _0x15088d['meshes'][_0x2673c3])['_waitingData']['actions'] && (_0x5bf76d['Parse'](_0x41c1af['_waitingData']['actions'], _0x41c1af, _0x15088d), _0x41c1af['_waitingData']['actions'] = null); } void 0x0 !== _0x46a874['actions'] && null !== _0x46a874['actions'] && _0x5bf76d['Parse'](_0x46a874['actions'], null, _0x15088d), _0x4dfefa || _0x5502c9['removeAllFromScene'](); } catch (_0x1b232b) { var _0xc4b490 = _0x22d7d3('loadAssets', _0x46a874 ? _0x46a874['producer'] : 'Unknown') + _0x597137; if (!_0x48fc3f) throw _0x3f98cb['a']['Log'](_0xc4b490), _0x1b232b; _0x48fc3f(_0xc4b490, _0x1b232b); } finally { null !== _0x597137 && _0x32da6b['loggingLevel'] !== _0x32da6b['NO_LOGGING'] && _0x3f98cb['a']['Log'](_0x22d7d3('loadAssets', _0x46a874 ? _0x46a874['producer'] : 'Unknown') + (_0x32da6b['loggingLevel'] !== _0x32da6b['MINIMAL_LOGGING'] ? _0x597137 : '')); } return _0x5502c9; }; _0x32da6b['RegisterPlugin']({ 'name': 'babylon.js', 'extensions': '.babylon', 'canDirectLoad': function(_0x5eee6f) { return -0x1 !== _0x5eee6f['indexOf']('babylon'); }, 'importMesh': function(_0xcdbf6, _0x5b182f, _0x4e6f1d, _0x450324, _0x2d0da6, _0x48a866, _0x18ae0f, _0x9dfc49) { var _0xc38689 = 'importMesh\x20has\x20failed\x20JSON\x20parse'; try { var _0x397059 = JSON['parse'](_0x4e6f1d); _0xc38689 = ''; var _0x1d8f4b = _0x32da6b['loggingLevel'] === _0x32da6b['DETAILED_LOGGING']; _0xcdbf6 ? Array['isArray'](_0xcdbf6) || (_0xcdbf6 = [_0xcdbf6]) : _0xcdbf6 = null; var _0x33d50e = new Array(); if (void 0x0 !== _0x397059['meshes'] && null !== _0x397059['meshes']) { var _0x4fc4f0, _0x5d3d63, _0x5679ca, _0x4669ca = [], _0x4bf8e8 = []; for (_0x4fc4f0 = 0x0, _0x5d3d63 = _0x397059['meshes']['length']; _0x4fc4f0 < _0x5d3d63; _0x4fc4f0++) { var _0x18a73b = _0x397059['meshes'][_0x4fc4f0]; if (null === _0xcdbf6 || _0x5c77f2(_0x18a73b, _0xcdbf6, _0x33d50e)) { if (null !== _0xcdbf6 && delete _0xcdbf6[_0xcdbf6['indexOf'](_0x18a73b['name'])], void 0x0 !== _0x18a73b['geometryId'] && null !== _0x18a73b['geometryId'] && void 0x0 !== _0x397059['geometries'] && null !== _0x397059['geometries']) { var _0x2e005a = !0x1; ['boxes', 'spheres', 'cylinders', 'toruses', 'grounds', 'planes', 'torusKnots', 'vertexData']['forEach'](function(_0x28027d) { !0x0 !== _0x2e005a && _0x397059['geometries'][_0x28027d] && Array['isArray'](_0x397059['geometries'][_0x28027d]) && _0x397059['geometries'][_0x28027d]['forEach'](function(_0x2240ed) { if (_0x2240ed['id'] === _0x18a73b['geometryId']) { switch (_0x28027d) { case 'vertexData': _0x2328b6['a']['Parse'](_0x2240ed, _0x5b182f, _0x450324); } _0x2e005a = !0x0; } }); }), !0x1 === _0x2e005a && _0x3f98cb['a']['Warn']('Geometry\x20not\x20found\x20for\x20mesh\x20' + _0x18a73b['id']); } if (_0x18a73b['materialId']) { var _0x119e04 = -0x1 !== _0x4bf8e8['indexOf'](_0x18a73b['materialId']); if (!0x1 === _0x119e04 && void 0x0 !== _0x397059['multiMaterials'] && null !== _0x397059['multiMaterials']) for (var _0x3c6cb1 = 0x0, _0x5f4a68 = _0x397059['multiMaterials']['length']; _0x3c6cb1 < _0x5f4a68; _0x3c6cb1++) { var _0x2b5e82 = _0x397059['multiMaterials'][_0x3c6cb1]; if (_0x2b5e82['id'] === _0x18a73b['materialId']) { for (var _0xbf949b = 0x0, _0x25ec3f = _0x2b5e82['materials']['length']; _0xbf949b < _0x25ec3f; _0xbf949b++) { var _0x5a39dd, _0x42b023 = _0x2b5e82['materials'][_0xbf949b]; _0x4bf8e8['push'](_0x42b023), (_0x5a39dd = _0x5a7665(_0x42b023, _0x397059, _0x5b182f, _0x450324)) && (_0xc38689 += '\x0a\x09Material\x20' + _0x5a39dd['toString'](_0x1d8f4b)); } _0x4bf8e8['push'](_0x2b5e82['id']); var _0x436587 = _0x20b869['a']['ParseMultiMaterial'](_0x2b5e82, _0x5b182f); _0x436587 && (_0x119e04 = !0x0, _0xc38689 += '\x0a\x09Multi-Material\x20' + _0x436587['toString'](_0x1d8f4b)); break; } } if (!0x1 === _0x119e04) _0x4bf8e8['push'](_0x18a73b['materialId']), (_0x5a39dd = _0x5a7665(_0x18a73b['materialId'], _0x397059, _0x5b182f, _0x450324)) ? _0xc38689 += '\x0a\x09Material\x20' + _0x5a39dd['toString'](_0x1d8f4b) : _0x3f98cb['a']['Warn']('Material\x20not\x20found\x20for\x20mesh\x20' + _0x18a73b['id']); } if (_0x18a73b['skeletonId'] > -0x1 && void 0x0 !== _0x397059['skeletons'] && null !== _0x397059['skeletons']) if (!0x1 === _0x4669ca['indexOf'](_0x18a73b['skeletonId']) > -0x1) for (var _0x3e5b1c = 0x0, _0x28ad65 = _0x397059['skeletons']['length']; _0x3e5b1c < _0x28ad65; _0x3e5b1c++) { var _0x2bdd80 = _0x397059['skeletons'][_0x3e5b1c]; if (_0x2bdd80['id'] === _0x18a73b['skeletonId']) { var _0x12128e = _0x48b7c1['Parse'](_0x2bdd80, _0x5b182f); _0x18ae0f['push'](_0x12128e), _0x4669ca['push'](_0x2bdd80['id']), _0xc38689 += '\x0a\x09Skeleton\x20' + _0x12128e['toString'](_0x1d8f4b); } } if (void 0x0 !== _0x397059['morphTargetManagers'] && null !== _0x397059['morphTargetManagers']) for (var _0x3d37d5 = 0x0, _0x3ce0f7 = _0x397059['morphTargetManagers']; _0x3d37d5 < _0x3ce0f7['length']; _0x3d37d5++) { var _0x398afb = _0x3ce0f7[_0x3d37d5]; _0x3d8243['Parse'](_0x398afb, _0x5b182f); } var _0x2af25e = _0xb4719b['a']['Parse'](_0x18a73b, _0x5b182f, _0x450324); _0x2d0da6['push'](_0x2af25e), _0xc38689 += '\x0a\x09Mesh\x20' + _0x2af25e['toString'](_0x1d8f4b); } } for (_0x4fc4f0 = 0x0, _0x5d3d63 = _0x5b182f['meshes']['length']; _0x4fc4f0 < _0x5d3d63; _0x4fc4f0++) (_0x5679ca = _0x5b182f['meshes'][_0x4fc4f0])['_waitingParentId'] && (_0x5679ca['parent'] = _0x5b182f['getLastEntryByID'](_0x5679ca['_waitingParentId']), _0x5679ca['_waitingParentId'] = null), _0x5679ca['_waitingData']['lods'] && _0x2f7abf(_0x5b182f, _0x5679ca); for (_0x4fc4f0 = 0x0, _0x5d3d63 = _0x5b182f['skeletons']['length']; _0x4fc4f0 < _0x5d3d63; _0x4fc4f0++) { (_0x12128e = _0x5b182f['skeletons'][_0x4fc4f0])['_hasWaitingData'] && (null != _0x12128e['bones'] && _0x12128e['bones']['forEach'](function(_0x2690b5) { if (_0x2690b5['_waitingTransformNodeId']) { var _0x409c03 = _0x5b182f['getLastEntryByID'](_0x2690b5['_waitingTransformNodeId']); _0x409c03 && _0x2690b5['linkTransformNode'](_0x409c03), _0x2690b5['_waitingTransformNodeId'] = null; } }), _0x12128e['_hasWaitingData'] = null); } for (_0x4fc4f0 = 0x0, _0x5d3d63 = _0x5b182f['meshes']['length']; _0x4fc4f0 < _0x5d3d63; _0x4fc4f0++) (_0x5679ca = _0x5b182f['meshes'][_0x4fc4f0])['_waitingData']['freezeWorldMatrix'] ? (_0x5679ca['freezeWorldMatrix'](), _0x5679ca['_waitingData']['freezeWorldMatrix'] = null) : _0x5679ca['computeWorldMatrix'](!0x0); } if (void 0x0 !== _0x397059['particleSystems'] && null !== _0x397059['particleSystems']) { var _0x2d9976 = _0x20925f['a']['GetIndividualParser'](_0x443f74['a']['NAME_PARTICLESYSTEM']); if (_0x2d9976) for (_0x4fc4f0 = 0x0, _0x5d3d63 = _0x397059['particleSystems']['length']; _0x4fc4f0 < _0x5d3d63; _0x4fc4f0++) { var _0x54913f = _0x397059['particleSystems'][_0x4fc4f0]; -0x1 !== _0x33d50e['indexOf'](_0x54913f['emitterId']) && _0x48a866['push'](_0x2d9976(_0x54913f, _0x5b182f, _0x450324)); } } return !0x0; } catch (_0x1ac644) { var _0x44faa1 = _0x22d7d3('importMesh', _0x397059 ? _0x397059['producer'] : 'Unknown') + _0xc38689; if (!_0x9dfc49) throw _0x3f98cb['a']['Log'](_0x44faa1), _0x1ac644; _0x9dfc49(_0x44faa1, _0x1ac644); } finally { null !== _0xc38689 && _0x32da6b['loggingLevel'] !== _0x32da6b['NO_LOGGING'] && _0x3f98cb['a']['Log'](_0x22d7d3('importMesh', _0x397059 ? _0x397059['producer'] : 'Unknown') + (_0x32da6b['loggingLevel'] !== _0x32da6b['MINIMAL_LOGGING'] ? _0xc38689 : '')); } return !0x1; }, 'load': function(_0x34a791, _0x139ae1, _0xb27989, _0x3a297a) { var _0x42ab97 = 'importScene\x20has\x20failed\x20JSON\x20parse'; try { var _0x3e3855 = JSON['parse'](_0x139ae1); if (_0x42ab97 = '', void 0x0 !== _0x3e3855['useDelayedTextureLoading'] && null !== _0x3e3855['useDelayedTextureLoading'] && (_0x34a791['useDelayedTextureLoading'] = _0x3e3855['useDelayedTextureLoading'] && !_0x32da6b['ForceFullSceneLoadingForIncremental']), void 0x0 !== _0x3e3855['autoClear'] && null !== _0x3e3855['autoClear'] && (_0x34a791['autoClear'] = _0x3e3855['autoClear']), void 0x0 !== _0x3e3855['clearColor'] && null !== _0x3e3855['clearColor'] && (_0x34a791['clearColor'] = _0x47d24f['f']['FromArray'](_0x3e3855['clearColor'])), void 0x0 !== _0x3e3855['ambientColor'] && null !== _0x3e3855['ambientColor'] && (_0x34a791['ambientColor'] = _0x47d24f['e']['FromArray'](_0x3e3855['ambientColor'])), void 0x0 !== _0x3e3855['gravity'] && null !== _0x3e3855['gravity'] && (_0x34a791['gravity'] = _0x47d24f['x']['FromArray'](_0x3e3855['gravity'])), _0x3e3855['fogMode'] && 0x0 !== _0x3e3855['fogMode']) switch (_0x34a791['fogMode'] = _0x3e3855['fogMode'], _0x34a791['fogColor'] = _0x47d24f['e']['FromArray'](_0x3e3855['fogColor']), _0x34a791['fogStart'] = _0x3e3855['fogStart'], _0x34a791['fogEnd'] = _0x3e3855['fogEnd'], _0x34a791['fogDensity'] = _0x3e3855['fogDensity'], _0x42ab97 += '\x09Fog\x20mode\x20for\x20scene:\x20\x20', _0x34a791['fogMode']) { case 0x1: _0x42ab97 += 'exp\x0a'; break; case 0x2: _0x42ab97 += 'exp2\x0a'; break; case 0x3: _0x42ab97 += 'linear\x0a'; } if (_0x3e3855['physicsEnabled']) { var _0x24b385; 'cannon' === _0x3e3855['physicsEngine'] ? _0x24b385 = new _0x5271b3() : 'oimo' === _0x3e3855['physicsEngine'] ? _0x24b385 = new _0x272b2e() : 'ammo' === _0x3e3855['physicsEngine'] && (_0x24b385 = new _0x23f8ee()), _0x42ab97 = '\x09Physics\x20engine\x20' + (_0x3e3855['physicsEngine'] ? _0x3e3855['physicsEngine'] : 'oimo') + '\x20enabled\x0a'; var _0x14c997 = _0x3e3855['physicsGravity'] ? _0x47d24f['x']['FromArray'](_0x3e3855['physicsGravity']) : null; _0x34a791['enablePhysics'](_0x14c997, _0x24b385); } if (void 0x0 !== _0x3e3855['metadata'] && null !== _0x3e3855['metadata'] && (_0x34a791['metadata'] = _0x3e3855['metadata']), void 0x0 !== _0x3e3855['collisionsEnabled'] && null !== _0x3e3855['collisionsEnabled'] && (_0x34a791['collisionsEnabled'] = _0x3e3855['collisionsEnabled']), !_0x3fb1e5(_0x34a791, _0x139ae1, _0xb27989, _0x3a297a, !0x0)) return !0x1; if (_0x3e3855['autoAnimate'] && _0x34a791['beginAnimation'](_0x34a791, _0x3e3855['autoAnimateFrom'], _0x3e3855['autoAnimateTo'], _0x3e3855['autoAnimateLoop'], _0x3e3855['autoAnimateSpeed'] || 0x1), void 0x0 !== _0x3e3855['activeCameraID'] && null !== _0x3e3855['activeCameraID'] && _0x34a791['setActiveCameraByID'](_0x3e3855['activeCameraID']), void 0x0 !== _0x3e3855['environmentTexture'] && null !== _0x3e3855['environmentTexture']) { var _0x30cf4b = void 0x0 === _0x3e3855['isPBR'] || _0x3e3855['isPBR']; if (_0x3e3855['environmentTextureType'] && 'BABYLON.HDRCubeTexture' === _0x3e3855['environmentTextureType']) { var _0x4f51c2 = _0x3e3855['environmentTextureSize'] ? _0x3e3855['environmentTextureSize'] : 0x80 , _0xd10c5c = new _0x52697b(_0xb27989 + _0x3e3855['environmentTexture'],_0x34a791,_0x4f51c2,!0x0,!_0x30cf4b); _0x3e3855['environmentTextureRotationY'] && (_0xd10c5c['rotationY'] = _0x3e3855['environmentTextureRotationY']), _0x34a791['environmentTexture'] = _0xd10c5c; } else if (_0x1eb50e['h']['EndsWith'](_0x3e3855['environmentTexture'], '.env')) { var _0x193579 = new _0x1ed101(_0xb27989 + _0x3e3855['environmentTexture'],_0x34a791); _0x3e3855['environmentTextureRotationY'] && (_0x193579['rotationY'] = _0x3e3855['environmentTextureRotationY']), _0x34a791['environmentTexture'] = _0x193579; } else { var _0x742d81 = _0x1ed101['CreateFromPrefilteredData'](_0xb27989 + _0x3e3855['environmentTexture'], _0x34a791); _0x3e3855['environmentTextureRotationY'] && (_0x742d81['rotationY'] = _0x3e3855['environmentTextureRotationY']), _0x34a791['environmentTexture'] = _0x742d81; } if (!0x0 === _0x3e3855['createDefaultSkybox']) { var _0x273918 = void 0x0 !== _0x34a791['activeCamera'] && null !== _0x34a791['activeCamera'] ? (_0x34a791['activeCamera']['maxZ'] - _0x34a791['activeCamera']['minZ']) / 0x2 : 0x3e8 , _0x2ba29d = _0x3e3855['skyboxBlurLevel'] || 0x0; _0x34a791['createDefaultSkybox'](_0x34a791['environmentTexture'], _0x30cf4b, _0x273918, _0x2ba29d); } } return !0x0; } catch (_0x37d4ff) { var _0x4f4682 = _0x22d7d3('importScene', _0x3e3855 ? _0x3e3855['producer'] : 'Unknown') + _0x42ab97; if (!_0x3a297a) throw _0x3f98cb['a']['Log'](_0x4f4682), _0x37d4ff; _0x3a297a(_0x4f4682, _0x37d4ff); } finally { null !== _0x42ab97 && _0x32da6b['loggingLevel'] !== _0x32da6b['NO_LOGGING'] && _0x3f98cb['a']['Log'](_0x22d7d3('importScene', _0x3e3855 ? _0x3e3855['producer'] : 'Unknown') + (_0x32da6b['loggingLevel'] !== _0x32da6b['MINIMAL_LOGGING'] ? _0x42ab97 : '')); } return !0x1; }, 'loadAssetContainer': function(_0x261cb1, _0x8e9b60, _0x372718, _0x2ebf70) { return _0x3fb1e5(_0x261cb1, _0x8e9b60, _0x372718, _0x2ebf70); } }); var _0x1b8580 = _0x59bd00(0x5d) , _0x5d771f = function() { function _0x3ede10() { this['_isEnabled'] = !0x0, this['leftColor'] = _0x47d24f['e']['White'](), this['rightColor'] = _0x47d24f['e']['Black'](), this['bias'] = 0x0, this['power'] = 0x1; } return Object['defineProperty'](_0x3ede10['prototype'], 'isEnabled', { 'get': function() { return this['_isEnabled']; }, 'set': function(_0x46d4ec) { this['_isEnabled'] !== _0x46d4ec && (this['_isEnabled'] = _0x46d4ec, _0x3647a9['b']['MarkAllMaterialsAsDirty'](_0x24e342['a']['MATERIAL_FresnelDirtyFlag'] | _0x24e342['a']['MATERIAL_MiscDirtyFlag'])); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3ede10['prototype']['clone'] = function() { var _0x3f4295 = new _0x3ede10(); return _0x5e367c['a']['DeepCopy'](this, _0x3f4295), _0x3f4295; } , _0x3ede10['prototype']['serialize'] = function() { var _0x13fc4c = {}; return _0x13fc4c['isEnabled'] = this['isEnabled'], _0x13fc4c['leftColor'] = this['leftColor']['asArray'](), _0x13fc4c['rightColor'] = this['rightColor']['asArray'](), _0x13fc4c['bias'] = this['bias'], _0x13fc4c['power'] = this['power'], _0x13fc4c; } , _0x3ede10['Parse'] = function(_0x1b7c2a) { var _0x3a2430 = new _0x3ede10(); return _0x3a2430['isEnabled'] = _0x1b7c2a['isEnabled'], _0x3a2430['leftColor'] = _0x47d24f['e']['FromArray'](_0x1b7c2a['leftColor']), _0x3a2430['rightColor'] = _0x47d24f['e']['FromArray'](_0x1b7c2a['rightColor']), _0x3a2430['bias'] = _0x1b7c2a['bias'], _0x3a2430['power'] = _0x1b7c2a['power'] || 0x1, _0x3a2430; } , _0x3ede10; }(); _0x3d4764['a']['_FresnelParametersParser'] = _0x5d771f['Parse']; var _0x318a8c = function(_0x3b40f9) { function _0x3e88c6(_0x4846cf, _0x4c9c4d) { var _0x3bba70 = _0x3b40f9['call'](this, _0x4846cf, _0x4c9c4d) || this; return _0x3bba70['maxSimultaneousLights'] = 0x4, _0x3bba70['disableLighting'] = !0x1, _0x3bba70['invertNormalMapX'] = !0x1, _0x3bba70['invertNormalMapY'] = !0x1, _0x3bba70['emissiveColor'] = new _0x47d24f['e'](0x0,0x0,0x0), _0x3bba70['occlusionStrength'] = 0x1, _0x3bba70['useLightmapAsShadowmap'] = !0x1, _0x3bba70['_useAlphaFromAlbedoTexture'] = !0x0, _0x3bba70['_useAmbientInGrayScale'] = !0x0, _0x3bba70; } return _0x420e5b['d'](_0x3e88c6, _0x3b40f9), Object['defineProperty'](_0x3e88c6['prototype'], 'doubleSided', { 'get': function() { return this['_twoSidedLighting']; }, 'set': function(_0x28ad23) { this['_twoSidedLighting'] !== _0x28ad23 && (this['_twoSidedLighting'] = _0x28ad23, this['backFaceCulling'] = !_0x28ad23, this['_markAllSubMeshesAsTexturesDirty']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3e88c6['prototype']['getClassName'] = function() { return 'PBRBaseSimpleMaterial'; } , _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsLightsDirty')], _0x3e88c6['prototype'], 'maxSimultaneousLights', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsLightsDirty')], _0x3e88c6['prototype'], 'disableLighting', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_reflectionTexture')], _0x3e88c6['prototype'], 'environmentTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x3e88c6['prototype'], 'invertNormalMapX', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x3e88c6['prototype'], 'invertNormalMapY', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_bumpTexture')], _0x3e88c6['prototype'], 'normalTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])('emissive'), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x3e88c6['prototype'], 'emissiveColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x3e88c6['prototype'], 'emissiveTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_ambientTextureStrength')], _0x3e88c6['prototype'], 'occlusionStrength', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_ambientTexture')], _0x3e88c6['prototype'], 'occlusionTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_alphaCutOff')], _0x3e88c6['prototype'], 'alphaCutOff', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x3e88c6['prototype'], 'doubleSided', null), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', null)], _0x3e88c6['prototype'], 'lightmapTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x3e88c6['prototype'], 'useLightmapAsShadowmap', void 0x0), _0x3e88c6; }(_0x327952) , _0x51489a = function(_0x2996b7) { function _0x1472e9(_0x375014, _0x2c7965) { var _0x4159f8 = _0x2996b7['call'](this, _0x375014, _0x2c7965) || this; return _0x4159f8['_useRoughnessFromMetallicTextureAlpha'] = !0x1, _0x4159f8['_useRoughnessFromMetallicTextureGreen'] = !0x0, _0x4159f8['_useMetallnessFromMetallicTextureBlue'] = !0x0, _0x4159f8['metallic'] = 0x1, _0x4159f8['roughness'] = 0x1, _0x4159f8; } return _0x420e5b['d'](_0x1472e9, _0x2996b7), _0x1472e9['prototype']['getClassName'] = function() { return 'PBRMetallicRoughnessMaterial'; } , _0x1472e9['prototype']['clone'] = function(_0x843969) { var _0x453f39 = this , _0x52552b = _0x3d4764['a']['Clone'](function() { return new _0x1472e9(_0x843969,_0x453f39['getScene']()); }, this); return _0x52552b['id'] = _0x843969, _0x52552b['name'] = _0x843969, this['clearCoat']['copyTo'](_0x52552b['clearCoat']), this['anisotropy']['copyTo'](_0x52552b['anisotropy']), this['brdf']['copyTo'](_0x52552b['brdf']), this['sheen']['copyTo'](_0x52552b['sheen']), _0x52552b; } , _0x1472e9['prototype']['serialize'] = function() { var _0x5736ab = _0x3d4764['a']['Serialize'](this); return _0x5736ab['customType'] = 'BABYLON.PBRMetallicRoughnessMaterial', _0x5736ab['clearCoat'] = this['clearCoat']['serialize'](), _0x5736ab['anisotropy'] = this['anisotropy']['serialize'](), _0x5736ab['brdf'] = this['brdf']['serialize'](), _0x5736ab['sheen'] = this['sheen']['serialize'](), _0x5736ab; } , _0x1472e9['Parse'] = function(_0x2c43e4, _0x26e4bf, _0x4e46a1) { var _0x4e67db = _0x3d4764['a']['Parse'](function() { return new _0x1472e9(_0x2c43e4['name'],_0x26e4bf); }, _0x2c43e4, _0x26e4bf, _0x4e46a1); return _0x2c43e4['clearCoat'] && _0x4e67db['clearCoat']['parse'](_0x2c43e4['clearCoat']), _0x2c43e4['anisotropy'] && _0x4e67db['anisotropy']['parse'](_0x2c43e4['anisotropy']), _0x2c43e4['brdf'] && _0x4e67db['brdf']['parse'](_0x2c43e4['brdf']), _0x2c43e4['sheen'] && _0x4e67db['sheen']['parse'](_0x2c43e4['brdf']), _0x4e67db; } , _0x420e5b['c']([Object(_0x3d4764['e'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_albedoColor')], _0x1472e9['prototype'], 'baseColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_albedoTexture')], _0x1472e9['prototype'], 'baseTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1472e9['prototype'], 'metallic', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty')], _0x1472e9['prototype'], 'roughness', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_metallicTexture')], _0x1472e9['prototype'], 'metallicRoughnessTexture', void 0x0), _0x1472e9; }(_0x318a8c); _0x376b99['a']['RegisteredTypes']['BABYLON.PBRMetallicRoughnessMaterial'] = _0x51489a; var _0x4fcd7b = function(_0x2aea34) { function _0x161fb0(_0x254645, _0x418b9d) { var _0x3cf4ea = _0x2aea34['call'](this, _0x254645, _0x418b9d) || this; return _0x3cf4ea['_useMicroSurfaceFromReflectivityMapAlpha'] = !0x0, _0x3cf4ea; } return _0x420e5b['d'](_0x161fb0, _0x2aea34), _0x161fb0['prototype']['getClassName'] = function() { return 'PBRSpecularGlossinessMaterial'; } , _0x161fb0['prototype']['clone'] = function(_0x1a4929) { var _0x259221 = this , _0x3d0e7a = _0x3d4764['a']['Clone'](function() { return new _0x161fb0(_0x1a4929,_0x259221['getScene']()); }, this); return _0x3d0e7a['id'] = _0x1a4929, _0x3d0e7a['name'] = _0x1a4929, this['clearCoat']['copyTo'](_0x3d0e7a['clearCoat']), this['anisotropy']['copyTo'](_0x3d0e7a['anisotropy']), this['brdf']['copyTo'](_0x3d0e7a['brdf']), this['sheen']['copyTo'](_0x3d0e7a['sheen']), _0x3d0e7a; } , _0x161fb0['prototype']['serialize'] = function() { var _0x7324f = _0x3d4764['a']['Serialize'](this); return _0x7324f['customType'] = 'BABYLON.PBRSpecularGlossinessMaterial', _0x7324f['clearCoat'] = this['clearCoat']['serialize'](), _0x7324f['anisotropy'] = this['anisotropy']['serialize'](), _0x7324f['brdf'] = this['brdf']['serialize'](), _0x7324f['sheen'] = this['sheen']['serialize'](), _0x7324f; } , _0x161fb0['Parse'] = function(_0x86eef4, _0x226c6e, _0x2732ee) { var _0x5d7268 = _0x3d4764['a']['Parse'](function() { return new _0x161fb0(_0x86eef4['name'],_0x226c6e); }, _0x86eef4, _0x226c6e, _0x2732ee); return _0x86eef4['clearCoat'] && _0x5d7268['clearCoat']['parse'](_0x86eef4['clearCoat']), _0x86eef4['anisotropy'] && _0x5d7268['anisotropy']['parse'](_0x86eef4['anisotropy']), _0x86eef4['brdf'] && _0x5d7268['brdf']['parse'](_0x86eef4['brdf']), _0x86eef4['sheen'] && _0x5d7268['sheen']['parse'](_0x86eef4['brdf']), _0x5d7268; } , _0x420e5b['c']([Object(_0x3d4764['e'])('diffuse'), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_albedoColor')], _0x161fb0['prototype'], 'diffuseColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_albedoTexture')], _0x161fb0['prototype'], 'diffuseTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['e'])('specular'), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_reflectivityColor')], _0x161fb0['prototype'], 'specularColor', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_microSurface')], _0x161fb0['prototype'], 'glossiness', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])(), Object(_0x3d4764['b'])('_markAllSubMeshesAsTexturesDirty', '_reflectivityTexture')], _0x161fb0['prototype'], 'specularGlossinessTexture', void 0x0), _0x161fb0; }(_0x318a8c); _0x376b99['a']['RegisteredTypes']['BABYLON.PBRSpecularGlossinessMaterial'] = _0x4fcd7b; var _0xc2ab1 = _0x59bd00(0x4c) , _0x5a1a3f = function(_0x4e4abb) { function _0x209a26(_0x8f11b3, _0x9d152c) { var _0x2233a1 = _0x4e4abb['call'](this, _0x9d152c) || this; return _0x8f11b3 ? (_0x2233a1['_engine'] = _0x9d152c['getEngine'](), _0x2233a1['_textureMatrix'] = _0x47d24f['j']['Identity'](), _0x2233a1['name'] = _0x8f11b3, _0x2233a1['url'] = _0x8f11b3, _0x2233a1['hasAlpha'] = !0x1, _0x2233a1['isCube'] = !0x1, _0x2233a1['is3D'] = _0x2233a1['_engine']['webGLVersion'] > 0x1, _0x2233a1['wrapU'] = _0x24e342['a']['TEXTURE_CLAMP_ADDRESSMODE'], _0x2233a1['wrapV'] = _0x24e342['a']['TEXTURE_CLAMP_ADDRESSMODE'], _0x2233a1['wrapR'] = _0x24e342['a']['TEXTURE_CLAMP_ADDRESSMODE'], _0x2233a1['anisotropicFilteringLevel'] = 0x1, _0x2233a1['_texture'] = _0x2233a1['_getFromCache'](_0x8f11b3, !0x0), _0x2233a1['_texture'] || (_0x9d152c['useDelayedTextureLoading'] ? _0x2233a1['delayLoadState'] = _0x24e342['a']['DELAYLOADSTATE_NOTLOADED'] : _0x2233a1['loadTexture']()), _0x2233a1) : _0x2233a1; } return _0x420e5b['d'](_0x209a26, _0x4e4abb), _0x209a26['prototype']['getTextureMatrix'] = function() { return this['_textureMatrix']; } , _0x209a26['prototype']['load3dlTexture'] = function() { var _0x50cfbc, _0x1540e4 = this['_engine']; _0x50cfbc = 0x1 === _0x1540e4['webGLVersion'] ? _0x1540e4['createRawTexture'](null, 0x1, 0x1, _0x24e342['a']['TEXTUREFORMAT_RGBA'], !0x1, !0x1, _0x24e342['a']['TEXTURE_BILINEAR_SAMPLINGMODE']) : _0x1540e4['createRawTexture3D'](null, 0x1, 0x1, 0x1, _0x24e342['a']['TEXTUREFORMAT_RGBA'], !0x1, !0x1, _0x24e342['a']['TEXTURE_BILINEAR_SAMPLINGMODE']), this['_texture'] = _0x50cfbc; var _0x5a3db5 = function(_0x192e3e) { if ('string' == typeof _0x192e3e) { for (var _0x5ab60a, _0x50719b = null, _0x4b0123 = null, _0x1aba44 = _0x192e3e['split']('\x0a'), _0x5bb829 = 0x0, _0x3ddaa2 = 0x0, _0x503490 = 0x0, _0x52c892 = 0x0, _0x5f50bb = 0x0, _0x5133fb = 0x0; _0x5133fb < _0x1aba44['length']; _0x5133fb++) if (_0x5ab60a = _0x1aba44[_0x5133fb], _0x209a26['_noneEmptyLineRegex']['test'](_0x5ab60a) && 0x0 !== _0x5ab60a['indexOf']('#')) { var _0x352fbb = _0x5ab60a['split']('\x20'); if (0x0 !== _0x5bb829) { if (0x0 != _0x5bb829) { var _0xe6d74a = Math['max'](parseInt(_0x352fbb[0x0]), 0x0) , _0x161cb6 = Math['max'](parseInt(_0x352fbb[0x1]), 0x0) , _0x52e061 = Math['max'](parseInt(_0x352fbb[0x2]), 0x0); _0x5f50bb = Math['max'](_0xe6d74a, _0x5f50bb), _0x5f50bb = Math['max'](_0x161cb6, _0x5f50bb), _0x5f50bb = Math['max'](_0x52e061, _0x5f50bb); var _0x3a832e = 0x4 * (_0x3ddaa2 + _0x52c892 * _0x5bb829 + _0x503490 * _0x5bb829 * _0x5bb829); _0x4b0123 && (_0x4b0123[_0x3a832e + 0x0] = _0xe6d74a, _0x4b0123[_0x3a832e + 0x1] = _0x161cb6, _0x4b0123[_0x3a832e + 0x2] = _0x52e061), ++_0x503490 % _0x5bb829 == 0x0 && (_0x503490 = 0x0, ++_0x52c892 % _0x5bb829 == 0x0 && (_0x3ddaa2++, _0x52c892 = 0x0)); } } else _0x5bb829 = _0x352fbb['length'], _0x50719b = new Uint8Array(_0x5bb829 * _0x5bb829 * _0x5bb829 * 0x4), _0x4b0123 = new Float32Array(_0x5bb829 * _0x5bb829 * _0x5bb829 * 0x4); } if (_0x4b0123 && _0x50719b) for (_0x5133fb = 0x0; _0x5133fb < _0x4b0123['length']; _0x5133fb++) if (_0x5133fb > 0x0 && (_0x5133fb + 0x1) % 0x4 == 0x0) _0x50719b[_0x5133fb] = 0xff; else { var _0x16787f = _0x4b0123[_0x5133fb]; _0x50719b[_0x5133fb] = _0x16787f / _0x5f50bb * 0xff; } _0x50cfbc['is3D'] ? (_0x50cfbc['updateSize'](_0x5bb829, _0x5bb829, _0x5bb829), _0x1540e4['updateRawTexture3D'](_0x50cfbc, _0x50719b, _0x24e342['a']['TEXTUREFORMAT_RGBA'], !0x1)) : (_0x50cfbc['updateSize'](_0x5bb829 * _0x5bb829, _0x5bb829), _0x1540e4['updateRawTexture'](_0x50cfbc, _0x50719b, _0x24e342['a']['TEXTUREFORMAT_RGBA'], !0x1)); } } , _0x29cb9c = this['getScene'](); return _0x29cb9c ? _0x29cb9c['_loadFile'](this['url'], _0x5a3db5) : this['_engine']['_loadFile'](this['url'], _0x5a3db5), this['_texture']; } , _0x209a26['prototype']['loadTexture'] = function() { this['url'] && this['url']['toLocaleLowerCase']()['indexOf']('.3dl') == this['url']['length'] - 0x4 && this['load3dlTexture'](); } , _0x209a26['prototype']['clone'] = function() { var _0x54663e = new _0x209a26(this['url'],this['getScene']()); return _0x54663e['level'] = this['level'], _0x54663e; } , _0x209a26['prototype']['delayLoad'] = function() { this['delayLoadState'] === _0x24e342['a']['DELAYLOADSTATE_NOTLOADED'] && (this['delayLoadState'] = _0x24e342['a']['DELAYLOADSTATE_LOADED'], this['_texture'] = this['_getFromCache'](this['url'], !0x0), this['_texture'] || this['loadTexture']()); } , _0x209a26['Parse'] = function(_0x131b4c, _0x11dde5) { var _0x23eeb8 = null; return _0x131b4c['name'] && !_0x131b4c['isRenderTarget'] && ((_0x23eeb8 = new _0x209a26(_0x131b4c['name'],_0x11dde5))['name'] = _0x131b4c['name'], _0x23eeb8['level'] = _0x131b4c['level']), _0x23eeb8; } , _0x209a26['prototype']['serialize'] = function() { if (!this['name']) return null; var _0x282f8d = {}; return _0x282f8d['name'] = this['name'], _0x282f8d['level'] = this['level'], _0x282f8d['customType'] = 'BABYLON.ColorGradingTexture', _0x282f8d; } , _0x209a26['_noneEmptyLineRegex'] = /\S+/, _0x209a26; }(_0x134235['a']); _0x376b99['a']['RegisteredTypes']['BABYLON.ColorGradingTexture'] = _0x5a1a3f; var _0x29f52a = function(_0xc04be9) { function _0x267500(_0x3dbf2e, _0x2f1f65, _0x5c79ea, _0x25bfbf, _0x12517c, _0x28247c, _0x1b9fce) { void 0x0 === _0x25bfbf && (_0x25bfbf = !0x1), void 0x0 === _0x12517c && (_0x12517c = !0x0), void 0x0 === _0x28247c && (_0x28247c = null), void 0x0 === _0x1b9fce && (_0x1b9fce = null); var _0x171545 = _0xc04be9['call'](this, _0x2f1f65) || this; if (_0x171545['_onLoad'] = null, _0x171545['_onError'] = null, _0x171545['coordinatesMode'] = _0x11d14a['a']['CUBIC_MODE'], !_0x3dbf2e) throw new Error('Image\x20url\x20is\x20not\x20set'); return _0x171545['name'] = _0x3dbf2e, _0x171545['url'] = _0x3dbf2e, _0x171545['_size'] = _0x5c79ea, _0x171545['_noMipmap'] = _0x25bfbf, _0x171545['gammaSpace'] = _0x12517c, _0x171545['_onLoad'] = _0x28247c, _0x171545['_onError'] = _0x1b9fce, _0x171545['hasAlpha'] = !0x1, _0x171545['isCube'] = !0x0, _0x171545['_texture'] = _0x171545['_getFromCache'](_0x3dbf2e, _0x171545['_noMipmap']), _0x171545['_texture'] ? _0x28247c && (_0x171545['_texture']['isReady'] ? _0x1eb50e['h']['SetImmediate'](function() { return _0x28247c(); }) : _0x171545['_texture']['onLoadedObservable']['add'](_0x28247c)) : _0x2f1f65['useDelayedTextureLoading'] ? _0x171545['delayLoadState'] = _0x3647a9['b']['DELAYLOADSTATE_NOTLOADED'] : _0x171545['loadImage'](_0x171545['loadTexture']['bind'](_0x171545), _0x171545['_onError']), _0x171545; } return _0x420e5b['d'](_0x267500, _0xc04be9), _0x267500['prototype']['loadImage'] = function(_0x2148df, _0x3a529c) { var _0x5ed13f = this , _0x5a0e39 = document['createElement']('canvas') , _0x2b42b0 = new Image(); _0x2b42b0['addEventListener']('load', function() { _0x5ed13f['_width'] = _0x2b42b0['width'], _0x5ed13f['_height'] = _0x2b42b0['height'], _0x5a0e39['width'] = _0x5ed13f['_width'], _0x5a0e39['height'] = _0x5ed13f['_height']; var _0x2a3023 = _0x5a0e39['getContext']('2d'); _0x2a3023['drawImage'](_0x2b42b0, 0x0, 0x0); var _0x54df76 = _0x2a3023['getImageData'](0x0, 0x0, _0x2b42b0['width'], _0x2b42b0['height']); _0x5ed13f['_buffer'] = _0x54df76['data']['buffer'], _0x5a0e39['remove'](), _0x2148df(); }), _0x2b42b0['addEventListener']('error', function(_0x167ebc) { _0x3a529c && _0x3a529c(_0x5ed13f['getClassName']() + '\x20could\x20not\x20be\x20loaded', _0x167ebc); }), _0x2b42b0['src'] = this['url']; } , _0x267500['prototype']['loadTexture'] = function() { var _0x336e72 = this , _0x30c343 = this['getScene'](); _0x30c343 && (this['_texture'] = _0x30c343['getEngine']()['createRawCubeTextureFromUrl'](this['url'], _0x30c343, this['_size'], _0x3647a9['b']['TEXTUREFORMAT_RGB'], _0x30c343['getEngine']()['getCaps']()['textureFloat'] ? _0x3647a9['b']['TEXTURETYPE_FLOAT'] : _0x3647a9['b']['TEXTURETYPE_UNSIGNED_INTEGER'], this['_noMipmap'], function() { for (var _0x287b94 = _0x336e72['getFloat32ArrayFromArrayBuffer'](_0x336e72['_buffer']), _0x563ab6 = _0x52deea['ConvertPanoramaToCubemap'](_0x287b94, _0x336e72['_width'], _0x336e72['_height'], _0x336e72['_size']), _0x3574e2 = [], _0x5bd49a = 0x0; _0x5bd49a < 0x6; _0x5bd49a++) { var _0x27fdaa = _0x563ab6[_0x267500['_FacesMapping'][_0x5bd49a]]; _0x3574e2['push'](_0x27fdaa); } return _0x3574e2; }, null, this['_onLoad'], this['_onError'])); } , _0x267500['prototype']['getFloat32ArrayFromArrayBuffer'] = function(_0x41c92a) { for (var _0x3d2ded = new DataView(_0x41c92a), _0x104666 = new Float32Array(0x3 * _0x41c92a['byteLength'] / 0x4), _0x40ae3e = 0x0, _0x5d44dd = 0x0; _0x5d44dd < _0x41c92a['byteLength']; _0x5d44dd++) (_0x5d44dd + 0x1) % 0x4 != 0x0 && (_0x104666[_0x40ae3e++] = _0x3d2ded['getUint8'](_0x5d44dd) / 0xff); return _0x104666; } , _0x267500['prototype']['getClassName'] = function() { return 'EquiRectangularCubeTexture'; } , _0x267500['prototype']['clone'] = function() { var _0x5f4f5b = this['getScene'](); if (!_0x5f4f5b) return this; var _0x4fb8f7 = new _0x267500(this['url'],_0x5f4f5b,this['_size'],this['_noMipmap'],this['gammaSpace']); return _0x4fb8f7['level'] = this['level'], _0x4fb8f7['wrapU'] = this['wrapU'], _0x4fb8f7['wrapV'] = this['wrapV'], _0x4fb8f7['coordinatesIndex'] = this['coordinatesIndex'], _0x4fb8f7['coordinatesMode'] = this['coordinatesMode'], _0x4fb8f7; } , _0x267500['_FacesMapping'] = ['right', 'left', 'up', 'down', 'front', 'back'], _0x267500; }(_0x134235['a']) , _0x149dfc = function() { function _0x318841() {} return _0x318841['GetTGAHeader'] = function(_0x574147) { var _0x123b23 = 0x0; return { 'id_length': _0x574147[_0x123b23++], 'colormap_type': _0x574147[_0x123b23++], 'image_type': _0x574147[_0x123b23++], 'colormap_index': _0x574147[_0x123b23++] | _0x574147[_0x123b23++] << 0x8, 'colormap_length': _0x574147[_0x123b23++] | _0x574147[_0x123b23++] << 0x8, 'colormap_size': _0x574147[_0x123b23++], 'origin': [_0x574147[_0x123b23++] | _0x574147[_0x123b23++] << 0x8, _0x574147[_0x123b23++] | _0x574147[_0x123b23++] << 0x8], 'width': _0x574147[_0x123b23++] | _0x574147[_0x123b23++] << 0x8, 'height': _0x574147[_0x123b23++] | _0x574147[_0x123b23++] << 0x8, 'pixel_size': _0x574147[_0x123b23++], 'flags': _0x574147[_0x123b23++] }; } , _0x318841['UploadContent'] = function(_0x182f6c, _0x549d37) { if (_0x549d37['length'] < 0x13) _0x3f98cb['a']['Error']('Unable\x20to\x20load\x20TGA\x20file\x20-\x20Not\x20enough\x20data\x20to\x20contain\x20header'); else { var _0x70821d = 0x12 , _0x5383c2 = _0x318841['GetTGAHeader'](_0x549d37); if (_0x5383c2['id_length'] + _0x70821d > _0x549d37['length']) _0x3f98cb['a']['Error']('Unable\x20to\x20load\x20TGA\x20file\x20-\x20Not\x20enough\x20data'); else { _0x70821d += _0x5383c2['id_length']; var _0x22c0bf, _0x217cc0 = !0x1, _0x10b0cd = !0x1, _0x5a033c = !0x1; switch (_0x5383c2['image_type']) { case _0x318841['_TYPE_RLE_INDEXED']: _0x217cc0 = !0x0; case _0x318841['_TYPE_INDEXED']: _0x10b0cd = !0x0; break; case _0x318841['_TYPE_RLE_RGB']: _0x217cc0 = !0x0; case _0x318841['_TYPE_RGB']: break; case _0x318841['_TYPE_RLE_GREY']: _0x217cc0 = !0x0; case _0x318841['_TYPE_GREY']: _0x5a033c = !0x0; } var _0x21a6b7, _0x5b8b00, _0x16a872, _0x4a4522, _0x50dfb5, _0x2f0884, _0x449fdb, _0x44da4d = _0x5383c2['pixel_size'] >> 0x3, _0x3bdbb9 = _0x5383c2['width'] * _0x5383c2['height'] * _0x44da4d; if (_0x10b0cd && (_0x21a6b7 = _0x549d37['subarray'](_0x70821d, _0x70821d += _0x5383c2['colormap_length'] * (_0x5383c2['colormap_size'] >> 0x3))), _0x217cc0) { var _0x193638, _0x27ee7b, _0xf30036; _0x22c0bf = new Uint8Array(_0x3bdbb9); for (var _0x22839d = 0x0, _0x4ee0d1 = new Uint8Array(_0x44da4d); _0x70821d < _0x3bdbb9 && _0x22839d < _0x3bdbb9; ) if (_0x27ee7b = 0x1 + (0x7f & (_0x193638 = _0x549d37[_0x70821d++])), 0x80 & _0x193638) { for (_0xf30036 = 0x0; _0xf30036 < _0x44da4d; ++_0xf30036) _0x4ee0d1[_0xf30036] = _0x549d37[_0x70821d++]; for (_0xf30036 = 0x0; _0xf30036 < _0x27ee7b; ++_0xf30036) _0x22c0bf['set'](_0x4ee0d1, _0x22839d + _0xf30036 * _0x44da4d); _0x22839d += _0x44da4d * _0x27ee7b; } else { for (_0x27ee7b *= _0x44da4d, _0xf30036 = 0x0; _0xf30036 < _0x27ee7b; ++_0xf30036) _0x22c0bf[_0x22839d + _0xf30036] = _0x549d37[_0x70821d++]; _0x22839d += _0x27ee7b; } } else _0x22c0bf = _0x549d37['subarray'](_0x70821d, _0x70821d += _0x10b0cd ? _0x5383c2['width'] * _0x5383c2['height'] : _0x3bdbb9); switch ((_0x5383c2['flags'] & _0x318841['_ORIGIN_MASK']) >> _0x318841['_ORIGIN_SHIFT']) { default: case _0x318841['_ORIGIN_UL']: _0x5b8b00 = 0x0, _0x4a4522 = 0x1, _0x449fdb = _0x5383c2['width'], _0x16a872 = 0x0, _0x50dfb5 = 0x1, _0x2f0884 = _0x5383c2['height']; break; case _0x318841['_ORIGIN_BL']: _0x5b8b00 = 0x0, _0x4a4522 = 0x1, _0x449fdb = _0x5383c2['width'], _0x16a872 = _0x5383c2['height'] - 0x1, _0x50dfb5 = -0x1, _0x2f0884 = -0x1; break; case _0x318841['_ORIGIN_UR']: _0x5b8b00 = _0x5383c2['width'] - 0x1, _0x4a4522 = -0x1, _0x449fdb = -0x1, _0x16a872 = 0x0, _0x50dfb5 = 0x1, _0x2f0884 = _0x5383c2['height']; break; case _0x318841['_ORIGIN_BR']: _0x5b8b00 = _0x5383c2['width'] - 0x1, _0x4a4522 = -0x1, _0x449fdb = -0x1, _0x16a872 = _0x5383c2['height'] - 0x1, _0x50dfb5 = -0x1, _0x2f0884 = -0x1; } var _0xe79dcd = _0x318841['_getImageData' + (_0x5a033c ? 'Grey' : '') + _0x5383c2['pixel_size'] + 'bits'](_0x5383c2, _0x21a6b7, _0x22c0bf, _0x16a872, _0x50dfb5, _0x2f0884, _0x5b8b00, _0x4a4522, _0x449fdb); _0x182f6c['getEngine']()['_uploadDataToTextureDirectly'](_0x182f6c, _0xe79dcd); } } } , _0x318841['_getImageData8bits'] = function(_0x426bbf, _0x631c8f, _0x594d44, _0x5182b2, _0x43e3ad, _0x462cbd, _0x24b566, _0x2f2a0b, _0x5af7e3) { var _0x40dde5, _0x2aafdc, _0x2ddce3, _0x11a258 = _0x594d44, _0x46ed16 = _0x631c8f, _0x902f78 = _0x426bbf['width'], _0xf4a0e0 = _0x426bbf['height'], _0x21a613 = 0x0, _0x2070ff = new Uint8Array(_0x902f78 * _0xf4a0e0 * 0x4); for (_0x2ddce3 = _0x5182b2; _0x2ddce3 !== _0x462cbd; _0x2ddce3 += _0x43e3ad) for (_0x2aafdc = _0x24b566; _0x2aafdc !== _0x5af7e3; _0x2aafdc += _0x2f2a0b, _0x21a613++) _0x40dde5 = _0x11a258[_0x21a613], _0x2070ff[0x4 * (_0x2aafdc + _0x902f78 * _0x2ddce3) + 0x3] = 0xff, _0x2070ff[0x4 * (_0x2aafdc + _0x902f78 * _0x2ddce3) + 0x2] = _0x46ed16[0x3 * _0x40dde5 + 0x0], _0x2070ff[0x4 * (_0x2aafdc + _0x902f78 * _0x2ddce3) + 0x1] = _0x46ed16[0x3 * _0x40dde5 + 0x1], _0x2070ff[0x4 * (_0x2aafdc + _0x902f78 * _0x2ddce3) + 0x0] = _0x46ed16[0x3 * _0x40dde5 + 0x2]; return _0x2070ff; } , _0x318841['_getImageData16bits'] = function(_0x583ee7, _0x4a1234, _0x39f283, _0xf80146, _0x334768, _0x38663f, _0xe32d22, _0x13fd3a, _0x563925) { var _0x54e274, _0x2ce864, _0x35c656, _0x5bbece = _0x39f283, _0x16b511 = _0x583ee7['width'], _0x1cb2ee = _0x583ee7['height'], _0x4c890f = 0x0, _0x2d1a4a = new Uint8Array(_0x16b511 * _0x1cb2ee * 0x4); for (_0x35c656 = _0xf80146; _0x35c656 !== _0x38663f; _0x35c656 += _0x334768) for (_0x2ce864 = _0xe32d22; _0x2ce864 !== _0x563925; _0x2ce864 += _0x13fd3a, _0x4c890f += 0x2) { var _0x194990 = 0xff * ((0x7c00 & (_0x54e274 = _0x5bbece[_0x4c890f + 0x0] + (_0x5bbece[_0x4c890f + 0x1] << 0x8))) >> 0xa) / 0x1f | 0x0 , _0x1f85b3 = 0xff * ((0x3e0 & _0x54e274) >> 0x5) / 0x1f | 0x0 , _0x51a093 = 0xff * (0x1f & _0x54e274) / 0x1f | 0x0; _0x2d1a4a[0x4 * (_0x2ce864 + _0x16b511 * _0x35c656) + 0x0] = _0x194990, _0x2d1a4a[0x4 * (_0x2ce864 + _0x16b511 * _0x35c656) + 0x1] = _0x1f85b3, _0x2d1a4a[0x4 * (_0x2ce864 + _0x16b511 * _0x35c656) + 0x2] = _0x51a093, _0x2d1a4a[0x4 * (_0x2ce864 + _0x16b511 * _0x35c656) + 0x3] = 0x8000 & _0x54e274 ? 0x0 : 0xff; } return _0x2d1a4a; } , _0x318841['_getImageData24bits'] = function(_0x22319d, _0x2e299c, _0x566e33, _0x523772, _0x178d36, _0x5d5e28, _0x3b4798, _0x95729c, _0x174dae) { var _0x200e3a, _0x29eed, _0x14b0a2 = _0x566e33, _0x2e50bb = _0x22319d['width'], _0x2f7cd4 = _0x22319d['height'], _0x4deb9f = 0x0, _0x412dec = new Uint8Array(_0x2e50bb * _0x2f7cd4 * 0x4); for (_0x29eed = _0x523772; _0x29eed !== _0x5d5e28; _0x29eed += _0x178d36) for (_0x200e3a = _0x3b4798; _0x200e3a !== _0x174dae; _0x200e3a += _0x95729c, _0x4deb9f += 0x3) _0x412dec[0x4 * (_0x200e3a + _0x2e50bb * _0x29eed) + 0x3] = 0xff, _0x412dec[0x4 * (_0x200e3a + _0x2e50bb * _0x29eed) + 0x2] = _0x14b0a2[_0x4deb9f + 0x0], _0x412dec[0x4 * (_0x200e3a + _0x2e50bb * _0x29eed) + 0x1] = _0x14b0a2[_0x4deb9f + 0x1], _0x412dec[0x4 * (_0x200e3a + _0x2e50bb * _0x29eed) + 0x0] = _0x14b0a2[_0x4deb9f + 0x2]; return _0x412dec; } , _0x318841['_getImageData32bits'] = function(_0x19f175, _0x5ed578, _0x52610f, _0x4de778, _0x5ea7d4, _0x4c4706, _0x295fd5, _0x590c5f, _0x2e0833) { var _0x43fb9f, _0x464ff7, _0x209500 = _0x52610f, _0x5eab3f = _0x19f175['width'], _0x888128 = _0x19f175['height'], _0x576114 = 0x0, _0x105fa2 = new Uint8Array(_0x5eab3f * _0x888128 * 0x4); for (_0x464ff7 = _0x4de778; _0x464ff7 !== _0x4c4706; _0x464ff7 += _0x5ea7d4) for (_0x43fb9f = _0x295fd5; _0x43fb9f !== _0x2e0833; _0x43fb9f += _0x590c5f, _0x576114 += 0x4) _0x105fa2[0x4 * (_0x43fb9f + _0x5eab3f * _0x464ff7) + 0x2] = _0x209500[_0x576114 + 0x0], _0x105fa2[0x4 * (_0x43fb9f + _0x5eab3f * _0x464ff7) + 0x1] = _0x209500[_0x576114 + 0x1], _0x105fa2[0x4 * (_0x43fb9f + _0x5eab3f * _0x464ff7) + 0x0] = _0x209500[_0x576114 + 0x2], _0x105fa2[0x4 * (_0x43fb9f + _0x5eab3f * _0x464ff7) + 0x3] = _0x209500[_0x576114 + 0x3]; return _0x105fa2; } , _0x318841['_getImageDataGrey8bits'] = function(_0x369898, _0x3f8ee8, _0x1b0c93, _0x4a404b, _0x544c9d, _0x27d2c0, _0xb9bd4c, _0x428d3b, _0x401f6f) { var _0x57ac62, _0x5b7b51, _0x51fe24, _0xdd5f63 = _0x1b0c93, _0x890ca5 = _0x369898['width'], _0x4c3fa7 = _0x369898['height'], _0x1aa869 = 0x0, _0x5a97ce = new Uint8Array(_0x890ca5 * _0x4c3fa7 * 0x4); for (_0x51fe24 = _0x4a404b; _0x51fe24 !== _0x27d2c0; _0x51fe24 += _0x544c9d) for (_0x5b7b51 = _0xb9bd4c; _0x5b7b51 !== _0x401f6f; _0x5b7b51 += _0x428d3b, _0x1aa869++) _0x57ac62 = _0xdd5f63[_0x1aa869], _0x5a97ce[0x4 * (_0x5b7b51 + _0x890ca5 * _0x51fe24) + 0x0] = _0x57ac62, _0x5a97ce[0x4 * (_0x5b7b51 + _0x890ca5 * _0x51fe24) + 0x1] = _0x57ac62, _0x5a97ce[0x4 * (_0x5b7b51 + _0x890ca5 * _0x51fe24) + 0x2] = _0x57ac62, _0x5a97ce[0x4 * (_0x5b7b51 + _0x890ca5 * _0x51fe24) + 0x3] = 0xff; return _0x5a97ce; } , _0x318841['_getImageDataGrey16bits'] = function(_0xf0a39c, _0x1ebaf8, _0x5d24d1, _0x1a5295, _0x3ec724, _0x4a1669, _0x288d9b, _0x422386, _0x233e3c) { var _0xbeeab2, _0xc15e19, _0x401945 = _0x5d24d1, _0x2f7fbb = _0xf0a39c['width'], _0x4edf44 = _0xf0a39c['height'], _0x511154 = 0x0, _0x57cf99 = new Uint8Array(_0x2f7fbb * _0x4edf44 * 0x4); for (_0xc15e19 = _0x1a5295; _0xc15e19 !== _0x4a1669; _0xc15e19 += _0x3ec724) for (_0xbeeab2 = _0x288d9b; _0xbeeab2 !== _0x233e3c; _0xbeeab2 += _0x422386, _0x511154 += 0x2) _0x57cf99[0x4 * (_0xbeeab2 + _0x2f7fbb * _0xc15e19) + 0x0] = _0x401945[_0x511154 + 0x0], _0x57cf99[0x4 * (_0xbeeab2 + _0x2f7fbb * _0xc15e19) + 0x1] = _0x401945[_0x511154 + 0x0], _0x57cf99[0x4 * (_0xbeeab2 + _0x2f7fbb * _0xc15e19) + 0x2] = _0x401945[_0x511154 + 0x0], _0x57cf99[0x4 * (_0xbeeab2 + _0x2f7fbb * _0xc15e19) + 0x3] = _0x401945[_0x511154 + 0x1]; return _0x57cf99; } , _0x318841['_TYPE_INDEXED'] = 0x1, _0x318841['_TYPE_RGB'] = 0x2, _0x318841['_TYPE_GREY'] = 0x3, _0x318841['_TYPE_RLE_INDEXED'] = 0x9, _0x318841['_TYPE_RLE_RGB'] = 0xa, _0x318841['_TYPE_RLE_GREY'] = 0xb, _0x318841['_ORIGIN_MASK'] = 0x30, _0x318841['_ORIGIN_SHIFT'] = 0x4, _0x318841['_ORIGIN_BL'] = 0x0, _0x318841['_ORIGIN_BR'] = 0x1, _0x318841['_ORIGIN_UL'] = 0x2, _0x318841['_ORIGIN_UR'] = 0x3, _0x318841; }() , _0x174282 = function() { function _0x378960() { this['supportCascades'] = !0x1; } return _0x378960['prototype']['canLoad'] = function(_0x448759, _0x141ced, _0x35cfdf, _0x337c81, _0x3328b4) { return 0x0 === _0x448759['indexOf']('.tga'); } , _0x378960['prototype']['transformUrl'] = function(_0x387ffd, _0x5d2fed) { return _0x387ffd; } , _0x378960['prototype']['getFallbackTextureUrl'] = function(_0x2aaeaa, _0x4bfe15) { return null; } , _0x378960['prototype']['loadCubeData'] = function(_0x10c0a1, _0x315849, _0x3f0478, _0x59b9d8, _0x46636b) { throw '.env\x20not\x20supported\x20in\x20Cube.'; } , _0x378960['prototype']['loadData'] = function(_0x7fd16e, _0x5f2415, _0x16bba0) { var _0x1df662 = new Uint8Array(_0x7fd16e) , _0x4fde0f = _0x149dfc['GetTGAHeader'](_0x1df662); _0x16bba0(_0x4fde0f['width'], _0x4fde0f['height'], _0x5f2415['generateMipMaps'], !0x1, function() { _0x149dfc['UploadContent'](_0x5f2415, _0x1df662); }); } , _0x378960; }(); _0x3647a9['b']['_TextureLoaders']['push'](new _0x174282()), _0x3647a9['b']['prototype']['unBindMultiColorAttachmentFramebuffer'] = function(_0x6135ee, _0x3e44e0, _0x272de2) { void 0x0 === _0x3e44e0 && (_0x3e44e0 = !0x1), this['_currentRenderTarget'] = null; var _0x1f7042 = this['_gl']; if (_0x6135ee[0x0]['_MSAAFramebuffer']) { _0x1f7042['bindFramebuffer'](_0x1f7042['READ_FRAMEBUFFER'], _0x6135ee[0x0]['_MSAAFramebuffer']), _0x1f7042['bindFramebuffer'](_0x1f7042['DRAW_FRAMEBUFFER'], _0x6135ee[0x0]['_framebuffer']); var _0x42abe2 = _0x6135ee[0x0]['_attachments']; _0x42abe2 || (_0x42abe2 = new Array(_0x6135ee['length']), _0x6135ee[0x0]['_attachments'] = _0x42abe2); for (var _0x44ad38 = 0x0; _0x44ad38 < _0x6135ee['length']; _0x44ad38++) { for (var _0x281d9a = _0x6135ee[_0x44ad38], _0xc6c185 = 0x0; _0xc6c185 < _0x42abe2['length']; _0xc6c185++) _0x42abe2[_0xc6c185] = _0x1f7042['NONE']; _0x42abe2[_0x44ad38] = _0x1f7042[this['webGLVersion'] > 0x1 ? 'COLOR_ATTACHMENT' + _0x44ad38 : 'COLOR_ATTACHMENT' + _0x44ad38 + '_WEBGL'], _0x1f7042['readBuffer'](_0x42abe2[_0x44ad38]), _0x1f7042['drawBuffers'](_0x42abe2), _0x1f7042['blitFramebuffer'](0x0, 0x0, _0x281d9a['width'], _0x281d9a['height'], 0x0, 0x0, _0x281d9a['width'], _0x281d9a['height'], _0x1f7042['COLOR_BUFFER_BIT'], _0x1f7042['NEAREST']); } for (_0x44ad38 = 0x0; _0x44ad38 < _0x42abe2['length']; _0x44ad38++) _0x42abe2[_0x44ad38] = _0x1f7042[this['webGLVersion'] > 0x1 ? 'COLOR_ATTACHMENT' + _0x44ad38 : 'COLOR_ATTACHMENT' + _0x44ad38 + '_WEBGL']; _0x1f7042['drawBuffers'](_0x42abe2); } for (_0x44ad38 = 0x0; _0x44ad38 < _0x6135ee['length']; _0x44ad38++) { !(_0x281d9a = _0x6135ee[_0x44ad38])['generateMipMaps'] || _0x3e44e0 || _0x281d9a['isCube'] || (this['_bindTextureDirectly'](_0x1f7042['TEXTURE_2D'], _0x281d9a), _0x1f7042['generateMipmap'](_0x1f7042['TEXTURE_2D']), this['_bindTextureDirectly'](_0x1f7042['TEXTURE_2D'], null)); } _0x272de2 && (_0x6135ee[0x0]['_MSAAFramebuffer'] && this['_bindUnboundFramebuffer'](_0x6135ee[0x0]['_framebuffer']), _0x272de2()), this['_bindUnboundFramebuffer'](null); } , _0x3647a9['b']['prototype']['createMultipleRenderTarget'] = function(_0xf169bb, _0xbda33a) { var _0xce995b = !0x1 , _0x2c86ec = !0x0 , _0x441757 = !0x1 , _0x4fb587 = !0x1 , _0x207c9d = 0x1 , _0x2e3bd5 = _0x3647a9['b']['TEXTURETYPE_UNSIGNED_INT'] , _0x4680f7 = _0x3647a9['b']['TEXTURE_TRILINEAR_SAMPLINGMODE'] , _0x11f504 = new Array() , _0x42394b = new Array(); void 0x0 !== _0xbda33a && (_0xce995b = void 0x0 !== _0xbda33a['generateMipMaps'] && _0xbda33a['generateMipMaps'], _0x2c86ec = void 0x0 === _0xbda33a['generateDepthBuffer'] || _0xbda33a['generateDepthBuffer'], _0x441757 = void 0x0 !== _0xbda33a['generateStencilBuffer'] && _0xbda33a['generateStencilBuffer'], _0x4fb587 = void 0x0 !== _0xbda33a['generateDepthTexture'] && _0xbda33a['generateDepthTexture'], _0x207c9d = _0xbda33a['textureCount'] || 0x1, _0xbda33a['types'] && (_0x11f504 = _0xbda33a['types']), _0xbda33a['samplingModes'] && (_0x42394b = _0xbda33a['samplingModes'])); var _0x4a71c5 = this['_gl'] , _0xaf4133 = _0x4a71c5['createFramebuffer'](); this['_bindUnboundFramebuffer'](_0xaf4133); for (var _0x29eec1 = _0xf169bb['width'] || _0xf169bb, _0x5c454c = _0xf169bb['height'] || _0xf169bb, _0x193450 = [], _0x4ef15d = [], _0x42b42b = this['_setupFramebufferDepthAttachments'](_0x441757, _0x2c86ec, _0x29eec1, _0x5c454c), _0x27560d = 0x0; _0x27560d < _0x207c9d; _0x27560d++) { var _0x525738 = _0x42394b[_0x27560d] || _0x4680f7 , _0x741d99 = _0x11f504[_0x27560d] || _0x2e3bd5; (_0x741d99 !== _0x3647a9['b']['TEXTURETYPE_FLOAT'] || this['_caps']['textureFloatLinearFiltering']) && (_0x741d99 !== _0x3647a9['b']['TEXTURETYPE_HALF_FLOAT'] || this['_caps']['textureHalfFloatLinearFiltering']) || (_0x525738 = _0x3647a9['b']['TEXTURE_NEAREST_SAMPLINGMODE']); var _0x2ce942 = this['_getSamplingParameters'](_0x525738, _0xce995b); _0x741d99 !== _0x3647a9['b']['TEXTURETYPE_FLOAT'] || this['_caps']['textureFloat'] || (_0x741d99 = _0x3647a9['b']['TEXTURETYPE_UNSIGNED_INT'], _0x3f98cb['a']['Warn']('Float\x20textures\x20are\x20not\x20supported.\x20Render\x20target\x20forced\x20to\x20TEXTURETYPE_UNSIGNED_BYTE\x20type')); var _0x467292 = new _0x2826dc['a'](this,_0x2826dc['a']['DATASOURCE_MULTIRENDERTARGET']) , _0x10c685 = _0x4a71c5[this['webGLVersion'] > 0x1 ? 'COLOR_ATTACHMENT' + _0x27560d : 'COLOR_ATTACHMENT' + _0x27560d + '_WEBGL']; _0x193450['push'](_0x467292), _0x4ef15d['push'](_0x10c685), _0x4a71c5['activeTexture'](_0x4a71c5['TEXTURE' + _0x27560d]), _0x4a71c5['bindTexture'](_0x4a71c5['TEXTURE_2D'], _0x467292['_webGLTexture']), _0x4a71c5['texParameteri'](_0x4a71c5['TEXTURE_2D'], _0x4a71c5['TEXTURE_MAG_FILTER'], _0x2ce942['mag']), _0x4a71c5['texParameteri'](_0x4a71c5['TEXTURE_2D'], _0x4a71c5['TEXTURE_MIN_FILTER'], _0x2ce942['min']), _0x4a71c5['texParameteri'](_0x4a71c5['TEXTURE_2D'], _0x4a71c5['TEXTURE_WRAP_S'], _0x4a71c5['CLAMP_TO_EDGE']), _0x4a71c5['texParameteri'](_0x4a71c5['TEXTURE_2D'], _0x4a71c5['TEXTURE_WRAP_T'], _0x4a71c5['CLAMP_TO_EDGE']), _0x4a71c5['texImage2D'](_0x4a71c5['TEXTURE_2D'], 0x0, this['_getRGBABufferInternalSizedFormat'](_0x741d99), _0x29eec1, _0x5c454c, 0x0, _0x4a71c5['RGBA'], this['_getWebGLTextureType'](_0x741d99), null), _0x4a71c5['framebufferTexture2D'](_0x4a71c5['DRAW_FRAMEBUFFER'], _0x10c685, _0x4a71c5['TEXTURE_2D'], _0x467292['_webGLTexture'], 0x0), _0xce995b && this['_gl']['generateMipmap'](this['_gl']['TEXTURE_2D']), this['_bindTextureDirectly'](_0x4a71c5['TEXTURE_2D'], null), _0x467292['_framebuffer'] = _0xaf4133, _0x467292['_depthStencilBuffer'] = _0x42b42b, _0x467292['baseWidth'] = _0x29eec1, _0x467292['baseHeight'] = _0x5c454c, _0x467292['width'] = _0x29eec1, _0x467292['height'] = _0x5c454c, _0x467292['isReady'] = !0x0, _0x467292['samples'] = 0x1, _0x467292['generateMipMaps'] = _0xce995b, _0x467292['samplingMode'] = _0x525738, _0x467292['type'] = _0x741d99, _0x467292['_generateDepthBuffer'] = _0x2c86ec, _0x467292['_generateStencilBuffer'] = _0x441757, _0x467292['_attachments'] = _0x4ef15d, this['_internalTexturesCache']['push'](_0x467292); } if (_0x4fb587 && this['_caps']['depthTextureExtension']) { var _0xf2676c = new _0x2826dc['a'](this,_0x2826dc['a']['DATASOURCE_MULTIRENDERTARGET']); _0x4a71c5['activeTexture'](_0x4a71c5['TEXTURE0']), _0x4a71c5['bindTexture'](_0x4a71c5['TEXTURE_2D'], _0xf2676c['_webGLTexture']), _0x4a71c5['texParameteri'](_0x4a71c5['TEXTURE_2D'], _0x4a71c5['TEXTURE_MAG_FILTER'], _0x4a71c5['NEAREST']), _0x4a71c5['texParameteri'](_0x4a71c5['TEXTURE_2D'], _0x4a71c5['TEXTURE_MIN_FILTER'], _0x4a71c5['NEAREST']), _0x4a71c5['texParameteri'](_0x4a71c5['TEXTURE_2D'], _0x4a71c5['TEXTURE_WRAP_S'], _0x4a71c5['CLAMP_TO_EDGE']), _0x4a71c5['texParameteri'](_0x4a71c5['TEXTURE_2D'], _0x4a71c5['TEXTURE_WRAP_T'], _0x4a71c5['CLAMP_TO_EDGE']), _0x4a71c5['texImage2D'](_0x4a71c5['TEXTURE_2D'], 0x0, this['webGLVersion'] < 0x2 ? _0x4a71c5['DEPTH_COMPONENT'] : _0x4a71c5['DEPTH_COMPONENT16'], _0x29eec1, _0x5c454c, 0x0, _0x4a71c5['DEPTH_COMPONENT'], _0x4a71c5['UNSIGNED_SHORT'], null), _0x4a71c5['framebufferTexture2D'](_0x4a71c5['FRAMEBUFFER'], _0x4a71c5['DEPTH_ATTACHMENT'], _0x4a71c5['TEXTURE_2D'], _0xf2676c['_webGLTexture'], 0x0), _0xf2676c['_framebuffer'] = _0xaf4133, _0xf2676c['baseWidth'] = _0x29eec1, _0xf2676c['baseHeight'] = _0x5c454c, _0xf2676c['width'] = _0x29eec1, _0xf2676c['height'] = _0x5c454c, _0xf2676c['isReady'] = !0x0, _0xf2676c['samples'] = 0x1, _0xf2676c['generateMipMaps'] = _0xce995b, _0xf2676c['samplingMode'] = _0x4a71c5['NEAREST'], _0xf2676c['_generateDepthBuffer'] = _0x2c86ec, _0xf2676c['_generateStencilBuffer'] = _0x441757, _0x193450['push'](_0xf2676c), this['_internalTexturesCache']['push'](_0xf2676c); } return _0x4a71c5['drawBuffers'](_0x4ef15d), _0x4a71c5['bindRenderbuffer'](_0x4a71c5['RENDERBUFFER'], null), this['_bindUnboundFramebuffer'](null), this['resetTextureCache'](), _0x193450; } , _0x3647a9['b']['prototype']['updateMultipleRenderTargetTextureSampleCount'] = function(_0xd259d2, _0x3b7a7c) { if (this['webGLVersion'] < 0x2 || !_0xd259d2 || 0x0 == _0xd259d2['length']) return 0x1; if (_0xd259d2[0x0]['samples'] === _0x3b7a7c) return _0x3b7a7c; var _0x199c40 = this['_gl']; _0x3b7a7c = Math['min'](_0x3b7a7c, _0x199c40['getParameter'](_0x199c40['MAX_SAMPLES'])), _0xd259d2[0x0]['_depthStencilBuffer'] && (_0x199c40['deleteRenderbuffer'](_0xd259d2[0x0]['_depthStencilBuffer']), _0xd259d2[0x0]['_depthStencilBuffer'] = null), _0xd259d2[0x0]['_MSAAFramebuffer'] && (_0x199c40['deleteFramebuffer'](_0xd259d2[0x0]['_MSAAFramebuffer']), _0xd259d2[0x0]['_MSAAFramebuffer'] = null); for (var _0x4fa342 = 0x0; _0x4fa342 < _0xd259d2['length']; _0x4fa342++) _0xd259d2[_0x4fa342]['_MSAARenderBuffer'] && (_0x199c40['deleteRenderbuffer'](_0xd259d2[_0x4fa342]['_MSAARenderBuffer']), _0xd259d2[_0x4fa342]['_MSAARenderBuffer'] = null); if (_0x3b7a7c > 0x1) { var _0x25e156 = _0x199c40['createFramebuffer'](); if (!_0x25e156) throw new Error('Unable\x20to\x20create\x20multi\x20sampled\x20framebuffer'); this['_bindUnboundFramebuffer'](_0x25e156); var _0x34e0ce = this['_setupFramebufferDepthAttachments'](_0xd259d2[0x0]['_generateStencilBuffer'], _0xd259d2[0x0]['_generateDepthBuffer'], _0xd259d2[0x0]['width'], _0xd259d2[0x0]['height'], _0x3b7a7c) , _0x48e3ae = []; for (_0x4fa342 = 0x0; _0x4fa342 < _0xd259d2['length']; _0x4fa342++) { var _0x240142 = _0xd259d2[_0x4fa342] , _0x56f0e7 = _0x199c40[this['webGLVersion'] > 0x1 ? 'COLOR_ATTACHMENT' + _0x4fa342 : 'COLOR_ATTACHMENT' + _0x4fa342 + '_WEBGL'] , _0x2c2720 = _0x199c40['createRenderbuffer'](); if (!_0x2c2720) throw new Error('Unable\x20to\x20create\x20multi\x20sampled\x20framebuffer'); _0x199c40['bindRenderbuffer'](_0x199c40['RENDERBUFFER'], _0x2c2720), _0x199c40['renderbufferStorageMultisample'](_0x199c40['RENDERBUFFER'], _0x3b7a7c, this['_getRGBAMultiSampleBufferFormat'](_0x240142['type']), _0x240142['width'], _0x240142['height']), _0x199c40['framebufferRenderbuffer'](_0x199c40['FRAMEBUFFER'], _0x56f0e7, _0x199c40['RENDERBUFFER'], _0x2c2720), _0x240142['_MSAAFramebuffer'] = _0x25e156, _0x240142['_MSAARenderBuffer'] = _0x2c2720, _0x240142['samples'] = _0x3b7a7c, _0x240142['_depthStencilBuffer'] = _0x34e0ce, _0x199c40['bindRenderbuffer'](_0x199c40['RENDERBUFFER'], null), _0x48e3ae['push'](_0x56f0e7); } _0x199c40['drawBuffers'](_0x48e3ae); } else this['_bindUnboundFramebuffer'](_0xd259d2[0x0]['_framebuffer']); return this['_bindUnboundFramebuffer'](null), _0x3b7a7c; } ; var _0x217d12 = function(_0x4a4e94) { function _0x5a69a0(_0x369eb8, _0x48b052, _0x117a04, _0x173805, _0x23e459) { var _0x336026 = this , _0x14f2d5 = !(!_0x23e459 || !_0x23e459['generateMipMaps']) && _0x23e459['generateMipMaps'] , _0x303c6d = !(!_0x23e459 || !_0x23e459['generateDepthTexture']) && _0x23e459['generateDepthTexture'] , _0x103ce9 = !_0x23e459 || void 0x0 === _0x23e459['doNotChangeAspectRatio'] || _0x23e459['doNotChangeAspectRatio']; if ((_0x336026 = _0x4a4e94['call'](this, _0x369eb8, _0x48b052, _0x173805, _0x14f2d5, _0x103ce9) || this)['_engine'] = _0x173805['getEngine'](), _0x336026['isSupported']) { for (var _0x12db9a = [], _0x57ed3e = [], _0x154183 = 0x0; _0x154183 < _0x117a04; _0x154183++) _0x23e459 && _0x23e459['types'] && void 0x0 !== _0x23e459['types'][_0x154183] ? _0x12db9a['push'](_0x23e459['types'][_0x154183]) : _0x12db9a['push'](_0x23e459 && _0x23e459['defaultType'] ? _0x23e459['defaultType'] : _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), _0x23e459 && _0x23e459['samplingModes'] && void 0x0 !== _0x23e459['samplingModes'][_0x154183] ? _0x57ed3e['push'](_0x23e459['samplingModes'][_0x154183]) : _0x57ed3e['push'](_0x11d14a['a']['BILINEAR_SAMPLINGMODE']); var _0x2318cf = !_0x23e459 || void 0x0 === _0x23e459['generateDepthBuffer'] || _0x23e459['generateDepthBuffer'] , _0x443ea7 = !(!_0x23e459 || void 0x0 === _0x23e459['generateStencilBuffer']) && _0x23e459['generateStencilBuffer']; return _0x336026['_size'] = _0x48b052, _0x336026['_multiRenderTargetOptions'] = { 'samplingModes': _0x57ed3e, 'generateMipMaps': _0x14f2d5, 'generateDepthBuffer': _0x2318cf, 'generateStencilBuffer': _0x443ea7, 'generateDepthTexture': _0x303c6d, 'types': _0x12db9a, 'textureCount': _0x117a04 }, _0x336026['_createInternalTextures'](), _0x336026['_createTextures'](), _0x336026; } _0x336026['dispose'](); } return _0x420e5b['d'](_0x5a69a0, _0x4a4e94), Object['defineProperty'](_0x5a69a0['prototype'], 'isSupported', { 'get': function() { return this['_engine']['webGLVersion'] > 0x1 || this['_engine']['getCaps']()['drawBuffersExtension']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5a69a0['prototype'], 'textures', { 'get': function() { return this['_textures']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5a69a0['prototype'], 'depthTexture', { 'get': function() { return this['_textures'][this['_textures']['length'] - 0x1]; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5a69a0['prototype'], 'wrapU', { 'set': function(_0x1e96f) { if (this['_textures']) for (var _0x1ec3e4 = 0x0; _0x1ec3e4 < this['_textures']['length']; _0x1ec3e4++) this['_textures'][_0x1ec3e4]['wrapU'] = _0x1e96f; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5a69a0['prototype'], 'wrapV', { 'set': function(_0x30f8c7) { if (this['_textures']) for (var _0x2aedd6 = 0x0; _0x2aedd6 < this['_textures']['length']; _0x2aedd6++) this['_textures'][_0x2aedd6]['wrapV'] = _0x30f8c7; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5a69a0['prototype']['_rebuild'] = function() { this['releaseInternalTextures'](), this['_createInternalTextures'](); for (var _0x59e913 = 0x0; _0x59e913 < this['_internalTextures']['length']; _0x59e913++) { this['_textures'][_0x59e913]['_texture'] = this['_internalTextures'][_0x59e913]; } this['_texture'] = this['_internalTextures'][0x0]; } , _0x5a69a0['prototype']['_createInternalTextures'] = function() { this['_internalTextures'] = this['_engine']['createMultipleRenderTarget'](this['_size'], this['_multiRenderTargetOptions']); } , _0x5a69a0['prototype']['_createTextures'] = function() { this['_textures'] = []; for (var _0x5cc023 = 0x0; _0x5cc023 < this['_internalTextures']['length']; _0x5cc023++) { var _0x3ae782 = new _0x11d14a['a'](null,this['getScene']()); _0x3ae782['_texture'] = this['_internalTextures'][_0x5cc023], this['_textures']['push'](_0x3ae782); } this['_texture'] = this['_internalTextures'][0x0]; } , Object['defineProperty'](_0x5a69a0['prototype'], 'samples', { 'get': function() { return this['_samples']; }, 'set': function(_0x429f83) { this['_samples'] !== _0x429f83 && (this['_samples'] = this['_engine']['updateMultipleRenderTargetTextureSampleCount'](this['_internalTextures'], _0x429f83)); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5a69a0['prototype']['resize'] = function(_0x4e47c4) { this['releaseInternalTextures'](), this['_internalTextures'] = this['_engine']['createMultipleRenderTarget'](_0x4e47c4, this['_multiRenderTargetOptions']), this['_createInternalTextures'](); } , _0x5a69a0['prototype']['unbindFrameBuffer'] = function(_0x3474d9, _0xacb0d3) { var _0x36866f = this; _0x3474d9['unBindMultiColorAttachmentFramebuffer'](this['_internalTextures'], this['isCube'], function() { _0x36866f['onAfterRenderObservable']['notifyObservers'](_0xacb0d3); }); } , _0x5a69a0['prototype']['dispose'] = function() { this['releaseInternalTextures'](), _0x4a4e94['prototype']['dispose']['call'](this); } , _0x5a69a0['prototype']['releaseInternalTextures'] = function() { if (this['_internalTextures']) for (var _0x16b4ff = this['_internalTextures']['length'] - 0x1; _0x16b4ff >= 0x0; _0x16b4ff--) void 0x0 !== this['_internalTextures'][_0x16b4ff] && (this['_internalTextures'][_0x16b4ff]['dispose'](), this['_internalTextures']['splice'](_0x16b4ff, 0x1)); } , _0x5a69a0; }(_0xe8a585) , _0x2e24f3 = function() { function _0x3a4aba(_0x275ade) { this['name'] = _0x443f74['a']['NAME_PROCEDURALTEXTURE'], this['scene'] = _0x275ade, this['scene']['proceduralTextures'] = new Array(), _0x275ade['layers'] = new Array(); } return _0x3a4aba['prototype']['register'] = function() { this['scene']['_beforeClearStage']['registerStep'](_0x443f74['a']['STEP_BEFORECLEAR_PROCEDURALTEXTURE'], this, this['_beforeClear']); } , _0x3a4aba['prototype']['rebuild'] = function() {} , _0x3a4aba['prototype']['dispose'] = function() {} , _0x3a4aba['prototype']['_beforeClear'] = function() { if (this['scene']['proceduralTexturesEnabled']) { _0x1eb50e['h']['StartPerformanceCounter']('Procedural\x20textures', this['scene']['proceduralTextures']['length'] > 0x0); for (var _0x5b0587 = 0x0; _0x5b0587 < this['scene']['proceduralTextures']['length']; _0x5b0587++) { var _0x2d9dcb = this['scene']['proceduralTextures'][_0x5b0587]; _0x2d9dcb['_shouldRender']() && _0x2d9dcb['render'](); } _0x1eb50e['h']['EndPerformanceCounter']('Procedural\x20textures', this['scene']['proceduralTextures']['length'] > 0x0); } } , _0x3a4aba; }() , _0x31e3ef = '\x0aattribute\x20vec2\x20position;\x0a\x0avarying\x20vec2\x20vPosition;\x0avarying\x20vec2\x20vUV;\x0aconst\x20vec2\x20madd=vec2(0.5,0.5);\x0avoid\x20main(void)\x20{\x0avPosition=position;\x0avUV=position*madd+madd;\x0agl_Position=vec4(position,0.0,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['proceduralVertexShader'] = _0x31e3ef; var _0x500402 = function(_0x420716) { function _0x5633c2(_0xd67704, _0x38a49c, _0x480957, _0x148b2a, _0x4a6cd7, _0x5da86c, _0x1004a0) { void 0x0 === _0x4a6cd7 && (_0x4a6cd7 = null), void 0x0 === _0x5da86c && (_0x5da86c = !0x0), void 0x0 === _0x1004a0 && (_0x1004a0 = !0x1); var _0x533eca = _0x420716['call'](this, null, _0x148b2a, !_0x5da86c) || this; _0x533eca['isCube'] = _0x1004a0, _0x533eca['isEnabled'] = !0x0, _0x533eca['autoClear'] = !0x0, _0x533eca['onGeneratedObservable'] = new _0x2dbec2['c'](), _0x533eca['_textures'] = {}, _0x533eca['_currentRefreshId'] = -0x1, _0x533eca['_refreshRate'] = 0x1, _0x533eca['_vertexBuffers'] = {}, _0x533eca['_uniforms'] = new Array(), _0x533eca['_samplers'] = new Array(), _0x533eca['_floats'] = {}, _0x533eca['_ints'] = {}, _0x533eca['_floatsArrays'] = {}, _0x533eca['_colors3'] = {}, _0x533eca['_colors4'] = {}, _0x533eca['_vectors2'] = {}, _0x533eca['_vectors3'] = {}, _0x533eca['_matrices'] = {}, _0x533eca['_fallbackTextureUsed'] = !0x1, _0x533eca['_cachedDefines'] = '', _0x533eca['_contentUpdateId'] = -0x1; var _0x4b8d01 = (_0x148b2a = _0x533eca['getScene']())['_getComponent'](_0x443f74['a']['NAME_PROCEDURALTEXTURE']); _0x4b8d01 || (_0x4b8d01 = new _0x2e24f3(_0x148b2a), _0x148b2a['_addComponent'](_0x4b8d01)), _0x148b2a['proceduralTextures']['push'](_0x533eca), _0x533eca['_engine'] = _0x148b2a['getEngine'](), _0x533eca['name'] = _0xd67704, _0x533eca['isRenderTarget'] = !0x0, _0x533eca['_size'] = _0x38a49c, _0x533eca['_generateMipMaps'] = _0x5da86c, _0x533eca['setFragment'](_0x480957), _0x533eca['_fallbackTexture'] = _0x4a6cd7, _0x1004a0 ? (_0x533eca['_texture'] = _0x533eca['_engine']['createRenderTargetCubeTexture'](_0x38a49c, { 'generateMipMaps': _0x5da86c, 'generateDepthBuffer': !0x1, 'generateStencilBuffer': !0x1 }), _0x533eca['setFloat']('face', 0x0)) : _0x533eca['_texture'] = _0x533eca['_engine']['createRenderTargetTexture'](_0x38a49c, { 'generateMipMaps': _0x5da86c, 'generateDepthBuffer': !0x1, 'generateStencilBuffer': !0x1 }); var _0x2aaf3a = []; return _0x2aaf3a['push'](0x1, 0x1), _0x2aaf3a['push'](-0x1, 0x1), _0x2aaf3a['push'](-0x1, -0x1), _0x2aaf3a['push'](0x1, -0x1), _0x533eca['_vertexBuffers'][_0x4209f7['b']['PositionKind']] = new _0x4209f7['b'](_0x533eca['_engine'],_0x2aaf3a,_0x4209f7['b']['PositionKind'],!0x1,!0x1,0x2), _0x533eca['_createIndexBuffer'](), _0x533eca; } return _0x420e5b['d'](_0x5633c2, _0x420716), _0x5633c2['prototype']['getEffect'] = function() { return this['_effect']; } , _0x5633c2['prototype']['getContent'] = function() { return this['_contentData'] && this['_currentRefreshId'] == this['_contentUpdateId'] ? this['_contentData'] : (this['_contentData'] = this['readPixels'](0x0, 0x0, this['_contentData']), this['_contentUpdateId'] = this['_currentRefreshId'], this['_contentData']); } , _0x5633c2['prototype']['_createIndexBuffer'] = function() { var _0x1049a7 = this['_engine'] , _0x47bf01 = []; _0x47bf01['push'](0x0), _0x47bf01['push'](0x1), _0x47bf01['push'](0x2), _0x47bf01['push'](0x0), _0x47bf01['push'](0x2), _0x47bf01['push'](0x3), this['_indexBuffer'] = _0x1049a7['createIndexBuffer'](_0x47bf01); } , _0x5633c2['prototype']['_rebuild'] = function() { var _0x4a4dfa = this['_vertexBuffers'][_0x4209f7['b']['PositionKind']]; _0x4a4dfa && _0x4a4dfa['_rebuild'](), this['_createIndexBuffer'](), this['refreshRate'] === _0xe8a585['REFRESHRATE_RENDER_ONCE'] && (this['refreshRate'] = _0xe8a585['REFRESHRATE_RENDER_ONCE']); } , _0x5633c2['prototype']['reset'] = function() { void 0x0 !== this['_effect'] && this['_effect']['dispose'](); } , _0x5633c2['prototype']['_getDefines'] = function() { return ''; } , _0x5633c2['prototype']['isReady'] = function() { var _0x58bade, _0x137f97 = this, _0x183d56 = this['_engine']; if (!this['_fragment']) return !0x1; if (this['_fallbackTextureUsed']) return !0x0; var _0x561608 = this['_getDefines'](); return !(!this['_effect'] || _0x561608 !== this['_cachedDefines'] || !this['_effect']['isReady']()) || (_0x58bade = void 0x0 !== this['_fragment']['fragmentElement'] ? { 'vertex': 'procedural', 'fragmentElement': this['_fragment']['fragmentElement'] } : { 'vertex': 'procedural', 'fragment': this['_fragment'] }, this['_cachedDefines'] = _0x561608, this['_effect'] = _0x183d56['createEffect'](_0x58bade, [_0x4209f7['b']['PositionKind']], this['_uniforms'], this['_samplers'], _0x561608, void 0x0, void 0x0, function() { _0x137f97['releaseInternalTexture'](), _0x137f97['_fallbackTexture'] && (_0x137f97['_texture'] = _0x137f97['_fallbackTexture']['_texture'], _0x137f97['_texture'] && _0x137f97['_texture']['incrementReferences']()), _0x137f97['_fallbackTextureUsed'] = !0x0; }), this['_effect']['isReady']()); } , _0x5633c2['prototype']['resetRefreshCounter'] = function() { this['_currentRefreshId'] = -0x1; } , _0x5633c2['prototype']['setFragment'] = function(_0x3cf392) { this['_fragment'] = _0x3cf392; } , Object['defineProperty'](_0x5633c2['prototype'], 'refreshRate', { 'get': function() { return this['_refreshRate']; }, 'set': function(_0x28463a) { this['_refreshRate'] = _0x28463a, this['resetRefreshCounter'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5633c2['prototype']['_shouldRender'] = function() { return this['isEnabled'] && this['isReady']() && this['_texture'] ? !this['_fallbackTextureUsed'] && (-0x1 === this['_currentRefreshId'] ? (this['_currentRefreshId'] = 0x1, !0x0) : this['refreshRate'] === this['_currentRefreshId'] ? (this['_currentRefreshId'] = 0x1, !0x0) : (this['_currentRefreshId']++, !0x1)) : (this['_texture'] && (this['_texture']['isReady'] = !0x1), !0x1); } , _0x5633c2['prototype']['getRenderSize'] = function() { return this['_size']; } , _0x5633c2['prototype']['resize'] = function(_0xd006cf, _0x5a111d) { this['_fallbackTextureUsed'] || (this['releaseInternalTexture'](), this['_texture'] = this['_engine']['createRenderTargetTexture'](_0xd006cf, _0x5a111d), this['_size'] = _0xd006cf, this['_generateMipMaps'] = _0x5a111d); } , _0x5633c2['prototype']['_checkUniform'] = function(_0x3bf703) { -0x1 === this['_uniforms']['indexOf'](_0x3bf703) && this['_uniforms']['push'](_0x3bf703); } , _0x5633c2['prototype']['setTexture'] = function(_0x245ab0, _0x192681) { return -0x1 === this['_samplers']['indexOf'](_0x245ab0) && this['_samplers']['push'](_0x245ab0), this['_textures'][_0x245ab0] = _0x192681, this; } , _0x5633c2['prototype']['setFloat'] = function(_0x2389e3, _0x4d7c3c) { return this['_checkUniform'](_0x2389e3), this['_floats'][_0x2389e3] = _0x4d7c3c, this; } , _0x5633c2['prototype']['setInt'] = function(_0x416acc, _0x2d2fab) { return this['_checkUniform'](_0x416acc), this['_ints'][_0x416acc] = _0x2d2fab, this; } , _0x5633c2['prototype']['setFloats'] = function(_0xefd959, _0x296131) { return this['_checkUniform'](_0xefd959), this['_floatsArrays'][_0xefd959] = _0x296131, this; } , _0x5633c2['prototype']['setColor3'] = function(_0x1216ab, _0x2ff663) { return this['_checkUniform'](_0x1216ab), this['_colors3'][_0x1216ab] = _0x2ff663, this; } , _0x5633c2['prototype']['setColor4'] = function(_0x3b3654, _0x172ac1) { return this['_checkUniform'](_0x3b3654), this['_colors4'][_0x3b3654] = _0x172ac1, this; } , _0x5633c2['prototype']['setVector2'] = function(_0x21485f, _0x8ed0e5) { return this['_checkUniform'](_0x21485f), this['_vectors2'][_0x21485f] = _0x8ed0e5, this; } , _0x5633c2['prototype']['setVector3'] = function(_0xf50fd3, _0x305330) { return this['_checkUniform'](_0xf50fd3), this['_vectors3'][_0xf50fd3] = _0x305330, this; } , _0x5633c2['prototype']['setMatrix'] = function(_0x1853a3, _0xbba98) { return this['_checkUniform'](_0x1853a3), this['_matrices'][_0x1853a3] = _0xbba98, this; } , _0x5633c2['prototype']['render'] = function(_0x389b66) { var _0x4267ee = this['getScene'](); if (_0x4267ee) { var _0x4ccfb8 = this['_engine']; for (var _0x1a3c21 in (_0x4ccfb8['enableEffect'](this['_effect']), _0x4ccfb8['setState'](!0x1), this['_textures'])) this['_effect']['setTexture'](_0x1a3c21, this['_textures'][_0x1a3c21]); for (_0x1a3c21 in this['_ints']) this['_effect']['setInt'](_0x1a3c21, this['_ints'][_0x1a3c21]); for (_0x1a3c21 in this['_floats']) this['_effect']['setFloat'](_0x1a3c21, this['_floats'][_0x1a3c21]); for (_0x1a3c21 in this['_floatsArrays']) this['_effect']['setArray'](_0x1a3c21, this['_floatsArrays'][_0x1a3c21]); for (_0x1a3c21 in this['_colors3']) this['_effect']['setColor3'](_0x1a3c21, this['_colors3'][_0x1a3c21]); for (_0x1a3c21 in this['_colors4']) { var _0x4959c2 = this['_colors4'][_0x1a3c21]; this['_effect']['setFloat4'](_0x1a3c21, _0x4959c2['r'], _0x4959c2['g'], _0x4959c2['b'], _0x4959c2['a']); } for (_0x1a3c21 in this['_vectors2']) this['_effect']['setVector2'](_0x1a3c21, this['_vectors2'][_0x1a3c21]); for (_0x1a3c21 in this['_vectors3']) this['_effect']['setVector3'](_0x1a3c21, this['_vectors3'][_0x1a3c21]); for (_0x1a3c21 in this['_matrices']) this['_effect']['setMatrix'](_0x1a3c21, this['_matrices'][_0x1a3c21]); if (this['_texture']) { if (this['isCube']) for (var _0x2289c6 = 0x0; _0x2289c6 < 0x6; _0x2289c6++) _0x4ccfb8['bindFramebuffer'](this['_texture'], _0x2289c6, void 0x0, void 0x0, !0x0), _0x4ccfb8['bindBuffers'](this['_vertexBuffers'], this['_indexBuffer'], this['_effect']), this['_effect']['setFloat']('face', _0x2289c6), this['autoClear'] && _0x4ccfb8['clear'](_0x4267ee['clearColor'], !0x0, !0x1, !0x1), _0x4ccfb8['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, 0x6), 0x5 === _0x2289c6 && _0x4ccfb8['generateMipMapsForCubemap'](this['_texture']); else _0x4ccfb8['bindFramebuffer'](this['_texture'], 0x0, void 0x0, void 0x0, !0x0), _0x4ccfb8['bindBuffers'](this['_vertexBuffers'], this['_indexBuffer'], this['_effect']), this['autoClear'] && _0x4ccfb8['clear'](_0x4267ee['clearColor'], !0x0, !0x1, !0x1), _0x4ccfb8['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, 0x6); _0x4ccfb8['unBindFramebuffer'](this['_texture'], this['isCube']), this['onGenerated'] && this['onGenerated'](), this['onGeneratedObservable']['notifyObservers'](this); } } } , _0x5633c2['prototype']['clone'] = function() { var _0x4e5231 = this['getSize']() , _0x1af4c5 = new _0x5633c2(this['name'],_0x4e5231['width'],this['_fragment'],this['getScene'](),this['_fallbackTexture'],this['_generateMipMaps']); return _0x1af4c5['hasAlpha'] = this['hasAlpha'], _0x1af4c5['level'] = this['level'], _0x1af4c5['coordinatesMode'] = this['coordinatesMode'], _0x1af4c5; } , _0x5633c2['prototype']['dispose'] = function() { var _0x41d3bb = this['getScene'](); if (_0x41d3bb) { var _0x250e86 = _0x41d3bb['proceduralTextures']['indexOf'](this); _0x250e86 >= 0x0 && _0x41d3bb['proceduralTextures']['splice'](_0x250e86, 0x1); var _0x560f1e = this['_vertexBuffers'][_0x4209f7['b']['PositionKind']]; _0x560f1e && (_0x560f1e['dispose'](), this['_vertexBuffers'][_0x4209f7['b']['PositionKind']] = null), this['_indexBuffer'] && this['_engine']['_releaseBuffer'](this['_indexBuffer']) && (this['_indexBuffer'] = null), _0x420716['prototype']['dispose']['call'](this); } } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x5633c2['prototype'], 'isEnabled', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x5633c2['prototype'], 'autoClear', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x5633c2['prototype'], '_generateMipMaps', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x5633c2['prototype'], '_size', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x5633c2['prototype'], 'refreshRate', null), _0x5633c2; }(_0x11d14a['a']) , _0x5cea33 = _0x59bd00(0x3c) , _0x3d44c0 = function(_0x152b2f) { function _0x34c500(_0x6f40b9, _0x1a3222, _0x1f4089, _0x618e2c, _0x198877, _0x331ed4) { var _0x2e8070 = _0x152b2f['call'](this, _0x6f40b9, _0x1f4089, null, _0x618e2c, _0x198877, _0x331ed4) || this; return _0x2e8070['_animate'] = !0x0, _0x2e8070['_time'] = 0x0, _0x2e8070['_texturePath'] = _0x1a3222, _0x2e8070['_loadJson'](_0x1a3222), _0x2e8070['refreshRate'] = 0x1, _0x2e8070; } return _0x420e5b['d'](_0x34c500, _0x152b2f), _0x34c500['prototype']['_loadJson'] = function(_0x420377) { var _0x347f6b = this , _0x1f31c8 = function() { _0x3f98cb['a']['Log']('No\x20config\x20file\x20found\x20in\x20' + _0x420377 + '\x20trying\x20to\x20use\x20ShadersStore\x20or\x20DOM\x20element'); try { _0x347f6b['setFragment'](_0x347f6b['_texturePath']); } catch (_0x22388e) { _0x3f98cb['a']['Error']('No\x20json\x20or\x20ShaderStore\x20or\x20DOM\x20element\x20found\x20for\x20CustomProceduralTexture'); } } , _0x594fe0 = _0x420377 + '/config.json' , _0x1b747f = new _0x5cea33['a'](); _0x1b747f['open']('GET', _0x594fe0), _0x1b747f['addEventListener']('load', function() { if (0xc8 === _0x1b747f['status'] || _0x1b747f['responseText'] && _0x1b747f['responseText']['length'] > 0x0) try { _0x347f6b['_config'] = JSON['parse'](_0x1b747f['response']), _0x347f6b['updateShaderUniforms'](), _0x347f6b['updateTextures'](), _0x347f6b['setFragment'](_0x347f6b['_texturePath'] + '/custom'), _0x347f6b['_animate'] = _0x347f6b['_config']['animate'], _0x347f6b['refreshRate'] = _0x347f6b['_config']['refreshrate']; } catch (_0x179b4c) { _0x1f31c8(); } else _0x1f31c8(); }, !0x1), _0x1b747f['addEventListener']('error', function() { _0x1f31c8(); }, !0x1); try { _0x1b747f['send'](); } catch (_0xf620de) { _0x3f98cb['a']['Error']('CustomProceduralTexture:\x20Error\x20on\x20XHR\x20send\x20request.'); } } , _0x34c500['prototype']['isReady'] = function() { if (!_0x152b2f['prototype']['isReady']['call'](this)) return !0x1; for (var _0xcce064 in this['_textures']) { if (!this['_textures'][_0xcce064]['isReady']()) return !0x1; } return !0x0; } , _0x34c500['prototype']['render'] = function(_0x12e491) { var _0x1c0e69 = this['getScene'](); this['_animate'] && _0x1c0e69 && (this['_time'] += 0.03 * _0x1c0e69['getAnimationRatio'](), this['updateShaderUniforms']()), _0x152b2f['prototype']['render']['call'](this, _0x12e491); } , _0x34c500['prototype']['updateTextures'] = function() { for (var _0x2ab84f = 0x0; _0x2ab84f < this['_config']['sampler2Ds']['length']; _0x2ab84f++) this['setTexture'](this['_config']['sampler2Ds'][_0x2ab84f]['sample2Dname'], new _0x11d14a['a'](this['_texturePath'] + '/' + this['_config']['sampler2Ds'][_0x2ab84f]['textureRelativeUrl'],this['getScene']())); } , _0x34c500['prototype']['updateShaderUniforms'] = function() { if (this['_config']) for (var _0x35435b = 0x0; _0x35435b < this['_config']['uniforms']['length']; _0x35435b++) { var _0xe1c065 = this['_config']['uniforms'][_0x35435b]; switch (_0xe1c065['type']) { case 'float': this['setFloat'](_0xe1c065['name'], _0xe1c065['value']); break; case 'color3': this['setColor3'](_0xe1c065['name'], new _0x47d24f['e'](_0xe1c065['r'],_0xe1c065['g'],_0xe1c065['b'])); break; case 'color4': this['setColor4'](_0xe1c065['name'], new _0x47d24f['f'](_0xe1c065['r'],_0xe1c065['g'],_0xe1c065['b'],_0xe1c065['a'])); break; case 'vector2': this['setVector2'](_0xe1c065['name'], new _0x47d24f['w'](_0xe1c065['x'],_0xe1c065['y'])); break; case 'vector3': this['setVector3'](_0xe1c065['name'], new _0x47d24f['x'](_0xe1c065['x'],_0xe1c065['y'],_0xe1c065['z'])); } } this['setFloat']('time', this['_time']); } , Object['defineProperty'](_0x34c500['prototype'], 'animate', { 'get': function() { return this['_animate']; }, 'set': function(_0x4604f9) { this['_animate'] = _0x4604f9; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x34c500; }(_0x500402) , _0x331721 = '\x0a\x0auniform\x20float\x20brightness;\x0auniform\x20float\x20persistence;\x0auniform\x20float\x20timeScale;\x0a\x0avarying\x20vec2\x20vUV;\x0a\x0avec2\x20hash22(vec2\x20p)\x0a{\x0ap=p*mat2(127.1,311.7,269.5,183.3);\x0ap=-1.0+2.0*fract(sin(p)*43758.5453123);\x0areturn\x20sin(p*6.283+timeScale);\x0a}\x0afloat\x20interpolationNoise(vec2\x20p)\x0a{\x0avec2\x20pi=floor(p);\x0avec2\x20pf=p-pi;\x0avec2\x20w=pf*pf*(3.-2.*pf);\x0afloat\x20f00=dot(hash22(pi+vec2(.0,.0)),pf-vec2(.0,.0));\x0afloat\x20f01=dot(hash22(pi+vec2(.0,1.)),pf-vec2(.0,1.));\x0afloat\x20f10=dot(hash22(pi+vec2(1.0,0.)),pf-vec2(1.0,0.));\x0afloat\x20f11=dot(hash22(pi+vec2(1.0,1.)),pf-vec2(1.0,1.));\x0afloat\x20xm1=mix(f00,f10,w.x);\x0afloat\x20xm2=mix(f01,f11,w.x);\x0afloat\x20ym=mix(xm1,xm2,w.y);\x0areturn\x20ym;\x0a}\x0afloat\x20perlinNoise2D(float\x20x,float\x20y)\x0a{\x0afloat\x20sum=0.0;\x0afloat\x20frequency=0.0;\x0afloat\x20amplitude=0.0;\x0afor(int\x20i=0;\x20i _0x49b5ab['EPSILON'] ? 0x1 : 0x0; _0xce032b |= _0x9f3be7, _0x4217f4['push'](_0x9f3be7); } switch (_0xce032b) { case 0x0: (_0x47d24f['x']['Dot'](this['normal'], _0x1e0189['plane']['normal']) > 0x0 ? _0x12e836 : _0x106198)['push'](_0x1e0189); break; case 0x1: _0x1f86c9['push'](_0x1e0189); break; case 0x2: _0x1f0117['push'](_0x1e0189); break; case 0x3: var _0x5e376b, _0x49560b = [], _0x244407 = []; for (_0x1ead70 = 0x0; _0x1ead70 < _0x1e0189['vertices']['length']; _0x1ead70++) { var _0x1b44c9 = (_0x1ead70 + 0x1) % _0x1e0189['vertices']['length'] , _0x349ffc = _0x4217f4[_0x1ead70] , _0x502d03 = _0x4217f4[_0x1b44c9] , _0x5923a7 = _0x1e0189['vertices'][_0x1ead70] , _0x2f2a28 = _0x1e0189['vertices'][_0x1b44c9]; if (0x2 !== _0x349ffc && _0x49560b['push'](_0x5923a7), 0x1 !== _0x349ffc && _0x244407['push'](0x2 !== _0x349ffc ? _0x5923a7['clone']() : _0x5923a7), 0x3 == (_0x349ffc | _0x502d03)) { _0x2efb33 = (this['w'] - _0x47d24f['x']['Dot'](this['normal'], _0x5923a7['pos'])) / _0x47d24f['x']['Dot'](this['normal'], _0x2f2a28['pos']['subtract'](_0x5923a7['pos'])); var _0x5e85e4 = _0x5923a7['interpolate'](_0x2f2a28, _0x2efb33); _0x49560b['push'](_0x5e85e4), _0x244407['push'](_0x5e85e4['clone']()); } } _0x49560b['length'] >= 0x3 && (_0x5e376b = new _0x41dbe7(_0x49560b,_0x1e0189['shared']))['plane'] && _0x1f86c9['push'](_0x5e376b), _0x244407['length'] >= 0x3 && (_0x5e376b = new _0x41dbe7(_0x244407,_0x1e0189['shared']))['plane'] && _0x1f0117['push'](_0x5e376b); } } , _0x49b5ab['EPSILON'] = 0.00001, _0x49b5ab; }() , _0x41dbe7 = function() { function _0x4263a5(_0x453b15, _0x5461c8) { this['vertices'] = _0x453b15, this['shared'] = _0x5461c8, this['plane'] = _0x3c613c['FromPoints'](_0x453b15[0x0]['pos'], _0x453b15[0x1]['pos'], _0x453b15[0x2]['pos']); } return _0x4263a5['prototype']['clone'] = function() { return new _0x4263a5(this['vertices']['map'](function(_0x5c0204) { return _0x5c0204['clone'](); }),this['shared']); } , _0x4263a5['prototype']['flip'] = function() { this['vertices']['reverse']()['map'](function(_0x52e27b) { _0x52e27b['flip'](); }), this['plane']['flip'](); } , _0x4263a5; }() , _0x304da5 = function() { function _0xa7b903(_0x471ea8) { this['plane'] = null, this['front'] = null, this['back'] = null, this['polygons'] = new Array(), _0x471ea8 && this['build'](_0x471ea8); } return _0xa7b903['prototype']['clone'] = function() { var _0x5ad694 = new _0xa7b903(); return _0x5ad694['plane'] = this['plane'] && this['plane']['clone'](), _0x5ad694['front'] = this['front'] && this['front']['clone'](), _0x5ad694['back'] = this['back'] && this['back']['clone'](), _0x5ad694['polygons'] = this['polygons']['map'](function(_0xb2170f) { return _0xb2170f['clone'](); }), _0x5ad694; } , _0xa7b903['prototype']['invert'] = function() { for (var _0x2ae6a3 = 0x0; _0x2ae6a3 < this['polygons']['length']; _0x2ae6a3++) this['polygons'][_0x2ae6a3]['flip'](); this['plane'] && this['plane']['flip'](), this['front'] && this['front']['invert'](), this['back'] && this['back']['invert'](); var _0x43b17b = this['front']; this['front'] = this['back'], this['back'] = _0x43b17b; } , _0xa7b903['prototype']['clipPolygons'] = function(_0xb9c626) { if (!this['plane']) return _0xb9c626['slice'](); for (var _0x579b31 = new Array(), _0x111130 = new Array(), _0x2dc3e9 = 0x0; _0x2dc3e9 < _0xb9c626['length']; _0x2dc3e9++) this['plane']['splitPolygon'](_0xb9c626[_0x2dc3e9], _0x579b31, _0x111130, _0x579b31, _0x111130); return this['front'] && (_0x579b31 = this['front']['clipPolygons'](_0x579b31)), _0x111130 = this['back'] ? this['back']['clipPolygons'](_0x111130) : [], _0x579b31['concat'](_0x111130); } , _0xa7b903['prototype']['clipTo'] = function(_0x2dc91e) { this['polygons'] = _0x2dc91e['clipPolygons'](this['polygons']), this['front'] && this['front']['clipTo'](_0x2dc91e), this['back'] && this['back']['clipTo'](_0x2dc91e); } , _0xa7b903['prototype']['allPolygons'] = function() { var _0x58a21b = this['polygons']['slice'](); return this['front'] && (_0x58a21b = _0x58a21b['concat'](this['front']['allPolygons']())), this['back'] && (_0x58a21b = _0x58a21b['concat'](this['back']['allPolygons']())), _0x58a21b; } , _0xa7b903['prototype']['build'] = function(_0x400184) { if (_0x400184['length']) { this['plane'] || (this['plane'] = _0x400184[0x0]['plane']['clone']()); for (var _0x438b32 = new Array(), _0x4c8e02 = new Array(), _0x281bc9 = 0x0; _0x281bc9 < _0x400184['length']; _0x281bc9++) this['plane']['splitPolygon'](_0x400184[_0x281bc9], this['polygons'], this['polygons'], _0x438b32, _0x4c8e02); _0x438b32['length'] && (this['front'] || (this['front'] = new _0xa7b903()), this['front']['build'](_0x438b32)), _0x4c8e02['length'] && (this['back'] || (this['back'] = new _0xa7b903()), this['back']['build'](_0x4c8e02)); } } , _0xa7b903; }() , _0x40105c = function() { function _0x54f982() { this['polygons'] = new Array(); } return _0x54f982['FromMesh'] = function(_0x369309) { var _0x3c03f3, _0x51588a, _0x54538d, _0xd04c79, _0x541492, _0x254cb9, _0x313183, _0xecc7de, _0x528b89, _0x592e2b, _0x2b5575 = new Array(), _0x1da5dc = null; if (!(_0x369309 instanceof _0xb4719b['a'])) throw 'BABYLON.CSG:\x20Wrong\x20Mesh\x20type,\x20must\x20be\x20BABYLON.Mesh'; _0x369309['computeWorldMatrix'](!0x0), _0x313183 = _0x369309['getWorldMatrix'](), _0xecc7de = _0x369309['position']['clone'](), _0x528b89 = _0x369309['rotation']['clone'](), _0x369309['rotationQuaternion'] && (_0x1da5dc = _0x369309['rotationQuaternion']['clone']()), _0x592e2b = _0x369309['scaling']['clone'](); for (var _0x34e4bb = _0x369309['getIndices'](), _0x15e984 = _0x369309['getVerticesData'](_0x4209f7['b']['PositionKind']), _0x21f543 = _0x369309['getVerticesData'](_0x4209f7['b']['NormalKind']), _0x410fd0 = _0x369309['getVerticesData'](_0x4209f7['b']['UVKind']), _0x4dc642 = _0x369309['subMeshes'], _0x20b140 = 0x0, _0xbb0c4e = _0x4dc642['length']; _0x20b140 < _0xbb0c4e; _0x20b140++) for (var _0x509303 = _0x4dc642[_0x20b140]['indexStart'], _0x4c5eab = _0x4dc642[_0x20b140]['indexCount'] + _0x4dc642[_0x20b140]['indexStart']; _0x509303 < _0x4c5eab; _0x509303 += 0x3) { _0x254cb9 = []; for (var _0x4af883 = 0x0; _0x4af883 < 0x3; _0x4af883++) { var _0x322198 = new _0x47d24f['x'](_0x21f543[0x3 * _0x34e4bb[_0x509303 + _0x4af883]],_0x21f543[0x3 * _0x34e4bb[_0x509303 + _0x4af883] + 0x1],_0x21f543[0x3 * _0x34e4bb[_0x509303 + _0x4af883] + 0x2]); _0x54538d = new _0x47d24f['w'](_0x410fd0[0x2 * _0x34e4bb[_0x509303 + _0x4af883]],_0x410fd0[0x2 * _0x34e4bb[_0x509303 + _0x4af883] + 0x1]); var _0x33493a = new _0x47d24f['x'](_0x15e984[0x3 * _0x34e4bb[_0x509303 + _0x4af883]],_0x15e984[0x3 * _0x34e4bb[_0x509303 + _0x4af883] + 0x1],_0x15e984[0x3 * _0x34e4bb[_0x509303 + _0x4af883] + 0x2]); _0xd04c79 = _0x47d24f['x']['TransformCoordinates'](_0x33493a, _0x313183), _0x51588a = _0x47d24f['x']['TransformNormal'](_0x322198, _0x313183), _0x3c03f3 = new _0x23d5c3(_0xd04c79,_0x51588a,_0x54538d), _0x254cb9['push'](_0x3c03f3); } (_0x541492 = new _0x41dbe7(_0x254cb9,{ 'subMeshId': _0x20b140, 'meshId': _0x26a9a3, 'materialIndex': _0x4dc642[_0x20b140]['materialIndex'] }))['plane'] && _0x2b5575['push'](_0x541492); } var _0xb47e2c = _0x54f982['FromPolygons'](_0x2b5575); return _0xb47e2c['matrix'] = _0x313183, _0xb47e2c['position'] = _0xecc7de, _0xb47e2c['rotation'] = _0x528b89, _0xb47e2c['scaling'] = _0x592e2b, _0xb47e2c['rotationQuaternion'] = _0x1da5dc, _0x26a9a3++, _0xb47e2c; } , _0x54f982['FromPolygons'] = function(_0x10a469) { var _0x4876e4 = new _0x54f982(); return _0x4876e4['polygons'] = _0x10a469, _0x4876e4; } , _0x54f982['prototype']['clone'] = function() { var _0x5c682f = new _0x54f982(); return _0x5c682f['polygons'] = this['polygons']['map'](function(_0x5446a1) { return _0x5446a1['clone'](); }), _0x5c682f['copyTransformAttributes'](this), _0x5c682f; } , _0x54f982['prototype']['union'] = function(_0x25a633) { var _0x4080cd = new _0x304da5(this['clone']()['polygons']) , _0x33f575 = new _0x304da5(_0x25a633['clone']()['polygons']); return _0x4080cd['clipTo'](_0x33f575), _0x33f575['clipTo'](_0x4080cd), _0x33f575['invert'](), _0x33f575['clipTo'](_0x4080cd), _0x33f575['invert'](), _0x4080cd['build'](_0x33f575['allPolygons']()), _0x54f982['FromPolygons'](_0x4080cd['allPolygons']())['copyTransformAttributes'](this); } , _0x54f982['prototype']['unionInPlace'] = function(_0x2c91e7) { var _0xb98436 = new _0x304da5(this['polygons']) , _0x433b01 = new _0x304da5(_0x2c91e7['polygons']); _0xb98436['clipTo'](_0x433b01), _0x433b01['clipTo'](_0xb98436), _0x433b01['invert'](), _0x433b01['clipTo'](_0xb98436), _0x433b01['invert'](), _0xb98436['build'](_0x433b01['allPolygons']()), this['polygons'] = _0xb98436['allPolygons'](); } , _0x54f982['prototype']['subtract'] = function(_0x58f6e0) { var _0x5b8c0c = new _0x304da5(this['clone']()['polygons']) , _0x1d3a3f = new _0x304da5(_0x58f6e0['clone']()['polygons']); return _0x5b8c0c['invert'](), _0x5b8c0c['clipTo'](_0x1d3a3f), _0x1d3a3f['clipTo'](_0x5b8c0c), _0x1d3a3f['invert'](), _0x1d3a3f['clipTo'](_0x5b8c0c), _0x1d3a3f['invert'](), _0x5b8c0c['build'](_0x1d3a3f['allPolygons']()), _0x5b8c0c['invert'](), _0x54f982['FromPolygons'](_0x5b8c0c['allPolygons']())['copyTransformAttributes'](this); } , _0x54f982['prototype']['subtractInPlace'] = function(_0x39a485) { var _0x4c3670 = new _0x304da5(this['polygons']) , _0x288322 = new _0x304da5(_0x39a485['polygons']); _0x4c3670['invert'](), _0x4c3670['clipTo'](_0x288322), _0x288322['clipTo'](_0x4c3670), _0x288322['invert'](), _0x288322['clipTo'](_0x4c3670), _0x288322['invert'](), _0x4c3670['build'](_0x288322['allPolygons']()), _0x4c3670['invert'](), this['polygons'] = _0x4c3670['allPolygons'](); } , _0x54f982['prototype']['intersect'] = function(_0x320716) { var _0x37fa9f = new _0x304da5(this['clone']()['polygons']) , _0x137911 = new _0x304da5(_0x320716['clone']()['polygons']); return _0x37fa9f['invert'](), _0x137911['clipTo'](_0x37fa9f), _0x137911['invert'](), _0x37fa9f['clipTo'](_0x137911), _0x137911['clipTo'](_0x37fa9f), _0x37fa9f['build'](_0x137911['allPolygons']()), _0x37fa9f['invert'](), _0x54f982['FromPolygons'](_0x37fa9f['allPolygons']())['copyTransformAttributes'](this); } , _0x54f982['prototype']['intersectInPlace'] = function(_0x2117ad) { var _0x1f8e42 = new _0x304da5(this['polygons']) , _0x4ddb78 = new _0x304da5(_0x2117ad['polygons']); _0x1f8e42['invert'](), _0x4ddb78['clipTo'](_0x1f8e42), _0x4ddb78['invert'](), _0x1f8e42['clipTo'](_0x4ddb78), _0x4ddb78['clipTo'](_0x1f8e42), _0x1f8e42['build'](_0x4ddb78['allPolygons']()), _0x1f8e42['invert'](), this['polygons'] = _0x1f8e42['allPolygons'](); } , _0x54f982['prototype']['inverse'] = function() { var _0x397f37 = this['clone'](); return _0x397f37['inverseInPlace'](), _0x397f37; } , _0x54f982['prototype']['inverseInPlace'] = function() { this['polygons']['map'](function(_0x3e2cd8) { _0x3e2cd8['flip'](); }); } , _0x54f982['prototype']['copyTransformAttributes'] = function(_0x555daf) { return this['matrix'] = _0x555daf['matrix'], this['position'] = _0x555daf['position'], this['rotation'] = _0x555daf['rotation'], this['scaling'] = _0x555daf['scaling'], this['rotationQuaternion'] = _0x555daf['rotationQuaternion'], this; } , _0x54f982['prototype']['buildMeshGeometry'] = function(_0xa44c0d, _0x4bee9b, _0x499b75) { var _0x2ff6f6 = this['matrix']['clone'](); _0x2ff6f6['invert'](); var _0x11eb17, _0x301df6, _0x5a53a5, _0x75162a = new _0xb4719b['a'](_0xa44c0d,_0x4bee9b), _0x2d431d = [], _0x5b8f0c = [], _0x3b28b5 = [], _0x4a97bd = [], _0x3076ae = _0x47d24f['x']['Zero'](), _0x90e0e6 = _0x47d24f['x']['Zero'](), _0x2620d2 = _0x47d24f['w']['Zero'](), _0x4a32ee = this['polygons'], _0x3d74a2 = [0x0, 0x0, 0x0], _0x222941 = {}, _0x1487ea = 0x0, _0x73203b = {}; _0x499b75 && _0x4a32ee['sort'](function(_0x38dfff, _0x15f596) { return _0x38dfff['shared']['meshId'] === _0x15f596['shared']['meshId'] ? _0x38dfff['shared']['subMeshId'] - _0x15f596['shared']['subMeshId'] : _0x38dfff['shared']['meshId'] - _0x15f596['shared']['meshId']; }); for (var _0x6e5156 = 0x0, _0x4dc5ef = _0x4a32ee['length']; _0x6e5156 < _0x4dc5ef; _0x6e5156++) { _0x73203b[(_0x11eb17 = _0x4a32ee[_0x6e5156])['shared']['meshId']] || (_0x73203b[_0x11eb17['shared']['meshId']] = {}), _0x73203b[_0x11eb17['shared']['meshId']][_0x11eb17['shared']['subMeshId']] || (_0x73203b[_0x11eb17['shared']['meshId']][_0x11eb17['shared']['subMeshId']] = { 'indexStart': 0x1 / 0x0, 'indexEnd': -0x1 / 0x0, 'materialIndex': _0x11eb17['shared']['materialIndex'] }), _0x5a53a5 = _0x73203b[_0x11eb17['shared']['meshId']][_0x11eb17['shared']['subMeshId']]; for (var _0x1d53be = 0x2, _0x5ae737 = _0x11eb17['vertices']['length']; _0x1d53be < _0x5ae737; _0x1d53be++) { _0x3d74a2[0x0] = 0x0, _0x3d74a2[0x1] = _0x1d53be - 0x1, _0x3d74a2[0x2] = _0x1d53be; for (var _0x28cf9d = 0x0; _0x28cf9d < 0x3; _0x28cf9d++) { _0x3076ae['copyFrom'](_0x11eb17['vertices'][_0x3d74a2[_0x28cf9d]]['pos']), _0x90e0e6['copyFrom'](_0x11eb17['vertices'][_0x3d74a2[_0x28cf9d]]['normal']), _0x2620d2['copyFrom'](_0x11eb17['vertices'][_0x3d74a2[_0x28cf9d]]['uv']); var _0x13cf54 = _0x47d24f['x']['TransformCoordinates'](_0x3076ae, _0x2ff6f6) , _0x13cce1 = _0x47d24f['x']['TransformNormal'](_0x90e0e6, _0x2ff6f6); void 0x0 !== (_0x301df6 = _0x222941[_0x13cf54['x'] + ',' + _0x13cf54['y'] + ',' + _0x13cf54['z']]) && _0x3b28b5[0x3 * _0x301df6] === _0x13cce1['x'] && _0x3b28b5[0x3 * _0x301df6 + 0x1] === _0x13cce1['y'] && _0x3b28b5[0x3 * _0x301df6 + 0x2] === _0x13cce1['z'] && _0x4a97bd[0x2 * _0x301df6] === _0x2620d2['x'] && _0x4a97bd[0x2 * _0x301df6 + 0x1] === _0x2620d2['y'] || (_0x2d431d['push'](_0x13cf54['x'], _0x13cf54['y'], _0x13cf54['z']), _0x4a97bd['push'](_0x2620d2['x'], _0x2620d2['y']), _0x3b28b5['push'](_0x90e0e6['x'], _0x90e0e6['y'], _0x90e0e6['z']), _0x301df6 = _0x222941[_0x13cf54['x'] + ',' + _0x13cf54['y'] + ',' + _0x13cf54['z']] = _0x2d431d['length'] / 0x3 - 0x1), _0x5b8f0c['push'](_0x301df6), _0x5a53a5['indexStart'] = Math['min'](_0x1487ea, _0x5a53a5['indexStart']), _0x5a53a5['indexEnd'] = Math['max'](_0x1487ea, _0x5a53a5['indexEnd']), _0x1487ea++; } } } if (_0x75162a['setVerticesData'](_0x4209f7['b']['PositionKind'], _0x2d431d), _0x75162a['setVerticesData'](_0x4209f7['b']['NormalKind'], _0x3b28b5), _0x75162a['setVerticesData'](_0x4209f7['b']['UVKind'], _0x4a97bd), _0x75162a['setIndices'](_0x5b8f0c, null), _0x499b75) { var _0x489fe3, _0x5bffe6 = 0x0; for (var _0x372223 in (_0x75162a['subMeshes'] = new Array(), _0x73203b)) { for (var _0x37aad0 in (_0x489fe3 = -0x1, _0x73203b[_0x372223])) _0x5a53a5 = _0x73203b[_0x372223][_0x37aad0], _0x4db406['b']['CreateFromIndices'](_0x5a53a5['materialIndex'] + _0x5bffe6, _0x5a53a5['indexStart'], _0x5a53a5['indexEnd'] - _0x5a53a5['indexStart'] + 0x1, _0x75162a), _0x489fe3 = Math['max'](_0x5a53a5['materialIndex'], _0x489fe3); _0x5bffe6 += ++_0x489fe3; } } return _0x75162a; } , _0x54f982['prototype']['toMesh'] = function(_0x5cf3c6, _0x1eaebe, _0x882d1b, _0x3e3867) { var _0x52d10c = this['buildMeshGeometry'](_0x5cf3c6, _0x882d1b, _0x3e3867); return _0x52d10c['material'] = _0x1eaebe, _0x52d10c['position']['copyFrom'](this['position']), _0x52d10c['rotation']['copyFrom'](this['rotation']), this['rotationQuaternion'] && (_0x52d10c['rotationQuaternion'] = this['rotationQuaternion']['clone']()), _0x52d10c['scaling']['copyFrom'](this['scaling']), _0x52d10c['computeWorldMatrix'](!0x0), _0x52d10c; } , _0x54f982; }() , _0x96461 = function(_0x3463b0) { function _0x5cc932(_0x3d989e, _0x3d310d, _0x4159c8, _0x45df5c, _0x34a947, _0x25965b) { void 0x0 === _0x45df5c && (_0x45df5c = 0x1), void 0x0 === _0x34a947 && (_0x34a947 = 0x3c), void 0x0 === _0x25965b && (_0x25965b = !0x0); var _0x5485da = _0x3463b0['call'](this, _0x3d989e, _0x4159c8) || this; _0x5485da['_sectionPolygonPointsCount'] = 0x4, _0x5485da['_running'] = !0x1, _0x5485da['_autoStart'] = _0x25965b, _0x5485da['_generator'] = _0x3d310d, _0x5485da['_diameter'] = _0x45df5c, _0x5485da['_length'] = _0x34a947, _0x5485da['_sectionVectors'] = [], _0x5485da['_sectionNormalVectors'] = []; for (var _0x2bba59 = 0x0; _0x2bba59 < _0x5485da['_sectionPolygonPointsCount']; _0x2bba59++) _0x5485da['_sectionVectors'][_0x2bba59] = _0x47d24f['x']['Zero'](), _0x5485da['_sectionNormalVectors'][_0x2bba59] = _0x47d24f['x']['Zero'](); return _0x5485da['_createMesh'](), _0x5485da; } return _0x420e5b['d'](_0x5cc932, _0x3463b0), _0x5cc932['prototype']['getClassName'] = function() { return 'TrailMesh'; } , _0x5cc932['prototype']['_createMesh'] = function() { var _0x200af4 = new _0xb31206['a']() , _0x250bf4 = [] , _0x370278 = [] , _0x7e4aea = [] , _0x1354d0 = _0x47d24f['x']['Zero'](); this['_generator']['_boundingInfo'] && (_0x1354d0 = this['_generator']['_boundingInfo']['boundingBox']['centerWorld']); for (var _0x24a224 = 0x2 * Math['PI'] / this['_sectionPolygonPointsCount'], _0x47ce89 = 0x0; _0x47ce89 < this['_sectionPolygonPointsCount']; _0x47ce89++) _0x250bf4['push'](_0x1354d0['x'] + Math['cos'](_0x47ce89 * _0x24a224) * this['_diameter'], _0x1354d0['y'] + Math['sin'](_0x47ce89 * _0x24a224) * this['_diameter'], _0x1354d0['z']); for (_0x47ce89 = 0x1; _0x47ce89 <= this['_length']; _0x47ce89++) { for (var _0x5d7561 = 0x0; _0x5d7561 < this['_sectionPolygonPointsCount']; _0x5d7561++) _0x250bf4['push'](_0x1354d0['x'] + Math['cos'](_0x5d7561 * _0x24a224) * this['_diameter'], _0x1354d0['y'] + Math['sin'](_0x5d7561 * _0x24a224) * this['_diameter'], _0x1354d0['z']); var _0x2c5c90 = _0x250bf4['length'] / 0x3 - 0x2 * this['_sectionPolygonPointsCount']; for (_0x5d7561 = 0x0; _0x5d7561 < this['_sectionPolygonPointsCount'] - 0x1; _0x5d7561++) _0x7e4aea['push'](_0x2c5c90 + _0x5d7561, _0x2c5c90 + _0x5d7561 + this['_sectionPolygonPointsCount'], _0x2c5c90 + _0x5d7561 + this['_sectionPolygonPointsCount'] + 0x1), _0x7e4aea['push'](_0x2c5c90 + _0x5d7561, _0x2c5c90 + _0x5d7561 + this['_sectionPolygonPointsCount'] + 0x1, _0x2c5c90 + _0x5d7561 + 0x1); _0x7e4aea['push'](_0x2c5c90 + this['_sectionPolygonPointsCount'] - 0x1, _0x2c5c90 + this['_sectionPolygonPointsCount'] - 0x1 + this['_sectionPolygonPointsCount'], _0x2c5c90 + this['_sectionPolygonPointsCount']), _0x7e4aea['push'](_0x2c5c90 + this['_sectionPolygonPointsCount'] - 0x1, _0x2c5c90 + this['_sectionPolygonPointsCount'], _0x2c5c90); } _0xb31206['a']['ComputeNormals'](_0x250bf4, _0x7e4aea, _0x370278), _0x200af4['positions'] = _0x250bf4, _0x200af4['normals'] = _0x370278, _0x200af4['indices'] = _0x7e4aea, _0x200af4['applyToMesh'](this, !0x0), this['_autoStart'] && this['start'](); } , _0x5cc932['prototype']['start'] = function() { var _0x2ead19 = this; this['_running'] || (this['_running'] = !0x0, this['_beforeRenderObserver'] = this['getScene']()['onBeforeRenderObservable']['add'](function() { _0x2ead19['update'](); })); } , _0x5cc932['prototype']['stop'] = function() { this['_beforeRenderObserver'] && this['_running'] && (this['_running'] = !0x1, this['getScene']()['onBeforeRenderObservable']['remove'](this['_beforeRenderObserver'])); } , _0x5cc932['prototype']['update'] = function() { var _0x486150 = this['getVerticesData'](_0x4209f7['b']['PositionKind']) , _0x2d6805 = this['getVerticesData'](_0x4209f7['b']['NormalKind']) , _0x248bb7 = this['_generator']['getWorldMatrix'](); if (_0x486150 && _0x2d6805) { for (var _0x3eb86f = 0x3 * this['_sectionPolygonPointsCount']; _0x3eb86f < _0x486150['length']; _0x3eb86f++) _0x486150[_0x3eb86f - 0x3 * this['_sectionPolygonPointsCount']] = _0x486150[_0x3eb86f] - _0x2d6805[_0x3eb86f] / this['_length'] * this['_diameter']; for (_0x3eb86f = 0x3 * this['_sectionPolygonPointsCount']; _0x3eb86f < _0x2d6805['length']; _0x3eb86f++) _0x2d6805[_0x3eb86f - 0x3 * this['_sectionPolygonPointsCount']] = _0x2d6805[_0x3eb86f]; var _0x51fbe2 = _0x486150['length'] - 0x3 * this['_sectionPolygonPointsCount'] , _0x63ffca = 0x2 * Math['PI'] / this['_sectionPolygonPointsCount']; for (_0x3eb86f = 0x0; _0x3eb86f < this['_sectionPolygonPointsCount']; _0x3eb86f++) this['_sectionVectors'][_0x3eb86f]['copyFromFloats'](Math['cos'](_0x3eb86f * _0x63ffca) * this['_diameter'], Math['sin'](_0x3eb86f * _0x63ffca) * this['_diameter'], 0x0), this['_sectionNormalVectors'][_0x3eb86f]['copyFromFloats'](Math['cos'](_0x3eb86f * _0x63ffca), Math['sin'](_0x3eb86f * _0x63ffca), 0x0), _0x47d24f['x']['TransformCoordinatesToRef'](this['_sectionVectors'][_0x3eb86f], _0x248bb7, this['_sectionVectors'][_0x3eb86f]), _0x47d24f['x']['TransformNormalToRef'](this['_sectionNormalVectors'][_0x3eb86f], _0x248bb7, this['_sectionNormalVectors'][_0x3eb86f]); for (_0x3eb86f = 0x0; _0x3eb86f < this['_sectionPolygonPointsCount']; _0x3eb86f++) _0x486150[_0x51fbe2 + 0x3 * _0x3eb86f] = this['_sectionVectors'][_0x3eb86f]['x'], _0x486150[_0x51fbe2 + 0x3 * _0x3eb86f + 0x1] = this['_sectionVectors'][_0x3eb86f]['y'], _0x486150[_0x51fbe2 + 0x3 * _0x3eb86f + 0x2] = this['_sectionVectors'][_0x3eb86f]['z'], _0x2d6805[_0x51fbe2 + 0x3 * _0x3eb86f] = this['_sectionNormalVectors'][_0x3eb86f]['x'], _0x2d6805[_0x51fbe2 + 0x3 * _0x3eb86f + 0x1] = this['_sectionNormalVectors'][_0x3eb86f]['y'], _0x2d6805[_0x51fbe2 + 0x3 * _0x3eb86f + 0x2] = this['_sectionNormalVectors'][_0x3eb86f]['z']; this['updateVerticesData'](_0x4209f7['b']['PositionKind'], _0x486150, !0x0, !0x1), this['updateVerticesData'](_0x4209f7['b']['NormalKind'], _0x2d6805, !0x0, !0x1); } } , _0x5cc932['prototype']['clone'] = function(_0x1754f2, _0x335c1e) { return void 0x0 === _0x1754f2 && (_0x1754f2 = ''), new _0x5cc932(_0x1754f2,void 0x0 === _0x335c1e ? this['_generator'] : _0x335c1e,this['getScene'](),this['_diameter'],this['_length'],this['_autoStart']); } , _0x5cc932['prototype']['serialize'] = function(_0x4c4aca) { _0x3463b0['prototype']['serialize']['call'](this, _0x4c4aca); } , _0x5cc932['Parse'] = function(_0x88429c, _0x5c1a24) { return new _0x5cc932(_0x88429c['name'],_0x88429c['_generator'],_0x5c1a24,_0x88429c['_diameter'],_0x88429c['_length'],_0x88429c['_autoStart']); } , _0x5cc932; }(_0xb4719b['a']) , _0x10af20 = _0x59bd00(0x6f) , _0x1a4641 = _0x59bd00(0x48); _0xb31206['a']['CreateDisc'] = function(_0x1c63e4) { var _0x179222 = new Array() , _0x3ea4f7 = new Array() , _0x326b6a = new Array() , _0x122cef = new Array() , _0xb9c773 = _0x1c63e4['radius'] || 0.5 , _0x11811b = _0x1c63e4['tessellation'] || 0x40 , _0x374dae = _0x1c63e4['arc'] && (_0x1c63e4['arc'] <= 0x0 || _0x1c63e4['arc'] > 0x1) ? 0x1 : _0x1c63e4['arc'] || 0x1 , _0x2d7ff3 = 0x0 === _0x1c63e4['sideOrientation'] ? 0x0 : _0x1c63e4['sideOrientation'] || _0xb31206['a']['DEFAULTSIDE']; _0x179222['push'](0x0, 0x0, 0x0), _0x122cef['push'](0.5, 0.5); for (var _0xd79d07 = 0x2 * Math['PI'] * _0x374dae, _0x48e22f = _0xd79d07 / _0x11811b, _0x36bc98 = 0x0; _0x36bc98 < _0xd79d07; _0x36bc98 += _0x48e22f) { var _0x430ea1 = Math['cos'](_0x36bc98) , _0x29bfaf = Math['sin'](_0x36bc98) , _0x2a4640 = (_0x430ea1 + 0x1) / 0x2 , _0x487634 = (0x1 - _0x29bfaf) / 0x2; _0x179222['push'](_0xb9c773 * _0x430ea1, _0xb9c773 * _0x29bfaf, 0x0), _0x122cef['push'](_0x2a4640, _0x487634); } 0x1 === _0x374dae && (_0x179222['push'](_0x179222[0x3], _0x179222[0x4], _0x179222[0x5]), _0x122cef['push'](_0x122cef[0x2], _0x122cef[0x3])); for (var _0x4e206 = _0x179222['length'] / 0x3, _0x379666 = 0x1; _0x379666 < _0x4e206 - 0x1; _0x379666++) _0x3ea4f7['push'](_0x379666 + 0x1, 0x0, _0x379666); _0xb31206['a']['ComputeNormals'](_0x179222, _0x3ea4f7, _0x326b6a), _0xb31206['a']['_ComputeSides'](_0x2d7ff3, _0x179222, _0x3ea4f7, _0x326b6a, _0x122cef, _0x1c63e4['frontUVs'], _0x1c63e4['backUVs']); var _0x28dbcf = new _0xb31206['a'](); return _0x28dbcf['indices'] = _0x3ea4f7, _0x28dbcf['positions'] = _0x179222, _0x28dbcf['normals'] = _0x326b6a, _0x28dbcf['uvs'] = _0x122cef, _0x28dbcf; } , _0xb4719b['a']['CreateDisc'] = function(_0x3a22a6, _0x52c12c, _0x1836aa, _0x2cbc38, _0x480e3e, _0x4e3ef0) { void 0x0 === _0x2cbc38 && (_0x2cbc38 = null); var _0x4d8fce = { 'radius': _0x52c12c, 'tessellation': _0x1836aa, 'sideOrientation': _0x4e3ef0, 'updatable': _0x480e3e }; return _0x6e671f['CreateDisc'](_0x3a22a6, _0x4d8fce, _0x2cbc38); } ; var _0x6e671f = function() { function _0x295814() {} return _0x295814['CreateDisc'] = function(_0x5c57ed, _0x4e8918, _0xe5c1cd) { void 0x0 === _0xe5c1cd && (_0xe5c1cd = null); var _0x1e5693 = new _0xb4719b['a'](_0x5c57ed,_0xe5c1cd); return _0x4e8918['sideOrientation'] = _0xb4719b['a']['_GetDefaultSideOrientation'](_0x4e8918['sideOrientation']), _0x1e5693['_originalBuilderSideOrientation'] = _0x4e8918['sideOrientation'], _0xb31206['a']['CreateDisc'](_0x4e8918)['applyToMesh'](_0x1e5693, _0x4e8918['updatable']), _0x1e5693; } , _0x295814; }(); _0xb31206['a']['CreateTorusKnot'] = function(_0x198229) { var _0x47c899, _0x1bf153, _0x908af3 = new Array(), _0x40a155 = new Array(), _0x310459 = new Array(), _0x50afee = new Array(), _0x33f1f6 = _0x198229['radius'] || 0x2, _0x42d0de = _0x198229['tube'] || 0.5, _0x34702d = _0x198229['radialSegments'] || 0x20, _0x38a326 = _0x198229['tubularSegments'] || 0x20, _0xce64e = _0x198229['p'] || 0x2, _0x5e8201 = _0x198229['q'] || 0x3, _0x494af4 = 0x0 === _0x198229['sideOrientation'] ? 0x0 : _0x198229['sideOrientation'] || _0xb31206['a']['DEFAULTSIDE'], _0x1264c4 = function(_0x1dd15b) { var _0x51f908 = Math['cos'](_0x1dd15b) , _0x110ba0 = Math['sin'](_0x1dd15b) , _0xc8f7c2 = _0x5e8201 / _0xce64e * _0x1dd15b , _0x599676 = Math['cos'](_0xc8f7c2) , _0x1b3903 = _0x33f1f6 * (0x2 + _0x599676) * 0.5 * _0x51f908 , _0x42170c = _0x33f1f6 * (0x2 + _0x599676) * _0x110ba0 * 0.5 , _0x3347f0 = _0x33f1f6 * Math['sin'](_0xc8f7c2) * 0.5; return new _0x47d24f['x'](_0x1b3903,_0x42170c,_0x3347f0); }; for (_0x47c899 = 0x0; _0x47c899 <= _0x34702d; _0x47c899++) { var _0x1c3f5e = _0x47c899 % _0x34702d / _0x34702d * 0x2 * _0xce64e * Math['PI'] , _0x42dbb1 = _0x1264c4(_0x1c3f5e) , _0x100676 = _0x1264c4(_0x1c3f5e + 0.01) , _0x4a5969 = _0x100676['subtract'](_0x42dbb1) , _0x41bee7 = _0x100676['add'](_0x42dbb1) , _0x413017 = _0x47d24f['x']['Cross'](_0x4a5969, _0x41bee7); for (_0x41bee7 = _0x47d24f['x']['Cross'](_0x413017, _0x4a5969), _0x413017['normalize'](), _0x41bee7['normalize'](), _0x1bf153 = 0x0; _0x1bf153 < _0x38a326; _0x1bf153++) { var _0xfe3962 = _0x1bf153 % _0x38a326 / _0x38a326 * 0x2 * Math['PI'] , _0x1390f2 = -_0x42d0de * Math['cos'](_0xfe3962) , _0x45c529 = _0x42d0de * Math['sin'](_0xfe3962); _0x40a155['push'](_0x42dbb1['x'] + _0x1390f2 * _0x41bee7['x'] + _0x45c529 * _0x413017['x']), _0x40a155['push'](_0x42dbb1['y'] + _0x1390f2 * _0x41bee7['y'] + _0x45c529 * _0x413017['y']), _0x40a155['push'](_0x42dbb1['z'] + _0x1390f2 * _0x41bee7['z'] + _0x45c529 * _0x413017['z']), _0x50afee['push'](_0x47c899 / _0x34702d), _0x50afee['push'](_0x1bf153 / _0x38a326); } } for (_0x47c899 = 0x0; _0x47c899 < _0x34702d; _0x47c899++) for (_0x1bf153 = 0x0; _0x1bf153 < _0x38a326; _0x1bf153++) { var _0x543cb2 = (_0x1bf153 + 0x1) % _0x38a326 , _0x2439e2 = _0x47c899 * _0x38a326 + _0x1bf153 , _0x394b5b = (_0x47c899 + 0x1) * _0x38a326 + _0x1bf153 , _0x5db40e = (_0x47c899 + 0x1) * _0x38a326 + _0x543cb2 , _0x33bc0f = _0x47c899 * _0x38a326 + _0x543cb2; _0x908af3['push'](_0x33bc0f), _0x908af3['push'](_0x394b5b), _0x908af3['push'](_0x2439e2), _0x908af3['push'](_0x33bc0f), _0x908af3['push'](_0x5db40e), _0x908af3['push'](_0x394b5b); } _0xb31206['a']['ComputeNormals'](_0x40a155, _0x908af3, _0x310459), _0xb31206['a']['_ComputeSides'](_0x494af4, _0x40a155, _0x908af3, _0x310459, _0x50afee, _0x198229['frontUVs'], _0x198229['backUVs']); var _0x21daf7 = new _0xb31206['a'](); return _0x21daf7['indices'] = _0x908af3, _0x21daf7['positions'] = _0x40a155, _0x21daf7['normals'] = _0x310459, _0x21daf7['uvs'] = _0x50afee, _0x21daf7; } , _0xb4719b['a']['CreateTorusKnot'] = function(_0x23f562, _0x3591da, _0xce7d63, _0x52c181, _0x2cdf54, _0x4b12c1, _0x3daea9, _0x27d3ab, _0x5572ae, _0x1f1f3d) { var _0x15e489 = { 'radius': _0x3591da, 'tube': _0xce7d63, 'radialSegments': _0x52c181, 'tubularSegments': _0x2cdf54, 'p': _0x4b12c1, 'q': _0x3daea9, 'sideOrientation': _0x1f1f3d, 'updatable': _0x5572ae }; return _0x9b152c['CreateTorusKnot'](_0x23f562, _0x15e489, _0x27d3ab); } ; var _0x9b152c = function() { function _0x55ac87() {} return _0x55ac87['CreateTorusKnot'] = function(_0x9b146b, _0x12bde5, _0x2de1b4) { var _0x26fd88 = new _0xb4719b['a'](_0x9b146b,_0x2de1b4); return _0x12bde5['sideOrientation'] = _0xb4719b['a']['_GetDefaultSideOrientation'](_0x12bde5['sideOrientation']), _0x26fd88['_originalBuilderSideOrientation'] = _0x12bde5['sideOrientation'], _0xb31206['a']['CreateTorusKnot'](_0x12bde5)['applyToMesh'](_0x26fd88, _0x12bde5['updatable']), _0x26fd88; } , _0x55ac87; }() , _0x2019d1 = function(_0x28dd62) { function _0xdb81ff(_0xbaeb54, _0x15ed57) { var _0x36856e = _0x28dd62['call'](this, _0xbaeb54['x'], _0xbaeb54['y']) || this; return _0x36856e['index'] = _0x15ed57, _0x36856e; } return _0x420e5b['d'](_0xdb81ff, _0x28dd62), _0xdb81ff; }(_0x47d24f['w']) , _0x565bce = function() { function _0x28fa0d() { this['elements'] = new Array(); } return _0x28fa0d['prototype']['add'] = function(_0x2eb73f) { var _0x154212 = this , _0x285e77 = new Array(); return _0x2eb73f['forEach'](function(_0x182cf7) { if (0x0 === _0x285e77['length'] || !_0x182cf7['equalsWithEpsilon'](_0x285e77[0x0])) { var _0x2e8439 = new _0x2019d1(_0x182cf7,_0x154212['elements']['length']); _0x285e77['push'](_0x2e8439), _0x154212['elements']['push'](_0x2e8439); } }), _0x285e77; } , _0x28fa0d['prototype']['computeBounds'] = function() { var _0x1e895f = new _0x47d24f['w'](this['elements'][0x0]['x'],this['elements'][0x0]['y']) , _0x44d409 = new _0x47d24f['w'](this['elements'][0x0]['x'],this['elements'][0x0]['y']); return this['elements']['forEach'](function(_0x49b447) { _0x49b447['x'] < _0x1e895f['x'] ? _0x1e895f['x'] = _0x49b447['x'] : _0x49b447['x'] > _0x44d409['x'] && (_0x44d409['x'] = _0x49b447['x']), _0x49b447['y'] < _0x1e895f['y'] ? _0x1e895f['y'] = _0x49b447['y'] : _0x49b447['y'] > _0x44d409['y'] && (_0x44d409['y'] = _0x49b447['y']); }), { 'min': _0x1e895f, 'max': _0x44d409, 'width': _0x44d409['x'] - _0x1e895f['x'], 'height': _0x44d409['y'] - _0x1e895f['y'] }; } , _0x28fa0d; }() , _0x25ba6a = function() { function _0x4ea7a2() {} return _0x4ea7a2['Rectangle'] = function(_0x19d6c3, _0x41e435, _0x5b4434, _0x8f7f6e) { return [new _0x47d24f['w'](_0x19d6c3,_0x41e435), new _0x47d24f['w'](_0x5b4434,_0x41e435), new _0x47d24f['w'](_0x5b4434,_0x8f7f6e), new _0x47d24f['w'](_0x19d6c3,_0x8f7f6e)]; } , _0x4ea7a2['Circle'] = function(_0x4c5f44, _0x1d561c, _0x1a21e7, _0x307ee2) { void 0x0 === _0x1d561c && (_0x1d561c = 0x0), void 0x0 === _0x1a21e7 && (_0x1a21e7 = 0x0), void 0x0 === _0x307ee2 && (_0x307ee2 = 0x20); for (var _0x22bf69 = new Array(), _0x1284a3 = 0x0, _0x5cc431 = 0x2 * Math['PI'] / _0x307ee2, _0xab9be8 = 0x0; _0xab9be8 < _0x307ee2; _0xab9be8++) _0x22bf69['push'](new _0x47d24f['w'](_0x1d561c + Math['cos'](_0x1284a3) * _0x4c5f44,_0x1a21e7 + Math['sin'](_0x1284a3) * _0x4c5f44)), _0x1284a3 -= _0x5cc431; return _0x22bf69; } , _0x4ea7a2['Parse'] = function(_0x41b6f7) { var _0x4a51c8, _0x493dc3 = _0x41b6f7['split'](/[^-+eE\.\d]+/)['map'](parseFloat)['filter'](function(_0x53887f) { return !isNaN(_0x53887f); }), _0x12394e = []; for (_0x4a51c8 = 0x0; _0x4a51c8 < (0x7ffffffe & _0x493dc3['length']); _0x4a51c8 += 0x2) _0x12394e['push'](new _0x47d24f['w'](_0x493dc3[_0x4a51c8],_0x493dc3[_0x4a51c8 + 0x1])); return _0x12394e; } , _0x4ea7a2['StartingAt'] = function(_0x13821f, _0x245018) { return _0x47d24f['l']['StartingAt'](_0x13821f, _0x245018); } , _0x4ea7a2; }() , _0x534658 = function() { function _0x490d5a(_0x5ecb64, _0xc0fc3f, _0x851b19, _0x2f1a40) { var _0x354067; void 0x0 === _0x2f1a40 && (_0x2f1a40 = earcut), this['_points'] = new _0x565bce(), this['_outlinepoints'] = new _0x565bce(), this['_holes'] = new Array(), this['_epoints'] = new Array(), this['_eholes'] = new Array(), this['bjsEarcut'] = _0x2f1a40, this['_name'] = _0x5ecb64, this['_scene'] = _0x851b19 || _0x3647a9['b']['LastCreatedScene'], _0x354067 = _0xc0fc3f instanceof _0x47d24f['l'] ? _0xc0fc3f['getPoints']() : _0xc0fc3f, this['_addToepoint'](_0x354067), this['_points']['add'](_0x354067), this['_outlinepoints']['add'](_0x354067), void 0x0 === this['bjsEarcut'] && _0x3f98cb['a']['Warn']('Earcut\x20was\x20not\x20found,\x20the\x20polygon\x20will\x20not\x20be\x20built.'); } return _0x490d5a['prototype']['_addToepoint'] = function(_0x5befa2) { for (var _0x1905f9 = 0x0, _0x42de73 = _0x5befa2; _0x1905f9 < _0x42de73['length']; _0x1905f9++) { var _0x4cfa39 = _0x42de73[_0x1905f9]; this['_epoints']['push'](_0x4cfa39['x'], _0x4cfa39['y']); } } , _0x490d5a['prototype']['addHole'] = function(_0x17e303) { this['_points']['add'](_0x17e303); var _0x477ffe = new _0x565bce(); return _0x477ffe['add'](_0x17e303), this['_holes']['push'](_0x477ffe), this['_eholes']['push'](this['_epoints']['length'] / 0x2), this['_addToepoint'](_0x17e303), this; } , _0x490d5a['prototype']['build'] = function(_0x1f3964, _0x1d863c) { void 0x0 === _0x1f3964 && (_0x1f3964 = !0x1), void 0x0 === _0x1d863c && (_0x1d863c = 0x0); var _0x1c7ee9 = new _0xb4719b['a'](this['_name'],this['_scene']) , _0x272831 = this['buildVertexData'](_0x1d863c); return _0x1c7ee9['setVerticesData'](_0x4209f7['b']['PositionKind'], _0x272831['positions'], _0x1f3964), _0x1c7ee9['setVerticesData'](_0x4209f7['b']['NormalKind'], _0x272831['normals'], _0x1f3964), _0x1c7ee9['setVerticesData'](_0x4209f7['b']['UVKind'], _0x272831['uvs'], _0x1f3964), _0x1c7ee9['setIndices'](_0x272831['indices']), _0x1c7ee9; } , _0x490d5a['prototype']['buildVertexData'] = function(_0x5770bc) { var _0x591a63 = this; void 0x0 === _0x5770bc && (_0x5770bc = 0x0); var _0x5566b4 = new _0xb31206['a']() , _0x58b79b = new Array() , _0x1b45e5 = new Array() , _0xc4e070 = new Array() , _0x28bcf0 = this['_points']['computeBounds'](); this['_points']['elements']['forEach'](function(_0x403b0c) { _0x58b79b['push'](0x0, 0x1, 0x0), _0x1b45e5['push'](_0x403b0c['x'], 0x0, _0x403b0c['y']), _0xc4e070['push']((_0x403b0c['x'] - _0x28bcf0['min']['x']) / _0x28bcf0['width'], (_0x403b0c['y'] - _0x28bcf0['min']['y']) / _0x28bcf0['height']); }); for (var _0x31b5f3 = new Array(), _0x385a1a = this['bjsEarcut'](this['_epoints'], this['_eholes'], 0x2), _0x4c866a = 0x0; _0x4c866a < _0x385a1a['length']; _0x4c866a++) _0x31b5f3['push'](_0x385a1a[_0x4c866a]); if (_0x5770bc > 0x0) { var _0x4b0fd4 = _0x1b45e5['length'] / 0x3; this['_points']['elements']['forEach'](function(_0x394f9b) { _0x58b79b['push'](0x0, -0x1, 0x0), _0x1b45e5['push'](_0x394f9b['x'], -_0x5770bc, _0x394f9b['y']), _0xc4e070['push'](0x1 - (_0x394f9b['x'] - _0x28bcf0['min']['x']) / _0x28bcf0['width'], 0x1 - (_0x394f9b['y'] - _0x28bcf0['min']['y']) / _0x28bcf0['height']); }); var _0x2928b3 = _0x31b5f3['length']; for (_0x4c866a = 0x0; _0x4c866a < _0x2928b3; _0x4c866a += 0x3) { var _0x45095c = _0x31b5f3[_0x4c866a + 0x0] , _0x1796cd = _0x31b5f3[_0x4c866a + 0x1] , _0x9cba04 = _0x31b5f3[_0x4c866a + 0x2]; _0x31b5f3['push'](_0x9cba04 + _0x4b0fd4), _0x31b5f3['push'](_0x1796cd + _0x4b0fd4), _0x31b5f3['push'](_0x45095c + _0x4b0fd4); } this['addSide'](_0x1b45e5, _0x58b79b, _0xc4e070, _0x31b5f3, _0x28bcf0, this['_outlinepoints'], _0x5770bc, !0x1), this['_holes']['forEach'](function(_0x4a9cfd) { _0x591a63['addSide'](_0x1b45e5, _0x58b79b, _0xc4e070, _0x31b5f3, _0x28bcf0, _0x4a9cfd, _0x5770bc, !0x0); }); } return _0x5566b4['indices'] = _0x31b5f3, _0x5566b4['positions'] = _0x1b45e5, _0x5566b4['normals'] = _0x58b79b, _0x5566b4['uvs'] = _0xc4e070, _0x5566b4; } , _0x490d5a['prototype']['addSide'] = function(_0x2ae001, _0x1da442, _0x1164a1, _0x5155ec, _0x3e13ad, _0x1dee60, _0x4c8480, _0x3919b3) { for (var _0x10ab57 = _0x2ae001['length'] / 0x3, _0x2a1423 = 0x0, _0x5b2491 = 0x0; _0x5b2491 < _0x1dee60['elements']['length']; _0x5b2491++) { var _0x502948, _0x3e18eb = _0x1dee60['elements'][_0x5b2491]; _0x502948 = _0x5b2491 + 0x1 > _0x1dee60['elements']['length'] - 0x1 ? _0x1dee60['elements'][0x0] : _0x1dee60['elements'][_0x5b2491 + 0x1], _0x2ae001['push'](_0x3e18eb['x'], 0x0, _0x3e18eb['y']), _0x2ae001['push'](_0x3e18eb['x'], -_0x4c8480, _0x3e18eb['y']), _0x2ae001['push'](_0x502948['x'], 0x0, _0x502948['y']), _0x2ae001['push'](_0x502948['x'], -_0x4c8480, _0x502948['y']); var _0x4b23d8 = new _0x47d24f['x'](_0x3e18eb['x'],0x0,_0x3e18eb['y']) , _0x674ad7 = new _0x47d24f['x'](_0x502948['x'],0x0,_0x502948['y'])['subtract'](_0x4b23d8) , _0x49a75c = new _0x47d24f['x'](0x0,0x1,0x0) , _0x424e6f = _0x47d24f['x']['Cross'](_0x674ad7, _0x49a75c); _0x424e6f = _0x424e6f['normalize'](), _0x1164a1['push'](_0x2a1423 / _0x3e13ad['width'], 0x0), _0x1164a1['push'](_0x2a1423 / _0x3e13ad['width'], 0x1), _0x2a1423 += _0x674ad7['length'](), _0x1164a1['push'](_0x2a1423 / _0x3e13ad['width'], 0x0), _0x1164a1['push'](_0x2a1423 / _0x3e13ad['width'], 0x1), _0x3919b3 ? (_0x1da442['push'](_0x424e6f['x'], _0x424e6f['y'], _0x424e6f['z']), _0x1da442['push'](_0x424e6f['x'], _0x424e6f['y'], _0x424e6f['z']), _0x1da442['push'](_0x424e6f['x'], _0x424e6f['y'], _0x424e6f['z']), _0x1da442['push'](_0x424e6f['x'], _0x424e6f['y'], _0x424e6f['z']), _0x5155ec['push'](_0x10ab57), _0x5155ec['push'](_0x10ab57 + 0x2), _0x5155ec['push'](_0x10ab57 + 0x1), _0x5155ec['push'](_0x10ab57 + 0x1), _0x5155ec['push'](_0x10ab57 + 0x2), _0x5155ec['push'](_0x10ab57 + 0x3)) : (_0x1da442['push'](-_0x424e6f['x'], -_0x424e6f['y'], -_0x424e6f['z']), _0x1da442['push'](-_0x424e6f['x'], -_0x424e6f['y'], -_0x424e6f['z']), _0x1da442['push'](-_0x424e6f['x'], -_0x424e6f['y'], -_0x424e6f['z']), _0x1da442['push'](-_0x424e6f['x'], -_0x424e6f['y'], -_0x424e6f['z']), _0x5155ec['push'](_0x10ab57), _0x5155ec['push'](_0x10ab57 + 0x1), _0x5155ec['push'](_0x10ab57 + 0x2), _0x5155ec['push'](_0x10ab57 + 0x1), _0x5155ec['push'](_0x10ab57 + 0x3), _0x5155ec['push'](_0x10ab57 + 0x2)), _0x10ab57 += 0x4; } } , _0x490d5a; }(); _0xb31206['a']['CreatePolygon'] = function(_0xe84c21, _0x3e0de8, _0x4616dd, _0x451cd3, _0x3a2f22, _0x74f4e4) { for (var _0x3af85c = _0x4616dd || new Array(0x3), _0x9ba8f5 = _0x451cd3, _0x39ba18 = [], _0x389a36 = 0x0; _0x389a36 < 0x3; _0x389a36++) void 0x0 === _0x3af85c[_0x389a36] && (_0x3af85c[_0x389a36] = new _0x47d24f['y'](0x0,0x0,0x1,0x1)), _0x9ba8f5 && void 0x0 === _0x9ba8f5[_0x389a36] && (_0x9ba8f5[_0x389a36] = new _0x47d24f['f'](0x1,0x1,0x1,0x1)); for (var _0x4dc68b = _0xe84c21['getVerticesData'](_0x4209f7['b']['PositionKind']), _0x4ee63d = _0xe84c21['getVerticesData'](_0x4209f7['b']['NormalKind']), _0x3cac3c = _0xe84c21['getVerticesData'](_0x4209f7['b']['UVKind']), _0xafbea9 = _0xe84c21['getIndices'](), _0x3aa76e = 0x0, _0x230ac4 = 0x0, _0x54b841 = 0x0; _0x54b841 < _0x4ee63d['length']; _0x54b841 += 0x3) Math['abs'](_0x4ee63d[_0x54b841 + 0x1]) < 0.001 && (_0x230ac4 = 0x1), Math['abs'](_0x4ee63d[_0x54b841 + 0x1] - 0x1) < 0.001 && (_0x230ac4 = 0x0), Math['abs'](_0x4ee63d[_0x54b841 + 0x1] + 0x1) < 0.001 && (_0x230ac4 = 0x2), _0x3cac3c[0x2 * (_0x3aa76e = _0x54b841 / 0x3)] = (0x1 - _0x3cac3c[0x2 * _0x3aa76e]) * _0x3af85c[_0x230ac4]['x'] + _0x3cac3c[0x2 * _0x3aa76e] * _0x3af85c[_0x230ac4]['z'], _0x3cac3c[0x2 * _0x3aa76e + 0x1] = (0x1 - _0x3cac3c[0x2 * _0x3aa76e + 0x1]) * _0x3af85c[_0x230ac4]['y'] + _0x3cac3c[0x2 * _0x3aa76e + 0x1] * _0x3af85c[_0x230ac4]['w'], _0x9ba8f5 && _0x39ba18['push'](_0x9ba8f5[_0x230ac4]['r'], _0x9ba8f5[_0x230ac4]['g'], _0x9ba8f5[_0x230ac4]['b'], _0x9ba8f5[_0x230ac4]['a']); _0xb31206['a']['_ComputeSides'](_0x3e0de8, _0x4dc68b, _0xafbea9, _0x4ee63d, _0x3cac3c, _0x3a2f22, _0x74f4e4); var _0x48da04 = new _0xb31206['a'](); if (_0x48da04['indices'] = _0xafbea9, _0x48da04['positions'] = _0x4dc68b, _0x48da04['normals'] = _0x4ee63d, _0x48da04['uvs'] = _0x3cac3c, _0x9ba8f5) { var _0x280c02 = _0x3e0de8 === _0xb31206['a']['DOUBLESIDE'] ? _0x39ba18['concat'](_0x39ba18) : _0x39ba18; _0x48da04['colors'] = _0x280c02; } return _0x48da04; } , _0xb4719b['a']['CreatePolygon'] = function(_0x3da06e, _0x32f25e, _0x2f36aa, _0x791960, _0x58dbf3, _0x31cfce, _0x4f122a) { void 0x0 === _0x4f122a && (_0x4f122a = earcut); var _0x391855 = { 'shape': _0x32f25e, 'holes': _0x791960, 'updatable': _0x58dbf3, 'sideOrientation': _0x31cfce }; return _0x423287['CreatePolygon'](_0x3da06e, _0x391855, _0x2f36aa, _0x4f122a); } , _0xb4719b['a']['ExtrudePolygon'] = function(_0x29afae, _0x1d3142, _0x2f6ec1, _0x1f349d, _0x53a3b5, _0x2d9efe, _0x35a9ff, _0x5716a3) { void 0x0 === _0x5716a3 && (_0x5716a3 = earcut); var _0x424933 = { 'shape': _0x1d3142, 'holes': _0x53a3b5, 'depth': _0x2f6ec1, 'updatable': _0x2d9efe, 'sideOrientation': _0x35a9ff }; return _0x423287['ExtrudePolygon'](_0x29afae, _0x424933, _0x1f349d, _0x5716a3); } ; var _0x423287 = function() { function _0x150c36() {} return _0x150c36['CreatePolygon'] = function(_0x5e2f67, _0x51b465, _0x12c3d7, _0x4219c2) { void 0x0 === _0x12c3d7 && (_0x12c3d7 = null), void 0x0 === _0x4219c2 && (_0x4219c2 = earcut), _0x51b465['sideOrientation'] = _0xb4719b['a']['_GetDefaultSideOrientation'](_0x51b465['sideOrientation']); for (var _0x51d1ef = _0x51b465['shape'], _0x2babdd = _0x51b465['holes'] || [], _0x1e0a5c = _0x51b465['depth'] || 0x0, _0x1140bc = [], _0x5379fc = [], _0x544891 = 0x0; _0x544891 < _0x51d1ef['length']; _0x544891++) _0x1140bc[_0x544891] = new _0x47d24f['w'](_0x51d1ef[_0x544891]['x'],_0x51d1ef[_0x544891]['z']); _0x1140bc[0x0]['equalsWithEpsilon'](_0x1140bc[_0x1140bc['length'] - 0x1], 1e-8) && _0x1140bc['pop'](); for (var _0x5e867e = new _0x534658(_0x5e2f67,_0x1140bc,_0x12c3d7 || _0x48707b['a']['LastCreatedScene'],_0x4219c2), _0x3cc402 = 0x0; _0x3cc402 < _0x2babdd['length']; _0x3cc402++) { _0x5379fc = []; for (var _0x43a7d9 = 0x0; _0x43a7d9 < _0x2babdd[_0x3cc402]['length']; _0x43a7d9++) _0x5379fc['push'](new _0x47d24f['w'](_0x2babdd[_0x3cc402][_0x43a7d9]['x'],_0x2babdd[_0x3cc402][_0x43a7d9]['z'])); _0x5e867e['addHole'](_0x5379fc); } var _0x4db294 = _0x5e867e['build'](_0x51b465['updatable'], _0x1e0a5c); return _0x4db294['_originalBuilderSideOrientation'] = _0x51b465['sideOrientation'], _0xb31206['a']['CreatePolygon'](_0x4db294, _0x51b465['sideOrientation'], _0x51b465['faceUV'], _0x51b465['faceColors'], _0x51b465['frontUVs'], _0x51b465['backUVs'])['applyToMesh'](_0x4db294, _0x51b465['updatable']), _0x4db294; } , _0x150c36['ExtrudePolygon'] = function(_0x55409f, _0x577b21, _0xf0aa4b, _0x5bda73) { return void 0x0 === _0xf0aa4b && (_0xf0aa4b = null), void 0x0 === _0x5bda73 && (_0x5bda73 = earcut), _0x150c36['CreatePolygon'](_0x55409f, _0x577b21, _0xf0aa4b, _0x5bda73); } , _0x150c36; }(); _0xb4719b['a']['CreateLathe'] = function(_0x1f961b, _0x36a6f4, _0x2a0e64, _0x5f2109, _0x4d5ba3, _0x59269c, _0x221c72) { var _0x2183b6 = { 'shape': _0x36a6f4, 'radius': _0x2a0e64, 'tessellation': _0x5f2109, 'sideOrientation': _0x221c72, 'updatable': _0x59269c }; return _0x18a35c['CreateLathe'](_0x1f961b, _0x2183b6, _0x4d5ba3); } ; var _0x18a35c = function() { function _0x599040() {} return _0x599040['CreateLathe'] = function(_0x5f30e3, _0x3be8e9, _0x240388) { void 0x0 === _0x240388 && (_0x240388 = null); var _0x4900d5, _0x25803b = _0x3be8e9['arc'] ? _0x3be8e9['arc'] <= 0x0 || _0x3be8e9['arc'] > 0x1 ? 0x1 : _0x3be8e9['arc'] : 0x1, _0x1ca0da = void 0x0 === _0x3be8e9['closed'] || _0x3be8e9['closed'], _0x10d88a = _0x3be8e9['shape'], _0x5c5b23 = _0x3be8e9['radius'] || 0x1, _0xece780 = _0x3be8e9['tessellation'] || 0x40, _0x3abf34 = _0x3be8e9['clip'] || 0x0, _0x624580 = _0x3be8e9['updatable'], _0x301a2e = _0xb4719b['a']['_GetDefaultSideOrientation'](_0x3be8e9['sideOrientation']), _0x271320 = _0x3be8e9['cap'] || _0xb4719b['a']['NO_CAP'], _0x2e3126 = 0x2 * Math['PI'], _0x1848e9 = new Array(), _0x2c6fd2 = _0x3be8e9['invertUV'] || !0x1, _0x555192 = 0x0, _0x4e2296 = 0x0, _0x2c2dbf = _0x2e3126 / _0xece780 * _0x25803b, _0x2197f7 = new Array(); for (_0x555192 = 0x0; _0x555192 <= _0xece780 - _0x3abf34; _0x555192++) { _0x2197f7 = []; for (_0x271320 != _0xb4719b['a']['CAP_START'] && _0x271320 != _0xb4719b['a']['CAP_ALL'] || (_0x2197f7['push'](new _0x47d24f['x'](0x0,_0x10d88a[0x0]['y'],0x0)), _0x2197f7['push'](new _0x47d24f['x'](Math['cos'](_0x555192 * _0x2c2dbf) * _0x10d88a[0x0]['x'] * _0x5c5b23,_0x10d88a[0x0]['y'],Math['sin'](_0x555192 * _0x2c2dbf) * _0x10d88a[0x0]['x'] * _0x5c5b23))), _0x4e2296 = 0x0; _0x4e2296 < _0x10d88a['length']; _0x4e2296++) _0x4900d5 = new _0x47d24f['x'](Math['cos'](_0x555192 * _0x2c2dbf) * _0x10d88a[_0x4e2296]['x'] * _0x5c5b23,_0x10d88a[_0x4e2296]['y'],Math['sin'](_0x555192 * _0x2c2dbf) * _0x10d88a[_0x4e2296]['x'] * _0x5c5b23), _0x2197f7['push'](_0x4900d5); _0x271320 != _0xb4719b['a']['CAP_END'] && _0x271320 != _0xb4719b['a']['CAP_ALL'] || (_0x2197f7['push'](new _0x47d24f['x'](Math['cos'](_0x555192 * _0x2c2dbf) * _0x10d88a[_0x10d88a['length'] - 0x1]['x'] * _0x5c5b23,_0x10d88a[_0x10d88a['length'] - 0x1]['y'],Math['sin'](_0x555192 * _0x2c2dbf) * _0x10d88a[_0x10d88a['length'] - 0x1]['x'] * _0x5c5b23)), _0x2197f7['push'](new _0x47d24f['x'](0x0,_0x10d88a[_0x10d88a['length'] - 0x1]['y'],0x0))), _0x1848e9['push'](_0x2197f7); } return _0x129ee8['CreateRibbon'](_0x5f30e3, { 'pathArray': _0x1848e9, 'closeArray': _0x1ca0da, 'sideOrientation': _0x301a2e, 'updatable': _0x624580, 'invertUV': _0x2c6fd2, 'frontUVs': _0x3be8e9['frontUVs'], 'backUVs': _0x3be8e9['backUVs'] }, _0x240388); } , _0x599040; }(); _0xb4719b['a']['CreateTube'] = function(_0x4ac5d4, _0x503be4, _0x37304c, _0x355732, _0x54f512, _0x25d270, _0x2befd4, _0x1d64a7, _0x1e3c6d, _0x54240c) { var _0x154590 = { 'path': _0x503be4, 'radius': _0x37304c, 'tessellation': _0x355732, 'radiusFunction': _0x54f512, 'arc': 0x1, 'cap': _0x25d270, 'updatable': _0x1d64a7, 'sideOrientation': _0x1e3c6d, 'instance': _0x54240c }; return _0x137ea7['CreateTube'](_0x4ac5d4, _0x154590, _0x2befd4); } ; var _0x137ea7 = function() { function _0x503fc0() {} return _0x503fc0['CreateTube'] = function(_0x585f08, _0x58a41f, _0x1f9aa1) { void 0x0 === _0x1f9aa1 && (_0x1f9aa1 = null); var _0x11b3ed = _0x58a41f['path'] , _0x5135c4 = _0x58a41f['instance'] , _0x455033 = 0x1; void 0x0 !== _0x58a41f['radius'] ? _0x455033 = _0x58a41f['radius'] : _0x5135c4 && (_0x455033 = _0x5135c4['_creationDataStorage']['radius']); var _0x17fc16 = _0x58a41f['tessellation'] || 0x40 , _0xabbf1b = _0x58a41f['radiusFunction'] || null , _0x246e57 = _0x58a41f['cap'] || _0xb4719b['a']['NO_CAP'] , _0x2de34d = _0x58a41f['invertUV'] || !0x1 , _0x10d1c4 = _0x58a41f['updatable'] , _0x248c30 = _0xb4719b['a']['_GetDefaultSideOrientation'](_0x58a41f['sideOrientation']); _0x58a41f['arc'] = _0x58a41f['arc'] && (_0x58a41f['arc'] <= 0x0 || _0x58a41f['arc'] > 0x1) ? 0x1 : _0x58a41f['arc'] || 0x1; var _0x48fc1b, _0xe4254b, _0x3c9e37 = function(_0x2f4a41, _0xbc30b1, _0x320ace, _0x423e52, _0x4e298f, _0x1599d6, _0x2040df, _0x3e59fa) { for (var _0x292e03, _0x50d86a, _0x120119, _0x37969f, _0x51cbe2 = _0xbc30b1['getTangents'](), _0x58ceb7 = _0xbc30b1['getNormals'](), _0x2a71fa = _0xbc30b1['getDistances'](), _0x2e960f = 0x2 * Math['PI'] / _0x4e298f * _0x3e59fa, _0x53d9a4 = _0x1599d6 || function() { return _0x423e52; } , _0x35b0a7 = _0x47d24f['t']['Matrix'][0x0], _0xa488f0 = _0x2040df === _0xb4719b['a']['NO_CAP'] || _0x2040df === _0xb4719b['a']['CAP_END'] ? 0x0 : 0x2, _0x19637b = 0x0; _0x19637b < _0x2f4a41['length']; _0x19637b++) { _0x50d86a = _0x53d9a4(_0x19637b, _0x2a71fa[_0x19637b]), _0x292e03 = Array(), _0x120119 = _0x58ceb7[_0x19637b]; for (var _0x2f3d66 = 0x0; _0x2f3d66 < _0x4e298f; _0x2f3d66++) _0x47d24f['j']['RotationAxisToRef'](_0x51cbe2[_0x19637b], _0x2e960f * _0x2f3d66, _0x35b0a7), _0x37969f = _0x292e03[_0x2f3d66] ? _0x292e03[_0x2f3d66] : _0x47d24f['x']['Zero'](), _0x47d24f['x']['TransformCoordinatesToRef'](_0x120119, _0x35b0a7, _0x37969f), _0x37969f['scaleInPlace'](_0x50d86a)['addInPlace'](_0x2f4a41[_0x19637b]), _0x292e03[_0x2f3d66] = _0x37969f; _0x320ace[_0xa488f0] = _0x292e03, _0xa488f0++; } var _0x3bc573 = function(_0x2d9719, _0x5083fd) { for (var _0x207bc1 = Array(), _0x56383c = 0x0; _0x56383c < _0x2d9719; _0x56383c++) _0x207bc1['push'](_0x2f4a41[_0x5083fd]); return _0x207bc1; }; switch (_0x2040df) { case _0xb4719b['a']['NO_CAP']: break; case _0xb4719b['a']['CAP_START']: _0x320ace[0x0] = _0x3bc573(_0x4e298f, 0x0), _0x320ace[0x1] = _0x320ace[0x2]['slice'](0x0); break; case _0xb4719b['a']['CAP_END']: _0x320ace[_0xa488f0] = _0x320ace[_0xa488f0 - 0x1]['slice'](0x0), _0x320ace[_0xa488f0 + 0x1] = _0x3bc573(_0x4e298f, _0x2f4a41['length'] - 0x1); break; case _0xb4719b['a']['CAP_ALL']: _0x320ace[0x0] = _0x3bc573(_0x4e298f, 0x0), _0x320ace[0x1] = _0x320ace[0x2]['slice'](0x0), _0x320ace[_0xa488f0] = _0x320ace[_0xa488f0 - 0x1]['slice'](0x0), _0x320ace[_0xa488f0 + 0x1] = _0x3bc573(_0x4e298f, _0x2f4a41['length'] - 0x1); } return _0x320ace; }; if (_0x5135c4) { var _0x257417 = _0x5135c4['_creationDataStorage'] , _0x438f25 = _0x58a41f['arc'] || _0x257417['arc']; return _0xe4254b = _0x3c9e37(_0x11b3ed, _0x48fc1b = _0x257417['path3D']['update'](_0x11b3ed), _0x257417['pathArray'], _0x455033, _0x257417['tessellation'], _0xabbf1b, _0x257417['cap'], _0x438f25), _0x5135c4 = _0x129ee8['CreateRibbon']('', { 'pathArray': _0xe4254b, 'instance': _0x5135c4 }), _0x257417['path3D'] = _0x48fc1b, _0x257417['pathArray'] = _0xe4254b, _0x257417['arc'] = _0x438f25, _0x257417['radius'] = _0x455033, _0x5135c4; } _0xe4254b = _0x3c9e37(_0x11b3ed, _0x48fc1b = new _0x47d24f['m'](_0x11b3ed), new Array(), _0x455033, _0x17fc16, _0xabbf1b, _0x246e57 = _0x246e57 < 0x0 || _0x246e57 > 0x3 ? 0x0 : _0x246e57, _0x58a41f['arc']); var _0x354cef = _0x129ee8['CreateRibbon'](_0x585f08, { 'pathArray': _0xe4254b, 'closePath': !0x0, 'closeArray': !0x1, 'updatable': _0x10d1c4, 'sideOrientation': _0x248c30, 'invertUV': _0x2de34d, 'frontUVs': _0x58a41f['frontUVs'], 'backUVs': _0x58a41f['backUVs'] }, _0x1f9aa1); return _0x354cef['_creationDataStorage']['pathArray'] = _0xe4254b, _0x354cef['_creationDataStorage']['path3D'] = _0x48fc1b, _0x354cef['_creationDataStorage']['tessellation'] = _0x17fc16, _0x354cef['_creationDataStorage']['cap'] = _0x246e57, _0x354cef['_creationDataStorage']['arc'] = _0x58a41f['arc'], _0x354cef['_creationDataStorage']['radius'] = _0x455033, _0x354cef; } , _0x503fc0; }(); _0xb31206['a']['CreateIcoSphere'] = function(_0x5c17d1) { var _0x3761e3, _0xcfa92 = _0x5c17d1['sideOrientation'] || _0xb31206['a']['DEFAULTSIDE'], _0x141117 = _0x5c17d1['radius'] || 0x1, _0x492144 = void 0x0 === _0x5c17d1['flat'] || _0x5c17d1['flat'], _0x1fdbc5 = _0x5c17d1['subdivisions'] || 0x4, _0x398d05 = _0x5c17d1['radiusX'] || _0x141117, _0x6ce981 = _0x5c17d1['radiusY'] || _0x141117, _0x32640f = _0x5c17d1['radiusZ'] || _0x141117, _0x213898 = (0x1 + Math['sqrt'](0x5)) / 0x2, _0x43a569 = [-0x1, _0x213898, -0x0, 0x1, _0x213898, 0x0, -0x1, -_0x213898, 0x0, 0x1, -_0x213898, 0x0, 0x0, -0x1, -_0x213898, 0x0, 0x1, -_0x213898, 0x0, -0x1, _0x213898, 0x0, 0x1, _0x213898, _0x213898, 0x0, 0x1, _0x213898, 0x0, -0x1, -_0x213898, 0x0, 0x1, -_0x213898, 0x0, -0x1], _0x114210 = [0x0, 0xb, 0x5, 0x0, 0x5, 0x1, 0x0, 0x1, 0x7, 0x0, 0x7, 0xa, 0xc, 0x16, 0x17, 0x1, 0x5, 0x14, 0x5, 0xb, 0x4, 0x17, 0x16, 0xd, 0x16, 0x12, 0x6, 0x7, 0x1, 0x8, 0xe, 0x15, 0x4, 0xe, 0x4, 0x2, 0x10, 0xd, 0x6, 0xf, 0x6, 0x13, 0x3, 0x8, 0x9, 0x4, 0x15, 0x5, 0xd, 0x11, 0x17, 0x6, 0xd, 0x16, 0x13, 0x6, 0x12, 0x9, 0x8, 0x1], _0x3b4d9c = [0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0x0, 0x2, 0x3, 0x3, 0x3, 0x4, 0x7, 0x8, 0x9, 0x9, 0xa, 0xb], _0x304a45 = [0x5, 0x1, 0x3, 0x1, 0x6, 0x4, 0x0, 0x0, 0x5, 0x3, 0x4, 0x2, 0x2, 0x2, 0x4, 0x0, 0x2, 0x0, 0x1, 0x1, 0x6, 0x0, 0x6, 0x2, 0x0, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x1, 0x4, 0x2, 0x4, 0x4, 0x0, 0x2, 0x1, 0x1, 0x2, 0x2, 0x3, 0x3, 0x1, 0x3, 0x2, 0x4], _0xdf8927 = [0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, 0x0], _0x1f8d30 = new Array(), _0x3fd01d = new Array(), _0x3249a4 = new Array(), _0x443204 = new Array(), _0x4cabc4 = 0x0, _0x556be3 = new Array(0x3), _0x111ad7 = new Array(0x3); for (_0x3761e3 = 0x0; _0x3761e3 < 0x3; _0x3761e3++) _0x556be3[_0x3761e3] = _0x47d24f['x']['Zero'](), _0x111ad7[_0x3761e3] = _0x47d24f['w']['Zero'](); for (var _0x32fd53 = 0x0; _0x32fd53 < 0x14; _0x32fd53++) { for (_0x3761e3 = 0x0; _0x3761e3 < 0x3; _0x3761e3++) { var _0x557862 = _0x114210[0x3 * _0x32fd53 + _0x3761e3]; _0x556be3[_0x3761e3]['copyFromFloats'](_0x43a569[0x3 * _0x3b4d9c[_0x557862]], _0x43a569[0x3 * _0x3b4d9c[_0x557862] + 0x1], _0x43a569[0x3 * _0x3b4d9c[_0x557862] + 0x2]), _0x556be3[_0x3761e3]['normalize']()['scaleInPlace'](_0x141117), _0x111ad7[_0x3761e3]['copyFromFloats'](_0x304a45[0x2 * _0x557862] * (0x8a / 0x400) + 0x3c / 0x400 + _0xdf8927[_0x32fd53] * (-0x28 / 0x400), _0x304a45[0x2 * _0x557862 + 0x1] * (0xef / 0x400) + 0x1a / 0x400 + _0xdf8927[_0x32fd53] * (0x14 / 0x400)); } for (var _0x1b4b5e = function(_0x50358f, _0x2cd894, _0x15ea61, _0x521557) { var _0x5a4b33, _0x4af83d = _0x47d24f['x']['Lerp'](_0x556be3[0x0], _0x556be3[0x2], _0x2cd894 / _0x1fdbc5), _0x1df961 = _0x47d24f['x']['Lerp'](_0x556be3[0x1], _0x556be3[0x2], _0x2cd894 / _0x1fdbc5), _0x4ba9ee = _0x1fdbc5 === _0x2cd894 ? _0x556be3[0x2] : _0x47d24f['x']['Lerp'](_0x4af83d, _0x1df961, _0x50358f / (_0x1fdbc5 - _0x2cd894)); if (_0x4ba9ee['normalize'](), _0x492144) { var _0x348ca3 = _0x47d24f['x']['Lerp'](_0x556be3[0x0], _0x556be3[0x2], _0x521557 / _0x1fdbc5) , _0x23d3fe = _0x47d24f['x']['Lerp'](_0x556be3[0x1], _0x556be3[0x2], _0x521557 / _0x1fdbc5); _0x5a4b33 = _0x47d24f['x']['Lerp'](_0x348ca3, _0x23d3fe, _0x15ea61 / (_0x1fdbc5 - _0x521557)); } else _0x5a4b33 = new _0x47d24f['x'](_0x4ba9ee['x'],_0x4ba9ee['y'],_0x4ba9ee['z']); _0x5a4b33['x'] /= _0x398d05, _0x5a4b33['y'] /= _0x6ce981, _0x5a4b33['z'] /= _0x32640f, _0x5a4b33['normalize'](); var _0xdcd3a = _0x47d24f['w']['Lerp'](_0x111ad7[0x0], _0x111ad7[0x2], _0x2cd894 / _0x1fdbc5) , _0x2b13d3 = _0x47d24f['w']['Lerp'](_0x111ad7[0x1], _0x111ad7[0x2], _0x2cd894 / _0x1fdbc5) , _0x571e49 = _0x1fdbc5 === _0x2cd894 ? _0x111ad7[0x2] : _0x47d24f['w']['Lerp'](_0xdcd3a, _0x2b13d3, _0x50358f / (_0x1fdbc5 - _0x2cd894)); _0x3fd01d['push'](_0x4ba9ee['x'] * _0x398d05, _0x4ba9ee['y'] * _0x6ce981, _0x4ba9ee['z'] * _0x32640f), _0x3249a4['push'](_0x5a4b33['x'], _0x5a4b33['y'], _0x5a4b33['z']), _0x443204['push'](_0x571e49['x'], _0x571e49['y']), _0x1f8d30['push'](_0x4cabc4), _0x4cabc4++; }, _0x3f3963 = 0x0; _0x3f3963 < _0x1fdbc5; _0x3f3963++) for (var _0x57a105 = 0x0; _0x57a105 + _0x3f3963 < _0x1fdbc5; _0x57a105++) _0x1b4b5e(_0x57a105, _0x3f3963, _0x57a105 + 0x1 / 0x3, _0x3f3963 + 0x1 / 0x3), _0x1b4b5e(_0x57a105 + 0x1, _0x3f3963, _0x57a105 + 0x1 / 0x3, _0x3f3963 + 0x1 / 0x3), _0x1b4b5e(_0x57a105, _0x3f3963 + 0x1, _0x57a105 + 0x1 / 0x3, _0x3f3963 + 0x1 / 0x3), _0x57a105 + _0x3f3963 + 0x1 < _0x1fdbc5 && (_0x1b4b5e(_0x57a105 + 0x1, _0x3f3963, _0x57a105 + 0x2 / 0x3, _0x3f3963 + 0x2 / 0x3), _0x1b4b5e(_0x57a105 + 0x1, _0x3f3963 + 0x1, _0x57a105 + 0x2 / 0x3, _0x3f3963 + 0x2 / 0x3), _0x1b4b5e(_0x57a105, _0x3f3963 + 0x1, _0x57a105 + 0x2 / 0x3, _0x3f3963 + 0x2 / 0x3)); } _0xb31206['a']['_ComputeSides'](_0xcfa92, _0x3fd01d, _0x1f8d30, _0x3249a4, _0x443204, _0x5c17d1['frontUVs'], _0x5c17d1['backUVs']); var _0x3b5e03 = new _0xb31206['a'](); return _0x3b5e03['indices'] = _0x1f8d30, _0x3b5e03['positions'] = _0x3fd01d, _0x3b5e03['normals'] = _0x3249a4, _0x3b5e03['uvs'] = _0x443204, _0x3b5e03; } , _0xb4719b['a']['CreateIcoSphere'] = function(_0x550dc5, _0x1bca8c, _0x18c2f6) { return _0x244f2e['CreateIcoSphere'](_0x550dc5, _0x1bca8c, _0x18c2f6); } ; var _0x244f2e = function() { function _0x26a298() {} return _0x26a298['CreateIcoSphere'] = function(_0x13d98f, _0x399ad1, _0x3d0a61) { void 0x0 === _0x3d0a61 && (_0x3d0a61 = null); var _0x1d87e6 = new _0xb4719b['a'](_0x13d98f,_0x3d0a61); return _0x399ad1['sideOrientation'] = _0xb4719b['a']['_GetDefaultSideOrientation'](_0x399ad1['sideOrientation']), _0x1d87e6['_originalBuilderSideOrientation'] = _0x399ad1['sideOrientation'], _0xb31206['a']['CreateIcoSphere'](_0x399ad1)['applyToMesh'](_0x1d87e6, _0x399ad1['updatable']), _0x1d87e6; } , _0x26a298; }(); _0xb4719b['a']['CreateDecal'] = function(_0x31191b, _0x37972d, _0x259361, _0x3c5d8f, _0xba59f0, _0x5997f0) { var _0x2385a6 = { 'position': _0x259361, 'normal': _0x3c5d8f, 'size': _0xba59f0, 'angle': _0x5997f0 }; return _0x5ea59d['CreateDecal'](_0x31191b, _0x37972d, _0x2385a6); } ; var _0x475cda, _0x5ea59d = function() { function _0x231a7c() {} return _0x231a7c['CreateDecal'] = function(_0x2ce2ec, _0x178ef5, _0x56ca74) { var _0xe850d5 = _0x178ef5['getIndices']() , _0x5e3cf4 = _0x178ef5['getVerticesData'](_0x4209f7['b']['PositionKind']) , _0x5b77a0 = _0x178ef5['getVerticesData'](_0x4209f7['b']['NormalKind']) , _0x1f58b5 = _0x56ca74['position'] || _0x47d24f['x']['Zero']() , _0x461b5b = _0x56ca74['normal'] || _0x47d24f['x']['Up']() , _0x68ecb6 = _0x56ca74['size'] || _0x47d24f['x']['One']() , _0x1efcbc = _0x56ca74['angle'] || 0x0; if (!_0x461b5b) { var _0x59dc2 = new _0x47d24f['x'](0x0,0x0,0x1) , _0x1cd0c3 = _0x178ef5['getScene']()['activeCamera'] , _0x1b81b2 = _0x47d24f['x']['TransformCoordinates'](_0x59dc2, _0x1cd0c3['getWorldMatrix']()); _0x461b5b = _0x1cd0c3['globalPosition']['subtract'](_0x1b81b2); } var _0x19b0c4 = -Math['atan2'](_0x461b5b['z'], _0x461b5b['x']) - Math['PI'] / 0x2 , _0x153911 = Math['sqrt'](_0x461b5b['x'] * _0x461b5b['x'] + _0x461b5b['z'] * _0x461b5b['z']) , _0x251ec1 = Math['atan2'](_0x461b5b['y'], _0x153911) , _0x20165e = _0x47d24f['j']['RotationYawPitchRoll'](_0x19b0c4, _0x251ec1, _0x1efcbc)['multiply'](_0x47d24f['j']['Translation'](_0x1f58b5['x'], _0x1f58b5['y'], _0x1f58b5['z'])) , _0x2e425e = _0x47d24f['j']['Invert'](_0x20165e) , _0x52744e = _0x178ef5['getWorldMatrix']()['multiply'](_0x2e425e) , _0x22cf71 = new _0xb31206['a'](); _0x22cf71['indices'] = [], _0x22cf71['positions'] = [], _0x22cf71['normals'] = [], _0x22cf71['uvs'] = []; for (var _0x1eaa1d = 0x0, _0x1bbd41 = function(_0x49a6c8) { var _0x5f07c4 = new _0x47d24f['p'](); if (!_0xe850d5 || !_0x5e3cf4 || !_0x5b77a0) return _0x5f07c4; var _0x4a7490 = _0xe850d5[_0x49a6c8]; return _0x5f07c4['position'] = new _0x47d24f['x'](_0x5e3cf4[0x3 * _0x4a7490],_0x5e3cf4[0x3 * _0x4a7490 + 0x1],_0x5e3cf4[0x3 * _0x4a7490 + 0x2]), _0x5f07c4['position'] = _0x47d24f['x']['TransformCoordinates'](_0x5f07c4['position'], _0x52744e), _0x5f07c4['normal'] = new _0x47d24f['x'](_0x5b77a0[0x3 * _0x4a7490],_0x5b77a0[0x3 * _0x4a7490 + 0x1],_0x5b77a0[0x3 * _0x4a7490 + 0x2]), _0x5f07c4['normal'] = _0x47d24f['x']['TransformNormal'](_0x5f07c4['normal'], _0x52744e), _0x5f07c4; }, _0x3a44b3 = function(_0x227156, _0x3cadcd) { if (0x0 === _0x227156['length']) return _0x227156; for (var _0x4d8599 = 0.5 * Math['abs'](_0x47d24f['x']['Dot'](_0x68ecb6, _0x3cadcd)), _0x3a806e = function(_0x447c43, _0x353e27) { var _0x45f0f6 = _0x47d24f['x']['GetClipFactor'](_0x447c43['position'], _0x353e27['position'], _0x3cadcd, _0x4d8599); return new _0x47d24f['p'](_0x47d24f['x']['Lerp'](_0x447c43['position'], _0x353e27['position'], _0x45f0f6),_0x47d24f['x']['Lerp'](_0x447c43['normal'], _0x353e27['normal'], _0x45f0f6)); }, _0x405130 = new Array(), _0x1ba1d8 = 0x0; _0x1ba1d8 < _0x227156['length']; _0x1ba1d8 += 0x3) { var _0x4d152c, _0x4d736d, _0x5168a5, _0x2965f1 = null, _0x798867 = null, _0x2cfaf8 = null, _0x2a0278 = null; switch (((_0x4d152c = _0x47d24f['x']['Dot'](_0x227156[_0x1ba1d8]['position'], _0x3cadcd) - _0x4d8599 > 0x0) ? 0x1 : 0x0) + ((_0x4d736d = _0x47d24f['x']['Dot'](_0x227156[_0x1ba1d8 + 0x1]['position'], _0x3cadcd) - _0x4d8599 > 0x0) ? 0x1 : 0x0) + ((_0x5168a5 = _0x47d24f['x']['Dot'](_0x227156[_0x1ba1d8 + 0x2]['position'], _0x3cadcd) - _0x4d8599 > 0x0) ? 0x1 : 0x0)) { case 0x0: _0x405130['push'](_0x227156[_0x1ba1d8]), _0x405130['push'](_0x227156[_0x1ba1d8 + 0x1]), _0x405130['push'](_0x227156[_0x1ba1d8 + 0x2]); break; case 0x1: if (_0x4d152c && (_0x2965f1 = _0x227156[_0x1ba1d8 + 0x1], _0x798867 = _0x227156[_0x1ba1d8 + 0x2], _0x2cfaf8 = _0x3a806e(_0x227156[_0x1ba1d8], _0x2965f1), _0x2a0278 = _0x3a806e(_0x227156[_0x1ba1d8], _0x798867)), _0x4d736d) { _0x2965f1 = _0x227156[_0x1ba1d8], _0x798867 = _0x227156[_0x1ba1d8 + 0x2], _0x2cfaf8 = _0x3a806e(_0x227156[_0x1ba1d8 + 0x1], _0x2965f1), _0x2a0278 = _0x3a806e(_0x227156[_0x1ba1d8 + 0x1], _0x798867), _0x405130['push'](_0x2cfaf8), _0x405130['push'](_0x798867['clone']()), _0x405130['push'](_0x2965f1['clone']()), _0x405130['push'](_0x798867['clone']()), _0x405130['push'](_0x2cfaf8['clone']()), _0x405130['push'](_0x2a0278); break; } _0x5168a5 && (_0x2965f1 = _0x227156[_0x1ba1d8], _0x798867 = _0x227156[_0x1ba1d8 + 0x1], _0x2cfaf8 = _0x3a806e(_0x227156[_0x1ba1d8 + 0x2], _0x2965f1), _0x2a0278 = _0x3a806e(_0x227156[_0x1ba1d8 + 0x2], _0x798867)), _0x2965f1 && _0x798867 && _0x2cfaf8 && _0x2a0278 && (_0x405130['push'](_0x2965f1['clone']()), _0x405130['push'](_0x798867['clone']()), _0x405130['push'](_0x2cfaf8), _0x405130['push'](_0x2a0278), _0x405130['push'](_0x2cfaf8['clone']()), _0x405130['push'](_0x798867['clone']())); break; case 0x2: _0x4d152c || (_0x798867 = _0x3a806e(_0x2965f1 = _0x227156[_0x1ba1d8]['clone'](), _0x227156[_0x1ba1d8 + 0x1]), _0x2cfaf8 = _0x3a806e(_0x2965f1, _0x227156[_0x1ba1d8 + 0x2]), _0x405130['push'](_0x2965f1), _0x405130['push'](_0x798867), _0x405130['push'](_0x2cfaf8)), _0x4d736d || (_0x798867 = _0x3a806e(_0x2965f1 = _0x227156[_0x1ba1d8 + 0x1]['clone'](), _0x227156[_0x1ba1d8 + 0x2]), _0x2cfaf8 = _0x3a806e(_0x2965f1, _0x227156[_0x1ba1d8]), _0x405130['push'](_0x2965f1), _0x405130['push'](_0x798867), _0x405130['push'](_0x2cfaf8)), _0x5168a5 || (_0x798867 = _0x3a806e(_0x2965f1 = _0x227156[_0x1ba1d8 + 0x2]['clone'](), _0x227156[_0x1ba1d8]), _0x2cfaf8 = _0x3a806e(_0x2965f1, _0x227156[_0x1ba1d8 + 0x1]), _0x405130['push'](_0x2965f1), _0x405130['push'](_0x798867), _0x405130['push'](_0x2cfaf8)); } } return _0x405130; }, _0xd842be = 0x0; _0xd842be < _0xe850d5['length']; _0xd842be += 0x3) { var _0x433757 = new Array(); if (_0x433757['push'](_0x1bbd41(_0xd842be)), _0x433757['push'](_0x1bbd41(_0xd842be + 0x1)), _0x433757['push'](_0x1bbd41(_0xd842be + 0x2)), _0x433757 = _0x3a44b3(_0x433757, new _0x47d24f['x'](0x1,0x0,0x0)), _0x433757 = _0x3a44b3(_0x433757, new _0x47d24f['x'](-0x1,0x0,0x0)), _0x433757 = _0x3a44b3(_0x433757, new _0x47d24f['x'](0x0,0x1,0x0)), _0x433757 = _0x3a44b3(_0x433757, new _0x47d24f['x'](0x0,-0x1,0x0)), _0x433757 = _0x3a44b3(_0x433757, new _0x47d24f['x'](0x0,0x0,0x1)), 0x0 !== (_0x433757 = _0x3a44b3(_0x433757, new _0x47d24f['x'](0x0,0x0,-0x1)))['length']) for (var _0x3974ba = 0x0; _0x3974ba < _0x433757['length']; _0x3974ba++) { var _0x2349e0 = _0x433757[_0x3974ba]; _0x22cf71['indices']['push'](_0x1eaa1d), _0x2349e0['position']['toArray'](_0x22cf71['positions'], 0x3 * _0x1eaa1d), _0x2349e0['normal']['toArray'](_0x22cf71['normals'], 0x3 * _0x1eaa1d), _0x22cf71['uvs']['push'](0.5 + _0x2349e0['position']['x'] / _0x68ecb6['x']), _0x22cf71['uvs']['push'](0.5 + _0x2349e0['position']['y'] / _0x68ecb6['y']), _0x1eaa1d++; } } var _0x5afcfd = new _0xb4719b['a'](_0x2ce2ec,_0x178ef5['getScene']()); return _0x22cf71['applyToMesh'](_0x5afcfd), _0x5afcfd['position'] = _0x1f58b5['clone'](), _0x5afcfd['rotation'] = new _0x47d24f['x'](_0x251ec1,_0x19b0c4,_0x1efcbc), _0x5afcfd; } , _0x231a7c; }(), _0x54f521 = function() { function _0x32cc40() {} return _0x32cc40['CreateBox'] = function(_0x2383fc, _0x9d5920, _0x25e34d) { return void 0x0 === _0x25e34d && (_0x25e34d = null), _0x401528['a']['CreateBox'](_0x2383fc, _0x9d5920, _0x25e34d); } , _0x32cc40['CreateSphere'] = function(_0x5141f8, _0x24a232, _0x137d68) { return void 0x0 === _0x137d68 && (_0x137d68 = null), _0x523a20['a']['CreateSphere'](_0x5141f8, _0x24a232, _0x137d68); } , _0x32cc40['CreateDisc'] = function(_0x5d6800, _0xafd6fe, _0x136c9b) { return void 0x0 === _0x136c9b && (_0x136c9b = null), _0x6e671f['CreateDisc'](_0x5d6800, _0xafd6fe, _0x136c9b); } , _0x32cc40['CreateIcoSphere'] = function(_0x25f676, _0x2a6bae, _0x1a9000) { return void 0x0 === _0x1a9000 && (_0x1a9000 = null), _0x244f2e['CreateIcoSphere'](_0x25f676, _0x2a6bae, _0x1a9000); } , _0x32cc40['CreateRibbon'] = function(_0x5b220e, _0x47ae4e, _0x59a431) { return void 0x0 === _0x59a431 && (_0x59a431 = null), _0x129ee8['CreateRibbon'](_0x5b220e, _0x47ae4e, _0x59a431); } , _0x32cc40['CreateCylinder'] = function(_0x24623a, _0x27c166, _0x17dde3) { return void 0x0 === _0x17dde3 && (_0x17dde3 = null), _0x1e5ba3['a']['CreateCylinder'](_0x24623a, _0x27c166, _0x17dde3); } , _0x32cc40['CreateTorus'] = function(_0x312a26, _0x314fcd, _0x1e8f45) { return void 0x0 === _0x1e8f45 && (_0x1e8f45 = null), _0x211acf['CreateTorus'](_0x312a26, _0x314fcd, _0x1e8f45); } , _0x32cc40['CreateTorusKnot'] = function(_0x5d4500, _0x2701e9, _0x3c0b2d) { return void 0x0 === _0x3c0b2d && (_0x3c0b2d = null), _0x9b152c['CreateTorusKnot'](_0x5d4500, _0x2701e9, _0x3c0b2d); } , _0x32cc40['CreateLineSystem'] = function(_0x96627c, _0x1a5588, _0x30f573) { return _0x4c2fa7['a']['CreateLineSystem'](_0x96627c, _0x1a5588, _0x30f573); } , _0x32cc40['CreateLines'] = function(_0x1e5ad5, _0x1ce22d, _0x18c3a0) { return void 0x0 === _0x18c3a0 && (_0x18c3a0 = null), _0x4c2fa7['a']['CreateLines'](_0x1e5ad5, _0x1ce22d, _0x18c3a0); } , _0x32cc40['CreateDashedLines'] = function(_0x23f503, _0x9639db, _0x300062) { return void 0x0 === _0x300062 && (_0x300062 = null), _0x4c2fa7['a']['CreateDashedLines'](_0x23f503, _0x9639db, _0x300062); } , _0x32cc40['ExtrudeShape'] = function(_0x30edc5, _0x4420cb, _0x4e371d) { return void 0x0 === _0x4e371d && (_0x4e371d = null), _0x39250a['ExtrudeShape'](_0x30edc5, _0x4420cb, _0x4e371d); } , _0x32cc40['ExtrudeShapeCustom'] = function(_0x10a368, _0x3e6a0a, _0x35dbab) { return void 0x0 === _0x35dbab && (_0x35dbab = null), _0x39250a['ExtrudeShapeCustom'](_0x10a368, _0x3e6a0a, _0x35dbab); } , _0x32cc40['CreateLathe'] = function(_0xb9340a, _0x40c348, _0x4e3341) { return void 0x0 === _0x4e3341 && (_0x4e3341 = null), _0x18a35c['CreateLathe'](_0xb9340a, _0x40c348, _0x4e3341); } , _0x32cc40['CreatePlane'] = function(_0x55efa6, _0x2cc6b2, _0x39ffc6) { return void 0x0 === _0x39ffc6 && (_0x39ffc6 = null), _0x404635['a']['CreatePlane'](_0x55efa6, _0x2cc6b2, _0x39ffc6); } , _0x32cc40['CreateGround'] = function(_0x28ffc4, _0x52cdcd, _0x23090c) { return void 0x0 === _0x23090c && (_0x23090c = null), _0x88163d['CreateGround'](_0x28ffc4, _0x52cdcd, _0x23090c); } , _0x32cc40['CreateTiledGround'] = function(_0x413956, _0x3d232e, _0x1798c9) { return void 0x0 === _0x1798c9 && (_0x1798c9 = null), _0x88163d['CreateTiledGround'](_0x413956, _0x3d232e, _0x1798c9); } , _0x32cc40['CreateGroundFromHeightMap'] = function(_0x3c87a8, _0x1ca340, _0x3f0029, _0xa51104) { return void 0x0 === _0xa51104 && (_0xa51104 = null), _0x88163d['CreateGroundFromHeightMap'](_0x3c87a8, _0x1ca340, _0x3f0029, _0xa51104); } , _0x32cc40['CreatePolygon'] = function(_0x177309, _0x4323d3, _0x117c25, _0x1ebfa9) { return void 0x0 === _0x117c25 && (_0x117c25 = null), void 0x0 === _0x1ebfa9 && (_0x1ebfa9 = earcut), _0x423287['CreatePolygon'](_0x177309, _0x4323d3, _0x117c25, _0x1ebfa9); } , _0x32cc40['ExtrudePolygon'] = function(_0x3eb348, _0x8f7770, _0x36c9d3, _0x855a15) { return void 0x0 === _0x36c9d3 && (_0x36c9d3 = null), void 0x0 === _0x855a15 && (_0x855a15 = earcut), _0x423287['ExtrudePolygon'](_0x3eb348, _0x8f7770, _0x36c9d3, _0x855a15); } , _0x32cc40['CreateTube'] = function(_0x29a54d, _0x5d2738, _0x4bc001) { return void 0x0 === _0x4bc001 && (_0x4bc001 = null), _0x137ea7['CreateTube'](_0x29a54d, _0x5d2738, _0x4bc001); } , _0x32cc40['CreatePolyhedron'] = function(_0x3b8e59, _0x33b686, _0x578756) { return void 0x0 === _0x578756 && (_0x578756 = null), _0x230c05['CreatePolyhedron'](_0x3b8e59, _0x33b686, _0x578756); } , _0x32cc40['CreateDecal'] = function(_0x3ea7ef, _0x503833, _0x2db2a8) { return _0x5ea59d['CreateDecal'](_0x3ea7ef, _0x503833, _0x2db2a8); } , _0x32cc40; }(), _0x2aaf95 = function() { return function(_0x53fdd3, _0x2ad39d, _0x4f0c0b) { this['quality'] = _0x53fdd3, this['distance'] = _0x2ad39d, this['optimizeMesh'] = _0x4f0c0b; } ; }(), _0x157d40 = function() { function _0x2b6255() { this['running'] = !0x1, this['_simplificationArray'] = []; } return _0x2b6255['prototype']['addTask'] = function(_0x354d57) { this['_simplificationArray']['push'](_0x354d57); } , _0x2b6255['prototype']['executeNext'] = function() { var _0x198864 = this['_simplificationArray']['pop'](); _0x198864 ? (this['running'] = !0x0, this['runSimplification'](_0x198864)) : this['running'] = !0x1; } , _0x2b6255['prototype']['runSimplification'] = function(_0x3018e2) { var _0x79809c = this; if (_0x3018e2['parallelProcessing']) _0x3018e2['settings']['forEach'](function(_0x765019) { _0x79809c['getSimplifier'](_0x3018e2)['simplify'](_0x765019, function(_0x242ef0) { _0x3018e2['mesh']['addLODLevel'](_0x765019['distance'], _0x242ef0), _0x242ef0['isVisible'] = !0x0, _0x765019['quality'] === _0x3018e2['settings'][_0x3018e2['settings']['length'] - 0x1]['quality'] && _0x3018e2['successCallback'] && _0x3018e2['successCallback'](), _0x79809c['executeNext'](); }); }); else { var _0x41e725 = this['getSimplifier'](_0x3018e2); _0x1eb50e['a']['Run'](_0x3018e2['settings']['length'], function(_0x22e96b) { var _0x4f93ab, _0x139d55; _0x4f93ab = _0x3018e2['settings'][_0x22e96b['index']], _0x139d55 = function() { _0x22e96b['executeNext'](); } , _0x41e725['simplify'](_0x4f93ab, function(_0x559ab1) { _0x3018e2['mesh']['addLODLevel'](_0x4f93ab['distance'], _0x559ab1), _0x559ab1['isVisible'] = !0x0, _0x139d55(); }); }, function() { _0x3018e2['successCallback'] && _0x3018e2['successCallback'](), _0x79809c['executeNext'](); }); } } , _0x2b6255['prototype']['getSimplifier'] = function(_0x15d623) { switch (_0x15d623['simplificationType']) { case _0x475cda['QUADRATIC']: default: return new _0x379afc(_0x15d623['mesh']); } } , _0x2b6255; }(); !function(_0x20b45d) { _0x20b45d[_0x20b45d['QUADRATIC'] = 0x0] = 'QUADRATIC'; }(_0x475cda || (_0x475cda = {})); var _0x2b245d = function() { return function(_0x32f860) { this['vertices'] = _0x32f860, this['error'] = new Array(0x4), this['deleted'] = !0x1, this['isDirty'] = !0x1, this['deletePending'] = !0x1, this['borderFactor'] = 0x0; } ; }() , _0x6b92cf = function() { function _0x5c3ce3(_0x285f6f, _0x3949cc) { this['position'] = _0x285f6f, this['id'] = _0x3949cc, this['isBorder'] = !0x0, this['q'] = new _0x316560(), this['triangleCount'] = 0x0, this['triangleStart'] = 0x0, this['originalOffsets'] = []; } return _0x5c3ce3['prototype']['updatePosition'] = function(_0x549ad2) { this['position']['copyFrom'](_0x549ad2); } , _0x5c3ce3; }() , _0x316560 = function() { function _0x5306eb(_0x37d52b) { this['data'] = new Array(0xa); for (var _0x2e1929 = 0x0; _0x2e1929 < 0xa; ++_0x2e1929) _0x37d52b && _0x37d52b[_0x2e1929] ? this['data'][_0x2e1929] = _0x37d52b[_0x2e1929] : this['data'][_0x2e1929] = 0x0; } return _0x5306eb['prototype']['det'] = function(_0x1078ff, _0x1ebab1, _0x48e3c9, _0x23c399, _0x2f9107, _0x2eaab8, _0x400aff, _0x4428fa, _0x29a583) { return this['data'][_0x1078ff] * this['data'][_0x2f9107] * this['data'][_0x29a583] + this['data'][_0x48e3c9] * this['data'][_0x23c399] * this['data'][_0x4428fa] + this['data'][_0x1ebab1] * this['data'][_0x2eaab8] * this['data'][_0x400aff] - this['data'][_0x48e3c9] * this['data'][_0x2f9107] * this['data'][_0x400aff] - this['data'][_0x1078ff] * this['data'][_0x2eaab8] * this['data'][_0x4428fa] - this['data'][_0x1ebab1] * this['data'][_0x23c399] * this['data'][_0x29a583]; } , _0x5306eb['prototype']['addInPlace'] = function(_0x49c225) { for (var _0x1a90e2 = 0x0; _0x1a90e2 < 0xa; ++_0x1a90e2) this['data'][_0x1a90e2] += _0x49c225['data'][_0x1a90e2]; } , _0x5306eb['prototype']['addArrayInPlace'] = function(_0x268fff) { for (var _0x518a21 = 0x0; _0x518a21 < 0xa; ++_0x518a21) this['data'][_0x518a21] += _0x268fff[_0x518a21]; } , _0x5306eb['prototype']['add'] = function(_0x2ddf94) { for (var _0x195a44 = new _0x5306eb(), _0x487238 = 0x0; _0x487238 < 0xa; ++_0x487238) _0x195a44['data'][_0x487238] = this['data'][_0x487238] + _0x2ddf94['data'][_0x487238]; return _0x195a44; } , _0x5306eb['FromData'] = function(_0xe43024, _0x3514c8, _0x258333, _0x21bfdd) { return new _0x5306eb(_0x5306eb['DataFromNumbers'](_0xe43024, _0x3514c8, _0x258333, _0x21bfdd)); } , _0x5306eb['DataFromNumbers'] = function(_0x1a1336, _0x9e333e, _0x1df895, _0x209a66) { return [_0x1a1336 * _0x1a1336, _0x1a1336 * _0x9e333e, _0x1a1336 * _0x1df895, _0x1a1336 * _0x209a66, _0x9e333e * _0x9e333e, _0x9e333e * _0x1df895, _0x9e333e * _0x209a66, _0x1df895 * _0x1df895, _0x1df895 * _0x209a66, _0x209a66 * _0x209a66]; } , _0x5306eb; }() , _0x27bf92 = function() { return function(_0x5336b8, _0x3eb6e0) { this['vertexId'] = _0x5336b8, this['triangleId'] = _0x3eb6e0; } ; }() , _0x379afc = function() { function _0x11fa4b(_0x1ed585) { this['_mesh'] = _0x1ed585, this['syncIterations'] = 0x1388, this['aggressiveness'] = 0x7, this['decimationIterations'] = 0x64, this['boundingBoxEpsilon'] = _0x47d24f['h']; } return _0x11fa4b['prototype']['simplify'] = function(_0x855a9a, _0x40f18f) { var _0x39103b = this; this['initDecimatedMesh'](), _0x1eb50e['a']['Run'](this['_mesh']['subMeshes']['length'], function(_0x2385a0) { _0x39103b['initWithMesh'](_0x2385a0['index'], function() { _0x39103b['runDecimation'](_0x855a9a, _0x2385a0['index'], function() { _0x2385a0['executeNext'](); }); }, _0x855a9a['optimizeMesh']); }, function() { setTimeout(function() { _0x40f18f(_0x39103b['_reconstructedMesh']); }, 0x0); }); } , _0x11fa4b['prototype']['runDecimation'] = function(_0x27e6b7, _0x31870e, _0x112bd8) { var _0x55e99a = this , _0x188b53 = ~~(this['triangles']['length'] * _0x27e6b7['quality']) , _0x5c6bd1 = 0x0 , _0x485776 = this['triangles']['length']; _0x1eb50e['a']['Run'](this['decimationIterations'], function(_0xe2d322) { var _0x917d57, _0x6ae55a; _0x485776 - _0x5c6bd1 <= _0x188b53 ? _0xe2d322['breakLoop']() : (_0x917d57 = _0xe2d322['index'], _0x6ae55a = function() { _0xe2d322['executeNext'](); } , setTimeout(function() { _0x917d57 % 0x5 == 0x0 && _0x55e99a['updateMesh'](0x0 === _0x917d57); for (var _0x25b01b = 0x0; _0x25b01b < _0x55e99a['triangles']['length']; ++_0x25b01b) _0x55e99a['triangles'][_0x25b01b]['isDirty'] = !0x1; var _0x33e7e0 = 1e-9 * Math['pow'](_0x917d57 + 0x3, _0x55e99a['aggressiveness']); _0x1eb50e['a']['SyncAsyncForLoop'](_0x55e99a['triangles']['length'], _0x55e99a['syncIterations'], function(_0x24e55f) { var _0x41e947 = ~~((_0x55e99a['triangles']['length'] / 0x2 + _0x24e55f) % _0x55e99a['triangles']['length']) , _0x29bacd = _0x55e99a['triangles'][_0x41e947]; if (_0x29bacd && !(_0x29bacd['error'][0x3] > _0x33e7e0 || _0x29bacd['deleted'] || _0x29bacd['isDirty'])) for (var _0x259e1f = 0x0; _0x259e1f < 0x3; ++_0x259e1f) if (_0x29bacd['error'][_0x259e1f] < _0x33e7e0) { var _0x534ffe = [] , _0x476539 = [] , _0x360769 = _0x29bacd['vertices'][_0x259e1f] , _0x1b130e = _0x29bacd['vertices'][(_0x259e1f + 0x1) % 0x3]; if (_0x360769['isBorder'] || _0x1b130e['isBorder']) continue; var _0x27693e = _0x47d24f['x']['Zero'](); _0x55e99a['calculateError'](_0x360769, _0x1b130e, _0x27693e); var _0x2541ad = new Array(); if (_0x55e99a['isFlipped'](_0x360769, _0x1b130e, _0x27693e, _0x534ffe, _0x2541ad)) continue; if (_0x55e99a['isFlipped'](_0x1b130e, _0x360769, _0x27693e, _0x476539, _0x2541ad)) continue; if (_0x534ffe['indexOf'](!0x0) < 0x0 || _0x476539['indexOf'](!0x0) < 0x0) continue; var _0x82a566 = new Array(); if (_0x2541ad['forEach'](function(_0x5f3559) { -0x1 === _0x82a566['indexOf'](_0x5f3559) && (_0x5f3559['deletePending'] = !0x0, _0x82a566['push'](_0x5f3559)); }), _0x82a566['length'] % 0x2 != 0x0) continue; _0x360769['q'] = _0x1b130e['q']['add'](_0x360769['q']), _0x360769['updatePosition'](_0x27693e); var _0x2324fa = _0x55e99a['references']['length']; _0x5c6bd1 = _0x55e99a['updateTriangles'](_0x360769, _0x360769, _0x534ffe, _0x5c6bd1), _0x5c6bd1 = _0x55e99a['updateTriangles'](_0x360769, _0x1b130e, _0x476539, _0x5c6bd1); var _0x3bd3ca = _0x55e99a['references']['length'] - _0x2324fa; if (_0x3bd3ca <= _0x360769['triangleCount']) { if (_0x3bd3ca) for (var _0x556064 = 0x0; _0x556064 < _0x3bd3ca; _0x556064++) _0x55e99a['references'][_0x360769['triangleStart'] + _0x556064] = _0x55e99a['references'][_0x2324fa + _0x556064]; } else _0x360769['triangleStart'] = _0x2324fa; _0x360769['triangleCount'] = _0x3bd3ca; break; } }, _0x6ae55a, function() { return _0x485776 - _0x5c6bd1 <= _0x188b53; }); }, 0x0)); }, function() { setTimeout(function() { _0x55e99a['reconstructMesh'](_0x31870e), _0x112bd8(); }, 0x0); }); } , _0x11fa4b['prototype']['initWithMesh'] = function(_0x428824, _0xbcec25, _0x240e4d) { var _0x18b0aa = this; this['vertices'] = [], this['triangles'] = []; var _0x429bd5 = this['_mesh']['getVerticesData'](_0x4209f7['b']['PositionKind']) , _0x2df5c1 = this['_mesh']['getIndices']() , _0x5d1ea3 = this['_mesh']['subMeshes'][_0x428824] , _0x272cd0 = [] , _0x48c7e9 = _0x5d1ea3['verticesCount']; _0x1eb50e['a']['SyncAsyncForLoop'](_0x48c7e9, this['syncIterations'] / 0x4 >> 0x0, function(_0x5b5db5) { if (_0x429bd5) { var _0xa24cc4 = _0x5b5db5 + _0x5d1ea3['verticesStart'] , _0x4c7e43 = _0x47d24f['x']['FromArray'](_0x429bd5, 0x3 * _0xa24cc4) , _0x553a0d = function(_0x1ecefb) { if (_0x240e4d) for (var _0x4181ca = 0x0; _0x4181ca < _0x18b0aa['vertices']['length']; ++_0x4181ca) if (_0x18b0aa['vertices'][_0x4181ca]['position']['equals'](_0x1ecefb)) return _0x18b0aa['vertices'][_0x4181ca]; return null; }(_0x4c7e43) || new _0x6b92cf(_0x4c7e43,_0x18b0aa['vertices']['length']); _0x553a0d['originalOffsets']['push'](_0xa24cc4), _0x553a0d['id'] === _0x18b0aa['vertices']['length'] && _0x18b0aa['vertices']['push'](_0x553a0d), _0x272cd0['push'](_0x553a0d['id']); } }, function() { _0x1eb50e['a']['SyncAsyncForLoop'](_0x5d1ea3['indexCount'] / 0x3, _0x18b0aa['syncIterations'], function(_0x22b734) { if (_0x2df5c1) { var _0x18aed3 = 0x3 * (_0x5d1ea3['indexStart'] / 0x3 + _0x22b734) , _0x4a4a72 = _0x2df5c1[_0x18aed3 + 0x0] , _0x26a9f4 = _0x2df5c1[_0x18aed3 + 0x1] , _0x25280c = _0x2df5c1[_0x18aed3 + 0x2] , _0x4f8158 = _0x18b0aa['vertices'][_0x272cd0[_0x4a4a72 - _0x5d1ea3['verticesStart']]] , _0x40b7f4 = _0x18b0aa['vertices'][_0x272cd0[_0x26a9f4 - _0x5d1ea3['verticesStart']]] , _0x65c7cf = _0x18b0aa['vertices'][_0x272cd0[_0x25280c - _0x5d1ea3['verticesStart']]] , _0x49b498 = new _0x2b245d([_0x4f8158, _0x40b7f4, _0x65c7cf]); _0x49b498['originalOffset'] = _0x18aed3, _0x18b0aa['triangles']['push'](_0x49b498); } }, function() { _0x18b0aa['init'](_0xbcec25); }); }); } , _0x11fa4b['prototype']['init'] = function(_0x1ec3fe) { var _0x24f66e = this; _0x1eb50e['a']['SyncAsyncForLoop'](this['triangles']['length'], this['syncIterations'], function(_0x2e7855) { var _0xeb352f = _0x24f66e['triangles'][_0x2e7855]; _0xeb352f['normal'] = _0x47d24f['x']['Cross'](_0xeb352f['vertices'][0x1]['position']['subtract'](_0xeb352f['vertices'][0x0]['position']), _0xeb352f['vertices'][0x2]['position']['subtract'](_0xeb352f['vertices'][0x0]['position']))['normalize'](); for (var _0x2e4a5d = 0x0; _0x2e4a5d < 0x3; _0x2e4a5d++) _0xeb352f['vertices'][_0x2e4a5d]['q']['addArrayInPlace'](_0x316560['DataFromNumbers'](_0xeb352f['normal']['x'], _0xeb352f['normal']['y'], _0xeb352f['normal']['z'], -_0x47d24f['x']['Dot'](_0xeb352f['normal'], _0xeb352f['vertices'][0x0]['position']))); }, function() { _0x1eb50e['a']['SyncAsyncForLoop'](_0x24f66e['triangles']['length'], _0x24f66e['syncIterations'], function(_0x1f479f) { for (var _0x3b5c61 = _0x24f66e['triangles'][_0x1f479f], _0x473ca5 = 0x0; _0x473ca5 < 0x3; ++_0x473ca5) _0x3b5c61['error'][_0x473ca5] = _0x24f66e['calculateError'](_0x3b5c61['vertices'][_0x473ca5], _0x3b5c61['vertices'][(_0x473ca5 + 0x1) % 0x3]); _0x3b5c61['error'][0x3] = Math['min'](_0x3b5c61['error'][0x0], _0x3b5c61['error'][0x1], _0x3b5c61['error'][0x2]); }, function() { _0x1ec3fe(); }); }); } , _0x11fa4b['prototype']['reconstructMesh'] = function(_0x4b1a81) { var _0x5b8f12, _0x219b77, _0x37b6b0, _0x5a1d6b = []; for (_0x5b8f12 = 0x0; _0x5b8f12 < this['vertices']['length']; ++_0x5b8f12) this['vertices'][_0x5b8f12]['triangleCount'] = 0x0; for (_0x5b8f12 = 0x0; _0x5b8f12 < this['triangles']['length']; ++_0x5b8f12) if (!this['triangles'][_0x5b8f12]['deleted']) { for (_0x219b77 = this['triangles'][_0x5b8f12], _0x37b6b0 = 0x0; _0x37b6b0 < 0x3; ++_0x37b6b0) _0x219b77['vertices'][_0x37b6b0]['triangleCount'] = 0x1; _0x5a1d6b['push'](_0x219b77); } var _0x368474 = this['_reconstructedMesh']['getVerticesData'](_0x4209f7['b']['PositionKind']) || [] , _0x276400 = this['_reconstructedMesh']['getVerticesData'](_0x4209f7['b']['NormalKind']) || [] , _0x382789 = this['_reconstructedMesh']['getVerticesData'](_0x4209f7['b']['UVKind']) || [] , _0x211784 = this['_reconstructedMesh']['getVerticesData'](_0x4209f7['b']['ColorKind']) || [] , _0x4d7237 = this['_mesh']['getVerticesData'](_0x4209f7['b']['NormalKind']) , _0x59d40d = this['_mesh']['getVerticesData'](_0x4209f7['b']['UVKind']) , _0x9168af = this['_mesh']['getVerticesData'](_0x4209f7['b']['ColorKind']) , _0x3d65ef = 0x0; for (_0x5b8f12 = 0x0; _0x5b8f12 < this['vertices']['length']; ++_0x5b8f12) { var _0x35a12a = this['vertices'][_0x5b8f12]; _0x35a12a['id'] = _0x3d65ef, _0x35a12a['triangleCount'] && _0x35a12a['originalOffsets']['forEach'](function(_0x6103ee) { _0x4d7237 && (_0x368474['push'](_0x35a12a['position']['x']), _0x368474['push'](_0x35a12a['position']['y']), _0x368474['push'](_0x35a12a['position']['z']), _0x276400['push'](_0x4d7237[0x3 * _0x6103ee]), _0x276400['push'](_0x4d7237[0x3 * _0x6103ee + 0x1]), _0x276400['push'](_0x4d7237[0x3 * _0x6103ee + 0x2]), _0x59d40d && _0x59d40d['length'] && (_0x382789['push'](_0x59d40d[0x2 * _0x6103ee]), _0x382789['push'](_0x59d40d[0x2 * _0x6103ee + 0x1])), _0x9168af && _0x9168af['length'] && (_0x211784['push'](_0x9168af[0x4 * _0x6103ee]), _0x211784['push'](_0x9168af[0x4 * _0x6103ee + 0x1]), _0x211784['push'](_0x9168af[0x4 * _0x6103ee + 0x2]), _0x211784['push'](_0x9168af[0x4 * _0x6103ee + 0x3])), ++_0x3d65ef); }); } var _0x5ec495 = this['_reconstructedMesh']['getTotalIndices']() , _0xcccb31 = this['_reconstructedMesh']['getTotalVertices']() , _0x444e06 = this['_reconstructedMesh']['subMeshes']; this['_reconstructedMesh']['subMeshes'] = []; var _0xa44844 = this['_reconstructedMesh']['getIndices']() , _0x347a0d = this['_mesh']['getIndices'](); for (_0x5b8f12 = 0x0; _0x5b8f12 < _0x5a1d6b['length']; ++_0x5b8f12) _0x219b77 = _0x5a1d6b[_0x5b8f12], [0x0, 0x1, 0x2]['forEach'](function(_0x47d493) { var _0x1c0e26 = _0x347a0d[_0x219b77['originalOffset'] + _0x47d493] , _0x19136e = _0x219b77['vertices'][_0x47d493]['originalOffsets']['indexOf'](_0x1c0e26); _0x19136e < 0x0 && (_0x19136e = 0x0), _0xa44844['push'](_0x219b77['vertices'][_0x47d493]['id'] + _0x19136e + _0xcccb31); }); this['_reconstructedMesh']['setIndices'](_0xa44844), this['_reconstructedMesh']['setVerticesData'](_0x4209f7['b']['PositionKind'], _0x368474), this['_reconstructedMesh']['setVerticesData'](_0x4209f7['b']['NormalKind'], _0x276400), _0x382789['length'] > 0x0 && this['_reconstructedMesh']['setVerticesData'](_0x4209f7['b']['UVKind'], _0x382789), _0x211784['length'] > 0x0 && this['_reconstructedMesh']['setVerticesData'](_0x4209f7['b']['ColorKind'], _0x211784); var _0x258d04 = this['_mesh']['subMeshes'][_0x4b1a81]; _0x4b1a81 > 0x0 && (this['_reconstructedMesh']['subMeshes'] = [], _0x444e06['forEach'](function(_0x9a933f) { _0x4db406['b']['AddToMesh'](_0x9a933f['materialIndex'], _0x9a933f['verticesStart'], _0x9a933f['verticesCount'], _0x9a933f['indexStart'], _0x9a933f['indexCount'], _0x9a933f['getMesh']()); }), _0x4db406['b']['AddToMesh'](_0x258d04['materialIndex'], _0xcccb31, _0x3d65ef, _0x5ec495, 0x3 * _0x5a1d6b['length'], this['_reconstructedMesh'])); } , _0x11fa4b['prototype']['initDecimatedMesh'] = function() { this['_reconstructedMesh'] = new _0xb4719b['a'](this['_mesh']['name'] + 'Decimated',this['_mesh']['getScene']()), this['_reconstructedMesh']['material'] = this['_mesh']['material'], this['_reconstructedMesh']['parent'] = this['_mesh']['parent'], this['_reconstructedMesh']['isVisible'] = !0x1, this['_reconstructedMesh']['renderingGroupId'] = this['_mesh']['renderingGroupId']; } , _0x11fa4b['prototype']['isFlipped'] = function(_0x5e9553, _0x437fac, _0x5244b2, _0x27daca, _0x4e384c) { for (var _0xfbb183 = 0x0; _0xfbb183 < _0x5e9553['triangleCount']; ++_0xfbb183) { var _0x335d77 = this['triangles'][this['references'][_0x5e9553['triangleStart'] + _0xfbb183]['triangleId']]; if (!_0x335d77['deleted']) { var _0x3cadfb = this['references'][_0x5e9553['triangleStart'] + _0xfbb183]['vertexId'] , _0xef9b43 = _0x335d77['vertices'][(_0x3cadfb + 0x1) % 0x3] , _0x16b518 = _0x335d77['vertices'][(_0x3cadfb + 0x2) % 0x3]; if (_0xef9b43 !== _0x437fac && _0x16b518 !== _0x437fac) { var _0x53fb23 = _0xef9b43['position']['subtract'](_0x5244b2); _0x53fb23 = _0x53fb23['normalize'](); var _0x1c600a = _0x16b518['position']['subtract'](_0x5244b2); if (_0x1c600a = _0x1c600a['normalize'](), Math['abs'](_0x47d24f['x']['Dot'](_0x53fb23, _0x1c600a)) > 0.999) return !0x0; var _0x292999 = _0x47d24f['x']['Cross'](_0x53fb23, _0x1c600a)['normalize'](); if (_0x27daca[_0xfbb183] = !0x1, _0x47d24f['x']['Dot'](_0x292999, _0x335d77['normal']) < 0.2) return !0x0; } else _0x27daca[_0xfbb183] = !0x0, _0x4e384c['push'](_0x335d77); } } return !0x1; } , _0x11fa4b['prototype']['updateTriangles'] = function(_0x10d3b4, _0x23cefa, _0x53658e, _0x3a1118) { for (var _0x30bcae = _0x3a1118, _0x1a68e2 = 0x0; _0x1a68e2 < _0x23cefa['triangleCount']; ++_0x1a68e2) { var _0x353df7 = this['references'][_0x23cefa['triangleStart'] + _0x1a68e2] , _0xcd4d7a = this['triangles'][_0x353df7['triangleId']]; _0xcd4d7a['deleted'] || (_0x53658e[_0x1a68e2] && _0xcd4d7a['deletePending'] ? (_0xcd4d7a['deleted'] = !0x0, _0x30bcae++) : (_0xcd4d7a['vertices'][_0x353df7['vertexId']] = _0x10d3b4, _0xcd4d7a['isDirty'] = !0x0, _0xcd4d7a['error'][0x0] = this['calculateError'](_0xcd4d7a['vertices'][0x0], _0xcd4d7a['vertices'][0x1]) + _0xcd4d7a['borderFactor'] / 0x2, _0xcd4d7a['error'][0x1] = this['calculateError'](_0xcd4d7a['vertices'][0x1], _0xcd4d7a['vertices'][0x2]) + _0xcd4d7a['borderFactor'] / 0x2, _0xcd4d7a['error'][0x2] = this['calculateError'](_0xcd4d7a['vertices'][0x2], _0xcd4d7a['vertices'][0x0]) + _0xcd4d7a['borderFactor'] / 0x2, _0xcd4d7a['error'][0x3] = Math['min'](_0xcd4d7a['error'][0x0], _0xcd4d7a['error'][0x1], _0xcd4d7a['error'][0x2]), this['references']['push'](_0x353df7))); } return _0x30bcae; } , _0x11fa4b['prototype']['identifyBorder'] = function() { for (var _0x22c21e = 0x0; _0x22c21e < this['vertices']['length']; ++_0x22c21e) { var _0xe8d334, _0x444579 = [], _0x4d02ac = [], _0x3a106c = this['vertices'][_0x22c21e]; for (_0xe8d334 = 0x0; _0xe8d334 < _0x3a106c['triangleCount']; ++_0xe8d334) for (var _0x5aa63e = this['triangles'][this['references'][_0x3a106c['triangleStart'] + _0xe8d334]['triangleId']], _0x47daa3 = 0x0; _0x47daa3 < 0x3; _0x47daa3++) { for (var _0x56bdfe = 0x0, _0x18fc1b = _0x5aa63e['vertices'][_0x47daa3]; _0x56bdfe < _0x444579['length'] && _0x4d02ac[_0x56bdfe] !== _0x18fc1b['id']; ) ++_0x56bdfe; _0x56bdfe === _0x444579['length'] ? (_0x444579['push'](0x1), _0x4d02ac['push'](_0x18fc1b['id'])) : _0x444579[_0x56bdfe]++; } for (_0xe8d334 = 0x0; _0xe8d334 < _0x444579['length']; ++_0xe8d334) 0x1 === _0x444579[_0xe8d334] ? this['vertices'][_0x4d02ac[_0xe8d334]]['isBorder'] = !0x0 : this['vertices'][_0x4d02ac[_0xe8d334]]['isBorder'] = !0x1; } } , _0x11fa4b['prototype']['updateMesh'] = function(_0x20e9a5) { var _0x3bb546, _0x5d6b6b, _0x2f3998, _0x564e0c; if (void 0x0 === _0x20e9a5 && (_0x20e9a5 = !0x1), !_0x20e9a5) { var _0x21aa61 = []; for (_0x3bb546 = 0x0; _0x3bb546 < this['triangles']['length']; ++_0x3bb546) this['triangles'][_0x3bb546]['deleted'] || _0x21aa61['push'](this['triangles'][_0x3bb546]); this['triangles'] = _0x21aa61; } for (_0x3bb546 = 0x0; _0x3bb546 < this['vertices']['length']; ++_0x3bb546) this['vertices'][_0x3bb546]['triangleCount'] = 0x0, this['vertices'][_0x3bb546]['triangleStart'] = 0x0; for (_0x3bb546 = 0x0; _0x3bb546 < this['triangles']['length']; ++_0x3bb546) for (_0x5d6b6b = this['triangles'][_0x3bb546], _0x2f3998 = 0x0; _0x2f3998 < 0x3; ++_0x2f3998) (_0x564e0c = _0x5d6b6b['vertices'][_0x2f3998])['triangleCount']++; var _0x561f46 = 0x0; for (_0x3bb546 = 0x0; _0x3bb546 < this['vertices']['length']; ++_0x3bb546) this['vertices'][_0x3bb546]['triangleStart'] = _0x561f46, _0x561f46 += this['vertices'][_0x3bb546]['triangleCount'], this['vertices'][_0x3bb546]['triangleCount'] = 0x0; var _0x5c7160 = new Array(0x3 * this['triangles']['length']); for (_0x3bb546 = 0x0; _0x3bb546 < this['triangles']['length']; ++_0x3bb546) for (_0x5d6b6b = this['triangles'][_0x3bb546], _0x2f3998 = 0x0; _0x2f3998 < 0x3; ++_0x2f3998) _0x5c7160[(_0x564e0c = _0x5d6b6b['vertices'][_0x2f3998])['triangleStart'] + _0x564e0c['triangleCount']] = new _0x27bf92(_0x2f3998,_0x3bb546), _0x564e0c['triangleCount']++; this['references'] = _0x5c7160, _0x20e9a5 && this['identifyBorder'](); } , _0x11fa4b['prototype']['vertexError'] = function(_0x5db95b, _0x26f408) { var _0x19791f = _0x26f408['x'] , _0x3a87fb = _0x26f408['y'] , _0x3778d2 = _0x26f408['z']; return _0x5db95b['data'][0x0] * _0x19791f * _0x19791f + 0x2 * _0x5db95b['data'][0x1] * _0x19791f * _0x3a87fb + 0x2 * _0x5db95b['data'][0x2] * _0x19791f * _0x3778d2 + 0x2 * _0x5db95b['data'][0x3] * _0x19791f + _0x5db95b['data'][0x4] * _0x3a87fb * _0x3a87fb + 0x2 * _0x5db95b['data'][0x5] * _0x3a87fb * _0x3778d2 + 0x2 * _0x5db95b['data'][0x6] * _0x3a87fb + _0x5db95b['data'][0x7] * _0x3778d2 * _0x3778d2 + 0x2 * _0x5db95b['data'][0x8] * _0x3778d2 + _0x5db95b['data'][0x9]; } , _0x11fa4b['prototype']['calculateError'] = function(_0x41ea96, _0x343278, _0x411653) { var _0x248777 = _0x41ea96['q']['add'](_0x343278['q']) , _0x37dfa0 = _0x41ea96['isBorder'] && _0x343278['isBorder'] , _0x588bff = 0x0 , _0x3ef5db = _0x248777['det'](0x0, 0x1, 0x2, 0x1, 0x4, 0x5, 0x2, 0x5, 0x7); if (0x0 === _0x3ef5db || _0x37dfa0) { var _0x4cd35a = _0x41ea96['position']['add'](_0x343278['position'])['divide'](new _0x47d24f['x'](0x2,0x2,0x2)) , _0x1da821 = this['vertexError'](_0x248777, _0x41ea96['position']) , _0x4520c4 = this['vertexError'](_0x248777, _0x343278['position']) , _0x3de8fb = this['vertexError'](_0x248777, _0x4cd35a); (_0x588bff = Math['min'](_0x1da821, _0x4520c4, _0x3de8fb)) === _0x1da821 ? _0x411653 && _0x411653['copyFrom'](_0x41ea96['position']) : _0x588bff === _0x4520c4 ? _0x411653 && _0x411653['copyFrom'](_0x343278['position']) : _0x411653 && _0x411653['copyFrom'](_0x4cd35a); } else _0x411653 || (_0x411653 = _0x47d24f['x']['Zero']()), _0x411653['x'] = -0x1 / _0x3ef5db * _0x248777['det'](0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x5, 0x7, 0x8), _0x411653['y'] = 0x1 / _0x3ef5db * _0x248777['det'](0x0, 0x2, 0x3, 0x1, 0x5, 0x6, 0x2, 0x7, 0x8), _0x411653['z'] = -0x1 / _0x3ef5db * _0x248777['det'](0x0, 0x1, 0x3, 0x1, 0x4, 0x6, 0x2, 0x5, 0x8), _0x588bff = this['vertexError'](_0x248777, _0x411653); return _0x588bff; } , _0x11fa4b; }(); Object['defineProperty'](_0x366639['a']['prototype'], 'simplificationQueue', { 'get': function() { if (!this['_simplificationQueue']) { this['_simplificationQueue'] = new _0x157d40(); var _0x5c0e01 = this['_getComponent'](_0x443f74['a']['NAME_SIMPLIFICATIONQUEUE']); _0x5c0e01 || (_0x5c0e01 = new _0x471e4b(this), this['_addComponent'](_0x5c0e01)); } return this['_simplificationQueue']; }, 'set': function(_0x4ab605) { this['_simplificationQueue'] = _0x4ab605; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xb4719b['a']['prototype']['simplify'] = function(_0x28956e, _0x5f1ac7, _0x107ec3, _0xb2f6a5) { return void 0x0 === _0x5f1ac7 && (_0x5f1ac7 = !0x0), void 0x0 === _0x107ec3 && (_0x107ec3 = _0x475cda['QUADRATIC']), this['getScene']()['simplificationQueue']['addTask']({ 'settings': _0x28956e, 'parallelProcessing': _0x5f1ac7, 'mesh': this, 'simplificationType': _0x107ec3, 'successCallback': _0xb2f6a5 }), this; } ; var _0x471e4b = function() { function _0x2fbc29(_0x50605c) { this['name'] = _0x443f74['a']['NAME_SIMPLIFICATIONQUEUE'], this['scene'] = _0x50605c; } return _0x2fbc29['prototype']['register'] = function() { this['scene']['_beforeCameraUpdateStage']['registerStep'](_0x443f74['a']['STEP_BEFORECAMERAUPDATE_SIMPLIFICATIONQUEUE'], this, this['_beforeCameraUpdate']); } , _0x2fbc29['prototype']['rebuild'] = function() {} , _0x2fbc29['prototype']['dispose'] = function() {} , _0x2fbc29['prototype']['_beforeCameraUpdate'] = function() { this['scene']['_simplificationQueue'] && !this['scene']['_simplificationQueue']['running'] && this['scene']['_simplificationQueue']['executeNext'](); } , _0x2fbc29; }() , _0x4ecbd7 = _0x59bd00(0x6e) , _0x1b2372 = _0x59bd00(0x4e) , _0x29f7ba = _0x59bd00(0x49); _0x3647a9['b']['OfflineProviderFactory'] = function(_0x4e1c5d, _0x1741e7, _0x2cfb97) { return void 0x0 === _0x2cfb97 && (_0x2cfb97 = !0x1), new _0x42a1d9(_0x4e1c5d,_0x1741e7,_0x2cfb97); } ; var _0x3fcd14, _0x42a1d9 = function() { function _0x22ac37(_0x2db8f5, _0x36a20b, _0x5d2ccf) { var _0x2ac884 = this; void 0x0 === _0x5d2ccf && (_0x5d2ccf = !0x1), this['_idbFactory'] = window['indexedDB'] || window['mozIndexedDB'] || window['webkitIndexedDB'] || window['msIndexedDB'], this['_callbackManifestChecked'] = _0x36a20b, this['_currentSceneUrl'] = _0x22ac37['_ReturnFullUrlLocation'](_0x2db8f5), this['_db'] = null, this['_enableSceneOffline'] = !0x1, this['_enableTexturesOffline'] = !0x1, this['_manifestVersionFound'] = 0x0, this['_mustUpdateRessources'] = !0x1, this['_hasReachedQuota'] = !0x1, _0x22ac37['IDBStorageEnabled'] ? _0x5d2ccf ? (this['_enableSceneOffline'] = !0x0, this['_enableTexturesOffline'] = !0x0, this['_manifestVersionFound'] = 0x1, _0x1eb50e['h']['SetImmediate'](function() { _0x2ac884['_callbackManifestChecked'](!0x0); })) : this['_checkManifestFile']() : this['_callbackManifestChecked'](!0x0); } return Object['defineProperty'](_0x22ac37['prototype'], 'enableSceneOffline', { 'get': function() { return this['_enableSceneOffline']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x22ac37['prototype'], 'enableTexturesOffline', { 'get': function() { return this['_enableTexturesOffline']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x22ac37['prototype']['_checkManifestFile'] = function() { var _0x395d3b = this , _0x41e466 = function() { _0x395d3b['_enableSceneOffline'] = !0x1, _0x395d3b['_enableTexturesOffline'] = !0x1, _0x395d3b['_callbackManifestChecked'](!0x1); } , _0x22a6cb = !0x1 , _0x641eed = this['_currentSceneUrl'] + '.manifest' , _0x537c21 = new _0x5cea33['a'](); navigator['onLine'] && (_0x22a6cb = !0x0, _0x641eed = _0x641eed + (null == _0x641eed['match'](/\?/) ? '?' : '&') + Date['now']()), _0x537c21['open']('GET', _0x641eed), _0x537c21['addEventListener']('load', function() { if (0xc8 === _0x537c21['status'] || _0x22ac37['_ValidateXHRData'](_0x537c21, 0x1)) try { var _0x503f27 = JSON['parse'](_0x537c21['response']); _0x395d3b['_enableSceneOffline'] = _0x503f27['enableSceneOffline'], _0x395d3b['_enableTexturesOffline'] = _0x503f27['enableTexturesOffline'] && _0x22ac37['IsUASupportingBlobStorage'], _0x503f27['version'] && !isNaN(parseInt(_0x503f27['version'])) && (_0x395d3b['_manifestVersionFound'] = _0x503f27['version']), _0x395d3b['_callbackManifestChecked'] && _0x395d3b['_callbackManifestChecked'](!0x0); } catch (_0x6c5da6) { _0x41e466(); } else _0x41e466(); }, !0x1), _0x537c21['addEventListener']('error', function() { if (_0x22a6cb) { _0x22a6cb = !0x1; var _0x4633ff = _0x395d3b['_currentSceneUrl'] + '.manifest'; _0x537c21['open']('GET', _0x4633ff), _0x537c21['send'](); } else _0x41e466(); }, !0x1); try { _0x537c21['send'](); } catch (_0x50a073) { _0x3f98cb['a']['Error']('Error\x20on\x20XHR\x20send\x20request.'), this['_callbackManifestChecked'](!0x1); } } , _0x22ac37['prototype']['open'] = function(_0x5d3344, _0x54e46f) { var _0x4bd36c = this , _0x2d10af = function() { _0x4bd36c['_isSupported'] = !0x1, _0x54e46f && _0x54e46f(); }; if (this['_idbFactory'] && (this['_enableSceneOffline'] || this['_enableTexturesOffline'])) if (this['_db']) _0x5d3344 && _0x5d3344(); else { this['_hasReachedQuota'] = !0x1, this['_isSupported'] = !0x0; var _0x3de5cf = this['_idbFactory']['open']('babylonjs', 0x1); _0x3de5cf['onerror'] = function() { _0x2d10af(); } , _0x3de5cf['onblocked'] = function() { _0x3f98cb['a']['Error']('IDB\x20request\x20blocked.\x20Please\x20reload\x20the\x20page.'), _0x2d10af(); } , _0x3de5cf['onsuccess'] = function() { _0x4bd36c['_db'] = _0x3de5cf['result'], _0x5d3344(); } , _0x3de5cf['onupgradeneeded'] = function(_0x2be0c9) { if (_0x4bd36c['_db'] = _0x2be0c9['target']['result'], _0x4bd36c['_db']) try { _0x4bd36c['_db']['createObjectStore']('scenes', { 'keyPath': 'sceneUrl' }), _0x4bd36c['_db']['createObjectStore']('versions', { 'keyPath': 'sceneUrl' }), _0x4bd36c['_db']['createObjectStore']('textures', { 'keyPath': 'textureUrl' }); } catch (_0x57d348) { _0x3f98cb['a']['Error']('Error\x20while\x20creating\x20object\x20stores.\x20Exception:\x20' + _0x57d348['message']), _0x2d10af(); } } ; } else this['_isSupported'] = !0x1, _0x54e46f && _0x54e46f(); } , _0x22ac37['prototype']['loadImage'] = function(_0xab1cc7, _0x49e6c6) { var _0x1f0d87 = this , _0x37e5aa = _0x22ac37['_ReturnFullUrlLocation'](_0xab1cc7) , _0x443b2a = function() { _0x1f0d87['_hasReachedQuota'] || null === _0x1f0d87['_db'] ? _0x49e6c6['src'] = _0xab1cc7 : _0x1f0d87['_saveImageIntoDBAsync'](_0x37e5aa, _0x49e6c6); }; this['_mustUpdateRessources'] ? _0x443b2a() : this['_loadImageFromDBAsync'](_0x37e5aa, _0x49e6c6, _0x443b2a); } , _0x22ac37['prototype']['_loadImageFromDBAsync'] = function(_0x25bb3f, _0x3fbe25, _0x1d9e1b) { if (this['_isSupported'] && null !== this['_db']) { var _0x4f3ce6, _0x47e807 = this['_db']['transaction'](['textures']); _0x47e807['onabort'] = function() { _0x3fbe25['src'] = _0x25bb3f; } , _0x47e807['oncomplete'] = function() { var _0x2eb93b; if (_0x4f3ce6) { var _0x47553e = window['URL'] || window['webkitURL']; _0x2eb93b = _0x47553e['createObjectURL'](_0x4f3ce6['data']), _0x3fbe25['onerror'] = function() { _0x3f98cb['a']['Error']('Error\x20loading\x20image\x20from\x20blob\x20URL:\x20' + _0x2eb93b + '\x20switching\x20back\x20to\x20web\x20url:\x20' + _0x25bb3f), _0x3fbe25['src'] = _0x25bb3f; } , _0x3fbe25['src'] = _0x2eb93b; } else _0x1d9e1b(); } ; var _0xeb22f5 = _0x47e807['objectStore']('textures')['get'](_0x25bb3f); _0xeb22f5['onsuccess'] = function(_0x2ecde8) { _0x4f3ce6 = _0x2ecde8['target']['result']; } , _0xeb22f5['onerror'] = function() { _0x3f98cb['a']['Error']('Error\x20loading\x20texture\x20' + _0x25bb3f + '\x20from\x20DB.'), _0x3fbe25['src'] = _0x25bb3f; } ; } else _0x3f98cb['a']['Error']('Error:\x20IndexedDB\x20not\x20supported\x20by\x20your\x20browser\x20or\x20BabylonJS\x20Database\x20is\x20not\x20open.'), _0x3fbe25['src'] = _0x25bb3f; } , _0x22ac37['prototype']['_saveImageIntoDBAsync'] = function(_0x210efd, _0x27999f) { var _0x2c2a35 = this; if (this['_isSupported']) { var _0x2884dd = function() { var _0x13a038; if (_0x514066) { var _0x26d673 = window['URL'] || window['webkitURL']; try { _0x13a038 = _0x26d673['createObjectURL'](_0x514066); } catch (_0x1ef41c) { _0x13a038 = _0x26d673['createObjectURL'](_0x514066); } } _0x13a038 && (_0x27999f['src'] = _0x13a038); }; if (_0x22ac37['IsUASupportingBlobStorage']) { var _0x514066, _0x357b9d = new _0x5cea33['a'](); _0x357b9d['open']('GET', _0x210efd), _0x357b9d['responseType'] = 'blob', _0x357b9d['addEventListener']('load', function() { if (0xc8 === _0x357b9d['status'] && _0x2c2a35['_db']) { _0x514066 = _0x357b9d['response']; var _0x572690 = _0x2c2a35['_db']['transaction'](['textures'], 'readwrite'); _0x572690['onabort'] = function(_0x20e020) { try { var _0x5a61ca = (_0x20e020['srcElement'] || _0x20e020['target'])['error']; _0x5a61ca && 'QuotaExceededError' === _0x5a61ca['name'] && (_0x2c2a35['_hasReachedQuota'] = !0x0); } catch (_0x456534) {} _0x2884dd(); } , _0x572690['oncomplete'] = function() { _0x2884dd(); } ; var _0x1ac24e = { 'textureUrl': _0x210efd, 'data': _0x514066 }; try { var _0xb079a5 = _0x572690['objectStore']('textures')['put'](_0x1ac24e); _0xb079a5['onsuccess'] = function() {} , _0xb079a5['onerror'] = function() { _0x2884dd(); } ; } catch (_0x1dbb87) { 0x19 === _0x1dbb87['code'] && (_0x22ac37['IsUASupportingBlobStorage'] = !0x1, _0x2c2a35['_enableTexturesOffline'] = !0x1), _0x27999f['src'] = _0x210efd; } } else _0x27999f['src'] = _0x210efd; }, !0x1), _0x357b9d['addEventListener']('error', function() { _0x3f98cb['a']['Error']('Error\x20in\x20XHR\x20request\x20in\x20BABYLON.Database.'), _0x27999f['src'] = _0x210efd; }, !0x1), _0x357b9d['send'](); } else _0x27999f['src'] = _0x210efd; } else _0x3f98cb['a']['Error']('Error:\x20IndexedDB\x20not\x20supported\x20by\x20your\x20browser\x20or\x20BabylonJS\x20Database\x20is\x20not\x20open.'), _0x27999f['src'] = _0x210efd; } , _0x22ac37['prototype']['_checkVersionFromDB'] = function(_0xb6818a, _0x155581) { var _0x525432 = this; this['_loadVersionFromDBAsync'](_0xb6818a, _0x155581, function() { _0x525432['_saveVersionIntoDBAsync'](_0xb6818a, _0x155581); }); } , _0x22ac37['prototype']['_loadVersionFromDBAsync'] = function(_0x14f4b0, _0x356428, _0x41b362) { var _0x2b7620, _0x136c52 = this; if (this['_isSupported'] && this['_db']) try { var _0x1f838a = this['_db']['transaction'](['versions']); _0x1f838a['oncomplete'] = function() { _0x2b7620 ? _0x136c52['_manifestVersionFound'] !== _0x2b7620['data'] ? (_0x136c52['_mustUpdateRessources'] = !0x0, _0x41b362()) : _0x356428(_0x2b7620['data']) : (_0x136c52['_mustUpdateRessources'] = !0x0, _0x41b362()); } , _0x1f838a['onabort'] = function() { _0x356428(-0x1); } ; var _0x140f15 = _0x1f838a['objectStore']('versions')['get'](_0x14f4b0); _0x140f15['onsuccess'] = function(_0x436bb3) { _0x2b7620 = _0x436bb3['target']['result']; } , _0x140f15['onerror'] = function() { _0x3f98cb['a']['Error']('Error\x20loading\x20version\x20for\x20scene\x20' + _0x14f4b0 + '\x20from\x20DB.'), _0x356428(-0x1); } ; } catch (_0x1a8be4) { _0x3f98cb['a']['Error']('Error\x20while\x20accessing\x20\x27versions\x27\x20object\x20store\x20(READ\x20OP).\x20Exception:\x20' + _0x1a8be4['message']), _0x356428(-0x1); } else _0x3f98cb['a']['Error']('Error:\x20IndexedDB\x20not\x20supported\x20by\x20your\x20browser\x20or\x20BabylonJS\x20Database\x20is\x20not\x20open.'), _0x356428(-0x1); } , _0x22ac37['prototype']['_saveVersionIntoDBAsync'] = function(_0x8c5487, _0x28c2b7) { var _0x1f27eb = this; if (this['_isSupported'] && !this['_hasReachedQuota'] && this['_db']) try { var _0x50b325 = this['_db']['transaction'](['versions'], 'readwrite'); _0x50b325['onabort'] = function(_0x11c93a) { try { var _0xaaf6fd = _0x11c93a['srcElement']['error']; _0xaaf6fd && 'QuotaExceededError' === _0xaaf6fd['name'] && (_0x1f27eb['_hasReachedQuota'] = !0x0); } catch (_0xd5e4f2) {} _0x28c2b7(-0x1); } , _0x50b325['oncomplete'] = function() { _0x28c2b7(_0x1f27eb['_manifestVersionFound']); } ; var _0x4d3450 = { 'sceneUrl': _0x8c5487, 'data': this['_manifestVersionFound'] } , _0x89ed63 = _0x50b325['objectStore']('versions')['put'](_0x4d3450); _0x89ed63['onsuccess'] = function() {} , _0x89ed63['onerror'] = function() { _0x3f98cb['a']['Error']('Error\x20in\x20DB\x20add\x20version\x20request\x20in\x20BABYLON.Database.'); } ; } catch (_0x3ec40d) { _0x3f98cb['a']['Error']('Error\x20while\x20accessing\x20\x27versions\x27\x20object\x20store\x20(WRITE\x20OP).\x20Exception:\x20' + _0x3ec40d['message']), _0x28c2b7(-0x1); } else _0x28c2b7(-0x1); } , _0x22ac37['prototype']['loadFile'] = function(_0x9a486, _0x3d1b4d, _0x39e24c, _0x5b747c, _0x45ea27) { var _0x3256c3 = this , _0xce606b = _0x22ac37['_ReturnFullUrlLocation'](_0x9a486) , _0x530935 = function() { _0x3256c3['_saveFileAsync'](_0xce606b, _0x3d1b4d, _0x39e24c, _0x45ea27, _0x5b747c); }; this['_checkVersionFromDB'](_0xce606b, function(_0x358a94) { -0x1 !== _0x358a94 ? _0x3256c3['_mustUpdateRessources'] ? _0x3256c3['_saveFileAsync'](_0xce606b, _0x3d1b4d, _0x39e24c, _0x45ea27, _0x5b747c) : _0x3256c3['_loadFileAsync'](_0xce606b, _0x3d1b4d, _0x530935) : _0x5b747c && _0x5b747c(); }); } , _0x22ac37['prototype']['_loadFileAsync'] = function(_0xd6fe8f, _0x527207, _0x575d9a) { if (this['_isSupported'] && this['_db']) { var _0x3c1d51, _0x151d10; _0x3c1d51 = -0x1 !== _0xd6fe8f['indexOf']('.babylon') ? 'scenes' : 'textures'; var _0x118acd = this['_db']['transaction']([_0x3c1d51]); _0x118acd['oncomplete'] = function() { _0x151d10 ? _0x527207(_0x151d10['data']) : _0x575d9a(); } , _0x118acd['onabort'] = function() { _0x575d9a(); } ; var _0x221e1f = _0x118acd['objectStore'](_0x3c1d51)['get'](_0xd6fe8f); _0x221e1f['onsuccess'] = function(_0xabdd61) { _0x151d10 = _0xabdd61['target']['result']; } , _0x221e1f['onerror'] = function() { _0x3f98cb['a']['Error']('Error\x20loading\x20file\x20' + _0xd6fe8f + '\x20from\x20DB.'), _0x575d9a(); } ; } else _0x3f98cb['a']['Error']('Error:\x20IndexedDB\x20not\x20supported\x20by\x20your\x20browser\x20or\x20BabylonJS\x20Database\x20is\x20not\x20open.'), _0x527207(); } , _0x22ac37['prototype']['_saveFileAsync'] = function(_0xce5f1d, _0x256467, _0x243e2a, _0x4a426d, _0x127e0e) { var _0x4cf9d2 = this; if (this['_isSupported']) { var _0x1a2a9b; _0x1a2a9b = -0x1 !== _0xce5f1d['indexOf']('.babylon') ? 'scenes' : 'textures'; var _0x49f7a4, _0x3c48e7 = new _0x5cea33['a'](); _0x3c48e7['open']('GET', _0xce5f1d + '?' + Date['now']()), _0x4a426d && (_0x3c48e7['responseType'] = 'arraybuffer'), _0x243e2a && (_0x3c48e7['onprogress'] = _0x243e2a), _0x3c48e7['addEventListener']('load', function() { if (0xc8 === _0x3c48e7['status'] || _0x3c48e7['status'] < 0x190 && _0x22ac37['_ValidateXHRData'](_0x3c48e7, _0x4a426d ? 0x6 : 0x1)) if (_0x49f7a4 = _0x4a426d ? _0x3c48e7['response'] : _0x3c48e7['responseText'], !_0x4cf9d2['_hasReachedQuota'] && _0x4cf9d2['_db']) { var _0x4ae3b3, _0x4a7817 = _0x4cf9d2['_db']['transaction']([_0x1a2a9b], 'readwrite'); _0x4a7817['onabort'] = function(_0x53384e) { try { var _0x3b2352 = _0x53384e['srcElement']['error']; _0x3b2352 && 'QuotaExceededError' === _0x3b2352['name'] && (_0x4cf9d2['_hasReachedQuota'] = !0x0); } catch (_0x3b41f5) {} _0x256467(_0x49f7a4); } , _0x4a7817['oncomplete'] = function() { _0x256467(_0x49f7a4); } , _0x4ae3b3 = 'scenes' === _0x1a2a9b ? { 'sceneUrl': _0xce5f1d, 'data': _0x49f7a4, 'version': _0x4cf9d2['_manifestVersionFound'] } : { 'textureUrl': _0xce5f1d, 'data': _0x49f7a4 }; try { var _0x425181 = _0x4a7817['objectStore'](_0x1a2a9b)['put'](_0x4ae3b3); _0x425181['onsuccess'] = function() {} , _0x425181['onerror'] = function() { _0x3f98cb['a']['Error']('Error\x20in\x20DB\x20add\x20file\x20request\x20in\x20BABYLON.Database.'); } ; } catch (_0x380383) { _0x256467(_0x49f7a4); } } else _0x256467(_0x49f7a4); else _0x3c48e7['status'] >= 0x190 && _0x127e0e ? _0x127e0e(_0x3c48e7) : _0x256467(); }, !0x1), _0x3c48e7['addEventListener']('error', function() { _0x3f98cb['a']['Error']('error\x20on\x20XHR\x20request.'), _0x256467(); }, !0x1), _0x3c48e7['send'](); } else _0x3f98cb['a']['Error']('Error:\x20IndexedDB\x20not\x20supported\x20by\x20your\x20browser\x20or\x20Babylon.js\x20Database\x20is\x20not\x20open.'), _0x256467(); } , _0x22ac37['_ValidateXHRData'] = function(_0x4f87bb, _0x1eb61a) { void 0x0 === _0x1eb61a && (_0x1eb61a = 0x7); try { if (0x1 & _0x1eb61a) { if (_0x4f87bb['responseText'] && _0x4f87bb['responseText']['length'] > 0x0) return !0x0; if (0x1 === _0x1eb61a) return !0x1; } if (0x2 & _0x1eb61a) { var _0x1c1aa9 = _0x149dfc['GetTGAHeader'](_0x4f87bb['response']); if (_0x1c1aa9['width'] && _0x1c1aa9['height'] && _0x1c1aa9['width'] > 0x0 && _0x1c1aa9['height'] > 0x0) return !0x0; if (0x2 === _0x1eb61a) return !0x1; } if (0x4 & _0x1eb61a) { var _0x3ea9bb = new Uint8Array(_0x4f87bb['response'],0x0,0x3); return 0x44 === _0x3ea9bb[0x0] && 0x44 === _0x3ea9bb[0x1] && 0x53 === _0x3ea9bb[0x2]; } } catch (_0x297dc1) {} return !0x1; } , _0x22ac37['IsUASupportingBlobStorage'] = !0x0, _0x22ac37['IDBStorageEnabled'] = !0x1, _0x22ac37['_ParseURL'] = function(_0x13d312) { document['createElement']('a')['href'] = _0x13d312; var _0x157c30 = _0x13d312['substring'](0x0, _0x13d312['lastIndexOf']('#')) , _0x12af51 = _0x13d312['substring'](_0x157c30['lastIndexOf']('/') + 0x1, _0x13d312['length']); return _0x13d312['substring'](0x0, _0x13d312['indexOf'](_0x12af51, 0x0)); } , _0x22ac37['_ReturnFullUrlLocation'] = function(_0x3e711a) { return -0x1 === _0x3e711a['indexOf']('http:/') && -0x1 === _0x3e711a['indexOf']('https:/') ? _0x22ac37['_ParseURL'](window['location']['href']) + _0x3e711a : _0x3e711a; } , _0x22ac37; }(), _0x22edcb = function() { function _0x826db0() { this['direction1'] = new _0x47d24f['x'](0x0,0x1,0x0), this['direction2'] = new _0x47d24f['x'](0x0,0x1,0x0), this['minEmitBox'] = new _0x47d24f['x'](-0.5,-0.5,-0.5), this['maxEmitBox'] = new _0x47d24f['x'](0.5,0.5,0.5); } return _0x826db0['prototype']['startDirectionFunction'] = function(_0x36c915, _0x157077, _0x2f8e63) { var _0x342123 = _0x77cead['a']['RandomRange'](this['direction1']['x'], this['direction2']['x']) , _0x128dd8 = _0x77cead['a']['RandomRange'](this['direction1']['y'], this['direction2']['y']) , _0x337b36 = _0x77cead['a']['RandomRange'](this['direction1']['z'], this['direction2']['z']); _0x47d24f['x']['TransformNormalFromFloatsToRef'](_0x342123, _0x128dd8, _0x337b36, _0x36c915, _0x157077); } , _0x826db0['prototype']['startPositionFunction'] = function(_0x5455af, _0x4d8e07, _0x3ce43e) { var _0x1040a2 = _0x77cead['a']['RandomRange'](this['minEmitBox']['x'], this['maxEmitBox']['x']) , _0x49de30 = _0x77cead['a']['RandomRange'](this['minEmitBox']['y'], this['maxEmitBox']['y']) , _0x46a871 = _0x77cead['a']['RandomRange'](this['minEmitBox']['z'], this['maxEmitBox']['z']); _0x47d24f['x']['TransformCoordinatesFromFloatsToRef'](_0x1040a2, _0x49de30, _0x46a871, _0x5455af, _0x4d8e07); } , _0x826db0['prototype']['clone'] = function() { var _0x1c0b1b = new _0x826db0(); return _0x5e367c['a']['DeepCopy'](this, _0x1c0b1b), _0x1c0b1b; } , _0x826db0['prototype']['applyToShader'] = function(_0x4ee241) { _0x4ee241['setVector3']('direction1', this['direction1']), _0x4ee241['setVector3']('direction2', this['direction2']), _0x4ee241['setVector3']('minEmitBox', this['minEmitBox']), _0x4ee241['setVector3']('maxEmitBox', this['maxEmitBox']); } , _0x826db0['prototype']['getEffectDefines'] = function() { return '#define\x20BOXEMITTER'; } , _0x826db0['prototype']['getClassName'] = function() { return 'BoxParticleEmitter'; } , _0x826db0['prototype']['serialize'] = function() { var _0x8d1c00 = {}; return _0x8d1c00['type'] = this['getClassName'](), _0x8d1c00['direction1'] = this['direction1']['asArray'](), _0x8d1c00['direction2'] = this['direction2']['asArray'](), _0x8d1c00['minEmitBox'] = this['minEmitBox']['asArray'](), _0x8d1c00['maxEmitBox'] = this['maxEmitBox']['asArray'](), _0x8d1c00; } , _0x826db0['prototype']['parse'] = function(_0x562c07) { _0x47d24f['x']['FromArrayToRef'](_0x562c07['direction1'], 0x0, this['direction1']), _0x47d24f['x']['FromArrayToRef'](_0x562c07['direction2'], 0x0, this['direction2']), _0x47d24f['x']['FromArrayToRef'](_0x562c07['minEmitBox'], 0x0, this['minEmitBox']), _0x47d24f['x']['FromArrayToRef'](_0x562c07['maxEmitBox'], 0x0, this['maxEmitBox']); } , _0x826db0; }(), _0x1f7a9e = function() { function _0x11ebfb(_0x3549b9, _0x1d82ae, _0x4237a5) { void 0x0 === _0x3549b9 && (_0x3549b9 = 0x1), void 0x0 === _0x1d82ae && (_0x1d82ae = Math['PI']), void 0x0 === _0x4237a5 && (_0x4237a5 = 0x0), this['directionRandomizer'] = _0x4237a5, this['radiusRange'] = 0x1, this['heightRange'] = 0x1, this['emitFromSpawnPointOnly'] = !0x1, this['angle'] = _0x1d82ae, this['radius'] = _0x3549b9; } return Object['defineProperty'](_0x11ebfb['prototype'], 'radius', { 'get': function() { return this['_radius']; }, 'set': function(_0x10f738) { this['_radius'] = _0x10f738, this['_buildHeight'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x11ebfb['prototype'], 'angle', { 'get': function() { return this['_angle']; }, 'set': function(_0x447024) { this['_angle'] = _0x447024, this['_buildHeight'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x11ebfb['prototype']['_buildHeight'] = function() { 0x0 !== this['_angle'] ? this['_height'] = this['_radius'] / Math['tan'](this['_angle'] / 0x2) : this['_height'] = 0x1; } , _0x11ebfb['prototype']['startDirectionFunction'] = function(_0x5cd14f, _0x38153d, _0x484ff6) { if (0x1 === Math['abs'](Math['cos'](this['_angle']))) _0x47d24f['x']['TransformNormalFromFloatsToRef'](0x0, 0x1, 0x0, _0x5cd14f, _0x38153d); else { var _0x3e74a9 = _0x484ff6['position']['subtract'](_0x5cd14f['getTranslation']())['normalize']() , _0x2696a4 = _0x77cead['a']['RandomRange'](0x0, this['directionRandomizer']) , _0x28d0b1 = _0x77cead['a']['RandomRange'](0x0, this['directionRandomizer']) , _0x4c4cc3 = _0x77cead['a']['RandomRange'](0x0, this['directionRandomizer']); _0x3e74a9['x'] += _0x2696a4, _0x3e74a9['y'] += _0x28d0b1, _0x3e74a9['z'] += _0x4c4cc3, _0x3e74a9['normalize'](), _0x47d24f['x']['TransformNormalFromFloatsToRef'](_0x3e74a9['x'], _0x3e74a9['y'], _0x3e74a9['z'], _0x5cd14f, _0x38153d); } } , _0x11ebfb['prototype']['startPositionFunction'] = function(_0x115aad, _0x2da16f, _0x52590c) { var _0x365b15, _0x13ad6b = _0x77cead['a']['RandomRange'](0x0, 0x2 * Math['PI']); _0x365b15 = this['emitFromSpawnPointOnly'] ? 0.0001 : 0x1 - (_0x365b15 = _0x77cead['a']['RandomRange'](0x0, this['heightRange'])) * _0x365b15; var _0x3611d8 = this['_radius'] - _0x77cead['a']['RandomRange'](0x0, this['_radius'] * this['radiusRange']) , _0xc4ca99 = (_0x3611d8 *= _0x365b15) * Math['sin'](_0x13ad6b) , _0x291b12 = _0x3611d8 * Math['cos'](_0x13ad6b) , _0xaad648 = _0x365b15 * this['_height']; _0x47d24f['x']['TransformCoordinatesFromFloatsToRef'](_0xc4ca99, _0xaad648, _0x291b12, _0x115aad, _0x2da16f); } , _0x11ebfb['prototype']['clone'] = function() { var _0x3fe026 = new _0x11ebfb(this['_radius'],this['_angle'],this['directionRandomizer']); return _0x5e367c['a']['DeepCopy'](this, _0x3fe026), _0x3fe026; } , _0x11ebfb['prototype']['applyToShader'] = function(_0x213e80) { _0x213e80['setFloat2']('radius', this['_radius'], this['radiusRange']), _0x213e80['setFloat']('coneAngle', this['_angle']), _0x213e80['setFloat2']('height', this['_height'], this['heightRange']), _0x213e80['setFloat']('directionRandomizer', this['directionRandomizer']); } , _0x11ebfb['prototype']['getEffectDefines'] = function() { var _0x505f81 = '#define\x20CONEEMITTER'; return this['emitFromSpawnPointOnly'] && (_0x505f81 += '\x0a#define\x20CONEEMITTERSPAWNPOINT'), _0x505f81; } , _0x11ebfb['prototype']['getClassName'] = function() { return 'ConeParticleEmitter'; } , _0x11ebfb['prototype']['serialize'] = function() { var _0x46ffcb = {}; return _0x46ffcb['type'] = this['getClassName'](), _0x46ffcb['radius'] = this['_radius'], _0x46ffcb['angle'] = this['_angle'], _0x46ffcb['directionRandomizer'] = this['directionRandomizer'], _0x46ffcb; } , _0x11ebfb['prototype']['parse'] = function(_0x5b70b6) { this['radius'] = _0x5b70b6['radius'], this['angle'] = _0x5b70b6['angle'], this['directionRandomizer'] = _0x5b70b6['directionRandomizer']; } , _0x11ebfb; }(), _0x564110 = function() { function _0x50dfe3(_0x2560be, _0x35ec6d, _0x2233a4, _0xb4ab72) { void 0x0 === _0x2560be && (_0x2560be = 0x1), void 0x0 === _0x35ec6d && (_0x35ec6d = 0x1), void 0x0 === _0x2233a4 && (_0x2233a4 = 0x1), void 0x0 === _0xb4ab72 && (_0xb4ab72 = 0x0), this['radius'] = _0x2560be, this['height'] = _0x35ec6d, this['radiusRange'] = _0x2233a4, this['directionRandomizer'] = _0xb4ab72; } return _0x50dfe3['prototype']['startDirectionFunction'] = function(_0xde98b4, _0x4f925a, _0x22705f) { var _0x37bb02 = _0x22705f['position']['subtract'](_0xde98b4['getTranslation']())['normalize']() , _0x52b84b = _0x77cead['a']['RandomRange'](-this['directionRandomizer'] / 0x2, this['directionRandomizer'] / 0x2) , _0x228310 = Math['atan2'](_0x37bb02['x'], _0x37bb02['z']); _0x228310 += _0x77cead['a']['RandomRange'](-Math['PI'] / 0x2, Math['PI'] / 0x2) * this['directionRandomizer'], _0x37bb02['y'] = _0x52b84b, _0x37bb02['x'] = Math['sin'](_0x228310), _0x37bb02['z'] = Math['cos'](_0x228310), _0x37bb02['normalize'](), _0x47d24f['x']['TransformNormalFromFloatsToRef'](_0x37bb02['x'], _0x37bb02['y'], _0x37bb02['z'], _0xde98b4, _0x4f925a); } , _0x50dfe3['prototype']['startPositionFunction'] = function(_0x3e9c1c, _0x28425d, _0x5ccb96) { var _0x4d8106 = _0x77cead['a']['RandomRange'](-this['height'] / 0x2, this['height'] / 0x2) , _0x2ecbe9 = _0x77cead['a']['RandomRange'](0x0, 0x2 * Math['PI']) , _0x5ee8c4 = _0x77cead['a']['RandomRange']((0x1 - this['radiusRange']) * (0x1 - this['radiusRange']), 0x1) , _0xac98d2 = Math['sqrt'](_0x5ee8c4) * this['radius'] , _0x152638 = _0xac98d2 * Math['cos'](_0x2ecbe9) , _0x57ba42 = _0xac98d2 * Math['sin'](_0x2ecbe9); _0x47d24f['x']['TransformCoordinatesFromFloatsToRef'](_0x152638, _0x4d8106, _0x57ba42, _0x3e9c1c, _0x28425d); } , _0x50dfe3['prototype']['clone'] = function() { var _0x53eb28 = new _0x50dfe3(this['radius'],this['directionRandomizer']); return _0x5e367c['a']['DeepCopy'](this, _0x53eb28), _0x53eb28; } , _0x50dfe3['prototype']['applyToShader'] = function(_0x354fbc) { _0x354fbc['setFloat']('radius', this['radius']), _0x354fbc['setFloat']('height', this['height']), _0x354fbc['setFloat']('radiusRange', this['radiusRange']), _0x354fbc['setFloat']('directionRandomizer', this['directionRandomizer']); } , _0x50dfe3['prototype']['getEffectDefines'] = function() { return '#define\x20CYLINDEREMITTER'; } , _0x50dfe3['prototype']['getClassName'] = function() { return 'CylinderParticleEmitter'; } , _0x50dfe3['prototype']['serialize'] = function() { var _0x2ef304 = {}; return _0x2ef304['type'] = this['getClassName'](), _0x2ef304['radius'] = this['radius'], _0x2ef304['height'] = this['height'], _0x2ef304['radiusRange'] = this['radiusRange'], _0x2ef304['directionRandomizer'] = this['directionRandomizer'], _0x2ef304; } , _0x50dfe3['prototype']['parse'] = function(_0x4c642c) { this['radius'] = _0x4c642c['radius'], this['height'] = _0x4c642c['height'], this['radiusRange'] = _0x4c642c['radiusRange'], this['directionRandomizer'] = _0x4c642c['directionRandomizer']; } , _0x50dfe3; }(), _0x5bafbf = function(_0x5a1f67) { function _0x180e72(_0x5ec7ea, _0x5c97dd, _0x23ad72, _0x228b46, _0x12ac8d) { void 0x0 === _0x5ec7ea && (_0x5ec7ea = 0x1), void 0x0 === _0x5c97dd && (_0x5c97dd = 0x1), void 0x0 === _0x23ad72 && (_0x23ad72 = 0x1), void 0x0 === _0x228b46 && (_0x228b46 = new _0x47d24f['x'](0x0,0x1,0x0)), void 0x0 === _0x12ac8d && (_0x12ac8d = new _0x47d24f['x'](0x0,0x1,0x0)); var _0x202503 = _0x5a1f67['call'](this, _0x5ec7ea, _0x5c97dd, _0x23ad72) || this; return _0x202503['direction1'] = _0x228b46, _0x202503['direction2'] = _0x12ac8d, _0x202503; } return _0x420e5b['d'](_0x180e72, _0x5a1f67), _0x180e72['prototype']['startDirectionFunction'] = function(_0x127b4a, _0x27c751, _0x191816) { var _0x5d0768 = _0x77cead['a']['RandomRange'](this['direction1']['x'], this['direction2']['x']) , _0x3b9c93 = _0x77cead['a']['RandomRange'](this['direction1']['y'], this['direction2']['y']) , _0x2e2388 = _0x77cead['a']['RandomRange'](this['direction1']['z'], this['direction2']['z']); _0x47d24f['x']['TransformNormalFromFloatsToRef'](_0x5d0768, _0x3b9c93, _0x2e2388, _0x127b4a, _0x27c751); } , _0x180e72['prototype']['clone'] = function() { var _0x57911a = new _0x180e72(this['radius'],this['height'],this['radiusRange'],this['direction1'],this['direction2']); return _0x5e367c['a']['DeepCopy'](this, _0x57911a), _0x57911a; } , _0x180e72['prototype']['applyToShader'] = function(_0x2fb8d9) { _0x2fb8d9['setFloat']('radius', this['radius']), _0x2fb8d9['setFloat']('height', this['height']), _0x2fb8d9['setFloat']('radiusRange', this['radiusRange']), _0x2fb8d9['setVector3']('direction1', this['direction1']), _0x2fb8d9['setVector3']('direction2', this['direction2']); } , _0x180e72['prototype']['getEffectDefines'] = function() { return '#define\x20CYLINDEREMITTER\x0a#define\x20DIRECTEDCYLINDEREMITTER'; } , _0x180e72['prototype']['getClassName'] = function() { return 'CylinderDirectedParticleEmitter'; } , _0x180e72['prototype']['serialize'] = function() { var _0x18d1de = _0x5a1f67['prototype']['serialize']['call'](this); return _0x18d1de['direction1'] = this['direction1']['asArray'](), _0x18d1de['direction2'] = this['direction2']['asArray'](), _0x18d1de; } , _0x180e72['prototype']['parse'] = function(_0x2ff126) { _0x5a1f67['prototype']['parse']['call'](this, _0x2ff126), this['direction1']['copyFrom'](_0x2ff126['direction1']), this['direction2']['copyFrom'](_0x2ff126['direction2']); } , _0x180e72; }(_0x564110), _0x4adf6f = function() { function _0x33a891(_0x13327b, _0x1fc466, _0x5e93a8) { void 0x0 === _0x13327b && (_0x13327b = 0x1), void 0x0 === _0x1fc466 && (_0x1fc466 = 0x1), void 0x0 === _0x5e93a8 && (_0x5e93a8 = 0x0), this['radius'] = _0x13327b, this['radiusRange'] = _0x1fc466, this['directionRandomizer'] = _0x5e93a8; } return _0x33a891['prototype']['startDirectionFunction'] = function(_0x45e7d8, _0x1c9b3c, _0x5aeaaf) { var _0x13215b = _0x5aeaaf['position']['subtract'](_0x45e7d8['getTranslation']())['normalize']() , _0x180a64 = _0x77cead['a']['RandomRange'](0x0, this['directionRandomizer']) , _0x2bb0f2 = _0x77cead['a']['RandomRange'](0x0, this['directionRandomizer']) , _0x10bec3 = _0x77cead['a']['RandomRange'](0x0, this['directionRandomizer']); _0x13215b['x'] += _0x180a64, _0x13215b['y'] += _0x2bb0f2, _0x13215b['z'] += _0x10bec3, _0x13215b['normalize'](), _0x47d24f['x']['TransformNormalFromFloatsToRef'](_0x13215b['x'], _0x13215b['y'], _0x13215b['z'], _0x45e7d8, _0x1c9b3c); } , _0x33a891['prototype']['startPositionFunction'] = function(_0x20237b, _0x3e876d, _0x4e2113) { var _0x1fb73f = this['radius'] - _0x77cead['a']['RandomRange'](0x0, this['radius'] * this['radiusRange']) , _0x245dad = _0x77cead['a']['RandomRange'](0x0, 0x1) , _0x3ad873 = _0x77cead['a']['RandomRange'](0x0, 0x2 * Math['PI']) , _0x15a79f = Math['acos'](0x2 * _0x245dad - 0x1) , _0x4cad4c = _0x1fb73f * Math['cos'](_0x3ad873) * Math['sin'](_0x15a79f) , _0x103154 = _0x1fb73f * Math['cos'](_0x15a79f) , _0x5748dc = _0x1fb73f * Math['sin'](_0x3ad873) * Math['sin'](_0x15a79f); _0x47d24f['x']['TransformCoordinatesFromFloatsToRef'](_0x4cad4c, Math['abs'](_0x103154), _0x5748dc, _0x20237b, _0x3e876d); } , _0x33a891['prototype']['clone'] = function() { var _0x33455e = new _0x33a891(this['radius'],this['directionRandomizer']); return _0x5e367c['a']['DeepCopy'](this, _0x33455e), _0x33455e; } , _0x33a891['prototype']['applyToShader'] = function(_0x4aefad) { _0x4aefad['setFloat']('radius', this['radius']), _0x4aefad['setFloat']('radiusRange', this['radiusRange']), _0x4aefad['setFloat']('directionRandomizer', this['directionRandomizer']); } , _0x33a891['prototype']['getEffectDefines'] = function() { return '#define\x20HEMISPHERICEMITTER'; } , _0x33a891['prototype']['getClassName'] = function() { return 'HemisphericParticleEmitter'; } , _0x33a891['prototype']['serialize'] = function() { var _0x14098d = {}; return _0x14098d['type'] = this['getClassName'](), _0x14098d['radius'] = this['radius'], _0x14098d['radiusRange'] = this['radiusRange'], _0x14098d['directionRandomizer'] = this['directionRandomizer'], _0x14098d; } , _0x33a891['prototype']['parse'] = function(_0x27e8a5) { this['radius'] = _0x27e8a5['radius'], this['radiusRange'] = _0x27e8a5['radiusRange'], this['directionRandomizer'] = _0x27e8a5['directionRandomizer']; } , _0x33a891; }(), _0x2e596e = function() { function _0x55be78() { this['direction1'] = new _0x47d24f['x'](0x0,0x1,0x0), this['direction2'] = new _0x47d24f['x'](0x0,0x1,0x0); } return _0x55be78['prototype']['startDirectionFunction'] = function(_0x4d371d, _0xe89cf0, _0x2a02d7) { var _0x594c51 = _0x77cead['a']['RandomRange'](this['direction1']['x'], this['direction2']['x']) , _0x2a1009 = _0x77cead['a']['RandomRange'](this['direction1']['y'], this['direction2']['y']) , _0x3195a7 = _0x77cead['a']['RandomRange'](this['direction1']['z'], this['direction2']['z']); _0x47d24f['x']['TransformNormalFromFloatsToRef'](_0x594c51, _0x2a1009, _0x3195a7, _0x4d371d, _0xe89cf0); } , _0x55be78['prototype']['startPositionFunction'] = function(_0x5cca8b, _0x535fcc, _0x10a73c) { _0x47d24f['x']['TransformCoordinatesFromFloatsToRef'](0x0, 0x0, 0x0, _0x5cca8b, _0x535fcc); } , _0x55be78['prototype']['clone'] = function() { var _0x4cbe1d = new _0x55be78(); return _0x5e367c['a']['DeepCopy'](this, _0x4cbe1d), _0x4cbe1d; } , _0x55be78['prototype']['applyToShader'] = function(_0x321b07) { _0x321b07['setVector3']('direction1', this['direction1']), _0x321b07['setVector3']('direction2', this['direction2']); } , _0x55be78['prototype']['getEffectDefines'] = function() { return '#define\x20POINTEMITTER'; } , _0x55be78['prototype']['getClassName'] = function() { return 'PointParticleEmitter'; } , _0x55be78['prototype']['serialize'] = function() { var _0x4654f1 = {}; return _0x4654f1['type'] = this['getClassName'](), _0x4654f1['direction1'] = this['direction1']['asArray'](), _0x4654f1['direction2'] = this['direction2']['asArray'](), _0x4654f1; } , _0x55be78['prototype']['parse'] = function(_0x487f6c) { _0x47d24f['x']['FromArrayToRef'](_0x487f6c['direction1'], 0x0, this['direction1']), _0x47d24f['x']['FromArrayToRef'](_0x487f6c['direction2'], 0x0, this['direction2']); } , _0x55be78; }(), _0x40804d = function() { function _0x26b947(_0x1ae75e, _0x2a32ed, _0x417eea) { void 0x0 === _0x1ae75e && (_0x1ae75e = 0x1), void 0x0 === _0x2a32ed && (_0x2a32ed = 0x1), void 0x0 === _0x417eea && (_0x417eea = 0x0), this['radius'] = _0x1ae75e, this['radiusRange'] = _0x2a32ed, this['directionRandomizer'] = _0x417eea; } return _0x26b947['prototype']['startDirectionFunction'] = function(_0x484aac, _0x30c5bd, _0x29cde1) { var _0xe26107 = _0x29cde1['position']['subtract'](_0x484aac['getTranslation']())['normalize']() , _0x169528 = _0x77cead['a']['RandomRange'](0x0, this['directionRandomizer']) , _0x528cdf = _0x77cead['a']['RandomRange'](0x0, this['directionRandomizer']) , _0x58a38e = _0x77cead['a']['RandomRange'](0x0, this['directionRandomizer']); _0xe26107['x'] += _0x169528, _0xe26107['y'] += _0x528cdf, _0xe26107['z'] += _0x58a38e, _0xe26107['normalize'](), _0x47d24f['x']['TransformNormalFromFloatsToRef'](_0xe26107['x'], _0xe26107['y'], _0xe26107['z'], _0x484aac, _0x30c5bd); } , _0x26b947['prototype']['startPositionFunction'] = function(_0x22ac16, _0x3c7e6e, _0x15a2a6) { var _0x6500db = this['radius'] - _0x77cead['a']['RandomRange'](0x0, this['radius'] * this['radiusRange']) , _0xfbfd62 = _0x77cead['a']['RandomRange'](0x0, 0x1) , _0x5700dd = _0x77cead['a']['RandomRange'](0x0, 0x2 * Math['PI']) , _0x5ec496 = Math['acos'](0x2 * _0xfbfd62 - 0x1) , _0x4338db = _0x6500db * Math['cos'](_0x5700dd) * Math['sin'](_0x5ec496) , _0x400a0f = _0x6500db * Math['cos'](_0x5ec496) , _0x4bbae0 = _0x6500db * Math['sin'](_0x5700dd) * Math['sin'](_0x5ec496); _0x47d24f['x']['TransformCoordinatesFromFloatsToRef'](_0x4338db, _0x400a0f, _0x4bbae0, _0x22ac16, _0x3c7e6e); } , _0x26b947['prototype']['clone'] = function() { var _0x2221cb = new _0x26b947(this['radius'],this['directionRandomizer']); return _0x5e367c['a']['DeepCopy'](this, _0x2221cb), _0x2221cb; } , _0x26b947['prototype']['applyToShader'] = function(_0x4677af) { _0x4677af['setFloat']('radius', this['radius']), _0x4677af['setFloat']('radiusRange', this['radiusRange']), _0x4677af['setFloat']('directionRandomizer', this['directionRandomizer']); } , _0x26b947['prototype']['getEffectDefines'] = function() { return '#define\x20SPHEREEMITTER'; } , _0x26b947['prototype']['getClassName'] = function() { return 'SphereParticleEmitter'; } , _0x26b947['prototype']['serialize'] = function() { var _0x413c1b = {}; return _0x413c1b['type'] = this['getClassName'](), _0x413c1b['radius'] = this['radius'], _0x413c1b['radiusRange'] = this['radiusRange'], _0x413c1b['directionRandomizer'] = this['directionRandomizer'], _0x413c1b; } , _0x26b947['prototype']['parse'] = function(_0x7c087a) { this['radius'] = _0x7c087a['radius'], this['radiusRange'] = _0x7c087a['radiusRange'], this['directionRandomizer'] = _0x7c087a['directionRandomizer']; } , _0x26b947; }(), _0x2aad28 = function(_0x8c7e34) { function _0x595a08(_0x5a05c3, _0x47625f, _0x21a560) { void 0x0 === _0x5a05c3 && (_0x5a05c3 = 0x1), void 0x0 === _0x47625f && (_0x47625f = new _0x47d24f['x'](0x0,0x1,0x0)), void 0x0 === _0x21a560 && (_0x21a560 = new _0x47d24f['x'](0x0,0x1,0x0)); var _0x1442f8 = _0x8c7e34['call'](this, _0x5a05c3) || this; return _0x1442f8['direction1'] = _0x47625f, _0x1442f8['direction2'] = _0x21a560, _0x1442f8; } return _0x420e5b['d'](_0x595a08, _0x8c7e34), _0x595a08['prototype']['startDirectionFunction'] = function(_0x3180e1, _0x3a937d, _0x278410) { var _0x1dd6cb = _0x77cead['a']['RandomRange'](this['direction1']['x'], this['direction2']['x']) , _0x4bb05b = _0x77cead['a']['RandomRange'](this['direction1']['y'], this['direction2']['y']) , _0x55a640 = _0x77cead['a']['RandomRange'](this['direction1']['z'], this['direction2']['z']); _0x47d24f['x']['TransformNormalFromFloatsToRef'](_0x1dd6cb, _0x4bb05b, _0x55a640, _0x3180e1, _0x3a937d); } , _0x595a08['prototype']['clone'] = function() { var _0x5c85c5 = new _0x595a08(this['radius'],this['direction1'],this['direction2']); return _0x5e367c['a']['DeepCopy'](this, _0x5c85c5), _0x5c85c5; } , _0x595a08['prototype']['applyToShader'] = function(_0x52b6e5) { _0x52b6e5['setFloat']('radius', this['radius']), _0x52b6e5['setFloat']('radiusRange', this['radiusRange']), _0x52b6e5['setVector3']('direction1', this['direction1']), _0x52b6e5['setVector3']('direction2', this['direction2']); } , _0x595a08['prototype']['getEffectDefines'] = function() { return '#define\x20SPHEREEMITTER\x0a#define\x20DIRECTEDSPHEREEMITTER'; } , _0x595a08['prototype']['getClassName'] = function() { return 'SphereDirectedParticleEmitter'; } , _0x595a08['prototype']['serialize'] = function() { var _0x1eaf50 = _0x8c7e34['prototype']['serialize']['call'](this); return _0x1eaf50['direction1'] = this['direction1']['asArray'](), _0x1eaf50['direction2'] = this['direction2']['asArray'](), _0x1eaf50; } , _0x595a08['prototype']['parse'] = function(_0x538129) { _0x8c7e34['prototype']['parse']['call'](this, _0x538129), this['direction1']['copyFrom'](_0x538129['direction1']), this['direction2']['copyFrom'](_0x538129['direction2']); } , _0x595a08; }(_0x40804d), _0x846099 = function() { function _0x41611e(_0x38e92d) { this['animations'] = [], this['renderingGroupId'] = 0x0, this['emitter'] = null, this['emitRate'] = 0xa, this['manualEmitCount'] = -0x1, this['updateSpeed'] = 0.01, this['targetStopDuration'] = 0x0, this['disposeOnStop'] = !0x1, this['minEmitPower'] = 0x1, this['maxEmitPower'] = 0x1, this['minLifeTime'] = 0x1, this['maxLifeTime'] = 0x1, this['minSize'] = 0x1, this['maxSize'] = 0x1, this['minScaleX'] = 0x1, this['maxScaleX'] = 0x1, this['minScaleY'] = 0x1, this['maxScaleY'] = 0x1, this['minInitialRotation'] = 0x0, this['maxInitialRotation'] = 0x0, this['minAngularSpeed'] = 0x0, this['maxAngularSpeed'] = 0x0, this['layerMask'] = 0xfffffff, this['customShader'] = null, this['preventAutoStart'] = !0x1, this['noiseStrength'] = new _0x47d24f['x'](0xa,0xa,0xa), this['onAnimationEnd'] = null, this['blendMode'] = _0x41611e['BLENDMODE_ONEONE'], this['forceDepthWrite'] = !0x1, this['preWarmCycles'] = 0x0, this['preWarmStepOffset'] = 0x1, this['spriteCellChangeSpeed'] = 0x1, this['startSpriteCellID'] = 0x0, this['endSpriteCellID'] = 0x0, this['spriteCellWidth'] = 0x0, this['spriteCellHeight'] = 0x0, this['spriteRandomStartCell'] = !0x1, this['translationPivot'] = new _0x47d24f['w'](0x0,0x0), this['beginAnimationOnStart'] = !0x1, this['beginAnimationFrom'] = 0x0, this['beginAnimationTo'] = 0x3c, this['beginAnimationLoop'] = !0x1, this['worldOffset'] = new _0x47d24f['x'](0x0,0x0,0x0), this['gravity'] = _0x47d24f['x']['Zero'](), this['_colorGradients'] = null, this['_sizeGradients'] = null, this['_lifeTimeGradients'] = null, this['_angularSpeedGradients'] = null, this['_velocityGradients'] = null, this['_limitVelocityGradients'] = null, this['_dragGradients'] = null, this['_emitRateGradients'] = null, this['_startSizeGradients'] = null, this['_rampGradients'] = null, this['_colorRemapGradients'] = null, this['_alphaRemapGradients'] = null, this['startDelay'] = 0x0, this['limitVelocityDamping'] = 0.4, this['color1'] = new _0x47d24f['f'](0x1,0x1,0x1,0x1), this['color2'] = new _0x47d24f['f'](0x1,0x1,0x1,0x1), this['colorDead'] = new _0x47d24f['f'](0x0,0x0,0x0,0x1), this['textureMask'] = new _0x47d24f['f'](0x1,0x1,0x1,0x1), this['_isSubEmitter'] = !0x1, this['billboardMode'] = _0x24e342['a']['PARTICLES_BILLBOARDMODE_ALL'], this['_isBillboardBased'] = !0x0, this['_imageProcessingConfigurationDefines'] = new _0x347427['b'](), this['id'] = _0x38e92d, this['name'] = _0x38e92d; } return Object['defineProperty'](_0x41611e['prototype'], 'noiseTexture', { 'get': function() { return this['_noiseTexture']; }, 'set': function(_0x2cbe44) { this['_noiseTexture'] !== _0x2cbe44 && (this['_noiseTexture'] = _0x2cbe44, this['_reset']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x41611e['prototype'], 'isAnimationSheetEnabled', { 'get': function() { return this['_isAnimationSheetEnabled']; }, 'set': function(_0x21fbd3) { this['_isAnimationSheetEnabled'] != _0x21fbd3 && (this['_isAnimationSheetEnabled'] = _0x21fbd3, this['_reset']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x41611e['prototype']['getScene'] = function() { return this['_scene']; } , _0x41611e['prototype']['_hasTargetStopDurationDependantGradient'] = function() { return this['_startSizeGradients'] && this['_startSizeGradients']['length'] > 0x0 || this['_emitRateGradients'] && this['_emitRateGradients']['length'] > 0x0 || this['_lifeTimeGradients'] && this['_lifeTimeGradients']['length'] > 0x0; } , _0x41611e['prototype']['getDragGradients'] = function() { return this['_dragGradients']; } , _0x41611e['prototype']['getLimitVelocityGradients'] = function() { return this['_limitVelocityGradients']; } , _0x41611e['prototype']['getColorGradients'] = function() { return this['_colorGradients']; } , _0x41611e['prototype']['getSizeGradients'] = function() { return this['_sizeGradients']; } , _0x41611e['prototype']['getColorRemapGradients'] = function() { return this['_colorRemapGradients']; } , _0x41611e['prototype']['getAlphaRemapGradients'] = function() { return this['_alphaRemapGradients']; } , _0x41611e['prototype']['getLifeTimeGradients'] = function() { return this['_lifeTimeGradients']; } , _0x41611e['prototype']['getAngularSpeedGradients'] = function() { return this['_angularSpeedGradients']; } , _0x41611e['prototype']['getVelocityGradients'] = function() { return this['_velocityGradients']; } , _0x41611e['prototype']['getStartSizeGradients'] = function() { return this['_startSizeGradients']; } , _0x41611e['prototype']['getEmitRateGradients'] = function() { return this['_emitRateGradients']; } , Object['defineProperty'](_0x41611e['prototype'], 'direction1', { 'get': function() { return this['particleEmitterType']['direction1'] ? this['particleEmitterType']['direction1'] : _0x47d24f['x']['Zero'](); }, 'set': function(_0x4bfd70) { this['particleEmitterType']['direction1'] && (this['particleEmitterType']['direction1'] = _0x4bfd70); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x41611e['prototype'], 'direction2', { 'get': function() { return this['particleEmitterType']['direction2'] ? this['particleEmitterType']['direction2'] : _0x47d24f['x']['Zero'](); }, 'set': function(_0x1f2c88) { this['particleEmitterType']['direction2'] && (this['particleEmitterType']['direction2'] = _0x1f2c88); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x41611e['prototype'], 'minEmitBox', { 'get': function() { return this['particleEmitterType']['minEmitBox'] ? this['particleEmitterType']['minEmitBox'] : _0x47d24f['x']['Zero'](); }, 'set': function(_0x4d1a2d) { this['particleEmitterType']['minEmitBox'] && (this['particleEmitterType']['minEmitBox'] = _0x4d1a2d); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x41611e['prototype'], 'maxEmitBox', { 'get': function() { return this['particleEmitterType']['maxEmitBox'] ? this['particleEmitterType']['maxEmitBox'] : _0x47d24f['x']['Zero'](); }, 'set': function(_0x43b4a9) { this['particleEmitterType']['maxEmitBox'] && (this['particleEmitterType']['maxEmitBox'] = _0x43b4a9); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x41611e['prototype'], 'isBillboardBased', { 'get': function() { return this['_isBillboardBased']; }, 'set': function(_0x452a2b) { this['_isBillboardBased'] !== _0x452a2b && (this['_isBillboardBased'] = _0x452a2b, this['_reset']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x41611e['prototype'], 'imageProcessingConfiguration', { 'get': function() { return this['_imageProcessingConfiguration']; }, 'set': function(_0x31c950) { this['_attachImageProcessingConfiguration'](_0x31c950); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x41611e['prototype']['_attachImageProcessingConfiguration'] = function(_0xd1ca83) { _0xd1ca83 !== this['_imageProcessingConfiguration'] && (this['_imageProcessingConfiguration'] = _0xd1ca83 || this['_scene']['imageProcessingConfiguration']); } , _0x41611e['prototype']['_reset'] = function() {} , _0x41611e['prototype']['_removeGradientAndTexture'] = function(_0x48a303, _0x18706a, _0x5370a9) { if (!_0x18706a) return this; for (var _0xb85dff = 0x0, _0x1c2b6c = 0x0, _0x21e0eb = _0x18706a; _0x1c2b6c < _0x21e0eb['length']; _0x1c2b6c++) { if (_0x21e0eb[_0x1c2b6c]['gradient'] === _0x48a303) { _0x18706a['splice'](_0xb85dff, 0x1); break; } _0xb85dff++; } return _0x5370a9 && _0x5370a9['dispose'](), this; } , _0x41611e['prototype']['createPointEmitter'] = function(_0x4387db, _0x55cb6a) { var _0x29b140 = new _0x2e596e(); return _0x29b140['direction1'] = _0x4387db, _0x29b140['direction2'] = _0x55cb6a, this['particleEmitterType'] = _0x29b140, _0x29b140; } , _0x41611e['prototype']['createHemisphericEmitter'] = function(_0x54716e, _0x2e5fbc) { void 0x0 === _0x54716e && (_0x54716e = 0x1), void 0x0 === _0x2e5fbc && (_0x2e5fbc = 0x1); var _0x220b1e = new _0x4adf6f(_0x54716e,_0x2e5fbc); return this['particleEmitterType'] = _0x220b1e, _0x220b1e; } , _0x41611e['prototype']['createSphereEmitter'] = function(_0x337d6c, _0x3e0aab) { void 0x0 === _0x337d6c && (_0x337d6c = 0x1), void 0x0 === _0x3e0aab && (_0x3e0aab = 0x1); var _0x3dee9f = new _0x40804d(_0x337d6c,_0x3e0aab); return this['particleEmitterType'] = _0x3dee9f, _0x3dee9f; } , _0x41611e['prototype']['createDirectedSphereEmitter'] = function(_0x4df50f, _0x3e4d19, _0x159148) { void 0x0 === _0x4df50f && (_0x4df50f = 0x1), void 0x0 === _0x3e4d19 && (_0x3e4d19 = new _0x47d24f['x'](0x0,0x1,0x0)), void 0x0 === _0x159148 && (_0x159148 = new _0x47d24f['x'](0x0,0x1,0x0)); var _0x2a9f5c = new _0x2aad28(_0x4df50f,_0x3e4d19,_0x159148); return this['particleEmitterType'] = _0x2a9f5c, _0x2a9f5c; } , _0x41611e['prototype']['createCylinderEmitter'] = function(_0x4bccfe, _0x239d06, _0x455097, _0x23bc9f) { void 0x0 === _0x4bccfe && (_0x4bccfe = 0x1), void 0x0 === _0x239d06 && (_0x239d06 = 0x1), void 0x0 === _0x455097 && (_0x455097 = 0x1), void 0x0 === _0x23bc9f && (_0x23bc9f = 0x0); var _0x22046e = new _0x564110(_0x4bccfe,_0x239d06,_0x455097,_0x23bc9f); return this['particleEmitterType'] = _0x22046e, _0x22046e; } , _0x41611e['prototype']['createDirectedCylinderEmitter'] = function(_0x2e9167, _0x578bf8, _0x5a9875, _0x2718b0, _0x28cb0a) { void 0x0 === _0x2e9167 && (_0x2e9167 = 0x1), void 0x0 === _0x578bf8 && (_0x578bf8 = 0x1), void 0x0 === _0x5a9875 && (_0x5a9875 = 0x1), void 0x0 === _0x2718b0 && (_0x2718b0 = new _0x47d24f['x'](0x0,0x1,0x0)), void 0x0 === _0x28cb0a && (_0x28cb0a = new _0x47d24f['x'](0x0,0x1,0x0)); var _0x51ad34 = new _0x5bafbf(_0x2e9167,_0x578bf8,_0x5a9875,_0x2718b0,_0x28cb0a); return this['particleEmitterType'] = _0x51ad34, _0x51ad34; } , _0x41611e['prototype']['createConeEmitter'] = function(_0x7a9d94, _0xeb8af4) { void 0x0 === _0x7a9d94 && (_0x7a9d94 = 0x1), void 0x0 === _0xeb8af4 && (_0xeb8af4 = Math['PI'] / 0x4); var _0x5bc6ea = new _0x1f7a9e(_0x7a9d94,_0xeb8af4); return this['particleEmitterType'] = _0x5bc6ea, _0x5bc6ea; } , _0x41611e['prototype']['createBoxEmitter'] = function(_0x20dbb2, _0x2c39df, _0x5738d4, _0x3dc50d) { var _0x50dc19 = new _0x22edcb(); return this['particleEmitterType'] = _0x50dc19, this['direction1'] = _0x20dbb2, this['direction2'] = _0x2c39df, this['minEmitBox'] = _0x5738d4, this['maxEmitBox'] = _0x3dc50d, _0x50dc19; } , _0x41611e['BLENDMODE_ONEONE'] = 0x0, _0x41611e['BLENDMODE_STANDARD'] = 0x1, _0x41611e['BLENDMODE_ADD'] = 0x2, _0x41611e['BLENDMODE_MULTIPLY'] = 0x3, _0x41611e['BLENDMODE_MULTIPLYADD'] = 0x4, _0x41611e; }(), _0x31ce89 = function() { function _0x29b71a(_0x12a7dc) { this['particleSystem'] = _0x12a7dc, this['position'] = _0x47d24f['x']['Zero'](), this['direction'] = _0x47d24f['x']['Zero'](), this['color'] = new _0x47d24f['f'](0x0,0x0,0x0,0x0), this['colorStep'] = new _0x47d24f['f'](0x0,0x0,0x0,0x0), this['lifeTime'] = 0x1, this['age'] = 0x0, this['size'] = 0x0, this['scale'] = new _0x47d24f['w'](0x1,0x1), this['angle'] = 0x0, this['angularSpeed'] = 0x0, this['cellIndex'] = 0x0, this['_attachedSubEmitters'] = null, this['_currentColor1'] = new _0x47d24f['f'](0x0,0x0,0x0,0x0), this['_currentColor2'] = new _0x47d24f['f'](0x0,0x0,0x0,0x0), this['_currentSize1'] = 0x0, this['_currentSize2'] = 0x0, this['_currentAngularSpeed1'] = 0x0, this['_currentAngularSpeed2'] = 0x0, this['_currentVelocity1'] = 0x0, this['_currentVelocity2'] = 0x0, this['_currentLimitVelocity1'] = 0x0, this['_currentLimitVelocity2'] = 0x0, this['_currentDrag1'] = 0x0, this['_currentDrag2'] = 0x0, this['id'] = _0x29b71a['_Count']++, this['particleSystem']['isAnimationSheetEnabled'] && this['updateCellInfoFromSystem'](); } return _0x29b71a['prototype']['updateCellInfoFromSystem'] = function() { this['cellIndex'] = this['particleSystem']['startSpriteCellID']; } , _0x29b71a['prototype']['updateCellIndex'] = function() { var _0x205d30 = this['age'] , _0x4ddc0a = this['particleSystem']['spriteCellChangeSpeed']; this['particleSystem']['spriteRandomStartCell'] && (void 0x0 === this['_randomCellOffset'] && (this['_randomCellOffset'] = Math['random']() * this['lifeTime']), 0x0 === _0x4ddc0a ? (_0x4ddc0a = 0x1, _0x205d30 = this['_randomCellOffset']) : _0x205d30 += this['_randomCellOffset']); var _0x6545be = this['_initialEndSpriteCellID'] - this['_initialStartSpriteCellID'] , _0x1918fa = _0x77cead['a']['Clamp'](_0x205d30 * _0x4ddc0a % this['lifeTime'] / this['lifeTime']); this['cellIndex'] = this['_initialStartSpriteCellID'] + _0x1918fa * _0x6545be | 0x0; } , _0x29b71a['prototype']['_inheritParticleInfoToSubEmitter'] = function(_0x46caa7) { if (_0x46caa7['particleSystem']['emitter']['position']) { var _0x499ebb = _0x46caa7['particleSystem']['emitter']; _0x499ebb['position']['copyFrom'](this['position']), _0x46caa7['inheritDirection'] && (_0x499ebb['position']['subtractToRef'](this['direction'], _0x47d24f['t']['Vector3'][0x0]), _0x499ebb['lookAt'](_0x47d24f['t']['Vector3'][0x0], 0x0, Math['PI'] / 0x2)); } else { _0x46caa7['particleSystem']['emitter']['copyFrom'](this['position']); } this['direction']['scaleToRef'](_0x46caa7['inheritedVelocityAmount'] / 0x2, _0x47d24f['t']['Vector3'][0x0]), _0x46caa7['particleSystem']['_inheritedVelocityOffset']['copyFrom'](_0x47d24f['t']['Vector3'][0x0]); } , _0x29b71a['prototype']['_inheritParticleInfoToSubEmitters'] = function() { var _0x2190df = this; this['_attachedSubEmitters'] && this['_attachedSubEmitters']['length'] > 0x0 && this['_attachedSubEmitters']['forEach'](function(_0x1670a5) { _0x2190df['_inheritParticleInfoToSubEmitter'](_0x1670a5); }); } , _0x29b71a['prototype']['_reset'] = function() { this['age'] = 0x0, this['_currentColorGradient'] = null, this['_currentSizeGradient'] = null, this['_currentAngularSpeedGradient'] = null, this['_currentVelocityGradient'] = null, this['_currentLimitVelocityGradient'] = null, this['_currentDragGradient'] = null, this['cellIndex'] = this['particleSystem']['startSpriteCellID'], this['_randomCellOffset'] = void 0x0; } , _0x29b71a['prototype']['copyTo'] = function(_0x57937c) { _0x57937c['position']['copyFrom'](this['position']), this['_initialDirection'] ? _0x57937c['_initialDirection'] ? _0x57937c['_initialDirection']['copyFrom'](this['_initialDirection']) : _0x57937c['_initialDirection'] = this['_initialDirection']['clone']() : _0x57937c['_initialDirection'] = null, _0x57937c['direction']['copyFrom'](this['direction']), _0x57937c['color']['copyFrom'](this['color']), _0x57937c['colorStep']['copyFrom'](this['colorStep']), _0x57937c['lifeTime'] = this['lifeTime'], _0x57937c['age'] = this['age'], _0x57937c['_randomCellOffset'] = this['_randomCellOffset'], _0x57937c['size'] = this['size'], _0x57937c['scale']['copyFrom'](this['scale']), _0x57937c['angle'] = this['angle'], _0x57937c['angularSpeed'] = this['angularSpeed'], _0x57937c['particleSystem'] = this['particleSystem'], _0x57937c['cellIndex'] = this['cellIndex'], _0x57937c['id'] = this['id'], _0x57937c['_attachedSubEmitters'] = this['_attachedSubEmitters'], this['_currentColorGradient'] && (_0x57937c['_currentColorGradient'] = this['_currentColorGradient'], _0x57937c['_currentColor1']['copyFrom'](this['_currentColor1']), _0x57937c['_currentColor2']['copyFrom'](this['_currentColor2'])), this['_currentSizeGradient'] && (_0x57937c['_currentSizeGradient'] = this['_currentSizeGradient'], _0x57937c['_currentSize1'] = this['_currentSize1'], _0x57937c['_currentSize2'] = this['_currentSize2']), this['_currentAngularSpeedGradient'] && (_0x57937c['_currentAngularSpeedGradient'] = this['_currentAngularSpeedGradient'], _0x57937c['_currentAngularSpeed1'] = this['_currentAngularSpeed1'], _0x57937c['_currentAngularSpeed2'] = this['_currentAngularSpeed2']), this['_currentVelocityGradient'] && (_0x57937c['_currentVelocityGradient'] = this['_currentVelocityGradient'], _0x57937c['_currentVelocity1'] = this['_currentVelocity1'], _0x57937c['_currentVelocity2'] = this['_currentVelocity2']), this['_currentLimitVelocityGradient'] && (_0x57937c['_currentLimitVelocityGradient'] = this['_currentLimitVelocityGradient'], _0x57937c['_currentLimitVelocity1'] = this['_currentLimitVelocity1'], _0x57937c['_currentLimitVelocity2'] = this['_currentLimitVelocity2']), this['_currentDragGradient'] && (_0x57937c['_currentDragGradient'] = this['_currentDragGradient'], _0x57937c['_currentDrag1'] = this['_currentDrag1'], _0x57937c['_currentDrag2'] = this['_currentDrag2']), this['particleSystem']['isAnimationSheetEnabled'] && (_0x57937c['_initialStartSpriteCellID'] = this['_initialStartSpriteCellID'], _0x57937c['_initialEndSpriteCellID'] = this['_initialEndSpriteCellID']), this['particleSystem']['useRampGradients'] && _0x57937c['remapData']['copyFrom'](this['remapData']), this['_randomNoiseCoordinates1'] && (_0x57937c['_randomNoiseCoordinates1'] ? (_0x57937c['_randomNoiseCoordinates1']['copyFrom'](this['_randomNoiseCoordinates1']), _0x57937c['_randomNoiseCoordinates2']['copyFrom'](this['_randomNoiseCoordinates2'])) : (_0x57937c['_randomNoiseCoordinates1'] = this['_randomNoiseCoordinates1']['clone'](), _0x57937c['_randomNoiseCoordinates2'] = this['_randomNoiseCoordinates2']['clone']())); } , _0x29b71a['_Count'] = 0x0, _0x29b71a; }(); !function(_0x372a1c) { _0x372a1c[_0x372a1c['ATTACHED'] = 0x0] = 'ATTACHED', _0x372a1c[_0x372a1c['END'] = 0x1] = 'END'; }(_0x3fcd14 || (_0x3fcd14 = {})); var _0x2feace = function() { function _0x41e112(_0x2b6a87) { this['particleSystem'] = _0x2b6a87, this['type'] = _0x3fcd14['END'], this['inheritDirection'] = !0x1, this['inheritedVelocityAmount'] = 0x0, _0x2b6a87['emitter'] && _0x2b6a87['emitter']['dispose'] || (_0x2b6a87['emitter'] = new _0x10c088['a']('SubemitterSystemEmitter',_0x2b6a87['getScene']())), _0x2b6a87['onDisposeObservable']['add'](function() { _0x2b6a87['emitter'] && _0x2b6a87['emitter']['dispose'] && _0x2b6a87['emitter']['dispose'](); }); } return _0x41e112['prototype']['clone'] = function() { var _0x3becd6 = this['particleSystem']['emitter']; _0x3becd6 ? _0x3becd6 instanceof _0x47d24f['x'] ? _0x3becd6 = _0x3becd6['clone']() : _0x3becd6 instanceof _0x10c088['a'] && ((_0x3becd6 = new _0xb4719b['a']('',_0x3becd6['getScene']()))['isVisible'] = !0x1) : _0x3becd6 = new _0x47d24f['x'](); var _0x245614 = new _0x41e112(this['particleSystem']['clone']('', _0x3becd6)); return _0x245614['type'] = this['type'], _0x245614['inheritDirection'] = this['inheritDirection'], _0x245614['inheritedVelocityAmount'] = this['inheritedVelocityAmount'], _0x245614['particleSystem']['_disposeEmitterOnDispose'] = !0x0, _0x245614['particleSystem']['disposeOnStop'] = !0x0, _0x245614; } , _0x41e112['prototype']['serialize'] = function() { var _0x16ea30 = {}; return _0x16ea30['type'] = this['type'], _0x16ea30['inheritDirection'] = this['inheritDirection'], _0x16ea30['inheritedVelocityAmount'] = this['inheritedVelocityAmount'], _0x16ea30['particleSystem'] = this['particleSystem']['serialize'](), _0x16ea30; } , _0x41e112['_ParseParticleSystem'] = function(_0x5cd34f, _0x27add8, _0x4080c9) { throw _0x2757ee['a']['WarnImport']('ParseParticle'); } , _0x41e112['Parse'] = function(_0x30c7ec, _0x341243, _0x40b114) { var _0x57b4b3 = _0x30c7ec['particleSystem'] , _0x2a7215 = new _0x41e112(_0x41e112['_ParseParticleSystem'](_0x57b4b3, _0x341243, _0x40b114)); return _0x2a7215['type'] = _0x30c7ec['type'], _0x2a7215['inheritDirection'] = _0x30c7ec['inheritDirection'], _0x2a7215['inheritedVelocityAmount'] = _0x30c7ec['inheritedVelocityAmount'], _0x2a7215['particleSystem']['_isSubEmitter'] = !0x0, _0x2a7215; } , _0x41e112['prototype']['dispose'] = function() { this['particleSystem']['dispose'](); } , _0x41e112; }() , _0x35436c = '\x0avarying\x20vec2\x20vUV;\x0avarying\x20vec4\x20vColor;\x0auniform\x20vec4\x20textureMask;\x0auniform\x20sampler2D\x20diffuseSampler;\x0a#include\x0a#include\x0a#include\x0a#include\x0a#ifdef\x20RAMPGRADIENT\x0avarying\x20vec4\x20remapRanges;\x0auniform\x20sampler2D\x20rampSampler;\x0a#endif\x0avoid\x20main(void)\x20{\x0a#include\x0avec4\x20textureColor=texture2D(diffuseSampler,vUV);\x0avec4\x20baseColor=(textureColor*textureMask+(vec4(1.,1.,1.,1.)-textureMask))*vColor;\x0a#ifdef\x20RAMPGRADIENT\x0afloat\x20alpha=baseColor.a;\x0afloat\x20remappedColorIndex=clamp((alpha-remapRanges.x)/remapRanges.y,0.0,1.0);\x0avec4\x20rampColor=texture2D(rampSampler,vec2(1.0-remappedColorIndex,0.));\x0abaseColor.rgb*=rampColor.rgb;\x0a\x0afloat\x20finalAlpha=baseColor.a;\x0abaseColor.a=clamp((alpha*rampColor.a-remapRanges.z)/remapRanges.w,0.0,1.0);\x0a#endif\x0a#ifdef\x20BLENDMULTIPLYMODE\x0afloat\x20sourceAlpha=vColor.a*textureColor.a;\x0abaseColor.rgb=baseColor.rgb*sourceAlpha+vec3(1.0)*(1.0-sourceAlpha);\x0a#endif\x0a\x0a\x0a#ifdef\x20IMAGEPROCESSINGPOSTPROCESS\x0abaseColor.rgb=toLinearSpace(baseColor.rgb);\x0a#else\x0a#ifdef\x20IMAGEPROCESSING\x0abaseColor.rgb=toLinearSpace(baseColor.rgb);\x0abaseColor=applyImageProcessing(baseColor);\x0a#endif\x0a#endif\x0agl_FragColor=baseColor;\x0a}'; _0x3e9e56['a']['ShadersStore']['particlesPixelShader'] = _0x35436c; var _0x395c1c = '\x0aattribute\x20vec3\x20position;\x0aattribute\x20vec4\x20color;\x0aattribute\x20float\x20angle;\x0aattribute\x20vec2\x20size;\x0a#ifdef\x20ANIMATESHEET\x0aattribute\x20float\x20cellIndex;\x0a#endif\x0a#ifndef\x20BILLBOARD\x0aattribute\x20vec3\x20direction;\x0a#endif\x0a#ifdef\x20BILLBOARDSTRETCHED\x0aattribute\x20vec3\x20direction;\x0a#endif\x0a#ifdef\x20RAMPGRADIENT\x0aattribute\x20vec4\x20remapData;\x0a#endif\x0aattribute\x20vec2\x20offset;\x0a\x0auniform\x20mat4\x20view;\x0auniform\x20mat4\x20projection;\x0auniform\x20vec2\x20translationPivot;\x0a#ifdef\x20ANIMATESHEET\x0auniform\x20vec3\x20particlesInfos;\x0a#endif\x0a\x0avarying\x20vec2\x20vUV;\x0avarying\x20vec4\x20vColor;\x0a#ifdef\x20RAMPGRADIENT\x0avarying\x20vec4\x20remapRanges;\x0a#endif\x0a#if\x20defined(CLIPPLANE)\x20||\x20defined(CLIPPLANE2)\x20||\x20defined(CLIPPLANE3)\x20||\x20defined(CLIPPLANE4)\x0auniform\x20mat4\x20invView;\x0a#endif\x0a#include\x0a#ifdef\x20BILLBOARD\x0auniform\x20vec3\x20eyePosition;\x0a#endif\x0avec3\x20rotate(vec3\x20yaxis,vec3\x20rotatedCorner)\x20{\x0avec3\x20xaxis=normalize(cross(vec3(0.,1.0,0.),yaxis));\x0avec3\x20zaxis=normalize(cross(yaxis,xaxis));\x0avec3\x20row0=vec3(xaxis.x,xaxis.y,xaxis.z);\x0avec3\x20row1=vec3(yaxis.x,yaxis.y,yaxis.z);\x0avec3\x20row2=vec3(zaxis.x,zaxis.y,zaxis.z);\x0amat3\x20rotMatrix=mat3(row0,row1,row2);\x0avec3\x20alignedCorner=rotMatrix*rotatedCorner;\x0areturn\x20position+alignedCorner;\x0a}\x0a#ifdef\x20BILLBOARDSTRETCHED\x0avec3\x20rotateAlign(vec3\x20toCamera,vec3\x20rotatedCorner)\x20{\x0avec3\x20normalizedToCamera=normalize(toCamera);\x0avec3\x20normalizedCrossDirToCamera=normalize(cross(normalize(direction),normalizedToCamera));\x0avec3\x20crossProduct=normalize(cross(normalizedToCamera,normalizedCrossDirToCamera));\x0avec3\x20row0=vec3(normalizedCrossDirToCamera.x,normalizedCrossDirToCamera.y,normalizedCrossDirToCamera.z);\x0avec3\x20row1=vec3(crossProduct.x,crossProduct.y,crossProduct.z);\x0avec3\x20row2=vec3(normalizedToCamera.x,normalizedToCamera.y,normalizedToCamera.z);\x0amat3\x20rotMatrix=mat3(row0,row1,row2);\x0avec3\x20alignedCorner=rotMatrix*rotatedCorner;\x0areturn\x20position+alignedCorner;\x0a}\x0a#endif\x0avoid\x20main(void)\x20{\x0avec2\x20cornerPos;\x0acornerPos=(vec2(offset.x-0.5,offset.y-0.5)-translationPivot)*size+translationPivot;\x0a#ifdef\x20BILLBOARD\x0a\x0avec3\x20rotatedCorner;\x0a#ifdef\x20BILLBOARDY\x0arotatedCorner.x=cornerPos.x*cos(angle)-cornerPos.y*sin(angle);\x0arotatedCorner.z=cornerPos.x*sin(angle)+cornerPos.y*cos(angle);\x0arotatedCorner.y=0.;\x0avec3\x20yaxis=position-eyePosition;\x0ayaxis.y=0.;\x0avec3\x20worldPos=rotate(normalize(yaxis),rotatedCorner);\x0avec3\x20viewPos=(view*vec4(worldPos,1.0)).xyz;\x0a#elif\x20defined(BILLBOARDSTRETCHED)\x0arotatedCorner.x=cornerPos.x*cos(angle)-cornerPos.y*sin(angle);\x0arotatedCorner.y=cornerPos.x*sin(angle)+cornerPos.y*cos(angle);\x0arotatedCorner.z=0.;\x0avec3\x20toCamera=position-eyePosition;\x0avec3\x20worldPos=rotateAlign(toCamera,rotatedCorner);\x0avec3\x20viewPos=(view*vec4(worldPos,1.0)).xyz;\x0a#else\x0arotatedCorner.x=cornerPos.x*cos(angle)-cornerPos.y*sin(angle);\x0arotatedCorner.y=cornerPos.x*sin(angle)+cornerPos.y*cos(angle);\x0arotatedCorner.z=0.;\x0avec3\x20viewPos=(view*vec4(position,1.0)).xyz+rotatedCorner;\x0a#endif\x0a#ifdef\x20RAMPGRADIENT\x0aremapRanges=remapData;\x0a#endif\x0a\x0agl_Position=projection*vec4(viewPos,1.0);\x0a#else\x0a\x0avec3\x20rotatedCorner;\x0arotatedCorner.x=cornerPos.x*cos(angle)-cornerPos.y*sin(angle);\x0arotatedCorner.z=cornerPos.x*sin(angle)+cornerPos.y*cos(angle);\x0arotatedCorner.y=0.;\x0avec3\x20yaxis=normalize(direction);\x0avec3\x20worldPos=rotate(yaxis,rotatedCorner);\x0agl_Position=projection*view*vec4(worldPos,1.0);\x0a#endif\x0avColor=color;\x0a#ifdef\x20ANIMATESHEET\x0afloat\x20rowOffset=floor(cellIndex/particlesInfos.z);\x0afloat\x20columnOffset=cellIndex-rowOffset*particlesInfos.z;\x0avec2\x20uvScale=particlesInfos.xy;\x0avec2\x20uvOffset=vec2(offset.x\x20,1.0-offset.y);\x0avUV=(uvOffset+vec2(columnOffset,rowOffset))*uvScale;\x0a#else\x0avUV=offset;\x0a#endif\x0a\x0a#if\x20defined(CLIPPLANE)\x20||\x20defined(CLIPPLANE2)\x20||\x20defined(CLIPPLANE3)\x20||\x20defined(CLIPPLANE4)\x0avec4\x20worldPos=invView*vec4(viewPos,1.0);\x0a#endif\x0a#include\x0a}'; _0x3e9e56['a']['ShadersStore']['particlesVertexShader'] = _0x395c1c; var _0x280da5 = function(_0x3bceb9) { function _0x542fbe(_0x1a276f, _0x58aa79, _0x5b59b0, _0x49f1bb, _0x3db731, _0x493cc2) { void 0x0 === _0x49f1bb && (_0x49f1bb = null), void 0x0 === _0x3db731 && (_0x3db731 = !0x1), void 0x0 === _0x493cc2 && (_0x493cc2 = 0.01); var _0x50d186 = _0x3bceb9['call'](this, _0x1a276f) || this; return _0x50d186['_inheritedVelocityOffset'] = new _0x47d24f['x'](), _0x50d186['onDisposeObservable'] = new _0x2dbec2['c'](), _0x50d186['_particles'] = new Array(), _0x50d186['_stockParticles'] = new Array(), _0x50d186['_newPartsExcess'] = 0x0, _0x50d186['_vertexBuffers'] = {}, _0x50d186['_scaledColorStep'] = new _0x47d24f['f'](0x0,0x0,0x0,0x0), _0x50d186['_colorDiff'] = new _0x47d24f['f'](0x0,0x0,0x0,0x0), _0x50d186['_scaledDirection'] = _0x47d24f['x']['Zero'](), _0x50d186['_scaledGravity'] = _0x47d24f['x']['Zero'](), _0x50d186['_currentRenderId'] = -0x1, _0x50d186['_useInstancing'] = !0x1, _0x50d186['_started'] = !0x1, _0x50d186['_stopped'] = !0x1, _0x50d186['_actualFrame'] = 0x0, _0x50d186['_currentEmitRate1'] = 0x0, _0x50d186['_currentEmitRate2'] = 0x0, _0x50d186['_currentStartSize1'] = 0x0, _0x50d186['_currentStartSize2'] = 0x0, _0x50d186['_rawTextureWidth'] = 0x100, _0x50d186['_useRampGradients'] = !0x1, _0x50d186['_disposeEmitterOnDispose'] = !0x1, _0x50d186['recycleParticle'] = function(_0x48ab94) { var _0x3c1fbc = _0x50d186['_particles']['pop'](); _0x3c1fbc !== _0x48ab94 && _0x3c1fbc['copyTo'](_0x48ab94), _0x50d186['_stockParticles']['push'](_0x3c1fbc); } , _0x50d186['_createParticle'] = function() { var _0x161cb1; if (0x0 !== _0x50d186['_stockParticles']['length'] ? (_0x161cb1 = _0x50d186['_stockParticles']['pop']())['_reset']() : _0x161cb1 = new _0x31ce89(_0x50d186), _0x50d186['_subEmitters'] && _0x50d186['_subEmitters']['length'] > 0x0) { var _0x10e2ba = _0x50d186['_subEmitters'][Math['floor'](Math['random']() * _0x50d186['_subEmitters']['length'])]; _0x161cb1['_attachedSubEmitters'] = [], _0x10e2ba['forEach'](function(_0xe17b71) { if (_0xe17b71['type'] === _0x3fcd14['ATTACHED']) { var _0x346512 = _0xe17b71['clone'](); _0x161cb1['_attachedSubEmitters']['push'](_0x346512), _0x346512['particleSystem']['start'](); } }); } return _0x161cb1; } , _0x50d186['_emitFromParticle'] = function(_0x36205b) { if (_0x50d186['_subEmitters'] && 0x0 !== _0x50d186['_subEmitters']['length']) { var _0x4f8f25 = Math['floor'](Math['random']() * _0x50d186['_subEmitters']['length']); _0x50d186['_subEmitters'][_0x4f8f25]['forEach'](function(_0x524e0a) { if (_0x524e0a['type'] === _0x3fcd14['END']) { var _0x3301ed = _0x524e0a['clone'](); _0x36205b['_inheritParticleInfoToSubEmitter'](_0x3301ed), _0x3301ed['particleSystem']['_rootParticleSystem'] = _0x50d186, _0x50d186['activeSubSystems']['push'](_0x3301ed['particleSystem']), _0x3301ed['particleSystem']['start'](); } }); } } , _0x50d186['_capacity'] = _0x58aa79, _0x50d186['_epsilon'] = _0x493cc2, _0x50d186['_isAnimationSheetEnabled'] = _0x3db731, _0x50d186['_scene'] = _0x5b59b0 || _0x48707b['a']['LastCreatedScene'], _0x50d186['_attachImageProcessingConfiguration'](null), _0x50d186['_customEffect'] = _0x49f1bb, _0x50d186['_scene']['particleSystems']['push'](_0x50d186), _0x50d186['_useInstancing'] = _0x50d186['_scene']['getEngine']()['getCaps']()['instancedArrays'], _0x50d186['_createIndexBuffer'](), _0x50d186['_createVertexBuffers'](), _0x50d186['particleEmitterType'] = new _0x22edcb(), _0x50d186['updateFunction'] = function(_0x169287) { var _0x256d6b = null , _0x336bc1 = null; _0x50d186['noiseTexture'] && (_0x256d6b = _0x50d186['noiseTexture']['getSize'](), _0x336bc1 = _0x50d186['noiseTexture']['getContent']()); for (var _0x35835e, _0x17f4c4 = function() { _0x35835e = _0x169287[_0xf1631a]; var _0x1bd03b = _0x50d186['_scaledUpdateSpeed'] , _0x20c6e6 = _0x35835e['age']; if (_0x35835e['age'] += _0x1bd03b, _0x35835e['age'] > _0x35835e['lifeTime']) { var _0x247ac7 = _0x35835e['age'] - _0x20c6e6; _0x1bd03b = (_0x35835e['lifeTime'] - _0x20c6e6) * _0x1bd03b / _0x247ac7, _0x35835e['age'] = _0x35835e['lifeTime']; } var _0x57c838 = _0x35835e['age'] / _0x35835e['lifeTime']; _0x50d186['_colorGradients'] && _0x50d186['_colorGradients']['length'] > 0x0 ? _0x1eb50e['h']['GetCurrentGradient'](_0x57c838, _0x50d186['_colorGradients'], function(_0x16ac9f, _0xa28bda, _0x1049f1) { _0x16ac9f !== _0x35835e['_currentColorGradient'] && (_0x35835e['_currentColor1']['copyFrom'](_0x35835e['_currentColor2']), _0xa28bda['getColorToRef'](_0x35835e['_currentColor2']), _0x35835e['_currentColorGradient'] = _0x16ac9f), _0x47d24f['f']['LerpToRef'](_0x35835e['_currentColor1'], _0x35835e['_currentColor2'], _0x1049f1, _0x35835e['color']); }) : (_0x35835e['colorStep']['scaleToRef'](_0x1bd03b, _0x50d186['_scaledColorStep']), _0x35835e['color']['addInPlace'](_0x50d186['_scaledColorStep']), _0x35835e['color']['a'] < 0x0 && (_0x35835e['color']['a'] = 0x0)), _0x50d186['_angularSpeedGradients'] && _0x50d186['_angularSpeedGradients']['length'] > 0x0 && _0x1eb50e['h']['GetCurrentGradient'](_0x57c838, _0x50d186['_angularSpeedGradients'], function(_0x411529, _0x51558a, _0x23c3a2) { _0x411529 !== _0x35835e['_currentAngularSpeedGradient'] && (_0x35835e['_currentAngularSpeed1'] = _0x35835e['_currentAngularSpeed2'], _0x35835e['_currentAngularSpeed2'] = _0x51558a['getFactor'](), _0x35835e['_currentAngularSpeedGradient'] = _0x411529), _0x35835e['angularSpeed'] = _0x77cead['a']['Lerp'](_0x35835e['_currentAngularSpeed1'], _0x35835e['_currentAngularSpeed2'], _0x23c3a2); }), _0x35835e['angle'] += _0x35835e['angularSpeed'] * _0x1bd03b; var _0x424000 = _0x1bd03b; if (_0x50d186['_velocityGradients'] && _0x50d186['_velocityGradients']['length'] > 0x0 && _0x1eb50e['h']['GetCurrentGradient'](_0x57c838, _0x50d186['_velocityGradients'], function(_0x4b37ec, _0x2070b4, _0x3b814d) { _0x4b37ec !== _0x35835e['_currentVelocityGradient'] && (_0x35835e['_currentVelocity1'] = _0x35835e['_currentVelocity2'], _0x35835e['_currentVelocity2'] = _0x2070b4['getFactor'](), _0x35835e['_currentVelocityGradient'] = _0x4b37ec), _0x424000 *= _0x77cead['a']['Lerp'](_0x35835e['_currentVelocity1'], _0x35835e['_currentVelocity2'], _0x3b814d); }), _0x35835e['direction']['scaleToRef'](_0x424000, _0x50d186['_scaledDirection']), _0x50d186['_limitVelocityGradients'] && _0x50d186['_limitVelocityGradients']['length'] > 0x0 && _0x1eb50e['h']['GetCurrentGradient'](_0x57c838, _0x50d186['_limitVelocityGradients'], function(_0x4cd8cf, _0x188195, _0x228080) { _0x4cd8cf !== _0x35835e['_currentLimitVelocityGradient'] && (_0x35835e['_currentLimitVelocity1'] = _0x35835e['_currentLimitVelocity2'], _0x35835e['_currentLimitVelocity2'] = _0x188195['getFactor'](), _0x35835e['_currentLimitVelocityGradient'] = _0x4cd8cf); var _0x1a6e37 = _0x77cead['a']['Lerp'](_0x35835e['_currentLimitVelocity1'], _0x35835e['_currentLimitVelocity2'], _0x228080); _0x35835e['direction']['length']() > _0x1a6e37 && _0x35835e['direction']['scaleInPlace'](_0x50d186['limitVelocityDamping']); }), _0x50d186['_dragGradients'] && _0x50d186['_dragGradients']['length'] > 0x0 && _0x1eb50e['h']['GetCurrentGradient'](_0x57c838, _0x50d186['_dragGradients'], function(_0x60d412, _0x5070dd, _0x4bd566) { _0x60d412 !== _0x35835e['_currentDragGradient'] && (_0x35835e['_currentDrag1'] = _0x35835e['_currentDrag2'], _0x35835e['_currentDrag2'] = _0x5070dd['getFactor'](), _0x35835e['_currentDragGradient'] = _0x60d412); var _0x533404 = _0x77cead['a']['Lerp'](_0x35835e['_currentDrag1'], _0x35835e['_currentDrag2'], _0x4bd566); _0x50d186['_scaledDirection']['scaleInPlace'](0x1 - _0x533404); }), _0x35835e['position']['addInPlace'](_0x50d186['_scaledDirection']), _0x336bc1 && _0x256d6b && _0x35835e['_randomNoiseCoordinates1']) { var _0x52d899 = _0x50d186['_fetchR'](_0x35835e['_randomNoiseCoordinates1']['x'], _0x35835e['_randomNoiseCoordinates1']['y'], _0x256d6b['width'], _0x256d6b['height'], _0x336bc1) , _0x3a2c76 = _0x50d186['_fetchR'](_0x35835e['_randomNoiseCoordinates1']['z'], _0x35835e['_randomNoiseCoordinates2']['x'], _0x256d6b['width'], _0x256d6b['height'], _0x336bc1) , _0x440aa8 = _0x50d186['_fetchR'](_0x35835e['_randomNoiseCoordinates2']['y'], _0x35835e['_randomNoiseCoordinates2']['z'], _0x256d6b['width'], _0x256d6b['height'], _0x336bc1) , _0x5e30c7 = _0x47d24f['t']['Vector3'][0x0] , _0x196f26 = _0x47d24f['t']['Vector3'][0x1]; _0x5e30c7['copyFromFloats']((0x2 * _0x52d899 - 0x1) * _0x50d186['noiseStrength']['x'], (0x2 * _0x3a2c76 - 0x1) * _0x50d186['noiseStrength']['y'], (0x2 * _0x440aa8 - 0x1) * _0x50d186['noiseStrength']['z']), _0x5e30c7['scaleToRef'](_0x1bd03b, _0x196f26), _0x35835e['direction']['addInPlace'](_0x196f26); } if (_0x50d186['gravity']['scaleToRef'](_0x1bd03b, _0x50d186['_scaledGravity']), _0x35835e['direction']['addInPlace'](_0x50d186['_scaledGravity']), _0x50d186['_sizeGradients'] && _0x50d186['_sizeGradients']['length'] > 0x0 && _0x1eb50e['h']['GetCurrentGradient'](_0x57c838, _0x50d186['_sizeGradients'], function(_0x39dc7a, _0x5098ec, _0x1f939a) { _0x39dc7a !== _0x35835e['_currentSizeGradient'] && (_0x35835e['_currentSize1'] = _0x35835e['_currentSize2'], _0x35835e['_currentSize2'] = _0x5098ec['getFactor'](), _0x35835e['_currentSizeGradient'] = _0x39dc7a), _0x35835e['size'] = _0x77cead['a']['Lerp'](_0x35835e['_currentSize1'], _0x35835e['_currentSize2'], _0x1f939a); }), _0x50d186['_useRampGradients'] && (_0x50d186['_colorRemapGradients'] && _0x50d186['_colorRemapGradients']['length'] > 0x0 && _0x1eb50e['h']['GetCurrentGradient'](_0x57c838, _0x50d186['_colorRemapGradients'], function(_0x381667, _0x44b2d9, _0x4ece02) { var _0x510f6c = _0x77cead['a']['Lerp'](_0x381667['factor1'], _0x44b2d9['factor1'], _0x4ece02) , _0x186b8e = _0x77cead['a']['Lerp'](_0x381667['factor2'], _0x44b2d9['factor2'], _0x4ece02); _0x35835e['remapData']['x'] = _0x510f6c, _0x35835e['remapData']['y'] = _0x186b8e - _0x510f6c; }), _0x50d186['_alphaRemapGradients'] && _0x50d186['_alphaRemapGradients']['length'] > 0x0 && _0x1eb50e['h']['GetCurrentGradient'](_0x57c838, _0x50d186['_alphaRemapGradients'], function(_0xc9fcab, _0x3c9534, _0x7897d7) { var _0x5bf01d = _0x77cead['a']['Lerp'](_0xc9fcab['factor1'], _0x3c9534['factor1'], _0x7897d7) , _0x57616d = _0x77cead['a']['Lerp'](_0xc9fcab['factor2'], _0x3c9534['factor2'], _0x7897d7); _0x35835e['remapData']['z'] = _0x5bf01d, _0x35835e['remapData']['w'] = _0x57616d - _0x5bf01d; })), _0x50d186['_isAnimationSheetEnabled'] && _0x35835e['updateCellIndex'](), _0x35835e['_inheritParticleInfoToSubEmitters'](), _0x35835e['age'] >= _0x35835e['lifeTime']) return _0x50d186['_emitFromParticle'](_0x35835e), _0x35835e['_attachedSubEmitters'] && (_0x35835e['_attachedSubEmitters']['forEach'](function(_0x43824f) { _0x43824f['particleSystem']['disposeOnStop'] = !0x0, _0x43824f['particleSystem']['stop'](); }), _0x35835e['_attachedSubEmitters'] = null), _0x50d186['recycleParticle'](_0x35835e), _0xf1631a--, 'continue'; }, _0xf1631a = 0x0; _0xf1631a < _0x169287['length']; _0xf1631a++) _0x17f4c4(); } , _0x50d186; } return _0x420e5b['d'](_0x542fbe, _0x3bceb9), Object['defineProperty'](_0x542fbe['prototype'], 'onDispose', { 'set': function(_0x4cf16e) { this['_onDisposeObserver'] && this['onDisposeObservable']['remove'](this['_onDisposeObserver']), this['_onDisposeObserver'] = this['onDisposeObservable']['add'](_0x4cf16e); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x542fbe['prototype'], 'useRampGradients', { 'get': function() { return this['_useRampGradients']; }, 'set': function(_0x5d955e) { this['_useRampGradients'] !== _0x5d955e && (this['_useRampGradients'] = _0x5d955e, this['_resetEffect']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x542fbe['prototype'], 'particles', { 'get': function() { return this['_particles']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x542fbe['prototype']['getClassName'] = function() { return 'ParticleSystem'; } , _0x542fbe['prototype']['_addFactorGradient'] = function(_0x4ebe12, _0x2506ce, _0x3d6932, _0x2ef24e) { var _0x29aa64 = new _0x1eb50e['d'](); _0x29aa64['gradient'] = _0x2506ce, _0x29aa64['factor1'] = _0x3d6932, _0x29aa64['factor2'] = _0x2ef24e, _0x4ebe12['push'](_0x29aa64), _0x4ebe12['sort'](function(_0x5d44a7, _0xc3c357) { return _0x5d44a7['gradient'] < _0xc3c357['gradient'] ? -0x1 : _0x5d44a7['gradient'] > _0xc3c357['gradient'] ? 0x1 : 0x0; }); } , _0x542fbe['prototype']['_removeFactorGradient'] = function(_0x15479c, _0x39a9ea) { if (_0x15479c) for (var _0x2ddda3 = 0x0, _0x542067 = 0x0, _0x55b8d5 = _0x15479c; _0x542067 < _0x55b8d5['length']; _0x542067++) { if (_0x55b8d5[_0x542067]['gradient'] === _0x39a9ea) { _0x15479c['splice'](_0x2ddda3, 0x1); break; } _0x2ddda3++; } } , _0x542fbe['prototype']['addLifeTimeGradient'] = function(_0x13ff26, _0x5a9b65, _0x3ef602) { return this['_lifeTimeGradients'] || (this['_lifeTimeGradients'] = []), this['_addFactorGradient'](this['_lifeTimeGradients'], _0x13ff26, _0x5a9b65, _0x3ef602), this; } , _0x542fbe['prototype']['removeLifeTimeGradient'] = function(_0x3848e2) { return this['_removeFactorGradient'](this['_lifeTimeGradients'], _0x3848e2), this; } , _0x542fbe['prototype']['addSizeGradient'] = function(_0x4a637e, _0x543145, _0x2eef28) { return this['_sizeGradients'] || (this['_sizeGradients'] = []), this['_addFactorGradient'](this['_sizeGradients'], _0x4a637e, _0x543145, _0x2eef28), this; } , _0x542fbe['prototype']['removeSizeGradient'] = function(_0xc96020) { return this['_removeFactorGradient'](this['_sizeGradients'], _0xc96020), this; } , _0x542fbe['prototype']['addColorRemapGradient'] = function(_0x28cf9e, _0x4b4020, _0x51d543) { return this['_colorRemapGradients'] || (this['_colorRemapGradients'] = []), this['_addFactorGradient'](this['_colorRemapGradients'], _0x28cf9e, _0x4b4020, _0x51d543), this; } , _0x542fbe['prototype']['removeColorRemapGradient'] = function(_0x564abf) { return this['_removeFactorGradient'](this['_colorRemapGradients'], _0x564abf), this; } , _0x542fbe['prototype']['addAlphaRemapGradient'] = function(_0xb81dc4, _0xfa02fa, _0x3c7550) { return this['_alphaRemapGradients'] || (this['_alphaRemapGradients'] = []), this['_addFactorGradient'](this['_alphaRemapGradients'], _0xb81dc4, _0xfa02fa, _0x3c7550), this; } , _0x542fbe['prototype']['removeAlphaRemapGradient'] = function(_0x4b297a) { return this['_removeFactorGradient'](this['_alphaRemapGradients'], _0x4b297a), this; } , _0x542fbe['prototype']['addAngularSpeedGradient'] = function(_0x58b447, _0x476397, _0x3b5ae4) { return this['_angularSpeedGradients'] || (this['_angularSpeedGradients'] = []), this['_addFactorGradient'](this['_angularSpeedGradients'], _0x58b447, _0x476397, _0x3b5ae4), this; } , _0x542fbe['prototype']['removeAngularSpeedGradient'] = function(_0xf61ad8) { return this['_removeFactorGradient'](this['_angularSpeedGradients'], _0xf61ad8), this; } , _0x542fbe['prototype']['addVelocityGradient'] = function(_0x57a23b, _0x36946b, _0x3c3bb0) { return this['_velocityGradients'] || (this['_velocityGradients'] = []), this['_addFactorGradient'](this['_velocityGradients'], _0x57a23b, _0x36946b, _0x3c3bb0), this; } , _0x542fbe['prototype']['removeVelocityGradient'] = function(_0x17acf0) { return this['_removeFactorGradient'](this['_velocityGradients'], _0x17acf0), this; } , _0x542fbe['prototype']['addLimitVelocityGradient'] = function(_0x44dc25, _0x400f22, _0x4ba2f4) { return this['_limitVelocityGradients'] || (this['_limitVelocityGradients'] = []), this['_addFactorGradient'](this['_limitVelocityGradients'], _0x44dc25, _0x400f22, _0x4ba2f4), this; } , _0x542fbe['prototype']['removeLimitVelocityGradient'] = function(_0x58bda3) { return this['_removeFactorGradient'](this['_limitVelocityGradients'], _0x58bda3), this; } , _0x542fbe['prototype']['addDragGradient'] = function(_0x588178, _0x181a84, _0x259247) { return this['_dragGradients'] || (this['_dragGradients'] = []), this['_addFactorGradient'](this['_dragGradients'], _0x588178, _0x181a84, _0x259247), this; } , _0x542fbe['prototype']['removeDragGradient'] = function(_0x5edcba) { return this['_removeFactorGradient'](this['_dragGradients'], _0x5edcba), this; } , _0x542fbe['prototype']['addEmitRateGradient'] = function(_0x73320e, _0x75386d, _0x4d8155) { return this['_emitRateGradients'] || (this['_emitRateGradients'] = []), this['_addFactorGradient'](this['_emitRateGradients'], _0x73320e, _0x75386d, _0x4d8155), this; } , _0x542fbe['prototype']['removeEmitRateGradient'] = function(_0x283f46) { return this['_removeFactorGradient'](this['_emitRateGradients'], _0x283f46), this; } , _0x542fbe['prototype']['addStartSizeGradient'] = function(_0x375313, _0x4d426, _0x4d52f8) { return this['_startSizeGradients'] || (this['_startSizeGradients'] = []), this['_addFactorGradient'](this['_startSizeGradients'], _0x375313, _0x4d426, _0x4d52f8), this; } , _0x542fbe['prototype']['removeStartSizeGradient'] = function(_0x3dc4a6) { return this['_removeFactorGradient'](this['_emitRateGradients'], _0x3dc4a6), this; } , _0x542fbe['prototype']['_createRampGradientTexture'] = function() { if (this['_rampGradients'] && this['_rampGradients']['length'] && !this['_rampGradientsTexture']) { for (var _0x52094c = new Uint8Array(0x4 * this['_rawTextureWidth']), _0x40715c = _0x47d24f['t']['Color3'][0x0], _0x51af9f = 0x0; _0x51af9f < this['_rawTextureWidth']; _0x51af9f++) { var _0x2f18c9 = _0x51af9f / this['_rawTextureWidth']; _0x1eb50e['h']['GetCurrentGradient'](_0x2f18c9, this['_rampGradients'], function(_0x47edf4, _0x3cae21, _0x3608bc) { _0x47d24f['e']['LerpToRef'](_0x47edf4['color'], _0x3cae21['color'], _0x3608bc, _0x40715c), _0x52094c[0x4 * _0x51af9f] = 0xff * _0x40715c['r'], _0x52094c[0x4 * _0x51af9f + 0x1] = 0xff * _0x40715c['g'], _0x52094c[0x4 * _0x51af9f + 0x2] = 0xff * _0x40715c['b'], _0x52094c[0x4 * _0x51af9f + 0x3] = 0xff; }); } this['_rampGradientsTexture'] = _0x16dc17['CreateRGBATexture'](_0x52094c, this['_rawTextureWidth'], 0x1, this['_scene'], !0x1, !0x1, _0x11d14a['a']['NEAREST_SAMPLINGMODE']); } } , _0x542fbe['prototype']['getRampGradients'] = function() { return this['_rampGradients']; } , _0x542fbe['prototype']['addRampGradient'] = function(_0x2ad51d, _0x579b2b) { this['_rampGradients'] || (this['_rampGradients'] = []); var _0x3ed62d = new _0x1eb50e['b'](); return _0x3ed62d['gradient'] = _0x2ad51d, _0x3ed62d['color'] = _0x579b2b, this['_rampGradients']['push'](_0x3ed62d), this['_rampGradients']['sort'](function(_0x122639, _0x5afd63) { return _0x122639['gradient'] < _0x5afd63['gradient'] ? -0x1 : _0x122639['gradient'] > _0x5afd63['gradient'] ? 0x1 : 0x0; }), this['_rampGradientsTexture'] && (this['_rampGradientsTexture']['dispose'](), this['_rampGradientsTexture'] = null), this['_createRampGradientTexture'](), this; } , _0x542fbe['prototype']['removeRampGradient'] = function(_0x4be0e4) { return this['_removeGradientAndTexture'](_0x4be0e4, this['_rampGradients'], this['_rampGradientsTexture']), this['_rampGradientsTexture'] = null, this['_rampGradients'] && this['_rampGradients']['length'] > 0x0 && this['_createRampGradientTexture'](), this; } , _0x542fbe['prototype']['addColorGradient'] = function(_0x1e9f59, _0x4aad71, _0x17fb6b) { this['_colorGradients'] || (this['_colorGradients'] = []); var _0x4ac86c = new _0x1eb50e['c'](); return _0x4ac86c['gradient'] = _0x1e9f59, _0x4ac86c['color1'] = _0x4aad71, _0x4ac86c['color2'] = _0x17fb6b, this['_colorGradients']['push'](_0x4ac86c), this['_colorGradients']['sort'](function(_0x423b24, _0x2426fe) { return _0x423b24['gradient'] < _0x2426fe['gradient'] ? -0x1 : _0x423b24['gradient'] > _0x2426fe['gradient'] ? 0x1 : 0x0; }), this; } , _0x542fbe['prototype']['removeColorGradient'] = function(_0x420c17) { if (!this['_colorGradients']) return this; for (var _0x4b606e = 0x0, _0x2635db = 0x0, _0x5b121f = this['_colorGradients']; _0x2635db < _0x5b121f['length']; _0x2635db++) { if (_0x5b121f[_0x2635db]['gradient'] === _0x420c17) { this['_colorGradients']['splice'](_0x4b606e, 0x1); break; } _0x4b606e++; } return this; } , _0x542fbe['prototype']['_fetchR'] = function(_0x4c782a, _0x3ba41a, _0x19d40e, _0x6b960c, _0x40b4db) { return _0x40b4db[0x4 * (((_0x4c782a = 0.5 * Math['abs'](_0x4c782a) + 0.5) * _0x19d40e % _0x19d40e | 0x0) + ((_0x3ba41a = 0.5 * Math['abs'](_0x3ba41a) + 0.5) * _0x6b960c % _0x6b960c | 0x0) * _0x19d40e)] / 0xff; } , _0x542fbe['prototype']['_reset'] = function() { this['_resetEffect'](); } , _0x542fbe['prototype']['_resetEffect'] = function() { this['_vertexBuffer'] && (this['_vertexBuffer']['dispose'](), this['_vertexBuffer'] = null), this['_spriteBuffer'] && (this['_spriteBuffer']['dispose'](), this['_spriteBuffer'] = null), this['_createVertexBuffers'](); } , _0x542fbe['prototype']['_createVertexBuffers'] = function() { this['_vertexBufferSize'] = this['_useInstancing'] ? 0xa : 0xc, this['_isAnimationSheetEnabled'] && (this['_vertexBufferSize'] += 0x1), this['_isBillboardBased'] && this['billboardMode'] !== _0x542fbe['BILLBOARDMODE_STRETCHED'] || (this['_vertexBufferSize'] += 0x3), this['_useRampGradients'] && (this['_vertexBufferSize'] += 0x4); var _0x4cc2bb = this['_scene']['getEngine'](); this['_vertexData'] = new Float32Array(this['_capacity'] * this['_vertexBufferSize'] * (this['_useInstancing'] ? 0x1 : 0x4)), this['_vertexBuffer'] = new _0x4209f7['a'](_0x4cc2bb,this['_vertexData'],!0x0,this['_vertexBufferSize']); var _0x2a98f0 = 0x0 , _0x178dc9 = this['_vertexBuffer']['createVertexBuffer'](_0x4209f7['b']['PositionKind'], _0x2a98f0, 0x3, this['_vertexBufferSize'], this['_useInstancing']); this['_vertexBuffers'][_0x4209f7['b']['PositionKind']] = _0x178dc9, _0x2a98f0 += 0x3; var _0x94c051 = this['_vertexBuffer']['createVertexBuffer'](_0x4209f7['b']['ColorKind'], _0x2a98f0, 0x4, this['_vertexBufferSize'], this['_useInstancing']); this['_vertexBuffers'][_0x4209f7['b']['ColorKind']] = _0x94c051, _0x2a98f0 += 0x4; var _0x2d46b6 = this['_vertexBuffer']['createVertexBuffer']('angle', _0x2a98f0, 0x1, this['_vertexBufferSize'], this['_useInstancing']); this['_vertexBuffers']['angle'] = _0x2d46b6, _0x2a98f0 += 0x1; var _0x26c18a, _0x106caa = this['_vertexBuffer']['createVertexBuffer']('size', _0x2a98f0, 0x2, this['_vertexBufferSize'], this['_useInstancing']); if (this['_vertexBuffers']['size'] = _0x106caa, _0x2a98f0 += 0x2, this['_isAnimationSheetEnabled']) { var _0x5d3baf = this['_vertexBuffer']['createVertexBuffer']('cellIndex', _0x2a98f0, 0x1, this['_vertexBufferSize'], this['_useInstancing']); this['_vertexBuffers']['cellIndex'] = _0x5d3baf, _0x2a98f0 += 0x1; } if (!this['_isBillboardBased'] || this['billboardMode'] === _0x542fbe['BILLBOARDMODE_STRETCHED']) { var _0x9cf8c6 = this['_vertexBuffer']['createVertexBuffer']('direction', _0x2a98f0, 0x3, this['_vertexBufferSize'], this['_useInstancing']); this['_vertexBuffers']['direction'] = _0x9cf8c6, _0x2a98f0 += 0x3; } if (this['_useRampGradients']) { var _0x38697c = this['_vertexBuffer']['createVertexBuffer']('remapData', _0x2a98f0, 0x4, this['_vertexBufferSize'], this['_useInstancing']); this['_vertexBuffers']['remapData'] = _0x38697c, _0x2a98f0 += 0x4; } if (this['_useInstancing']) { var _0x5c7814 = new Float32Array([0x0, 0x0, 0x1, 0x0, 0x1, 0x1, 0x0, 0x1]); this['_spriteBuffer'] = new _0x4209f7['a'](_0x4cc2bb,_0x5c7814,!0x1,0x2), _0x26c18a = this['_spriteBuffer']['createVertexBuffer']('offset', 0x0, 0x2); } else _0x26c18a = this['_vertexBuffer']['createVertexBuffer']('offset', _0x2a98f0, 0x2, this['_vertexBufferSize'], this['_useInstancing']), _0x2a98f0 += 0x2; this['_vertexBuffers']['offset'] = _0x26c18a; } , _0x542fbe['prototype']['_createIndexBuffer'] = function() { if (!this['_useInstancing']) { for (var _0x7d15c6 = [], _0x12d6e1 = 0x0, _0x1b9fb1 = 0x0; _0x1b9fb1 < this['_capacity']; _0x1b9fb1++) _0x7d15c6['push'](_0x12d6e1), _0x7d15c6['push'](_0x12d6e1 + 0x1), _0x7d15c6['push'](_0x12d6e1 + 0x2), _0x7d15c6['push'](_0x12d6e1), _0x7d15c6['push'](_0x12d6e1 + 0x2), _0x7d15c6['push'](_0x12d6e1 + 0x3), _0x12d6e1 += 0x4; this['_indexBuffer'] = this['_scene']['getEngine']()['createIndexBuffer'](_0x7d15c6); } } , _0x542fbe['prototype']['getCapacity'] = function() { return this['_capacity']; } , _0x542fbe['prototype']['isAlive'] = function() { return this['_alive']; } , _0x542fbe['prototype']['isStarted'] = function() { return this['_started']; } , _0x542fbe['prototype']['_prepareSubEmitterInternalArray'] = function() { var _0x725c52 = this; this['_subEmitters'] = new Array(), this['subEmitters'] && this['subEmitters']['forEach'](function(_0x3f6dfa) { _0x3f6dfa instanceof _0x542fbe ? _0x725c52['_subEmitters']['push']([new _0x2feace(_0x3f6dfa)]) : _0x3f6dfa instanceof _0x2feace ? _0x725c52['_subEmitters']['push']([_0x3f6dfa]) : _0x3f6dfa instanceof Array && _0x725c52['_subEmitters']['push'](_0x3f6dfa); }); } , _0x542fbe['prototype']['start'] = function(_0x19c5d8) { var _0x351b87 = this; if (void 0x0 === _0x19c5d8 && (_0x19c5d8 = this['startDelay']), !this['targetStopDuration'] && this['_hasTargetStopDurationDependantGradient']()) throw 'Particle\x20system\x20started\x20with\x20a\x20targetStopDuration\x20dependant\x20gradient\x20(eg.\x20startSizeGradients)\x20but\x20no\x20targetStopDuration\x20set'; if (_0x19c5d8) setTimeout(function() { _0x351b87['start'](0x0); }, _0x19c5d8); else { if (this['_prepareSubEmitterInternalArray'](), this['_started'] = !0x0, this['_stopped'] = !0x1, this['_actualFrame'] = 0x0, this['_subEmitters'] && 0x0 != this['_subEmitters']['length'] && (this['activeSubSystems'] = new Array()), this['_emitRateGradients'] && (this['_emitRateGradients']['length'] > 0x0 && (this['_currentEmitRateGradient'] = this['_emitRateGradients'][0x0], this['_currentEmitRate1'] = this['_currentEmitRateGradient']['getFactor'](), this['_currentEmitRate2'] = this['_currentEmitRate1']), this['_emitRateGradients']['length'] > 0x1 && (this['_currentEmitRate2'] = this['_emitRateGradients'][0x1]['getFactor']())), this['_startSizeGradients'] && (this['_startSizeGradients']['length'] > 0x0 && (this['_currentStartSizeGradient'] = this['_startSizeGradients'][0x0], this['_currentStartSize1'] = this['_currentStartSizeGradient']['getFactor'](), this['_currentStartSize2'] = this['_currentStartSize1']), this['_startSizeGradients']['length'] > 0x1 && (this['_currentStartSize2'] = this['_startSizeGradients'][0x1]['getFactor']())), this['preWarmCycles']) { this['emitter']instanceof _0x10c088['a'] && this['emitter']['computeWorldMatrix'](!0x0); var _0x5bef15 = this['noiseTexture']; if (_0x5bef15 && _0x5bef15['onGeneratedObservable']) _0x5bef15['onGeneratedObservable']['addOnce'](function() { setTimeout(function() { for (var _0x2fa0a0 = 0x0; _0x2fa0a0 < _0x351b87['preWarmCycles']; _0x2fa0a0++) _0x351b87['animate'](!0x0), _0x5bef15['render'](); }); }); else for (var _0x482afd = 0x0; _0x482afd < this['preWarmCycles']; _0x482afd++) this['animate'](!0x0); } this['beginAnimationOnStart'] && this['animations'] && this['animations']['length'] > 0x0 && this['getScene']()['beginAnimation'](this, this['beginAnimationFrom'], this['beginAnimationTo'], this['beginAnimationLoop']); } } , _0x542fbe['prototype']['stop'] = function(_0x25385d) { void 0x0 === _0x25385d && (_0x25385d = !0x0), this['_stopped'] = !0x0, _0x25385d && this['_stopSubEmitters'](); } , _0x542fbe['prototype']['reset'] = function() { this['_stockParticles'] = [], this['_particles'] = []; } , _0x542fbe['prototype']['_appendParticleVertex'] = function(_0x5f24f9, _0x6467d2, _0x387b03, _0x4548c6) { var _0x44274f = _0x5f24f9 * this['_vertexBufferSize']; this['_vertexData'][_0x44274f++] = _0x6467d2['position']['x'] + this['worldOffset']['x'], this['_vertexData'][_0x44274f++] = _0x6467d2['position']['y'] + this['worldOffset']['y'], this['_vertexData'][_0x44274f++] = _0x6467d2['position']['z'] + this['worldOffset']['z'], this['_vertexData'][_0x44274f++] = _0x6467d2['color']['r'], this['_vertexData'][_0x44274f++] = _0x6467d2['color']['g'], this['_vertexData'][_0x44274f++] = _0x6467d2['color']['b'], this['_vertexData'][_0x44274f++] = _0x6467d2['color']['a'], this['_vertexData'][_0x44274f++] = _0x6467d2['angle'], this['_vertexData'][_0x44274f++] = _0x6467d2['scale']['x'] * _0x6467d2['size'], this['_vertexData'][_0x44274f++] = _0x6467d2['scale']['y'] * _0x6467d2['size'], this['_isAnimationSheetEnabled'] && (this['_vertexData'][_0x44274f++] = _0x6467d2['cellIndex']), this['_isBillboardBased'] ? this['billboardMode'] === _0x542fbe['BILLBOARDMODE_STRETCHED'] && (this['_vertexData'][_0x44274f++] = _0x6467d2['direction']['x'], this['_vertexData'][_0x44274f++] = _0x6467d2['direction']['y'], this['_vertexData'][_0x44274f++] = _0x6467d2['direction']['z']) : _0x6467d2['_initialDirection'] ? (this['_vertexData'][_0x44274f++] = _0x6467d2['_initialDirection']['x'], this['_vertexData'][_0x44274f++] = _0x6467d2['_initialDirection']['y'], this['_vertexData'][_0x44274f++] = _0x6467d2['_initialDirection']['z']) : (this['_vertexData'][_0x44274f++] = _0x6467d2['direction']['x'], this['_vertexData'][_0x44274f++] = _0x6467d2['direction']['y'], this['_vertexData'][_0x44274f++] = _0x6467d2['direction']['z']), this['_useRampGradients'] && (this['_vertexData'][_0x44274f++] = _0x6467d2['remapData']['x'], this['_vertexData'][_0x44274f++] = _0x6467d2['remapData']['y'], this['_vertexData'][_0x44274f++] = _0x6467d2['remapData']['z'], this['_vertexData'][_0x44274f++] = _0x6467d2['remapData']['w']), this['_useInstancing'] || (this['_isAnimationSheetEnabled'] && (0x0 === _0x387b03 ? _0x387b03 = this['_epsilon'] : 0x1 === _0x387b03 && (_0x387b03 = 0x1 - this['_epsilon']), 0x0 === _0x4548c6 ? _0x4548c6 = this['_epsilon'] : 0x1 === _0x4548c6 && (_0x4548c6 = 0x1 - this['_epsilon'])), this['_vertexData'][_0x44274f++] = _0x387b03, this['_vertexData'][_0x44274f++] = _0x4548c6); } , _0x542fbe['prototype']['_stopSubEmitters'] = function() { this['activeSubSystems'] && (this['activeSubSystems']['forEach'](function(_0x18aa8f) { _0x18aa8f['stop'](!0x0); }), this['activeSubSystems'] = new Array()); } , _0x542fbe['prototype']['_removeFromRoot'] = function() { if (this['_rootParticleSystem']) { var _0x513473 = this['_rootParticleSystem']['activeSubSystems']['indexOf'](this); -0x1 !== _0x513473 && this['_rootParticleSystem']['activeSubSystems']['splice'](_0x513473, 0x1), this['_rootParticleSystem'] = null; } } , _0x542fbe['prototype']['_update'] = function(_0x22daa0) { var _0xa0ffbe, _0x1bd86e = this; if (this['_alive'] = this['_particles']['length'] > 0x0, this['emitter']['position']) { var _0x2363a9 = this['emitter']; this['_emitterWorldMatrix'] = _0x2363a9['getWorldMatrix'](); } else { var _0x3561b0 = this['emitter']; this['_emitterWorldMatrix'] = _0x47d24f['j']['Translation'](_0x3561b0['x'], _0x3561b0['y'], _0x3561b0['z']); } this['updateFunction'](this['_particles']); for (var _0x7a00bf, _0x8f0ab = function() { if (_0x30c058['_particles']['length'] === _0x30c058['_capacity']) return 'break'; _0xa0ffbe = _0x30c058['_createParticle'](), _0x30c058['_particles']['push'](_0xa0ffbe); var _0x53f00d = _0x77cead['a']['RandomRange'](_0x30c058['minEmitPower'], _0x30c058['maxEmitPower']); if (_0x30c058['startPositionFunction'] ? _0x30c058['startPositionFunction'](_0x30c058['_emitterWorldMatrix'], _0xa0ffbe['position'], _0xa0ffbe) : _0x30c058['particleEmitterType']['startPositionFunction'](_0x30c058['_emitterWorldMatrix'], _0xa0ffbe['position'], _0xa0ffbe), _0x30c058['startDirectionFunction'] ? _0x30c058['startDirectionFunction'](_0x30c058['_emitterWorldMatrix'], _0xa0ffbe['direction'], _0xa0ffbe) : _0x30c058['particleEmitterType']['startDirectionFunction'](_0x30c058['_emitterWorldMatrix'], _0xa0ffbe['direction'], _0xa0ffbe), 0x0 === _0x53f00d ? _0xa0ffbe['_initialDirection'] ? _0xa0ffbe['_initialDirection']['copyFrom'](_0xa0ffbe['direction']) : _0xa0ffbe['_initialDirection'] = _0xa0ffbe['direction']['clone']() : _0xa0ffbe['_initialDirection'] = null, _0xa0ffbe['direction']['scaleInPlace'](_0x53f00d), _0x30c058['targetStopDuration'] && _0x30c058['_lifeTimeGradients'] && _0x30c058['_lifeTimeGradients']['length'] > 0x0) { var _0xc287a7 = _0x77cead['a']['Clamp'](_0x30c058['_actualFrame'] / _0x30c058['targetStopDuration']); _0x1eb50e['h']['GetCurrentGradient'](_0xc287a7, _0x30c058['_lifeTimeGradients'], function(_0x361827, _0x5fcb9) { var _0x17eb58 = _0x361827 , _0x249196 = _0x5fcb9 , _0x4bb3ca = _0x17eb58['getFactor']() , _0x429aa9 = _0x249196['getFactor']() , _0x4c209f = (_0xc287a7 - _0x17eb58['gradient']) / (_0x249196['gradient'] - _0x17eb58['gradient']); _0xa0ffbe['lifeTime'] = _0x77cead['a']['Lerp'](_0x4bb3ca, _0x429aa9, _0x4c209f); }); } else _0xa0ffbe['lifeTime'] = _0x77cead['a']['RandomRange'](_0x30c058['minLifeTime'], _0x30c058['maxLifeTime']); if (_0x30c058['_sizeGradients'] && 0x0 !== _0x30c058['_sizeGradients']['length'] ? (_0xa0ffbe['_currentSizeGradient'] = _0x30c058['_sizeGradients'][0x0], _0xa0ffbe['_currentSize1'] = _0xa0ffbe['_currentSizeGradient']['getFactor'](), _0xa0ffbe['size'] = _0xa0ffbe['_currentSize1'], _0x30c058['_sizeGradients']['length'] > 0x1 ? _0xa0ffbe['_currentSize2'] = _0x30c058['_sizeGradients'][0x1]['getFactor']() : _0xa0ffbe['_currentSize2'] = _0xa0ffbe['_currentSize1']) : _0xa0ffbe['size'] = _0x77cead['a']['RandomRange'](_0x30c058['minSize'], _0x30c058['maxSize']), _0xa0ffbe['scale']['copyFromFloats'](_0x77cead['a']['RandomRange'](_0x30c058['minScaleX'], _0x30c058['maxScaleX']), _0x77cead['a']['RandomRange'](_0x30c058['minScaleY'], _0x30c058['maxScaleY'])), _0x30c058['_startSizeGradients'] && _0x30c058['_startSizeGradients'][0x0] && _0x30c058['targetStopDuration']) { var _0x5ce663 = _0x30c058['_actualFrame'] / _0x30c058['targetStopDuration']; _0x1eb50e['h']['GetCurrentGradient'](_0x5ce663, _0x30c058['_startSizeGradients'], function(_0x1f362e, _0x272d9f, _0x41fa9a) { _0x1f362e !== _0x1bd86e['_currentStartSizeGradient'] && (_0x1bd86e['_currentStartSize1'] = _0x1bd86e['_currentStartSize2'], _0x1bd86e['_currentStartSize2'] = _0x272d9f['getFactor'](), _0x1bd86e['_currentStartSizeGradient'] = _0x1f362e); var _0x1d94a2 = _0x77cead['a']['Lerp'](_0x1bd86e['_currentStartSize1'], _0x1bd86e['_currentStartSize2'], _0x41fa9a); _0xa0ffbe['scale']['scaleInPlace'](_0x1d94a2); }); } _0x30c058['_angularSpeedGradients'] && 0x0 !== _0x30c058['_angularSpeedGradients']['length'] ? (_0xa0ffbe['_currentAngularSpeedGradient'] = _0x30c058['_angularSpeedGradients'][0x0], _0xa0ffbe['angularSpeed'] = _0xa0ffbe['_currentAngularSpeedGradient']['getFactor'](), _0xa0ffbe['_currentAngularSpeed1'] = _0xa0ffbe['angularSpeed'], _0x30c058['_angularSpeedGradients']['length'] > 0x1 ? _0xa0ffbe['_currentAngularSpeed2'] = _0x30c058['_angularSpeedGradients'][0x1]['getFactor']() : _0xa0ffbe['_currentAngularSpeed2'] = _0xa0ffbe['_currentAngularSpeed1']) : _0xa0ffbe['angularSpeed'] = _0x77cead['a']['RandomRange'](_0x30c058['minAngularSpeed'], _0x30c058['maxAngularSpeed']), _0xa0ffbe['angle'] = _0x77cead['a']['RandomRange'](_0x30c058['minInitialRotation'], _0x30c058['maxInitialRotation']), _0x30c058['_velocityGradients'] && _0x30c058['_velocityGradients']['length'] > 0x0 && (_0xa0ffbe['_currentVelocityGradient'] = _0x30c058['_velocityGradients'][0x0], _0xa0ffbe['_currentVelocity1'] = _0xa0ffbe['_currentVelocityGradient']['getFactor'](), _0x30c058['_velocityGradients']['length'] > 0x1 ? _0xa0ffbe['_currentVelocity2'] = _0x30c058['_velocityGradients'][0x1]['getFactor']() : _0xa0ffbe['_currentVelocity2'] = _0xa0ffbe['_currentVelocity1']), _0x30c058['_limitVelocityGradients'] && _0x30c058['_limitVelocityGradients']['length'] > 0x0 && (_0xa0ffbe['_currentLimitVelocityGradient'] = _0x30c058['_limitVelocityGradients'][0x0], _0xa0ffbe['_currentLimitVelocity1'] = _0xa0ffbe['_currentLimitVelocityGradient']['getFactor'](), _0x30c058['_limitVelocityGradients']['length'] > 0x1 ? _0xa0ffbe['_currentLimitVelocity2'] = _0x30c058['_limitVelocityGradients'][0x1]['getFactor']() : _0xa0ffbe['_currentLimitVelocity2'] = _0xa0ffbe['_currentLimitVelocity1']), _0x30c058['_dragGradients'] && _0x30c058['_dragGradients']['length'] > 0x0 && (_0xa0ffbe['_currentDragGradient'] = _0x30c058['_dragGradients'][0x0], _0xa0ffbe['_currentDrag1'] = _0xa0ffbe['_currentDragGradient']['getFactor'](), _0x30c058['_dragGradients']['length'] > 0x1 ? _0xa0ffbe['_currentDrag2'] = _0x30c058['_dragGradients'][0x1]['getFactor']() : _0xa0ffbe['_currentDrag2'] = _0xa0ffbe['_currentDrag1']), _0x30c058['_colorGradients'] && 0x0 !== _0x30c058['_colorGradients']['length'] ? (_0xa0ffbe['_currentColorGradient'] = _0x30c058['_colorGradients'][0x0], _0xa0ffbe['_currentColorGradient']['getColorToRef'](_0xa0ffbe['color']), _0xa0ffbe['_currentColor1']['copyFrom'](_0xa0ffbe['color']), _0x30c058['_colorGradients']['length'] > 0x1 ? _0x30c058['_colorGradients'][0x1]['getColorToRef'](_0xa0ffbe['_currentColor2']) : _0xa0ffbe['_currentColor2']['copyFrom'](_0xa0ffbe['color'])) : (_0x7a00bf = _0x77cead['a']['RandomRange'](0x0, 0x1), _0x47d24f['f']['LerpToRef'](_0x30c058['color1'], _0x30c058['color2'], _0x7a00bf, _0xa0ffbe['color']), _0x30c058['colorDead']['subtractToRef'](_0xa0ffbe['color'], _0x30c058['_colorDiff']), _0x30c058['_colorDiff']['scaleToRef'](0x1 / _0xa0ffbe['lifeTime'], _0xa0ffbe['colorStep'])), _0x30c058['_isAnimationSheetEnabled'] && (_0xa0ffbe['_initialStartSpriteCellID'] = _0x30c058['startSpriteCellID'], _0xa0ffbe['_initialEndSpriteCellID'] = _0x30c058['endSpriteCellID']), _0xa0ffbe['direction']['addInPlace'](_0x30c058['_inheritedVelocityOffset']), _0x30c058['_useRampGradients'] && (_0xa0ffbe['remapData'] = new _0x47d24f['y'](0x0,0x1,0x0,0x1)), _0x30c058['noiseTexture'] && (_0xa0ffbe['_randomNoiseCoordinates1'] ? (_0xa0ffbe['_randomNoiseCoordinates1']['copyFromFloats'](Math['random'](), Math['random'](), Math['random']()), _0xa0ffbe['_randomNoiseCoordinates2']['copyFromFloats'](Math['random'](), Math['random'](), Math['random']())) : (_0xa0ffbe['_randomNoiseCoordinates1'] = new _0x47d24f['x'](Math['random'](),Math['random'](),Math['random']()), _0xa0ffbe['_randomNoiseCoordinates2'] = new _0x47d24f['x'](Math['random'](),Math['random'](),Math['random']()))), _0xa0ffbe['_inheritParticleInfoToSubEmitters'](); }, _0x30c058 = this, _0x1de71a = 0x0; _0x1de71a < _0x22daa0; _0x1de71a++) { if ('break' === _0x8f0ab()) break; } } , _0x542fbe['_GetAttributeNamesOrOptions'] = function(_0x4c640c, _0x281199, _0xbdce66) { void 0x0 === _0x4c640c && (_0x4c640c = !0x1), void 0x0 === _0x281199 && (_0x281199 = !0x1), void 0x0 === _0xbdce66 && (_0xbdce66 = !0x1); var _0x31e97b = [_0x4209f7['b']['PositionKind'], _0x4209f7['b']['ColorKind'], 'angle', 'offset', 'size']; return _0x4c640c && _0x31e97b['push']('cellIndex'), _0x281199 || _0x31e97b['push']('direction'), _0xbdce66 && _0x31e97b['push']('remapData'), _0x31e97b; } , _0x542fbe['_GetEffectCreationOptions'] = function(_0x5ef4cc) { void 0x0 === _0x5ef4cc && (_0x5ef4cc = !0x1); var _0x16df53 = ['invView', 'view', 'projection', 'vClipPlane', 'vClipPlane2', 'vClipPlane3', 'vClipPlane4', 'textureMask', 'translationPivot', 'eyePosition']; return _0x5ef4cc && _0x16df53['push']('particlesInfos'), _0x16df53; } , _0x542fbe['prototype']['_getEffect'] = function(_0x5390eb) { if (this['_customEffect']) return this['_customEffect']; var _0x52534c = []; if (this['_scene']['clipPlane'] && _0x52534c['push']('#define\x20CLIPPLANE'), this['_scene']['clipPlane2'] && _0x52534c['push']('#define\x20CLIPPLANE2'), this['_scene']['clipPlane3'] && _0x52534c['push']('#define\x20CLIPPLANE3'), this['_scene']['clipPlane4'] && _0x52534c['push']('#define\x20CLIPPLANE4'), this['_isAnimationSheetEnabled'] && _0x52534c['push']('#define\x20ANIMATESHEET'), _0x5390eb === _0x542fbe['BLENDMODE_MULTIPLY'] && _0x52534c['push']('#define\x20BLENDMULTIPLYMODE'), this['_useRampGradients'] && _0x52534c['push']('#define\x20RAMPGRADIENT'), this['_isBillboardBased']) switch (_0x52534c['push']('#define\x20BILLBOARD'), this['billboardMode']) { case _0x542fbe['BILLBOARDMODE_Y']: _0x52534c['push']('#define\x20BILLBOARDY'); break; case _0x542fbe['BILLBOARDMODE_STRETCHED']: _0x52534c['push']('#define\x20BILLBOARDSTRETCHED'); break; case _0x542fbe['BILLBOARDMODE_ALL']: } this['_imageProcessingConfiguration'] && (this['_imageProcessingConfiguration']['prepareDefines'](this['_imageProcessingConfigurationDefines']), _0x52534c['push'](this['_imageProcessingConfigurationDefines']['toString']())); var _0x1707d2 = _0x52534c['join']('\x0a'); if (this['_cachedDefines'] !== _0x1707d2) { this['_cachedDefines'] = _0x1707d2; var _0x34d37d = _0x542fbe['_GetAttributeNamesOrOptions'](this['_isAnimationSheetEnabled'], this['_isBillboardBased'] && this['billboardMode'] !== _0x542fbe['BILLBOARDMODE_STRETCHED'], this['_useRampGradients']) , _0x8483a9 = _0x542fbe['_GetEffectCreationOptions'](this['_isAnimationSheetEnabled']) , _0x384ecb = ['diffuseSampler', 'rampSampler']; _0x347427['a'] && (_0x347427['a']['PrepareUniforms'](_0x8483a9, this['_imageProcessingConfigurationDefines']), _0x347427['a']['PrepareSamplers'](_0x384ecb, this['_imageProcessingConfigurationDefines'])), this['_effect'] = this['_scene']['getEngine']()['createEffect']('particles', _0x34d37d, _0x8483a9, _0x384ecb, _0x1707d2); } return this['_effect']; } , _0x542fbe['prototype']['animate'] = function(_0x5d5bb9) { var _0x2b9191 = this; if (void 0x0 === _0x5d5bb9 && (_0x5d5bb9 = !0x1), this['_started']) { if (!_0x5d5bb9) { if (!this['isReady']()) return; if (this['_currentRenderId'] === this['_scene']['getFrameId']()) return; this['_currentRenderId'] = this['_scene']['getFrameId'](); } var _0x59e72e; if (this['_scaledUpdateSpeed'] = this['updateSpeed'] * (_0x5d5bb9 ? this['preWarmStepOffset'] : this['_scene']['getAnimationRatio']()), this['manualEmitCount'] > -0x1) _0x59e72e = this['manualEmitCount'], this['_newPartsExcess'] = 0x0, this['manualEmitCount'] = 0x0; else { var _0x48eebe = this['emitRate']; if (this['_emitRateGradients'] && this['_emitRateGradients']['length'] > 0x0 && this['targetStopDuration']) { var _0x305551 = this['_actualFrame'] / this['targetStopDuration']; _0x1eb50e['h']['GetCurrentGradient'](_0x305551, this['_emitRateGradients'], function(_0x27eb2a, _0x3b5df7, _0x28e082) { _0x27eb2a !== _0x2b9191['_currentEmitRateGradient'] && (_0x2b9191['_currentEmitRate1'] = _0x2b9191['_currentEmitRate2'], _0x2b9191['_currentEmitRate2'] = _0x3b5df7['getFactor'](), _0x2b9191['_currentEmitRateGradient'] = _0x27eb2a), _0x48eebe = _0x77cead['a']['Lerp'](_0x2b9191['_currentEmitRate1'], _0x2b9191['_currentEmitRate2'], _0x28e082); }); } _0x59e72e = _0x48eebe * this['_scaledUpdateSpeed'] >> 0x0, this['_newPartsExcess'] += _0x48eebe * this['_scaledUpdateSpeed'] - _0x59e72e; } if (this['_newPartsExcess'] > 0x1 && (_0x59e72e += this['_newPartsExcess'] >> 0x0, this['_newPartsExcess'] -= this['_newPartsExcess'] >> 0x0), this['_alive'] = !0x1, this['_stopped'] ? _0x59e72e = 0x0 : (this['_actualFrame'] += this['_scaledUpdateSpeed'], this['targetStopDuration'] && this['_actualFrame'] >= this['targetStopDuration'] && this['stop']()), this['_update'](_0x59e72e), this['_stopped'] && (this['_alive'] || (this['_started'] = !0x1, this['onAnimationEnd'] && this['onAnimationEnd'](), this['disposeOnStop'] && this['_scene']['_toBeDisposed']['push'](this))), !_0x5d5bb9) { for (var _0x1cd79b = 0x0, _0x16e531 = 0x0; _0x16e531 < this['_particles']['length']; _0x16e531++) { var _0x1d509e = this['_particles'][_0x16e531]; this['_appendParticleVertices'](_0x1cd79b, _0x1d509e), _0x1cd79b += this['_useInstancing'] ? 0x1 : 0x4; } this['_vertexBuffer'] && this['_vertexBuffer']['update'](this['_vertexData']); } 0x0 === this['manualEmitCount'] && this['disposeOnStop'] && this['stop'](); } } , _0x542fbe['prototype']['_appendParticleVertices'] = function(_0xe9baa2, _0x351743) { this['_appendParticleVertex'](_0xe9baa2++, _0x351743, 0x0, 0x0), this['_useInstancing'] || (this['_appendParticleVertex'](_0xe9baa2++, _0x351743, 0x1, 0x0), this['_appendParticleVertex'](_0xe9baa2++, _0x351743, 0x1, 0x1), this['_appendParticleVertex'](_0xe9baa2++, _0x351743, 0x0, 0x1)); } , _0x542fbe['prototype']['rebuild'] = function() { this['_createIndexBuffer'](), this['_vertexBuffer'] && this['_vertexBuffer']['_rebuild'](); } , _0x542fbe['prototype']['isReady'] = function() { if (!(this['emitter'] && this['_imageProcessingConfiguration']['isReady']() && this['particleTexture'] && this['particleTexture']['isReady']())) return !0x1; if (this['blendMode'] !== _0x542fbe['BLENDMODE_MULTIPLYADD']) { if (!this['_getEffect'](this['blendMode'])['isReady']()) return !0x1; } else { if (!this['_getEffect'](_0x542fbe['BLENDMODE_MULTIPLY'])['isReady']()) return !0x1; if (!this['_getEffect'](_0x542fbe['BLENDMODE_ADD'])['isReady']()) return !0x1; } return !0x0; } , _0x542fbe['prototype']['_render'] = function(_0x2aeaef) { var _0xefc2d1 = this['_getEffect'](_0x2aeaef) , _0x5f198f = this['_scene']['getEngine'](); _0x5f198f['enableEffect'](_0xefc2d1); var _0x57c3ec = this['_scene']['getViewMatrix'](); if (_0xefc2d1['setTexture']('diffuseSampler', this['particleTexture']), _0xefc2d1['setMatrix']('view', _0x57c3ec), _0xefc2d1['setMatrix']('projection', this['_scene']['getProjectionMatrix']()), this['_isAnimationSheetEnabled'] && this['particleTexture']) { var _0x4ed1d0 = this['particleTexture']['getBaseSize'](); _0xefc2d1['setFloat3']('particlesInfos', this['spriteCellWidth'] / _0x4ed1d0['width'], this['spriteCellHeight'] / _0x4ed1d0['height'], _0x4ed1d0['width'] / this['spriteCellWidth']); } if (_0xefc2d1['setVector2']('translationPivot', this['translationPivot']), _0xefc2d1['setFloat4']('textureMask', this['textureMask']['r'], this['textureMask']['g'], this['textureMask']['b'], this['textureMask']['a']), this['_isBillboardBased']) { var _0x27a05e = this['_scene']['activeCamera']; _0xefc2d1['setVector3']('eyePosition', _0x27a05e['globalPosition']); } if (this['_rampGradientsTexture'] && _0xefc2d1['setTexture']('rampSampler', this['_rampGradientsTexture']), this['_scene']['clipPlane'] || this['_scene']['clipPlane2'] || this['_scene']['clipPlane3'] || this['_scene']['clipPlane4']) { var _0x15953b = _0x57c3ec['clone'](); _0x15953b['invert'](), _0xefc2d1['setMatrix']('invView', _0x15953b), _0x2efc06['a']['BindClipPlane'](_0xefc2d1, this['_scene']); } switch (_0x5f198f['bindBuffers'](this['_vertexBuffers'], this['_indexBuffer'], _0xefc2d1), this['_imageProcessingConfiguration'] && !this['_imageProcessingConfiguration']['applyByPostProcess'] && this['_imageProcessingConfiguration']['bind'](_0xefc2d1), _0x2aeaef) { case _0x542fbe['BLENDMODE_ADD']: _0x5f198f['setAlphaMode'](_0x24e342['a']['ALPHA_ADD']); break; case _0x542fbe['BLENDMODE_ONEONE']: _0x5f198f['setAlphaMode'](_0x24e342['a']['ALPHA_ONEONE']); break; case _0x542fbe['BLENDMODE_STANDARD']: _0x5f198f['setAlphaMode'](_0x24e342['a']['ALPHA_COMBINE']); break; case _0x542fbe['BLENDMODE_MULTIPLY']: _0x5f198f['setAlphaMode'](_0x24e342['a']['ALPHA_MULTIPLY']); } return this['_useInstancing'] ? _0x5f198f['drawArraysType'](_0x10d420['a']['TriangleFanDrawMode'], 0x0, 0x4, this['_particles']['length']) : _0x5f198f['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, 0x6 * this['_particles']['length']), this['_particles']['length']; } , _0x542fbe['prototype']['render'] = function() { if (!this['isReady']() || !this['_particles']['length']) return 0x0; var _0x40f08c = this['_scene']['getEngine'](); _0x40f08c['setState'](!0x1), this['forceDepthWrite'] && _0x40f08c['setDepthWrite'](!0x0); var _0x2ebebe = 0x0; return this['blendMode'] === _0x542fbe['BLENDMODE_MULTIPLYADD'] && (_0x2ebebe = this['_render'](_0x542fbe['BLENDMODE_MULTIPLY']) + this['_render'](_0x542fbe['BLENDMODE_ADD'])), _0x2ebebe = this['_render'](this['blendMode']), _0x40f08c['unbindInstanceAttributes'](), _0x40f08c['setAlphaMode'](_0x24e342['a']['ALPHA_DISABLE']), _0x2ebebe; } , _0x542fbe['prototype']['dispose'] = function(_0x46865d) { if (void 0x0 === _0x46865d && (_0x46865d = !0x0), this['_vertexBuffer'] && (this['_vertexBuffer']['dispose'](), this['_vertexBuffer'] = null), this['_spriteBuffer'] && (this['_spriteBuffer']['dispose'](), this['_spriteBuffer'] = null), this['_indexBuffer'] && (this['_scene']['getEngine']()['_releaseBuffer'](this['_indexBuffer']), this['_indexBuffer'] = null), _0x46865d && this['particleTexture'] && (this['particleTexture']['dispose'](), this['particleTexture'] = null), _0x46865d && this['noiseTexture'] && (this['noiseTexture']['dispose'](), this['noiseTexture'] = null), this['_rampGradientsTexture'] && (this['_rampGradientsTexture']['dispose'](), this['_rampGradientsTexture'] = null), this['_removeFromRoot'](), this['_subEmitters'] && this['_subEmitters']['length']) { for (var _0x2fabae = 0x0; _0x2fabae < this['_subEmitters']['length']; _0x2fabae++) for (var _0x212ca0 = 0x0, _0x35c06d = this['_subEmitters'][_0x2fabae]; _0x212ca0 < _0x35c06d['length']; _0x212ca0++) { _0x35c06d[_0x212ca0]['dispose'](); } this['_subEmitters'] = [], this['subEmitters'] = []; } this['_disposeEmitterOnDispose'] && this['emitter'] && this['emitter']['dispose'] && this['emitter']['dispose'](!0x0), (_0x2fabae = this['_scene']['particleSystems']['indexOf'](this)) > -0x1 && this['_scene']['particleSystems']['splice'](_0x2fabae, 0x1), this['_scene']['_activeParticleSystems']['dispose'](), this['onDisposeObservable']['notifyObservers'](this), this['onDisposeObservable']['clear'](), this['reset'](); } , _0x542fbe['prototype']['clone'] = function(_0x16cff2, _0x600d9a) { var _0x1ff393 = null , _0x4c76b8 = null; if (null != this['customShader']) { var _0x50bec5 = (_0x4c76b8 = this['customShader'])['shaderOptions']['defines']['length'] > 0x0 ? _0x4c76b8['shaderOptions']['defines']['join']('\x0a') : ''; _0x1ff393 = this['_scene']['getEngine']()['createEffectForParticles'](_0x4c76b8['shaderPath']['fragmentElement'], _0x4c76b8['shaderOptions']['uniforms'], _0x4c76b8['shaderOptions']['samplers'], _0x50bec5); } else this['_customEffect'] && (_0x1ff393 = this['_customEffect']); var _0x41f21a = new _0x542fbe(_0x16cff2,this['_capacity'],this['_scene'],_0x1ff393); return _0x41f21a['customShader'] = _0x4c76b8, _0x5e367c['a']['DeepCopy'](this, _0x41f21a, ['particles', 'customShader', 'noiseTexture']), void 0x0 === _0x600d9a && (_0x600d9a = this['emitter']), _0x41f21a['noiseTexture'] = this['noiseTexture'], _0x41f21a['emitter'] = _0x600d9a, this['particleTexture'] && (_0x41f21a['particleTexture'] = new _0x11d14a['a'](this['particleTexture']['url'],this['_scene'])), this['_colorGradients'] && this['_colorGradients']['forEach'](function(_0x5e6602) { _0x41f21a['addColorGradient'](_0x5e6602['gradient'], _0x5e6602['color1'], _0x5e6602['color2']); }), this['_dragGradients'] && this['_dragGradients']['forEach'](function(_0x303d62) { _0x41f21a['addDragGradient'](_0x303d62['gradient'], _0x303d62['factor1'], _0x303d62['factor2']); }), this['_angularSpeedGradients'] && this['_angularSpeedGradients']['forEach'](function(_0x5d7d5a) { _0x41f21a['addAngularSpeedGradient'](_0x5d7d5a['gradient'], _0x5d7d5a['factor1'], _0x5d7d5a['factor2']); }), this['_emitRateGradients'] && this['_emitRateGradients']['forEach'](function(_0x3095af) { _0x41f21a['addEmitRateGradient'](_0x3095af['gradient'], _0x3095af['factor1'], _0x3095af['factor2']); }), this['_lifeTimeGradients'] && this['_lifeTimeGradients']['forEach'](function(_0x295c1e) { _0x41f21a['addLifeTimeGradient'](_0x295c1e['gradient'], _0x295c1e['factor1'], _0x295c1e['factor2']); }), this['_limitVelocityGradients'] && this['_limitVelocityGradients']['forEach'](function(_0x2dfe95) { _0x41f21a['addLimitVelocityGradient'](_0x2dfe95['gradient'], _0x2dfe95['factor1'], _0x2dfe95['factor2']); }), this['_sizeGradients'] && this['_sizeGradients']['forEach'](function(_0x7fe068) { _0x41f21a['addSizeGradient'](_0x7fe068['gradient'], _0x7fe068['factor1'], _0x7fe068['factor2']); }), this['_startSizeGradients'] && this['_startSizeGradients']['forEach'](function(_0x4a99f6) { _0x41f21a['addStartSizeGradient'](_0x4a99f6['gradient'], _0x4a99f6['factor1'], _0x4a99f6['factor2']); }), this['_velocityGradients'] && this['_velocityGradients']['forEach'](function(_0x53d8f9) { _0x41f21a['addVelocityGradient'](_0x53d8f9['gradient'], _0x53d8f9['factor1'], _0x53d8f9['factor2']); }), this['_rampGradients'] && this['_rampGradients']['forEach'](function(_0x178cee) { _0x41f21a['addRampGradient'](_0x178cee['gradient'], _0x178cee['color']); }), this['_colorRemapGradients'] && this['_colorRemapGradients']['forEach'](function(_0x2cc562) { _0x41f21a['addColorRemapGradient'](_0x2cc562['gradient'], _0x2cc562['factor1'], _0x2cc562['factor2']); }), this['_alphaRemapGradients'] && this['_alphaRemapGradients']['forEach'](function(_0x8b073) { _0x41f21a['addAlphaRemapGradient'](_0x8b073['gradient'], _0x8b073['factor1'], _0x8b073['factor2']); }), this['preventAutoStart'] || _0x41f21a['start'](), _0x41f21a; } , _0x542fbe['prototype']['serialize'] = function() { var _0x302bad = {}; if (_0x542fbe['_Serialize'](_0x302bad, this), _0x302bad['textureMask'] = this['textureMask']['asArray'](), _0x302bad['customShader'] = this['customShader'], _0x302bad['preventAutoStart'] = this['preventAutoStart'], this['subEmitters']) { _0x302bad['subEmitters'] = [], this['_subEmitters'] || this['_prepareSubEmitterInternalArray'](); for (var _0x543fb3 = 0x0, _0x3cbd23 = this['_subEmitters']; _0x543fb3 < _0x3cbd23['length']; _0x543fb3++) { for (var _0x53e551 = [], _0x698f58 = 0x0, _0x4720e6 = _0x3cbd23[_0x543fb3]; _0x698f58 < _0x4720e6['length']; _0x698f58++) { var _0x4a0266 = _0x4720e6[_0x698f58]; _0x53e551['push'](_0x4a0266['serialize']()); } _0x302bad['subEmitters']['push'](_0x53e551); } } return _0x302bad; } , _0x542fbe['_Serialize'] = function(_0x515d12, _0x1cd082) { if (_0x515d12['name'] = _0x1cd082['name'], _0x515d12['id'] = _0x1cd082['id'], _0x515d12['capacity'] = _0x1cd082['getCapacity'](), _0x1cd082['emitter']['position']) { var _0x2445bf = _0x1cd082['emitter']; _0x515d12['emitterId'] = _0x2445bf['id']; } else { var _0x5041aa = _0x1cd082['emitter']; _0x515d12['emitter'] = _0x5041aa['asArray'](); } _0x1cd082['particleEmitterType'] && (_0x515d12['particleEmitterType'] = _0x1cd082['particleEmitterType']['serialize']()), _0x1cd082['particleTexture'] && (_0x515d12['textureName'] = _0x1cd082['particleTexture']['name'], _0x515d12['invertY'] = _0x1cd082['particleTexture']['_invertY']), _0x3d4764['a']['AppendSerializedAnimations'](_0x1cd082, _0x515d12), _0x515d12['beginAnimationOnStart'] = _0x1cd082['beginAnimationOnStart'], _0x515d12['beginAnimationFrom'] = _0x1cd082['beginAnimationFrom'], _0x515d12['beginAnimationTo'] = _0x1cd082['beginAnimationTo'], _0x515d12['beginAnimationLoop'] = _0x1cd082['beginAnimationLoop'], _0x515d12['startDelay'] = _0x1cd082['startDelay'], _0x515d12['renderingGroupId'] = _0x1cd082['renderingGroupId'], _0x515d12['isBillboardBased'] = _0x1cd082['isBillboardBased'], _0x515d12['billboardMode'] = _0x1cd082['billboardMode'], _0x515d12['minAngularSpeed'] = _0x1cd082['minAngularSpeed'], _0x515d12['maxAngularSpeed'] = _0x1cd082['maxAngularSpeed'], _0x515d12['minSize'] = _0x1cd082['minSize'], _0x515d12['maxSize'] = _0x1cd082['maxSize'], _0x515d12['minScaleX'] = _0x1cd082['minScaleX'], _0x515d12['maxScaleX'] = _0x1cd082['maxScaleX'], _0x515d12['minScaleY'] = _0x1cd082['minScaleY'], _0x515d12['maxScaleY'] = _0x1cd082['maxScaleY'], _0x515d12['minEmitPower'] = _0x1cd082['minEmitPower'], _0x515d12['maxEmitPower'] = _0x1cd082['maxEmitPower'], _0x515d12['minLifeTime'] = _0x1cd082['minLifeTime'], _0x515d12['maxLifeTime'] = _0x1cd082['maxLifeTime'], _0x515d12['emitRate'] = _0x1cd082['emitRate'], _0x515d12['gravity'] = _0x1cd082['gravity']['asArray'](), _0x515d12['noiseStrength'] = _0x1cd082['noiseStrength']['asArray'](), _0x515d12['color1'] = _0x1cd082['color1']['asArray'](), _0x515d12['color2'] = _0x1cd082['color2']['asArray'](), _0x515d12['colorDead'] = _0x1cd082['colorDead']['asArray'](), _0x515d12['updateSpeed'] = _0x1cd082['updateSpeed'], _0x515d12['targetStopDuration'] = _0x1cd082['targetStopDuration'], _0x515d12['blendMode'] = _0x1cd082['blendMode'], _0x515d12['preWarmCycles'] = _0x1cd082['preWarmCycles'], _0x515d12['preWarmStepOffset'] = _0x1cd082['preWarmStepOffset'], _0x515d12['minInitialRotation'] = _0x1cd082['minInitialRotation'], _0x515d12['maxInitialRotation'] = _0x1cd082['maxInitialRotation'], _0x515d12['startSpriteCellID'] = _0x1cd082['startSpriteCellID'], _0x515d12['endSpriteCellID'] = _0x1cd082['endSpriteCellID'], _0x515d12['spriteCellChangeSpeed'] = _0x1cd082['spriteCellChangeSpeed'], _0x515d12['spriteCellWidth'] = _0x1cd082['spriteCellWidth'], _0x515d12['spriteCellHeight'] = _0x1cd082['spriteCellHeight'], _0x515d12['spriteRandomStartCell'] = _0x1cd082['spriteRandomStartCell'], _0x515d12['isAnimationSheetEnabled'] = _0x1cd082['isAnimationSheetEnabled']; var _0x34ffeb = _0x1cd082['getColorGradients'](); if (_0x34ffeb) { _0x515d12['colorGradients'] = []; for (var _0x3ccee0 = 0x0, _0x27a746 = _0x34ffeb; _0x3ccee0 < _0x27a746['length']; _0x3ccee0++) { var _0x540b35 = _0x27a746[_0x3ccee0] , _0x1d2ac3 = { 'gradient': _0x540b35['gradient'], 'color1': _0x540b35['color1']['asArray']() }; _0x540b35['color2'] && (_0x1d2ac3['color2'] = _0x540b35['color2']['asArray']()), _0x515d12['colorGradients']['push'](_0x1d2ac3); } } var _0x2cf964 = _0x1cd082['getRampGradients'](); if (_0x2cf964) { _0x515d12['rampGradients'] = []; for (var _0x27363f = 0x0, _0xff536b = _0x2cf964; _0x27363f < _0xff536b['length']; _0x27363f++) { var _0x4a58e5 = _0xff536b[_0x27363f]; _0x1d2ac3 = { 'gradient': _0x4a58e5['gradient'], 'color': _0x4a58e5['color']['asArray']() }; _0x515d12['rampGradients']['push'](_0x1d2ac3); } _0x515d12['useRampGradients'] = _0x1cd082['useRampGradients']; } var _0x33eb40 = _0x1cd082['getColorRemapGradients'](); if (_0x33eb40) { _0x515d12['colorRemapGradients'] = []; for (var _0x5e19cf = 0x0, _0x39ebcb = _0x33eb40; _0x5e19cf < _0x39ebcb['length']; _0x5e19cf++) { var _0x7ff92 = _0x39ebcb[_0x5e19cf]; _0x1d2ac3 = { 'gradient': _0x7ff92['gradient'], 'factor1': _0x7ff92['factor1'] }; void 0x0 !== _0x7ff92['factor2'] && (_0x1d2ac3['factor2'] = _0x7ff92['factor2']), _0x515d12['colorRemapGradients']['push'](_0x1d2ac3); } } var _0xa86d53 = _0x1cd082['getAlphaRemapGradients'](); if (_0xa86d53) { _0x515d12['alphaRemapGradients'] = []; for (var _0x508f1e = 0x0, _0x144cbc = _0xa86d53; _0x508f1e < _0x144cbc['length']; _0x508f1e++) { var _0x1a9824 = _0x144cbc[_0x508f1e]; _0x1d2ac3 = { 'gradient': _0x1a9824['gradient'], 'factor1': _0x1a9824['factor1'] }; void 0x0 !== _0x1a9824['factor2'] && (_0x1d2ac3['factor2'] = _0x1a9824['factor2']), _0x515d12['alphaRemapGradients']['push'](_0x1d2ac3); } } var _0x1c3e7b = _0x1cd082['getSizeGradients'](); if (_0x1c3e7b) { _0x515d12['sizeGradients'] = []; for (var _0x32b1ab = 0x0, _0x291589 = _0x1c3e7b; _0x32b1ab < _0x291589['length']; _0x32b1ab++) { var _0x229f9e = _0x291589[_0x32b1ab]; _0x1d2ac3 = { 'gradient': _0x229f9e['gradient'], 'factor1': _0x229f9e['factor1'] }; void 0x0 !== _0x229f9e['factor2'] && (_0x1d2ac3['factor2'] = _0x229f9e['factor2']), _0x515d12['sizeGradients']['push'](_0x1d2ac3); } } var _0x3b149b = _0x1cd082['getAngularSpeedGradients'](); if (_0x3b149b) { _0x515d12['angularSpeedGradients'] = []; for (var _0x371ee4 = 0x0, _0x4324ee = _0x3b149b; _0x371ee4 < _0x4324ee['length']; _0x371ee4++) { var _0x5d58e9 = _0x4324ee[_0x371ee4]; _0x1d2ac3 = { 'gradient': _0x5d58e9['gradient'], 'factor1': _0x5d58e9['factor1'] }; void 0x0 !== _0x5d58e9['factor2'] && (_0x1d2ac3['factor2'] = _0x5d58e9['factor2']), _0x515d12['angularSpeedGradients']['push'](_0x1d2ac3); } } var _0x3d7dce = _0x1cd082['getVelocityGradients'](); if (_0x3d7dce) { _0x515d12['velocityGradients'] = []; for (var _0x2279b5 = 0x0, _0x245473 = _0x3d7dce; _0x2279b5 < _0x245473['length']; _0x2279b5++) { var _0x31926e = _0x245473[_0x2279b5]; _0x1d2ac3 = { 'gradient': _0x31926e['gradient'], 'factor1': _0x31926e['factor1'] }; void 0x0 !== _0x31926e['factor2'] && (_0x1d2ac3['factor2'] = _0x31926e['factor2']), _0x515d12['velocityGradients']['push'](_0x1d2ac3); } } var _0x11af62 = _0x1cd082['getDragGradients'](); if (_0x11af62) { _0x515d12['dragyGradients'] = []; for (var _0x11034c = 0x0, _0x25e174 = _0x11af62; _0x11034c < _0x25e174['length']; _0x11034c++) { var _0x1ae643 = _0x25e174[_0x11034c]; _0x1d2ac3 = { 'gradient': _0x1ae643['gradient'], 'factor1': _0x1ae643['factor1'] }; void 0x0 !== _0x1ae643['factor2'] && (_0x1d2ac3['factor2'] = _0x1ae643['factor2']), _0x515d12['dragGradients']['push'](_0x1d2ac3); } } var _0x80f298 = _0x1cd082['getEmitRateGradients'](); if (_0x80f298) { _0x515d12['emitRateGradients'] = []; for (var _0x588806 = 0x0, _0xcd5f60 = _0x80f298; _0x588806 < _0xcd5f60['length']; _0x588806++) { var _0x18588e = _0xcd5f60[_0x588806]; _0x1d2ac3 = { 'gradient': _0x18588e['gradient'], 'factor1': _0x18588e['factor1'] }; void 0x0 !== _0x18588e['factor2'] && (_0x1d2ac3['factor2'] = _0x18588e['factor2']), _0x515d12['emitRateGradients']['push'](_0x1d2ac3); } } var _0x27e2c0 = _0x1cd082['getStartSizeGradients'](); if (_0x27e2c0) { _0x515d12['startSizeGradients'] = []; for (var _0x1f3092 = 0x0, _0x485678 = _0x27e2c0; _0x1f3092 < _0x485678['length']; _0x1f3092++) { var _0x3562ce = _0x485678[_0x1f3092]; _0x1d2ac3 = { 'gradient': _0x3562ce['gradient'], 'factor1': _0x3562ce['factor1'] }; void 0x0 !== _0x3562ce['factor2'] && (_0x1d2ac3['factor2'] = _0x3562ce['factor2']), _0x515d12['startSizeGradients']['push'](_0x1d2ac3); } } var _0x1a7b16 = _0x1cd082['getLifeTimeGradients'](); if (_0x1a7b16) { _0x515d12['lifeTimeGradients'] = []; for (var _0x5e8fc3 = 0x0, _0x4ad880 = _0x1a7b16; _0x5e8fc3 < _0x4ad880['length']; _0x5e8fc3++) { var _0x368186 = _0x4ad880[_0x5e8fc3]; _0x1d2ac3 = { 'gradient': _0x368186['gradient'], 'factor1': _0x368186['factor1'] }; void 0x0 !== _0x368186['factor2'] && (_0x1d2ac3['factor2'] = _0x368186['factor2']), _0x515d12['lifeTimeGradients']['push'](_0x1d2ac3); } } var _0x154e94 = _0x1cd082['getLimitVelocityGradients'](); if (_0x154e94) { _0x515d12['limitVelocityGradients'] = []; for (var _0x4be135 = 0x0, _0x3aadec = _0x154e94; _0x4be135 < _0x3aadec['length']; _0x4be135++) { var _0x42a4c3 = _0x3aadec[_0x4be135]; _0x1d2ac3 = { 'gradient': _0x42a4c3['gradient'], 'factor1': _0x42a4c3['factor1'] }; void 0x0 !== _0x42a4c3['factor2'] && (_0x1d2ac3['factor2'] = _0x42a4c3['factor2']), _0x515d12['limitVelocityGradients']['push'](_0x1d2ac3); } _0x515d12['limitVelocityDamping'] = _0x1cd082['limitVelocityDamping']; } _0x1cd082['noiseTexture'] && (_0x515d12['noiseTexture'] = _0x1cd082['noiseTexture']['serialize']()); } , _0x542fbe['_Parse'] = function(_0x5ad7f9, _0x2b65be, _0x56f8cd, _0x12be83) { if (_0x5ad7f9['textureName'] && (_0x2b65be['particleTexture'] = new _0x11d14a['a'](_0x12be83 + _0x5ad7f9['textureName'],_0x56f8cd,!0x1,void 0x0 === _0x5ad7f9['invertY'] || _0x5ad7f9['invertY']), _0x2b65be['particleTexture']['name'] = _0x5ad7f9['textureName']), _0x5ad7f9['emitterId'] || 0x0 === _0x5ad7f9['emitterId'] || void 0x0 !== _0x5ad7f9['emitter'] ? _0x5ad7f9['emitterId'] ? _0x2b65be['emitter'] = _0x56f8cd['getLastMeshByID'](_0x5ad7f9['emitterId']) : _0x2b65be['emitter'] = _0x47d24f['x']['FromArray'](_0x5ad7f9['emitter']) : _0x2b65be['emitter'] = _0x47d24f['x']['Zero'](), void 0x0 !== _0x5ad7f9['renderingGroupId'] && (_0x2b65be['renderingGroupId'] = _0x5ad7f9['renderingGroupId']), void 0x0 !== _0x5ad7f9['isBillboardBased'] && (_0x2b65be['isBillboardBased'] = _0x5ad7f9['isBillboardBased']), void 0x0 !== _0x5ad7f9['billboardMode'] && (_0x2b65be['billboardMode'] = _0x5ad7f9['billboardMode']), _0x5ad7f9['animations']) { for (var _0x2ac3d6 = 0x0; _0x2ac3d6 < _0x5ad7f9['animations']['length']; _0x2ac3d6++) { var _0x35a32b = _0x5ad7f9['animations'][_0x2ac3d6] , _0x31492e = _0x376b99['a']['GetClass']('BABYLON.Animation'); _0x31492e && _0x2b65be['animations']['push'](_0x31492e['Parse'](_0x35a32b)); } _0x2b65be['beginAnimationOnStart'] = _0x5ad7f9['beginAnimationOnStart'], _0x2b65be['beginAnimationFrom'] = _0x5ad7f9['beginAnimationFrom'], _0x2b65be['beginAnimationTo'] = _0x5ad7f9['beginAnimationTo'], _0x2b65be['beginAnimationLoop'] = _0x5ad7f9['beginAnimationLoop']; } if (_0x5ad7f9['autoAnimate'] && _0x56f8cd['beginAnimation'](_0x2b65be, _0x5ad7f9['autoAnimateFrom'], _0x5ad7f9['autoAnimateTo'], _0x5ad7f9['autoAnimateLoop'], _0x5ad7f9['autoAnimateSpeed'] || 0x1), _0x2b65be['startDelay'] = 0x0 | _0x5ad7f9['startDelay'], _0x2b65be['minAngularSpeed'] = _0x5ad7f9['minAngularSpeed'], _0x2b65be['maxAngularSpeed'] = _0x5ad7f9['maxAngularSpeed'], _0x2b65be['minSize'] = _0x5ad7f9['minSize'], _0x2b65be['maxSize'] = _0x5ad7f9['maxSize'], _0x5ad7f9['minScaleX'] && (_0x2b65be['minScaleX'] = _0x5ad7f9['minScaleX'], _0x2b65be['maxScaleX'] = _0x5ad7f9['maxScaleX'], _0x2b65be['minScaleY'] = _0x5ad7f9['minScaleY'], _0x2b65be['maxScaleY'] = _0x5ad7f9['maxScaleY']), void 0x0 !== _0x5ad7f9['preWarmCycles'] && (_0x2b65be['preWarmCycles'] = _0x5ad7f9['preWarmCycles'], _0x2b65be['preWarmStepOffset'] = _0x5ad7f9['preWarmStepOffset']), void 0x0 !== _0x5ad7f9['minInitialRotation'] && (_0x2b65be['minInitialRotation'] = _0x5ad7f9['minInitialRotation'], _0x2b65be['maxInitialRotation'] = _0x5ad7f9['maxInitialRotation']), _0x2b65be['minLifeTime'] = _0x5ad7f9['minLifeTime'], _0x2b65be['maxLifeTime'] = _0x5ad7f9['maxLifeTime'], _0x2b65be['minEmitPower'] = _0x5ad7f9['minEmitPower'], _0x2b65be['maxEmitPower'] = _0x5ad7f9['maxEmitPower'], _0x2b65be['emitRate'] = _0x5ad7f9['emitRate'], _0x2b65be['gravity'] = _0x47d24f['x']['FromArray'](_0x5ad7f9['gravity']), _0x5ad7f9['noiseStrength'] && (_0x2b65be['noiseStrength'] = _0x47d24f['x']['FromArray'](_0x5ad7f9['noiseStrength'])), _0x2b65be['color1'] = _0x47d24f['f']['FromArray'](_0x5ad7f9['color1']), _0x2b65be['color2'] = _0x47d24f['f']['FromArray'](_0x5ad7f9['color2']), _0x2b65be['colorDead'] = _0x47d24f['f']['FromArray'](_0x5ad7f9['colorDead']), _0x2b65be['updateSpeed'] = _0x5ad7f9['updateSpeed'], _0x2b65be['targetStopDuration'] = _0x5ad7f9['targetStopDuration'], _0x2b65be['blendMode'] = _0x5ad7f9['blendMode'], _0x5ad7f9['colorGradients']) for (var _0x1b13e5 = 0x0, _0x59afd2 = _0x5ad7f9['colorGradients']; _0x1b13e5 < _0x59afd2['length']; _0x1b13e5++) { var _0x4c2318 = _0x59afd2[_0x1b13e5]; _0x2b65be['addColorGradient'](_0x4c2318['gradient'], _0x47d24f['f']['FromArray'](_0x4c2318['color1']), _0x4c2318['color2'] ? _0x47d24f['f']['FromArray'](_0x4c2318['color2']) : void 0x0); } if (_0x5ad7f9['rampGradients']) { for (var _0x3575e4 = 0x0, _0x1cb373 = _0x5ad7f9['rampGradients']; _0x3575e4 < _0x1cb373['length']; _0x3575e4++) { var _0x5e688d = _0x1cb373[_0x3575e4]; _0x2b65be['addRampGradient'](_0x5e688d['gradient'], _0x47d24f['e']['FromArray'](_0x5e688d['color'])); } _0x2b65be['useRampGradients'] = _0x5ad7f9['useRampGradients']; } if (_0x5ad7f9['colorRemapGradients']) for (var _0x2538ae = 0x0, _0x2e88d7 = _0x5ad7f9['colorRemapGradients']; _0x2538ae < _0x2e88d7['length']; _0x2538ae++) { var _0x203c2a = _0x2e88d7[_0x2538ae]; _0x2b65be['addColorRemapGradient'](_0x203c2a['gradient'], void 0x0 !== _0x203c2a['factor1'] ? _0x203c2a['factor1'] : _0x203c2a['factor'], _0x203c2a['factor2']); } if (_0x5ad7f9['alphaRemapGradients']) for (var _0x262d59 = 0x0, _0x350d2c = _0x5ad7f9['alphaRemapGradients']; _0x262d59 < _0x350d2c['length']; _0x262d59++) { var _0x4492dd = _0x350d2c[_0x262d59]; _0x2b65be['addAlphaRemapGradient'](_0x4492dd['gradient'], void 0x0 !== _0x4492dd['factor1'] ? _0x4492dd['factor1'] : _0x4492dd['factor'], _0x4492dd['factor2']); } if (_0x5ad7f9['sizeGradients']) for (var _0x46850c = 0x0, _0x37952c = _0x5ad7f9['sizeGradients']; _0x46850c < _0x37952c['length']; _0x46850c++) { var _0x4af4a3 = _0x37952c[_0x46850c]; _0x2b65be['addSizeGradient'](_0x4af4a3['gradient'], void 0x0 !== _0x4af4a3['factor1'] ? _0x4af4a3['factor1'] : _0x4af4a3['factor'], _0x4af4a3['factor2']); } if (_0x5ad7f9['sizeGradients']) for (var _0x78f0f0 = 0x0, _0x2f0250 = _0x5ad7f9['sizeGradients']; _0x78f0f0 < _0x2f0250['length']; _0x78f0f0++) { _0x4af4a3 = _0x2f0250[_0x78f0f0]; _0x2b65be['addSizeGradient'](_0x4af4a3['gradient'], void 0x0 !== _0x4af4a3['factor1'] ? _0x4af4a3['factor1'] : _0x4af4a3['factor'], _0x4af4a3['factor2']); } if (_0x5ad7f9['angularSpeedGradients']) for (var _0x4494e2 = 0x0, _0x4349aa = _0x5ad7f9['angularSpeedGradients']; _0x4494e2 < _0x4349aa['length']; _0x4494e2++) { var _0x16637f = _0x4349aa[_0x4494e2]; _0x2b65be['addAngularSpeedGradient'](_0x16637f['gradient'], void 0x0 !== _0x16637f['factor1'] ? _0x16637f['factor1'] : _0x16637f['factor'], _0x16637f['factor2']); } if (_0x5ad7f9['velocityGradients']) for (var _0x3749a5 = 0x0, _0x4232cc = _0x5ad7f9['velocityGradients']; _0x3749a5 < _0x4232cc['length']; _0x3749a5++) { var _0x4cd1eb = _0x4232cc[_0x3749a5]; _0x2b65be['addVelocityGradient'](_0x4cd1eb['gradient'], void 0x0 !== _0x4cd1eb['factor1'] ? _0x4cd1eb['factor1'] : _0x4cd1eb['factor'], _0x4cd1eb['factor2']); } if (_0x5ad7f9['dragGradients']) for (var _0x3ab2e7 = 0x0, _0x414d6f = _0x5ad7f9['dragGradients']; _0x3ab2e7 < _0x414d6f['length']; _0x3ab2e7++) { var _0x3fbc68 = _0x414d6f[_0x3ab2e7]; _0x2b65be['addDragGradient'](_0x3fbc68['gradient'], void 0x0 !== _0x3fbc68['factor1'] ? _0x3fbc68['factor1'] : _0x3fbc68['factor'], _0x3fbc68['factor2']); } if (_0x5ad7f9['emitRateGradients']) for (var _0x40222d = 0x0, _0x39fcdc = _0x5ad7f9['emitRateGradients']; _0x40222d < _0x39fcdc['length']; _0x40222d++) { var _0x4272a1 = _0x39fcdc[_0x40222d]; _0x2b65be['addEmitRateGradient'](_0x4272a1['gradient'], void 0x0 !== _0x4272a1['factor1'] ? _0x4272a1['factor1'] : _0x4272a1['factor'], _0x4272a1['factor2']); } if (_0x5ad7f9['startSizeGradients']) for (var _0x1bbd79 = 0x0, _0x4fdaae = _0x5ad7f9['startSizeGradients']; _0x1bbd79 < _0x4fdaae['length']; _0x1bbd79++) { var _0x506808 = _0x4fdaae[_0x1bbd79]; _0x2b65be['addStartSizeGradient'](_0x506808['gradient'], void 0x0 !== _0x506808['factor1'] ? _0x506808['factor1'] : _0x506808['factor'], _0x506808['factor2']); } if (_0x5ad7f9['lifeTimeGradients']) for (var _0x27a8fe = 0x0, _0x1fb412 = _0x5ad7f9['lifeTimeGradients']; _0x27a8fe < _0x1fb412['length']; _0x27a8fe++) { var _0x1cb6d3 = _0x1fb412[_0x27a8fe]; _0x2b65be['addLifeTimeGradient'](_0x1cb6d3['gradient'], void 0x0 !== _0x1cb6d3['factor1'] ? _0x1cb6d3['factor1'] : _0x1cb6d3['factor'], _0x1cb6d3['factor2']); } if (_0x5ad7f9['limitVelocityGradients']) { for (var _0x463790 = 0x0, _0x24fcc0 = _0x5ad7f9['limitVelocityGradients']; _0x463790 < _0x24fcc0['length']; _0x463790++) { var _0x2467c7 = _0x24fcc0[_0x463790]; _0x2b65be['addLimitVelocityGradient'](_0x2467c7['gradient'], void 0x0 !== _0x2467c7['factor1'] ? _0x2467c7['factor1'] : _0x2467c7['factor'], _0x2467c7['factor2']); } _0x2b65be['limitVelocityDamping'] = _0x5ad7f9['limitVelocityDamping']; } var _0x176d1b; if (_0x5ad7f9['noiseTexture'] && (_0x2b65be['noiseTexture'] = _0x500402['Parse'](_0x5ad7f9['noiseTexture'], _0x56f8cd, _0x12be83)), _0x5ad7f9['particleEmitterType']) { switch (_0x5ad7f9['particleEmitterType']['type']) { case 'SphereParticleEmitter': _0x176d1b = new _0x40804d(); break; case 'SphereDirectedParticleEmitter': _0x176d1b = new _0x2aad28(); break; case 'ConeEmitter': case 'ConeParticleEmitter': _0x176d1b = new _0x1f7a9e(); break; case 'CylinderParticleEmitter': _0x176d1b = new _0x564110(); break; case 'HemisphericParticleEmitter': _0x176d1b = new _0x4adf6f(); break; case 'BoxEmitter': case 'BoxParticleEmitter': default: _0x176d1b = new _0x22edcb(); } _0x176d1b['parse'](_0x5ad7f9['particleEmitterType']); } else (_0x176d1b = new _0x22edcb())['parse'](_0x5ad7f9); _0x2b65be['particleEmitterType'] = _0x176d1b, _0x2b65be['startSpriteCellID'] = _0x5ad7f9['startSpriteCellID'], _0x2b65be['endSpriteCellID'] = _0x5ad7f9['endSpriteCellID'], _0x2b65be['spriteCellWidth'] = _0x5ad7f9['spriteCellWidth'], _0x2b65be['spriteCellHeight'] = _0x5ad7f9['spriteCellHeight'], _0x2b65be['spriteCellChangeSpeed'] = _0x5ad7f9['spriteCellChangeSpeed'], _0x2b65be['spriteRandomStartCell'] = _0x5ad7f9['spriteRandomStartCell']; } , _0x542fbe['Parse'] = function(_0x31b8ba, _0x4ed210, _0x4c0093, _0x20b9f2) { void 0x0 === _0x20b9f2 && (_0x20b9f2 = !0x1); var _0x199e37 = _0x31b8ba['name'] , _0x8b2802 = null , _0x40245e = null; if (_0x31b8ba['customShader']) { var _0x244e76 = (_0x40245e = _0x31b8ba['customShader'])['shaderOptions']['defines']['length'] > 0x0 ? _0x40245e['shaderOptions']['defines']['join']('\x0a') : ''; _0x8b2802 = _0x4ed210['getEngine']()['createEffectForParticles'](_0x40245e['shaderPath']['fragmentElement'], _0x40245e['shaderOptions']['uniforms'], _0x40245e['shaderOptions']['samplers'], _0x244e76); } var _0x3ee64f = new _0x542fbe(_0x199e37,_0x31b8ba['capacity'],_0x4ed210,_0x8b2802,_0x31b8ba['isAnimationSheetEnabled']); if (_0x3ee64f['customShader'] = _0x40245e, _0x31b8ba['id'] && (_0x3ee64f['id'] = _0x31b8ba['id']), _0x31b8ba['subEmitters']) { _0x3ee64f['subEmitters'] = []; for (var _0x190c00 = 0x0, _0x4cb80e = _0x31b8ba['subEmitters']; _0x190c00 < _0x4cb80e['length']; _0x190c00++) { for (var _0x1e2bc7 = [], _0x51335d = 0x0, _0x1cb445 = _0x4cb80e[_0x190c00]; _0x51335d < _0x1cb445['length']; _0x51335d++) { var _0xb5fef8 = _0x1cb445[_0x51335d]; _0x1e2bc7['push'](_0x2feace['Parse'](_0xb5fef8, _0x4ed210, _0x4c0093)); } _0x3ee64f['subEmitters']['push'](_0x1e2bc7); } } return _0x542fbe['_Parse'](_0x31b8ba, _0x3ee64f, _0x4ed210, _0x4c0093), _0x3ee64f['textureMask'] = _0x47d24f['f']['FromArray'](_0x31b8ba['textureMask']), _0x31b8ba['preventAutoStart'] && (_0x3ee64f['preventAutoStart'] = _0x31b8ba['preventAutoStart']), _0x20b9f2 || _0x3ee64f['preventAutoStart'] || _0x3ee64f['start'](), _0x3ee64f; } , _0x542fbe['BILLBOARDMODE_Y'] = _0x24e342['a']['PARTICLES_BILLBOARDMODE_Y'], _0x542fbe['BILLBOARDMODE_ALL'] = _0x24e342['a']['PARTICLES_BILLBOARDMODE_ALL'], _0x542fbe['BILLBOARDMODE_STRETCHED'] = _0x24e342['a']['PARTICLES_BILLBOARDMODE_STRETCHED'], _0x542fbe; }(_0x846099); _0x2feace['_ParseParticleSystem'] = _0x280da5['Parse']; _0x3e9e56['a']['ShadersStore']['gpuUpdateParticlesPixelShader'] = '#version\x20300\x20es\x0avoid\x20main()\x20{\x0adiscard;\x0a}\x0a'; var _0x49f610 = '#version\x20300\x20es\x0a#define\x20PI\x203.14159\x0auniform\x20float\x20currentCount;\x0auniform\x20float\x20timeDelta;\x0auniform\x20float\x20stopFactor;\x0auniform\x20mat4\x20emitterWM;\x0auniform\x20vec2\x20lifeTime;\x0auniform\x20vec2\x20emitPower;\x0auniform\x20vec2\x20sizeRange;\x0auniform\x20vec4\x20scaleRange;\x0a#ifndef\x20COLORGRADIENTS\x0auniform\x20vec4\x20color1;\x0auniform\x20vec4\x20color2;\x0a#endif\x0auniform\x20vec3\x20gravity;\x0auniform\x20sampler2D\x20randomSampler;\x0auniform\x20sampler2D\x20randomSampler2;\x0auniform\x20vec4\x20angleRange;\x0a#ifdef\x20BOXEMITTER\x0auniform\x20vec3\x20direction1;\x0auniform\x20vec3\x20direction2;\x0auniform\x20vec3\x20minEmitBox;\x0auniform\x20vec3\x20maxEmitBox;\x0a#endif\x0a#ifdef\x20POINTEMITTER\x0auniform\x20vec3\x20direction1;\x0auniform\x20vec3\x20direction2;\x0a#endif\x0a#ifdef\x20HEMISPHERICEMITTER\x0auniform\x20float\x20radius;\x0auniform\x20float\x20radiusRange;\x0auniform\x20float\x20directionRandomizer;\x0a#endif\x0a#ifdef\x20SPHEREEMITTER\x0auniform\x20float\x20radius;\x0auniform\x20float\x20radiusRange;\x0a#ifdef\x20DIRECTEDSPHEREEMITTER\x0auniform\x20vec3\x20direction1;\x0auniform\x20vec3\x20direction2;\x0a#else\x0auniform\x20float\x20directionRandomizer;\x0a#endif\x0a#endif\x0a#ifdef\x20CYLINDEREMITTER\x0auniform\x20float\x20radius;\x0auniform\x20float\x20height;\x0auniform\x20float\x20radiusRange;\x0a#ifdef\x20DIRECTEDCYLINDEREMITTER\x0auniform\x20vec3\x20direction1;\x0auniform\x20vec3\x20direction2;\x0a#else\x0auniform\x20float\x20directionRandomizer;\x0a#endif\x0a#endif\x0a#ifdef\x20CONEEMITTER\x0auniform\x20vec2\x20radius;\x0auniform\x20float\x20coneAngle;\x0auniform\x20vec2\x20height;\x0auniform\x20float\x20directionRandomizer;\x0a#endif\x0a\x0ain\x20vec3\x20position;\x0ain\x20float\x20age;\x0ain\x20float\x20life;\x0ain\x20vec4\x20seed;\x0ain\x20vec3\x20size;\x0a#ifndef\x20COLORGRADIENTS\x0ain\x20vec4\x20color;\x0a#endif\x0ain\x20vec3\x20direction;\x0a#ifndef\x20BILLBOARD\x0ain\x20vec3\x20initialDirection;\x0a#endif\x0a#ifdef\x20ANGULARSPEEDGRADIENTS\x0ain\x20float\x20angle;\x0a#else\x0ain\x20vec2\x20angle;\x0a#endif\x0a#ifdef\x20ANIMATESHEET\x0ain\x20float\x20cellIndex;\x0a#ifdef\x20ANIMATESHEETRANDOMSTART\x0ain\x20float\x20cellStartOffset;\x0a#endif\x0a#endif\x0a#ifdef\x20NOISE\x0ain\x20vec3\x20noiseCoordinates1;\x0ain\x20vec3\x20noiseCoordinates2;\x0a#endif\x0a\x0aout\x20vec3\x20outPosition;\x0aout\x20float\x20outAge;\x0aout\x20float\x20outLife;\x0aout\x20vec4\x20outSeed;\x0aout\x20vec3\x20outSize;\x0a#ifndef\x20COLORGRADIENTS\x0aout\x20vec4\x20outColor;\x0a#endif\x0aout\x20vec3\x20outDirection;\x0a#ifndef\x20BILLBOARD\x0aout\x20vec3\x20outInitialDirection;\x0a#endif\x0a#ifdef\x20ANGULARSPEEDGRADIENTS\x0aout\x20float\x20outAngle;\x0a#else\x0aout\x20vec2\x20outAngle;\x0a#endif\x0a#ifdef\x20ANIMATESHEET\x0aout\x20float\x20outCellIndex;\x0a#ifdef\x20ANIMATESHEETRANDOMSTART\x0aout\x20float\x20outCellStartOffset;\x0a#endif\x0a#endif\x0a#ifdef\x20NOISE\x0aout\x20vec3\x20outNoiseCoordinates1;\x0aout\x20vec3\x20outNoiseCoordinates2;\x0a#endif\x0a#ifdef\x20SIZEGRADIENTS\x0auniform\x20sampler2D\x20sizeGradientSampler;\x0a#endif\x0a#ifdef\x20ANGULARSPEEDGRADIENTS\x0auniform\x20sampler2D\x20angularSpeedGradientSampler;\x0a#endif\x0a#ifdef\x20VELOCITYGRADIENTS\x0auniform\x20sampler2D\x20velocityGradientSampler;\x0a#endif\x0a#ifdef\x20LIMITVELOCITYGRADIENTS\x0auniform\x20sampler2D\x20limitVelocityGradientSampler;\x0auniform\x20float\x20limitVelocityDamping;\x0a#endif\x0a#ifdef\x20DRAGGRADIENTS\x0auniform\x20sampler2D\x20dragGradientSampler;\x0a#endif\x0a#ifdef\x20NOISE\x0auniform\x20vec3\x20noiseStrength;\x0auniform\x20sampler2D\x20noiseSampler;\x0a#endif\x0a#ifdef\x20ANIMATESHEET\x0auniform\x20vec3\x20cellInfos;\x0a#endif\x0avec3\x20getRandomVec3(float\x20offset)\x20{\x0areturn\x20texture(randomSampler2,vec2(float(gl_VertexID)*offset/currentCount,0)).rgb;\x0a}\x0avec4\x20getRandomVec4(float\x20offset)\x20{\x0areturn\x20texture(randomSampler,vec2(float(gl_VertexID)*offset/currentCount,0));\x0a}\x0avoid\x20main()\x20{\x0afloat\x20newAge=age+timeDelta;\x0a\x0aif\x20(newAge>=life\x20&&\x20stopFactor\x20!=\x200.)\x20{\x0avec3\x20position;\x0avec3\x20direction;\x0a\x0avec4\x20randoms=getRandomVec4(seed.x);\x0a\x0aoutLife=lifeTime.x+(lifeTime.y-lifeTime.x)*randoms.r;\x0aoutAge=mod(newAge,outLife);\x0a\x0aoutSeed=seed;\x0a\x0a#ifdef\x20SIZEGRADIENTS\x0aoutSize.x=texture(sizeGradientSampler,vec2(0,0)).r;\x0a#else\x0aoutSize.x=sizeRange.x+(sizeRange.y-sizeRange.x)*randoms.g;\x0a#endif\x0aoutSize.y=scaleRange.x+(scaleRange.y-scaleRange.x)*randoms.b;\x0aoutSize.z=scaleRange.z+(scaleRange.w-scaleRange.z)*randoms.a;\x0a#ifndef\x20COLORGRADIENTS\x0a\x0aoutColor=color1+(color2-color1)*randoms.b;\x0a#endif\x0a\x0a#ifndef\x20ANGULARSPEEDGRADIENTS\x0aoutAngle.y=angleRange.x+(angleRange.y-angleRange.x)*randoms.a;\x0aoutAngle.x=angleRange.z+(angleRange.w-angleRange.z)*randoms.r;\x0a#else\x0aoutAngle=angleRange.z+(angleRange.w-angleRange.z)*randoms.r;\x0a#endif\x0a\x0a#ifdef\x20POINTEMITTER\x0avec3\x20randoms2=getRandomVec3(seed.y);\x0avec3\x20randoms3=getRandomVec3(seed.z);\x0aposition=vec3(0,0,0);\x0adirection=direction1+(direction2-direction1)*randoms3;\x0a#elif\x20defined(BOXEMITTER)\x0avec3\x20randoms2=getRandomVec3(seed.y);\x0avec3\x20randoms3=getRandomVec3(seed.z);\x0aposition=minEmitBox+(maxEmitBox-minEmitBox)*randoms2;\x0adirection=direction1+(direction2-direction1)*randoms3;\x0a#elif\x20defined(HEMISPHERICEMITTER)\x0avec3\x20randoms2=getRandomVec3(seed.y);\x0avec3\x20randoms3=getRandomVec3(seed.z);\x0a\x0afloat\x20phi=2.0*PI*randoms2.x;\x0afloat\x20theta=acos(2.0*randoms2.y-1.0);\x0afloat\x20randX=cos(phi)*sin(theta);\x0afloat\x20randY=cos(theta);\x0afloat\x20randZ=sin(phi)*sin(theta);\x0aposition=(radius-(radius*radiusRange*randoms2.z))*vec3(randX,abs(randY),randZ);\x0adirection=position+directionRandomizer*randoms3;\x0a#elif\x20defined(SPHEREEMITTER)\x0avec3\x20randoms2=getRandomVec3(seed.y);\x0avec3\x20randoms3=getRandomVec3(seed.z);\x0a\x0afloat\x20phi=2.0*PI*randoms2.x;\x0afloat\x20theta=acos(2.0*randoms2.y-1.0);\x0afloat\x20randX=cos(phi)*sin(theta);\x0afloat\x20randY=cos(theta);\x0afloat\x20randZ=sin(phi)*sin(theta);\x0aposition=(radius-(radius*radiusRange*randoms2.z))*vec3(randX,randY,randZ);\x0a#ifdef\x20DIRECTEDSPHEREEMITTER\x0adirection=direction1+(direction2-direction1)*randoms3;\x0a#else\x0a\x0adirection=position+directionRandomizer*randoms3;\x0a#endif\x0a#elif\x20defined(CYLINDEREMITTER)\x0avec3\x20randoms2=getRandomVec3(seed.y);\x0avec3\x20randoms3=getRandomVec3(seed.z);\x0a\x0afloat\x20yPos=(randoms2.x-0.5)*height;\x0afloat\x20angle=randoms2.y*PI*2.;\x0afloat\x20inverseRadiusRangeSquared=((1.-radiusRange)*(1.-radiusRange));\x0afloat\x20positionRadius=radius*sqrt(inverseRadiusRangeSquared+(randoms2.z*(1.-inverseRadiusRangeSquared)));\x0afloat\x20xPos=positionRadius*cos(angle);\x0afloat\x20zPos=positionRadius*sin(angle);\x0aposition=vec3(xPos,yPos,zPos);\x0a#ifdef\x20DIRECTEDCYLINDEREMITTER\x0adirection=direction1+(direction2-direction1)*randoms3;\x0a#else\x0a\x0aangle=angle+((randoms3.x-0.5)*PI);\x0adirection=vec3(cos(angle),randoms3.y-0.5,sin(angle));\x0adirection=normalize(direction);\x0a#endif\x0a#elif\x20defined(CONEEMITTER)\x0avec3\x20randoms2=getRandomVec3(seed.y);\x0afloat\x20s=2.0*PI*randoms2.x;\x0a#ifdef\x20CONEEMITTERSPAWNPOINT\x0afloat\x20h=0.00001;\x0a#else\x0afloat\x20h=randoms2.y*height.y;\x0a\x0ah=1.-h*h;\x0a#endif\x0afloat\x20lRadius=radius.x-radius.x*randoms2.z*radius.y;\x0alRadius=lRadius*h;\x0afloat\x20randX=lRadius*sin(s);\x0afloat\x20randZ=lRadius*cos(s);\x0afloat\x20randY=h*height.x;\x0aposition=vec3(randX,randY,randZ);\x0a\x0aif\x20(abs(cos(coneAngle))\x20==\x201.0)\x20{\x0adirection=vec3(0.,1.0,0.);\x0a}\x20else\x20{\x0avec3\x20randoms3=getRandomVec3(seed.z);\x0adirection=position+directionRandomizer*randoms3;\x0a}\x0a#else\x0a\x0aposition=vec3(0.,0.,0.);\x0a\x0adirection=2.0*(getRandomVec3(seed.w)-vec3(0.5,0.5,0.5));\x0a#endif\x0afloat\x20power=emitPower.x+(emitPower.y-emitPower.x)*randoms.a;\x0aoutPosition=(emitterWM*vec4(position,1.)).xyz;\x0avec3\x20initial=(emitterWM*vec4(direction,0.)).xyz;\x0aoutDirection=initial*power;\x0a#ifndef\x20BILLBOARD\x0aoutInitialDirection=initial;\x0a#endif\x0a#ifdef\x20ANIMATESHEET\x0aoutCellIndex=cellInfos.x;\x0a#ifdef\x20ANIMATESHEETRANDOMSTART\x0aoutCellStartOffset=randoms.a*outLife;\x0a#endif\x0a#endif\x0a#ifdef\x20NOISE\x0aoutNoiseCoordinates1=noiseCoordinates1;\x0aoutNoiseCoordinates2=noiseCoordinates2;\x0a#endif\x0a}\x20else\x20{\x0afloat\x20directionScale=timeDelta;\x0aoutAge=newAge;\x0afloat\x20ageGradient=newAge/life;\x0a#ifdef\x20VELOCITYGRADIENTS\x0adirectionScale*=texture(velocityGradientSampler,vec2(ageGradient,0)).r;\x0a#endif\x0a#ifdef\x20DRAGGRADIENTS\x0adirectionScale*=1.0-texture(dragGradientSampler,vec2(ageGradient,0)).r;\x0a#endif\x0aoutPosition=position+direction*directionScale;\x0aoutLife=life;\x0aoutSeed=seed;\x0a#ifndef\x20COLORGRADIENTS\x0aoutColor=color;\x0a#endif\x0a#ifdef\x20SIZEGRADIENTS\x0aoutSize.x=texture(sizeGradientSampler,vec2(ageGradient,0)).r;\x0aoutSize.yz=size.yz;\x0a#else\x0aoutSize=size;\x0a#endif\x0a#ifndef\x20BILLBOARD\x0aoutInitialDirection=initialDirection;\x0a#endif\x0avec3\x20updatedDirection=direction+gravity*timeDelta;\x0a#ifdef\x20LIMITVELOCITYGRADIENTS\x0afloat\x20limitVelocity=texture(limitVelocityGradientSampler,vec2(ageGradient,0)).r;\x0afloat\x20currentVelocity=length(updatedDirection);\x0aif\x20(currentVelocity>limitVelocity)\x20{\x0aupdatedDirection=updatedDirection*limitVelocityDamping;\x0a}\x0a#endif\x0aoutDirection=updatedDirection;\x0a#ifdef\x20NOISE\x0avec3\x20localPosition=outPosition-emitterWM[3].xyz;\x0afloat\x20fetchedR=texture(noiseSampler,vec2(noiseCoordinates1.x,noiseCoordinates1.y)*vec2(0.5)+vec2(0.5)).r;\x0afloat\x20fetchedG=texture(noiseSampler,vec2(noiseCoordinates1.z,noiseCoordinates2.x)*vec2(0.5)+vec2(0.5)).r;\x0afloat\x20fetchedB=texture(noiseSampler,vec2(noiseCoordinates2.y,noiseCoordinates2.z)*vec2(0.5)+vec2(0.5)).r;\x0avec3\x20force=vec3(2.*fetchedR-1.,2.*fetchedG-1.,2.*fetchedB-1.)*noiseStrength;\x0aoutDirection=outDirection+force*timeDelta;\x0aoutNoiseCoordinates1=noiseCoordinates1;\x0aoutNoiseCoordinates2=noiseCoordinates2;\x0a#endif\x0a#ifdef\x20ANGULARSPEEDGRADIENTS\x0afloat\x20angularSpeed=texture(angularSpeedGradientSampler,vec2(ageGradient,0)).r;\x0aoutAngle=angle+angularSpeed*timeDelta;\x0a#else\x0aoutAngle=vec2(angle.x+angle.y*timeDelta,angle.y);\x0a#endif\x0a#ifdef\x20ANIMATESHEET\x0afloat\x20offsetAge=outAge;\x0afloat\x20dist=cellInfos.y-cellInfos.x;\x0a#ifdef\x20ANIMATESHEETRANDOMSTART\x0aoutCellStartOffset=cellStartOffset;\x0aoffsetAge+=cellStartOffset;\x0a#endif\x0afloat\x20ratio=clamp(mod(offsetAge*cellInfos.z,life)/life,0.,1.0);\x0aoutCellIndex=float(int(cellInfos.x+ratio*dist));\x0a#endif\x0a}\x0a}'; _0x3e9e56['a']['ShadersStore']['gpuUpdateParticlesVertexShader'] = _0x49f610; var _0x110e36 = '#ifdef\x20CLIPPLANE\x0ain\x20float\x20fClipDistance;\x0a#endif\x0a#ifdef\x20CLIPPLANE2\x0ain\x20float\x20fClipDistance2;\x0a#endif\x0a#ifdef\x20CLIPPLANE3\x0ain\x20float\x20fClipDistance3;\x0a#endif\x0a#ifdef\x20CLIPPLANE4\x0ain\x20float\x20fClipDistance4;\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['clipPlaneFragmentDeclaration2'] = _0x110e36; var _0x5add69 = '#version\x20300\x20es\x0auniform\x20sampler2D\x20textureSampler;\x0ain\x20vec2\x20vUV;\x0ain\x20vec4\x20vColor;\x0aout\x20vec4\x20outFragColor;\x0a#include\x0a#include\x0a#include\x0a#include\x0avoid\x20main()\x20{\x0a#include\x0avec4\x20textureColor=texture(textureSampler,vUV);\x0aoutFragColor=textureColor*vColor;\x0a#ifdef\x20BLENDMULTIPLYMODE\x0afloat\x20alpha=vColor.a*textureColor.a;\x0aoutFragColor.rgb=outFragColor.rgb*alpha+vec3(1.0)*(1.0-alpha);\x0a#endif\x0a\x0a\x0a#ifdef\x20IMAGEPROCESSINGPOSTPROCESS\x0aoutFragColor.rgb=toLinearSpace(outFragColor.rgb);\x0a#else\x0a#ifdef\x20IMAGEPROCESSING\x0aoutFragColor.rgb=toLinearSpace(outFragColor.rgb);\x0aoutFragColor=applyImageProcessing(outFragColor);\x0a#endif\x0a#endif\x0a}\x0a'; _0x3e9e56['a']['ShadersStore']['gpuRenderParticlesPixelShader'] = _0x5add69; var _0x596a9e = '#ifdef\x20CLIPPLANE\x0auniform\x20vec4\x20vClipPlane;\x0aout\x20float\x20fClipDistance;\x0a#endif\x0a#ifdef\x20CLIPPLANE2\x0auniform\x20vec4\x20vClipPlane2;\x0aout\x20float\x20fClipDistance2;\x0a#endif\x0a#ifdef\x20CLIPPLANE3\x0auniform\x20vec4\x20vClipPlane3;\x0aout\x20float\x20fClipDistance3;\x0a#endif\x0a#ifdef\x20CLIPPLANE4\x0auniform\x20vec4\x20vClipPlane4;\x0aout\x20float\x20fClipDistance4;\x0a#endif'; _0x3e9e56['a']['IncludesShadersStore']['clipPlaneVertexDeclaration2'] = _0x596a9e; var _0x4c7f3f = '#version\x20300\x20es\x0auniform\x20mat4\x20view;\x0auniform\x20mat4\x20projection;\x0auniform\x20vec2\x20translationPivot;\x0auniform\x20vec3\x20worldOffset;\x0a\x0ain\x20vec3\x20position;\x0ain\x20float\x20age;\x0ain\x20float\x20life;\x0ain\x20vec3\x20size;\x0a#ifndef\x20BILLBOARD\x0ain\x20vec3\x20initialDirection;\x0a#endif\x0a#ifdef\x20BILLBOARDSTRETCHED\x0ain\x20vec3\x20direction;\x0a#endif\x0ain\x20float\x20angle;\x0a#ifdef\x20ANIMATESHEET\x0ain\x20float\x20cellIndex;\x0a#endif\x0ain\x20vec2\x20offset;\x0ain\x20vec2\x20uv;\x0aout\x20vec2\x20vUV;\x0aout\x20vec4\x20vColor;\x0a#if\x20defined(CLIPPLANE)\x20||\x20defined(CLIPPLANE2)\x20||\x20defined(CLIPPLANE3)\x20||\x20defined(CLIPPLANE4)\x0auniform\x20mat4\x20invView;\x0a#endif\x0a#include\x0a#ifdef\x20COLORGRADIENTS\x0auniform\x20sampler2D\x20colorGradientSampler;\x0a#else\x0auniform\x20vec4\x20colorDead;\x0ain\x20vec4\x20color;\x0a#endif\x0a#ifdef\x20ANIMATESHEET\x0auniform\x20vec3\x20sheetInfos;\x0a#endif\x0a#ifdef\x20BILLBOARD\x0auniform\x20vec3\x20eyePosition;\x0a#endif\x0avec3\x20rotate(vec3\x20yaxis,vec3\x20rotatedCorner)\x20{\x0avec3\x20xaxis=normalize(cross(vec3(0.,1.0,0.),yaxis));\x0avec3\x20zaxis=normalize(cross(yaxis,xaxis));\x0avec3\x20row0=vec3(xaxis.x,xaxis.y,xaxis.z);\x0avec3\x20row1=vec3(yaxis.x,yaxis.y,yaxis.z);\x0avec3\x20row2=vec3(zaxis.x,zaxis.y,zaxis.z);\x0amat3\x20rotMatrix=mat3(row0,row1,row2);\x0avec3\x20alignedCorner=rotMatrix*rotatedCorner;\x0areturn\x20(position+worldOffset)+alignedCorner;\x0a}\x0a#ifdef\x20BILLBOARDSTRETCHED\x0avec3\x20rotateAlign(vec3\x20toCamera,vec3\x20rotatedCorner)\x20{\x0avec3\x20normalizedToCamera=normalize(toCamera);\x0avec3\x20normalizedCrossDirToCamera=normalize(cross(normalize(direction),normalizedToCamera));\x0avec3\x20crossProduct=normalize(cross(normalizedToCamera,normalizedCrossDirToCamera));\x0avec3\x20row0=vec3(normalizedCrossDirToCamera.x,normalizedCrossDirToCamera.y,normalizedCrossDirToCamera.z);\x0avec3\x20row1=vec3(crossProduct.x,crossProduct.y,crossProduct.z);\x0avec3\x20row2=vec3(normalizedToCamera.x,normalizedToCamera.y,normalizedToCamera.z);\x0amat3\x20rotMatrix=mat3(row0,row1,row2);\x0avec3\x20alignedCorner=rotMatrix*rotatedCorner;\x0areturn\x20(position+worldOffset)+alignedCorner;\x0a}\x0a#endif\x0avoid\x20main()\x20{\x0a#ifdef\x20ANIMATESHEET\x0afloat\x20rowOffset=floor(cellIndex/sheetInfos.z);\x0afloat\x20columnOffset=cellIndex-rowOffset*sheetInfos.z;\x0avec2\x20uvScale=sheetInfos.xy;\x0avec2\x20uvOffset=vec2(uv.x\x20,1.0-uv.y);\x0avUV=(uvOffset+vec2(columnOffset,rowOffset))*uvScale;\x0a#else\x0avUV=uv;\x0a#endif\x0afloat\x20ratio=age/life;\x0a#ifdef\x20COLORGRADIENTS\x0avColor=texture(colorGradientSampler,vec2(ratio,0));\x0a#else\x0avColor=color*vec4(1.0-ratio)+colorDead*vec4(ratio);\x0a#endif\x0avec2\x20cornerPos=(offset-translationPivot)*size.yz*size.x+translationPivot;\x0a#ifdef\x20BILLBOARD\x0avec4\x20rotatedCorner;\x0arotatedCorner.w=0.;\x0a#ifdef\x20BILLBOARDY\x0arotatedCorner.x=cornerPos.x*cos(angle)-cornerPos.y*sin(angle);\x0arotatedCorner.z=cornerPos.x*sin(angle)+cornerPos.y*cos(angle);\x0arotatedCorner.y=0.;\x0avec3\x20yaxis=(position+worldOffset)-eyePosition;\x0ayaxis.y=0.;\x0avec3\x20worldPos=rotate(normalize(yaxis),rotatedCorner.xyz);\x0avec4\x20viewPosition=(view*vec4(worldPos,1.0));\x0a#elif\x20defined(BILLBOARDSTRETCHED)\x0arotatedCorner.x=cornerPos.x*cos(angle)-cornerPos.y*sin(angle);\x0arotatedCorner.y=cornerPos.x*sin(angle)+cornerPos.y*cos(angle);\x0arotatedCorner.z=0.;\x0avec3\x20toCamera=(position+worldOffset)-eyePosition;\x0avec3\x20worldPos=rotateAlign(toCamera,rotatedCorner.xyz);\x0avec4\x20viewPosition=(view*vec4(worldPos,1.0));\x0a#else\x0a\x0arotatedCorner.x=cornerPos.x*cos(angle)-cornerPos.y*sin(angle);\x0arotatedCorner.y=cornerPos.x*sin(angle)+cornerPos.y*cos(angle);\x0arotatedCorner.z=0.;\x0a\x0avec4\x20viewPosition=view*vec4((position+worldOffset),1.0)+rotatedCorner;\x0a#endif\x0a#else\x0a\x0avec3\x20rotatedCorner;\x0arotatedCorner.x=cornerPos.x*cos(angle)-cornerPos.y*sin(angle);\x0arotatedCorner.y=0.;\x0arotatedCorner.z=cornerPos.x*sin(angle)+cornerPos.y*cos(angle);\x0avec3\x20yaxis=normalize(initialDirection);\x0avec3\x20worldPos=rotate(yaxis,rotatedCorner);\x0a\x0avec4\x20viewPosition=view*vec4(worldPos,1.0);\x0a#endif\x0agl_Position=projection*viewPosition;\x0a\x0a#if\x20defined(CLIPPLANE)\x20||\x20defined(CLIPPLANE2)\x20||\x20defined(CLIPPLANE3)\x20||\x20defined(CLIPPLANE4)\x0avec4\x20worldPos=invView*viewPosition;\x0a#endif\x0a#include\x0a}'; _0x3e9e56['a']['ShadersStore']['gpuRenderParticlesVertexShader'] = _0x4c7f3f; var _0x53d135 = function(_0x1dac27) { function _0x43e85c(_0x681c79, _0x138f3a, _0xdd5802, _0x13ee97) { void 0x0 === _0x13ee97 && (_0x13ee97 = !0x1); var _0x5ca66f = _0x1dac27['call'](this, _0x681c79) || this; _0x5ca66f['layerMask'] = 0xfffffff, _0x5ca66f['_accumulatedCount'] = 0x0, _0x5ca66f['_targetIndex'] = 0x0, _0x5ca66f['_currentRenderId'] = -0x1, _0x5ca66f['_started'] = !0x1, _0x5ca66f['_stopped'] = !0x1, _0x5ca66f['_timeDelta'] = 0x0, _0x5ca66f['_actualFrame'] = 0x0, _0x5ca66f['_rawTextureWidth'] = 0x100, _0x5ca66f['onDisposeObservable'] = new _0x2dbec2['c'](), _0x5ca66f['forceDepthWrite'] = !0x1, _0x5ca66f['_preWarmDone'] = !0x1, _0x5ca66f['_scene'] = _0xdd5802 || _0x48707b['a']['LastCreatedScene'], _0x5ca66f['_attachImageProcessingConfiguration'](null), _0x5ca66f['_engine'] = _0x5ca66f['_scene']['getEngine'](), _0x138f3a['randomTextureSize'] || delete _0x138f3a['randomTextureSize']; var _0x3cf333 = _0x420e5b['a']({ 'capacity': 0xc350, 'randomTextureSize': _0x5ca66f['_engine']['getCaps']()['maxTextureSize'] }, _0x138f3a) , _0x110c16 = _0x138f3a; isFinite(_0x110c16) && (_0x3cf333['capacity'] = _0x110c16), _0x5ca66f['_capacity'] = _0x3cf333['capacity'], _0x5ca66f['_activeCount'] = _0x3cf333['capacity'], _0x5ca66f['_currentActiveCount'] = 0x0, _0x5ca66f['_isAnimationSheetEnabled'] = _0x13ee97, _0x5ca66f['_scene']['particleSystems']['push'](_0x5ca66f), _0x5ca66f['_updateEffectOptions'] = { 'attributes': ['position', 'age', 'life', 'seed', 'size', 'color', 'direction', 'initialDirection', 'angle', 'cellIndex', 'cellStartOffset', 'noiseCoordinates1', 'noiseCoordinates2'], 'uniformsNames': ['currentCount', 'timeDelta', 'emitterWM', 'lifeTime', 'color1', 'color2', 'sizeRange', 'scaleRange', 'gravity', 'emitPower', 'direction1', 'direction2', 'minEmitBox', 'maxEmitBox', 'radius', 'directionRandomizer', 'height', 'coneAngle', 'stopFactor', 'angleRange', 'radiusRange', 'cellInfos', 'noiseStrength', 'limitVelocityDamping'], 'uniformBuffersNames': [], 'samplers': ['randomSampler', 'randomSampler2', 'sizeGradientSampler', 'angularSpeedGradientSampler', 'velocityGradientSampler', 'limitVelocityGradientSampler', 'noiseSampler', 'dragGradientSampler'], 'defines': '', 'fallbacks': null, 'onCompiled': null, 'onError': null, 'indexParameters': null, 'maxSimultaneousLights': 0x0, 'transformFeedbackVaryings': [] }, _0x5ca66f['particleEmitterType'] = new _0x22edcb(); for (var _0x39ca17 = Math['min'](_0x5ca66f['_engine']['getCaps']()['maxTextureSize'], _0x3cf333['randomTextureSize']), _0x19ced8 = [], _0x2f802e = 0x0; _0x2f802e < _0x39ca17; ++_0x2f802e) _0x19ced8['push'](Math['random']()), _0x19ced8['push'](Math['random']()), _0x19ced8['push'](Math['random']()), _0x19ced8['push'](Math['random']()); _0x5ca66f['_randomTexture'] = new _0x16dc17(new Float32Array(_0x19ced8),_0x39ca17,0x1,_0x24e342['a']['TEXTUREFORMAT_RGBA'],_0x5ca66f['_scene'],!0x1,!0x1,_0x24e342['a']['TEXTURE_NEAREST_SAMPLINGMODE'],_0x24e342['a']['TEXTURETYPE_FLOAT']), _0x5ca66f['_randomTexture']['wrapU'] = _0x11d14a['a']['WRAP_ADDRESSMODE'], _0x5ca66f['_randomTexture']['wrapV'] = _0x11d14a['a']['WRAP_ADDRESSMODE'], _0x19ced8 = []; for (_0x2f802e = 0x0; _0x2f802e < _0x39ca17; ++_0x2f802e) _0x19ced8['push'](Math['random']()), _0x19ced8['push'](Math['random']()), _0x19ced8['push'](Math['random']()), _0x19ced8['push'](Math['random']()); return _0x5ca66f['_randomTexture2'] = new _0x16dc17(new Float32Array(_0x19ced8),_0x39ca17,0x1,_0x24e342['a']['TEXTUREFORMAT_RGBA'],_0x5ca66f['_scene'],!0x1,!0x1,_0x24e342['a']['TEXTURE_NEAREST_SAMPLINGMODE'],_0x24e342['a']['TEXTURETYPE_FLOAT']), _0x5ca66f['_randomTexture2']['wrapU'] = _0x11d14a['a']['WRAP_ADDRESSMODE'], _0x5ca66f['_randomTexture2']['wrapV'] = _0x11d14a['a']['WRAP_ADDRESSMODE'], _0x5ca66f['_randomTextureSize'] = _0x39ca17, _0x5ca66f; } return _0x420e5b['d'](_0x43e85c, _0x1dac27), Object['defineProperty'](_0x43e85c, 'IsSupported', { 'get': function() { return !!_0x48707b['a']['LastCreatedEngine'] && _0x48707b['a']['LastCreatedEngine']['webGLVersion'] > 0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x43e85c['prototype']['getCapacity'] = function() { return this['_capacity']; } , Object['defineProperty'](_0x43e85c['prototype'], 'activeParticleCount', { 'get': function() { return this['_activeCount']; }, 'set': function(_0x5e60b6) { this['_activeCount'] = Math['min'](_0x5e60b6, this['_capacity']); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x43e85c['prototype']['isReady'] = function() { return this['_updateEffect'] ? !!(this['emitter'] && this['_updateEffect']['isReady']() && this['_imageProcessingConfiguration']['isReady']() && this['_renderEffect']['isReady']() && this['particleTexture'] && this['particleTexture']['isReady']()) : (this['_recreateUpdateEffect'](), this['_recreateRenderEffect'](), !0x1); } , _0x43e85c['prototype']['isStarted'] = function() { return this['_started']; } , _0x43e85c['prototype']['start'] = function(_0x3897fa) { var _0x235c10 = this; if (void 0x0 === _0x3897fa && (_0x3897fa = this['startDelay']), !this['targetStopDuration'] && this['_hasTargetStopDurationDependantGradient']()) throw 'Particle\x20system\x20started\x20with\x20a\x20targetStopDuration\x20dependant\x20gradient\x20(eg.\x20startSizeGradients)\x20but\x20no\x20targetStopDuration\x20set'; _0x3897fa ? setTimeout(function() { _0x235c10['start'](0x0); }, _0x3897fa) : (this['_started'] = !0x0, this['_stopped'] = !0x1, this['_preWarmDone'] = !0x1, this['beginAnimationOnStart'] && this['animations'] && this['animations']['length'] > 0x0 && this['getScene']()['beginAnimation'](this, this['beginAnimationFrom'], this['beginAnimationTo'], this['beginAnimationLoop'])); } , _0x43e85c['prototype']['stop'] = function() { this['_stopped'] = !0x0; } , _0x43e85c['prototype']['reset'] = function() { this['_releaseBuffers'](), this['_releaseVAOs'](), this['_currentActiveCount'] = 0x0, this['_targetIndex'] = 0x0; } , _0x43e85c['prototype']['getClassName'] = function() { return 'GPUParticleSystem'; } , _0x43e85c['prototype']['_removeGradientAndTexture'] = function(_0x5eae78, _0x3dc980, _0x51afca) { return _0x1dac27['prototype']['_removeGradientAndTexture']['call'](this, _0x5eae78, _0x3dc980, _0x51afca), this['_releaseBuffers'](), this; } , _0x43e85c['prototype']['addColorGradient'] = function(_0x1f07d8, _0x1debf5, _0x353042) { this['_colorGradients'] || (this['_colorGradients'] = []); var _0x41501 = new _0x1eb50e['c'](); return _0x41501['gradient'] = _0x1f07d8, _0x41501['color1'] = _0x1debf5, this['_colorGradients']['push'](_0x41501), this['_colorGradients']['sort'](function(_0x58e5aa, _0xa42199) { return _0x58e5aa['gradient'] < _0xa42199['gradient'] ? -0x1 : _0x58e5aa['gradient'] > _0xa42199['gradient'] ? 0x1 : 0x0; }), this['_colorGradientsTexture'] && (this['_colorGradientsTexture']['dispose'](), this['_colorGradientsTexture'] = null), this['_releaseBuffers'](), this; } , _0x43e85c['prototype']['removeColorGradient'] = function(_0x4341da) { return this['_removeGradientAndTexture'](_0x4341da, this['_colorGradients'], this['_colorGradientsTexture']), this['_colorGradientsTexture'] = null, this; } , _0x43e85c['prototype']['_addFactorGradient'] = function(_0x363dd1, _0x3458a5, _0x551326) { var _0x104c6f = new _0x1eb50e['d'](); _0x104c6f['gradient'] = _0x3458a5, _0x104c6f['factor1'] = _0x551326, _0x363dd1['push'](_0x104c6f), _0x363dd1['sort'](function(_0x5bce69, _0x3894f7) { return _0x5bce69['gradient'] < _0x3894f7['gradient'] ? -0x1 : _0x5bce69['gradient'] > _0x3894f7['gradient'] ? 0x1 : 0x0; }), this['_releaseBuffers'](); } , _0x43e85c['prototype']['addSizeGradient'] = function(_0xf62fd0, _0x1fe61d) { return this['_sizeGradients'] || (this['_sizeGradients'] = []), this['_addFactorGradient'](this['_sizeGradients'], _0xf62fd0, _0x1fe61d), this['_sizeGradientsTexture'] && (this['_sizeGradientsTexture']['dispose'](), this['_sizeGradientsTexture'] = null), this['_releaseBuffers'](), this; } , _0x43e85c['prototype']['removeSizeGradient'] = function(_0x1c24ee) { return this['_removeGradientAndTexture'](_0x1c24ee, this['_sizeGradients'], this['_sizeGradientsTexture']), this['_sizeGradientsTexture'] = null, this; } , _0x43e85c['prototype']['addAngularSpeedGradient'] = function(_0x4fad78, _0x395158) { return this['_angularSpeedGradients'] || (this['_angularSpeedGradients'] = []), this['_addFactorGradient'](this['_angularSpeedGradients'], _0x4fad78, _0x395158), this['_angularSpeedGradientsTexture'] && (this['_angularSpeedGradientsTexture']['dispose'](), this['_angularSpeedGradientsTexture'] = null), this['_releaseBuffers'](), this; } , _0x43e85c['prototype']['removeAngularSpeedGradient'] = function(_0x3fc08a) { return this['_removeGradientAndTexture'](_0x3fc08a, this['_angularSpeedGradients'], this['_angularSpeedGradientsTexture']), this['_angularSpeedGradientsTexture'] = null, this; } , _0x43e85c['prototype']['addVelocityGradient'] = function(_0x20136d, _0x4ba6cf) { return this['_velocityGradients'] || (this['_velocityGradients'] = []), this['_addFactorGradient'](this['_velocityGradients'], _0x20136d, _0x4ba6cf), this['_velocityGradientsTexture'] && (this['_velocityGradientsTexture']['dispose'](), this['_velocityGradientsTexture'] = null), this['_releaseBuffers'](), this; } , _0x43e85c['prototype']['removeVelocityGradient'] = function(_0x1f8bb6) { return this['_removeGradientAndTexture'](_0x1f8bb6, this['_velocityGradients'], this['_velocityGradientsTexture']), this['_velocityGradientsTexture'] = null, this; } , _0x43e85c['prototype']['addLimitVelocityGradient'] = function(_0x358bbd, _0x2bfc67) { return this['_limitVelocityGradients'] || (this['_limitVelocityGradients'] = []), this['_addFactorGradient'](this['_limitVelocityGradients'], _0x358bbd, _0x2bfc67), this['_limitVelocityGradientsTexture'] && (this['_limitVelocityGradientsTexture']['dispose'](), this['_limitVelocityGradientsTexture'] = null), this['_releaseBuffers'](), this; } , _0x43e85c['prototype']['removeLimitVelocityGradient'] = function(_0x1f547d) { return this['_removeGradientAndTexture'](_0x1f547d, this['_limitVelocityGradients'], this['_limitVelocityGradientsTexture']), this['_limitVelocityGradientsTexture'] = null, this; } , _0x43e85c['prototype']['addDragGradient'] = function(_0xb64bb2, _0x92ab18) { return this['_dragGradients'] || (this['_dragGradients'] = []), this['_addFactorGradient'](this['_dragGradients'], _0xb64bb2, _0x92ab18), this['_dragGradientsTexture'] && (this['_dragGradientsTexture']['dispose'](), this['_dragGradientsTexture'] = null), this['_releaseBuffers'](), this; } , _0x43e85c['prototype']['removeDragGradient'] = function(_0x14b4f9) { return this['_removeGradientAndTexture'](_0x14b4f9, this['_dragGradients'], this['_dragGradientsTexture']), this['_dragGradientsTexture'] = null, this; } , _0x43e85c['prototype']['addEmitRateGradient'] = function(_0x4aec88, _0x56c332, _0x583126) { return this; } , _0x43e85c['prototype']['removeEmitRateGradient'] = function(_0x12ff9a) { return this; } , _0x43e85c['prototype']['addStartSizeGradient'] = function(_0x5a92ed, _0x14dbc9, _0x148564) { return this; } , _0x43e85c['prototype']['removeStartSizeGradient'] = function(_0x4780f0) { return this; } , _0x43e85c['prototype']['addColorRemapGradient'] = function(_0x506513, _0x963158, _0x17fde9) { return this; } , _0x43e85c['prototype']['removeColorRemapGradient'] = function() { return this; } , _0x43e85c['prototype']['addAlphaRemapGradient'] = function(_0x20f782, _0x42e00e, _0x4ef184) { return this; } , _0x43e85c['prototype']['removeAlphaRemapGradient'] = function() { return this; } , _0x43e85c['prototype']['addRampGradient'] = function(_0x1d76fd, _0x459172) { return this; } , _0x43e85c['prototype']['removeRampGradient'] = function() { return this; } , _0x43e85c['prototype']['getRampGradients'] = function() { return null; } , Object['defineProperty'](_0x43e85c['prototype'], 'useRampGradients', { 'get': function() { return !0x1; }, 'set': function(_0x2ad8d4) {}, 'enumerable': !0x0, 'configurable': !0x0 }), _0x43e85c['prototype']['addLifeTimeGradient'] = function(_0x4a0b8f, _0x5c4bc3, _0x5be5c4) { return this; } , _0x43e85c['prototype']['removeLifeTimeGradient'] = function(_0x56dc54) { return this; } , _0x43e85c['prototype']['_reset'] = function() { this['_releaseBuffers'](); } , _0x43e85c['prototype']['_createUpdateVAO'] = function(_0x327c6c) { var _0x3083f3 = {}; _0x3083f3['position'] = _0x327c6c['createVertexBuffer']('position', 0x0, 0x3), _0x3083f3['age'] = _0x327c6c['createVertexBuffer']('age', 0x3, 0x1), _0x3083f3['life'] = _0x327c6c['createVertexBuffer']('life', 0x4, 0x1), _0x3083f3['seed'] = _0x327c6c['createVertexBuffer']('seed', 0x5, 0x4), _0x3083f3['size'] = _0x327c6c['createVertexBuffer']('size', 0x9, 0x3); var _0x5d344d = 0xc; this['_colorGradientsTexture'] || (_0x3083f3['color'] = _0x327c6c['createVertexBuffer']('color', _0x5d344d, 0x4), _0x5d344d += 0x4), _0x3083f3['direction'] = _0x327c6c['createVertexBuffer']('direction', _0x5d344d, 0x3), _0x5d344d += 0x3, this['_isBillboardBased'] || (_0x3083f3['initialDirection'] = _0x327c6c['createVertexBuffer']('initialDirection', _0x5d344d, 0x3), _0x5d344d += 0x3), this['_angularSpeedGradientsTexture'] ? (_0x3083f3['angle'] = _0x327c6c['createVertexBuffer']('angle', _0x5d344d, 0x1), _0x5d344d += 0x1) : (_0x3083f3['angle'] = _0x327c6c['createVertexBuffer']('angle', _0x5d344d, 0x2), _0x5d344d += 0x2), this['_isAnimationSheetEnabled'] && (_0x3083f3['cellIndex'] = _0x327c6c['createVertexBuffer']('cellIndex', _0x5d344d, 0x1), _0x5d344d += 0x1, this['spriteRandomStartCell'] && (_0x3083f3['cellStartOffset'] = _0x327c6c['createVertexBuffer']('cellStartOffset', _0x5d344d, 0x1), _0x5d344d += 0x1)), this['noiseTexture'] && (_0x3083f3['noiseCoordinates1'] = _0x327c6c['createVertexBuffer']('noiseCoordinates1', _0x5d344d, 0x3), _0x5d344d += 0x3, _0x3083f3['noiseCoordinates2'] = _0x327c6c['createVertexBuffer']('noiseCoordinates2', _0x5d344d, 0x3), _0x5d344d += 0x3); var _0x380f92 = this['_engine']['recordVertexArrayObject'](_0x3083f3, null, this['_updateEffect']); return this['_engine']['bindArrayBuffer'](null), _0x380f92; } , _0x43e85c['prototype']['_createRenderVAO'] = function(_0x46657e, _0x191cd7) { var _0xb032df = {}; _0xb032df['position'] = _0x46657e['createVertexBuffer']('position', 0x0, 0x3, this['_attributesStrideSize'], !0x0), _0xb032df['age'] = _0x46657e['createVertexBuffer']('age', 0x3, 0x1, this['_attributesStrideSize'], !0x0), _0xb032df['life'] = _0x46657e['createVertexBuffer']('life', 0x4, 0x1, this['_attributesStrideSize'], !0x0), _0xb032df['size'] = _0x46657e['createVertexBuffer']('size', 0x9, 0x3, this['_attributesStrideSize'], !0x0); var _0x26ef86 = 0xc; this['_colorGradientsTexture'] || (_0xb032df['color'] = _0x46657e['createVertexBuffer']('color', _0x26ef86, 0x4, this['_attributesStrideSize'], !0x0), _0x26ef86 += 0x4), this['billboardMode'] === _0x280da5['BILLBOARDMODE_STRETCHED'] && (_0xb032df['direction'] = _0x46657e['createVertexBuffer']('direction', _0x26ef86, 0x3, this['_attributesStrideSize'], !0x0)), _0x26ef86 += 0x3, this['_isBillboardBased'] || (_0xb032df['initialDirection'] = _0x46657e['createVertexBuffer']('initialDirection', _0x26ef86, 0x3, this['_attributesStrideSize'], !0x0), _0x26ef86 += 0x3), _0xb032df['angle'] = _0x46657e['createVertexBuffer']('angle', _0x26ef86, 0x1, this['_attributesStrideSize'], !0x0), this['_angularSpeedGradientsTexture'] ? _0x26ef86++ : _0x26ef86 += 0x2, this['_isAnimationSheetEnabled'] && (_0xb032df['cellIndex'] = _0x46657e['createVertexBuffer']('cellIndex', _0x26ef86, 0x1, this['_attributesStrideSize'], !0x0), _0x26ef86 += 0x1, this['spriteRandomStartCell'] && (_0xb032df['cellStartOffset'] = _0x46657e['createVertexBuffer']('cellStartOffset', _0x26ef86, 0x1, this['_attributesStrideSize'], !0x0), _0x26ef86 += 0x1)), this['noiseTexture'] && (_0xb032df['noiseCoordinates1'] = _0x46657e['createVertexBuffer']('noiseCoordinates1', _0x26ef86, 0x3, this['_attributesStrideSize'], !0x0), _0x26ef86 += 0x3, _0xb032df['noiseCoordinates2'] = _0x46657e['createVertexBuffer']('noiseCoordinates2', _0x26ef86, 0x3, this['_attributesStrideSize'], !0x0), _0x26ef86 += 0x3), _0xb032df['offset'] = _0x191cd7['createVertexBuffer']('offset', 0x0, 0x2), _0xb032df['uv'] = _0x191cd7['createVertexBuffer']('uv', 0x2, 0x2); var _0x33476c = this['_engine']['recordVertexArrayObject'](_0xb032df, null, this['_renderEffect']); return this['_engine']['bindArrayBuffer'](null), _0x33476c; } , _0x43e85c['prototype']['_initialize'] = function(_0x26a6f1) { if (void 0x0 === _0x26a6f1 && (_0x26a6f1 = !0x1), !this['_buffer0'] || _0x26a6f1) { var _0x429420 = this['_scene']['getEngine']() , _0x224637 = new Array(); this['_attributesStrideSize'] = 0x15, this['_targetIndex'] = 0x0, this['isBillboardBased'] || (this['_attributesStrideSize'] += 0x3), this['_colorGradientsTexture'] && (this['_attributesStrideSize'] -= 0x4), this['_angularSpeedGradientsTexture'] && (this['_attributesStrideSize'] -= 0x1), this['_isAnimationSheetEnabled'] && (this['_attributesStrideSize'] += 0x1, this['spriteRandomStartCell'] && (this['_attributesStrideSize'] += 0x1)), this['noiseTexture'] && (this['_attributesStrideSize'] += 0x6); for (var _0x3169d9 = 0x0; _0x3169d9 < this['_capacity']; _0x3169d9++) _0x224637['push'](0x0), _0x224637['push'](0x0), _0x224637['push'](0x0), _0x224637['push'](0x0), _0x224637['push'](0x0), _0x224637['push'](Math['random']()), _0x224637['push'](Math['random']()), _0x224637['push'](Math['random']()), _0x224637['push'](Math['random']()), _0x224637['push'](0x0), _0x224637['push'](0x0), _0x224637['push'](0x0), this['_colorGradientsTexture'] || (_0x224637['push'](0x0), _0x224637['push'](0x0), _0x224637['push'](0x0), _0x224637['push'](0x0)), _0x224637['push'](0x0), _0x224637['push'](0x0), _0x224637['push'](0x0), this['isBillboardBased'] || (_0x224637['push'](0x0), _0x224637['push'](0x0), _0x224637['push'](0x0)), _0x224637['push'](0x0), this['_angularSpeedGradientsTexture'] || _0x224637['push'](0x0), this['_isAnimationSheetEnabled'] && (_0x224637['push'](0x0), this['spriteRandomStartCell'] && _0x224637['push'](0x0)), this['noiseTexture'] && (_0x224637['push'](Math['random']()), _0x224637['push'](Math['random']()), _0x224637['push'](Math['random']()), _0x224637['push'](Math['random']()), _0x224637['push'](Math['random']()), _0x224637['push'](Math['random']())); var _0x13971f = new Float32Array([0.5, 0.5, 0x1, 0x1, -0.5, 0.5, 0x0, 0x1, -0.5, -0.5, 0x0, 0x0, 0.5, -0.5, 0x1, 0x0]); this['_buffer0'] = new _0x4209f7['a'](_0x429420,_0x224637,!0x1,this['_attributesStrideSize']), this['_buffer1'] = new _0x4209f7['a'](_0x429420,_0x224637,!0x1,this['_attributesStrideSize']), this['_spriteBuffer'] = new _0x4209f7['a'](_0x429420,_0x13971f,!0x1,0x4), this['_updateVAO'] = [], this['_updateVAO']['push'](this['_createUpdateVAO'](this['_buffer0'])), this['_updateVAO']['push'](this['_createUpdateVAO'](this['_buffer1'])), this['_renderVAO'] = [], this['_renderVAO']['push'](this['_createRenderVAO'](this['_buffer1'], this['_spriteBuffer'])), this['_renderVAO']['push'](this['_createRenderVAO'](this['_buffer0'], this['_spriteBuffer'])), this['_sourceBuffer'] = this['_buffer0'], this['_targetBuffer'] = this['_buffer1']; } } , _0x43e85c['prototype']['_recreateUpdateEffect'] = function() { var _0x2cc1e8 = this['particleEmitterType'] ? this['particleEmitterType']['getEffectDefines']() : ''; this['_isBillboardBased'] && (_0x2cc1e8 += '\x0a#define\x20BILLBOARD'), this['_colorGradientsTexture'] && (_0x2cc1e8 += '\x0a#define\x20COLORGRADIENTS'), this['_sizeGradientsTexture'] && (_0x2cc1e8 += '\x0a#define\x20SIZEGRADIENTS'), this['_angularSpeedGradientsTexture'] && (_0x2cc1e8 += '\x0a#define\x20ANGULARSPEEDGRADIENTS'), this['_velocityGradientsTexture'] && (_0x2cc1e8 += '\x0a#define\x20VELOCITYGRADIENTS'), this['_limitVelocityGradientsTexture'] && (_0x2cc1e8 += '\x0a#define\x20LIMITVELOCITYGRADIENTS'), this['_dragGradientsTexture'] && (_0x2cc1e8 += '\x0a#define\x20DRAGGRADIENTS'), this['isAnimationSheetEnabled'] && (_0x2cc1e8 += '\x0a#define\x20ANIMATESHEET', this['spriteRandomStartCell'] && (_0x2cc1e8 += '\x0a#define\x20ANIMATESHEETRANDOMSTART')), this['noiseTexture'] && (_0x2cc1e8 += '\x0a#define\x20NOISE'), this['_updateEffect'] && this['_updateEffectOptions']['defines'] === _0x2cc1e8 || (this['_updateEffectOptions']['transformFeedbackVaryings'] = ['outPosition', 'outAge', 'outLife', 'outSeed', 'outSize'], this['_colorGradientsTexture'] || this['_updateEffectOptions']['transformFeedbackVaryings']['push']('outColor'), this['_updateEffectOptions']['transformFeedbackVaryings']['push']('outDirection'), this['_isBillboardBased'] || this['_updateEffectOptions']['transformFeedbackVaryings']['push']('outInitialDirection'), this['_updateEffectOptions']['transformFeedbackVaryings']['push']('outAngle'), this['isAnimationSheetEnabled'] && (this['_updateEffectOptions']['transformFeedbackVaryings']['push']('outCellIndex'), this['spriteRandomStartCell'] && this['_updateEffectOptions']['transformFeedbackVaryings']['push']('outCellStartOffset')), this['noiseTexture'] && (this['_updateEffectOptions']['transformFeedbackVaryings']['push']('outNoiseCoordinates1'), this['_updateEffectOptions']['transformFeedbackVaryings']['push']('outNoiseCoordinates2')), this['_updateEffectOptions']['defines'] = _0x2cc1e8, this['_updateEffect'] = new _0x3e9e56['a']('gpuUpdateParticles',this['_updateEffectOptions'],this['_scene']['getEngine']())); } , _0x43e85c['prototype']['_recreateRenderEffect'] = function() { var _0x282407 = ''; if (this['_scene']['clipPlane'] && (_0x282407 = '\x0a#define\x20CLIPPLANE'), this['_scene']['clipPlane2'] && (_0x282407 = '\x0a#define\x20CLIPPLANE2'), this['_scene']['clipPlane3'] && (_0x282407 = '\x0a#define\x20CLIPPLANE3'), this['_scene']['clipPlane4'] && (_0x282407 = '\x0a#define\x20CLIPPLANE4'), this['blendMode'] === _0x280da5['BLENDMODE_MULTIPLY'] && (_0x282407 = '\x0a#define\x20BLENDMULTIPLYMODE'), this['_isBillboardBased']) switch (_0x282407 += '\x0a#define\x20BILLBOARD', this['billboardMode']) { case _0x280da5['BILLBOARDMODE_Y']: _0x282407 += '\x0a#define\x20BILLBOARDY'; break; case _0x280da5['BILLBOARDMODE_STRETCHED']: _0x282407 += '\x0a#define\x20BILLBOARDSTRETCHED'; break; case _0x280da5['BILLBOARDMODE_ALL']: } if (this['_colorGradientsTexture'] && (_0x282407 += '\x0a#define\x20COLORGRADIENTS'), this['isAnimationSheetEnabled'] && (_0x282407 += '\x0a#define\x20ANIMATESHEET'), this['_imageProcessingConfiguration'] && (this['_imageProcessingConfiguration']['prepareDefines'](this['_imageProcessingConfigurationDefines']), _0x282407 += '\x0a' + this['_imageProcessingConfigurationDefines']['toString']()), !this['_renderEffect'] || this['_renderEffect']['defines'] !== _0x282407) { var _0xe94c94 = ['worldOffset', 'view', 'projection', 'colorDead', 'invView', 'vClipPlane', 'vClipPlane2', 'vClipPlane3', 'vClipPlane4', 'sheetInfos', 'translationPivot', 'eyePosition'] , _0x55a4f3 = ['textureSampler', 'colorGradientSampler']; _0x347427['a'] && (_0x347427['a']['PrepareUniforms'](_0xe94c94, this['_imageProcessingConfigurationDefines']), _0x347427['a']['PrepareSamplers'](_0x55a4f3, this['_imageProcessingConfigurationDefines'])), this['_renderEffect'] = new _0x3e9e56['a']('gpuRenderParticles',['position', 'age', 'life', 'size', 'color', 'offset', 'uv', 'direction', 'initialDirection', 'angle', 'cellIndex'],_0xe94c94,_0x55a4f3,this['_scene']['getEngine'](),_0x282407); } } , _0x43e85c['prototype']['animate'] = function(_0x19ceb5) { void 0x0 === _0x19ceb5 && (_0x19ceb5 = !0x1), this['_timeDelta'] = this['updateSpeed'] * (_0x19ceb5 ? this['preWarmStepOffset'] : this['_scene']['getAnimationRatio']()), this['_actualFrame'] += this['_timeDelta'], this['_stopped'] || this['targetStopDuration'] && this['_actualFrame'] >= this['targetStopDuration'] && this['stop'](); } , _0x43e85c['prototype']['_createFactorGradientTexture'] = function(_0x451f44, _0x383f4b) { var _0x3e2f35 = this[_0x383f4b]; if (_0x451f44 && _0x451f44['length'] && !_0x3e2f35) { for (var _0x11378e = new Float32Array(this['_rawTextureWidth']), _0x51d504 = 0x0; _0x51d504 < this['_rawTextureWidth']; _0x51d504++) { var _0x1f2624 = _0x51d504 / this['_rawTextureWidth']; _0x1eb50e['h']['GetCurrentGradient'](_0x1f2624, _0x451f44, function(_0x57c2b4, _0x69bdb7, _0x578473) { _0x11378e[_0x51d504] = _0x77cead['a']['Lerp'](_0x57c2b4['factor1'], _0x69bdb7['factor1'], _0x578473); }); } this[_0x383f4b] = _0x16dc17['CreateRTexture'](_0x11378e, this['_rawTextureWidth'], 0x1, this['_scene'], !0x1, !0x1, _0x11d14a['a']['NEAREST_SAMPLINGMODE']); } } , _0x43e85c['prototype']['_createSizeGradientTexture'] = function() { this['_createFactorGradientTexture'](this['_sizeGradients'], '_sizeGradientsTexture'); } , _0x43e85c['prototype']['_createAngularSpeedGradientTexture'] = function() { this['_createFactorGradientTexture'](this['_angularSpeedGradients'], '_angularSpeedGradientsTexture'); } , _0x43e85c['prototype']['_createVelocityGradientTexture'] = function() { this['_createFactorGradientTexture'](this['_velocityGradients'], '_velocityGradientsTexture'); } , _0x43e85c['prototype']['_createLimitVelocityGradientTexture'] = function() { this['_createFactorGradientTexture'](this['_limitVelocityGradients'], '_limitVelocityGradientsTexture'); } , _0x43e85c['prototype']['_createDragGradientTexture'] = function() { this['_createFactorGradientTexture'](this['_dragGradients'], '_dragGradientsTexture'); } , _0x43e85c['prototype']['_createColorGradientTexture'] = function() { if (this['_colorGradients'] && this['_colorGradients']['length'] && !this['_colorGradientsTexture']) { for (var _0x46c6b5 = new Uint8Array(0x4 * this['_rawTextureWidth']), _0x40c2b4 = _0x47d24f['t']['Color4'][0x0], _0x443b82 = 0x0; _0x443b82 < this['_rawTextureWidth']; _0x443b82++) { var _0x20649b = _0x443b82 / this['_rawTextureWidth']; _0x1eb50e['h']['GetCurrentGradient'](_0x20649b, this['_colorGradients'], function(_0x221db0, _0x4cbf92, _0xa95374) { _0x47d24f['f']['LerpToRef'](_0x221db0['color1'], _0x4cbf92['color1'], _0xa95374, _0x40c2b4), _0x46c6b5[0x4 * _0x443b82] = 0xff * _0x40c2b4['r'], _0x46c6b5[0x4 * _0x443b82 + 0x1] = 0xff * _0x40c2b4['g'], _0x46c6b5[0x4 * _0x443b82 + 0x2] = 0xff * _0x40c2b4['b'], _0x46c6b5[0x4 * _0x443b82 + 0x3] = 0xff * _0x40c2b4['a']; }); } this['_colorGradientsTexture'] = _0x16dc17['CreateRGBATexture'](_0x46c6b5, this['_rawTextureWidth'], 0x1, this['_scene'], !0x1, !0x1, _0x11d14a['a']['NEAREST_SAMPLINGMODE']); } } , _0x43e85c['prototype']['render'] = function(_0x53a122) { if (void 0x0 === _0x53a122 && (_0x53a122 = !0x1), !this['_started']) return 0x0; if (this['_createColorGradientTexture'](), this['_createSizeGradientTexture'](), this['_createAngularSpeedGradientTexture'](), this['_createVelocityGradientTexture'](), this['_createLimitVelocityGradientTexture'](), this['_createDragGradientTexture'](), this['_recreateUpdateEffect'](), this['_recreateRenderEffect'](), !this['isReady']()) return 0x0; if (!_0x53a122) { if (!this['_preWarmDone'] && this['preWarmCycles']) { for (var _0x348642 = 0x0; _0x348642 < this['preWarmCycles']; _0x348642++) this['animate'](!0x0), this['render'](!0x0); this['_preWarmDone'] = !0x0; } if (this['_currentRenderId'] === this['_scene']['getFrameId']()) return 0x0; this['_currentRenderId'] = this['_scene']['getFrameId'](); } if (this['_initialize'](), this['_accumulatedCount'] += this['emitRate'] * this['_timeDelta'], this['_accumulatedCount'] > 0x1) { var _0x5cc172 = 0x0 | this['_accumulatedCount']; this['_accumulatedCount'] -= _0x5cc172, this['_currentActiveCount'] = Math['min'](this['_activeCount'], this['_currentActiveCount'] + _0x5cc172); } if (!this['_currentActiveCount']) return 0x0; var _0x480545; if (this['_engine']['enableEffect'](this['_updateEffect']), this['_engine']['setState'](!0x1), this['_updateEffect']['setFloat']('currentCount', this['_currentActiveCount']), this['_updateEffect']['setFloat']('timeDelta', this['_timeDelta']), this['_updateEffect']['setFloat']('stopFactor', this['_stopped'] ? 0x0 : 0x1), this['_updateEffect']['setTexture']('randomSampler', this['_randomTexture']), this['_updateEffect']['setTexture']('randomSampler2', this['_randomTexture2']), this['_updateEffect']['setFloat2']('lifeTime', this['minLifeTime'], this['maxLifeTime']), this['_updateEffect']['setFloat2']('emitPower', this['minEmitPower'], this['maxEmitPower']), this['_colorGradientsTexture'] || (this['_updateEffect']['setDirectColor4']('color1', this['color1']), this['_updateEffect']['setDirectColor4']('color2', this['color2'])), this['_updateEffect']['setFloat2']('sizeRange', this['minSize'], this['maxSize']), this['_updateEffect']['setFloat4']('scaleRange', this['minScaleX'], this['maxScaleX'], this['minScaleY'], this['maxScaleY']), this['_updateEffect']['setFloat4']('angleRange', this['minAngularSpeed'], this['maxAngularSpeed'], this['minInitialRotation'], this['maxInitialRotation']), this['_updateEffect']['setVector3']('gravity', this['gravity']), this['_sizeGradientsTexture'] && this['_updateEffect']['setTexture']('sizeGradientSampler', this['_sizeGradientsTexture']), this['_angularSpeedGradientsTexture'] && this['_updateEffect']['setTexture']('angularSpeedGradientSampler', this['_angularSpeedGradientsTexture']), this['_velocityGradientsTexture'] && this['_updateEffect']['setTexture']('velocityGradientSampler', this['_velocityGradientsTexture']), this['_limitVelocityGradientsTexture'] && (this['_updateEffect']['setTexture']('limitVelocityGradientSampler', this['_limitVelocityGradientsTexture']), this['_updateEffect']['setFloat']('limitVelocityDamping', this['limitVelocityDamping'])), this['_dragGradientsTexture'] && this['_updateEffect']['setTexture']('dragGradientSampler', this['_dragGradientsTexture']), this['particleEmitterType'] && this['particleEmitterType']['applyToShader'](this['_updateEffect']), this['_isAnimationSheetEnabled'] && this['_updateEffect']['setFloat3']('cellInfos', this['startSpriteCellID'], this['endSpriteCellID'], this['spriteCellChangeSpeed']), this['noiseTexture'] && (this['_updateEffect']['setTexture']('noiseSampler', this['noiseTexture']), this['_updateEffect']['setVector3']('noiseStrength', this['noiseStrength'])), this['emitter']['position']) { _0x480545 = this['emitter']['getWorldMatrix'](); } else { var _0x38c231 = this['emitter']; _0x480545 = _0x47d24f['j']['Translation'](_0x38c231['x'], _0x38c231['y'], _0x38c231['z']); } if (this['_updateEffect']['setMatrix']('emitterWM', _0x480545), this['_engine']['bindVertexArrayObject'](this['_updateVAO'][this['_targetIndex']], null), this['_engine']['bindTransformFeedbackBuffer'](this['_targetBuffer']['getBuffer']()), this['_engine']['setRasterizerState'](!0x1), this['_engine']['beginTransformFeedback'](!0x0), this['_engine']['drawArraysType'](_0x10d420['a']['PointListDrawMode'], 0x0, this['_currentActiveCount']), this['_engine']['endTransformFeedback'](), this['_engine']['setRasterizerState'](!0x0), this['_engine']['bindTransformFeedbackBuffer'](null), !_0x53a122) { this['_engine']['enableEffect'](this['_renderEffect']); var _0x1e75ef = this['_scene']['getViewMatrix'](); if (this['_renderEffect']['setMatrix']('view', _0x1e75ef), this['_renderEffect']['setMatrix']('projection', this['_scene']['getProjectionMatrix']()), this['_renderEffect']['setTexture']('textureSampler', this['particleTexture']), this['_renderEffect']['setVector2']('translationPivot', this['translationPivot']), this['_renderEffect']['setVector3']('worldOffset', this['worldOffset']), this['_colorGradientsTexture'] ? this['_renderEffect']['setTexture']('colorGradientSampler', this['_colorGradientsTexture']) : this['_renderEffect']['setDirectColor4']('colorDead', this['colorDead']), this['_isAnimationSheetEnabled'] && this['particleTexture']) { var _0x5426a5 = this['particleTexture']['getBaseSize'](); this['_renderEffect']['setFloat3']('sheetInfos', this['spriteCellWidth'] / _0x5426a5['width'], this['spriteCellHeight'] / _0x5426a5['height'], _0x5426a5['width'] / this['spriteCellWidth']); } if (this['_isBillboardBased']) { var _0x168bf4 = this['_scene']['activeCamera']; this['_renderEffect']['setVector3']('eyePosition', _0x168bf4['globalPosition']); } if (this['_scene']['clipPlane'] || this['_scene']['clipPlane2'] || this['_scene']['clipPlane3'] || this['_scene']['clipPlane4']) { var _0x5118ab = _0x1e75ef['clone'](); _0x5118ab['invert'](), this['_renderEffect']['setMatrix']('invView', _0x5118ab), _0x2efc06['a']['BindClipPlane'](this['_renderEffect'], this['_scene']); } switch (this['_imageProcessingConfiguration'] && !this['_imageProcessingConfiguration']['applyByPostProcess'] && this['_imageProcessingConfiguration']['bind'](this['_renderEffect']), this['blendMode']) { case _0x280da5['BLENDMODE_ADD']: this['_engine']['setAlphaMode'](_0x24e342['a']['ALPHA_ADD']); break; case _0x280da5['BLENDMODE_ONEONE']: this['_engine']['setAlphaMode'](_0x24e342['a']['ALPHA_ONEONE']); break; case _0x280da5['BLENDMODE_STANDARD']: this['_engine']['setAlphaMode'](_0x24e342['a']['ALPHA_COMBINE']); break; case _0x280da5['BLENDMODE_MULTIPLY']: this['_engine']['setAlphaMode'](_0x24e342['a']['ALPHA_MULTIPLY']); } this['forceDepthWrite'] && this['_engine']['setDepthWrite'](!0x0), this['_engine']['bindVertexArrayObject'](this['_renderVAO'][this['_targetIndex']], null), this['_engine']['drawArraysType'](_0x10d420['a']['TriangleFanDrawMode'], 0x0, 0x4, this['_currentActiveCount']), this['_engine']['setAlphaMode'](_0x24e342['a']['ALPHA_DISABLE']); } this['_targetIndex']++, 0x2 === this['_targetIndex'] && (this['_targetIndex'] = 0x0); var _0x2b74d2 = this['_sourceBuffer']; return this['_sourceBuffer'] = this['_targetBuffer'], this['_targetBuffer'] = _0x2b74d2, this['_currentActiveCount']; } , _0x43e85c['prototype']['rebuild'] = function() { this['_initialize'](!0x0); } , _0x43e85c['prototype']['_releaseBuffers'] = function() { this['_buffer0'] && (this['_buffer0']['dispose'](), this['_buffer0'] = null), this['_buffer1'] && (this['_buffer1']['dispose'](), this['_buffer1'] = null), this['_spriteBuffer'] && (this['_spriteBuffer']['dispose'](), this['_spriteBuffer'] = null); } , _0x43e85c['prototype']['_releaseVAOs'] = function() { if (this['_updateVAO']) { for (var _0x3b18d2 = 0x0; _0x3b18d2 < this['_updateVAO']['length']; _0x3b18d2++) this['_engine']['releaseVertexArrayObject'](this['_updateVAO'][_0x3b18d2]); this['_updateVAO'] = []; for (_0x3b18d2 = 0x0; _0x3b18d2 < this['_renderVAO']['length']; _0x3b18d2++) this['_engine']['releaseVertexArrayObject'](this['_renderVAO'][_0x3b18d2]); this['_renderVAO'] = []; } } , _0x43e85c['prototype']['dispose'] = function(_0x2a51d8) { void 0x0 === _0x2a51d8 && (_0x2a51d8 = !0x0); var _0x3d5dd9 = this['_scene']['particleSystems']['indexOf'](this); _0x3d5dd9 > -0x1 && this['_scene']['particleSystems']['splice'](_0x3d5dd9, 0x1), this['_releaseBuffers'](), this['_releaseVAOs'](), this['_colorGradientsTexture'] && (this['_colorGradientsTexture']['dispose'](), this['_colorGradientsTexture'] = null), this['_sizeGradientsTexture'] && (this['_sizeGradientsTexture']['dispose'](), this['_sizeGradientsTexture'] = null), this['_angularSpeedGradientsTexture'] && (this['_angularSpeedGradientsTexture']['dispose'](), this['_angularSpeedGradientsTexture'] = null), this['_velocityGradientsTexture'] && (this['_velocityGradientsTexture']['dispose'](), this['_velocityGradientsTexture'] = null), this['_limitVelocityGradientsTexture'] && (this['_limitVelocityGradientsTexture']['dispose'](), this['_limitVelocityGradientsTexture'] = null), this['_dragGradientsTexture'] && (this['_dragGradientsTexture']['dispose'](), this['_dragGradientsTexture'] = null), this['_randomTexture'] && (this['_randomTexture']['dispose'](), this['_randomTexture'] = null), this['_randomTexture2'] && (this['_randomTexture2']['dispose'](), this['_randomTexture2'] = null), _0x2a51d8 && this['particleTexture'] && (this['particleTexture']['dispose'](), this['particleTexture'] = null), _0x2a51d8 && this['noiseTexture'] && (this['noiseTexture']['dispose'](), this['noiseTexture'] = null), this['onDisposeObservable']['notifyObservers'](this), this['onDisposeObservable']['clear'](); } , _0x43e85c['prototype']['clone'] = function(_0x40a3ab, _0x3b58c4) { var _0x30a719 = new _0x43e85c(_0x40a3ab,{ 'capacity': this['_capacity'], 'randomTextureSize': this['_randomTextureSize'] },this['_scene']); return _0x5e367c['a']['DeepCopy'](this, _0x30a719), void 0x0 === _0x3b58c4 && (_0x3b58c4 = this['emitter']), _0x30a719['emitter'] = _0x3b58c4, this['particleTexture'] && (_0x30a719['particleTexture'] = new _0x11d14a['a'](this['particleTexture']['url'],this['_scene'])), _0x30a719; } , _0x43e85c['prototype']['serialize'] = function() { var _0xf74a0a = {}; return _0x280da5['_Serialize'](_0xf74a0a, this), _0xf74a0a['activeParticleCount'] = this['activeParticleCount'], _0xf74a0a; } , _0x43e85c['Parse'] = function(_0x29f985, _0x375ad3, _0x2b080a, _0xdf3492) { void 0x0 === _0xdf3492 && (_0xdf3492 = !0x1); var _0x4e0b11 = new _0x43e85c(_0x29f985['name'],{ 'capacity': _0x29f985['capacity'], 'randomTextureSize': _0x29f985['randomTextureSize'] },_0x375ad3); return _0x29f985['activeParticleCount'] && (_0x4e0b11['activeParticleCount'] = _0x29f985['activeParticleCount']), _0x280da5['_Parse'](_0x29f985, _0x4e0b11, _0x375ad3, _0x2b080a), _0x29f985['preventAutoStart'] && (_0x4e0b11['preventAutoStart'] = _0x29f985['preventAutoStart']), _0xdf3492 || _0x4e0b11['preventAutoStart'] || _0x4e0b11['start'](), _0x4e0b11; } , _0x43e85c; }(_0x846099) , _0x29eb1d = (function() {}(), function() { function _0x3ce900() { this['systems'] = new Array(); } return Object['defineProperty'](_0x3ce900['prototype'], 'emitterNode', { 'get': function() { return this['_emitterNode']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3ce900['prototype']['setEmitterAsSphere'] = function(_0x9dc1bb, _0x25b8f9, _0x21b671) { this['_emitterNode'] && this['_emitterNode']['dispose'](), this['_emitterCreationOptions'] = { 'kind': 'Sphere', 'options': _0x9dc1bb, 'renderingGroupId': _0x25b8f9 }; var _0x733b08 = _0x523a20['a']['CreateSphere']('emitterSphere', { 'diameter': _0x9dc1bb['diameter'], 'segments': _0x9dc1bb['segments'] }, _0x21b671); _0x733b08['renderingGroupId'] = _0x25b8f9; var _0x3e2f46 = new _0xe7dd57['a']('emitterSphereMaterial',_0x21b671); _0x3e2f46['emissiveColor'] = _0x9dc1bb['color'], _0x733b08['material'] = _0x3e2f46; for (var _0x1bb796 = 0x0, _0x2d2805 = this['systems']; _0x1bb796 < _0x2d2805['length']; _0x1bb796++) { _0x2d2805[_0x1bb796]['emitter'] = _0x733b08; } this['_emitterNode'] = _0x733b08; } , _0x3ce900['prototype']['start'] = function(_0x4b99ef) { for (var _0x5d44f7 = 0x0, _0x2bbb5f = this['systems']; _0x5d44f7 < _0x2bbb5f['length']; _0x5d44f7++) { var _0x44a7ed = _0x2bbb5f[_0x5d44f7]; _0x4b99ef && (_0x44a7ed['emitter'] = _0x4b99ef), _0x44a7ed['start'](); } } , _0x3ce900['prototype']['dispose'] = function() { for (var _0x18fbe6 = 0x0, _0x59238a = this['systems']; _0x18fbe6 < _0x59238a['length']; _0x18fbe6++) { _0x59238a[_0x18fbe6]['dispose'](); } this['systems'] = [], this['_emitterNode'] && (this['_emitterNode']['dispose'](), this['_emitterNode'] = null); } , _0x3ce900['prototype']['serialize'] = function() { for (var _0x30e49d = { 'systems': [] }, _0x322e42 = 0x0, _0x589276 = this['systems']; _0x322e42 < _0x589276['length']; _0x322e42++) { var _0x3d0ee7 = _0x589276[_0x322e42]; _0x30e49d['systems']['push'](_0x3d0ee7['serialize']()); } return this['_emitterNode'] && (_0x30e49d['emitter'] = this['_emitterCreationOptions']), _0x30e49d; } , _0x3ce900['Parse'] = function(_0x3db2d3, _0x16d04e, _0x1d12e9) { void 0x0 === _0x1d12e9 && (_0x1d12e9 = !0x1); var _0x22bf01 = new _0x3ce900() , _0x1124e6 = _0x24e342['a']['PARTICLES_BaseAssetsUrl'] + '/textures/'; _0x16d04e = _0x16d04e || _0x48707b['a']['LastCreatedScene']; for (var _0x22b65a = 0x0, _0x5f115c = _0x3db2d3['systems']; _0x22b65a < _0x5f115c['length']; _0x22b65a++) { var _0x3edb02 = _0x5f115c[_0x22b65a]; _0x22bf01['systems']['push'](_0x1d12e9 ? _0x53d135['Parse'](_0x3edb02, _0x16d04e, _0x1124e6, !0x0) : _0x280da5['Parse'](_0x3edb02, _0x16d04e, _0x1124e6, !0x0)); } if (_0x3db2d3['emitter']) { var _0x30c5e2 = _0x3db2d3['emitter']['options']; switch (_0x3db2d3['emitter']['kind']) { case 'Sphere': _0x22bf01['setEmitterAsSphere']({ 'diameter': _0x30c5e2['diameter'], 'segments': _0x30c5e2['segments'], 'color': _0x47d24f['e']['FromArray'](_0x30c5e2['color']) }, _0x3db2d3['emitter']['renderingGroupId'], _0x16d04e); } } return _0x22bf01; } , _0x3ce900; }()) , _0x3f5841 = function() { function _0x2e0805() {} return _0x2e0805['CreateDefault'] = function(_0x546158, _0x199562, _0x61dc4, _0x1d1756) { var _0x1efd6f; return void 0x0 === _0x199562 && (_0x199562 = 0x1f4), void 0x0 === _0x1d1756 && (_0x1d1756 = !0x1), (_0x1efd6f = _0x1d1756 ? new _0x53d135('default\x20system',{ 'capacity': _0x199562 },_0x61dc4) : new _0x280da5('default\x20system',_0x199562,_0x61dc4))['emitter'] = _0x546158, _0x1efd6f['particleTexture'] = new _0x11d14a['a']('https://www.babylonjs.com/assets/Flare.png',_0x1efd6f['getScene']()), _0x1efd6f['createConeEmitter'](0.1, Math['PI'] / 0x4), _0x1efd6f['color1'] = new _0x47d24f['f'](0x1,0x1,0x1,0x1), _0x1efd6f['color2'] = new _0x47d24f['f'](0x1,0x1,0x1,0x1), _0x1efd6f['colorDead'] = new _0x47d24f['f'](0x1,0x1,0x1,0x0), _0x1efd6f['minSize'] = 0.1, _0x1efd6f['maxSize'] = 0.1, _0x1efd6f['minEmitPower'] = 0x2, _0x1efd6f['maxEmitPower'] = 0x2, _0x1efd6f['updateSpeed'] = 0x1 / 0x3c, _0x1efd6f['emitRate'] = 0x1e, _0x1efd6f; } , _0x2e0805['CreateAsync'] = function(_0x2481ca, _0x2c482d, _0x1b5acc) { void 0x0 === _0x1b5acc && (_0x1b5acc = !0x1), _0x2c482d || (_0x2c482d = _0x48707b['a']['LastCreatedScene']); var _0x5567ef = {}; return _0x2c482d['_addPendingData'](_0x5567ef), new Promise(function(_0x55fe90, _0x5be0d3) { if (_0x1b5acc && !_0x53d135['IsSupported']) return _0x2c482d['_removePendingData'](_0x5567ef), _0x5be0d3('Particle\x20system\x20with\x20GPU\x20is\x20not\x20supported.'); _0x1eb50e['h']['LoadFile'](_0x2e0805['BaseAssetsUrl'] + '/systems/' + _0x2481ca + '.json', function(_0x3b4323) { _0x2c482d['_removePendingData'](_0x5567ef); var _0x2b4800 = JSON['parse'](_0x3b4323['toString']()); return _0x55fe90(_0x29eb1d['Parse'](_0x2b4800, _0x2c482d, _0x1b5acc)); }, void 0x0, void 0x0, void 0x0, function() { return _0x2c482d['_removePendingData'](_0x5567ef), _0x5be0d3('An\x20error\x20occured\x20while\x20the\x20creation\x20of\x20your\x20particle\x20system.\x20Check\x20if\x20your\x20type\x20\x27' + _0x2481ca + '\x27\x20exists.'); }); } ); } , _0x2e0805['ExportSet'] = function(_0x54d284) { for (var _0x34d80d = new _0x29eb1d(), _0x2a6e67 = 0x0, _0x56d466 = _0x54d284; _0x2a6e67 < _0x56d466['length']; _0x2a6e67++) { var _0x2b0c03 = _0x56d466[_0x2a6e67]; _0x34d80d['systems']['push'](_0x2b0c03); } return _0x34d80d; } , _0x2e0805['BaseAssetsUrl'] = _0x24e342['a']['PARTICLES_BaseAssetsUrl'], _0x2e0805; }(); _0x20925f['a']['AddParser'](_0x443f74['a']['NAME_PARTICLESYSTEM'], function(_0x209cfb, _0x2b4393, _0xfc49a2, _0x3bd242) { var _0x143cbe = _0x20925f['a']['GetIndividualParser'](_0x443f74['a']['NAME_PARTICLESYSTEM']); if (_0x143cbe && void 0x0 !== _0x209cfb['particleSystems'] && null !== _0x209cfb['particleSystems']) for (var _0x329be7 = 0x0, _0x425305 = _0x209cfb['particleSystems']['length']; _0x329be7 < _0x425305; _0x329be7++) { var _0x5a196b = _0x209cfb['particleSystems'][_0x329be7]; _0xfc49a2['particleSystems']['push'](_0x143cbe(_0x5a196b, _0x2b4393, _0x3bd242)); } }), _0x20925f['a']['AddIndividualParser'](_0x443f74['a']['NAME_PARTICLESYSTEM'], function(_0xd29804, _0x579304, _0x140de2) { return _0xd29804['activeParticleCount'] ? _0x53d135['Parse'](_0xd29804, _0x579304, _0x140de2) : _0x280da5['Parse'](_0xd29804, _0x579304, _0x140de2); }), _0x3647a9['b']['prototype']['createEffectForParticles'] = function(_0x133301, _0x4856f8, _0x51f9fe, _0x12ce19, _0x576873, _0x33bc39, _0x1d3b63) { void 0x0 === _0x4856f8 && (_0x4856f8 = []), void 0x0 === _0x51f9fe && (_0x51f9fe = []), void 0x0 === _0x12ce19 && (_0x12ce19 = ''); var _0x3f6c09 = _0x280da5['_GetAttributeNamesOrOptions']() , _0x1895d9 = _0x280da5['_GetEffectCreationOptions'](); return -0x1 === _0x12ce19['indexOf']('\x20BILLBOARD') && (_0x12ce19 += '\x0a#define\x20BILLBOARD\x0a'), -0x1 === _0x51f9fe['indexOf']('diffuseSampler') && _0x51f9fe['push']('diffuseSampler'), this['createEffect']({ 'vertex': 'particles', 'fragmentElement': _0x133301 }, _0x3f6c09, _0x1895d9['concat'](_0x4856f8), _0x51f9fe, _0x12ce19, _0x576873, _0x33bc39, _0x1d3b63); } , _0xb4719b['a']['prototype']['getEmittedParticleSystems'] = function() { for (var _0x3c6ae2 = new Array(), _0x298faf = 0x0; _0x298faf < this['getScene']()['particleSystems']['length']; _0x298faf++) { var _0x22e69a = this['getScene']()['particleSystems'][_0x298faf]; _0x22e69a['emitter'] === this && _0x3c6ae2['push'](_0x22e69a); } return _0x3c6ae2; } , _0xb4719b['a']['prototype']['getHierarchyEmittedParticleSystems'] = function() { var _0x5df39b = new Array() , _0x3f12ea = this['getDescendants'](); _0x3f12ea['push'](this); for (var _0x1f4fe8 = 0x0; _0x1f4fe8 < this['getScene']()['particleSystems']['length']; _0x1f4fe8++) { var _0x233660 = this['getScene']()['particleSystems'][_0x1f4fe8] , _0x5f1ad7 = _0x233660['emitter']; _0x5f1ad7['position'] && -0x1 !== _0x3f12ea['indexOf'](_0x5f1ad7) && _0x5df39b['push'](_0x233660); } return _0x5df39b; } ; var _0x29620f = function() { function _0x2a9af5(_0xe069bd, _0x40f6e8, _0x80a243, _0x434f1c, _0x3abc2b, _0x47e0dc, _0x59761d, _0x43d420) { void 0x0 === _0x43d420 && (_0x43d420 = null), this['idx'] = 0x0, this['color'] = new _0x47d24f['f'](0x1,0x1,0x1,0x1), this['position'] = _0x47d24f['x']['Zero'](), this['rotation'] = _0x47d24f['x']['Zero'](), this['scaling'] = _0x47d24f['x']['One'](), this['uvs'] = new _0x47d24f['y'](0x0,0x0,0x1,0x1), this['velocity'] = _0x47d24f['x']['Zero'](), this['pivot'] = _0x47d24f['x']['Zero'](), this['translateFromPivot'] = !0x1, this['alive'] = !0x0, this['isVisible'] = !0x0, this['_pos'] = 0x0, this['_ind'] = 0x0, this['shapeId'] = 0x0, this['idxInShape'] = 0x0, this['_stillInvisible'] = !0x1, this['_rotationMatrix'] = [0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1], this['parentId'] = null, this['cullingStrategy'] = _0x10c088['a']['CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY'], this['_globalPosition'] = _0x47d24f['x']['Zero'](), this['idx'] = _0xe069bd, this['_pos'] = _0x40f6e8, this['_ind'] = _0x80a243, this['_model'] = _0x434f1c, this['shapeId'] = _0x3abc2b, this['idxInShape'] = _0x47e0dc, this['_sps'] = _0x59761d, _0x43d420 && (this['_modelBoundingInfo'] = _0x43d420, this['_boundingInfo'] = new _0x3166db['a'](_0x43d420['minimum'],_0x43d420['maximum'])); } return Object['defineProperty'](_0x2a9af5['prototype'], 'scale', { 'get': function() { return this['scaling']; }, 'set': function(_0x57742e) { this['scaling'] = _0x57742e; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x2a9af5['prototype'], 'quaternion', { 'get': function() { return this['rotationQuaternion']; }, 'set': function(_0x5b34f3) { this['rotationQuaternion'] = _0x5b34f3; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x2a9af5['prototype']['intersectsMesh'] = function(_0x3f4be1) { return !(!this['_boundingInfo'] || !_0x3f4be1['_boundingInfo']) && (this['_sps']['_bSphereOnly'] ? _0x4435b0['a']['Intersects'](this['_boundingInfo']['boundingSphere'], _0x3f4be1['_boundingInfo']['boundingSphere']) : this['_boundingInfo']['intersects'](_0x3f4be1['_boundingInfo'], !0x1)); } , _0x2a9af5['prototype']['isInFrustum'] = function(_0x40e213) { return null !== this['_boundingInfo'] && this['_boundingInfo']['isInFrustum'](_0x40e213, this['cullingStrategy']); } , _0x2a9af5['prototype']['getRotationMatrix'] = function(_0x24c0d7) { var _0x179847; if (this['rotationQuaternion']) _0x179847 = this['rotationQuaternion']; else { _0x179847 = _0x47d24f['t']['Quaternion'][0x0]; var _0x929035 = this['rotation']; _0x47d24f['q']['RotationYawPitchRollToRef'](_0x929035['y'], _0x929035['x'], _0x929035['z'], _0x179847); } _0x179847['toRotationMatrix'](_0x24c0d7); } , _0x2a9af5; }() , _0x543321 = function() { return function(_0x1a1c13, _0x233f4f, _0x475f91, _0x3c1bb4, _0x5c55ea, _0xfabcb7) { this['_indicesLength'] = 0x0, this['shapeID'] = _0x1a1c13, this['_shape'] = _0x233f4f, this['_indicesLength'] = _0x475f91, this['_shapeUV'] = _0x3c1bb4, this['_positionFunction'] = _0x5c55ea, this['_vertexFunction'] = _0xfabcb7; } ; }() , _0x4de25a = function() { return function() { this['ind'] = 0x0, this['indicesLength'] = 0x0, this['sqDistance'] = 0x0; } ; }() , _0x5a6e48 = function(_0x12e4bb, _0x46b310) { return _0x46b310['sqDistance'] - _0x12e4bb['sqDistance']; } , _0x248af5 = function() { function _0x38de93(_0x6fd1f8, _0x597857, _0x3df380) { this['particles'] = new Array(), this['nbParticles'] = 0x0, this['billboard'] = !0x1, this['recomputeNormals'] = !0x0, this['counter'] = 0x0, this['vars'] = {}, this['_bSphereOnly'] = !0x1, this['_bSphereRadiusFactor'] = 0x1, this['_positions'] = new Array(), this['_indices'] = new Array(), this['_normals'] = new Array(), this['_colors'] = new Array(), this['_uvs'] = new Array(), this['_index'] = 0x0, this['_updatable'] = !0x0, this['_pickable'] = !0x1, this['_isVisibilityBoxLocked'] = !0x1, this['_alwaysVisible'] = !0x1, this['_depthSort'] = !0x1, this['_shapeCounter'] = 0x0, this['_copy'] = new _0x29620f(0x0,0x0,0x0,null,0x0,0x0,this), this['_color'] = new _0x47d24f['f'](0x0,0x0,0x0,0x0), this['_computeParticleColor'] = !0x0, this['_computeParticleTexture'] = !0x0, this['_computeParticleRotation'] = !0x0, this['_computeParticleVertex'] = !0x1, this['_computeBoundingBox'] = !0x1, this['_depthSortParticles'] = !0x0, this['_mustUnrotateFixedNormals'] = !0x1, this['_particlesIntersect'] = !0x1, this['_needs32Bits'] = !0x1, this['name'] = _0x6fd1f8, this['_scene'] = _0x597857 || _0x48707b['a']['LastCreatedScene'], this['_camera'] = _0x597857['activeCamera'], this['_pickable'] = !!_0x3df380 && _0x3df380['isPickable'], this['_depthSort'] = !!_0x3df380 && _0x3df380['enableDepthSort'], this['_particlesIntersect'] = !!_0x3df380 && _0x3df380['particleIntersection'], this['_bSphereOnly'] = !!_0x3df380 && _0x3df380['boundingSphereOnly'], this['_bSphereRadiusFactor'] = _0x3df380 && _0x3df380['bSphereRadiusFactor'] ? _0x3df380['bSphereRadiusFactor'] : 0x1, _0x3df380 && void 0x0 !== _0x3df380['updatable'] ? this['_updatable'] = _0x3df380['updatable'] : this['_updatable'] = !0x0, this['_pickable'] && (this['pickedParticles'] = []), this['_depthSort'] && (this['depthSortedParticles'] = []); } return _0x38de93['prototype']['buildMesh'] = function() { if (0x0 === this['nbParticles']) { var _0x5b4359 = _0x6e671f['CreateDisc']('', { 'radius': 0x1, 'tessellation': 0x3 }, this['_scene']); this['addShape'](_0x5b4359, 0x1), _0x5b4359['dispose'](); } this['_indices32'] = this['_needs32Bits'] ? new Uint32Array(this['_indices']) : new Uint16Array(this['_indices']), this['_positions32'] = new Float32Array(this['_positions']), this['_uvs32'] = new Float32Array(this['_uvs']), this['_colors32'] = new Float32Array(this['_colors']), this['recomputeNormals'] && _0xb31206['a']['ComputeNormals'](this['_positions32'], this['_indices32'], this['_normals']), this['_normals32'] = new Float32Array(this['_normals']), this['_fixedNormal32'] = new Float32Array(this['_normals']), this['_mustUnrotateFixedNormals'] && this['_unrotateFixedNormals'](); var _0x10e12a = new _0xb31206['a'](); _0x10e12a['indices'] = this['_depthSort'] ? this['_indices'] : this['_indices32'], _0x10e12a['set'](this['_positions32'], _0x4209f7['b']['PositionKind']), _0x10e12a['set'](this['_normals32'], _0x4209f7['b']['NormalKind']), this['_uvs32']['length'] > 0x0 && _0x10e12a['set'](this['_uvs32'], _0x4209f7['b']['UVKind']), this['_colors32']['length'] > 0x0 && _0x10e12a['set'](this['_colors32'], _0x4209f7['b']['ColorKind']); var _0x1e4941 = new _0xb4719b['a'](this['name'],this['_scene']); return _0x10e12a['applyToMesh'](_0x1e4941, this['_updatable']), this['mesh'] = _0x1e4941, this['mesh']['isPickable'] = this['_pickable'], this['_depthSort'] || (this['_indices'] = null), this['_positions'] = null, this['_normals'] = null, this['_uvs'] = null, this['_colors'] = null, this['_updatable'] || (this['particles']['length'] = 0x0), _0x1e4941; } , _0x38de93['prototype']['digest'] = function(_0x1e1305, _0x289b81) { var _0x3e294c = _0x289b81 && _0x289b81['facetNb'] || 0x1 , _0x193172 = _0x289b81 && _0x289b81['number'] || 0x0 , _0x5cc560 = _0x289b81 && _0x289b81['delta'] || 0x0 , _0x3462a5 = _0x1e1305['getVerticesData'](_0x4209f7['b']['PositionKind']) , _0x1d2b1d = _0x1e1305['getIndices']() , _0x9b7427 = _0x1e1305['getVerticesData'](_0x4209f7['b']['UVKind']) , _0x345ce6 = _0x1e1305['getVerticesData'](_0x4209f7['b']['ColorKind']) , _0x1af45d = _0x1e1305['getVerticesData'](_0x4209f7['b']['NormalKind']) , _0x22347e = 0x0 , _0x21654b = _0x1d2b1d['length'] / 0x3; _0x193172 ? (_0x193172 = _0x193172 > _0x21654b ? _0x21654b : _0x193172, _0x3e294c = Math['round'](_0x21654b / _0x193172), _0x5cc560 = 0x0) : _0x3e294c = _0x3e294c > _0x21654b ? _0x21654b : _0x3e294c; for (var _0x408d94 = [], _0x796cfd = [], _0x24e053 = [], _0x474f62 = [], _0x3835c1 = _0x47d24f['x']['Zero'](), _0x188bd0 = _0x3e294c; _0x22347e < _0x21654b; ) { _0x22347e > _0x21654b - (_0x3e294c = _0x188bd0 + Math['floor']((0x1 + _0x5cc560) * Math['random']())) && (_0x3e294c = _0x21654b - _0x22347e), _0x408d94['length'] = 0x0, _0x796cfd['length'] = 0x0, _0x24e053['length'] = 0x0, _0x474f62['length'] = 0x0; for (var _0x391ab9 = 0x0, _0x448525 = 0x3 * _0x22347e; _0x448525 < 0x3 * (_0x22347e + _0x3e294c); _0x448525++) { _0x796cfd['push'](_0x391ab9); var _0x5059fd = _0x1d2b1d[_0x448525]; _0x408d94['push'](_0x3462a5[0x3 * _0x5059fd], _0x3462a5[0x3 * _0x5059fd + 0x1], _0x3462a5[0x3 * _0x5059fd + 0x2]), _0x9b7427 && _0x24e053['push'](_0x9b7427[0x2 * _0x5059fd], _0x9b7427[0x2 * _0x5059fd + 0x1]), _0x345ce6 && _0x474f62['push'](_0x345ce6[0x4 * _0x5059fd], _0x345ce6[0x4 * _0x5059fd + 0x1], _0x345ce6[0x4 * _0x5059fd + 0x2], _0x345ce6[0x4 * _0x5059fd + 0x3]), _0x391ab9++; } var _0x529973, _0xfe7c4a, _0xd94c72 = this['nbParticles'], _0x1cb01d = this['_posToShape'](_0x408d94), _0x2b6cf0 = this['_uvsToShapeUV'](_0x24e053); for (_0x529973 = 0x0; _0x529973 < _0x1cb01d['length']; _0x529973++) _0x3835c1['addInPlace'](_0x1cb01d[_0x529973]); for (_0x3835c1['scaleInPlace'](0x1 / _0x1cb01d['length']), _0x529973 = 0x0; _0x529973 < _0x1cb01d['length']; _0x529973++) _0x1cb01d[_0x529973]['subtractInPlace'](_0x3835c1); this['_particlesIntersect'] && (_0xfe7c4a = new _0x3166db['a'](_0x3835c1,_0x3835c1)); var _0x258b03 = new _0x543321(this['_shapeCounter'],_0x1cb01d,0x3 * _0x3e294c,_0x2b6cf0,null,null) , _0x34b7d2 = this['_positions']['length'] , _0x232ac3 = this['_indices']['length']; this['_meshBuilder'](this['_index'], _0x1cb01d, this['_positions'], _0x796cfd, this['_indices'], _0x24e053, this['_uvs'], _0x474f62, this['_colors'], _0x1af45d, this['_normals'], _0xd94c72, 0x0, null), this['_addParticle'](_0xd94c72, _0x34b7d2, _0x232ac3, _0x258b03, this['_shapeCounter'], 0x0, _0xfe7c4a), this['particles'][this['nbParticles']]['position']['addInPlace'](_0x3835c1), this['_index'] += _0x1cb01d['length'], _0xd94c72++, this['nbParticles']++, this['_shapeCounter']++, _0x22347e += _0x3e294c; } return this; } , _0x38de93['prototype']['_unrotateFixedNormals'] = function() { for (var _0x2e2abb = 0x0, _0x4f94df = 0x0, _0x4e0d2e = _0x47d24f['t']['Vector3'][0x0], _0x16900b = _0x47d24f['t']['Quaternion'][0x0], _0x5e90cb = _0x47d24f['t']['Matrix'][0x0], _0x42f195 = 0x0; _0x42f195 < this['particles']['length']; _0x42f195++) { var _0x5c886d = this['particles'][_0x42f195] , _0x435c25 = _0x5c886d['_model']['_shape']; if (_0x5c886d['rotationQuaternion']) _0x5c886d['rotationQuaternion']['conjugateToRef'](_0x16900b); else { var _0x37cb1c = _0x5c886d['rotation']; _0x47d24f['q']['RotationYawPitchRollToRef'](_0x37cb1c['y'], _0x37cb1c['x'], _0x37cb1c['z'], _0x16900b), _0x16900b['conjugateInPlace'](); } _0x16900b['toRotationMatrix'](_0x5e90cb); for (var _0x564738 = 0x0; _0x564738 < _0x435c25['length']; _0x564738++) _0x4f94df = _0x2e2abb + 0x3 * _0x564738, _0x47d24f['x']['TransformNormalFromFloatsToRef'](this['_normals32'][_0x4f94df], this['_normals32'][_0x4f94df + 0x1], this['_normals32'][_0x4f94df + 0x2], _0x5e90cb, _0x4e0d2e), _0x4e0d2e['toArray'](this['_fixedNormal32'], _0x4f94df); _0x2e2abb = _0x4f94df + 0x3; } } , _0x38de93['prototype']['_resetCopy'] = function() { var _0x3ab7d7 = this['_copy']; _0x3ab7d7['position']['setAll'](0x0), _0x3ab7d7['rotation']['setAll'](0x0), _0x3ab7d7['rotationQuaternion'] = null, _0x3ab7d7['scaling']['setAll'](0x1), _0x3ab7d7['uvs']['copyFromFloats'](0x0, 0x0, 0x1, 0x1), _0x3ab7d7['color'] = null, _0x3ab7d7['translateFromPivot'] = !0x1; } , _0x38de93['prototype']['_meshBuilder'] = function(_0x523986, _0xc8ff78, _0x1c7e6a, _0x552758, _0x452314, _0x293a84, _0x17baa0, _0x5d6b2e, _0x493317, _0x37da06, _0x11829f, _0x5bdbb9, _0x4f78df, _0xd80b43) { var _0x223c09, _0x43ffb3 = 0x0, _0x6da7f = 0x0, _0x4cb1fd = 0x0; this['_resetCopy'](); var _0x2c2b9c = this['_copy']; _0xd80b43 && _0xd80b43['positionFunction'] && (_0xd80b43['positionFunction'](_0x2c2b9c, _0x5bdbb9, _0x4f78df), this['_mustUnrotateFixedNormals'] = !0x0); var _0x2b32a9 = _0x47d24f['t']['Matrix'][0x0] , _0x4a8d91 = _0x47d24f['t']['Vector3'][0x0] , _0x24400b = _0x47d24f['t']['Vector3'][0x1] , _0x6f4d3 = _0x47d24f['t']['Vector3'][0x2] , _0x47379c = _0x47d24f['t']['Vector3'][0x3]; for (_0x2c2b9c['getRotationMatrix'](_0x2b32a9), _0x2c2b9c['pivot']['multiplyToRef'](_0x2c2b9c['scaling'], _0x47379c), _0x2c2b9c['translateFromPivot'] ? _0x6f4d3['setAll'](0x0) : _0x6f4d3['copyFrom'](_0x47379c), _0x223c09 = 0x0; _0x223c09 < _0xc8ff78['length']; _0x223c09++) { if (_0x4a8d91['copyFrom'](_0xc8ff78[_0x223c09]), _0xd80b43 && _0xd80b43['vertexFunction'] && _0xd80b43['vertexFunction'](_0x2c2b9c, _0x4a8d91, _0x223c09), _0x4a8d91['multiplyInPlace'](_0x2c2b9c['scaling'])['subtractInPlace'](_0x47379c), _0x47d24f['x']['TransformCoordinatesToRef'](_0x4a8d91, _0x2b32a9, _0x24400b), _0x24400b['addInPlace'](_0x6f4d3)['addInPlace'](_0x2c2b9c['position']), _0x1c7e6a['push'](_0x24400b['x'], _0x24400b['y'], _0x24400b['z']), _0x293a84) { var _0x5e8a26 = _0x2c2b9c['uvs']; _0x17baa0['push']((_0x5e8a26['z'] - _0x5e8a26['x']) * _0x293a84[_0x43ffb3] + _0x5e8a26['x'], (_0x5e8a26['w'] - _0x5e8a26['y']) * _0x293a84[_0x43ffb3 + 0x1] + _0x5e8a26['y']), _0x43ffb3 += 0x2; } if (_0x2c2b9c['color']) this['_color'] = _0x2c2b9c['color']; else { var _0x4e148d = this['_color']; _0x5d6b2e && void 0x0 !== _0x5d6b2e[_0x6da7f] ? (_0x4e148d['r'] = _0x5d6b2e[_0x6da7f], _0x4e148d['g'] = _0x5d6b2e[_0x6da7f + 0x1], _0x4e148d['b'] = _0x5d6b2e[_0x6da7f + 0x2], _0x4e148d['a'] = _0x5d6b2e[_0x6da7f + 0x3]) : (_0x4e148d['r'] = 0x1, _0x4e148d['g'] = 0x1, _0x4e148d['b'] = 0x1, _0x4e148d['a'] = 0x1); } _0x493317['push'](this['_color']['r'], this['_color']['g'], this['_color']['b'], this['_color']['a']), _0x6da7f += 0x4, !this['recomputeNormals'] && _0x37da06 && (_0x4a8d91['x'] = _0x37da06[_0x4cb1fd], _0x4a8d91['y'] = _0x37da06[_0x4cb1fd + 0x1], _0x4a8d91['z'] = _0x37da06[_0x4cb1fd + 0x2], _0x47d24f['x']['TransformNormalToRef'](_0x4a8d91, _0x2b32a9, _0x4a8d91), _0x11829f['push'](_0x4a8d91['x'], _0x4a8d91['y'], _0x4a8d91['z']), _0x4cb1fd += 0x3); } for (_0x223c09 = 0x0; _0x223c09 < _0x552758['length']; _0x223c09++) { var _0x32a212 = _0x523986 + _0x552758[_0x223c09]; _0x452314['push'](_0x32a212), _0x32a212 > 0xffff && (this['_needs32Bits'] = !0x0); } if (this['_pickable']) { var _0x588241 = _0x552758['length'] / 0x3; for (_0x223c09 = 0x0; _0x223c09 < _0x588241; _0x223c09++) this['pickedParticles']['push']({ 'idx': _0x5bdbb9, 'faceId': _0x223c09 }); } return this['_depthSort'] && this['depthSortedParticles']['push'](new _0x4de25a()), _0x2c2b9c; } , _0x38de93['prototype']['_posToShape'] = function(_0x4552ad) { for (var _0x275c44 = [], _0x107ab3 = 0x0; _0x107ab3 < _0x4552ad['length']; _0x107ab3 += 0x3) _0x275c44['push'](_0x47d24f['x']['FromArray'](_0x4552ad, _0x107ab3)); return _0x275c44; } , _0x38de93['prototype']['_uvsToShapeUV'] = function(_0x3fdcad) { var _0x348737 = []; if (_0x3fdcad) for (var _0x4c5070 = 0x0; _0x4c5070 < _0x3fdcad['length']; _0x4c5070++) _0x348737['push'](_0x3fdcad[_0x4c5070]); return _0x348737; } , _0x38de93['prototype']['_addParticle'] = function(_0x4584be, _0x5fc8c4, _0x1d1c50, _0x4c7f15, _0x350389, _0x3a2c72, _0x10b478) { void 0x0 === _0x10b478 && (_0x10b478 = null); var _0x21aef = new _0x29620f(_0x4584be,_0x5fc8c4,_0x1d1c50,_0x4c7f15,_0x350389,_0x3a2c72,this,_0x10b478); return this['particles']['push'](_0x21aef), _0x21aef; } , _0x38de93['prototype']['addShape'] = function(_0x41e58d, _0x4fe28f, _0x841fa6) { var _0x2e933a, _0x4397a9 = _0x41e58d['getVerticesData'](_0x4209f7['b']['PositionKind']), _0x29c917 = _0x41e58d['getIndices'](), _0x1885c5 = _0x41e58d['getVerticesData'](_0x4209f7['b']['UVKind']), _0x3308be = _0x41e58d['getVerticesData'](_0x4209f7['b']['ColorKind']), _0x1f1402 = _0x41e58d['getVerticesData'](_0x4209f7['b']['NormalKind']); this['_particlesIntersect'] && (_0x2e933a = _0x41e58d['getBoundingInfo']()); for (var _0x26962e, _0x406598, _0x183d2e = this['_posToShape'](_0x4397a9), _0x32299b = this['_uvsToShapeUV'](_0x1885c5), _0x2a345b = _0x841fa6 ? _0x841fa6['positionFunction'] : null, _0x24193f = _0x841fa6 ? _0x841fa6['vertexFunction'] : null, _0x560fa6 = new _0x543321(this['_shapeCounter'],_0x183d2e,_0x29c917['length'],_0x32299b,_0x2a345b,_0x24193f), _0x51fb76 = this['nbParticles'], _0x167946 = 0x0; _0x167946 < _0x4fe28f; _0x167946++) { var _0x59591f = this['_positions']['length'] , _0x3f370a = this['_indices']['length']; _0x406598 = this['_meshBuilder'](this['_index'], _0x183d2e, this['_positions'], _0x29c917, this['_indices'], _0x1885c5, this['_uvs'], _0x3308be, this['_colors'], _0x1f1402, this['_normals'], _0x51fb76, _0x167946, _0x841fa6), this['_updatable'] && ((_0x26962e = this['_addParticle'](_0x51fb76, _0x59591f, _0x3f370a, _0x560fa6, this['_shapeCounter'], _0x167946, _0x2e933a))['position']['copyFrom'](_0x406598['position']), _0x26962e['rotation']['copyFrom'](_0x406598['rotation']), _0x406598['rotationQuaternion'] && _0x26962e['rotationQuaternion'] && _0x26962e['rotationQuaternion']['copyFrom'](_0x406598['rotationQuaternion']), _0x406598['color'] && _0x26962e['color'] && _0x26962e['color']['copyFrom'](_0x406598['color']), _0x26962e['scaling']['copyFrom'](_0x406598['scaling']), _0x26962e['uvs']['copyFrom'](_0x406598['uvs'])), this['_index'] += _0x183d2e['length'], _0x51fb76++; } return this['nbParticles'] += _0x4fe28f, this['_shapeCounter']++, this['_shapeCounter'] - 0x1; } , _0x38de93['prototype']['_rebuildParticle'] = function(_0x4bf82c) { this['_resetCopy'](); var _0x5a7602 = this['_copy']; _0x4bf82c['_model']['_positionFunction'] && _0x4bf82c['_model']['_positionFunction'](_0x5a7602, _0x4bf82c['idx'], _0x4bf82c['idxInShape']); var _0x1b368c = _0x47d24f['t']['Matrix'][0x0] , _0x5950d7 = _0x47d24f['t']['Vector3'][0x0] , _0x20cb3d = _0x47d24f['t']['Vector3'][0x1] , _0x261e79 = _0x47d24f['t']['Vector3'][0x2] , _0x322c5c = _0x47d24f['t']['Vector3'][0x3]; _0x5a7602['getRotationMatrix'](_0x1b368c), _0x4bf82c['pivot']['multiplyToRef'](_0x4bf82c['scaling'], _0x322c5c), _0x5a7602['translateFromPivot'] ? _0x261e79['copyFromFloats'](0x0, 0x0, 0x0) : _0x261e79['copyFrom'](_0x322c5c); for (var _0x1e54bb = _0x4bf82c['_model']['_shape'], _0x33af2d = 0x0; _0x33af2d < _0x1e54bb['length']; _0x33af2d++) _0x5950d7['copyFrom'](_0x1e54bb[_0x33af2d]), _0x4bf82c['_model']['_vertexFunction'] && _0x4bf82c['_model']['_vertexFunction'](_0x5a7602, _0x5950d7, _0x33af2d), _0x5950d7['multiplyInPlace'](_0x5a7602['scaling'])['subtractInPlace'](_0x322c5c), _0x47d24f['x']['TransformCoordinatesToRef'](_0x5950d7, _0x1b368c, _0x20cb3d), _0x20cb3d['addInPlace'](_0x261e79)['addInPlace'](_0x5a7602['position'])['toArray'](this['_positions32'], _0x4bf82c['_pos'] + 0x3 * _0x33af2d); _0x4bf82c['position']['setAll'](0x0), _0x4bf82c['rotation']['setAll'](0x0), _0x4bf82c['rotationQuaternion'] = null, _0x4bf82c['scaling']['setAll'](0x1), _0x4bf82c['uvs']['setAll'](0x0), _0x4bf82c['pivot']['setAll'](0x0), _0x4bf82c['translateFromPivot'] = !0x1, _0x4bf82c['parentId'] = null; } , _0x38de93['prototype']['rebuildMesh'] = function() { for (var _0xcc76d5 = 0x0; _0xcc76d5 < this['particles']['length']; _0xcc76d5++) this['_rebuildParticle'](this['particles'][_0xcc76d5]); return this['mesh']['updateVerticesData'](_0x4209f7['b']['PositionKind'], this['_positions32'], !0x1, !0x1), this; } , _0x38de93['prototype']['setParticles'] = function(_0x43e2ff, _0x4d2497, _0x377eb9) { if (void 0x0 === _0x43e2ff && (_0x43e2ff = 0x0), void 0x0 === _0x4d2497 && (_0x4d2497 = this['nbParticles'] - 0x1), void 0x0 === _0x377eb9 && (_0x377eb9 = !0x0), !this['_updatable']) return this; this['beforeUpdateParticles'](_0x43e2ff, _0x4d2497, _0x377eb9); var _0x436263 = _0x47d24f['t']['Matrix'][0x0] , _0x42ad8f = _0x47d24f['t']['Matrix'][0x1] , _0x5ab6db = this['mesh'] , _0x386a05 = this['_colors32'] , _0x3982e3 = this['_positions32'] , _0x4595d3 = this['_normals32'] , _0x465615 = this['_uvs32'] , _0x16d7f9 = this['_indices32'] , _0x499184 = this['_indices'] , _0x3dc732 = this['_fixedNormal32'] , _0x2af40b = _0x47d24f['t']['Vector3'] , _0x3ec8c3 = _0x2af40b[0x5]['copyFromFloats'](0x1, 0x0, 0x0) , _0x1b73e3 = _0x2af40b[0x6]['copyFromFloats'](0x0, 0x1, 0x0) , _0x26d50f = _0x2af40b[0x7]['copyFromFloats'](0x0, 0x0, 0x1) , _0x498097 = _0x2af40b[0x8]['setAll'](Number['MAX_VALUE']) , _0x42f086 = _0x2af40b[0x9]['setAll'](-Number['MAX_VALUE']) , _0x1c6579 = _0x2af40b[0xa]['setAll'](0x0); if ((this['billboard'] || this['_depthSort']) && (this['mesh']['computeWorldMatrix'](!0x0), this['mesh']['_worldMatrix']['invertToRef'](_0x42ad8f)), this['billboard']) { var _0x2bbdaf = _0x2af40b[0x0]; this['_camera']['getDirectionToRef'](_0x47d24f['c']['Z'], _0x2bbdaf), _0x47d24f['x']['TransformNormalToRef'](_0x2bbdaf, _0x42ad8f, _0x26d50f), _0x26d50f['normalize'](); var _0x340002 = this['_camera']['getViewMatrix'](!0x0); _0x47d24f['x']['TransformNormalFromFloatsToRef'](_0x340002['m'][0x1], _0x340002['m'][0x5], _0x340002['m'][0x9], _0x42ad8f, _0x1b73e3), _0x47d24f['x']['CrossToRef'](_0x1b73e3, _0x26d50f, _0x3ec8c3), _0x1b73e3['normalize'](), _0x3ec8c3['normalize'](); } this['_depthSort'] && _0x47d24f['x']['TransformCoordinatesToRef'](this['_camera']['globalPosition'], _0x42ad8f, _0x1c6579), _0x47d24f['j']['IdentityToRef'](_0x436263); var _0x2bcc31 = 0x0 , _0x3a5bd0 = 0x0 , _0x1b1ddf = 0x0 , _0x57aad4 = 0x0 , _0x4293f7 = 0x0 , _0x537a85 = 0x0 , _0x4bce3d = 0x0; if (this['mesh']['isFacetDataEnabled'] && (this['_computeBoundingBox'] = !0x0), _0x4d2497 = _0x4d2497 >= this['nbParticles'] ? this['nbParticles'] - 0x1 : _0x4d2497, this['_computeBoundingBox'] && (0x0 != _0x43e2ff || _0x4d2497 != this['nbParticles'] - 0x1)) { var _0x5a7686 = this['mesh']['_boundingInfo']; _0x5a7686 && (_0x498097['copyFrom'](_0x5a7686['minimum']), _0x42f086['copyFrom'](_0x5a7686['maximum'])); } var _0x16d7db = (_0x3a5bd0 = this['particles'][_0x43e2ff]['_pos']) / 0x3 | 0x0; _0x57aad4 = 0x4 * _0x16d7db, _0x537a85 = 0x2 * _0x16d7db; for (var _0x51a827 = _0x43e2ff; _0x51a827 <= _0x4d2497; _0x51a827++) { var _0x1da640 = this['particles'][_0x51a827]; this['updateParticle'](_0x1da640); var _0x1d329b = _0x1da640['_model']['_shape'] , _0x5aa412 = _0x1da640['_model']['_shapeUV'] , _0x5ee15f = _0x1da640['_rotationMatrix'] , _0x28f1d4 = _0x1da640['position'] , _0x3b6bf5 = _0x1da640['rotation'] , _0x5df553 = _0x1da640['scaling'] , _0xcdeb30 = _0x1da640['_globalPosition']; if (this['_depthSort'] && this['_depthSortParticles']) { var _0x2f0216 = this['depthSortedParticles'][_0x51a827]; _0x2f0216['ind'] = _0x1da640['_ind'], _0x2f0216['indicesLength'] = _0x1da640['_model']['_indicesLength'], _0x2f0216['sqDistance'] = _0x47d24f['x']['DistanceSquared'](_0x1da640['position'], _0x1c6579); } if (!_0x1da640['alive'] || _0x1da640['_stillInvisible'] && !_0x1da640['isVisible']) _0x3a5bd0 += 0x3 * (_0x4bce3d = _0x1d329b['length']), _0x57aad4 += 0x4 * _0x4bce3d, _0x537a85 += 0x2 * _0x4bce3d; else { if (_0x1da640['isVisible']) { _0x1da640['_stillInvisible'] = !0x1; var _0x175cb1 = _0x2af40b[0xc]; if (_0x1da640['pivot']['multiplyToRef'](_0x5df553, _0x175cb1), this['billboard'] && (_0x3b6bf5['x'] = 0x0, _0x3b6bf5['y'] = 0x0), (this['_computeParticleRotation'] || this['billboard']) && _0x1da640['getRotationMatrix'](_0x436263), null !== _0x1da640['parentId']) { var _0x5cf71d = this['particles'][_0x1da640['parentId']] , _0x561ab5 = _0x5cf71d['_rotationMatrix'] , _0x363b1c = _0x5cf71d['_globalPosition'] , _0x2856f4 = _0x28f1d4['x'] * _0x561ab5[0x1] + _0x28f1d4['y'] * _0x561ab5[0x4] + _0x28f1d4['z'] * _0x561ab5[0x7] , _0x5c4cdf = _0x28f1d4['x'] * _0x561ab5[0x0] + _0x28f1d4['y'] * _0x561ab5[0x3] + _0x28f1d4['z'] * _0x561ab5[0x6] , _0x4e7ff3 = _0x28f1d4['x'] * _0x561ab5[0x2] + _0x28f1d4['y'] * _0x561ab5[0x5] + _0x28f1d4['z'] * _0x561ab5[0x8]; if (_0xcdeb30['x'] = _0x363b1c['x'] + _0x5c4cdf, _0xcdeb30['y'] = _0x363b1c['y'] + _0x2856f4, _0xcdeb30['z'] = _0x363b1c['z'] + _0x4e7ff3, this['_computeParticleRotation'] || this['billboard']) { var _0x287c2b = _0x436263['m']; _0x5ee15f[0x0] = _0x287c2b[0x0] * _0x561ab5[0x0] + _0x287c2b[0x1] * _0x561ab5[0x3] + _0x287c2b[0x2] * _0x561ab5[0x6], _0x5ee15f[0x1] = _0x287c2b[0x0] * _0x561ab5[0x1] + _0x287c2b[0x1] * _0x561ab5[0x4] + _0x287c2b[0x2] * _0x561ab5[0x7], _0x5ee15f[0x2] = _0x287c2b[0x0] * _0x561ab5[0x2] + _0x287c2b[0x1] * _0x561ab5[0x5] + _0x287c2b[0x2] * _0x561ab5[0x8], _0x5ee15f[0x3] = _0x287c2b[0x4] * _0x561ab5[0x0] + _0x287c2b[0x5] * _0x561ab5[0x3] + _0x287c2b[0x6] * _0x561ab5[0x6], _0x5ee15f[0x4] = _0x287c2b[0x4] * _0x561ab5[0x1] + _0x287c2b[0x5] * _0x561ab5[0x4] + _0x287c2b[0x6] * _0x561ab5[0x7], _0x5ee15f[0x5] = _0x287c2b[0x4] * _0x561ab5[0x2] + _0x287c2b[0x5] * _0x561ab5[0x5] + _0x287c2b[0x6] * _0x561ab5[0x8], _0x5ee15f[0x6] = _0x287c2b[0x8] * _0x561ab5[0x0] + _0x287c2b[0x9] * _0x561ab5[0x3] + _0x287c2b[0xa] * _0x561ab5[0x6], _0x5ee15f[0x7] = _0x287c2b[0x8] * _0x561ab5[0x1] + _0x287c2b[0x9] * _0x561ab5[0x4] + _0x287c2b[0xa] * _0x561ab5[0x7], _0x5ee15f[0x8] = _0x287c2b[0x8] * _0x561ab5[0x2] + _0x287c2b[0x9] * _0x561ab5[0x5] + _0x287c2b[0xa] * _0x561ab5[0x8]; } } else if (_0xcdeb30['x'] = _0x28f1d4['x'], _0xcdeb30['y'] = _0x28f1d4['y'], _0xcdeb30['z'] = _0x28f1d4['z'], this['_computeParticleRotation'] || this['billboard']) { _0x287c2b = _0x436263['m']; _0x5ee15f[0x0] = _0x287c2b[0x0], _0x5ee15f[0x1] = _0x287c2b[0x1], _0x5ee15f[0x2] = _0x287c2b[0x2], _0x5ee15f[0x3] = _0x287c2b[0x4], _0x5ee15f[0x4] = _0x287c2b[0x5], _0x5ee15f[0x5] = _0x287c2b[0x6], _0x5ee15f[0x6] = _0x287c2b[0x8], _0x5ee15f[0x7] = _0x287c2b[0x9], _0x5ee15f[0x8] = _0x287c2b[0xa]; } var _0x4f95b7 = _0x2af40b[0xb]; for (_0x1da640['translateFromPivot'] ? _0x4f95b7['setAll'](0x0) : _0x4f95b7['copyFrom'](_0x175cb1), _0x4bce3d = 0x0; _0x4bce3d < _0x1d329b['length']; _0x4bce3d++) { _0x2bcc31 = _0x3a5bd0 + 0x3 * _0x4bce3d, _0x1b1ddf = _0x57aad4 + 0x4 * _0x4bce3d, _0x4293f7 = _0x537a85 + 0x2 * _0x4bce3d, (_0x2bbdaf = _0x2af40b[0x0])['copyFrom'](_0x1d329b[_0x4bce3d]), this['_computeParticleVertex'] && this['updateParticleVertex'](_0x1da640, _0x2bbdaf, _0x4bce3d); var _0x1d72a3 = _0x2bbdaf['x'] * _0x5df553['x'] - _0x175cb1['x'] , _0x3c7c83 = _0x2bbdaf['y'] * _0x5df553['y'] - _0x175cb1['y'] , _0x91d95c = _0x2bbdaf['z'] * _0x5df553['z'] - _0x175cb1['z']; _0x5c4cdf = _0x1d72a3 * _0x5ee15f[0x0] + _0x3c7c83 * _0x5ee15f[0x3] + _0x91d95c * _0x5ee15f[0x6], _0x2856f4 = _0x1d72a3 * _0x5ee15f[0x1] + _0x3c7c83 * _0x5ee15f[0x4] + _0x91d95c * _0x5ee15f[0x7], _0x4e7ff3 = _0x1d72a3 * _0x5ee15f[0x2] + _0x3c7c83 * _0x5ee15f[0x5] + _0x91d95c * _0x5ee15f[0x8]; _0x5c4cdf += _0x4f95b7['x'], _0x2856f4 += _0x4f95b7['y'], _0x4e7ff3 += _0x4f95b7['z']; var _0x1f478f = _0x3982e3[_0x2bcc31] = _0xcdeb30['x'] + _0x3ec8c3['x'] * _0x5c4cdf + _0x1b73e3['x'] * _0x2856f4 + _0x26d50f['x'] * _0x4e7ff3 , _0x1640e2 = _0x3982e3[_0x2bcc31 + 0x1] = _0xcdeb30['y'] + _0x3ec8c3['y'] * _0x5c4cdf + _0x1b73e3['y'] * _0x2856f4 + _0x26d50f['y'] * _0x4e7ff3 , _0x338c50 = _0x3982e3[_0x2bcc31 + 0x2] = _0xcdeb30['z'] + _0x3ec8c3['z'] * _0x5c4cdf + _0x1b73e3['z'] * _0x2856f4 + _0x26d50f['z'] * _0x4e7ff3; if (this['_computeBoundingBox'] && (_0x498097['minimizeInPlaceFromFloats'](_0x1f478f, _0x1640e2, _0x338c50), _0x42f086['maximizeInPlaceFromFloats'](_0x1f478f, _0x1640e2, _0x338c50)), !this['_computeParticleVertex']) { var _0xe6adfa = _0x3dc732[_0x2bcc31] , _0x32ade3 = _0x3dc732[_0x2bcc31 + 0x1] , _0x2b1b61 = _0x3dc732[_0x2bcc31 + 0x2] , _0x2ca36e = _0xe6adfa * _0x5ee15f[0x0] + _0x32ade3 * _0x5ee15f[0x3] + _0x2b1b61 * _0x5ee15f[0x6] , _0x59f75b = _0xe6adfa * _0x5ee15f[0x1] + _0x32ade3 * _0x5ee15f[0x4] + _0x2b1b61 * _0x5ee15f[0x7] , _0x4f8724 = _0xe6adfa * _0x5ee15f[0x2] + _0x32ade3 * _0x5ee15f[0x5] + _0x2b1b61 * _0x5ee15f[0x8]; _0x4595d3[_0x2bcc31] = _0x3ec8c3['x'] * _0x2ca36e + _0x1b73e3['x'] * _0x59f75b + _0x26d50f['x'] * _0x4f8724, _0x4595d3[_0x2bcc31 + 0x1] = _0x3ec8c3['y'] * _0x2ca36e + _0x1b73e3['y'] * _0x59f75b + _0x26d50f['y'] * _0x4f8724, _0x4595d3[_0x2bcc31 + 0x2] = _0x3ec8c3['z'] * _0x2ca36e + _0x1b73e3['z'] * _0x59f75b + _0x26d50f['z'] * _0x4f8724; } if (this['_computeParticleColor'] && _0x1da640['color']) { var _0x2d09c2 = _0x1da640['color'] , _0x5360cc = this['_colors32']; _0x5360cc[_0x1b1ddf] = _0x2d09c2['r'], _0x5360cc[_0x1b1ddf + 0x1] = _0x2d09c2['g'], _0x5360cc[_0x1b1ddf + 0x2] = _0x2d09c2['b'], _0x5360cc[_0x1b1ddf + 0x3] = _0x2d09c2['a']; } if (this['_computeParticleTexture']) { var _0xbc955e = _0x1da640['uvs']; _0x465615[_0x4293f7] = _0x5aa412[0x2 * _0x4bce3d] * (_0xbc955e['z'] - _0xbc955e['x']) + _0xbc955e['x'], _0x465615[_0x4293f7 + 0x1] = _0x5aa412[0x2 * _0x4bce3d + 0x1] * (_0xbc955e['w'] - _0xbc955e['y']) + _0xbc955e['y']; } } } else for (_0x1da640['_stillInvisible'] = !0x0, _0x4bce3d = 0x0; _0x4bce3d < _0x1d329b['length']; _0x4bce3d++) { if (_0x1b1ddf = _0x57aad4 + 0x4 * _0x4bce3d, _0x4293f7 = _0x537a85 + 0x2 * _0x4bce3d, _0x3982e3[_0x2bcc31 = _0x3a5bd0 + 0x3 * _0x4bce3d] = _0x3982e3[_0x2bcc31 + 0x1] = _0x3982e3[_0x2bcc31 + 0x2] = 0x0, _0x4595d3[_0x2bcc31] = _0x4595d3[_0x2bcc31 + 0x1] = _0x4595d3[_0x2bcc31 + 0x2] = 0x0, this['_computeParticleColor'] && _0x1da640['color']) { _0x2d09c2 = _0x1da640['color']; _0x386a05[_0x1b1ddf] = _0x2d09c2['r'], _0x386a05[_0x1b1ddf + 0x1] = _0x2d09c2['g'], _0x386a05[_0x1b1ddf + 0x2] = _0x2d09c2['b'], _0x386a05[_0x1b1ddf + 0x3] = _0x2d09c2['a']; } if (this['_computeParticleTexture']) { _0xbc955e = _0x1da640['uvs']; _0x465615[_0x4293f7] = _0x5aa412[0x2 * _0x4bce3d] * (_0xbc955e['z'] - _0xbc955e['x']) + _0xbc955e['x'], _0x465615[_0x4293f7 + 0x1] = _0x5aa412[0x2 * _0x4bce3d + 0x1] * (_0xbc955e['w'] - _0xbc955e['y']) + _0xbc955e['y']; } } if (this['_particlesIntersect']) { var _0x55bfa5 = _0x1da640['_boundingInfo'] , _0x167653 = _0x55bfa5['boundingBox'] , _0x4152b2 = _0x55bfa5['boundingSphere'] , _0x1d89e6 = _0x1da640['_modelBoundingInfo']; if (!this['_bSphereOnly']) { var _0x47a3ae = _0x1d89e6['boundingBox']['vectors'] , _0x53454d = _0x2af40b[0x1] , _0x4355b8 = _0x2af40b[0x2]; _0x53454d['setAll'](Number['MAX_VALUE']), _0x4355b8['setAll'](-Number['MAX_VALUE']); for (var _0x291057 = 0x0; _0x291057 < 0x8; _0x291057++) { var _0xac30cc = _0x47a3ae[_0x291057]['x'] * _0x5df553['x'] , _0x5a53c7 = _0x47a3ae[_0x291057]['y'] * _0x5df553['y'] , _0x2b2f6f = _0x47a3ae[_0x291057]['z'] * _0x5df553['z'] , _0xffc19 = (_0x5c4cdf = _0xac30cc * _0x5ee15f[0x0] + _0x5a53c7 * _0x5ee15f[0x3] + _0x2b2f6f * _0x5ee15f[0x6], _0x2856f4 = _0xac30cc * _0x5ee15f[0x1] + _0x5a53c7 * _0x5ee15f[0x4] + _0x2b2f6f * _0x5ee15f[0x7], _0x4e7ff3 = _0xac30cc * _0x5ee15f[0x2] + _0x5a53c7 * _0x5ee15f[0x5] + _0x2b2f6f * _0x5ee15f[0x8], _0x28f1d4['x'] + _0x3ec8c3['x'] * _0x5c4cdf + _0x1b73e3['x'] * _0x2856f4 + _0x26d50f['x'] * _0x4e7ff3) , _0x5aabdc = _0x28f1d4['y'] + _0x3ec8c3['y'] * _0x5c4cdf + _0x1b73e3['y'] * _0x2856f4 + _0x26d50f['y'] * _0x4e7ff3 , _0x514da5 = _0x28f1d4['z'] + _0x3ec8c3['z'] * _0x5c4cdf + _0x1b73e3['z'] * _0x2856f4 + _0x26d50f['z'] * _0x4e7ff3; _0x53454d['minimizeInPlaceFromFloats'](_0xffc19, _0x5aabdc, _0x514da5), _0x4355b8['maximizeInPlaceFromFloats'](_0xffc19, _0x5aabdc, _0x514da5); } _0x167653['reConstruct'](_0x53454d, _0x4355b8, _0x5ab6db['_worldMatrix']); } var _0x259cd1 = _0x1d89e6['minimum']['multiplyToRef'](_0x5df553, _0x2af40b[0x1]) , _0x127759 = _0x1d89e6['maximum']['multiplyToRef'](_0x5df553, _0x2af40b[0x2]) , _0x42b33f = _0x127759['addToRef'](_0x259cd1, _0x2af40b[0x3])['scaleInPlace'](0.5)['addInPlace'](_0xcdeb30) , _0x1c3683 = _0x127759['subtractToRef'](_0x259cd1, _0x2af40b[0x4])['scaleInPlace'](0.5 * this['_bSphereRadiusFactor']) , _0x396c8b = _0x42b33f['subtractToRef'](_0x1c3683, _0x2af40b[0x1]) , _0x3c9145 = _0x42b33f['addToRef'](_0x1c3683, _0x2af40b[0x2]); _0x4152b2['reConstruct'](_0x396c8b, _0x3c9145, _0x5ab6db['_worldMatrix']); } _0x3a5bd0 = _0x2bcc31 + 0x3, _0x57aad4 = _0x1b1ddf + 0x4, _0x537a85 = _0x4293f7 + 0x2; } } if (_0x377eb9) { if (this['_computeParticleColor'] && _0x5ab6db['updateVerticesData'](_0x4209f7['b']['ColorKind'], _0x386a05, !0x1, !0x1), this['_computeParticleTexture'] && _0x5ab6db['updateVerticesData'](_0x4209f7['b']['UVKind'], _0x465615, !0x1, !0x1), _0x5ab6db['updateVerticesData'](_0x4209f7['b']['PositionKind'], _0x3982e3, !0x1, !0x1), !_0x5ab6db['areNormalsFrozen'] || _0x5ab6db['isFacetDataEnabled']) { if (this['_computeParticleVertex'] || _0x5ab6db['isFacetDataEnabled']) { var _0x9ec980 = _0x5ab6db['isFacetDataEnabled'] ? _0x5ab6db['getFacetDataParameters']() : null; _0xb31206['a']['ComputeNormals'](_0x3982e3, _0x16d7f9, _0x4595d3, _0x9ec980); for (var _0x5ae78a = 0x0; _0x5ae78a < _0x4595d3['length']; _0x5ae78a++) _0x3dc732[_0x5ae78a] = _0x4595d3[_0x5ae78a]; } _0x5ab6db['areNormalsFrozen'] || _0x5ab6db['updateVerticesData'](_0x4209f7['b']['NormalKind'], _0x4595d3, !0x1, !0x1); } if (this['_depthSort'] && this['_depthSortParticles']) { var _0x235684 = this['depthSortedParticles']; _0x235684['sort'](_0x5a6e48); for (var _0x1c475a = _0x235684['length'], _0x568a4f = 0x0, _0xdba58 = 0x0; _0xdba58 < _0x1c475a; _0xdba58++) { var _0x500879 = _0x235684[_0xdba58]['indicesLength'] , _0x413f41 = _0x235684[_0xdba58]['ind']; for (_0x5ae78a = 0x0; _0x5ae78a < _0x500879; _0x5ae78a++) _0x16d7f9[_0x568a4f] = _0x499184[_0x413f41 + _0x5ae78a], _0x568a4f++; } _0x5ab6db['updateIndices'](_0x16d7f9); } } return this['_computeBoundingBox'] && (_0x5ab6db['_boundingInfo'] ? _0x5ab6db['_boundingInfo']['reConstruct'](_0x498097, _0x42f086, _0x5ab6db['_worldMatrix']) : _0x5ab6db['_boundingInfo'] = new _0x3166db['a'](_0x498097,_0x42f086,_0x5ab6db['_worldMatrix'])), this['afterUpdateParticles'](_0x43e2ff, _0x4d2497, _0x377eb9), this; } , _0x38de93['prototype']['dispose'] = function() { this['mesh']['dispose'](), this['vars'] = null, this['_positions'] = null, this['_indices'] = null, this['_normals'] = null, this['_uvs'] = null, this['_colors'] = null, this['_indices32'] = null, this['_positions32'] = null, this['_normals32'] = null, this['_fixedNormal32'] = null, this['_uvs32'] = null, this['_colors32'] = null, this['pickedParticles'] = null; } , _0x38de93['prototype']['refreshVisibleSize'] = function() { return this['_isVisibilityBoxLocked'] || this['mesh']['refreshBoundingInfo'](), this; } , _0x38de93['prototype']['setVisibilityBox'] = function(_0x46a8a6) { var _0x2e849d = _0x46a8a6 / 0x2; this['mesh']['_boundingInfo'] = new _0x3166db['a'](new _0x47d24f['x'](-_0x2e849d,-_0x2e849d,-_0x2e849d),new _0x47d24f['x'](_0x2e849d,_0x2e849d,_0x2e849d)); } , Object['defineProperty'](_0x38de93['prototype'], 'isAlwaysVisible', { 'get': function() { return this['_alwaysVisible']; }, 'set': function(_0x48ca10) { this['_alwaysVisible'] = _0x48ca10, this['mesh']['alwaysSelectAsActiveMesh'] = _0x48ca10; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x38de93['prototype'], 'isVisibilityBoxLocked', { 'get': function() { return this['_isVisibilityBoxLocked']; }, 'set': function(_0x4a8507) { this['_isVisibilityBoxLocked'] = _0x4a8507, this['mesh']['getBoundingInfo']()['isLocked'] = _0x4a8507; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x38de93['prototype'], 'computeParticleRotation', { 'get': function() { return this['_computeParticleRotation']; }, 'set': function(_0x55112b) { this['_computeParticleRotation'] = _0x55112b; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x38de93['prototype'], 'computeParticleColor', { 'get': function() { return this['_computeParticleColor']; }, 'set': function(_0x560be2) { this['_computeParticleColor'] = _0x560be2; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x38de93['prototype'], 'computeParticleTexture', { 'get': function() { return this['_computeParticleTexture']; }, 'set': function(_0x5b86c3) { this['_computeParticleTexture'] = _0x5b86c3; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x38de93['prototype'], 'computeParticleVertex', { 'get': function() { return this['_computeParticleVertex']; }, 'set': function(_0x12e5d9) { this['_computeParticleVertex'] = _0x12e5d9; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x38de93['prototype'], 'computeBoundingBox', { 'get': function() { return this['_computeBoundingBox']; }, 'set': function(_0x79dd57) { this['_computeBoundingBox'] = _0x79dd57; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x38de93['prototype'], 'depthSortParticles', { 'get': function() { return this['_depthSortParticles']; }, 'set': function(_0xef3c6b) { this['_depthSortParticles'] = _0xef3c6b; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x38de93['prototype']['initParticles'] = function() {} , _0x38de93['prototype']['recycleParticle'] = function(_0x4f3623) { return _0x4f3623; } , _0x38de93['prototype']['updateParticle'] = function(_0x2222e7) { return _0x2222e7; } , _0x38de93['prototype']['updateParticleVertex'] = function(_0x41b505, _0x11ffc4, _0x2fe0c9) { return _0x11ffc4; } , _0x38de93['prototype']['beforeUpdateParticles'] = function(_0xc67582, _0x152524, _0x3fbeac) {} , _0x38de93['prototype']['afterUpdateParticles'] = function(_0x334734, _0x4b95bb, _0x1d0f6d) {} , _0x38de93; }(); _0x366639['a']['prototype']['getPhysicsEngine'] = function() { return this['_physicsEngine']; } , _0x366639['a']['prototype']['enablePhysics'] = function(_0x138a96, _0xd1a336) { if (void 0x0 === _0x138a96 && (_0x138a96 = null), this['_physicsEngine']) return !0x0; var _0x246087 = this['_getComponent'](_0x443f74['a']['NAME_PHYSICSENGINE']); _0x246087 || (_0x246087 = new _0x32edcd(this), this['_addComponent'](_0x246087)); try { return this['_physicsEngine'] = new _0x19d308(_0x138a96,_0xd1a336), !0x0; } catch (_0x82384a) { return _0x3f98cb['a']['Error'](_0x82384a['message']), !0x1; } } , _0x366639['a']['prototype']['disablePhysicsEngine'] = function() { this['_physicsEngine'] && (this['_physicsEngine']['dispose'](), this['_physicsEngine'] = null); } , _0x366639['a']['prototype']['isPhysicsEnabled'] = function() { return void 0x0 !== this['_physicsEngine']; } , _0x366639['a']['prototype']['deleteCompoundImpostor'] = function(_0x22d196) { var _0x422c64 = _0x22d196['parts'][0x0]['mesh']; _0x422c64['physicsImpostor'] && (_0x422c64['physicsImpostor']['dispose'](), _0x422c64['physicsImpostor'] = null); } , _0x366639['a']['prototype']['_advancePhysicsEngineStep'] = function(_0x1e2389) { this['_physicsEngine'] && (this['onBeforePhysicsObservable']['notifyObservers'](this), this['_physicsEngine']['_step'](_0x1e2389 / 0x3e8), this['onAfterPhysicsObservable']['notifyObservers'](this)); } , Object['defineProperty'](_0x10c088['a']['prototype'], 'physicsImpostor', { 'get': function() { return this['_physicsImpostor']; }, 'set': function(_0x1457b9) { var _0x275988 = this; this['_physicsImpostor'] !== _0x1457b9 && (this['_disposePhysicsObserver'] && this['onDisposeObservable']['remove'](this['_disposePhysicsObserver']), this['_physicsImpostor'] = _0x1457b9, _0x1457b9 && (this['_disposePhysicsObserver'] = this['onDisposeObservable']['add'](function() { _0x275988['physicsImpostor'] && (_0x275988['physicsImpostor']['dispose'](), _0x275988['physicsImpostor'] = null); }))); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x10c088['a']['prototype']['getPhysicsImpostor'] = function() { return this['physicsImpostor']; } , _0x10c088['a']['prototype']['applyImpulse'] = function(_0x55c355, _0x526dfd) { return this['physicsImpostor'] ? (this['physicsImpostor']['applyImpulse'](_0x55c355, _0x526dfd), this) : this; } , _0x10c088['a']['prototype']['setPhysicsLinkWith'] = function(_0x366e45, _0x519a23, _0x4d989a, _0x5ec294) { return this['physicsImpostor'] && _0x366e45['physicsImpostor'] ? (this['physicsImpostor']['createJoint'](_0x366e45['physicsImpostor'], _0x400e0d['e']['HingeJoint'], { 'mainPivot': _0x519a23, 'connectedPivot': _0x4d989a, 'nativeParams': _0x5ec294 }), this) : this; } ; var _0x29719b, _0x4a8ffa, _0x32edcd = function() { function _0x4f91b7(_0x1f6da6) { var _0x17f5c4 = this; this['name'] = _0x443f74['a']['NAME_PHYSICSENGINE'], this['scene'] = _0x1f6da6, this['scene']['onBeforePhysicsObservable'] = new _0x2dbec2['c'](), this['scene']['onAfterPhysicsObservable'] = new _0x2dbec2['c'](), this['scene']['getDeterministicFrameTime'] = function() { return _0x17f5c4['scene']['_physicsEngine'] ? 0x3e8 * _0x17f5c4['scene']['_physicsEngine']['getTimeStep']() : 0x3e8 / 0x3c; } ; } return _0x4f91b7['prototype']['register'] = function() {} , _0x4f91b7['prototype']['rebuild'] = function() {} , _0x4f91b7['prototype']['dispose'] = function() { this['scene']['onBeforePhysicsObservable']['clear'](), this['scene']['onAfterPhysicsObservable']['clear'](), this['scene']['_physicsEngine'] && this['scene']['disablePhysicsEngine'](); } , _0x4f91b7; }(), _0x4dd2cc = function() { function _0x1cf641(_0x326b8) { this['_scene'] = _0x326b8, this['_physicsEngine'] = this['_scene']['getPhysicsEngine'](), this['_physicsEngine'] || _0x3f98cb['a']['Warn']('Physics\x20engine\x20not\x20enabled.\x20Please\x20enable\x20the\x20physics\x20before\x20you\x20can\x20use\x20the\x20methods.'); } return _0x1cf641['prototype']['applyRadialExplosionImpulse'] = function(_0x2aeca7, _0x1ba50c, _0x2fb64b, _0x53a273) { if (!this['_physicsEngine']) return _0x3f98cb['a']['Warn']('Physics\x20engine\x20not\x20enabled.\x20Please\x20enable\x20the\x20physics\x20before\x20you\x20call\x20this\x20method.'), null; var _0x135c4f = this['_physicsEngine']['getImpostors'](); if (0x0 === _0x135c4f['length']) return null; 'number' == typeof _0x1ba50c && ((_0x1ba50c = new _0x200d5e())['radius'] = _0x1ba50c, _0x1ba50c['strength'] = _0x2fb64b || _0x1ba50c['strength'], _0x1ba50c['falloff'] = _0x53a273 || _0x1ba50c['falloff']); var _0x2cd3c6 = new _0x1201c4(this['_scene'],_0x1ba50c) , _0x5e1e0d = Array(); return _0x135c4f['forEach'](function(_0x4d5123) { var _0x3c55a2 = _0x2cd3c6['getImpostorHitData'](_0x4d5123, _0x2aeca7); _0x3c55a2 && (_0x4d5123['applyImpulse'](_0x3c55a2['force'], _0x3c55a2['contactPoint']), _0x5e1e0d['push']({ 'impostor': _0x4d5123, 'hitData': _0x3c55a2 })); }), _0x2cd3c6['triggerAffectedImpostorsCallback'](_0x5e1e0d), _0x2cd3c6['dispose'](!0x1), _0x2cd3c6; } , _0x1cf641['prototype']['applyRadialExplosionForce'] = function(_0x189b41, _0x13776a, _0xa849d5, _0x3661a9) { if (!this['_physicsEngine']) return _0x3f98cb['a']['Warn']('Physics\x20engine\x20not\x20enabled.\x20Please\x20enable\x20the\x20physics\x20before\x20you\x20call\x20the\x20PhysicsHelper.'), null; var _0x1437e3 = this['_physicsEngine']['getImpostors'](); if (0x0 === _0x1437e3['length']) return null; 'number' == typeof _0x13776a && ((_0x13776a = new _0x200d5e())['radius'] = _0x13776a, _0x13776a['strength'] = _0xa849d5 || _0x13776a['strength'], _0x13776a['falloff'] = _0x3661a9 || _0x13776a['falloff']); var _0xe457e9 = new _0x1201c4(this['_scene'],_0x13776a) , _0x46f5e8 = Array(); return _0x1437e3['forEach'](function(_0x26db8d) { var _0x5a2859 = _0xe457e9['getImpostorHitData'](_0x26db8d, _0x189b41); _0x5a2859 && (_0x26db8d['applyForce'](_0x5a2859['force'], _0x5a2859['contactPoint']), _0x46f5e8['push']({ 'impostor': _0x26db8d, 'hitData': _0x5a2859 })); }), _0xe457e9['triggerAffectedImpostorsCallback'](_0x46f5e8), _0xe457e9['dispose'](!0x1), _0xe457e9; } , _0x1cf641['prototype']['gravitationalField'] = function(_0x35aebd, _0x5d515b, _0x5775a3, _0x10e3a6) { if (!this['_physicsEngine']) return _0x3f98cb['a']['Warn']('Physics\x20engine\x20not\x20enabled.\x20Please\x20enable\x20the\x20physics\x20before\x20you\x20call\x20the\x20PhysicsHelper.'), null; if (0x0 === this['_physicsEngine']['getImpostors']()['length']) return null; 'number' == typeof _0x5d515b && ((_0x5d515b = new _0x200d5e())['radius'] = _0x5d515b, _0x5d515b['strength'] = _0x5775a3 || _0x5d515b['strength'], _0x5d515b['falloff'] = _0x10e3a6 || _0x5d515b['falloff']); var _0x36f525 = new _0x110dae(this,this['_scene'],_0x35aebd,_0x5d515b); return _0x36f525['dispose'](!0x1), _0x36f525; } , _0x1cf641['prototype']['updraft'] = function(_0x300944, _0x5005fe, _0x280b20, _0x352abb, _0x185736) { if (!this['_physicsEngine']) return _0x3f98cb['a']['Warn']('Physics\x20engine\x20not\x20enabled.\x20Please\x20enable\x20the\x20physics\x20before\x20you\x20call\x20the\x20PhysicsHelper.'), null; if (0x0 === this['_physicsEngine']['getImpostors']()['length']) return null; 'number' == typeof _0x5005fe && ((_0x5005fe = new _0x5f57a2())['radius'] = _0x5005fe, _0x5005fe['strength'] = _0x280b20 || _0x5005fe['strength'], _0x5005fe['height'] = _0x352abb || _0x5005fe['height'], _0x5005fe['updraftMode'] = _0x185736 || _0x5005fe['updraftMode']); var _0x441997 = new _0x33ebfb(this['_scene'],_0x300944,_0x5005fe); return _0x441997['dispose'](!0x1), _0x441997; } , _0x1cf641['prototype']['vortex'] = function(_0x5009dd, _0xf41bc1, _0x5d73c4, _0x1a9c86) { if (!this['_physicsEngine']) return _0x3f98cb['a']['Warn']('Physics\x20engine\x20not\x20enabled.\x20Please\x20enable\x20the\x20physics\x20before\x20you\x20call\x20the\x20PhysicsHelper.'), null; if (0x0 === this['_physicsEngine']['getImpostors']()['length']) return null; 'number' == typeof _0xf41bc1 && ((_0xf41bc1 = new _0x1ca33b())['radius'] = _0xf41bc1, _0xf41bc1['strength'] = _0x5d73c4 || _0xf41bc1['strength'], _0xf41bc1['height'] = _0x1a9c86 || _0xf41bc1['height']); var _0x5a8f02 = new _0x201943(this['_scene'],_0x5009dd,_0xf41bc1); return _0x5a8f02['dispose'](!0x1), _0x5a8f02; } , _0x1cf641; }(), _0x1201c4 = function() { function _0x4389ec(_0x48a4e7, _0x84c5f2) { this['_scene'] = _0x48a4e7, this['_options'] = _0x84c5f2, this['_dataFetched'] = !0x1, this['_options'] = _0x420e5b['a']({}, new _0x200d5e(), this['_options']); } return _0x4389ec['prototype']['getData'] = function() { return this['_dataFetched'] = !0x0, { 'sphere': this['_sphere'] }; } , _0x4389ec['prototype']['getImpostorHitData'] = function(_0x53be6b, _0x25a8f1) { if (0x0 === _0x53be6b['mass']) return null; if (!this['_intersectsWithSphere'](_0x53be6b, _0x25a8f1, this['_options']['radius'])) return null; if ('Mesh' !== _0x53be6b['object']['getClassName']() && 'InstancedMesh' !== _0x53be6b['object']['getClassName']()) return null; var _0x1a5374 = _0x53be6b['getObjectCenter']()['subtract'](_0x25a8f1) , _0xfadcb3 = new _0x19e5af['a'](_0x25a8f1,_0x1a5374,this['_options']['radius'])['intersectsMesh'](_0x53be6b['object'])['pickedPoint']; if (!_0xfadcb3) return null; var _0x3759dd = _0x47d24f['x']['Distance'](_0x25a8f1, _0xfadcb3); if (_0x3759dd > this['_options']['radius']) return null; var _0x359b4e = this['_options']['falloff'] === _0x29719b['Constant'] ? this['_options']['strength'] : this['_options']['strength'] * (0x1 - _0x3759dd / this['_options']['radius']); return { 'force': _0x1a5374['multiplyByFloats'](_0x359b4e, _0x359b4e, _0x359b4e), 'contactPoint': _0xfadcb3, 'distanceFromOrigin': _0x3759dd }; } , _0x4389ec['prototype']['triggerAffectedImpostorsCallback'] = function(_0x5d43c5) { this['_options']['affectedImpostorsCallback'] && this['_options']['affectedImpostorsCallback'](_0x5d43c5); } , _0x4389ec['prototype']['dispose'] = function(_0x1e7f60) { var _0x401c3a = this; void 0x0 === _0x1e7f60 && (_0x1e7f60 = !0x0), _0x1e7f60 ? this['_sphere']['dispose']() : setTimeout(function() { _0x401c3a['_dataFetched'] || _0x401c3a['_sphere']['dispose'](); }, 0x0); } , _0x4389ec['prototype']['_prepareSphere'] = function() { this['_sphere'] || (this['_sphere'] = _0x523a20['a']['CreateSphere']('radialExplosionEventSphere', this['_options']['sphere'], this['_scene']), this['_sphere']['isVisible'] = !0x1); } , _0x4389ec['prototype']['_intersectsWithSphere'] = function(_0x227df0, _0x33b7ec, _0x5ea6a4) { var _0x432ffc = _0x227df0['object']; return this['_prepareSphere'](), this['_sphere']['position'] = _0x33b7ec, this['_sphere']['scaling'] = new _0x47d24f['x'](0x2 * _0x5ea6a4,0x2 * _0x5ea6a4,0x2 * _0x5ea6a4), this['_sphere']['_updateBoundingInfo'](), this['_sphere']['computeWorldMatrix'](!0x0), this['_sphere']['intersectsMesh'](_0x432ffc, !0x0); } , _0x4389ec; }(), _0x110dae = function() { function _0x52c5b4(_0x16736c, _0x3f69c0, _0x302675, _0x53f220) { this['_physicsHelper'] = _0x16736c, this['_scene'] = _0x3f69c0, this['_origin'] = _0x302675, this['_options'] = _0x53f220, this['_dataFetched'] = !0x1, this['_options'] = _0x420e5b['a']({}, new _0x200d5e(), this['_options']), this['_tickCallback'] = this['_tick']['bind'](this), this['_options']['strength'] = -0x1 * this['_options']['strength']; } return _0x52c5b4['prototype']['getData'] = function() { return this['_dataFetched'] = !0x0, { 'sphere': this['_sphere'] }; } , _0x52c5b4['prototype']['enable'] = function() { this['_tickCallback']['call'](this), this['_scene']['registerBeforeRender'](this['_tickCallback']); } , _0x52c5b4['prototype']['disable'] = function() { this['_scene']['unregisterBeforeRender'](this['_tickCallback']); } , _0x52c5b4['prototype']['dispose'] = function(_0x392cf4) { var _0x40568c = this; void 0x0 === _0x392cf4 && (_0x392cf4 = !0x0), _0x392cf4 ? this['_sphere']['dispose']() : setTimeout(function() { _0x40568c['_dataFetched'] || _0x40568c['_sphere']['dispose'](); }, 0x0); } , _0x52c5b4['prototype']['_tick'] = function() { if (this['_sphere']) this['_physicsHelper']['applyRadialExplosionForce'](this['_origin'], this['_options']); else { var _0x34dd8f = this['_physicsHelper']['applyRadialExplosionForce'](this['_origin'], this['_options']); _0x34dd8f && (this['_sphere'] = _0x34dd8f['getData']()['sphere']['clone']('radialExplosionEventSphereClone')); } } , _0x52c5b4; }(), _0x33ebfb = function() { function _0xc6a49b(_0x2a2428, _0x1651b8, _0xa3b161) { this['_scene'] = _0x2a2428, this['_origin'] = _0x1651b8, this['_options'] = _0xa3b161, this['_originTop'] = _0x47d24f['x']['Zero'](), this['_originDirection'] = _0x47d24f['x']['Zero'](), this['_cylinderPosition'] = _0x47d24f['x']['Zero'](), this['_dataFetched'] = !0x1, this['_physicsEngine'] = this['_scene']['getPhysicsEngine'](), this['_options'] = _0x420e5b['a']({}, new _0x5f57a2(), this['_options']), this['_origin']['addToRef'](new _0x47d24f['x'](0x0,this['_options']['height'] / 0x2,0x0), this['_cylinderPosition']), this['_origin']['addToRef'](new _0x47d24f['x'](0x0,this['_options']['height'],0x0), this['_originTop']), this['_options']['updraftMode'] === _0x4a8ffa['Perpendicular'] && (this['_originDirection'] = this['_origin']['subtract'](this['_originTop'])['normalize']()), this['_tickCallback'] = this['_tick']['bind'](this), this['_prepareCylinder'](); } return _0xc6a49b['prototype']['getData'] = function() { return this['_dataFetched'] = !0x0, { 'cylinder': this['_cylinder'] }; } , _0xc6a49b['prototype']['enable'] = function() { this['_tickCallback']['call'](this), this['_scene']['registerBeforeRender'](this['_tickCallback']); } , _0xc6a49b['prototype']['disable'] = function() { this['_scene']['unregisterBeforeRender'](this['_tickCallback']); } , _0xc6a49b['prototype']['dispose'] = function(_0x1ecc83) { var _0x22122e = this; void 0x0 === _0x1ecc83 && (_0x1ecc83 = !0x0), this['_cylinder'] && (_0x1ecc83 ? this['_cylinder']['dispose']() : setTimeout(function() { _0x22122e['_dataFetched'] || _0x22122e['_cylinder']['dispose'](); }, 0x0)); } , _0xc6a49b['prototype']['getImpostorHitData'] = function(_0x432bd4) { if (0x0 === _0x432bd4['mass']) return null; if (!this['_intersectsWithCylinder'](_0x432bd4)) return null; var _0x30ccef = _0x432bd4['getObjectCenter'](); if (this['_options']['updraftMode'] === _0x4a8ffa['Perpendicular']) var _0x3260cc = this['_originDirection']; else _0x3260cc = _0x30ccef['subtract'](this['_originTop']); var _0x39d927 = _0x47d24f['x']['Distance'](this['_origin'], _0x30ccef) , _0x2ce013 = -0x1 * this['_options']['strength']; return { 'force': _0x3260cc['multiplyByFloats'](_0x2ce013, _0x2ce013, _0x2ce013), 'contactPoint': _0x30ccef, 'distanceFromOrigin': _0x39d927 }; } , _0xc6a49b['prototype']['_tick'] = function() { var _0x1be063 = this; this['_physicsEngine']['getImpostors']()['forEach'](function(_0x1a0d10) { var _0x20bda2 = _0x1be063['getImpostorHitData'](_0x1a0d10); _0x20bda2 && _0x1a0d10['applyForce'](_0x20bda2['force'], _0x20bda2['contactPoint']); }); } , _0xc6a49b['prototype']['_prepareCylinder'] = function() { this['_cylinder'] || (this['_cylinder'] = _0x1e5ba3['a']['CreateCylinder']('updraftEventCylinder', { 'height': this['_options']['height'], 'diameter': 0x2 * this['_options']['radius'] }, this['_scene']), this['_cylinder']['isVisible'] = !0x1); } , _0xc6a49b['prototype']['_intersectsWithCylinder'] = function(_0xfb08f7) { var _0x578d26 = _0xfb08f7['object']; return this['_cylinder']['position'] = this['_cylinderPosition'], this['_cylinder']['intersectsMesh'](_0x578d26, !0x0); } , _0xc6a49b; }(), _0x201943 = function() { function _0xaeab4e(_0x3154e2, _0x8ed95c, _0x14ddb0) { this['_scene'] = _0x3154e2, this['_origin'] = _0x8ed95c, this['_options'] = _0x14ddb0, this['_originTop'] = _0x47d24f['x']['Zero'](), this['_cylinderPosition'] = _0x47d24f['x']['Zero'](), this['_dataFetched'] = !0x1, this['_physicsEngine'] = this['_scene']['getPhysicsEngine'](), this['_options'] = _0x420e5b['a']({}, new _0x1ca33b(), this['_options']), this['_origin']['addToRef'](new _0x47d24f['x'](0x0,this['_options']['height'] / 0x2,0x0), this['_cylinderPosition']), this['_origin']['addToRef'](new _0x47d24f['x'](0x0,this['_options']['height'],0x0), this['_originTop']), this['_tickCallback'] = this['_tick']['bind'](this), this['_prepareCylinder'](); } return _0xaeab4e['prototype']['getData'] = function() { return this['_dataFetched'] = !0x0, { 'cylinder': this['_cylinder'] }; } , _0xaeab4e['prototype']['enable'] = function() { this['_tickCallback']['call'](this), this['_scene']['registerBeforeRender'](this['_tickCallback']); } , _0xaeab4e['prototype']['disable'] = function() { this['_scene']['unregisterBeforeRender'](this['_tickCallback']); } , _0xaeab4e['prototype']['dispose'] = function(_0x4901e0) { var _0x5b6fde = this; void 0x0 === _0x4901e0 && (_0x4901e0 = !0x0), _0x4901e0 ? this['_cylinder']['dispose']() : setTimeout(function() { _0x5b6fde['_dataFetched'] || _0x5b6fde['_cylinder']['dispose'](); }, 0x0); } , _0xaeab4e['prototype']['getImpostorHitData'] = function(_0x519a18) { if (0x0 === _0x519a18['mass']) return null; if (!this['_intersectsWithCylinder'](_0x519a18)) return null; if ('Mesh' !== _0x519a18['object']['getClassName']() && 'InstancedMesh' !== _0x519a18['object']['getClassName']()) return null; var _0x4d2b9b = _0x519a18['getObjectCenter']() , _0xbc1d95 = new _0x47d24f['x'](this['_origin']['x'],_0x4d2b9b['y'],this['_origin']['z']) , _0x54888f = _0x4d2b9b['subtract'](_0xbc1d95) , _0x30f2e8 = new _0x19e5af['a'](_0xbc1d95,_0x54888f,this['_options']['radius'])['intersectsMesh'](_0x519a18['object']) , _0x56431e = _0x30f2e8['pickedPoint']; if (!_0x56431e) return null; var _0x201a9c = _0x30f2e8['distance'] / this['_options']['radius'] , _0x3bf14d = _0x56431e['normalize'](); if (_0x201a9c > this['_options']['centripetalForceThreshold'] && (_0x3bf14d = _0x3bf14d['negate']()), _0x201a9c > this['_options']['centripetalForceThreshold']) var _0x2480be = _0x3bf14d['x'] * this['_options']['centripetalForceMultiplier'] , _0x16f28b = _0x3bf14d['y'] * this['_options']['updraftForceMultiplier'] , _0x52dd4a = _0x3bf14d['z'] * this['_options']['centripetalForceMultiplier']; else { var _0x26e3ed = _0x47d24f['x']['Cross'](_0xbc1d95, _0x4d2b9b)['normalize'](); _0x2480be = (_0x26e3ed['x'] + _0x3bf14d['x']) * this['_options']['centrifugalForceMultiplier'], _0x16f28b = this['_originTop']['y'] * this['_options']['updraftForceMultiplier'], _0x52dd4a = (_0x26e3ed['z'] + _0x3bf14d['z']) * this['_options']['centrifugalForceMultiplier']; } var _0x497390 = new _0x47d24f['x'](_0x2480be,_0x16f28b,_0x52dd4a); return { 'force': _0x497390 = _0x497390['multiplyByFloats'](this['_options']['strength'], this['_options']['strength'], this['_options']['strength']), 'contactPoint': _0x4d2b9b, 'distanceFromOrigin': _0x201a9c }; } , _0xaeab4e['prototype']['_tick'] = function() { var _0x4c45c2 = this; this['_physicsEngine']['getImpostors']()['forEach'](function(_0x12116c) { var _0x3f6007 = _0x4c45c2['getImpostorHitData'](_0x12116c); _0x3f6007 && _0x12116c['applyForce'](_0x3f6007['force'], _0x3f6007['contactPoint']); }); } , _0xaeab4e['prototype']['_prepareCylinder'] = function() { this['_cylinder'] || (this['_cylinder'] = _0x1e5ba3['a']['CreateCylinder']('vortexEventCylinder', { 'height': this['_options']['height'], 'diameter': 0x2 * this['_options']['radius'] }, this['_scene']), this['_cylinder']['isVisible'] = !0x1); } , _0xaeab4e['prototype']['_intersectsWithCylinder'] = function(_0xfceab8) { var _0x9b777f = _0xfceab8['object']; return this['_cylinder']['position'] = this['_cylinderPosition'], this['_cylinder']['intersectsMesh'](_0x9b777f, !0x0); } , _0xaeab4e; }(), _0x200d5e = function() { return function() { this['radius'] = 0x5, this['strength'] = 0xa, this['falloff'] = _0x29719b['Constant'], this['sphere'] = { 'segments': 0x20, 'diameter': 0x1 }; } ; }(), _0x5f57a2 = function() { return function() { this['radius'] = 0x5, this['strength'] = 0xa, this['height'] = 0xa, this['updraftMode'] = _0x4a8ffa['Center']; } ; }(), _0x1ca33b = function() { return function() { this['radius'] = 0x5, this['strength'] = 0xa, this['height'] = 0xa, this['centripetalForceThreshold'] = 0.7, this['centripetalForceMultiplier'] = 0x5, this['centrifugalForceMultiplier'] = 0.5, this['updraftForceMultiplier'] = 0.02; } ; }(); !function(_0x30172c) { _0x30172c[_0x30172c['Constant'] = 0x0] = 'Constant', _0x30172c[_0x30172c['Linear'] = 0x1] = 'Linear'; }(_0x29719b || (_0x29719b = {})), function(_0x57cda3) { _0x57cda3[_0x57cda3['Center'] = 0x0] = 'Center', _0x57cda3[_0x57cda3['Perpendicular'] = 0x1] = 'Perpendicular'; }(_0x4a8ffa || (_0x4a8ffa = {})); var _0x189e90 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20float\x20degree;\x0avoid\x20main(void)\x0a{\x0avec3\x20color=texture2D(textureSampler,vUV).rgb;\x0afloat\x20luminance=dot(color,vec3(0.3,0.59,0.11));\x0avec3\x20blackAndWhite=vec3(luminance,luminance,luminance);\x0agl_FragColor=vec4(color-((color-blackAndWhite)*degree),1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['blackAndWhitePixelShader'] = _0x189e90; var _0x3105e5 = function(_0x339251) { function _0x6ce5c(_0x31cf79, _0x150631, _0x39b527, _0x154a44, _0x4d03ef, _0x5e6f2b) { var _0x37c109 = _0x339251['call'](this, _0x31cf79, 'blackAndWhite', ['degree'], null, _0x150631, _0x39b527, _0x154a44, _0x4d03ef, _0x5e6f2b) || this; return _0x37c109['degree'] = 0x1, _0x37c109['onApplyObservable']['add'](function(_0x1a9282) { _0x1a9282['setFloat']('degree', _0x37c109['degree']); }), _0x37c109; } return _0x420e5b['d'](_0x6ce5c, _0x339251), _0x6ce5c; }(_0x1f5ab5) , _0x25710c = function() { function _0x4808b7(_0x4c9a39, _0x103f65, _0x27e8da, _0x374259) { this['_name'] = _0x103f65, this['_singleInstance'] = _0x374259 || !0x0, this['_getPostProcesses'] = _0x27e8da, this['_cameras'] = {}, this['_indicesForCamera'] = {}, this['_postProcesses'] = {}; } return Object['defineProperty'](_0x4808b7['prototype'], 'isSupported', { 'get': function() { for (var _0x4cd50b in this['_postProcesses']) if (this['_postProcesses']['hasOwnProperty'](_0x4cd50b)) for (var _0x268b3a = this['_postProcesses'][_0x4cd50b], _0x1f2cfb = 0x0; _0x1f2cfb < _0x268b3a['length']; _0x1f2cfb++) if (!_0x268b3a[_0x1f2cfb]['isSupported']) return !0x1; return !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4808b7['prototype']['_update'] = function() {} , _0x4808b7['prototype']['_attachCameras'] = function(_0x11aaef) { var _0x5ea74e, _0x16b391 = this, _0x5b286a = _0x1eb50e['h']['MakeArray'](_0x11aaef || this['_cameras']); if (_0x5b286a) for (var _0x467944 = 0x0; _0x467944 < _0x5b286a['length']; _0x467944++) { var _0x5b95ad = _0x5b286a[_0x467944] , _0x381461 = _0x5b95ad['name']; if (_0x5ea74e = this['_singleInstance'] ? 0x0 : _0x381461, !this['_postProcesses'][_0x5ea74e]) { var _0x5e0126 = this['_getPostProcesses'](); _0x5e0126 && (this['_postProcesses'][_0x5ea74e] = Array['isArray'](_0x5e0126) ? _0x5e0126 : [_0x5e0126]); } this['_indicesForCamera'][_0x381461] || (this['_indicesForCamera'][_0x381461] = []), this['_postProcesses'][_0x5ea74e]['forEach'](function(_0x1774b9) { var _0x4b1d10 = _0x5b95ad['attachPostProcess'](_0x1774b9); _0x16b391['_indicesForCamera'][_0x381461]['push'](_0x4b1d10); }), this['_cameras'][_0x381461] || (this['_cameras'][_0x381461] = _0x5b95ad); } } , _0x4808b7['prototype']['_detachCameras'] = function(_0x10a660) { var _0x462ded = _0x1eb50e['h']['MakeArray'](_0x10a660 || this['_cameras']); if (_0x462ded) for (var _0x51a9dc = 0x0; _0x51a9dc < _0x462ded['length']; _0x51a9dc++) { var _0x9d6595 = _0x462ded[_0x51a9dc] , _0x3852f1 = _0x9d6595['name'] , _0x32d6ca = this['_postProcesses'][this['_singleInstance'] ? 0x0 : _0x3852f1]; _0x32d6ca && _0x32d6ca['forEach'](function(_0x5b78a8) { _0x9d6595['detachPostProcess'](_0x5b78a8); }), this['_cameras'][_0x3852f1] && (this['_cameras'][_0x3852f1] = null); } } , _0x4808b7['prototype']['_enable'] = function(_0x58c46a) { var _0x1a4d82 = this , _0x19d93c = _0x1eb50e['h']['MakeArray'](_0x58c46a || this['_cameras']); if (_0x19d93c) for (var _0x5cab30 = 0x0; _0x5cab30 < _0x19d93c['length']; _0x5cab30++) for (var _0x2b399f = _0x19d93c[_0x5cab30], _0x1acc57 = _0x2b399f['name'], _0xb7fab0 = 0x0; _0xb7fab0 < this['_indicesForCamera'][_0x1acc57]['length']; _0xb7fab0++) void 0x0 !== _0x2b399f['_postProcesses'][this['_indicesForCamera'][_0x1acc57][_0xb7fab0]] && null !== _0x2b399f['_postProcesses'][this['_indicesForCamera'][_0x1acc57][_0xb7fab0]] || this['_postProcesses'][this['_singleInstance'] ? 0x0 : _0x1acc57]['forEach'](function(_0x57d0d0) { _0x19d93c[_0x5cab30]['attachPostProcess'](_0x57d0d0, _0x1a4d82['_indicesForCamera'][_0x1acc57][_0xb7fab0]); }); } , _0x4808b7['prototype']['_disable'] = function(_0x4a91c9) { var _0x2201cc = _0x1eb50e['h']['MakeArray'](_0x4a91c9 || this['_cameras']); if (_0x2201cc) for (var _0x204d85 = 0x0; _0x204d85 < _0x2201cc['length']; _0x204d85++) { var _0x2e2c00 = _0x2201cc[_0x204d85] , _0x193d23 = _0x2e2c00['name']; this['_postProcesses'][this['_singleInstance'] ? 0x0 : _0x193d23]['forEach'](function(_0x1b4c7a) { _0x2e2c00['detachPostProcess'](_0x1b4c7a); }); } } , _0x4808b7['prototype']['getPostProcesses'] = function(_0x225690) { return this['_singleInstance'] ? this['_postProcesses'][0x0] : _0x225690 ? this['_postProcesses'][_0x225690['name']] : null; } , _0x4808b7; }() , _0x177629 = '#include\x0a\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20float\x20threshold;\x0auniform\x20float\x20exposure;\x0avoid\x20main(void)\x0a{\x0agl_FragColor=texture2D(textureSampler,vUV);\x0afloat\x20luma=getLuminance(gl_FragColor.rgb*exposure);\x0agl_FragColor.rgb=step(threshold,luma)*gl_FragColor.rgb;\x0a}'; _0x3e9e56['a']['ShadersStore']['extractHighlightsPixelShader'] = _0x177629; var _0x376b71 = function(_0x29adab) { function _0x5fe510(_0x270b39, _0x343512, _0x18b64c, _0xf27074, _0x4167d1, _0x26160a, _0x5c8980, _0x56d58c) { void 0x0 === _0x5c8980 && (_0x5c8980 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x56d58c && (_0x56d58c = !0x1); var _0x2be34f = _0x29adab['call'](this, _0x270b39, 'extractHighlights', ['threshold', 'exposure'], null, _0x343512, _0x18b64c, _0xf27074, _0x4167d1, _0x26160a, null, _0x5c8980, void 0x0, null, _0x56d58c) || this; return _0x2be34f['threshold'] = 0.9, _0x2be34f['_exposure'] = 0x1, _0x2be34f['_inputPostProcess'] = null, _0x2be34f['onApplyObservable']['add'](function(_0x32f897) { _0x2be34f['_inputPostProcess'] && _0x32f897['setTextureFromPostProcess']('textureSampler', _0x2be34f['_inputPostProcess']), _0x32f897['setFloat']('threshold', Math['pow'](_0x2be34f['threshold'], _0x47d24f['u'])), _0x32f897['setFloat']('exposure', _0x2be34f['_exposure']); }), _0x2be34f; } return _0x420e5b['d'](_0x5fe510, _0x29adab), _0x5fe510; }(_0x1f5ab5) , _0x176c17 = 'uniform\x20sampler2D\x20textureSampler;\x0auniform\x20sampler2D\x20bloomBlur;\x0avarying\x20vec2\x20vUV;\x0auniform\x20float\x20bloomWeight;\x0avoid\x20main(void)\x0a{\x0agl_FragColor=texture2D(textureSampler,vUV);\x0avec3\x20blurred=texture2D(bloomBlur,vUV).rgb;\x0agl_FragColor.rgb=gl_FragColor.rgb+(blurred.rgb*bloomWeight);\x0a}\x0a'; _0x3e9e56['a']['ShadersStore']['bloomMergePixelShader'] = _0x176c17; var _0x27abd3 = function(_0x3a0aec) { function _0x3e8306(_0x46a91c, _0x21758c, _0x5323cd, _0x5e867f, _0x441717, _0x3bc488, _0x2a0869, _0x59994b, _0xca63b3, _0x3a5e89, _0x5ae9ed) { void 0x0 === _0x3a5e89 && (_0x3a5e89 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x5ae9ed && (_0x5ae9ed = !0x1); var _0x3036bf = _0x3a0aec['call'](this, _0x46a91c, 'bloomMerge', ['bloomWeight'], ['circleOfConfusionSampler', 'blurStep0', 'blurStep1', 'blurStep2', 'bloomBlur'], _0x441717, _0x3bc488, _0x2a0869, _0x59994b, _0xca63b3, null, _0x3a5e89, void 0x0, null, !0x0) || this; return _0x3036bf['weight'] = _0x5e867f, _0x3036bf['onApplyObservable']['add'](function(_0x5f49c4) { _0x5f49c4['setTextureFromPostProcess']('textureSampler', _0x21758c), _0x5f49c4['setTextureFromPostProcessOutput']('bloomBlur', _0x5323cd), _0x5f49c4['setFloat']('bloomWeight', _0x3036bf['weight']); }), _0x5ae9ed || _0x3036bf['updateEffect'](), _0x3036bf; } return _0x420e5b['d'](_0x3e8306, _0x3a0aec), _0x3e8306; }(_0x1f5ab5) , _0x767cfe = function(_0x40a6f5) { function _0x7eadad(_0x1b7471, _0x2366f9, _0x282a6f, _0x289ef8, _0x3014ff, _0x5a0501) { void 0x0 === _0x3014ff && (_0x3014ff = 0x0), void 0x0 === _0x5a0501 && (_0x5a0501 = !0x1); var _0x363589 = _0x40a6f5['call'](this, _0x1b7471['getEngine'](), 'bloom', function() { return _0x363589['_effects']; }, !0x0) || this; return _0x363589['bloomScale'] = _0x2366f9, _0x363589['_effects'] = [], _0x363589['_downscale'] = new _0x376b71('highlights',0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x1b7471['getEngine'](),!0x1,_0x3014ff,_0x5a0501), _0x363589['_blurX'] = new _0x1c8af1('horizontal\x20blur',new _0x47d24f['w'](0x1,0x0),0xa,_0x2366f9,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x1b7471['getEngine'](),!0x1,_0x3014ff,void 0x0,_0x5a0501), _0x363589['_blurX']['alwaysForcePOT'] = !0x0, _0x363589['_blurX']['autoClear'] = !0x1, _0x363589['_blurY'] = new _0x1c8af1('vertical\x20blur',new _0x47d24f['w'](0x0,0x1),0xa,_0x2366f9,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x1b7471['getEngine'](),!0x1,_0x3014ff,void 0x0,_0x5a0501), _0x363589['_blurY']['alwaysForcePOT'] = !0x0, _0x363589['_blurY']['autoClear'] = !0x1, _0x363589['kernel'] = _0x289ef8, _0x363589['_effects'] = [_0x363589['_downscale'], _0x363589['_blurX'], _0x363589['_blurY']], _0x363589['_merge'] = new _0x27abd3('bloomMerge',_0x363589['_downscale'],_0x363589['_blurY'],_0x282a6f,_0x2366f9,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x1b7471['getEngine'](),!0x1,_0x3014ff,_0x5a0501), _0x363589['_merge']['autoClear'] = !0x1, _0x363589['_effects']['push'](_0x363589['_merge']), _0x363589; } return _0x420e5b['d'](_0x7eadad, _0x40a6f5), Object['defineProperty'](_0x7eadad['prototype'], 'threshold', { 'get': function() { return this['_downscale']['threshold']; }, 'set': function(_0x100815) { this['_downscale']['threshold'] = _0x100815; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7eadad['prototype'], 'weight', { 'get': function() { return this['_merge']['weight']; }, 'set': function(_0x4e80f7) { this['_merge']['weight'] = _0x4e80f7; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x7eadad['prototype'], 'kernel', { 'get': function() { return this['_blurX']['kernel'] / this['bloomScale']; }, 'set': function(_0x363969) { this['_blurX']['kernel'] = _0x363969 * this['bloomScale'], this['_blurY']['kernel'] = _0x363969 * this['bloomScale']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x7eadad['prototype']['disposeEffects'] = function(_0x47af9c) { for (var _0x21419f = 0x0; _0x21419f < this['_effects']['length']; _0x21419f++) this['_effects'][_0x21419f]['dispose'](_0x47af9c); } , _0x7eadad['prototype']['_updateEffects'] = function() { for (var _0x27256c = 0x0; _0x27256c < this['_effects']['length']; _0x27256c++) this['_effects'][_0x27256c]['updateEffect'](); } , _0x7eadad['prototype']['_isReady'] = function() { for (var _0x14233b = 0x0; _0x14233b < this['_effects']['length']; _0x14233b++) if (!this['_effects'][_0x14233b]['isReady']()) return !0x1; return !0x0; } , _0x7eadad; }(_0x25710c) , _0x537143 = '\x0auniform\x20sampler2D\x20textureSampler;\x0a\x0auniform\x20float\x20chromatic_aberration;\x0auniform\x20float\x20radialIntensity;\x0auniform\x20vec2\x20direction;\x0auniform\x20vec2\x20centerPosition;\x0auniform\x20float\x20screen_width;\x0auniform\x20float\x20screen_height;\x0a\x0avarying\x20vec2\x20vUV;\x0avoid\x20main(void)\x0a{\x0avec2\x20centered_screen_pos=vec2(vUV.x-centerPosition.x,vUV.y-centerPosition.y);\x0avec2\x20directionOfEffect=direction;\x0aif(directionOfEffect.x\x20==\x200.\x20&&\x20directionOfEffect.y\x20==\x200.){\x0adirectionOfEffect=normalize(centered_screen_pos);\x0a}\x0afloat\x20radius2=centered_screen_pos.x*centered_screen_pos.x\x0a+centered_screen_pos.y*centered_screen_pos.y;\x0afloat\x20radius=sqrt(radius2);\x0avec4\x20original=texture2D(textureSampler,vUV);\x0a\x0avec3\x20ref_indices=vec3(-0.3,0.0,0.3);\x0afloat\x20ref_shiftX=chromatic_aberration*pow(radius,radialIntensity)*directionOfEffect.x/screen_width;\x0afloat\x20ref_shiftY=chromatic_aberration*pow(radius,radialIntensity)*directionOfEffect.y/screen_height;\x0a\x0avec2\x20ref_coords_r=vec2(vUV.x+ref_indices.r*ref_shiftX,vUV.y+ref_indices.r*ref_shiftY*0.5);\x0avec2\x20ref_coords_g=vec2(vUV.x+ref_indices.g*ref_shiftX,vUV.y+ref_indices.g*ref_shiftY*0.5);\x0avec2\x20ref_coords_b=vec2(vUV.x+ref_indices.b*ref_shiftX,vUV.y+ref_indices.b*ref_shiftY*0.5);\x0aoriginal.r=texture2D(textureSampler,ref_coords_r).r;\x0aoriginal.g=texture2D(textureSampler,ref_coords_g).g;\x0aoriginal.b=texture2D(textureSampler,ref_coords_b).b;\x0aoriginal.a=clamp(texture2D(textureSampler,ref_coords_r).a+texture2D(textureSampler,ref_coords_g).a+texture2D(textureSampler,ref_coords_b).a,0.,1.);\x0agl_FragColor=original;\x0a}'; _0x3e9e56['a']['ShadersStore']['chromaticAberrationPixelShader'] = _0x537143; var _0x7d7e15 = function(_0x22dc54) { function _0x57f8ae(_0x22c189, _0x50cfca, _0x2fa0db, _0x3ea57b, _0x56ac1c, _0x2715b3, _0x5e02cf, _0x9d37ad, _0x233232, _0xc60b79) { void 0x0 === _0x233232 && (_0x233232 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0xc60b79 && (_0xc60b79 = !0x1); var _0x5d2537 = _0x22dc54['call'](this, _0x22c189, 'chromaticAberration', ['chromatic_aberration', 'screen_width', 'screen_height', 'direction', 'radialIntensity', 'centerPosition'], [], _0x3ea57b, _0x56ac1c, _0x2715b3, _0x5e02cf, _0x9d37ad, null, _0x233232, void 0x0, null, _0xc60b79) || this; return _0x5d2537['aberrationAmount'] = 0x1e, _0x5d2537['radialIntensity'] = 0x0, _0x5d2537['direction'] = new _0x47d24f['w'](0.707,0.707), _0x5d2537['centerPosition'] = new _0x47d24f['w'](0.5,0.5), _0x5d2537['onApplyObservable']['add'](function(_0x3a77a3) { _0x3a77a3['setFloat']('chromatic_aberration', _0x5d2537['aberrationAmount']), _0x3a77a3['setFloat']('screen_width', _0x50cfca), _0x3a77a3['setFloat']('screen_height', _0x2fa0db), _0x3a77a3['setFloat']('radialIntensity', _0x5d2537['radialIntensity']), _0x3a77a3['setFloat2']('direction', _0x5d2537['direction']['x'], _0x5d2537['direction']['y']), _0x3a77a3['setFloat2']('centerPosition', _0x5d2537['centerPosition']['x'], _0x5d2537['centerPosition']['y']); }), _0x5d2537; } return _0x420e5b['d'](_0x57f8ae, _0x22dc54), _0x57f8ae; }(_0x1f5ab5) , _0x53c92e = '\x0auniform\x20sampler2D\x20depthSampler;\x0a\x0avarying\x20vec2\x20vUV;\x0a\x0auniform\x20vec2\x20cameraMinMaxZ;\x0a\x0auniform\x20float\x20focusDistance;\x0auniform\x20float\x20cocPrecalculation;\x0avoid\x20main(void)\x0a{\x0afloat\x20depth=texture2D(depthSampler,vUV).r;\x0afloat\x20pixelDistance=(cameraMinMaxZ.x+(cameraMinMaxZ.y-cameraMinMaxZ.x)*depth)*1000.0;\x0afloat\x20coc=abs(cocPrecalculation*\x20((focusDistance-pixelDistance)/pixelDistance));\x0acoc=clamp(coc,0.0,1.0);\x0agl_FragColor=vec4(coc,depth,coc,1.0);\x0a}\x0a'; _0x3e9e56['a']['ShadersStore']['circleOfConfusionPixelShader'] = _0x53c92e; var _0x271b18 = function(_0x5aa8ee) { function _0x58c1d0(_0x393de9, _0x327463, _0x3c324e, _0x195553, _0x168631, _0x53f2c7, _0x227a29, _0x3ac2c, _0x1ab3fc) { void 0x0 === _0x3ac2c && (_0x3ac2c = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x1ab3fc && (_0x1ab3fc = !0x1); var _0xbadbd2 = _0x5aa8ee['call'](this, _0x393de9, 'circleOfConfusion', ['cameraMinMaxZ', 'focusDistance', 'cocPrecalculation'], ['depthSampler'], _0x3c324e, _0x195553, _0x168631, _0x53f2c7, _0x227a29, null, _0x3ac2c, void 0x0, null, _0x1ab3fc) || this; return _0xbadbd2['lensSize'] = 0x32, _0xbadbd2['fStop'] = 1.4, _0xbadbd2['focusDistance'] = 0x7d0, _0xbadbd2['focalLength'] = 0x32, _0xbadbd2['_depthTexture'] = null, _0xbadbd2['_depthTexture'] = _0x327463, _0xbadbd2['onApplyObservable']['add'](function(_0x42e9bd) { if (_0xbadbd2['_depthTexture']) { _0x42e9bd['setTexture']('depthSampler', _0xbadbd2['_depthTexture']); var _0x386e7f = _0xbadbd2['lensSize'] / _0xbadbd2['fStop'] * _0xbadbd2['focalLength'] / (_0xbadbd2['focusDistance'] - _0xbadbd2['focalLength']); _0x42e9bd['setFloat']('focusDistance', _0xbadbd2['focusDistance']), _0x42e9bd['setFloat']('cocPrecalculation', _0x386e7f), _0x42e9bd['setFloat2']('cameraMinMaxZ', _0xbadbd2['_depthTexture']['activeCamera']['minZ'], _0xbadbd2['_depthTexture']['activeCamera']['maxZ']); } else _0x3f98cb['a']['Warn']('No\x20depth\x20texture\x20set\x20on\x20CircleOfConfusionPostProcess'); }), _0xbadbd2; } return _0x420e5b['d'](_0x58c1d0, _0x5aa8ee), Object['defineProperty'](_0x58c1d0['prototype'], 'depthTexture', { 'set': function(_0x54e763) { this['_depthTexture'] = _0x54e763; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x58c1d0; }(_0x1f5ab5) , _0x2d8bae = '\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20sampler2D\x20colorTable;\x0a\x0avarying\x20vec2\x20vUV;\x0a\x0aconst\x20float\x20SLICE_COUNT=16.0;\x0a\x0avec4\x20sampleAs3DTexture(sampler2D\x20textureSampler,vec3\x20uv,float\x20width)\x20{\x0afloat\x20sliceSize=1.0/width;\x0afloat\x20slicePixelSize=sliceSize/width;\x0afloat\x20sliceInnerSize=slicePixelSize*(width-1.0);\x0afloat\x20zSlice0=min(floor(uv.z*width),width-1.0);\x0afloat\x20zSlice1=min(zSlice0+1.0,width-1.0);\x0afloat\x20xOffset=slicePixelSize*0.5+uv.x*sliceInnerSize;\x0afloat\x20s0=xOffset+(zSlice0*sliceSize);\x0afloat\x20s1=xOffset+(zSlice1*sliceSize);\x0avec4\x20slice0Color=texture2D(textureSampler,vec2(s0,uv.y));\x0avec4\x20slice1Color=texture2D(textureSampler,vec2(s1,uv.y));\x0afloat\x20zOffset=mod(uv.z*width,1.0);\x0avec4\x20result=mix(slice0Color,slice1Color,zOffset);\x0areturn\x20result;\x0a}\x0avoid\x20main(void)\x0a{\x0avec4\x20screen_color=texture2D(textureSampler,vUV);\x0agl_FragColor=sampleAs3DTexture(colorTable,screen_color.rgb,SLICE_COUNT);\x0a}'; _0x3e9e56['a']['ShadersStore']['colorCorrectionPixelShader'] = _0x2d8bae; var _0x2adb56 = function(_0x1613cb) { function _0x426dd2(_0x169934, _0x483d14, _0x29c985, _0x3c7973, _0x61d98c, _0x567360, _0x4f2df3) { var _0x12bfba = _0x1613cb['call'](this, _0x169934, 'colorCorrection', null, ['colorTable'], _0x29c985, _0x3c7973, _0x61d98c, _0x567360, _0x4f2df3) || this; return _0x12bfba['_colorTableTexture'] = new _0x11d14a['a'](_0x483d14,_0x3c7973['getScene'](),!0x0,!0x1,_0x11d14a['a']['TRILINEAR_SAMPLINGMODE']), _0x12bfba['_colorTableTexture']['anisotropicFilteringLevel'] = 0x1, _0x12bfba['_colorTableTexture']['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x12bfba['_colorTableTexture']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x12bfba['onApply'] = function(_0x3130e3) { _0x3130e3['setTexture']('colorTable', _0x12bfba['_colorTableTexture']); } , _0x12bfba; } return _0x420e5b['d'](_0x426dd2, _0x1613cb), _0x426dd2; }(_0x1f5ab5) , _0x1a91ed = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20vec2\x20screenSize;\x0auniform\x20float\x20kernel[9];\x0avoid\x20main(void)\x0a{\x0avec2\x20onePixel=vec2(1.0,1.0)/screenSize;\x0avec4\x20colorSum\x20=\x0atexture2D(textureSampler,vUV+onePixel*vec2(-1,-1))*kernel[0]\x20+\x0atexture2D(textureSampler,vUV+onePixel*vec2(0,-1))*kernel[1]\x20+\x0atexture2D(textureSampler,vUV+onePixel*vec2(1,-1))*kernel[2]\x20+\x0atexture2D(textureSampler,vUV+onePixel*vec2(-1,0))*kernel[3]\x20+\x0atexture2D(textureSampler,vUV+onePixel*vec2(0,0))*kernel[4]\x20+\x0atexture2D(textureSampler,vUV+onePixel*vec2(1,0))*kernel[5]\x20+\x0atexture2D(textureSampler,vUV+onePixel*vec2(-1,1))*kernel[6]\x20+\x0atexture2D(textureSampler,vUV+onePixel*vec2(0,1))*kernel[7]\x20+\x0atexture2D(textureSampler,vUV+onePixel*vec2(1,1))*kernel[8];\x0afloat\x20kernelWeight\x20=\x0akernel[0]\x20+\x0akernel[1]\x20+\x0akernel[2]\x20+\x0akernel[3]\x20+\x0akernel[4]\x20+\x0akernel[5]\x20+\x0akernel[6]\x20+\x0akernel[7]\x20+\x0akernel[8];\x0aif\x20(kernelWeight<=0.0)\x20{\x0akernelWeight=1.0;\x0a}\x0agl_FragColor=vec4((colorSum/kernelWeight).rgb,1);\x0a}'; _0x3e9e56['a']['ShadersStore']['convolutionPixelShader'] = _0x1a91ed; var _0x1a6397 = function(_0x506b44) { function _0x4c4691(_0x4d12ab, _0x28fc01, _0x5c55df, _0x3bdca8, _0x3230e7, _0x3a8eb4, _0x27cd52, _0x111e87) { void 0x0 === _0x111e87 && (_0x111e87 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']); var _0x14ca39 = _0x506b44['call'](this, _0x4d12ab, 'convolution', ['kernel', 'screenSize'], null, _0x5c55df, _0x3bdca8, _0x3230e7, _0x3a8eb4, _0x27cd52, null, _0x111e87) || this; return _0x14ca39['kernel'] = _0x28fc01, _0x14ca39['onApply'] = function(_0x4bc73d) { _0x4bc73d['setFloat2']('screenSize', _0x14ca39['width'], _0x14ca39['height']), _0x4bc73d['setArray']('kernel', _0x14ca39['kernel']); } , _0x14ca39; } return _0x420e5b['d'](_0x4c4691, _0x506b44), _0x4c4691['EdgeDetect0Kernel'] = [0x1, 0x0, -0x1, 0x0, 0x0, 0x0, -0x1, 0x0, 0x1], _0x4c4691['EdgeDetect1Kernel'] = [0x0, 0x1, 0x0, 0x1, -0x4, 0x1, 0x0, 0x1, 0x0], _0x4c4691['EdgeDetect2Kernel'] = [-0x1, -0x1, -0x1, -0x1, 0x8, -0x1, -0x1, -0x1, -0x1], _0x4c4691['SharpenKernel'] = [0x0, -0x1, 0x0, -0x1, 0x5, -0x1, 0x0, -0x1, 0x0], _0x4c4691['EmbossKernel'] = [-0x2, -0x1, 0x0, -0x1, 0x1, 0x1, 0x0, 0x1, 0x2], _0x4c4691['GaussianKernel'] = [0x0, 0x1, 0x0, 0x1, 0x1, 0x1, 0x0, 0x1, 0x0], _0x4c4691; }(_0x1f5ab5) , _0x53d1cb = function(_0x1d62eb) { function _0x2d363b(_0xc06f43, _0x5037e5, _0x89b8f7, _0x24443c, _0x1f9afe, _0x16ea51, _0x3c66b2, _0x617ca, _0x5d0575, _0x10b1bf, _0x246093, _0x4485d7, _0x13ec74) { void 0x0 === _0x617ca && (_0x617ca = null), void 0x0 === _0x5d0575 && (_0x5d0575 = _0x11d14a['a']['BILINEAR_SAMPLINGMODE']), void 0x0 === _0x4485d7 && (_0x4485d7 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x13ec74 && (_0x13ec74 = !0x1); var _0x3da902 = _0x1d62eb['call'](this, _0xc06f43, _0x89b8f7, _0x24443c, _0x1f9afe, _0x16ea51, _0x5d0575 = _0x24e342['a']['TEXTURE_BILINEAR_SAMPLINGMODE'], _0x10b1bf, _0x246093, _0x4485d7 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'], '#define\x20DOF\x201\x0d\x0a', _0x13ec74) || this; return _0x3da902['direction'] = _0x89b8f7, _0x3da902['onApplyObservable']['add'](function(_0x56da48) { null != _0x617ca && _0x56da48['setTextureFromPostProcess']('textureSampler', _0x617ca), _0x56da48['setTextureFromPostProcessOutput']('circleOfConfusionSampler', _0x3c66b2), _0x5037e5['activeCamera'] && _0x56da48['setFloat2']('cameraMinMaxZ', _0x5037e5['activeCamera']['minZ'], _0x5037e5['activeCamera']['maxZ']); }), _0x3da902; } return _0x420e5b['d'](_0x2d363b, _0x1d62eb), _0x2d363b; }(_0x1c8af1) , _0x42d966 = 'uniform\x20sampler2D\x20textureSampler;\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20circleOfConfusionSampler;\x0auniform\x20sampler2D\x20blurStep0;\x0a#if\x20BLUR_LEVEL>0\x0auniform\x20sampler2D\x20blurStep1;\x0a#endif\x0a#if\x20BLUR_LEVEL>1\x0auniform\x20sampler2D\x20blurStep2;\x0a#endif\x0avoid\x20main(void)\x0a{\x0afloat\x20coc=texture2D(circleOfConfusionSampler,vUV).r;\x0a#if\x20BLUR_LEVEL\x20==\x200\x0avec4\x20original=texture2D(textureSampler,vUV);\x0avec4\x20blurred0=texture2D(blurStep0,vUV);\x0agl_FragColor=mix(original,blurred0,coc);\x0a#endif\x0a#if\x20BLUR_LEVEL\x20==\x201\x0aif(coc<0.5){\x0avec4\x20original=texture2D(textureSampler,vUV);\x0avec4\x20blurred1=texture2D(blurStep1,vUV);\x0agl_FragColor=mix(original,blurred1,coc/0.5);\x0a}else{\x0avec4\x20blurred0=texture2D(blurStep0,vUV);\x0avec4\x20blurred1=texture2D(blurStep1,vUV);\x0agl_FragColor=mix(blurred1,blurred0,(coc-0.5)/0.5);\x0a}\x0a#endif\x0a#if\x20BLUR_LEVEL\x20==\x202\x0aif(coc<0.33){\x0avec4\x20original=texture2D(textureSampler,vUV);\x0avec4\x20blurred2=texture2D(blurStep2,vUV);\x0agl_FragColor=mix(original,blurred2,coc/0.33);\x0a}else\x20if(coc<0.66){\x0avec4\x20blurred1=texture2D(blurStep1,vUV);\x0avec4\x20blurred2=texture2D(blurStep2,vUV);\x0agl_FragColor=mix(blurred2,blurred1,(coc-0.33)/0.33);\x0a}else{\x0avec4\x20blurred0=texture2D(blurStep0,vUV);\x0avec4\x20blurred1=texture2D(blurStep1,vUV);\x0agl_FragColor=mix(blurred1,blurred0,(coc-0.66)/0.34);\x0a}\x0a#endif\x0a}\x0a'; _0x3e9e56['a']['ShadersStore']['depthOfFieldMergePixelShader'] = _0x42d966; var _0x1e3a5a, _0x3f918f = function() { return function() {} ; }(), _0x1a0306 = function(_0x1be0f2) { function _0x2e2a90(_0x17d828, _0x237d1b, _0x29cc54, _0x516a5e, _0x45616a, _0x4ab580, _0x49f832, _0x2b4318, _0x5445be, _0x3e193d, _0x42ce5e) { void 0x0 === _0x3e193d && (_0x3e193d = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x42ce5e && (_0x42ce5e = !0x1); var _0x56d568 = _0x1be0f2['call'](this, _0x17d828, 'depthOfFieldMerge', [], ['circleOfConfusionSampler', 'blurStep0', 'blurStep1', 'blurStep2'], _0x45616a, _0x4ab580, _0x49f832, _0x2b4318, _0x5445be, null, _0x3e193d, void 0x0, null, !0x0) || this; return _0x56d568['blurSteps'] = _0x516a5e, _0x56d568['onApplyObservable']['add'](function(_0x3912db) { _0x3912db['setTextureFromPostProcess']('textureSampler', _0x237d1b), _0x3912db['setTextureFromPostProcessOutput']('circleOfConfusionSampler', _0x29cc54), _0x516a5e['forEach'](function(_0x2e86e5, _0x4c3293) { _0x3912db['setTextureFromPostProcessOutput']('blurStep' + (_0x516a5e['length'] - _0x4c3293 - 0x1), _0x2e86e5); }); }), _0x42ce5e || _0x56d568['updateEffect'](), _0x56d568; } return _0x420e5b['d'](_0x2e2a90, _0x1be0f2), _0x2e2a90['prototype']['updateEffect'] = function(_0xabc14c, _0x363d54, _0x480078, _0x402b80, _0x54ed1f, _0x26ce00) { void 0x0 === _0xabc14c && (_0xabc14c = null), void 0x0 === _0x363d54 && (_0x363d54 = null), void 0x0 === _0x480078 && (_0x480078 = null), _0xabc14c || (_0xabc14c = '', _0xabc14c += '#define\x20BLUR_LEVEL\x20' + (this['blurSteps']['length'] - 0x1) + '\x0a'), _0x1be0f2['prototype']['updateEffect']['call'](this, _0xabc14c, _0x363d54, _0x480078, _0x402b80, _0x54ed1f, _0x26ce00); } , _0x2e2a90; }(_0x1f5ab5); !function(_0x3023dd) { _0x3023dd[_0x3023dd['Low'] = 0x0] = 'Low', _0x3023dd[_0x3023dd['Medium'] = 0x1] = 'Medium', _0x3023dd[_0x3023dd['High'] = 0x2] = 'High'; }(_0x1e3a5a || (_0x1e3a5a = {})); var _0x3fc7d6 = function(_0x25b67e) { function _0x3d7f96(_0x47d622, _0x36db76, _0x4d2cda, _0x4114de, _0x1d7445) { void 0x0 === _0x4d2cda && (_0x4d2cda = _0x1e3a5a['Low']), void 0x0 === _0x4114de && (_0x4114de = 0x0), void 0x0 === _0x1d7445 && (_0x1d7445 = !0x1); var _0x2bfc9b = _0x25b67e['call'](this, _0x47d622['getEngine'](), 'depth\x20of\x20field', function() { return _0x2bfc9b['_effects']; }, !0x0) || this; _0x2bfc9b['_effects'] = [], _0x2bfc9b['_circleOfConfusion'] = new _0x271b18('circleOfConfusion',_0x36db76,0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x47d622['getEngine'](),!0x1,_0x4114de,_0x1d7445), _0x2bfc9b['_depthOfFieldBlurY'] = [], _0x2bfc9b['_depthOfFieldBlurX'] = []; var _0xbc86d8 = 0x1 , _0x17aa33 = 0xf; switch (_0x4d2cda) { case _0x1e3a5a['High']: _0xbc86d8 = 0x3, _0x17aa33 = 0x33; break; case _0x1e3a5a['Medium']: _0xbc86d8 = 0x2, _0x17aa33 = 0x1f; break; default: _0x17aa33 = 0xf, _0xbc86d8 = 0x1; } for (var _0x352461 = _0x17aa33 / Math['pow'](0x2, _0xbc86d8 - 0x1), _0xb5494b = 0x1, _0x4d47a2 = 0x0; _0x4d47a2 < _0xbc86d8; _0x4d47a2++) { var _0x309dbd = new _0x53d1cb('verticle\x20blur',_0x47d622,new _0x47d24f['w'](0x0,0x1),_0x352461,_0xb5494b,null,_0x2bfc9b['_circleOfConfusion'],0x0 == _0x4d47a2 ? _0x2bfc9b['_circleOfConfusion'] : null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x47d622['getEngine'](),!0x1,_0x4114de,_0x1d7445); _0x309dbd['autoClear'] = !0x1, _0xb5494b = 0.75 / Math['pow'](0x2, _0x4d47a2); var _0x294f5c = new _0x53d1cb('horizontal\x20blur',_0x47d622,new _0x47d24f['w'](0x1,0x0),_0x352461,_0xb5494b,null,_0x2bfc9b['_circleOfConfusion'],null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x47d622['getEngine'](),!0x1,_0x4114de,_0x1d7445); _0x294f5c['autoClear'] = !0x1, _0x2bfc9b['_depthOfFieldBlurY']['push'](_0x309dbd), _0x2bfc9b['_depthOfFieldBlurX']['push'](_0x294f5c); } _0x2bfc9b['_effects'] = [_0x2bfc9b['_circleOfConfusion']]; for (_0x4d47a2 = 0x0; _0x4d47a2 < _0x2bfc9b['_depthOfFieldBlurX']['length']; _0x4d47a2++) _0x2bfc9b['_effects']['push'](_0x2bfc9b['_depthOfFieldBlurY'][_0x4d47a2]), _0x2bfc9b['_effects']['push'](_0x2bfc9b['_depthOfFieldBlurX'][_0x4d47a2]); return _0x2bfc9b['_dofMerge'] = new _0x1a0306('dofMerge',_0x2bfc9b['_circleOfConfusion'],_0x2bfc9b['_circleOfConfusion'],_0x2bfc9b['_depthOfFieldBlurX'],_0xb5494b,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x47d622['getEngine'](),!0x1,_0x4114de,_0x1d7445), _0x2bfc9b['_dofMerge']['autoClear'] = !0x1, _0x2bfc9b['_effects']['push'](_0x2bfc9b['_dofMerge']), _0x2bfc9b; } return _0x420e5b['d'](_0x3d7f96, _0x25b67e), Object['defineProperty'](_0x3d7f96['prototype'], 'focalLength', { 'get': function() { return this['_circleOfConfusion']['focalLength']; }, 'set': function(_0x48c5b6) { this['_circleOfConfusion']['focalLength'] = _0x48c5b6; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3d7f96['prototype'], 'fStop', { 'get': function() { return this['_circleOfConfusion']['fStop']; }, 'set': function(_0x5e3e3a) { this['_circleOfConfusion']['fStop'] = _0x5e3e3a; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3d7f96['prototype'], 'focusDistance', { 'get': function() { return this['_circleOfConfusion']['focusDistance']; }, 'set': function(_0x1d8983) { this['_circleOfConfusion']['focusDistance'] = _0x1d8983; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x3d7f96['prototype'], 'lensSize', { 'get': function() { return this['_circleOfConfusion']['lensSize']; }, 'set': function(_0x400f41) { this['_circleOfConfusion']['lensSize'] = _0x400f41; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3d7f96['prototype']['getClassName'] = function() { return 'DepthOfFieldEffect'; } , Object['defineProperty'](_0x3d7f96['prototype'], 'depthTexture', { 'set': function(_0x3c938c) { this['_circleOfConfusion']['depthTexture'] = _0x3c938c; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x3d7f96['prototype']['disposeEffects'] = function(_0xb9f644) { for (var _0xea7927 = 0x0; _0xea7927 < this['_effects']['length']; _0xea7927++) this['_effects'][_0xea7927]['dispose'](_0xb9f644); } , _0x3d7f96['prototype']['_updateEffects'] = function() { for (var _0x5d32fc = 0x0; _0x5d32fc < this['_effects']['length']; _0x5d32fc++) this['_effects'][_0x5d32fc]['updateEffect'](); } , _0x3d7f96['prototype']['_isReady'] = function() { for (var _0x270276 = 0x0; _0x270276 < this['_effects']['length']; _0x270276++) if (!this['_effects'][_0x270276]['isReady']()) return !0x1; return !0x0; } , _0x3d7f96; }(_0x25710c) , _0x4e6f93 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20sampler2D\x20passSampler;\x0avoid\x20main(void)\x0a{\x0agl_FragColor=texture2D(passSampler,vUV);\x0a}'; _0x3e9e56['a']['ShadersStore']['displayPassPixelShader'] = _0x4e6f93; var _0x4944d7 = function(_0xb6d42f) { function _0x49f086(_0x27a55e, _0x3afa79, _0x5d027e, _0x44b611, _0x466bf9, _0x1f15e6) { return _0xb6d42f['call'](this, _0x27a55e, 'displayPass', ['passSampler'], ['passSampler'], _0x3afa79, _0x5d027e, _0x44b611, _0x466bf9, _0x1f15e6) || this; } return _0x420e5b['d'](_0x49f086, _0xb6d42f), _0x49f086; }(_0x1f5ab5) , _0x1e7bed = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20mat4\x20kernelMatrix;\x0avoid\x20main(void)\x0a{\x0avec3\x20baseColor=texture2D(textureSampler,vUV).rgb;\x0avec3\x20updatedColor=(kernelMatrix*vec4(baseColor,1.0)).rgb;\x0agl_FragColor=vec4(updatedColor,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['filterPixelShader'] = _0x1e7bed; var _0x518417 = function(_0x2bb5bf) { function _0x2cf02d(_0x319f47, _0x3ce616, _0x4b8c72, _0x3eb932, _0x3282df, _0x30135c, _0x4923a) { var _0xcac4ab = _0x2bb5bf['call'](this, _0x319f47, 'filter', ['kernelMatrix'], null, _0x4b8c72, _0x3eb932, _0x3282df, _0x30135c, _0x4923a) || this; return _0xcac4ab['kernelMatrix'] = _0x3ce616, _0xcac4ab['onApply'] = function(_0x47e316) { _0x47e316['setMatrix']('kernelMatrix', _0xcac4ab['kernelMatrix']); } , _0xcac4ab; } return _0x420e5b['d'](_0x2cf02d, _0x2bb5bf), _0x2cf02d; }(_0x1f5ab5) , _0x2c7855 = 'uniform\x20sampler2D\x20textureSampler;\x0auniform\x20vec2\x20texelSize;\x0avarying\x20vec2\x20vUV;\x0avarying\x20vec2\x20sampleCoordS;\x0avarying\x20vec2\x20sampleCoordE;\x0avarying\x20vec2\x20sampleCoordN;\x0avarying\x20vec2\x20sampleCoordW;\x0avarying\x20vec2\x20sampleCoordNW;\x0avarying\x20vec2\x20sampleCoordSE;\x0avarying\x20vec2\x20sampleCoordNE;\x0avarying\x20vec2\x20sampleCoordSW;\x0aconst\x20float\x20fxaaQualitySubpix=1.0;\x0aconst\x20float\x20fxaaQualityEdgeThreshold=0.166;\x0aconst\x20float\x20fxaaQualityEdgeThresholdMin=0.0833;\x0aconst\x20vec3\x20kLumaCoefficients=vec3(0.2126,0.7152,0.0722);\x0a#define\x20FxaaLuma(rgba)\x20dot(rgba.rgb,kLumaCoefficients)\x0avoid\x20main(){\x0avec2\x20posM;\x0aposM.x=vUV.x;\x0aposM.y=vUV.y;\x0avec4\x20rgbyM=texture2D(textureSampler,vUV,0.0);\x0afloat\x20lumaM=FxaaLuma(rgbyM);\x0afloat\x20lumaS=FxaaLuma(texture2D(textureSampler,sampleCoordS,0.0));\x0afloat\x20lumaE=FxaaLuma(texture2D(textureSampler,sampleCoordE,0.0));\x0afloat\x20lumaN=FxaaLuma(texture2D(textureSampler,sampleCoordN,0.0));\x0afloat\x20lumaW=FxaaLuma(texture2D(textureSampler,sampleCoordW,0.0));\x0afloat\x20maxSM=max(lumaS,lumaM);\x0afloat\x20minSM=min(lumaS,lumaM);\x0afloat\x20maxESM=max(lumaE,maxSM);\x0afloat\x20minESM=min(lumaE,minSM);\x0afloat\x20maxWN=max(lumaN,lumaW);\x0afloat\x20minWN=min(lumaN,lumaW);\x0afloat\x20rangeMax=max(maxWN,maxESM);\x0afloat\x20rangeMin=min(minWN,minESM);\x0afloat\x20rangeMaxScaled=rangeMax*fxaaQualityEdgeThreshold;\x0afloat\x20range=rangeMax-rangeMin;\x0afloat\x20rangeMaxClamped=max(fxaaQualityEdgeThresholdMin,rangeMaxScaled);\x0a#ifndef\x20MALI\x0aif(range=edgeVert;\x0afloat\x20subpixA=subpixNSWE*2.0+subpixNWSWNESE;\x0aif\x20(!horzSpan)\x0a{\x0alumaN=lumaW;\x0a}\x0aif\x20(!horzSpan)\x0a{\x0alumaS=lumaE;\x0a}\x0aif\x20(horzSpan)\x0a{\x0alengthSign=texelSize.y;\x0a}\x0afloat\x20subpixB=(subpixA*(1.0/12.0))-lumaM;\x0afloat\x20gradientN=lumaN-lumaM;\x0afloat\x20gradientS=lumaS-lumaM;\x0afloat\x20lumaNN=lumaN+lumaM;\x0afloat\x20lumaSS=lumaS+lumaM;\x0abool\x20pairN=abs(gradientN)>=abs(gradientS);\x0afloat\x20gradient=max(abs(gradientN),abs(gradientS));\x0aif\x20(pairN)\x0a{\x0alengthSign=-lengthSign;\x0a}\x0afloat\x20subpixC=clamp(abs(subpixB)*subpixRcpRange,0.0,1.0);\x0avec2\x20posB;\x0aposB.x=posM.x;\x0aposB.y=posM.y;\x0avec2\x20offNP;\x0aoffNP.x=(!horzSpan)\x20?\x200.0\x20:\x20texelSize.x;\x0aoffNP.y=(horzSpan)\x20?\x200.0\x20:\x20texelSize.y;\x0aif\x20(!horzSpan)\x0a{\x0aposB.x+=lengthSign*0.5;\x0a}\x0aif\x20(horzSpan)\x0a{\x0aposB.y+=lengthSign*0.5;\x0a}\x0avec2\x20posN;\x0aposN.x=posB.x-offNP.x*1.5;\x0aposN.y=posB.y-offNP.y*1.5;\x0avec2\x20posP;\x0aposP.x=posB.x+offNP.x*1.5;\x0aposP.y=posB.y+offNP.y*1.5;\x0afloat\x20subpixD=((-2.0)*subpixC)+3.0;\x0afloat\x20lumaEndN=FxaaLuma(texture2D(textureSampler,posN,0.0));\x0afloat\x20subpixE=subpixC*subpixC;\x0afloat\x20lumaEndP=FxaaLuma(texture2D(textureSampler,posP,0.0));\x0aif\x20(!pairN)\x0a{\x0alumaNN=lumaSS;\x0a}\x0afloat\x20gradientScaled=gradient*1.0/4.0;\x0afloat\x20lumaMM=lumaM-lumaNN*0.5;\x0afloat\x20subpixF=subpixD*subpixE;\x0abool\x20lumaMLTZero=lumaMM<0.0;\x0alumaEndN-=lumaNN*0.5;\x0alumaEndP-=lumaNN*0.5;\x0abool\x20doneN=abs(lumaEndN)>=gradientScaled;\x0abool\x20doneP=abs(lumaEndP)>=gradientScaled;\x0aif\x20(!doneN)\x0a{\x0aposN.x-=offNP.x*3.0;\x0a}\x0aif\x20(!doneN)\x0a{\x0aposN.y-=offNP.y*3.0;\x0a}\x0abool\x20doneNP=(!doneN)\x20||\x20(!doneP);\x0aif\x20(!doneP)\x0a{\x0aposP.x+=offNP.x*3.0;\x0a}\x0aif\x20(!doneP)\x0a{\x0aposP.y+=offNP.y*3.0;\x0a}\x0aif\x20(doneNP)\x0a{\x0aif\x20(!doneN)\x20lumaEndN=FxaaLuma(texture2D(textureSampler,posN.xy,0.0));\x0aif\x20(!doneP)\x20lumaEndP=FxaaLuma(texture2D(textureSampler,posP.xy,0.0));\x0aif\x20(!doneN)\x20lumaEndN=lumaEndN-lumaNN*0.5;\x0aif\x20(!doneP)\x20lumaEndP=lumaEndP-lumaNN*0.5;\x0adoneN=abs(lumaEndN)>=gradientScaled;\x0adoneP=abs(lumaEndP)>=gradientScaled;\x0aif\x20(!doneN)\x20posN.x-=offNP.x*12.0;\x0aif\x20(!doneN)\x20posN.y-=offNP.y*12.0;\x0adoneNP=(!doneN)\x20||\x20(!doneP);\x0aif\x20(!doneP)\x20posP.x+=offNP.x*12.0;\x0aif\x20(!doneP)\x20posP.y+=offNP.y*12.0;\x0a}\x0afloat\x20dstN=posM.x-posN.x;\x0afloat\x20dstP=posP.x-posM.x;\x0aif\x20(!horzSpan)\x0a{\x0adstN=posM.y-posN.y;\x0a}\x0aif\x20(!horzSpan)\x0a{\x0adstP=posP.y-posM.y;\x0a}\x0abool\x20goodSpanN=(lumaEndN<0.0)\x20!=\x20lumaMLTZero;\x0afloat\x20spanLength=(dstP+dstN);\x0abool\x20goodSpanP=(lumaEndP<0.0)\x20!=\x20lumaMLTZero;\x0afloat\x20spanLengthRcp=1.0/spanLength;\x0abool\x20directionN=dstN -0x1 ? '#define\x20MALI\x201\x0a' : null; } , _0x14d130; }(_0x1f5ab5) , _0x226477 = '#include\x0a\x0auniform\x20sampler2D\x20textureSampler;\x0a\x0auniform\x20float\x20intensity;\x0auniform\x20float\x20animatedSeed;\x0a\x0avarying\x20vec2\x20vUV;\x0avoid\x20main(void)\x0a{\x0agl_FragColor=texture2D(textureSampler,vUV);\x0avec2\x20seed=vUV*(animatedSeed);\x0afloat\x20grain=dither(seed,intensity);\x0a\x0afloat\x20lum=getLuminance(gl_FragColor.rgb);\x0afloat\x20grainAmount=(cos(-PI+(lum*PI*2.))+1.)/2.;\x0agl_FragColor.rgb+=grain*grainAmount;\x0agl_FragColor.rgb=max(gl_FragColor.rgb,0.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['grainPixelShader'] = _0x226477; var _0x1a14de = function(_0x6ed79c) { function _0x4873a8(_0x49b61d, _0x3bf588, _0x4224fc, _0x2d527a, _0x536eda, _0x49d40e, _0x32e84a, _0x50b6cc) { void 0x0 === _0x32e84a && (_0x32e84a = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x50b6cc && (_0x50b6cc = !0x1); var _0x1945f3 = _0x6ed79c['call'](this, _0x49b61d, 'grain', ['intensity', 'animatedSeed'], [], _0x3bf588, _0x4224fc, _0x2d527a, _0x536eda, _0x49d40e, null, _0x32e84a, void 0x0, null, _0x50b6cc) || this; return _0x1945f3['intensity'] = 0x1e, _0x1945f3['animated'] = !0x1, _0x1945f3['onApplyObservable']['add'](function(_0x358aec) { _0x358aec['setFloat']('intensity', _0x1945f3['intensity']), _0x358aec['setFloat']('animatedSeed', _0x1945f3['animated'] ? Math['random']() + 0x1 : 0x1); }), _0x1945f3; } return _0x420e5b['d'](_0x4873a8, _0x6ed79c), _0x4873a8; }(_0x1f5ab5) , _0x1eb0c5 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0aconst\x20vec3\x20RGBLuminanceCoefficients=vec3(0.2126,0.7152,0.0722);\x0avoid\x20main(void)\x0a{\x0avec4\x20tex=texture2D(textureSampler,vUV);\x0avec3\x20c=tex.rgb;\x0afloat\x20luma=dot(c.rgb,RGBLuminanceCoefficients);\x0a\x0a\x0agl_FragColor=vec4(pow(c,vec3(25.0-luma*15.0)),tex.a);\x0a}'; _0x3e9e56['a']['ShadersStore']['highlightsPixelShader'] = _0x1eb0c5; var _0x265af3 = function(_0x1dedbe) { function _0x150594(_0x52c3e8, _0x40230a, _0x3e7e5b, _0x18060c, _0x54bf47, _0x4892c9, _0x208122) { return void 0x0 === _0x208122 && (_0x208122 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), _0x1dedbe['call'](this, _0x52c3e8, 'highlights', null, null, _0x40230a, _0x3e7e5b, _0x18060c, _0x54bf47, _0x4892c9, null, _0x208122) || this; } return _0x420e5b['d'](_0x150594, _0x1dedbe), _0x150594; }(_0x1f5ab5); _0x3e9e56['a']['IncludesShadersStore']['mrtFragmentDeclaration'] = '#if\x20__VERSION__>=200\x0alayout(location=0)\x20out\x20vec4\x20glFragData[{X}];\x0a#endif\x0a'; var _0x5e270f = '#extension\x20GL_EXT_draw_buffers\x20:\x20require\x0aprecision\x20highp\x20float;\x0aprecision\x20highp\x20int;\x0avarying\x20vec3\x20vNormalV;\x0avarying\x20vec4\x20vViewPos;\x0a#ifdef\x20POSITION\x0avarying\x20vec3\x20vPosition;\x0a#endif\x0a#ifdef\x20VELOCITY\x0avarying\x20vec4\x20vCurrentPosition;\x0avarying\x20vec4\x20vPreviousPosition;\x0a#endif\x0a#ifdef\x20ALPHATEST\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20diffuseSampler;\x0a#endif\x0a#include[RENDER_TARGET_COUNT]\x0avoid\x20main()\x20{\x0a#ifdef\x20ALPHATEST\x0aif\x20(texture2D(diffuseSampler,vUV).a<0.4)\x0adiscard;\x0a#endif\x0agl_FragData[0]=vec4(vViewPos.z/vViewPos.w,0.0,0.0,1.0);\x0a\x0agl_FragData[1]=vec4(normalize(vNormalV),1.0);\x0a\x0a#ifdef\x20POSITION\x0agl_FragData[POSITION_INDEX]=vec4(vPosition,1.0);\x0a#endif\x0a#ifdef\x20VELOCITY\x0avec2\x20a=(vCurrentPosition.xy/vCurrentPosition.w)*0.5+0.5;\x0avec2\x20b=(vPreviousPosition.xy/vPreviousPosition.w)*0.5+0.5;\x0avec2\x20velocity=abs(a-b);\x0avelocity=vec2(pow(velocity.x,1.0/3.0),pow(velocity.y,1.0/3.0))*sign(a-b)*0.5+0.5;\x0agl_FragData[VELOCITY_INDEX]=vec4(velocity,0.0,1.0);\x0a#endif\x0a}'; _0x3e9e56['a']['ShadersStore']['geometryPixelShader'] = _0x5e270f; var _0x37399e = 'precision\x20highp\x20float;\x0aprecision\x20highp\x20int;\x0a#include\x0a#include\x0aattribute\x20vec3\x20position;\x0aattribute\x20vec3\x20normal;\x0a#if\x20defined(ALPHATEST)\x20||\x20defined(NEED_UV)\x0avarying\x20vec2\x20vUV;\x0auniform\x20mat4\x20diffuseMatrix;\x0a#ifdef\x20UV1\x0aattribute\x20vec2\x20uv;\x0a#endif\x0a#ifdef\x20UV2\x0aattribute\x20vec2\x20uv2;\x0a#endif\x0a#endif\x0a\x0auniform\x20mat4\x20viewProjection;\x0auniform\x20mat4\x20view;\x0avarying\x20vec3\x20vNormalV;\x0avarying\x20vec4\x20vViewPos;\x0a#ifdef\x20POSITION\x0avarying\x20vec3\x20vPosition;\x0a#endif\x0a#ifdef\x20VELOCITY\x0auniform\x20mat4\x20previousWorld;\x0auniform\x20mat4\x20previousViewProjection;\x0a#ifdef\x20BONES_VELOCITY_ENABLED\x0a#if\x20NUM_BONE_INFLUENCERS>0\x0auniform\x20mat4\x20mPreviousBones[BonesPerMesh];\x0a#endif\x0a#endif\x0avarying\x20vec4\x20vCurrentPosition;\x0avarying\x20vec4\x20vPreviousPosition;\x0a#endif\x0avoid\x20main(void)\x0a{\x0a#include\x0a#if\x20defined(VELOCITY)\x20&&\x20!defined(BONES_VELOCITY_ENABLED)\x0a\x0avCurrentPosition=viewProjection*finalWorld*vec4(position,1.0);\x0avPreviousPosition=previousViewProjection*previousWorld*vec4(position,1.0);\x0a#endif\x0a#include\x0avec4\x20pos=vec4(finalWorld*vec4(position,1.0));\x0avNormalV=normalize(vec3((view*finalWorld)*vec4(normal,0.0)));\x0avViewPos=view*pos;\x0a#if\x20defined(VELOCITY)\x20&&\x20defined(BONES_VELOCITY_ENABLED)\x0avCurrentPosition=viewProjection*finalWorld*vec4(position,1.0);\x0a#if\x20NUM_BONE_INFLUENCERS>0\x0amat4\x20previousInfluence;\x0apreviousInfluence=mPreviousBones[int(matricesIndices[0])]*matricesWeights[0];\x0a#if\x20NUM_BONE_INFLUENCERS>1\x0apreviousInfluence+=mPreviousBones[int(matricesIndices[1])]*matricesWeights[1];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>2\x0apreviousInfluence+=mPreviousBones[int(matricesIndices[2])]*matricesWeights[2];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>3\x0apreviousInfluence+=mPreviousBones[int(matricesIndices[3])]*matricesWeights[3];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>4\x0apreviousInfluence+=mPreviousBones[int(matricesIndicesExtra[0])]*matricesWeightsExtra[0];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>5\x0apreviousInfluence+=mPreviousBones[int(matricesIndicesExtra[1])]*matricesWeightsExtra[1];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>6\x0apreviousInfluence+=mPreviousBones[int(matricesIndicesExtra[2])]*matricesWeightsExtra[2];\x0a#endif\x0a#if\x20NUM_BONE_INFLUENCERS>7\x0apreviousInfluence+=mPreviousBones[int(matricesIndicesExtra[3])]*matricesWeightsExtra[3];\x0a#endif\x0avPreviousPosition=previousViewProjection*previousWorld*previousInfluence*vec4(position,1.0);\x0a#else\x0avPreviousPosition=previousViewProjection*previousWorld*vec4(position,1.0);\x0a#endif\x0a#endif\x0a#ifdef\x20POSITION\x0avPosition=pos.xyz/pos.w;\x0a#endif\x0agl_Position=viewProjection*finalWorld*vec4(position,1.0);\x0a#if\x20defined(ALPHATEST)\x20||\x20defined(BASIC_RENDER)\x0a#ifdef\x20UV1\x0avUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));\x0a#endif\x0a#ifdef\x20UV2\x0avUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));\x0a#endif\x0a#endif\x0a}'; _0x3e9e56['a']['ShadersStore']['geometryVertexShader'] = _0x37399e; var _0x385f61 = function() { function _0x5451e0(_0x1f6d02, _0x4ef15c) { void 0x0 === _0x4ef15c && (_0x4ef15c = 0x1), this['_previousTransformationMatrices'] = {}, this['_previousBonesTransformationMatrices'] = {}, this['excludedSkinnedMeshesFromVelocity'] = [], this['_enablePosition'] = !0x1, this['_enableVelocity'] = !0x1, this['_positionIndex'] = -0x1, this['_velocityIndex'] = -0x1, this['_scene'] = _0x1f6d02, this['_ratio'] = _0x4ef15c, _0x5451e0['_SceneComponentInitialization'](this['_scene']), this['_createRenderTargets'](); } return Object['defineProperty'](_0x5451e0['prototype'], 'renderList', { 'set': function(_0x120734) { this['_multiRenderTarget']['renderList'] = _0x120734; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5451e0['prototype'], 'isSupported', { 'get': function() { return this['_multiRenderTarget']['isSupported']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5451e0['prototype']['getTextureIndex'] = function(_0x384bc5) { switch (_0x384bc5) { case _0x5451e0['POSITION_TEXTURE_TYPE']: return this['_positionIndex']; case _0x5451e0['VELOCITY_TEXTURE_TYPE']: return this['_velocityIndex']; default: return -0x1; } } , Object['defineProperty'](_0x5451e0['prototype'], 'enablePosition', { 'get': function() { return this['_enablePosition']; }, 'set': function(_0x4c2c9d) { this['_enablePosition'] = _0x4c2c9d, this['dispose'](), this['_createRenderTargets'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5451e0['prototype'], 'enableVelocity', { 'get': function() { return this['_enableVelocity']; }, 'set': function(_0xaa4339) { this['_enableVelocity'] = _0xaa4339, _0xaa4339 || (this['_previousTransformationMatrices'] = {}), this['dispose'](), this['_createRenderTargets'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5451e0['prototype'], 'scene', { 'get': function() { return this['_scene']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5451e0['prototype'], 'ratio', { 'get': function() { return this['_ratio']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5451e0['prototype']['isReady'] = function(_0x1aed4a, _0x132d6b) { var _0x3bffa1 = _0x1aed4a['getMaterial'](); if (_0x3bffa1 && _0x3bffa1['disableDepthWrite']) return !0x1; var _0x4aa529 = [] , _0x206050 = [_0x4209f7['b']['PositionKind'], _0x4209f7['b']['NormalKind']] , _0x19468b = _0x1aed4a['getMesh'](); _0x3bffa1 && _0x3bffa1['needAlphaTesting']() && (_0x4aa529['push']('#define\x20ALPHATEST'), _0x19468b['isVerticesDataPresent'](_0x4209f7['b']['UVKind']) && (_0x206050['push'](_0x4209f7['b']['UVKind']), _0x4aa529['push']('#define\x20UV1')), _0x19468b['isVerticesDataPresent'](_0x4209f7['b']['UV2Kind']) && (_0x206050['push'](_0x4209f7['b']['UV2Kind']), _0x4aa529['push']('#define\x20UV2'))), this['_enablePosition'] && (_0x4aa529['push']('#define\x20POSITION'), _0x4aa529['push']('#define\x20POSITION_INDEX\x20' + this['_positionIndex'])), this['_enableVelocity'] && (_0x4aa529['push']('#define\x20VELOCITY'), _0x4aa529['push']('#define\x20VELOCITY_INDEX\x20' + this['_velocityIndex']), -0x1 === this['excludedSkinnedMeshesFromVelocity']['indexOf'](_0x19468b) && _0x4aa529['push']('#define\x20BONES_VELOCITY_ENABLED')), _0x19468b['useBones'] && _0x19468b['computeBonesUsingShaders'] ? (_0x206050['push'](_0x4209f7['b']['MatricesIndicesKind']), _0x206050['push'](_0x4209f7['b']['MatricesWeightsKind']), _0x19468b['numBoneInfluencers'] > 0x4 && (_0x206050['push'](_0x4209f7['b']['MatricesIndicesExtraKind']), _0x206050['push'](_0x4209f7['b']['MatricesWeightsExtraKind'])), _0x4aa529['push']('#define\x20NUM_BONE_INFLUENCERS\x20' + _0x19468b['numBoneInfluencers']), _0x4aa529['push']('#define\x20BonesPerMesh\x20' + (_0x19468b['skeleton'] ? _0x19468b['skeleton']['bones']['length'] + 0x1 : 0x0))) : _0x4aa529['push']('#define\x20NUM_BONE_INFLUENCERS\x200'), _0x132d6b && (_0x4aa529['push']('#define\x20INSTANCES'), _0x206050['push']('world0'), _0x206050['push']('world1'), _0x206050['push']('world2'), _0x206050['push']('world3')), _0x4aa529['push']('#define\x20RENDER_TARGET_COUNT\x20' + this['_multiRenderTarget']['textures']['length']); var _0x119999 = _0x4aa529['join']('\x0a'); return this['_cachedDefines'] !== _0x119999 && (this['_cachedDefines'] = _0x119999, this['_effect'] = this['_scene']['getEngine']()['createEffect']('geometry', _0x206050, ['world', 'mBones', 'viewProjection', 'diffuseMatrix', 'view', 'previousWorld', 'previousViewProjection', 'mPreviousBones'], ['diffuseSampler'], _0x119999, void 0x0, void 0x0, void 0x0, { 'buffersCount': this['_enablePosition'] ? 0x3 : 0x2 })), this['_effect']['isReady'](); } , _0x5451e0['prototype']['getGBuffer'] = function() { return this['_multiRenderTarget']; } , Object['defineProperty'](_0x5451e0['prototype'], 'samples', { 'get': function() { return this['_multiRenderTarget']['samples']; }, 'set': function(_0x3aff69) { this['_multiRenderTarget']['samples'] = _0x3aff69; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5451e0['prototype']['dispose'] = function() { this['getGBuffer']()['dispose'](); } , _0x5451e0['prototype']['_createRenderTargets'] = function() { var _0x182690 = this , _0x1833cf = this['_scene']['getEngine']() , _0x2d83b3 = 0x2; if (this['_enablePosition'] && (this['_positionIndex'] = _0x2d83b3, _0x2d83b3++), this['_enableVelocity'] && (this['_velocityIndex'] = _0x2d83b3, _0x2d83b3++), this['_multiRenderTarget'] = new _0x217d12('gBuffer',{ 'width': _0x1833cf['getRenderWidth']() * this['_ratio'], 'height': _0x1833cf['getRenderHeight']() * this['_ratio'] },_0x2d83b3,this['_scene'],{ 'generateMipMaps': !0x1, 'generateDepthTexture': !0x0, 'defaultType': _0x24e342['a']['TEXTURETYPE_FLOAT'] }), this['isSupported']) { this['_multiRenderTarget']['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_multiRenderTarget']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_multiRenderTarget']['refreshRate'] = 0x1, this['_multiRenderTarget']['renderParticles'] = !0x1, this['_multiRenderTarget']['renderList'] = null, this['_multiRenderTarget']['onClearObservable']['add'](function(_0x4f1185) { _0x4f1185['clear'](new _0x47d24f['f'](0x0,0x0,0x0,0x1), !0x0, !0x0, !0x0); }); var _0x248623 = function(_0x55d934) { var _0x438ac5 = _0x55d934['getRenderingMesh']() , _0x3f55d4 = _0x182690['_scene'] , _0x36f781 = _0x3f55d4['getEngine']() , _0x420988 = _0x55d934['getMaterial'](); if (_0x420988) { if (_0x182690['_enableVelocity'] && !_0x182690['_previousTransformationMatrices'][_0x438ac5['uniqueId']] && (_0x182690['_previousTransformationMatrices'][_0x438ac5['uniqueId']] = { 'world': _0x47d24f['j']['Identity'](), 'viewProjection': _0x3f55d4['getTransformMatrix']() }, _0x438ac5['skeleton'])) { var _0xc996e7 = _0x438ac5['skeleton']['getTransformMatrices'](_0x438ac5); _0x182690['_previousBonesTransformationMatrices'][_0x438ac5['uniqueId']] = _0x182690['_copyBonesTransformationMatrices'](_0xc996e7, new Float32Array(_0xc996e7['length'])); } _0x36f781['setState'](_0x420988['backFaceCulling'], 0x0, !0x1, _0x3f55d4['useRightHandedSystem']); var _0x27bddb = _0x438ac5['_getInstancesRenderList'](_0x55d934['_id']); if (!_0x27bddb['mustReturn']) { var _0x11e844 = _0x36f781['getCaps']()['instancedArrays'] && null !== _0x27bddb['visibleInstances'][_0x55d934['_id']]; if (_0x182690['isReady'](_0x55d934, _0x11e844)) { if (_0x36f781['enableEffect'](_0x182690['_effect']), _0x438ac5['_bind'](_0x55d934, _0x182690['_effect'], _0x10d420['a']['TriangleFillMode']), _0x182690['_effect']['setMatrix']('viewProjection', _0x3f55d4['getTransformMatrix']()), _0x182690['_effect']['setMatrix']('view', _0x3f55d4['getViewMatrix']()), _0x420988 && _0x420988['needAlphaTesting']()) { var _0x232e6b = _0x420988['getAlphaTestTexture'](); _0x232e6b && (_0x182690['_effect']['setTexture']('diffuseSampler', _0x232e6b), _0x182690['_effect']['setMatrix']('diffuseMatrix', _0x232e6b['getTextureMatrix']())); } _0x438ac5['useBones'] && _0x438ac5['computeBonesUsingShaders'] && _0x438ac5['skeleton'] && (_0x182690['_effect']['setMatrices']('mBones', _0x438ac5['skeleton']['getTransformMatrices'](_0x438ac5)), _0x182690['_enableVelocity'] && _0x182690['_effect']['setMatrices']('mPreviousBones', _0x182690['_previousBonesTransformationMatrices'][_0x438ac5['uniqueId']])), _0x182690['_enableVelocity'] && (_0x182690['_effect']['setMatrix']('previousWorld', _0x182690['_previousTransformationMatrices'][_0x438ac5['uniqueId']]['world']), _0x182690['_effect']['setMatrix']('previousViewProjection', _0x182690['_previousTransformationMatrices'][_0x438ac5['uniqueId']]['viewProjection'])), _0x438ac5['_processRendering'](_0x55d934, _0x182690['_effect'], _0x10d420['a']['TriangleFillMode'], _0x27bddb, _0x11e844, function(_0x2715fe, _0x1311dd) { return _0x182690['_effect']['setMatrix']('world', _0x1311dd); }); } _0x182690['_enableVelocity'] && (_0x182690['_previousTransformationMatrices'][_0x438ac5['uniqueId']]['world'] = _0x438ac5['getWorldMatrix']()['clone'](), _0x182690['_previousTransformationMatrices'][_0x438ac5['uniqueId']]['viewProjection'] = _0x182690['_scene']['getTransformMatrix']()['clone'](), _0x438ac5['skeleton'] && _0x182690['_copyBonesTransformationMatrices'](_0x438ac5['skeleton']['getTransformMatrices'](_0x438ac5), _0x182690['_previousBonesTransformationMatrices'][_0x438ac5['uniqueId']])); } } }; this['_multiRenderTarget']['customRenderFunction'] = function(_0x2d297f, _0x2f338, _0x4ba6f8, _0x5093e3) { var _0xd16d84; if (_0x5093e3['length']) { for (_0x1833cf['setColorWrite'](!0x1), _0xd16d84 = 0x0; _0xd16d84 < _0x5093e3['length']; _0xd16d84++) _0x248623(_0x5093e3['data'][_0xd16d84]); _0x1833cf['setColorWrite'](!0x0); } for (_0xd16d84 = 0x0; _0xd16d84 < _0x2d297f['length']; _0xd16d84++) _0x248623(_0x2d297f['data'][_0xd16d84]); for (_0xd16d84 = 0x0; _0xd16d84 < _0x2f338['length']; _0xd16d84++) _0x248623(_0x2f338['data'][_0xd16d84]); } ; } } , _0x5451e0['prototype']['_copyBonesTransformationMatrices'] = function(_0x19ac7c, _0x523306) { for (var _0x431f3d = 0x0; _0x431f3d < _0x19ac7c['length']; _0x431f3d++) _0x523306[_0x431f3d] = _0x19ac7c[_0x431f3d]; return _0x523306; } , _0x5451e0['POSITION_TEXTURE_TYPE'] = 0x1, _0x5451e0['VELOCITY_TEXTURE_TYPE'] = 0x2, _0x5451e0['_SceneComponentInitialization'] = function(_0x39f548) { throw _0x2757ee['a']['WarnImport']('GeometryBufferRendererSceneComponent'); } , _0x5451e0; }(); Object['defineProperty'](_0x366639['a']['prototype'], 'geometryBufferRenderer', { 'get': function() { this['_geometryBufferRenderer']; }, 'set': function(_0x2f41a1) { _0x2f41a1 && _0x2f41a1['isSupported'] && (this['_geometryBufferRenderer'] = _0x2f41a1); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x366639['a']['prototype']['enableGeometryBufferRenderer'] = function(_0x382ccc) { return void 0x0 === _0x382ccc && (_0x382ccc = 0x1), this['_geometryBufferRenderer'] ? this['_geometryBufferRenderer'] : (this['_geometryBufferRenderer'] = new _0x385f61(this,_0x382ccc), this['_geometryBufferRenderer']['isSupported'] || (this['_geometryBufferRenderer'] = null), this['_geometryBufferRenderer']); } , _0x366639['a']['prototype']['disableGeometryBufferRenderer'] = function() { this['_geometryBufferRenderer'] && (this['_geometryBufferRenderer']['dispose'](), this['_geometryBufferRenderer'] = null); } ; var _0x3bd455 = function() { function _0x5bbf20(_0x474d46) { this['name'] = _0x443f74['a']['NAME_GEOMETRYBUFFERRENDERER'], this['scene'] = _0x474d46; } return _0x5bbf20['prototype']['register'] = function() { this['scene']['_gatherRenderTargetsStage']['registerStep'](_0x443f74['a']['STEP_GATHERRENDERTARGETS_GEOMETRYBUFFERRENDERER'], this, this['_gatherRenderTargets']); } , _0x5bbf20['prototype']['rebuild'] = function() {} , _0x5bbf20['prototype']['dispose'] = function() {} , _0x5bbf20['prototype']['_gatherRenderTargets'] = function(_0x492517) { this['scene']['_geometryBufferRenderer'] && _0x492517['push'](this['scene']['_geometryBufferRenderer']['getGBuffer']()); } , _0x5bbf20; }(); _0x385f61['_SceneComponentInitialization'] = function(_0x16ecd4) { var _0x5462d7 = _0x16ecd4['_getComponent'](_0x443f74['a']['NAME_GEOMETRYBUFFERRENDERER']); _0x5462d7 || (_0x5462d7 = new _0x3bd455(_0x16ecd4), _0x16ecd4['_addComponent'](_0x5462d7)); } ; var _0xe2f6ed = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20sampler2D\x20velocitySampler;\x0auniform\x20float\x20motionStrength;\x0auniform\x20float\x20motionScale;\x0auniform\x20vec2\x20screenSize;\x0avoid\x20main(void)\x0a{\x0a#ifdef\x20GEOMETRY_SUPPORTED\x0avec2\x20texelSize=1.0/screenSize;\x0avec2\x20velocityColor=texture2D(velocitySampler,vUV).rg*2.0-1.0;\x0avec2\x20velocity=vec2(pow(velocityColor.r,3.0),pow(velocityColor.g,3.0));\x0avelocity*=motionScale*motionStrength;\x0afloat\x20speed=length(velocity/texelSize);\x0aint\x20samplesCount=int(clamp(speed,1.0,SAMPLES));\x0avelocity=normalize(velocity)*texelSize;\x0afloat\x20hlim=float(-samplesCount)*0.5+0.5;\x0avec4\x20result=texture2D(textureSampler,vUV);\x0afor\x20(int\x20i=1;\x20i=samplesCount)\x0abreak;\x0avec2\x20offset=vUV+velocity*(hlim+float(i));\x0aresult+=texture2D(textureSampler,offset);\x0a}\x0agl_FragColor=result/float(samplesCount);\x0agl_FragColor.a=1.0;\x0a#else\x0agl_FragColor=texture2D(textureSampler,vUV);\x0a#endif\x0a}\x0a'; _0x3e9e56['a']['ShadersStore']['motionBlurPixelShader'] = _0xe2f6ed; var _0x418eb2 = function(_0x2e72af) { function _0x4b9c04(_0x17c17, _0x1b033a, _0x403af8, _0xe50d46, _0x445bf7, _0x4b6d93, _0x5c2665, _0x44d68f, _0x100ccc) { void 0x0 === _0x44d68f && (_0x44d68f = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x100ccc && (_0x100ccc = !0x1); var _0x1bc8e0 = _0x2e72af['call'](this, _0x17c17, 'motionBlur', ['motionStrength', 'motionScale', 'screenSize'], ['velocitySampler'], _0x403af8, _0xe50d46, _0x445bf7, _0x4b6d93, _0x5c2665, '#define\x20GEOMETRY_SUPPORTED\x0a#define\x20SAMPLES\x2064.0', _0x44d68f, void 0x0, null, _0x100ccc) || this; return _0x1bc8e0['motionStrength'] = 0x1, _0x1bc8e0['_motionBlurSamples'] = 0x20, _0x1bc8e0['_geometryBufferRenderer'] = _0x1b033a['enableGeometryBufferRenderer'](), _0x1bc8e0['_geometryBufferRenderer'] ? (_0x1bc8e0['_geometryBufferRenderer']['enableVelocity'] = !0x0, _0x1bc8e0['onApply'] = function(_0x16b9ce) { if (_0x16b9ce['setVector2']('screenSize', new _0x47d24f['w'](_0x1bc8e0['width'],_0x1bc8e0['height'])), _0x16b9ce['setFloat']('motionScale', _0x1b033a['getAnimationRatio']()), _0x16b9ce['setFloat']('motionStrength', _0x1bc8e0['motionStrength']), _0x1bc8e0['_geometryBufferRenderer']) { var _0x587d25 = _0x1bc8e0['_geometryBufferRenderer']['getTextureIndex'](_0x385f61['VELOCITY_TEXTURE_TYPE']); _0x16b9ce['setTexture']('velocitySampler', _0x1bc8e0['_geometryBufferRenderer']['getGBuffer']()['textures'][_0x587d25]); } } ) : (_0x3f98cb['a']['Warn']('Multiple\x20Render\x20Target\x20support\x20needed\x20to\x20compute\x20object\x20based\x20motion\x20blur'), _0x1bc8e0['updateEffect']()), _0x1bc8e0; } return _0x420e5b['d'](_0x4b9c04, _0x2e72af), Object['defineProperty'](_0x4b9c04['prototype'], 'motionBlurSamples', { 'get': function() { return this['_motionBlurSamples']; }, 'set': function(_0x5f1b4a) { this['_motionBlurSamples'] = _0x5f1b4a, this['_geometryBufferRenderer'] && this['updateEffect']('#define\x20GEOMETRY_SUPPORTED\x0a#define\x20SAMPLES\x20' + _0x5f1b4a['toFixed'](0x1)); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x4b9c04['prototype']['excludeSkinnedMesh'] = function(_0x498c2e) { this['_geometryBufferRenderer'] && _0x498c2e['skeleton'] && this['_geometryBufferRenderer']['excludedSkinnedMeshesFromVelocity']['push'](_0x498c2e); } , _0x4b9c04['prototype']['removeExcludedSkinnedMesh'] = function(_0x1e6339) { if (this['_geometryBufferRenderer'] && _0x1e6339['skeleton']) { var _0x41a6b0 = this['_geometryBufferRenderer']['excludedSkinnedMeshesFromVelocity']['indexOf'](_0x1e6339); -0x1 !== _0x41a6b0 && this['_geometryBufferRenderer']['excludedSkinnedMeshesFromVelocity']['splice'](_0x41a6b0, 0x1); } } , _0x4b9c04['prototype']['dispose'] = function(_0x2e5c04) { this['_geometryBufferRenderer'] && (this['_geometryBufferRenderer']['_previousTransformationMatrices'] = {}, this['_geometryBufferRenderer']['_previousBonesTransformationMatrices'] = {}, this['_geometryBufferRenderer']['excludedSkinnedMeshesFromVelocity'] = []), _0x2e72af['prototype']['dispose']['call'](this, _0x2e5c04); } , _0x4b9c04; }(_0x1f5ab5) , _0x5c13d4 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20sampler2D\x20refractionSampler;\x0a\x0auniform\x20vec3\x20baseColor;\x0auniform\x20float\x20depth;\x0auniform\x20float\x20colorLevel;\x0avoid\x20main()\x20{\x0afloat\x20ref=1.0-texture2D(refractionSampler,vUV).r;\x0avec2\x20uv=vUV-vec2(0.5);\x0avec2\x20offset=uv*depth*ref;\x0avec3\x20sourceColor=texture2D(textureSampler,vUV-offset).rgb;\x0agl_FragColor=vec4(sourceColor+sourceColor*ref*colorLevel,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['refractionPixelShader'] = _0x5c13d4; var _0x17e323 = function(_0x1604c3) { function _0x5d5b6a(_0x2f3424, _0x5cf85b, _0x3b4b7e, _0x35b1ed, _0x1004f7, _0x3b554d, _0x5e38f2, _0x14b01b, _0x2a6093, _0x2b928a) { var _0x5047e1 = _0x1604c3['call'](this, _0x2f3424, 'refraction', ['baseColor', 'depth', 'colorLevel'], ['refractionSampler'], _0x3b554d, _0x5e38f2, _0x14b01b, _0x2a6093, _0x2b928a) || this; return _0x5047e1['color'] = _0x3b4b7e, _0x5047e1['depth'] = _0x35b1ed, _0x5047e1['colorLevel'] = _0x1004f7, _0x5047e1['_ownRefractionTexture'] = !0x0, _0x5047e1['onActivateObservable']['add'](function(_0x18deb8) { _0x5047e1['_refTexture'] = _0x5047e1['_refTexture'] || new _0x11d14a['a'](_0x5cf85b,_0x18deb8['getScene']()); }), _0x5047e1['onApplyObservable']['add'](function(_0x2b28d6) { _0x2b28d6['setColor3']('baseColor', _0x5047e1['color']), _0x2b28d6['setFloat']('depth', _0x5047e1['depth']), _0x2b28d6['setFloat']('colorLevel', _0x5047e1['colorLevel']), _0x2b28d6['setTexture']('refractionSampler', _0x5047e1['_refTexture']); }), _0x5047e1; } return _0x420e5b['d'](_0x5d5b6a, _0x1604c3), Object['defineProperty'](_0x5d5b6a['prototype'], 'refractionTexture', { 'get': function() { return this['_refTexture']; }, 'set': function(_0x11f29b) { this['_refTexture'] && this['_ownRefractionTexture'] && this['_refTexture']['dispose'](), this['_refTexture'] = _0x11f29b, this['_ownRefractionTexture'] = !0x1; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5d5b6a['prototype']['dispose'] = function(_0x11aa8b) { this['_refTexture'] && this['_ownRefractionTexture'] && (this['_refTexture']['dispose'](), this['_refTexture'] = null), _0x1604c3['prototype']['dispose']['call'](this, _0x11aa8b); } , _0x5d5b6a; }(_0x1f5ab5) , _0xa46889 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20vec2\x20screenSize;\x0auniform\x20vec2\x20sharpnessAmounts;\x0avoid\x20main(void)\x0a{\x0avec2\x20onePixel=vec2(1.0,1.0)/screenSize;\x0avec4\x20color=texture2D(textureSampler,vUV);\x0avec4\x20edgeDetection=texture2D(textureSampler,vUV+onePixel*vec2(0,-1))\x20+\x0atexture2D(textureSampler,vUV+onePixel*vec2(-1,0))\x20+\x0atexture2D(textureSampler,vUV+onePixel*vec2(1,0))\x20+\x0atexture2D(textureSampler,vUV+onePixel*vec2(0,1))\x20-\x0acolor*4.0;\x0agl_FragColor=max(vec4(color.rgb*sharpnessAmounts.y,color.a)-(sharpnessAmounts.x*vec4(edgeDetection.rgb,0)),0.);\x0a}'; _0x3e9e56['a']['ShadersStore']['sharpenPixelShader'] = _0xa46889; var _0x3d05af = function(_0x40f837) { function _0x29fd8b(_0x846e3a, _0x334205, _0x2e8e64, _0x1f6d68, _0x4df9f6, _0x5102bb, _0x513366, _0x5c2b05) { void 0x0 === _0x513366 && (_0x513366 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), void 0x0 === _0x5c2b05 && (_0x5c2b05 = !0x1); var _0x4223e2 = _0x40f837['call'](this, _0x846e3a, 'sharpen', ['sharpnessAmounts', 'screenSize'], null, _0x334205, _0x2e8e64, _0x1f6d68, _0x4df9f6, _0x5102bb, null, _0x513366, void 0x0, null, _0x5c2b05) || this; return _0x4223e2['colorAmount'] = 0x1, _0x4223e2['edgeAmount'] = 0.3, _0x4223e2['onApply'] = function(_0x22b160) { _0x22b160['setFloat2']('screenSize', _0x4223e2['width'], _0x4223e2['height']), _0x22b160['setFloat2']('sharpnessAmounts', _0x4223e2['edgeAmount'], _0x4223e2['colorAmount']); } , _0x4223e2; } return _0x420e5b['d'](_0x29fd8b, _0x40f837), _0x29fd8b; }(_0x1f5ab5) , _0x27ecaf = function() { function _0x56bd15(_0x9024cb, _0x431484) { this['engine'] = _0x9024cb, this['_name'] = _0x431484, this['_renderEffects'] = {}, this['_renderEffectsForIsolatedPass'] = new Array(), this['_cameras'] = []; } return Object['defineProperty'](_0x56bd15['prototype'], 'name', { 'get': function() { return this['_name']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x56bd15['prototype']['getClassName'] = function() { return 'PostProcessRenderPipeline'; } , Object['defineProperty'](_0x56bd15['prototype'], 'isSupported', { 'get': function() { for (var _0x449daf in this['_renderEffects']) if (this['_renderEffects']['hasOwnProperty'](_0x449daf) && !this['_renderEffects'][_0x449daf]['isSupported']) return !0x1; return !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x56bd15['prototype']['addEffect'] = function(_0x2ea809) { this['_renderEffects'][_0x2ea809['_name']] = _0x2ea809; } , _0x56bd15['prototype']['_rebuild'] = function() {} , _0x56bd15['prototype']['_enableEffect'] = function(_0x533d23, _0x3a9aa1) { var _0x346a45 = this['_renderEffects'][_0x533d23]; _0x346a45 && _0x346a45['_enable'](_0x1eb50e['h']['MakeArray'](_0x3a9aa1 || this['_cameras'])); } , _0x56bd15['prototype']['_disableEffect'] = function(_0x57edab, _0x52efc0) { var _0x5969c2 = this['_renderEffects'][_0x57edab]; _0x5969c2 && _0x5969c2['_disable'](_0x1eb50e['h']['MakeArray'](_0x52efc0 || this['_cameras'])); } , _0x56bd15['prototype']['_attachCameras'] = function(_0x500a3e, _0x43d47e) { var _0x5ee58f = _0x1eb50e['h']['MakeArray'](_0x500a3e || this['_cameras']); if (_0x5ee58f) { var _0x30d801, _0x1bd763 = []; for (_0x30d801 = 0x0; _0x30d801 < _0x5ee58f['length']; _0x30d801++) { var _0x52620c = _0x5ee58f[_0x30d801] , _0x229062 = _0x52620c['name']; -0x1 === this['_cameras']['indexOf'](_0x52620c) ? this['_cameras'][_0x229062] = _0x52620c : _0x43d47e && _0x1bd763['push'](_0x30d801); } for (_0x30d801 = 0x0; _0x30d801 < _0x1bd763['length']; _0x30d801++) _0x500a3e['splice'](_0x1bd763[_0x30d801], 0x1); for (var _0x5e334e in this['_renderEffects']) this['_renderEffects']['hasOwnProperty'](_0x5e334e) && this['_renderEffects'][_0x5e334e]['_attachCameras'](_0x5ee58f); } } , _0x56bd15['prototype']['_detachCameras'] = function(_0x1f7a2f) { var _0x352cd3 = _0x1eb50e['h']['MakeArray'](_0x1f7a2f || this['_cameras']); if (_0x352cd3) { for (var _0xd4eab1 in this['_renderEffects']) this['_renderEffects']['hasOwnProperty'](_0xd4eab1) && this['_renderEffects'][_0xd4eab1]['_detachCameras'](_0x352cd3); for (var _0x3d1d68 = 0x0; _0x3d1d68 < _0x352cd3['length']; _0x3d1d68++) this['_cameras']['splice'](this['_cameras']['indexOf'](_0x352cd3[_0x3d1d68]), 0x1); } } , _0x56bd15['prototype']['_update'] = function() { for (var _0x130b64 in this['_renderEffects']) this['_renderEffects']['hasOwnProperty'](_0x130b64) && this['_renderEffects'][_0x130b64]['_update'](); for (var _0x358d22 = 0x0; _0x358d22 < this['_cameras']['length']; _0x358d22++) { var _0x209c9d = this['_cameras'][_0x358d22]['name']; this['_renderEffectsForIsolatedPass'][_0x209c9d] && this['_renderEffectsForIsolatedPass'][_0x209c9d]['_update'](); } } , _0x56bd15['prototype']['_reset'] = function() { this['_renderEffects'] = {}, this['_renderEffectsForIsolatedPass'] = new Array(); } , _0x56bd15['prototype']['_enableMSAAOnFirstPostProcess'] = function(_0x8a7d56) { var _0x521200 = Object['keys'](this['_renderEffects']); if (0x1 === this['engine']['webGLVersion']) return !0x1; if (_0x521200['length'] > 0x0) { var _0x160055 = this['_renderEffects'][_0x521200[0x0]]['getPostProcesses'](); _0x160055 && (_0x160055[0x0]['samples'] = _0x8a7d56); } return !0x0; } , _0x56bd15['prototype']['dispose'] = function() {} , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x56bd15['prototype'], '_name', void 0x0), _0x56bd15; }() , _0x454c2e = function() { function _0x187144() { this['_renderPipelines'] = {}; } return Object['defineProperty'](_0x187144['prototype'], 'supportedPipelines', { 'get': function() { var _0x1dc3c2 = []; for (var _0x32df02 in this['_renderPipelines']) if (this['_renderPipelines']['hasOwnProperty'](_0x32df02)) { var _0x23a435 = this['_renderPipelines'][_0x32df02]; _0x23a435['isSupported'] && _0x1dc3c2['push'](_0x23a435); } return _0x1dc3c2; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x187144['prototype']['addPipeline'] = function(_0x4c4da1) { this['_renderPipelines'][_0x4c4da1['_name']] = _0x4c4da1; } , _0x187144['prototype']['attachCamerasToRenderPipeline'] = function(_0x2eb24f, _0x406703, _0x4a7644) { void 0x0 === _0x4a7644 && (_0x4a7644 = !0x1); var _0x2c6146 = this['_renderPipelines'][_0x2eb24f]; _0x2c6146 && _0x2c6146['_attachCameras'](_0x406703, _0x4a7644); } , _0x187144['prototype']['detachCamerasFromRenderPipeline'] = function(_0x1e1140, _0x3e0565) { var _0x40fd3a = this['_renderPipelines'][_0x1e1140]; _0x40fd3a && _0x40fd3a['_detachCameras'](_0x3e0565); } , _0x187144['prototype']['enableEffectInPipeline'] = function(_0x416050, _0x311244, _0x539b87) { var _0x3ef8b9 = this['_renderPipelines'][_0x416050]; _0x3ef8b9 && _0x3ef8b9['_enableEffect'](_0x311244, _0x539b87); } , _0x187144['prototype']['disableEffectInPipeline'] = function(_0x4572a9, _0x3fb98a, _0x3d4068) { var _0xe25e10 = this['_renderPipelines'][_0x4572a9]; _0xe25e10 && _0xe25e10['_disableEffect'](_0x3fb98a, _0x3d4068); } , _0x187144['prototype']['update'] = function() { for (var _0x58f9ed in this['_renderPipelines']) if (this['_renderPipelines']['hasOwnProperty'](_0x58f9ed)) { var _0x116357 = this['_renderPipelines'][_0x58f9ed]; _0x116357['isSupported'] ? _0x116357['_update']() : (_0x116357['dispose'](), delete this['_renderPipelines'][_0x58f9ed]); } } , _0x187144['prototype']['_rebuild'] = function() { for (var _0x569324 in this['_renderPipelines']) { if (this['_renderPipelines']['hasOwnProperty'](_0x569324)) this['_renderPipelines'][_0x569324]['_rebuild'](); } } , _0x187144['prototype']['dispose'] = function() { for (var _0x5907dd in this['_renderPipelines']) { if (this['_renderPipelines']['hasOwnProperty'](_0x5907dd)) this['_renderPipelines'][_0x5907dd]['dispose'](); } } , _0x187144; }(); Object['defineProperty'](_0x366639['a']['prototype'], 'postProcessRenderPipelineManager', { 'get': function() { if (!this['_postProcessRenderPipelineManager']) { var _0x586083 = this['_getComponent'](_0x443f74['a']['NAME_POSTPROCESSRENDERPIPELINEMANAGER']); _0x586083 || (_0x586083 = new _0x32f969(this), this['_addComponent'](_0x586083)), this['_postProcessRenderPipelineManager'] = new _0x454c2e(); } return this['_postProcessRenderPipelineManager']; }, 'enumerable': !0x0, 'configurable': !0x0 }); var _0x32f969 = function() { function _0x25f050(_0x3117ed) { this['name'] = _0x443f74['a']['NAME_POSTPROCESSRENDERPIPELINEMANAGER'], this['scene'] = _0x3117ed; } return _0x25f050['prototype']['register'] = function() { this['scene']['_gatherRenderTargetsStage']['registerStep'](_0x443f74['a']['STEP_GATHERRENDERTARGETS_POSTPROCESSRENDERPIPELINEMANAGER'], this, this['_gatherRenderTargets']); } , _0x25f050['prototype']['rebuild'] = function() { this['scene']['_postProcessRenderPipelineManager'] && this['scene']['_postProcessRenderPipelineManager']['_rebuild'](); } , _0x25f050['prototype']['dispose'] = function() { this['scene']['_postProcessRenderPipelineManager'] && this['scene']['_postProcessRenderPipelineManager']['dispose'](); } , _0x25f050['prototype']['_gatherRenderTargets'] = function() { this['scene']['_postProcessRenderPipelineManager'] && this['scene']['_postProcessRenderPipelineManager']['update'](); } , _0x25f050; }() , _0x7cf296 = function(_0x195521) { function _0x6cb26c(_0x29334a, _0x2c586c, _0x2f0e6f, _0x543bd7, _0x5e6b40) { void 0x0 === _0x29334a && (_0x29334a = ''), void 0x0 === _0x2c586c && (_0x2c586c = !0x0), void 0x0 === _0x2f0e6f && (_0x2f0e6f = _0x48707b['a']['LastCreatedScene']), void 0x0 === _0x5e6b40 && (_0x5e6b40 = !0x0); var _0x4dcea4 = _0x195521['call'](this, _0x2f0e6f['getEngine'](), _0x29334a) || this; _0x4dcea4['_camerasToBeAttached'] = [], _0x4dcea4['SharpenPostProcessId'] = 'SharpenPostProcessEffect', _0x4dcea4['ImageProcessingPostProcessId'] = 'ImageProcessingPostProcessEffect', _0x4dcea4['FxaaPostProcessId'] = 'FxaaPostProcessEffect', _0x4dcea4['ChromaticAberrationPostProcessId'] = 'ChromaticAberrationPostProcessEffect', _0x4dcea4['GrainPostProcessId'] = 'GrainPostProcessEffect', _0x4dcea4['_glowLayer'] = null, _0x4dcea4['animations'] = [], _0x4dcea4['_imageProcessingConfigurationObserver'] = null, _0x4dcea4['_sharpenEnabled'] = !0x1, _0x4dcea4['_bloomEnabled'] = !0x1, _0x4dcea4['_depthOfFieldEnabled'] = !0x1, _0x4dcea4['_depthOfFieldBlurLevel'] = _0x1e3a5a['Low'], _0x4dcea4['_fxaaEnabled'] = !0x1, _0x4dcea4['_imageProcessingEnabled'] = !0x0, _0x4dcea4['_bloomScale'] = 0.5, _0x4dcea4['_chromaticAberrationEnabled'] = !0x1, _0x4dcea4['_grainEnabled'] = !0x1, _0x4dcea4['_buildAllowed'] = !0x0, _0x4dcea4['_resizeObserver'] = null, _0x4dcea4['_hardwareScaleLevel'] = 0x1, _0x4dcea4['_bloomKernel'] = 0x40, _0x4dcea4['_bloomWeight'] = 0.15, _0x4dcea4['_bloomThreshold'] = 0.9, _0x4dcea4['_samples'] = 0x1, _0x4dcea4['_hasCleared'] = !0x1, _0x4dcea4['_prevPostProcess'] = null, _0x4dcea4['_prevPrevPostProcess'] = null, _0x4dcea4['_depthOfFieldSceneObserver'] = null, _0x4dcea4['_cameras'] = _0x543bd7 || _0x2f0e6f['cameras'], _0x4dcea4['_cameras'] = _0x4dcea4['_cameras']['slice'](), _0x4dcea4['_camerasToBeAttached'] = _0x4dcea4['_cameras']['slice'](), _0x4dcea4['_buildAllowed'] = _0x5e6b40, _0x4dcea4['_scene'] = _0x2f0e6f; var _0x32ca40 = _0x4dcea4['_scene']['getEngine']()['getCaps'](); _0x4dcea4['_hdr'] = _0x2c586c && (_0x32ca40['textureHalfFloatRender'] || _0x32ca40['textureFloatRender']), _0x4dcea4['_hdr'] ? _0x32ca40['textureHalfFloatRender'] ? _0x4dcea4['_defaultPipelineTextureType'] = _0x24e342['a']['TEXTURETYPE_HALF_FLOAT'] : _0x32ca40['textureFloatRender'] && (_0x4dcea4['_defaultPipelineTextureType'] = _0x24e342['a']['TEXTURETYPE_FLOAT']) : _0x4dcea4['_defaultPipelineTextureType'] = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'], _0x2f0e6f['postProcessRenderPipelineManager']['addPipeline'](_0x4dcea4); var _0xa95b72 = _0x4dcea4['_scene']['getEngine'](); return _0x4dcea4['sharpen'] = new _0x3d05af('sharpen',0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0xa95b72,!0x1,_0x4dcea4['_defaultPipelineTextureType'],!0x0), _0x4dcea4['_sharpenEffect'] = new _0x25710c(_0xa95b72,_0x4dcea4['SharpenPostProcessId'],function() { return _0x4dcea4['sharpen']; } ,!0x0), _0x4dcea4['depthOfField'] = new _0x3fc7d6(_0x4dcea4['_scene'],null,_0x4dcea4['_depthOfFieldBlurLevel'],_0x4dcea4['_defaultPipelineTextureType'],!0x0), _0x4dcea4['bloom'] = new _0x767cfe(_0x4dcea4['_scene'],_0x4dcea4['_bloomScale'],_0x4dcea4['_bloomWeight'],_0x4dcea4['bloomKernel'],_0x4dcea4['_defaultPipelineTextureType'],!0x0), _0x4dcea4['chromaticAberration'] = new _0x7d7e15('ChromaticAberration',_0xa95b72['getRenderWidth'](),_0xa95b72['getRenderHeight'](),0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0xa95b72,!0x1,_0x4dcea4['_defaultPipelineTextureType'],!0x0), _0x4dcea4['_chromaticAberrationEffect'] = new _0x25710c(_0xa95b72,_0x4dcea4['ChromaticAberrationPostProcessId'],function() { return _0x4dcea4['chromaticAberration']; } ,!0x0), _0x4dcea4['grain'] = new _0x1a14de('Grain',0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0xa95b72,!0x1,_0x4dcea4['_defaultPipelineTextureType'],!0x0), _0x4dcea4['_grainEffect'] = new _0x25710c(_0xa95b72,_0x4dcea4['GrainPostProcessId'],function() { return _0x4dcea4['grain']; } ,!0x0), _0x4dcea4['_resizeObserver'] = _0xa95b72['onResizeObservable']['add'](function() { _0x4dcea4['_hardwareScaleLevel'] = _0xa95b72['getHardwareScalingLevel'](), _0x4dcea4['bloomKernel'] = _0x4dcea4['bloomKernel']; }), _0x4dcea4['_imageProcessingConfigurationObserver'] = _0x4dcea4['_scene']['imageProcessingConfiguration']['onUpdateParameters']['add'](function() { _0x4dcea4['bloom']['_downscale']['_exposure'] = _0x4dcea4['_scene']['imageProcessingConfiguration']['exposure']; }), _0x4dcea4['_buildPipeline'](), _0x4dcea4; } return _0x420e5b['d'](_0x6cb26c, _0x195521), Object['defineProperty'](_0x6cb26c['prototype'], 'scene', { 'get': function() { return this['_scene']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'sharpenEnabled', { 'get': function() { return this['_sharpenEnabled']; }, 'set': function(_0x4618bb) { this['_sharpenEnabled'] !== _0x4618bb && (this['_sharpenEnabled'] = _0x4618bb, this['_buildPipeline']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'bloomKernel', { 'get': function() { return this['_bloomKernel']; }, 'set': function(_0x2f999b) { this['_bloomKernel'] = _0x2f999b, this['bloom']['kernel'] = _0x2f999b / this['_hardwareScaleLevel']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'bloomWeight', { 'get': function() { return this['_bloomWeight']; }, 'set': function(_0x2cc85f) { this['_bloomWeight'] !== _0x2cc85f && (this['bloom']['weight'] = _0x2cc85f, this['_bloomWeight'] = _0x2cc85f); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'bloomThreshold', { 'get': function() { return this['_bloomThreshold']; }, 'set': function(_0x1ed50c) { this['_bloomThreshold'] !== _0x1ed50c && (this['bloom']['threshold'] = _0x1ed50c, this['_bloomThreshold'] = _0x1ed50c); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'bloomScale', { 'get': function() { return this['_bloomScale']; }, 'set': function(_0xde8203) { this['_bloomScale'] !== _0xde8203 && (this['_bloomScale'] = _0xde8203, this['_rebuildBloom'](), this['_buildPipeline']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'bloomEnabled', { 'get': function() { return this['_bloomEnabled']; }, 'set': function(_0x2785fc) { this['_bloomEnabled'] !== _0x2785fc && (this['_bloomEnabled'] = _0x2785fc, this['_buildPipeline']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x6cb26c['prototype']['_rebuildBloom'] = function() { var _0x485c5d = this['bloom']; this['bloom'] = new _0x767cfe(this['_scene'],this['bloomScale'],this['_bloomWeight'],this['bloomKernel'],this['_defaultPipelineTextureType'],!0x1), this['bloom']['threshold'] = _0x485c5d['threshold']; for (var _0x56458 = 0x0; _0x56458 < this['_cameras']['length']; _0x56458++) _0x485c5d['disposeEffects'](this['_cameras'][_0x56458]); } , Object['defineProperty'](_0x6cb26c['prototype'], 'depthOfFieldEnabled', { 'get': function() { return this['_depthOfFieldEnabled']; }, 'set': function(_0x5946cd) { this['_depthOfFieldEnabled'] !== _0x5946cd && (this['_depthOfFieldEnabled'] = _0x5946cd, this['_buildPipeline']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'depthOfFieldBlurLevel', { 'get': function() { return this['_depthOfFieldBlurLevel']; }, 'set': function(_0x2da37e) { if (this['_depthOfFieldBlurLevel'] !== _0x2da37e) { this['_depthOfFieldBlurLevel'] = _0x2da37e; var _0x3fff8b = this['depthOfField']; this['depthOfField'] = new _0x3fc7d6(this['_scene'],null,this['_depthOfFieldBlurLevel'],this['_defaultPipelineTextureType'],!0x1), this['depthOfField']['focalLength'] = _0x3fff8b['focalLength'], this['depthOfField']['focusDistance'] = _0x3fff8b['focusDistance'], this['depthOfField']['fStop'] = _0x3fff8b['fStop'], this['depthOfField']['lensSize'] = _0x3fff8b['lensSize']; for (var _0x5a071f = 0x0; _0x5a071f < this['_cameras']['length']; _0x5a071f++) _0x3fff8b['disposeEffects'](this['_cameras'][_0x5a071f]); this['_buildPipeline'](); } }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'fxaaEnabled', { 'get': function() { return this['_fxaaEnabled']; }, 'set': function(_0x19b120) { this['_fxaaEnabled'] !== _0x19b120 && (this['_fxaaEnabled'] = _0x19b120, this['_buildPipeline']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'samples', { 'get': function() { return this['_samples']; }, 'set': function(_0x199ae7) { this['_samples'] !== _0x199ae7 && (this['_samples'] = _0x199ae7, this['_buildPipeline']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'imageProcessingEnabled', { 'get': function() { return this['_imageProcessingEnabled']; }, 'set': function(_0x242eb7) { this['_imageProcessingEnabled'] !== _0x242eb7 && (this['_imageProcessingEnabled'] = _0x242eb7, this['_buildPipeline']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'glowLayerEnabled', { 'get': function() { return null != this['_glowLayer']; }, 'set': function(_0x51ec5c) { _0x51ec5c && !this['_glowLayer'] ? this['_glowLayer'] = new _0x54ec31('',this['_scene']) : !_0x51ec5c && this['_glowLayer'] && (this['_glowLayer']['dispose'](), this['_glowLayer'] = null); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'glowLayer', { 'get': function() { return this['_glowLayer']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'chromaticAberrationEnabled', { 'get': function() { return this['_chromaticAberrationEnabled']; }, 'set': function(_0x1b49b2) { this['_chromaticAberrationEnabled'] !== _0x1b49b2 && (this['_chromaticAberrationEnabled'] = _0x1b49b2, this['_buildPipeline']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x6cb26c['prototype'], 'grainEnabled', { 'get': function() { return this['_grainEnabled']; }, 'set': function(_0x2eb258) { this['_grainEnabled'] !== _0x2eb258 && (this['_grainEnabled'] = _0x2eb258, this['_buildPipeline']()); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x6cb26c['prototype']['getClassName'] = function() { return 'DefaultRenderingPipeline'; } , _0x6cb26c['prototype']['prepare'] = function() { var _0x35f60a = this['_buildAllowed']; this['_buildAllowed'] = !0x0, this['_buildPipeline'](), this['_buildAllowed'] = _0x35f60a; } , _0x6cb26c['prototype']['_setAutoClearAndTextureSharing'] = function(_0x37c07c, _0x23da61) { void 0x0 === _0x23da61 && (_0x23da61 = !0x1), this['_hasCleared'] ? _0x37c07c['autoClear'] = !0x1 : (_0x37c07c['autoClear'] = !0x0, this['_scene']['autoClear'] = !0x1, this['_hasCleared'] = !0x0), _0x23da61 || (this['_prevPrevPostProcess'] ? _0x37c07c['shareOutputWith'](this['_prevPrevPostProcess']) : _0x37c07c['useOwnOutput'](), this['_prevPostProcess'] && (this['_prevPrevPostProcess'] = this['_prevPostProcess']), this['_prevPostProcess'] = _0x37c07c); } , _0x6cb26c['prototype']['_buildPipeline'] = function() { var _0x4f6d2d = this; if (this['_buildAllowed']) { this['_scene']['autoClear'] = !0x0; var _0x5562a0 = this['_scene']['getEngine'](); if (this['_disposePostProcesses'](), null !== this['_cameras'] && (this['_scene']['postProcessRenderPipelineManager']['detachCamerasFromRenderPipeline'](this['_name'], this['_cameras']), this['_cameras'] = this['_camerasToBeAttached']['slice']()), this['_reset'](), this['_prevPostProcess'] = null, this['_prevPrevPostProcess'] = null, this['_hasCleared'] = !0x1, this['depthOfFieldEnabled']) { if (this['_cameras']['length'] > 0x1) { for (var _0x2f4250 = 0x0, _0x5bac50 = this['_cameras']; _0x2f4250 < _0x5bac50['length']; _0x2f4250++) { var _0x4d8de3 = _0x5bac50[_0x2f4250]; (_0x32ecd4 = this['_scene']['enableDepthRenderer'](_0x4d8de3))['useOnlyInActiveCamera'] = !0x0; } this['_depthOfFieldSceneObserver'] = this['_scene']['onAfterRenderTargetsRenderObservable']['add'](function(_0xd12fdc) { _0x4f6d2d['_cameras']['indexOf'](_0xd12fdc['activeCamera']) > -0x1 && (_0x4f6d2d['depthOfField']['depthTexture'] = _0xd12fdc['enableDepthRenderer'](_0xd12fdc['activeCamera'])['getDepthMap']()); }); } else { this['_scene']['onAfterRenderTargetsRenderObservable']['remove'](this['_depthOfFieldSceneObserver']); var _0x32ecd4 = this['_scene']['enableDepthRenderer'](this['_cameras'][0x0]); this['depthOfField']['depthTexture'] = _0x32ecd4['getDepthMap'](); } this['depthOfField']['_isReady']() || this['depthOfField']['_updateEffects'](), this['addEffect'](this['depthOfField']), this['_setAutoClearAndTextureSharing'](this['depthOfField']['_effects'][0x0], !0x0); } else this['_scene']['onAfterRenderTargetsRenderObservable']['remove'](this['_depthOfFieldSceneObserver']); this['bloomEnabled'] && (this['bloom']['_isReady']() || this['bloom']['_updateEffects'](), this['addEffect'](this['bloom']), this['_setAutoClearAndTextureSharing'](this['bloom']['_effects'][0x0], !0x0)), this['_imageProcessingEnabled'] && (this['imageProcessing'] = new _0x46186b('imageProcessing',0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x5562a0,!0x1,this['_defaultPipelineTextureType']), this['_hdr'] ? (this['addEffect'](new _0x25710c(_0x5562a0,this['ImageProcessingPostProcessId'],function() { return _0x4f6d2d['imageProcessing']; } ,!0x0)), this['_setAutoClearAndTextureSharing'](this['imageProcessing'])) : this['_scene']['imageProcessingConfiguration']['applyByPostProcess'] = !0x1), this['sharpenEnabled'] && (this['sharpen']['isReady']() || this['sharpen']['updateEffect'](), this['addEffect'](this['_sharpenEffect']), this['_setAutoClearAndTextureSharing'](this['sharpen'])), this['grainEnabled'] && (this['grain']['isReady']() || this['grain']['updateEffect'](), this['addEffect'](this['_grainEffect']), this['_setAutoClearAndTextureSharing'](this['grain'])), this['chromaticAberrationEnabled'] && (this['chromaticAberration']['isReady']() || this['chromaticAberration']['updateEffect'](), this['addEffect'](this['_chromaticAberrationEffect']), this['_setAutoClearAndTextureSharing'](this['chromaticAberration'])), this['fxaaEnabled'] && (this['fxaa'] = new _0x3f1824('fxaa',0x1,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x5562a0,!0x1,this['_defaultPipelineTextureType']), this['addEffect'](new _0x25710c(_0x5562a0,this['FxaaPostProcessId'],function() { return _0x4f6d2d['fxaa']; } ,!0x0)), this['_setAutoClearAndTextureSharing'](this['fxaa'], !0x0)), null !== this['_cameras'] && this['_scene']['postProcessRenderPipelineManager']['attachCamerasToRenderPipeline'](this['_name'], this['_cameras']), !this['_enableMSAAOnFirstPostProcess'](this['samples']) && this['samples'] > 0x1 && _0x3f98cb['a']['Warn']('MSAA\x20failed\x20to\x20enable,\x20MSAA\x20is\x20only\x20supported\x20in\x20browsers\x20that\x20support\x20webGL\x20>=\x202.0'); } } , _0x6cb26c['prototype']['_disposePostProcesses'] = function(_0x54eb26) { void 0x0 === _0x54eb26 && (_0x54eb26 = !0x1); for (var _0x3221f1 = 0x0; _0x3221f1 < this['_cameras']['length']; _0x3221f1++) { var _0x3ce899 = this['_cameras'][_0x3221f1]; this['imageProcessing'] && this['imageProcessing']['dispose'](_0x3ce899), this['fxaa'] && this['fxaa']['dispose'](_0x3ce899), _0x54eb26 && (this['sharpen'] && this['sharpen']['dispose'](_0x3ce899), this['depthOfField'] && (this['_scene']['onAfterRenderTargetsRenderObservable']['remove'](this['_depthOfFieldSceneObserver']), this['depthOfField']['disposeEffects'](_0x3ce899)), this['bloom'] && this['bloom']['disposeEffects'](_0x3ce899), this['chromaticAberration'] && this['chromaticAberration']['dispose'](_0x3ce899), this['grain'] && this['grain']['dispose'](_0x3ce899), this['_glowLayer'] && this['_glowLayer']['dispose']()); } this['imageProcessing'] = null, this['fxaa'] = null, _0x54eb26 && (this['sharpen'] = null, this['_sharpenEffect'] = null, this['depthOfField'] = null, this['bloom'] = null, this['chromaticAberration'] = null, this['_chromaticAberrationEffect'] = null, this['grain'] = null, this['_grainEffect'] = null, this['_glowLayer'] = null); } , _0x6cb26c['prototype']['addCamera'] = function(_0x52f89a) { this['_camerasToBeAttached']['push'](_0x52f89a), this['_buildPipeline'](); } , _0x6cb26c['prototype']['removeCamera'] = function(_0x2ca464) { var _0x1159cb = this['_camerasToBeAttached']['indexOf'](_0x2ca464); this['_camerasToBeAttached']['splice'](_0x1159cb, 0x1), this['_buildPipeline'](); } , _0x6cb26c['prototype']['dispose'] = function() { this['_disposePostProcesses'](!0x0), this['_scene']['postProcessRenderPipelineManager']['detachCamerasFromRenderPipeline'](this['_name'], this['_cameras']), this['_scene']['autoClear'] = !0x0, this['_resizeObserver'] && (this['_scene']['getEngine']()['onResizeObservable']['remove'](this['_resizeObserver']), this['_resizeObserver'] = null), this['_scene']['imageProcessingConfiguration']['onUpdateParameters']['remove'](this['_imageProcessingConfigurationObserver']), _0x195521['prototype']['dispose']['call'](this); } , _0x6cb26c['prototype']['serialize'] = function() { var _0x3d32a4 = _0x3d4764['a']['Serialize'](this); return _0x3d32a4['customType'] = 'DefaultRenderingPipeline', _0x3d32a4; } , _0x6cb26c['Parse'] = function(_0x27c293, _0x5e533c, _0x33c004) { return _0x3d4764['a']['Parse'](function() { return new _0x6cb26c(_0x27c293['_name'],_0x27c293['_name']['_hdr'],_0x5e533c); }, _0x27c293, _0x5e533c, _0x33c004); } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'sharpenEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'bloomKernel', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], '_bloomWeight', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], '_bloomThreshold', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], '_hdr', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'bloomWeight', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'bloomThreshold', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'bloomScale', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'bloomEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'depthOfFieldEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'depthOfFieldBlurLevel', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'fxaaEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'samples', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'imageProcessingEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'glowLayerEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'chromaticAberrationEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x6cb26c['prototype'], 'grainEnabled', null), _0x6cb26c; }(_0x27ecaf); _0x376b99['a']['RegisteredTypes']['BABYLON.DefaultRenderingPipeline'] = _0x7cf296; var _0x418c9f = '\x0auniform\x20sampler2D\x20textureSampler;\x0a\x0auniform\x20float\x20gain;\x0auniform\x20float\x20threshold;\x0auniform\x20float\x20screen_width;\x0auniform\x20float\x20screen_height;\x0a\x0avarying\x20vec2\x20vUV;\x0a\x0avec4\x20highlightColor(vec4\x20color)\x20{\x0avec4\x20highlight=color;\x0afloat\x20luminance=dot(highlight.rgb,vec3(0.2125,0.7154,0.0721));\x0afloat\x20lum_threshold;\x0aif\x20(threshold>1.0)\x20{\x20lum_threshold=0.94+0.01*threshold;\x20}\x0aelse\x20{\x20lum_threshold=0.5+0.44*threshold;\x20}\x0aluminance=clamp((luminance-lum_threshold)*(1.0/(1.0-lum_threshold)),0.0,1.0);\x0ahighlight*=luminance*gain;\x0ahighlight.a=1.0;\x0areturn\x20highlight;\x0a}\x0avoid\x20main(void)\x0a{\x0avec4\x20original=texture2D(textureSampler,vUV);\x0a\x0aif\x20(gain\x20==\x20-1.0)\x20{\x0agl_FragColor=vec4(0.0,0.0,0.0,1.0);\x0areturn;\x0a}\x0afloat\x20w=2.0/screen_width;\x0afloat\x20h=2.0/screen_height;\x0afloat\x20weight=1.0;\x0a\x0avec4\x20blurred=vec4(0.0,0.0,0.0,0.0);\x0a#ifdef\x20PENTAGON\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-0.84*w,0.43*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(0.48*w,-1.29*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(0.61*w,1.51*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-1.55*w,-0.74*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.71*w,-0.52*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-0.94*w,1.59*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-0.40*w,-1.87*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.62*w,1.16*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.09*w,0.25*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.46*w,-1.71*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(0.08*w,2.42*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-1.85*w,-1.89*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(2.89*w,0.16*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.29*w,1.88*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(0.40*w,-2.81*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.54*w,2.26*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.60*w,-0.61*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(2.31*w,-1.30*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-0.83*w,2.53*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-1.12*w,-2.48*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(2.60*w,1.11*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.82*w,0.99*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.50*w,-2.81*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(0.85*w,3.33*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.94*w,-1.92*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(3.27*w,-0.53*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-1.95*w,2.48*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-0.23*w,-3.04*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(2.17*w,2.05*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.97*w,-0.04*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(2.25*w,-2.00*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-0.31*w,3.08*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-1.94*w,-2.59*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(3.37*w,0.64*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-3.13*w,1.93*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.03*w,-3.65*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.60*w,3.17*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-3.14*w,-1.19*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(3.00*w,-1.19*h)));\x0a#else\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-0.85*w,0.36*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(0.52*w,-1.14*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(0.46*w,1.42*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-1.46*w,-0.83*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.79*w,-0.42*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-1.11*w,1.62*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-0.29*w,-2.07*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.69*w,1.39*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.28*w,0.12*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.65*w,-1.69*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-0.08*w,2.44*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-1.63*w,-1.90*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(2.55*w,0.31*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.13*w,1.52*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(0.56*w,-2.61*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.38*w,2.34*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.64*w,-0.81*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(2.53*w,-1.21*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-1.06*w,2.63*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-1.00*w,-2.69*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(2.59*w,1.32*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.82*w,0.78*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.57*w,-2.50*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(0.54*w,2.93*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.39*w,-1.81*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(3.01*w,-0.28*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.04*w,2.25*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-0.02*w,-3.05*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(2.09*w,2.25*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-3.07*w,-0.25*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(2.44*w,-1.90*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-0.52*w,3.05*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-1.68*w,-2.61*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(3.01*w,0.79*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.76*w,1.46*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.05*w,-2.94*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(1.21*w,2.88*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(-2.84*w,-1.30*h)));\x0ablurred+=highlightColor(texture2D(textureSampler,vUV+vec2(2.98*w,-0.96*h)));\x0a#endif\x0ablurred/=39.0;\x0agl_FragColor=blurred;\x0a\x0a}'; _0x3e9e56['a']['ShadersStore']['lensHighlightsPixelShader'] = _0x418c9f; var _0x4b2601 = '\x0a\x0a\x0a\x0a\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20sampler2D\x20highlightsSampler;\x0auniform\x20sampler2D\x20depthSampler;\x0auniform\x20sampler2D\x20grainSampler;\x0a\x0auniform\x20float\x20grain_amount;\x0auniform\x20bool\x20blur_noise;\x0auniform\x20float\x20screen_width;\x0auniform\x20float\x20screen_height;\x0auniform\x20float\x20distortion;\x0auniform\x20bool\x20dof_enabled;\x0a\x0auniform\x20float\x20screen_distance;\x0auniform\x20float\x20aperture;\x0auniform\x20float\x20darken;\x0auniform\x20float\x20edge_blur;\x0auniform\x20bool\x20highlights;\x0a\x0auniform\x20float\x20near;\x0auniform\x20float\x20far;\x0a\x0avarying\x20vec2\x20vUV;\x0a\x0a#define\x20PI\x203.14159265\x0a#define\x20TWOPI\x206.28318530\x0a#define\x20inverse_focal_length\x200.1\x0a\x0avec2\x20centered_screen_pos;\x0avec2\x20distorted_coords;\x0afloat\x20radius2;\x0afloat\x20radius;\x0a\x0avec2\x20rand(vec2\x20co)\x0a{\x0afloat\x20noise1=(fract(sin(dot(co,vec2(12.9898,78.233)))*43758.5453));\x0afloat\x20noise2=(fract(sin(dot(co,vec2(12.9898,78.233)*2.0))*43758.5453));\x0areturn\x20clamp(vec2(noise1,noise2),0.0,1.0);\x0a}\x0a\x0avec2\x20getDistortedCoords(vec2\x20coords)\x20{\x0aif\x20(distortion\x20==\x200.0)\x20{\x20return\x20coords;\x20}\x0avec2\x20direction=1.0*normalize(centered_screen_pos);\x0avec2\x20dist_coords=vec2(0.5,0.5);\x0adist_coords.x=0.5+direction.x*radius2*1.0;\x0adist_coords.y=0.5+direction.y*radius2*1.0;\x0afloat\x20dist_amount=clamp(distortion*0.23,0.0,1.0);\x0adist_coords=mix(coords,dist_coords,dist_amount);\x0areturn\x20dist_coords;\x0a}\x0a\x0afloat\x20sampleScreen(inout\x20vec4\x20color,const\x20in\x20vec2\x20offset,const\x20in\x20float\x20weight)\x20{\x0a\x0avec2\x20coords=distorted_coords;\x0afloat\x20angle=rand(coords*100.0).x*TWOPI;\x0acoords+=vec2(offset.x*cos(angle)-offset.y*sin(angle),offset.x*sin(angle)+offset.y*cos(angle));\x0acolor+=texture2D(textureSampler,coords)*weight;\x0areturn\x20weight;\x0a}\x0a\x0afloat\x20getBlurLevel(float\x20size)\x20{\x0areturn\x20min(3.0,ceil(size/1.0));\x0a}\x0a\x0avec4\x20getBlurColor(float\x20size)\x20{\x0avec4\x20col=texture2D(textureSampler,distorted_coords);\x0aif\x20(size\x20==\x200.0)\x20{\x20return\x20col;\x20}\x0a\x0a\x0afloat\x20blur_level=getBlurLevel(size);\x0afloat\x20w=(size/screen_width);\x0afloat\x20h=(size/screen_height);\x0afloat\x20total_weight=1.0;\x0avec2\x20sample_coords;\x0atotal_weight+=sampleScreen(col,vec2(-0.50*w,0.24*h),0.93);\x0atotal_weight+=sampleScreen(col,vec2(0.30*w,-0.75*h),0.90);\x0atotal_weight+=sampleScreen(col,vec2(0.36*w,0.96*h),0.87);\x0atotal_weight+=sampleScreen(col,vec2(-1.08*w,-0.55*h),0.85);\x0atotal_weight+=sampleScreen(col,vec2(1.33*w,-0.37*h),0.83);\x0atotal_weight+=sampleScreen(col,vec2(-0.82*w,1.31*h),0.80);\x0atotal_weight+=sampleScreen(col,vec2(-0.31*w,-1.67*h),0.78);\x0atotal_weight+=sampleScreen(col,vec2(1.47*w,1.11*h),0.76);\x0atotal_weight+=sampleScreen(col,vec2(-1.97*w,0.19*h),0.74);\x0atotal_weight+=sampleScreen(col,vec2(1.42*w,-1.57*h),0.72);\x0aif\x20(blur_level>1.0)\x20{\x0atotal_weight+=sampleScreen(col,vec2(0.01*w,2.25*h),0.70);\x0atotal_weight+=sampleScreen(col,vec2(-1.62*w,-1.74*h),0.67);\x0atotal_weight+=sampleScreen(col,vec2(2.49*w,0.20*h),0.65);\x0atotal_weight+=sampleScreen(col,vec2(-2.07*w,1.61*h),0.63);\x0atotal_weight+=sampleScreen(col,vec2(0.46*w,-2.70*h),0.61);\x0atotal_weight+=sampleScreen(col,vec2(1.55*w,2.40*h),0.59);\x0atotal_weight+=sampleScreen(col,vec2(-2.88*w,-0.75*h),0.56);\x0atotal_weight+=sampleScreen(col,vec2(2.73*w,-1.44*h),0.54);\x0atotal_weight+=sampleScreen(col,vec2(-1.08*w,3.02*h),0.52);\x0atotal_weight+=sampleScreen(col,vec2(-1.28*w,-3.05*h),0.49);\x0a}\x0aif\x20(blur_level>2.0)\x20{\x0atotal_weight+=sampleScreen(col,vec2(3.11*w,1.43*h),0.46);\x0atotal_weight+=sampleScreen(col,vec2(-3.36*w,1.08*h),0.44);\x0atotal_weight+=sampleScreen(col,vec2(1.80*w,-3.16*h),0.41);\x0atotal_weight+=sampleScreen(col,vec2(0.83*w,3.65*h),0.38);\x0atotal_weight+=sampleScreen(col,vec2(-3.16*w,-2.19*h),0.34);\x0atotal_weight+=sampleScreen(col,vec2(3.92*w,-0.53*h),0.31);\x0atotal_weight+=sampleScreen(col,vec2(-2.59*w,3.12*h),0.26);\x0atotal_weight+=sampleScreen(col,vec2(-0.20*w,-4.15*h),0.22);\x0atotal_weight+=sampleScreen(col,vec2(3.02*w,3.00*h),0.15);\x0a}\x0acol/=total_weight;\x0a\x0aif\x20(darken>0.0)\x20{\x0acol.rgb*=clamp(0.3,1.0,1.05-size*0.5*darken);\x0a}\x0a\x0a\x0a\x0a\x0areturn\x20col;\x0a}\x0avoid\x20main(void)\x0a{\x0a\x0acentered_screen_pos=vec2(vUV.x-0.5,vUV.y-0.5);\x0aradius2=centered_screen_pos.x*centered_screen_pos.x+centered_screen_pos.y*centered_screen_pos.y;\x0aradius=sqrt(radius2);\x0adistorted_coords=getDistortedCoords(vUV);\x0avec2\x20texels_coords=vec2(vUV.x*screen_width,vUV.y*screen_height);\x0afloat\x20depth=texture2D(depthSampler,distorted_coords).r;\x0afloat\x20distance=near+(far-near)*depth;\x0avec4\x20color=texture2D(textureSampler,vUV);\x0a\x0a\x0afloat\x20coc=abs(aperture*(screen_distance*(inverse_focal_length-1.0/distance)-1.0));\x0a\x0aif\x20(dof_enabled\x20==\x20false\x20||\x20coc<0.07)\x20{\x20coc=0.0;\x20}\x0a\x0afloat\x20edge_blur_amount=0.0;\x0aif\x20(edge_blur>0.0)\x20{\x0aedge_blur_amount=clamp((radius*2.0-1.0+0.15*edge_blur)*1.5,0.0,1.0)*1.3;\x0a}\x0a\x0afloat\x20blur_amount=max(edge_blur_amount,coc);\x0a\x0aif\x20(blur_amount\x20==\x200.0)\x20{\x0agl_FragColor=texture2D(textureSampler,distorted_coords);\x0a}\x0aelse\x20{\x0a\x0agl_FragColor=getBlurColor(blur_amount*1.7);\x0a\x0aif\x20(highlights)\x20{\x0agl_FragColor.rgb+=clamp(coc,0.0,1.0)*texture2D(highlightsSampler,distorted_coords).rgb;\x0a}\x0aif\x20(blur_noise)\x20{\x0a\x0avec2\x20noise=rand(distorted_coords)*0.01*blur_amount;\x0avec2\x20blurred_coord=vec2(distorted_coords.x+noise.x,distorted_coords.y+noise.y);\x0agl_FragColor=0.04*texture2D(textureSampler,blurred_coord)+0.96*gl_FragColor;\x0a}\x0a}\x0a\x0aif\x20(grain_amount>0.0)\x20{\x0avec4\x20grain_color=texture2D(grainSampler,texels_coords*0.003);\x0agl_FragColor.rgb+=(-0.5+grain_color.rgb)*0.30*grain_amount;\x0a}\x0a}\x0a'; _0x3e9e56['a']['ShadersStore']['depthOfFieldPixelShader'] = _0x4b2601; var _0x130fd0 = function(_0x51ab77) { function _0xdb41a4(_0x58dc69, _0x4cf720, _0x172adc, _0x3bf30d, _0x2217c5) { void 0x0 === _0x3bf30d && (_0x3bf30d = 0x1); var _0x345257 = _0x51ab77['call'](this, _0x172adc['getEngine'](), _0x58dc69) || this; return _0x345257['LensChromaticAberrationEffect'] = 'LensChromaticAberrationEffect', _0x345257['HighlightsEnhancingEffect'] = 'HighlightsEnhancingEffect', _0x345257['LensDepthOfFieldEffect'] = 'LensDepthOfFieldEffect', _0x345257['_pentagonBokehIsEnabled'] = !0x1, _0x345257['_scene'] = _0x172adc, _0x345257['_depthTexture'] = _0x172adc['enableDepthRenderer']()['getDepthMap'](), _0x4cf720['grain_texture'] ? _0x345257['_grainTexture'] = _0x4cf720['grain_texture'] : _0x345257['_createGrainTexture'](), _0x345257['_edgeBlur'] = _0x4cf720['edge_blur'] ? _0x4cf720['edge_blur'] : 0x0, _0x345257['_grainAmount'] = _0x4cf720['grain_amount'] ? _0x4cf720['grain_amount'] : 0x0, _0x345257['_chromaticAberration'] = _0x4cf720['chromatic_aberration'] ? _0x4cf720['chromatic_aberration'] : 0x0, _0x345257['_distortion'] = _0x4cf720['distortion'] ? _0x4cf720['distortion'] : 0x0, _0x345257['_highlightsGain'] = void 0x0 !== _0x4cf720['dof_gain'] ? _0x4cf720['dof_gain'] : -0x1, _0x345257['_highlightsThreshold'] = _0x4cf720['dof_threshold'] ? _0x4cf720['dof_threshold'] : 0x1, _0x345257['_dofDistance'] = void 0x0 !== _0x4cf720['dof_focus_distance'] ? _0x4cf720['dof_focus_distance'] : -0x1, _0x345257['_dofAperture'] = _0x4cf720['dof_aperture'] ? _0x4cf720['dof_aperture'] : 0x1, _0x345257['_dofDarken'] = _0x4cf720['dof_darken'] ? _0x4cf720['dof_darken'] : 0x0, _0x345257['_dofPentagon'] = void 0x0 === _0x4cf720['dof_pentagon'] || _0x4cf720['dof_pentagon'], _0x345257['_blurNoise'] = void 0x0 === _0x4cf720['blur_noise'] || _0x4cf720['blur_noise'], _0x345257['_createChromaticAberrationPostProcess'](_0x3bf30d), _0x345257['_createHighlightsPostProcess'](_0x3bf30d), _0x345257['_createDepthOfFieldPostProcess'](_0x3bf30d / 0x4), _0x345257['addEffect'](new _0x25710c(_0x172adc['getEngine'](),_0x345257['LensChromaticAberrationEffect'],function() { return _0x345257['_chromaticAberrationPostProcess']; } ,!0x0)), _0x345257['addEffect'](new _0x25710c(_0x172adc['getEngine'](),_0x345257['HighlightsEnhancingEffect'],function() { return _0x345257['_highlightsPostProcess']; } ,!0x0)), _0x345257['addEffect'](new _0x25710c(_0x172adc['getEngine'](),_0x345257['LensDepthOfFieldEffect'],function() { return _0x345257['_depthOfFieldPostProcess']; } ,!0x0)), -0x1 === _0x345257['_highlightsGain'] && _0x345257['_disableEffect'](_0x345257['HighlightsEnhancingEffect'], null), _0x172adc['postProcessRenderPipelineManager']['addPipeline'](_0x345257), _0x2217c5 && _0x172adc['postProcessRenderPipelineManager']['attachCamerasToRenderPipeline'](_0x58dc69, _0x2217c5), _0x345257; } return _0x420e5b['d'](_0xdb41a4, _0x51ab77), _0xdb41a4['prototype']['getClassName'] = function() { return 'LensRenderingPipeline'; } , Object['defineProperty'](_0xdb41a4['prototype'], 'scene', { 'get': function() { return this['_scene']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdb41a4['prototype'], 'edgeBlur', { 'get': function() { return this['_edgeBlur']; }, 'set': function(_0x59eadf) { this['setEdgeBlur'](_0x59eadf); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdb41a4['prototype'], 'grainAmount', { 'get': function() { return this['_grainAmount']; }, 'set': function(_0x284d3a) { this['setGrainAmount'](_0x284d3a); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdb41a4['prototype'], 'chromaticAberration', { 'get': function() { return this['_chromaticAberration']; }, 'set': function(_0x20767d) { this['setChromaticAberration'](_0x20767d); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdb41a4['prototype'], 'dofAperture', { 'get': function() { return this['_dofAperture']; }, 'set': function(_0x346dab) { this['setAperture'](_0x346dab); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdb41a4['prototype'], 'edgeDistortion', { 'get': function() { return this['_distortion']; }, 'set': function(_0x2f6de3) { this['setEdgeDistortion'](_0x2f6de3); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdb41a4['prototype'], 'dofDistortion', { 'get': function() { return this['_dofDistance']; }, 'set': function(_0x312d9b) { this['setFocusDistance'](_0x312d9b); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdb41a4['prototype'], 'darkenOutOfFocus', { 'get': function() { return this['_dofDarken']; }, 'set': function(_0x4e0dfc) { this['setDarkenOutOfFocus'](_0x4e0dfc); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdb41a4['prototype'], 'blurNoise', { 'get': function() { return this['_blurNoise']; }, 'set': function(_0x576d7d) { this['_blurNoise'] = _0x576d7d; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdb41a4['prototype'], 'pentagonBokeh', { 'get': function() { return this['_pentagonBokehIsEnabled']; }, 'set': function(_0x7df3c6) { _0x7df3c6 ? this['enablePentagonBokeh']() : this['disablePentagonBokeh'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdb41a4['prototype'], 'highlightsGain', { 'get': function() { return this['_highlightsGain']; }, 'set': function(_0x2ecd4c) { this['setHighlightsGain'](_0x2ecd4c); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0xdb41a4['prototype'], 'highlightsThreshold', { 'get': function() { return this['_highlightsThreshold']; }, 'set': function(_0x2aa20e) { this['setHighlightsThreshold'](_0x2aa20e); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xdb41a4['prototype']['setEdgeBlur'] = function(_0x349c79) { this['_edgeBlur'] = _0x349c79; } , _0xdb41a4['prototype']['disableEdgeBlur'] = function() { this['_edgeBlur'] = 0x0; } , _0xdb41a4['prototype']['setGrainAmount'] = function(_0x719d79) { this['_grainAmount'] = _0x719d79; } , _0xdb41a4['prototype']['disableGrain'] = function() { this['_grainAmount'] = 0x0; } , _0xdb41a4['prototype']['setChromaticAberration'] = function(_0x479689) { this['_chromaticAberration'] = _0x479689; } , _0xdb41a4['prototype']['disableChromaticAberration'] = function() { this['_chromaticAberration'] = 0x0; } , _0xdb41a4['prototype']['setEdgeDistortion'] = function(_0x394126) { this['_distortion'] = _0x394126; } , _0xdb41a4['prototype']['disableEdgeDistortion'] = function() { this['_distortion'] = 0x0; } , _0xdb41a4['prototype']['setFocusDistance'] = function(_0x2ed0a1) { this['_dofDistance'] = _0x2ed0a1; } , _0xdb41a4['prototype']['disableDepthOfField'] = function() { this['_dofDistance'] = -0x1; } , _0xdb41a4['prototype']['setAperture'] = function(_0x190d79) { this['_dofAperture'] = _0x190d79; } , _0xdb41a4['prototype']['setDarkenOutOfFocus'] = function(_0x1ee6e5) { this['_dofDarken'] = _0x1ee6e5; } , _0xdb41a4['prototype']['enablePentagonBokeh'] = function() { this['_highlightsPostProcess']['updateEffect']('#define\x20PENTAGON\x0a'), this['_pentagonBokehIsEnabled'] = !0x0; } , _0xdb41a4['prototype']['disablePentagonBokeh'] = function() { this['_pentagonBokehIsEnabled'] = !0x1, this['_highlightsPostProcess']['updateEffect'](); } , _0xdb41a4['prototype']['enableNoiseBlur'] = function() { this['_blurNoise'] = !0x0; } , _0xdb41a4['prototype']['disableNoiseBlur'] = function() { this['_blurNoise'] = !0x1; } , _0xdb41a4['prototype']['setHighlightsGain'] = function(_0x821219) { this['_highlightsGain'] = _0x821219; } , _0xdb41a4['prototype']['setHighlightsThreshold'] = function(_0x261de3) { -0x1 === this['_highlightsGain'] && (this['_highlightsGain'] = 0x1), this['_highlightsThreshold'] = _0x261de3; } , _0xdb41a4['prototype']['disableHighlights'] = function() { this['_highlightsGain'] = -0x1; } , _0xdb41a4['prototype']['dispose'] = function(_0x838248) { void 0x0 === _0x838248 && (_0x838248 = !0x1), this['_scene']['postProcessRenderPipelineManager']['detachCamerasFromRenderPipeline'](this['_name'], this['_scene']['cameras']), this['_chromaticAberrationPostProcess'] = null, this['_highlightsPostProcess'] = null, this['_depthOfFieldPostProcess'] = null, this['_grainTexture']['dispose'](), _0x838248 && this['_scene']['disableDepthRenderer'](); } , _0xdb41a4['prototype']['_createChromaticAberrationPostProcess'] = function(_0x42a2cd) { var _0x536c5e = this; this['_chromaticAberrationPostProcess'] = new _0x1f5ab5('LensChromaticAberration','chromaticAberration',['chromatic_aberration', 'screen_width', 'screen_height', 'direction', 'radialIntensity', 'centerPosition'],[],_0x42a2cd,null,_0x11d14a['a']['TRILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1), this['_chromaticAberrationPostProcess']['onApply'] = function(_0x2ba4fc) { _0x2ba4fc['setFloat']('chromatic_aberration', _0x536c5e['_chromaticAberration']), _0x2ba4fc['setFloat']('screen_width', _0x536c5e['_scene']['getEngine']()['getRenderWidth']()), _0x2ba4fc['setFloat']('screen_height', _0x536c5e['_scene']['getEngine']()['getRenderHeight']()), _0x2ba4fc['setFloat']('radialIntensity', 0x1), _0x2ba4fc['setFloat2']('direction', 0x11, 0x11), _0x2ba4fc['setFloat2']('centerPosition', 0.5, 0.5); } ; } , _0xdb41a4['prototype']['_createHighlightsPostProcess'] = function(_0x29c4a0) { var _0x30b086 = this; this['_highlightsPostProcess'] = new _0x1f5ab5('LensHighlights','lensHighlights',['gain', 'threshold', 'screen_width', 'screen_height'],[],_0x29c4a0,null,_0x11d14a['a']['TRILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1,this['_dofPentagon'] ? '#define\x20PENTAGON\x0a' : ''), this['_highlightsPostProcess']['onApply'] = function(_0x34084d) { _0x34084d['setFloat']('gain', _0x30b086['_highlightsGain']), _0x34084d['setFloat']('threshold', _0x30b086['_highlightsThreshold']), _0x34084d['setTextureFromPostProcess']('textureSampler', _0x30b086['_chromaticAberrationPostProcess']), _0x34084d['setFloat']('screen_width', _0x30b086['_scene']['getEngine']()['getRenderWidth']()), _0x34084d['setFloat']('screen_height', _0x30b086['_scene']['getEngine']()['getRenderHeight']()); } ; } , _0xdb41a4['prototype']['_createDepthOfFieldPostProcess'] = function(_0x17e4ea) { var _0x4da822 = this; this['_depthOfFieldPostProcess'] = new _0x1f5ab5('LensDepthOfField','depthOfField',['grain_amount', 'blur_noise', 'screen_width', 'screen_height', 'distortion', 'dof_enabled', 'screen_distance', 'aperture', 'darken', 'edge_blur', 'highlights', 'near', 'far'],['depthSampler', 'grainSampler', 'highlightsSampler'],_0x17e4ea,null,_0x11d14a['a']['TRILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1), this['_depthOfFieldPostProcess']['onApply'] = function(_0xb99d3b) { _0xb99d3b['setTexture']('depthSampler', _0x4da822['_depthTexture']), _0xb99d3b['setTexture']('grainSampler', _0x4da822['_grainTexture']), _0xb99d3b['setTextureFromPostProcess']('textureSampler', _0x4da822['_highlightsPostProcess']), _0xb99d3b['setTextureFromPostProcess']('highlightsSampler', _0x4da822['_depthOfFieldPostProcess']), _0xb99d3b['setFloat']('grain_amount', _0x4da822['_grainAmount']), _0xb99d3b['setBool']('blur_noise', _0x4da822['_blurNoise']), _0xb99d3b['setFloat']('screen_width', _0x4da822['_scene']['getEngine']()['getRenderWidth']()), _0xb99d3b['setFloat']('screen_height', _0x4da822['_scene']['getEngine']()['getRenderHeight']()), _0xb99d3b['setFloat']('distortion', _0x4da822['_distortion']), _0xb99d3b['setBool']('dof_enabled', -0x1 !== _0x4da822['_dofDistance']), _0xb99d3b['setFloat']('screen_distance', 0x1 / (0.1 - 0x1 / _0x4da822['_dofDistance'])), _0xb99d3b['setFloat']('aperture', _0x4da822['_dofAperture']), _0xb99d3b['setFloat']('darken', _0x4da822['_dofDarken']), _0xb99d3b['setFloat']('edge_blur', _0x4da822['_edgeBlur']), _0xb99d3b['setBool']('highlights', -0x1 !== _0x4da822['_highlightsGain']), _0x4da822['_scene']['activeCamera'] && (_0xb99d3b['setFloat']('near', _0x4da822['_scene']['activeCamera']['minZ']), _0xb99d3b['setFloat']('far', _0x4da822['_scene']['activeCamera']['maxZ'])); } ; } , _0xdb41a4['prototype']['_createGrainTexture'] = function() { this['_grainTexture'] = new _0x527e2f('LensNoiseTexture',0x200,this['_scene'],!0x1,_0x11d14a['a']['BILINEAR_SAMPLINGMODE']), this['_grainTexture']['wrapU'] = _0x11d14a['a']['WRAP_ADDRESSMODE'], this['_grainTexture']['wrapV'] = _0x11d14a['a']['WRAP_ADDRESSMODE']; for (var _0x2a38ce, _0x4dafd8, _0x298d8f, _0x8d911a = this['_grainTexture']['getContext'](), _0x130d2e = 0x0; _0x130d2e < 0x200; _0x130d2e++) for (var _0x4cd1ae = 0x0; _0x4cd1ae < 0x200; _0x4cd1ae++) _0x2a38ce = Math['floor'](0xff * (_0x4dafd8 = 0.42, _0x298d8f = 0.58, Math['random']() * (_0x298d8f - _0x4dafd8) + _0x4dafd8)), _0x8d911a['fillStyle'] = 'rgb(' + _0x2a38ce + ',\x20' + _0x2a38ce + ',\x20' + _0x2a38ce + ')', _0x8d911a['fillRect'](_0x130d2e, _0x4cd1ae, 0x1, 0x1); this['_grainTexture']['update'](!0x1); } , _0xdb41a4; }(_0x27ecaf) , _0x56e895 = '\x0aprecision\x20highp\x20float;\x0auniform\x20sampler2D\x20textureSampler;\x0auniform\x20float\x20near;\x0auniform\x20float\x20far;\x0auniform\x20float\x20radius;\x0afloat\x20scales[16]=float[16](\x0a0.1,\x0a0.11406250000000001,\x0a0.131640625,\x0a0.15625,\x0a0.187890625,\x0a0.2265625,\x0a0.272265625,\x0a0.325,\x0a0.384765625,\x0a0.4515625,\x0a0.525390625,\x0a0.60625,\x0a0.694140625,\x0a0.7890625,\x0a0.891015625,\x0a1.0\x0a);\x0avarying\x20vec2\x20vUV;\x0afloat\x20perspectiveDepthToViewZ(\x20const\x20in\x20float\x20invClipZ,const\x20in\x20float\x20near,const\x20in\x20float\x20far\x20)\x20{\x0areturn\x20(\x20near*far\x20)/(\x20(\x20far-near\x20)*invClipZ-far\x20);\x0a}\x0afloat\x20viewZToPerspectiveDepth(\x20const\x20in\x20float\x20viewZ,const\x20in\x20float\x20near,const\x20in\x20float\x20far\x20)\x20{\x0areturn\x20(\x20near*far/viewZ+far)/(\x20far-near\x20);\x0a}\x0afloat\x20viewZToOrthographicDepth(\x20const\x20in\x20float\x20viewZ,const\x20in\x20float\x20near,const\x20in\x20float\x20far\x20)\x20{\x0areturn\x20(\x20viewZ+near\x20)/(\x20near-far\x20);\x0a}\x0a#ifdef\x20SSAO\x0auniform\x20sampler2D\x20randomSampler;\x0auniform\x20sampler2D\x20normalSampler;\x0auniform\x20float\x20randTextureTiles;\x0auniform\x20float\x20samplesFactor;\x0auniform\x20vec3\x20sampleSphere[SAMPLES];\x0auniform\x20float\x20totalStrength;\x0auniform\x20float\x20base;\x0auniform\x20float\x20xViewport;\x0auniform\x20float\x20yViewport;\x0auniform\x20float\x20maxZ;\x0auniform\x20float\x20minZAspect;\x0auniform\x20vec2\x20texelSize;\x0auniform\x20mat4\x20projection;\x0avoid\x20main()\x0a{\x0avec3\x20random=texture2D(randomSampler,vUV*randTextureTiles).rgb;\x0afloat\x20depth=texture2D(textureSampler,vUV).r;\x0afloat\x20depthSign=depth/abs(depth);\x0adepth=depth*depthSign;\x0avec3\x20normal=texture2D(normalSampler,vUV).rgb;\x0afloat\x20occlusion=0.0;\x0afloat\x20correctedRadius=min(radius,minZAspect*depth/near);\x0avec3\x20vViewRay=vec3((vUV.x*2.0-1.0)*xViewport,(vUV.y*2.0-1.0)*yViewport,depthSign);\x0avec3\x20origin=vViewRay*depth;\x0avec3\x20rvec=random*2.0-1.0;\x0arvec.z=0.0;\x0a\x0afloat\x20dotProduct=dot(rvec,normal);\x0arvec=1.0-abs(dotProduct)>1e-2\x20?\x20rvec\x20:\x20vec3(-rvec.y,0.0,rvec.x);\x0avec3\x20tangent=normalize(rvec-normal*dot(rvec,normal));\x0avec3\x20bitangent=cross(normal,tangent);\x0amat3\x20tbn=mat3(tangent,bitangent,normal);\x0afloat\x20difference;\x0afor\x20(int\x20i=0;\x20i1.0\x20||\x20offset.y>1.0)\x20{\x0acontinue;\x0a}\x0a\x0afloat\x20sampleDepth=abs(texture2D(textureSampler,offset.xy).r);\x0a\x0adifference=depthSign*samplePosition.z-sampleDepth;\x0afloat\x20rangeCheck=1.0-smoothstep(correctedRadius*0.5,correctedRadius,difference);\x0aocclusion+=(difference>=0.0\x20?\x201.0\x20:\x200.0)*rangeCheck;\x0a}\x0aocclusion=occlusion*(1.0-smoothstep(maxZ*0.75,maxZ,depth));\x0afloat\x20ao=1.0-totalStrength*occlusion*samplesFactor;\x0afloat\x20result=clamp(ao+base,0.0,1.0);\x0agl_FragColor=vec4(vec3(result),1.0);\x0a}\x0a#endif\x0a#ifdef\x20BILATERAL_BLUR\x0auniform\x20sampler2D\x20depthSampler;\x0auniform\x20float\x20outSize;\x0auniform\x20float\x20samplerOffsets[SAMPLES];\x0avec4\x20blur9(sampler2D\x20image,vec2\x20uv,float\x20resolution,vec2\x20direction)\x20{\x0avec4\x20color=vec4(0.0);\x0avec2\x20off1=vec2(1.3846153846)*direction;\x0avec2\x20off2=vec2(3.2307692308)*direction;\x0acolor+=texture2D(image,uv)*0.2270270270;\x0acolor+=texture2D(image,uv+(off1/resolution))*0.3162162162;\x0acolor+=texture2D(image,uv-(off1/resolution))*0.3162162162;\x0acolor+=texture2D(image,uv+(off2/resolution))*0.0702702703;\x0acolor+=texture2D(image,uv-(off2/resolution))*0.0702702703;\x0areturn\x20color;\x0a}\x0avec4\x20blur13(sampler2D\x20image,vec2\x20uv,float\x20resolution,vec2\x20direction)\x20{\x0avec4\x20color=vec4(0.0);\x0avec2\x20off1=vec2(1.411764705882353)*direction;\x0avec2\x20off2=vec2(3.2941176470588234)*direction;\x0avec2\x20off3=vec2(5.176470588235294)*direction;\x0acolor+=texture2D(image,uv)*0.1964825501511404;\x0acolor+=texture2D(image,uv+(off1/resolution))*0.2969069646728344;\x0acolor+=texture2D(image,uv-(off1/resolution))*0.2969069646728344;\x0acolor+=texture2D(image,uv+(off2/resolution))*0.09447039785044732;\x0acolor+=texture2D(image,uv-(off2/resolution))*0.09447039785044732;\x0acolor+=texture2D(image,uv+(off3/resolution))*0.010381362401148057;\x0acolor+=texture2D(image,uv-(off3/resolution))*0.010381362401148057;\x0areturn\x20color;\x0a}\x0avec4\x20blur13Bilateral(sampler2D\x20image,vec2\x20uv,float\x20resolution,vec2\x20direction)\x20{\x0avec4\x20color=vec4(0.0);\x0avec2\x20off1=vec2(1.411764705882353)*direction;\x0avec2\x20off2=vec2(3.2941176470588234)*direction;\x0avec2\x20off3=vec2(5.176470588235294)*direction;\x0afloat\x20compareDepth=abs(texture2D(depthSampler,uv).r);\x0afloat\x20sampleDepth;\x0afloat\x20weight;\x0afloat\x20weightSum=30.0;\x0acolor+=texture2D(image,uv)*30.0;\x0asampleDepth=abs(texture2D(depthSampler,uv+(off1/resolution)).r);\x0aweight=clamp(1.0/(\x200.003+abs(compareDepth-sampleDepth)),0.0,30.0);\x0aweightSum+=weight;\x0acolor+=texture2D(image,uv+(off1/resolution))*weight;\x0asampleDepth=abs(texture2D(depthSampler,uv-(off1/resolution)).r);\x0aweight=clamp(1.0/(\x200.003+abs(compareDepth-sampleDepth)),0.0,30.0);\x0aweightSum+=weight;\x0acolor+=texture2D(image,uv-(off1/resolution))*weight;\x0asampleDepth=abs(texture2D(depthSampler,uv+(off2/resolution)).r);\x0aweight=clamp(1.0/(\x200.003+abs(compareDepth-sampleDepth)),0.0,30.0);\x0aweightSum+=weight;\x0acolor+=texture2D(image,uv+(off2/resolution))*weight;\x0asampleDepth=abs(texture2D(depthSampler,uv-(off2/resolution)).r);\x0aweight=clamp(1.0/(\x200.003+abs(compareDepth-sampleDepth)),0.0,30.0);\x0aweightSum+=weight;\x0acolor+=texture2D(image,uv-(off2/resolution))*weight;\x0asampleDepth=abs(texture2D(depthSampler,uv+(off3/resolution)).r);\x0aweight=clamp(1.0/(\x200.003+abs(compareDepth-sampleDepth)),0.0,30.0);\x0aweightSum+=weight;\x0acolor+=texture2D(image,uv+(off3/resolution))*weight;\x0asampleDepth=abs(texture2D(depthSampler,uv-(off3/resolution)).r);\x0aweight=clamp(1.0/(\x200.003+abs(compareDepth-sampleDepth)),0.0,30.0);\x0aweightSum+=weight;\x0acolor+=texture2D(image,uv-(off3/resolution))*weight;\x0areturn\x20color/weightSum;\x0a}\x0avoid\x20main()\x0a{\x0a#if\x20EXPENSIVE\x0afloat\x20compareDepth=abs(texture2D(depthSampler,vUV).r);\x0afloat\x20texelsize=1.0/outSize;\x0afloat\x20result=0.0;\x0afloat\x20weightSum=0.0;\x0afor\x20(int\x20i=0;\x20i 0x0 ? _0x473fab['_ssaoCombinePostProcess']['width'] : _0x473fab['_originalColorPostProcess']['width']), _0x5996ab['setFloat']('near', _0x473fab['_scene']['activeCamera']['minZ']), _0x5996ab['setFloat']('far', _0x473fab['_scene']['activeCamera']['maxZ']), _0x5996ab['setFloat']('radius', _0x473fab['radius']), _0x5996ab['setTexture']('depthSampler', _0x473fab['_depthTexture']), _0x473fab['_firstUpdate'] && _0x5996ab['setArray']('samplerOffsets', _0x473fab['_samplerOffsets'])); } , this['_blurVPostProcess'] = new _0x1f5ab5('BlurV','ssao2',['outSize', 'samplerOffsets', 'near', 'far', 'radius'],['depthSampler'],_0x2a6eb8,null,_0x11d14a['a']['TRILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1,'#define\x20BILATERAL_BLUR\x0a#define\x20BILATERAL_BLUR_V\x0a#define\x20SAMPLES\x2016\x0a#define\x20EXPENSIVE\x20' + (_0x448b48 ? '1' : '0') + '\x0a'), this['_blurVPostProcess']['onApply'] = function(_0x34d080) { _0x473fab['_scene']['activeCamera'] && (_0x34d080['setFloat']('outSize', _0x473fab['_ssaoCombinePostProcess']['height'] > 0x0 ? _0x473fab['_ssaoCombinePostProcess']['height'] : _0x473fab['_originalColorPostProcess']['height']), _0x34d080['setFloat']('near', _0x473fab['_scene']['activeCamera']['minZ']), _0x34d080['setFloat']('far', _0x473fab['_scene']['activeCamera']['maxZ']), _0x34d080['setFloat']('radius', _0x473fab['radius']), _0x34d080['setTexture']('depthSampler', _0x473fab['_depthTexture']), _0x473fab['_firstUpdate'] && (_0x34d080['setArray']('samplerOffsets', _0x473fab['_samplerOffsets']), _0x473fab['_firstUpdate'] = !0x1)); } , this['_blurHPostProcess']['samples'] = this['textureSamples'], this['_blurVPostProcess']['samples'] = this['textureSamples']; } , _0x4ac88b['prototype']['_rebuild'] = function() { this['_firstUpdate'] = !0x0, _0x5d96c5['prototype']['_rebuild']['call'](this); } , _0x4ac88b['prototype']['_radicalInverse_VdC'] = function(_0x402b78) { return this['_bits'][0x0] = _0x402b78, this['_bits'][0x0] = (this['_bits'][0x0] << 0x10 | this['_bits'][0x0] >> 0x10) >>> 0x0, this['_bits'][0x0] = (0x55555555 & this['_bits'][0x0]) << 0x1 | (0xaaaaaaaa & this['_bits'][0x0]) >>> 0x1 >>> 0x0, this['_bits'][0x0] = (0x33333333 & this['_bits'][0x0]) << 0x2 | (0xcccccccc & this['_bits'][0x0]) >>> 0x2 >>> 0x0, this['_bits'][0x0] = (0xf0f0f0f & this['_bits'][0x0]) << 0x4 | (0xf0f0f0f0 & this['_bits'][0x0]) >>> 0x4 >>> 0x0, this['_bits'][0x0] = (0xff00ff & this['_bits'][0x0]) << 0x8 | (0xff00ff00 & this['_bits'][0x0]) >>> 0x8 >>> 0x0, 2.3283064365386963e-10 * this['_bits'][0x0]; } , _0x4ac88b['prototype']['_hammersley'] = function(_0x251791, _0x4466c5) { return [_0x251791 / _0x4466c5, this['_radicalInverse_VdC'](_0x251791)]; } , _0x4ac88b['prototype']['_hemisphereSample_uniform'] = function(_0x4cb2de, _0x40b526) { var _0x1165f4 = 0x2 * _0x40b526 * Math['PI'] , _0x40f3e4 = 0x1 - (0.85 * _0x4cb2de + 0.15) , _0x16fc80 = Math['sqrt'](0x1 - _0x40f3e4 * _0x40f3e4); return new _0x47d24f['x'](Math['cos'](_0x1165f4) * _0x16fc80,Math['sin'](_0x1165f4) * _0x16fc80,_0x40f3e4); } , _0x4ac88b['prototype']['_generateHemisphere'] = function() { for (var _0x1b30ad, _0x324a10 = this['samples'], _0xdf3efb = [], _0x4ab255 = 0x0; _0x4ab255 < _0x324a10; ) { if (_0x324a10 < 0x10) _0x1b30ad = this['_hemisphereSample_uniform'](Math['random'](), Math['random']()); else { var _0x3bb7ee = this['_hammersley'](_0x4ab255, _0x324a10); _0x1b30ad = this['_hemisphereSample_uniform'](_0x3bb7ee[0x0], _0x3bb7ee[0x1]); } _0xdf3efb['push'](_0x1b30ad['x'], _0x1b30ad['y'], _0x1b30ad['z']), _0x4ab255++; } return _0xdf3efb; } , _0x4ac88b['prototype']['_createSSAOPostProcess'] = function(_0x1edd8d) { var _0x420cbb = this , _0x361fd2 = this['samples']; this['_sampleSphere'] = this['_generateHemisphere'](), this['_ssaoPostProcess'] = new _0x1f5ab5('ssao2','ssao2',['sampleSphere', 'samplesFactor', 'randTextureTiles', 'totalStrength', 'radius', 'base', 'range', 'projection', 'near', 'far', 'texelSize', 'xViewport', 'yViewport', 'maxZ', 'minZAspect'],['randomSampler', 'normalSampler'],_0x1edd8d,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1,'#define\x20SAMPLES\x20' + _0x361fd2 + '\x0a#define\x20SSAO'), this['_ssaoPostProcess']['onApply'] = function(_0x2133e9) { _0x420cbb['_firstUpdate'] && (_0x2133e9['setArray3']('sampleSphere', _0x420cbb['_sampleSphere']), _0x2133e9['setFloat']('randTextureTiles', 0x20)), _0x420cbb['_scene']['activeCamera'] && (_0x2133e9['setFloat']('samplesFactor', 0x1 / _0x420cbb['samples']), _0x2133e9['setFloat']('totalStrength', _0x420cbb['totalStrength']), _0x2133e9['setFloat2']('texelSize', 0x1 / _0x420cbb['_ssaoPostProcess']['width'], 0x1 / _0x420cbb['_ssaoPostProcess']['height']), _0x2133e9['setFloat']('radius', _0x420cbb['radius']), _0x2133e9['setFloat']('maxZ', _0x420cbb['maxZ']), _0x2133e9['setFloat']('minZAspect', _0x420cbb['minZAspect']), _0x2133e9['setFloat']('base', _0x420cbb['base']), _0x2133e9['setFloat']('near', _0x420cbb['_scene']['activeCamera']['minZ']), _0x2133e9['setFloat']('far', _0x420cbb['_scene']['activeCamera']['maxZ']), _0x2133e9['setFloat']('xViewport', Math['tan'](_0x420cbb['_scene']['activeCamera']['fov'] / 0x2) * _0x420cbb['_scene']['getEngine']()['getAspectRatio'](_0x420cbb['_scene']['activeCamera'], !0x0)), _0x2133e9['setFloat']('yViewport', Math['tan'](_0x420cbb['_scene']['activeCamera']['fov'] / 0x2)), _0x2133e9['setMatrix']('projection', _0x420cbb['_scene']['getProjectionMatrix']()), _0x2133e9['setTexture']('textureSampler', _0x420cbb['_depthTexture']), _0x2133e9['setTexture']('normalSampler', _0x420cbb['_normalTexture']), _0x2133e9['setTexture']('randomSampler', _0x420cbb['_randomTexture'])); } , this['_ssaoPostProcess']['samples'] = this['textureSamples']; } , _0x4ac88b['prototype']['_createSSAOCombinePostProcess'] = function(_0x54fc7c) { var _0x4c5c51 = this; this['_ssaoCombinePostProcess'] = new _0x1f5ab5('ssaoCombine','ssaoCombine',[],['originalColor', 'viewport'],_0x54fc7c,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],this['_scene']['getEngine'](),!0x1), this['_ssaoCombinePostProcess']['onApply'] = function(_0x4aef9b) { var _0x35d4b2 = _0x4c5c51['_scene']['activeCamera']['viewport']; _0x4aef9b['setVector4']('viewport', _0x47d24f['t']['Vector4'][0x0]['copyFromFloats'](_0x35d4b2['x'], _0x35d4b2['y'], _0x35d4b2['width'], _0x35d4b2['height'])), _0x4aef9b['setTextureFromPostProcess']('originalColor', _0x4c5c51['_originalColorPostProcess']); } , this['_ssaoCombinePostProcess']['samples'] = this['textureSamples']; } , _0x4ac88b['prototype']['_createRandomTexture'] = function() { this['_randomTexture'] = new _0x527e2f('SSAORandomTexture',0x80,this['_scene'],!0x1,_0x11d14a['a']['TRILINEAR_SAMPLINGMODE']), this['_randomTexture']['wrapU'] = _0x11d14a['a']['WRAP_ADDRESSMODE'], this['_randomTexture']['wrapV'] = _0x11d14a['a']['WRAP_ADDRESSMODE']; for (var _0x7fa8e3 = this['_randomTexture']['getContext'](), _0xdd5529 = function(_0x2701cf, _0x4b83a3) { return Math['random']() * (_0x4b83a3 - _0x2701cf) + _0x2701cf; }, _0x3072c5 = _0x47d24f['x']['Zero'](), _0x2868dc = 0x0; _0x2868dc < 0x80; _0x2868dc++) for (var _0x450bfd = 0x0; _0x450bfd < 0x80; _0x450bfd++) _0x3072c5['x'] = _0xdd5529(0x0, 0x1), _0x3072c5['y'] = _0xdd5529(0x0, 0x1), _0x3072c5['z'] = 0x0, _0x3072c5['normalize'](), _0x3072c5['scaleInPlace'](0xff), _0x3072c5['x'] = Math['floor'](_0x3072c5['x']), _0x3072c5['y'] = Math['floor'](_0x3072c5['y']), _0x7fa8e3['fillStyle'] = 'rgb(' + _0x3072c5['x'] + ',\x20' + _0x3072c5['y'] + ',\x20' + _0x3072c5['z'] + ')', _0x7fa8e3['fillRect'](_0x2868dc, _0x450bfd, 0x1, 0x1); this['_randomTexture']['update'](!0x1); } , _0x4ac88b['prototype']['serialize'] = function() { var _0xfc3345 = _0x3d4764['a']['Serialize'](this); return _0xfc3345['customType'] = 'SSAO2RenderingPipeline', _0xfc3345; } , _0x4ac88b['Parse'] = function(_0x3c8d74, _0xadfa9, _0x413f72) { return _0x3d4764['a']['Parse'](function() { return new _0x4ac88b(_0x3c8d74['_name'],_0xadfa9,_0x3c8d74['_ratio']); }, _0x3c8d74, _0xadfa9, _0x413f72); } , _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4ac88b['prototype'], 'totalStrength', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4ac88b['prototype'], 'maxZ', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4ac88b['prototype'], 'minZAspect', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])('samples')], _0x4ac88b['prototype'], '_samples', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])('textureSamples')], _0x4ac88b['prototype'], '_textureSamples', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4ac88b['prototype'], '_ratio', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])('expensiveBlur')], _0x4ac88b['prototype'], '_expensiveBlur', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4ac88b['prototype'], 'radius', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4ac88b['prototype'], 'base', void 0x0), _0x4ac88b; }(_0x27ecaf); _0x376b99['a']['RegisteredTypes']['BABYLON.SSAO2RenderingPipeline'] = _0x381851; var _0x4d7854 = '\x0auniform\x20sampler2D\x20textureSampler;\x0avarying\x20vec2\x20vUV;\x0a#ifdef\x20SSAO\x0auniform\x20sampler2D\x20randomSampler;\x0auniform\x20float\x20randTextureTiles;\x0auniform\x20float\x20samplesFactor;\x0auniform\x20vec3\x20sampleSphere[SAMPLES];\x0auniform\x20float\x20totalStrength;\x0auniform\x20float\x20radius;\x0auniform\x20float\x20area;\x0auniform\x20float\x20fallOff;\x0auniform\x20float\x20base;\x0avec3\x20normalFromDepth(float\x20depth,vec2\x20coords)\x0a{\x0avec2\x20offset1=vec2(0.0,radius);\x0avec2\x20offset2=vec2(radius,0.0);\x0afloat\x20depth1=texture2D(textureSampler,coords+offset1).r;\x0afloat\x20depth2=texture2D(textureSampler,coords+offset2).r;\x0avec3\x20p1=vec3(offset1,depth1-depth);\x0avec3\x20p2=vec3(offset2,depth2-depth);\x0avec3\x20normal=cross(p1,p2);\x0anormal.z=-normal.z;\x0areturn\x20normalize(normal);\x0a}\x0avoid\x20main()\x0a{\x0avec3\x20random=normalize(texture2D(randomSampler,vUV*randTextureTiles).rgb);\x0afloat\x20depth=texture2D(textureSampler,vUV).r;\x0avec3\x20position=vec3(vUV,depth);\x0avec3\x20normal=normalFromDepth(depth,vUV);\x0afloat\x20radiusDepth=radius/depth;\x0afloat\x20occlusion=0.0;\x0avec3\x20ray;\x0avec3\x20hemiRay;\x0afloat\x20occlusionDepth;\x0afloat\x20difference;\x0afor\x20(int\x20i=0;\x20i 0x1 && _0x3f98cb['a']['Warn']('MSAA\x20failed\x20to\x20enable,\x20MSAA\x20is\x20only\x20supported\x20in\x20browsers\x20that\x20support\x20webGL\x20>=\x202.0'); } , _0x4c2b37['prototype']['_createDownSampleX4PostProcess'] = function(_0x58f136, _0x40beb9) { var _0x590771 = this , _0x28a454 = new Array(0x20); this['downSampleX4PostProcess'] = new _0x1f5ab5('HDRDownSampleX4','standard',['dsOffsets'],[],_0x40beb9,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x58f136['getEngine'](),!0x1,'#define\x20DOWN_SAMPLE_X4',_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), this['downSampleX4PostProcess']['onApply'] = function(_0x52e2ef) { for (var _0x531afd = 0x0, _0x31d25f = _0x590771['downSampleX4PostProcess']['width'], _0x4c3c5f = _0x590771['downSampleX4PostProcess']['height'], _0x24e2cb = -0x2; _0x24e2cb < 0x2; _0x24e2cb++) for (var _0x36061f = -0x2; _0x36061f < 0x2; _0x36061f++) _0x28a454[_0x531afd] = (_0x24e2cb + 0.5) * (0x1 / _0x31d25f), _0x28a454[_0x531afd + 0x1] = (_0x36061f + 0.5) * (0x1 / _0x4c3c5f), _0x531afd += 0x2; _0x52e2ef['setArray2']('dsOffsets', _0x28a454); } , this['addEffect'](new _0x25710c(_0x58f136['getEngine'](),'HDRDownSampleX4',function() { return _0x590771['downSampleX4PostProcess']; } ,!0x0)); } , _0x4c2b37['prototype']['_createBrightPassPostProcess'] = function(_0x17989c, _0x287fa9) { var _0x1cef09 = this , _0x35b4a2 = new Array(0x8); this['brightPassPostProcess'] = new _0x1f5ab5('HDRBrightPass','standard',['dsOffsets', 'brightThreshold'],[],_0x287fa9,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x17989c['getEngine'](),!0x1,'#define\x20BRIGHT_PASS',_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), this['brightPassPostProcess']['onApply'] = function(_0x1557dd) { var _0x458cba = 0x1 / _0x1cef09['brightPassPostProcess']['width'] , _0x3a23e7 = 0x1 / _0x1cef09['brightPassPostProcess']['height']; _0x35b4a2[0x0] = -0.5 * _0x458cba, _0x35b4a2[0x1] = 0.5 * _0x3a23e7, _0x35b4a2[0x2] = 0.5 * _0x458cba, _0x35b4a2[0x3] = 0.5 * _0x3a23e7, _0x35b4a2[0x4] = -0.5 * _0x458cba, _0x35b4a2[0x5] = -0.5 * _0x3a23e7, _0x35b4a2[0x6] = 0.5 * _0x458cba, _0x35b4a2[0x7] = -0.5 * _0x3a23e7, _0x1557dd['setArray2']('dsOffsets', _0x35b4a2), _0x1557dd['setFloat']('brightThreshold', _0x1cef09['brightThreshold']); } , this['addEffect'](new _0x25710c(_0x17989c['getEngine'](),'HDRBrightPass',function() { return _0x1cef09['brightPassPostProcess']; } ,!0x0)); } , _0x4c2b37['prototype']['_createBlurPostProcesses'] = function(_0x16c21a, _0x3a435b, _0x3c8c6f, _0x5eb54d) { var _0x3beb01 = this; void 0x0 === _0x5eb54d && (_0x5eb54d = 'blurWidth'); var _0x1e4a85 = _0x16c21a['getEngine']() , _0x4fcff3 = new _0x1c8af1('HDRBlurH_' + _0x3c8c6f,new _0x47d24f['w'](0x1,0x0),this[_0x5eb54d],_0x3a435b,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x16c21a['getEngine'](),!0x1,_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']) , _0x1c83fd = new _0x1c8af1('HDRBlurV_' + _0x3c8c6f,new _0x47d24f['w'](0x0,0x1),this[_0x5eb54d],_0x3a435b,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x16c21a['getEngine'](),!0x1,_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']); _0x4fcff3['onActivateObservable']['add'](function() { var _0x119d2d = _0x4fcff3['width'] / _0x1e4a85['getRenderWidth'](); _0x4fcff3['kernel'] = _0x3beb01[_0x5eb54d] * _0x119d2d; }), _0x1c83fd['onActivateObservable']['add'](function() { var _0x3e1936 = _0x1c83fd['height'] / _0x1e4a85['getRenderHeight'](); _0x1c83fd['kernel'] = _0x3beb01['horizontalBlur'] ? 0x40 * _0x3e1936 : _0x3beb01[_0x5eb54d] * _0x3e1936; }), this['addEffect'](new _0x25710c(_0x16c21a['getEngine'](),'HDRBlurH' + _0x3c8c6f,function() { return _0x4fcff3; } ,!0x0)), this['addEffect'](new _0x25710c(_0x16c21a['getEngine'](),'HDRBlurV' + _0x3c8c6f,function() { return _0x1c83fd; } ,!0x0)), this['blurHPostProcesses']['push'](_0x4fcff3), this['blurVPostProcesses']['push'](_0x1c83fd); } , _0x4c2b37['prototype']['_createTextureAdderPostProcess'] = function(_0x27878d, _0x462ead) { var _0x751563 = this; this['textureAdderPostProcess'] = new _0x1f5ab5('HDRTextureAdder','standard',['exposure'],['otherSampler', 'lensSampler'],_0x462ead,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x27878d['getEngine'](),!0x1,'#define\x20TEXTURE_ADDER',_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), this['textureAdderPostProcess']['onApply'] = function(_0x1e11d4) { _0x1e11d4['setTextureFromPostProcess']('otherSampler', _0x751563['_vlsEnabled'] ? _0x751563['_currentDepthOfFieldSource'] : _0x751563['originalPostProcess']), _0x1e11d4['setTexture']('lensSampler', _0x751563['lensTexture']), _0x1e11d4['setFloat']('exposure', _0x751563['_currentExposure']), _0x751563['_currentDepthOfFieldSource'] = _0x751563['textureAdderFinalPostProcess']; } , this['addEffect'](new _0x25710c(_0x27878d['getEngine'](),'HDRTextureAdder',function() { return _0x751563['textureAdderPostProcess']; } ,!0x0)); } , _0x4c2b37['prototype']['_createVolumetricLightPostProcess'] = function(_0x12b31b, _0x190911) { var _0x28cee9 = this , _0x3fb3b2 = _0x12b31b['enableGeometryBufferRenderer'](); _0x3fb3b2['enablePosition'] = !0x0; var _0x54b359 = _0x3fb3b2['getGBuffer'](); this['volumetricLightPostProcess'] = new _0x1f5ab5('HDRVLS','standard',['shadowViewProjection', 'cameraPosition', 'sunDirection', 'sunColor', 'scatteringCoefficient', 'scatteringPower', 'depthValues'],['shadowMapSampler', 'positionSampler'],_0x190911 / 0x8,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x12b31b['getEngine'](),!0x1,'#define\x20VLS\x0a#define\x20NB_STEPS\x20' + this['_volumetricLightStepsCount']['toFixed'](0x1)); var _0x268b25 = _0x47d24f['w']['Zero'](); this['volumetricLightPostProcess']['onApply'] = function(_0x3404ec) { if (_0x28cee9['sourceLight'] && _0x28cee9['sourceLight']['getShadowGenerator']() && _0x28cee9['_scene']['activeCamera']) { var _0x1b4620 = _0x28cee9['sourceLight']['getShadowGenerator'](); _0x3404ec['setTexture']('shadowMapSampler', _0x1b4620['getShadowMap']()), _0x3404ec['setTexture']('positionSampler', _0x54b359['textures'][0x2]), _0x3404ec['setColor3']('sunColor', _0x28cee9['sourceLight']['diffuse']), _0x3404ec['setVector3']('sunDirection', _0x28cee9['sourceLight']['getShadowDirection']()), _0x3404ec['setVector3']('cameraPosition', _0x28cee9['_scene']['activeCamera']['globalPosition']), _0x3404ec['setMatrix']('shadowViewProjection', _0x1b4620['getTransformMatrix']()), _0x3404ec['setFloat']('scatteringCoefficient', _0x28cee9['volumetricLightCoefficient']), _0x3404ec['setFloat']('scatteringPower', _0x28cee9['volumetricLightPower']), _0x268b25['x'] = _0x28cee9['sourceLight']['getDepthMinZ'](_0x28cee9['_scene']['activeCamera']), _0x268b25['y'] = _0x28cee9['sourceLight']['getDepthMaxZ'](_0x28cee9['_scene']['activeCamera']), _0x3404ec['setVector2']('depthValues', _0x268b25); } } , this['addEffect'](new _0x25710c(_0x12b31b['getEngine'](),'HDRVLS',function() { return _0x28cee9['volumetricLightPostProcess']; } ,!0x0)), this['_createBlurPostProcesses'](_0x12b31b, _0x190911 / 0x4, 0x0, 'volumetricLightBlurScale'), this['volumetricLightMergePostProces'] = new _0x1f5ab5('HDRVLSMerge','standard',[],['originalSampler'],_0x190911,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x12b31b['getEngine'](),!0x1,'#define\x20VLSMERGE'), this['volumetricLightMergePostProces']['onApply'] = function(_0x470013) { _0x470013['setTextureFromPostProcess']('originalSampler', _0x28cee9['_bloomEnabled'] ? _0x28cee9['textureAdderFinalPostProcess'] : _0x28cee9['originalPostProcess']), _0x28cee9['_currentDepthOfFieldSource'] = _0x28cee9['volumetricLightFinalPostProcess']; } , this['addEffect'](new _0x25710c(_0x12b31b['getEngine'](),'HDRVLSMerge',function() { return _0x28cee9['volumetricLightMergePostProces']; } ,!0x0)); } , _0x4c2b37['prototype']['_createLuminancePostProcesses'] = function(_0x161112, _0x1eda31) { var _0x4ec564 = this , _0x4d0a4e = Math['pow'](0x3, _0x4c2b37['LuminanceSteps']); this['luminancePostProcess'] = new _0x1f5ab5('HDRLuminance','standard',['lumOffsets'],[],{ 'width': _0x4d0a4e, 'height': _0x4d0a4e },null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x161112['getEngine'](),!0x1,'#define\x20LUMINANCE',_0x1eda31); var _0x3f1074 = []; this['luminancePostProcess']['onApply'] = function(_0x1dd15d) { var _0x5f0e8a = 0x1 / _0x4ec564['luminancePostProcess']['width'] , _0x49b5b9 = 0x1 / _0x4ec564['luminancePostProcess']['height']; _0x3f1074[0x0] = -0.5 * _0x5f0e8a, _0x3f1074[0x1] = 0.5 * _0x49b5b9, _0x3f1074[0x2] = 0.5 * _0x5f0e8a, _0x3f1074[0x3] = 0.5 * _0x49b5b9, _0x3f1074[0x4] = -0.5 * _0x5f0e8a, _0x3f1074[0x5] = -0.5 * _0x49b5b9, _0x3f1074[0x6] = 0.5 * _0x5f0e8a, _0x3f1074[0x7] = -0.5 * _0x49b5b9, _0x1dd15d['setArray2']('lumOffsets', _0x3f1074); } , this['addEffect'](new _0x25710c(_0x161112['getEngine'](),'HDRLuminance',function() { return _0x4ec564['luminancePostProcess']; } ,!0x0)); for (var _0x3f82f2 = _0x4c2b37['LuminanceSteps'] - 0x1; _0x3f82f2 >= 0x0; _0x3f82f2--) { _0x4d0a4e = Math['pow'](0x3, _0x3f82f2); var _0x22a798 = '#define\x20LUMINANCE_DOWN_SAMPLE\x0a'; 0x0 === _0x3f82f2 && (_0x22a798 += '#define\x20FINAL_DOWN_SAMPLER'); var _0x206559 = new _0x1f5ab5('HDRLuminanceDownSample' + _0x3f82f2,'standard',['dsOffsets', 'halfDestPixelSize'],[],{ 'width': _0x4d0a4e, 'height': _0x4d0a4e },null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x161112['getEngine'](),!0x1,_0x22a798,_0x1eda31); this['luminanceDownSamplePostProcesses']['push'](_0x206559); } var _0x58a22c = this['luminancePostProcess']; this['luminanceDownSamplePostProcesses']['forEach'](function(_0x24cf7c, _0x2437fe) { var _0x3e7489 = new Array(0x12); _0x24cf7c['onApply'] = function(_0x55c369) { if (_0x58a22c) { for (var _0x91641e = 0x0, _0x1e2cc9 = -0x1; _0x1e2cc9 < 0x2; _0x1e2cc9++) for (var _0x4130bf = -0x1; _0x4130bf < 0x2; _0x4130bf++) _0x3e7489[_0x91641e] = _0x1e2cc9 / _0x58a22c['width'], _0x3e7489[_0x91641e + 0x1] = _0x4130bf / _0x58a22c['height'], _0x91641e += 0x2; _0x55c369['setArray2']('dsOffsets', _0x3e7489), _0x55c369['setFloat']('halfDestPixelSize', 0.5 / _0x58a22c['width']), _0x58a22c = _0x2437fe === _0x4ec564['luminanceDownSamplePostProcesses']['length'] - 0x1 ? _0x4ec564['luminancePostProcess'] : _0x24cf7c; } } , _0x2437fe === _0x4ec564['luminanceDownSamplePostProcesses']['length'] - 0x1 && (_0x24cf7c['onAfterRender'] = function() { var _0xeea214 = _0x161112['getEngine']()['readPixels'](0x0, 0x0, 0x1, 0x1) , _0x2f634b = new _0x47d24f['y'](0x1 / 0xfd02ff,0x1 / 0xfe01,0x1 / 0xff,0x1); _0x4ec564['_hdrCurrentLuminance'] = (_0xeea214[0x0] * _0x2f634b['x'] + _0xeea214[0x1] * _0x2f634b['y'] + _0xeea214[0x2] * _0x2f634b['z'] + _0xeea214[0x3] * _0x2f634b['w']) / 0x64; } ), _0x4ec564['addEffect'](new _0x25710c(_0x161112['getEngine'](),'HDRLuminanceDownSample' + _0x2437fe,function() { return _0x24cf7c; } ,!0x0)); }); } , _0x4c2b37['prototype']['_createHdrPostProcess'] = function(_0x237c53, _0x1a14b4) { var _0x5cfcbe = this , _0x233591 = ['#define\x20HDR']; this['_hdrAutoExposure'] && _0x233591['push']('#define\x20AUTO_EXPOSURE'), this['hdrPostProcess'] = new _0x1f5ab5('HDR','standard',['averageLuminance'],['textureAdderSampler'],_0x1a14b4,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x237c53['getEngine'](),!0x1,_0x233591['join']('\x0a'),_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']); var _0x5f7e5 = 0x1 , _0x5ef671 = 0x0 , _0x57b072 = 0x0; this['hdrPostProcess']['onApply'] = function(_0x282bc2) { if (_0x282bc2['setTextureFromPostProcess']('textureAdderSampler', _0x5cfcbe['_currentDepthOfFieldSource']), _0x5ef671 += _0x237c53['getEngine']()['getDeltaTime'](), _0x5f7e5 < 0x0) _0x5f7e5 = _0x5cfcbe['_hdrCurrentLuminance']; else { var _0x40d1ab = (_0x57b072 - _0x5ef671) / 0x3e8; _0x5cfcbe['_hdrCurrentLuminance'] < _0x5f7e5 + _0x5cfcbe['hdrDecreaseRate'] * _0x40d1ab ? _0x5f7e5 += _0x5cfcbe['hdrDecreaseRate'] * _0x40d1ab : _0x5cfcbe['_hdrCurrentLuminance'] > _0x5f7e5 - _0x5cfcbe['hdrIncreaseRate'] * _0x40d1ab ? _0x5f7e5 -= _0x5cfcbe['hdrIncreaseRate'] * _0x40d1ab : _0x5f7e5 = _0x5cfcbe['_hdrCurrentLuminance']; } _0x5cfcbe['hdrAutoExposure'] ? _0x5cfcbe['_currentExposure'] = _0x5cfcbe['_fixedExposure'] / _0x5f7e5 : (_0x5f7e5 = _0x77cead['a']['Clamp'](_0x5f7e5, _0x5cfcbe['hdrMinimumLuminance'], 0x56bc75e2d63100000), _0x282bc2['setFloat']('averageLuminance', _0x5f7e5)), _0x57b072 = _0x5ef671, _0x5cfcbe['_currentDepthOfFieldSource'] = _0x5cfcbe['hdrFinalPostProcess']; } , this['addEffect'](new _0x25710c(_0x237c53['getEngine'](),'HDR',function() { return _0x5cfcbe['hdrPostProcess']; } ,!0x0)); } , _0x4c2b37['prototype']['_createLensFlarePostProcess'] = function(_0x5039c3, _0x3df61d) { var _0x15e68b = this; this['lensFlarePostProcess'] = new _0x1f5ab5('HDRLensFlare','standard',['strength', 'ghostDispersal', 'haloWidth', 'resolution', 'distortionStrength'],['lensColorSampler'],_0x3df61d / 0x2,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x5039c3['getEngine'](),!0x1,'#define\x20LENS_FLARE',_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), this['addEffect'](new _0x25710c(_0x5039c3['getEngine'](),'HDRLensFlare',function() { return _0x15e68b['lensFlarePostProcess']; } ,!0x0)), this['_createBlurPostProcesses'](_0x5039c3, _0x3df61d / 0x4, 0x2), this['lensFlareComposePostProcess'] = new _0x1f5ab5('HDRLensFlareCompose','standard',['lensStarMatrix'],['otherSampler', 'lensDirtSampler', 'lensStarSampler'],_0x3df61d,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x5039c3['getEngine'](),!0x1,'#define\x20LENS_FLARE_COMPOSE',_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), this['addEffect'](new _0x25710c(_0x5039c3['getEngine'](),'HDRLensFlareCompose',function() { return _0x15e68b['lensFlareComposePostProcess']; } ,!0x0)); var _0x914888 = new _0x47d24f['w'](0x0,0x0); this['lensFlarePostProcess']['onApply'] = function(_0x2938d9) { _0x2938d9['setTextureFromPostProcess']('textureSampler', _0x15e68b['_bloomEnabled'] ? _0x15e68b['blurHPostProcesses'][0x0] : _0x15e68b['originalPostProcess']), _0x2938d9['setTexture']('lensColorSampler', _0x15e68b['lensColorTexture']), _0x2938d9['setFloat']('strength', _0x15e68b['lensFlareStrength']), _0x2938d9['setFloat']('ghostDispersal', _0x15e68b['lensFlareGhostDispersal']), _0x2938d9['setFloat']('haloWidth', _0x15e68b['lensFlareHaloWidth']), _0x914888['x'] = _0x15e68b['lensFlarePostProcess']['width'], _0x914888['y'] = _0x15e68b['lensFlarePostProcess']['height'], _0x2938d9['setVector2']('resolution', _0x914888), _0x2938d9['setFloat']('distortionStrength', _0x15e68b['lensFlareDistortionStrength']); } ; var _0x13ecf5 = _0x47d24f['j']['FromValues'](0x2, 0x0, -0x1, 0x0, 0x0, 0x2, -0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1) , _0x140b4f = _0x47d24f['j']['FromValues'](0.5, 0x0, 0.5, 0x0, 0x0, 0.5, 0.5, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1); this['lensFlareComposePostProcess']['onApply'] = function(_0x2e7faf) { if (_0x15e68b['_scene']['activeCamera']) { _0x2e7faf['setTextureFromPostProcess']('otherSampler', _0x15e68b['_currentDepthOfFieldSource']), _0x2e7faf['setTexture']('lensDirtSampler', _0x15e68b['lensFlareDirtTexture']), _0x2e7faf['setTexture']('lensStarSampler', _0x15e68b['lensStarTexture']); var _0x3c42c2 = _0x15e68b['_scene']['activeCamera']['getViewMatrix']()['getRow'](0x0) , _0x5b9a3b = _0x15e68b['_scene']['activeCamera']['getViewMatrix']()['getRow'](0x2) , _0x410484 = _0x47d24f['x']['Dot'](_0x3c42c2['toVector3'](), new _0x47d24f['x'](0x1,0x0,0x0)) + _0x47d24f['x']['Dot'](_0x5b9a3b['toVector3'](), new _0x47d24f['x'](0x0,0x0,0x1)); _0x410484 *= 0x4; var _0x5e2e82 = _0x47d24f['j']['FromValues'](0.5 * Math['cos'](_0x410484), -Math['sin'](_0x410484), 0x0, 0x0, Math['sin'](_0x410484), 0.5 * Math['cos'](_0x410484), 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1) , _0x34baec = _0x140b4f['multiply'](_0x5e2e82)['multiply'](_0x13ecf5); _0x2e7faf['setMatrix']('lensStarMatrix', _0x34baec), _0x15e68b['_currentDepthOfFieldSource'] = _0x15e68b['lensFlareFinalPostProcess']; } } ; } , _0x4c2b37['prototype']['_createDepthOfFieldPostProcess'] = function(_0x16eef7, _0x3de1a3) { var _0x3b6ccb = this; this['depthOfFieldPostProcess'] = new _0x1f5ab5('HDRDepthOfField','standard',['distance'],['otherSampler', 'depthSampler'],_0x3de1a3,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x16eef7['getEngine'](),!0x1,'#define\x20DEPTH_OF_FIELD',_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), this['depthOfFieldPostProcess']['onApply'] = function(_0x5598ae) { _0x5598ae['setTextureFromPostProcess']('otherSampler', _0x3b6ccb['_currentDepthOfFieldSource']), _0x5598ae['setTexture']('depthSampler', _0x3b6ccb['_getDepthTexture']()), _0x5598ae['setFloat']('distance', _0x3b6ccb['depthOfFieldDistance']); } , this['addEffect'](new _0x25710c(_0x16eef7['getEngine'](),'HDRDepthOfField',function() { return _0x3b6ccb['depthOfFieldPostProcess']; } ,!0x0)); } , _0x4c2b37['prototype']['_createMotionBlurPostProcess'] = function(_0x4aacad, _0x2ea34c) { var _0xe79be = this; this['motionBlurPostProcess'] = new _0x1f5ab5('HDRMotionBlur','standard',['inverseViewProjection', 'prevViewProjection', 'screenSize', 'motionScale', 'motionStrength'],['depthSampler'],_0x2ea34c,null,_0x11d14a['a']['BILINEAR_SAMPLINGMODE'],_0x4aacad['getEngine'](),!0x1,'#define\x20MOTION_BLUR\x0a#define\x20MAX_MOTION_SAMPLES\x20' + this['motionBlurSamples']['toFixed'](0x1),_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']); var _0x55c15e = 0x0 , _0x1a80fc = _0x47d24f['j']['Identity']() , _0x4f72f6 = _0x47d24f['j']['Identity']() , _0x23c48b = _0x47d24f['j']['Identity']() , _0x3410e6 = _0x47d24f['w']['Zero'](); this['motionBlurPostProcess']['onApply'] = function(_0xa11071) { (_0x23c48b = _0x4aacad['getProjectionMatrix']()['multiply'](_0x4aacad['getViewMatrix']()))['invertToRef'](_0x4f72f6), _0xa11071['setMatrix']('inverseViewProjection', _0x4f72f6), _0xa11071['setMatrix']('prevViewProjection', _0x1a80fc), _0x1a80fc = _0x23c48b, _0x3410e6['x'] = _0xe79be['motionBlurPostProcess']['width'], _0x3410e6['y'] = _0xe79be['motionBlurPostProcess']['height'], _0xa11071['setVector2']('screenSize', _0x3410e6), _0x55c15e = _0x4aacad['getEngine']()['getFps']() / 0x3c, _0xa11071['setFloat']('motionScale', _0x55c15e), _0xa11071['setFloat']('motionStrength', _0xe79be['motionStrength']), _0xa11071['setTexture']('depthSampler', _0xe79be['_getDepthTexture']()); } , this['addEffect'](new _0x25710c(_0x4aacad['getEngine'](),'HDRMotionBlur',function() { return _0xe79be['motionBlurPostProcess']; } ,!0x0)); } , _0x4c2b37['prototype']['_getDepthTexture'] = function() { return this['_scene']['getEngine']()['getCaps']()['drawBuffersExtension'] ? this['_scene']['enableGeometryBufferRenderer']()['getGBuffer']()['textures'][0x0] : this['_scene']['enableDepthRenderer']()['getDepthMap'](); } , _0x4c2b37['prototype']['_disposePostProcesses'] = function() { for (var _0x252cb1 = 0x0; _0x252cb1 < this['_cameras']['length']; _0x252cb1++) { var _0x221339 = this['_cameras'][_0x252cb1]; this['originalPostProcess'] && this['originalPostProcess']['dispose'](_0x221339), this['downSampleX4PostProcess'] && this['downSampleX4PostProcess']['dispose'](_0x221339), this['brightPassPostProcess'] && this['brightPassPostProcess']['dispose'](_0x221339), this['textureAdderPostProcess'] && this['textureAdderPostProcess']['dispose'](_0x221339), this['textureAdderFinalPostProcess'] && this['textureAdderFinalPostProcess']['dispose'](_0x221339), this['volumetricLightPostProcess'] && this['volumetricLightPostProcess']['dispose'](_0x221339), this['volumetricLightSmoothXPostProcess'] && this['volumetricLightSmoothXPostProcess']['dispose'](_0x221339), this['volumetricLightSmoothYPostProcess'] && this['volumetricLightSmoothYPostProcess']['dispose'](_0x221339), this['volumetricLightMergePostProces'] && this['volumetricLightMergePostProces']['dispose'](_0x221339), this['volumetricLightFinalPostProcess'] && this['volumetricLightFinalPostProcess']['dispose'](_0x221339), this['lensFlarePostProcess'] && this['lensFlarePostProcess']['dispose'](_0x221339), this['lensFlareComposePostProcess'] && this['lensFlareComposePostProcess']['dispose'](_0x221339); for (var _0x4b1cdf = 0x0; _0x4b1cdf < this['luminanceDownSamplePostProcesses']['length']; _0x4b1cdf++) this['luminanceDownSamplePostProcesses'][_0x4b1cdf]['dispose'](_0x221339); this['luminancePostProcess'] && this['luminancePostProcess']['dispose'](_0x221339), this['hdrPostProcess'] && this['hdrPostProcess']['dispose'](_0x221339), this['hdrFinalPostProcess'] && this['hdrFinalPostProcess']['dispose'](_0x221339), this['depthOfFieldPostProcess'] && this['depthOfFieldPostProcess']['dispose'](_0x221339), this['motionBlurPostProcess'] && this['motionBlurPostProcess']['dispose'](_0x221339), this['fxaaPostProcess'] && this['fxaaPostProcess']['dispose'](_0x221339); for (_0x4b1cdf = 0x0; _0x4b1cdf < this['blurHPostProcesses']['length']; _0x4b1cdf++) this['blurHPostProcesses'][_0x4b1cdf]['dispose'](_0x221339); for (_0x4b1cdf = 0x0; _0x4b1cdf < this['blurVPostProcesses']['length']; _0x4b1cdf++) this['blurVPostProcesses'][_0x4b1cdf]['dispose'](_0x221339); } this['originalPostProcess'] = null, this['downSampleX4PostProcess'] = null, this['brightPassPostProcess'] = null, this['textureAdderPostProcess'] = null, this['textureAdderFinalPostProcess'] = null, this['volumetricLightPostProcess'] = null, this['volumetricLightSmoothXPostProcess'] = null, this['volumetricLightSmoothYPostProcess'] = null, this['volumetricLightMergePostProces'] = null, this['volumetricLightFinalPostProcess'] = null, this['lensFlarePostProcess'] = null, this['lensFlareComposePostProcess'] = null, this['luminancePostProcess'] = null, this['hdrPostProcess'] = null, this['hdrFinalPostProcess'] = null, this['depthOfFieldPostProcess'] = null, this['motionBlurPostProcess'] = null, this['fxaaPostProcess'] = null, this['luminanceDownSamplePostProcesses'] = [], this['blurHPostProcesses'] = [], this['blurVPostProcesses'] = []; } , _0x4c2b37['prototype']['dispose'] = function() { this['_disposePostProcesses'](), this['_scene']['postProcessRenderPipelineManager']['detachCamerasFromRenderPipeline'](this['_name'], this['_cameras']), _0x190c17['prototype']['dispose']['call'](this); } , _0x4c2b37['prototype']['serialize'] = function() { var _0x4d2f38 = _0x3d4764['a']['Serialize'](this); return this['sourceLight'] && (_0x4d2f38['sourceLightId'] = this['sourceLight']['id']), _0x4d2f38['customType'] = 'StandardRenderingPipeline', _0x4d2f38; } , _0x4c2b37['Parse'] = function(_0x21d82a, _0x33e846, _0x58ce82) { var _0x39c85c = _0x3d4764['a']['Parse'](function() { return new _0x4c2b37(_0x21d82a['_name'],_0x33e846,_0x21d82a['_ratio']); }, _0x21d82a, _0x33e846, _0x58ce82); return _0x21d82a['sourceLightId'] && (_0x39c85c['sourceLight'] = _0x33e846['getLightByID'](_0x21d82a['sourceLightId'])), _0x39c85c; } , _0x4c2b37['LuminanceSteps'] = 0x6, _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'brightThreshold', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'blurWidth', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'horizontalBlur', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'exposure', null), _0x420e5b['c']([Object(_0x3d4764['m'])('lensTexture')], _0x4c2b37['prototype'], 'lensTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'volumetricLightCoefficient', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'volumetricLightPower', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'volumetricLightBlurScale', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'hdrMinimumLuminance', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'hdrDecreaseRate', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'hdrIncreaseRate', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'hdrAutoExposure', null), _0x420e5b['c']([Object(_0x3d4764['m'])('lensColorTexture')], _0x4c2b37['prototype'], 'lensColorTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'lensFlareStrength', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'lensFlareGhostDispersal', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'lensFlareHaloWidth', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'lensFlareDistortionStrength', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])('lensStarTexture')], _0x4c2b37['prototype'], 'lensStarTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['m'])('lensFlareDirtTexture')], _0x4c2b37['prototype'], 'lensFlareDirtTexture', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'depthOfFieldDistance', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'depthOfFieldBlurWidth', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'motionStrength', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], '_ratio', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'BloomEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'DepthOfFieldEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'LensFlareEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'HDREnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'VLSEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'MotionBlurEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'fxaaEnabled', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'volumetricLightStepsCount', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'motionBlurSamples', null), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x4c2b37['prototype'], 'samples', null), _0x4c2b37; }(_0x27ecaf); _0x376b99['a']['RegisteredTypes']['BABYLON.StandardRenderingPipeline'] = _0xa4ae05; var _0xc3cad0 = '\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20textureSampler;\x0a\x0auniform\x20float\x20_ExposureAdjustment;\x0a#if\x20defined(HABLE_TONEMAPPING)\x0aconst\x20float\x20A=0.15;\x0aconst\x20float\x20B=0.50;\x0aconst\x20float\x20C=0.10;\x0aconst\x20float\x20D=0.20;\x0aconst\x20float\x20E=0.02;\x0aconst\x20float\x20F=0.30;\x0aconst\x20float\x20W=11.2;\x0a#endif\x0afloat\x20Luminance(vec3\x20c)\x0a{\x0areturn\x20dot(c,vec3(0.22,0.707,0.071));\x0a}\x0avoid\x20main(void)\x0a{\x0avec3\x20colour=texture2D(textureSampler,vUV).rgb;\x0a#if\x20defined(REINHARD_TONEMAPPING)\x0afloat\x20lum=Luminance(colour.rgb);\x0afloat\x20lumTm=lum*_ExposureAdjustment;\x0afloat\x20scale=lumTm/(1.0+lumTm);\x0acolour*=scale/lum;\x0a#elif\x20defined(HABLE_TONEMAPPING)\x0acolour*=_ExposureAdjustment;\x0aconst\x20float\x20ExposureBias=2.0;\x0avec3\x20x=ExposureBias*colour;\x0avec3\x20curr=((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;\x0ax=vec3(W,W,W);\x0avec3\x20whiteScale=1.0/(((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F);\x0acolour=curr*whiteScale;\x0a#elif\x20defined(OPTIMIZED_HEJIDAWSON_TONEMAPPING)\x0acolour*=_ExposureAdjustment;\x0avec3\x20X=max(vec3(0.0,0.0,0.0),colour-0.004);\x0avec3\x20retColor=(X*(6.2*X+0.5))/(X*(6.2*X+1.7)+0.06);\x0acolour=retColor*retColor;\x0a#elif\x20defined(PHOTOGRAPHIC_TONEMAPPING)\x0acolour=vec3(1.0,1.0,1.0)-exp2(-_ExposureAdjustment*colour);\x0a#endif\x0agl_FragColor=vec4(colour.rgb,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['tonemapPixelShader'] = _0xc3cad0; var _0x4293b6; !function(_0xa7980) { _0xa7980[_0xa7980['Hable'] = 0x0] = 'Hable', _0xa7980[_0xa7980['Reinhard'] = 0x1] = 'Reinhard', _0xa7980[_0xa7980['HejiDawson'] = 0x2] = 'HejiDawson', _0xa7980[_0xa7980['Photographic'] = 0x3] = 'Photographic'; }(_0x4293b6 || (_0x4293b6 = {})); var _0x255595 = function(_0x2a3d39) { function _0x4e5ce8(_0x342d0c, _0x5a55ae, _0x2cea44, _0x185867, _0x14a6d1, _0x136a0b, _0x3c6a47) { void 0x0 === _0x14a6d1 && (_0x14a6d1 = _0x24e342['a']['TEXTURE_BILINEAR_SAMPLINGMODE']), void 0x0 === _0x3c6a47 && (_0x3c6a47 = _0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']); var _0x36f168 = _0x2a3d39['call'](this, _0x342d0c, 'tonemap', ['_ExposureAdjustment'], null, 0x1, _0x185867, _0x14a6d1, _0x136a0b, !0x0, null, _0x3c6a47) || this; _0x36f168['_operator'] = _0x5a55ae, _0x36f168['exposureAdjustment'] = _0x2cea44; var _0x4297fa = '#define\x20'; return _0x36f168['_operator'] === _0x4293b6['Hable'] ? _0x4297fa += 'HABLE_TONEMAPPING' : _0x36f168['_operator'] === _0x4293b6['Reinhard'] ? _0x4297fa += 'REINHARD_TONEMAPPING' : _0x36f168['_operator'] === _0x4293b6['HejiDawson'] ? _0x4297fa += 'OPTIMIZED_HEJIDAWSON_TONEMAPPING' : _0x36f168['_operator'] === _0x4293b6['Photographic'] && (_0x4297fa += 'PHOTOGRAPHIC_TONEMAPPING'), _0x36f168['updateEffect'](_0x4297fa), _0x36f168['onApply'] = function(_0xc4171d) { _0xc4171d['setFloat']('_ExposureAdjustment', _0x36f168['exposureAdjustment']); } , _0x36f168; } return _0x420e5b['d'](_0x4e5ce8, _0x2a3d39), _0x4e5ce8; }(_0x1f5ab5) , _0x37c299 = '\x0aattribute\x20vec3\x20position;\x0a#include\x0a\x0a#include\x0auniform\x20mat4\x20viewProjection;\x0auniform\x20vec2\x20depthValues;\x0a#if\x20defined(ALPHATEST)\x20||\x20defined(NEED_UV)\x0avarying\x20vec2\x20vUV;\x0auniform\x20mat4\x20diffuseMatrix;\x0a#ifdef\x20UV1\x0aattribute\x20vec2\x20uv;\x0a#endif\x0a#ifdef\x20UV2\x0aattribute\x20vec2\x20uv2;\x0a#endif\x0a#endif\x0avarying\x20float\x20vDepthMetric;\x0avoid\x20main(void)\x0a{\x0a#include\x0a#include\x0agl_Position=viewProjection*finalWorld*vec4(position,1.0);\x0avDepthMetric=((gl_Position.z+depthValues.x)/(depthValues.y));\x0a#if\x20defined(ALPHATEST)\x20||\x20defined(BASIC_RENDER)\x0a#ifdef\x20UV1\x0avUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));\x0a#endif\x0a#ifdef\x20UV2\x0avUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));\x0a#endif\x0a#endif\x0a}'; _0x3e9e56['a']['ShadersStore']['depthVertexShader'] = _0x37c299; var _0x24b4b1 = 'uniform\x20sampler2D\x20textureSampler;\x0auniform\x20sampler2D\x20lightScatteringSampler;\x0auniform\x20float\x20decay;\x0auniform\x20float\x20exposure;\x0auniform\x20float\x20weight;\x0auniform\x20float\x20density;\x0auniform\x20vec2\x20meshPositionOnScreen;\x0avarying\x20vec2\x20vUV;\x0avoid\x20main(void)\x20{\x0avec2\x20tc=vUV;\x0avec2\x20deltaTexCoord=(tc-meshPositionOnScreen.xy);\x0adeltaTexCoord*=1.0/float(NUM_SAMPLES)*density;\x0afloat\x20illuminationDecay=1.0;\x0avec4\x20color=texture2D(lightScatteringSampler,tc)*0.4;\x0afor(int\x20i=0;\x20i 0x0 && -0x1 !== this['excludedMeshes']['indexOf'](_0x3e84e7); } , _0x17efbc['prototype']['_createPass'] = function(_0x58361e, _0x27b6e0) { var _0x1667a2 = this , _0x49455c = _0x58361e['getEngine'](); this['_volumetricLightScatteringRTT'] = new _0xe8a585('volumetricLightScatteringMap',{ 'width': _0x49455c['getRenderWidth']() * _0x27b6e0, 'height': _0x49455c['getRenderHeight']() * _0x27b6e0 },_0x58361e,!0x1,!0x0,_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']), this['_volumetricLightScatteringRTT']['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_volumetricLightScatteringRTT']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_volumetricLightScatteringRTT']['renderList'] = null, this['_volumetricLightScatteringRTT']['renderParticles'] = !0x1, this['_volumetricLightScatteringRTT']['ignoreCameraViewport'] = !0x0; var _0x4f7968 = this['getCamera'](); _0x4f7968 ? _0x4f7968['customRenderTargets']['push'](this['_volumetricLightScatteringRTT']) : _0x58361e['customRenderTargets']['push'](this['_volumetricLightScatteringRTT']); var _0xeab468, _0x5b2e2d = function(_0x3048c1) { var _0x123345 = _0x3048c1['getRenderingMesh'](); if (!_0x1667a2['_meshExcluded'](_0x123345)) { var _0x3e575e = _0x3048c1['getMaterial'](); if (_0x3e575e) { var _0x468204 = _0x123345['getScene']() , _0x52ebfa = _0x468204['getEngine'](); _0x52ebfa['setState'](_0x3e575e['backFaceCulling']); var _0x141c26 = _0x123345['_getInstancesRenderList'](_0x3048c1['_id']); if (!_0x141c26['mustReturn']) { var _0xd56a2a = _0x52ebfa['getCaps']()['instancedArrays'] && null !== _0x141c26['visibleInstances'][_0x3048c1['_id']]; if (_0x1667a2['_isReady'](_0x3048c1, _0xd56a2a)) { var _0x3b61b1 = _0x1667a2['_volumetricLightScatteringPass']; if (_0x123345 === _0x1667a2['mesh'] && (_0x3b61b1 = _0x3048c1['effect'] ? _0x3048c1['effect'] : _0x3e575e['getEffect']()), _0x52ebfa['enableEffect'](_0x3b61b1), _0x123345['_bind'](_0x3048c1, _0x3b61b1, _0x10d420['a']['TriangleFillMode']), _0x123345 === _0x1667a2['mesh']) _0x3e575e['bind'](_0x123345['getWorldMatrix'](), _0x123345); else { if (_0x1667a2['_volumetricLightScatteringPass']['setMatrix']('viewProjection', _0x468204['getTransformMatrix']()), _0x3e575e && _0x3e575e['needAlphaTesting']()) { var _0x1ccbe6 = _0x3e575e['getAlphaTestTexture'](); _0x1667a2['_volumetricLightScatteringPass']['setTexture']('diffuseSampler', _0x1ccbe6), _0x1ccbe6 && _0x1667a2['_volumetricLightScatteringPass']['setMatrix']('diffuseMatrix', _0x1ccbe6['getTextureMatrix']()); } _0x123345['useBones'] && _0x123345['computeBonesUsingShaders'] && _0x123345['skeleton'] && _0x1667a2['_volumetricLightScatteringPass']['setMatrices']('mBones', _0x123345['skeleton']['getTransformMatrices'](_0x123345)); } _0x123345['_processRendering'](_0x3048c1, _0x1667a2['_volumetricLightScatteringPass'], _0x10d420['a']['TriangleFillMode'], _0x141c26, _0xd56a2a, function(_0x1f54e8, _0x4a2020) { return _0x3b61b1['setMatrix']('world', _0x4a2020); }); } } } } }, _0x2f54a6 = new _0x47d24f['f'](0x0,0x0,0x0,0x1); this['_volumetricLightScatteringRTT']['onBeforeRenderObservable']['add'](function() { _0xeab468 = _0x58361e['clearColor'], _0x58361e['clearColor'] = _0x2f54a6; }), this['_volumetricLightScatteringRTT']['onAfterRenderObservable']['add'](function() { _0x58361e['clearColor'] = _0xeab468; }), this['_volumetricLightScatteringRTT']['customRenderFunction'] = function(_0x4975b0, _0x24ed44, _0x417c30, _0x284191) { var _0x536a57, _0x48f2c3 = _0x58361e['getEngine'](); if (_0x284191['length']) { for (_0x48f2c3['setColorWrite'](!0x1), _0x536a57 = 0x0; _0x536a57 < _0x284191['length']; _0x536a57++) _0x5b2e2d(_0x284191['data'][_0x536a57]); _0x48f2c3['setColorWrite'](!0x0); } for (_0x536a57 = 0x0; _0x536a57 < _0x4975b0['length']; _0x536a57++) _0x5b2e2d(_0x4975b0['data'][_0x536a57]); for (_0x536a57 = 0x0; _0x536a57 < _0x24ed44['length']; _0x536a57++) _0x5b2e2d(_0x24ed44['data'][_0x536a57]); if (_0x417c30['length']) { for (_0x536a57 = 0x0; _0x536a57 < _0x417c30['length']; _0x536a57++) { var _0x3c3f24 = _0x417c30['data'][_0x536a57] , _0x1db4cc = _0x3c3f24['getBoundingInfo'](); _0x1db4cc && _0x58361e['activeCamera'] && (_0x3c3f24['_alphaIndex'] = _0x3c3f24['getMesh']()['alphaIndex'], _0x3c3f24['_distanceToCamera'] = _0x1db4cc['boundingSphere']['centerWorld']['subtract'](_0x58361e['activeCamera']['position'])['length']()); } var _0x220cf5 = _0x417c30['data']['slice'](0x0, _0x417c30['length']); for (_0x220cf5['sort'](function(_0x5b250e, _0x8ebaf9) { return _0x5b250e['_alphaIndex'] > _0x8ebaf9['_alphaIndex'] ? 0x1 : _0x5b250e['_alphaIndex'] < _0x8ebaf9['_alphaIndex'] ? -0x1 : _0x5b250e['_distanceToCamera'] < _0x8ebaf9['_distanceToCamera'] ? 0x1 : _0x5b250e['_distanceToCamera'] > _0x8ebaf9['_distanceToCamera'] ? -0x1 : 0x0; }), _0x48f2c3['setAlphaMode'](_0x24e342['a']['ALPHA_COMBINE']), _0x536a57 = 0x0; _0x536a57 < _0x220cf5['length']; _0x536a57++) _0x5b2e2d(_0x220cf5[_0x536a57]); _0x48f2c3['setAlphaMode'](_0x24e342['a']['ALPHA_DISABLE']); } } ; } , _0x17efbc['prototype']['_updateMeshScreenCoordinates'] = function(_0x2977b3) { var _0x21bcfc, _0x575aa2 = _0x2977b3['getTransformMatrix'](); _0x21bcfc = this['useCustomMeshPosition'] ? this['customMeshPosition'] : this['attachedNode'] ? this['attachedNode']['position'] : this['mesh']['parent'] ? this['mesh']['getAbsolutePosition']() : this['mesh']['position']; var _0x49abe5 = _0x47d24f['x']['Project'](_0x21bcfc, _0x47d24f['j']['Identity'](), _0x575aa2, this['_viewPort']); this['_screenCoordinates']['x'] = _0x49abe5['x'] / this['_viewPort']['width'], this['_screenCoordinates']['y'] = _0x49abe5['y'] / this['_viewPort']['height'], this['invert'] && (this['_screenCoordinates']['y'] = 0x1 - this['_screenCoordinates']['y']); } , _0x17efbc['CreateDefaultMesh'] = function(_0x193e7b, _0x156925) { var _0x5df0ab = _0xb4719b['a']['CreatePlane'](_0x193e7b, 0x1, _0x156925); _0x5df0ab['billboardMode'] = _0x10c088['a']['BILLBOARDMODE_ALL']; var _0x4dc7ed = new _0xe7dd57['a'](_0x193e7b + 'Material',_0x156925); return _0x4dc7ed['emissiveColor'] = new _0x47d24f['e'](0x1,0x1,0x1), _0x5df0ab['material'] = _0x4dc7ed, _0x5df0ab; } , _0x420e5b['c']([Object(_0x3d4764['o'])()], _0x17efbc['prototype'], 'customMeshPosition', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x17efbc['prototype'], 'useCustomMeshPosition', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x17efbc['prototype'], 'invert', void 0x0), _0x420e5b['c']([Object(_0x3d4764['k'])()], _0x17efbc['prototype'], 'mesh', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x17efbc['prototype'], 'excludedMeshes', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x17efbc['prototype'], 'exposure', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x17efbc['prototype'], 'decay', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x17efbc['prototype'], 'weight', void 0x0), _0x420e5b['c']([Object(_0x3d4764['c'])()], _0x17efbc['prototype'], 'density', void 0x0), _0x17efbc; }(_0x1f5ab5); _0x59bd00(0x7e), _0x59bd00(0x7f); Object['defineProperty'](_0x366639['a']['prototype'], 'forceShowBoundingBoxes', { 'get': function() { return this['_forceShowBoundingBoxes'] || !0x1; }, 'set': function(_0x2c3084) { this['_forceShowBoundingBoxes'] = _0x2c3084, _0x2c3084 && this['getBoundingBoxRenderer'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x366639['a']['prototype']['getBoundingBoxRenderer'] = function() { return this['_boundingBoxRenderer'] || (this['_boundingBoxRenderer'] = new _0x24822b(this)), this['_boundingBoxRenderer']; } , Object['defineProperty'](_0x10c088['a']['prototype'], 'showBoundingBox', { 'get': function() { return this['_showBoundingBox'] || !0x1; }, 'set': function(_0x2d0157) { this['_showBoundingBox'] = _0x2d0157, _0x2d0157 && this['getScene']()['getBoundingBoxRenderer'](); }, 'enumerable': !0x0, 'configurable': !0x0 }); var _0x24822b = function() { function _0x585577(_0x1e00a4) { this['name'] = _0x443f74['a']['NAME_BOUNDINGBOXRENDERER'], this['frontColor'] = new _0x47d24f['e'](0x1,0x1,0x1), this['backColor'] = new _0x47d24f['e'](0.1,0.1,0.1), this['showBackLines'] = !0x0, this['renderList'] = new _0x435d55['a'](0x20), this['_vertexBuffers'] = {}, this['scene'] = _0x1e00a4, _0x1e00a4['_addComponent'](this); } return _0x585577['prototype']['register'] = function() { this['scene']['_beforeEvaluateActiveMeshStage']['registerStep'](_0x443f74['a']['STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER'], this, this['reset']), this['scene']['_activeMeshStage']['registerStep'](_0x443f74['a']['STEP_ACTIVEMESH_BOUNDINGBOXRENDERER'], this, this['_activeMesh']), this['scene']['_evaluateSubMeshStage']['registerStep'](_0x443f74['a']['STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER'], this, this['_evaluateSubMesh']), this['scene']['_afterRenderingGroupDrawStage']['registerStep'](_0x443f74['a']['STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER'], this, this['render']); } , _0x585577['prototype']['_evaluateSubMesh'] = function(_0xbcf5a6, _0x115cb1) { if (_0xbcf5a6['showSubMeshesBoundingBox']) { var _0x19e69c = _0x115cb1['getBoundingInfo'](); null != _0x19e69c && (_0x19e69c['boundingBox']['_tag'] = _0xbcf5a6['renderingGroupId'], this['renderList']['push'](_0x19e69c['boundingBox'])); } } , _0x585577['prototype']['_activeMesh'] = function(_0x11e635, _0x41b599) { if (_0x11e635['showBoundingBox'] || this['scene']['forceShowBoundingBoxes']) { var _0x63d029 = _0x11e635['getBoundingInfo'](); _0x63d029['boundingBox']['_tag'] = _0x41b599['renderingGroupId'], this['renderList']['push'](_0x63d029['boundingBox']); } } , _0x585577['prototype']['_prepareRessources'] = function() { if (!this['_colorShader']) { this['_colorShader'] = new _0xc2ab1['a']('colorShader',this['scene'],'color',{ 'attributes': [_0x4209f7['b']['PositionKind']], 'uniforms': ['world', 'viewProjection', 'color'] }); var _0x2f5e65 = this['scene']['getEngine']() , _0x132038 = _0xb31206['a']['CreateBox']({ 'size': 0x1 }); this['_vertexBuffers'][_0x4209f7['b']['PositionKind']] = new _0x4209f7['b'](_0x2f5e65,_0x132038['positions'],_0x4209f7['b']['PositionKind'],!0x1), this['_createIndexBuffer'](); } } , _0x585577['prototype']['_createIndexBuffer'] = function() { var _0x21414d = this['scene']['getEngine'](); this['_indexBuffer'] = _0x21414d['createIndexBuffer']([0x0, 0x1, 0x1, 0x2, 0x2, 0x3, 0x3, 0x0, 0x4, 0x5, 0x5, 0x6, 0x6, 0x7, 0x7, 0x4, 0x0, 0x7, 0x1, 0x6, 0x2, 0x5, 0x3, 0x4]); } , _0x585577['prototype']['rebuild'] = function() { var _0x313ef6 = this['_vertexBuffers'][_0x4209f7['b']['PositionKind']]; _0x313ef6 && _0x313ef6['_rebuild'](), this['_createIndexBuffer'](); } , _0x585577['prototype']['reset'] = function() { this['renderList']['reset'](); } , _0x585577['prototype']['render'] = function(_0x425b29) { if (0x0 !== this['renderList']['length'] && (this['_prepareRessources'](), this['_colorShader']['isReady']())) { var _0x153895 = this['scene']['getEngine'](); _0x153895['setDepthWrite'](!0x1), this['_colorShader']['_preBind'](); for (var _0x592867 = 0x0; _0x592867 < this['renderList']['length']; _0x592867++) { var _0x3712c2 = this['renderList']['data'][_0x592867]; if (_0x3712c2['_tag'] === _0x425b29) { var _0x56ae8e = _0x3712c2['minimum'] , _0x27a578 = _0x3712c2['maximum']['subtract'](_0x56ae8e) , _0x530276 = _0x56ae8e['add'](_0x27a578['scale'](0.5)) , _0x1be807 = _0x47d24f['j']['Scaling'](_0x27a578['x'], _0x27a578['y'], _0x27a578['z'])['multiply'](_0x47d24f['j']['Translation'](_0x530276['x'], _0x530276['y'], _0x530276['z']))['multiply'](_0x3712c2['getWorldMatrix']()); _0x153895['bindBuffers'](this['_vertexBuffers'], this['_indexBuffer'], this['_colorShader']['getEffect']()), this['showBackLines'] && (_0x153895['setDepthFunctionToGreaterOrEqual'](), this['scene']['resetCachedMaterial'](), this['_colorShader']['setColor4']('color', this['backColor']['toColor4']()), this['_colorShader']['bind'](_0x1be807), _0x153895['drawElementsType'](_0x10d420['a']['LineListDrawMode'], 0x0, 0x18)), _0x153895['setDepthFunctionToLess'](), this['scene']['resetCachedMaterial'](), this['_colorShader']['setColor4']('color', this['frontColor']['toColor4']()), this['_colorShader']['bind'](_0x1be807), _0x153895['drawElementsType'](_0x10d420['a']['LineListDrawMode'], 0x0, 0x18); } } this['_colorShader']['unbind'](), _0x153895['setDepthFunctionToLessOrEqual'](), _0x153895['setDepthWrite'](!0x0); } } , _0x585577['prototype']['renderOcclusionBoundingBox'] = function(_0x840ff2) { if (this['_prepareRessources'](), this['_colorShader']['isReady']() && _0x840ff2['_boundingInfo']) { var _0x27a220 = this['scene']['getEngine'](); _0x27a220['setDepthWrite'](!0x1), _0x27a220['setColorWrite'](!0x1), this['_colorShader']['_preBind'](); var _0x466b27 = _0x840ff2['_boundingInfo']['boundingBox'] , _0x388248 = _0x466b27['minimum'] , _0x31d5c4 = _0x466b27['maximum']['subtract'](_0x388248) , _0x448d2c = _0x388248['add'](_0x31d5c4['scale'](0.5)) , _0x5b5b38 = _0x47d24f['j']['Scaling'](_0x31d5c4['x'], _0x31d5c4['y'], _0x31d5c4['z'])['multiply'](_0x47d24f['j']['Translation'](_0x448d2c['x'], _0x448d2c['y'], _0x448d2c['z']))['multiply'](_0x466b27['getWorldMatrix']()); _0x27a220['bindBuffers'](this['_vertexBuffers'], this['_indexBuffer'], this['_colorShader']['getEffect']()), _0x27a220['setDepthFunctionToLess'](), this['scene']['resetCachedMaterial'](), this['_colorShader']['bind'](_0x5b5b38), _0x27a220['drawElementsType'](_0x10d420['a']['LineListDrawMode'], 0x0, 0x18), this['_colorShader']['unbind'](), _0x27a220['setDepthFunctionToLessOrEqual'](), _0x27a220['setDepthWrite'](!0x0), _0x27a220['setColorWrite'](!0x0); } } , _0x585577['prototype']['dispose'] = function() { if (this['_colorShader']) { this['renderList']['dispose'](), this['_colorShader']['dispose'](); var _0x2049d7 = this['_vertexBuffers'][_0x4209f7['b']['PositionKind']]; _0x2049d7 && (_0x2049d7['dispose'](), this['_vertexBuffers'][_0x4209f7['b']['PositionKind']] = null), this['scene']['getEngine']()['_releaseBuffer'](this['_indexBuffer']); } } , _0x585577; }() , _0x4b8dc1 = '#ifdef\x20ALPHATEST\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20diffuseSampler;\x0a#endif\x0avarying\x20float\x20vDepthMetric;\x0avoid\x20main(void)\x0a{\x0a#ifdef\x20ALPHATEST\x0aif\x20(texture2D(diffuseSampler,vUV).a<0.4)\x0adiscard;\x0a#endif\x0agl_FragColor=vec4(vDepthMetric,vDepthMetric*vDepthMetric,0.0,1.0);\x0a}'; _0x3e9e56['a']['ShadersStore']['depthPixelShader'] = _0x4b8dc1; var _0x5a6b94 = function() { function _0x4d51fe(_0x323bf7, _0x5b479d, _0x55e7d6) { var _0x2ec58d = this; void 0x0 === _0x5b479d && (_0x5b479d = _0x24e342['a']['TEXTURETYPE_FLOAT']), void 0x0 === _0x55e7d6 && (_0x55e7d6 = null), this['useOnlyInActiveCamera'] = !0x1, this['_scene'] = _0x323bf7, _0x4d51fe['_SceneComponentInitialization'](this['_scene']), this['_camera'] = _0x55e7d6; var _0x4128a6 = _0x323bf7['getEngine'](); this['_depthMap'] = new _0xe8a585('depthMap',{ 'width': _0x4128a6['getRenderWidth'](), 'height': _0x4128a6['getRenderHeight']() },this['_scene'],!0x1,!0x0,_0x5b479d), this['_depthMap']['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_depthMap']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_depthMap']['refreshRate'] = 0x1, this['_depthMap']['renderParticles'] = !0x1, this['_depthMap']['renderList'] = null, this['_depthMap']['activeCamera'] = this['_camera'], this['_depthMap']['ignoreCameraViewport'] = !0x0, this['_depthMap']['useCameraPostProcesses'] = !0x1, this['_depthMap']['onClearObservable']['add'](function(_0x1a385d) { _0x1a385d['clear'](new _0x47d24f['f'](0x1,0x1,0x1,0x1), !0x0, !0x0, !0x0); }); var _0x11e47e = function(_0x420675) { var _0x4596ba = _0x420675['getRenderingMesh']() , _0x21a956 = _0x2ec58d['_scene'] , _0x32219f = _0x21a956['getEngine']() , _0x25d241 = _0x420675['getMaterial'](); if (_0x25d241) { _0x32219f['setState'](_0x25d241['backFaceCulling'], 0x0, !0x1, _0x21a956['useRightHandedSystem']); var _0x4ba2ba = _0x4596ba['_getInstancesRenderList'](_0x420675['_id']); if (!_0x4ba2ba['mustReturn']) { var _0x1a496f = _0x32219f['getCaps']()['instancedArrays'] && null !== _0x4ba2ba['visibleInstances'][_0x420675['_id']] , _0x2be362 = _0x2ec58d['_camera'] || _0x21a956['activeCamera']; if (_0x2ec58d['isReady'](_0x420675, _0x1a496f) && _0x2be362) { if (_0x32219f['enableEffect'](_0x2ec58d['_effect']), _0x4596ba['_bind'](_0x420675, _0x2ec58d['_effect'], _0x10d420['a']['TriangleFillMode']), _0x2ec58d['_effect']['setMatrix']('viewProjection', _0x21a956['getTransformMatrix']()), _0x2ec58d['_effect']['setFloat2']('depthValues', _0x2be362['minZ'], _0x2be362['minZ'] + _0x2be362['maxZ']), _0x25d241 && _0x25d241['needAlphaTesting']()) { var _0x35ff0c = _0x25d241['getAlphaTestTexture'](); _0x35ff0c && (_0x2ec58d['_effect']['setTexture']('diffuseSampler', _0x35ff0c), _0x2ec58d['_effect']['setMatrix']('diffuseMatrix', _0x35ff0c['getTextureMatrix']())); } _0x4596ba['useBones'] && _0x4596ba['computeBonesUsingShaders'] && _0x4596ba['skeleton'] && _0x2ec58d['_effect']['setMatrices']('mBones', _0x4596ba['skeleton']['getTransformMatrices'](_0x4596ba)), _0x4596ba['_processRendering'](_0x420675, _0x2ec58d['_effect'], _0x10d420['a']['TriangleFillMode'], _0x4ba2ba, _0x1a496f, function(_0x1b8f4c, _0x11f9d5) { return _0x2ec58d['_effect']['setMatrix']('world', _0x11f9d5); }); } } } }; this['_depthMap']['customRenderFunction'] = function(_0x30b19e, _0x14cb35, _0x4260ee, _0x51fbe3) { var _0x2c9948; if (_0x51fbe3['length']) { for (_0x4128a6['setColorWrite'](!0x1), _0x2c9948 = 0x0; _0x2c9948 < _0x51fbe3['length']; _0x2c9948++) _0x11e47e(_0x51fbe3['data'][_0x2c9948]); _0x4128a6['setColorWrite'](!0x0); } for (_0x2c9948 = 0x0; _0x2c9948 < _0x30b19e['length']; _0x2c9948++) _0x11e47e(_0x30b19e['data'][_0x2c9948]); for (_0x2c9948 = 0x0; _0x2c9948 < _0x14cb35['length']; _0x2c9948++) _0x11e47e(_0x14cb35['data'][_0x2c9948]); } ; } return _0x4d51fe['prototype']['isReady'] = function(_0x5b2a11, _0x4b9096) { var _0x16f79f = _0x5b2a11['getMaterial'](); if (_0x16f79f['disableDepthWrite']) return !0x1; var _0x311c86 = [] , _0x315c28 = [_0x4209f7['b']['PositionKind']] , _0x50d2b2 = _0x5b2a11['getMesh'](); _0x16f79f && _0x16f79f['needAlphaTesting']() && _0x16f79f['getAlphaTestTexture']() && (_0x311c86['push']('#define\x20ALPHATEST'), _0x50d2b2['isVerticesDataPresent'](_0x4209f7['b']['UVKind']) && (_0x315c28['push'](_0x4209f7['b']['UVKind']), _0x311c86['push']('#define\x20UV1')), _0x50d2b2['isVerticesDataPresent'](_0x4209f7['b']['UV2Kind']) && (_0x315c28['push'](_0x4209f7['b']['UV2Kind']), _0x311c86['push']('#define\x20UV2'))), _0x50d2b2['useBones'] && _0x50d2b2['computeBonesUsingShaders'] ? (_0x315c28['push'](_0x4209f7['b']['MatricesIndicesKind']), _0x315c28['push'](_0x4209f7['b']['MatricesWeightsKind']), _0x50d2b2['numBoneInfluencers'] > 0x4 && (_0x315c28['push'](_0x4209f7['b']['MatricesIndicesExtraKind']), _0x315c28['push'](_0x4209f7['b']['MatricesWeightsExtraKind'])), _0x311c86['push']('#define\x20NUM_BONE_INFLUENCERS\x20' + _0x50d2b2['numBoneInfluencers']), _0x311c86['push']('#define\x20BonesPerMesh\x20' + (_0x50d2b2['skeleton'] ? _0x50d2b2['skeleton']['bones']['length'] + 0x1 : 0x0))) : _0x311c86['push']('#define\x20NUM_BONE_INFLUENCERS\x200'), _0x4b9096 && (_0x311c86['push']('#define\x20INSTANCES'), _0x315c28['push']('world0'), _0x315c28['push']('world1'), _0x315c28['push']('world2'), _0x315c28['push']('world3')); var _0x5a8457 = _0x311c86['join']('\x0a'); return this['_cachedDefines'] !== _0x5a8457 && (this['_cachedDefines'] = _0x5a8457, this['_effect'] = this['_scene']['getEngine']()['createEffect']('depth', _0x315c28, ['world', 'mBones', 'viewProjection', 'diffuseMatrix', 'depthValues'], ['diffuseSampler'], _0x5a8457)), this['_effect']['isReady'](); } , _0x4d51fe['prototype']['getDepthMap'] = function() { return this['_depthMap']; } , _0x4d51fe['prototype']['dispose'] = function() { this['_depthMap']['dispose'](); } , _0x4d51fe['_SceneComponentInitialization'] = function(_0x28fb9b) { throw _0x2757ee['a']['WarnImport']('DepthRendererSceneComponent'); } , _0x4d51fe; }(); _0x366639['a']['prototype']['enableDepthRenderer'] = function(_0x27c3a1) { if (!(_0x27c3a1 = _0x27c3a1 || this['activeCamera'])) throw 'No\x20camera\x20available\x20to\x20enable\x20depth\x20renderer'; if (this['_depthRenderer'] || (this['_depthRenderer'] = {}), !this['_depthRenderer'][_0x27c3a1['id']]) { var _0x5652e3 = 0x0; if (this['getEngine']()['getCaps']()['textureHalfFloatRender']) _0x5652e3 = _0x24e342['a']['TEXTURETYPE_HALF_FLOAT']; else { if (!this['getEngine']()['getCaps']()['textureFloatRender']) throw 'Depth\x20renderer\x20does\x20not\x20support\x20int\x20texture\x20type'; _0x5652e3 = _0x24e342['a']['TEXTURETYPE_FLOAT']; } this['_depthRenderer'][_0x27c3a1['id']] = new _0x5a6b94(this,_0x5652e3,_0x27c3a1); } return this['_depthRenderer'][_0x27c3a1['id']]; } , _0x366639['a']['prototype']['disableDepthRenderer'] = function(_0x2cc038) { (_0x2cc038 = _0x2cc038 || this['activeCamera']) && this['_depthRenderer'] && this['_depthRenderer'][_0x2cc038['id']] && (this['_depthRenderer'][_0x2cc038['id']]['dispose'](), delete this['_depthRenderer'][_0x2cc038['id']]); } ; var _0x27f572 = function() { function _0x1f40ba(_0x1004c4) { this['name'] = _0x443f74['a']['NAME_DEPTHRENDERER'], this['scene'] = _0x1004c4; } return _0x1f40ba['prototype']['register'] = function() { this['scene']['_gatherRenderTargetsStage']['registerStep'](_0x443f74['a']['STEP_GATHERRENDERTARGETS_DEPTHRENDERER'], this, this['_gatherRenderTargets']), this['scene']['_gatherActiveCameraRenderTargetsStage']['registerStep'](_0x443f74['a']['STEP_GATHERACTIVECAMERARENDERTARGETS_DEPTHRENDERER'], this, this['_gatherActiveCameraRenderTargets']); } , _0x1f40ba['prototype']['rebuild'] = function() {} , _0x1f40ba['prototype']['dispose'] = function() { for (var _0x343532 in this['scene']['_depthRenderer']) this['scene']['_depthRenderer'][_0x343532]['dispose'](); } , _0x1f40ba['prototype']['_gatherRenderTargets'] = function(_0x3e25db) { if (this['scene']['_depthRenderer']) for (var _0x208a4c in this['scene']['_depthRenderer']) { var _0x18e80c = this['scene']['_depthRenderer'][_0x208a4c]; _0x18e80c['useOnlyInActiveCamera'] || _0x3e25db['push'](_0x18e80c['getDepthMap']()); } } , _0x1f40ba['prototype']['_gatherActiveCameraRenderTargets'] = function(_0x4b5abf) { if (this['scene']['_depthRenderer']) for (var _0x193e08 in this['scene']['_depthRenderer']) { var _0x5dfd33 = this['scene']['_depthRenderer'][_0x193e08]; _0x5dfd33['useOnlyInActiveCamera'] && this['scene']['activeCamera']['id'] === _0x193e08 && _0x4b5abf['push'](_0x5dfd33['getDepthMap']()); } } , _0x1f40ba; }(); _0x5a6b94['_SceneComponentInitialization'] = function(_0x545704) { var _0x19b68d = _0x545704['_getComponent'](_0x443f74['a']['NAME_DEPTHRENDERER']); _0x19b68d || (_0x19b68d = new _0x27f572(_0x545704), _0x545704['_addComponent'](_0x19b68d)); } ; var _0x17e0c0 = 'uniform\x20vec4\x20color;\x0avoid\x20main(void)\x20{\x0agl_FragColor=color;\x0a}'; _0x3e9e56['a']['ShadersStore']['linePixelShader'] = _0x17e0c0; var _0x20a7ba = '\x0aattribute\x20vec3\x20position;\x0aattribute\x20vec4\x20normal;\x0a\x0auniform\x20mat4\x20worldViewProjection;\x0auniform\x20float\x20width;\x0auniform\x20float\x20aspectRatio;\x0avoid\x20main(void)\x20{\x0avec4\x20viewPosition=worldViewProjection*vec4(position,1.0);\x0avec4\x20viewPositionNext=worldViewProjection*vec4(normal.xyz,1.0);\x0avec2\x20currentScreen=viewPosition.xy/viewPosition.w;\x0avec2\x20nextScreen=viewPositionNext.xy/viewPositionNext.w;\x0acurrentScreen.x*=aspectRatio;\x0anextScreen.x*=aspectRatio;\x0avec2\x20dir=normalize(nextScreen-currentScreen);\x0avec2\x20normalDir=vec2(-dir.y,dir.x);\x0anormalDir*=width/2.0;\x0anormalDir.x/=aspectRatio;\x0avec4\x20offset=vec4(normalDir*normal.w,0.0,0.0);\x0agl_Position=viewPosition+offset;\x0a}'; _0x3e9e56['a']['ShadersStore']['lineVertexShader'] = _0x20a7ba; _0x10c088['a']['prototype']['disableEdgesRendering'] = function() { return this['_edgesRenderer'] && (this['_edgesRenderer']['dispose'](), this['_edgesRenderer'] = null), this; } , _0x10c088['a']['prototype']['enableEdgesRendering'] = function(_0x5d2827, _0x3f7c50) { return void 0x0 === _0x5d2827 && (_0x5d2827 = 0.95), void 0x0 === _0x3f7c50 && (_0x3f7c50 = !0x1), this['disableEdgesRendering'](), this['_edgesRenderer'] = new _0x32ce08(this,_0x5d2827,_0x3f7c50), this; } , Object['defineProperty'](_0x10c088['a']['prototype'], 'edgesRenderer', { 'get': function() { return this['_edgesRenderer']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1a4641['b']['prototype']['enableEdgesRendering'] = function(_0x34bc64, _0x320a47) { return void 0x0 === _0x34bc64 && (_0x34bc64 = 0.95), void 0x0 === _0x320a47 && (_0x320a47 = !0x1), this['disableEdgesRendering'](), this['_edgesRenderer'] = new _0x242052(this,_0x34bc64,_0x320a47), this; } , _0x1a4641['a']['prototype']['enableEdgesRendering'] = function(_0x1cba11, _0x53e51c) { return void 0x0 === _0x1cba11 && (_0x1cba11 = 0.95), void 0x0 === _0x53e51c && (_0x53e51c = !0x1), _0x1a4641['b']['prototype']['enableEdgesRendering']['apply'](this, arguments), this; } ; var _0xad25d8 = function() { return function() { this['edges'] = new Array(), this['edgesConnectedCount'] = 0x0; } ; }() , _0x32ce08 = function() { function _0x5f2ed2(_0x26c630, _0x45ca22, _0x43238a, _0x1684b1) { var _0x3f7f66 = this; void 0x0 === _0x45ca22 && (_0x45ca22 = 0.95), void 0x0 === _0x43238a && (_0x43238a = !0x1), void 0x0 === _0x1684b1 && (_0x1684b1 = !0x0), this['edgesWidthScalerForOrthographic'] = 0x3e8, this['edgesWidthScalerForPerspective'] = 0x32, this['_linesPositions'] = new Array(), this['_linesNormals'] = new Array(), this['_linesIndices'] = new Array(), this['_buffers'] = {}, this['_checkVerticesInsteadOfIndices'] = !0x1, this['isEnabled'] = !0x0, this['_source'] = _0x26c630, this['_checkVerticesInsteadOfIndices'] = _0x43238a, this['_epsilon'] = _0x45ca22, this['_prepareRessources'](), _0x1684b1 && this['_generateEdgesLines'](), this['_meshRebuildObserver'] = this['_source']['onRebuildObservable']['add'](function() { _0x3f7f66['_rebuild'](); }), this['_meshDisposeObserver'] = this['_source']['onDisposeObservable']['add'](function() { _0x3f7f66['dispose'](); }); } return _0x5f2ed2['prototype']['_prepareRessources'] = function() { this['_lineShader'] || (this['_lineShader'] = new _0xc2ab1['a']('lineShader',this['_source']['getScene'](),'line',{ 'attributes': ['position', 'normal'], 'uniforms': ['worldViewProjection', 'color', 'width', 'aspectRatio'] }), this['_lineShader']['disableDepthWrite'] = !0x0, this['_lineShader']['backFaceCulling'] = !0x1); } , _0x5f2ed2['prototype']['_rebuild'] = function() { var _0x5a519a = this['_buffers'][_0x4209f7['b']['PositionKind']]; _0x5a519a && _0x5a519a['_rebuild'](), (_0x5a519a = this['_buffers'][_0x4209f7['b']['NormalKind']]) && _0x5a519a['_rebuild'](); var _0x476c8b = this['_source']['getScene']()['getEngine'](); this['_ib'] = _0x476c8b['createIndexBuffer'](this['_linesIndices']); } , _0x5f2ed2['prototype']['dispose'] = function() { this['_source']['onRebuildObservable']['remove'](this['_meshRebuildObserver']), this['_source']['onDisposeObservable']['remove'](this['_meshDisposeObserver']); var _0x246482 = this['_buffers'][_0x4209f7['b']['PositionKind']]; _0x246482 && (_0x246482['dispose'](), this['_buffers'][_0x4209f7['b']['PositionKind']] = null), (_0x246482 = this['_buffers'][_0x4209f7['b']['NormalKind']]) && (_0x246482['dispose'](), this['_buffers'][_0x4209f7['b']['NormalKind']] = null), this['_source']['getScene']()['getEngine']()['_releaseBuffer'](this['_ib']), this['_lineShader']['dispose'](); } , _0x5f2ed2['prototype']['_processEdgeForAdjacencies'] = function(_0x359295, _0x40c9c2, _0x4a7bbe, _0xb65d1b, _0x270671) { return _0x359295 === _0x4a7bbe && _0x40c9c2 === _0xb65d1b || _0x359295 === _0xb65d1b && _0x40c9c2 === _0x4a7bbe ? 0x0 : _0x359295 === _0xb65d1b && _0x40c9c2 === _0x270671 || _0x359295 === _0x270671 && _0x40c9c2 === _0xb65d1b ? 0x1 : _0x359295 === _0x270671 && _0x40c9c2 === _0x4a7bbe || _0x359295 === _0x4a7bbe && _0x40c9c2 === _0x270671 ? 0x2 : -0x1; } , _0x5f2ed2['prototype']['_processEdgeForAdjacenciesWithVertices'] = function(_0x393564, _0x162a22, _0x16a56c, _0x3a24e4, _0x84e59b) { return _0x393564['equalsWithEpsilon'](_0x16a56c) && _0x162a22['equalsWithEpsilon'](_0x3a24e4) || _0x393564['equalsWithEpsilon'](_0x3a24e4) && _0x162a22['equalsWithEpsilon'](_0x16a56c) ? 0x0 : _0x393564['equalsWithEpsilon'](_0x3a24e4) && _0x162a22['equalsWithEpsilon'](_0x84e59b) || _0x393564['equalsWithEpsilon'](_0x84e59b) && _0x162a22['equalsWithEpsilon'](_0x3a24e4) ? 0x1 : _0x393564['equalsWithEpsilon'](_0x84e59b) && _0x162a22['equalsWithEpsilon'](_0x16a56c) || _0x393564['equalsWithEpsilon'](_0x16a56c) && _0x162a22['equalsWithEpsilon'](_0x84e59b) ? 0x2 : -0x1; } , _0x5f2ed2['prototype']['_checkEdge'] = function(_0x256633, _0x4c7fd4, _0x462da2, _0xfa27df, _0x2e1421) { var _0x5c6b60; void 0x0 === _0x4c7fd4 ? _0x5c6b60 = !0x0 : _0x5c6b60 = _0x47d24f['x']['Dot'](_0x462da2[_0x256633], _0x462da2[_0x4c7fd4]) < this['_epsilon']; _0x5c6b60 && this['createLine'](_0xfa27df, _0x2e1421, this['_linesPositions']['length'] / 0x3); } , _0x5f2ed2['prototype']['createLine'] = function(_0x1142d7, _0x1513e0, _0x323aed) { this['_linesPositions']['push'](_0x1142d7['x'], _0x1142d7['y'], _0x1142d7['z'], _0x1142d7['x'], _0x1142d7['y'], _0x1142d7['z'], _0x1513e0['x'], _0x1513e0['y'], _0x1513e0['z'], _0x1513e0['x'], _0x1513e0['y'], _0x1513e0['z']), this['_linesNormals']['push'](_0x1513e0['x'], _0x1513e0['y'], _0x1513e0['z'], -0x1, _0x1513e0['x'], _0x1513e0['y'], _0x1513e0['z'], 0x1, _0x1142d7['x'], _0x1142d7['y'], _0x1142d7['z'], -0x1, _0x1142d7['x'], _0x1142d7['y'], _0x1142d7['z'], 0x1), this['_linesIndices']['push'](_0x323aed, _0x323aed + 0x1, _0x323aed + 0x2, _0x323aed, _0x323aed + 0x2, _0x323aed + 0x3); } , _0x5f2ed2['prototype']['_generateEdgesLines'] = function() { var _0x39dff9 = this['_source']['getVerticesData'](_0x4209f7['b']['PositionKind']) , _0x181f22 = this['_source']['getIndices'](); if (_0x181f22 && _0x39dff9) { var _0x102e6f, _0x22a036, _0x5ac002 = new Array(), _0x56a60d = new Array(); for (_0x102e6f = 0x0; _0x102e6f < _0x181f22['length']; _0x102e6f += 0x3) { _0x22a036 = new _0xad25d8(); var _0x1dd35d = _0x181f22[_0x102e6f] , _0x2437b0 = _0x181f22[_0x102e6f + 0x1] , _0x44fc30 = _0x181f22[_0x102e6f + 0x2]; _0x22a036['p0'] = new _0x47d24f['x'](_0x39dff9[0x3 * _0x1dd35d],_0x39dff9[0x3 * _0x1dd35d + 0x1],_0x39dff9[0x3 * _0x1dd35d + 0x2]), _0x22a036['p1'] = new _0x47d24f['x'](_0x39dff9[0x3 * _0x2437b0],_0x39dff9[0x3 * _0x2437b0 + 0x1],_0x39dff9[0x3 * _0x2437b0 + 0x2]), _0x22a036['p2'] = new _0x47d24f['x'](_0x39dff9[0x3 * _0x44fc30],_0x39dff9[0x3 * _0x44fc30 + 0x1],_0x39dff9[0x3 * _0x44fc30 + 0x2]); var _0x428ea6 = _0x47d24f['x']['Cross'](_0x22a036['p1']['subtract'](_0x22a036['p0']), _0x22a036['p2']['subtract'](_0x22a036['p1'])); _0x428ea6['normalize'](), _0x56a60d['push'](_0x428ea6), _0x5ac002['push'](_0x22a036); } for (_0x102e6f = 0x0; _0x102e6f < _0x5ac002['length']; _0x102e6f++) { _0x22a036 = _0x5ac002[_0x102e6f]; for (var _0x1837e4 = _0x102e6f + 0x1; _0x1837e4 < _0x5ac002['length']; _0x1837e4++) { var _0x5854ec = _0x5ac002[_0x1837e4]; if (0x3 === _0x22a036['edgesConnectedCount']) break; if (0x3 !== _0x5854ec['edgesConnectedCount']) for (var _0x2eec51 = _0x181f22[0x3 * _0x1837e4], _0xe2ecd4 = _0x181f22[0x3 * _0x1837e4 + 0x1], _0x59c303 = _0x181f22[0x3 * _0x1837e4 + 0x2], _0x2ec509 = 0x0; _0x2ec509 < 0x3; _0x2ec509++) { var _0x24d9ac = 0x0; if (void 0x0 === _0x22a036['edges'][_0x2ec509]) { switch (_0x2ec509) { case 0x0: _0x24d9ac = this['_checkVerticesInsteadOfIndices'] ? this['_processEdgeForAdjacenciesWithVertices'](_0x22a036['p0'], _0x22a036['p1'], _0x5854ec['p0'], _0x5854ec['p1'], _0x5854ec['p2']) : this['_processEdgeForAdjacencies'](_0x181f22[0x3 * _0x102e6f], _0x181f22[0x3 * _0x102e6f + 0x1], _0x2eec51, _0xe2ecd4, _0x59c303); break; case 0x1: _0x24d9ac = this['_checkVerticesInsteadOfIndices'] ? this['_processEdgeForAdjacenciesWithVertices'](_0x22a036['p1'], _0x22a036['p2'], _0x5854ec['p0'], _0x5854ec['p1'], _0x5854ec['p2']) : this['_processEdgeForAdjacencies'](_0x181f22[0x3 * _0x102e6f + 0x1], _0x181f22[0x3 * _0x102e6f + 0x2], _0x2eec51, _0xe2ecd4, _0x59c303); break; case 0x2: _0x24d9ac = this['_checkVerticesInsteadOfIndices'] ? this['_processEdgeForAdjacenciesWithVertices'](_0x22a036['p2'], _0x22a036['p0'], _0x5854ec['p0'], _0x5854ec['p1'], _0x5854ec['p2']) : this['_processEdgeForAdjacencies'](_0x181f22[0x3 * _0x102e6f + 0x2], _0x181f22[0x3 * _0x102e6f], _0x2eec51, _0xe2ecd4, _0x59c303); } if (-0x1 !== _0x24d9ac && (_0x22a036['edges'][_0x2ec509] = _0x1837e4, _0x5854ec['edges'][_0x24d9ac] = _0x102e6f, _0x22a036['edgesConnectedCount']++, _0x5854ec['edgesConnectedCount']++, 0x3 === _0x22a036['edgesConnectedCount'])) break; } } } } for (_0x102e6f = 0x0; _0x102e6f < _0x5ac002['length']; _0x102e6f++) { var _0x2dd183 = _0x5ac002[_0x102e6f]; this['_checkEdge'](_0x102e6f, _0x2dd183['edges'][0x0], _0x56a60d, _0x2dd183['p0'], _0x2dd183['p1']), this['_checkEdge'](_0x102e6f, _0x2dd183['edges'][0x1], _0x56a60d, _0x2dd183['p1'], _0x2dd183['p2']), this['_checkEdge'](_0x102e6f, _0x2dd183['edges'][0x2], _0x56a60d, _0x2dd183['p2'], _0x2dd183['p0']); } var _0x18a28a = this['_source']['getScene']()['getEngine'](); this['_buffers'][_0x4209f7['b']['PositionKind']] = new _0x4209f7['b'](_0x18a28a,this['_linesPositions'],_0x4209f7['b']['PositionKind'],!0x1), this['_buffers'][_0x4209f7['b']['NormalKind']] = new _0x4209f7['b'](_0x18a28a,this['_linesNormals'],_0x4209f7['b']['NormalKind'],!0x1,!0x1,0x4), this['_ib'] = _0x18a28a['createIndexBuffer'](this['_linesIndices']), this['_indicesCount'] = this['_linesIndices']['length']; } } , _0x5f2ed2['prototype']['isReady'] = function() { return this['_lineShader']['isReady'](); } , _0x5f2ed2['prototype']['render'] = function() { var _0x5288f7 = this['_source']['getScene'](); if (this['isReady']() && _0x5288f7['activeCamera']) { var _0x4c4973 = _0x5288f7['getEngine'](); this['_lineShader']['_preBind'](), 0x1 !== this['_source']['edgesColor']['a'] ? _0x4c4973['setAlphaMode'](_0x24e342['a']['ALPHA_COMBINE']) : _0x4c4973['setAlphaMode'](_0x24e342['a']['ALPHA_DISABLE']), _0x4c4973['bindBuffers'](this['_buffers'], this['_ib'], this['_lineShader']['getEffect']()), _0x5288f7['resetCachedMaterial'](), this['_lineShader']['setColor4']('color', this['_source']['edgesColor']), _0x5288f7['activeCamera']['mode'] === _0x4504cf['a']['ORTHOGRAPHIC_CAMERA'] ? this['_lineShader']['setFloat']('width', this['_source']['edgesWidth'] / this['edgesWidthScalerForOrthographic']) : this['_lineShader']['setFloat']('width', this['_source']['edgesWidth'] / this['edgesWidthScalerForPerspective']), this['_lineShader']['setFloat']('aspectRatio', _0x4c4973['getAspectRatio'](_0x5288f7['activeCamera'])), this['_lineShader']['bind'](this['_source']['getWorldMatrix']()), _0x4c4973['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, this['_indicesCount']), this['_lineShader']['unbind'](); } } , _0x5f2ed2; }() , _0x242052 = function(_0x49eb60) { function _0x439e74(_0x2b1c19, _0x30d06f, _0x31e0ed) { void 0x0 === _0x30d06f && (_0x30d06f = 0.95), void 0x0 === _0x31e0ed && (_0x31e0ed = !0x1); var _0xcaeba8 = _0x49eb60['call'](this, _0x2b1c19, _0x30d06f, _0x31e0ed, !0x1) || this; return _0xcaeba8['_generateEdgesLines'](), _0xcaeba8; } return _0x420e5b['d'](_0x439e74, _0x49eb60), _0x439e74['prototype']['_generateEdgesLines'] = function() { var _0x3ae37c = this['_source']['getVerticesData'](_0x4209f7['b']['PositionKind']) , _0x428116 = this['_source']['getIndices'](); if (_0x428116 && _0x3ae37c) { for (var _0x55a61c = _0x47d24f['t']['Vector3'][0x0], _0x3ea813 = _0x47d24f['t']['Vector3'][0x1], _0x3fcf1c = _0x428116['length'] - 0x1, _0x4d956b = 0x0, _0x3dfd2b = 0x0; _0x4d956b < _0x3fcf1c; _0x4d956b += 0x2, _0x3dfd2b += 0x4) _0x47d24f['x']['FromArrayToRef'](_0x3ae37c, 0x3 * _0x428116[_0x4d956b], _0x55a61c), _0x47d24f['x']['FromArrayToRef'](_0x3ae37c, 0x3 * _0x428116[_0x4d956b + 0x1], _0x3ea813), this['createLine'](_0x55a61c, _0x3ea813, _0x3dfd2b); var _0x2e36e0 = this['_source']['getScene']()['getEngine'](); this['_buffers'][_0x4209f7['b']['PositionKind']] = new _0x4209f7['b'](_0x2e36e0,this['_linesPositions'],_0x4209f7['b']['PositionKind'],!0x1), this['_buffers'][_0x4209f7['b']['NormalKind']] = new _0x4209f7['b'](_0x2e36e0,this['_linesNormals'],_0x4209f7['b']['NormalKind'],!0x1,!0x1,0x4), this['_ib'] = _0x2e36e0['createIndexBuffer'](this['_linesIndices']), this['_indicesCount'] = this['_linesIndices']['length']; } } , _0x439e74; }(_0x32ce08) , _0xbdf52b = '#ifdef\x20LOGARITHMICDEPTH\x0a#extension\x20GL_EXT_frag_depth\x20:\x20enable\x0a#endif\x0auniform\x20vec4\x20color;\x0a#ifdef\x20ALPHATEST\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20diffuseSampler;\x0a#endif\x0a#include\x0avoid\x20main(void)\x20{\x0a#ifdef\x20ALPHATEST\x0aif\x20(texture2D(diffuseSampler,vUV).a<0.4)\x0adiscard;\x0a#endif\x0a#include\x0agl_FragColor=color;\x0a}'; _0x3e9e56['a']['ShadersStore']['outlinePixelShader'] = _0xbdf52b; var _0x2fe8af = '\x0aattribute\x20vec3\x20position;\x0aattribute\x20vec3\x20normal;\x0a#include\x0a\x0auniform\x20float\x20offset;\x0a#include\x0auniform\x20mat4\x20viewProjection;\x0a#ifdef\x20ALPHATEST\x0avarying\x20vec2\x20vUV;\x0auniform\x20mat4\x20diffuseMatrix;\x0a#ifdef\x20UV1\x0aattribute\x20vec2\x20uv;\x0a#endif\x0a#ifdef\x20UV2\x0aattribute\x20vec2\x20uv2;\x0a#endif\x0a#endif\x0a#include\x0avoid\x20main(void)\x0a{\x0avec3\x20offsetPosition=position+normal*offset;\x0a#include\x0a#include\x0agl_Position=viewProjection*finalWorld*vec4(offsetPosition,1.0);\x0a#ifdef\x20ALPHATEST\x0a#ifdef\x20UV1\x0avUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));\x0a#endif\x0a#ifdef\x20UV2\x0avUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));\x0a#endif\x0a#endif\x0a#include\x0a}\x0a'; _0x3e9e56['a']['ShadersStore']['outlineVertexShader'] = _0x2fe8af; _0x366639['a']['prototype']['getOutlineRenderer'] = function() { return this['_outlineRenderer'] || (this['_outlineRenderer'] = new _0x1b3f40(this)), this['_outlineRenderer']; } , Object['defineProperty'](_0x10c088['a']['prototype'], 'renderOutline', { 'get': function() { return this['_renderOutline']; }, 'set': function(_0x220e38) { _0x220e38 && this['getScene']()['getOutlineRenderer'](), this['_renderOutline'] = _0x220e38; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x10c088['a']['prototype'], 'renderOverlay', { 'get': function() { return this['_renderOverlay']; }, 'set': function(_0x57a5b6) { _0x57a5b6 && this['getScene']()['getOutlineRenderer'](), this['_renderOverlay'] = _0x57a5b6; }, 'enumerable': !0x0, 'configurable': !0x0 }); var _0x1b3f40 = function() { function _0x490a4a(_0x96161e) { this['name'] = _0x443f74['a']['NAME_OUTLINERENDERER'], this['zOffset'] = 0x1, this['scene'] = _0x96161e, this['_engine'] = _0x96161e['getEngine'](), this['scene']['_addComponent'](this); } return _0x490a4a['prototype']['register'] = function() { this['scene']['_beforeRenderingMeshStage']['registerStep'](_0x443f74['a']['STEP_BEFORERENDERINGMESH_OUTLINE'], this, this['_beforeRenderingMesh']), this['scene']['_afterRenderingMeshStage']['registerStep'](_0x443f74['a']['STEP_AFTERRENDERINGMESH_OUTLINE'], this, this['_afterRenderingMesh']); } , _0x490a4a['prototype']['rebuild'] = function() {} , _0x490a4a['prototype']['dispose'] = function() {} , _0x490a4a['prototype']['render'] = function(_0x38cc09, _0x1c1aa8, _0x31eba1) { var _0x1c00e8 = this; void 0x0 === _0x31eba1 && (_0x31eba1 = !0x1); var _0x15d8f4 = this['scene'] , _0x7e0f0f = _0x15d8f4['getEngine']() , _0x59a38c = _0x7e0f0f['getCaps']()['instancedArrays'] && null !== _0x1c1aa8['visibleInstances'][_0x38cc09['_id']] && void 0x0 !== _0x1c1aa8['visibleInstances'][_0x38cc09['_id']]; if (this['isReady'](_0x38cc09, _0x59a38c)) { var _0x2a7ea8 = _0x38cc09['getRenderingMesh']() , _0x255bf1 = _0x38cc09['getMaterial'](); if (_0x255bf1 && _0x15d8f4['activeCamera']) { if (_0x7e0f0f['enableEffect'](this['_effect']), _0x255bf1['useLogarithmicDepth'] && this['_effect']['setFloat']('logarithmicDepthConstant', 0x2 / (Math['log'](_0x15d8f4['activeCamera']['maxZ'] + 0x1) / Math['LN2'])), this['_effect']['setFloat']('offset', _0x31eba1 ? 0x0 : _0x2a7ea8['outlineWidth']), this['_effect']['setColor4']('color', _0x31eba1 ? _0x2a7ea8['overlayColor'] : _0x2a7ea8['outlineColor'], _0x31eba1 ? _0x2a7ea8['overlayAlpha'] : _0x255bf1['alpha']), this['_effect']['setMatrix']('viewProjection', _0x15d8f4['getTransformMatrix']()), _0x2a7ea8['useBones'] && _0x2a7ea8['computeBonesUsingShaders'] && _0x2a7ea8['skeleton'] && this['_effect']['setMatrices']('mBones', _0x2a7ea8['skeleton']['getTransformMatrices'](_0x2a7ea8)), _0x2a7ea8['_bind'](_0x38cc09, this['_effect'], _0x10d420['a']['TriangleFillMode']), _0x255bf1 && _0x255bf1['needAlphaTesting']()) { var _0x3eec07 = _0x255bf1['getAlphaTestTexture'](); _0x3eec07 && (this['_effect']['setTexture']('diffuseSampler', _0x3eec07), this['_effect']['setMatrix']('diffuseMatrix', _0x3eec07['getTextureMatrix']())); } _0x7e0f0f['setZOffset'](-this['zOffset']), _0x2a7ea8['_processRendering'](_0x38cc09, this['_effect'], _0x10d420['a']['TriangleFillMode'], _0x1c1aa8, _0x59a38c, function(_0x4b0761, _0x266561) { _0x1c00e8['_effect']['setMatrix']('world', _0x266561); }), _0x7e0f0f['setZOffset'](0x0); } } } , _0x490a4a['prototype']['isReady'] = function(_0x2a0921, _0x3d7310) { var _0x11cf3c = [] , _0x3754f6 = [_0x4209f7['b']['PositionKind'], _0x4209f7['b']['NormalKind']] , _0x351061 = _0x2a0921['getMesh']() , _0x59ac2e = _0x2a0921['getMaterial'](); _0x59ac2e && (_0x59ac2e['needAlphaTesting']() && (_0x11cf3c['push']('#define\x20ALPHATEST'), _0x351061['isVerticesDataPresent'](_0x4209f7['b']['UVKind']) && (_0x3754f6['push'](_0x4209f7['b']['UVKind']), _0x11cf3c['push']('#define\x20UV1')), _0x351061['isVerticesDataPresent'](_0x4209f7['b']['UV2Kind']) && (_0x3754f6['push'](_0x4209f7['b']['UV2Kind']), _0x11cf3c['push']('#define\x20UV2'))), _0x59ac2e['useLogarithmicDepth'] && _0x11cf3c['push']('#define\x20LOGARITHMICDEPTH')), _0x351061['useBones'] && _0x351061['computeBonesUsingShaders'] ? (_0x3754f6['push'](_0x4209f7['b']['MatricesIndicesKind']), _0x3754f6['push'](_0x4209f7['b']['MatricesWeightsKind']), _0x351061['numBoneInfluencers'] > 0x4 && (_0x3754f6['push'](_0x4209f7['b']['MatricesIndicesExtraKind']), _0x3754f6['push'](_0x4209f7['b']['MatricesWeightsExtraKind'])), _0x11cf3c['push']('#define\x20NUM_BONE_INFLUENCERS\x20' + _0x351061['numBoneInfluencers']), _0x11cf3c['push']('#define\x20BonesPerMesh\x20' + (_0x351061['skeleton'] ? _0x351061['skeleton']['bones']['length'] + 0x1 : 0x0))) : _0x11cf3c['push']('#define\x20NUM_BONE_INFLUENCERS\x200'), _0x3d7310 && (_0x11cf3c['push']('#define\x20INSTANCES'), _0x3754f6['push']('world0'), _0x3754f6['push']('world1'), _0x3754f6['push']('world2'), _0x3754f6['push']('world3')); var _0x42ee2d = _0x11cf3c['join']('\x0a'); return this['_cachedDefines'] !== _0x42ee2d && (this['_cachedDefines'] = _0x42ee2d, this['_effect'] = this['scene']['getEngine']()['createEffect']('outline', _0x3754f6, ['world', 'mBones', 'viewProjection', 'diffuseMatrix', 'offset', 'color', 'logarithmicDepthConstant'], ['diffuseSampler'], _0x42ee2d)), this['_effect']['isReady'](); } , _0x490a4a['prototype']['_beforeRenderingMesh'] = function(_0xdf3726, _0xcc0575, _0x1b85af) { if (this['_savedDepthWrite'] = this['_engine']['getDepthWrite'](), _0xdf3726['renderOutline']) { var _0x5da3e9 = _0xcc0575['getMaterial'](); _0x5da3e9 && _0x5da3e9['needAlphaBlending'] && (this['_engine']['cacheStencilState'](), this['_engine']['setDepthWrite'](!0x1), this['_engine']['setColorWrite'](!0x1), this['_engine']['setStencilBuffer'](!0x0), this['_engine']['setStencilOperationPass'](_0x24e342['a']['REPLACE']), this['_engine']['setStencilFunction'](_0x24e342['a']['ALWAYS']), this['_engine']['setStencilMask'](_0x490a4a['_StencilReference']), this['_engine']['setStencilFunctionReference'](_0x490a4a['_StencilReference']), this['render'](_0xcc0575, _0x1b85af, !0x0), this['_engine']['setColorWrite'](!0x0), this['_engine']['setStencilFunction'](_0x24e342['a']['NOTEQUAL'])), this['_engine']['setDepthWrite'](!0x1), this['render'](_0xcc0575, _0x1b85af), this['_engine']['setDepthWrite'](this['_savedDepthWrite']), _0x5da3e9 && _0x5da3e9['needAlphaBlending'] && this['_engine']['restoreStencilState'](); } } , _0x490a4a['prototype']['_afterRenderingMesh'] = function(_0x36c946, _0x2ba456, _0x36e2bc) { if (_0x36c946['renderOverlay']) { var _0x230961 = this['_engine']['getAlphaMode'](); this['_engine']['setAlphaMode'](_0x24e342['a']['ALPHA_COMBINE']), this['render'](_0x2ba456, _0x36e2bc, !0x0), this['_engine']['setAlphaMode'](_0x230961); } _0x36c946['renderOutline'] && this['_savedDepthWrite'] && (this['_engine']['setDepthWrite'](!0x0), this['_engine']['setColorWrite'](!0x1), this['render'](_0x2ba456, _0x36e2bc), this['_engine']['setColorWrite'](!0x0)); } , _0x490a4a['_StencilReference'] = 0x4, _0x490a4a; }() , _0x4b32a4 = _0x59bd00(0x6d) , _0x1a1f52 = function() { function _0xb6d7e3(_0x2a4fa4, _0x4895de) { this['name'] = _0x2a4fa4, this['color'] = new _0x47d24f['f'](0x1,0x1,0x1,0x1), this['width'] = 0x1, this['height'] = 0x1, this['angle'] = 0x0, this['cellIndex'] = 0x0, this['invertU'] = 0x0, this['invertV'] = 0x0, this['animations'] = new Array(), this['isPickable'] = !0x1, this['_animationStarted'] = !0x1, this['_loopAnimation'] = !0x1, this['_fromIndex'] = 0x0, this['_toIndex'] = 0x0, this['_delay'] = 0x0, this['_direction'] = 0x1, this['_time'] = 0x0, this['isVisible'] = !0x0, this['_manager'] = _0x4895de, this['_manager']['sprites']['push'](this), this['position'] = _0x47d24f['x']['Zero'](); } return Object['defineProperty'](_0xb6d7e3['prototype'], 'size', { 'get': function() { return this['width']; }, 'set': function(_0x12ec05) { this['width'] = _0x12ec05, this['height'] = _0x12ec05; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0xb6d7e3['prototype']['playAnimation'] = function(_0x51769d, _0xd5295, _0x7ea468, _0x241f2a, _0x17c0be) { this['_fromIndex'] = _0x51769d, this['_toIndex'] = _0xd5295, this['_loopAnimation'] = _0x7ea468, this['_delay'] = _0x241f2a, this['_animationStarted'] = !0x0, _0x51769d < _0xd5295 ? this['_direction'] = 0x1 : (this['_direction'] = -0x1, this['_toIndex'] = _0x51769d, this['_fromIndex'] = _0xd5295), this['cellIndex'] = _0x51769d, this['_time'] = 0x0, this['_onAnimationEnd'] = _0x17c0be; } , _0xb6d7e3['prototype']['stopAnimation'] = function() { this['_animationStarted'] = !0x1; } , _0xb6d7e3['prototype']['_animate'] = function(_0x142231) { this['_animationStarted'] && (this['_time'] += _0x142231, this['_time'] > this['_delay'] && (this['_time'] = this['_time'] % this['_delay'], this['cellIndex'] += this['_direction'], (this['_direction'] > 0x0 && this['cellIndex'] > this['_toIndex'] || this['_direction'] < 0x0 && this['cellIndex'] < this['_fromIndex']) && (this['_loopAnimation'] ? this['cellIndex'] = this['_direction'] > 0x0 ? this['_fromIndex'] : this['_toIndex'] : (this['cellIndex'] = this['_toIndex'], this['_animationStarted'] = !0x1, this['_onAnimationEnd'] && this['_onAnimationEnd'](), this['disposeWhenFinishedAnimating'] && this['dispose']())))); } , _0xb6d7e3['prototype']['dispose'] = function() { for (var _0x3417d8 = 0x0; _0x3417d8 < this['_manager']['sprites']['length']; _0x3417d8++) this['_manager']['sprites'][_0x3417d8] == this && this['_manager']['sprites']['splice'](_0x3417d8, 0x1); } , _0xb6d7e3; }(); _0x366639['a']['prototype']['_internalPickSprites'] = function(_0x36896f, _0x304110, _0x134ffb, _0x322b8f) { if (!_0x452236['a']) return null; var _0x1dfb6e = null; if (!_0x322b8f) { if (!this['activeCamera']) return null; _0x322b8f = this['activeCamera']; } if (this['spriteManagers']['length'] > 0x0) for (var _0x390f62 = 0x0; _0x390f62 < this['spriteManagers']['length']; _0x390f62++) { var _0x122f3c = this['spriteManagers'][_0x390f62]; if (_0x122f3c['isPickable']) { var _0x5f2c7a = _0x122f3c['intersects'](_0x36896f, _0x322b8f, _0x304110, _0x134ffb); if (_0x5f2c7a && _0x5f2c7a['hit'] && (_0x134ffb || null == _0x1dfb6e || !(_0x5f2c7a['distance'] >= _0x1dfb6e['distance'])) && (_0x1dfb6e = _0x5f2c7a, _0x134ffb)) break; } } return _0x1dfb6e || new _0x452236['a'](); } , _0x366639['a']['prototype']['pickSprite'] = function(_0x5a4a7b, _0xdc2f51, _0x1607a8, _0x9f6ff8, _0x223e54) { return this['createPickingRayInCameraSpaceToRef'](_0x5a4a7b, _0xdc2f51, this['_tempSpritePickingRay'], _0x223e54), this['_internalPickSprites'](this['_tempSpritePickingRay'], _0x1607a8, _0x9f6ff8, _0x223e54); } , _0x366639['a']['prototype']['pickSpriteWithRay'] = function(_0xeae4f5, _0x12af72, _0x3e96b9, _0x1e8fb1) { if (!this['_tempSpritePickingRay']) return null; if (!_0x1e8fb1) { if (!this['activeCamera']) return null; _0x1e8fb1 = this['activeCamera']; } return _0x19e5af['a']['TransformToRef'](_0xeae4f5, _0x1e8fb1['getViewMatrix'](), this['_tempSpritePickingRay']), this['_internalPickSprites'](this['_tempSpritePickingRay'], _0x12af72, _0x3e96b9, _0x1e8fb1); } , _0x366639['a']['prototype']['setPointerOverSprite'] = function(_0x27edc0) { this['_pointerOverSprite'] !== _0x27edc0 && (this['_pointerOverSprite'] && this['_pointerOverSprite']['actionManager'] && this['_pointerOverSprite']['actionManager']['processTrigger'](_0x24e342['a']['ACTION_OnPointerOutTrigger'], _0x818725['a']['CreateNewFromSprite'](this['_pointerOverSprite'], this)), this['_pointerOverSprite'] = _0x27edc0, this['_pointerOverSprite'] && this['_pointerOverSprite']['actionManager'] && this['_pointerOverSprite']['actionManager']['processTrigger'](_0x24e342['a']['ACTION_OnPointerOverTrigger'], _0x818725['a']['CreateNewFromSprite'](this['_pointerOverSprite'], this))); } , _0x366639['a']['prototype']['getPointerOverSprite'] = function() { return this['_pointerOverSprite']; } ; var _0x2d8b76 = function() { function _0x365024(_0x34cc83) { this['name'] = _0x443f74['a']['NAME_SPRITE'], this['scene'] = _0x34cc83, this['scene']['spriteManagers'] = new Array(), this['scene']['_tempSpritePickingRay'] = _0x19e5af['a'] ? _0x19e5af['a']['Zero']() : null, this['scene']['onBeforeSpritesRenderingObservable'] = new _0x2dbec2['c'](), this['scene']['onAfterSpritesRenderingObservable'] = new _0x2dbec2['c'](), this['_spritePredicate'] = function(_0x262d3b) { return !!_0x262d3b['actionManager'] && (_0x262d3b['isPickable'] && _0x262d3b['actionManager']['hasPointerTriggers']); } ; } return _0x365024['prototype']['register'] = function() { this['scene']['_pointerMoveStage']['registerStep'](_0x443f74['a']['STEP_POINTERMOVE_SPRITE'], this, this['_pointerMove']), this['scene']['_pointerDownStage']['registerStep'](_0x443f74['a']['STEP_POINTERDOWN_SPRITE'], this, this['_pointerDown']), this['scene']['_pointerUpStage']['registerStep'](_0x443f74['a']['STEP_POINTERUP_SPRITE'], this, this['_pointerUp']); } , _0x365024['prototype']['rebuild'] = function() {} , _0x365024['prototype']['dispose'] = function() { this['scene']['onBeforeSpritesRenderingObservable']['clear'](), this['scene']['onAfterSpritesRenderingObservable']['clear'](); for (var _0x2d12a3 = this['scene']['spriteManagers']; _0x2d12a3['length']; ) _0x2d12a3[0x0]['dispose'](); } , _0x365024['prototype']['_pickSpriteButKeepRay'] = function(_0x165c20, _0x404695, _0x4a3717, _0x4ca653, _0x5ee5ba) { var _0x4a694b = this['scene']['pickSprite'](_0x404695, _0x4a3717, this['_spritePredicate'], _0x4ca653, _0x5ee5ba); return _0x4a694b && (_0x4a694b['ray'] = _0x165c20 ? _0x165c20['ray'] : null), _0x4a694b; } , _0x365024['prototype']['_pointerMove'] = function(_0x23c55c, _0x17ac3e, _0x2fbf02, _0x4a7088, _0x5612af) { var _0x4be721 = this['scene']; return _0x4a7088 ? _0x4be721['setPointerOverSprite'](null) : (_0x2fbf02 = this['_pickSpriteButKeepRay'](_0x2fbf02, _0x23c55c, _0x17ac3e, !0x1, _0x4be721['cameraToUseForPointers'] || void 0x0)) && _0x2fbf02['hit'] && _0x2fbf02['pickedSprite'] ? (_0x4be721['setPointerOverSprite'](_0x2fbf02['pickedSprite']), _0x4be721['_pointerOverSprite'] && _0x4be721['_pointerOverSprite']['actionManager'] && _0x4be721['_pointerOverSprite']['actionManager']['hoverCursor'] ? _0x5612af['style']['cursor'] = _0x4be721['_pointerOverSprite']['actionManager']['hoverCursor'] : _0x5612af['style']['cursor'] = _0x4be721['hoverCursor']) : _0x4be721['setPointerOverSprite'](null), _0x2fbf02; } , _0x365024['prototype']['_pointerDown'] = function(_0x32b56d, _0x326a6f, _0xb123c5, _0x54264c) { var _0x2b2748 = this['scene']; if (_0x2b2748['_pickedDownSprite'] = null, _0x2b2748['spriteManagers']['length'] > 0x0 && (_0xb123c5 = _0x2b2748['pickSprite'](_0x32b56d, _0x326a6f, this['_spritePredicate'], !0x1, _0x2b2748['cameraToUseForPointers'] || void 0x0)) && _0xb123c5['hit'] && _0xb123c5['pickedSprite'] && _0xb123c5['pickedSprite']['actionManager']) { switch (_0x2b2748['_pickedDownSprite'] = _0xb123c5['pickedSprite'], _0x54264c['button']) { case 0x0: _0xb123c5['pickedSprite']['actionManager']['processTrigger'](_0x24e342['a']['ACTION_OnLeftPickTrigger'], _0x818725['a']['CreateNewFromSprite'](_0xb123c5['pickedSprite'], _0x2b2748, _0x54264c)); break; case 0x1: _0xb123c5['pickedSprite']['actionManager']['processTrigger'](_0x24e342['a']['ACTION_OnCenterPickTrigger'], _0x818725['a']['CreateNewFromSprite'](_0xb123c5['pickedSprite'], _0x2b2748, _0x54264c)); break; case 0x2: _0xb123c5['pickedSprite']['actionManager']['processTrigger'](_0x24e342['a']['ACTION_OnRightPickTrigger'], _0x818725['a']['CreateNewFromSprite'](_0xb123c5['pickedSprite'], _0x2b2748, _0x54264c)); } _0xb123c5['pickedSprite']['actionManager'] && _0xb123c5['pickedSprite']['actionManager']['processTrigger'](_0x24e342['a']['ACTION_OnPickDownTrigger'], _0x818725['a']['CreateNewFromSprite'](_0xb123c5['pickedSprite'], _0x2b2748, _0x54264c)); } return _0xb123c5; } , _0x365024['prototype']['_pointerUp'] = function(_0x159d6b, _0x175b5a, _0xcb62c9, _0x33df7b) { var _0x686528 = this['scene']; if (_0x686528['spriteManagers']['length'] > 0x0) { var _0x2b5940 = _0x686528['pickSprite'](_0x159d6b, _0x175b5a, this['_spritePredicate'], !0x1, _0x686528['cameraToUseForPointers'] || void 0x0); _0x2b5940 && (_0x2b5940['hit'] && _0x2b5940['pickedSprite'] && _0x2b5940['pickedSprite']['actionManager'] && (_0x2b5940['pickedSprite']['actionManager']['processTrigger'](_0x24e342['a']['ACTION_OnPickUpTrigger'], _0x818725['a']['CreateNewFromSprite'](_0x2b5940['pickedSprite'], _0x686528, _0x33df7b)), _0x2b5940['pickedSprite']['actionManager'] && (this['scene']['_inputManager']['_isPointerSwiping']() || _0x2b5940['pickedSprite']['actionManager']['processTrigger'](_0x24e342['a']['ACTION_OnPickTrigger'], _0x818725['a']['CreateNewFromSprite'](_0x2b5940['pickedSprite'], _0x686528, _0x33df7b)))), _0x686528['_pickedDownSprite'] && _0x686528['_pickedDownSprite']['actionManager'] && _0x686528['_pickedDownSprite'] !== _0x2b5940['pickedSprite'] && _0x686528['_pickedDownSprite']['actionManager']['processTrigger'](_0x24e342['a']['ACTION_OnPickOutTrigger'], _0x818725['a']['CreateNewFromSprite'](_0x686528['_pickedDownSprite'], _0x686528, _0x33df7b))); } return _0xcb62c9; } , _0x365024; }() , _0x5e1982 = 'uniform\x20bool\x20alphaTest;\x0avarying\x20vec4\x20vColor;\x0a\x0avarying\x20vec2\x20vUV;\x0auniform\x20sampler2D\x20diffuseSampler;\x0a\x0a#include\x0avoid\x20main(void)\x20{\x0avec4\x20color=texture2D(diffuseSampler,vUV);\x0aif\x20(alphaTest)\x0a{\x0aif\x20(color.a<0.95)\x0adiscard;\x0a}\x0acolor*=vColor;\x0a#include\x0agl_FragColor=color;\x0a}'; _0x3e9e56['a']['ShadersStore']['spritesPixelShader'] = _0x5e1982; var _0x4a62d5 = '\x0aattribute\x20vec4\x20position;\x0aattribute\x20vec4\x20options;\x0aattribute\x20vec4\x20cellInfo;\x0aattribute\x20vec4\x20color;\x0a\x0auniform\x20vec2\x20textureInfos;\x0auniform\x20mat4\x20view;\x0auniform\x20mat4\x20projection;\x0a\x0avarying\x20vec2\x20vUV;\x0avarying\x20vec4\x20vColor;\x0a#include\x0avoid\x20main(void)\x20{\x0avec3\x20viewPos=(view*vec4(position.xyz,1.0)).xyz;\x0avec2\x20cornerPos;\x0afloat\x20angle=position.w;\x0avec2\x20size=vec2(options.x,options.y);\x0avec2\x20offset=options.zw;\x0avec2\x20uvScale=textureInfos.xy;\x0acornerPos=vec2(offset.x-0.5,offset.y-0.5)*size;\x0a\x0avec3\x20rotatedCorner;\x0arotatedCorner.x=cornerPos.x*cos(angle)-cornerPos.y*sin(angle);\x0arotatedCorner.y=cornerPos.x*sin(angle)+cornerPos.y*cos(angle);\x0arotatedCorner.z=0.;\x0a\x0aviewPos+=rotatedCorner;\x0agl_Position=projection*vec4(viewPos,1.0);\x0a\x0avColor=color;\x0a\x0avec2\x20uvOffset=vec2(abs(offset.x-cellInfo.x),1.0-abs(offset.y-cellInfo.y));\x0avUV=(uvOffset+cellInfo.zw)*uvScale;\x0a\x0a#ifdef\x20FOG\x0avFogDistance=viewPos;\x0a#endif\x0a}'; _0x3e9e56['a']['ShadersStore']['spritesVertexShader'] = _0x4a62d5; var _0x2df5ec, _0x3f02ea = function() { function _0x1270f5(_0x37f875, _0x313e8c, _0x504c9a, _0x28fb35, _0x38e37e, _0x5a093f, _0x30af8f) { if (void 0x0 === _0x5a093f && (_0x5a093f = 0.01), void 0x0 === _0x30af8f && (_0x30af8f = _0x11d14a['a']['TRILINEAR_SAMPLINGMODE']), this['name'] = _0x37f875, this['sprites'] = new Array(), this['renderingGroupId'] = 0x0, this['layerMask'] = 0xfffffff, this['fogEnabled'] = !0x0, this['isPickable'] = !0x1, this['onDisposeObservable'] = new _0x2dbec2['c'](), this['_vertexBuffers'] = {}, _0x38e37e['_getComponent'](_0x443f74['a']['NAME_SPRITE']) || _0x38e37e['_addComponent'](new _0x2d8b76(_0x38e37e)), this['_capacity'] = _0x504c9a, this['_spriteTexture'] = new _0x11d14a['a'](_0x313e8c,_0x38e37e,!0x0,!0x1,_0x30af8f), this['_spriteTexture']['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], this['_spriteTexture']['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x28fb35['width'] && _0x28fb35['height']) this['cellWidth'] = _0x28fb35['width'], this['cellHeight'] = _0x28fb35['height']; else { if (void 0x0 === _0x28fb35) return; this['cellWidth'] = _0x28fb35, this['cellHeight'] = _0x28fb35; } this['_epsilon'] = _0x5a093f, this['_scene'] = _0x38e37e, this['_scene']['spriteManagers']['push'](this); for (var _0x3c6a80 = [], _0x13ef77 = 0x0, _0x1630f7 = 0x0; _0x1630f7 < _0x504c9a; _0x1630f7++) _0x3c6a80['push'](_0x13ef77), _0x3c6a80['push'](_0x13ef77 + 0x1), _0x3c6a80['push'](_0x13ef77 + 0x2), _0x3c6a80['push'](_0x13ef77), _0x3c6a80['push'](_0x13ef77 + 0x2), _0x3c6a80['push'](_0x13ef77 + 0x3), _0x13ef77 += 0x4; this['_indexBuffer'] = _0x38e37e['getEngine']()['createIndexBuffer'](_0x3c6a80), this['_vertexData'] = new Float32Array(0x10 * _0x504c9a * 0x4), this['_buffer'] = new _0x4209f7['a'](_0x38e37e['getEngine'](),this['_vertexData'],!0x0,0x10); var _0x35cfe0 = this['_buffer']['createVertexBuffer'](_0x4209f7['b']['PositionKind'], 0x0, 0x4) , _0x587f26 = this['_buffer']['createVertexBuffer']('options', 0x4, 0x4) , _0x1dd8e3 = this['_buffer']['createVertexBuffer']('cellInfo', 0x8, 0x4) , _0x3fcc93 = this['_buffer']['createVertexBuffer'](_0x4209f7['b']['ColorKind'], 0xc, 0x4); this['_vertexBuffers'][_0x4209f7['b']['PositionKind']] = _0x35cfe0, this['_vertexBuffers']['options'] = _0x587f26, this['_vertexBuffers']['cellInfo'] = _0x1dd8e3, this['_vertexBuffers'][_0x4209f7['b']['ColorKind']] = _0x3fcc93, this['_effectBase'] = this['_scene']['getEngine']()['createEffect']('sprites', [_0x4209f7['b']['PositionKind'], 'options', 'cellInfo', _0x4209f7['b']['ColorKind']], ['view', 'projection', 'textureInfos', 'alphaTest'], ['diffuseSampler'], ''), this['_effectFog'] = this['_scene']['getEngine']()['createEffect']('sprites', [_0x4209f7['b']['PositionKind'], 'options', 'cellInfo', _0x4209f7['b']['ColorKind']], ['view', 'projection', 'textureInfos', 'alphaTest', 'vFogInfos', 'vFogColor'], ['diffuseSampler'], '#define\x20FOG'); } return Object['defineProperty'](_0x1270f5['prototype'], 'onDispose', { 'set': function(_0x3a6c83) { this['_onDisposeObserver'] && this['onDisposeObservable']['remove'](this['_onDisposeObserver']), this['_onDisposeObserver'] = this['onDisposeObservable']['add'](_0x3a6c83); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1270f5['prototype'], 'texture', { 'get': function() { return this['_spriteTexture']; }, 'set': function(_0x179c39) { this['_spriteTexture'] = _0x179c39; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1270f5['prototype']['_appendSpriteVertex'] = function(_0x4f6fec, _0x47c780, _0x12a0e5, _0x5acafc, _0x319341) { var _0x3e3c1a = 0x10 * _0x4f6fec; 0x0 === _0x12a0e5 ? _0x12a0e5 = this['_epsilon'] : 0x1 === _0x12a0e5 && (_0x12a0e5 = 0x1 - this['_epsilon']), 0x0 === _0x5acafc ? _0x5acafc = this['_epsilon'] : 0x1 === _0x5acafc && (_0x5acafc = 0x1 - this['_epsilon']), this['_vertexData'][_0x3e3c1a] = _0x47c780['position']['x'], this['_vertexData'][_0x3e3c1a + 0x1] = _0x47c780['position']['y'], this['_vertexData'][_0x3e3c1a + 0x2] = _0x47c780['position']['z'], this['_vertexData'][_0x3e3c1a + 0x3] = _0x47c780['angle'], this['_vertexData'][_0x3e3c1a + 0x4] = _0x47c780['width'], this['_vertexData'][_0x3e3c1a + 0x5] = _0x47c780['height'], this['_vertexData'][_0x3e3c1a + 0x6] = _0x12a0e5, this['_vertexData'][_0x3e3c1a + 0x7] = _0x5acafc, this['_vertexData'][_0x3e3c1a + 0x8] = _0x47c780['invertU'] ? 0x1 : 0x0, this['_vertexData'][_0x3e3c1a + 0x9] = _0x47c780['invertV'] ? 0x1 : 0x0; var _0x37586a = _0x47c780['cellIndex'] / _0x319341 >> 0x0; this['_vertexData'][_0x3e3c1a + 0xa] = _0x47c780['cellIndex'] - _0x37586a * _0x319341, this['_vertexData'][_0x3e3c1a + 0xb] = _0x37586a, this['_vertexData'][_0x3e3c1a + 0xc] = _0x47c780['color']['r'], this['_vertexData'][_0x3e3c1a + 0xd] = _0x47c780['color']['g'], this['_vertexData'][_0x3e3c1a + 0xe] = _0x47c780['color']['b'], this['_vertexData'][_0x3e3c1a + 0xf] = _0x47c780['color']['a']; } , _0x1270f5['prototype']['intersects'] = function(_0x1b013b, _0x4f0112, _0x5210ff, _0x2a7bdf) { for (var _0x1e7ab6 = Math['min'](this['_capacity'], this['sprites']['length']), _0x2ebf14 = _0x47d24f['x']['Zero'](), _0xd29b3c = _0x47d24f['x']['Zero'](), _0x414289 = Number['MAX_VALUE'], _0x48fe4e = null, _0x2b176c = _0x47d24f['x']['Zero'](), _0x551ad3 = _0x47d24f['x']['Zero'](), _0x3792c6 = _0x4f0112['getViewMatrix'](), _0x184c87 = 0x0; _0x184c87 < _0x1e7ab6; _0x184c87++) { var _0x58bc2f = this['sprites'][_0x184c87]; if (_0x58bc2f) { if (_0x5210ff) { if (!_0x5210ff(_0x58bc2f)) continue; } else if (!_0x58bc2f['isPickable']) continue; if (_0x47d24f['x']['TransformCoordinatesToRef'](_0x58bc2f['position'], _0x3792c6, _0x551ad3), _0x2ebf14['copyFromFloats'](_0x551ad3['x'] - _0x58bc2f['width'] / 0x2, _0x551ad3['y'] - _0x58bc2f['height'] / 0x2, _0x551ad3['z']), _0xd29b3c['copyFromFloats'](_0x551ad3['x'] + _0x58bc2f['width'] / 0x2, _0x551ad3['y'] + _0x58bc2f['height'] / 0x2, _0x551ad3['z']), _0x1b013b['intersectsBoxMinMax'](_0x2ebf14, _0xd29b3c)) { var _0x7dd9cc = _0x47d24f['x']['Distance'](_0x551ad3, _0x1b013b['origin']); if (_0x414289 > _0x7dd9cc && (_0x414289 = _0x7dd9cc, _0x48fe4e = _0x58bc2f, _0x2a7bdf)) break; } } } if (_0x48fe4e) { var _0x100302 = new _0x452236['a'](); _0x3792c6['invertToRef'](_0x47d24f['t']['Matrix'][0x0]), _0x100302['hit'] = !0x0, _0x100302['pickedSprite'] = _0x48fe4e, _0x100302['distance'] = _0x414289; var _0x13709d = _0x47d24f['t']['Vector3'][0x0]; return _0x13709d['copyFrom'](_0x1b013b['direction']), _0x13709d['normalize'](), _0x13709d['scaleInPlace'](_0x414289), _0x1b013b['origin']['addToRef'](_0x13709d, _0x2b176c), _0x100302['pickedPoint'] = _0x47d24f['x']['TransformCoordinates'](_0x2b176c, _0x47d24f['t']['Matrix'][0x0]), _0x100302; } return null; } , _0x1270f5['prototype']['render'] = function() { if (this['_effectBase']['isReady']() && this['_effectFog']['isReady']() && this['_spriteTexture'] && this['_spriteTexture']['isReady']() && this['sprites']['length']) { for (var _0x405c8f = this['_scene']['getEngine'](), _0x23c120 = this['_spriteTexture']['getBaseSize'](), _0x3a7ffe = _0x405c8f['getDeltaTime'](), _0x29c350 = Math['min'](this['_capacity'], this['sprites']['length']), _0x2bdb53 = _0x23c120['width'] / this['cellWidth'], _0x292fca = 0x0, _0x1787e2 = !0x0, _0x381bab = 0x0; _0x381bab < _0x29c350; _0x381bab++) { var _0x4cd227 = this['sprites'][_0x381bab]; _0x4cd227 && _0x4cd227['isVisible'] && (_0x1787e2 = !0x1, _0x4cd227['_animate'](_0x3a7ffe), this['_appendSpriteVertex'](_0x292fca++, _0x4cd227, 0x0, 0x0, _0x2bdb53), this['_appendSpriteVertex'](_0x292fca++, _0x4cd227, 0x1, 0x0, _0x2bdb53), this['_appendSpriteVertex'](_0x292fca++, _0x4cd227, 0x1, 0x1, _0x2bdb53), this['_appendSpriteVertex'](_0x292fca++, _0x4cd227, 0x0, 0x1, _0x2bdb53)); } if (!_0x1787e2) { this['_buffer']['update'](this['_vertexData']); var _0x484375 = this['_effectBase']; this['_scene']['fogEnabled'] && this['_scene']['fogMode'] !== _0x366639['a']['FOGMODE_NONE'] && this['fogEnabled'] && (_0x484375 = this['_effectFog']), _0x405c8f['enableEffect'](_0x484375); var _0x3b9a31 = this['_scene']['getViewMatrix'](); _0x484375['setTexture']('diffuseSampler', this['_spriteTexture']), _0x484375['setMatrix']('view', _0x3b9a31), _0x484375['setMatrix']('projection', this['_scene']['getProjectionMatrix']()), _0x484375['setFloat2']('textureInfos', this['cellWidth'] / _0x23c120['width'], this['cellHeight'] / _0x23c120['height']), this['_scene']['fogEnabled'] && this['_scene']['fogMode'] !== _0x366639['a']['FOGMODE_NONE'] && this['fogEnabled'] && (_0x484375['setFloat4']('vFogInfos', this['_scene']['fogMode'], this['_scene']['fogStart'], this['_scene']['fogEnd'], this['_scene']['fogDensity']), _0x484375['setColor3']('vFogColor', this['_scene']['fogColor'])), _0x405c8f['bindBuffers'](this['_vertexBuffers'], this['_indexBuffer'], _0x484375), _0x405c8f['setDepthFunctionToLessOrEqual'](), _0x484375['setBool']('alphaTest', !0x0), _0x405c8f['setColorWrite'](!0x1), _0x405c8f['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, _0x292fca / 0x4 * 0x6), _0x405c8f['setColorWrite'](!0x0), _0x484375['setBool']('alphaTest', !0x1), _0x405c8f['setAlphaMode'](_0x24e342['a']['ALPHA_COMBINE']), _0x405c8f['drawElementsType'](_0x10d420['a']['TriangleFillMode'], 0x0, _0x292fca / 0x4 * 0x6), _0x405c8f['setAlphaMode'](_0x24e342['a']['ALPHA_DISABLE']); } } } , _0x1270f5['prototype']['dispose'] = function() { this['_buffer'] && (this['_buffer']['dispose'](), this['_buffer'] = null), this['_indexBuffer'] && (this['_scene']['getEngine']()['_releaseBuffer'](this['_indexBuffer']), this['_indexBuffer'] = null), this['_spriteTexture'] && (this['_spriteTexture']['dispose'](), this['_spriteTexture'] = null); var _0x45305b = this['_scene']['spriteManagers']['indexOf'](this); this['_scene']['spriteManagers']['splice'](_0x45305b, 0x1), this['onDisposeObservable']['notifyObservers'](this), this['onDisposeObservable']['clear'](); } , _0x1270f5; }(), _0x4bb53a = _0x59bd00(0x5e), _0x34cff2 = _0x59bd00(0x68); !function(_0x48cb9e) { _0x48cb9e[_0x48cb9e['INIT'] = 0x0] = 'INIT', _0x48cb9e[_0x48cb9e['RUNNING'] = 0x1] = 'RUNNING', _0x48cb9e[_0x48cb9e['DONE'] = 0x2] = 'DONE', _0x48cb9e[_0x48cb9e['ERROR'] = 0x3] = 'ERROR'; }(_0x2df5ec || (_0x2df5ec = {})); var _0x1d4201, _0x46228d = function() { function _0x5d229d(_0x5dd0ae) { this['name'] = _0x5dd0ae, this['_isCompleted'] = !0x1, this['_taskState'] = _0x2df5ec['INIT']; } return Object['defineProperty'](_0x5d229d['prototype'], 'isCompleted', { 'get': function() { return this['_isCompleted']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5d229d['prototype'], 'taskState', { 'get': function() { return this['_taskState']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5d229d['prototype'], 'errorObject', { 'get': function() { return this['_errorObject']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5d229d['prototype']['_setErrorObject'] = function(_0x526ba2, _0x3f5b03) { this['_errorObject'] || (this['_errorObject'] = { 'message': _0x526ba2, 'exception': _0x3f5b03 }); } , _0x5d229d['prototype']['run'] = function(_0x101c73, _0x52fec6, _0x304403) { var _0x29f2bb = this; this['_taskState'] = _0x2df5ec['RUNNING'], this['runTask'](_0x101c73, function() { _0x29f2bb['onDoneCallback'](_0x52fec6, _0x304403); }, function(_0x311d4d, _0x14e2fd) { _0x29f2bb['onErrorCallback'](_0x304403, _0x311d4d, _0x14e2fd); }); } , _0x5d229d['prototype']['runTask'] = function(_0x3055ef, _0x28dbf7, _0x192a92) { throw new Error('runTask\x20is\x20not\x20implemented'); } , _0x5d229d['prototype']['reset'] = function() { this['_taskState'] = _0x2df5ec['INIT']; } , _0x5d229d['prototype']['onErrorCallback'] = function(_0x192d39, _0x270b68, _0x548b04) { this['_taskState'] = _0x2df5ec['ERROR'], this['_errorObject'] = { 'message': _0x270b68, 'exception': _0x548b04 }, this['onError'] && this['onError'](this, _0x270b68, _0x548b04), _0x192d39(); } , _0x5d229d['prototype']['onDoneCallback'] = function(_0x5c2f46, _0x2ac87a) { try { this['_taskState'] = _0x2df5ec['DONE'], this['_isCompleted'] = !0x0, this['onSuccess'] && this['onSuccess'](this), _0x5c2f46(); } catch (_0x3c6e95) { this['onErrorCallback'](_0x2ac87a, 'Task\x20is\x20done,\x20error\x20executing\x20success\x20callback(s)', _0x3c6e95); } } , _0x5d229d; }(), _0x475da6 = function() { return function(_0x1d881f, _0x52ec4f, _0x501e28) { this['remainingCount'] = _0x1d881f, this['totalCount'] = _0x52ec4f, this['task'] = _0x501e28; } ; }(), _0x5dfd73 = function(_0x9cd95) { function _0xe16606(_0x38fbb8, _0x47a025, _0x5b2903, _0x145b69) { var _0x17f9b2 = _0x9cd95['call'](this, _0x38fbb8) || this; return _0x17f9b2['name'] = _0x38fbb8, _0x17f9b2['meshesNames'] = _0x47a025, _0x17f9b2['rootUrl'] = _0x5b2903, _0x17f9b2['sceneFilename'] = _0x145b69, _0x17f9b2; } return _0x420e5b['d'](_0xe16606, _0x9cd95), _0xe16606['prototype']['runTask'] = function(_0xea63, _0x27108e, _0x40f669) { var _0x2d0a3d = this; _0x32da6b['ImportMesh'](this['meshesNames'], this['rootUrl'], this['sceneFilename'], _0xea63, function(_0x1a90bd, _0x370354, _0x139303, _0x24af93) { _0x2d0a3d['loadedMeshes'] = _0x1a90bd, _0x2d0a3d['loadedParticleSystems'] = _0x370354, _0x2d0a3d['loadedSkeletons'] = _0x139303, _0x2d0a3d['loadedAnimationGroups'] = _0x24af93, _0x27108e(); }, null, function(_0x34a280, _0x583772, _0x2cebb1) { _0x40f669(_0x583772, _0x2cebb1); }); } , _0xe16606; }(_0x46228d), _0x505371 = function(_0xeb7d1c) { function _0x3262db(_0x146bc3, _0x464828) { var _0x3766bb = _0xeb7d1c['call'](this, _0x146bc3) || this; return _0x3766bb['name'] = _0x146bc3, _0x3766bb['url'] = _0x464828, _0x3766bb; } return _0x420e5b['d'](_0x3262db, _0xeb7d1c), _0x3262db['prototype']['runTask'] = function(_0x54a9aa, _0x2c80eb, _0xfd9aa2) { var _0x4bf51d = this; _0x54a9aa['_loadFile'](this['url'], function(_0x4e854b) { _0x4bf51d['text'] = _0x4e854b, _0x2c80eb(); }, void 0x0, !0x1, !0x1, function(_0xaff11f, _0x5bf31c) { _0xaff11f && _0xfd9aa2(_0xaff11f['status'] + '\x20' + _0xaff11f['statusText'], _0x5bf31c); }); } , _0x3262db; }(_0x46228d), _0x1ca8c2 = function(_0x17df28) { function _0x52c490(_0x10e8fa, _0x283d00) { var _0x28f2d2 = _0x17df28['call'](this, _0x10e8fa) || this; return _0x28f2d2['name'] = _0x10e8fa, _0x28f2d2['url'] = _0x283d00, _0x28f2d2; } return _0x420e5b['d'](_0x52c490, _0x17df28), _0x52c490['prototype']['runTask'] = function(_0x3e33f8, _0x3fa65f, _0x5c4561) { var _0x38dafb = this; _0x3e33f8['_loadFile'](this['url'], function(_0x17c2d8) { _0x38dafb['data'] = _0x17c2d8, _0x3fa65f(); }, void 0x0, !0x0, !0x0, function(_0x81c1af, _0x539a32) { _0x81c1af && _0x5c4561(_0x81c1af['status'] + '\x20' + _0x81c1af['statusText'], _0x539a32); }); } , _0x52c490; }(_0x46228d), _0x315ab6 = function(_0x3cf076) { function _0x46ab20(_0x55245e, _0x18d1c4) { var _0x217cab = _0x3cf076['call'](this, _0x55245e) || this; return _0x217cab['name'] = _0x55245e, _0x217cab['url'] = _0x18d1c4, _0x217cab; } return _0x420e5b['d'](_0x46ab20, _0x3cf076), _0x46ab20['prototype']['runTask'] = function(_0x58ab8c, _0x396c66, _0x304347) { var _0x4f346f = this , _0x170af6 = new Image(); _0x1eb50e['h']['SetCorsBehavior'](this['url'], _0x170af6), _0x170af6['onload'] = function() { _0x4f346f['image'] = _0x170af6, _0x396c66(); } , _0x170af6['onerror'] = function(_0x143d36) { _0x304347('Error\x20loading\x20image', _0x143d36); } , _0x170af6['src'] = this['url']; } , _0x46ab20; }(_0x46228d), _0x530e14 = function(_0x51f9ac) { function _0x502235(_0x42c3df, _0x3aaa37, _0x336bcd, _0x11dc2e, _0x59fbc3) { void 0x0 === _0x59fbc3 && (_0x59fbc3 = _0x11d14a['a']['TRILINEAR_SAMPLINGMODE']); var _0x4b3f25 = _0x51f9ac['call'](this, _0x42c3df) || this; return _0x4b3f25['name'] = _0x42c3df, _0x4b3f25['url'] = _0x3aaa37, _0x4b3f25['noMipmap'] = _0x336bcd, _0x4b3f25['invertY'] = _0x11dc2e, _0x4b3f25['samplingMode'] = _0x59fbc3, _0x4b3f25; } return _0x420e5b['d'](_0x502235, _0x51f9ac), _0x502235['prototype']['runTask'] = function(_0x2e7ee1, _0x70f640, _0x2f8437) { this['texture'] = new _0x11d14a['a'](this['url'],_0x2e7ee1,this['noMipmap'],this['invertY'],this['samplingMode'],function() { _0x70f640(); } ,function(_0x5bef24, _0x15f9b4) { _0x2f8437(_0x5bef24, _0x15f9b4); } ); } , _0x502235; }(_0x46228d), _0x49f7dc = function(_0x5e6d9c) { function _0x5660ac(_0x3c5552, _0x46adbb, _0x5b91ef, _0x13a874, _0x2fc54b) { var _0x7ff9d6 = _0x5e6d9c['call'](this, _0x3c5552) || this; return _0x7ff9d6['name'] = _0x3c5552, _0x7ff9d6['url'] = _0x46adbb, _0x7ff9d6['extensions'] = _0x5b91ef, _0x7ff9d6['noMipmap'] = _0x13a874, _0x7ff9d6['files'] = _0x2fc54b, _0x7ff9d6; } return _0x420e5b['d'](_0x5660ac, _0x5e6d9c), _0x5660ac['prototype']['runTask'] = function(_0x4dd06b, _0x3511b1, _0x2d926a) { this['texture'] = new _0x1ed101(this['url'],_0x4dd06b,this['extensions'],this['noMipmap'],this['files'],function() { _0x3511b1(); } ,function(_0x3a2846, _0xff012e) { _0x2d926a(_0x3a2846, _0xff012e); } ); } , _0x5660ac; }(_0x46228d), _0x31277d = function(_0xa48d17) { function _0x59a66c(_0x4d12dd, _0x594a41, _0x45c686, _0x136b47, _0x57a4e9, _0x55a145, _0x4784bd) { void 0x0 === _0x136b47 && (_0x136b47 = !0x1), void 0x0 === _0x57a4e9 && (_0x57a4e9 = !0x0), void 0x0 === _0x55a145 && (_0x55a145 = !0x1), void 0x0 === _0x4784bd && (_0x4784bd = !0x1); var _0x24ffdc = _0xa48d17['call'](this, _0x4d12dd) || this; return _0x24ffdc['name'] = _0x4d12dd, _0x24ffdc['url'] = _0x594a41, _0x24ffdc['size'] = _0x45c686, _0x24ffdc['noMipmap'] = _0x136b47, _0x24ffdc['generateHarmonics'] = _0x57a4e9, _0x24ffdc['gammaSpace'] = _0x55a145, _0x24ffdc['reserved'] = _0x4784bd, _0x24ffdc; } return _0x420e5b['d'](_0x59a66c, _0xa48d17), _0x59a66c['prototype']['runTask'] = function(_0x9dc568, _0x22c62f, _0x36fc5d) { this['texture'] = new _0x52697b(this['url'],_0x9dc568,this['size'],this['noMipmap'],this['generateHarmonics'],this['gammaSpace'],this['reserved'],function() { _0x22c62f(); } ,function(_0x27ed5b, _0x115471) { _0x36fc5d(_0x27ed5b, _0x115471); } ); } , _0x59a66c; }(_0x46228d), _0x42a465 = function(_0x52fc98) { function _0x5aa311(_0x585c23, _0x1dcefa, _0x5acdab, _0x33dbf6, _0x159138) { void 0x0 === _0x33dbf6 && (_0x33dbf6 = !0x1), void 0x0 === _0x159138 && (_0x159138 = !0x0); var _0x1caa8d = _0x52fc98['call'](this, _0x585c23) || this; return _0x1caa8d['name'] = _0x585c23, _0x1caa8d['url'] = _0x1dcefa, _0x1caa8d['size'] = _0x5acdab, _0x1caa8d['noMipmap'] = _0x33dbf6, _0x1caa8d['gammaSpace'] = _0x159138, _0x1caa8d; } return _0x420e5b['d'](_0x5aa311, _0x52fc98), _0x5aa311['prototype']['runTask'] = function(_0x4216b5, _0x123009, _0x21680d) { this['texture'] = new _0x29f52a(this['url'],_0x4216b5,this['size'],this['noMipmap'],this['gammaSpace'],function() { _0x123009(); } ,function(_0x11a106, _0x110a91) { _0x21680d(_0x11a106, _0x110a91); } ); } , _0x5aa311; }(_0x46228d), _0x328fb2 = function() { function _0x991c2e(_0xdec74f) { this['_isLoading'] = !0x1, this['_tasks'] = new Array(), this['_waitingTasksCount'] = 0x0, this['_totalTasksCount'] = 0x0, this['onTaskSuccessObservable'] = new _0x2dbec2['c'](), this['onTaskErrorObservable'] = new _0x2dbec2['c'](), this['onTasksDoneObservable'] = new _0x2dbec2['c'](), this['onProgressObservable'] = new _0x2dbec2['c'](), this['useDefaultLoadingScreen'] = !0x0, this['_scene'] = _0xdec74f; } return _0x991c2e['prototype']['addMeshTask'] = function(_0x5b9b93, _0x3e4822, _0x1c9edd, _0x3759fc) { var _0x7eb35a = new _0x5dfd73(_0x5b9b93,_0x3e4822,_0x1c9edd,_0x3759fc); return this['_tasks']['push'](_0x7eb35a), _0x7eb35a; } , _0x991c2e['prototype']['addTextFileTask'] = function(_0x1ca706, _0x5e0d27) { var _0xe105c4 = new _0x505371(_0x1ca706,_0x5e0d27); return this['_tasks']['push'](_0xe105c4), _0xe105c4; } , _0x991c2e['prototype']['addBinaryFileTask'] = function(_0x12e4dd, _0x12aa7d) { var _0x2422ef = new _0x1ca8c2(_0x12e4dd,_0x12aa7d); return this['_tasks']['push'](_0x2422ef), _0x2422ef; } , _0x991c2e['prototype']['addImageTask'] = function(_0x248ee8, _0x5b92a1) { var _0x3eb152 = new _0x315ab6(_0x248ee8,_0x5b92a1); return this['_tasks']['push'](_0x3eb152), _0x3eb152; } , _0x991c2e['prototype']['addTextureTask'] = function(_0x1a07c9, _0x1c76bd, _0xb8054f, _0x136d74, _0x5ccaac) { void 0x0 === _0x5ccaac && (_0x5ccaac = _0x11d14a['a']['TRILINEAR_SAMPLINGMODE']); var _0x34b978 = new _0x530e14(_0x1a07c9,_0x1c76bd,_0xb8054f,_0x136d74,_0x5ccaac); return this['_tasks']['push'](_0x34b978), _0x34b978; } , _0x991c2e['prototype']['addCubeTextureTask'] = function(_0x3818bd, _0x30b80c, _0x391ea7, _0x3cde4e, _0x12f5f0) { var _0x1293bf = new _0x49f7dc(_0x3818bd,_0x30b80c,_0x391ea7,_0x3cde4e,_0x12f5f0); return this['_tasks']['push'](_0x1293bf), _0x1293bf; } , _0x991c2e['prototype']['addHDRCubeTextureTask'] = function(_0x530a63, _0x4ff9f4, _0x57eed4, _0x3e18ae, _0x5eebce, _0x567790, _0x837f99) { void 0x0 === _0x3e18ae && (_0x3e18ae = !0x1), void 0x0 === _0x5eebce && (_0x5eebce = !0x0), void 0x0 === _0x567790 && (_0x567790 = !0x1), void 0x0 === _0x837f99 && (_0x837f99 = !0x1); var _0x51c500 = new _0x31277d(_0x530a63,_0x4ff9f4,_0x57eed4,_0x3e18ae,_0x5eebce,_0x567790,_0x837f99); return this['_tasks']['push'](_0x51c500), _0x51c500; } , _0x991c2e['prototype']['addEquiRectangularCubeTextureAssetTask'] = function(_0x2df6b5, _0x5af344, _0x35260b, _0xa1e0e6, _0x3eace2) { void 0x0 === _0xa1e0e6 && (_0xa1e0e6 = !0x1), void 0x0 === _0x3eace2 && (_0x3eace2 = !0x0); var _0x5c3c2e = new _0x42a465(_0x2df6b5,_0x5af344,_0x35260b,_0xa1e0e6,_0x3eace2); return this['_tasks']['push'](_0x5c3c2e), _0x5c3c2e; } , _0x991c2e['prototype']['removeTask'] = function(_0x48bddc) { var _0x3b21b3 = this['_tasks']['indexOf'](_0x48bddc); _0x3b21b3 > -0x1 && this['_tasks']['splice'](_0x3b21b3, 0x1); } , _0x991c2e['prototype']['_decreaseWaitingTasksCount'] = function(_0x181630) { this['_waitingTasksCount']--; try { this['onProgress'] && this['onProgress'](this['_waitingTasksCount'], this['_totalTasksCount'], _0x181630), this['onProgressObservable']['notifyObservers'](new _0x475da6(this['_waitingTasksCount'],this['_totalTasksCount'],_0x181630)); } catch (_0x428665) { _0x3f98cb['a']['Error']('Error\x20running\x20progress\x20callbacks.'), console['log'](_0x428665); } if (0x0 === this['_waitingTasksCount']) { try { this['onFinish'] && this['onFinish'](this['_tasks']); for (var _0x42b5e0 = this['_tasks']['slice'](), _0x19a3c6 = 0x0, _0x57c198 = _0x42b5e0; _0x19a3c6 < _0x57c198['length']; _0x19a3c6++) { if ((_0x181630 = _0x57c198[_0x19a3c6])['taskState'] === _0x2df5ec['DONE']) { var _0x34cfc2 = this['_tasks']['indexOf'](_0x181630); _0x34cfc2 > -0x1 && this['_tasks']['splice'](_0x34cfc2, 0x1); } } this['onTasksDoneObservable']['notifyObservers'](this['_tasks']); } catch (_0x25404e) { _0x3f98cb['a']['Error']('Error\x20running\x20tasks-done\x20callbacks.'), console['log'](_0x25404e); } this['_isLoading'] = !0x1, this['_scene']['getEngine']()['hideLoadingUI'](); } } , _0x991c2e['prototype']['_runTask'] = function(_0x49ff37) { var _0x376d6f = this , _0x183fee = function(_0x4c13fd, _0x1a7de9) { _0x49ff37['_setErrorObject'](_0x4c13fd, _0x1a7de9), _0x376d6f['onTaskError'] && _0x376d6f['onTaskError'](_0x49ff37), _0x376d6f['onTaskErrorObservable']['notifyObservers'](_0x49ff37), _0x376d6f['_decreaseWaitingTasksCount'](_0x49ff37); }; _0x49ff37['run'](this['_scene'], function() { try { _0x376d6f['onTaskSuccess'] && _0x376d6f['onTaskSuccess'](_0x49ff37), _0x376d6f['onTaskSuccessObservable']['notifyObservers'](_0x49ff37), _0x376d6f['_decreaseWaitingTasksCount'](_0x49ff37); } catch (_0x58b207) { _0x183fee('Error\x20executing\x20task\x20success\x20callbacks', _0x58b207); } }, _0x183fee); } , _0x991c2e['prototype']['reset'] = function() { return this['_isLoading'] = !0x1, this['_tasks'] = new Array(), this; } , _0x991c2e['prototype']['load'] = function() { if (this['_isLoading']) return this; if (this['_isLoading'] = !0x0, this['_waitingTasksCount'] = this['_tasks']['length'], this['_totalTasksCount'] = this['_tasks']['length'], 0x0 === this['_waitingTasksCount']) return this['_isLoading'] = !0x1, this['onFinish'] && this['onFinish'](this['_tasks']), this['onTasksDoneObservable']['notifyObservers'](this['_tasks']), this; this['useDefaultLoadingScreen'] && this['_scene']['getEngine']()['displayLoadingUI'](); for (var _0x26e760 = 0x0; _0x26e760 < this['_tasks']['length']; _0x26e760++) { var _0x2a5859 = this['_tasks'][_0x26e760]; _0x2a5859['taskState'] === _0x2df5ec['INIT'] && this['_runTask'](_0x2a5859); } return this; } , _0x991c2e['prototype']['loadAsync'] = function() { var _0x17f4be = this; return new Promise(function(_0x164cab, _0x7879c) { _0x17f4be['onTasksDoneObservable']['addOnce'](function(_0x4be9ce) { _0x4be9ce && _0x4be9ce['length'] ? _0x7879c(_0x4be9ce) : _0x164cab(); }); } ); } , _0x991c2e; }(), _0x32d309 = function() { function _0x5ad981() { var _0x118527 = this; this['promise'] = new Promise(function(_0x1dbc96, _0x3ec909) { _0x118527['_resolve'] = _0x1dbc96, _0x118527['_reject'] = _0x3ec909; } ); } return Object['defineProperty'](_0x5ad981['prototype'], 'resolve', { 'get': function() { return this['_resolve']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5ad981['prototype'], 'reject', { 'get': function() { return this['_reject']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5ad981; }(), _0x59d204 = function() { function _0x32f0e6(_0x551abf, _0x5710f9) { this['_meshesOrigins'] = [], this['_toCenterVectors'] = [], this['_scaledDirection'] = _0x47d24f['x']['Zero'](), this['_newPosition'] = _0x47d24f['x']['Zero'](), this['_centerPosition'] = _0x47d24f['x']['Zero'](), this['_meshes'] = _0x551abf['slice'](), _0x5710f9 ? this['_centerMesh'] = _0x5710f9 : this['_setCenterMesh'](); var _0x395237 = this['_meshes']['indexOf'](this['_centerMesh']); _0x395237 >= 0x0 && this['_meshes']['splice'](_0x395237, 0x1), this['_centerPosition'] = this['_centerMesh']['getAbsolutePosition']()['clone'](); for (var _0x546924 = 0x0; _0x546924 < this['_meshes']['length']; _0x546924++) if (this['_meshes'][_0x546924]) { var _0x5e0477 = this['_meshes'][_0x546924]; this['_meshesOrigins'][_0x546924] = _0x5e0477['getAbsolutePosition']()['clone'](), this['_toCenterVectors'][_0x546924] = _0x47d24f['x']['Zero'](), _0x5e0477['_boundingInfo'] && this['_centerMesh']['_boundingInfo'] && _0x5e0477['_boundingInfo']['boundingBox']['centerWorld']['subtractToRef'](this['_centerMesh']['_boundingInfo']['boundingBox']['centerWorld'], this['_toCenterVectors'][_0x546924]); } } return _0x32f0e6['prototype']['_setCenterMesh'] = function() { for (var _0x4d239f = _0x47d24f['x']['Zero'](), _0x554faf = _0x47d24f['x']['Zero'](), _0x4d209f = Number['MAX_VALUE'], _0x5322e3 = 0x0; _0x5322e3 < this['_meshes']['length']; _0x5322e3++) { if (this['_meshes'][_0x5322e3]) (_0xe5fb44 = (_0x27a395 = this['_meshes'][_0x5322e3])['getBoundingInfo']()) && _0x554faf['addInPlace'](_0xe5fb44['boundingBox']['centerWorld']); } _0x4d239f = _0x554faf['scale'](0x1 / this['_meshes']['length']); for (_0x5322e3 = 0x0; _0x5322e3 < this['_meshes']['length']; _0x5322e3++) { var _0x27a395, _0xe5fb44; if (this['_meshes'][_0x5322e3]) if (_0xe5fb44 = (_0x27a395 = this['_meshes'][_0x5322e3])['getBoundingInfo']()) { var _0x342442 = _0xe5fb44['boundingBox']['centerWorld']['subtract'](_0x4d239f)['lengthSquared'](); _0x342442 < _0x4d209f && (this['_centerMesh'] = _0x27a395, _0x4d209f = _0x342442); } } } , _0x32f0e6['prototype']['getClassName'] = function() { return 'MeshExploder'; } , _0x32f0e6['prototype']['getMeshes'] = function() { var _0xe8c397 = this['_meshes']['slice'](); return _0xe8c397['unshift'](this['_centerMesh']), _0xe8c397; } , _0x32f0e6['prototype']['explode'] = function(_0x14007b) { void 0x0 === _0x14007b && (_0x14007b = 0x1); for (var _0x40d0af = 0x0; _0x40d0af < this['_meshes']['length']; _0x40d0af++) this['_meshes'][_0x40d0af] && this['_meshesOrigins'][_0x40d0af] && this['_toCenterVectors'][_0x40d0af] && (this['_toCenterVectors'][_0x40d0af]['scaleToRef'](_0x14007b, this['_scaledDirection']), this['_meshesOrigins'][_0x40d0af]['addToRef'](this['_scaledDirection'], this['_newPosition']), this['_meshes'][_0x40d0af]['setAbsolutePosition'](this['_newPosition'])); this['_centerMesh']['setAbsolutePosition'](this['_centerPosition']); } , _0x32f0e6; }(), _0x4cfac7 = function() { function _0x5de3fc(_0x5f3381, _0x312727, _0x282c52, _0x3eed13, _0x34ae79, _0x25d4eb, _0x400881, _0x230ec4, _0x4b5def) { this['onProcessFileCallback'] = function() { return !0x0; } , this['_engine'] = _0x5f3381, this['_currentScene'] = _0x312727, this['_sceneLoadedCallback'] = _0x282c52, this['_progressCallback'] = _0x3eed13, this['_additionalRenderLoopLogicCallback'] = _0x34ae79, this['_textureLoadingCallback'] = _0x25d4eb, this['_startingProcessingFilesCallback'] = _0x400881, this['_onReloadCallback'] = _0x230ec4, this['_errorCallback'] = _0x4b5def; } return Object['defineProperty'](_0x5de3fc, 'FilesToLoad', { 'get': function() { return _0x51b1a2['a']['FilesToLoad']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5de3fc['prototype']['monitorElementForDragNDrop'] = function(_0x46c18c) { var _0x3f1c5c = this; _0x46c18c && (this['_elementToMonitor'] = _0x46c18c, this['_dragEnterHandler'] = function(_0x51d76b) { _0x3f1c5c['drag'](_0x51d76b); } , this['_dragOverHandler'] = function(_0x4459a0) { _0x3f1c5c['drag'](_0x4459a0); } , this['_dropHandler'] = function(_0x482296) { _0x3f1c5c['drop'](_0x482296); } , this['_elementToMonitor']['addEventListener']('dragenter', this['_dragEnterHandler'], !0x1), this['_elementToMonitor']['addEventListener']('dragover', this['_dragOverHandler'], !0x1), this['_elementToMonitor']['addEventListener']('drop', this['_dropHandler'], !0x1)); } , _0x5de3fc['prototype']['dispose'] = function() { this['_elementToMonitor'] && (this['_elementToMonitor']['removeEventListener']('dragenter', this['_dragEnterHandler']), this['_elementToMonitor']['removeEventListener']('dragover', this['_dragOverHandler']), this['_elementToMonitor']['removeEventListener']('drop', this['_dropHandler'])); } , _0x5de3fc['prototype']['renderFunction'] = function() { if (this['_additionalRenderLoopLogicCallback'] && this['_additionalRenderLoopLogicCallback'](), this['_currentScene']) { if (this['_textureLoadingCallback']) { var _0x25ad48 = this['_currentScene']['getWaitingItemsCount'](); _0x25ad48 > 0x0 && this['_textureLoadingCallback'](_0x25ad48); } this['_currentScene']['render'](); } } , _0x5de3fc['prototype']['drag'] = function(_0x2f5424) { _0x2f5424['stopPropagation'](), _0x2f5424['preventDefault'](); } , _0x5de3fc['prototype']['drop'] = function(_0x307193) { _0x307193['stopPropagation'](), _0x307193['preventDefault'](), this['loadFiles'](_0x307193); } , _0x5de3fc['prototype']['_traverseFolder'] = function(_0x33ba33, _0x26ce48, _0x445d76, _0x54b805) { var _0x4eb703 = this , _0x5acaf1 = _0x33ba33['createReader']() , _0x2d6914 = _0x33ba33['fullPath']['replace'](/^\//, '')['replace'](/(.+?)\/?$/, '$1/'); _0x5acaf1['readEntries'](function(_0x291ea1) { _0x445d76['count'] += _0x291ea1['length']; for (var _0x24c2b9 = 0x0, _0x59835a = _0x291ea1; _0x24c2b9 < _0x59835a['length']; _0x24c2b9++) { var _0x5f50a6 = _0x59835a[_0x24c2b9]; _0x5f50a6['isFile'] ? _0x5f50a6['file'](function(_0x4e7557) { _0x4e7557['correctName'] = _0x2d6914 + _0x4e7557['name'], _0x26ce48['push'](_0x4e7557), 0x0 == --_0x445d76['count'] && _0x54b805(); }) : _0x5f50a6['isDirectory'] && _0x4eb703['_traverseFolder'](_0x5f50a6, _0x26ce48, _0x445d76, _0x54b805); } --_0x445d76['count'] && _0x54b805(); }); } , _0x5de3fc['prototype']['_processFiles'] = function(_0x35eda2) { for (var _0x10df78 = 0x0; _0x10df78 < _0x35eda2['length']; _0x10df78++) { var _0x126d98 = _0x35eda2[_0x10df78]['correctName']['toLowerCase']() , _0x1509f1 = _0x126d98['split']('.')['pop'](); this['onProcessFileCallback'](_0x35eda2[_0x10df78], _0x126d98, _0x1509f1) && ('babylon' !== _0x1509f1 && 'stl' !== _0x1509f1 && 'obj' !== _0x1509f1 && 'gltf' !== _0x1509f1 && 'glb' !== _0x1509f1 || -0x1 !== _0x126d98['indexOf']('.binary.babylon') || -0x1 !== _0x126d98['indexOf']('.incremental.babylon') || (this['_sceneFileToLoad'] = _0x35eda2[_0x10df78]), _0x5de3fc['FilesToLoad'][_0x126d98] = _0x35eda2[_0x10df78]); } } , _0x5de3fc['prototype']['loadFiles'] = function(_0x120f22) { var _0x19e651 = this; if (_0x120f22 && _0x120f22['dataTransfer'] && _0x120f22['dataTransfer']['files'] && (this['_filesToLoad'] = _0x120f22['dataTransfer']['files']), _0x120f22 && _0x120f22['target'] && _0x120f22['target']['files'] && (this['_filesToLoad'] = _0x120f22['target']['files']), this['_filesToLoad'] && 0x0 !== this['_filesToLoad']['length'] && (this['_startingProcessingFilesCallback'] && this['_startingProcessingFilesCallback'](this['_filesToLoad']), this['_filesToLoad'] && this['_filesToLoad']['length'] > 0x0)) { for (var _0x515cb5 = new Array(), _0x2153af = [], _0x264bd3 = _0x120f22['dataTransfer'] ? _0x120f22['dataTransfer']['items'] : null, _0x3586d9 = 0x0; _0x3586d9 < this['_filesToLoad']['length']; _0x3586d9++) { var _0xba3ebe = this['_filesToLoad'][_0x3586d9] , _0x27591f = _0xba3ebe['name']['toLowerCase']() , _0x27d5c8 = void 0x0; if (_0xba3ebe['correctName'] = _0x27591f, _0x264bd3) { var _0x54a34e = _0x264bd3[_0x3586d9]; _0x54a34e['getAsEntry'] ? _0x27d5c8 = _0x54a34e['getAsEntry']() : _0x54a34e['webkitGetAsEntry'] && (_0x27d5c8 = _0x54a34e['webkitGetAsEntry']()); } _0x27d5c8 && _0x27d5c8['isDirectory'] ? _0x2153af['push'](_0x27d5c8) : _0x515cb5['push'](_0xba3ebe); } if (0x0 === _0x2153af['length']) this['_processFiles'](_0x515cb5), this['_processReload'](); else for (var _0x459b94 = { 'count': _0x2153af['length'] }, _0x1c5989 = 0x0, _0x33df17 = _0x2153af; _0x1c5989 < _0x33df17['length']; _0x1c5989++) { var _0x41c84e = _0x33df17[_0x1c5989]; this['_traverseFolder'](_0x41c84e, _0x515cb5, _0x459b94, function() { _0x19e651['_processFiles'](_0x515cb5), 0x0 === _0x459b94['count'] && _0x19e651['_processReload'](); }); } } } , _0x5de3fc['prototype']['_processReload'] = function() { this['_onReloadCallback'] ? this['_onReloadCallback'](this['_sceneFileToLoad']) : this['reload'](); } , _0x5de3fc['prototype']['reload'] = function() { var _0x2fcaa8 = this; this['_sceneFileToLoad'] ? (this['_currentScene'] && (_0x3f98cb['a']['errorsCount'] > 0x0 && _0x3f98cb['a']['ClearLogCache'](), this['_engine']['stopRenderLoop']()), _0x32da6b['LoadAsync']('file:', this['_sceneFileToLoad'], this['_engine'], function(_0xff5322) { _0x2fcaa8['_progressCallback'] && _0x2fcaa8['_progressCallback'](_0xff5322); })['then'](function(_0x2bb5a3) { _0x2fcaa8['_currentScene'] && _0x2fcaa8['_currentScene']['dispose'](), _0x2fcaa8['_currentScene'] = _0x2bb5a3, _0x2fcaa8['_sceneLoadedCallback'] && _0x2fcaa8['_sceneLoadedCallback'](_0x2fcaa8['_sceneFileToLoad'], _0x2fcaa8['_currentScene']), _0x2fcaa8['_currentScene']['executeWhenReady'](function() { _0x2fcaa8['_engine']['runRenderLoop'](function() { _0x2fcaa8['renderFunction'](); }); }); })['catch'](function(_0x5c9586) { _0x2fcaa8['_errorCallback'] && _0x2fcaa8['_errorCallback'](_0x2fcaa8['_sceneFileToLoad'], _0x2fcaa8['_currentScene'], _0x5c9586['message']); })) : _0x3f98cb['a']['Error']('Please\x20provide\x20a\x20valid\x20.babylon\x20file.'); } , _0x5de3fc; }(), _0x346f8f = _0x59bd00(0x69), _0x17b93a = _0x59bd00(0x6a), _0x5c4ad6 = function() { function _0x385921(_0xbdaa74) { void 0x0 === _0xbdaa74 && (_0xbdaa74 = 0x0), this['priority'] = _0xbdaa74; } return _0x385921['prototype']['getDescription'] = function() { return ''; } , _0x385921['prototype']['apply'] = function(_0x156a0e, _0x3f5083) { return !0x0; } , _0x385921; }(), _0x2ccbdc = function(_0x30cec5) { function _0x1fb123(_0x42981d, _0x392582, _0x586d0d) { void 0x0 === _0x42981d && (_0x42981d = 0x0), void 0x0 === _0x392582 && (_0x392582 = 0x400), void 0x0 === _0x586d0d && (_0x586d0d = 0.5); var _0x341ce1 = _0x30cec5['call'](this, _0x42981d) || this; return _0x341ce1['priority'] = _0x42981d, _0x341ce1['maximumSize'] = _0x392582, _0x341ce1['step'] = _0x586d0d, _0x341ce1; } return _0x420e5b['d'](_0x1fb123, _0x30cec5), _0x1fb123['prototype']['getDescription'] = function() { return 'Reducing\x20render\x20target\x20texture\x20size\x20to\x20' + this['maximumSize']; } , _0x1fb123['prototype']['apply'] = function(_0x3e3149, _0x162852) { for (var _0x56ed9a = !0x0, _0x4198e8 = 0x0; _0x4198e8 < _0x3e3149['textures']['length']; _0x4198e8++) { var _0x30790d = _0x3e3149['textures'][_0x4198e8]; if (_0x30790d['canRescale'] && !_0x30790d['getContext']) { var _0x38e6db = _0x30790d['getSize'](); Math['max'](_0x38e6db['width'], _0x38e6db['height']) > this['maximumSize'] && (_0x30790d['scale'](this['step']), _0x56ed9a = !0x1); } } return _0x56ed9a; } , _0x1fb123; }(_0x5c4ad6), _0x1001c7 = function(_0x3ac704) { function _0x270ce1(_0x4fc457, _0x5e0146, _0x345a00) { void 0x0 === _0x4fc457 && (_0x4fc457 = 0x0), void 0x0 === _0x5e0146 && (_0x5e0146 = 0x2), void 0x0 === _0x345a00 && (_0x345a00 = 0.25); var _0x4f0427 = _0x3ac704['call'](this, _0x4fc457) || this; return _0x4f0427['priority'] = _0x4fc457, _0x4f0427['maximumScale'] = _0x5e0146, _0x4f0427['step'] = _0x345a00, _0x4f0427['_currentScale'] = -0x1, _0x4f0427['_directionOffset'] = 0x1, _0x4f0427; } return _0x420e5b['d'](_0x270ce1, _0x3ac704), _0x270ce1['prototype']['getDescription'] = function() { return 'Setting\x20hardware\x20scaling\x20level\x20to\x20' + this['_currentScale']; } , _0x270ce1['prototype']['apply'] = function(_0x4f7ca5, _0x84602f) { return -0x1 === this['_currentScale'] && (this['_currentScale'] = _0x4f7ca5['getEngine']()['getHardwareScalingLevel'](), this['_currentScale'] > this['maximumScale'] && (this['_directionOffset'] = -0x1)), this['_currentScale'] += this['_directionOffset'] * this['step'], _0x4f7ca5['getEngine']()['setHardwareScalingLevel'](this['_currentScale']), 0x1 === this['_directionOffset'] ? this['_currentScale'] >= this['maximumScale'] : this['_currentScale'] <= this['maximumScale']; } , _0x270ce1; }(_0x5c4ad6), _0x15102b = function(_0x4698e2) { function _0x27243b() { return null !== _0x4698e2 && _0x4698e2['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x27243b, _0x4698e2), _0x27243b['prototype']['getDescription'] = function() { return 'Turning\x20shadows\x20on/off'; } , _0x27243b['prototype']['apply'] = function(_0x3e02ac, _0x3205c4) { return _0x3e02ac['shadowsEnabled'] = _0x3205c4['isInImprovementMode'], !0x0; } , _0x27243b; }(_0x5c4ad6), _0x57ee5d = function(_0x3de996) { function _0x302097() { return null !== _0x3de996 && _0x3de996['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x302097, _0x3de996), _0x302097['prototype']['getDescription'] = function() { return 'Turning\x20post-processes\x20on/off'; } , _0x302097['prototype']['apply'] = function(_0x2b4684, _0x3115e4) { return _0x2b4684['postProcessesEnabled'] = _0x3115e4['isInImprovementMode'], !0x0; } , _0x302097; }(_0x5c4ad6), _0x115b3a = function(_0x438503) { function _0x10d8e1() { return null !== _0x438503 && _0x438503['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x10d8e1, _0x438503), _0x10d8e1['prototype']['getDescription'] = function() { return 'Turning\x20lens\x20flares\x20on/off'; } , _0x10d8e1['prototype']['apply'] = function(_0x552843, _0x39185c) { return _0x552843['lensFlaresEnabled'] = _0x39185c['isInImprovementMode'], !0x0; } , _0x10d8e1; }(_0x5c4ad6), _0x5a55f1 = function(_0x201d47) { function _0x1d7139() { return null !== _0x201d47 && _0x201d47['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x1d7139, _0x201d47), _0x1d7139['prototype']['getDescription'] = function() { return this['onGetDescription'] ? this['onGetDescription']() : 'Running\x20user\x20defined\x20callback'; } , _0x1d7139['prototype']['apply'] = function(_0x3e4708, _0x426b2f) { return !this['onApply'] || this['onApply'](_0x3e4708, _0x426b2f); } , _0x1d7139; }(_0x5c4ad6), _0xf01b94 = function(_0x1b4b8b) { function _0x5f4565() { return null !== _0x1b4b8b && _0x1b4b8b['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x5f4565, _0x1b4b8b), _0x5f4565['prototype']['getDescription'] = function() { return 'Turning\x20particles\x20on/off'; } , _0x5f4565['prototype']['apply'] = function(_0x23e104, _0xe5ecfb) { return _0x23e104['particlesEnabled'] = _0xe5ecfb['isInImprovementMode'], !0x0; } , _0x5f4565; }(_0x5c4ad6), _0x210981 = function(_0x741ef5) { function _0x43c914() { return null !== _0x741ef5 && _0x741ef5['apply'](this, arguments) || this; } return _0x420e5b['d'](_0x43c914, _0x741ef5), _0x43c914['prototype']['getDescription'] = function() { return 'Turning\x20render\x20targets\x20off'; } , _0x43c914['prototype']['apply'] = function(_0x32e550, _0x1f27e2) { return _0x32e550['renderTargetsEnabled'] = _0x1f27e2['isInImprovementMode'], !0x0; } , _0x43c914; }(_0x5c4ad6), _0x3366ca = function(_0x614e68) { function _0x43ea96() { var _0x49b2ef = null !== _0x614e68 && _0x614e68['apply'](this, arguments) || this; return _0x49b2ef['_canBeMerged'] = function(_0x389524) { if (!(_0x389524 instanceof _0xb4719b['a'])) return !0x1; var _0xb7f806 = _0x389524; return !_0xb7f806['isDisposed']() && (!(!_0xb7f806['isVisible'] || !_0xb7f806['isEnabled']()) && (!(_0xb7f806['instances']['length'] > 0x0) && (!_0xb7f806['skeleton'] && !_0xb7f806['hasLODLevels']))); } , _0x49b2ef; } return _0x420e5b['d'](_0x43ea96, _0x614e68), Object['defineProperty'](_0x43ea96, 'UpdateSelectionTree', { 'get': function() { return _0x43ea96['_UpdateSelectionTree']; }, 'set': function(_0x541e83) { _0x43ea96['_UpdateSelectionTree'] = _0x541e83; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x43ea96['prototype']['getDescription'] = function() { return 'Merging\x20similar\x20meshes\x20together'; } , _0x43ea96['prototype']['apply'] = function(_0x210f4f, _0x282b65, _0x1676c6) { for (var _0x375af2 = _0x210f4f['meshes']['slice'](0x0), _0x110355 = _0x375af2['length'], _0x8859a8 = 0x0; _0x8859a8 < _0x110355; _0x8859a8++) { var _0x59f9d9 = new Array() , _0x246d58 = _0x375af2[_0x8859a8]; if (this['_canBeMerged'](_0x246d58)) { _0x59f9d9['push'](_0x246d58); for (var _0x25edb5 = _0x8859a8 + 0x1; _0x25edb5 < _0x110355; _0x25edb5++) { var _0x465734 = _0x375af2[_0x25edb5]; this['_canBeMerged'](_0x465734) && (_0x465734['material'] === _0x246d58['material'] && _0x465734['checkCollisions'] === _0x246d58['checkCollisions'] && (_0x59f9d9['push'](_0x465734), _0x110355--, _0x375af2['splice'](_0x25edb5, 0x1), _0x25edb5--)); } _0x59f9d9['length'] < 0x2 || _0xb4719b['a']['MergeMeshes'](_0x59f9d9, void 0x0, !0x0); } } var _0x2a4739 = _0x210f4f; return _0x2a4739['createOrUpdateSelectionOctree'] && (null != _0x1676c6 ? _0x1676c6 && _0x2a4739['createOrUpdateSelectionOctree']() : _0x43ea96['UpdateSelectionTree'] && _0x2a4739['createOrUpdateSelectionOctree']()), !0x0; } , _0x43ea96['_UpdateSelectionTree'] = !0x1, _0x43ea96; }(_0x5c4ad6), _0x268997 = function() { function _0x39566b(_0x1f2e22, _0x45c165) { void 0x0 === _0x1f2e22 && (_0x1f2e22 = 0x3c), void 0x0 === _0x45c165 && (_0x45c165 = 0x7d0), this['targetFrameRate'] = _0x1f2e22, this['trackerDuration'] = _0x45c165, this['optimizations'] = new Array(); } return _0x39566b['prototype']['addOptimization'] = function(_0x550ec0) { return this['optimizations']['push'](_0x550ec0), this; } , _0x39566b['prototype']['addCustomOptimization'] = function(_0x258619, _0x45f7c7, _0x42c1c0) { void 0x0 === _0x42c1c0 && (_0x42c1c0 = 0x0); var _0x145c07 = new _0x5a55f1(_0x42c1c0); return _0x145c07['onApply'] = _0x258619, _0x145c07['onGetDescription'] = _0x45f7c7, this['optimizations']['push'](_0x145c07), this; } , _0x39566b['LowDegradationAllowed'] = function(_0x514056) { var _0x503ef1 = new _0x39566b(_0x514056) , _0x3a4223 = 0x0; return _0x503ef1['addOptimization'](new _0x3366ca(_0x3a4223)), _0x503ef1['addOptimization'](new _0x15102b(_0x3a4223)), _0x503ef1['addOptimization'](new _0x115b3a(_0x3a4223)), _0x3a4223++, _0x503ef1['addOptimization'](new _0x57ee5d(_0x3a4223)), _0x503ef1['addOptimization'](new _0xf01b94(_0x3a4223)), _0x3a4223++, _0x503ef1['addOptimization'](new _0x2ccbdc(_0x3a4223,0x400)), _0x503ef1; } , _0x39566b['ModerateDegradationAllowed'] = function(_0x1bcbf8) { var _0x726646 = new _0x39566b(_0x1bcbf8) , _0x42fb7d = 0x0; return _0x726646['addOptimization'](new _0x3366ca(_0x42fb7d)), _0x726646['addOptimization'](new _0x15102b(_0x42fb7d)), _0x726646['addOptimization'](new _0x115b3a(_0x42fb7d)), _0x42fb7d++, _0x726646['addOptimization'](new _0x57ee5d(_0x42fb7d)), _0x726646['addOptimization'](new _0xf01b94(_0x42fb7d)), _0x42fb7d++, _0x726646['addOptimization'](new _0x2ccbdc(_0x42fb7d,0x200)), _0x42fb7d++, _0x726646['addOptimization'](new _0x210981(_0x42fb7d)), _0x42fb7d++, _0x726646['addOptimization'](new _0x1001c7(_0x42fb7d,0x2)), _0x726646; } , _0x39566b['HighDegradationAllowed'] = function(_0x5930ab) { var _0x2f915a = new _0x39566b(_0x5930ab) , _0x2684a6 = 0x0; return _0x2f915a['addOptimization'](new _0x3366ca(_0x2684a6)), _0x2f915a['addOptimization'](new _0x15102b(_0x2684a6)), _0x2f915a['addOptimization'](new _0x115b3a(_0x2684a6)), _0x2684a6++, _0x2f915a['addOptimization'](new _0x57ee5d(_0x2684a6)), _0x2f915a['addOptimization'](new _0xf01b94(_0x2684a6)), _0x2684a6++, _0x2f915a['addOptimization'](new _0x2ccbdc(_0x2684a6,0x100)), _0x2684a6++, _0x2f915a['addOptimization'](new _0x210981(_0x2684a6)), _0x2684a6++, _0x2f915a['addOptimization'](new _0x1001c7(_0x2684a6,0x4)), _0x2f915a; } , _0x39566b; }(), _0x23adcd = function() { function _0x548f00(_0x36b669, _0x21a33a, _0x5465d3, _0x56306a) { var _0x4b0fe6 = this; if (void 0x0 === _0x5465d3 && (_0x5465d3 = !0x0), void 0x0 === _0x56306a && (_0x56306a = !0x1), this['_isRunning'] = !0x1, this['_currentPriorityLevel'] = 0x0, this['_targetFrameRate'] = 0x3c, this['_trackerDuration'] = 0x7d0, this['_currentFrameRate'] = 0x0, this['_improvementMode'] = !0x1, this['onSuccessObservable'] = new _0x2dbec2['c'](), this['onNewOptimizationAppliedObservable'] = new _0x2dbec2['c'](), this['onFailureObservable'] = new _0x2dbec2['c'](), this['_options'] = _0x21a33a || new _0x268997(), this['_options']['targetFrameRate'] && (this['_targetFrameRate'] = this['_options']['targetFrameRate']), this['_options']['trackerDuration'] && (this['_trackerDuration'] = this['_options']['trackerDuration']), _0x5465d3) for (var _0x2a2f02 = 0x0, _0x4eec61 = 0x0, _0x3b80eb = this['_options']['optimizations']; _0x4eec61 < _0x3b80eb['length']; _0x4eec61++) { _0x3b80eb[_0x4eec61]['priority'] = _0x2a2f02++; } this['_improvementMode'] = _0x56306a, this['_scene'] = _0x36b669 || _0x48707b['a']['LastCreatedScene'], this['_sceneDisposeObserver'] = this['_scene']['onDisposeObservable']['add'](function() { _0x4b0fe6['_sceneDisposeObserver'] = null, _0x4b0fe6['dispose'](); }); } return Object['defineProperty'](_0x548f00['prototype'], 'isInImprovementMode', { 'get': function() { return this['_improvementMode']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x548f00['prototype'], 'currentPriorityLevel', { 'get': function() { return this['_currentPriorityLevel']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x548f00['prototype'], 'currentFrameRate', { 'get': function() { return this['_currentFrameRate']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x548f00['prototype'], 'targetFrameRate', { 'get': function() { return this['_targetFrameRate']; }, 'set': function(_0x2d9d7f) { this['_targetFrameRate'] = _0x2d9d7f; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x548f00['prototype'], 'trackerDuration', { 'get': function() { return this['_trackerDuration']; }, 'set': function(_0x21ca10) { this['_trackerDuration'] = _0x21ca10; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x548f00['prototype'], 'optimizations', { 'get': function() { return this['_options']['optimizations']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x548f00['prototype']['stop'] = function() { this['_isRunning'] = !0x1; } , _0x548f00['prototype']['reset'] = function() { this['_currentPriorityLevel'] = 0x0; } , _0x548f00['prototype']['start'] = function() { var _0x2218dd = this; this['_isRunning'] || (this['_isRunning'] = !0x0, this['_scene']['executeWhenReady'](function() { setTimeout(function() { _0x2218dd['_checkCurrentState'](); }, _0x2218dd['_trackerDuration']); })); } , _0x548f00['prototype']['_checkCurrentState'] = function() { var _0x2ef905 = this; if (this['_isRunning']) { var _0x28a410 = this['_scene'] , _0x3b455e = this['_options']; if (this['_currentFrameRate'] = Math['round'](_0x28a410['getEngine']()['getFps']()), this['_improvementMode'] && this['_currentFrameRate'] <= this['_targetFrameRate'] || !this['_improvementMode'] && this['_currentFrameRate'] >= this['_targetFrameRate']) return this['_isRunning'] = !0x1, void this['onSuccessObservable']['notifyObservers'](this); for (var _0x38d182 = !0x0, _0x2be96c = !0x0, _0x31eb69 = 0x0; _0x31eb69 < _0x3b455e['optimizations']['length']; _0x31eb69++) { var _0x1ffa64 = _0x3b455e['optimizations'][_0x31eb69]; _0x1ffa64['priority'] === this['_currentPriorityLevel'] && (_0x2be96c = !0x1, _0x38d182 = _0x38d182 && _0x1ffa64['apply'](_0x28a410, this), this['onNewOptimizationAppliedObservable']['notifyObservers'](_0x1ffa64)); } if (_0x2be96c) return this['_isRunning'] = !0x1, void this['onFailureObservable']['notifyObservers'](this); _0x38d182 && this['_currentPriorityLevel']++, _0x28a410['executeWhenReady'](function() { setTimeout(function() { _0x2ef905['_checkCurrentState'](); }, _0x2ef905['_trackerDuration']); }); } } , _0x548f00['prototype']['dispose'] = function() { this['stop'](), this['onSuccessObservable']['clear'](), this['onFailureObservable']['clear'](), this['onNewOptimizationAppliedObservable']['clear'](), this['_sceneDisposeObserver'] && this['_scene']['onDisposeObservable']['remove'](this['_sceneDisposeObserver']); } , _0x548f00['OptimizeAsync'] = function(_0x1eb79c, _0x5eb58e, _0x43a088, _0x81a96c) { var _0x160dcd = new _0x548f00(_0x1eb79c,_0x5eb58e || _0x268997['ModerateDegradationAllowed'](),!0x1); return _0x43a088 && _0x160dcd['onSuccessObservable']['add'](function() { _0x43a088(); }), _0x81a96c && _0x160dcd['onFailureObservable']['add'](function() { _0x81a96c(); }), _0x160dcd['start'](), _0x160dcd; } , _0x548f00; }(), _0x4f9c71 = [], _0x401387 = function(_0x4da2f0, _0x30b853) { _0x4f9c71[_0x4da2f0['id']] || _0x4da2f0['doNotSerialize'] || (_0x30b853['vertexData']['push'](_0x4da2f0['serializeVerticeData']()), _0x4f9c71[_0x4da2f0['id']] = !0x0); }, _0x13eaa7 = function(_0x120601, _0x25e261) { var _0x4e2a08 = {} , _0xec84c7 = _0x120601['_geometry']; return _0xec84c7 && (_0x120601['getScene']()['getGeometryByID'](_0xec84c7['id']) || _0x401387(_0xec84c7, _0x25e261['geometries'])), _0x120601['serialize'] && _0x120601['serialize'](_0x4e2a08), _0x4e2a08; }, _0x3595ea = function() { function _0x96d5a2() {} return _0x96d5a2['ClearCache'] = function() { _0x4f9c71 = []; } , _0x96d5a2['Serialize'] = function(_0xc75759) { var _0x165615, _0x5d73a2, _0x4eda9e, _0x25f68f = {}; if (_0x96d5a2['ClearCache'](), _0x25f68f['useDelayedTextureLoading'] = _0xc75759['useDelayedTextureLoading'], _0x25f68f['autoClear'] = _0xc75759['autoClear'], _0x25f68f['clearColor'] = _0xc75759['clearColor']['asArray'](), _0x25f68f['ambientColor'] = _0xc75759['ambientColor']['asArray'](), _0x25f68f['gravity'] = _0xc75759['gravity']['asArray'](), _0x25f68f['collisionsEnabled'] = _0xc75759['collisionsEnabled'], _0xc75759['fogMode'] && 0x0 !== _0xc75759['fogMode'] && (_0x25f68f['fogMode'] = _0xc75759['fogMode'], _0x25f68f['fogColor'] = _0xc75759['fogColor']['asArray'](), _0x25f68f['fogStart'] = _0xc75759['fogStart'], _0x25f68f['fogEnd'] = _0xc75759['fogEnd'], _0x25f68f['fogDensity'] = _0xc75759['fogDensity']), _0xc75759['isPhysicsEnabled']()) { var _0x421d9a = _0xc75759['getPhysicsEngine'](); _0x421d9a && (_0x25f68f['physicsEnabled'] = !0x0, _0x25f68f['physicsGravity'] = _0x421d9a['gravity']['asArray'](), _0x25f68f['physicsEngine'] = _0x421d9a['getPhysicsPluginName']()); } _0xc75759['metadata'] && (_0x25f68f['metadata'] = _0xc75759['metadata']), _0x25f68f['morphTargetManagers'] = []; for (var _0x2f376c = 0x0, _0x381c81 = _0xc75759['meshes']; _0x2f376c < _0x381c81['length']; _0x2f376c++) { var _0x1dd117 = (_0x16f5f0 = _0x381c81[_0x2f376c])['morphTargetManager']; _0x1dd117 && _0x25f68f['morphTargetManagers']['push'](_0x1dd117['serialize']()); } for (_0x25f68f['lights'] = [], _0x165615 = 0x0; _0x165615 < _0xc75759['lights']['length']; _0x165615++) (_0x5d73a2 = _0xc75759['lights'][_0x165615])['doNotSerialize'] || _0x25f68f['lights']['push'](_0x5d73a2['serialize']()); for (_0x25f68f['cameras'] = [], _0x165615 = 0x0; _0x165615 < _0xc75759['cameras']['length']; _0x165615++) { var _0x224d41 = _0xc75759['cameras'][_0x165615]; _0x224d41['doNotSerialize'] || _0x25f68f['cameras']['push'](_0x224d41['serialize']()); } if (_0xc75759['activeCamera'] && (_0x25f68f['activeCameraID'] = _0xc75759['activeCamera']['id']), _0x3d4764['a']['AppendSerializedAnimations'](_0xc75759, _0x25f68f), _0xc75759['reflectionProbes'] && _0xc75759['reflectionProbes']['length'] > 0x0) for (_0x25f68f['reflectionProbes'] = [], _0x165615 = 0x0; _0x165615 < _0xc75759['reflectionProbes']['length']; _0x165615++) { var _0x3325ee = _0xc75759['reflectionProbes'][_0x165615]; _0x25f68f['reflectionProbes']['push'](_0x3325ee['serialize']()); } for (_0x25f68f['materials'] = [], _0x25f68f['multiMaterials'] = [], _0x165615 = 0x0; _0x165615 < _0xc75759['materials']['length']; _0x165615++) (_0x4eda9e = _0xc75759['materials'][_0x165615])['doNotSerialize'] || _0x25f68f['materials']['push'](_0x4eda9e['serialize']()); for (_0x25f68f['multiMaterials'] = [], _0x165615 = 0x0; _0x165615 < _0xc75759['multiMaterials']['length']; _0x165615++) { var _0x20ff89 = _0xc75759['multiMaterials'][_0x165615]; _0x25f68f['multiMaterials']['push'](_0x20ff89['serialize']()); } for (_0xc75759['environmentTexture'] && (_0x25f68f['environmentTexture'] = _0xc75759['environmentTexture']['name']), _0x25f68f['skeletons'] = [], _0x165615 = 0x0; _0x165615 < _0xc75759['skeletons']['length']; _0x165615++) { var _0x17c42a = _0xc75759['skeletons'][_0x165615]; _0x17c42a['doNotSerialize'] || _0x25f68f['skeletons']['push'](_0x17c42a['serialize']()); } for (_0x25f68f['transformNodes'] = [], _0x165615 = 0x0; _0x165615 < _0xc75759['transformNodes']['length']; _0x165615++) _0x25f68f['transformNodes']['push'](_0xc75759['transformNodes'][_0x165615]['serialize']()); _0x25f68f['geometries'] = {}, _0x25f68f['geometries']['boxes'] = [], _0x25f68f['geometries']['spheres'] = [], _0x25f68f['geometries']['cylinders'] = [], _0x25f68f['geometries']['toruses'] = [], _0x25f68f['geometries']['grounds'] = [], _0x25f68f['geometries']['planes'] = [], _0x25f68f['geometries']['torusKnots'] = [], _0x25f68f['geometries']['vertexData'] = [], _0x4f9c71 = []; var _0x2d7294 = _0xc75759['getGeometries'](); for (_0x165615 = 0x0; _0x165615 < _0x2d7294['length']; _0x165615++) { var _0x2c4999 = _0x2d7294[_0x165615]; _0x2c4999['isReady']() && _0x401387(_0x2c4999, _0x25f68f['geometries']); } for (_0x25f68f['meshes'] = [], _0x165615 = 0x0; _0x165615 < _0xc75759['meshes']['length']; _0x165615++) { var _0x16f5f0; if ((_0x16f5f0 = _0xc75759['meshes'][_0x165615])instanceof _0xb4719b['a']) { var _0x3de07b = _0x16f5f0; _0x3de07b['doNotSerialize'] || _0x3de07b['delayLoadState'] !== _0x24e342['a']['DELAYLOADSTATE_LOADED'] && _0x3de07b['delayLoadState'] !== _0x24e342['a']['DELAYLOADSTATE_NONE'] || _0x25f68f['meshes']['push'](_0x13eaa7(_0x3de07b, _0x25f68f)); } } for (_0x25f68f['particleSystems'] = [], _0x165615 = 0x0; _0x165615 < _0xc75759['particleSystems']['length']; _0x165615++) _0x25f68f['particleSystems']['push'](_0xc75759['particleSystems'][_0x165615]['serialize']()); _0xc75759['actionManager'] && (_0x25f68f['actions'] = _0xc75759['actionManager']['serialize']('scene')); for (var _0x51d166 = 0x0, _0x5f3f40 = _0xc75759['_serializableComponents']; _0x51d166 < _0x5f3f40['length']; _0x51d166++) { _0x5f3f40[_0x51d166]['serialize'](_0x25f68f); } return _0x25f68f; } , _0x96d5a2['SerializeMesh'] = function(_0x56d3ec, _0x409d9c, _0x48cd59) { void 0x0 === _0x409d9c && (_0x409d9c = !0x1), void 0x0 === _0x48cd59 && (_0x48cd59 = !0x1); var _0x477506 = {}; if (_0x96d5a2['ClearCache'](), _0x56d3ec = _0x56d3ec instanceof Array ? _0x56d3ec : [_0x56d3ec], _0x409d9c || _0x48cd59) for (var _0x1bc250 = 0x0; _0x1bc250 < _0x56d3ec['length']; ++_0x1bc250) _0x48cd59 && _0x56d3ec[_0x1bc250]['getDescendants']()['forEach'](function(_0x8e8bc6) { _0x8e8bc6 instanceof _0xb4719b['a'] && _0x56d3ec['indexOf'](_0x8e8bc6) < 0x0 && _0x56d3ec['push'](_0x8e8bc6); }), _0x409d9c && _0x56d3ec[_0x1bc250]['parent'] && _0x56d3ec['indexOf'](_0x56d3ec[_0x1bc250]['parent']) < 0x0 && _0x56d3ec['push'](_0x56d3ec[_0x1bc250]['parent']); return _0x56d3ec['forEach'](function(_0xa1b65e) { !function(_0x282199, _0xf36f83) { if (_0x282199['delayLoadState'] === _0x24e342['a']['DELAYLOADSTATE_LOADED'] || _0x282199['delayLoadState'] === _0x24e342['a']['DELAYLOADSTATE_NONE']) { if (_0x282199['material']) if (_0x282199['material']instanceof _0x20b869['a']) { if (_0xf36f83['multiMaterials'] = _0xf36f83['multiMaterials'] || [], _0xf36f83['materials'] = _0xf36f83['materials'] || [], !_0xf36f83['multiMaterials']['some'](function(_0x1f1046) { return _0x1f1046['id'] === _0x282199['material']['id']; })) { _0xf36f83['multiMaterials']['push'](_0x282199['material']['serialize']()); for (var _0x1896e3 = function(_0x44e4ba) { _0x44e4ba && (_0xf36f83['materials']['some'](function(_0x217343) { return _0x217343['id'] === _0x44e4ba['id']; }) || _0xf36f83['materials']['push'](_0x44e4ba['serialize']())); }, _0x54364a = 0x0, _0x48d3a7 = _0x282199['material']['subMaterials']; _0x54364a < _0x48d3a7['length']; _0x54364a++) _0x1896e3(_0x48d3a7[_0x54364a]); } } else _0xf36f83['materials'] = _0xf36f83['materials'] || [], _0xf36f83['materials']['some'](function(_0x1eb330) { return _0x1eb330['id'] === _0x282199['material']['id']; }) || _0xf36f83['materials']['push'](_0x282199['material']['serialize']()); var _0x3aad9e = _0x282199['_geometry']; _0x3aad9e && (_0xf36f83['geometries'] || (_0xf36f83['geometries'] = {}, _0xf36f83['geometries']['boxes'] = [], _0xf36f83['geometries']['spheres'] = [], _0xf36f83['geometries']['cylinders'] = [], _0xf36f83['geometries']['toruses'] = [], _0xf36f83['geometries']['grounds'] = [], _0xf36f83['geometries']['planes'] = [], _0xf36f83['geometries']['torusKnots'] = [], _0xf36f83['geometries']['vertexData'] = []), _0x401387(_0x3aad9e, _0xf36f83['geometries'])), _0x282199['skeleton'] && (_0xf36f83['skeletons'] = _0xf36f83['skeletons'] || [], _0xf36f83['skeletons']['push'](_0x282199['skeleton']['serialize']())), _0xf36f83['meshes'] = _0xf36f83['meshes'] || [], _0xf36f83['meshes']['push'](_0x13eaa7(_0x282199, _0xf36f83)); } }(_0xa1b65e, _0x477506); }), _0x477506; } , _0x96d5a2; }(), _0x162ece = _0x59bd00(0x1d), _0x817560 = function() { function _0x263ddb() {} return _0x263ddb['CreateResizedCopy'] = function(_0x12514b, _0x3ecdcb, _0x10fc62, _0x3827f3) { void 0x0 === _0x3827f3 && (_0x3827f3 = !0x0); var _0x175a8f = _0x12514b['getScene']() , _0xcfda30 = _0x175a8f['getEngine']() , _0x5ec9ea = new _0xe8a585('resized' + _0x12514b['name'],{ 'width': _0x3ecdcb, 'height': _0x10fc62 },_0x175a8f,!_0x12514b['noMipmap'],!0x0,_0x12514b['_texture']['type'],!0x1,_0x12514b['samplingMode'],!0x1); _0x5ec9ea['wrapU'] = _0x12514b['wrapU'], _0x5ec9ea['wrapV'] = _0x12514b['wrapV'], _0x5ec9ea['uOffset'] = _0x12514b['uOffset'], _0x5ec9ea['vOffset'] = _0x12514b['vOffset'], _0x5ec9ea['uScale'] = _0x12514b['uScale'], _0x5ec9ea['vScale'] = _0x12514b['vScale'], _0x5ec9ea['uAng'] = _0x12514b['uAng'], _0x5ec9ea['vAng'] = _0x12514b['vAng'], _0x5ec9ea['wAng'] = _0x12514b['wAng'], _0x5ec9ea['coordinatesIndex'] = _0x12514b['coordinatesIndex'], _0x5ec9ea['level'] = _0x12514b['level'], _0x5ec9ea['anisotropicFilteringLevel'] = _0x12514b['anisotropicFilteringLevel'], _0x5ec9ea['_texture']['isReady'] = !0x1, _0x12514b['wrapU'] = _0x11d14a['a']['CLAMP_ADDRESSMODE'], _0x12514b['wrapV'] = _0x11d14a['a']['CLAMP_ADDRESSMODE']; var _0x10c467 = new _0x4b3169('pass',0x1,null,_0x3827f3 ? _0x11d14a['a']['BILINEAR_SAMPLINGMODE'] : _0x11d14a['a']['NEAREST_SAMPLINGMODE'],_0xcfda30,!0x1,_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT']); return _0x10c467['getEffect']()['executeWhenCompiled'](function() { _0x10c467['onApply'] = function(_0x35e01a) { _0x35e01a['setTexture']('textureSampler', _0x12514b); } ; var _0x25e2b7 = _0x5ec9ea['getInternalTexture'](); _0x25e2b7 && (_0x175a8f['postProcessManager']['directRender']([_0x10c467], _0x25e2b7), _0xcfda30['unBindFramebuffer'](_0x25e2b7), _0x5ec9ea['disposeFramebufferObjects'](), _0x10c467['dispose'](), _0x25e2b7['isReady'] = !0x0); }), _0x5ec9ea; } , _0x263ddb; }(), _0x426449 = function() { function _0x381758(_0xdd37bd, _0x55b2c4) { if (void 0x0 === _0x55b2c4 && (_0x55b2c4 = null), !_0x381758['IsSupported'](_0xdd37bd)) throw 'Your\x20browser\x20does\x20not\x20support\x20recording\x20so\x20far.'; var _0x398bc9 = _0xdd37bd['getRenderingCanvas'](); if (!_0x398bc9) throw 'The\x20babylon\x20engine\x20must\x20have\x20a\x20canvas\x20to\x20be\x20recorded'; this['_canvas'] = _0x398bc9, this['_canvas']['isRecording'] = !0x1, this['_options'] = _0x420e5b['a']({}, _0x381758['_defaultOptions'], _0x55b2c4); var _0xae11a3 = this['_canvas']['captureStream'](this['_options']['fps']); if (this['_options']['audioTracks']) for (var _0x2f72e3 = 0x0, _0x49ab3b = this['_options']['audioTracks']; _0x2f72e3 < _0x49ab3b['length']; _0x2f72e3++) { var _0x2cf92e = _0x49ab3b[_0x2f72e3]; _0xae11a3['addTrack'](_0x2cf92e); } this['_mediaRecorder'] = new MediaRecorder(_0xae11a3,{ 'mimeType': this['_options']['mimeType'] }), this['_mediaRecorder']['ondataavailable'] = this['_handleDataAvailable']['bind'](this), this['_mediaRecorder']['onerror'] = this['_handleError']['bind'](this), this['_mediaRecorder']['onstop'] = this['_handleStop']['bind'](this); } return _0x381758['IsSupported'] = function(_0x47426a) { var _0x3e3f2b = _0x47426a['getRenderingCanvas'](); return !!_0x3e3f2b && 'function' == typeof _0x3e3f2b['captureStream']; } , Object['defineProperty'](_0x381758['prototype'], 'isRecording', { 'get': function() { return !!this['_canvas'] && this['_canvas']['isRecording']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x381758['prototype']['stopRecording'] = function() { this['_canvas'] && this['_mediaRecorder'] && this['isRecording'] && (this['_canvas']['isRecording'] = !0x1, this['_mediaRecorder']['stop']()); } , _0x381758['prototype']['startRecording'] = function(_0x3a0fbc, _0x4aad53) { var _0x3c7bfb = this; if (void 0x0 === _0x3a0fbc && (_0x3a0fbc = 'babylonjs.webm'), void 0x0 === _0x4aad53 && (_0x4aad53 = 0x7), !this['_canvas'] || !this['_mediaRecorder']) throw 'Recorder\x20has\x20already\x20been\x20disposed'; if (this['isRecording']) throw 'Recording\x20already\x20in\x20progress'; return _0x4aad53 > 0x0 && setTimeout(function() { _0x3c7bfb['stopRecording'](); }, 0x3e8 * _0x4aad53), this['_fileName'] = _0x3a0fbc, this['_recordedChunks'] = [], this['_resolve'] = null, this['_reject'] = null, this['_canvas']['isRecording'] = !0x0, this['_mediaRecorder']['start'](this['_options']['recordChunckSize']), new Promise(function(_0x23bf08, _0x13def9) { _0x3c7bfb['_resolve'] = _0x23bf08, _0x3c7bfb['_reject'] = _0x13def9; } ); } , _0x381758['prototype']['dispose'] = function() { this['_canvas'] = null, this['_mediaRecorder'] = null, this['_recordedChunks'] = [], this['_fileName'] = null, this['_resolve'] = null, this['_reject'] = null; } , _0x381758['prototype']['_handleDataAvailable'] = function(_0x17d1c1) { _0x17d1c1['data']['size'] > 0x0 && this['_recordedChunks']['push'](_0x17d1c1['data']); } , _0x381758['prototype']['_handleError'] = function(_0x524fea) { if (this['stopRecording'](), !this['_reject']) throw new _0x524fea['error'](); this['_reject'](_0x524fea['error']); } , _0x381758['prototype']['_handleStop'] = function() { this['stopRecording'](); var _0x171cb3 = new Blob(this['_recordedChunks']); this['_resolve'] && this['_resolve'](_0x171cb3), window['URL']['createObjectURL'](_0x171cb3), this['_fileName'] && _0x1eb50e['h']['Download'](_0x171cb3, this['_fileName']); } , _0x381758['_defaultOptions'] = { 'mimeType': 'video/webm', 'fps': 0x19, 'recordChunckSize': 0xbb8 }, _0x381758; }(), _0x105f82 = function() { function _0x36f649() {} return _0x36f649['CreateScreenshot'] = function(_0x3cecd0, _0x413df5, _0x5acc56, _0x4cf321, _0x3fa423) { var _0x5e380c, _0x1f8f36; if (void 0x0 === _0x3fa423 && (_0x3fa423 = 'image/png'), _0x5acc56['precision']) _0x5e380c = Math['round'](_0x3cecd0['getRenderWidth']() * _0x5acc56['precision']), _0x1f8f36 = Math['round'](_0x5e380c / _0x3cecd0['getAspectRatio'](_0x413df5)); else if (_0x5acc56['width'] && _0x5acc56['height']) _0x5e380c = _0x5acc56['width'], _0x1f8f36 = _0x5acc56['height']; else if (_0x5acc56['width'] && !_0x5acc56['height']) _0x5e380c = _0x5acc56['width'], _0x1f8f36 = Math['round'](_0x5e380c / _0x3cecd0['getAspectRatio'](_0x413df5)); else if (_0x5acc56['height'] && !_0x5acc56['width']) _0x1f8f36 = _0x5acc56['height'], _0x5e380c = Math['round'](_0x1f8f36 * _0x3cecd0['getAspectRatio'](_0x413df5)); else { if (isNaN(_0x5acc56)) return void _0x3f98cb['a']['Error']('Invalid\x20\x27size\x27\x20parameter\x20!'); _0x1f8f36 = _0x5acc56, _0x5e380c = _0x5acc56; } _0x1eb50e['h']['_ScreenshotCanvas'] || (_0x1eb50e['h']['_ScreenshotCanvas'] = document['createElement']('canvas')), _0x1eb50e['h']['_ScreenshotCanvas']['width'] = _0x5e380c, _0x1eb50e['h']['_ScreenshotCanvas']['height'] = _0x1f8f36; var _0x2a7c45 = _0x1eb50e['h']['_ScreenshotCanvas']['getContext']('2d') , _0x34fca2 = _0x3cecd0['getRenderWidth']() / _0x3cecd0['getRenderHeight']() , _0x5d9862 = _0x5e380c , _0x46ab40 = _0x5d9862 / _0x34fca2; _0x46ab40 > _0x1f8f36 && (_0x5d9862 = (_0x46ab40 = _0x1f8f36) * _0x34fca2); var _0x44a836 = Math['max'](0x0, _0x5e380c - _0x5d9862) / 0x2 , _0x42f02e = Math['max'](0x0, _0x1f8f36 - _0x46ab40) / 0x2 , _0x535c84 = _0x3cecd0['getRenderingCanvas'](); _0x2a7c45 && _0x535c84 && _0x2a7c45['drawImage'](_0x535c84, _0x44a836, _0x42f02e, _0x5d9862, _0x46ab40), _0x1eb50e['h']['EncodeScreenshotCanvasData'](_0x4cf321, _0x3fa423); } , _0x36f649['CreateScreenshotUsingRenderTarget'] = function(_0x2c3b98, _0x168c37, _0x704984, _0x1783a1, _0x569238, _0x2a2a96, _0x30090b, _0xc38ca9) { var _0x2b50b9, _0x29f396; if (void 0x0 === _0x569238 && (_0x569238 = 'image/png'), void 0x0 === _0x2a2a96 && (_0x2a2a96 = 0x1), void 0x0 === _0x30090b && (_0x30090b = !0x1), _0x704984['precision']) _0x2b50b9 = Math['round'](_0x2c3b98['getRenderWidth']() * _0x704984['precision']), _0x29f396 = Math['round'](_0x2b50b9 / _0x2c3b98['getAspectRatio'](_0x168c37)), _0x704984 = { 'width': _0x2b50b9, 'height': _0x29f396 }; else if (_0x704984['width'] && _0x704984['height']) _0x2b50b9 = _0x704984['width'], _0x29f396 = _0x704984['height']; else if (_0x704984['width'] && !_0x704984['height']) _0x2b50b9 = _0x704984['width'], _0x29f396 = Math['round'](_0x2b50b9 / _0x2c3b98['getAspectRatio'](_0x168c37)), _0x704984 = { 'width': _0x2b50b9, 'height': _0x29f396 }; else if (_0x704984['height'] && !_0x704984['width']) _0x29f396 = _0x704984['height'], _0x704984 = { 'width': _0x2b50b9 = Math['round'](_0x29f396 * _0x2c3b98['getAspectRatio'](_0x168c37)), 'height': _0x29f396 }; else { if (isNaN(_0x704984)) return void _0x3f98cb['a']['Error']('Invalid\x20\x27size\x27\x20parameter\x20!'); _0x29f396 = _0x704984, _0x2b50b9 = _0x704984; } var _0xb671e7 = _0x168c37['getScene']() , _0x1d2af5 = null; _0xb671e7['activeCamera'] !== _0x168c37 && (_0x1d2af5 = _0xb671e7['activeCamera'], _0xb671e7['activeCamera'] = _0x168c37); var _0x239f01 = _0x2c3b98['getRenderingCanvas'](); if (_0x239f01) { var _0x369885 = { 'width': _0x239f01['width'], 'height': _0x239f01['height'] }; _0x2c3b98['setSize'](_0x2b50b9, _0x29f396), _0xb671e7['render'](); var _0x44af35 = new _0xe8a585('screenShot',_0x704984,_0xb671e7,!0x1,!0x1,_0x24e342['a']['TEXTURETYPE_UNSIGNED_INT'],!0x1,_0x11d14a['a']['NEAREST_SAMPLINGMODE']); _0x44af35['renderList'] = null, _0x44af35['samples'] = _0x2a2a96, _0x30090b && _0x44af35['addPostProcess'](new _0x3f1824('antialiasing',0x1,_0xb671e7['activeCamera'])), _0x44af35['onAfterRenderObservable']['add'](function() { _0x1eb50e['h']['DumpFramebuffer'](_0x2b50b9, _0x29f396, _0x2c3b98, _0x1783a1, _0x569238, _0xc38ca9); }), _0xb671e7['incrementRenderId'](), _0xb671e7['resetCachedMaterial'](), _0x44af35['render'](!0x0), _0x44af35['dispose'](), _0x1d2af5 && (_0xb671e7['activeCamera'] = _0x1d2af5), _0x2c3b98['setSize'](_0x369885['width'], _0x369885['height']), _0x168c37['getProjectionMatrix'](!0x0); } else _0x3f98cb['a']['Error']('No\x20rendering\x20canvas\x20found\x20!'); } , _0x36f649; }(); _0x1eb50e['h']['CreateScreenshot'] = _0x105f82['CreateScreenshot'], _0x1eb50e['h']['CreateScreenshotUsingRenderTarget'] = _0x105f82['CreateScreenshotUsingRenderTarget'], function(_0x2ca24d) { _0x2ca24d[_0x2ca24d['Checkbox'] = 0x0] = 'Checkbox', _0x2ca24d[_0x2ca24d['Slider'] = 0x1] = 'Slider', _0x2ca24d[_0x2ca24d['Vector3'] = 0x2] = 'Vector3', _0x2ca24d[_0x2ca24d['Quaternion'] = 0x3] = 'Quaternion', _0x2ca24d[_0x2ca24d['Color3'] = 0x4] = 'Color3'; }(_0x1d4201 || (_0x1d4201 = {})), _0x59bd00['d'](_0x314d07, 'AbstractScene', function() { return _0x20925f['a']; }), _0x59bd00['d'](_0x314d07, 'Action', function() { return _0x56e8ef; }), _0x59bd00['d'](_0x314d07, 'ActionEvent', function() { return _0x818725['a']; }), _0x59bd00['d'](_0x314d07, 'ActionManager', function() { return _0x5bf76d; }), _0x59bd00['d'](_0x314d07, 'Condition', function() { return _0x3a96e1; }), _0x59bd00['d'](_0x314d07, 'ValueCondition', function() { return _0x1229bf; }), _0x59bd00['d'](_0x314d07, 'PredicateCondition', function() { return _0x3699bd; }), _0x59bd00['d'](_0x314d07, 'StateCondition', function() { return _0x9b085a; }), _0x59bd00['d'](_0x314d07, 'SwitchBooleanAction', function() { return _0x390b30; }), _0x59bd00['d'](_0x314d07, 'SetStateAction', function() { return _0x47a1ef; }), _0x59bd00['d'](_0x314d07, 'SetValueAction', function() { return _0x5d89e5; }), _0x59bd00['d'](_0x314d07, 'IncrementValueAction', function() { return _0x96d387; }), _0x59bd00['d'](_0x314d07, 'PlayAnimationAction', function() { return _0x303215; }), _0x59bd00['d'](_0x314d07, 'StopAnimationAction', function() { return _0x2c3c0d; }), _0x59bd00['d'](_0x314d07, 'DoNothingAction', function() { return _0x226136; }), _0x59bd00['d'](_0x314d07, 'CombineAction', function() { return _0x445518; }), _0x59bd00['d'](_0x314d07, 'ExecuteCodeAction', function() { return _0x4b264e; }), _0x59bd00['d'](_0x314d07, 'SetParentAction', function() { return _0xd55c25; }), _0x59bd00['d'](_0x314d07, 'PlaySoundAction', function() { return _0x1f76a6; }), _0x59bd00['d'](_0x314d07, 'StopSoundAction', function() { return _0x2ab56b; }), _0x59bd00['d'](_0x314d07, 'InterpolateValueAction', function() { return _0x53f633; }), _0x59bd00['d'](_0x314d07, 'Animatable', function() { return _0x203476; }), _0x59bd00['d'](_0x314d07, '_IAnimationState', function() { return _0x25e586; }), _0x59bd00['d'](_0x314d07, 'Animation', function() { return _0x4452f5; }), _0x59bd00['d'](_0x314d07, 'TargetedAnimation', function() { return _0x1c0a71; }), _0x59bd00['d'](_0x314d07, 'AnimationGroup', function() { return _0x46b94c; }), _0x59bd00['d'](_0x314d07, 'AnimationPropertiesOverride', function() { return _0x12cefe; }), _0x59bd00['d'](_0x314d07, 'EasingFunction', function() { return _0x5f17eb; }), _0x59bd00['d'](_0x314d07, 'CircleEase', function() { return _0x4425fc; }), _0x59bd00['d'](_0x314d07, 'BackEase', function() { return _0x4b0507; }), _0x59bd00['d'](_0x314d07, 'BounceEase', function() { return _0x122ad3; }), _0x59bd00['d'](_0x314d07, 'CubicEase', function() { return _0xabe8f1; }), _0x59bd00['d'](_0x314d07, 'ElasticEase', function() { return _0x4ad354; }), _0x59bd00['d'](_0x314d07, 'ExponentialEase', function() { return _0x3f1e3e; }), _0x59bd00['d'](_0x314d07, 'PowerEase', function() { return _0x1d30ff; }), _0x59bd00['d'](_0x314d07, 'QuadraticEase', function() { return _0x5a166e; }), _0x59bd00['d'](_0x314d07, 'QuarticEase', function() { return _0x19ea86; }), _0x59bd00['d'](_0x314d07, 'QuinticEase', function() { return _0x480efc; }), _0x59bd00['d'](_0x314d07, 'SineEase', function() { return _0x1f2be0; }), _0x59bd00['d'](_0x314d07, 'BezierCurveEase', function() { return _0x9f027f; }), _0x59bd00['d'](_0x314d07, 'RuntimeAnimation', function() { return _0x1afafe; }), _0x59bd00['d'](_0x314d07, 'AnimationEvent', function() { return _0x239584; }), _0x59bd00['d'](_0x314d07, 'AnimationKeyInterpolation', function() { return _0x4ce36c; }), _0x59bd00['d'](_0x314d07, 'AnimationRange', function() { return _0x4bd663; }), _0x59bd00['d'](_0x314d07, 'KeepAssets', function() { return _0x3c4f51; }), _0x59bd00['d'](_0x314d07, 'AssetContainer', function() { return _0x3c968a; }), _0x59bd00['d'](_0x314d07, 'Analyser', function() { return _0x3f6ebb; }), _0x59bd00['d'](_0x314d07, 'AudioEngine', function() { return _0x54a0a2; }), _0x59bd00['d'](_0x314d07, 'AudioSceneComponent', function() { return _0x16a1d0; }), _0x59bd00['d'](_0x314d07, 'Sound', function() { return _0x58f47f; }), _0x59bd00['d'](_0x314d07, 'SoundTrack', function() { return _0x1733c5; }), _0x59bd00['d'](_0x314d07, 'WeightedSound', function() { return _0xd4c42e; }), _0x59bd00['d'](_0x314d07, 'AutoRotationBehavior', function() { return _0x26d2c7; }), _0x59bd00['d'](_0x314d07, 'BouncingBehavior', function() { return _0x4648c8; }), _0x59bd00['d'](_0x314d07, 'FramingBehavior', function() { return _0x50a884; }), _0x59bd00['d'](_0x314d07, 'AttachToBoxBehavior', function() { return _0x787610; }), _0x59bd00['d'](_0x314d07, 'FadeInOutBehavior', function() { return _0x5b617e; }), _0x59bd00['d'](_0x314d07, 'MultiPointerScaleBehavior', function() { return _0x5b942b; }), _0x59bd00['d'](_0x314d07, 'PointerDragBehavior', function() { return _0x292073['a']; }), _0x59bd00['d'](_0x314d07, 'SixDofDragBehavior', function() { return _0x2bbcb9; }), _0x59bd00['d'](_0x314d07, 'Bone', function() { return _0x814309; }), _0x59bd00['d'](_0x314d07, 'BoneIKController', function() { return _0x30cbe4; }), _0x59bd00['d'](_0x314d07, 'BoneLookController', function() { return _0x103b41; }), _0x59bd00['d'](_0x314d07, 'Skeleton', function() { return _0x48b7c1; }), _0x59bd00['d'](_0x314d07, 'CameraInputTypes', function() { return _0x11fe9a; }), _0x59bd00['d'](_0x314d07, 'CameraInputsManager', function() { return _0x21d8d9; }), _0x59bd00['d'](_0x314d07, 'Camera', function() { return _0x4504cf['a']; }), _0x59bd00['d'](_0x314d07, 'TargetCamera', function() { return _0x4c37b8; }), _0x59bd00['d'](_0x314d07, 'FreeCamera', function() { return _0xebce26; }), _0x59bd00['d'](_0x314d07, 'FreeCameraInputsManager', function() { return _0x368109; }), _0x59bd00['d'](_0x314d07, 'TouchCamera', function() { return _0x5a90a0; }), _0x59bd00['d'](_0x314d07, 'ArcRotateCamera', function() { return _0x1fd852; }), _0x59bd00['d'](_0x314d07, 'ArcRotateCameraInputsManager', function() { return _0x13f537; }), _0x59bd00['d'](_0x314d07, 'DeviceOrientationCamera', function() { return _0x1cae74; }), _0x59bd00['d'](_0x314d07, 'FlyCamera', function() { return _0x17cc19; }), _0x59bd00['d'](_0x314d07, 'FlyCameraInputsManager', function() { return _0x31d159; }), _0x59bd00['d'](_0x314d07, 'FollowCamera', function() { return _0x355f0c; }), _0x59bd00['d'](_0x314d07, 'ArcFollowCamera', function() { return _0x47910e; }), _0x59bd00['d'](_0x314d07, 'GamepadCamera', function() { return _0x1ee953; }), _0x59bd00['d'](_0x314d07, 'UniversalCamera', function() { return _0x512fb8; }), _0x59bd00['d'](_0x314d07, 'VirtualJoysticksCamera', function() { return _0xc5a594; }), _0x59bd00['d'](_0x314d07, 'ArcRotateCameraGamepadInput', function() { return _0x2b16b8; }), _0x59bd00['d'](_0x314d07, 'ArcRotateCameraKeyboardMoveInput', function() { return _0x2ef150; }), _0x59bd00['d'](_0x314d07, 'ArcRotateCameraMouseWheelInput', function() { return _0x519be4; }), _0x59bd00['d'](_0x314d07, 'ArcRotateCameraPointersInput', function() { return _0x311bdc; }), _0x59bd00['d'](_0x314d07, 'ArcRotateCameraVRDeviceOrientationInput', function() { return _0x2d8698; }), _0x59bd00['d'](_0x314d07, 'FlyCameraKeyboardInput', function() { return _0x1d5ddb; }), _0x59bd00['d'](_0x314d07, 'FlyCameraMouseInput', function() { return _0xb29847; }), _0x59bd00['d'](_0x314d07, 'FollowCameraKeyboardMoveInput', function() { return _0x1ccc6f; }), _0x59bd00['d'](_0x314d07, 'FollowCameraMouseWheelInput', function() { return _0x1713da; }), _0x59bd00['d'](_0x314d07, 'FollowCameraPointersInput', function() { return _0x4da969; }), _0x59bd00['d'](_0x314d07, 'FreeCameraDeviceOrientationInput', function() { return _0x53f86a; }), _0x59bd00['d'](_0x314d07, 'FreeCameraGamepadInput', function() { return _0x34e5b7; }), _0x59bd00['d'](_0x314d07, 'FreeCameraKeyboardMoveInput', function() { return _0x5962bd; }), _0x59bd00['d'](_0x314d07, 'FreeCameraMouseInput', function() { return _0x4c45a5; }), _0x59bd00['d'](_0x314d07, 'FreeCameraTouchInput', function() { return _0x1d2706; }), _0x59bd00['d'](_0x314d07, 'FreeCameraVirtualJoystickInput', function() { return _0x472da2; }), _0x59bd00['d'](_0x314d07, 'AnaglyphArcRotateCamera', function() { return _0x7ffe94; }), _0x59bd00['d'](_0x314d07, 'AnaglyphFreeCamera', function() { return _0x328fe0; }), _0x59bd00['d'](_0x314d07, 'AnaglyphGamepadCamera', function() { return _0x19cb45; }), _0x59bd00['d'](_0x314d07, 'AnaglyphUniversalCamera', function() { return _0x25212a; }), _0x59bd00['d'](_0x314d07, 'StereoscopicArcRotateCamera', function() { return _0x296f7e; }), _0x59bd00['d'](_0x314d07, 'StereoscopicFreeCamera', function() { return _0xc29ba; }), _0x59bd00['d'](_0x314d07, 'StereoscopicGamepadCamera', function() { return _0x2eede8; }), _0x59bd00['d'](_0x314d07, 'StereoscopicUniversalCamera', function() { return _0x566db4; }), _0x59bd00['d'](_0x314d07, 'VRCameraMetrics', function() { return _0x34ddcd; }), _0x59bd00['d'](_0x314d07, 'VRDeviceOrientationArcRotateCamera', function() { return _0x54fc08; }), _0x59bd00['d'](_0x314d07, 'VRDeviceOrientationFreeCamera', function() { return _0x5515e; }), _0x59bd00['d'](_0x314d07, 'VRDeviceOrientationGamepadCamera', function() { return _0x46ebe9; }), _0x59bd00['d'](_0x314d07, 'OnAfterEnteringVRObservableEvent', function() { return _0x43173f; }), _0x59bd00['d'](_0x314d07, 'VRExperienceHelper', function() { return _0x443caf; }), _0x59bd00['d'](_0x314d07, 'WebVRFreeCamera', function() { return _0x45ae1b; }), _0x59bd00['d'](_0x314d07, 'WebXRCamera', function() { return _0x4ba466; }), _0x59bd00['d'](_0x314d07, 'WebXREnterExitUIButton', function() { return _0x3d4a78; }), _0x59bd00['d'](_0x314d07, 'WebXREnterExitUIOptions', function() { return _0x283f4d; }), _0x59bd00['d'](_0x314d07, 'WebXREnterExitUI', function() { return _0x34efa2; }), _0x59bd00['d'](_0x314d07, 'WebXRState', function() { return _0x2bd511; }), _0x59bd00['d'](_0x314d07, 'WebXRExperienceHelper', function() { return _0x25d700; }), _0x59bd00['d'](_0x314d07, 'WebXRController', function() { return _0x4f1d10; }), _0x59bd00['d'](_0x314d07, 'WebXRInput', function() { return _0xb25c80; }), _0x59bd00['d'](_0x314d07, 'WebXRManagedOutputCanvas', function() { return _0x531ff9; }), _0x59bd00['d'](_0x314d07, 'WebXRSessionManager', function() { return _0x4cbfaa; }), _0x59bd00['d'](_0x314d07, 'Collider', function() { return _0xfc60c2; }), _0x59bd00['d'](_0x314d07, 'DefaultCollisionCoordinator', function() { return _0x29a4cb; }), _0x59bd00['d'](_0x314d07, 'PickingInfo', function() { return _0x452236['a']; }), _0x59bd00['d'](_0x314d07, 'IntersectionInfo', function() { return _0x38ed73['a']; }), _0x59bd00['d'](_0x314d07, '_MeshCollisionData', function() { return _0x64f20a['a']; }), _0x59bd00['d'](_0x314d07, 'BoundingBox', function() { return _0x5022f8['a']; }), _0x59bd00['d'](_0x314d07, 'BoundingInfo', function() { return _0x3166db['a']; }), _0x59bd00['d'](_0x314d07, 'BoundingSphere', function() { return _0x4435b0['a']; }), _0x59bd00['d'](_0x314d07, 'Ray', function() { return _0x19e5af['a']; }), _0x59bd00['d'](_0x314d07, 'Octree', function() { return _0x2c6e11; }), _0x59bd00['d'](_0x314d07, 'OctreeBlock', function() { return _0x3007de; }), _0x59bd00['d'](_0x314d07, 'OctreeSceneComponent', function() { return _0x514ad3; }), _0x59bd00['d'](_0x314d07, 'AxesViewer', function() { return _0x3a535a['AxesViewer']; }), _0x59bd00['d'](_0x314d07, 'BoneAxesViewer', function() { return _0x3a535a['BoneAxesViewer']; }), _0x59bd00['d'](_0x314d07, 'DebugLayer', function() { return _0x3a535a['DebugLayer']; }), _0x59bd00['d'](_0x314d07, 'PhysicsViewer', function() { return _0x3a535a['PhysicsViewer']; }), _0x59bd00['d'](_0x314d07, 'RayHelper', function() { return _0x3a535a['RayHelper']; }), _0x59bd00['d'](_0x314d07, 'SkeletonViewer', function() { return _0x3a535a['SkeletonViewer']; }), _0x59bd00['d'](_0x314d07, 'Constants', function() { return _0x24e342['a']; }), _0x59bd00['d'](_0x314d07, 'InstancingAttributeInfo', function() { return _0x3647a9['d']; }), _0x59bd00['d'](_0x314d07, 'DepthTextureCreationOptions', function() { return _0x3647a9['a']; }), _0x59bd00['d'](_0x314d07, 'EngineCapabilities', function() { return _0x3647a9['c']; }), _0x59bd00['d'](_0x314d07, 'Engine', function() { return _0x3647a9['b']; }), _0x59bd00['d'](_0x314d07, 'EngineStore', function() { return _0x48707b['a']; }), _0x59bd00['d'](_0x314d07, 'NullEngineOptions', function() { return _0x9f26de['b']; }), _0x59bd00['d'](_0x314d07, 'NullEngine', function() { return _0x9f26de['a']; }), _0x59bd00['d'](_0x314d07, 'WebGLPipelineContext', function() { return _0x1dee49['a']; }), _0x59bd00['d'](_0x314d07, '_OcclusionDataStorage', function() { return _0x5d4346; }), _0x59bd00['d'](_0x314d07, '_forceTransformFeedbackToBundle', function() { return !0x0; }), _0x59bd00['d'](_0x314d07, 'KeyboardEventTypes', function() { return _0x2698e8['a']; }), _0x59bd00['d'](_0x314d07, 'KeyboardInfo', function() { return _0x2698e8['b']; }), _0x59bd00['d'](_0x314d07, 'KeyboardInfoPre', function() { return _0x2698e8['c']; }), _0x59bd00['d'](_0x314d07, 'PointerEventTypes', function() { return _0xee889b['a']; }), _0x59bd00['d'](_0x314d07, 'PointerInfoBase', function() { return _0xee889b['c']; }), _0x59bd00['d'](_0x314d07, 'PointerInfoPre', function() { return _0xee889b['d']; }), _0x59bd00['d'](_0x314d07, 'PointerInfo', function() { return _0xee889b['b']; }), _0x59bd00['d'](_0x314d07, 'ClipboardEventTypes', function() { return _0xd2e1d8; }), _0x59bd00['d'](_0x314d07, 'ClipboardInfo', function() { return _0x3caadf; }), _0x59bd00['d'](_0x314d07, 'DaydreamController', function() { return _0x12de93; }), _0x59bd00['d'](_0x314d07, 'GearVRController', function() { return _0x5f3218; }), _0x59bd00['d'](_0x314d07, 'GenericController', function() { return _0x4dc9ec; }), _0x59bd00['d'](_0x314d07, 'OculusTouchController', function() { return _0x47dc7f; }), _0x59bd00['d'](_0x314d07, 'PoseEnabledControllerType', function() { return _0x5496d4; }), _0x59bd00['d'](_0x314d07, 'PoseEnabledControllerHelper', function() { return _0xe1c9ed; }), _0x59bd00['d'](_0x314d07, 'PoseEnabledController', function() { return _0x20e106; }), _0x59bd00['d'](_0x314d07, 'ViveController', function() { return _0x429076; }), _0x59bd00['d'](_0x314d07, 'WebVRController', function() { return _0x3ef953; }), _0x59bd00['d'](_0x314d07, 'WindowsMotionController', function() { return _0x2326db; }), _0x59bd00['d'](_0x314d07, 'StickValues', function() { return _0x329150; }), _0x59bd00['d'](_0x314d07, 'Gamepad', function() { return _0x591e86; }), _0x59bd00['d'](_0x314d07, 'GenericPad', function() { return _0x3f456f; }), _0x59bd00['d'](_0x314d07, 'GamepadManager', function() { return _0x1d5fe9; }), _0x59bd00['d'](_0x314d07, 'GamepadSystemSceneComponent', function() { return _0x44e17a; }), _0x59bd00['d'](_0x314d07, 'Xbox360Button', function() { return _0x1364a4; }), _0x59bd00['d'](_0x314d07, 'Xbox360Dpad', function() { return _0x5894ac; }), _0x59bd00['d'](_0x314d07, 'Xbox360Pad', function() { return _0x3f0248; }), _0x59bd00['d'](_0x314d07, 'AxisDragGizmo', function() { return _0xb03fb9['a']; }), _0x59bd00['d'](_0x314d07, 'AxisScaleGizmo', function() { return _0x25a0c0; }), _0x59bd00['d'](_0x314d07, 'BoundingBoxGizmo', function() { return _0x4f5163; }), _0x59bd00['d'](_0x314d07, 'Gizmo', function() { return _0x1f7c5e['a']; }), _0x59bd00['d'](_0x314d07, 'GizmoManager', function() { return _0x2a5726; }), _0x59bd00['d'](_0x314d07, 'PlaneRotationGizmo', function() { return _0x599bce; }), _0x59bd00['d'](_0x314d07, 'PositionGizmo', function() { return _0x3773db; }), _0x59bd00['d'](_0x314d07, 'RotationGizmo', function() { return _0x25dc9b; }), _0x59bd00['d'](_0x314d07, 'ScaleGizmo', function() { return _0x2297f6; }), _0x59bd00['d'](_0x314d07, 'LightGizmo', function() { return _0x49b2ba; }), _0x59bd00['d'](_0x314d07, 'EnvironmentHelper', function() { return _0x1a1e8f; }), _0x59bd00['d'](_0x314d07, 'PhotoDome', function() { return _0x998373; }), _0x59bd00['d'](_0x314d07, '_forceSceneHelpersToBundle', function() { return !0x0; }), _0x59bd00['d'](_0x314d07, 'VideoDome', function() { return _0x5d5d98; }), _0x59bd00['d'](_0x314d07, 'EngineInstrumentation', function() { return _0x4e1e4d; }), _0x59bd00['d'](_0x314d07, 'SceneInstrumentation', function() { return _0x4114e9; }), _0x59bd00['d'](_0x314d07, '_TimeToken', function() { return _0x376023; }), _0x59bd00['d'](_0x314d07, 'EffectLayer', function() { return _0x2cd16f; }), _0x59bd00['d'](_0x314d07, 'EffectLayerSceneComponent', function() { return _0x166241; }), _0x59bd00['d'](_0x314d07, 'GlowLayer', function() { return _0x54ec31; }), _0x59bd00['d'](_0x314d07, 'HighlightLayer', function() { return _0x15f267; }), _0x59bd00['d'](_0x314d07, 'Layer', function() { return _0x34c7bd; }), _0x59bd00['d'](_0x314d07, 'LayerSceneComponent', function() { return _0xaecb64; }), _0x59bd00['d'](_0x314d07, 'LensFlare', function() { return _0x12501b; }), _0x59bd00['d'](_0x314d07, 'LensFlareSystem', function() { return _0x48364d; }), _0x59bd00['d'](_0x314d07, 'LensFlareSystemSceneComponent', function() { return _0x38fcd4; }), _0x59bd00['d'](_0x314d07, 'Light', function() { return _0x16b020['a']; }), _0x59bd00['d'](_0x314d07, 'ShadowLight', function() { return _0x2074d3; }), _0x59bd00['d'](_0x314d07, 'DirectionalLight', function() { return _0x54b98c; }), _0x59bd00['d'](_0x314d07, 'HemisphericLight', function() { return _0x4e9f1d['a']; }), _0x59bd00['d'](_0x314d07, 'PointLight', function() { return _0x2494d8; }), _0x59bd00['d'](_0x314d07, 'SpotLight', function() { return _0x43ed51; }), _0x59bd00['d'](_0x314d07, 'ShadowGenerator', function() { return _0x4149be; }), _0x59bd00['d'](_0x314d07, 'ShadowGeneratorSceneComponent', function() { return _0xdcb1a1; }), _0x59bd00['d'](_0x314d07, 'DefaultLoadingScreen', function() { return _0x217c1d; }), _0x59bd00['d'](_0x314d07, 'SceneLoaderProgressEvent', function() { return _0x4da668; }), _0x59bd00['d'](_0x314d07, 'SceneLoader', function() { return _0x32da6b; }), _0x59bd00['d'](_0x314d07, 'SceneLoaderFlags', function() { return _0x9514dd['a']; }), _0x59bd00['d'](_0x314d07, '_BabylonLoaderRegistered', function() { return !0x0; }), _0x59bd00['d'](_0x314d07, 'ColorCurves', function() { return _0x1b8580['a']; }), _0x59bd00['d'](_0x314d07, 'EffectFallbacks', function() { return _0x3e9e56['c']; }), _0x59bd00['d'](_0x314d07, 'EffectCreationOptions', function() { return _0x3e9e56['b']; }), _0x59bd00['d'](_0x314d07, 'Effect', function() { return _0x3e9e56['a']; }), _0x59bd00['d'](_0x314d07, 'FresnelParameters', function() { return _0x5d771f; }), _0x59bd00['d'](_0x314d07, 'ImageProcessingConfigurationDefines', function() { return _0x347427['b']; }), _0x59bd00['d'](_0x314d07, 'ImageProcessingConfiguration', function() { return _0x347427['a']; }), _0x59bd00['d'](_0x314d07, 'Material', function() { return _0x10d420['a']; }), _0x59bd00['d'](_0x314d07, 'MaterialDefines', function() { return _0x58ad99['a']; }), _0x59bd00['d'](_0x314d07, 'MaterialHelper', function() { return _0x2efc06['a']; }), _0x59bd00['d'](_0x314d07, 'MultiMaterial', function() { return _0x20b869['a']; }), _0x59bd00['d'](_0x314d07, 'PushMaterial', function() { return _0xdc76ae['a']; }), _0x59bd00['d'](_0x314d07, 'ShaderMaterial', function() { return _0xc2ab1['a']; }), _0x59bd00['d'](_0x314d07, 'StandardMaterialDefines', function() { return _0xe7dd57['b']; }), _0x59bd00['d'](_0x314d07, 'StandardMaterial', function() { return _0xe7dd57['a']; }), _0x59bd00['d'](_0x314d07, 'BaseTexture', function() { return _0x134235['a']; }), _0x59bd00['d'](_0x314d07, 'CubeTexture', function() { return _0x1ed101; }), _0x59bd00['d'](_0x314d07, 'EquiRectangularCubeTexture', function() { return _0x29f52a; }), _0x59bd00['d'](_0x314d07, 'HDRCubeTexture', function() { return _0x52697b; }), _0x59bd00['d'](_0x314d07, 'InternalTexture', function() { return _0x2826dc['a']; }), _0x59bd00['d'](_0x314d07, 'MirrorTexture', function() { return _0x285bd8; }), _0x59bd00['d'](_0x314d07, 'MultiRenderTarget', function() { return _0x217d12; }), _0x59bd00['d'](_0x314d07, 'RenderTargetTexture', function() { return _0xe8a585; }), _0x59bd00['d'](_0x314d07, 'Texture', function() { return _0x11d14a['a']; }), _0x59bd00['d'](_0x314d07, 'UniformBuffer', function() { return _0x50c46d['a']; }), _0x59bd00['d'](_0x314d07, 'MaterialFlags', function() { return _0x2085b2['a']; }), _0x59bd00['d'](_0x314d07, 'BackgroundMaterial', function() { return _0x4ac990; }), _0x59bd00['d'](_0x314d07, 'PBRMaterialDefines', function() { return _0x164c48; }), _0x59bd00['d'](_0x314d07, 'PBRBaseMaterial', function() { return _0x327952; }), _0x59bd00['d'](_0x314d07, 'PBRBaseSimpleMaterial', function() { return _0x318a8c; }), _0x59bd00['d'](_0x314d07, 'PBRMaterial', function() { return _0x36df35; }), _0x59bd00['d'](_0x314d07, 'PBRMetallicRoughnessMaterial', function() { return _0x51489a; }), _0x59bd00['d'](_0x314d07, 'PBRSpecularGlossinessMaterial', function() { return _0x4fcd7b; }), _0x59bd00['d'](_0x314d07, 'ColorGradingTexture', function() { return _0x5a1a3f; }), _0x59bd00['d'](_0x314d07, 'DynamicTexture', function() { return _0x527e2f; }), _0x59bd00['d'](_0x314d07, 'ProceduralTexture', function() { return _0x500402; }), _0x59bd00['d'](_0x314d07, 'RawCubeTexture', function() { return _0x27b5a7; }), _0x59bd00['d'](_0x314d07, 'RawTexture', function() { return _0x16dc17; }), _0x59bd00['d'](_0x314d07, 'RawTexture3D', function() { return _0x86fe4c; }), _0x59bd00['d'](_0x314d07, 'RefractionTexture', function() { return _0x274645; }), _0x59bd00['d'](_0x314d07, 'VideoTexture', function() { return _0x4251b7; }), _0x59bd00['d'](_0x314d07, 'HtmlElementTexture', function() { return _0x11af81; }), _0x59bd00['d'](_0x314d07, '_DDSTextureLoader', function() { return _0x5b0fba; }), _0x59bd00['d'](_0x314d07, '_ENVTextureLoader', function() { return _0x4c9cf9; }), _0x59bd00['d'](_0x314d07, '_KTXTextureLoader', function() { return _0x5d037e; }), _0x59bd00['d'](_0x314d07, '_TGATextureLoader', function() { return _0x174282; }), _0x59bd00['d'](_0x314d07, 'CustomProceduralTexture', function() { return _0x3d44c0; }), _0x59bd00['d'](_0x314d07, 'NoiseProceduralTexture', function() { return _0x2bd2d8; }), _0x59bd00['d'](_0x314d07, 'ProceduralTextureSceneComponent', function() { return _0x2e24f3; }), _0x59bd00['d'](_0x314d07, 'Scalar', function() { return _0x77cead['a']; }), _0x59bd00['d'](_0x314d07, 'ToGammaSpace', function() { return _0x47d24f['u']; }), _0x59bd00['d'](_0x314d07, 'ToLinearSpace', function() { return _0x47d24f['v']; }), _0x59bd00['d'](_0x314d07, 'Epsilon', function() { return _0x47d24f['h']; }), _0x59bd00['d'](_0x314d07, 'Color3', function() { return _0x47d24f['e']; }), _0x59bd00['d'](_0x314d07, 'Color4', function() { return _0x47d24f['f']; }), _0x59bd00['d'](_0x314d07, 'Vector2', function() { return _0x47d24f['w']; }), _0x59bd00['d'](_0x314d07, 'Vector3', function() { return _0x47d24f['x']; }), _0x59bd00['d'](_0x314d07, 'Vector4', function() { return _0x47d24f['y']; }), _0x59bd00['d'](_0x314d07, 'Size', function() { return _0x47d24f['r']; }), _0x59bd00['d'](_0x314d07, 'Quaternion', function() { return _0x47d24f['q']; }), _0x59bd00['d'](_0x314d07, 'Matrix', function() { return _0x47d24f['j']; }), _0x59bd00['d'](_0x314d07, 'Plane', function() { return _0x47d24f['n']; }), _0x59bd00['d'](_0x314d07, 'Viewport', function() { return _0x47d24f['z']; }), _0x59bd00['d'](_0x314d07, 'Frustum', function() { return _0x47d24f['i']; }), _0x59bd00['d'](_0x314d07, 'Space', function() { return _0x47d24f['s']; }), _0x59bd00['d'](_0x314d07, 'Axis', function() { return _0x47d24f['c']; }), _0x59bd00['d'](_0x314d07, 'BezierCurve', function() { return _0x47d24f['d']; }), _0x59bd00['d'](_0x314d07, 'Orientation', function() { return _0x47d24f['k']; }), _0x59bd00['d'](_0x314d07, 'Angle', function() { return _0x47d24f['a']; }), _0x59bd00['d'](_0x314d07, 'Arc2', function() { return _0x47d24f['b']; }), _0x59bd00['d'](_0x314d07, 'Path2', function() { return _0x47d24f['l']; }), _0x59bd00['d'](_0x314d07, 'Path3D', function() { return _0x47d24f['m']; }), _0x59bd00['d'](_0x314d07, 'Curve3', function() { return _0x47d24f['g']; }), _0x59bd00['d'](_0x314d07, 'PositionNormalVertex', function() { return _0x47d24f['p']; }), _0x59bd00['d'](_0x314d07, 'PositionNormalTextureVertex', function() { return _0x47d24f['o']; }), _0x59bd00['d'](_0x314d07, 'Tmp', function() { return _0x47d24f['t']; }), _0x59bd00['d'](_0x314d07, 'SphericalHarmonics', function() { return _0x412209['a']; }), _0x59bd00['d'](_0x314d07, 'SphericalPolynomial', function() { return _0x412209['b']; }), _0x59bd00['d'](_0x314d07, 'AbstractMesh', function() { return _0x10c088['a']; }), _0x59bd00['d'](_0x314d07, 'Buffer', function() { return _0x4209f7['a']; }), _0x59bd00['d'](_0x314d07, 'VertexBuffer', function() { return _0x4209f7['b']; }), _0x59bd00['d'](_0x314d07, 'CSG', function() { return _0x40105c; }), _0x59bd00['d'](_0x314d07, 'Geometry', function() { return _0x2328b6['a']; }), _0x59bd00['d'](_0x314d07, 'GroundMesh', function() { return _0x49615a; }), _0x59bd00['d'](_0x314d07, 'TrailMesh', function() { return _0x96461; }), _0x59bd00['d'](_0x314d07, 'InstancedMesh', function() { return _0x10af20['a']; }), _0x59bd00['d'](_0x314d07, 'LinesMesh', function() { return _0x1a4641['b']; }), _0x59bd00['d'](_0x314d07, 'InstancedLinesMesh', function() { return _0x1a4641['a']; }), _0x59bd00['d'](_0x314d07, '_CreationDataStorage', function() { return _0xb4719b['b']; }), _0x59bd00['d'](_0x314d07, '_InstancesBatch', function() { return _0xb4719b['c']; }), _0x59bd00['d'](_0x314d07, 'Mesh', function() { return _0xb4719b['a']; }), _0x59bd00['d'](_0x314d07, 'VertexData', function() { return _0xb31206['a']; }), _0x59bd00['d'](_0x314d07, 'MeshBuilder', function() { return _0x54f521; }), _0x59bd00['d'](_0x314d07, 'SimplificationSettings', function() { return _0x2aaf95; }), _0x59bd00['d'](_0x314d07, 'SimplificationQueue', function() { return _0x157d40; }), _0x59bd00['d'](_0x314d07, 'SimplificationType', function() { return _0x475cda; }), _0x59bd00['d'](_0x314d07, 'SimplicationQueueSceneComponent', function() { return _0x471e4b; }), _0x59bd00['d'](_0x314d07, 'Polygon', function() { return _0x25ba6a; }), _0x59bd00['d'](_0x314d07, 'PolygonMeshBuilder', function() { return _0x534658; }), _0x59bd00['d'](_0x314d07, 'BaseSubMesh', function() { return _0x4db406['a']; }), _0x59bd00['d'](_0x314d07, 'SubMesh', function() { return _0x4db406['b']; }), _0x59bd00['d'](_0x314d07, 'MeshLODLevel', function() { return _0x4ecbd7['a']; }), _0x59bd00['d'](_0x314d07, 'TransformNode', function() { return _0x483560['a']; }), _0x59bd00['d'](_0x314d07, 'BoxBuilder', function() { return _0x401528['a']; }), _0x59bd00['d'](_0x314d07, 'SphereBuilder', function() { return _0x523a20['a']; }), _0x59bd00['d'](_0x314d07, 'CylinderBuilder', function() { return _0x1e5ba3['a']; }), _0x59bd00['d'](_0x314d07, 'LinesBuilder', function() { return _0x4c2fa7['a']; }), _0x59bd00['d'](_0x314d07, 'PlaneBuilder', function() { return _0x404635['a']; }), _0x59bd00['d'](_0x314d07, 'DataBuffer', function() { return _0x1b2372['a']; }), _0x59bd00['d'](_0x314d07, 'WebGLDataBuffer', function() { return _0x29f7ba['a']; }), _0x59bd00['d'](_0x314d07, 'DracoCompression', function() { return _0xbcebb9; }), _0x59bd00['d'](_0x314d07, 'DiscBuilder', function() { return _0x6e671f; }), _0x59bd00['d'](_0x314d07, 'RibbonBuilder', function() { return _0x129ee8; }), _0x59bd00['d'](_0x314d07, 'HemisphereBuilder', function() { return _0x2f585d; }), _0x59bd00['d'](_0x314d07, 'TorusBuilder', function() { return _0x211acf; }), _0x59bd00['d'](_0x314d07, 'TorusKnotBuilder', function() { return _0x9b152c; }), _0x59bd00['d'](_0x314d07, 'PolygonBuilder', function() { return _0x423287; }), _0x59bd00['d'](_0x314d07, 'ShapeBuilder', function() { return _0x39250a; }), _0x59bd00['d'](_0x314d07, 'LatheBuilder', function() { return _0x18a35c; }), _0x59bd00['d'](_0x314d07, 'GroundBuilder', function() { return _0x88163d; }), _0x59bd00['d'](_0x314d07, 'TubeBuilder', function() { return _0x137ea7; }), _0x59bd00['d'](_0x314d07, 'PolyhedronBuilder', function() { return _0x230c05; }), _0x59bd00['d'](_0x314d07, 'IcoSphereBuilder', function() { return _0x244f2e; }), _0x59bd00['d'](_0x314d07, 'DecalBuilder', function() { return _0x5ea59d; }), _0x59bd00['d'](_0x314d07, 'MorphTarget', function() { return _0x38b295; }), _0x59bd00['d'](_0x314d07, 'MorphTargetManager', function() { return _0x3d8243; }), _0x59bd00['d'](_0x314d07, 'Node', function() { return _0x111b09['a']; }), _0x59bd00['d'](_0x314d07, 'Database', function() { return _0x42a1d9; }), _0x59bd00['d'](_0x314d07, 'BaseParticleSystem', function() { return _0x846099; }), _0x59bd00['d'](_0x314d07, 'GPUParticleSystem', function() { return _0x53d135; }), _0x59bd00['d'](_0x314d07, 'Particle', function() { return _0x31ce89; }), _0x59bd00['d'](_0x314d07, 'ParticleHelper', function() { return _0x3f5841; }), _0x59bd00['d'](_0x314d07, 'ParticleSystem', function() { return _0x280da5; }), _0x59bd00['d'](_0x314d07, '_IDoNeedToBeInTheBuild', function() { return 0x2a; }), _0x59bd00['d'](_0x314d07, 'ParticleSystemSet', function() { return _0x29eb1d; }), _0x59bd00['d'](_0x314d07, 'SolidParticle', function() { return _0x29620f; }), _0x59bd00['d'](_0x314d07, 'ModelShape', function() { return _0x543321; }), _0x59bd00['d'](_0x314d07, 'DepthSortedParticle', function() { return _0x4de25a; }), _0x59bd00['d'](_0x314d07, 'SolidParticleSystem', function() { return _0x248af5; }), _0x59bd00['d'](_0x314d07, 'SubEmitterType', function() { return _0x3fcd14; }), _0x59bd00['d'](_0x314d07, 'SubEmitter', function() { return _0x2feace; }), _0x59bd00['d'](_0x314d07, 'BoxParticleEmitter', function() { return _0x22edcb; }), _0x59bd00['d'](_0x314d07, 'ConeParticleEmitter', function() { return _0x1f7a9e; }), _0x59bd00['d'](_0x314d07, 'CylinderParticleEmitter', function() { return _0x564110; }), _0x59bd00['d'](_0x314d07, 'CylinderDirectedParticleEmitter', function() { return _0x5bafbf; }), _0x59bd00['d'](_0x314d07, 'HemisphericParticleEmitter', function() { return _0x4adf6f; }), _0x59bd00['d'](_0x314d07, 'PointParticleEmitter', function() { return _0x2e596e; }), _0x59bd00['d'](_0x314d07, 'SphereParticleEmitter', function() { return _0x40804d; }), _0x59bd00['d'](_0x314d07, 'SphereDirectedParticleEmitter', function() { return _0x2aad28; }), _0x59bd00['d'](_0x314d07, 'PhysicsEngine', function() { return _0x19d308; }), _0x59bd00['d'](_0x314d07, 'PhysicsEngineSceneComponent', function() { return _0x32edcd; }), _0x59bd00['d'](_0x314d07, 'PhysicsHelper', function() { return _0x4dd2cc; }), _0x59bd00['d'](_0x314d07, 'PhysicsRadialExplosionEventOptions', function() { return _0x200d5e; }), _0x59bd00['d'](_0x314d07, 'PhysicsUpdraftEventOptions', function() { return _0x5f57a2; }), _0x59bd00['d'](_0x314d07, 'PhysicsVortexEventOptions', function() { return _0x1ca33b; }), _0x59bd00['d'](_0x314d07, 'PhysicsRadialImpulseFalloff', function() { return _0x29719b; }), _0x59bd00['d'](_0x314d07, 'PhysicsUpdraftMode', function() { return _0x4a8ffa; }), _0x59bd00['d'](_0x314d07, 'PhysicsImpostor', function() { return _0x216137['a']; }), _0x59bd00['d'](_0x314d07, 'PhysicsJoint', function() { return _0x400e0d['e']; }), _0x59bd00['d'](_0x314d07, 'DistanceJoint', function() { return _0x400e0d['a']; }), _0x59bd00['d'](_0x314d07, 'MotorEnabledJoint', function() { return _0x400e0d['d']; }), _0x59bd00['d'](_0x314d07, 'HingeJoint', function() { return _0x400e0d['c']; }), _0x59bd00['d'](_0x314d07, 'Hinge2Joint', function() { return _0x400e0d['b']; }), _0x59bd00['d'](_0x314d07, 'CannonJSPlugin', function() { return _0x5271b3; }), _0x59bd00['d'](_0x314d07, 'AmmoJSPlugin', function() { return _0x23f8ee; }), _0x59bd00['d'](_0x314d07, 'OimoJSPlugin', function() { return _0x272b2e; }), _0x59bd00['d'](_0x314d07, 'AnaglyphPostProcess', function() { return _0x14574e; }), _0x59bd00['d'](_0x314d07, 'BlackAndWhitePostProcess', function() { return _0x3105e5; }), _0x59bd00['d'](_0x314d07, 'BloomEffect', function() { return _0x767cfe; }), _0x59bd00['d'](_0x314d07, 'BloomMergePostProcess', function() { return _0x27abd3; }), _0x59bd00['d'](_0x314d07, 'BlurPostProcess', function() { return _0x1c8af1; }), _0x59bd00['d'](_0x314d07, 'ChromaticAberrationPostProcess', function() { return _0x7d7e15; }), _0x59bd00['d'](_0x314d07, 'CircleOfConfusionPostProcess', function() { return _0x271b18; }), _0x59bd00['d'](_0x314d07, 'ColorCorrectionPostProcess', function() { return _0x2adb56; }), _0x59bd00['d'](_0x314d07, 'ConvolutionPostProcess', function() { return _0x1a6397; }), _0x59bd00['d'](_0x314d07, 'DepthOfFieldBlurPostProcess', function() { return _0x53d1cb; }), _0x59bd00['d'](_0x314d07, 'DepthOfFieldEffectBlurLevel', function() { return _0x1e3a5a; }), _0x59bd00['d'](_0x314d07, 'DepthOfFieldEffect', function() { return _0x3fc7d6; }), _0x59bd00['d'](_0x314d07, 'DepthOfFieldMergePostProcessOptions', function() { return _0x3f918f; }), _0x59bd00['d'](_0x314d07, 'DepthOfFieldMergePostProcess', function() { return _0x1a0306; }), _0x59bd00['d'](_0x314d07, 'DisplayPassPostProcess', function() { return _0x4944d7; }), _0x59bd00['d'](_0x314d07, 'ExtractHighlightsPostProcess', function() { return _0x376b71; }), _0x59bd00['d'](_0x314d07, 'FilterPostProcess', function() { return _0x518417; }), _0x59bd00['d'](_0x314d07, 'FxaaPostProcess', function() { return _0x3f1824; }), _0x59bd00['d'](_0x314d07, 'GrainPostProcess', function() { return _0x1a14de; }), _0x59bd00['d'](_0x314d07, 'HighlightsPostProcess', function() { return _0x265af3; }), _0x59bd00['d'](_0x314d07, 'ImageProcessingPostProcess', function() { return _0x46186b; }), _0x59bd00['d'](_0x314d07, 'MotionBlurPostProcess', function() { return _0x418eb2; }), _0x59bd00['d'](_0x314d07, 'PassPostProcess', function() { return _0x4b3169; }), _0x59bd00['d'](_0x314d07, 'PassCubePostProcess', function() { return _0x1180ef; }), _0x59bd00['d'](_0x314d07, 'PostProcess', function() { return _0x1f5ab5; }), _0x59bd00['d'](_0x314d07, 'PostProcessManager', function() { return _0x45a1f6['a']; }), _0x59bd00['d'](_0x314d07, 'RefractionPostProcess', function() { return _0x17e323; }), _0x59bd00['d'](_0x314d07, 'SharpenPostProcess', function() { return _0x3d05af; }), _0x59bd00['d'](_0x314d07, 'StereoscopicInterlacePostProcess', function() { return _0x91c96a; }), _0x59bd00['d'](_0x314d07, 'TonemappingOperator', function() { return _0x4293b6; }), _0x59bd00['d'](_0x314d07, 'TonemapPostProcess', function() { return _0x255595; }), _0x59bd00['d'](_0x314d07, 'VolumetricLightScatteringPostProcess', function() { return _0x54989c; }), _0x59bd00['d'](_0x314d07, 'VRDistortionCorrectionPostProcess', function() { return _0x5366ef; }), _0x59bd00['d'](_0x314d07, 'VRMultiviewToSingleviewPostProcess', function() { return _0x3462d5; }), _0x59bd00['d'](_0x314d07, 'PostProcessRenderEffect', function() { return _0x25710c; }), _0x59bd00['d'](_0x314d07, 'PostProcessRenderPipeline', function() { return _0x27ecaf; }), _0x59bd00['d'](_0x314d07, 'PostProcessRenderPipelineManager', function() { return _0x454c2e; }), _0x59bd00['d'](_0x314d07, 'PostProcessRenderPipelineManagerSceneComponent', function() { return _0x32f969; }), _0x59bd00['d'](_0x314d07, 'DefaultRenderingPipeline', function() { return _0x7cf296; }), _0x59bd00['d'](_0x314d07, 'LensRenderingPipeline', function() { return _0x130fd0; }), _0x59bd00['d'](_0x314d07, 'SSAO2RenderingPipeline', function() { return _0x381851; }), _0x59bd00['d'](_0x314d07, 'SSAORenderingPipeline', function() { return _0x1bb80f; }), _0x59bd00['d'](_0x314d07, 'StandardRenderingPipeline', function() { return _0xa4ae05; }), _0x59bd00['d'](_0x314d07, 'ReflectionProbe', function() { return _0x5872ea; }), _0x59bd00['d'](_0x314d07, 'BoundingBoxRenderer', function() { return _0x24822b; }), _0x59bd00['d'](_0x314d07, 'DepthRenderer', function() { return _0x5a6b94; }), _0x59bd00['d'](_0x314d07, 'DepthRendererSceneComponent', function() { return _0x27f572; }), _0x59bd00['d'](_0x314d07, 'EdgesRenderer', function() { return _0x32ce08; }), _0x59bd00['d'](_0x314d07, 'LineEdgesRenderer', function() { return _0x242052; }), _0x59bd00['d'](_0x314d07, 'GeometryBufferRenderer', function() { return _0x385f61; }), _0x59bd00['d'](_0x314d07, 'GeometryBufferRendererSceneComponent', function() { return _0x3bd455; }), _0x59bd00['d'](_0x314d07, 'OutlineRenderer', function() { return _0x1b3f40; }), _0x59bd00['d'](_0x314d07, 'RenderingGroup', function() { return _0x4b32a4['a']; }), _0x59bd00['d'](_0x314d07, 'RenderingGroupInfo', function() { return _0x21bf6d['a']; }), _0x59bd00['d'](_0x314d07, 'RenderingManager', function() { return _0x21bf6d['b']; }), _0x59bd00['d'](_0x314d07, 'UtilityLayerRenderer', function() { return _0x1d5ec6['a']; }), _0x59bd00['d'](_0x314d07, 'Scene', function() { return _0x366639['a']; }), _0x59bd00['d'](_0x314d07, 'SceneComponentConstants', function() { return _0x443f74['a']; }), _0x59bd00['d'](_0x314d07, 'Stage', function() { return _0x443f74['b']; }), _0x59bd00['d'](_0x314d07, 'Sprite', function() { return _0x1a1f52; }), _0x59bd00['d'](_0x314d07, 'SpriteManager', function() { return _0x3f02ea; }), _0x59bd00['d'](_0x314d07, 'SpriteSceneComponent', function() { return _0x2d8b76; }), _0x59bd00['d'](_0x314d07, '_AlphaState', function() { return _0x4bb53a['a']; }), _0x59bd00['d'](_0x314d07, '_DepthCullingState', function() { return _0x4bb53a['b']; }), _0x59bd00['d'](_0x314d07, '_StencilState', function() { return _0x4bb53a['c']; }), _0x59bd00['d'](_0x314d07, 'AndOrNotEvaluator', function() { return _0x34cff2['a']; }), _0x59bd00['d'](_0x314d07, 'AssetTaskState', function() { return _0x2df5ec; }), _0x59bd00['d'](_0x314d07, 'AbstractAssetTask', function() { return _0x46228d; }), _0x59bd00['d'](_0x314d07, 'AssetsProgressEvent', function() { return _0x475da6; }), _0x59bd00['d'](_0x314d07, 'MeshAssetTask', function() { return _0x5dfd73; }), _0x59bd00['d'](_0x314d07, 'TextFileAssetTask', function() { return _0x505371; }), _0x59bd00['d'](_0x314d07, 'BinaryFileAssetTask', function() { return _0x1ca8c2; }), _0x59bd00['d'](_0x314d07, 'ImageAssetTask', function() { return _0x315ab6; }), _0x59bd00['d'](_0x314d07, 'TextureAssetTask', function() { return _0x530e14; }), _0x59bd00['d'](_0x314d07, 'CubeTextureAssetTask', function() { return _0x49f7dc; }), _0x59bd00['d'](_0x314d07, 'HDRCubeTextureAssetTask', function() { return _0x31277d; }), _0x59bd00['d'](_0x314d07, 'EquiRectangularCubeTextureAssetTask', function() { return _0x42a465; }), _0x59bd00['d'](_0x314d07, 'AssetsManager', function() { return _0x328fb2; }), _0x59bd00['d'](_0x314d07, 'DDSTools', function() { return _0x364f7e; }), _0x59bd00['d'](_0x314d07, 'expandToProperty', function() { return _0x3d4764['b']; }), _0x59bd00['d'](_0x314d07, 'serialize', function() { return _0x3d4764['c']; }), _0x59bd00['d'](_0x314d07, 'serializeAsTexture', function() { return _0x3d4764['m']; }), _0x59bd00['d'](_0x314d07, 'serializeAsColor3', function() { return _0x3d4764['e']; }), _0x59bd00['d'](_0x314d07, 'serializeAsFresnelParameters', function() { return _0x3d4764['h']; }), _0x59bd00['d'](_0x314d07, 'serializeAsVector2', function() { return _0x3d4764['n']; }), _0x59bd00['d'](_0x314d07, 'serializeAsVector3', function() { return _0x3d4764['o']; }), _0x59bd00['d'](_0x314d07, 'serializeAsMeshReference', function() { return _0x3d4764['k']; }), _0x59bd00['d'](_0x314d07, 'serializeAsColorCurves', function() { return _0x3d4764['g']; }), _0x59bd00['d'](_0x314d07, 'serializeAsColor4', function() { return _0x3d4764['f']; }), _0x59bd00['d'](_0x314d07, 'serializeAsImageProcessingConfiguration', function() { return _0x3d4764['i']; }), _0x59bd00['d'](_0x314d07, 'serializeAsQuaternion', function() { return _0x3d4764['l']; }), _0x59bd00['d'](_0x314d07, 'serializeAsMatrix', function() { return _0x3d4764['j']; }), _0x59bd00['d'](_0x314d07, 'serializeAsCameraReference', function() { return _0x3d4764['d']; }), _0x59bd00['d'](_0x314d07, 'SerializationHelper', function() { return _0x3d4764['a']; }), _0x59bd00['d'](_0x314d07, 'Deferred', function() { return _0x32d309; }), _0x59bd00['d'](_0x314d07, 'EnvironmentTextureTools', function() { return _0x4cf463; }), _0x59bd00['d'](_0x314d07, 'MeshExploder', function() { return _0x59d204; }), _0x59bd00['d'](_0x314d07, 'FilesInput', function() { return _0x4cfac7; }), _0x59bd00['d'](_0x314d07, 'KhronosTextureContainer', function() { return _0x4346df; }), _0x59bd00['d'](_0x314d07, 'EventState', function() { return _0x2dbec2['a']; }), _0x59bd00['d'](_0x314d07, 'Observer', function() { return _0x2dbec2['d']; }), _0x59bd00['d'](_0x314d07, 'MultiObserver', function() { return _0x2dbec2['b']; }), _0x59bd00['d'](_0x314d07, 'Observable', function() { return _0x2dbec2['c']; }), _0x59bd00['d'](_0x314d07, 'PerformanceMonitor', function() { return _0x346f8f['a']; }), _0x59bd00['d'](_0x314d07, 'RollingAverage', function() { return _0x346f8f['b']; }), _0x59bd00['d'](_0x314d07, 'PromisePolyfill', function() { return _0x17b93a['a']; }), _0x59bd00['d'](_0x314d07, 'SceneOptimization', function() { return _0x5c4ad6; }), _0x59bd00['d'](_0x314d07, 'TextureOptimization', function() { return _0x2ccbdc; }), _0x59bd00['d'](_0x314d07, 'HardwareScalingOptimization', function() { return _0x1001c7; }), _0x59bd00['d'](_0x314d07, 'ShadowsOptimization', function() { return _0x15102b; }), _0x59bd00['d'](_0x314d07, 'PostProcessesOptimization', function() { return _0x57ee5d; }), _0x59bd00['d'](_0x314d07, 'LensFlaresOptimization', function() { return _0x115b3a; }), _0x59bd00['d'](_0x314d07, 'CustomOptimization', function() { return _0x5a55f1; }), _0x59bd00['d'](_0x314d07, 'ParticlesOptimization', function() { return _0xf01b94; }), _0x59bd00['d'](_0x314d07, 'RenderTargetsOptimization', function() { return _0x210981; }), _0x59bd00['d'](_0x314d07, 'MergeMeshesOptimization', function() { return _0x3366ca; }), _0x59bd00['d'](_0x314d07, 'SceneOptimizerOptions', function() { return _0x268997; }), _0x59bd00['d'](_0x314d07, 'SceneOptimizer', function() { return _0x23adcd; }), _0x59bd00['d'](_0x314d07, 'SceneSerializer', function() { return _0x3595ea; }), _0x59bd00['d'](_0x314d07, 'SmartArray', function() { return _0x435d55['a']; }), _0x59bd00['d'](_0x314d07, 'SmartArrayNoDuplicate', function() { return _0x435d55['b']; }), _0x59bd00['d'](_0x314d07, 'StringDictionary', function() { return _0x4e0763['a']; }), _0x59bd00['d'](_0x314d07, 'Tags', function() { return _0x162ece['a']; }), _0x59bd00['d'](_0x314d07, 'TextureTools', function() { return _0x817560; }), _0x59bd00['d'](_0x314d07, 'TGATools', function() { return _0x149dfc; }), _0x59bd00['d'](_0x314d07, 'ColorGradient', function() { return _0x1eb50e['c']; }), _0x59bd00['d'](_0x314d07, 'Color3Gradient', function() { return _0x1eb50e['b']; }), _0x59bd00['d'](_0x314d07, 'FactorGradient', function() { return _0x1eb50e['d']; }), _0x59bd00['d'](_0x314d07, 'LoadFileError', function() { return _0x1eb50e['e']; }), _0x59bd00['d'](_0x314d07, 'RetryStrategy', function() { return _0x1eb50e['g']; }), _0x59bd00['d'](_0x314d07, 'Tools', function() { return _0x1eb50e['h']; }), _0x59bd00['d'](_0x314d07, 'PerfCounter', function() { return _0x1eb50e['f']; }), _0x59bd00['d'](_0x314d07, 'className', function() { return _0x1eb50e['i']; }), _0x59bd00['d'](_0x314d07, 'AsyncLoop', function() { return _0x1eb50e['a']; }), _0x59bd00['d'](_0x314d07, 'VideoRecorder', function() { return _0x426449; }), _0x59bd00['d'](_0x314d07, 'JoystickAxis', function() { return _0x5e8161; }), _0x59bd00['d'](_0x314d07, 'VirtualJoystick', function() { return _0x48a1e1; }), _0x59bd00['d'](_0x314d07, 'WorkerPool', function() { return _0x46f062; }), _0x59bd00['d'](_0x314d07, 'Logger', function() { return _0x3f98cb['a']; }), _0x59bd00['d'](_0x314d07, '_TypeStore', function() { return _0x376b99['a']; }), _0x59bd00['d'](_0x314d07, 'FilesInputStore', function() { return _0x51b1a2['a']; }), _0x59bd00['d'](_0x314d07, 'DeepCopier', function() { return _0x5e367c['a']; }), _0x59bd00['d'](_0x314d07, 'PivotTools', function() { return _0x23c3c5['a']; }), _0x59bd00['d'](_0x314d07, 'PrecisionDate', function() { return _0x39b2d2['a']; }), _0x59bd00['d'](_0x314d07, 'ScreenshotTools', function() { return _0x105f82; }), _0x59bd00['d'](_0x314d07, 'WebRequest', function() { return _0x5cea33['a']; }), _0x59bd00['d'](_0x314d07, 'InspectableType', function() { return _0x1d4201; }), _0x59bd00['d'](_0x314d07, 'CubeMapToSphericalPolynomialTools', function() { return _0x11fa1f['a']; }), _0x59bd00['d'](_0x314d07, 'HDRTools', function() { return _0x32da9b; }), _0x59bd00['d'](_0x314d07, 'PanoramaToCubeMapTools', function() { return _0x52deea; }); } , function(_0x197fbd, _0x557c38, _0x3e182e) { 'use strict'; var _0x81f415 = 'fogFragmentDeclaration' , _0x148bcc = '#ifdef\x20FOG\x0a#define\x20FOGMODE_NONE\x200.\x0a#define\x20FOGMODE_EXP\x201.\x0a#define\x20FOGMODE_EXP2\x202.\x0a#define\x20FOGMODE_LINEAR\x203.\x0a#define\x20E\x202.71828\x0auniform\x20vec4\x20vFogInfos;\x0auniform\x20vec3\x20vFogColor;\x0avarying\x20vec3\x20vFogDistance;\x0afloat\x20CalcFogFactor()\x0a{\x0afloat\x20fogCoeff=1.0;\x0afloat\x20fogStart=vFogInfos.y;\x0afloat\x20fogEnd=vFogInfos.z;\x0afloat\x20fogDensity=vFogInfos.w;\x0afloat\x20fogDistance=length(vFogDistance);\x0aif\x20(FOGMODE_LINEAR\x20==\x20vFogInfos.x)\x0a{\x0afogCoeff=(fogEnd-fogDistance)/(fogEnd-fogStart);\x0a}\x0aelse\x20if\x20(FOGMODE_EXP\x20==\x20vFogInfos.x)\x0a{\x0afogCoeff=1.0/pow(E,fogDistance*fogDensity);\x0a}\x0aelse\x20if\x20(FOGMODE_EXP2\x20==\x20vFogInfos.x)\x0a{\x0afogCoeff=1.0/pow(E,fogDistance*fogDistance*fogDensity*fogDensity);\x0a}\x0areturn\x20clamp(fogCoeff,0.0,1.0);\x0a}\x0a#endif'; _0x3e182e(0x5)['a']['IncludesShadersStore'][_0x81f415] = _0x148bcc; } , function(_0xed359, _0xd039e3, _0x3a0b92) { 'use strict'; var _0x3d5096 = '#ifdef\x20FOG\x0afloat\x20fog=CalcFogFactor();\x0acolor.rgb=fog*color.rgb+(1.0-fog)*vFogColor;\x0a#endif'; _0x3a0b92(0x5)['a']['IncludesShadersStore']['fogFragment'] = _0x3d5096; } , function(_0x419bb9, _0x576891, _0x19d0c6) { 'use strict'; var _0x5277ac = 'fogVertexDeclaration' , _0x47bd39 = '#ifdef\x20FOG\x0avarying\x20vec3\x20vFogDistance;\x0a#endif'; _0x19d0c6(0x5)['a']['IncludesShadersStore'][_0x5277ac] = _0x47bd39; } , function(_0x175057, _0x3f6cbd, _0x8160fa) { 'use strict'; var _0x47d623 = 'morphTargetsVertexGlobalDeclaration' , _0x1b3081 = '#ifdef\x20MORPHTARGETS\x0auniform\x20float\x20morphTargetInfluences[NUM_MORPH_INFLUENCERS];\x0a#endif'; _0x8160fa(0x5)['a']['IncludesShadersStore'][_0x47d623] = _0x1b3081; } , function(_0x49e160, _0xc35cc6, _0x14ca92) { 'use strict'; var _0xc631e4 = 'morphTargetsVertexDeclaration' , _0x225df6 = '#ifdef\x20MORPHTARGETS\x0aattribute\x20vec3\x20position{X};\x0a#ifdef\x20MORPHTARGETS_NORMAL\x0aattribute\x20vec3\x20normal{X};\x0a#endif\x0a#ifdef\x20MORPHTARGETS_TANGENT\x0aattribute\x20vec3\x20tangent{X};\x0a#endif\x0a#endif'; _0x14ca92(0x5)['a']['IncludesShadersStore'][_0xc631e4] = _0x225df6; } , function(_0x553108, _0x85bc60, _0x2c4f2b) { 'use strict'; var _0x24596b = 'morphTargetsVertex' , _0x39b9d8 = '#ifdef\x20MORPHTARGETS\x0apositionUpdated+=(position{X}-position)*morphTargetInfluences[{X}];\x0a#ifdef\x20MORPHTARGETS_NORMAL\x0anormalUpdated+=(normal{X}-normal)*morphTargetInfluences[{X}];\x0a#endif\x0a#ifdef\x20MORPHTARGETS_TANGENT\x0atangentUpdated.xyz+=(tangent{X}-tangent.xyz)*morphTargetInfluences[{X}];\x0a#endif\x0a#endif'; _0x2c4f2b(0x5)['a']['IncludesShadersStore'][_0x24596b] = _0x39b9d8; } , function(_0x4a4e7a, _0x2559bf, _0x5529e9) { 'use strict'; _0x5529e9['d'](_0x2559bf, 'a', function() { return _0x4f68d6; }); var _0x4f68d6 = function() { function _0x535bcf() {} return _0x535bcf['Eval'] = function(_0x2df009, _0x595a29) { return 'true' === (_0x2df009 = _0x2df009['match'](/\([^\(\)]*\)/g) ? _0x2df009['replace'](/\([^\(\)]*\)/g, function(_0x8474b3) { return _0x8474b3 = _0x8474b3['slice'](0x1, _0x8474b3['length'] - 0x1), _0x535bcf['_HandleParenthesisContent'](_0x8474b3, _0x595a29); }) : _0x535bcf['_HandleParenthesisContent'](_0x2df009, _0x595a29)) || 'false' !== _0x2df009 && _0x535bcf['Eval'](_0x2df009, _0x595a29); } , _0x535bcf['_HandleParenthesisContent'] = function(_0x417221, _0x2e9f7e) { var _0x56492f; _0x2e9f7e = _0x2e9f7e || function(_0x23900e) { return 'true' === _0x23900e; } ; var _0x385b60 = _0x417221['split']('||'); for (var _0x297977 in _0x385b60) if (_0x385b60['hasOwnProperty'](_0x297977)) { var _0x3c9f87 = _0x535bcf['_SimplifyNegation'](_0x385b60[_0x297977]['trim']()) , _0x42a38b = _0x3c9f87['split']('&&'); if (_0x42a38b['length'] > 0x1) for (var _0x32f45b = 0x0; _0x32f45b < _0x42a38b['length']; ++_0x32f45b) { var _0x560783 = _0x535bcf['_SimplifyNegation'](_0x42a38b[_0x32f45b]['trim']()); if (!(_0x56492f = 'true' !== _0x560783 && 'false' !== _0x560783 ? '!' === _0x560783[0x0] ? !_0x2e9f7e(_0x560783['substring'](0x1)) : _0x2e9f7e(_0x560783) : 'true' === _0x560783)) { _0x3c9f87 = 'false'; break; } } if (_0x56492f || 'true' === _0x3c9f87) { _0x56492f = !0x0; break; } _0x56492f = 'true' !== _0x3c9f87 && 'false' !== _0x3c9f87 ? '!' === _0x3c9f87[0x0] ? !_0x2e9f7e(_0x3c9f87['substring'](0x1)) : _0x2e9f7e(_0x3c9f87) : 'true' === _0x3c9f87; } return _0x56492f ? 'true' : 'false'; } , _0x535bcf['_SimplifyNegation'] = function(_0x228b36) { return '!true' === (_0x228b36 = (_0x228b36 = _0x228b36['replace'](/^[\s!]+/, function(_0x2ed9ed) { return (_0x2ed9ed = _0x2ed9ed['replace'](/[\s]/g, function() { return ''; }))['length'] % 0x2 ? '!' : ''; }))['trim']()) ? _0x228b36 = 'false' : '!false' === _0x228b36 && (_0x228b36 = 'true'), _0x228b36; } , _0x535bcf; }(); } , function(_0x40f209, _0x269c93, _0x368fcc) { 'use strict'; _0x368fcc['d'](_0x269c93, 'a', function() { return _0x315ba9; }), _0x368fcc['d'](_0x269c93, 'b', function() { return _0x449869; }); var _0x19e783 = _0x368fcc(0x2f) , _0x315ba9 = function() { function _0x5713e8(_0x2d52a7) { void 0x0 === _0x2d52a7 && (_0x2d52a7 = 0x1e), this['_enabled'] = !0x0, this['_rollingFrameTime'] = new _0x449869(_0x2d52a7); } return _0x5713e8['prototype']['sampleFrame'] = function(_0x559c4f) { if (void 0x0 === _0x559c4f && (_0x559c4f = _0x19e783['a']['Now']), this['_enabled']) { if (null != this['_lastFrameTimeMs']) { var _0x1c701b = _0x559c4f - this['_lastFrameTimeMs']; this['_rollingFrameTime']['add'](_0x1c701b); } this['_lastFrameTimeMs'] = _0x559c4f; } } , Object['defineProperty'](_0x5713e8['prototype'], 'averageFrameTime', { 'get': function() { return this['_rollingFrameTime']['average']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5713e8['prototype'], 'averageFrameTimeVariance', { 'get': function() { return this['_rollingFrameTime']['variance']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5713e8['prototype'], 'instantaneousFrameTime', { 'get': function() { return this['_rollingFrameTime']['history'](0x0); }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5713e8['prototype'], 'averageFPS', { 'get': function() { return 0x3e8 / this['_rollingFrameTime']['average']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5713e8['prototype'], 'instantaneousFPS', { 'get': function() { var _0x2643df = this['_rollingFrameTime']['history'](0x0); return 0x0 === _0x2643df ? 0x0 : 0x3e8 / _0x2643df; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x5713e8['prototype'], 'isSaturated', { 'get': function() { return this['_rollingFrameTime']['isSaturated'](); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5713e8['prototype']['enable'] = function() { this['_enabled'] = !0x0; } , _0x5713e8['prototype']['disable'] = function() { this['_enabled'] = !0x1, this['_lastFrameTimeMs'] = null; } , Object['defineProperty'](_0x5713e8['prototype'], 'isEnabled', { 'get': function() { return this['_enabled']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x5713e8['prototype']['reset'] = function() { this['_lastFrameTimeMs'] = null, this['_rollingFrameTime']['reset'](); } , _0x5713e8; }() , _0x449869 = function() { function _0x4bea6a(_0x586248) { this['_samples'] = new Array(_0x586248), this['reset'](); } return _0x4bea6a['prototype']['add'] = function(_0x51b5dc) { var _0x45bc1e; if (this['isSaturated']()) { var _0x52106c = this['_samples'][this['_pos']]; _0x45bc1e = _0x52106c - this['average'], this['average'] -= _0x45bc1e / (this['_sampleCount'] - 0x1), this['_m2'] -= _0x45bc1e * (_0x52106c - this['average']); } else this['_sampleCount']++; _0x45bc1e = _0x51b5dc - this['average'], this['average'] += _0x45bc1e / this['_sampleCount'], this['_m2'] += _0x45bc1e * (_0x51b5dc - this['average']), this['variance'] = this['_m2'] / (this['_sampleCount'] - 0x1), this['_samples'][this['_pos']] = _0x51b5dc, this['_pos']++, this['_pos'] %= this['_samples']['length']; } , _0x4bea6a['prototype']['history'] = function(_0x3f24a3) { if (_0x3f24a3 >= this['_sampleCount'] || _0x3f24a3 >= this['_samples']['length']) return 0x0; var _0xc0bf16 = this['_wrapPosition'](this['_pos'] - 0x1); return this['_samples'][this['_wrapPosition'](_0xc0bf16 - _0x3f24a3)]; } , _0x4bea6a['prototype']['isSaturated'] = function() { return this['_sampleCount'] >= this['_samples']['length']; } , _0x4bea6a['prototype']['reset'] = function() { this['average'] = 0x0, this['variance'] = 0x0, this['_sampleCount'] = 0x0, this['_pos'] = 0x0, this['_m2'] = 0x0; } , _0x4bea6a['prototype']['_wrapPosition'] = function(_0x43dd9c) { var _0x288c71 = this['_samples']['length']; return (_0x43dd9c % _0x288c71 + _0x288c71) % _0x288c71; } , _0x4bea6a; }(); } , function(_0x5293e3, _0x35cb8f, _0x322f61) { 'use strict'; _0x322f61['d'](_0x35cb8f, 'a', function() { return _0x4f23fa; }); var _0x17a6fc, _0x1a0310 = _0x322f61(0x9); !function(_0x5d6ff2) { _0x5d6ff2[_0x5d6ff2['Pending'] = 0x0] = 'Pending', _0x5d6ff2[_0x5d6ff2['Fulfilled'] = 0x1] = 'Fulfilled', _0x5d6ff2[_0x5d6ff2['Rejected'] = 0x2] = 'Rejected'; }(_0x17a6fc || (_0x17a6fc = {})); var _0xd1d562 = function() { return function() { this['count'] = 0x0, this['target'] = 0x0, this['results'] = []; } ; }() , _0x5998bc = function() { function _0x17155b(_0x5104cb) { var _0x12b884 = this; if (this['_state'] = _0x17a6fc['Pending'], this['_children'] = new Array(), this['_rejectWasConsumed'] = !0x1, _0x5104cb) try { _0x5104cb(function(_0x2dc32a) { _0x12b884['_resolve'](_0x2dc32a); }, function(_0x50b078) { _0x12b884['_reject'](_0x50b078); }); } catch (_0x3788a9) { this['_reject'](_0x3788a9); } } return Object['defineProperty'](_0x17155b['prototype'], '_result', { 'get': function() { return this['_resultValue']; }, 'set': function(_0x56e737) { this['_resultValue'] = _0x56e737, this['_parent'] && void 0x0 === this['_parent']['_result'] && (this['_parent']['_result'] = _0x56e737); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x17155b['prototype']['catch'] = function(_0x563ced) { return this['then'](void 0x0, _0x563ced); } , _0x17155b['prototype']['then'] = function(_0x5594de, _0x55e596) { var _0x491c58 = this , _0x344afc = new _0x17155b(); return _0x344afc['_onFulfilled'] = _0x5594de, _0x344afc['_onRejected'] = _0x55e596, this['_children']['push'](_0x344afc), _0x344afc['_parent'] = this, this['_state'] !== _0x17a6fc['Pending'] && _0x1a0310['h']['SetImmediate'](function() { if (_0x491c58['_state'] === _0x17a6fc['Fulfilled'] || _0x491c58['_rejectWasConsumed']) { var _0x10890d = _0x344afc['_resolve'](_0x491c58['_result']); if (null != _0x10890d) if (void 0x0 !== _0x10890d['_state']) { var _0x378c60 = _0x10890d; _0x344afc['_children']['push'](_0x378c60), _0x378c60['_parent'] = _0x344afc, _0x344afc = _0x378c60; } else _0x344afc['_result'] = _0x10890d; } else _0x344afc['_reject'](_0x491c58['_reason']); }), _0x344afc; } , _0x17155b['prototype']['_moveChildren'] = function(_0x3764c9) { var _0x57f9e0, _0x50b045 = this; if ((_0x57f9e0 = this['_children'])['push']['apply'](_0x57f9e0, _0x3764c9['splice'](0x0, _0x3764c9['length'])), this['_children']['forEach'](function(_0x4cb730) { _0x4cb730['_parent'] = _0x50b045; }), this['_state'] === _0x17a6fc['Fulfilled']) for (var _0x5915fc = 0x0, _0x455cfb = this['_children']; _0x5915fc < _0x455cfb['length']; _0x5915fc++) { _0x455cfb[_0x5915fc]['_resolve'](this['_result']); } else if (this['_state'] === _0x17a6fc['Rejected']) for (var _0x379e26 = 0x0, _0x265c02 = this['_children']; _0x379e26 < _0x265c02['length']; _0x379e26++) { _0x265c02[_0x379e26]['_reject'](this['_reason']); } } , _0x17155b['prototype']['_resolve'] = function(_0x5f3f65) { try { this['_state'] = _0x17a6fc['Fulfilled']; var _0x36d7bf = null; if (this['_onFulfilled'] && (_0x36d7bf = this['_onFulfilled'](_0x5f3f65)), null != _0x36d7bf) if (void 0x0 !== _0x36d7bf['_state']) { var _0x409f5f = _0x36d7bf; _0x409f5f['_parent'] = this, _0x409f5f['_moveChildren'](this['_children']), _0x5f3f65 = _0x409f5f['_result']; } else _0x5f3f65 = _0x36d7bf; this['_result'] = _0x5f3f65; for (var _0x2047bf = 0x0, _0x2164c7 = this['_children']; _0x2047bf < _0x2164c7['length']; _0x2047bf++) { _0x2164c7[_0x2047bf]['_resolve'](_0x5f3f65); } this['_children']['length'] = 0x0, delete this['_onFulfilled'], delete this['_onRejected']; } catch (_0x5d5ebd) { this['_reject'](_0x5d5ebd, !0x0); } } , _0x17155b['prototype']['_reject'] = function(_0x3bfa50, _0x4530ac) { if (void 0x0 === _0x4530ac && (_0x4530ac = !0x1), this['_state'] = _0x17a6fc['Rejected'], this['_reason'] = _0x3bfa50, this['_onRejected'] && !_0x4530ac) try { this['_onRejected'](_0x3bfa50), this['_rejectWasConsumed'] = !0x0; } catch (_0x412b0a) { _0x3bfa50 = _0x412b0a; } for (var _0x53f42a = 0x0, _0x541dc3 = this['_children']; _0x53f42a < _0x541dc3['length']; _0x53f42a++) { var _0xc374a2 = _0x541dc3[_0x53f42a]; this['_rejectWasConsumed'] ? _0xc374a2['_resolve'](null) : _0xc374a2['_reject'](_0x3bfa50); } this['_children']['length'] = 0x0, delete this['_onFulfilled'], delete this['_onRejected']; } , _0x17155b['resolve'] = function(_0x637a62) { var _0x326c31 = new _0x17155b(); return _0x326c31['_resolve'](_0x637a62), _0x326c31; } , _0x17155b['_RegisterForFulfillment'] = function(_0x4e1342, _0x19fd64, _0x1ba7a3) { _0x4e1342['then'](function(_0x568d54) { return _0x19fd64['results'][_0x1ba7a3] = _0x568d54, _0x19fd64['count']++, _0x19fd64['count'] === _0x19fd64['target'] && _0x19fd64['rootPromise']['_resolve'](_0x19fd64['results']), null; }, function(_0x2955b4) { _0x19fd64['rootPromise']['_state'] !== _0x17a6fc['Rejected'] && _0x19fd64['rootPromise']['_reject'](_0x2955b4); }); } , _0x17155b['all'] = function(_0x5d1c29) { var _0x3090dc = new _0x17155b() , _0x55851b = new _0xd1d562(); if (_0x55851b['target'] = _0x5d1c29['length'], _0x55851b['rootPromise'] = _0x3090dc, _0x5d1c29['length']) for (var _0x13e8f4 = 0x0; _0x13e8f4 < _0x5d1c29['length']; _0x13e8f4++) _0x17155b['_RegisterForFulfillment'](_0x5d1c29[_0x13e8f4], _0x55851b, _0x13e8f4); else _0x3090dc['_resolve']([]); return _0x3090dc; } , _0x17155b['race'] = function(_0x49ec25) { var _0x2b5cd3 = new _0x17155b(); if (_0x49ec25['length']) for (var _0x48ace6 = 0x0, _0x565512 = _0x49ec25; _0x48ace6 < _0x565512['length']; _0x48ace6++) { _0x565512[_0x48ace6]['then'](function(_0x4649aa) { return _0x2b5cd3 && (_0x2b5cd3['_resolve'](_0x4649aa), _0x2b5cd3 = null), null; }, function(_0x2aa869) { _0x2b5cd3 && (_0x2b5cd3['_reject'](_0x2aa869), _0x2b5cd3 = null); }); } return _0x2b5cd3; } , _0x17155b; }() , _0x4f23fa = function() { function _0x45ef36() {} return _0x45ef36['Apply'] = function(_0xedf4b) { (void 0x0 === _0xedf4b && (_0xedf4b = !0x1), _0xedf4b || 'undefined' == typeof Promise) && (window['Promise'] = _0x5998bc); } , _0x45ef36; }(); } , function(_0x57167c, _0x1a9b0a, _0x4c9b8d) { 'use strict'; _0x4c9b8d['d'](_0x1a9b0a, 'a', function() { return _0xa1b9b0; }); var _0xa1b9b0 = function() { function _0x573411() {} return Object['defineProperty'](_0x573411['prototype'], 'isAsync', { 'get': function() { return this['isParallelCompiled']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x573411['prototype'], 'isReady', { 'get': function() { return !!this['program'] && (!this['isParallelCompiled'] || this['engine']['_isRenderingStateCompiled'](this)); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x573411['prototype']['_handlesSpectorRebuildCallback'] = function(_0x91f66c) { _0x91f66c && this['program'] && _0x91f66c(this['program']); } , _0x573411; }(); } , function(_0x1668f5, _0xa1f8f4, _0x31e359) { 'use strict'; _0x31e359['d'](_0xa1f8f4, 'a', function() { return _0x3855e6; }); var _0x18c7ac = _0x31e359(0x0) , _0x3855e6 = function() { return function() { this['_checkCollisions'] = !0x1, this['_collisionMask'] = -0x1, this['_collisionGroup'] = -0x1, this['_collider'] = null, this['_oldPositionForCollisions'] = new _0x18c7ac['x'](0x0,0x0,0x0), this['_diffPositionForCollisions'] = new _0x18c7ac['x'](0x0,0x0,0x0); } ; }(); } , function(_0x429710, _0x325978, _0xc2d14c) { 'use strict'; _0xc2d14c['d'](_0x325978, 'a', function() { return _0x54bbfa; }); var _0x569ad1 = _0xc2d14c(0x1c) , _0x5ec7af = _0xc2d14c(0x0) , _0x3f1a44 = _0xc2d14c(0x3) , _0x54bbfa = function() { function _0x1a0de7(_0x30f59f, _0x35f6bd, _0x39a53f, _0xd50bcc, _0x13ed72) { void 0x0 === _0x39a53f && (_0x39a53f = null), void 0x0 === _0xd50bcc && (_0xd50bcc = null), void 0x0 === _0x13ed72 && (_0x13ed72 = null), this['index'] = _0x30f59f, this['_opaqueSubMeshes'] = new _0x569ad1['a'](0x100), this['_transparentSubMeshes'] = new _0x569ad1['a'](0x100), this['_alphaTestSubMeshes'] = new _0x569ad1['a'](0x100), this['_depthOnlySubMeshes'] = new _0x569ad1['a'](0x100), this['_particleSystems'] = new _0x569ad1['a'](0x100), this['_spriteManagers'] = new _0x569ad1['a'](0x100), this['_edgesRenderers'] = new _0x569ad1['a'](0x10), this['_scene'] = _0x35f6bd, this['opaqueSortCompareFn'] = _0x39a53f, this['alphaTestSortCompareFn'] = _0xd50bcc, this['transparentSortCompareFn'] = _0x13ed72; } return Object['defineProperty'](_0x1a0de7['prototype'], 'opaqueSortCompareFn', { 'set': function(_0x3bcf13) { this['_opaqueSortCompareFn'] = _0x3bcf13, this['_renderOpaque'] = _0x3bcf13 ? this['renderOpaqueSorted'] : _0x1a0de7['renderUnsorted']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1a0de7['prototype'], 'alphaTestSortCompareFn', { 'set': function(_0x41f6da) { this['_alphaTestSortCompareFn'] = _0x41f6da, this['_renderAlphaTest'] = _0x41f6da ? this['renderAlphaTestSorted'] : _0x1a0de7['renderUnsorted']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x1a0de7['prototype'], 'transparentSortCompareFn', { 'set': function(_0x3e7563) { this['_transparentSortCompareFn'] = _0x3e7563 || _0x1a0de7['defaultTransparentSortCompare'], this['_renderTransparent'] = this['renderTransparentSorted']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x1a0de7['prototype']['render'] = function(_0x36d875, _0x20bcfe, _0x2cfba6, _0xba2f59) { if (_0x36d875) _0x36d875(this['_opaqueSubMeshes'], this['_alphaTestSubMeshes'], this['_transparentSubMeshes'], this['_depthOnlySubMeshes']); else { var _0x40a249 = this['_scene']['getEngine'](); 0x0 !== this['_depthOnlySubMeshes']['length'] && (_0x40a249['setColorWrite'](!0x1), this['_renderAlphaTest'](this['_depthOnlySubMeshes']), _0x40a249['setColorWrite'](!0x0)), 0x0 !== this['_opaqueSubMeshes']['length'] && this['_renderOpaque'](this['_opaqueSubMeshes']), 0x0 !== this['_alphaTestSubMeshes']['length'] && this['_renderAlphaTest'](this['_alphaTestSubMeshes']); var _0x313023 = _0x40a249['getStencilBuffer'](); if (_0x40a249['setStencilBuffer'](!0x1), _0x20bcfe && this['_renderSprites'](), _0x2cfba6 && this['_renderParticles'](_0xba2f59), this['onBeforeTransparentRendering'] && this['onBeforeTransparentRendering'](), 0x0 !== this['_transparentSubMeshes']['length'] && (this['_renderTransparent'](this['_transparentSubMeshes']), _0x40a249['setAlphaMode'](_0x3f1a44['a']['ALPHA_DISABLE'])), _0x40a249['setStencilBuffer'](!0x1), this['_edgesRenderers']['length']) { for (var _0x568c6d = 0x0; _0x568c6d < this['_edgesRenderers']['length']; _0x568c6d++) this['_edgesRenderers']['data'][_0x568c6d]['render'](); _0x40a249['setAlphaMode'](_0x3f1a44['a']['ALPHA_DISABLE']); } _0x40a249['setStencilBuffer'](_0x313023); } } , _0x1a0de7['prototype']['renderOpaqueSorted'] = function(_0x1d6ab1) { return _0x1a0de7['renderSorted'](_0x1d6ab1, this['_opaqueSortCompareFn'], this['_scene']['activeCamera'], !0x1); } , _0x1a0de7['prototype']['renderAlphaTestSorted'] = function(_0x41f639) { return _0x1a0de7['renderSorted'](_0x41f639, this['_alphaTestSortCompareFn'], this['_scene']['activeCamera'], !0x1); } , _0x1a0de7['prototype']['renderTransparentSorted'] = function(_0x1295be) { return _0x1a0de7['renderSorted'](_0x1295be, this['_transparentSortCompareFn'], this['_scene']['activeCamera'], !0x0); } , _0x1a0de7['renderSorted'] = function(_0x84a051, _0x13f3d7, _0x5b7195, _0x470568) { for (var _0x5ca104, _0x51996e = 0x0, _0x551cc2 = _0x5b7195 ? _0x5b7195['globalPosition'] : _0x5ec7af['x']['Zero'](); _0x51996e < _0x84a051['length']; _0x51996e++) (_0x5ca104 = _0x84a051['data'][_0x51996e])['_alphaIndex'] = _0x5ca104['getMesh']()['alphaIndex'], _0x5ca104['_distanceToCamera'] = _0x5ca104['getBoundingInfo']()['boundingSphere']['centerWorld']['subtract'](_0x551cc2)['length'](); var _0xeb3ee4 = _0x84a051['data']['slice'](0x0, _0x84a051['length']); for (_0x13f3d7 && _0xeb3ee4['sort'](_0x13f3d7), _0x51996e = 0x0; _0x51996e < _0xeb3ee4['length']; _0x51996e++) { if (_0x5ca104 = _0xeb3ee4[_0x51996e], _0x470568) { var _0x3c31ee = _0x5ca104['getMaterial'](); if (_0x3c31ee && _0x3c31ee['needDepthPrePass']) { var _0x52bb7e = _0x3c31ee['getScene']()['getEngine'](); _0x52bb7e['setColorWrite'](!0x1), _0x52bb7e['setAlphaMode'](_0x3f1a44['a']['ALPHA_DISABLE']), _0x5ca104['render'](!0x1), _0x52bb7e['setColorWrite'](!0x0); } } _0x5ca104['render'](_0x470568); } } , _0x1a0de7['renderUnsorted'] = function(_0x5eb60c) { for (var _0x173bfc = 0x0; _0x173bfc < _0x5eb60c['length']; _0x173bfc++) { _0x5eb60c['data'][_0x173bfc]['render'](!0x1); } } , _0x1a0de7['defaultTransparentSortCompare'] = function(_0x33896f, _0x41d59d) { return _0x33896f['_alphaIndex'] > _0x41d59d['_alphaIndex'] ? 0x1 : _0x33896f['_alphaIndex'] < _0x41d59d['_alphaIndex'] ? -0x1 : _0x1a0de7['backToFrontSortCompare'](_0x33896f, _0x41d59d); } , _0x1a0de7['backToFrontSortCompare'] = function(_0x1ac4cb, _0x63c822) { return _0x1ac4cb['_distanceToCamera'] < _0x63c822['_distanceToCamera'] ? 0x1 : _0x1ac4cb['_distanceToCamera'] > _0x63c822['_distanceToCamera'] ? -0x1 : 0x0; } , _0x1a0de7['frontToBackSortCompare'] = function(_0x358928, _0x46d1f4) { return _0x358928['_distanceToCamera'] < _0x46d1f4['_distanceToCamera'] ? -0x1 : _0x358928['_distanceToCamera'] > _0x46d1f4['_distanceToCamera'] ? 0x1 : 0x0; } , _0x1a0de7['prototype']['prepare'] = function() { this['_opaqueSubMeshes']['reset'](), this['_transparentSubMeshes']['reset'](), this['_alphaTestSubMeshes']['reset'](), this['_depthOnlySubMeshes']['reset'](), this['_particleSystems']['reset'](), this['_spriteManagers']['reset'](), this['_edgesRenderers']['reset'](); } , _0x1a0de7['prototype']['dispose'] = function() { this['_opaqueSubMeshes']['dispose'](), this['_transparentSubMeshes']['dispose'](), this['_alphaTestSubMeshes']['dispose'](), this['_depthOnlySubMeshes']['dispose'](), this['_particleSystems']['dispose'](), this['_spriteManagers']['dispose'](), this['_edgesRenderers']['dispose'](); } , _0x1a0de7['prototype']['dispatch'] = function(_0x4f357c, _0x1f94fe, _0x1c19ce) { void 0x0 === _0x1f94fe && (_0x1f94fe = _0x4f357c['getMesh']()), void 0x0 === _0x1c19ce && (_0x1c19ce = _0x4f357c['getMaterial']()), null != _0x1c19ce && (_0x1c19ce['needAlphaBlendingForMesh'](_0x1f94fe) ? this['_transparentSubMeshes']['push'](_0x4f357c) : _0x1c19ce['needAlphaTesting']() ? (_0x1c19ce['needDepthPrePass'] && this['_depthOnlySubMeshes']['push'](_0x4f357c), this['_alphaTestSubMeshes']['push'](_0x4f357c)) : (_0x1c19ce['needDepthPrePass'] && this['_depthOnlySubMeshes']['push'](_0x4f357c), this['_opaqueSubMeshes']['push'](_0x4f357c)), _0x1f94fe['_renderingGroup'] = this, _0x1f94fe['_edgesRenderer'] && _0x1f94fe['_edgesRenderer']['isEnabled'] && this['_edgesRenderers']['push'](_0x1f94fe['_edgesRenderer'])); } , _0x1a0de7['prototype']['dispatchSprites'] = function(_0x4ff1f1) { this['_spriteManagers']['push'](_0x4ff1f1); } , _0x1a0de7['prototype']['dispatchParticles'] = function(_0xb1e7c6) { this['_particleSystems']['push'](_0xb1e7c6); } , _0x1a0de7['prototype']['_renderParticles'] = function(_0x47774d) { if (0x0 !== this['_particleSystems']['length']) { var _0x1c714c = this['_scene']['activeCamera']; this['_scene']['onBeforeParticlesRenderingObservable']['notifyObservers'](this['_scene']); for (var _0x1139ea = 0x0; _0x1139ea < this['_particleSystems']['length']; _0x1139ea++) { var _0x2a2c66 = this['_particleSystems']['data'][_0x1139ea]; if (0x0 !== (_0x1c714c && _0x1c714c['layerMask'] & _0x2a2c66['layerMask'])) { var _0x5196c6 = _0x2a2c66['emitter']; _0x5196c6['position'] && _0x47774d && -0x1 === _0x47774d['indexOf'](_0x5196c6) || this['_scene']['_activeParticles']['addCount'](_0x2a2c66['render'](), !0x1); } } this['_scene']['onAfterParticlesRenderingObservable']['notifyObservers'](this['_scene']); } } , _0x1a0de7['prototype']['_renderSprites'] = function() { if (this['_scene']['spritesEnabled'] && 0x0 !== this['_spriteManagers']['length']) { var _0x1d74f9 = this['_scene']['activeCamera']; this['_scene']['onBeforeSpritesRenderingObservable']['notifyObservers'](this['_scene']); for (var _0x426c19 = 0x0; _0x426c19 < this['_spriteManagers']['length']; _0x426c19++) { var _0x54d9cd = this['_spriteManagers']['data'][_0x426c19]; 0x0 !== (_0x1d74f9 && _0x1d74f9['layerMask'] & _0x54d9cd['layerMask']) && _0x54d9cd['render'](); } this['_scene']['onAfterSpritesRenderingObservable']['notifyObservers'](this['_scene']); } } , _0x1a0de7; }(); } , function(_0x15c3c8, _0xeed728, _0x473839) { 'use strict'; _0x473839['d'](_0xeed728, 'a', function() { return _0x11fa03; }); var _0x11fa03 = function() { return function(_0x25ef93, _0x3ffc38) { this['distance'] = _0x25ef93, this['mesh'] = _0x3ffc38; } ; }(); } , function(_0x2dc162, _0x558067, _0x263934) { 'use strict'; _0x263934['d'](_0x558067, 'a', function() { return _0x5bf5e4; }); var _0x3c4309 = _0x263934(0x1) , _0x457aca = _0x263934(0x0) , _0x546c4b = _0x263934(0x6) , _0x43dcdb = _0x263934(0x18) , _0x23197c = _0x263934(0xb) , _0x2e4c8f = _0x263934(0x20) , _0x47bc00 = _0x263934(0x2a); _0x23197c['a']['_instancedMeshFactory'] = function(_0x285a83, _0x4df78a) { return new _0x5bf5e4(_0x285a83,_0x4df78a); } ; var _0x5bf5e4 = function(_0x4e0517) { function _0x344227(_0x38c4fb, _0x2d0f5f) { var _0x3222e2 = _0x4e0517['call'](this, _0x38c4fb, _0x2d0f5f['getScene']()) || this; return _0x3222e2['_indexInSourceMeshInstanceArray'] = -0x1, _0x2d0f5f['addInstance'](_0x3222e2), _0x3222e2['_sourceMesh'] = _0x2d0f5f, _0x3222e2['position']['copyFrom'](_0x2d0f5f['position']), _0x3222e2['rotation']['copyFrom'](_0x2d0f5f['rotation']), _0x3222e2['scaling']['copyFrom'](_0x2d0f5f['scaling']), _0x2d0f5f['rotationQuaternion'] && (_0x3222e2['rotationQuaternion'] = _0x2d0f5f['rotationQuaternion']['clone']()), _0x3222e2['infiniteDistance'] = _0x2d0f5f['infiniteDistance'], _0x3222e2['setPivotMatrix'](_0x2d0f5f['getPivotMatrix']()), _0x3222e2['refreshBoundingInfo'](), _0x3222e2['_syncSubMeshes'](), _0x3222e2; } return _0x3c4309['d'](_0x344227, _0x4e0517), _0x344227['prototype']['getClassName'] = function() { return 'InstancedMesh'; } , Object['defineProperty'](_0x344227['prototype'], 'lightSources', { 'get': function() { return this['_sourceMesh']['_lightSources']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x344227['prototype']['_resyncLightSources'] = function() {} , _0x344227['prototype']['_resyncLighSource'] = function(_0x28be86) {} , _0x344227['prototype']['_removeLightSource'] = function(_0x733efc) {} , Object['defineProperty'](_0x344227['prototype'], 'receiveShadows', { 'get': function() { return this['_sourceMesh']['receiveShadows']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x344227['prototype'], 'material', { 'get': function() { return this['_sourceMesh']['material']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x344227['prototype'], 'visibility', { 'get': function() { return this['_sourceMesh']['visibility']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x344227['prototype'], 'skeleton', { 'get': function() { return this['_sourceMesh']['skeleton']; }, 'enumerable': !0x0, 'configurable': !0x0 }), Object['defineProperty'](_0x344227['prototype'], 'renderingGroupId', { 'get': function() { return this['_sourceMesh']['renderingGroupId']; }, 'set': function(_0x2061e6) { this['_sourceMesh'] && _0x2061e6 !== this['_sourceMesh']['renderingGroupId'] && _0x546c4b['a']['Warn']('Note\x20-\x20setting\x20renderingGroupId\x20of\x20an\x20instanced\x20mesh\x20has\x20no\x20effect\x20on\x20the\x20scene'); }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x344227['prototype']['getTotalVertices'] = function() { return this['_sourceMesh']['getTotalVertices'](); } , _0x344227['prototype']['getTotalIndices'] = function() { return this['_sourceMesh']['getTotalIndices'](); } , Object['defineProperty'](_0x344227['prototype'], 'sourceMesh', { 'get': function() { return this['_sourceMesh']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x344227['prototype']['isReady'] = function(_0x5b32fb) { return void 0x0 === _0x5b32fb && (_0x5b32fb = !0x1), this['_sourceMesh']['isReady'](_0x5b32fb, !0x0); } , _0x344227['prototype']['getVerticesData'] = function(_0x46c4c8, _0x3f070a) { return this['_sourceMesh']['getVerticesData'](_0x46c4c8, _0x3f070a); } , _0x344227['prototype']['setVerticesData'] = function(_0x30823b, _0x17bd9a, _0x59b228, _0x1f04ac) { return this['sourceMesh'] && this['sourceMesh']['setVerticesData'](_0x30823b, _0x17bd9a, _0x59b228, _0x1f04ac), this['sourceMesh']; } , _0x344227['prototype']['updateVerticesData'] = function(_0x2803be, _0x279cca, _0xc41bd0, _0x20cd4a) { return this['sourceMesh'] && this['sourceMesh']['updateVerticesData'](_0x2803be, _0x279cca, _0xc41bd0, _0x20cd4a), this['sourceMesh']; } , _0x344227['prototype']['setIndices'] = function(_0x5ab457, _0x581ff0) { return void 0x0 === _0x581ff0 && (_0x581ff0 = null), this['sourceMesh'] && this['sourceMesh']['setIndices'](_0x5ab457, _0x581ff0), this['sourceMesh']; } , _0x344227['prototype']['isVerticesDataPresent'] = function(_0x159dc8) { return this['_sourceMesh']['isVerticesDataPresent'](_0x159dc8); } , _0x344227['prototype']['getIndices'] = function() { return this['_sourceMesh']['getIndices'](); } , Object['defineProperty'](_0x344227['prototype'], '_positions', { 'get': function() { return this['_sourceMesh']['_positions']; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x344227['prototype']['refreshBoundingInfo'] = function(_0x2e83ad) { if (void 0x0 === _0x2e83ad && (_0x2e83ad = !0x1), this['_boundingInfo'] && this['_boundingInfo']['isLocked']) return this; var _0x2c8e90 = this['_sourceMesh']['geometry'] ? this['_sourceMesh']['geometry']['boundingBias'] : null; return this['_refreshBoundingInfo'](this['_sourceMesh']['_getPositionData'](_0x2e83ad), _0x2c8e90), this; } , _0x344227['prototype']['_preActivate'] = function() { return this['_currentLOD'] && this['_currentLOD']['_preActivate'](), this; } , _0x344227['prototype']['_activate'] = function(_0x29963d, _0x23b531) { if (this['_currentLOD'] && this['_currentLOD']['_registerInstanceForRenderId'](this, _0x29963d), _0x23b531) { if (!this['_currentLOD']['_internalAbstractMeshDataInfo']['_isActiveIntermediate']) return this['_currentLOD']['_internalAbstractMeshDataInfo']['_onlyForInstancesIntermediate'] = !0x0, !0x0; } else if (!this['_currentLOD']['_internalAbstractMeshDataInfo']['_isActive']) return this['_currentLOD']['_internalAbstractMeshDataInfo']['_onlyForInstances'] = !0x0, !0x0; return !0x1; } , _0x344227['prototype']['_postActivate'] = function() { this['_edgesRenderer'] && this['_edgesRenderer']['isEnabled'] && this['_sourceMesh']['_renderingGroup'] && this['_sourceMesh']['_renderingGroup']['_edgesRenderers']['push'](this['_edgesRenderer']); } , _0x344227['prototype']['getWorldMatrix'] = function() { if (this['_currentLOD'] && this['_currentLOD']['billboardMode'] !== _0x47bc00['a']['BILLBOARDMODE_NONE'] && this['_currentLOD']['_masterMesh'] !== this) { var _0x28d789 = this['_currentLOD']['_masterMesh']; return this['_currentLOD']['_masterMesh'] = this, _0x457aca['t']['Matrix'][0x0]['copyFrom'](this['_currentLOD']['computeWorldMatrix'](!0x0)), this['_currentLOD']['_masterMesh'] = _0x28d789, _0x457aca['t']['Matrix'][0x0]; } return _0x4e0517['prototype']['getWorldMatrix']['call'](this); } , Object['defineProperty'](_0x344227['prototype'], 'isAnInstance', { 'get': function() { return !0x0; }, 'enumerable': !0x0, 'configurable': !0x0 }), _0x344227['prototype']['getLOD'] = function(_0x1e4d6b) { if (!_0x1e4d6b) return this; var _0x50841f = this['getBoundingInfo'](); return this['_currentLOD'] = this['sourceMesh']['getLOD'](_0x1e4d6b, _0x50841f['boundingSphere']), this['_currentLOD'] === this['sourceMesh'] ? this['sourceMesh'] : this['_currentLOD']; } , _0x344227['prototype']['_syncSubMeshes'] = function() { if (this['releaseSubMeshes'](), this['_sourceMesh']['subMeshes']) for (var _0x57c8ec = 0x0; _0x57c8ec < this['_sourceMesh']['subMeshes']['length']; _0x57c8ec++) this['_sourceMesh']['subMeshes'][_0x57c8ec]['clone'](this, this['_sourceMesh']); return this; } , _0x344227['prototype']['_generatePointsArray'] = function() { return this['_sourceMesh']['_generatePointsArray'](); } , _0x344227['prototype']['clone'] = function(_0x46e397, _0x2a4ae7, _0x3d15a0) { var _0x131cbd = this['_sourceMesh']['createInstance'](_0x46e397); if (_0x2e4c8f['a']['DeepCopy'](this, _0x131cbd, ['name', 'subMeshes', 'uniqueId'], []), this['refreshBoundingInfo'](), _0x2a4ae7 && (_0x131cbd['parent'] = _0x2a4ae7), !_0x3d15a0) for (var _0x7741fc = 0x0; _0x7741fc < this['getScene']()['meshes']['length']; _0x7741fc++) { var _0x3cba7b = this['getScene']()['meshes'][_0x7741fc]; _0x3cba7b['parent'] === this && _0x3cba7b['clone'](_0x3cba7b['name'], _0x131cbd); } return _0x131cbd['computeWorldMatrix'](!0x0), _0x131cbd; } , _0x344227['prototype']['dispose'] = function(_0x5b0e5b, _0x3cc84b) { void 0x0 === _0x3cc84b && (_0x3cc84b = !0x1), this['_sourceMesh']['removeInstance'](this), _0x4e0517['prototype']['dispose']['call'](this, _0x5b0e5b, _0x3cc84b); } , _0x344227; }(_0x43dcdb['a']); } , function(_0x376dcd, _0x1d035e, _0x4e9c72) { 'use strict'; var _0x2e81ae = 'shadowsFragmentFunctions' , _0xc5e200 = '#ifdef\x20SHADOWS\x0a#ifndef\x20SHADOWFLOAT\x0afloat\x20unpack(vec4\x20color)\x0a{\x0aconst\x20vec4\x20bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);\x0areturn\x20dot(color,bit_shift);\x0a}\x0a#endif\x0afloat\x20computeFallOff(float\x20value,vec2\x20clipSpace,float\x20frustumEdgeFalloff)\x0a{\x0afloat\x20mask=smoothstep(1.0-frustumEdgeFalloff,1.0,clamp(dot(clipSpace,clipSpace),0.,1.));\x0areturn\x20mix(value,1.0,mask);\x0a}\x0afloat\x20computeShadowCube(vec3\x20lightPosition,samplerCube\x20shadowSampler,float\x20darkness,vec2\x20depthValues)\x0a{\x0avec3\x20directionToLight=vPositionW-lightPosition;\x0afloat\x20depth=length(directionToLight);\x0adepth=(depth+depthValues.x)/(depthValues.y);\x0adepth=clamp(depth,0.,1.0);\x0adirectionToLight=normalize(directionToLight);\x0adirectionToLight.y=-directionToLight.y;\x0a#ifndef\x20SHADOWFLOAT\x0afloat\x20shadow=unpack(textureCube(shadowSampler,directionToLight));\x0a#else\x0afloat\x20shadow=textureCube(shadowSampler,directionToLight).x;\x0a#endif\x0aif\x20(depth>shadow)\x0a{\x0areturn\x20darkness;\x0a}\x0areturn\x201.0;\x0a}\x0afloat\x20computeShadowWithPoissonSamplingCube(vec3\x20lightPosition,samplerCube\x20shadowSampler,float\x20mapSize,float\x20darkness,vec2\x20depthValues)\x0a{\x0avec3\x20directionToLight=vPositionW-lightPosition;\x0afloat\x20depth=length(directionToLight);\x0adepth=(depth+depthValues.x)/(depthValues.y);\x0adepth=clamp(depth,0.,1.0);\x0adirectionToLight=normalize(directionToLight);\x0adirectionToLight.y=-directionToLight.y;\x0afloat\x20visibility=1.;\x0avec3\x20poissonDisk[4];\x0apoissonDisk[0]=vec3(-1.0,1.0,-1.0);\x0apoissonDisk[1]=vec3(1.0,-1.0,-1.0);\x0apoissonDisk[2]=vec3(-1.0,-1.0,-1.0);\x0apoissonDisk[3]=vec3(1.0,-1.0,1.0);\x0a\x0a#ifndef\x20SHADOWFLOAT\x0aif\x20(unpack(textureCube(shadowSampler,directionToLight+poissonDisk[0]*mapSize))1.0\x20||\x20uv.y<0.\x20||\x20uv.y>1.0)\x0a{\x0areturn\x201.0;\x0a}\x0afloat\x20shadowPixelDepth=clamp(depthMetric,0.,1.0);\x0a#ifndef\x20SHADOWFLOAT\x0afloat\x20shadow=unpack(texture2D(shadowSampler,uv));\x0a#else\x0afloat\x20shadow=texture2D(shadowSampler,uv).x;\x0a#endif\x0aif\x20(shadowPixelDepth>shadow)\x0a{\x0areturn\x20computeFallOff(darkness,clipSpace.xy,frustumEdgeFalloff);\x0a}\x0areturn\x201.;\x0a}\x0afloat\x20computeShadowWithPoissonSampling(vec4\x20vPositionFromLight,float\x20depthMetric,sampler2D\x20shadowSampler,float\x20mapSize,float\x20darkness,float\x20frustumEdgeFalloff)\x0a{\x0avec3\x20clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;\x0avec2\x20uv=0.5*clipSpace.xy+vec2(0.5);\x0aif\x20(uv.x<0.\x20||\x20uv.x>1.0\x20||\x20uv.y<0.\x20||\x20uv.y>1.0)\x0a{\x0areturn\x201.0;\x0a}\x0afloat\x20shadowPixelDepth=clamp(depthMetric,0.,1.0);\x0afloat\x20visibility=1.;\x0avec2\x20poissonDisk[4];\x0apoissonDisk[0]=vec2(-0.94201624,-0.39906216);\x0apoissonDisk[1]=vec2(0.94558609,-0.76890725);\x0apoissonDisk[2]=vec2(-0.094184101,-0.92938870);\x0apoissonDisk[3]=vec2(0.34495938,0.29387760);\x0a\x0a#ifndef\x20SHADOWFLOAT\x0aif\x20(unpack(texture2D(shadowSampler,uv+poissonDisk[0]*mapSize))1.0\x20||\x20uv.y<0.\x20||\x20uv.y>1.0)\x0a{\x0areturn\x201.0;\x0a}\x0afloat\x20shadowPixelDepth=clamp(depthMetric,0.,1.0);\x0a#ifndef\x20SHADOWFLOAT\x0afloat\x20shadowMapSample=unpack(texture2D(shadowSampler,uv));\x0a#else\x0afloat\x20shadowMapSample=texture2D(shadowSampler,uv).x;\x0a#endif\x0afloat\x20esm=1.0-clamp(exp(min(87.,depthScale*shadowPixelDepth))*shadowMapSample,0.,1.-darkness);\x0areturn\x20computeFallOff(esm,clipSpace.xy,frustumEdgeFalloff);\x0a}\x0afloat\x20computeShadowWithCloseESM(vec4\x20vPositionFromLight,float\x20depthMetric,sampler2D\x20shadowSampler,float\x20darkness,float\x20depthScale,float\x20frustumEdgeFalloff)\x0a{\x0avec3\x20clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;\x0avec2\x20uv=0.5*clipSpace.xy+vec2(0.5);\x0aif\x20(uv.x<0.\x20||\x20uv.x>1.0\x20||\x20uv.y<0.\x20||\x20uv.y>1.0)\x0a{\x0areturn\x201.0;\x0a}\x0afloat\x20shadowPixelDepth=clamp(depthMetric,0.,1.0);\x0a#ifndef\x20SHADOWFLOAT\x0afloat\x20shadowMapSample=unpack(texture2D(shadowSampler,uv));\x0a#else\x0afloat\x20shadowMapSample=texture2D(shadowSampler,uv).x;\x0a#endif\x0afloat\x20esm=clamp(exp(min(87.,-depthScale*(shadowPixelDepth-shadowMapSample))),darkness,1.);\x0areturn\x20computeFallOff(esm,clipSpace.xy,frustumEdgeFalloff);\x0a}\x0a#ifdef\x20WEBGL2\x0a\x0afloat\x20computeShadowWithPCF1(vec4\x20vPositionFromLight,float\x20depthMetric,sampler2DShadow\x20shadowSampler,float\x20darkness,float\x20frustumEdgeFalloff)\x0a{\x0aif\x20(depthMetric>1.0\x20||\x20depthMetric<0.0)\x20{\x0areturn\x201.0;\x0a}\x0avec3\x20clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;\x0avec3\x20uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));\x0afloat\x20shadow=texture2D(shadowSampler,uvDepth);\x0ashadow=mix(darkness,1.,shadow);\x0areturn\x20computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);\x0a}\x0a\x0a\x0a\x0afloat\x20computeShadowWithPCF3(vec4\x20vPositionFromLight,float\x20depthMetric,sampler2DShadow\x20shadowSampler,vec2\x20shadowMapSizeAndInverse,float\x20darkness,float\x20frustumEdgeFalloff)\x0a{\x0aif\x20(depthMetric>1.0\x20||\x20depthMetric<0.0)\x20{\x0areturn\x201.0;\x0a}\x0avec3\x20clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;\x0avec3\x20uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));\x0avec2\x20uv=uvDepth.xy*shadowMapSizeAndInverse.x;\x0auv+=0.5;\x0avec2\x20st=fract(uv);\x0avec2\x20base_uv=floor(uv)-0.5;\x0abase_uv*=shadowMapSizeAndInverse.y;\x0a\x0a\x0a\x0a\x0avec2\x20uvw0=3.-2.*st;\x0avec2\x20uvw1=1.+2.*st;\x0avec2\x20u=vec2((2.-st.x)/uvw0.x-1.,st.x/uvw1.x+1.)*shadowMapSizeAndInverse.y;\x0avec2\x20v=vec2((2.-st.y)/uvw0.y-1.,st.y/uvw1.y+1.)*shadowMapSizeAndInverse.y;\x0afloat\x20shadow=0.;\x0ashadow+=uvw0.x*uvw0.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[0]),uvDepth.z));\x0ashadow+=uvw1.x*uvw0.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[0]),uvDepth.z));\x0ashadow+=uvw0.x*uvw1.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[1]),uvDepth.z));\x0ashadow+=uvw1.x*uvw1.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[1]),uvDepth.z));\x0ashadow=shadow/16.;\x0ashadow=mix(darkness,1.,shadow);\x0areturn\x20computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);\x0a}\x0a\x0a\x0a\x0afloat\x20computeShadowWithPCF5(vec4\x20vPositionFromLight,float\x20depthMetric,sampler2DShadow\x20shadowSampler,vec2\x20shadowMapSizeAndInverse,float\x20darkness,float\x20frustumEdgeFalloff)\x0a{\x0aif\x20(depthMetric>1.0\x20||\x20depthMetric<0.0)\x20{\x0areturn\x201.0;\x0a}\x0avec3\x20clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;\x0avec3\x20uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));\x0avec2\x20uv=uvDepth.xy*shadowMapSizeAndInverse.x;\x0auv+=0.5;\x0avec2\x20st=fract(uv);\x0avec2\x20base_uv=floor(uv)-0.5;\x0abase_uv*=shadowMapSizeAndInverse.y;\x0a\x0a\x0avec2\x20uvw0=4.-3.*st;\x0avec2\x20uvw1=vec2(7.);\x0avec2\x20uvw2=1.+3.*st;\x0avec3\x20u=vec3((3.-2.*st.x)/uvw0.x-2.,(3.+st.x)/uvw1.x,st.x/uvw2.x+2.)*shadowMapSizeAndInverse.y;\x0avec3\x20v=vec3((3.-2.*st.y)/uvw0.y-2.,(3.+st.y)/uvw1.y,st.y/uvw2.y+2.)*shadowMapSizeAndInverse.y;\x0afloat\x20shadow=0.;\x0ashadow+=uvw0.x*uvw0.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[0]),uvDepth.z));\x0ashadow+=uvw1.x*uvw0.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[0]),uvDepth.z));\x0ashadow+=uvw2.x*uvw0.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[2],v[0]),uvDepth.z));\x0ashadow+=uvw0.x*uvw1.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[1]),uvDepth.z));\x0ashadow+=uvw1.x*uvw1.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[1]),uvDepth.z));\x0ashadow+=uvw2.x*uvw1.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[2],v[1]),uvDepth.z));\x0ashadow+=uvw0.x*uvw2.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[2]),uvDepth.z));\x0ashadow+=uvw1.x*uvw2.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[2]),uvDepth.z));\x0ashadow+=uvw2.x*uvw2.y*texture2D(shadowSampler,vec3(base_uv.xy+vec2(u[2],v[2]),uvDepth.z));\x0ashadow=shadow/144.;\x0ashadow=mix(darkness,1.,shadow);\x0areturn\x20computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);\x0a}\x0aconst\x20vec3\x20PoissonSamplers32[64]=vec3[64](\x0avec3(0.06407013,0.05409927,0.),\x0avec3(0.7366577,0.5789394,0.),\x0avec3(-0.6270542,-0.5320278,0.),\x0avec3(-0.4096107,0.8411095,0.),\x0avec3(0.6849564,-0.4990818,0.),\x0avec3(-0.874181,-0.04579735,0.),\x0avec3(0.9989998,0.0009880066,0.),\x0avec3(-0.004920578,-0.9151649,0.),\x0avec3(0.1805763,0.9747483,0.),\x0avec3(-0.2138451,0.2635818,0.),\x0avec3(0.109845,0.3884785,0.),\x0avec3(0.06876755,-0.3581074,0.),\x0avec3(0.374073,-0.7661266,0.),\x0avec3(0.3079132,-0.1216763,0.),\x0avec3(-0.3794335,-0.8271583,0.),\x0avec3(-0.203878,-0.07715034,0.),\x0avec3(0.5912697,0.1469799,0.),\x0avec3(-0.88069,0.3031784,0.),\x0avec3(0.5040108,0.8283722,0.),\x0avec3(-0.5844124,0.5494877,0.),\x0avec3(0.6017799,-0.1726654,0.),\x0avec3(-0.5554981,0.1559997,0.),\x0avec3(-0.3016369,-0.3900928,0.),\x0avec3(-0.5550632,-0.1723762,0.),\x0avec3(0.925029,0.2995041,0.),\x0avec3(-0.2473137,0.5538505,0.),\x0avec3(0.9183037,-0.2862392,0.),\x0avec3(0.2469421,0.6718712,0.),\x0avec3(0.3916397,-0.4328209,0.),\x0avec3(-0.03576927,-0.6220032,0.),\x0avec3(-0.04661255,0.7995201,0.),\x0avec3(0.4402924,0.3640312,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.),\x0avec3(0.,0.,0.)\x0a);\x0aconst\x20vec3\x20PoissonSamplers64[64]=vec3[64](\x0avec3(-0.613392,0.617481,0.),\x0avec3(0.170019,-0.040254,0.),\x0avec3(-0.299417,0.791925,0.),\x0avec3(0.645680,0.493210,0.),\x0avec3(-0.651784,0.717887,0.),\x0avec3(0.421003,0.027070,0.),\x0avec3(-0.817194,-0.271096,0.),\x0avec3(-0.705374,-0.668203,0.),\x0avec3(0.977050,-0.108615,0.),\x0avec3(0.063326,0.142369,0.),\x0avec3(0.203528,0.214331,0.),\x0avec3(-0.667531,0.326090,0.),\x0avec3(-0.098422,-0.295755,0.),\x0avec3(-0.885922,0.215369,0.),\x0avec3(0.566637,0.605213,0.),\x0avec3(0.039766,-0.396100,0.),\x0avec3(0.751946,0.453352,0.),\x0avec3(0.078707,-0.715323,0.),\x0avec3(-0.075838,-0.529344,0.),\x0avec3(0.724479,-0.580798,0.),\x0avec3(0.222999,-0.215125,0.),\x0avec3(-0.467574,-0.405438,0.),\x0avec3(-0.248268,-0.814753,0.),\x0avec3(0.354411,-0.887570,0.),\x0avec3(0.175817,0.382366,0.),\x0avec3(0.487472,-0.063082,0.),\x0avec3(-0.084078,0.898312,0.),\x0avec3(0.488876,-0.783441,0.),\x0avec3(0.470016,0.217933,0.),\x0avec3(-0.696890,-0.549791,0.),\x0avec3(-0.149693,0.605762,0.),\x0avec3(0.034211,0.979980,0.),\x0avec3(0.503098,-0.308878,0.),\x0avec3(-0.016205,-0.872921,0.),\x0avec3(0.385784,-0.393902,0.),\x0avec3(-0.146886,-0.859249,0.),\x0avec3(0.643361,0.164098,0.),\x0avec3(0.634388,-0.049471,0.),\x0avec3(-0.688894,0.007843,0.),\x0avec3(0.464034,-0.188818,0.),\x0avec3(-0.440840,0.137486,0.),\x0avec3(0.364483,0.511704,0.),\x0avec3(0.034028,0.325968,0.),\x0avec3(0.099094,-0.308023,0.),\x0avec3(0.693960,-0.366253,0.),\x0avec3(0.678884,-0.204688,0.),\x0avec3(0.001801,0.780328,0.),\x0avec3(0.145177,-0.898984,0.),\x0avec3(0.062655,-0.611866,0.),\x0avec3(0.315226,-0.604297,0.),\x0avec3(-0.780145,0.486251,0.),\x0avec3(-0.371868,0.882138,0.),\x0avec3(0.200476,0.494430,0.),\x0avec3(-0.494552,-0.711051,0.),\x0avec3(0.612476,0.705252,0.),\x0avec3(-0.578845,-0.768792,0.),\x0avec3(-0.772454,-0.090976,0.),\x0avec3(0.504440,0.372295,0.),\x0avec3(0.155736,0.065157,0.),\x0avec3(0.391522,0.849605,0.),\x0avec3(-0.620106,-0.328104,0.),\x0avec3(0.789239,-0.419965,0.),\x0avec3(-0.545396,0.538133,0.),\x0avec3(-0.178564,-0.596057,0.)\x0a);\x0a\x0a\x0a\x0a\x0a\x0afloat\x20computeShadowWithPCSS(vec4\x20vPositionFromLight,float\x20depthMetric,sampler2D\x20depthSampler,sampler2DShadow\x20shadowSampler,float\x20shadowMapSizeInverse,float\x20lightSizeUV,float\x20darkness,float\x20frustumEdgeFalloff,int\x20searchTapCount,int\x20pcfTapCount,vec3[64]\x20poissonSamplers)\x0a{\x0aif\x20(depthMetric>1.0\x20||\x20depthMetric<0.0)\x20{\x0areturn\x201.0;\x0a}\x0avec3\x20clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;\x0avec3\x20uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));\x0afloat\x20blockerDepth=0.0;\x0afloat\x20sumBlockerDepth=0.0;\x0afloat\x20numBlocker=0.0;\x0afor\x20(int\x20i=0;\x20i _0x4328df && (clearInterval(_0x439972), MobileAdInGamePreroll['boxContents']['close']['css']('left', MobileAdInGamePreroll['boxContents']['body']['width']() - 0x17), MobileAdInGamePreroll['boxContents']['close']['show'](), MobileAdInGamePreroll['boxContents']['header']['html'](MobileAdInGamePreroll['close']), MobileAdInGamePreroll['boxContents']['footer']['text']('')); }, 0x3e8); }, 'Close': function() { this['boxContents']['close']['hide'](); this['overlay']['hide'](); } }; var MobileAdInGameHeader = { 'ad_duration': _SETTINGS['Ad']['Mobile']['Header']['Duration'], 'ad_width': _SETTINGS['Ad']['Mobile']['Header']['Width'], 'ad_height': _SETTINGS['Ad']['Mobile']['Header']['Height'], 'Initialize': function() { if (_SETTINGS['Ad']['Mobile']['Header']['Rotation']['Enabled']) { var _0x176893 = _SETTINGS['Ad']['Mobile']['Header']['Rotation']['Weight'] , _0x3c79e7 = _0x176893['MobileAdInGameHeader'] , _0x55d1d4 = _0x3c79e7 + _0x176893['MobileAdInGameHeader2'] , _0x176893 = _0x55d1d4 + _0x176893['MobileAdInGameHeader3'] , _0x47d778 = Math['floor'](0x64 * Math['random']()); console['log']('seed:\x20', _0x47d778); _0x47d778 <= _0x3c79e7 ? this['selectedOverlayName'] = 'MobileAdInGameHeader' : _0x47d778 <= _0x55d1d4 ? this['selectedOverlayName'] = 'MobileAdInGameHeader2' : _0x47d778 <= _0x176893 && (this['selectedOverlayName'] = 'MobileAdInGameHeader3'); console['log']('Ad\x20rotating\x20header\x20enabled'); } else this['selectedOverlayName'] = 'MobileAdInGameHeader', console['log']('Ad\x20rotating\x20header\x20disabled'); this['div'] = $('#' + this['selectedOverlayName']); this['game'] = $('#game'); this['div']['width'](this['ad_width']); this['div']['height'](this['ad_height']); this['div']['css']('left', this['game']['position']()['left'] + (this['game']['width']() - this['div']['width']()) / 0x2); this['div']['css']('top', 0x0); this['div']['show'](this['Timer'](this['ad_duration'])); }, 'Timer': function(_0x38b90e) { var _0x218f8b = setInterval(function() { _0x38b90e--; 0x0 > _0x38b90e && (MobileAdInGameHeader['div']['hide'](), clearInterval(_0x218f8b)); }, 0x3e8); } }; var MobileAdInGameFooter = { 'ad_duration': _SETTINGS['Ad']['Mobile']['Footer']['Duration'], 'ad_width': _SETTINGS['Ad']['Mobile']['Footer']['Width'], 'ad_height': _SETTINGS['Ad']['Mobile']['Footer']['Height'], 'Initialize': function() { if (_SETTINGS['Ad']['Mobile']['Footer']['Rotation']['Enabled']) { var _0x1ee505 = _SETTINGS['Ad']['Mobile']['Footer']['Rotation']['Weight'] , _0x53a873 = _0x1ee505['MobileAdInGameFooter'] , _0x427ed5 = _0x53a873 + _0x1ee505['MobileAdInGameFooter2'] , _0x1ee505 = _0x427ed5 + _0x1ee505['MobileAdInGameFooter3'] , _0x1a5662 = Math['floor'](0x64 * Math['random']()); console['log']('seed:\x20', _0x1a5662); _0x1a5662 <= _0x53a873 ? this['selectedOverlayName'] = 'MobileAdInGameFooter' : _0x1a5662 <= _0x427ed5 ? this['selectedOverlayName'] = 'MobileAdInGameFooter2' : _0x1a5662 <= _0x1ee505 && (this['selectedOverlayName'] = 'MobileAdInGameFooter3'); console['log']('Ad\x20rotating\x20footer\x20enabled'); } else this['selectedOverlayName'] = 'MobileAdInGameFooter', console['log']('Ad\x20rotating\x20footer\x20disabled'); this['div'] = $('#' + this['selectedOverlayName']); this['game'] = $('#game'); this['div']['width'](this['ad_width']); this['div']['height'](this['ad_height']); this['div']['css']('left', this['game']['position']()['left'] + (this['game']['width']() - this['div']['width']()) / 0x2); this['div']['css']('top', this['game']['height']() - this['div']['height']() - 0x5); this['div']['show'](this['Timer'](this['ad_duration'])); }, 'Timer': function(_0x87ee2f) { var _0x4fb192 = setInterval(function() { _0x87ee2f--; 0x0 > _0x87ee2f && (MobileAdInGameFooter['div']['hide'](), clearInterval(_0x4fb192)); }, 0x3e8); } }; var MobileAdInGameEnd = { 'ad_duration': _SETTINGS['Ad']['Mobile']['End']['Duration'], 'ad_width': _SETTINGS['Ad']['Mobile']['End']['Width'], 'ad_height': _SETTINGS['Ad']['Mobile']['End']['Height'], 'ready_in': _STRINGS['Ad']['Mobile']['End']['ReadyIn'], 'loading': _STRINGS['Ad']['Mobile']['End']['Loading'], 'close': _STRINGS['Ad']['Mobile']['End']['Close'] + '          ', 'Initialize': function() { if (_SETTINGS['Ad']['Mobile']['End']['Rotation']['Enabled']) { var _0x57131a = _SETTINGS['Ad']['Mobile']['End']['Rotation']['Weight'] , _0x4a6161 = _0x57131a['MobileAdInGameEnd'] , _0x5934dc = _0x4a6161 + _0x57131a['MobileAdInGameEnd2'] , _0x57131a = _0x5934dc + _0x57131a['MobileAdInGameEnd3'] , _0x248819 = Math['floor'](0x64 * Math['random']()); console['log']('seed:\x20', _0x248819); _0x248819 <= _0x4a6161 ? this['selectedOverlayName'] = 'MobileAdInGameEnd' : _0x248819 <= _0x5934dc ? this['selectedOverlayName'] = 'MobileAdInGameEnd2' : _0x248819 <= _0x57131a && (this['selectedOverlayName'] = 'MobileAdInGameEnd3'); console['log']('Ad\x20rotating\x20end\x20enabled'); } else this['selectedOverlayName'] = 'MobileAdInGameEnd', console['log']('Ad\x20rotating\x20end\x20disabled'); console['log']('selected:', this['selectedOverlayName']); this['overlay'] = $('#' + this['selectedOverlayName']); this['box'] = $('#' + this['selectedOverlayName'] + '-Box'); this['game'] = $('#game'); this['boxContents'] = { 'footer': $('#' + this['selectedOverlayName'] + '-Box-Footer'), 'header': $('#' + this['selectedOverlayName'] + '-Box-Header'), 'close': $('#' + this['selectedOverlayName'] + '-Box-Close'), 'body': $('#' + this['selectedOverlayName'] + '-Box-Body') }; this['box']['width'](this['ad_width']); this['box']['height'](this['ad_height']); this['box']['css']('left', (this['overlay']['width']() - this['box']['width']()) / 0x2); this['box']['css']('top', (this['overlay']['height']() - this['box']['height']() - this['boxContents']['header']['height']() - this['boxContents']['footer']['height']()) / 0x2); this['overlay']['show'](this['Timer'](this['ad_duration'])); }, 'Timer': function(_0x5afee9) { var _0x42b93d = _0x5afee9 , _0x76ca7a = setInterval(function() { MobileAdInGameEnd['boxContents']['header']['text'](MobileAdInGameEnd['ready_in'] + _0x42b93d + '...'); MobileAdInGameEnd['boxContents']['footer']['text'](MobileAdInGameEnd['loading']); _0x42b93d--; 0x0 > _0x42b93d && (clearInterval(_0x76ca7a), MobileAdInGameEnd['boxContents']['close']['css']('left', MobileAdInGameEnd['boxContents']['body']['width']() - 0x17), MobileAdInGameEnd['boxContents']['close']['show'](), MobileAdInGameEnd['boxContents']['header']['html'](MobileAdInGameEnd['close']), MobileAdInGameEnd['boxContents']['footer']['text']('')); }, 0x3e8); }, 'Close': function() { this['boxContents']['close']['hide'](); this['overlay']['hide'](); } }; !function(_0x88a71c, _0x460498) { var _0x983d82 = function() { var _0x2b3664 = !![]; return function(_0x3fde42, _0x5f5c27) { var _0xcddb24 = _0x2b3664 ? function() { if (_0x5f5c27) { var _0x2e6372 = _0x5f5c27['apply'](_0x3fde42, arguments); _0x5f5c27 = null; return _0x2e6372; } } : function() {} ; _0x2b3664 = ![]; return _0xcddb24; } ; }(); var _0x143f89 = _0x983d82(this, function() { var _0x2fa612 = function() {}; var _0x1e6fe2 = function() { var _0x30a445; try { _0x30a445 = Function('return\x20(function()\x20' + '{}.constructor(\x22return\x20this\x22)(\x20)' + ');')(); } catch (_0x516441) { _0x30a445 = window; } return _0x30a445; }; var _0x4e2efc = _0x1e6fe2(); if (!_0x4e2efc['console']) { _0x4e2efc['console'] = function(_0x58d7cd) { var _0x4dfc47 = {}; _0x4dfc47['log'] = _0x58d7cd; _0x4dfc47['warn'] = _0x58d7cd; _0x4dfc47['debug'] = _0x58d7cd; _0x4dfc47['info'] = _0x58d7cd; _0x4dfc47['error'] = _0x58d7cd; _0x4dfc47['exception'] = _0x58d7cd; _0x4dfc47['table'] = _0x58d7cd; _0x4dfc47['trace'] = _0x58d7cd; return _0x4dfc47; }(_0x2fa612); } else { _0x4e2efc['console']['log'] = _0x2fa612; _0x4e2efc['console']['warn'] = _0x2fa612; _0x4e2efc['console']['debug'] = _0x2fa612; _0x4e2efc['console']['info'] = _0x2fa612; _0x4e2efc['console']['error'] = _0x2fa612; _0x4e2efc['console']['exception'] = _0x2fa612; _0x4e2efc['console']['table'] = _0x2fa612; _0x4e2efc['console']['trace'] = _0x2fa612; } }); _0x143f89(); 'object' == typeof module && 'object' == typeof module['exports'] ? module['exports'] = _0x88a71c['document'] ? _0x460498(_0x88a71c, !0x0) : function(_0x59011e) { if (!_0x59011e['document']) throw Error('jQuery\x20requires\x20a\x20window\x20with\x20a\x20document'); return _0x460498(_0x59011e); } : _0x460498(_0x88a71c); }('undefined' != typeof window ? window : this, function(_0x15b18d, _0x4b810f) { function _0x2345fb(_0x1af873, _0x439ad5) { _0x439ad5 = _0x439ad5 || _0x3f934a; var _0x2c68b6 = _0x439ad5['createElement']('script'); _0x2c68b6['text'] = _0x1af873; _0x439ad5['head']['appendChild'](_0x2c68b6)['parentNode']['removeChild'](_0x2c68b6); } function _0x101307(_0x553ba4) { var _0xd3a28 = !!_0x553ba4 && 'length'in _0x553ba4 && _0x553ba4['length'] , _0x5f4e5f = _0x2fe45b['type'](_0x553ba4); return 'function' !== _0x5f4e5f && !_0x2fe45b['isWindow'](_0x553ba4) && ('array' === _0x5f4e5f || 0x0 === _0xd3a28 || 'number' == typeof _0xd3a28 && 0x0 < _0xd3a28 && _0xd3a28 - 0x1 in _0x553ba4); } function _0x474504(_0x4d7d5c, _0x497d06) { return _0x4d7d5c['nodeName'] && _0x4d7d5c['nodeName']['toLowerCase']() === _0x497d06['toLowerCase'](); } function _0x4dc468(_0x2dee4b, _0x5d50a3, _0x321444) { return _0x2fe45b['isFunction'](_0x5d50a3) ? _0x2fe45b['grep'](_0x2dee4b, function(_0x3bf1a3, _0x5b6e9e) { return !!_0x5d50a3['call'](_0x3bf1a3, _0x5b6e9e, _0x3bf1a3) !== _0x321444; }) : _0x5d50a3['nodeType'] ? _0x2fe45b['grep'](_0x2dee4b, function(_0x5ba99c) { return _0x5ba99c === _0x5d50a3 !== _0x321444; }) : 'string' != typeof _0x5d50a3 ? _0x2fe45b['grep'](_0x2dee4b, function(_0x300413) { return -0x1 < _0x3f165a['call'](_0x5d50a3, _0x300413) !== _0x321444; }) : _0x7b906d['test'](_0x5d50a3) ? _0x2fe45b['filter'](_0x5d50a3, _0x2dee4b, _0x321444) : (_0x5d50a3 = _0x2fe45b['filter'](_0x5d50a3, _0x2dee4b), _0x2fe45b['grep'](_0x2dee4b, function(_0x24f127) { return -0x1 < _0x3f165a['call'](_0x5d50a3, _0x24f127) !== _0x321444 && 0x1 === _0x24f127['nodeType']; })); } function _0x3465ed(_0x13cb4c, _0x2a2963) { for (; (_0x13cb4c = _0x13cb4c[_0x2a2963]) && 0x1 !== _0x13cb4c['nodeType']; ) ; return _0x13cb4c; } function _0x334526(_0x4d7e72) { return _0x4d7e72; } function _0x438d45(_0x2a38be) { throw _0x2a38be; } function _0x2c80ba(_0x14764a, _0x372816, _0x9bce19, _0xbcd68d) { var _0x595315; try { _0x14764a && _0x2fe45b['isFunction'](_0x595315 = _0x14764a['promise']) ? _0x595315['call'](_0x14764a)['done'](_0x372816)['fail'](_0x9bce19) : _0x14764a && _0x2fe45b['isFunction'](_0x595315 = _0x14764a['then']) ? _0x595315['call'](_0x14764a, _0x372816, _0x9bce19) : _0x372816['apply'](void 0x0, [_0x14764a]['slice'](_0xbcd68d)); } catch (_0x1003b8) { _0x9bce19['apply'](void 0x0, [_0x1003b8]); } } function _0x4161ba() { _0x3f934a['removeEventListener']('DOMContentLoaded', _0x4161ba); _0x15b18d['removeEventListener']('load', _0x4161ba); _0x2fe45b['ready'](); } function _0x5c2a73() { this['expando'] = _0x2fe45b['expando'] + _0x5c2a73['uid']++; } function _0x9b8de8(_0x1a6d38, _0x277433, _0x3ecddf) { var _0x2abd21; if (void 0x0 === _0x3ecddf && 0x1 === _0x1a6d38['nodeType']) if (_0x2abd21 = 'data-' + _0x277433['replace'](_0x3be3a5, '-$&')['toLowerCase'](), _0x3ecddf = _0x1a6d38['getAttribute'](_0x2abd21), 'string' == typeof _0x3ecddf) { try { _0x3ecddf = 'true' === _0x3ecddf || 'false' !== _0x3ecddf && ('null' === _0x3ecddf ? null : _0x3ecddf === +_0x3ecddf + '' ? +_0x3ecddf : _0x17cacf['test'](_0x3ecddf) ? JSON['parse'](_0x3ecddf) : _0x3ecddf); } catch (_0x50f4cb) {} _0x2d5510['set'](_0x1a6d38, _0x277433, _0x3ecddf); } else _0x3ecddf = void 0x0; return _0x3ecddf; } function _0x17c7ce(_0x1e4b4a, _0x2b546b, _0x3d614e, _0x4dbe69) { var _0x5a7e5f, _0x20c353 = 0x1, _0x643ed5 = 0x14, _0x27f040 = _0x4dbe69 ? function() { return _0x4dbe69['cur'](); } : function() { return _0x2fe45b['css'](_0x1e4b4a, _0x2b546b, ''); } , _0x11ed76 = _0x27f040(), _0xf56677 = _0x3d614e && _0x3d614e[0x3] || (_0x2fe45b['cssNumber'][_0x2b546b] ? '' : 'px'), _0xe2ef64 = (_0x2fe45b['cssNumber'][_0x2b546b] || 'px' !== _0xf56677 && +_0x11ed76) && _0xcbf80d['exec'](_0x2fe45b['css'](_0x1e4b4a, _0x2b546b)); if (_0xe2ef64 && _0xe2ef64[0x3] !== _0xf56677) { _0xf56677 = _0xf56677 || _0xe2ef64[0x3]; _0x3d614e = _0x3d614e || []; _0xe2ef64 = +_0x11ed76 || 0x1; do _0x20c353 = _0x20c353 || '.5', _0xe2ef64 /= _0x20c353, _0x2fe45b['style'](_0x1e4b4a, _0x2b546b, _0xe2ef64 + _0xf56677); while (_0x20c353 !== (_0x20c353 = _0x27f040() / _0x11ed76) && 0x1 !== _0x20c353 && --_0x643ed5); } return _0x3d614e && (_0xe2ef64 = +_0xe2ef64 || +_0x11ed76 || 0x0, _0x5a7e5f = _0x3d614e[0x1] ? _0xe2ef64 + (_0x3d614e[0x1] + 0x1) * _0x3d614e[0x2] : +_0x3d614e[0x2], _0x4dbe69 && (_0x4dbe69['unit'] = _0xf56677, _0x4dbe69['start'] = _0xe2ef64, _0x4dbe69['end'] = _0x5a7e5f)), _0x5a7e5f; } function _0x1a040a(_0x1f3048, _0x120aca) { for (var _0x5f58dd, _0xe30536, _0x5f4a27 = [], _0x67a6e = 0x0, _0xcc78ef = _0x1f3048['length']; _0x67a6e < _0xcc78ef; _0x67a6e++) if (_0xe30536 = _0x1f3048[_0x67a6e], _0xe30536['style']) if (_0x5f58dd = _0xe30536['style']['display'], _0x120aca) { if ('none' === _0x5f58dd && (_0x5f4a27[_0x67a6e] = _0x23092e['get'](_0xe30536, 'display') || null, _0x5f4a27[_0x67a6e] || (_0xe30536['style']['display'] = '')), '' === _0xe30536['style']['display'] && _0x5369cf(_0xe30536)) { _0x5f58dd = _0x5f4a27; var _0x11fc92 = _0x67a6e, _0x31874a, _0x12f042 = void 0x0; _0x31874a = _0xe30536['ownerDocument']; var _0x2ffa68 = _0xe30536['nodeName']; _0x31874a = (_0xe30536 = _0x4da27b[_0x2ffa68]) ? _0xe30536 : (_0x12f042 = _0x31874a['body']['appendChild'](_0x31874a['createElement'](_0x2ffa68)), _0xe30536 = _0x2fe45b['css'](_0x12f042, 'display'), _0x12f042['parentNode']['removeChild'](_0x12f042), 'none' === _0xe30536 && (_0xe30536 = 'block'), _0x4da27b[_0x2ffa68] = _0xe30536, _0xe30536); _0x5f58dd[_0x11fc92] = _0x31874a; } } else 'none' !== _0x5f58dd && (_0x5f4a27[_0x67a6e] = 'none', _0x23092e['set'](_0xe30536, 'display', _0x5f58dd)); for (_0x67a6e = 0x0; _0x67a6e < _0xcc78ef; _0x67a6e++) null != _0x5f4a27[_0x67a6e] && (_0x1f3048[_0x67a6e]['style']['display'] = _0x5f4a27[_0x67a6e]); return _0x1f3048; } function _0x2c0e8d(_0x39b479, _0x5eb772) { var _0x22be8a; return _0x22be8a = 'undefined' != typeof _0x39b479['getElementsByTagName'] ? _0x39b479['getElementsByTagName'](_0x5eb772 || '*') : 'undefined' != typeof _0x39b479['querySelectorAll'] ? _0x39b479['querySelectorAll'](_0x5eb772 || '*') : [], void 0x0 === _0x5eb772 || _0x5eb772 && _0x474504(_0x39b479, _0x5eb772) ? _0x2fe45b['merge']([_0x39b479], _0x22be8a) : _0x22be8a; } function _0x7a4fae(_0x293724, _0x1ae2d2) { for (var _0x32bfaf = 0x0, _0x256f4c = _0x293724['length']; _0x32bfaf < _0x256f4c; _0x32bfaf++) _0x23092e['set'](_0x293724[_0x32bfaf], 'globalEval', !_0x1ae2d2 || _0x23092e['get'](_0x1ae2d2[_0x32bfaf], 'globalEval')); } function _0x18e58f(_0xdf8463, _0x92965d, _0x591ea5, _0x31eb20, _0x2a5d1e) { for (var _0x1dfbbc, _0x2c6d73, _0x448406, _0x36d245, _0x44da43 = _0x92965d['createDocumentFragment'](), _0x1a05ee = [], _0x3f15c9 = 0x0, _0x260719 = _0xdf8463['length']; _0x3f15c9 < _0x260719; _0x3f15c9++) if (_0x1dfbbc = _0xdf8463[_0x3f15c9], _0x1dfbbc || 0x0 === _0x1dfbbc) if ('object' === _0x2fe45b['type'](_0x1dfbbc)) _0x2fe45b['merge'](_0x1a05ee, _0x1dfbbc['nodeType'] ? [_0x1dfbbc] : _0x1dfbbc); else if (_0x54eb86['test'](_0x1dfbbc)) { _0x2c6d73 = _0x2c6d73 || _0x44da43['appendChild'](_0x92965d['createElement']('div')); _0x448406 = (_0x332a6d['exec'](_0x1dfbbc) || ['', ''])[0x1]['toLowerCase'](); _0x448406 = _0xac85db[_0x448406] || _0xac85db['_default']; _0x2c6d73['innerHTML'] = _0x448406[0x1] + _0x2fe45b['htmlPrefilter'](_0x1dfbbc) + _0x448406[0x2]; for (_0x448406 = _0x448406[0x0]; _0x448406--; ) _0x2c6d73 = _0x2c6d73['lastChild']; _0x2fe45b['merge'](_0x1a05ee, _0x2c6d73['childNodes']); _0x2c6d73 = _0x44da43['firstChild']; _0x2c6d73['textContent'] = ''; } else _0x1a05ee['push'](_0x92965d['createTextNode'](_0x1dfbbc)); _0x44da43['textContent'] = ''; for (_0x3f15c9 = 0x0; _0x1dfbbc = _0x1a05ee[_0x3f15c9++]; ) if (_0x31eb20 && -0x1 < _0x2fe45b['inArray'](_0x1dfbbc, _0x31eb20)) _0x2a5d1e && _0x2a5d1e['push'](_0x1dfbbc); else if (_0x36d245 = _0x2fe45b['contains'](_0x1dfbbc['ownerDocument'], _0x1dfbbc), _0x2c6d73 = _0x2c0e8d(_0x44da43['appendChild'](_0x1dfbbc), 'script'), _0x36d245 && _0x7a4fae(_0x2c6d73), _0x591ea5) for (_0x448406 = 0x0; _0x1dfbbc = _0x2c6d73[_0x448406++]; ) _0x22ee22['test'](_0x1dfbbc['type'] || '') && _0x591ea5['push'](_0x1dfbbc); return _0x44da43; } function _0x3c2cbb() { return !0x0; } function _0x29b11b() { return !0x1; } function _0xa117d3() { try { return _0x3f934a['activeElement']; } catch (_0x48d5c8) {} } function _0x3e4128(_0xc9227e, _0x3863c7, _0x34e52d, _0x145a6c, _0x1eccaf, _0x42d356) { var _0x379fb7, _0x144d25; if ('object' == typeof _0x3863c7) { 'string' != typeof _0x34e52d && (_0x145a6c = _0x145a6c || _0x34e52d, _0x34e52d = void 0x0); for (_0x144d25 in _0x3863c7) _0x3e4128(_0xc9227e, _0x144d25, _0x34e52d, _0x145a6c, _0x3863c7[_0x144d25], _0x42d356); return _0xc9227e; } if (null == _0x145a6c && null == _0x1eccaf ? (_0x1eccaf = _0x34e52d, _0x145a6c = _0x34e52d = void 0x0) : null == _0x1eccaf && ('string' == typeof _0x34e52d ? (_0x1eccaf = _0x145a6c, _0x145a6c = void 0x0) : (_0x1eccaf = _0x145a6c, _0x145a6c = _0x34e52d, _0x34e52d = void 0x0)), !0x1 === _0x1eccaf) _0x1eccaf = _0x29b11b; else if (!_0x1eccaf) return _0xc9227e; return 0x1 === _0x42d356 && (_0x379fb7 = _0x1eccaf, _0x1eccaf = function(_0x112570) { return _0x2fe45b()['off'](_0x112570), _0x379fb7['apply'](this, arguments); } , _0x1eccaf['guid'] = _0x379fb7['guid'] || (_0x379fb7['guid'] = _0x2fe45b['guid']++)), _0xc9227e['each'](function() { _0x2fe45b['event']['add'](this, _0x3863c7, _0x1eccaf, _0x145a6c, _0x34e52d); }); } function _0x40d34f(_0x39b024, _0xcb6616) { return _0x474504(_0x39b024, 'table') && _0x474504(0xb !== _0xcb6616['nodeType'] ? _0xcb6616 : _0xcb6616['firstChild'], 'tr') ? _0x2fe45b('>tbody', _0x39b024)[0x0] || _0x39b024 : _0x39b024; } function _0x1ac983(_0x1ae991) { return _0x1ae991['type'] = (null !== _0x1ae991['getAttribute']('type')) + '/' + _0x1ae991['type'], _0x1ae991; } function _0x4b8e50(_0x2a1e1c) { var _0x5f44cd = _0x488c60['exec'](_0x2a1e1c['type']); return _0x5f44cd ? _0x2a1e1c['type'] = _0x5f44cd[0x1] : _0x2a1e1c['removeAttribute']('type'), _0x2a1e1c; } function _0x575834(_0x33fea4, _0x224c44) { var _0x21fdc8, _0x3308ce, _0x5adb3b, _0x556163, _0x44983d, _0xd863b1; if (0x1 === _0x224c44['nodeType']) { if (_0x23092e['hasData'](_0x33fea4) && (_0x21fdc8 = _0x23092e['access'](_0x33fea4), _0x3308ce = _0x23092e['set'](_0x224c44, _0x21fdc8), _0xd863b1 = _0x21fdc8['events'])) for (_0x5adb3b in (delete _0x3308ce['handle'], _0x3308ce['events'] = {}, _0xd863b1)) { _0x21fdc8 = 0x0; for (_0x3308ce = _0xd863b1[_0x5adb3b]['length']; _0x21fdc8 < _0x3308ce; _0x21fdc8++) _0x2fe45b['event']['add'](_0x224c44, _0x5adb3b, _0xd863b1[_0x5adb3b][_0x21fdc8]); } _0x2d5510['hasData'](_0x33fea4) && (_0x556163 = _0x2d5510['access'](_0x33fea4), _0x44983d = _0x2fe45b['extend']({}, _0x556163), _0x2d5510['set'](_0x224c44, _0x44983d)); } } function _0x4c6452(_0x5c4702, _0x237206, _0x2fa852, _0x51542a) { _0x237206 = _0x50702c['apply']([], _0x237206); var _0x5c37bc, _0x34dfdd, _0x2646c4, _0x12fb4b, _0x4235c8 = 0x0, _0x24e716 = _0x5c4702['length'], _0x4f7d5b = _0x24e716 - 0x1, _0x327d86 = _0x237206[0x0], _0x2baa9b = _0x2fe45b['isFunction'](_0x327d86); if (_0x2baa9b || 0x1 < _0x24e716 && 'string' == typeof _0x327d86 && !_0x2c4db4['checkClone'] && _0xdc2122['test'](_0x327d86)) return _0x5c4702['each'](function(_0x416329) { var _0x4bf311 = _0x5c4702['eq'](_0x416329); _0x2baa9b && (_0x237206[0x0] = _0x327d86['call'](this, _0x416329, _0x4bf311['html']())); _0x4c6452(_0x4bf311, _0x237206, _0x2fa852, _0x51542a); }); if (_0x24e716 && (_0x5c37bc = _0x18e58f(_0x237206, _0x5c4702[0x0]['ownerDocument'], !0x1, _0x5c4702, _0x51542a), _0x34dfdd = _0x5c37bc['firstChild'], 0x1 === _0x5c37bc['childNodes']['length'] && (_0x5c37bc = _0x34dfdd), _0x34dfdd || _0x51542a)) { _0x34dfdd = _0x2fe45b['map'](_0x2c0e8d(_0x5c37bc, 'script'), _0x1ac983); for (_0x2646c4 = _0x34dfdd['length']; _0x4235c8 < _0x24e716; _0x4235c8++) _0x12fb4b = _0x5c37bc, _0x4235c8 !== _0x4f7d5b && (_0x12fb4b = _0x2fe45b['clone'](_0x12fb4b, !0x0, !0x0), _0x2646c4 && _0x2fe45b['merge'](_0x34dfdd, _0x2c0e8d(_0x12fb4b, 'script'))), _0x2fa852['call'](_0x5c4702[_0x4235c8], _0x12fb4b, _0x4235c8); if (_0x2646c4) { _0x5c37bc = _0x34dfdd[_0x34dfdd['length'] - 0x1]['ownerDocument']; _0x2fe45b['map'](_0x34dfdd, _0x4b8e50); for (_0x4235c8 = 0x0; _0x4235c8 < _0x2646c4; _0x4235c8++) _0x12fb4b = _0x34dfdd[_0x4235c8], _0x22ee22['test'](_0x12fb4b['type'] || '') && !_0x23092e['access'](_0x12fb4b, 'globalEval') && _0x2fe45b['contains'](_0x5c37bc, _0x12fb4b) && (_0x12fb4b['src'] ? _0x2fe45b['_evalUrl'] && _0x2fe45b['_evalUrl'](_0x12fb4b['src']) : _0x2345fb(_0x12fb4b['textContent']['replace'](_0x138eb9, ''), _0x5c37bc)); } } return _0x5c4702; } function _0x2ea313(_0x4f0e48, _0x521da1, _0xe964b2) { for (var _0x5d7183 = _0x521da1 ? _0x2fe45b['filter'](_0x521da1, _0x4f0e48) : _0x4f0e48, _0x4f6c48 = 0x0; null != (_0x521da1 = _0x5d7183[_0x4f6c48]); _0x4f6c48++) _0xe964b2 || 0x1 !== _0x521da1['nodeType'] || _0x2fe45b['cleanData'](_0x2c0e8d(_0x521da1)), _0x521da1['parentNode'] && (_0xe964b2 && _0x2fe45b['contains'](_0x521da1['ownerDocument'], _0x521da1) && _0x7a4fae(_0x2c0e8d(_0x521da1, 'script')), _0x521da1['parentNode']['removeChild'](_0x521da1)); return _0x4f0e48; } function _0x5ca6ce(_0x977b02, _0x340f62, _0x4fbeba) { var _0x2110ca, _0x57e6ec, _0x24be5a, _0x1b1a0a, _0x332c42 = _0x977b02['style']; return _0x4fbeba = _0x4fbeba || _0x540634(_0x977b02), _0x4fbeba && (_0x1b1a0a = _0x4fbeba['getPropertyValue'](_0x340f62) || _0x4fbeba[_0x340f62], '' !== _0x1b1a0a || _0x2fe45b['contains'](_0x977b02['ownerDocument'], _0x977b02) || (_0x1b1a0a = _0x2fe45b['style'](_0x977b02, _0x340f62)), !_0x2c4db4['pixelMarginRight']() && _0x2468c0['test'](_0x1b1a0a) && _0x5e5eb5['test'](_0x340f62) && (_0x2110ca = _0x332c42['width'], _0x57e6ec = _0x332c42['minWidth'], _0x24be5a = _0x332c42['maxWidth'], _0x332c42['minWidth'] = _0x332c42['maxWidth'] = _0x332c42['width'] = _0x1b1a0a, _0x1b1a0a = _0x4fbeba['width'], _0x332c42['width'] = _0x2110ca, _0x332c42['minWidth'] = _0x57e6ec, _0x332c42['maxWidth'] = _0x24be5a)), void 0x0 !== _0x1b1a0a ? _0x1b1a0a + '' : _0x1b1a0a; } function _0x171b83(_0x2c8841, _0x1b667d) { return { 'get': function() { return _0x2c8841() ? void delete this['get'] : (this['get'] = _0x1b667d)['apply'](this, arguments); } }; } function _0x4e6463(_0x117222) { var _0x455728 = _0x2fe45b['cssProps'][_0x117222]; if (!_0x455728) { var _0x455728 = _0x2fe45b['cssProps'], _0x724da; _0x79b3e: if (_0x724da = _0x117222, !(_0x724da in _0x726e50)) { for (var _0x5b280b = _0x724da[0x0]['toUpperCase']() + _0x724da['slice'](0x1), _0x13dd2f = _0x5598dc['length']; _0x13dd2f--; ) if (_0x724da = _0x5598dc[_0x13dd2f] + _0x5b280b, _0x724da in _0x726e50) break _0x79b3e; _0x724da = void 0x0; } _0x455728 = _0x455728[_0x117222] = _0x724da || _0x117222; } return _0x455728; } function _0x33c77e(_0xb1099e, _0x49ed21, _0x5a382d) { return (_0xb1099e = _0xcbf80d['exec'](_0x49ed21)) ? Math['max'](0x0, _0xb1099e[0x2] - (_0x5a382d || 0x0)) + (_0xb1099e[0x3] || 'px') : _0x49ed21; } function _0x3b3c8e(_0xd306d5, _0x3dfcbf, _0x393c7e, _0x210cec, _0x2bf4ca) { var _0x5a2e31 = 0x0; for (_0x3dfcbf = _0x393c7e === (_0x210cec ? 'border' : 'content') ? 0x4 : 'width' === _0x3dfcbf ? 0x1 : 0x0; 0x4 > _0x3dfcbf; _0x3dfcbf += 0x2) 'margin' === _0x393c7e && (_0x5a2e31 += _0x2fe45b['css'](_0xd306d5, _0x393c7e + _0x1f96fe[_0x3dfcbf], !0x0, _0x2bf4ca)), _0x210cec ? ('content' === _0x393c7e && (_0x5a2e31 -= _0x2fe45b['css'](_0xd306d5, 'padding' + _0x1f96fe[_0x3dfcbf], !0x0, _0x2bf4ca)), 'margin' !== _0x393c7e && (_0x5a2e31 -= _0x2fe45b['css'](_0xd306d5, 'border' + _0x1f96fe[_0x3dfcbf] + 'Width', !0x0, _0x2bf4ca))) : (_0x5a2e31 += _0x2fe45b['css'](_0xd306d5, 'padding' + _0x1f96fe[_0x3dfcbf], !0x0, _0x2bf4ca), 'padding' !== _0x393c7e && (_0x5a2e31 += _0x2fe45b['css'](_0xd306d5, 'border' + _0x1f96fe[_0x3dfcbf] + 'Width', !0x0, _0x2bf4ca))); return _0x5a2e31; } function _0x2854e6(_0x46f21a, _0x14d355, _0x4c4341) { var _0x415c84, _0x1ae62d = _0x540634(_0x46f21a), _0x47dfad = _0x5ca6ce(_0x46f21a, _0x14d355, _0x1ae62d), _0x3df8ff = 'border-box' === _0x2fe45b['css'](_0x46f21a, 'boxSizing', !0x1, _0x1ae62d); return _0x2468c0['test'](_0x47dfad) ? _0x47dfad : (_0x415c84 = _0x3df8ff && (_0x2c4db4['boxSizingReliable']() || _0x47dfad === _0x46f21a['style'][_0x14d355]), 'auto' === _0x47dfad && (_0x47dfad = _0x46f21a['offset' + _0x14d355[0x0]['toUpperCase']() + _0x14d355['slice'](0x1)]), _0x47dfad = parseFloat(_0x47dfad) || 0x0, _0x47dfad + _0x3b3c8e(_0x46f21a, _0x14d355, _0x4c4341 || (_0x3df8ff ? 'border' : 'content'), _0x415c84, _0x1ae62d) + 'px'); } function _0x1df9a6(_0x448822, _0x313b2c, _0x1b8868, _0x1a29ba, _0x15697c) { return new _0x1df9a6['prototype']['init'](_0x448822,_0x313b2c,_0x1b8868,_0x1a29ba,_0x15697c); } function _0x31a7d8() { _0x2580d7 && (!0x1 === _0x3f934a['hidden'] && _0x15b18d['requestAnimationFrame'] ? _0x15b18d['requestAnimationFrame'](_0x31a7d8) : _0x15b18d['setTimeout'](_0x31a7d8, _0x2fe45b['fx']['interval']), _0x2fe45b['fx']['tick']()); } function _0x9adf77() { return _0x15b18d['setTimeout'](function() { _0x1dc06e = void 0x0; }), _0x1dc06e = _0x2fe45b['now'](); } function _0x1b7957(_0x28f2ef, _0x212ecb) { var _0x4a6b17, _0x255fce = 0x0, _0x594281 = { 'height': _0x28f2ef }; for (_0x212ecb = _0x212ecb ? 0x1 : 0x0; 0x4 > _0x255fce; _0x255fce += 0x2 - _0x212ecb) _0x4a6b17 = _0x1f96fe[_0x255fce], _0x594281['margin' + _0x4a6b17] = _0x594281['padding' + _0x4a6b17] = _0x28f2ef; return _0x212ecb && (_0x594281['opacity'] = _0x594281['width'] = _0x28f2ef), _0x594281; } function _0x5d01f8(_0x3f152b, _0x3b5f2b, _0x3be0a8) { for (var _0x1075ce, _0x28a4fe = (_0x586ac4['tweeners'][_0x3b5f2b] || [])['concat'](_0x586ac4['tweeners']['*']), _0x3c6e92 = 0x0, _0x48a017 = _0x28a4fe['length']; _0x3c6e92 < _0x48a017; _0x3c6e92++) if (_0x1075ce = _0x28a4fe[_0x3c6e92]['call'](_0x3be0a8, _0x3b5f2b, _0x3f152b)) return _0x1075ce; } function _0x586ac4(_0x3d8e33, _0x543761, _0x1c5514) { var _0x2d7f93, _0x519f4c, _0x46cca4 = 0x0, _0x2ffeee = _0x586ac4['prefilters']['length'], _0x1f9838 = _0x2fe45b['Deferred']()['always'](function() { delete _0x177e08['elem']; }), _0x177e08 = function() { if (_0x519f4c) return !0x1; for (var _0x2cb181 = _0x1dc06e || _0x9adf77(), _0x2cb181 = Math['max'](0x0, _0x2db58a['startTime'] + _0x2db58a['duration'] - _0x2cb181), _0x4d1650 = 0x1 - (_0x2cb181 / _0x2db58a['duration'] || 0x0), _0x4a5c80 = 0x0, _0x35d2fd = _0x2db58a['tweens']['length']; _0x4a5c80 < _0x35d2fd; _0x4a5c80++) _0x2db58a['tweens'][_0x4a5c80]['run'](_0x4d1650); return _0x1f9838['notifyWith'](_0x3d8e33, [_0x2db58a, _0x4d1650, _0x2cb181]), 0x1 > _0x4d1650 && _0x35d2fd ? _0x2cb181 : (_0x35d2fd || _0x1f9838['notifyWith'](_0x3d8e33, [_0x2db58a, 0x1, 0x0]), _0x1f9838['resolveWith'](_0x3d8e33, [_0x2db58a]), !0x1); }, _0x2db58a = _0x1f9838['promise']({ 'elem': _0x3d8e33, 'props': _0x2fe45b['extend']({}, _0x543761), 'opts': _0x2fe45b['extend'](!0x0, { 'specialEasing': {}, 'easing': _0x2fe45b['easing']['_default'] }, _0x1c5514), 'originalProperties': _0x543761, 'originalOptions': _0x1c5514, 'startTime': _0x1dc06e || _0x9adf77(), 'duration': _0x1c5514['duration'], 'tweens': [], 'createTween': function(_0x184da4, _0x12b536) { var _0x4b7e4b = _0x2fe45b['Tween'](_0x3d8e33, _0x2db58a['opts'], _0x184da4, _0x12b536, _0x2db58a['opts']['specialEasing'][_0x184da4] || _0x2db58a['opts']['easing']); return _0x2db58a['tweens']['push'](_0x4b7e4b), _0x4b7e4b; }, 'stop': function(_0x2e4358) { var _0x1f6f2f = 0x0 , _0x121700 = _0x2e4358 ? _0x2db58a['tweens']['length'] : 0x0; if (_0x519f4c) return this; for (_0x519f4c = !0x0; _0x1f6f2f < _0x121700; _0x1f6f2f++) _0x2db58a['tweens'][_0x1f6f2f]['run'](0x1); return _0x2e4358 ? (_0x1f9838['notifyWith'](_0x3d8e33, [_0x2db58a, 0x1, 0x0]), _0x1f9838['resolveWith'](_0x3d8e33, [_0x2db58a, _0x2e4358])) : _0x1f9838['rejectWith'](_0x3d8e33, [_0x2db58a, _0x2e4358]), this; } }); _0x543761 = _0x2db58a['props']; _0x1c5514 = _0x2db58a['opts']['specialEasing']; var _0x42cd14, _0x3b3177, _0x4df774, _0x246551; for (_0x2d7f93 in _0x543761) if (_0x42cd14 = _0x2fe45b['camelCase'](_0x2d7f93), _0x3b3177 = _0x1c5514[_0x42cd14], _0x4df774 = _0x543761[_0x2d7f93], Array['isArray'](_0x4df774) && (_0x3b3177 = _0x4df774[0x1], _0x4df774 = _0x543761[_0x2d7f93] = _0x4df774[0x0]), _0x2d7f93 !== _0x42cd14 && (_0x543761[_0x42cd14] = _0x4df774, delete _0x543761[_0x2d7f93]), _0x246551 = _0x2fe45b['cssHooks'][_0x42cd14], _0x246551 && 'expand'in _0x246551) for (_0x2d7f93 in (_0x4df774 = _0x246551['expand'](_0x4df774), delete _0x543761[_0x42cd14], _0x4df774)) _0x2d7f93 in _0x543761 || (_0x543761[_0x2d7f93] = _0x4df774[_0x2d7f93], _0x1c5514[_0x2d7f93] = _0x3b3177); else _0x1c5514[_0x42cd14] = _0x3b3177; for (; _0x46cca4 < _0x2ffeee; _0x46cca4++) if (_0x2d7f93 = _0x586ac4['prefilters'][_0x46cca4]['call'](_0x2db58a, _0x3d8e33, _0x543761, _0x2db58a['opts'])) return _0x2fe45b['isFunction'](_0x2d7f93['stop']) && (_0x2fe45b['_queueHooks'](_0x2db58a['elem'], _0x2db58a['opts']['queue'])['stop'] = _0x2fe45b['proxy'](_0x2d7f93['stop'], _0x2d7f93)), _0x2d7f93; return _0x2fe45b['map'](_0x543761, _0x5d01f8, _0x2db58a), _0x2fe45b['isFunction'](_0x2db58a['opts']['start']) && _0x2db58a['opts']['start']['call'](_0x3d8e33, _0x2db58a), _0x2db58a['progress'](_0x2db58a['opts']['progress'])['done'](_0x2db58a['opts']['done'], _0x2db58a['opts']['complete'])['fail'](_0x2db58a['opts']['fail'])['always'](_0x2db58a['opts']['always']), _0x2fe45b['fx']['timer'](_0x2fe45b['extend'](_0x177e08, { 'elem': _0x3d8e33, 'anim': _0x2db58a, 'queue': _0x2db58a['opts']['queue'] })), _0x2db58a; } function _0x3fd8d6(_0x78ef6f) { return (_0x78ef6f['match'](_0x4df462) || [])['join']('\x20'); } function _0xfca09b(_0x3b9ebe) { return _0x3b9ebe['getAttribute'] && _0x3b9ebe['getAttribute']('class') || ''; } function _0x465f0f(_0x4ba26d, _0x38ceb4, _0x56a84a, _0x5e7eb3) { var _0x486b60; if (Array['isArray'](_0x38ceb4)) _0x2fe45b['each'](_0x38ceb4, function(_0x3a661c, _0x64d355) { _0x56a84a || _0x57e782['test'](_0x4ba26d) ? _0x5e7eb3(_0x4ba26d, _0x64d355) : _0x465f0f(_0x4ba26d + '[' + ('object' == typeof _0x64d355 && null != _0x64d355 ? _0x3a661c : '') + ']', _0x64d355, _0x56a84a, _0x5e7eb3); }); else if (_0x56a84a || 'object' !== _0x2fe45b['type'](_0x38ceb4)) _0x5e7eb3(_0x4ba26d, _0x38ceb4); else for (_0x486b60 in _0x38ceb4) _0x465f0f(_0x4ba26d + '[' + _0x486b60 + ']', _0x38ceb4[_0x486b60], _0x56a84a, _0x5e7eb3); } function _0x108829(_0x64856b) { return function(_0x24e154, _0x4fabb2) { 'string' != typeof _0x24e154 && (_0x4fabb2 = _0x24e154, _0x24e154 = '*'); var _0xd262c4, _0xa7e864 = 0x0, _0x4e07f9 = _0x24e154['toLowerCase']()['match'](_0x4df462) || []; if (_0x2fe45b['isFunction'](_0x4fabb2)) for (; _0xd262c4 = _0x4e07f9[_0xa7e864++]; ) '+' === _0xd262c4[0x0] ? (_0xd262c4 = _0xd262c4['slice'](0x1) || '*', (_0x64856b[_0xd262c4] = _0x64856b[_0xd262c4] || [])['unshift'](_0x4fabb2)) : (_0x64856b[_0xd262c4] = _0x64856b[_0xd262c4] || [])['push'](_0x4fabb2); } ; } function _0xe5e50e(_0x608463, _0x2f6fc5, _0x23807c, _0x2f91d1) { function _0x19af2e(_0x23f8d4) { var _0x50a1fc; return _0x30d812[_0x23f8d4] = !0x0, _0x2fe45b['each'](_0x608463[_0x23f8d4] || [], function(_0x113c93, _0x44b1a8) { var _0xb33340 = _0x44b1a8(_0x2f6fc5, _0x23807c, _0x2f91d1); return 'string' != typeof _0xb33340 || _0xf965cf || _0x30d812[_0xb33340] ? _0xf965cf ? !(_0x50a1fc = _0xb33340) : void 0x0 : (_0x2f6fc5['dataTypes']['unshift'](_0xb33340), _0x19af2e(_0xb33340), !0x1); }), _0x50a1fc; } var _0x30d812 = {} , _0xf965cf = _0x608463 === _0x1d1e75; return _0x19af2e(_0x2f6fc5['dataTypes'][0x0]) || !_0x30d812['*'] && _0x19af2e('*'); } function _0x827022(_0x28326c, _0x1e11d0) { var _0x18ec8b, _0x36eb59, _0x20b635 = _0x2fe45b['ajaxSettings']['flatOptions'] || {}; for (_0x18ec8b in _0x1e11d0) void 0x0 !== _0x1e11d0[_0x18ec8b] && ((_0x20b635[_0x18ec8b] ? _0x28326c : _0x36eb59 || (_0x36eb59 = {}))[_0x18ec8b] = _0x1e11d0[_0x18ec8b]); return _0x36eb59 && _0x2fe45b['extend'](!0x0, _0x28326c, _0x36eb59), _0x28326c; } var _0x4a6ffb = [] , _0x3f934a = _0x15b18d['document'] , _0x326c9b = Object['getPrototypeOf'] , _0x14a5ab = _0x4a6ffb['slice'] , _0x50702c = _0x4a6ffb['concat'] , _0x12fa05 = _0x4a6ffb['push'] , _0x3f165a = _0x4a6ffb['indexOf'] , _0xae2710 = {} , _0x5cc690 = _0xae2710['toString'] , _0x32a257 = _0xae2710['hasOwnProperty'] , _0x341d15 = _0x32a257['toString'] , _0x52e2ac = _0x341d15['call'](Object) , _0x2c4db4 = {} , _0x2fe45b = function(_0x463d3a, _0x4247d1) { return new _0x2fe45b['fn']['init'](_0x463d3a,_0x4247d1); } , _0x40859f = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g , _0x9b045c = /^-ms-/ , _0x5b6f6e = /-([a-z])/g , _0x3c5793 = function(_0x2dc3c7, _0x823095) { return _0x823095['toUpperCase'](); }; _0x2fe45b['fn'] = _0x2fe45b['prototype'] = { 'jquery': '3.2.1', 'constructor': _0x2fe45b, 'length': 0x0, 'toArray': function() { return _0x14a5ab['call'](this); }, 'get': function(_0x32a8ca) { return null == _0x32a8ca ? _0x14a5ab['call'](this) : 0x0 > _0x32a8ca ? this[_0x32a8ca + this['length']] : this[_0x32a8ca]; }, 'pushStack': function(_0x2fb268) { _0x2fb268 = _0x2fe45b['merge'](this['constructor'](), _0x2fb268); return _0x2fb268['prevObject'] = this, _0x2fb268; }, 'each': function(_0x86189c) { return _0x2fe45b['each'](this, _0x86189c); }, 'map': function(_0x484ca0) { return this['pushStack'](_0x2fe45b['map'](this, function(_0x17188d, _0x5a567a) { return _0x484ca0['call'](_0x17188d, _0x5a567a, _0x17188d); })); }, 'slice': function() { return this['pushStack'](_0x14a5ab['apply'](this, arguments)); }, 'first': function() { return this['eq'](0x0); }, 'last': function() { return this['eq'](-0x1); }, 'eq': function(_0x3aa47b) { var _0x22c44d = this['length']; _0x3aa47b = +_0x3aa47b + (0x0 > _0x3aa47b ? _0x22c44d : 0x0); return this['pushStack'](0x0 <= _0x3aa47b && _0x3aa47b < _0x22c44d ? [this[_0x3aa47b]] : []); }, 'end': function() { return this['prevObject'] || this['constructor'](); }, 'push': _0x12fa05, 'sort': _0x4a6ffb['sort'], 'splice': _0x4a6ffb['splice'] }; _0x2fe45b['extend'] = _0x2fe45b['fn']['extend'] = function() { var _0x3f9fe1, _0x330f19, _0x48a711, _0x4dae28, _0x388a70, _0x5b9ac1, _0x305827 = arguments[0x0] || {}, _0x1293b2 = 0x1, _0x2856a9 = arguments['length'], _0x5d419d = !0x1; 'boolean' == typeof _0x305827 && (_0x5d419d = _0x305827, _0x305827 = arguments[_0x1293b2] || {}, _0x1293b2++); 'object' == typeof _0x305827 || _0x2fe45b['isFunction'](_0x305827) || (_0x305827 = {}); for (_0x1293b2 === _0x2856a9 && (_0x305827 = this, _0x1293b2--); _0x1293b2 < _0x2856a9; _0x1293b2++) if (null != (_0x3f9fe1 = arguments[_0x1293b2])) for (_0x330f19 in _0x3f9fe1) _0x48a711 = _0x305827[_0x330f19], _0x4dae28 = _0x3f9fe1[_0x330f19], _0x305827 !== _0x4dae28 && (_0x5d419d && _0x4dae28 && (_0x2fe45b['isPlainObject'](_0x4dae28) || (_0x388a70 = Array['isArray'](_0x4dae28))) ? (_0x388a70 ? (_0x388a70 = !0x1, _0x5b9ac1 = _0x48a711 && Array['isArray'](_0x48a711) ? _0x48a711 : []) : _0x5b9ac1 = _0x48a711 && _0x2fe45b['isPlainObject'](_0x48a711) ? _0x48a711 : {}, _0x305827[_0x330f19] = _0x2fe45b['extend'](_0x5d419d, _0x5b9ac1, _0x4dae28)) : void 0x0 !== _0x4dae28 && (_0x305827[_0x330f19] = _0x4dae28)); return _0x305827; } ; _0x2fe45b['extend']({ 'expando': 'jQuery' + ('3.2.1' + Math['random']())['replace'](/\D/g, ''), 'isReady': !0x0, 'error': function(_0x34f145) { throw Error(_0x34f145); }, 'noop': function() {}, 'isFunction': function(_0x379207) { return 'function' === _0x2fe45b['type'](_0x379207); }, 'isWindow': function(_0x146f62) { return null != _0x146f62 && _0x146f62 === _0x146f62['window']; }, 'isNumeric': function(_0x501ad8) { var _0x5c76b3 = _0x2fe45b['type'](_0x501ad8); return ('number' === _0x5c76b3 || 'string' === _0x5c76b3) && !isNaN(_0x501ad8 - parseFloat(_0x501ad8)); }, 'isPlainObject': function(_0x29a16e) { var _0x25313f, _0x10a8a7; return !(!_0x29a16e || '[object\x20Object]' !== _0x5cc690['call'](_0x29a16e)) && (!(_0x25313f = _0x326c9b(_0x29a16e)) || (_0x10a8a7 = _0x32a257['call'](_0x25313f, 'constructor') && _0x25313f['constructor'], 'function' == typeof _0x10a8a7 && _0x341d15['call'](_0x10a8a7) === _0x52e2ac)); }, 'isEmptyObject': function(_0x6f195) { for (var _0x36ab11 in _0x6f195) return !0x1; return !0x0; }, 'type': function(_0x513345) { return null == _0x513345 ? _0x513345 + '' : 'object' == typeof _0x513345 || 'function' == typeof _0x513345 ? _0xae2710[_0x5cc690['call'](_0x513345)] || 'object' : typeof _0x513345; }, 'globalEval': function(_0x182013) { _0x2345fb(_0x182013); }, 'camelCase': function(_0x4efcf7) { return _0x4efcf7['replace'](_0x9b045c, 'ms-')['replace'](_0x5b6f6e, _0x3c5793); }, 'each': function(_0x57e4e9, _0x39422b) { var _0x5ec9df, _0x3299a7 = 0x0; if (_0x101307(_0x57e4e9)) for (_0x5ec9df = _0x57e4e9['length']; _0x3299a7 < _0x5ec9df && !0x1 !== _0x39422b['call'](_0x57e4e9[_0x3299a7], _0x3299a7, _0x57e4e9[_0x3299a7]); _0x3299a7++) ; else for (_0x3299a7 in _0x57e4e9) if (!0x1 === _0x39422b['call'](_0x57e4e9[_0x3299a7], _0x3299a7, _0x57e4e9[_0x3299a7])) break; return _0x57e4e9; }, 'trim': function(_0x4d4ba5) { return null == _0x4d4ba5 ? '' : (_0x4d4ba5 + '')['replace'](_0x40859f, ''); }, 'makeArray': function(_0x41252f, _0x26343b) { var _0x1a38a9 = _0x26343b || []; return null != _0x41252f && (_0x101307(Object(_0x41252f)) ? _0x2fe45b['merge'](_0x1a38a9, 'string' == typeof _0x41252f ? [_0x41252f] : _0x41252f) : _0x12fa05['call'](_0x1a38a9, _0x41252f)), _0x1a38a9; }, 'inArray': function(_0x1e70e0, _0xd943c4, _0x26d4bd) { return null == _0xd943c4 ? -0x1 : _0x3f165a['call'](_0xd943c4, _0x1e70e0, _0x26d4bd); }, 'merge': function(_0x3ec620, _0x175bec) { for (var _0x55b54c = +_0x175bec['length'], _0x4bfc0b = 0x0, _0x53ae1d = _0x3ec620['length']; _0x4bfc0b < _0x55b54c; _0x4bfc0b++) _0x3ec620[_0x53ae1d++] = _0x175bec[_0x4bfc0b]; return _0x3ec620['length'] = _0x53ae1d, _0x3ec620; }, 'grep': function(_0x83f3af, _0x15c30a, _0x37de5e) { for (var _0x51a87b = [], _0x29451f = 0x0, _0x15054a = _0x83f3af['length'], _0x50dfcc = !_0x37de5e; _0x29451f < _0x15054a; _0x29451f++) _0x37de5e = !_0x15c30a(_0x83f3af[_0x29451f], _0x29451f), _0x37de5e !== _0x50dfcc && _0x51a87b['push'](_0x83f3af[_0x29451f]); return _0x51a87b; }, 'map': function(_0x1e13b8, _0x12dc8a, _0x2fcbee) { var _0x3728a3, _0x581618, _0x4720e7 = 0x0, _0x413eed = []; if (_0x101307(_0x1e13b8)) for (_0x3728a3 = _0x1e13b8['length']; _0x4720e7 < _0x3728a3; _0x4720e7++) _0x581618 = _0x12dc8a(_0x1e13b8[_0x4720e7], _0x4720e7, _0x2fcbee), null != _0x581618 && _0x413eed['push'](_0x581618); else for (_0x4720e7 in _0x1e13b8) _0x581618 = _0x12dc8a(_0x1e13b8[_0x4720e7], _0x4720e7, _0x2fcbee), null != _0x581618 && _0x413eed['push'](_0x581618); return _0x50702c['apply']([], _0x413eed); }, 'guid': 0x1, 'proxy': function(_0x1f0fcb, _0x49a806) { var _0x3b7feb, _0x523491, _0x507887; if ('string' == typeof _0x49a806 && (_0x3b7feb = _0x1f0fcb[_0x49a806], _0x49a806 = _0x1f0fcb, _0x1f0fcb = _0x3b7feb), _0x2fe45b['isFunction'](_0x1f0fcb)) return _0x523491 = _0x14a5ab['call'](arguments, 0x2), _0x507887 = function() { return _0x1f0fcb['apply'](_0x49a806 || this, _0x523491['concat'](_0x14a5ab['call'](arguments))); } , _0x507887['guid'] = _0x1f0fcb['guid'] = _0x1f0fcb['guid'] || _0x2fe45b['guid']++, _0x507887; }, 'now': Date['now'], 'support': _0x2c4db4 }); 'function' == typeof Symbol && (_0x2fe45b['fn'][Symbol['iterator']] = _0x4a6ffb[Symbol['iterator']]); _0x2fe45b['each']('Boolean\x20Number\x20String\x20Function\x20Array\x20Date\x20RegExp\x20Object\x20Error\x20Symbol'['split']('\x20'), function(_0x513559, _0x4c5b4b) { _0xae2710['[object\x20' + _0x4c5b4b + ']'] = _0x4c5b4b['toLowerCase'](); }); var _0xb44bfd, _0x38be05 = _0x15b18d, _0x16fbee = function(_0x2e2bdb, _0x3ebfc8, _0x1fb1c4, _0xb8cca1) { var _0x2a3e5c, _0x506fe6, _0x2688b2, _0x3df85e, _0x374f44, _0x5f17ed = _0x3ebfc8 && _0x3ebfc8['ownerDocument'], _0xf9681f = _0x3ebfc8 ? _0x3ebfc8['nodeType'] : 0x9; if (_0x1fb1c4 = _0x1fb1c4 || [], 'string' != typeof _0x2e2bdb || !_0x2e2bdb || 0x1 !== _0xf9681f && 0x9 !== _0xf9681f && 0xb !== _0xf9681f) return _0x1fb1c4; if (!_0xb8cca1 && ((_0x3ebfc8 ? _0x3ebfc8['ownerDocument'] || _0x3ebfc8 : _0x38b951) !== _0x5cb5f6 && _0x5746b4(_0x3ebfc8), _0x3ebfc8 = _0x3ebfc8 || _0x5cb5f6, _0x568167)) { if (0xb !== _0xf9681f && (_0x3df85e = _0x359bd3['exec'](_0x2e2bdb))) if (_0x2a3e5c = _0x3df85e[0x1]) if (0x9 === _0xf9681f) { if (!(_0x506fe6 = _0x3ebfc8['getElementById'](_0x2a3e5c))) return _0x1fb1c4; if (_0x506fe6['id'] === _0x2a3e5c) return _0x1fb1c4['push'](_0x506fe6), _0x1fb1c4; } else { if (_0x5f17ed && (_0x506fe6 = _0x5f17ed['getElementById'](_0x2a3e5c)) && _0x148061(_0x3ebfc8, _0x506fe6) && _0x506fe6['id'] === _0x2a3e5c) return _0x1fb1c4['push'](_0x506fe6), _0x1fb1c4; } else { if (_0x3df85e[0x2]) return _0x123181['apply'](_0x1fb1c4, _0x3ebfc8['getElementsByTagName'](_0x2e2bdb)), _0x1fb1c4; if ((_0x2a3e5c = _0x3df85e[0x3]) && _0x55e63e['getElementsByClassName'] && _0x3ebfc8['getElementsByClassName']) return _0x123181['apply'](_0x1fb1c4, _0x3ebfc8['getElementsByClassName'](_0x2a3e5c)), _0x1fb1c4; } if (_0x55e63e['qsa'] && !_0x579ca8[_0x2e2bdb + '\x20'] && (!_0x186cb4 || !_0x186cb4['test'](_0x2e2bdb))) { if (0x1 !== _0xf9681f) _0x5f17ed = _0x3ebfc8, _0x374f44 = _0x2e2bdb; else if ('object' !== _0x3ebfc8['nodeName']['toLowerCase']()) { (_0x2688b2 = _0x3ebfc8['getAttribute']('id')) ? _0x2688b2 = _0x2688b2['replace'](_0x48a1aa, _0x463547) : _0x3ebfc8['setAttribute']('id', _0x2688b2 = _0x1a1c40); _0x506fe6 = _0xd7db61(_0x2e2bdb); for (_0x2a3e5c = _0x506fe6['length']; _0x2a3e5c--; ) _0x506fe6[_0x2a3e5c] = '#' + _0x2688b2 + '\x20' + _0x2927e9(_0x506fe6[_0x2a3e5c]); _0x374f44 = _0x506fe6['join'](','); _0x5f17ed = _0x1541e9['test'](_0x2e2bdb) && _0x1aaa16(_0x3ebfc8['parentNode']) || _0x3ebfc8; } if (_0x374f44) try { return _0x123181['apply'](_0x1fb1c4, _0x5f17ed['querySelectorAll'](_0x374f44)), _0x1fb1c4; } catch (_0x2d0c85) {} finally { _0x2688b2 === _0x1a1c40 && _0x3ebfc8['removeAttribute']('id'); } } } return _0x44d731(_0x2e2bdb['replace'](_0x23323e, '$1'), _0x3ebfc8, _0x1fb1c4, _0xb8cca1); }, _0x205de5 = function() { function _0x48cbdc(_0x3e3fbf, _0x8bf8b3) { return _0x22944f['push'](_0x3e3fbf + '\x20') > _0x2faa16['cacheLength'] && delete _0x48cbdc[_0x22944f['shift']()], _0x48cbdc[_0x3e3fbf + '\x20'] = _0x8bf8b3; } var _0x22944f = []; return _0x48cbdc; }, _0x366f5b = function(_0x17812e) { return _0x17812e[_0x1a1c40] = !0x0, _0x17812e; }, _0x50a800 = function(_0x26d6a2) { var _0x3da633 = _0x5cb5f6['createElement']('fieldset'); try { return !!_0x26d6a2(_0x3da633); } catch (_0x4ff4a5) { return !0x1; } finally { _0x3da633['parentNode'] && _0x3da633['parentNode']['removeChild'](_0x3da633); } }, _0xba26a0 = function(_0x1e1e71, _0x136f01) { for (var _0x16897e = _0x1e1e71['split']('|'), _0x1d2a60 = _0x16897e['length']; _0x1d2a60--; ) _0x2faa16['attrHandle'][_0x16897e[_0x1d2a60]] = _0x136f01; }, _0x5e481b = function(_0x50ecf8, _0xb29d2c) { var _0x36e139 = _0xb29d2c && _0x50ecf8 , _0x24fe3c = _0x36e139 && 0x1 === _0x50ecf8['nodeType'] && 0x1 === _0xb29d2c['nodeType'] && _0x50ecf8['sourceIndex'] - _0xb29d2c['sourceIndex']; if (_0x24fe3c) return _0x24fe3c; if (_0x36e139) for (; _0x36e139 = _0x36e139['nextSibling']; ) if (_0x36e139 === _0xb29d2c) return -0x1; return _0x50ecf8 ? 0x1 : -0x1; }, _0x2bb829 = function(_0x358e20) { return function(_0x385a25) { return 'input' === _0x385a25['nodeName']['toLowerCase']() && _0x385a25['type'] === _0x358e20; } ; }, _0x35075b = function(_0x3fc249) { return function(_0x4428b5) { var _0x2912a4 = _0x4428b5['nodeName']['toLowerCase'](); return ('input' === _0x2912a4 || 'button' === _0x2912a4) && _0x4428b5['type'] === _0x3fc249; } ; }, _0x31f042 = function(_0x23585c) { return function(_0x51a75c) { return 'form'in _0x51a75c ? _0x51a75c['parentNode'] && !0x1 === _0x51a75c['disabled'] ? 'label'in _0x51a75c ? 'label'in _0x51a75c['parentNode'] ? _0x51a75c['parentNode']['disabled'] === _0x23585c : _0x51a75c['disabled'] === _0x23585c : _0x51a75c['isDisabled'] === _0x23585c || _0x51a75c['isDisabled'] !== !_0x23585c && _0x1dfdc7(_0x51a75c) === _0x23585c : _0x51a75c['disabled'] === _0x23585c : 'label'in _0x51a75c && _0x51a75c['disabled'] === _0x23585c; } ; }, _0x350d4c = function(_0x5cd0bc) { return _0x366f5b(function(_0x374377) { return _0x374377 = +_0x374377, _0x366f5b(function(_0x166b78, _0x46575d) { for (var _0x5d5585, _0x2ffc21 = _0x5cd0bc([], _0x166b78['length'], _0x374377), _0x256434 = _0x2ffc21['length']; _0x256434--; ) _0x166b78[_0x5d5585 = _0x2ffc21[_0x256434]] && (_0x166b78[_0x5d5585] = !(_0x46575d[_0x5d5585] = _0x166b78[_0x5d5585])); }); }); }, _0x1aaa16 = function(_0x1a110f) { return _0x1a110f && 'undefined' != typeof _0x1a110f['getElementsByTagName'] && _0x1a110f; }, _0x1ebc4f = function() {}, _0x2927e9 = function(_0x1dab05) { for (var _0x214ce0 = 0x0, _0x2cfe10 = _0x1dab05['length'], _0x2564db = ''; _0x214ce0 < _0x2cfe10; _0x214ce0++) _0x2564db += _0x1dab05[_0x214ce0]['value']; return _0x2564db; }, _0x3424bc = function(_0x3dda70, _0x310616, _0x223630) { var _0x57bc97 = _0x310616['dir'] , _0x48086b = _0x310616['next'] , _0x1f8b91 = _0x48086b || _0x57bc97 , _0x209e68 = _0x223630 && 'parentNode' === _0x1f8b91 , _0x36af9a = _0x1e5b12++; return _0x310616['first'] ? function(_0x2a1827, _0x3be15d, _0x22f872) { for (; _0x2a1827 = _0x2a1827[_0x57bc97]; ) if (0x1 === _0x2a1827['nodeType'] || _0x209e68) return _0x3dda70(_0x2a1827, _0x3be15d, _0x22f872); return !0x1; } : function(_0xb4b713, _0x36b5a1, _0x332292) { var _0x2f3611, _0x20e218, _0x2d5cc8, _0x21c69e = [_0x50696c, _0x36af9a]; if (_0x332292) for (; _0xb4b713 = _0xb4b713[_0x57bc97]; ) { if ((0x1 === _0xb4b713['nodeType'] || _0x209e68) && _0x3dda70(_0xb4b713, _0x36b5a1, _0x332292)) return !0x0; } else for (; _0xb4b713 = _0xb4b713[_0x57bc97]; ) if (0x1 === _0xb4b713['nodeType'] || _0x209e68) if (_0x2d5cc8 = _0xb4b713[_0x1a1c40] || (_0xb4b713[_0x1a1c40] = {}), _0x20e218 = _0x2d5cc8[_0xb4b713['uniqueID']] || (_0x2d5cc8[_0xb4b713['uniqueID']] = {}), _0x48086b && _0x48086b === _0xb4b713['nodeName']['toLowerCase']()) _0xb4b713 = _0xb4b713[_0x57bc97] || _0xb4b713; else { if ((_0x2f3611 = _0x20e218[_0x1f8b91]) && _0x2f3611[0x0] === _0x50696c && _0x2f3611[0x1] === _0x36af9a) return _0x21c69e[0x2] = _0x2f3611[0x2]; if (_0x20e218[_0x1f8b91] = _0x21c69e, _0x21c69e[0x2] = _0x3dda70(_0xb4b713, _0x36b5a1, _0x332292)) return !0x0; } return !0x1; } ; }, _0x458013 = function(_0x19eb69) { return 0x1 < _0x19eb69['length'] ? function(_0xbaeac9, _0x57a976, _0x1b1c5b) { for (var _0x4779d9 = _0x19eb69['length']; _0x4779d9--; ) if (!_0x19eb69[_0x4779d9](_0xbaeac9, _0x57a976, _0x1b1c5b)) return !0x1; return !0x0; } : _0x19eb69[0x0]; }, _0x2ef5d9 = function(_0x134200, _0x9d2d98, _0x289e2e, _0x5090ce, _0x3e38de) { for (var _0x302a15, _0x3c5687 = [], _0xe3ac48 = 0x0, _0x3c0b26 = _0x134200['length'], _0x3d9cb0 = null != _0x9d2d98; _0xe3ac48 < _0x3c0b26; _0xe3ac48++) (_0x302a15 = _0x134200[_0xe3ac48]) && (_0x289e2e && !_0x289e2e(_0x302a15, _0x5090ce, _0x3e38de) || (_0x3c5687['push'](_0x302a15), _0x3d9cb0 && _0x9d2d98['push'](_0xe3ac48))); return _0x3c5687; }, _0x702f2d = function(_0x23d6ab, _0x4d47f6, _0x4f8f92, _0x25695b, _0x13c593, _0x29f509) { return _0x25695b && !_0x25695b[_0x1a1c40] && (_0x25695b = _0x702f2d(_0x25695b)), _0x13c593 && !_0x13c593[_0x1a1c40] && (_0x13c593 = _0x702f2d(_0x13c593, _0x29f509)), _0x366f5b(function(_0x661b58, _0x7317b9, _0x2f3fc8, _0x55b408) { var _0x262411, _0x5141af, _0x36f5b9 = [], _0x405085 = [], _0x5f395e = _0x7317b9['length'], _0x480c30; if (!(_0x480c30 = _0x661b58)) { _0x480c30 = _0x4d47f6 || '*'; for (var _0x33267c = _0x2f3fc8['nodeType'] ? [_0x2f3fc8] : _0x2f3fc8, _0x33bf3c = [], _0x218493 = 0x0, _0x3a8980 = _0x33267c['length']; _0x218493 < _0x3a8980; _0x218493++) _0x16fbee(_0x480c30, _0x33267c[_0x218493], _0x33bf3c); _0x480c30 = _0x33bf3c; } _0x480c30 = !_0x23d6ab || !_0x661b58 && _0x4d47f6 ? _0x480c30 : _0x2ef5d9(_0x480c30, _0x36f5b9, _0x23d6ab, _0x2f3fc8, _0x55b408); _0x33267c = _0x4f8f92 ? _0x13c593 || (_0x661b58 ? _0x23d6ab : _0x5f395e || _0x25695b) ? [] : _0x7317b9 : _0x480c30; if (_0x4f8f92 && _0x4f8f92(_0x480c30, _0x33267c, _0x2f3fc8, _0x55b408), _0x25695b) { _0x262411 = _0x2ef5d9(_0x33267c, _0x405085); _0x25695b(_0x262411, [], _0x2f3fc8, _0x55b408); for (_0x2f3fc8 = _0x262411['length']; _0x2f3fc8--; ) (_0x5141af = _0x262411[_0x2f3fc8]) && (_0x33267c[_0x405085[_0x2f3fc8]] = !(_0x480c30[_0x405085[_0x2f3fc8]] = _0x5141af)); } if (_0x661b58) { if (_0x13c593 || _0x23d6ab) { if (_0x13c593) { _0x262411 = []; for (_0x2f3fc8 = _0x33267c['length']; _0x2f3fc8--; ) (_0x5141af = _0x33267c[_0x2f3fc8]) && _0x262411['push'](_0x480c30[_0x2f3fc8] = _0x5141af); _0x13c593(null, _0x33267c = [], _0x262411, _0x55b408); } for (_0x2f3fc8 = _0x33267c['length']; _0x2f3fc8--; ) (_0x5141af = _0x33267c[_0x2f3fc8]) && -0x1 < (_0x262411 = _0x13c593 ? _0x22332e(_0x661b58, _0x5141af) : _0x36f5b9[_0x2f3fc8]) && (_0x661b58[_0x262411] = !(_0x7317b9[_0x262411] = _0x5141af)); } } else _0x33267c = _0x2ef5d9(_0x33267c === _0x7317b9 ? _0x33267c['splice'](_0x5f395e, _0x33267c['length']) : _0x33267c), _0x13c593 ? _0x13c593(null, _0x7317b9, _0x33267c, _0x55b408) : _0x123181['apply'](_0x7317b9, _0x33267c); }); }, _0x16fcae = function(_0x38a0e8) { var _0x50980a, _0x87ed71, _0x1860f6, _0x5381c4 = _0x38a0e8['length'], _0x42db05 = _0x2faa16['relative'][_0x38a0e8[0x0]['type']]; _0x87ed71 = _0x42db05 || _0x2faa16['relative']['\x20']; for (var _0x20472d = _0x42db05 ? 0x1 : 0x0, _0xa2b1b0 = _0x3424bc(function(_0x43b230) { return _0x43b230 === _0x50980a; }, _0x87ed71, !0x0), _0x2302a1 = _0x3424bc(function(_0x257c53) { return -0x1 < _0x22332e(_0x50980a, _0x257c53); }, _0x87ed71, !0x0), _0x2140f8 = [function(_0x48f672, _0x4d1013, _0x4f2cb1) { _0x48f672 = !_0x42db05 && (_0x4f2cb1 || _0x4d1013 !== _0xdc633) || ((_0x50980a = _0x4d1013)['nodeType'] ? _0xa2b1b0(_0x48f672, _0x4d1013, _0x4f2cb1) : _0x2302a1(_0x48f672, _0x4d1013, _0x4f2cb1)); return _0x50980a = null, _0x48f672; } ]; _0x20472d < _0x5381c4; _0x20472d++) if (_0x87ed71 = _0x2faa16['relative'][_0x38a0e8[_0x20472d]['type']]) _0x2140f8 = [_0x3424bc(_0x458013(_0x2140f8), _0x87ed71)]; else { if (_0x87ed71 = _0x2faa16['filter'][_0x38a0e8[_0x20472d]['type']]['apply'](null, _0x38a0e8[_0x20472d]['matches']), _0x87ed71[_0x1a1c40]) { for (_0x1860f6 = ++_0x20472d; _0x1860f6 < _0x5381c4 && !_0x2faa16['relative'][_0x38a0e8[_0x1860f6]['type']]; _0x1860f6++) ; return _0x702f2d(0x1 < _0x20472d && _0x458013(_0x2140f8), 0x1 < _0x20472d && _0x2927e9(_0x38a0e8['slice'](0x0, _0x20472d - 0x1)['concat']({ 'value': '\x20' === _0x38a0e8[_0x20472d - 0x2]['type'] ? '*' : '' }))['replace'](_0x23323e, '$1'), _0x87ed71, _0x20472d < _0x1860f6 && _0x16fcae(_0x38a0e8['slice'](_0x20472d, _0x1860f6)), _0x1860f6 < _0x5381c4 && _0x16fcae(_0x38a0e8 = _0x38a0e8['slice'](_0x1860f6)), _0x1860f6 < _0x5381c4 && _0x2927e9(_0x38a0e8)); } _0x2140f8['push'](_0x87ed71); } return _0x458013(_0x2140f8); }, _0x10df8c, _0x55e63e, _0x2faa16, _0x4c4a69, _0x107741, _0xd7db61, _0xb5ccc6, _0x44d731, _0xdc633, _0x3fb8bc, _0x24f60c, _0x5746b4, _0x5cb5f6, _0x4e517b, _0x568167, _0x186cb4, _0x58789d, _0x6b6205, _0x148061, _0x1a1c40 = 'sizzle' + 0x1 * new Date(), _0x38b951 = _0x38be05['document'], _0x50696c = 0x0, _0x1e5b12 = 0x0, _0x36722c = _0x205de5(), _0x49f548 = _0x205de5(), _0x579ca8 = _0x205de5(), _0x4014e9 = function(_0x215b9c, _0xab3d3e) { return _0x215b9c === _0xab3d3e && (_0x24f60c = !0x0), 0x0; }, _0x1da7b3 = {}['hasOwnProperty'], _0x205147 = [], _0x4ac7a6 = _0x205147['pop'], _0x4ad692 = _0x205147['push'], _0x123181 = _0x205147['push'], _0x3b6ca8 = _0x205147['slice'], _0x22332e = function(_0x31b3b2, _0xb00bfc) { for (var _0x519b7a = 0x0, _0x204b17 = _0x31b3b2['length']; _0x519b7a < _0x204b17; _0x519b7a++) if (_0x31b3b2[_0x519b7a] === _0xb00bfc) return _0x519b7a; return -0x1; }, _0x55be6d = /[\x20\t\r\n\f]+/g, _0x23323e = /^[\x20\t\r\n\f]+|((?:^|[^\\])(?:\\.)*)[\x20\t\r\n\f]+$/g, _0x8c06d9 = /^[\x20\t\r\n\f]*,[\x20\t\r\n\f]*/, _0xd09439 = /^[\x20\t\r\n\f]*([>+~]|[\x20\t\r\n\f])[\x20\t\r\n\f]*/, _0xfe6fa0 = /=[\x20\t\r\n\f]*([^\]'"]*?)[\x20\t\r\n\f]*\]/g, _0x195f7c = RegExp(':((?:\x5c\x5c.|[\x5cw-]|[^