--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 321 70% 69%;--s: 197 87% 65%;--a: 48 89% 57%;--n: 253 59% 20%;--nc: 260 60% 98%;--b1: 253 58% 15%;--bc: 260 60% 98%;--in: 199 87% 64%;--inc: 257 63% 17%;--su: 168 74% 68%;--suc: 257 63% 17%;--wa: 48 89% 57%;--wac: 257 63% 17%;--er: 352 74% 57%;--erc: 260 60% 98%}[data-theme=retro]{color-scheme:light;--pf: 3 74% 69%;--sf: 145 27% 65%;--af: 24 67% 52%;--nf: 340 7% 10%;--inc: 239 85% 93%;--suc: 126 38% 89%;--wac: 29 59% 11%;--erc: 11 100% 91%;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 3 74% 76%;--pc: 345 5% 15%;--s: 145 27% 72%;--sc: 345 5% 15%;--a: 24 67% 59%;--ac: 345 5% 15%;--n: 340 7% 17%;--nc: 43 41% 88%;--b1: 45 47% 80%;--b2: 44 47% 73%;--b3: 44 47% 68%;--bc: 345 5% 15%;--in: 221 83% 53%;--su: 142 76% 36%;--wa: 32 95% 44%;--er: 0 72% 51%;--rounded-box: .4rem;--rounded-btn: .4rem;--rounded-badge: .4rem}[data-theme=cyberpunk]{color-scheme:light;--pf: 345 100% 66%;--sf: 195 80% 63%;--af: 276 74% 64%;--nf: 57 100% 6%;--b2: 56 100% 43%;--b3: 56 100% 36%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--bc: 53 46% 13%;--pc: 348 27% 15%;--sc: 196 23% 15%;--ac: 277 22% 15%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--p: 345 100% 73%;--s: 195 80% 70%;--a: 276 74% 71%;--n: 57 100% 13%;--nc: 56 100% 50%;--b1: 56 100% 50%;--rounded-box: 0;--rounded-btn: 0;--rounded-badge: 0;--tab-radius: 0}[data-theme=valentine]{color-scheme:light;--pf: 353 74% 60%;--sf: 254 86% 70%;--af: 181 56% 63%;--nf: 336 43% 41%;--b2: 318 46% 82%;--b3: 318 46% 75%;--pc: 356 26% 14%;--sc: 256 20% 15%;--ac: 181 16% 15%;--inc: 239 85% 93%;--suc: 126 38% 89%;--wac: 29 59% 11%;--erc: 11 100% 91%;--rounded-box: 1rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn


Драккари",
[38334] = "Двигатель ветролета",
[38335] = "Древняя эктоплазма",
[38336] = "Кристаллизованные сопли кабана",
[38337] = "Пятнистое гуано",
[38338] = "Узлокорень",
[38339] = "Иссохшее крыло нетопыря",
[38340] = "Янтарный желудь",
[38341] = "Маринованное орлиное яйцо",
[38342] = "Настой тролльей погибели",
[38343] = "Радужный настой",
[38344] = "Ссохшийся драконий коготь",
[38345] = "Застывшая паучья лимфа",
[38346] = "Замерзшая змеиная слизь",
[38347] = "Шахтерская сумка из шкуры мамонта",
[38348] = "Поврежденное око",
[38349] = "Запчасти Торговой Компании",
[38350] = "\"Глубинная бомба\" мурлоков",
[38351] = "Выжимка из мурлока",
[38353] = "Буканьерская накидка Бухты торговцев",
[38354] = "Запятанный маслом матросский плащ",
[38355] = "Плотная гоблинская защита для спины",
[38356] = "Боевой жезл Торговой компании",
[38357] = "Острая метательная штуковина",
[38358] = "Магический оживитель",
[38359] = "Гоблинский гаситель повторений",
[38360] = "Идол Тайного ужаса",
[38361] = "Молниевый жезл Торговой Компании",
[38362] = "Манускрипт воздаяния Торговой Компании",
[38363] = "Манускрипт защиты Торговой Компании",
[38364] = "Манускрипт самых святых деяний Торговой Компании",
[38365] = "Идол упреждающей атаки",
[38366] = "Идол Незамутненных мыслей",
[38367] = "Пламерезка Торговой Компании",
[38368] = "Тотем залива",
[38369] = "Осиные крылья",
[38370] = "Коготь ящера",
[38371] = "Йормунгарские накладки для поножей",
[38372] = "Нерубские накладки для поножей",
[38373] = "Накладки для поножей из снежной шкуры",
[38374] = "Накладки для поножей из ледяной чешуи",
[38375] = "Накладки из борейской кожи",
[38376] = "Накладки из толстой борейской кожи",
[38379] = "Дробленые кристаллы василиска",
[38380] = "Зул'дракская крыса",
[383


ConstantInt *const_loc = ConstantInt::get(Int32Tyi, write_loc);
      StoreInst *  StoreFinalLoc = IRB.CreateStore(const_loc, AFLFinalLoc);
      ModuleSanitizerCoverageLTO::SetNoSanitizeMetadata(StoreFinalLoc);

    }

    if (dictionary.size()) {

      size_t memlen = 0, count = 0, offset = 0;

      // sort and unique the dictionary
      std::sort(dictionary.begin(), dictionary.end());
      auto last = std::unique(dictionary.begin(), dictionary.end());
      dictionary.erase(last, dictionary.end());

      for (auto token : dictionary) {

        memlen += token.length();
        count++;

      }

      if (!be_quiet)
        printf("AUTODICTIONARY: %lu string%s found\n", count,
               count == 1 ? "" : "s");

      if (count) {

        auto ptrhld = std::unique_ptr<char[]>(new char[memlen + count]);

        count = 0;

        for (auto token : dictionary) {

          if (offset + token.length() < 0xfffff0 && count < MAX_AUTO_EXTRAS) {

            ptrhld.get()[offset++] = (uint8_t)token.length();
            memcpy(ptrhld.get() + offset, token.c_str(), token.length());
            offset += token.length();
            count++;

          }

        }

        GlobalVariable *AFLDictionaryLen =
            new GlobalVariable(M, Int32Tyi, false, GlobalValue::ExternalLinkage,
                               0, "__afl_dictionary_len");
        ConstantInt *const_len = ConstantInt::get(Int32Tyi, offset);
        StoreInst *StoreDictLen = IRB.CreateStore(const_len, AFLDictionaryLen);
        ModuleSanitizerCoverageLTO::SetNoSanitizeMetadata(StoreDictLen);

        ArrayType *ArrayTy = ArrayType::get(IntegerType::get(Ctx, 8), offset);
        GlobalVariable *AFLInternalDictionary = new GlobalVariable(
            M, ArrayTy, true, GlobalValue::ExternalLinkage,
            ConstantDataArray::get(Ctx,
                                   *(new ArrayRef<char>(ptrhld.get(), offset))),
            "__afl_internal_dictionary");
        AFLInternalDictionary->setInitializer(ConstantDataArray::get(
            Ctx, *(new ArrayRef<char>(ptrhld.get(), offset))));
        AFLInternalDictionary->setConstant(true);

        GlobalVariable *AFLDictionary = new GlobalVariable(
            M, PointerType::get(Int8Tyi, 0), false,
            GlobalValue::ExternalLinkage, 0, "__afl_dictionary");

        Value *AFLDictOff = IRB.CreateGEP(Int8Ty, AFLInternalDictionary, Zero);
        Value *AFLDictPtr =
            IRB.CreatePointerCast(AFLDictOff, PointerType::get(Int8Tyi, 0));
        StoreInst *StoreDict = IRB.CreateStore(AFLDictPtr, AFLDictionary);
        ModuleSanitizerCoverageLTO::SetNoSanitizeMetadata(StoreDict);

      }

    }

  }

  /* Say something nice. */

  if (!be_quiet) {

    if (!inst)
      WARNF("No instrumentation targets found.");
    else {

      char modeline[100];
      snprintf(modeline, sizeof(modeline), "%s%s%s%s%s%s",
               getenv("AFL_HARDEN") ? "hardened" : "non-hardened",
               getenv("AFL_USE_ASAN") ? ", ASAN" : "",
               getenv("AFL_USE_MSAN") ? ", MSAN" : "",
               getenv("AFL_USE_TSAN") ? ", TSAN" : "",
               getenv("AFL_USE_CFISAN") ? ", CFISAN" : "",
               getenv("AFL_USE_UBSAN") ? ", UBSAN" : "");
      OKF("Instrumented %u locations (%u selects) without collisions (%llu "
          "collisions have been avoided) (%s mode).",


      spy(...args);
    }

    format = formatSpy;
  }
  Intl.DateTimeFormat;

  Object.defineProperty(window, "Intl", {
    writable: true,
    configurable: true,
    value: {
      DateTimeFormat: Test,
    },
  });

  Object.defineProperty(global, "Intl", {
    writable: true,
    configurable: true,
    value: {
      DateTimeFormat: Test,
    },
  });

  beforeEach(() => {
    spy.mockReset();
    formatSpy.mockReset();
  });

  it("should call new Intl.NumberFormat with the right options", async () => {
    let locales: string | string[] | undefined = "en-GB";
    let options: Intl.DateTimeFormatOptions = {};
    const { formatter } = useIntlDateTimeFormat(locales, options);

    expect(formatter.value).toBeDefined();
    expect(spy).toHaveBeenLastCalledWith(locales, options);
  });

  it("should pass arguments", async () => {
    let locales: string | string[] | undefined = "en-GB";
    let options: Intl.DateTimeFormatOptions = {};

    useIntlDateTimeFormat().formatter.value;
    expect(spy).toHaveBeenLastCalledWith(undefined, undefined);

    useIntlDateTimeFormat(locales).formatter.value;
    expect(spy).toHaveBeenLastCalledWith(locales, undefined);

    useIntlDateTimeFormat(options).formatter.value;
    expect(spy).toHaveBeenLastCalledWith(undefined, options);

    useIntlDateTimeFormat(locales, options).formatter.value;
    expect(spy).toHaveBeenLastCalledWith(locales, options);

    // reactive
    spy.mockClear();
    const l = ref("en-GB");
    const o = ref<Intl.DateTimeFormatOptions>();
    const { formatter } = useIntlDateTimeFormat(l, o);
    formatter.value;
    expect(spy).toHaveBeenLastCalledWith(l.value, o.value);

    l.value = "pt-PT";
    await nextTick();
    formatter.value;

    expect(spy).toHaveBeenLastCalledWith(l.value, o.value);

    o.value = { year: "2-digit" };
    await nextTick();
    formatter.value;
    expect(spy).toHaveBeenLastCalledWith(l.value, o.value);
  });

  it("should call formatter.formatString", () => {
    const { formatString, formatter } = useIntlDateTimeFormat();
    formatter.value;
    expect(spy).toHaveBeenCalled();

    formatString(111);
    expect(spy).toHaveBeenCalledTimes(1);

    let overrideOpts = { year: "2-digit" } as const;
    formatString(111, overrideOpts);
    expect(spy).toHaveBeenCalledTimes(2);
    expect(spy).toHaveBeenLastCalledWith(undefined, overrideOpts);

    formatString(111, undefined, "pt-PT");
    expect(spy).toHaveBeenCalledTimes(3);
    expect(spy).toHaveBeenLastCalledWith("pt-PT", {});
  });

  test("format()", () => {
    formatSpy.mockReturnValueOnce("test");
    const { format } = useIntlDateTimeFormat();

    expect(format(111)).toMatchObject({
      value: "test",
    });
  });

  it("should format strings", () => {
    const { formatString } = useIntlDateTimeFormat();
    formatString("2020-01-01");
    expect(formatSpy).toHaveBeenLastCalledWith(new Date("2020-01-01"));
  });
});
export class GMCanvas {

	private _ctx: any;
	private _imageData: ImageData;

	public readonly width: number = 0;
	public readonly height: number = 0;

	constructor(public nativeCanvas: any, imgElemen


for _, tx := range txs {
			if _, ok := seen[tx.hash]; ok {
				t.Errorf("duplicate hash #%x in transaction index: address %s, nonce %d", tx.hash, addr, tx.nonce)
			}
			seen[tx.hash] = struct{}{}
		}
	}
	for hash, id := range pool.lookup.txIndex {
		if _, ok := seen[hash]; !ok {
			t.Errorf("tx lookup entry missing from transaction index: hash #%x, id %d", hash, id)
		}
		delete(seen, hash)
	}
	for hash := range seen {
		t.Errorf("indexed transaction hash #%x missing from tx lookup table", hash)
	}
	// Verify that all blobs in the index are present in the blob lookup and nothing more
	blobs := make(map[common.Hash]map[common.Hash]struct{})
	for _, txs := range pool.index {
		for _, tx := range txs {
			for _, vhash := range tx.vhashes {
				if blobs[vhash] == nil {
					blobs[vhash] = make(map[common.Hash]struct{})
				}
				blobs[vhash][tx.hash] = struct{}{}
			}
		}
	}
	for vhash, txs := range pool.lookup.blobIndex {
		for txhash := range txs {
			if _, ok := blobs[vhash][txhash]; !ok {
				t.Errorf("blob lookup entry missing from transaction index: blob hash #%x, tx hash #%x", vhash, txhash)
			}
			delete(blobs[vhash], txhash)
			if len(blobs[vhash]) == 0 {
				delete(blobs, vhash)
			}
		}
	}
	for vhash := range blobs {
		t.Errorf("indexed transaction blob hash #%x missing from blob lookup table", vhash)
	}
	// Verify that transactions are sorted per account and contain no nonce gaps,
	// and that the first nonce is the next expected one based on the state.
	for addr, txs := range pool.index {
		for i := 1; i < len(txs); i++ {
			if txs[i].nonce != txs[i-1].nonce+1 {
				t.Errorf("addr %v, tx %d nonce mismatch: have %d, want %d", addr, i, txs[i].nonce, txs[i-1].nonce+1)
			}
		}
		if txs[0].nonce != pool.state.GetNonce(addr) {
			t.Errorf("addr %v, first tx nonce mismatch: have %d, want %d", addr, txs[0].nonce, pool.state.GetNonce(addr))
		}
	}
	// Verify that calculated evacuation thresholds are correct
	for addr, txs := range pool.index {
		if !txs[0].evictionExecTip.Eq(txs[0].execTipCap) {
			t.Errorf("addr %v, tx %d eviction execution tip mismatch: have %d, want %d", addr, 0, txs[0].evictionExecTip, txs[0].execTipCap)
		}
		if math.Abs(txs[0].evictionExecFeeJumps-txs[0].basefeeJumps) > 0.001 {
			t.Errorf("addr %v, tx %d eviction execution fee jumps mismatch: have %f, want %f", addr, 0, txs[0].evictionExecFeeJumps, txs[0].basefeeJumps)
		}
		if math.Abs(txs[0].evictionBlobFeeJumps-txs[0].blobfeeJumps) > 0.001 {
			t.Errorf("addr %v, tx %d eviction blob fee jumps mismatch: have %f, want %f", addr, 0, txs[0].evictionBlobFeeJumps, txs[0].blobfeeJumps)
		}
		for i := 1; i < len(txs); i++ {
			w


 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2",
			"America/Paramaribo|LMT PMT PMT NEGT SRT SRT|3E.E 3E.Q 3E.A 3u 3u 30|012345|-2nDUj.k Wqo0.c qanX.I 1dmLN.o lzc0|24e4",
			"America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5",
			"America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
			"America/Rio_Branco|LMT ACT ACST AMT|4v.c 50 40 40|01212121212121212121212121212131|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4",
			"America/Porto_Velho|LMT AMT AMST|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4",
			"America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5",
			"America/Rainy_River|CST CDT CWT CPT|60


--inline .select2-search__field {
    background: transparent;
    border: none;
    outline: 0;
    box-shadow: none;
    -webkit-appearance: textfield;
}

.select2-container--admin-autocomplete .select2-results > .select2-results__options {
    max-height: 200px;
    overflow-y: auto;
}

.select2-container--admin-autocomplete .select2-results__option[role=group] {
    padding: 0;
}

.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] {
    color: #999;
}

.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] {
    background-color: #ddd;
}

.select2-container--admin-autocomplete .select2-results__option .select2-results__option {
    padding-left: 1em;
}

.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group {
    padding-left: 0;
}

.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option {
    margin-left: -1em;
    padding-left: 2em;
}

.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
    margin-left: -2em;
    padding-left: 3em;
}

.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
    margin-left: -3em;
    padding-left: 4em;
}

.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
    margin-left: -4em;
    padding-left: 5em;
}

.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
    margin-left: -5em;
    padding-left: 6em;
}

.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] {
    background-color: #79aec8;
    color: white;
}

.select2-container--admin-autocomplete .select2-results__group {
    cursor: default;
    display: block;
    padding: 6px;
}
/* remove resize bar while in betterlibrary */
.Root__top-container:has(.betterLibBox) .LayoutResizer__resize-bar {
    visibility: hidden;
}

/* creates the centered placeholder text on the sidebar where the library was */
.betterLibText {
    display: none;
    justify-content: center;
    align-items: center;
    height: 100%;
}

/* makes the text visible only when it is in the sidebar */
.main-yourLibraryX-library .betterLibText {
    display: var(--betterlib-show-placeholder-text,flex);
}

/* makes the "your library" not clickable, expands and styles the text*/
button.Button-sc-1dqy6lx-0.main-yourLibraryX-collapseButtonWrapper.main-yourLibraryX-button.main-useDropTarget-base,
button.Button-sc-1dqy6lx-0.main-yourLibra


 this day remaineth the same veil untaken away in the [[#^note-14c|reading]] of the old testament; which [[#^note-14d|veil]] is done away in Christ. ^verse-14

**15**  But even unto this day, when Moses is read, the veil is upon their [[#^note-15a|heart]]. ^verse-15

**16**  Nevertheless when it shall turn to the Lord, the veil shall be taken away. ^verse-16

**17**  Now the Lord is [[#^note-17a|that Spirit]]: and where the [[#^note-17b|Spirit]] of the Lord is, there is [[#^note-17c|liberty]]. ^verse-17

**18**  But we all, with open face beholding as in a [[#^note-18a|glass]] the [[#^note-18b|glory]] of the Lord, are changed into the same [[#^note-18c|image]] from [[#^note-18d|glory]] to glory, even as by the Spirit of the Lord. ^verse-18

---
[[New Testament/2 Corinthians/2 Corinthians 2|Previous Entry]]  ||  [[New Testament/2 Corinthians/2 Corinthians 4|Next Entry]]

**Footnotes**

2a. [[New Testament/1 Corinthians/1 Corinthians 9#^verse-2|1 Cor. 9:2]] ^note-2a

3a. [[Old Testament/Deuteronomy/Deuteronomy 9#^verse-10|Deut. 9:10 (10-11)]] ^note-3a

3b. [[Old Testament/Exodus/Exodus 24#^verse-12|Ex. 24:12]]; [[Old Testament/Exodus/Exodus 31#^verse-18|31:18]]; [[Old Testament/Exodus/Exodus 34#^verse-1|34:1]]; [[Old Testament/Deuteronomy/Deuteronomy 4#^verse-13|Deut. 4:13]]; [[Old Testament/Proverbs/Proverbs 3#^verse-3|Prov. 3:3]] ^note-3b

3c. [[Old Testament/Ezekiel/Ezekiel 11#^verse-19|Ezek. 11:19 (19-20)]] ^note-3c

3d. [[Old Testament/Jeremiah/Jeremiah 31#^verse-33|Jer. 31:33]]; [[New Testament/Hebrews/Hebrews 8#^verse-10|Heb. 8:10]] ^note-3d

5a. [[New Testament/2 Corinthians/2 Corinthians 2#^verse-16|2 Cor. 2:16]]; [[Book of Mormon/Alma/Alma 26#^verse-12|Alma 26:12]] ^note-5a

6a. [[New Testament/1 Corinthians/1 Corinthians 3#^verse-5|1 Cor. 3:5]] ^note-6a

6b. [[New Testament/John/John 6#^verse-63|John 6:63]] ^note-6b

7a. [[New Testament/Romans/Romans 7#^verse-10|Rom. 7:10]] ^note-7a

7b. [[Study Helps/Topical Guide/Transfiguration, Transfigured|TG Transfiguration]] ^note-7b

12a. GR boldness, frankness. ^note-12a

14a. [[Study Helps/Topical Guide/Mind, Minded|TG Mind]] ^note-14a

14b. [[Study Helps/Topical Guide/Spiritual Blindness|TG Spiritual Blindness]] ^note-14b

14c. [[New Testament/Acts/Acts 15#^verse-21|Acts 15:21]] ^note-14c

14d. [[Study Helps/Topical Guide/Jesus Christ, Types of, in Anticipation|TG Jesus Christ, Types of, in Anticipation]]; [[Study Helps/Topical Guide/Veil|Veil]] ^note-14d

15a. [[Study Helps/Topical Guide/Hardheartedness, Harden, Hardness|TG Hardheartedness]] ^note-15a

17a. GR the Spirit. ^note-17a

17b. [[Book of Mormon/Alma/Alma 61#^verse-15|Alma 61:15]]; [[Study Helps/Topical Guide/God, Spirit of|TG God, Spirit of]] ^note-17b

17c. [[New Testament/Romans/Romans 8#^verse-2|Rom. 8:2]]; [[Study Helps/Topical Guide/Gove


naturalKeyTable.put(CR_NAME, cr);
		nameTable.put(cr, CR_NAME);
		naturalKeyTable.put(ENTER_NAME, cr);
		naturalKeyTable.put(RETURN_NAME, cr);
		final Integer del = Integer.valueOf(SWT.DEL);
		naturalKeyTable.put(DEL_NAME, del);
		nameTable.put(del, DEL_NAME);
		naturalKeyTable.put(DELETE_NAME, del);
		final Integer end = Integer.valueOf(SWT.END);
		naturalKeyTable.put(END_NAME, end);
		nameTable.put(end, END_NAME);
		final Integer esc = Integer.valueOf(SWT.ESC);
		naturalKeyTable.put(ESC_NAME, esc);
		nameTable.put(esc, ESC_NAME);
		naturalKeyTable.put(ESCAPE_NAME, esc);
		final Integer f1 = Integer.valueOf(SWT.F1);
		naturalKeyTable.put(F1_NAME, f1);
		nameTable.put(f1, F1_NAME);
		final Integer f2 = Integer.valueOf(SWT.F2);
		naturalKeyTable.put(F2_NAME, Integer.valueOf(SWT.F2));
		nameTable.put(f2, F2_NAME);
		final Integer f3 = Integer.valueOf(SWT.F3);
		naturalKeyTable.put(F3_NAME, Integer.valueOf(SWT.F3));
		nameTable.put(f3, F3_NAME);
		final Integer f4 = Integer.valueOf(SWT.F4);
		naturalKeyTable.put(F4_NAME, Integer.valueOf(SWT.F4));
		nameTable.put(f4, F4_NAME);
		final Integer f5 = Integer.valueOf(SWT.F5);
		naturalKeyTable.put(F5_NAME, Integer.valueOf(SWT.F5));
		nameTable.put(f5, F5_NAME);
		final Integer f6 = Integer.valueOf(SWT.F6);
		naturalKeyTable.put(F6_NAME, Integer.valueOf(SWT.F6));
		nameTable.put(f6, F6_NAME);
		final Integer f7 = Integer.valueOf(SWT.F7);
		naturalKeyTable.put(F7_NAME, Integer.valueOf(SWT.F7));
		nameTable.put(f7, F7_NAME);
		final Integer f8 = Integer.valueOf(SWT.F8);
		naturalKeyTable.put(F8_NAME, Integer.valueOf(SWT.F8));
		nameTable.put(f8, F8_NAME);
		final Integer f9 = Integer.valueOf(SWT.F9);
		naturalKeyTable.put(F9_NAME, Integer.valueOf(SWT.F9));
		nameTable.put(f9, F9_NAME);
		final Integer f10 = Integer.valueOf(SWT.F10);
		naturalKeyTable.put(F10_NAME, Integer.valueOf(SWT.F10));
		nameTable.put(f10, F10_NAME);
		final Integer f11 = Integer.valueOf(SWT.F11);
		naturalKeyTable.put(F11_NAME, Integer.valueOf(SWT.F11));
		nameTable.put(f11, F11_NAME);
		final Integer f12 = Integer.valueOf(SWT.F12);
		naturalKeyTable.put(F12_NAME, Integer.valueOf(SWT.F12));
		nameTable.put(f12, F12_NAME);
		final Integer f13 = Integer.valueOf(SWT.F13);
		naturalKeyTable.put(F13_NAME, Integer.valueOf(SWT.F13));
		nameTable.put(f13, F13_NAME);
		final Integer f14 = Integer.valueOf(SWT.F14);
		naturalKeyTable.put(F14_NAME, Integer.valueOf(SWT.F14));
		nameTable.put(f14, F14_NAME);
		final Integer f15 = Integer.valueOf(SWT.F15);
		naturalKeyTable.put(F15_NAME, Integer.valueOf(SWT


local assets =
{
    Asset("ANIM", "anim/waxwell_shadow_mod.zip"),
    Asset("SOUND", "sound/maxwell.fsb"),
    Asset("ANIM", "anim/swap_axe.zip"),
}

local function fn()
    local inst = CreateEntity()

    inst.entity:AddTransform()
    inst.entity:AddAnimState()
    inst.entity:AddSoundEmitter()
    inst.entity:AddNetwork()

    MakeGhostPhysics(inst, 1, .5)

    inst.Transform:SetFourFaced()

    inst.AnimState:SetBank("wilson")
    inst.AnimState:SetBuild("waxwell_shadow_mod")
    inst.AnimState:PlayAnimation("idle", true)
    inst.AnimState:SetMultColour(0, 0, 0, .5)


import firebase_admin
from firebase_admin import credentials, firestore

# Initialize Firebase with your service account key
cred = credentials.Certificate("path/to/your/serviceAccountKey.json")
firebase_admin.initialize_app(cred)

# Get Firestore client
db = firestore.client()

class FirebaseManager:
    @staticmethod
    def save_recording(recording_data, recording_id):
        """Save recording data to Firebase"""
        try:
            doc_ref = db.collection('recordings').document(recording_id)
            doc_ref.set(recording_data)
            return True
        except Exception as e:
            print(f"Error saving to Firebase: {e}")
            return False

    @staticmethod
    def get_recording(recording_id):
        """Get recording data from Firebase"""
        try:
            doc_ref = db.collection('recordings').document(recording_id)
            doc = doc_ref.get()
            return doc.to_dict() if doc.exists else None
        except Exception as e:
            print(f"Error retrieving from Firebase: {e}")
            return None

    @staticmethod
    def delete_recording(recording_id):
        """Delete recording from Firebase"""
        try:
            db.collection('recordings').document(recording_id).delete()
            return True
        except Exception as e:
            print(f"Error deleting from Firebase: {e}")
            return False

    @staticmethod
    def list_recordings():
        """List all recordings from Firebase"""
        try:
            docs = db.collection('recordings').stream()
            return [doc.id for doc in docs]
        except Exception as e:
            print(f"Error listing recordings: {e}")
            return []


= std::mem::discriminant(&Event::Avrcp(None))).count(),
        2
    );
    assert_eq!(
        discriminants
            .iter()
            .filter(|&&d| d == std::mem::discriminant(&Event::BatteryManager(None)))
            .count(),
        2
    );
    // Total unique requests = Total requests minus the two duplicate requests.
    let discriminant_set: HashSet<_> = HashSet::from_iter(discriminants.iter());
    assert_eq!(discriminant_set.len(), 15);

    info!("Finished A2DP smoke test");
}
extern crate nalgebra as na;
extern crate ncollide3d;
extern crate ncollide2d; // Needed here only for path generation.

use na::Point3;
use ncollide3d::procedural::path::{NoCap, PolylinePath, PolylinePattern, StrokePattern};
use ncollide3d::procedural;
use ncollide3d::transformation;

fn main() {
    /*
     * Path stroke.
     */
    let control_points = [
        Point3::new(0.0f32, 1.0, 0.0),
        Point3::new(2.0, 4.0, 2.0),
        Point3::new(2.0, 1.0, 4.0),
        Point3::new(4.0, 4.0, 6.0),
        Point3::new(2.0, 1.0, 8.0),
        Point3::new(2.0, 4.0, 10.0),
        Point3::new(0.0, 1.0, 12.0),
        Point3::new(-2.0, 4.0, 10.0),
        Point3::new(-2.0, 1.0, 8.0),
        Point3::new(-4.0, 4.0, 6.0),
        Point3::new(-2.0, 1.0, 4.0),
        Point3::new(-2.0, 4.0, 2.0),
    ];
    let bezier = procedural::bezier_curve(&control_points, 100);
    let mut path = PolylinePath::new(&bezier);
    let pattern = ncollide2d::procedural::unit_circle(100);
    let mut pattern = PolylinePattern::new(pattern.coords(), true, NoCap::new(), NoCap::new());
    let mut trimesh = pattern.stroke(&mut path);

    // The path stroke does not generate normals =(
    // Compute them as they are needed by the HACD.
    trimesh.recompute_normals();

    /*
     * Decomposition of the mesh.
     */
    let (decomp, partitioning) = transformation::hacd(trimesh.clone(), 0.03, 0);

    // We end up with 7 convex parts.
    assert!(decomp.len() == 7);
    assert!(partitioning.len() == 7);
}
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

use std::io::Write;

use basic::PageType;
use column::page::{CompressedPage, Page, PageWriteSpec, PageWriter};
use errors::Result;
use file::metadata::ColumnChunkMetaData;
use file::statistics::{to_thrift as statistics_to_thrift};
use parquet_format as parquet;
use thrift::protocol::{TCompactOutputProtocol, TOutputProtocol};
use util::io::Position;

/// Serialized page writer.
///
/// Writes and serial


工作可在军管阶段进行，由国防科委、国家科委、科学院三方组成调查组。

   (有位同志问到三线工地是否派军代表？)

   聂总：如果没有什么大问题就不派了。若需要派，就地派。

   科学院现在基础不小了，干部各所自己解决。要大胆提拔，一定要打破框框。过去要一个所长，都要外边调，尽搞些老头子，胃病、高血压。我身体都不好了，比我身体还不如；业务也不懂，又领导不起来。我根本没想到从外边调一个干部！二十几岁，三十几岁，精力最充沛了。三十多岁，四十岁正好工作。一定要打破框框！各所可以解决，完全可以解决！我相信一定比过去搞得更好，这一点不能动摇。我告诉你们，你们要我调干部，我不打这个报告。毛主席说，要当好班长，我不相信在一个所里找一个班长就找不到！只要不搞无政府主义就好办。现在最害人的就是无政府主义，怀疑一切，打倒一切，对自己选的也怀疑。

   领导班子，由造反派提，报国务院批准，不是选举。半导体所刘再生，为什么把他搞到半导体所呢？框框必须打破，过去张劲夫就是要老资格，我们应该看德、才。有德、有才就行了。有德，很重要，忠于毛泽东思想。才，有业务能力，有组织能力。这一点不要动摇。各所有的是！今天在座的多是三十多岁的人，三十多岁的人，没有一点组织能力，我都不相信。学自然科学的人，应该更有组织能力。

   整个科学院看还是比较好的，计算所差一些，总的说是好的。科学院搞革命委员会，我报告总理，派军代表与你们“三结合”。

   (秦宝臻：军代表来后，联络员可以撤了吧？)

   聂总：联络员是周总理派的，我无权给你们作结论。

   (最后，我们要聂总再明确一下调整调查问题)

   聂总说：军管过程中，解决调整调查问题。这期间组织一个小班子，调查一下。总的说，不能大动，搞得人心惶惶。

   (根据王锡鹏、刘建林、邹协成、李先惠等八同志记录整理)

   来源：

   周良霄、顾菊英编《疯狂、扭曲与堕落的年代》之二——《十年文革中首长讲话传信录》, 2009。

    [返回索引页面]

   Copyright (C)  2024  Marxist-Leninist-Maoist.

   Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation L


1 == null {
    @return $value2;
  }

  @if $value2 == null {
    @return $value1;
  }

  @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
    @return $value1 + $value2;
  }

  @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(" + ") + $value2);
}

@function subtract($value1, $value2, $return-calc: true) {
  @if $value1 == null and $value2 == null {
    @return null;
  }

  @if $value1 == null {
    @return -$value2;
  }

  @if $value2 == null {
    @return $value1;
  }

  @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
    @return $value1 - $value2;
  }

  @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
}
// .modal-open      - body class for killing the scroll
// .modal           - container to scroll within
// .modal-dialog    - positioning shell for the actual modal
// .modal-content   - actual modal w/ bg and corners and stuff

.modal-open {
  // Kill the scroll on the body
  overflow: hidden;

  .modal {
    overflow-x: hidden;
    overflow-y: auto;
  }
}

// Container that the modal scrolls within
.modal {
  position: fixed;
  top: 0;
  left: 0;
  z-index: $zindex-modal;
  display: none;
  width: 100%;
  height: 100%;
  overflow: hidden;
  // Prevent Chrome on Windows from adding a focus outline. For details, see
  // https://github.com/twbs/bootstrap/pull/10951.
  outline: 0;
  // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a
  // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342
  // See also https://github.com/twbs/bootstrap/issues/17695
}

// Shell div to position the modal with bottom padding
.modal-dialog {
  position: relative;
  width: auto;
  margin: $modal-dialog-margin;
  // allow clicks to pass through for custom click handling to close modal
  pointer-events: none;

  // When fading in the modal, animate it to slide down
  .modal.fade & {
    @include transition($modal-transition);
    transform: $modal-fade-transform;
  }
  .modal.show & {
    transform: $modal-show-transform;
  }

  // When trying to close, animate focus to scale
  .modal.modal-static & {
    transform: $modal-scale-transform;
  }
}

.modal-dialog-scrollable {
  height: subtract(100%, $modal-dialog-margin * 2);

  .modal-content {
    max-height: 100%;
    overflow: hidden;
  }

  .modal-body {
    overflow-y: auto;
  }
}

.modal-dialog-centered {
  display: flex;
  align-items: center;
  min-height: subtract(100%, $modal-dialog-margin * 2);
}

// Actual modal
.modal-content {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%; // Ensure `.modal-content` extends the full width of the parent `


xl\:z-20 {
    z-index: 20;
  }

  .xl\:z-30 {
    z-index: 30;
  }

  .xl\:z-40 {
    z-index: 40;
  }

  .xl\:z-50 {
    z-index: 50;
  }

  .xl\:z-auto {
    z-index: auto;
  }
}
/** Deprecated, use .wrapper instead */

.wrap {
    @apply px-8;
    @apply mx-auto;
    max-width:  100rem;
}

@screen lg {
    .wrap {
        @apply px-16;
    }
}

/* lazy fallback for non-grid cells */
.wrap-6 > :not(:first-child),
.wrap-8 > :not(:first-child) {
    @apply mt-8;
}

.wrap-logos > a:hover {
    opacity: 0.75;
}

.wrap-logos svg {
    @apply w-48;
}

.wrap-card > :not(:first-child) {
    /* lazy fallback for non-grid cells */
    @apply mt-8;
}

@supports (display: grid) {
    .wrap-6 > :not(:first-child),
    .wrap-8 > :not(:first-child),
    .wrap-card > :not(:first-child) {
        @apply mt-0;
    }

    .wrap-card {
        @apply gap-8;
    }

    .wrap-6 {
        @apply grid;
        @apply gap-8;
    }

    @screen sm {
        .wrap-6 {
            grid-template-columns: repeat(6, 1fr);
        }
    }

    .wrap-8 {
        @apply grid;
        @apply gap-8;
    }

    @screen sm {
        .wrap-8 {
            grid-template-columns: minmax(0, 1fr) repeat(6, minmax(min-content, 9rem)) minmax(0, 1fr);
            @apply px-0;
            max-width: none;
        }
    }

    @screen lg {
        .wrap-8 {
            grid-template-columns: minmax(2rem, 1fr) repeat(6, minmax(min-content, 8.33rem)) minmax(2rem, 1fr);
        }
    }

    .wrap-gallery {
        grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr));

        @apply grid;
        @apply gap-0;
        max-width: none;
    }

    @screen sm {
        .wrap-gallery {
            grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
        }
    }

    .wrap-logos {
        grid-template-columns: repeat(auto-fit, 8rem);

        @apply grid;
        @apply gap-8;
        justify-content: center;
        justify-items: center;
    }
}
.title-2xl {
    @apply font-serif;
    @apply font-bold;
    @apply text-4xl;
    display: inline-block;
    margin-top: 0;
    margin-bottom: 3rem;
    padding-top: 0.25em;
    line-height: 1;
}

.title-2xl:after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 0.083em;
    background-color: currentcolor;
    opacity: 0.9;
    border-radius: 4px;
}

@media print {
    .title-2xl {
        margin-top: 1cm;
    }
}

@screen sm {
    .title-2xl {
        @apply text-5xl;
    }
}

.title-xl {
    @apply text-4xl;
    @apply font-serif;
    @apply font-bold;
    @apply leading-tight;
}

@screen sm {
    .title-xl {
        @apply text-5xl;
    }
}

.title {
    @


 */
// Testar se passou tempo
function TestaSom () {
    if (input.runningTime() > Tempo1 + 60000) {
        Contador = 0
    } else {
        Contador += 1
        Tempo1 = input.runningTime()
        if (Contador == 2) {
            basic.showLeds(`
                . . . . .
                # # # # #
                . . . . .
                # # # # #
                . . . . .
                `)
        } else {
            basic.showLeds(`
                # # # # #
                . . . . .
                # # # # #
                . . . . .
                # # # # #
                `)
        }
        basic.pause(1000)
    }
}
// Funções dos Botões:
input.onButtonPressed(Button.A, function () {
    State = 1
    Treshold += -5
    if (Treshold < 50) {
        Treshold = 50
    }
    basic.showNumber(Treshold)
    State = 0
    Contador = 0
})
input.onButtonPressed(Button.B, function () {
    State = 1
    Treshold += 5
    if (Treshold > 255) {
        Treshold = 255
    }
    basic.showNumber(Treshold)
    State = 0
    Contador = 0
})
let SomIn = 0
let Tempo1 = 0
let Contador = 0
let State = 0
let Treshold = 0
radio.setGroup(7)
let ContaLEDS = 0
Treshold = 129
State = 0
Contador = 0
Tempo1 = 0
basic.forever(function () {
    SomIn = input.soundLevel()
    if (SomIn >= Treshold && State == 0) {
        if (Contador == 0) {
            Contador = 1
            Tempo1 = input.runningTime()
            basic.showLeds(`
                . . . . .
                . . . . .
                # # # # #
                . . . . .
                . . . . .
                `)
            basic.pause(1000)
        } else if (Contador == 1) {
            TestaSom()
        } else if (Contador == 2) {
            TestaSom()
        } else if (Contador == 3) {
            if (input.runningTime() > Tempo1 + 60000) {
                Contador = 0
            } else {
                radio.sendNumber(1)
                basic.showIcon(IconNames.EigthNote)
                basic.pause(3000)
                Contador = 0
            }
        }
    } else {
        if (State == 0) {
            led.plotBarGraph(
            Math.map(SomIn, 0, Treshold, 0, 100),
            100
            )
        }
    }
})
import { doMsmRequest, METHODS } from '../utils/requestHelpers';

export interface ScheduleEntry {
    entry_type: string;
    id: string;
    title: string;
    sql_date: string;
    start: string;
    end: string;
    param_1: string;
    param_2: string;
    allDay: boolean;
    teacher_name_list: string;
    room_id: string;
    course_diary_id: string;
    period_id: string;
    color: string;
    textColor: string;
}

interface GetScheduleResponse {
    schedule: Array<ScheduleEntry>;
    start: number;
    end: number;
}

/**
 * Get the currently logged in user's schedule
 * @param  {moment} start The start of the period to return. Defaults to this Monday at 00:00:00.
 * @param {moment} end The end of the period to return. Defaults to start + 1 week
 * @return {Promise<array<object>>} The schedule entries.
 */
export default async (start: number, end: number): Promise<GetScheduleResponse> => {
    const response = await doMsmR


und: #FFFFFF;
    content: "";
    display: block;
    height: 1.5rem;
    left: .25rem;
    position: absolute;
    top: .25rem;
    width: 1.5rem;
    -webkit-transition: left 0.15s ease-out;
    -moz-transition: left 0.15s ease-out;
    -o-transition: translate3d(0, 0, 0);
    transition: left 0.15s ease-out;
    -webkit-transform: translate3d(0, 0, 0);
    -moz-transform: translate3d(0, 0, 0);
    -ms-transform: translate3d(0, 0, 0);
    -o-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0); }
  .switch input:checked + label {
    background: #2ba6cb; }
  .switch input:checked + label:after {
    left: 2.25rem; }
  .switch label {
    height: 2rem;
    width: 4rem; }
  .switch label:after {
    height: 1.5rem;
    width: 1.5rem; }
  .switch input:checked + label:after {
    left: 2.25rem; }
  .switch label {
    color: transparent;
    background: #DDDDDD; }
  .switch label:after {
    background: #FFFFFF; }
  .switch input:checked + label {
    background: #2ba6cb; }
  .switch.large label {
    height: 2.5rem;
    width: 5rem; }
  .switch.large label:after {
    height: 2rem;
    width: 2rem; }
  .switch.large input:checked + label:after {
    left: 2.75rem; }
  .switch.small label {
    height: 1.75rem;
    width: 3.5rem; }
  .switch.small label:after {
    height: 1.25rem;
    width: 1.25rem; }
  .switch.small input:checked + label:after {
    left: 2rem; }
  .switch.tiny label {
    height: 1.5rem;
    width: 3rem; }
  .switch.tiny label:after {
    height: 1rem;
    width: 1rem; }
  .switch.tiny input:checked + label:after {
    left: 1.75rem; }
  .switch.radius label {
    border-radius: 4px; }
  .switch.radius label:after {
    border-radius: 3px; }
  .switch.round {
    border-radius: 1000px; }
    .switch.round label {
      border-radius: 2rem; }
    .switch.round label:after {
      border-radius: 2rem; }

/* small displays */
@media only screen {
  .show-for-small-only, .show-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down {
    display: inherit !important; }

  .hide-for-small-only, .hide-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .hide-for-medium-down, .show


�能，例如中间件，时间穿梭，持久化等。
 * Redux提供了一个store enhancer是 `applyMiddleware()`。
 *
 * @returns A Redux store that lets you read the state, dispatch actions
 * and subscribe to changes.
 *
 * 返回 Redux store，可让您读取state，dispatch actions并订阅数据更改。
 */
export default function createStore<
  S,
  A extends Action,
  Ext = {},
  StateExt = never
>(
  reducer: Reducer<S, A>,
  enhancer?: StoreEnhancer<Ext, StateExt>
): Store<ExtendState<S, StateExt>, A, StateExt, Ext> & Ext

export default function createStore<
  S,
  A extends Action,
  Ext = {},
  StateExt = never
>(
  reducer: Reducer<S, A>,
  preloadedState?: PreloadedState<S>,
  enhancer?: StoreEnhancer<Ext, StateExt>
): Store<ExtendState<S, StateExt>, A, StateExt, Ext> & Ext

export default function createStore<
  S,
  A extends Action,
  Ext = {},
  StateExt = never
>(
  reducer: Reducer<S, A>,
  preloadedState?: PreloadedState<S> | StoreEnhancer<Ext, StateExt>,
  enhancer?: StoreEnhancer<Ext, StateExt>
): Store<ExtendState<S, StateExt>, A, StateExt, Ext> & Ext {
  /**
   * 参数错误处理
   */
  if (
    (typeof preloadedState === 'function' && typeof enhancer === 'function') ||
    (typeof enhancer === 'function' && typeof arguments[3] === 'function')
  ) {
    throw new Error(
      'It looks like you are passing several store enhancers to ' +
        'createStore(). This is not supported. Instead, compose them ' +
        'together to a single function.'
    )
  }

  /**
   * js实现函数重载的常规方式
   * 处理没传preloadedState参数的情况
   **/
  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
    enhancer = preloadedState as StoreEnhancer<Ext, StateExt>
    preloadedState = undefined
  }

  if (typeof enhancer !== 'undefined') {
    if (typeof enhancer !== 'function') {
      throw new Error('Expected the enhancer to be a function.')
    }

    /**
     * reudx增强的实现
     * 使用pipe的思想
     * 将createStore函数和调用参数都返回出去交由第三方接管，然后三方插件再调用 createStore(reducer, preloadedState) 执行后面的逻辑;
     * 多个enhancer  需要通过redux提供的 `compose()` 将列表形式处理成 pipe 结构的方法
     * 比如 redux-devtools-extension 这个插件，他会将每一次action 以及状态记录下来，以实现调试时的时间穿梭等功能
     */
    return enhancer(createStore)(
      reducer,
      preloadedState as PreloadedState<S>
    ) as Store<ExtendState<S, StateExt>, A, StateExt, Ext> & Ext
  }

  if (typeof reducer !== 'function') {
    throw new Error('Expected the reducer to be a function.')
  }

  let currentReducer = reducer
  let currentState = preloadedState as S
  let currentListeners: (() => void)[] | null = []
  let nextListeners = currentListeners
  let isDispatching = false

  /**
   * This makes a shallow copy of currentListeners so we can use
   * nextLis


 All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "impeller/display_list/skia_conversions.h"
#include "flutter/display_list/dl_blend_mode.h"
#include "flutter/display_list/dl_color.h"
#include "third_party/skia/modules/skparagraph/include/Paragraph.h"

namespace impeller {
namespace skia_conversions {

Color ToColor(const flutter::DlColor& color) {
  FML_DCHECK(color.getColorSpace() == flutter::DlColorSpace::kExtendedSRGB ||
             color.getColorSpace() == flutter::DlColorSpace::kSRGB);
  return {
      static_cast<Scalar>(color.getRedF()),    //
      static_cast<Scalar>(color.getGreenF()),  //
      static_cast<Scalar>(color.getBlueF()),   //
      static_cast<Scalar>(color.getAlphaF())   //
  };
}

impeller::SamplerDescriptor ToSamplerDescriptor(
    const flutter::DlImageSampling options) {
  impeller::SamplerDescriptor desc;
  switch (options) {
    case flutter::DlImageSampling::kNearestNeighbor:
      desc.min_filter = desc.mag_filter = impeller::MinMagFilter::kNearest;
      desc.mip_filter = impeller::MipFilter::kBase;
      desc.label = "Nearest Sampler";
      break;
    case flutter::DlImageSampling::kLinear:
      desc.min_filter = desc.mag_filter = impeller::MinMagFilter::kLinear;
      desc.mip_filter = impeller::MipFilter::kBase;
      desc.label = "Linear Sampler";
      break;
    case flutter::DlImageSampling::kCubic:
    case flutter::DlImageSampling::kMipmapLinear:
      desc.min_filter = desc.mag_filter = impeller::MinMagFilter::kLinear;
      desc.mip_filter = impeller::MipFilter::kLinear;
      desc.label = "Mipmap Linear Sampler";
      break;
  }
  return desc;
}

}  // namespace skia_conversions
}  // namespace impeller
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "impeller/display_list/dl_golden_unittests.h"

#include "flutter/display_list/dl_builder.h"
#include "flutter/display_list/effects/dl_mask_filter.h"
#include "flutter/impeller/display_list/testing/render_text_in_canvas.h"
#include "flutter/impeller/display_list/testing/rmse.h"
#include "flutter/impeller/geometry/round_rect.h"
#include "flutter/impeller/golden_tests/screenshot.h"
#include "flutter/testing/testing.h"
#include "gtest/gtest.h"

namespace flutter {
namespace testing {

using impeller::Font;

TEST_P(DlGoldenTest, TextBlurMaskFilterRespectCTM) {
  impeller::Point content_scale = GetContentScale();
  auto draw = [&](DlCanvas* canvas,
                  const std::vector<std::unique_ptr<DlImage>>& images) {
    canvas->DrawColor(DlColor(0xff111111));
    canvas->Scale(content_scale.x, content_scale.y);
    canvas->Scale(2, 2);
    TextRenderOptions options;
    options.mask_filter =
        DlBlurMaskFilter::Make(DlBlurStyle::kNormal, /*sigma=*/10,
                               /*respect_ctm=*/true);
    ASSERT_TRUE(RenderTextInCanvasSkia(canvas, "hello world",
                                       "Roboto-Regular.ttf",  //


    >= 0);
    }
  }

  public void testMovePk() throws Exception {
    try {
      String fl = "oldid:id,id:newid"; // "id:newid";//
      SolrDocumentList docs = assertSearch(params("q", "*:*", "rows", "10", "fl", fl));
      fail("attempting to move PK causes 400");
      for (SolrDocument doc : docs) {
        assertTrue(
            fl + " => " + doc,
            Arrays.asList("420", "430", "440", "450", "460")
                    .indexOf((String) doc.getFieldValue("id"))
                >= 0);
      }
    } catch (SolrException sse) {
      assertEquals(SolrException.ErrorCode.BAD_REQUEST.code, sse.code());
      final String message = sse.getMessage().toLowerCase(Locale.ROOT);
      assertTrue(message.contains("uniqueKey".toLowerCase(Locale.ROOT)));
      assertTrue(message.contains("fl".toLowerCase(Locale.ROOT)));
    }
  }

  public void testAllRealFieldsRTG() throws Exception {
    // shouldn't matter if we use RTG (committed or otherwise)
    for (String fl : TestPseudoReturnFields.ALL_REAL_FIELDS) {
      for (int i : Arrays.asList(42, 43, 44, 45, 46, 99)) {
        SolrDocument doc = getRandClient(random()).getById("" + i, params("fl", fl));
        assertEquals(fl + " => " + doc, 5 + 1, doc.size());
        assertTrue(fl + " => " + doc, doc.getFieldValue("id") instanceof String);
        assertTrue(fl + " => " + doc, doc.getFieldValue("val_i") instanceof Integer);
        assertTrue(fl + " => " + doc, doc.getFieldValue("subject") instanceof String);
        assertTrue(
            fl + " => " + doc,
            doc.getFieldValue("ssto") instanceof String); // TODO: val_ss: List<String>
      }
    }
  }

  public void testFilterAndOneRealFieldRTG() throws Exception {
    SolrParams params =
        params(
            "fl", "id,val_i",
            "fq", "{!field f='subject' v=$my_var}",
            "my_var", "uncommitted");
    SolrDocumentList docs = getRandClient(random()).getById(Arrays.asList("42", "99"), params);
    final String msg = params + " => " + docs;
    assertEquals(msg, 1, docs.size());
    assertEquals(msg, 1, docs.getNumFound());

    SolrDocument doc = docs.get(0);
    assertEquals(msg, 2, doc.size());
    assertEquals(msg, "99", doc.getFieldValue("id"));
    assertEquals(msg, 1, doc.getFieldValue("val_i"));
  }

  public void testScoreAndAllRealFields() throws Exception {
    for (String fl : TestPseudoReturnFields.SCORE_AND_REAL_FIELDS) {
      SolrDocumentList docs = assertSearch(params("q", "*:*", "rows", "10", "fl", fl));
      // shouldn't matter what doc we pick...
      for (SolrDocument doc : docs) {
        assertEquals(fl + " => " + doc, 6 + 1, doc.size());
        assertTrue(fl + " => " + doc, doc.getFieldValue("id") instanceof String);
        assertTrue(fl + " => " + doc, doc.getFieldValue("score") instanceof Float);
        assertTrue(fl + " => " + doc, doc.getFieldValue("val_i") instanceof Integer);
        assertTrue(fl + " => " + doc, doc.getFieldValue("subject") instanceof String);
        assertTrue(
            fl + " => " + doc,
            doc.getFieldValue("ssto") instanceof String); // TODO: val_ss: List<String>
      }
    }
  }

  public void testScoreAndAllRealFieldsRTG() throws Exception {
    // shouldn't matter if


icon: Icons.format_quote,
                          tooltip: '引用',
                          attribute: Attribute.blockQuote,
                          isDark: isDark,
                        ),
                        _buildDropdownButton(
                          icon: Icons.title,
                          tooltip: '标题',
                          isDark: isDark,
                          items: [
                            _DropdownItem('标题 1', () => _applyAttribute(Attribute.h1)),
                            _DropdownItem('标题 2', () => _applyAttribute(Attribute.h2)),
                            _DropdownItem('标题 3', () => _applyAttribute(Attribute.h3)),
                            _DropdownItem('普通文本', () => _clearHeadingAttribute()),
                          ],
                        ),
                        _buildDropdownButton(
                          icon: Icons.format_list_numbered,
                          tooltip: '列表',
                          isDark: isDark,
                          items: [
                            _DropdownItem('无序列表', () => _applyAttribute(Attribute.ul)),
                            _DropdownItem('有序列表', () => _applyAttribute(Attribute.ol)),
                            _DropdownItem('检查列表', () => _applyAttribute(Attribute.checked)),
                            _DropdownItem('移除列表', () => _clearListAttribute()),
                          ],
                        ),
                      ],
                    ),
                  ),
                ),
              ],
            ),
          ),
        ),
        const SizedBox(height: 4),
        // 第二行：功能按钮和AI按钮
        SingleChildScrollView(
          scrollDirection: Axis.horizontal,
          child: IntrinsicWidth(
            child: Row(
              mainAxisSize: MainAxisSize.min,
              children: [
                // 功能按钮组（片段、设定、章节）
                Flexible(
                  child: _buildToolbarContainer(
                    isDark: isDark,
                    child: Row(
                      mainAxisSize: MainAxisSize.min,
                      children: [
                        _buildActionButtonWithText(
                          icon: Icons.note_add,
                          text: '片段',
                          tooltip: '添加为片段',
                          isDark: isDark,
                          onPressed: () => _createSnippetFromSelection(),
                        ),
                        _buildActionButtonWithText(
                          icon: Icons.library_books,
                          text: '设定',
                          tooltip: '添加为设定',
                          isDark: isDark,
                          onPressed: () => _createSettingFromSelection(),
                        ),
                        _buildActionButtonWithText(
                          icon: Icons.view_module,
                          text: '章节',
                          tooltip: '设置为章节',
                          isDark: isDark,
                          onPressed: () {
                            AppLogger.i('SelectionToolbar', '设置为章节');
                          },
                        ),
                      ],
                    ),
                  ),
                ),
                const SizedBox(width: 4),
                // AI功能按钮组
                Flexible(
                  child: _buildToolbarContainer(
                    isDark: isDark,
                    child: Row(
                      mainAxisSize: MainAxisSize.min,
                      children: [
                        _buildActionButtonWithText(
                          key: _aiButtonKeys['expand'],
                          icon: Icons.expand_more,
                          text: '扩写',
                          tooltip: '扩写选中内容',
                          isDark: isDark,
                          onPressed: () => _showAiMenu('expand'),
                        ),
                        _buildActionButtonWithText(
                          key: _aiButtonKeys['rewrite'],
                          icon: Icons.refresh,
                          text: '重构',
                          tooltip: '重构选中内容',
                          isDark: isDark,
                          onPressed: () => _showAiMenu('rewrite'),
                        ),
                        _buildActionButtonWithText(
                          key: _ai


 state == 'wal_recovered' then
                box.error.injection.set('ERRINJ_INDEX_ITERATOR_NEW', true)
            end
        end)
    ]]
    cg.server:restart({
        env = {
            ['TARANTOOL_RUN_BEFORE_BOX_CFG'] = run_before_cfg,
        }
    }, {wait_until_ready = false})
    t.helpers.retrying({}, function()
        -- Check if the application panics.
        t.assert(g.server:grep_log("F> can't initialize storage"))
        -- Check if loading WAL GC consumers is the reason.
        t.assert(g.server:grep_log("Failed to recover WAL GC consumers"))
    end)
end


ment variables */
/*-----------------------------------------------------------------------
 * Flash EEPROM for environment
 */
#define CONFIG_ENV_IS_IN_FLASH 1
#define CONFIG_ENV_OFFSET		0x00040000	/* Offset of Environment Sector */
#define CONFIG_ENV_SIZE		0x10000		/* Total Size of env. sector	*/

#define CONFIG_ENV_SECT_SIZE	0x10000		/* see README - env sec tot sze */
#endif

/*-----------------------------------------------------------------------
 * I2C EEPROM (CAT24WC08) for environment
 */
#define CONFIG_SYS_I2C
#define CONFIG_SYS_I2C_PPC4XX
#define CONFIG_SYS_I2C_PPC4XX_CH0
#define CONFIG_SYS_I2C_PPC4XX_SPEED_0		400000
#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0		0x7F

#define CONFIG_SYS_I2C_EEPROM_ADDR	0x50	/* EEPROM CAT28WC08		*/
#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN	1	/* Bytes of address		*/
/* mask of address bits that overflow into the "EEPROM chip address"    */
#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW	0x07
#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4	/* The Catalyst CAT24WC08 has	*/
					/* 16 byte page write mode using*/
					/* last	4 bits of the address	*/
#define CONFIG_SYS_I2C_MULTI_EEPROMS
/*-----------------------------------------------------------------------
 * Definitions for Serial Presence Detect EEPROM address
 * (to get SDRAM settings)
 */
#define SPD_EEPROM_ADDRESS      0x50	/* XXX conflicting address!!! XXX */

/*
 * Init Memory Controller:
 */
#define FLASH_BASE0_PRELIM	0xFFE00000	/* FLASH bank #0		*/
#define FLASH_BASE1_PRELIM	0xF0000000	/* FLASH bank #1		*/

/* On Chip Memory location */
#define CONFIG_SYS_OCM_DATA_ADDR	0xF8000000
#define CONFIG_SYS_OCM_DATA_SIZE	0x1000

/*-----------------------------------------------------------------------
 * Definitions for initial stack pointer and data area (in RAM)
 */
#define CONFIG_SYS_INIT_RAM_ADDR	CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM		*/
#define CONFIG_SYS_INIT_RAM_SIZE	CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM	*/
#define CONFIG_SYS_GBL_DATA_OFFSET	(CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
#define CONFIG_SYS_INIT_SP_OFFSET	CONFIG_SYS_GBL_DATA_OFFSET

#if defined(CONFIG_CMD_KGDB)
#define CONFIG_KGDB_BAUDRATE	230400		/* speed to run kgdb serial port */
#endif

/*
 * FPGA(s) configuration
 */
#define CONFIG_SYS_FPGA_IMAGE_LEN	0x80000		/* 512KB FPGA image		*/
#define CONFIG_NUM_FPGAS	3		/* Number of FPGAs on board	*/
#define CONFIG_MAX_FPGAS	6		/* Maximum number of FPGAs	*/
#define CONFIG_FPGAS_BASE	0xFD000000L	/* Base address of FPGAs	*/
#define CONFIG_FPGAS_BANK_SIZE	0x00100000L	/* FPGAs' mmap bank size	*/

#endif	/* __CONFIG_H */


 3 artist_data.txt' + \
    ' > related_artists.tsv')
    print "\nTop 25 related artists:"
    print "x\ty\tsim\tcount\tname"
    os.system('cat related_artists.tsv')

  elif sys.argv[1] == "mapper1":
    mapper1(sys.argv[2:])
  elif sys.argv[1] == "reducer1":
    reducer1(sys.argv[2:])
  elif sys.argv[1] == "mapper2":
    mapper2(sys.argv[2], sys.argv[3:])
  elif sys.argv[1] == "reducer2":
    reducer2(sys.argv[2:])
  elif sys.argv[1] == "mapper3":
    mapper3(sys.argv[2], sys.argv[3], sys.argv[4:])
  elif sys.argv[1] == "reducer3":
    reducer3(sys.argv[2], sys.argv[3:])
  elif sys.argv[1] == "mapper4":
    mapper4(sys.argv[2], sys.argv[3:])
  elif sys.argv[1] == "reducer4":
    reducer4(sys.argv[2], sys.argv[3], sys.argv[4:])


ec504, ['end']=0x800ec5c0, size=0xbc, name='sub_800EC504'},
	{start=0x800ec5c0, ['end']=0x800ec708, size=0x148, name='sub_800EC5C0'},
	{start=0x800ec708, ['end']=0x800ec75c, size=0x54, name='sub_800EC708'},
	{start=0x800ec75c, ['end']=0x800ec7d4, size=0x78, name='sub_800EC75C'},
	{start=0x800ec7d4, ['end']=0x800ec800, size=0x2c, name='sub_800EC7D4'},
	{start=0x800ec800, ['end']=0x800ec828, size=0x28, name='sub_800EC800'},
	{start=0x800ec828, ['end']=0x800ec854, size=0x2c, name='sub_800EC828'},
	{start=0x800ec854, ['end']=0x800ec884, size=0x30, name='sub_800EC854'},
	{start=0x800ec890, ['end']=0x800ec898, size=0x08, name='sub_800EC890'},
	{start=0x800ec898, ['end']=0x800ec9e0, size=0x148, name='sub_800EC898'},
	{start=0x800ec9e0, ['end']=0x800ec9f0, size=0x10, name='sub_800EC9E0'},
	{start=0x800ec9f0, ['end']=0x800ecd60, size=0x370, name='sub_800EC9F0'},
	{start=0x800ecd60, ['end']=0x800eceec, size=0x18c, name='sub_800ECD60'},
	{start=0x800eceec, ['end']=0x800ed064, size=0x178, name='sub_800ECEEC'},
	{start=0x800ed064, ['end']=0x800ed0d4, size=0x70, name='sub_800ED064'},
	{start=0x800ed0d4, ['end']=0x800ed144, size=0x70, name='sub_800ED0D4'},
	{start=0x800ed144, ['end']=0x800ed424, size=0x2e0, name='sub_800ED144'},
	{start=0x800ed424, ['end']=0x800ed79c, size=0x378, name='sub_800ED424'},
	{start=0x800ed7f8, ['end']=0x800ed964, size=0x16c, name='sub_800ED7F8'},
	{start=0x800ed964, ['end']=0x800ed9b4, size=0x50, name='sub_800ED964'},
	{start=0x800ed9b4, ['end']=0x800eda24, size=0x70, name='sub_800ED9B4'},
	{start=0x800eda24, ['end']=0x800eda2c, size=0x08, name='sub_800EDA24'},
	{start=0x800eda2c, ['end']=0x800edaf4, size=0xc8, name='sub_800EDA2C'},
	{start=0x800edaf4, ['end']=0x800edb20, size=0x2c, name='sub_800EDAF4'},
	{start=0x800edb20, ['end']=0x800edba0, size=0x80, name='sub_800EDB20'},
	{start=0x800edba0, ['end']=0x800edc10, size=0x70, name='sub_800EDBA0'},
	{start=0x800edc10, ['end']=0x800edc6


2
#define KIRKWOOD_SND_MAX_PERIODS		16
#define KIRKWOOD_SND_MIN_PERIOD_BYTES		256
#define KIRKWOOD_SND_MAX_PERIOD_BYTES		0x8000
#define KIRKWOOD_SND_MAX_BUFFER_BYTES		(KIRKWOOD_SND_MAX_PERIOD_BYTES \
						 * KIRKWOOD_SND_MAX_PERIODS)

struct kirkwood_dma_data {
	void __iomem *io;
	struct clk *clk;
	struct clk *extclk;
	uint32_t ctl_play;
	uint32_t ctl_rec;
	struct snd_pcm_substream *substream_play;
	struct snd_pcm_substream *substream_rec;
	int irq;
	int burst;
};

extern struct snd_soc_platform_driver kirkwood_soc_platform;

#endif


ad.contains("scriptupdate")) {
        setState(() {
          _webViewProvider.browserShowInForeground = false;
        });

        Navigator.of(context).push(
          MaterialPageRoute(
            builder: (BuildContext context) => const UserScriptsPage(),
          ),
        );
      } else if (payload.contains('400-')) {
        launchBrowserWithUrl = true;
        final npcId = payload.split('-')[1];
        browserUrl = 'https://www.torn.com/loader.php?sid=attack&user2ID=$npcId';
      } else if (payload.contains('499-')) {
        // Loot Rangers payload is (split by -)
        // [0] 499
        // [1] id list
        // [2] name list
        // [3] timestamp

        final lootRangersNpcsIds = payload.split('-')[1].split(",");
        final lootRangersNpcsNames = payload.split('-')[2].split(",");
        final lootRangersTime = payload.split('-')[3];
        final timeNote = "Attacks due to commence at $lootRangersTime!";

        final notes = <String>[];
        final colors = <String>[];
        for (var i = 0; i < lootRangersNpcsIds.length; i++) {
          colors.add("green");
          if (i == 0) {
            notes.add(timeNote);
          } else {
            notes.add("");
          }
        }

        // Open chaining browser for Loot Rangers
        _webViewProvider.openBrowserPreference(
          context: context,
          url: "https://www.torn.com/loader.php?sid=attack&user2ID=${lootRangersNpcsIds[0]}",
          browserTapType: BrowserTapType.chainShort,
          isChainingBrowser: true,
          chainingPayload: ChainingPayload()
            ..attackIdList = lootRangersNpcsIds
            ..attackNameList = lootRangersNpcsNames
            ..attackNotesList = notes
            ..attackNotesColorList = colors
            ..showNotes = true
            ..showBlankNotes = false
            ..showOnlineFactionWarning = false,
        );

        browserUrl = 'https://www.torn.com/loader.php?sid=attack&user2ID=$lootRangersNpcsIds';
      } else if (payload.contains('tornMessageId:')) {
        launchBrowserWithUrl = true;
        final messageId = payload.split(':');
        browserUrl = "https://www.torn.com/messages.php";
        if (messageId[1] != "0") {
          browserUrl = "https://www.torn.com/messages.php#/p=read&ID="
              "${messageId[1]}&suffix=inbox";
        }
      } else if (payload.contains('events')) {
        launchBrowserWithUrl = true;
        browserUrl = "https://www.torn.com/events.php#/step=all";
      } else if (payload.contains('tornTradeId:')) {
        launchBrowserWithUrl = true;
        final tradeId = payload.split(':');
        browserUrl = "https://www.torn.com/trade.php";
        if (tradeId[1] != "0") {
          browserUrl = "https://www.torn.com/trade.php#step=view&ID=${tradeId[1]}";
        }
      } else if (payload.contains('211')) {
        launchBrowserWithUrl = true;
        browserUrl = 'https://www.torn.com/travelagency.php';
      } else if (payload.contains('refills') && (!payload.contains("Xanax"))) {
        launchBrowserWithUrl = true;
        browserUrl = 'https://www.torn.com/points.php';
      } else if (payload.contains('retals')) {
        final assistSplit = payload.split('###');
        final assistId = assistSplit[0].split(':')[1];
        final bulkDetails = assistSplit[1].split(':')[1];

        if (int.parse


/*
 * Copyright 2009-2017 Alibaba Cloud All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ALIBABACLOUD_DCDN_MODEL_DELETEDCDNWAFPOLICYRESULT_H_
#define ALIBABACLOUD_DCDN_MODEL_DELETEDCDNWAFPOLICYRESULT_H_

#include <string>
#include <vector>
#include <utility>
#include <alibabacloud/core/ServiceResult.h>
#include <alibabacloud/dcdn/DcdnExport.h>

namespace AlibabaCloud
{
	namespace Dcdn
	{
		namespace Model
		{
			class ALIBABACLOUD_DCDN_EXPORT DeleteDcdnWafPolicyResult : public ServiceResult
			{
			public:

				DeleteDcdnWafPolicyResult();
				explicit DeleteDcdnWafPolicyResult(const std::string &payload);
				~DeleteDcdnWafPolicyResult();

			protected:
				void parse(const std::string &payload);
			private:

			};
		}
	}
}
#endif // !ALIBABACLOUD_DCDN_MODEL_DELETEDCDNWAFPOLICYRESULT_H_


 {%k4} {z}
// CHECK:  encoding: [0x62,0x72,0xfd,0xcc,0x5b,0x29]
          vbroadcasti64x4 (%rcx), %zmm13 {%k4} {z}

// CHECK: vbroadcasti64x4 291(%rax,%r14,8), %zmm13
// CHECK:  encoding: [0x62,0x32,0xfd,0x48,0x5b,0xac,0xf0,0x23,0x01,0x00,0x00]
          vbroadcasti64x4 291(%rax,%r14,8), %zmm13

// CHECK: vbroadcasti64x4 4064(%rdx), %zmm13
// CHECK:  encoding: [0x62,0x72,0xfd,0x48,0x5b,0x6a,0x7f]
          vbroadcasti64x4 4064(%rdx), %zmm13

// CHECK: vbroadcasti64x4 4096(%rdx), %zmm13
// CHECK:  encoding: [0x62,0x72,0xfd,0x48,0x5b,0xaa,0x00,0x10,0x00,0x00]
          vbroadcasti64x4 4096(%rdx), %zmm13

// CHECK: vbroadcasti64x4 -4096(%rdx), %zmm13
// CHECK:  encoding: [0x62,0x72,0xfd,0x48,0x5b,0x6a,0x80]
          vbroadcasti64x4 -4096(%rdx), %zmm13

// CHECK: vmovdqu64 {{.*}} {%k3}
// CHECK: encoding: [0x62,0xf1,0xfe,0x4b,0x7f,0x07]
vmovdqu64 %zmm0, (%rdi) {%k3}

// CHECK: vmovdqa32 {{.*}} {%k4}
// CHECK: encoding: [0x62,0x61,0x7d,0x4c,0x6f,0x1e]
vmovdqa32 (%rsi), %zmm27 {%k4}

// CHECK: vmovd
// CHECK: encoding: [0x62,0xe1,0x7d,0x08,0x7e,0x74,0x24,0xeb]
vmovd %xmm22, -84(%rsp)

// CHECK: vextractps
// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x17,0x61,0x1f,0x02]
vextractps      $2, %xmm20, 124(%rcx)

// CHECK: vaddpd {{.*}}{1to8}
// CHECK: encoding: [0x62,0x61,0xdd,0x50,0x58,0x74,0xf7,0x40]
vaddpd 512(%rdi, %rsi, 8) {1to8}, %zmm20, %zmm30

// CHECK: vaddps {{.*}}{1to16}
// CHECK: encoding: [0x62,0x61,0x5c,0x50,0x58,0xb4,0xf7,0x00,0x02,0x00,0x00]
vaddps 512(%rdi, %rsi, 8) {1to16}, %zmm20, %zmm30

// CHECK: vmovntdqa
// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x2a,0xab,0x78,0x56,0x34,0x12]
vmovntdqa 0x12345678(%rbx), %zmm13

// CHECK: vmovntdqa
// CHECK: encoding: [0x62,0xc2,0x7d,0x48,0x2a,0x14,0x56]
vmovntdqa (%r14,%rdx,2), %zmm18

// CHECK: vmovntdqa
// CHECK: encoding: [0x62


 Fake master pod
func (b *Backend) newMasterJob(loadTest loadTestV1.LoadTest) *batchV1.Job {
	imageRef := fmt.Sprintf("%s:%s", loadTest.Spec.MasterConfig.Image, loadTest.Spec.MasterConfig.Tag)
	if loadTest.Spec.MasterConfig.Image == "" || loadTest.Spec.MasterConfig.Tag == "" {
		imageRef = fmt.Sprintf("%s:%s", b.config.Image, b.config.Tag)
		b.logger.Warn("Loadtest.Spec.MasterConfig is empty; using default master image", zap.String("imageRef", imageRef))
	}

	// For fake provider we don't really create load test and just use alpine image with some sleep
	// to simulate load test job. Please don't use Fake provider in production.
	return &batchV1.Job{
		ObjectMeta: metaV1.ObjectMeta{
			Name: "loadtest-master",
			Labels: map[string]string{
				"app": "loadtest-master",
			},
			OwnerReferences: []metaV1.OwnerReference{
				*metaV1.NewControllerRef(&loadTest, loadTestV1.SchemeGroupVersion.WithKind("LoadTest")),
			},
		},
		Spec: batchV1.JobSpec{
			Template: coreV1.PodTemplateSpec{
				ObjectMeta: metaV1.ObjectMeta{
					Labels: map[string]string{
						"app": "loadtest-master",
					},
				},
				Spec: coreV1.PodSpec{
					RestartPolicy: "Never",
					Containers: []coreV1.Container{
						{
							Name:            "loadtest-master",
							Image:           imageRef,
							ImagePullPolicy: "Always",
							Command:         []string{"/bin/sh", "-c", "--"},
							Args:            []string{"sleep 10"},
						},
					},
				},
			},
		},
	}
}

// determineLoadTestPhaseFromJob reads existing job statuses and determines what the loadtest phase should be
func determineLoadTestPhaseFromJob(status batchV1.JobStatus) loadTestV1.LoadTestPhase {
	if status.Active > 0 {
		return loadTestV1.LoadTestRunning
	}

	if status.Succeeded == 0 && status.Failed == 0 {
		return loadTestV1.LoadTestStarting
	}

	return loadTestV1.LoadTestFinished
}
package lucky

import (
	"crypto/tls"
	"github.com/helloh2o/lucky/log"
	"io"
	"net/http"
	"net/url"
	"time"
)

// Req is http client req
type Req struct {
	http.Client
	proxy string
}

var (
	// UA is user agent
	UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.3578.98 Safari/537.36"
)

// NewHttpClient get new client
func NewHttpClient(proxyUrl ...string) *Req {
	req := new(Req)
	req.Client = http.Client{}
	req.Jar = new(Jar)
	req.Timeout = time.Second * 3
	tr := &http.Transport{}
	if len(proxyUrl) > 0 {
		proxyFunc := func(r *http.Request) (*url.URL, error) {
			r.Header.Set("User-Agent", UA)
			return url.Parse(proxyUrl[0])
		}
		tr.Proxy = proxyFunc
	}
	tr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
	req.Transport = tr
	return req
}

// DoReq client request target url
func (req *Req) DoReq(met


;
            *mappedPtr = 0xDEADC0DE;
            res->Unmap(0, nullptr);
        }
    }
}

static void TestStandardCustomCommittedPlaced(const TestContext& ctx)
{
    wprintf(L"Test standard, custom, committed, placed\n");

    static const D3D12_HEAP_TYPE heapType = D3D12_HEAP_TYPE_DEFAULT;
    static const UINT64 bufferSize = 1024;

    D3D12MA::CPOOL_DESC poolDesc = D3D12MA::CPOOL_DESC{
        heapType,
        D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS };
    ComPtr<D3D12MA::Pool> pool;
    CHECK_HR(ctx.allocator->CreatePool(&poolDesc, &pool));

    std::vector<ComPtr<D3D12MA::Allocation>> allocations;

    D3D12MA::TotalStatistics statsBeg = {};
    D3D12MA::DetailedStatistics poolStatInfoBeg = {};
    ctx.allocator->CalculateStatistics(&statsBeg);
    pool->CalculateStatistics(&poolStatInfoBeg);

    size_t poolAllocCount = 0;

    D3D12_RESOURCE_DESC resDesc = {};
    FillResourceDescForBuffer(resDesc, bufferSize);

    for(uint32_t standardCustomI = 0; standardCustomI < 2; ++standardCustomI)
    {
        const bool useCustomPool = standardCustomI > 0;
        for(uint32_t flagsI = 0; flagsI < 3; ++flagsI)
        {
            const bool useCommitted = flagsI > 0;
            const bool neverAllocate = flagsI > 1;

            D3D12MA::ALLOCATION_DESC allocDesc = {};
            if(useCustomPool)
            {
                allocDesc.CustomPool = pool.Get();
                allocDesc.HeapType = (D3D12_HEAP_TYPE)0xCDCDCDCD; // Should be ignored.
                allocDesc.ExtraHeapFlags = (D3D12_HEAP_FLAGS)0xCDCDCDCD; // Should be ignored.
            }
            else
                allocDesc.HeapType = heapType;
            if(useCommitted)
                allocDesc.Flags |= D3D12MA::ALLOCATION_FLAG_COMMITTED;
            if(neverAllocate)
                allocDesc.Flags |= D3D12MA::ALLOCATION_FLAG_NEVER_ALLOCATE;

            ComPtr<D3D12MA::Allocation> allocPtr = NULL;
            HRESULT hr = ctx.allocator->CreateResource(&allocDesc, &resDesc,
                D3D12_RESOURCE_STATE_COMMON,
                NULL, // pOptimizedClearValue
                &allocPtr, IID_NULL, NULL);
            CHECK_BOOL(SUCCEEDED(hr) == (allocPtr != NULL));
            if(allocPtr)
            {
                allocations.push_back(allocPtr);
                if(useCustomPool)
                    ++poolAllocCount;
            }

            bool expectSuccess = !neverAllocate; // NEVER_ALLOCATE should always fail with COMMITTED.
            CHECK_BOOL(expectSuccess == SUCCEEDED(hr));
            if(SUCCEEDED(hr) && useCommitted)
            {
                CHECK_BOOL(allocPtr->GetHeap() == NULL); // Committed allocation has implicit heap.
            }
        }
    }

    D3D12MA::TotalStatistics statsEnd = {};
    D3D12MA::DetailedStatistics poolStatInfoEnd = {};
    ctx.allocator->CalculateStatistics(&statsEnd);
    pool->CalculateStatistics(&poolStatInfoEnd);

    CHECK_BOOL(statsEnd.Total.Stats.AllocationCount == statsBeg.Total.Stats.AllocationCount + allocations.size());
    CHECK_BOOL(statsEnd.Total.Stats.AllocationBytes >= statsBeg.Total.Stats.AllocationBytes + allocations.size() * bufferSize);
    CHECK_BOOL(statsEnd.HeapType[0].Stats.AllocationCount == statsBeg.HeapType[0].Stats.AllocationCount + allocations.size());
    CHECK_BOOL(statsEnd.


::get(AType, Filters);
    LPadInst->addClause(FilterArray);

    // Also check whether we need a cleanup.
    if (hasCleanup)
      LPadInst->setCleanup(true);

  // Otherwise, signal that we at least have cleanups.
  } else if (hasCleanup) {
    LPadInst->setCleanup(true);
  }

  assert((LPadInst->getNumClauses() > 0 || LPadInst->isCleanup()) &&
         "landingpad instruction has no clauses!");

  // Tell the backend how to generate the landing pad.
  Builder.CreateBr(getEHDispatchBlock(EHStack.getInnermostEHScope()));

  // Restore the old IR generation state.
  Builder.restoreIP(savedIP);

  return lpad;
}

static void emitCatchPadBlock(CodeGenFunction &CGF, EHCatchScope &CatchScope) {
  llvm::BasicBlock *DispatchBlock = CatchScope.getCachedEHDispatchBlock();
  assert(DispatchBlock);

  CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveIP();
  CGF.EmitBlockAfterUses(DispatchBlock);

  llvm::Value *ParentPad = CGF.CurrentFuncletPad;
  if (!ParentPad)
    ParentPad = llvm::ConstantTokenNone::get(CGF.getLLVMContext());
  llvm::BasicBlock *UnwindBB =
      CGF.getEHDispatchBlock(CatchScope.getEnclosingEHScope());

  unsigned NumHandlers = CatchScope.getNumHandlers();
  llvm::CatchSwitchInst *CatchSwitch =
      CGF.Builder.CreateCatchSwitch(ParentPad, UnwindBB, NumHandlers);

  // Test against each of the exception types we claim to catch.
  for (unsigned I = 0; I < NumHandlers; ++I) {
    const EHCatchScope::Handler &Handler = CatchScope.getHandler(I);

    CatchTypeInfo TypeInfo = Handler.Type;
    if (!TypeInfo.RTTI)
      TypeInfo.RTTI = llvm::Constant::getNullValue(CGF.VoidPtrTy);

    CGF.Builder.SetInsertPoint(Handler.Block);

    if (EHPersonality::get(CGF).isMSVCXXPersonality()) {
      CGF.Builder.CreateCatchPad(
          CatchSwitch, {TypeInfo.RTTI, CGF.Builder.getInt32(TypeInfo.Flags),
                        llvm::Constant::getNullValue(CGF.VoidPtrTy)});
    } else {
      CGF.Builder.CreateCatchPad(CatchSwitch, {TypeInfo.RTTI});
    }

    CatchSwitch->addHandler(Handler.Block);
  }
  CGF.Builder.restoreIP(SavedIP);
}

// Wasm uses Windows-style EH instructions, but it merges all catch clauses into
// one big catchpad, within which we use Itanium's landingpad-style selector
// comparison instructions.
static void emitWasmCatchPadBlock(CodeGenFunction &CGF,
                                  EHCatchScope &CatchScope) {
  llvm::BasicBlock *DispatchBlock = CatchScope.getCachedEHDispatchBlock();
  assert(DispatchBlock);

  CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveIP();
  CGF.EmitBlockAfterUses(DispatchBlock);

  llvm::Value *ParentPad = CGF.CurrentFuncletPad;
  if (!ParentPad)
    ParentPad = llvm::ConstantTokenNone::get(CGF.getLLVMContext());
  llvm::BasicBlock *UnwindBB =
      CGF.getEHDispatchBlock(CatchScope.getEnclosingEHScope());

  unsigned NumHandlers = CatchScope.getNumHandlers();
  llvm::CatchSwitchInst *CatchSwitch =
      CGF.Builder.CreateCatchSwitch(ParentPad, UnwindBB, NumHandlers);

  // We don't use a landingpad instruction, so generate intrinsic calls to
  // provide exception and selector values.
  llvm::BasicBlock *Wa


  pub ccx: &'a CrateContext<'a, 'tcx>,
}

impl<'a, 'tcx> FunctionContext<'a, 'tcx> {
    /// Create a function context for the given function.
    pub fn new(ccx: &'a CrateContext<'a, 'tcx>,
               spv_fn_decl: Function,
               definition: Option<Instance<'tcx>>,
               block_arena: &'a TypedArena<BlockS<'a, 'tcx>>)
               -> FunctionContext<'a, 'tcx> {
        let (param_substs, def_id) = match definition {
            Some(instance) => {
                validate_substs(instance.substs);
                (instance.substs, Some(instance.def))
            }
            None => (ccx.tcx().intern_substs(&[]), None)
        };

        let mir = def_id.map(|id| ccx.tcx().item_mir(id));

        FunctionContext {
            mir: mir,
            def_id: def_id,
            spv_fn_decl: RefCell::new(spv_fn_decl),
            param_substs: param_substs,
            span: None,
            block_arena: block_arena,
            ccx: ccx,
        }
    }

    pub fn mir(&self) -> Ref<'tcx, Mir<'tcx>> {
        self.mir.as_ref().map(Ref::clone).expect("fcx.mir was empty")
    }

    pub fn spv(&self) -> &'a RefCell<ModuleBuilder> {
        self.ccx.spv()
    }

    pub fn attributes(&self) -> Vec<attributes::Attribute> {
        if let Some(def_id) = self.def_id {
            attributes::attributes(self.ccx, def_id)
        } else {
            Vec::new()
        }
    }

    pub fn monomorphize<T>(&self, value: &T) -> T
        where T: TransNormalize<'tcx>
    {
        monomorphize::apply_param_substs(self.ccx.shared(),
                                         self.param_substs,
                                         value)
    }
}

/// Main context for translating MIR to SPIR-V.
pub struct MirContext<'bcx, 'tcx: 'bcx> {
    mir: Ref<'tcx, mir::Mir<'tcx>>,

    /// Function context
    fcx: &'bcx FunctionContext<'bcx, 'tcx>,

    /// A `Block` for each MIR `BasicBlock`
    blocks: IndexVec<mir::BasicBlock, Block<'bcx, 'tcx>>,

    /// The location where each MIR arg/var/tmp/ret is stored.
    locals: IndexVec<mir::Local, Option<LocalRef>>,
}

// Basic block context.  We create a block context for each basic block
// (single-entry, single-exit sequence of instructions) we generate from Rust
// code.  Each basic block we generate is attached to a function, typically
// with many basic blocks per function.  All the basic blocks attached to a
// function are organized as a directed graph.
pub struct BlockS<'blk, 'tcx: 'blk> {
    // The function context for the function to which this block is
    // attached.
    pub fcx: &'blk FunctionContext<'blk, 'tcx>,

    pub spv_block: RefCell<inspirv_builder::Block>,
}

impl<'blk, 'tcx> BlockS<'blk, 'tcx> {
    pub fn new(fcx: &'blk FunctionContext<'blk, 'tcx>,
               block: inspirv_builder::Block)
               -> Block<'blk, 'tcx> {
        fcx.block_arena.alloc(BlockS {
            fcx: fcx,
            spv_block: RefCell::new(block),
        })
    }

    pub fn ccx(&self) -> &


o("A KVM host that supports nesting cannot back its KVM guests with huge pages\n");
		return -EINVAL;
	}

	for (i = 0; i < 16; i++)
		kvm_s390_fac_base[i] |=
			S390_lowcore.stfle_fac_list[i] & nonhyp_mask(i);

	return kvm_init(NULL, sizeof(struct kvm_vcpu), 0, THIS_MODULE);
}

static void __exit kvm_s390_exit(void)
{
	kvm_exit();
}

module_init(kvm_s390_init);
module_exit(kvm_s390_exit);

/*
 * Enable autoloading of the kvm module.
 * Note that we add the module alias here instead of virt/kvm/kvm_main.c
 * since x86 takes a different approach.
 */
#include <linux/miscdevice.h>
MODULE_ALIAS_MISCDEV(KVM_MINOR);
MODULE_ALIAS("devname:kvm");


                }
                });
            }
            return runner;
        }

        @Override
        public Runner getSuite(RunnerBuilder builder, java.lang.Class<?>[] classes)
                throws InitializationError {
            Runner suite = super.getSuite(builder, classes);
            return this.classes ? parallelize(suite) : suite;
        }

        @Override
        protected Runner getRunner(RunnerBuilder builder, Class<?> testClass)
                throws Throwable {
            Runner runner = super.getRunner(builder, testClass);
            return methods ? parallelize(runner) : runner;
        }
    }
}
package gov.nih.ncats.molvec.internal.algo;

import static org.junit.Assert.*;

import java.io.File;

import org.junit.Test;

public class LineSegmentTest {

	private File getFile(String fname){
		ClassLoader classLoader = getClass().getClassLoader();
		return new File(classLoader.getResource(fname).getFile());

	}

	@Test
	public void parallelLinesAtProblemAngleShouldBeJoined() throws Exception {
		File f=getFile("segmentTest/badparlines.png");
		StructureImageExtractor sie = new StructureImageExtractor(f);
		assertEquals(6,sie.getLineSegmentsJoined().size());
	}

	@Test
	public void thickWigglyLineShouldBeJoined() throws Exception {
		File f=getFile("segmentTest/angled_wiggle_line.png");
		StructureImageExtractor sie = new StructureImageExtractor(f);
		assertEquals(1,sie.getLineSegmentsJoined().size());
	}

	@Test
	public void thickWigglyLinesShouldBeJoinedAndStitched() throws Exception {
		File f=getFile("segmentTest/angled_wiggle_line_branch.png");
		StructureImageExtractor sie = new StructureImageExtractor(f);
		int num=sie.getLineSegmentsJoined().size();

		assertTrue("Expected number of segments was 3 or 4, found:" + num,num>=3 && num<=4);
		if(num!=3){
			int finalEdges=sie.getCtab().getEdges().size();
			assertTrue("Expected 3 final edges, found:" + finalEdges,finalEdges==3);
		}
	}

	@Test
	public void thickWigglyLinesWithDoubleBondsShouldBeJoinedAndStitched() throws Exception {
		File f=getFile("segmentTest/angled_wiggle_line_double.png");
		StructureImageExtractor sie = new StructureImageExtractor(f);
		int num=sie.getLineSegmentsJoined().size();

		assertTrue("Expected number of segments was between 6 and 8, found:" + num,num>=6 && num<=8);
		if(num!=6){
			int finalEdges=sie.getCtab().getEdges().size();
			assertTrue("Expected 4 final edges, found:" + finalEdges,finalEdges==4);
		}
	}

	@Test
	public void thickWigglyLinesWithSmallAngleSectionShouldBeStitched() throws Exception {
		File f=getFile("segmentTest/angled_wiggle_line_with_small_part.png");
		StructureImageExtractor sie = new StructureImageExtractor(f);
		int num=sie.getLineSegmentsJoined().size();
		assertTrue("Expected number of segments was between 2 and 3, found:" + num,num>=2 && num<=3);
	}

	@Test
	public void thinLinesWithDoubleBondsShouldBeStitchedToCorrectNumber() throws Exception {
		File f=getFile("segmentTest/thin_double.png");
		StructureImageExtractor sie = new StructureImageExtractor(f);
		int num=sie.getLineSegmentsJoined().size();
		assertTrue("Expected number of segments was between 9 and 11, found:" + num,num>=9 && num<=11);
		if(num!=9){
			int finalEdges=sie.getCtab().getEdges().size();
			assertTrue("Expected 7 final edges, found:" + finalEdges,finalEdges==7


ageType = strategyNotification.NotificationLevel switch
            {
                NotificationLevel.Error => MessageType.Error,
                NotificationLevel.Warning => MessageType.Warn,
                _ => MessageType.Info
            };

            return new Message
            {
                MessageType = messageType,
                Text = strategyNotification.Message,
                Timestamp = strategyNotification.Timestamp,
                TextVerbose = strategyNotification.ToString()
            };
        }
    }
}


r(
                        child: AutoSizeText(
                          socketprov.connected ? '暂停' : '继续',
                          style: getStyle(color: Colors.white, size: 20),
                        ),
                      ),
                    ),
                    const SizedBox(width: 20),
                    Visibility(
                      visible: socketprov.pausing,
                      child: Row(
                        children: [
                          XButton(
                            width: 140,
                            height: 50,
                            backgroundColor: const Color(0xFF2d2a31),
                            hoverColor: const Color(0xFF2d2a31),
                            onTap: () {
                              socketprov.killTask();
                            },
                            child: Center(
                              child: AutoSizeText(
                                '终止此任务',
                                style: getStyle(color: Colors.white, size: 20),
                              ),
                            ),
                          ),
                          const SizedBox(width: 20),
                        ],
                      ),
                    ),
                  ],
                );
              } else {
                return const SizedBox();
              }
            },
          ),
          const SizedBox(height: 300),
        ],
      );
    } else {
      return const SizedBox();
    }
  }
}
const classes = {
  "羊毛类 Wools:各色羊毛": [
    "black_wool",
    "blue_wool",
    "brown_wool",
    "cyan_wool",
    "gray_wool",
    "green_wool",
    "light_blue_wool",
    "lime_wool",
    "magenta_wool",
    "orange_wool",
    "pink_wool",
    "purple_wool",
    "red_wool",
    "light_gray_wool",
    "white_wool",
    "yellow_wool",
  ],
  "混凝土类 Concretes:混凝土与混凝土粉末": [
    "black_concrete",
    "blue_concrete",
    "brown_concrete",
    "cyan_concrete",
    "gray_concrete",
    "green_concrete",
    "light_blue_concrete",
    "lime_concrete",
    "magenta_concrete",
    "orange_concrete",
    "pink_concrete",
    "purple_concrete",
    "red_concrete",
    "light_gray_concrete",
    "white_concrete",
    "yellow_concrete",
    "black_concrete_powder",
    "blue_concrete_powder",
    "brown_concrete_powder",
    "cyan_concrete_powder",
    "gray_concrete_powder",
    "green_concrete_powder",
    "light_blue_concrete_powder",
    "lime_concrete_powder",
    "magenta_concrete_powder",
    "orange_concrete_powder",
    "pink_concrete_powder",
    "purple_concrete_powder",
    "red_concrete_powder",
    "light_gray_concrete_powder",
    "white_concrete_powder",
    "yellow_concrete_powder",
  ],
  "陶瓦类 Terracottas:陶瓦与带釉陶瓦": [
    "hardened_clay",
    "black_terracotta",
    "blue_terracotta",
    "brown_terracotta",
    "cyan_terracotta",
    "gray_terracotta",
    "green_terracotta",
    "light_blue_terracotta",
    "lime_terracotta",
    "magenta_terracotta",
    "orange_terracotta",
    "pink_terracotta",
    "purple_terracotta",
    "red_terracotta",
    "light_gray_terracotta",
    "white_terracotta",
    "yellow_terracotta",
    "black_glazed_terracotta",
    "blue_glazed_terracotta",
    "brown_glazed_terracotta",
    "cyan_glazed_terracotta",
    "gray_glazed_terracotta",
    "green_glazed_ter


dContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(
          widget.initialItem == null
              ? CheckinLocalizations.of(context).addCheckinItem
              : CheckinLocalizations.of(context).editCheckinItemTitle,
        ),
        actions: [
          TextButton(
            onPressed: () {
              if (_formKey.currentState!.validate()) {
                _formKey.currentState!.save();
                final item = CheckinItem(
                  id: widget.initialItem?.id,
                  name: _name,
                  icon: _icon,
                  color: _color,
                  group: _group,
                  reminderSettings: _reminderSettings,
                  checkInRecords:
                      widget.initialItem?.checkInRecords ?? {}, // 保留打卡记录
                );
                Navigator.of(context).pop(item);
              }
            },
            child: Text(CheckinLocalizations.of(context).save),
          ),
        ],
      ),
      body: Form(
        key: _formKey,
        child: ListView(
          padding: const EdgeInsets.all(16.0),
          children: [
            // 圆形图标和颜色选择控件
            CircleIconPicker(
              currentIcon: _icon,
              backgroundColor: _color,
              onIconSelected: (icon) => setState(() => _icon = icon),
              onColorSelected: (color) => setState(() => _color = color),
            ),
            const SizedBox(height: 24),
            // 名称输入框
            TextFormField(
              decoration: InputDecoration(
                labelText: CheckinLocalizations.of(context).nameLabel,
                hintText: CheckinLocalizations.of(context).nameHint,
              ),
              initialValue: _name,
              validator: (value) {
                if (value == null || value.trim().isEmpty) {
                  return CheckinLocalizations.of(context).nameRequiredError;
                }
                if (_existingNames.contains(value.trim())) {
                  return CheckinLocalizations.of(context).nameExistsError;
                }
                return null;
              },
              onSaved: (value) => _name = value!.trim(),
            ),
            const SizedBox(height: 16),
            // 分组输入框
            TextFormField(
              decoration: InputDecoration(
                labelText: CheckinLocalizations.of(context).groupLabel,
                hintText: CheckinLocalizations.of(context).groupHint,
              ),
              initialValue: _group,
              onSaved:
                  (value) =>
                      _group = value?.trim().isEmpty == true ? null : value,
            ),
            const SizedBox(height: 24),
            // 提醒设置
            const SizedBox(height: 8),
            _buildReminderTypeSelector(),
            const SizedBox(height: 16),
            if (_reminderSettings?.type == ReminderType.weekly)
              _buildWeekdaySelector()
            else if (_reminderSettings?.type == ReminderType.monthly)
              _buildMonthDaySelector()
            else if (_reminderSettings?.type == ReminderType.specific)
              _buildSpecificDateSelector(),
            if (_reminderSettings != null) ...[
              const SizedBox(height: 16),
              _buildTimeSelector(),
            ],
          ],
        ),
      ),
    );
  }

  //


%;
      position: fixed;
      top: 0;
      width: 100%;
      z-index: 100;
      #{$default-float}: 0;
    }

    .joyride-expose-wrapper {
      background-color: $white;
      border-radius: 3px;
      box-shadow: 0 0 15px $white;
      position: absolute;
      z-index: 102;
    }

    .joyride-expose-cover {
      background: transparent;
      border-radius: 3px;
      left: 0;
      position: absolute;
      top: 0;
      z-index: 9999;
    }

    /* Styles for screens that are at least 768px; */
    @media #{$small} {
      .joyride-tip-guide { width: $joyride-tip-default-width; #{$default-float}: inherit;
        .joyride-nub {
          &.bottom {
            border-color: $joyride-tip-bg !important;
            border-bottom-color: transparent !important;
            border-#{$default-float}-color: transparent !important;
            border-#{$opposite-direction}-color: transparent !important;
            bottom: -($joyride-tip-nub-size*2);
          }
          &.right {
            border-color: $joyride-tip-bg !important;
            border-right-color: transparent !important; border-bottom-color: transparent !important;
            border-top-color: transparent !important;
            left: auto;
            right: -($joyride-tip-nub-size*2);
            top: $joyride-tip-position-offset;
          }
          &.left {
            border-color: $joyride-tip-bg !important;
            border-bottom-color: transparent !important;
            border-left-color: transparent !important;
            border-top-color: transparent !important;
            left: -($joyride-tip-nub-size*2);
            right: auto;
            top: $joyride-tip-position-offset;
          }
        }
      }
    }
  }
}
// Foundation by ZURB
// foundation.zurb.com
// Licensed under MIT Open Source

@import 'global';

//
// @variables
//
$include-html-media-classes: $include-html-classes !default;

// We use these to control video container padding and margins
$flex-video-padding-top: rem-calc(25) !default;
$flex-video-padding-bottom: 67.5% !default;
$flex-video-margin-bottom: rem-calc(16) !default;

// We use this to control widescreen bottom padding
$flex-video-widescreen-padding-bottom: 56.34% !default;

//
// @mixins
//

@mixin flex-video-container {
  height: 0;
  margin-bottom: $flex-video-margin-bottom;
  overflow: hidden;
  padding-bottom: $flex-video-padding-bottom;
  padding-top: $flex-video-padding-top;
  position: relative;

  &.widescreen { padding-bottom: $flex-video-widescreen-padding-bottom; }
  &.vimeo { padding-top: 0; }

  iframe,
  object,
  embed,
  video {
    height: 100%;
    position: absolute;
    top: 0;
    width: 100%;
    #{$default-float}: 0;
  }
}

@include exports("flex-video") {
  @if $include-html-media-classes {
    .flex-video { @include flex-video-container; }
  }
}
// Foundation by ZURB
// foundation.zurb.com
// Licensed under MIT Open Source

@import 'global';

//
// @name _thumbs.scss
// @dependencies _globals.sc


er, and list of arguments.
  /// May return a constant, function or variable.
  Expression _createBinding(String name, List<Expression> arguments) {
    switch (arguments.length) {
      // Check for Constant or Variable
      case 0:
        var val = constants[name];
        return (val != null) ? Number(val) : Variable(name);
      // Check for Function with one argument
      case 1:
        var fun1 = functions1[name];
        if (fun1 != null) {
          return fun1(arguments[0]);
        }
        continue custom;
      // Check for Function with two arguments
      case 2:
        var fun2 = functions2[name];
        if (fun2 != null) {
          return fun2(arguments[0], arguments[1]);
        }
        continue custom;
      // Check for Algorithmic function
      custom:
      default:
        var fun = functionsC[name];
        if (fun != null) {
          return AlgorithmicFunction(name, arguments, fun);
        }
    }

    // No match
    throw ArgumentError.value(name);
  }

  /// Creates a new parser.
  /// The given [options] can be used to configure the behaviour.
  GrammarParser([ParserOptions options = const ParserOptions()]) {
    if (options.implicitMultiplication) {
      throw UnimplementedError(
        'Implicit multiplication is not supported by this parser',
      );
    }

    this.constants.addAll(options.constants);

    final builder = ExpressionBuilder<Expression>();

    final constant = ChoiceParser(
      constants.keys.map((s) => s.toParser().trim()),
    );

    final identifier =
        constant |
        ((letter() | char('\$')) & word().star())
            .flatten(message: 'Identifier expected')
            .trim();

    final arguments = seq3(
      char('('),
      builder.loopback.starSeparated(char(',')).map((args) => args.elements),
      char(')'),
    ).map3((_, args, _) => args).optionalWith(const <Expression>[]);

    final functionOrVariable = seq2(
      identifier,
      arguments,
    ).map2((name, args) => _createBinding(name, args));

    final number = (digit().plus() & (char('.') & digit().plus()).optional())
        .flatten(message: 'Number expected')
        .trim()
        .map(num.parse)
        .map(Number.new);

    // Numbers and variables
    builder
      // Numbers
      ..primitive(number)
      // Special case for exponential function notation of form `e^x`
      ..primitive(
        seq2(
          char('e').trim() & char('^').trim(),
          builder.loopback,
        ).map2((_, exp) => Exponential(exp)),
      )
      // Generic constants, functions or variables
      ..primitive(functionOrVariable)
      // Parenthesis to group terms
      ..group().wrapper(char('(').trim(), char(')').trim(), (l, e, r) => e)
      // Backwards compat: Curly braces to group function arguments
      ..group().wrapper(char('{').trim(), char('}').trim(), (l, e, r) => e);

    // Binary operators (right associative)
    builder.group().right(char('^').trim(), (l, op, r) => Power(l, r));

    // Unary operators
    builder.group().postfix(char('!').trim(), (e, op) => Factorial(e));

    builder.group()
      ..prefix(char('-').trim(), (op, e) => UnaryMinus(e))
      ..prefix(char('+').trim(), (op, e) => UnaryPlus(e));

    // Binary operators (left associative