 make_storage<bool>();
        run_single_stage(not_aligned(),
            stencil_backend_t(),
            TypeParam::make_grid(),
            TypeParam::make_storage(),
            out,
            positional<dim::i>());
        TypeParam::verify(false, out);
    }
} // namespace
/*
 * GridTools
 *
 * Copyright (c) 2014-2023, ETH Zurich
 * All rights reserved.
 *
 * Please, refer to the LICENSE file in the root directory.
 * SPDX-License-Identifier: BSD-3-Clause
 */
#include <type_traits>

#include <gridtools/common/integral_constant.hpp>
#include <gridtools/sid/rename_dimensions.hpp>
#include <gridtools/stencil/cartesian.hpp>
#include <gridtools/stencil/positional.hpp>

#include <stencil_select.hpp>
#include <test_environment.hpp>

namespace {
    using namespace gridtools;
    using namespace stencil;
    using namespace cartesian;
    using namespace literals;

    struct functor {
        using out = inout_accessor<0>;
        using in = in_accessor<1, extent<>, 4>;
        using k_pos = in_accessor<2>;
        using param_list = make_param_list<out, in, k_pos>;

        template <class Eval>
        GT_FUNCTION static void apply(Eval &&eval) {
            auto k = eval(k_pos());
            std::decay_t<decltype(eval(out()))> res = 0;
            for (int kk = 0; kk < k; ++kk)
                res += eval(in(0, 0, 0, kk));
            eval(out()) = res;
        }
    };

    GT_REGRESSION_TEST(whole_axis_access, test_environment<>, stencil_backend_t) {
        auto in = [](int i, int j, int k) { return i + j + k; };
        auto out = TypeParam::make_storage();
        run_single_stage(functor(),
            stencil_backend_t(),
            TypeParam::make_grid(),
            out,
            sid::rename_dimensions<dim::k, decltype(3_c)>(TypeParam::make_storage(in)),
            positional<dim::k>());
        TypeParam::verify(
            [in](int i, int j, int k) {
                int res = 0;
                for (int kk = 0; kk < k; ++kk)
                    res += in(i, j, kk);
                return res;
            },
            out);
    }
} // namespace
/*
 * GridTools
 *
 * Copyright (c) 2014-2023, ETH Zurich
 * All rights reserved.
 *
 * Please, refer to the LICENSE file in the root directory.
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include "gridtools/meta/debug.hpp"
#include <gtest/gtest.h>

#include <gridtools/sid/composite.hpp>
#include <gridtools/sid/dimension_to_tuple_like.hpp>
#include <gridtools/stencil/cartesian.hpp>

#include <stencil_select.hpp>
#include <test_environment.hpp>

namespace {
    using namespace gridtools;
    using namespace stencil;
    using namespace cartesian;

    struct copy_functor_unrolled {
        using in0 = in_accessor<0>;
        using in1 = in_accessor<1>;
        using in2 = in_accessor<2>;
        using in3 = in_accessor<3>;
        using in4 = in_accessor<4>;
        using out0 = inout_accessor<5>;
        using out1 = inout_accessor<6>;
        using out2 = inout_accessor<7>;
        using out3 = inout_accessor<8>;
        using out4 = inout_accessor<9>;

        using param_list = make_param_list<in0, in1, in2,


 RectI>>,
    {
        unsafe {
            errcode_to_result(R::BLIT_SCALED_IMAGE(
                self.core_mut(),
                dst as *const _ as *const _,
                src.core(),
                src_area
                    .into()
                    .map_or(ptr::null(), |r| r as *const _ as *const _),
            ))
        }
    }
}

/// Fill Operations
impl Context {
    pub fn fill_geometry<T: Geometry + ?Sized>(&mut self, geo: &T) -> Result<()> {
        unsafe {
            errcode_to_result(ffi::blContextFillGeometry(
                self.core_mut(),
                T::GEO_TYPE,
                geo as *const _ as *const _,
            ))
        }
    }

    #[inline]
    pub fn fill_all(&mut self) -> Result<()> {
        unsafe { errcode_to_result(ffi::blContextFillAll(self.core_mut())) }
    }

    #[inline]
    pub fn fill_box(&mut self, x0: f64, y0: f64, x1: f64, y1: f64) -> Result<()> {
        self.fill_geometry(&BoxD { x0, y0, x1, y1 })
    }

    #[inline]
    pub fn fill_rect(&mut self, x: f64, y: f64, w: f64, h: f64) -> Result<()> {
        self.fill_geometry(&RectD { x, y, w, h })
    }

    #[inline]
    pub fn fill_circle(&mut self, cx: f64, cy: f64, r: f64) -> Result<()> {
        self.fill_geometry(&Circle { cx, cy, r })
    }

    #[inline]
    pub fn fill_ellipse(&mut self, cx: f64, cy: f64, rx: f64, ry: f64) -> Result<()> {
        self.fill_geometry(&Ellipse { cx, cy, rx, ry })
    }

    #[inline]
    #[rustfmt::skip]
    pub fn fill_round_rect(&mut self, x: f64, y: f64, w: f64, h: f64, rx: f64, ry: f64) -> Result<()> {
        self.fill_geometry(&RoundRect { x, y, w, h, rx, ry })
    }

    #[inline]
    #[rustfmt::skip]
    pub fn fill_arc(&mut self, cx: f64, cy: f64, rx: f64, ry: f64, start: f64, sweep: f64) -> Result<()> {
        self.fill_geometry(&Arc { cx, cy, rx, ry, start, sweep })
    }

    #[inline]
    #[rustfmt::skip]
    pub fn fill_chord(&mut self, cx: f64, cy: f64, rx: f64, ry: f64, start: f64, sweep: f64) -> Result<()> {
        self.fill_geometry(&Chord { cx, cy, rx, ry, start, sweep })
    }

    #[inline]
    #[rustfmt::skip]
    pub fn fill_pie(&mut self, cx: f64, cy: f64, rx: f64, ry: f64, start: f64, sweep: f64) -> Result<()> {
        self.fill_geometry(&Pie { cx, cy, rx, ry, start, sweep })
    }

    #[inline]
    #[rustfmt::skip]
    pub fn fill_triangle(&mut self, x0: f64, y0: f64, x1: f64, y1: f64, x2: f64, y2: f64) -> Result<()> {
        self.fill_geometry(&Triangle { x0, y0, x1, y1, x2, y2 })
    }

    #[inline]
    pub fn fill_path(&mut self, p: &Path) -> Result<()> {
        self.fill_geometry(p)
    }

    #[inline]
    pub fn fill_polygon<R


a');
        print('   Other fields saved correctly: name = ${rawData['name']}');
      },
    );

    test('should retrieve and deserialize JsonKey user correctly', () async {
      // Create user and save to Firestore
      final originalUser = JsonKeyUser(
        id: 'json_key_user_3',
        name: 'Charlie Deserialize',
        email: 'charlie@deserialize.com',
        age: 35,
        isPremium: true,
        rating: 4.9,
        createdAt: DateTime.now(),
        tags: ['deserialize', 'test', 'json'],
      );

      await odm.jsonKeyUsers(originalUser.id).update(originalUser);

      // Retrieve using ODM
      final retrievedUser = await odm.jsonKeyUsers(originalUser.id).get();

      expect(retrievedUser, isNotNull);
      expect(retrievedUser!.id, equals(originalUser.id));
      expect(retrievedUser.name, equals(originalUser.name));
      expect(retrievedUser.email, equals(originalUser.email));
      expect(retrievedUser.age, equals(originalUser.age));
      expect(retrievedUser.isPremium, equals(originalUser.isPremium));
      expect(retrievedUser.rating, equals(originalUser.rating));
      expect(retrievedUser.tags, equals(originalUser.tags));

      // Verify secretField is null (since it's ignored)
      expect(
        retrievedUser.secretField,
        isNull,
        reason: 'secretField should be null when retrieved',
      );

      print('✅ Deserialization verified:');
      print('   Retrieved user: ${retrievedUser.name}');
      print('   Email: ${retrievedUser.email}');
      print('   Age: ${retrievedUser.age}');
      print('   Premium: ${retrievedUser.isPremium}');
      print('   Rating: ${retrievedUser.rating}');
      print('   Secret field: ${retrievedUser.secretField} (should be null)');
    });

    test('should handle JsonKey annotations in queries', () async {
      // Create multiple users with different premium status
      final users = [
        const JsonKeyUser(
          id: 'premium_user_1',
          name: 'Premium User 1',
          email: 'premium1@test.com',
          age: 30,
          isPremium: true,
          rating: 4.8,
          tags: ['premium'],
        ),
        const JsonKeyUser(
          id: 'premium_user_2',
          name: 'Premium User 2',
          email: 'premium2@test.com',
          age: 25,
          isPremium: true,
          rating: 4.9,
          tags: ['premium'],
        ),
        const JsonKeyUser(
          id: 'regular_user_1',
          name: 'Regular User 1',
          email: 'regular1@test.com',
          age: 28,
          rating: 3.5,
          tags: ['regular'],
        ),
      ];

      // Save all users
      for (final user in users) {
        await odm.jsonKeyUsers(user.id).update(user);
      }

      // Query for premium users using the renamed field
      final premiumUsers = await odm.jsonKeyUsers
          .where(($) => $.isPremium(isEqualTo: true))
          .get();

      expect(premiumUsers.length, equals(2));
      expect(premiumUsers.every((user) => user.isPremium), isTrue);

      // Query by age range using the renamed field
      final youngUsers = await odm.jsonKeyUsers
          .where(($) => $.age(isLessThan: 30))
          .get();

      expect(youngUsers.length, equals(2)); // ages 25 and 28
      expect(youngUsers.every((user) => user.age < 30), isTrue);

      print('✅ Query operations verified:');
      print('   Premium users found: ${premiumUsers.length}');
      print('   Young users found: ${youngUsers.length}');
      print('   Premium users: ${premiumUsers.map((u) => u.name).join(', ')}');
      print(
        '


  LogicalTableScan(table=[[" + appName + ", t2]])\n";
        assertThat(str(root), is(expected));

        final ExtractionResult er = ConditionExtractor.partitioningConditionFrom(root).extract();

        checkCondition(root, er.conditionOf(appName, "t1").intersect(), "true");
        checkCondition(root, er.conditionOf(appName, "t2").intersect(), "=($0, 6)");

        final RelNode join = root;

        ExtractionResult ce = ConditionExtractor.columnEquivalenceFrom(root).extract();
        Map<Integer, BitSet> bitSets = ce.conditionOf(join).toColumnEquality();
        assertThat(bitSets.get(0), is(BitSets.of(0, 3)));
        assertThat(bitSets.get(3), is(BitSets.of(0, 3)));

        final Label rootLabel = er.getRootLabel();
        System.out.println(rootLabel.toString());
    }

    @Test
    public void testScanLeftJoinOnCondition10() {
        // Equivalent SQL:
        //   SELECT *
        //   FROM t1 LEFT JOIN t2 ON t1.id = t1.name AND t1.name = t2.id AND t1.id = 6
        final RelBuilder builder = getRelBuilder();
        RelNode root = builder.scan("t1")
            .scan("t2")
            .join(JoinRelType.LEFT,
                builder.call(SqlStdOperatorTable.EQUALS,
                    builder.field(2, 0, 0),
                    builder.field(2, 0, 1)),
                builder.call(SqlStdOperatorTable.EQUALS,
                    builder.field(2, 0, 1),
                    builder.field(2, 1, 0)),
                builder.call(SqlStdOperatorTable.EQUALS,
                    builder.field(2, 0, 0),
                    builder.literal(6)))
            .build();
        final String expected = ""
            + "LogicalJoin(condition=[AND(=($0, $1), =($1, $3), =($0, 6))], joinType=[LEFT])\n"
            + "  LogicalTableScan(table=[[" + appName + ", t1]])\n"
            + "  LogicalTableScan(table=[[" + appName + ", t2]])\n";
        assertThat(str(root), is(expected));

        final ExtractionResult er = ConditionExtractor.partitioningConditionFrom(root).extract();

        checkCondition(root, er.conditionOf(appName, "t1").intersect(), "true");
        checkCondition(root, er.conditionOf(appName, "t2").intersect(), "=($0, 6)");

        final RelNode join = root;

        ExtractionResult ce = ConditionExtractor.columnEquivalenceFrom(root).extract();
        Map<Integer, BitSet> bitSets = ce.conditionOf(join).toColumnEquality();
        assertThat(bitSets.get(0), is(BitSets.of(0, 3)));
        assertThat(bitSets.get(1), is(BitSets.of(1, 3)));
        assertThat(bitSets.get(3), is(BitSets.of(0, 1, 3)));

        final Label rootLabel = er.getRootLabel();
        System.out.println(rootLabel.toString());
    }
}
package com.alibaba.polardbx.optimizer.partition.datatype;

import com.alibaba.polardbx.common.datatype.Decimal;
import com.alibaba.polardbx.common.datatype.DecimalBounds;
import com.alibaba.polardbx.common.utils.Assert;
import com.alibaba.polardbx.optimizer.context.ExecutionContext;
import com.alibaba.polardbx.optimizer.core.datatype.DataType;
import com.alibaba.polardbx.optimizer.core.datatype.DataTypes;
import com.alibaba.polardbx.optimizer.core.datatype.DecimalType;
import com.alibaba.polardbx.optimizer.core.datatype.DoubleType;
import com.alibaba.polardbx.optimizer.core.datatype.LongType;
import com.alibaba.polardbx.optimizer.core.d


hain.FundAccount(
				suite.app.BankKeeper, suite.ctx, addr,
				utils.ParseCoins("1000000000000denom1, 1000000000000denom2")))
	}

	assertBalance(addrs[0], denom3, 0)
	assertAllRewards(addrs[0], "")
	assertBalance(addrs[1], denom3, 0)
	assertAllRewards(addrs[1], "")

	suite.executeBlock(utils.ParseTime("2022-04-01T23:00:00Z"), func() {
		suite.Stake(addrs[0], utils.ParseCoins("1000000denom1"))
		suite.Stake(addrs[1], utils.ParseCoins("500000denom1,500000denom2"))
	})
	suite.executeBlock(utils.ParseTime("2022-04-02T00:00:00Z"), nil) // next epoch
	suite.executeBlock(utils.ParseTime("2022-04-02T23:00:00Z"), nil) // queued -> staked

	assertBalance(addrs[0], denom3, 0)
	assertAllRewards(addrs[0], "")
	assertBalance(addrs[1], denom3, 0)
	assertAllRewards(addrs[1], "")

	suite.executeBlock(utils.ParseTime("2022-04-03T00:00:00Z"), nil) // rewards distribution
	assertBalance(addrs[0], denom3, 0)
	assertAllRewards(addrs[0], "200000denom3") // 300000 * 2/3
	assertBalance(addrs[1], denom3, 0)
	assertAllRewards(addrs[1], "800000denom3") // 300000 * 1/3 + 700000

	suite.executeBlock(utils.ParseTime("2022-04-03T01:00:00Z"), func() {
		suite.Stake(addrs[0], utils.ParseCoins("500000denom1"))
	})
	suite.executeBlock(utils.ParseTime("2022-04-04T00:00:00Z"), nil)
	assertAllRewards(addrs[0], "400000denom3")
	assertAllUnharvestedRewards(addrs[0], "")
	suite.executeBlock(utils.ParseTime("2022-04-04T01:00:00Z"), nil)
	assertBalance(addrs[0], denom3, 0)
	assertAllRewards(addrs[0], "")
	assertAllUnharvestedRewards(addrs[0], "400000denom3")
	assertBalance(addrs[1], denom3, 0)
	assertAllRewards(addrs[1], "1600000denom3")

	suite.executeBlock(utils.ParseTime("2022-04-04T01:30:00Z"), func() {
		// User can unstake multiple times before the end of the epoch
		suite.Unstake(addrs[1], utils.ParseCoins("200000denom1,200000denom2"))
		suite.Unstake(addrs[1], utils.ParseCoins("50000denom1,50000denom2"))
		// addrs[1] now has 250000denom1,250000denom2 staked
	})

	assertBalance(addrs[1], denom3, 0)
	assertAllRewards(addrs[1], "")
	assertAllUnharvestedRewards(addrs[1], "1600000denom3")

	suite.executeBlock(utils.ParseTime("2022-04-05T00:00:00Z"), nil)
	assertAllRewards(addrs[0], "257142denom3") // 300000 * (6/7)
	assertAllRewards(addrs[1], "742857denom3") // 300000 * (1/7) + 700000

	suite.executeBlock(utils.ParseTime("2022-04-05T12:00:00Z"), func() {
		suite.Harvest(addrs[0], []string{denom1})
		suite.Harvest(addrs[1], []string{denom1, denom2})
		suite.Harvest(addrs[1], []string{denom1, denom2})
		suite.Harvest(addrs[1], []string{


3 C229,-170 228,-166 201,-169 C155,-174 134,-137 134,-90 C134,-49 158,-15 207,-15 C221,-15 236,-18 248,-23 L239,-41 C227,-35 216,-32 204,-32 Z M291,-166 L274,-166 L274,-18 L358,-18 L358,-35 L291,-35 L291,-87 L352,-87 L352,-102 L291,-102 Z M402,-166 L382,-166 L382,-18 L466,-18 L466,-35 L402,-35 L402,-87 L463,-87 L463,-102 L402,-102 Z" /></symbol><use x="0" y="0" xlink:href="#SFNT-1/1.A" /></svg>
    <svg version="1.1" viewBox="0 -200 600 1200"><symbol id="SFNT-1/2.B" overflow="visible"><path d="M344,0 C451,0 556,56 556,187 C556,309 469,356 387,369 C489,381 523,472 523,527 C523,636 440,700 315,700 C300,700 207,698 74,700 L74,0 C179,-1 275,0 344,0 Z M186,424 L186,606 L286,606 C320,606 416,593 416,517 C416,447 361,424 296,424 Z M186,100 L186,310 L271,310 C345,310 446,295 446,207 C446,126 393,100 318,100 Z M204,-32 C167,-32 154,-56 154,-93 C154,-131 168,-152 204,-152 C216,-152 227,-152 242,-146 L242,-163 C229,-170 228,-166 201,-169 C155,-174 134,-137 134,-90 C134,-49 158,-15 207,-15 C221,-15 236,-18 248,-23 L239,-41 C227,-35 216,-32 204,-32 Z M291,-166 L274,-166 L274,-18 L358,-18 L358,-35 L291,-35 L291,-87 L352,-87 L352,-102 L291,-102 Z M402,-166 L382,-166 L382,-18 L466,-18 L466,-35 L402,-35 L402,-87 L463,-87 L463,-102 L402,-102 Z" /></symbol><use x="0" y="0" xlink:href="#SFNT-1/2.B" /></svg>

    Observed
    <svg version="1.1" viewBox="0 -200 609 1200"><symbol id="OBSERVED/SFNT-1/1.A" overflow="visible"><path d="M206,220 L132,0 L5,0 L241,700 L368,700 L604,0 L477,0 L403,220 Z M305,512 L237,310 L372,310 Z M424,-49 L424,-43 Q424,-29 427,-26 Q433,-20 439,-20 Q442,-20 445,-21 Q449,-22 454,-23 L458,-11 Q454,-10 449,-9 Q444,-7 439,-7 Q424,-7 415,-16 Q407,-25 407,-43 L407,-48 L391,-54 L391,-61 L407,-61 L407,-145 L424,-145 L424,-61 L447,-61 L447,-49 Z M265,-10 L265,-145 L281,-145 L281,-10 Z M218,-148 Q218,-162 212,-168 Q206,-175 193,-175 Q170,-175 157,-167 L157,-182 Q172,-188 192,-188 Q214,-188 225,-178 Q235,-167 235,-146 L235,-49 L222,-49 L220,-61 L218,-61 Q209,-47 190,-47 Q170,-47 160,-60 Q149,-73 149,-97 Q149,-122 160,-133 Q170,-146 190,-146 Q210,-146 218,-132 L219,-132 L218,-144 Z M330,-158 Q326,-168 322,-170 Q314,-176 309,-176 Q306,-176 298,-174 L298,-186 Q306,-188 311


unction () {
        // TODO(indutny): add negative numbers when the time will come
        assert.equal(new BN('69527932928').shrn(13).toString(16), '818180');
        assert.equal(new BN('69527932928').shrn(17).toString(16), '81818');
        assert.equal(new BN('69527932928').shrn(256).toString(16), '0');
      });

      it('should ushr numbers', function () {
        assert.equal(new BN('69527932928').ushrn(13).toString(16), '818180');
        assert.equal(new BN('69527932928').ushrn(17).toString(16), '81818');
        assert.equal(new BN('69527932928').ushrn(256).toString(16), '0');
      });
    });

    describe('.bincn()', function () {
      it('should increment bit', function () {
        assert.equal(new BN(0).bincn(1).toString(16), '2');
        assert.equal(new BN(2).bincn(1).toString(16), '4');
        assert.equal(
          new BN(2).bincn(1).bincn(1).toString(16),
          new BN(2).bincn(2).toString(16)
        );
        assert.equal(new BN(0xffffff).bincn(1).toString(16), '1000001');
        assert.equal(new BN(2).bincn(63).toString(16), '8000000000000002');
      });
    });

    describe('.imaskn()', function () {
      it('should mask bits in-place', function () {
        assert.equal(new BN(0).imaskn(1).toString(16), '0');
        assert.equal(new BN(3).imaskn(1).toString(16), '1');
        assert.equal(new BN('123456789', 16).imaskn(4).toString(16), '9');
        assert.equal(new BN('123456789', 16).imaskn(16).toString(16), '6789');
        assert.equal(
          new BN('123456789', 16).imaskn(28).toString(16),
          '3456789'
        );
      });

      it('should not mask when number is bigger than length', function () {
        assert.equal(new BN(0xe3).imaskn(56).toString(16), 'e3');
        assert.equal(new BN(0xe3).imaskn(26).toString(16), 'e3');
      });
    });

    describe('.testn()', function () {
      it('should support test specific bit', function () {
        [
          'ff',
          'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
        ].forEach(function (hex) {
          var bn = new BN(hex, 16);
          var bl = bn.bitLength();

          for (var i = 0; i < bl; ++i) {
            assert.equal(bn.testn(i), true);
          }

          // test off the end
          assert.equal(bn.testn(bl), false);
        });

        var xbits =
          '01111001010111001001000100011101' +
          '11010011101100011000111001011101' +
          '10010100111000000001011000111101' +
          '01011111001111100100011110000010' +
          '01011010100111010001010011000100' +
          '01101001011110100001001111100110' +
          '001110010111';

        var x = new BN(
          '23478905234580795234378912401239784125643978256123048348957342'
        );
        for (var i = 0; i < x.bitLength(); ++i) {
          assert.equal(
            x.testn(i),
            xbits.charAt(i) === '1',
            'Failed @ bit ' + i
          );
        }
      });

      it('should have short-cuts', function () {
        var x = new BN('abcd', 16);
        assert(!x.testn(128));
      });
    });

    describe('.and()', function () {
      it('should and numbers', function () {


ss __$VersionDataCopyWithImpl<$Res>
    implements _$VersionDataCopyWith<$Res> {
  __$VersionDataCopyWithImpl(this._self, this._then);

  final _VersionData _self;
  final $Res Function(_VersionData) _then;

/// Create a copy of VersionData
/// with the given fields replaced by the non-null parameter values.
@override @pragma('vm:prefer-inline') $Res call({Object? core = null,Object? web = null,Object? ftl = null,Object? docker = null,}) {
  return _then(_VersionData(
core: null == core ? _self.core : core // ignore: cast_nullable_to_non_nullable
as Core,web: null == web ? _self.web : web // ignore: cast_nullable_to_non_nullable
as Web,ftl: null == ftl ? _self.ftl : ftl // ignore: cast_nullable_to_non_nullable
as FTL,docker: null == docker ? _self.docker : docker // ignore: cast_nullable_to_non_nullable
as Docker,
  ));
}

/// Create a copy of VersionData
/// with the given fields replaced by the non-null parameter values.
@override
@pragma('vm:prefer-inline')
$CoreCopyWith<$Res> get core {

  return $CoreCopyWith<$Res>(_self.core, (value) {
    return _then(_self.copyWith(core: value));
  });
}/// Create a copy of VersionData
/// with the given fields replaced by the non-null parameter values.
@override
@pragma('vm:prefer-inline')
$WebCopyWith<$Res> get web {

  return $WebCopyWith<$Res>(_self.web, (value) {
    return _then(_self.copyWith(web: value));
  });
}/// Create a copy of VersionData
/// with the given fields replaced by the non-null parameter values.
@override
@pragma('vm:prefer-inline')
$FTLCopyWith<$Res> get ftl {

  return $FTLCopyWith<$Res>(_self.ftl, (value) {
    return _then(_self.copyWith(ftl: value));
  });
}/// Create a copy of VersionData
/// with the given fields replaced by the non-null parameter values.
@override
@pragma('vm:prefer-inline')
$DockerCopyWith<$Res> get docker {

  return $DockerCopyWith<$Res>(_self.docker, (value) {
    return _then(_self.copyWith(docker: value));
  });
}
}

/// @nodoc
mixin _$Core {

 LocalVersion get local; RemoteVersion get remote;
/// Create a copy of Core
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
$CoreCopyWith<Core> get copyWith => _$CoreCopyWithImpl<Core>(this as Core, _$identity);

  /// Serializes this Core to a JSON map.
  Map<String, dynamic> toJson();

@override
bool operator ==(Object other) {
  return identical(this, other) || (other.runtimeType == runtimeType&&other is Core&&(identical(other.local, local) || other.local == local)&&(identical(other.remote, remote) || other.remote == remote));
}

@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hash(runtimeType,local,remote);

@override
String toString() {
  return 'Core(local: $local, remote: $remote)';
}

}

/// @nodoc
abstract mixin class $CoreCopyWith<$Res>  {
  factory $CoreCopyWith(Core value, $Res Function(Core) _then) = _$CoreCopyWithImpl;
@useResult
$Res call({
 LocalVersion local, RemoteVersion remote
});

$LocalVersionCopyWith<$Res> get local;


:10: error: unexpected token in argument list
  ginvt            # CHECK: :[[@LINE]]:3: error: too few operands for instruction
  ginvt 0          # CHECK: :[[@LINE]]:9: error: invalid operand for instruction
  ginvt $4         # CHECK: :[[@LINE]]:3: error: too few operands for instruction
  ginvt $4, $5     # CHECK: :[[@LINE]]:13: error: expected 2-bit unsigned immediate
  ginvt $4, 4      # CHECK: :[[@LINE]]:13: error: expected 2-bit unsigned immediate
  ginvt $4, -1     # CHECK: :[[@LINE]]:13: error: expected 2-bit unsigned immediate
  ginvt $4, 0, 1   # CHECK: :[[@LINE]]:16: error: invalid operand for instruction
  ginvt $4, 0($4)  # CHECK: :[[@LINE]]:14: error: invalid operand for instruction


// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using System;

namespace Microsoft.MixedReality.Toolkit.Utilities
{
    /// <summary>
    /// The supported platforms for Mixed Reality Toolkit components and features.
    /// </summary>
    [Flags]
    public enum SupportedPlatforms
    {
        WindowsStandalone = 1 << 0,
        MacStandalone = 1 << 1,
        LinuxStandalone = 1 << 2,
        WindowsUniversal = 1 << 3,
        WindowsEditor = 1 << 4,
        Android = 1 << 5,
        MacEditor = 1 << 6,
        LinuxEditor = 1 << 7,
        IOS = 1 << 8,
        Web = 1 << 9,
        Lumin = 1 << 10
    }

    /// <summary>
    /// The supported Unity XR pipelines for Mixed Reality Toolkit components and features.
    /// </summary>
    [Flags]
    public enum SupportedUnityXRPipelines
    {
#if UNITY_2020_1_OR_NEWER
        [Obsolete("The legacy XR pipeline has been re


r3, #0                  @ r2..r3 = -ct01

    mov     r4, r2
    mov     r5, r3                      @ r4..r5 = -ct01

    @ r2..r3 = -ct01
    @ r4..r5 = -ct01
    @ r6     =  X1
    @ r7     =  X16
    @ r8     =  X7
    @ r9     =  X10
    @ r10    = -K03
    @ r11    =  K02
    @ r12    = -K14
    @ lr     = -K15

    smlal   r4, r5, r12, r7             @ r4..r5 = -ct01 + (X16 * -K14)
    smlal   r2, r3,  lr, r9             @ r2..r3 = -ct01 + (X10 * -K15)

    smlal   r4, r5, r10, r8             @ r4..r5 += (X7  * -K03)
    smlal   r2, r3, r10, r7             @ r2..r3 += (X16 * -K03)

    smlal   r4, r5, r11, r9             @ r4..r5 += (X10 *  K02)
    smlal   r2, r3, r12, r8             @ r2..r3 += (X7  * -K14)

    rsb     lr, lr, #0                  @ lr  =  K15
    rsb     r11, r11, #0                @ r11 = -K02

    smlal   r4, r5,  lr, r6             @ r4..r5 += (X1  *  K15) = ct05
    smlal   r2, r3, r11, r6             @ r2..r3 += (X1  * -K02) = ct03

    stmdb   sp!, { r2, r3, r4, r5 }     @ stack ct05_h, ct05_l, ct03_h, ct03_l

    rsbs    r4, r4, #0
    rsc     r5, r5, #0                  @ r4..r5 = -ct05

    stmdb   sp!, { r4, r5 }             @ stack -ct05_h, -ct05_l

    ldr     r2, [sp, #48]               @ r2 = ct00_l
    ldr     r3, [sp, #52]               @ r3 = ct00_h

    rsb     r10, r10, #0                @ r10 = K03

    rsbs    r4, r2, #0
    rsc     r5, r3, #0                  @ r4..r5 = -ct00

    @ r2..r3 =  ct00
    @ r4..r5 = -ct00
    @ r6     =  X1
    @ r7     =  X16
    @ r8     =  X7
    @ r9     =  X10
    @ r10    =  K03
    @ r11    = -K02
    @ r12    = -K14
    @ lr     =  K15

    smlal   r4, r5, r10, r6             @ r4..r5 = -ct00 + (X1  * K03)
    smlal   r2, r3, r10, r9             @ r2..r3 =  ct00 + (X10 * K03)

    smlal   r4, r5, r12, r9             @ r4..r5 += (X10 * -K14)
    smlal   r2, r3, r12, r6             @ r2..r3 += (X1  * -K14)

    smlal   r4, r5, r11, r7             @ r4..r5 += (X16 * -K02)
    smlal   r4, r5,  lr, r8             @ r4..r5 += (X7  *  K15) = ct07

    rsb     lr, l


s).
		baseAdr.FindPatternSelf("0F 95 05").ResolveRelativeAddress(3, 7).GetPtr(s_bPartyDediOnly);
		baseAdr.FindPatternSelf("0F 95 05").ResolveRelativeAddress(3, 7).GetPtr(s_bTrainingDedi);
		baseAdr.FindPatternSelf("0F 95 05").ResolveRelativeAddress(3, 7).GetPtr(s_bStagingDedi);
		baseAdr.FindPatternSelf("0F 95 05").ResolveRelativeAddress(3, 7).GetPtr(s_bFiringRangeDedi);
	}
	virtual void GetCon(void) const { }
	///////////////////////////////////////////////////////////////////////////////
	virtual void Detour(const bool bAttach) const
	{
		//DetourSetup(&v_SV_InitGameDLL, SV_InitGameDLL, bAttach);
		//DetourSetup(&v_SV_ShutdownGameDLL, SV_ShutdownGameDLL, bAttach);
		//DetourSetup(&v_SV_ActivateServer, SV_ActivateServer, bAttach);
#ifndef CLIENT_DLL
		DetourSetup(&v_SV_BroadcastVoiceData, SV_BroadcastVoiceData, bAttach);
#endif // !CLIENT_DLL
	}
};
///////////////////////////////////////////////////////////////////////////////


狼肉"
L["Spider Belt"] = "蜘蛛腰帶"
L["Spider Sausage"] = "蜘蛛肉腸"
L["Spider Silk Slippers"] = "蛛絲便鞋"
L["Spidersilk Boots"] = "蛛絲之靴"
L["Spitfire Bracers"] = "飛火護腕"
L["Spitfire Breastplate"] = "飛火胸甲"
L["Spitfire Gauntlets"] = "飛火護手"
L["Spotted Yellowtail"] = "斑點黃尾魚"
L["Standard Scope"] = "普通瞄準鏡"
L["Star Belt"] = "星辰腰帶"
L["Steel Breastplate"] = "鋼質胸甲"
L["Steel Plate Helm"] = "鋼質頭盔"
L["Steel Weapon Chain"] = "鋼質武器鏈"
L["Stonescale Oil"] = "石鱗魚油"
L["Storm Gauntlets"] = "風暴護手"
L["Stormshroud Armor"] = "雷暴"
L["Stormshroud Gloves"] = "雷暴手套"
L["Stormshroud Pants"] = "雷暴短褲"
L["Stormshroud Shoulders"] = "雷暴護肩"
L["Strider Stew"] = "燉陸行鳥"
L["Strong Anti-Venom"] = "強力抗毒藥劑"
L["Strong Troll's Blood Potion"] = "強力食人妖之血藥水"
L["Stronghold Gauntlets"] = "要塞護手"
L["Stylish Blue Shirt"] = "漂亮的藍襯衣"
L["Stylish Green Shirt"] = "漂亮的綠襯衣"
L["Stylish Red Shirt"] = "漂亮的紅襯衣"
L["Succulent Pork Ribs"] = "多汁豬排"
L["Sulfuron Hammer"] = "薩弗隆戰錘"
L["Superior Healing Potion"] = "超強治療藥水"
L["Superior Mana Potion"] = "超強法力藥水"
L["Swift Boots"] = "迅捷之靴"
L["Swift Flight Bracers"] = "迅行護腕"
L["Swiftness Potion"] = "迅捷藥水"
L["Swim Speed Potion"] = "速遊藥水"
L["Sylvan Crown"] = "森林環冠"
L["Sylvan Shoulders"] = "森林襯肩"
L["Sylvan Vest"] = "森林外套"
L["Target Dummy"] = "活動假人"
L["Tasty Lion Steak"] = "香烤獅肉"
L["Tender Wolf Steak"] = "嫩狼肉排"
L["The Big One"] = "大炸彈"
L["The Mortar: Reloaded"] = "迫擊炮：重載"
L["The Shatterer"] = "粉碎者"
L["Thick Armor Kit"] = "厚重護甲片"
L["Thick Leather"] = "厚皮"
L["Thick Leather Ammo Pouch"] = "厚皮彈藥包"
L["Thick M


'3022001',	'',	'',	'2',	'',	'雷克斯',	'Rex',	'[{"id":3022001,"pos":2,"enter":2}]',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'2020925',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	''},
{'2020925',	'',	'呵呵，这你就不懂了吧。',	'',	'',	'',	'',	'',	'',	'',	'',	'9939001',	'',	'',	'2',	'',	'怀特',	'White',	'[{"id":9939001,"pos":2,"enter":2}]',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'2020926',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	''},
{'2020926',	'',	'在这“兵荒马乱”的时代，动物肉就是比黄金都要珍贵的硬通货。',	'',	'',	'',	'',	'',	'',	'',	'',	'9939001',	'',	'',	'2',	'',	'怀特',	'White',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'2020927',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	''},
{'2020927',	'',	'只要吃上那么一口，合成肉那种似是而非的东西就再也咽不下去了，至少她们是这么认为的。',	'',	'',	'',	'',	'',	'',	'',	'',	'9939001',	'',	'',	'2',	'',	'怀特',	'White',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'2020928',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	''},
{'2020928',	'',	'我没心思听你讲废话。',	'',	'',	'',	'',	'',	'',	'',	'',	'3018001',	'',	'',	'2',	'',	'刃齿',	'Machairodus',	'[{"id":3018001,"pos":2,"enter":2}]',	'',	'6',	'',	'',	'',	'',	'',	'',	'',	'',	'2020929',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	'',	''},
{'2020929',	'',	'哎呀，野兽不会欣赏食物的味道吗？',	'',	'',	'',	'',	'',	'',	'',	'',	'9939001',	'',	'',	'2',


cmp r1, r0
	bgt _02007AEA
	subs r0, #0x10
	cmp r0, r1
	bge _02007AEA
	ldr r2, _02007A40 @ =gUnknown_03005274
	ldr r1, _02007A44 @ =gUnknown_02012548
	ldrb r0, [r4, #0x1a]
	lsls r0, r0, #2
	adds r0, r0, r1
	ldr r1, [r2]
	ldr r0, [r0]
	cmp r1, r0
	blo _02007A18
	ldr r0, _02007A48 @ =gUnknown_0300159A
	ldrb r0, [r0]
	cmp r0, #7
	bls _02007A50
_02007A18:
	ldr r2, _02007A4C @ =gUnknown_030043F0
	ldrh r1, [r2, #4]
	movs r0, #1
	ands r0, r1
	cmp r0, #0
	beq _02007AEA
	ldrh r1, [r2]
	movs r0, #0xf0
	ands r0, r1
	cmp r0, #0
	bne _02007AEA
	movs r0, #0x1c
	bl m4aSongNumStart
	b _02007AEA
	.align 2, 0
_02007A38: .4byte gUnknown_0300150C
_02007A3C: .4byte gUnknown_03001509
_02007A40: .4byte gUnknown_03005274
_02007A44: .4byte gUnknown_02012548
_02007A48: .4byte gUnknown_0300159A
_02007A4C: .4byte gUnknown_030043F0
_02007A50:
	ldr r2, _02007AC4 @ =gUnknown_030043F0
	ldrh r1, [r2, #4]
	movs r0, #1
	ands r0, r1
	cmp r0, #0
	beq _02007AE0
	ldrh r1, [r2]
	movs r0, #0xf0
	ands r0, r1
	cmp r0, #0
	bne _02007AE0
	movs r0, #0x19
	bl m4aSongNumStart
	movs r2, #0
	ldr r0, _02007AC8 @ =gUnknown_03003B80
	adds r1, r0, #0
	adds r1, #0x5a
	ldrb r0, [r1]
	cmp r0, #0xff
	beq _02007A88
_02007A7A:
	adds r2, #1
	cmp r2, #7
	bgt _02007A88
	adds r0, r2, r1
	ldrb r0, [r0]
	cmp r0, #0xff
	bne _02007A7A
_02007A88:
	ldr r0, _02007AC8 @ =gUnknown_03003B80
	adds r0, #0x5a
	adds r0, r2, r0
	ldrb r1, [r4, #0x1a]
	strb r1, [r0]
	strb r2, [r4, #0x19]
	ldr r1, _02007ACC @ =gUnknown_0300159A
	ldrb r0, [r1]
	adds r0, #1
	strb r0, [r1]
	ldr r2, _02007AD0 @ =gUnknown_03005274
	ldr r1, _02007AD4 @ =gUnknown_02012548
	ldrb r0, [r4, #0x1a]
	lsls r0, r0, #2


  output.addBits(hLit, 5);
    output.addBits(hDist, 5);
    output.addBits(hcLen, 4);

    for (int i = 0; i < hcLen + 4; i++) {
      output.addBits(clCl[order[i]], 3);
    }

    for (int i = 0; i < rleSize; i++) {
      int symbol = clSymbols[rle[i]];
      output.addBits(symbol, clCl[rle[i]]);
      switch (rle[i]) {
        case 16:
          output.addBits(rleBits[i], 2);
          break;
        case 17:
          output.addBits(rleBits[i], 3);
          break;
        case 18:
          output.addBits(rleBits[i], 7);
          break;
        default:
          break;
      }
    }
  }

  private static int simulateAddDynamicTree(Cookie cookie, int[] llLengths, int[] dLengths) {
    int bestSize = Integer.MAX_VALUE;

    for (int i = 0; i < 8; i++) {
      int size = simulateEncodeTree(cookie, llLengths, dLengths, (i & 1) != 0,
          (i & 2) != 0, (i & 4) != 0);
      if (size < bestSize) {
        bestSize = size;
      }
    }
    return bestSize;
  }

  // TODO: GetRid of RLE
  private static int simulateEncodeTree(Cookie cookie, int[] llLengths, int[] dLengths,
      boolean use16, boolean use17, boolean use18) {
    int hLit = 29;
    int hDist = 29;

    while (hLit > 0 && llLengths[256 + hLit] == 0) {
      hLit--;
    }
    while (hDist > 0 && dLengths[hDist] == 0) {
      hDist--;
    }

    int lldTotal = hLit + 258 + hDist;
    int[] lldLengths = cookie.i320b;
    System.arraycopy(llLengths, 0, lldLengths, 0, 257 + hLit);
    System.arraycopy(dLengths, 0, lldLengths, 257 + hLit, hDist + 1);

    int[] rle = cookie.i320a;
    int rleSize = 0;

    for (int i = 0; i < lldTotal; i++) {
      int count = 1;
      int symbol = lldLengths[i];
      if (use16 || (symbol == 0 && (use17 || use18))) {
        for (int j = i + 1; j < lldTotal && symbol == lldLengths[j]; j++) {
          count++;
        }
      }
      i += count - 1;

      if (symbol == 0 && count > 2) {
        if (use18) {
          while (count > 10) {
            rle[rleSize++] = 18;
            count -= count > 138 ? 138 : count;
          }
        }
        if (use17) {
          while (count > 2) {
            rle[rleSize++] = 17;
            count -= count > 10 ? 10 : count;
          }
        }
      }

      if (use16 && count > 3) {
        count--;
        rle[rleSize++] = symbol;
        while (count > 2) {
          rle[rleSize++] = 16;
          count -= count > 6 ? 6 : count;
        }
      }

      while (count != 0) {
        rle[rleSize++] = symbol;
        count--;
      }
    }

    int[] clCounts = cookie.i19a;
    System.arraycopy(Cookie.intZeroes, 0, clCounts, 0, 19);
    for (int i = 0; i < rleSize; ++i) {
      clCounts[rle[i]]++;
    }

    int[] clCl = cookie.i19b;
    System.arraycopy(Cookie.intZeroes, 0, cl


glabel func_80A731C0
/* 001D0 80A731C0 27BDFFE8 */  addiu   $sp, $sp, 0xFFE8           ## $sp = FFFFFFE8
/* 001D4 80A731C4 AFA5001C */  sw      $a1, 0x001C($sp)
/* 001D8 80A731C8 AFBF0014 */  sw      $ra, 0x0014($sp)
/* 001DC 80A731CC 3C0580A7 */  lui     $a1, %hi(D_80A74088)       ## $a1 = 80A70000
/* 001E0 80A731D0 24A54088 */  addiu   $a1, $a1, %lo(D_80A74088)  ## $a1 = 80A74088
/* 001E4 80A731D4 0C01E037 */  jal     Actor_ProcessInitChain

/* 001E8 80A731D8 AFA40018 */  sw      $a0, 0x0018($sp)
/* 001EC 80A731DC 3C0180A7 */  lui     $at, %hi(D_80A74124)       ## $at = 80A70000
/* 001F0 80A731E0 C4204124 */  lwc1    $f0, %lo(D_80A74124)($at)
/* 001F4 80A731E4 8FA40018 */  lw      $a0, 0x0018($sp)
/* 001F8 80A731E8 3C0180A7 */  lui     $at, %hi(D_80A74128)       ## $at = 80A70000
/* 001FC 80A731EC 44804000 */  mtc1    $zero, $f8                 ## $f8 = 0.00
/* 00200 80A731F0 E4800054 */  swc1    $f0,


lower", () => {
    // given
    const json1 = "{ \"code\" : \"ibm\" , \"quote\" : 42.34 }"
    const json2 = "{ \"code\" : \"ibm\" , \"quote\" : 42.12 }"
    const json$ = hot<string>('-a-b-|', { a: json1, b: json2 });
    const quote$ = trends.parseRawStream(json$);
    // when
    const trend$ = trends.detectTrends(quote$);
    // then
    expectObservable(trend$).toBe('---s-|', { s: { quote: {code: "ibm", quote: 42.12 }, color: "red"}});
  })

  /**
      Test 17
  */
  it.skip("Should compute max of last 4 known prices", () => {
    // given
    const json1 = "{ \"code\" : \"ibm\" , \"quote\" : 42.10 }"
    const json2 = "{ \"code\" : \"ibm\" , \"quote\" : 42.20 }"
    const json3 = "{ \"code\" : \"ibm\" , \"quote\" : 42.16 }"
    const json4 = "{ \"code\" : \"ibm\" , \"quote\" : 42.14 }"

    const json$ = hot<string>('-a-b-c-d--', { a: json1, b: json2, c: json3, d: json4 });
    const quote$ = trends.parseRawStream(json$);
    // when
    const trend$ = trends.maxFromPrevious(quote$, 4);
    // then
    expectObservable(trend$).toBe('-------m--', { m: 42.20 });
  })

  /**
      Test 18
  */
  it.skip("Should ignore older values when computing max of last 4 known prices", () => {
    // given
    const json0 = "{ \"code\" : \"ibm\" , \"quote\" : 43 }"
    const json1 = "{ \"code\" : \"ibm\" , \"quote\" : 42.10 }"
    const json2 = "{ \"code\" : \"ibm\" , \"quote\" : 42.20 }"
    const json3 = "{ \"code\" : \"ibm\" , \"quote\" : 42.16 }"
    const json4 = "{ \"code\" : \"ibm\" , \"quote\" : 42.14 }"

    const json$ = hot<string>('o-a-b-c-d--', { o: json0, a: json1, b: json2, c: json3, d: json4 });
    const quote$ = trends.parseRawStream(json$);
    // when
    const trend$ = trends.maxFromPrevious(quote$, 4);
    // then
    expectObservable(trend$).toBe('------o-m--', { o: 43, m: 42.20 });
  })

  /**
      Test 19
  */
  it.skip("Should compute min of last 4 known prices", () => {
    // given
    const json1 = "{ \"code\" : \"ibm\" , \"quote\" : 42.10 }"
    const json2 = "{ \"code\" : \"ibm\" , \"quote\" : 42.20 }"
    const json3 = "{ \"code\" : \"ibm\" , \"quote\" : 42.16 }"
    const json4 = "{ \"code\" : \"ibm\" , \"quote\" : 42.14 }"

    const json$ = hot<string>('-a-b-c-d--', { a: json1, b: json2, c: json3, d: json4 });
    const quote$ = trends.parseRawStream(json$);
    // when
    const trend$ = trends.minFromPrevious(quote$, 4);
    // then
    expectObservable(trend$).toBe('-------m--', { m: 42.10 });
  })

  /**
      Test 20
  */
  it.skip("Should ignore older values when computing min of last 4 known prices", () => {
    // given
    const json0 = "{ \"code\" : \"ibm\" , \"quote\" : 41 }"
    const json1 = "{ \"code\" : \"ibm\" , \"quote\" : 42.10 }"
    const json2 = "{ \"code\" : \"ibm\" , \"quote\" : 42.20 }"
    const json3 = "{ \"code\" : \"ibm\" ,


 .goto Duskwood,28.0,31.5
>>Talk to |cRXP_FRIENDLY_Abercrombie|r
    .turnin 133 >> Turn in Ghoulish Effigy
.target Abercrombie
    .accept 134 >> Accept Ogre Thieves
step
    .goto Duskwood,23.9,72.0
    >>Loot the chest inside the small house
    .complete 1244,1 --Collect Defias Docket (x1)
step
    .goto Duskwood,33.5,76.3
    >>Loot the crate next to the cave entrance
    .complete 134,1 --Collect Abercrombie's Crate (x1)
step
    .goto Duskwood,36.8,83.8
    .isOnQuest 181
    >>Kill Zzarc' Vul and loot him for his monocle
	.unitscan Zzarc' Vul
    .complete 181,1 --Collect Ogre's Monocle (x1)
step
    .goto Duskwood,31.6,45.4
	>> Kill spiders and loot them for their venom
    .complete 101,2 --Collect Vial of Spider Venom (x5)
step
    .goto Duskwood,28.109,31.463
>>Talk to |cRXP_FRIENDLY_Abercrombie|r
    .turnin 134 >> Turn in Ogre Thieves
.target Abercrombie
    .accept 160 >> Accept Note to the Mayor
step << !Hunter !Paladin
    .goto Duskwood,17.7,29.2
    >> Click on the gravestone
    .turnin 231 >> Turn in A Daughter's Love
step << !Dwarf/!Paladin
    .goto Duskwood,7.781,34.069
>>Talk to |cRXP_FRIENDLY_Sven Yorgen|r
    .turnin 325 >> Turn in Armed and Ready
.target Sven Yorgen
    .accept 55 >> Accept Morbent Fel
step << !Dwarf/!Paladin
    .goto Duskwood,17.2,33.4
    >>Use the provided off-hand weapon to weaken Morbent Fel
    .complete 55,1 --Kill Weakened Morbent Fel (x1)
step << !Dwarf/!Paladin
    .goto Duskwood,7.8,34.3
.target Sven Yorgen
>>Talk to |cRXP_FRIENDLY_Sven Yorgen|r
    .turnin 55 >> Turn in Morbent Fel
step << Shaman/Dwarf Paladin/wotlk
    #sticky
    #completewith ds1
    .hs >> Hearth to Darkshire
step << !Shaman !Paladin/!Dwarf Paladin
    .goto Westfall,56.5,52.6
    >>Fly to Darkshire if your HS is on cooldown << wotlk
    .fly Darkshire>> Fly to Darkshire
    .cooldown item,6948,<1 << wotlk
step
    .goto Duskwood,79.8,47.9
    .isOnQuest 181
.target Viktori Prism'Antras
>>Talk to |cRXP_FRIENDLY_Viktori Prism'Antras|r
    .turnin 181 >> Turn in Look To The Stars
step
    .goto Duskwood,75.3,47.9
>>Talk to |cRXP_FRIENDLY_Calor|r
    .turnin 173 >> Turn in Worgen in the Woods
.target Calor
    .accept 221 >> Accept Worgen in the Woods
step
    #label ds1
    .goto Duskwood,75.7,45.3
.target Madame Eva
>>Talk to |cRXP_FRIENDLY_Madame Eva|r
    .turnin 101 >> Turn in The Totem of Infliction
step << !Shaman
    .goto Duskwood,73.9,44.5
>>Talk to |cRXP_FRIENDLY_Tavernkeep Smitts|r
    .turnin 78 >> Turn in The Legend of Stalvan
.target Tavernkeep Smitts
    .accept 79 >> Accept The Legend of Stalvan
step
    .goto Duskwood,73.6,46.7
>>Talk to |cRXP_FRIENDLY_Comm


s’ɔɔm s’ɔtu s’ɔ́tu s’ɔtum s’ub s’úb s’ub’r s’úb’r s’ucu s’úcu s’us S’ús s’us’ŋ s’uw s’úw s’uw’r s’uwar s’uwm s’uwr sabaktani sabu sabusu Sadusiɛl safir safuɛ sagb sakp sakpl sakrowa Sala Salatiɛl Salɛm Salome Salomɔ Samari Samiɛl Sanedrɛn saŋgo Saŋkre sar Sara Sard sarduan sasagr sasm Satan Saul saw say sayl Seba Sebede sebr sed segb sejagb sel selu Selu ses Sesar Sesare sɛb sɛbɛrŋ sɛbr sɛc sɛgŋ sɛj sɛjɛm sɛkp sɛnyn sɛrɛkp sɛrŋ sɛsl sɛwl sɛwr sɛwru si sibn sibotimbo sibɔban sica Sica sicaca sican Sidɔn siflefl sifn sig sìg síg’ŋ sig’r sigb sigbad sigbaŋkɔ sigbroko sigm sigm’n sigr sijuma sika sikaka Sikɛm sikpl sikpokpo sikpukpu sikukuma Silas silɛl Silisi Silowe siluku simeb Simeɔn simɛny simij simijɛtŋ Simirna simob Simɔ sin Sinayi sinm sinyam Sinyamel Siɔn Sipr Sirɛn Siri sisigm sism sisŋ sitabl siyay sŋɔsŋɔ sob sobel sodad Sodɔm sol soŋni Sorobabɛl sos sosi sosiɛm sow sɔbɔ sɔdŋ sɔfu sɔg sɔ́g sɔg’m sɔg’ŋ sɔg’r sɔgm sɔgr sɔ̀gr Sɔl sɔmu sɔny sɔrŋ sɔsŋ sɔsŋn Sɔstɛn sɔsum sɔsumn srɔda Stefanas suksuk suŋ sus Sùs susm susr susu suw suwli suwɔmu Tabita tabl Tade tamranji Tars tasi tat tatakŋ Teofil Tesaloni tɛɛli tɛl Tɛrtulus tɛtɛ tɛtŋ tɛ́tŋ tɛtŋm tɛtul Tiatir Tiberiad Timote tiŋ Tir Tisik Tit titam titm titm’m titm’n titmn titŋn Toma toŋ toy trɛ Troas Trofim tufɛ tuɔtuɔ tutar tùtar tutr Tùtr tutrm ub úb


nd_matches(text: str, pattern: re.Pattern) -> str:
                out = []
                last = 0
                for m in pattern.finditer(text):
                    start, end = m.start(), m.end()
                    out.append(text[last:start])
                    if start > 0:
                        prev = text[start - 1]
                        if not prev.isspace() and _is_eaw_wide(prev):
                            out.append(" ")
                    out.append(m.group(0))
                    if end < len(text):
                        nxt = text[end]
                        if not nxt.isspace() and _is_eaw_wide(nxt):
                            out.append(" ")
                    last = end
                out.append(text[last:])
                return "".join(out)

            patterns = [
                re.compile(r"_\*(?!\s)(.+?)(?<!\s)\*_"),  # *_bold italic_*
                re.compile(r"\*(?!\s)([^\*\n]+?)(?<!\s)\*"),  # *bold*
                re.compile(r"_(?!\s)([^_\n]+?)(?<!\s)_"),  # _italic_
                re.compile(r"~(?!\s)([^~\n]+?)(?<!\s)~"),  # ~strike~
            ]

            for ptn in patterns:
                part = _add_space_around_matches(part, ptn)
            result += part
    return result


	usesBossMod = true
		end
		if not usesBossMod then
			bad[#bad+1] = coloredNameVersion(player, UnitIsConnected(player) == false and L.offline)
		end
	end

	if #good > 0 then print(L.upToDate, unpack(good)) end
	if #ugly > 0 then print(L.outOfDate, unpack(ugly)) end
	if #dbm > 0 then print(L.dbmUsers, unpack(dbm)) end
	if #bad > 0 then print(L.noBossMod, unpack(bad)) end
end

-------------------------------------------------------------------------------
-- Global
--

BigWigsLoader = setmetatable({}, { __index = public, __newindex = function() end, __metatable = false })


) {
    if (token != _lastToken) {
      error("At _position ${_position - 1} expected $token, "
            "found $_lastToken");
    }
    getToken();
  }

  bool acceptToken(Token token) {
    if (token == _lastToken) {
      getToken();
      return true;
    }
    return false;
  }

  bool peekToken(Token token) => token == _lastToken;

  static const CHARCODE_TO_TOKEN = const <Token>[
    Token.other, Token.other, Token.other, Token.other,    // 0-3
    Token.other, Token.other, Token.other, Token.other,    // 4-7
    Token.other, Token.other, Token.other, Token.other,    // 8-11
    Token.other, Token.other, Token.other, Token.other,    // 12-15
    Token.other, Token.other, Token.other, Token.other,    // 16-19
    Token.other, Token.other, Token.other, Token.other,    // 20-23
    Token.other, Token.other, Token.other, Token.other,    // 24-27
    Token.other, Token.other, Token.other, Token.other,    // 28-31
    Token.other, Token.other, Token.other, Token.other,    //  !"#
    Token.dollar, Token.other, Token.other, Token.other,   // $%&'
    Token.lParen, Token.rParen, Token.quant, Token.quant,  // ()*+,
    Token.other, Token.other, Token.dot, Token.other,      // ,-./
    Token.other, Token.other, Token.other, Token.other,    // 0123
    Token.other, Token.other, Token.other, Token.other,    // 4567
    Token.other, Token.other, Token.other, Token.other,    // 89:;
    Token.other, Token.other, Token.other, Token.quant,    // <=>?
    Token.other, Token.other, Token.other, Token.other,    // @ABC
    Token.other, Token.other, Token.other, Token.other,    // DEFG
    Token.other, Token.other, Token.other, Token.other,    // HIJK
    Token.other, Token.other, Token.other, Token.other,    // LMNO
    Token.other, Token.other, Token.other, Token.other,    // PQRS
    Token.other, Token.other, Token.other, Token.other,    // TUVW
    Token.other, Token.other, Token.other, Token.lSquare,  // XYZ[
    Token.backslash, Token.other, Token.hat, Token.other,  // \]^_
    Token.other, Token.other, Token.other, Token.other,    // `abc
    Token.other, Token.other, Token.other, Token.other,    // defg
    Token.other, Token.other, Token.other, Token.other,    // hijk
    Token.other, Token.other, Token.other, Token.other,    // lmno
    Token.other, Token.other, Token.other, Token.other,    // pqrs
    Token.other, Token.other, Token.other, Token.other,    // tuvw
    Token.other, Token.other, Token.other, Token.quant,    // xyz{
    Token.pipe, Token.other];                              // |}

  static const ESCAPES = const {
    CHAR_CODE_LOWER_B: Token.wordBoundary,
    CHAR_CODE_UPPER_B: Token.notWordBoundary,
    CHAR_CODE_LOWER_W: Token.wordCharacter,
    CHAR_CODE_UPPER_W: Token.notWordCharacter,
    CHAR_CODE_LOWER_D: Token.digit,
    CHAR_CODE_UPPER_D: Token.notDigit,
    CHAR_CODE_LOWER_S: Token.whitespace,
    CHAR_CODE_UPPER_S: Token.notWhitespace
  };

  static const CONTROL_CHARACTERS = const {
    CHAR_CODE_LOWER_B: CHAR_CODE_BACKSPACE,
    CHAR_CODE_LOWER_F: CHAR_CODE_FORM_FEED,
    CHAR_CODE_LOWER_N: CHAR_CODE_NEWLINE,


name = "lab_account_pre_1",
      z = 0,
      parent = "registerpanel",
      text = T(LSTR("newbie.1.10.1.038")),
      size = 16
    },
    layout = {
      anchor = ccp(0.5, 0.5),
      position = ccp(61.33, 248.44)
    }
  },
  {
    config = {
      visible = true,
      horizontalAlignment = 0,
      flip = "",
      color = ccc3(255, 255, 255),
      opacity = 255,
      scalexy = {y = 1, x = 1},
      verticalAlignment = 0
    },
    t = "Label",
    base = {
      name = "lab_newbie_title",
      z = 0,
      parent = "newbiebg",
      text = T(LSTR("newbie.1.10.1.039")),
      size = 16
    },
    layout = {
      anchor = ccp(0.5, 0.5),
      position = ccp(262.11, 205.08)
    }
  },
  {
    config = {
      visible = true,
      horizontalAlignment = 0,
      flip = "",
      color = ccc3(255, 255, 255),
      opacity = 255,
      scalexy = {y = 1, x = 1},
      verticalAlignment = 0
    },
    t = "Label",
    base = {
      name = "lab_password_pre",
      z = 0,
      parent = "newbiebg",
      text = T(LSTR("newbie.1.10.1.035")),
      size = 16
    },
    layout = {
      anchor = ccp(0.5, 0.5),
      position = ccp(71.48, 77.73)
    }
  },
  {
    config = {
      visible = true,
      horizontalAlignment = 0,
      flip = "",
      color = ccc3(255, 255, 255),
      opacity = 255,
      scalexy = {y = 1, x = 1},
      verticalAlignment = 0
    },
    t = "Label",
    base = {
      name = "lab_account_pre",
      z = 0,
      parent = "newbiebg",
      text = T(LSTR("newbie.1.10.1.040")),
      size = 16
    },
    layout = {
      anchor = ccp(0.5, 0.5),
      position = ccp(71.48, 158.98)
    }
  },
  {
    config = {
      visible = true,
      flip = "",
      fix_wh = {w = 185.15625, h = 58.59375},
      opacity = 255,
      labelConfig = {
        color = ccc3(255, 255, 255)
      },
      pressConfig = {flip = ""}
    },
    t = "DGButton",
    base = {
      normal = "installer/serverselect_confirm_button_1.png",
      name = "updatepass_btn_back_login",
      z = 0,
      parent = "updatepass",
      text = T(LSTR("newbie.1.10.1.041")),
      press = "installer/serverselect_confirm_button_2.png",
      size = 21
    },
    layout = {
      anchor = ccp(0.5, 0.5),
      position = ccp(155.08, -43.36)
    }
  },
  {
    config = {
      visible = true,
      flip = "",
      fix_wh = {w = 185.15625, h = 58.59375},
      opacity = 255,
      labelConfig = {
        color = ccc3(255, 255, 255)
      },
      pressConfig = {flip = ""}
    },
    t = "DGButton",
    base = {
      normal = "installer/serverselect_confirm_button_1.png",
      name = "forgetpass_btn_back_login",
      z = 0,
      parent = "forgetpass


-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"; // Snapchat

        public const string Snapchat_Ghost_Brands =
            "M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-


local t = Def.ActorFrame{
	Name="Text",
	OnCommand=function(self) self:queuecommand("Show") end,
	EditCommand=function(self) self:playcommand("Show") end,

	PlayingCommand=function(self) self:playcommand("Hide") end,
	RecordCommand=function(self) self:playcommand("Hide") end,
	RecordPausedCommand=function(self) self:playcommand("Hide") end,

	-- Info
	Def.ActorFrame{
		InitCommand=function(self) self:xy(_screen.w, 10) end,
		ShowCommand=function(self) self:visible(true) end,
		HideCommand=function(self) self:visible(false) end,

		Def.Quad{ InitCommand=function(self) self:zoomto(30,1):horizalign(right) end },

		LoadFont("Common Bold") .. {
			Name="InfoText",
			Text="PRACTICE MODE",
			InitCommand=function(self) self:zoom(0.265):horizalign(right):x(-35):diffuse(PlayerColor(PLAYER_1)) end,
		}
	}
}

local players =  GAMESTATE:


namespace ServiceControl.SagaAudit
{
    using System.Linq;
    using Raven.Client.Documents.Indexes;

    public class SagaDetailsIndex : AbstractMultiMapIndexCreationTask<SagaHistory>
    {
        public SagaDetailsIndex()
        {
            AddMap<SagaSnapshot>(docs =>
                from doc in docs
                select new
                {
                    doc.SagaId,
                    Id = doc.SagaId,
                    doc.SagaType,
                    Changes = new[]
                    {
                        new SagaStateChange
                        {
                            Endpoint = doc.Endpoint,
                            FinishTime = doc.FinishTime,
                            InitiatingMessage = doc.InitiatingMessage,
                            OutgoingMessages = doc.OutgoingMessages,
                            StartTime = doc.StartTime,
                            StateAfterChange = doc.StateAfterChange,
                            Status = doc.Status
                        }
                    }
                });


 isTrue);
    expect(createdMixedBar.tagName, "X-BAR");

    container.setInnerHtml("<X-BAR></X-BAR><X-Bar></X-Bar>",
        treeSanitizer: new NullTreeSanitizer());
    upgradeCustomElements(container);
    expect(container.firstChild is Bar, isTrue);
    expect(container.firstChild.tagName, "X-BAR");
    expect(container.lastChild is Bar, isTrue);
    expect(container.lastChild.tagName, "X-BAR");

    // Constructors shouldn't interfere with each other
    expect((new Foo()).tagName, "X-FOO");
    expect((new Bar()).tagName, "X-BAR");
    expect((new Baz()).tagName, "X-BAZ");
  });
}
// Copyright (c) 2014, the Dart project authors. All rights reserved.
// Copyright 2013 the V8 project authors. All rights reserved.
// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1.  Redistributions of source code must retain the above copyright
//     notice, this list of conditions and the following disclaimer.
// 2.  Redistributions in binary form must reproduce the above copyright
//     notice, this list of conditions and the following disclaimer in the
//     documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

import 'v8_regexp_utils.dart';
import 'package:expect/expect.dart';

void main() {
  description("This test checks expressions with alternative lengths of appox. 2^31.");

  var regexp1 = new RegExp(r"(?:(?=g))|(?:m).{2147483648,}");
  shouldBeNull(regexp1.firstMatch(''));

  var regexp2 = new RegExp(r"(?:(?=g)).{2147483648,}");
  shouldBeNull(regexp2.firstMatch(''));

  var s3 = r"&{6}u4a64YfQP{C}u88c4u5772Qu8693{4294967167}u85f2u7f3fs((uf202){4})u5bc6u1947";
  var regexp3 = new RegExp(s3);
  shouldBeNull(regexp3.firstMatch(s3));

  var regexp4 = new RegExp(r"[^a$]{4294967295}");
  shouldBeNull(regexp4.firstMatch(s3));
}
// Copyright (c) 2014, the Dart project authors. All rights reserved.
// Copyright 2013 the V8 project authors. All rights reserved.
// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1.  Redistributions of source code must retain the above copyright
//     notice, this list of conditions and the following disclaimer.
// 2.  Redistributions in binary form must reproduce the above copyright
//     notice, this list of conditions and the following disclaimer in the
//     documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITN


      "CustomImage" : 0,
         "Data" : "Hello World",
         "Description" : "",
         "Favorite" : 1,
         "HardwareID" : 2,
         "HardwareName" : "Virtual devi e",
         "HardwareType" : "Dummy (Does nothing, use for virtual switches only)",
         "HardwareTypeVal" : 15,
         "HaveTimeout" : false,
         "ID" : "82021",
         "LastUpdate" : "2015-11-04 20:55:14",
         "Name" : "hdw_Sonos",
         "Notifications" : "false",
         "PlanID" : "2",
         "PlanIDs" : [ 2 ],
         "Protected" : false,
         "ShowNotifications" : false,
         "SignalLevel" : "-",
         "SubType" : "Text",
         "Timers" : "false",
         "Type" : "General",
         "TypeImg" : "text",
         "Unit" : 1,
         "Used" : 1,
         "XOffset" : "572",
         "YOffset" : "103",
         "idx" : "22"
      },
      {
         "AddjMulti" : 1.0,
         "AddjMulti2" : 1.0,
         "AddjValue" : 0.0,
         "AddjValue2" : 0.0,
         "BatteryLevel" : 255,
         "CustomImage" : 0,
         "Data" : "Hello World",
         "Description" : "",
         "Favorite" : 0,
         "HardwareID" : 2,
         "HardwareName" : "Virtual devi e",
         "HardwareType" : "Dummy (Does nothing, use for virtual switches only)",
         "HardwareTypeVal" : 15,
         "HaveTimeout" : false,
         "ID" : "82022",
         "LastUpdate" : "2015-11-04 20:56:13",
         "Name" : "hdw_DateTimeNews",
         "Notifications" : "false",
         "PlanID" : "0",
         "PlanIDs" : [ 0 ],
         "Protected" : false,
         "ShowNotifications" : false,
         "SignalLevel" : "-",
         "SubType" : "Text",
         "Timers" : "false",
         "Type" : "General",
         "TypeImg" : "text",
         "Unit" : 1,
         "Used" : 1,
         "XOffset" : "0",
         "YOffset" : "0",
         "idx" : "23"
      },
      {
         "AddjMulti" : 1.0,
         "AddjMulti2" : 1.0,
         "AddjValue" : 0.0,
         "AddjValue2" : 0.0,
         "BatteryLevel" : 100,
         "CustomImage" : 0,
         "Data" : "30.1 C",
         "Description" : "",
         "Favorite" : 0,
         "HardwareID" : 4,
         "HardwareName" : "1-Wire",
         "HardwareType" : "1-Wire (System)",
         "HardwareTypeVal" : 12,
         "HaveTimeout" : true,
         "ID" : "FFA2",
         "LastUpdate" : "2015-11-21 19:19:16",
         "Name" : "Unknown",
         "Notifications" : "false",
         "PlanID" : "0",
         "PlanIDs" : [ 0 ],
         "Protected" : false,
         "ShowNotifications" : true,
         "SignalLevel" : "-",
         "SubType" : "TFA 30.3133",
         "Temp" : 30.10,
         "Timers" : "false",
         "Type" : "Temp",
         "TypeImg" : "temperature",
         "Unit" : 162,
         "Used" : 1,
         "XOffset" : "0",
         "YOffset" : "0",
         "idx


de;

    var isWebGL = builder.renderer.isWebGLRenderer == true;

    if (isWebGL &&
        (method == MathNode.DFDX || method == MathNode.DFDY) &&
        output == 'vec3') {
      // Workaround for Adreno 3XX dFd*( vec3 ) bug. See #9988

      return new JoinNode([
        new MathNode(method, new SplitNode(a, 'x')),
        new MathNode(method, new SplitNode(a, 'y')),
        new MathNode(method, new SplitNode(a, 'z'))
      ]).build(builder);
    } else if (method == MathNode.TRANSFORM_DIRECTION) {
      // dir can be either a direction vector or a normal vector
      // upper-left 3x3 of matrix is assumed to be orthogonal

      var tA = a;
      var tB = b;

      if (builder.isMatrix(tA.getNodeType(builder))) {
        tB = new ExpressionNode(
            "${builder.getType('vec4')}( ${tB.build(builder, 'vec3')}, 0.0 )",
            'vec4');
      } else {
        tA = new ExpressionNode(
            "${builder.getType('vec4')}( ${tA.build(builder, 'vec3')}, 0.0 )",
            'vec4');
      }

      var mulNode = new SplitNode(new OperatorNode('*', tA, tB), 'xyz');

      return new MathNode(MathNode.NORMALIZE, mulNode).build(builder);
    } else if (method == MathNode.SATURATE) {
      return "clamp( ${a.build(builder, inputType)}, 0.0, 1.0 )";
    } else if (method == MathNode.NEGATE) {
      return '( -' + a.build(builder, inputType) + ' )';
    } else if (method == MathNode.INVERT) {
      return '( 1.0 - ' + a.build(builder, inputType) + ' )';
    } else {
      var params = [];

      if (method == MathNode.CROSS) {
        params.addAll([a.build(builder, type), b.build(builder, type)]);
      } else if (method == MathNode.STEP) {
        params.addAll([
          a.build(
              builder,
              builder.getTypeLength(a.getNodeType(builder)) == 1
                  ? 'float'
                  : inputType),
          b.build(builder, inputType)
        ]);
      } else if ((isWebGL &&
              (method == MathNode.MIN || method == MathNode.MAX)) ||
          method == MathNode.MOD) {
        params.addAll([
          a.build(builder, inputType),
          b.build(
              builder,
              builder.getTypeLength(b.getNodeType(builder)) == 1
                  ? 'float'
                  : inputType)
        ]);
      } else if (method == MathNode.REFRACT) {
        params.addAll([
          a.build(builder, inputType),
          b.build(builder, inputType),
          c.build(builder, 'float')
        ]);
      } else if (method == MathNode.MIX) {
        params.addAll([
          a.build(builder, inputType),
          b.build(builder, inputType),
          c.build(
              builder,
              builder.getTypeLength(c.getNodeType(builder)) == 1
                  ? 'float'
                  : inputType)
        ]);
      } else {
        params.addAll([a.build(builder, inputType)]);

        if (c != null) {
          params.addAll(
              [b.build(builder, inputType), c.build(builder, inputType)]);
        } else if (b != null) {
          params.add(b.build(builder, inputType));
        }
      }

      return "${builder.getMethod(method)}( ${params.join(', ')} )


    ["enUS"] = true,
        ["frFR"] = "Ile de Brume-sang",
        ["esES"] = "Isla Bruma de Sangre",
        ["zhTW"] = "血謎島",
        ["zhCN"] = "秘血岛",
    },
    ["Bonechewer Ruins"] = {
        ["ptBR"] = "Ruínas Mascaosso",
        ["ruRU"] = "Руины Костеглодов",
        ["deDE"] = "Ruinen der Knochenmalmer",
        ["koKR"] = "해골이빨 폐허",
        ["esMX"] = "Ruinas Mascahuesos",
        ["enUS"] = true,
        ["frFR"] = "Ruines Mâche-les-os",
        ["esES"] = "Ruinas Mascahuesos",
        ["zhTW"] = "噬骨者廢墟",
        ["zhCN"] = "噬骨废墟",
    },
    ["Azuremyst Isle"] = {
        ["ptBR"] = "Ilha Névoa Lazúli",
        ["ruRU"] = "Остров Лазурной Дымки",
        ["deDE"] = "Azurmythosinsel",
        ["koKR"] = "하늘안개 섬",
        ["esMX"] = "Isla Bruma Azur",
        ["enUS"] = true,
        ["frFR"] = "Ile de Brume-azur",
        ["esES"] = "Isla Bruma Azur",
        ["zhTW"] = "藍謎島",
        ["zhCN"] = "秘蓝岛",
    },
    ["Moonwing Den"] = {
        ["ptBR"] = "Covil dos Coruscantes",
        ["ruRU"] = "Прибежище Лунных Крыльев",
        ["deDE"] = "Mondschwingenbau",
        ["koKR"] = "달날개 소굴",
        ["esMX"] = "Túmulo Lunala",
        ["enUS"] = true,
        ["frFR"] = "Tanière Aile-de-lune",
        ["esES"] = "Túmulo Lunala",
        ["zhTW"] = "月翼獸窟",
        ["zhCN"] = "月翼洞穴",
    },
    ["The Legion Front"] = {
        ["ptBR"] = "O Front da Legião",
        ["ruRU"] = "Передовая Легиона",
        ["deDE"] = "Die Front der Legion",
        ["koKR"] = "군단 전초지",
        ["esMX"] = "La Avanzadilla de la Legión",
        ["enUS"] = true,
        ["frFR"] = "Le front de la Légion",
        ["esES"] = "La Avanzadilla de la Legión",
        ["zhTW"] = "軍團前線",
        ["zhCN"] = "军团前线",
    },
    ["Elemental Plateau"] = {
        ["ptBR"] = "Platô Elemental",
        ["ruRU"] = "Плато Стихий",
        ["deDE"] = "Elementarplateau",
        ["koKR"] = "정령의 고원",
        ["esMX"] = "Meseta Elemental",
        ["enUS"] = true,
        ["frFR"] = "Plateau élémentaire",
        ["esES"] = "Meseta Elemental",
        ["zhTW"] = "元素高原",
        ["zhCN"] = "元素高地",
    },
    ["Tel'athion's Camp"] = {
        ["ptBR"] = "Acampamento do Tel'athion",


;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search']:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
[type='search']:where(.tw,.tw *) {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)) ::-webkit-search-decoration,
:where(.tw,.tw *) ::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)) ::-webkit-file-upload-button,
:where(.tw,.tw *) ::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
summary:where(.tw,.tw *) {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
blockquote:where(.tw,.tw *),
dl:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
dl:where(.tw,.tw *),
dd:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
dd:where(.tw,.tw *),
h1:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
h1:where(.tw,.tw *),
h2:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
h2:where(.tw,.tw *),
h3:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
h3:where(.tw,.tw *),
h4:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
h4:where(.tw,.tw *),
h5:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
h5:where(.tw,.tw *),
h6:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
h6:where(.tw,.tw *),
hr:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
hr:where(.tw,.tw *),
figure:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
figure:where(.tw,.tw *),
p:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
p:where(.tw,.tw *),
pre:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
pre:where(.tw,.tw *) {
  margin: 0;
}

fieldset:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
fieldset:where(.tw,.tw *) {
  margin: 0;
  padding: 0;
}

legend:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-2 *)),
legend:where(.tw,.tw *) {
  padding: 0;
}

ol:where(:not(.no-tw,.no-tw *,.no-tw-2,.no-tw-


StuffWhitespace).plus();

  static Parser hiddenStuffWhitespace() =>
      ref0(visibleWhitespace) |
      ref0(singleLineComment) |
      ref0(multiLineComment);

  static Parser visibleWhitespace() => whitespace();

  static Parser singleLineComment() =>
      string('//') &
      ref0(newlineLexicalToken).neg().star() &
      ref0(newlineLexicalToken).optional();

  static Parser multiLineComment() =>
      string('/*') &
      (ref0(multiLineComment) | string('*/').neg()).star() &
      string('*/');
}

class ParsedString {
  String? literalString;

  String? variableName;

  ASTExpression? expression;

  List<ParsedString>? list;

  ParsedString.literal(this.literalString);

  ParsedString.variable(this.variableName);

  ParsedString.expression(this.expression);

  ParsedString.list(this.list);

  bool get isLiteral {
    if (literalString != null) return true;

    if (variableName != null) return false;

    if (list != null) {
      return list!.every((e) => e.isLiteral);
    }

    return false;
  }

  String asLiteral() {
    if (literalString != null) return literalString!;
    if (list != null) {
      return list!.map((e) => e.asLiteral()).join('');
    }
    throw StateError('Not literal!');
  }

  ASTValue<String> asValue() {
    if (literalString != null) {
      return ASTValueString(literalString!);
    } else if (variableName != null) {
      var variable = ASTScopeVariable(variableName!);
      return ASTValueStringVariable(variable);
    } else if (list != null) {
      var list = this.list!;
      if (list.length == 1) {
        return list[0].asValue();
      } else if (list.every((e) => e.isLiteral)) {
        var s = list.map((e) => e.asLiteral()).join();
        return ASTValueString(s);
      } else {
        var values = list.map((e) => e.asValue()).toList();
        return ASTValueStringConcatenation(values);
      }
    } else if (expression != null) {
      return ASTValueStringExpression(expression!);
    }

    throw StateError("Can't resolve value!");
  }
}

extension TrimHiddenStuffWhitespaceParserExtension<R> on Parser<R> {
  Parser<R> trimHidden() => trim(DartGrammarLexer.hiddenStuffWhitespace());
}
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:focus/services/hive_service.dart';
import 'package:focus/services/notification_service.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:hive_flutter/adapters.dart';
import 'package:timezone/data/latest.dart' as tz;
import 'models/quadrant_enum.dart';
import 'models/task_models.dart';
import 'providers/theme_provider.dart';
import 'screens/home_screen.dart';

// Define the custom background color
const Color appBackgroundColor = Color(0xFF141118);

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  tz.initializeTimeZones();

  // notification initialization
  NotificationService().initialize();

  await Hive.initFlutter();
  Hive.registerAdapter(TaskAdapter());
  Hive.registerAdapter(QuadrantAdapter());

  final hiveService = HiveService();
  await hiveService.initialize();

  final savedTheme = await hiveService.getThemePreference();

  runApp(
    ProviderScope(
      overrides: [
        hiveServiceProvider.overrideWithProvider(
          Provider((ref) => hiveService),
        ),
        themeProvider.overrideWithProvider(
          StateNotifierProvider<ThemeNotifier, AppTheme>((ref) {
            return ThemeNotifier(hiveService)
              ..setTheme(savedTheme ?? AppT


verilua "appendTasks" {
    function ()
        local clock = dut.clock:chdl()

        dut.reset = 1
        dut.clock:posedge(10)
        dut.reset = 0


: from n/a through 1.1. | [1]https://patchstack.com/database/wordpress/plugin/launchpage-app-importer/vulnerability/wordpress-launchpage-app-importer-plugin-1-1-sql-injection-vulnerability?_s_id=cve |
| 91 | CVE-2024-55978 | 9.3  | CRITICAL | Improper Neutralization of Special Elements used in an SQL Command (`SQL Injection`) vulnerability in WalletStation.com Code Generator Pro allows SQL Injection.This issue affects Code Generator Pro: from n/a through 1.2. | [1]https://patchstack.com/database/wordpress/plugin/code-generator-pro/vulnerability/wordpress-code-generator-pro-plugin-1-2-sql-injection-vulnerability?_s_id=cve |
| 92 | CVE-2024-55979 | 8.5  | HIGH | Improper Neutralization of Special Elements used in an SQL Command (`SQL Injection`) vulnerability in Webriderz Wr Age Verification allows SQL Injection.This issue affects Wr Age Verification: from n/a through 2.0.0. | [1]https://patchstack.com/database/wordpress/plugin/wr-age-verification/vulnerability/wordpress-wr-age-verification-plugin-2-0-0-sql-injection-vulnerability-2?_s_id=cve |
| 93 | CVE-2024-55980 | 9.3  | CRITICAL | Improper Neutralization of Special Elements used in an SQL Command (`SQL Injection`) vulnerability in Webriderz Wr Age Verification allows SQL Injection.This issue affects Wr Age Verification: from n/a through 2.0.0. | [1]https://patchstack.com/database/wordpress/plugin/wr-age-verification/vulnerability/wordpress-wr-age-verification-plugin-2-0-0-sql-injection-vulnerability?_s_id=cve |
| 94 | CVE-2024-55981 | 9.3  | CRITICAL | Improper Neutralization of Special Elements used in an SQL Command (`SQL Injection`) vulnerability in Nabajit Roy Nabz Image Gallery allows SQL Injection.This issue affects Nabz Image Gallery: from n/a through v1.00. | [1]https://patchstack.com/database/wordpress/plugin/nabz-image-gallery/vulnerability/wordpress-nabz-image-gallery-plugin-v1-00-sql-injection-vulnerability?_s_id=cve |
| 95 | CVE-2024-55982 | 9.3  | CRITICAL | Improper Neutralization of Special Elements used in an SQL Command (`SQL Injection`) vulnerability in richteam Share Buttons – Social Media allows Blind SQL Injection.This issue affects Share Buttons – Social Media: from n/a through 1.0.2. | [1]https://patchstack.com/database/wordpress/plugin/rich-web-share-button/vulnerability/wordpress-share-buttons-social-media-plugin-1-0-2-sql-injection-vulnerability-2?_s_id=cve |
| 96 | CVE-2024-55986 | 8.5  | HIGH | Improper Neutralization of Special Elements used in an SQL Command (`SQL Injection`) vulnerability in serviceonline Service allows Blind SQL Injection.This issue affects Service: from n/a through 1.0.4. | [1]https://patchstack.com/database/wordpress/plugin/service/vulnerability/wordpress-service-plugin-1-0-4-sql-injection-vulnerability?_s_id=cve |
| 97 | CVE-2024-55987 | 8.5  | HIGH | Improper Neutralization of Special Elements used in an SQL Command (`SQL Injection`) vulnerability in Ritesh Sanap Advanced What should we write next about allows SQL Injection.This issue affects Advanced What should we write next about: from n/a through 1.0.3. | [1]https://patch


chmentArgs Empty => new LogTailAttachmentArgs();
    }

    public sealed class LogTailAttachmentState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// The Logtail configuration name, which is unique in the same project.
        /// </summary>
        [Input("logtailConfigName")]
        public Input<string>? LogtailConfigName { get; set; }

        /// <summary>
        /// The machine group name, which is unique in the same project.
        /// </summary>
        [Input("machineGroupName")]
        public Input<string>? MachineGroupName { get; set; }

        /// <summary>
        /// The project name to the log store belongs.
        /// </summary>
        [Input("project")]
        public Input<string>? Project { get; set; }

        public LogTailAttachmentState()
        {
        }
        public static new LogTailAttachmentState Empty => new LogTailAttachmentState();
    }
}


允许用户存储任意 JSON 对象的漏洞，而前端需要一个字符串，这可能会发生一个问题：

```tsx
// 服务端允许用户存储 JSON
let expectedTextButGotJSON = {
  type: 'div',
  props: {
    dangerouslySetInnerHTML: {
      __html: '/* 把你想的搁着 */'
    }
  }
  // ...
}
let message = { text: expectedTextButGotJSON }

// React 0.13 中有风险
;<p>{message.text}</p>
```

在这个例子中，React 0.13 [很容易](http://danlec.com/blog/xss-via-a-spoofed-react-element)受到 XSS 攻击。再次声明，这个攻击是服务端存在漏洞导致的。不过，React 会为了大家的安全做更多工作。从 React 0.14 开始，它做到了。

React 0.14 修复手段是**用 Symbol 标记每个 React 元素（element）**

```tsx
{
  type: 'marquee',
  props: {
    bgcolor: '#ffa7c4',
    children: 'hi',
  },
  key: null,
  ref: null,
  $$typeof: Symbol.for('react.element'),
}
```

这是个有效的办法，因为 JSON 不支持 `Symbol` 类型。所以即使服务器存在用 JSON 作为文本返回安全漏洞，JSON 里也不包含 `Symbol.for('react.element')`。React 会检测 `element.$$typeof`，如果元素丢失或者无效，会拒绝处理该元素。

![blog-3-2](./image/blog-3-2.png)

特意用 `Symbol.for() `的好处是 **Symbols 通用于 iframes 和 workers** 等环境中。因此无论在多奇怪的条件下，这方案也不会影响到应用不同部分传递可信的元素。同样，即使页面上有很多个 React 副本，它们也 「接受」 有效的 `$$typeof` 值。

---

如果浏览器不支持 `Symbols` 怎么办？

唉，那这种保护方案就无效了。React 仍然会加上 `$$typeof` 字段以保证一致性，但只是[设置一个数字](https://github.com/facebook/react/blob/8482cbe22d1a421b73db602e1f470c632b09f693/packages/shared/ReactSymbols.js#L14-L16)而已 —— `0xeac7`。

为什么是这个数字？因为 `0xeac7` 看起来有点像 「React」。

---

## 扩展

- [symbol](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol)
  每个从 Symbol()返回的 symbol 值都是唯一的。一个 symbol 值能作为对象属性的标识符；这是该数据类型仅有的目的。

- [symbol.for()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for)
  和 Symbol() 不同的是，用 Symbol.for() 方法创建的的 symbol 会被放入一个全局 symbol 注册表中。Symbol.for() 并不是每次都会创建一个新的 symbol，它会首先检查给定的 key 是否已经在注册表中了。假如是，则会直接返回上次存储的那个。否则，它会再新建一个。
# try catch

在写 js 代码的时候尤其是 Node 端经常需要用


%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:left .75rem center,center left 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-right:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-left:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-left:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) left calc(.375em


ndowsServer2022FullContainer: {
			X86x64:    ekstypes.AMITypesWindowsFull2022X8664,
			X86Nvidia: ekstypes.AMITypesWindowsFull2022X8664,
		},
		NodeImageFamilyWindowsServer2022CoreContainer: {
			X86x64:    ekstypes.AMITypesWindowsCore2022X8664,
			X86Nvidia: ekstypes.AMITypesWindowsCore2022X8664,
		},
	}

	amiType, ok := amiTypeMapping[amiFamily]
	if !ok {
		return ekstypes.AMITypesCustom
	}

	// this helper short circuits the check for missing entries for amiTypes in
	// ami families based on the value of `strict`.
	isValid := func(amiType ekstypes.AMITypes) bool {
		return strict || amiType != ""
	}

	if instanceutils.IsARMInstanceType(instanceType) {
		switch {
		case instanceutils.IsNvidiaInstanceType(instanceType) && isValid(amiType.ARM64Nvidia):
			return amiType.ARM64Nvidia
		case instanceutils.IsNeuronInstanceType(instanceType) && isValid(amiType.ARM64Neuron):
			return amiType.ARM64Neuron
		default:
			return amiType.ARM
		}
	} else {
		switch {
		case instanceutils.IsNvidiaInstanceType(instanceType) && isValid(amiType.X86Nvidia):
			return amiType.X86Nvidia
		case instanceutils.IsNeuronInstanceType(instanceType) && isValid(amiType.X86Neuron):
			return amiType.X86Neuron
		default:
			return amiType.X86x64
		}
	}
}
package v1alpha5

import (
	"github.com/aws/aws-sdk-go-v2/aws"
	. "github.com/onsi/ginkgo/v2"
	. "github.com/onsi/gomega"

	ekstypes "github.com/aws/aws-sdk-go-v2/service/eks/types"
)

var _ = Describe("ClusterConfig validation", func() {
	Describe("cloudWatch.clusterLogging", func() {
		var (
			cfg *ClusterConfig
			err error
		)

		BeforeEach(func() {
			cfg = NewClusterConfig()
		})

		It("should handle unknown types", func() {
			cfg.CloudWatch.ClusterLogging.EnableTypes = []string{"anything"}

			SetClusterConfigDefaults(cfg)
			err = ValidateClusterConfig(cfg)
			Expect(err).To(HaveOccurred())
		})

		It("should have no logging by default", func() {
			SetClusterConfigDefaults(cfg)
			err = ValidateClusterConfig(cfg)
			Expect(err).NotTo(HaveOccurred())

			Expect(cfg.CloudWatch.ClusterLogging.EnableTypes).To(BeEmpty())
		})

		It("should expand `['*']` to all", func() {
			cfg.CloudWatch.ClusterLogging.EnableTypes = []string{"*"}

			SetClusterConfigDefaults(cfg)
			err = ValidateClusterConfig(cfg)
			Expect(err).NotTo(HaveOccurred())

			Expect(cfg.CloudWatch.ClusterLogging.EnableTypes).To(Equal(SupportedCloudWatchClusterLogTypes()))
		})

		It("should expand `['all']` to all", func() {
			cfg.CloudWatch.ClusterLogging.EnableTypes = []string{"all"}

			SetClusterConfigDefaults(cfg)
			err = ValidateClusterConfig(cfg)
			Expect(err).NotTo(HaveOccurred())

			Expect(cfg.CloudWatch.ClusterLogging.EnableTypes).To(Equal(SupportedCloudWatchClusterLogTypes()))
		})

		It("should expand `['api',


}

    mergeServiceFiles()
}

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
    toolchain.languageVersion.set(JavaLanguageVersion.of(17))
    withSourcesJar()
}

tasks.withType<JavaCompile> {
    options.encoding = "UTF-8"
}

tasks.named("assemble") {
    dependsOn("shadowJar")
}/*
 * FDPClient Hacked Client
 * A free open source mixin-based injection hacked client for Minecraft using Minecraft Forge.
 * https://github.com/SkidderMC/FDPClient/
 */
package net.ccbluex.liquidbounce.config

import com.google.gson.JsonElement
import com.google.gson.JsonObject
import net.ccbluex.liquidbounce.file.gson.json
import net.minecraft.client.gui.FontRenderer
import java.awt.Color

/**
 * A container of the values
 */
open class Configurable(
    name: String
) : Value<MutableList<Value<*>>>(
    name, mutableListOf()
) {

    val values: List<Value<*>>
        get() = this.get()

    fun addValue(value: Value<*>) = apply {
        get().add(value)
        value.owner = this
    }

    fun addValues(values: Collection<Value<*>>) = apply {
        get().addAll(values)
        values.forEach { it.owner = this }
    }

    operator fun <T, V : Value<T>> V.unaryPlus() = apply(::addValue)

    override fun toJson(): JsonElement = json {
        for (value in values) {
            if (value.excluded) {
                continue
            }

            value.name to value.toJson()
        }
    }

    override fun fromJsonF(element: JsonElement): MutableList<Value<*>>? {
        element as JsonObject

        val values = get()
        // Set all sub values from the JSON object
        for ((valueName, value) in element.entrySet()) {
            values.find { it.name.equals(valueName, true) }?.fromJson(value)
        }

        return values
    }

    override fun toText(): String {
        TODO("Not yet implemented")
    }

    override fun fromTextF(text: String): MutableList<Value<*>>? {
        TODO("Not yet implemented")
    }

    fun int(
        name: String, value: Int, range: IntRange, suffix: String? = null, isSupported: (() -> Boolean)? = null
    ) = +IntValue(name, value, range, suffix).apply {
        if (isSupported != null) setSupport { isSupported.invoke() }
    }

    fun float(
        name: String, value: Float, range: ClosedFloatingPointRange<Float> = 0f..Float.MAX_VALUE, suffix: String? = null, isSupported: (() -> Boolean)? = null
    ) = +FloatValue(name, value, range, suffix).apply {
        if (isSupported != null) setSupport { isSupported.invoke() }
    }

    fun choices(
        name: String, values: Array<String>, value: String, isSupported: (() -> Boolean)? = null
    ) = +ListValue(name, values, value).apply {
        if (isSupported != null) setSupport { isSupported.invoke() }
    }

    fun block(
        name: String, value: Int, isSupported: (() -> Boolean)? = null
    ) = +BlockValue(name, value).apply {
        if (isSupported != null) setSupport { isSupported.invoke() }
    }

    fun font(
        name: String, value: FontRenderer, isSupported: (() -> Boolean)? = null
    ) = +FontValue(name, value).apply {
        if (isSupported != null) setSupport { isSupported.invoke() }
    }

    fun text(
        name: String, value: String, isSupported: (() -> Boolean)? = null
    ) = +T


`)
    }
    return buf
  }

  static toNoScientificString(src: number): string {
    const BN = BigNumber.clone({
      EXPONENTIAL_AT: 1e+9
    })
    const num1 = new BN(src)
    return num1.toString()
  }

}

export enum EndianType {
  BigEndian = 0,
  LittleEndian,
}
import path from 'path';
import fs from 'fs';
import axios from 'axios';
import {
  APIActionBody,
  BaseCols,
  FindResult,
  MapConfig
} from '../types/appsheet';

const getTableFileURL = 'https://www.appsheet.com/template/gettablefileurl';

const validIdRegExp = /^[-_0-9a-zA-Z]+$/;
export function validId(s: string | number): boolean {
  if (typeof s === 'number') {
    return true;
  } else if (typeof s === 'string' && s.match(validIdRegExp)) {
    return true;
  }
  return false;
}

function throwInvalidId(
  value: string,
  srcName: string,
  dstName: string,
  colType: string
) {
  throw new Error(
    `mappingCols: invalid id: value = ${value}, params = ${srcName}, ${dstName}, ${colType}`
  );
}

function throwInvalidType(
  actually: string,
  srcName: string,
  dstName: string,
  colType: string
) {
  throw new Error(
    `mappingCols: invalid type: actually type = ${actually}, params = ${srcName}, ${dstName}, ${colType}`
  );
}

export function mappingCols(s: any, mapConfig: MapConfig): BaseCols {
  const n = new Date();
  const id = validId(s.id) ? s.id : throwInvalidId(s.id, 'id', 'id', 'id');
  const ret: BaseCols = {
    _RowNumber: s._RowNumber !== undefined ? s._RowNumber! : -1,
    id,
    createdAt: s.createdAt ? new Date(s.createdAt) : n,
    updatedAt: s.updatedAt ? new Date(s.updatedAt) : n
  };
  mapConfig.cols.forEach((m) => {
    if (s.hasOwnProperty(m.srcName)) {
      const srcColType = typeof s[m.srcName];
      switch (m.colType) {
        case 'id':
          if (srcColType === 'number' || srcColType === 'string') {
            if (validId(s[m.srcName])) {
              ret[m.dstName] = `${s[m.srcName]}`;
            } else {
              throwInvalidId(s[m.srcName], m.srcName, m.dstName, m.colType);
            }
          } else {
            throwInvalidType(srcColType, m.srcName, m.dstName, m.colType);
          }
          break;
        case 'number':
          if (srcColType === 'number') {
            ret[m.dstName] = s[m.srcName];
          } else {
            throwInvalidType(srcColType, m.srcName, m.dstName, m.colType);
          }
          break;
        case 'string':
        case 'image': // この時点では文字列として扱う(保存時にファイルをダウンロードする).
          if (srcColType === 'string' || srcColType === 'number') {
            ret[m.dstName] = `${s[m.srcName]}`;
          } else {
            ret[m.dstName] = `${s[m.srcName] || ''}`;
          }
          break;
        case 'datetime':
          ret[m.dstName] = new Date(`${s[m.srcName]}`);
          break;
        case 'enum':
          const str = `${s[m.srcName]}`;
          const matchIdx = m.replace.findIndex(({ pattern }) =>
            str.match(pattern)
          );
          if (matchIdx >= 0) {
            ret[m.dstName] = str.rep


reak;
		}
	}

	if (!find)
		return -EINVAL;

	if (isup)
		reg_pupd = spec_pupd[i].pupd_offset + align;
	else
		reg_pupd = spec_pupd[i].pupd_offset + (align << 1);

	regmap_write(regmap, reg_pupd, spec_pupd[i].pupd_bit);

	reg_set_r0 = spec_pupd[i].r0_offset + align;
	reg_rst_r0 = spec_pupd[i].r0_offset + (align << 1);
	reg_set_r1 = spec_pupd[i].r1_offset + align;
	reg_rst_r1 = spec_pupd[i].r1_offset + (align << 1);

	switch (r1r0) {
	case MTK_PUPD_SET_R1R0_00:
		regmap_write(regmap, reg_rst_r0, spec_pupd[i].r0_bit);
		regmap_write(regmap, reg_rst_r1, spec_pupd[i].r1_bit);
		break;
	case MTK_PUPD_SET_R1R0_01:
		regmap_write(regmap, reg_set_r0, spec_pupd[i].r0_bit);
		regmap_write(regmap, reg_rst_r1, spec_pupd[i].r1_bit);
		break;
	case MTK_PUPD_SET_R1R0_10:
		regmap_write(regmap, reg_rst_r0, spec_pupd[i].r0_bit);
		regmap_write(regmap, reg_set_r1, spec_pupd[i].r1_bit);
		break;
	case MTK_PUPD_SET_R1R0_11:
		regmap_write(regmap, reg_set_r0, spec_pupd[i].r0_bit);
		regmap_write(regmap, reg_set_r1, spec_pupd[i].r1_bit);
		break;
	default:
		return -EINVAL;
	}

	return 0;
}

static const struct mtk_pinctrl_devdata mt8135_pinctrl_data = {
	.pins = mtk_pins_mt8135,
	.npins = ARRAY_SIZE(mtk_pins_mt8135),
	.grp_desc = mt8135_drv_grp,
	.n_grp_cls = ARRAY_SIZE(mt8135_drv_grp),
	.pin_drv_grp = mt8135_pin_drv,
	.n_pin_drv_grps = ARRAY_SIZE(mt8135_pin_drv),
	.spec_pull_set = spec_pull_set,
	.dir_offset = 0x0000,
	.ies_offset = 0x0100,
	.pullen_offset = 0x0200,
	.smt_offset = 0x0300,
	.pullsel_offset = 0x0400,
	.dout_offset = 0x0800,
	.din_offset = 0x0A00,
	.pinmux_offset = 0x0C00,
	.type1_start = 34,
	.type1_end = 149,
	.port_shf = 4,
	.port_mask = 0xf,
	.port_align = 4,
	.mode_mask = 0xf,
	.mode_per_reg = 5,
	.mode_shf = 4,
	.eint_hw = {
		.port_mask = 7,
		.ports     = 6,
		.ap_num    = 192,
		.db_cnt    = 16,
		.db_time = debounce_time_mt2701,
	},
};

static const struct of_device_id mt8135_pctrl_match[] = {
	{ .compatible = "mediatek,mt8135-pinctrl", .data = &mt8135_pinctrl_data },
	{ }
};

static struct platform_driver mtk_pinctrl_driver = {
	.probe = mtk_pctrl_common_probe,
	.driver = {
		.name = "mediatek-mt8135-pinctrl",
		.of_match_table = mt8135_pctrl_match,
	},
};

static int __init mtk_pinctrl_init(void)
{
	return platform_driver_register(&mtk_pinctrl_driver);
}
arch_initcall(mtk_pinctrl_init);


/* set mode */
	mov		r7, r2						/* get current start address */
	orrs	r7, r7, r1					/* end of current page */
	subs	r7, r7, r2					/* count-1 to end of page */
	cmp		r7, r0						/* if this count <= remaining */
	bls		write_dlr					/* then read to end of page */
	mov		r7, r0						/* else read all remaining */
write_dlr:
	str		r7, [r3, #OCTOSPI_DLR]		/* size-1 in DLR register */
	ldr		r7, ccr_page_read			/* CCR for read */
	str		r7, [r6, #OCTOSPI_CCR_CCR]	/* initiate transfer */
	ldr		r7, tcr_page_read			/* TCR for read */
	str		r7, [r6, #OCTOSPI_TCR_CCR]	/* instruction */
	ldr		r7, ir_page_read			/* IR for read */
	str		r7, [r6, #OCTOSPI_IR_CCR]	/* instruction */
	str		r2, [r3, #OCTOSPI_AR]		/* store SPI start address */
	ldr		r6, =0x04C11DB7				/* CRC32 polynomial */
read_loop:
	ldrb	r7, [r5]					/* read next byte from DR */
	lsls	r7, r7, #24					/* shift into msb */
	eors	r4, r4, r7
	.rept	8							/* unrolled bit loop */
	asrs	r7, r4, #31					/* copy bit 31 into bits 0 to 31 */
	ands	r7, r7, r6					/* r7 neg. -> CRC32XOR, pos. -> 0x0 */
	lsls	r4, r4, #1					/* shift result */
	eors	r4, r4, r7					/* eor by CRC32XOR or 0x0 */
	.endr
	adds	r2, r2, #1					/* increment address */
	subs	r0, r0, #1					/* decrement (count-1) */
	bmi		exit						/* stop if no data left */
	tst		r2, r1						/* page end ? */
	bne		read_loop					/* if not, then next byte */
page_end:
	bal		start_read					/* then next page */
	.pool

exit:
	mvns	r0, r4						/* invert to get final result */
	octospi_abort						/* to idle state */
	.align	2							/* align to word, bkpt is 4 words */
	bkpt	#0							/* before code end for exit_point */
	.align	2							/* align to word */

cr_page_read:
	.space	4							/* OCTOSPI_CR value for read command */
ccr_page_read:
	.space	4							/* OCTOSPI_CCR value for read command */
tcr_page_read:
	.space	4							/* OCTOSPI_TCR value for read command */
ir_page_read:
	.space	4							/* OCTOSPI_IR value for read command */


 project's GitHub page.";
const String changesNewLocale =
    'Added new translations: Dutch, Filipino, French, German.';
import 'package:drift/drift.dart';

import 'package:purple_task/core/database/app_database.dart';

part 'category_dao.g.dart';

@DriftAccessor(tables: [Categories])
class CategoryDao extends DatabaseAccessor<AppDatabase>
    with _$CategoryDaoMixin {
  CategoryDao(super.db);

  Stream<List<Category>> watchAllCategories() => select(categories).watch();

  Future<List<Category>> getAllCategories() {
    return (select(categories)
          ..orderBy([(t) => OrderingTerm(expression: t.position)]))
        .get();
  }

  Future<int> addCategory(CategoriesCompanion categoriesCompanion) async {
    final expr = categories.position.max();

    final query = (selectOnly(categories)..addColumns([expr]));

    final previousMaxPosition =
        await query.map((row) => row.read(expr)).getSingleOrNull();

    final currentMaxPosition =
        previousMaxPosition == null ? 0 : previousMaxPosition + 1;

    return into(categories).insert(
      categoriesCompanion.copyWith(position: Value(currentMaxPosition)),
    );
  }

  Future<void> addCategoriesList(
    List<CategoriesCompanion> categoriesCompanionList,
  ) async {
    await transaction(
      () async {
        for (final companion in categoriesCompanionList) {
          await addCategory(companion);
        }
      },
    );
  }

  Future<int> deleteCategory(int id) =>
      (delete(categories)..where((tbl) => tbl.id.equals(id))).go();

  Future<bool> updateCategory(CategoriesCompanion categoriesCompanion) =>
      update(categories).replace(categoriesCompanion);

  Future<void> updateCategoriesList(
    List<CategoriesCompanion> categoriesCompanionList,
  ) async {
    await transaction(
      () async {
        for (final companion in categoriesCompanionList) {
          await update(categories).replace(companion);
        }
      },
    );
  }
}
// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'providers.dart';

// **************************************************************************
// RiverpodGenerator
// **************************************************************************

String _$numberOfAllActiveTasksHash() =>
    r'719f041b69dcf6d7eb7a7c5c1685f3f9d37f1628';

/// See also [numberOfAllActiveTasks].
@ProviderFor(numberOfAllActiveTasks)
final numberOfAllActiveTasksProvider = AutoDisposeProvider<int>.internal(
  numberOfAllActiveTasks,
  name: r'numberOfAllActiveTasksProvider',
  debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
      ? null
      : _$numberOfAllActiveTasksHash,
  dependencies: null,
  allTransitiveDependencies: null,
);

@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
typedef NumberOfAllActiveTasksRef = AutoDisposeProviderRef<int>;
String _$uncategorizedTasksHash() =>
    r'4013d9e97aa3b92db43ebc03e1de7430fecea4e3';

/// See also [uncategorizedTasks].
@ProviderFor(uncategorizedTasks)
final uncategorizedTasksProvider = AutoDisposeProvider<List<Task>>.internal(
  uncategorizedTasks,
  name: r'uncategorizedTasksProvider',
  debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
      ? null
      : _$uncategorizedTasksHash,
  dependencies: null,
  allTransitiveDependencies: null,
);

@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
typedef UncategorizedTasksRef = AutoDisposeProviderRef<List<Task>>;
String _$numberOfActiveTasksInCategoryHash() =>
    r'5117cb5433e813fcbe37446632c0763e38ff9a19';

/// Copied from Dart SDK
class _SystemHash {
  _


1ED97C - _021ED950 - 2 ; case 7
	.short _021ED97C - _021ED950 - 2 ; case 8
	.short _021ED97C - _021ED950 - 2 ; case 9
	.short _021ED9B4 - _021ED950 - 2 ; case 10
	.short _021ED97C - _021ED950 - 2 ; case 11
	.short _021ED97C - _021ED950 - 2 ; case 12
	.short _021ED97C - _021ED950 - 2 ; case 13
	.short _021ED9B4 - _021ED950 - 2 ; case 14
	.short _021ED980 - _021ED950 - 2 ; case 15
_021ED970:
	ldrh r0, [r4, #0x16]
	cmp r0, #1
	bne _021ED9B4
	mov r0, #0x2a
	strh r0, [r4, #0x14]
	b _021ED9B4
_021ED97C:
	strh r0, [r4, #0x14]
	b _021ED9B4
_021ED980:
	ldr r0, _021EDA40 ; =0x0001E538
	mov r1, #0
	ldr r0, [r4, r0]
	bl ManagedSprite_SetDrawFlag
	add r0, sp, #0xc
	add r1, sp, #0
	bl RTC_GetDateTime
	add r0, sp, #0xc
	add r1, sp, #0
	bl RTC_ConvertDateTimeToSecond
	add r0, r4, #0
	bl ov112_021ED530
	add r0, r4, #0
	bl ov112_021ED5DC
	add r0, r4, #0
	mov r1, #6
	bl ov112_021EA670
	add sp, #0x1c
	mov r0, #0x29
	pop {r4, r5, pc}
_021ED9B4:
	ldrh r0, [r4, #0x14]
	cmp r0, #0
	beq _021ED9D2
	ldr r0, _021EDA40 ; =0x0001E538
	mov r1, #0
	ldr r0, [r4, r0]
	bl ManagedSprite_SetDrawFlag
	mov r0, #0x3d
	str r0, [r4, #0xc]
	bl ov112_021E7464
	add sp, #0x1c
	mov r0, #0x20
	pop {r4, r5, pc}
_021ED9D2:
	bl ov112_021E7668
	cmp r0, #0
	bne _021EDA1E
	add r0, r4, #0
	mov r1, #1
	bl ov112_021E98E8
	mov r0, #5
	bl ov112_021E9888
	cmp r0, #0
	beq _021ED9FC
	ldr r0, _021EDA44 ; =gSystem
	ldr r1, [r0, #0x48]
	mov r0, #1
	tst r0, r1
	bne _021ED9FC
	mov r0, #2
	tst r0, r1
	beq _021EDA3A
_021ED9FC:
	bl ov112_021E7464
	mov r3, #0x21
	mov r1, #3
	strh r3, [r4, #0x14]
	mov r0, #0x42
	str r0, [r4, #0xc]
	add r0, r4, #0
	add r2, r1, #0
	bl ov112_021EC440
	ldr r0, _021EDA48 ; =0x000005DD
	bl PlaySE
	add sp, #0x1c
	mov r0, #0x41
	pop {r4, r5, pc}
_021EDA1E:
	ldrh r0