topAxis": 21, "axisFormat": 22, "tickInterval": 23, "excludes": 24, "includes": 25, "todayMarker": 26, "title": 27, "acc_title": 28, "acc_title_value": 29, "acc_descr": 30, "acc_descr_value": 31, "acc_descr_multiline_value": 32, "section": 33, "clickStatement": 34, "taskTxt": 35, "taskData": 36, "click": 37, "callbackname": 38, "callbackargs": 39, "href": 40, "clickStatementDebug": 41, "$accept": 0, "$end": 1 },
    terminals_: { 2: "error", 4: "gantt", 6: "EOF", 8: "SPACE", 10: "NL", 12: "weekday_monday", 13: "weekday_tuesday", 14: "weekday_wednesday", 15: "weekday_thursday", 16: "weekday_friday", 17: "weekday_saturday", 18: "weekday_sunday", 19: "dateFormat", 20: "inclusiveEndDates", 21: "topAxis", 22: "axisFormat", 23: "tickInterval", 24: "excludes", 25: "includes", 26: "todayMarker", 27: "title", 28: "acc_title", 29: "acc_title_value", 30: "acc_descr", 31: "acc_descr_value", 32: "acc_descr_multiline_value", 33: "section", 35: "taskTxt", 36: "taskData", 37: "click", 38: "callbackname", 39: "callbackargs", 40: "href" },
    productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 2], [34, 2], [34, 3], [34, 3], [34, 4], [34, 3], [34, 4], [34, 2], [41, 2], [41, 3], [41, 3], [41, 4], [41, 3], [41, 4], [41, 2]],
    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
      var $0 = $$.length - 1;
      switch (yystate) {
        case 1:
          return $$[$0 - 1];
        case 2:
          this.$ = [];
          break;
        case 3:
          $$[$0 - 1].push($$[$0]);
          this.$ = $$[$0 - 1];
          break;
        case 4:
        case 5:
          this.$ = $$[$0];
          break;
        case 6:
        case 7:
          this.$ = [];
          break;
        case 8:
          yy.setWeekday("monday");
          break;
        case 9:
          yy.setWeekday("tuesday");
          break;
        case 10:
          yy.setWeekday("wednesday");
          break;
        case 11:
          yy.setWeekday("thursday");
          break;
        case 12:
          yy.setWeekday("friday");
          break;
        case 13:
          yy.setWeekday("saturday");
          break;
        case 14:
          yy.setWeekday("sunday");
          break;
        case 15:
          yy.setDateFormat($$[$0].substr(11));
          this.$ = $$[$0].substr(11);
          break;
        case 16:
          yy.enableInclusiveEndDates


	unreachableDepth := 0

	for _, ins := range c.Source.Code {
		wasUnreachable := false

		if unreachableDepth != 0 {
			wasUnreachable = true
			switch ins.Op.Name {
			case "block", "loop", "if":
				unreachableDepth++
			case "end":
				unreachableDepth--
			}
			if unreachableDepth == 1 && ins.Op.Name == "else" {
				unreachableDepth--
			}
			if unreachableDepth != 0 {
				continue
			}
		}

		switch ins.Op.Name {
		case "nop":

		case "unreachable":
			c.Code = append(c.Code, buildInstr(0, ins.Op.Name, nil, nil))
			unreachableDepth = 1

		case "select":
			retID := c.NextValueID()
			c.Code = append(c.Code, buildInstr(retID, ins.Op.Name, nil, c.PopStack(3)))
			c.PushStack(retID)

		case "i32.const":
			retID := c.NextValueID()
			c.Code = append(c.Code, buildInstr(retID, ins.Op.Name, []int64{int64(ins.Immediates[0].(int32))}, nil))
			c.PushStack(retID)

		case "i64.const":
			retID := c.NextValueID()
			c.Code = append(c.Code, buildInstr(retID, ins.Op.Name, []int64{ins.Immediates[0].(int64)}, nil))
			c.PushStack(retID)

		case "f32.const":
			retID := c.NextValueID()
			c.Code = append(c.Code, buildInstr(retID, ins.Op.Name, []int64{int64(math.Float32bits(ins.Immediates[0].(float32)))}, nil))
			c.PushStack(retID)

		case "f64.const":
			retID := c.NextValueID()
			c.Code = append(c.Code, buildInstr(retID, ins.Op.Name, []int64{int64(math.Float64bits(ins.Immediates[0].(float64)))}, nil))
			c.PushStack(retID)

		case "i32.add", "i32.sub", "i32.mul", "i32.div_s", "i32.div_u", "i32.rem_s", "i32.rem_u", "i32.and", "i32.or", "i32.xor", "i32.shl", "i32.shr_s", "i32.shr_u", "i32.rotl", "i32.rotr",
			"i32.eq", "i32.ne", "i32.lt_s", "i32.lt_u", "i32.le_s", "i32.le_u", "i32.gt_s", "i32.gt_u" /*"i32.ge_s", */, "i32.ge_u",
			"i64.add", "i64.sub", "i64.mul", "i64.div_s", "i64.div_u", "i64.rem_s", "i64.rem_u", "i64.and", "i64.or", "i64.xor", "i64.shl", "i64.shr_s", "i64.shr_u", "i64.rotl", "i64.rotr",
			"i64.eq", "i64.ne", "i64.lt_s", "i64.lt_u", "i64.le_s", "i64.le_u", "i64.gt_s", "i64.gt_u", "i64.ge_s", "i64.ge_u",
			"f32.add", "f32.sub", "f32.mul", "f32.div", "f32.min", "f32.max", "f32.copysign",
			"f32.eq", "f32.ne", "f32.lt", "f32.le", "f32.gt", "f32.ge",
			"f64.add", "f64.sub", "f64.mul", "f64.div", "f64.min", "f64.max", "f64.copysign",
			"f64.eq", "f64.ne", "f64.lt", "f64.le", "f64.gt", "f64.ge":
			retID := c.NextValueID()
			c.Code = append(c.


��그마한 타우렌 마을에서 전투를 벌이고 있을 때 아내와 떨어지게 됐소. 그녀는 혼자서 뾰족털 일족 세 명을 상대했지. 그러다가 적이 우리를 압도하기 시작했소. 난 후퇴를 지시했지만 새로 몰려온 적들이 아내를 완전히 에워싸고 말았소. 분노에 차서 필사적으로 검을 휘둘렀지만 결국 머릿수에 밀리고 말았소이다.$B$B정신을 잃었다가 깨어나 보니 한 타우렌 드루이드가 내 상처를 치료하고 있었소. 쓰러진 나를 그 드루이드가 업고 황금길을 건넜다더군.$B$B제발 내 아내의 흔적을 찾아주시오, $C|1이여;여;.",
    ["O"] = "십자로에 있는 만크릭을 위해 그의 아내의 흔적을 찾아가야 합니다.",
    ["T"] = "전쟁으로 잃은 아내",
  },
  [4941] = {
    ["D"] = "Rend lives?$B$BImpossible!$B$BIt had been thought that Rend  was slain decades ago.$B$BSeek out the wisdom of Eitrigg, $N. None know the workings of the Blackrock better than he and if what is written here bares truth, Eitrigg should be informed. No person should be denied the right of vengeance.$B$BYou will find him in Orgrimmar.$B$BOnce you have spoken with Eitrigg, confer with the Warchief to find out what he wishes to do about this problem.",
    ["O"] = "Speak with Eitrigg in Orgrimmar. When you have discussed matters with Eitrigg, seek council from Thrall.$B$BYou recall having seen Eitrigg in Thrall\'s chamber.",
    ["T"] = "Eitrigg\'s Wisdom",
  },
  [4961] = {
    ["D"] = "Ah, a summoner\'s orb--this is where the taint must be coming from. We must exorcise the demon within it if you\'re to use it. That I can do easily.$B$BYou\'re the one who has the hard job.  You must kill the demon once I release it.$B$BAnd you\'ll have to be quick.  If you take too long then he\'ll return to the orb and we\'ll have to start over!$B$BSo get yourself ready, $N.  Prepare your strongest spells and keep your potions handy, and go get a friend if you have one.  Because this isn\'t going to be pretty.",
    ["O"] = "Kill the Demon of the Orb, then speak with Tabetha.",
    ["T"] = "Cleansing of the Orb of Orahil",
  },
  [4962] = {
    ["D"] = "So, you have chosen to capture the soul of a felhound, good.$B$BTake this ruby--with it, you will be able to capture the creature\'s soul. It works very similar to spells you already know: when the creature is close to dying, use the gem and it should do the rest of the work for you.$B$BI would suggest going to Desolace and trying your hand at any of the felhounds there. Those should do nicely.$B$BAfter you\'re successful, take both the captured spirit and your ruby to Menara.",
    ["O"] = "Take the Felhas Ruby and use it on one of the Felhounds found in Desolace. After successful, bring the Felhas Ruby and the Imprisoned Felhound Spirit back to Menara Voidrender in the Barrens.",
    ["T"] = "Shard of a Felhound",
  },
  [4963] = {
    ["D"] = "So, you have chosen to capture the soul of an infernal, good.$B$BTake this em


import os
import gradio as gr

from chatcaptioner.chat import set_openai_key, summarize_chat, AskQuestions
from chatcaptioner.blip2 import Blip2

openai_key = os.environ["OPENAI_API_KEY"]
set_openai_key(openai_key)

blip2 = Blip2('FlanT5 XXL', device_id=0, bit8=True)
chat = AskQuestions(None, blip2, 'gpt-3.5-turbo', n_blip2_context=1)

def gradio_reset(gr_img):
    chat.reset(gr_img)
    return None

def gradio_ask(chatbot):
    question = chat.ask_question()
    question = chat.question_trim(question)
    chat.questions.append(question)
    chatbot = chatbot + [[None, question]]
    return chatbot

def gradio_answer(chatbot):
    answer = chat.answer_question()
    answer = chat.answer_trim(answer)
    chat.answers.append(answer)
    chatbot = chatbot + [[answer, None]]
    return chatbot

def gradio_summarize(chatbot):
    summary, summary_prompt, n_token_sum = summarize_chat(chat.questions, chat.answers, model='gpt-3.5-turbo')
    chatbot = chatbot + [[None, 'Final Caption: ' + summary]]
    return chatbot

with gr.Blocks() as demo:
    gr.Markdown("## ChatCaptioner Demo")
    with gr.Row():
        with gr.Column():
            image = gr.Image(type="pil")
            start = gr.Button("Start Chat")
        chatbot = gr.Chatbot()

    start.click(gradio_reset, image, chatbot) \
        .then(gradio_ask, chatbot, chatbot) \
        .then(gradio_answer, chatbot, chatbot) \
        .then(gradio_ask, chatbot, chatbot) \
        .then(gradio_answer, chatbot, chatbot) \
        .then(gradio_ask, chatbot, chatbot) \
        .then(gradio_answer, chatbot, chatbot) \
        .then(gradio_ask, chatbot, chatbot) \
        .then(gradio_answer, chatbot, chatbot) \
        .then(gradio_ask, chatbot, chatbot) \
        .then(gradio_answer, chatbot, chatbot) \
        .then(gradio_ask, chatbot, chatbot) \
        .then(gradio_answer, chatbot, chatbot) \
        .then(gradio_ask, chatbot, chatbot) \
        .then(gradio_answer, chatbot, chatbot) \
        .then(gradio_ask, chatbot, chatbot) \
        .then(gradio_answer, chatbot, chatbot) \
        .then(gradio_ask, chatbot, chatbot) \
        .then(gradio_answer, chatbot, chatbot) \
        .then(gradio_ask, chatbot, chatbot) \
        .then(gradio_answer, chatbot, chatbot) \
        .then(gradio_summarize, chatbot, chatbot)

demo.launch()


(
  '''
   <svg viewBox="0 0 30 24">
    <path
      d="M25.877 12.843h-1.502c-.188 0-.188 0-.188.19v1.512c0 .188 0 .188.188.188h1.5c.187 0 .187 0 .187-.188v-1.511c0-.19 0-.191-.185-.191zM17.999 10.2c0 .188 0 .188.188.188h1.687c.188 0 .188 0 .188-.188V8.688c0-.187.004-.187-.186-.19h-1.69c-.187 0-.187 0-.187.19V10.2zm2.25-3.967h1.5c.188 0 .188 0 .188-.188v-1.7c0-.19 0-.19-.188-.19h-1.5c-.189 0-.189 0-.189.19v1.7c0 .188 0 .188.19.188zm2.063 4.157h3.563c.187 0 .187 0 .187-.189V4.346c0-.19.004-.19-.185-.19h-1.69c-.187 0-.187 0-.187.188v4.155h-1.688c-.187 0-.187 0-.187.189v1.514c0 .19 0 .19.187.19zM14.812 24l2.812-3.4H12l2.813 3.4zm-9-11.157H4.31c-.188 0-.188 0-.188.19v1.512c0 .188 0 .188.188.188h1.502c.187 0 .187 0 .187-.188v-1.511c0-.19.01-.191-.189-.191zm15.937 0H8.25c-.188 0-.188 0-.188.19v1.512c0 .188 0 .188.188.188h13.5c.188 0 .188 0 .188-.188v-1.511c0-.19 0-.191-.188-.191zm-11.438-2.454h1.5c.188 0 .188 0 .188-.188V8.688c0-.187 0-.187-.188-.189h-1.5c-.187 0-.187 0-.187.189V10.2c0 .188 0 .188.187.188zM27.94 0c.563 0 .917.21 1.313.567.518.466.748.757.748 1.51v14.92c0 .567-.188 1.134-.562 1.512-.376.378-.938.566-1.313.566H2.063c-.563 0-.938-.188-1.313-.566-.562-.378-.75-.945-.75-1.511V2.078C0 1.51.188.944.562.567.938.189 1.5 0 1.875 0zm-.062 2H2v14.92h25.877V2zM5.81 4.157c.19 0 .19 0 .19.189v1.762c-.003.126-.024.126-.188.126H4.249c-.126-.003-.126-.023-.126-.188v-1.7c-.187-.19 0-.19.188-.19zm10.5 2.077h1.503c.187 0 .187 0 .187-.188v-1.7c0-.19 0-.19-.187-.19h-1.502c-.188 0-.188.001-.188.19v1.7c0 .188 0 .188.188.188zM7.875 8.5c.187 0 .187.002.187.189V10.2c0 .188 0 .188-.187.188H4.249c-.126-.002-.126-.023-.126-.188V8.625c.003-.126.024-.126.188-.126zm7.875 0c.19.002.19.002.19.189v1.575c-.003.126-.024.126-.19.126h-1.563c-.126-.002-.126-.023-.126-.188V8.625c.002-.126.023-.126.189-.126zm-6-4.342c.187 0 .187 0 .187.189v1.7c0 .188 0 .188-.187.188H8.187c-.126-.003-.126-.023-.126-.188V4.283c.003-.126.024-.126.188-.126zm3.94 0c.185 0 .372 0 .372.189v1.762c-.002.1


5><path d="M 72 352.44
L 518.4 352.44
" style="fill: none"/></g><g id=patch_6><path d="M 72 47.52
L 518.4 47.52
" style="fill: none"/></g></g></g><defs><clippath id=p4012cb75cd><rect x=72 y=47.52 width=446.4 height=304.92 /></clippath></defs></svg>

PetalWidthCm

Id

SepalLengthCm

SepalWidthCm

PetalLengthCm

<?xml version="1.0" encoding="utf-8" standalone="no"?><!DOCTYPE svg class="img-responsive center-img"PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="img-responsive center-img" xmlns:xlink=http://www.w3.org/1999/xlink width=576pt height=396pt viewbox="0 0 576 396" xmlns=http://www.w3.org/2000/svg version=1.1><metadata><rdf:rdf xmlns:dc=http://purl.org/dc/elements/1.1/ xmlns:cc=http://creativecommons.org/ns# xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#><cc:work><dc:type rdf:resource=http://purl.org/dc/dcmitype/StillImage /><dc:date>2024-10-30T12:10:44.562043</dc:date><dc:format>image/svg+xml</dc:format><dc:creator><cc:agent><dc:title>Matplotlib


= 0) {
        return NWC24_ERR_NOT_FOUND;
    }

    return NWC24_OK;
}

static NWC24Err WriteDlTaskEntry(NWC24DlTask* task, NWC24File* file) {
    NWC24Err result;

    result = SeekDlTaskEntry(task->id, file);
    if (result < 0) {
        return result;
    }

    memcpy(NWC24WorkP->dlTask, task, sizeof(NWC24DlTask));
    result = NWC24FWrite(NWC24WorkP->dlTask, sizeof(NWC24DlTask), file);
    if (result < 0) {
        return result;
    }

    return NWC24_OK;
}

static NWC24Err ReadDlTaskEntry(NWC24DlTask* task, u16 i, NWC24File* file) {
    NWC24Err result;

    result = SeekDlTaskEntry(i, file);
    if (result < 0) {
        return result;
    }

    result = NWC24FRead(task, sizeof(NWC24DlTask), file);
    if (result < 0) {
        return result;
    }

    return NWC24_OK;
}

static NWC24Err ClearDlTaskEntry(u16 i, NWC24File* file) {
    NWC24DlTask* task = (NWC24DlTask*)NWC24WorkP->dlTask;

    memset(task, 0, sizeof(NWC24DlTask));
    task->type = 0xFF;
    task->id = i;

    InitTaskEntryHeader(i);
    return WriteDlTaskEntry(task, file);
}

static NWC24Err ReadDlHeader(NWC24File* file) {
    NWC24Err result;

    result = NWC24FSeek(file, 0, NWC24_SEEK_BEG);
    if (result < 0) {
        return result;
    }

    result = NWC24FRead(&NWC24WorkP->dlHeader, sizeof(NWC24DlHeader), file);
    if (result < 0) {
        return result;
    }

    return NWC24_OK;
}

static void InitTaskEntryHeader(u16 i) {
    memset(GetDlTaskEntryHeader(i), 0, sizeof(NWC24DlEntry));
}

static NWC24Err LoadDlTask(NWC24DlTask* task, u16 i) {
    NWC24File file;
    NWC24Err result;
    NWC24Err close;
    NWC24Err ret;

    result = NWC24FOpen(&file, DLFilePath, NWC24_OPEN_NAND_RBUFF);
    if (result < 0) {
        return result;
    }

    result = ReadDlTaskEntry(task, i, &file);
    close = NWC24FClose(&file);

    if (result != NWC24_OK) {
        ret = result;
    } else {
        ret = close;
    }

    return ret;
}

static NWC24Err DeleteDlTask(NWC24DlTask* task) {
    NWC24File file;
    NWC24Err result;
    NWC24Err close;
    NWC24Err ret;

    result = NWC24FOpen(&file, DLFilePath, NWC24_OPEN_NAND_RW);
    if (result < 0) {
        return result;
    }

    result = ClearDlTaskEntry(task->id, &file);
    if (result >= 0) {
        InitTaskEntryHeader(task->id);
        result = WriteDlHeader(&file);
    }

    close = NWC24FClose(&file);

    if (result != NWC24_OK) {
        ret = result;
    } else {
        ret = close;
    }

    return ret;
}

static NWC24Err CheckHeader(NWC24DlHeader* header) {
    // @bug Should be maxTasks
    if (header->maxSubTasks < 1 || header->privateTasks < 1 ||
        header->maxSubTasks < header->privateTasks) {
        return NWC24_ERR_BROKEN;
    }

    return NWC24_OK;
}


# Copyright (C) 2024-present Naver Corporation. All rights reserved.
# Licensed under CC BY-NC-SA 4.0 (non-commercial use only).
#
# --------------------------------------------------------
# global alignment optimization wrapper function
# --------------------------------------------------------
from enum import Enum

from .optimizer import PointCloudOptimizer
from .modular_optimizer import ModularPointCloudOptimizer
from .pair_viewer import PairViewer

class GlobalAlignerMode(Enum):
    PointCloudOptimizer = "PointCloudOptimizer"
    ModularPointCloudOptimizer = "ModularPointCloudOptimizer"
    PairViewer = "PairViewer"

def global_aligner(dust3r_output, device, mode=GlobalAlignerMode.PointCloudOptimizer, **optim_kw):
    # extract all inputs
    view1, view2, pred1, pred2 = [dust3r_output[k] for k in 'view1 view2 pred1 pred2'.split()]
    # build the optimizer
    if mode == GlobalAlignerMode.PointCloudOptimizer:
        net = PointCloudOptimizer(view1, view2, pred1, pred2, **optim_kw).to(device)
    elif mode == GlobalAlignerMode.ModularPointCloudOptimizer:
        net = ModularPointCloudOptimizer(view1, view2, pred1, pred2, **optim_kw).to(device)
    elif mode == GlobalAlignerMode.PairViewer:
        net = PairViewer(view1, view2, pred1, pred2, **optim_kw).to(device)
    else:
        raise NotImplementedError(f'Unknown mode {mode}')

    return net


 value of the first item
     */
    peek(): T | undefined {
        if (this.stack02.isEmpty()) {
            this.moveItemsToSecondStack();
        }

        return this.stack02.peek();
    }

    /**
     * tells if the queue is empty
     */
    isEmpty(): boolean {
        return this.stack01.isEmpty() && this.stack02.isEmpty();
    }

    /**
     * returns the length of the queue
     */
    get length(): number {
        return this.stack01.length + this.stack02.length;
    }

    /**
     * prints the queue
     */
    print(): void {
        this.stack01.print();
        this.stack02.print();
    }

    /**
     * moves the items from the first stack to the second one
     * @time O(n)
     */
    private moveItemsToSecondStack(): void {
        while (!this.stack01.isEmpty()) {
            const value = this.stack01.pop();

            if (value) {
                this.stack02.push(value);
            }
        }
    }
}
import { pipe } from "@effect-ts/core/Function"
import * as S from "@effect-ts/core/Show"

import { mapRecord, projectFieldWithEnv } from "../..//Utils"
import type { ObjectURI } from "../../Algebra/Object"
import { interpreter } from "../../HKT"
import { showApplyConfig, ShowType, ShowURI } from "../base"

const asPartial = <T>(x: ShowType<T>): ShowType<Partial<T>> => x as any

const showOrUndefined = <A>(s: S.Show<A>): S.Show<A | undefined> => ({
  show: (x) => (x == null ? "undefined" : s.show(x))
})

export const showObjectInterpreter = interpreter<ShowURI, ObjectURI>()(() => ({
  _F: ShowURI,
  interface: (props, config) => (env) =>
    new ShowType(
      pipe(projectFieldWithEnv(props, env)("show"), (show) =>
        showApplyConfig(config?.conf)(S.struct(show) as any, env, {
          show: show as any
        })
      )
    ),
  partial: (props, config) => (env) =>
    asPartial(
      new ShowType(
        pipe(projectFieldWithEnv(props, env)("show"), (show) =>
          showApplyConfig(config?.conf)(
            S.struct(mapRecord(show, showOrUndefined)) as any,
            env,
            {
              show: show as any
            }
          )
        )
      )
    ),
  both: (props, partial, config) => (env) =>
    new ShowType(
      pipe(projectFieldWithEnv(props, env)("show"), (show) =>
        pipe(projectFieldWithEnv(partial, env)("show"), (showPartial) =>
          showApplyConfig(config?.conf)(
            S.struct({
              ...show,
              ...mapRecord(showPartial, showOrUndefined)
            } as any),
            env,
            {
              show: show as any,
              showPartial: showPartial as any
            }
          )
        )
      )
    ) as any
}))
import {BasicInterface} from './basic_interface';

/**
 * Simple class used for testing
 */
export class BasicClass implements BasicInterface {
  value = true;
  returnsString() {
    return '';
  }
  returnsObject() {
    return new BasicClass();
  }
}
import { PluginData } from '@koishijs/plugin-manager/src'
import { store } from '@koishijs/client'
import { Dict } from 'koishi'
import { computed } from 'vue'

export interface Node extends PluginData {
  id: string


"""
铃兰小姐是我们的光！
请保佑代码永远不出bug吧！
"""
from PySide6.QtCore import Qt,QTime,QTimer,QThread,Signal
import os
import random
import time
import blind_watermark as bw
import command
import videoprocess
import core
import cv2
import shutil
import json

recoverdata={}
def initial():
    """
    准备相应文件夹与工作环境
    :return:
    """
    if os.path.exists("processframe"):
        pass
    else:
        os.mkdir("processframe")
    if os.listdir("processframe")!=[]:
        for i in os.listdir("processframe"):
            os.remove("processframe/"+i)
    if os.path.exists("processedframe"):
        pass
    else:
        os.mkdir("processedframe")
    if os.listdir("processedframe")!=[]:
        for i in os.listdir("processedframe"):
            os.remove("processedframe/"+i)
    if os.path.exists("origin"):
        pass
    else:
        os.mkdir("origin")
    if os.listdir("origin") != []:
        for i in os.listdir("origin"):
            os.remove("origin/" + i)
    if os.path.exists("result"):
        pass
    else:
        os.mkdir("result")
    if os.path.exists("recoverresult"):
        pass
    else:
        os.mkdir("recoverresult")
    if os.path.exists("recover"):
        pass
    else:
        os.mkdir("recover")
    if os.listdir("recover")!=[]:
        for i in os.listdir("recover"):
            os.remove("recover/"+i)
    try:
        os.remove("progress.json")
    except:
        pass

def process(watermark,
            video,
            filename,
            sen=0,
            sampletimes=5,
            peroid=1,
            filetype=".png",
            kbps=10000,
            maxkbps=25000,
            videotype=".mp4",
            outputtype="video",
            processtype="image",
            watermarkquality=35,
            ):
    """
    主处理函数
    :param watermark:水印内容
    :param video: 输入视频
    :param filename: 输出视频名
    :param sen: 分辨率，留空默认为输入分辨率
    :param sampletimes: 取样次数
    :param peroid: 取样个数增量
    :param filetype: 抽帧文件类型
    :param quality: 文件质量
    :param videotype: 输出视频格式
    :param watermarkquality:水印质量，建议为30，如果视频压制更厉害需要相应提高
    :return:是否成功
    """
    try:
        progressbar({'cent': 0, 'operation': '初始化...'})
        seed=[]
        for tim in range(2):
            seed.append(random.randint(1,9999))
        seed.append(watermarkquality)
    #生成随机种子用于水印合成
        stats = os.stat(video) #获取视频元数据
        initial() #初始化
        progressbar({'cent':10,'operation':'初始化已完成'})
        if os.path.exists("result/"+str(filename)):
            shutil.rmtree("result/"+str(filename))#防止项目同名
        videoc = cv2.VideoCapture(str(video))
        frame_count = int(videoc.get(cv2.CAP_PROP_FRAME_COUNT))
        fps = int(videoc.get(cv2.CAP_PROP_FPS))
        # 获取视频的宽度（单位：像素）
        width = videoc.get(cv2.CAP_PROP_FRAME_WIDTH)

        # 获取视频的高度（单位：像素）
        height = videoc.get(cv2.CAP_PROP_FRAME_HEIGHT)
        sen1=str(str(int(width))+"x"+str(int(height)))
        if sen==0: #自动获取分辨率
            sen=sen1
        videoc.release()
        progressbar({'cent': 10, 'operation': '提取原视频，此操作会耗费一定时间'})
        command.extractall(video,filetype) #提取原视频中所有帧
        progressbar({'cent': 35, 'operation': '提取完成，进行水印处理，如果你的采样数很多，这一步也会花费相当时间'})
        print("原视频提取成功")
        samplelist = videoprocess.sampler(video,sampletimes,peroid) #采样
        videoprocess.extract_frames(video,samplelist,filetype=filetype) #抽帧
        processlist = os.listdir("processframe") #进行水印处理
        for fil in processlist:
            if processtype=="text":
                len = str(core.encodewatermark_text(watermark, fil))
            else:
                imlen = core.encodewatermark_image(str(fil),str(watermark),seed)
            shutil.copy("processedframe/"+fil, "origin")#进行帧替换
        print(processlist,"处理已完成")
        progressbar({'cent': 60, 'operation': '处理完成，正在进行文件输出'})
        audextst = command.extractaudio(video) #提取原视频音频
        if not os.path.exists("origin/" + str(os.path.basename(video)) + ".aac"):
            print("视频无音频！")
        if outputtype=="video": #进行视频合成
            command.output(origin=video,video=filename,fps=fps,sen=sen,kbps=kbps,maxkbps=maxkbps,mtype=filetype,vtype=videotype,audstate=os.path.exists("origin/" + str(os.path.basename(video)) + ".aac"))
        os.mkdir("result/"+str(filename))
        print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
        nowtime=str(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))#获取当前时间
        version=str(bw.version.__version__) #获取版本呢


t is zero.
    if (_neg) throw new RangeError.range(this, 0, null);
    assert(_DIGIT_BITS == 32);  // Otherwise this code needs to be revised.
    var shift;
    if ((_used > 2) || ((_used == 2) && (_digits[1] > 0x10000000))) {
      if (other < 0) {
        return -1;
      } else {
        return 0;
      }
    } else {
      shift = ((_used == 2) ? (_digits[1] << _DIGIT_BITS) : 0) + _digits[0];
    }
    return other._toBigint()._rShift(shift)._toValidInt();
  }

  // This method must support smi._toBigint()._bitShlFromInteger(int).
  // An out of memory exception is thrown if the result cannot be allocated.
  int _bitShlFromInteger(other) {
    if (_used == 0) return other;  // Shift amount is zero.
    if (_neg) throw new RangeError.range(this, 0, null);
    assert(_DIGIT_BITS == 32);  // Otherwise this code needs to be revised.
    var shift;
    if (_used > 2 || (_used == 2 && _digits[1] > 0x10000000)) {
      if (other == 0) return 0;  // Shifted value is zero.
      throw new OutOfMemoryError();
    } else {
      shift = ((_used == 2) ? (_digits[1] << _DIGIT_BITS) : 0) + _digits[0];
    }
    return other._toBigint()._lShift(shift)._toValidInt();
  }

  num operator +(other) {
    return other._toBigintOrDouble()._addFromInteger(this);
  }

  num operator -(other) {
    return other._toBigintOrDouble()._subFromInteger(this);
  }

  num operator *(other) {
    return other._toBigintOrDouble()._mulFromInteger(this);
  }

  num operator ~/(other) {
    return other._toBigintOrDouble()._truncDivFromInteger(this);
  }

  num operator /(other) {
    return other.toDouble()._divFromInteger(this);
  }

  num operator %(other) {
    return other._toBigintOrDouble()._modFromInteger(this);
  }

  int operator &(other) {
    return other._toBigintOrDouble()._bitAndFromInteger(this);
  }

  int operator |(other) {
    return other._toBigintOrDouble()._bitOrFromInteger(this);
  }

  int operator ^(other) {
    return other._toBigintOrDouble()._bitXorFromInteger(this);
  }

  int operator >>(other) {
    return other._toBigintOrDouble()._bitShrFromInteger(this);
  }

  int operator <<(other) {
    return other._toBigintOrDouble()._bitShlFromInteger(this);
  }

  int operator -() {
    return _negate()._toValidInt();
  }

  bool operator ==(other) {
    return other._toBigintOrDouble()._compare(this) == 0;
  }

  bool operator >(other) {
    return other._toBigintOrDouble()._compare(this) < 0;
  }

  bool operator <(other) {
    return other._toBigintOrDouble()._compare(this) > 0;
  }

  bool operator >=(other) {
    return other._toBigintOrDouble()._compare(this) <= 0;
  }

  bool operator <=(other) {
    return other._toBigintOrDouble()._compare(this) >= 0;
  }


{} > {})",
                v,
                zx::sys::ZX_CHANNEL_MAX_MSG_HANDLES
            ),
        }
    }
}

const ZX_PROCARGS_PROTOCOL: u32 = 0x4150585d;
const ZX_PROCARGS_VERSION: u32 = 0x00001000;

/// Header for bootstrap message following the processargs protocol.
#[derive(FromBytes, AsBytes, Default)]
#[repr(C)]
pub(crate) struct MessageHeader {
    // Protocol and version identifiers to allow for different process start message protocols and
    // versioning of the same.
    pub protocol: u32,
    pub version: u32,

    // Offset from start of message to handle info array, which contains one HandleInfo as a u32
    // per handle passed along with the message.
    pub handle_info_off: u32,

    // Offset from start of message to arguments and count of arguments. Arguments are provided as
    // a set of null-terminated UTF-8 strings, one after the other.
    pub args_off: u32,
    pub args_num: u32,

    // Offset from start of message to environment strings and count of them.  Environment entries
    // are provided as a set of null-terminated UTF-8 strings, one after the other. Canonically
    // each string has the form "NAME=VALUE", but nothing enforces this.
    pub environ_off: u32,
    pub environ_num: u32,

    // Offset from start of message to namespace path strings and count of them. These strings are
    // packed similar to the argument strings, but are referenced by NamespaceDirectory (PA_NS_DIR)
    // handle table entries and used to set up namespaces.
    //
    // Specifically: In a handle table entry with HandleType of NamespaceDirectory (PA_NS_DIR), the
    // u16 handle info argument is an index into this name table.
    names_off: u32,
    names_num: u32,
}

/// A container for a single startup handle, containing a handle and metadata. Used as an input to
/// [ProcessBuilder::add_handles()].
///
/// [ProcessBuilder::add_handles()]: crate::ProcessBuilder::add_handles()
pub struct StartupHandle {
    /// A handle.
    pub handle: zx::Handle,

    /// Handle metadata. See [fuchsia_runtime::HandleInfo].
    pub info: HandleInfo,
}

#[derive(Default)]
pub struct MessageContents {
    pub args: Vec<CString>,
    pub environment_vars: Vec<CString>,
    pub namespace_paths: Vec<CString>,
    pub handles: Vec<StartupHandle>,
}

/// A bootstrap message following the processargs protocol.
///
/// See [//docs/zircon/program_loading.md#The-processargs-protocol][program_loading.md] or
/// [//zircon/system/public/zircon/processargs.h][processargs] for more details.
///
/// [program_loading.md]: https://fuchsia.dev/fuchsia-src/concepts/booting/program_loading#The-processargs-protocol
/// [processargs]: https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/public/zircon/processargs.h
pub struct Message {
    bytes: Vec<u8>,
    handles: Vec<zx::Handle>,
}

// Return type of fuchsia_runtime::HandleInfo::as_raw(), checked with static assert below.
type HandleInfoRaw = u32;

impl Message {
    /// Create a new bootstrap message using the given contents.
    pub fn build(contents: MessageContents) -> Result<Message, ProcessargsError> {
        let (header, size) = Self::build_header(&contents)?;

        let mut data = Vec::with_capacity(size);
        data.extend_from_slice(header.as_bytes());

        // Sanity check length against the offsets in the header as we go. Failures are bugs in
        // this code and serious enough to panic rather than continue, hence the asserts rather
        // than returning an


pagate a Window PoSt proof.
var WPoStChallengeWindow = abi.ChainEpoch(30 * 60 / builtin.EpochDurationSeconds) // 30 minutes (48 per day) PARAM_SPEC

// WPoStDisputeWindow is the period after a challenge window ends during which
// PoSts submitted during that period may be disputed.
var WPoStDisputeWindow = 2 * ChainFinality // PARAM_SPEC

// The number of non-overlapping PoSt deadlines in a proving period.
// This spreads a miner's Window PoSt work across a proving period.
const WPoStPeriodDeadlines = uint64(48) // PARAM_SPEC

// MaxPartitionsPerDeadline is the maximum number of partitions that will be assigned to a deadline.
// For a minimum storage of upto 1Eib, we need 300 partitions per deadline.
// 48 * 32GiB * 2349 * 300 = 1.00808144 EiB
// So, to support upto 10Eib storage, we set this to 3000.
const MaxPartitionsPerDeadline = 3000

func init() {
	// Check that the challenge windows divide the proving period evenly.
	if WPoStProvingPeriod%WPoStChallengeWindow != 0 {
		panic(fmt.Sprintf("incompatible proving period %d and challenge window %d", WPoStProvingPeriod, WPoStChallengeWindow))
	}
	// Check that WPoStPeriodDeadlines is consistent with the proving period and challenge window.
	if abi.ChainEpoch(WPoStPeriodDeadlines)*WPoStChallengeWindow != WPoStProvingPeriod {
		panic(fmt.Sprintf("incompatible proving period %d and challenge window %d", WPoStProvingPeriod, WPoStChallengeWindow))
	}

	// Check to make sure the dispute window is longer than finality so there's always some time to dispute bad proofs.
	if WPoStDisputeWindow <= ChainFinality {
		panic(fmt.Sprintf("the proof dispute period %d must exceed finality %d", WPoStDisputeWindow, ChainFinality))
	}

	// A deadline becomes immutable one challenge window before it's challenge window opens.
	// The challenge lookback must fall within this immutability period.
	if WPoStChallengeLookback > WPoStChallengeWindow {
		panic("the challenge lookback cannot exceed one challenge window")
	}

	// Deadlines are immutable when the challenge window is open, and during
	// the previous challenge window.
	immutableWindow := 2 * WPoStChallengeWindow

	// We want to reserve at least one deadline's worth of time to compact a
	// deadline.
	minCompactionWindow := WPoStChallengeWindow

	// Make sure we have enough time in the proving period to do everything we need.
	if (minCompactionWindow + immutableWindow + WPoStDisputeWindow) > WPoStProvingPeriod {
		panic(fmt.Sprintf("together, the minimum compaction window (%d) immutability window (%d) and the dispute window (%d) exceed the proving period (%d)",
			minCompactionWindow, immutableWindow, WPoStDisputeWindow, WPoStProvingPeriod))
	}
}

// The maximum number of partitions that can be loaded in a single invocation.
// This limits the number of simultaneous fault, recovery, or sector-extension declarations.
// We set this to same as MaxPartitionsPerDeadline so we can process that many partitions every deadline.
const AddressedPartitionsMax = MaxPartitionsPerDeadline

// Maximum number of unique "declarations" in batch operations.
const DeclarationsMax = AddressedPartitionsMax

// The maximum number of sector infos


,0x50,0x9e,0x5c,0x82,0x40]
vfnmsub132pd 512(%rdx,%rax,4){1to8}, %zmm19, %zmm19

// CHECK: vfnmsub132pd -512(%rdx,%rax,4){1to8}, %zmm19, %zmm19
// CHECK: encoding: [0x62,0xe2,0xe5,0x50,0x9e,0x5c,0x82,0xc0]
vfnmsub132pd -512(%rdx,%rax,4){1to8}, %zmm19, %zmm19

// CHECK: vfnmsub132pd 512(%rdx,%rax,4){1to8}, %zmm19, %zmm19 {%k2}
// CHECK: encoding: [0x62,0xe2,0xe5,0x52,0x9e,0x5c,0x82,0x40]
vfnmsub132pd 512(%rdx,%rax,4){1to8}, %zmm19, %zmm19 {%k2}

// CHECK: vfnmsub132pd -512(%rdx,%rax,4){1to8}, %zmm19, %zmm19 {%k2}
// CHECK: encoding: [0x62,0xe2,0xe5,0x52,0x9e,0x5c,0x82,0xc0]
vfnmsub132pd -512(%rdx,%rax,4){1to8}, %zmm19, %zmm19 {%k2}

// CHECK: vfnmsub132pd 512(%rdx,%rax,4){1to8}, %zmm19, %zmm19 {%k2} {z}
// CHECK: encoding: [0x62,0xe2,0xe5,0xd2,0x9e,0x5c,0x82,0x40]
vfnmsub132pd 512(%rdx,%rax,4){1to8}, %zmm19, %zmm19 {%k2} {z}

// CHECK: vfnmsub132pd -512(%rdx,%rax,4){1to8}, %zmm19, %zmm19 {%k2} {z}
// CHECK: encoding: [0x62,0xe2,0xe5,0xd2,0x9e,0x5c,0x82,0xc0]
vfnmsub132pd -512(%rdx,%rax,4){1to8}, %zmm19, %zmm19 {%k2} {z}

// CHECK: vfnmsub132pd {rd-sae}, %zmm19, %zmm19, %zmm19
// CHECK: encoding: [0x62,0xa2,0xe5,0x30,0x9e,0xdb]
vfnmsub132pd {rd-sae}, %zmm19, %zmm19, %zmm19

// CHECK: vfnmsub132pd {rd-sae}, %zmm19, %zmm19, %zmm19 {%k2}
// CHECK: encoding: [0x62,0xa2,0xe5,0x32,0x9e,0xdb]
vfnmsub132pd {rd-sae}, %zmm19, %zmm19, %zmm19 {%k2}

// CHECK: vfnmsub132pd {rd-sae}, %zmm19, %zmm19, %zmm19 {%k2} {z}
// CHECK: encoding: [0x62,0xa2,0xe5,0xb2,0x9e,0xdb]
vfnmsub132pd {rd-sae}, %zmm19, %zmm19, %zmm19 {%k2} {z}

// CHECK: vfnmsub132pd (%rdx){1to8}, %zmm19, %zmm19
// CHECK: encoding: [0x62,0xe2,0xe5,0x50,0x9e,0x1a]
vfnmsub132pd (%rdx){1to


};

export = hookedElements;
import Operation from './Operation';

export default class Substraction extends Operation {
  public sign = '-';

  public color = '#800060';

  protected generateDigits(level: number): void {
    this.digit1 = Operation.rand(10 * level, 20 * level);
    this.digit2 = Operation.rand(1, this.digit1);
    this.stars = 1;
    if (this.digit1 >= 20 && this.digit2 >= 20) {
      this.stars = (this.digit1 % 10 === 0 || this.digit2 % 10 === 0) ? 2 : 3;
    } else if (this.digit1 >= 10 && this.digit2 >= 10) {
      this.stars = (this.digit1 % 10 === 0 || this.digit2 % 10 === 0) ? 1 : 2;
    } else {
      this.stars = 1;
    }
  }

  public get result(): number {
    return this.digit1 - this.digit2;
  }
}
import { SubjectTreeNode } from "./SubjectTreeNode";

describe("SubjectTreeNode tests", () => {
    it("getCodeList produces a space-delimited string of codes from an array of SubjectTreeNodes", () => {
        const list: Array<SubjectTreeNode> = [];
        const sub1: SubjectTreeNode = {
            value: "MNP",
            label: "Plastic & reconstructive surgery",
            notes: "some notes",
            checked: false,
            children: []
        };
        const sub2: SubjectTreeNode = {
            value: "THV",
            label: "Alternative & renewable energy sources & technology",
            notes: "some notes",
            checked: false,
            children: []
        };
        const sub3: SubjectTreeNode = {
            value: "Y",
            label: "Children’s, Teenage & Educational",
            notes: "some notes",
            checked: false,
            children: []
        };
        list.push(sub1);
        list.push(sub2);
        list.push(sub3);

        // SUT
        const result = SubjectTreeNode.getCodeList(list);

        // verify
        expect(result).toBe("MNP THV Y");
    });

    it("markSelectedSubjectNodes accomplishes its job selecting the correct nodes", () => {
        const list: Array<SubjectTreeNode> = [];
        const sub1: SubjectTreeNode = {
            value: "MNP",
            label: "Plastic & reconstructive surgery",
            notes: "some notes",
            checked: false,
            children: []
        };
        const sub2: SubjectTreeNode = {
            value: "THV",
            label: "Alternative & renewable energy sources & technology",
            notes: "some notes",
            checked: false,
            children: []
        };
        const sub3: SubjectTreeNode = {
            value: "Y",
            label: "Children’s, Teenage & Educational",
            notes: "some notes",
            checked: false,
            children: []
        };
        list.push(sub1);
        list.push(sub2);
        list.push(sub3);

        const curSub1: SubjectTreeNode = {
            value: "THV",
            label: "Alternative & renewable energy sources & technology"
        };
        const curSub2: SubjectTreeNode = {
            value: "Y",
            label: "Children’s, Teenage & Educational"
        };
        const currentNodes: Array<SubjectTreeNode> = [];
        currentNodes.push(curSub1);
        currentNodes.push(curSub2);

        // SUT
        SubjectTreeNode.markSelectedSubjectNodes(list, currentNod


// it unifies all the steps of Api, AChi and AIota: AIota[i][j] = 2*APi[i][j] +
// APi[i+1][j] +3* APi[i+2][j]+2*RC+2*Block (RC is from AIota, APi is obtained
// from ARho by shifting the selected columns). By extension, the step is also
// responsible for handling the XORIN of the block of the next permutation if
// there is. The incoming block of data is given in base B and in clean form.
// When not needed, (for instance, when we are in the middle of the 24 sponge
// rounds), the block is assumed to be zeroed.
func (c *piChiIota) csAIota(
	comp *wizard.CompiledIOP,
	round int,
	l lookUpTables,
	mod Module,
) {
	aRho := mod.Rho.ARho
	blockBaseB := mod.Blocks

	two := symbolic.NewConstant(2)
	three := symbolic.NewConstant(3)
	d := ifaces.ColumnAsVariable(l.RC.Natural).
		Mul(two).
		Mul(ifaces.ColumnAsVariable(mod.IsActive))

	for x := 0; x < 5; x++ {
		for y := 0; y < 5; y++ {

			aIotaPart := ifaces.ColumnAsVariable(c.AIotaBaseB[y][(2*x+3*y)%5])
			aPiPart := ifaces.ColumnAsVariable(aRho[x][y]).Mul(two).
				Add(ifaces.ColumnAsVariable(aRho[(x+1)%5][(y+1)%5])).
				Add(ifaces.ColumnAsVariable(aRho[(x+2)%5][(y+2)%5]).Mul(three))

			// Applies the IOTA part but only on the 0x0 entry
			if x == 0 && y == 0 {
				aPiPart = aPiPart.Add(d)
			}

			// XorIn the next block if the current lane is concerned. m will
			// correspond to the position in the block if it is smaller than
			// LanesInBlock. Since Aiota is shifted by the (x, y) -> (y, 2x+3y)
			// map, it must be accounted for in the constraint.
			xiota, yiota := y, (2*x+3*y)%5
			m := 5*yiota + xiota
			if m < numLanesInBlock { // 17 is the number of keccak lanes in a block
				aPiPart = symbolic.Add(aPiPart, symbolic.Mul(
					symbolic.Mul(blockBaseB[m], mod.IO.IsBlockBaseB), 2))
			}

			comp.InsertGlobal(
				round,
				ifaces.QueryIDf("KECCAKF_API_TO_AIOTA_%v_%v", x, y),
				aIotaPart.Sub(aPiPart),
			)
		}
	}
}

// it backs to (clean) BaseA (original form of state), slice by slice
func (c *piChiIota) csBaseBToBaseA(comp *wizard.CompiledIOP, round int, l lookUpTables) {
	for x := 0; x < 5; x++ {
		for y := 0; y < 5; y++ {

			// Enforces that the decomposition in slice of 4 bits of aIota is correctly done.
			expr := ifaces.ColumnAsVariable(c.AIotaBaseB[x][y]).
				Sub(BaseRecomposeSliceHandles(c.AIotaBaseBSliced[x][y][:], BaseB))
			name := ifaces.QueryIDf("AIOTA_DECOMPOSITION_%v_%v", x, y)
			comp.InsertGlobal(round, name, expr)

			// Enforces the correctness of the base conversion slice by slice
			for k := 0; k < numSlice; k++ {
				name := iface


        }

        value                   = name;
        value[next_path - name] = 0;
        name                    = next_path + 1;

        // add it to the entry
        keyValues[key] = value;

        strcat(full_filename, key.c_str());
        strcat(full_filename, "|");
        strcat(full_filename, value.c_str());
        strcat(full_filename, "|");
    }

    Q_strncpyz(filename, name, sizeof(filename));
    FS_CanonicalFilename(filename);
    Q_strcat(full_filename, sizeof(full_filename), filename);

    if (!tikicache) {
        tikicache = new con_map<pchar, dtiki_t *>;
    } else {
        dtiki_t **t;

        t = tikicache->find(full_filename);
        if (t) {
            return *t;
        }
    }

    tikianim = TIKI_RegisterTikiAnimFlags(filename, use);
    if (tikianim) {
        tiki = TIKI_LoadTikiModel(tikianim, full_filename, &keyValues);
        if (tiki) {
            // cache the tiki
            (*tikicache)[tiki->name] = tiki;
        }
    }

    return tiki;
}

/*
===============
TIKI_RegisterTiki
===============
*/
dtiki_t *TIKI_RegisterTiki(const char *path)
{
    return TIKI_RegisterTikiFlags(path, qfalse);
}

/*
===============
TIKI_FreeAll
===============
*/
void TIKI_FreeAll()
{
    dtiki_t     **entry;
    dtikianim_t **entryanim;
    dtiki_t      *tiki;
    dtikianim_t  *tikianim;
    int           i;

    if (tikicache) {
        con_map_enum<pchar, dtiki_t *> en = *tikicache;

        for (entry = en.NextValue(); entry != NULL; entry = en.NextValue()) {
            skeletor_c *skeletor;

            tiki     = *entry;
            skeletor = (skeletor_c *)tiki->skeletor;
            if (skeletor) {
                delete skeletor;
            }

            tiki->m_boneList.CleanUpChannels();
            // Fixed in OPM
            //  It's better to free aliases when actually clearing the anim cache
            /*
            if (tiki->a->m_aliases) {
                TIKI_Free(tiki->a->m_aliases);
                tiki->a->m_aliases = NULL;
                tiki->a->num_anims = 0;
            }
            */

            TIKI_Free(tiki);
        }

        tikicache->clear();
    }

    if (tikianimcache) {
        con_map_enum<pchar, dtikianim_t *> en = *tikianimcache;

        for (entryanim = en.NextValue(); entryanim != NULL; entryanim = en.NextValue()) {
            tikianim = *entryanim;

            TIKI_RemoveTiki(tikianim);

            // Fixed in OPM
            //  Each tikianim should free their aliases
            if (tikianim->m_aliases) {
                TIKI_Free(tikianim->m_aliases);
                tikianim->m_aliases = NULL;
                tikianim->num_anims = 0;
            }

            TIKI_Free(tikianim);
        }

        tikianimcache->clear();
    }

    tiki_loading = true;

    for (i = 0; i < cache_maxskel; i++) {
        if (skelcache[i].skel) {


rentColor",d:"m249.6 417.088 319.744 43.072 39.168 310.272L845.12 178.88 249.6 417.088zm-129.024 47.168a32 32 0 0 1-7.68-61.44l777.792-311.04a32 32 0 0 1 41.6 41.6l-310.336 775.68a32 32 0 0 1-61.44-7.808L512 516.992l-391.424-52.736z"})]))}}),ple=dle;const fle=window.Vue.defineComponent,lv=window.Vue.createElementVNode,mle=window.Vue.openBlock,hle=window.Vue.createElementBlock;var gle=fle({name:"Postcard",__name:"postcard",setup(e){return(t,n)=>(mle(),hle("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[lv("path",{fill:"currentColor",d:"M160 224a32 32 0 0 0-32 32v512a32 32 0 0 0 32 32h704a32 32 0 0 0 32-32V256a32 32 0 0 0-32-32zm0-64h704a96 96 0 0 1 96 96v512a96 96 0 0 1-96 96H160a96 96 0 0 1-96-96V256a96 96 0 0 1 96-96"}),lv("path",{fill:"currentColor",d:"M704 320a64 64 0 1 1 0 128 64 64 0 0 1 0-128M288 448h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32m0 128h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32"})]))}}),_le=gle;const vle=window.Vue.defineComponent,ble=window.Vue.createElementVNode,Cle=window.Vue.openBlock,Ele=window.Vue.createElementBlock;var yle=vle({name:"Pouring",__name:"pouring",setup(e){return(t,n)=>(Cle(),Ele("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ble("path",{fill:"currentColor",d:"m739.328 291.328-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0 0 35.776-380.672zM959.552 480a256 256 0 0 1-256 256h-400A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 959.552 480M224 800a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32"})]))}}),wle=yle;const Sle=window.Vue.defineComponent,E6=window.Vue.createElementVNode,Mle=window.Vue.openBlock,xle=window.Vue.createElementBlock;var Ale=Sle({name:"Present",__name:"present",setup(e){return(t,n)=>(Mle(),xle("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[E6("path",{fill:"currentColor",d:"M480 896V640H192v-64h


        T: FromStr<Err = ParseIntError>
{
    Ok( (s, T::from_str(m)?) )
}

pub fn map_parse_float<'s, 'm, T>( (s, m): (&'s str, &'m str) ) -> Result<(&'s str, T), DecodeError>
    where
        T: FromStr<Err = ParseFloatError>
{
    Ok( (s, T::from_str(m)?) )
}

<gh_stars>0
mod day_1;
mod day_2;
mod day_3;
mod day_4;
mod day_5;
mod day_6;
mod day_7;
mod day_8;
mod day_9;
mod day_10;
mod day_11;
mod day_12;
mod day_13;
mod day_14;
mod day_15;
mod day_16;

use clap::{App, Arg};

pub fn main() {
    let matches = App::new("Advent of Code 2021")
        .version("0.1.0")
        .author("<NAME> <<EMAIL>>")
        .about("My solutions to the Advent of Code 2021 - see https://adventofcode.com/2021")
        .arg(Arg::with_name("day")
            .long("day")
            .short("d")
            .required(true)
            .takes_value(true)
            .help("Which day of the advent to run"))
        .get_matches();

    let day = matches.value_of("day").unwrap();
    println!("Running solutions for day {}", &day);
    match day {
        "1" => { day_1::run() },
        "2" => { day_2::run() },
        "3" => { day_3::run() },
        "4" => { day_4::run() },
        "5" => { day_5::run() },
        "6" => { day_6::run() },
        "7" => { day_7::run() },
        "8" => { day_8::run() },
        "9" => { day_9::run() },
        "10" => { day_10::run() },
        "11" => { day_11::run() },
        "12" => { day_12::run() },
        "13" => { day_13::run() },
        "14" => { day_14::run() },
        "15" => { day_15::run() },
        "16" => { day_16::run() },
        _ => { todo!("This day isn't implemented (yet)") },
    };
}
<reponame>CIPop/iotedge
// Copyright (c) Microsoft. All rights reserved.

#![deny(rust_2018_idioms, warnings)]
#![deny(clippy::all, clippy::pedantic)]
#![allow(clippy::module_name_repetitions, clippy::use_self)]

mod client;
mod config;
mod error;
mod module;
mod runtime;

pub use config::DockerConfig;
pub use error::{Error, ErrorKind};
pub use module::{DockerModule, MODULE_TYPE};

pub use runtime::DockerModuleRuntime;
<filename>ssclient/src/tcp_io/aead.rs
//! AEAD packet I/O facilities
//!
//! AEAD protocol is defined in https://shadowsocks.org/en/spec/AEAD.html.
//!
//! ```plain
//! TCP request (before encryption)
//! +------+---------------------+------------------+
//! | ATYP | Destination Address | Destination Port |
//! +------+---------------------+------------------+
//! |  1   |       Variable      |         2        |
//! +------+---------------------+------------------+
//!
//! TCP request (after encryption, *ciphertext*)
//! +--------+--------------+------------------+--------------+---------------+
//! | NONCE  |  *HeaderLen* |   HeaderLen_TAG  |   *Header*   |  Header_TAG   |
//! +--------+--------------+------------------+--------------+---------------+
//! | Fixed  |       2      |       Fixed      |   Variable   |     Fixed     |
//! +--------+--------------+------------------+--------------+--------------


)
        local stg = card.ability.extra
        if context.joker_main then
            return {
                x_mult = stg.Xmult
            }
        end
    end,
    in_pool = function(self, args)
        return false
    end,
    check_for_unlock = function(self, args)
        return next(SMODS.find_card('j_mxms_crowned'))
    end
}

SMODS.JimboQuip {
    key = 'lq_crowned',
    type = 'loss',
    extra = {
        center = 'j_mxms_crowned',
        times = 1
    }
}

SMODS.JimboQuip {
    key = 'wq_crowned',
    type = 'win',
    extra = { center = 'j_mxms_crowned' }
}


(NumericValue value);

	/**
   * Returns the value of the 'Owned Max Card' containment reference.

   *
	 *

	 * If the meaning of the 'Owned Max Card' containment reference isn't clear,
	 * there really should be more of a description here...
	 *

	 *
   * @return the value of the 'Owned Max Card' containment reference.
   * @see #setOwnedMaxCard(NumericValue)
   * @see org.polarsys.capella.core.data.information.InformationPackage#getMultiplicityElement_OwnedMaxCard()
   * @model containment="true"
   *        annotation="http://www.polarsys.org/capella/2007/UML2Mapping featureName='upperValue' featureOwner='MultiplicityElement'"
   *        annotation="http://www.polarsys.org/capella/2007/BusinessInformation Label='Max Card'"
   *        annotation="http://www.polarsys.org/capella/2007/ImpactAnalysis/Segment"
   *        annotation="http://www.polarsys.org/kitalpha/ecore/documentation description='Specifies the upper bound of the multiplicity interval, if it is expressed as an unlimited natural\r\n[source: UML superstructure v2.2]' constraints='none' comment/notes='none'"
   *        annotation="http://www.polarsys.org/capella/MNoE/CapellaLike/Mapping UML/SysML\040semantic\040equivalences='keyword::specific' explanation='none' constraints='none'"
   *        annotation="http://www.polarsys.org/capella/semantic"
   * @generated
   */

	NumericValue getOwnedMaxCard();

	/**
   * Sets the value of the '{@link org.polarsys.capella.core.data.information.MultiplicityElement#getOwnedMaxCard Owned Max Card}' containment reference.

   *
	 *
   * @param value the new value of the 'Owned Max Card' containment reference.
   * @see #getOwnedMaxCard()
   * @generated
   */

	void setOwnedMaxCard(NumericValue value);

	/**
   * Returns the value of the 'Owned Max Length' containment reference.

   *
	 *

	 * If the meaning of the 'Owned Max Length' containment reference isn't clear,
	 * there really should be more of a description here...
	 *

	 *
   * @return the value of the 'Owned Max Length' containment reference.
   * @see #setOwnedMaxLength(NumericValue)
   * @see org.polarsys.capella.core.data.information.InformationPackage#getMultiplicityElement_OwnedMaxLength()
   * @model containment="true"
   *        annotation="http://www.polarsys.org/capella/2007/UML2Mapping featureName='upperValue' featureOwner='MultiplicityElement'"
   *        annotation="http://www.polarsys.org/capella/2007/BusinessInformation Label='Max Length'"
   *        annotation="http://www.polarsys.org/capella/2007/ImpactAnalysis/Segment"
   *        annotation="http://www.polarsys.org/kitalpha/ecore/documentation description='Specified max length for this element\r\n[source: Capella study]' constraints='none' comment/notes='none'"
   *        annotation="http://www.polarsys.org/capella/MNoE/CapellaLike/Mapping UML/SysML\040semantic\040equivalences='keyword::specific' explanation='none' constraints='Elements on which NumericValue stereotype or any stereotype that inherits from it is applied'"
   *        annotation="http://www.polarsys.org/capella/semantic"
   * @generated
   */

	NumericValue getOwnedMax


f330b0407.jpg)

## 办公

宏观经济环境对办公资产的影响仍在持续，全球空置率达到两位数。利率上调抬高了收购和建设的债务成本，并对潜在回报率造成下行压力。随着建筑物等级成为获得资本和提升资产财务表现越来越重要的决定因素，短期内融资将面临更大挑战。

我们预计，在包括部分亚洲重点城市、地段优越以及现代化和高质量建筑群所在的地区，办公资产需求将保持旺盛，并购交易也将最为活跃。尽管到目前为止，大多数地方员工回归办公室工作的速度慢于预期，但业主们依然对日益增长的回归趋势抱有信心。

在欧洲，建筑物按规定必须达到一定能效，这一法规调整刺激了市场对优质资产的需求。例如，从2023年（荷兰）和2030年（英国）起，办公楼必须拥有能源绩效证书（EPC）C级或以上。随着越来越多的公司致力于实现去碳化，提出明确的净零目标，出租方也做出相应调整，因此，对于采用绿色科技、配备专门设施以改善租户体验的新型办公空间的需求随之上升。

![](https://web-api.textin.com/ocr_image/external/9e7cbe58c4a47f42.jpg)

| Data  | Freq.  | Deviations  | Deviations2  | $(Freq.)(Deviations^{2})$ |
| -- | -- | -- | -- | -- |
| X  | f  | $(x-\overline {x})$ | $(x-\overline {x})^{2}$ | $(f)(x-\overline {x})^{2}$ |
| 9  | 1  | $9-10.525=-1.525$ | $(-1.525)^{2}=2.325625$ | $1\times 2.325625=2.325625$ |
| 9.5  | 2  | $9.5-10.525=-1.025$ | $(-1.025)^{2}=1.050625$ | $2\times 1.050625=2.101250$ |
| 10  | 4  | $10-10.525=-0.525$ | $(-0.525)^{2}=0.275625$ | $4\times 0.275625=1.1025$ |
| 10.5  | 4  | $10.5-10.525=-0.025$ | $(-0.025)^{2}=0.000625$ | $4\times 0.000625=0.0025$ |
| 11  | 6  | $11-10.525=0.475$ | $(0.475)^{2}=0.225625$ | $6\times 0.225625=1.35375$ |
| 11.5  | 3  | $11.5-10.525=0.975$ | $(0.975


content .blog-post-extras .extras .easy-share button[data-easyshare-button] {
    margin-left: 5px;
    width: 30px;
    height: 30px;
    line-height: 30px;
    padding: 0;
    text-align: center;
    background: #f6f6f6;
}

.blog-post .blog-post-content .blog-post-extras .extras .easy-share button[data-easyshare-button] span {
    color: #6c6c6c;
    text-shadow: none;
}

.blog-post .blog-post-content .blog-post-extras .extras .easy-share button[data-easyshare-button]:hover span {
    color: #fff;
}

.blog-post .blog-post-content .blog-post-extras .extras .easy-share button[data-easyshare-button="facebook"]:hover {
    background: #43609C;
}

.blog-post .blog-post-content .blog-post-extras .extras .easy-share button[data-easyshare-button="twitter"]:hover {
    background: #43b3e5;
}

.blog-post .blog-post-content .blog-post-extras .extras .easy-share button[data-easyshare-button="google"]:hover {
    background: #DB4437;
}

.blog-post .blog-post-content .blog-pagination {
    border-top: 1px solid #ececec;
    padding-top: 20px;
}

.blog-post .blog-post-content .blog-pagination a {
    display: inline-block;
    height: 30px;
    line-height: 30px;
    border: 1px solid #ececec;
    background: #f6f6f6;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    -ms-border-radius: 4px;
    border-radius: 4px;
    color: #6c6c6c;
    padding: 0 10px;
    margin-right: 30px;
    font-size: 13px;
    text-transform: capitalize;
}

.blog-post .blog-post-content .blog-pagination a i {
    display: inline-block;
    font-size: inherit;
    color: inherit;
}

.blog-post .blog-post-content .blog-pagination a i.left-arrow {
    margin-right: 10px;
}

.blog-post .blog-post-content .blog-pagination a i.right-arrow {
    margin-left: 10px;
}

.blog-post .blog-post-content .blog-pagination a:hover {
    background: var(--main-theme-color);
    color: #fff;
}

.blog-post .blog-post-content .blog-pagination a:hover i {
    color: #fff;
}

.blog-post-written {
    margin-bottom: 10px;
}

.blog-post-written .media-object {
    margin: 0;
    padding: 20px 0;
}

.blog-post-written .blog-post-author-img {
    border: 1px solid #ececec;
    width: 120px;
    height: 140px;
    padding: 10px;
}

.blog-post-written .blog-post-author-img img {
    width: 100%;
    height: 100%;
}

.blog-post-written .blog-post-author-des p {
    font-size: 13px;
    color: #aaaaaa;
}

/* ==========================================================================
	22- 404 error page
   ========================================================================== */
.error-page {
    margin-bottom: 30px;
}

.error-page .error-page-content {


 E.db[name] then
		E.db[name] = nil
		FadeChatPanel(self, 0.2, 1)
	else
		E.db[name] = true
		FadeChatPanel(self, 0.2, 0)
	end

	if not _G.GameTooltip:IsForbidden() then
		_G.GameTooltip:Hide()
	end
end

-- these are used by the bindings and options
function HideLeftChat()
	ChatButton_OnClick(_G.LeftChatToggleButton)
end

function HideRightChat()
	ChatButton_OnClick(_G.RightChatToggleButton)
end

function HideBothChat()
	ChatButton_OnClick(_G.LeftChatToggleButton)
	ChatButton_OnClick(_G.RightChatToggleButton)
end

function LO:ToggleChatTabPanels(rightOverride, leftOverride)
	if leftOverride or not E.db.chat.panelTabBackdrop then
		_G.LeftChatTab:Hide()
	else
		_G.LeftChatTab:Show()
	end

	if rightOverride or not E.db.chat.panelTabBackdrop then
		_G.RightChatTab:Hide()
	else
		_G.RightChatTab:Show()
	end
end

do
	local function DataPanelStyle(panel, db)
		panel.forcedBorderColors = (db.border == false and {0,0,0,0}) or nil
		panel:SetTemplate(db.backdrop and (db.panelTransparency and 'Transparent' or 'Default') or 'NoBackdrop', true)

		if db.border ~= nil then
			if panel.iborder then panel.iborder:SetShown(db.border) end
			if panel.oborder then panel.oborder:SetShown(db.border) end
		end
	end

	function LO:SetDataPanelStyle()
		DataPanelStyle(_G.LeftChatToggleButton, E.db.datatexts.panels.LeftChatDataPanel)
		DataPanelStyle(_G.RightChatToggleButton, E.db.datatexts.panels.RightChatDataPanel)
	end
end

local barHeight = BAR_HEIGHT + 1
local toggleWidth = TOGGLE_WIDTH + 1
function LO:RefreshChatMovers()
	local LeftChatPanel = _G.LeftChatPanel
	local RightChatPanel = _G.RightChatPanel
	local LeftChatMover = _G.LeftChatMover
	local RightChatMover = _G.RightChatMover

	local Left = LeftChatPanel:GetPoint()
	local Right = RightChatPanel:GetPoint()
	local showRightPanel = E.db.datatexts.panels.RightChatDataPanel.enable
	local showLeftPanel = E.db.datatexts.panels.LeftChatDataPanel.enable
	if not showLeftPanel or E.db.chat.LeftChatDataPanelAnchor == 'ABOVE_CHAT' then
		LeftChatPanel:Point(Left, LeftChatMover, 0, 0)
	elseif showLeftPanel then
		LeftChatPanel:Point(Left, LeftChatMover, 0, barHeight)
	end
	if not showRightPanel or E.db.chat.RightChatDataPanelAnchor == 'ABOVE_CHAT' then
		RightChatPanel:Point(Right, RightChatMover, 0, 0)
	elseif showRightPanel then
		RightChatPanel:Point(Right, RightChatMover, 0, barHeight)
	end

	-- mover sizes: same as in CH.PositionChats for panels but including the datatext bar height
	local panelWidth, panelHeight = E:Scale(E.db.chat.panelWidth), E:Scale(E.db.chat.panelHeight)
	LeftChatMover:SetSize(panelWidth, panelHeight + (showLeftPanel and barHeight or 0))
	if E.db.chat.separateSizes then
		RightChatMover:SetSize(E:Scale(E.db.chat.panelWidthRight), E:Scale(E.db.chat


dict = self.arch_param_tree.to_dict()

        # Mutates parameter with probability `self.mutation_prob`
        mutated_dict = utils.replace_ptree_pair_choices(
            choices_dict,
            model.metadata["config"].to_dict(),
            lambda d_choice, current_choice: (
                self.rng.choice(d_choice.choices) if self.rng.random() < self.mutation_prob else current_choice
            ),
        )

        mutated_config = build_arch_config(mutated_dict)
        mutated_model = self.model_cls(mutated_config, **self.model_kwargs)

        return ArchaiModel(
            arch=mutated_model, archid=self.get_archid(mutated_config), metadata={"config": mutated_config}
        )

    @overrides
    def crossover(self, model_list: List[ArchaiModel]) -> ArchaiModel:
        # Selects two models from `model_list` to perform crossover
        model_1, model_2 = self.rng.choices(model_list, k=2)

        # Starting with arch param tree dict, randomly replaces DiscreteChoice objects
        # with params from model_1 with probability 0.5
        choices_dict = self.arch_param_tree.to_dict()
        cross_dict = utils.replace_ptree_pair_choices(
            choices_dict,
            model_1.metadata["config"].to_dict(),
            lambda d_choice, m1_value: (m1_value if self.rng.random() < 0.5 else d_choice),
        )

        # Replaces all remaining DiscreteChoice objects with params from model_2
        cross_dict = utils.replace_ptree_pair_choices(
            cross_dict, model_2.metadata["config"].to_dict(), lambda d_choice, m2_value: m2_value
        )

        cross_config = build_arch_config(cross_dict)
        cross_model = self.model_cls(cross_config, **self.model_kwargs)

        return ArchaiModel(arch=cross_model, archid=self.get_archid(cross_config), metadata={"config": cross_config})

    @overrides
    def encode(self, model: ArchaiModel) -> np.ndarray:
        encoded_config = np.array(
            self.arch_param_tree.encode_config(
                model.metadata["config"],
                track_unused_params=self.track_unused_params
            )
        )

        return np.nan_to_num(encoded_config, nan=self.unused_param_value)


= {"Призыватель огня из племени Ярой Ненависти",nil},
[4676] = {"Младший инфернал",nil},
[4677] = {"Тюремщик судеб",nil},
[4678] = {"Пожиратель маны",nil},
[4679] = {"Дева Пустоты",nil},
[4680] = {"Капитан тюремщиков судеб",nil},
[4681] = {"Охотник на магов",nil},
[4682] = {"Сестра Пустоты",nil},
[4683] = {"Повелитель тюремщиков судеб",nil},
[4684] = {"Колдунья Пустоты",nil},
[4685] = {"Охотник за магией",nil},
[4686] = {"Глубинный великан",nil},
[4687] = {"Глубинный искатель",nil},
[4688] = {"Костелапая гиена",nil},
[4689] = {"Голодный костелап",nil},
[4690] = {"Бешеный костелап",nil},
[4691] = {"Безжалостный костелап",nil},
[4692] = {"Жуткий перепелятник",nil},
[4693] = {"Жуткий летун",nil},
[4694] = {"Жуткий потрошитель",nil},
[4695] = {"Ужасный падальщик",nil},
[4696] = {"Крепкохват скорпаши",nil},
[4697] = {"Плеточник скорпаши",nil},
[4699] = {"Ядохлыст скорпаши",nil},
[4700] = {"Старый кодо",nil},
[4701] = {"Умирающий кодо",nil},
[4702] = {"Древний кодо",nil},
[4703] = {"Бешеный кодо",nil},
[4704] = {"Отарщик из племени Мародин",nil},
[4705] = {"Призыватель духов из клана Пылающего Клинка",nil},
[4706] = {"Раззерик",nil},
[4707] = {"Зузуби","Комментатор"},
[4708] = {"Шрив",nil},
[4709] = {"Замек",nil},
[4710] = {"Серый баран",nil},
[4711] = {"Нага из клана Скользящего Плавника",nil},
[4712] = {"Колдунья из клана Скользящего Плавника",nil},
[4713] = {"Воин из клана Скользящего Плавника",nil},
[4714] = {"Мирмидон из клана Скользящего Плавника",nil},
[4715] = {"Бичехвост из клана Скользящего Плавника",nil},
[4716] = {"Волнолов из клана Скользящего Плавника",nil},
[4717] = {"Жрица приливов из клана Скользящего Плавника",nil},
[4718] = {"Оракул из клана Скользящего Плавника",nil},
[4719] = {"Морская ведьма из клана Скользящего Плавника",nil},
[4720] = {"Риззл Медноштиф",nil},
[4721] = {"Занген Каменное Копыто",nil},
[4722] = {"Р


concurrency, block).collect()

/**
 * Collects all the values emitted by the [Flow], applying the [block] function to each value.
 * The concurrency is managed by an [AsyncSemaphore] created by the [semaphore] suspending function.
 *
 * Example usage:
 *
 * ```
 * val customSemaphore: suspend CoroutineScope.() -> AsyncSemaphore =  { AsyncSemaphore(this, 2) }
 *
 * flowOf(1, 2, 3)
 *     .collectAsync(customSemaphore) { println("Processing $it") }
 * ```
 *
 * @param semaphore The suspending function that creates an [AsyncSemaphore].
 * @param block The transformation function to apply to each item.
 */
suspend fun <T, P> Flow<T>.collectAsync(
    semaphore: suspend CoroutineScope.() -> AsyncSemaphore<P>,
    block: suspend (T) -> Unit
): Unit = onEachAsync(semaphore, block).collect()
package dev.rivu.mvijetpackcomposedemo.moviesearch.data.injection

import android.content.Context
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.components.ApplicationComponent
import dagger.hilt.android.qualifiers.ApplicationContext
import dev.rivu.mvijetpackcomposedemo.moviesearch.data.IMovieRepository
import dev.rivu.mvijetpackcomposedemo.moviesearch.data.MovieDataStore
import dev.rivu.mvijetpackcomposedemo.moviesearch.data.MovieRepository
import dev.rivu.mvijetpackcomposedemo.moviesearch.data.local.LocalMovieDataStore
import dev.rivu.mvijetpackcomposedemo.moviesearch.data.local.database.MovieDB
import dev.rivu.mvijetpackcomposedemo.moviesearch.data.local.database.MovieDao
import dev.rivu.mvijetpackcomposedemo.moviesearch.data.local.database.SearchDao
import dev.rivu.mvijetpackcomposedemo.moviesearch.data.remote.MovieApi
import dev.rivu.mvijetpackcomposedemo.moviesearch.data.remote.MovieApiFactory
import dev.rivu.mvijetpackcomposedemo.moviesearch.data.remote.RemoteMovieDataStore
import javax.inject.Named
import javax.inject.Singleton

@Module
@InstallIn(ActivityComponent::class)
object DataModule {

    @Provides
    @Named("local")
    fun provideLocalMovieDataStore(movieDao: MovieDao, searchDao: SearchDao): MovieDataStore = LocalMovieDataStore(movieDao, searchDao)

    @Provides
    @Named("remote")
    fun provideRemoteMovieDataStore(api: MovieApi): MovieDataStore = RemoteMovieDataStore(api)

    @Provides
    fun provideMovieRepository(
        @Named("local") localMovieDataStore: MovieDataStore,
        @Named("remote") remoteMovieDataStore: MovieDataStore
    ): IMovieRepository = MovieRepository(localMovieDataStore, remoteMovieDataStore)
}

@Module
@InstallIn(ApplicationComponent::class)
object AppDataModule {

    @Provides
    @Singleton
    fun provideMovieApi(): MovieApi = MovieApiFactory.makeMovieApi()

    @Provides
    @Singleton
    fun provideDB(@ApplicationContext context: Context): MovieDB = MovieDB.getInstance(context)

    @Provides
    @Singleton
    fun provideMovieDao(db: MovieDB): MovieDao = db.movieDao()

    @Provides
    @Singleton
    fun provideSearchDao(db: MovieDB): SearchDao = db.searchDao()

}package mmiszczyk.bluestackshack

import android.util.Log
import java.io.File

class Exploit {
    private val TAG = "EXPLOIT"

    private val C_DRIVE = File("/mnt/windows/BstSharedFolder/")


s 累计成交金额
	LivePayOrderGmvAlias float64 `json:"live_pay_order_gmv_alias,omitempty"`
	// LubanLivePayOrderGmv 广告成交金额
	LubanLivePayOrderGmv float64 `json:"luban_live_pay_order_gmv,omitempty"`
	// LivePayOrderGmvRoi 整体ROI
	LivePayOrderGmvRoi float64 `json:"live_pay_order_gmv_roi,omitempty"`
	// AdLivePrepayAndPayOrderGmvRoi 广告ROI
	AdLivePrepayAndPayOrderGmvRoi float64 `json:"ad_live_prepay_and_pay_order_gmv_roi,omitempty"`
	// LiveCreateOrderCountAlias 整体下单数
	LiveCreateOrderCountAlias int64 `json:"live_create_order_count_alias,omitempty"`
	// LiveCreateOrderRate 整体下单率
	LiveCreateOrderRate float64 `json:"live_create_order_rate,omitempty"`
	// LubanLiveOrderCount 广告下单数
	LubanLiveOrderCount int64 `json:"luban_live_order_count,omitempty"`
	// AdLiveCreateOrderRate 广告下单率
	AdLiveCreateOrderRate float64 `json:"ad_live_create_order_rate,omitempty"`
	// LivePayOrderRate 整体成单数
	LivePayOrderRate float64 `json:"live_pay_order_rate,omitempty"`
	// LubanLivePayOrderCount 广告成单数
	LubanLivePayOrderCount int64 `json:"luban_live_pay_order_count,omitempty"`
	// AdLivePayOrderRate 广告成单率
	AdLivePayOrderRate float64 `json:"ad_live_pay_order_rate,omitempty"`
	// LivePayOrderGmvAvg 直播间平均成单金额
	LivePayOrderGmvAvg float64 `json:"live_pay_order_gmv_avg,omitempty"`
	// AdLivePayOrderGmvAvg 广告平均成单金额
	AdLivePayOrderGmvAvg float64 `json:"ad_live_pay_order_gmv_avg,omitempty"`
	// LubanLivePrepayOrderCount 广告预售订单数
	LubanLivePrepayOrderCount int64 `json:"luban_live_prepay_order_count,omitempty"`
	// LubanLivePrepayOrderGmv 广告预售订单金额
	LubanLivePrepayOrderGmv float64 `json:"luban_live_prepay_order_gmv,omitempty"`
	// LivePrepayOrderCountAlias 整体预售订单数
	LivePrepayOrderCountAlias int64 `json:"live_prepay_order_count_alias,omitempty"`
	// LivePrepayOrderGmvAlias 整体预售订单金额
	LivePrepayOrderGmvAlias float64 `json:"live_prepay_order_gmv_alias,omitempty"`
	// LiveOrderPayCouponAmount 成交智能优惠券金额
	LiveOrderPayCouponAmount float64 `json:"live_order_pay_coupon_amount,omitempty"`
	// TotalLiveWatchCnt 直播间观看人次
	TotalLiveWatchCnt int64 `json:"total_live_watch_cnt,omitempty"`
	// TotalLiveFollowCnt 新增粉丝数
	TotalLiveFollowCnt int64 `json:"total_live_follow_cnt,omitempty"`
	// LiveWatchOneMinuteCount 广告引导超1分钟观看人数
	LiveWatchOneMinuteCount int64 `json:"live_watch_one_minute,omitempty"`
	// TotalLive


e Prometheus Authors
// 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.

// Scrape `information_schema.innodb_sys_tablespaces`.

package collector

import (
	"context"
	"database/sql"
	"errors"
	"fmt"

	"github.com/prometheus/client_golang/prometheus"
)

const innodbTablespacesTablenameQuery = `
	SELECT
	    table_name
	  FROM information_schema.tables
	  WHERE table_name = 'INNODB_SYS_TABLESPACES'
	    OR table_name = 'INNODB_TABLESPACES'
	`
const innodbTablespacesQuery = `
	SELECT
	    SPACE,
	    NAME,
	    ifnull((SELECT column_name
			FROM information_schema.COLUMNS
			WHERE TABLE_SCHEMA = 'information_schema'
			  AND TABLE_NAME = ` + "'%s'" + `
			  AND COLUMN_NAME = 'FILE_FORMAT' LIMIT 1), 'NONE') as FILE_FORMAT,
	    ifnull(ROW_FORMAT, 'NONE') as ROW_FORMAT,
	    ifnull(SPACE_TYPE, 'NONE') as SPACE_TYPE,
	    FILE_SIZE,
	    ALLOCATED_SIZE
	  FROM information_schema.` + "`%s`"

// Metric descriptors.
var (
	infoSchemaInnodbTablesspaceInfoDesc = prometheus.NewDesc(
		prometheus.BuildFQName(namespace, informationSchema, "innodb_tablespace_space_info"),
		"The Tablespace information and Space ID.",
		[]string{"tablespace_name", "file_format", "row_format", "space_type"}, nil,
	)
	infoSchemaInnodbTablesspaceFileSizeDesc = prometheus.NewDesc(
		prometheus.BuildFQName(namespace, informationSchema, "innodb_tablespace_file_size_bytes"),
		"The apparent size of the file, which represents the maximum size of the file, uncompressed.",
		[]string{"tablespace_name"}, nil,
	)
	infoSchemaInnodbTablesspaceAllocatedSizeDesc = prometheus.NewDesc(
		prometheus.BuildFQName(namespace, informationSchema, "innodb_tablespace_allocated_size_bytes"),
		"The actual size of the file, which is the amount of space allocated on disk.",
		[]string{"tablespace_name"}, nil,
	)
)

// ScrapeInfoSchemaInnodbTablespaces collects from `information_schema.innodb_sys_tablespaces`.
type ScrapeInfoSchemaInnodbTablespaces struct{}

// Name of the Scraper. Should be unique.
func (ScrapeInfoSchemaInnodbTablespaces) Name() string {
	return informationSchema + ".innodb_tablespaces"
}

// Help describes the role of the Scraper.
func (ScrapeInfoSchemaInnodbTablespaces) Help() string {
	return "Collect metrics from information_schema.innodb_sys_tablespaces"
}

// Version of MySQL from which scraper is available.
func (ScrapeInfoSchemaInnodbTablespaces) Version() float64 {
	return 5.7
}

// Scrape collects data from database connection and sends it over channel as prometheus metric.
func (ScrapeInfoSchemaInnodbTablespaces) Scrape(ctx context.Context, db *sql.DB, ch chan<- prometheus.Metric) error {
	var tablespacesTablename string
	var query string
	err := db.QueryRowContext(ctx, innodbTablespacesTablenameQuery).Scan(&tablespacesTablename)
	if err != nil {
		return err
	}

	switch tablespacesTablename {
	case "INNODB_SYS_TABLESPACES", "INN


org>, 2024","Language-Team":"Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)","Content-Type":"text/plain; charset=UTF-8",Language:"nl","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:`
Translators:
John Molakvoæ <skjnldsv@protonmail.com>, 2023
Joost <joho500@hotmail.com>, 2023
Jeroen Gui, 2023
Casper <casper@vrije-mens.org>, 2024
`},msgstr:[`Last-Translator: Casper <casper@vrije-mens.org>, 2024
Language-Team: Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)
Content-Type: text/plain; charset=UTF-8
Language: nl
Plural-Forms: nplurals=2; plural=(n != 1);
`]},'"{name}" is an invalid folder name.':{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" is een ongeldige mapnaam.']},'"{name}" is not an allowed folder name':{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" is geen toegestane mapnaam']},'"/" is not allowed inside a folder name.':{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" is niet toegestaan binnen een bestandsnaam']},"All files":{msgid:"All files",msgstr:["Alle bestanden"]},Choose:{msgid:"Choose",msgstr:["Kies"]},"Choose {file}":{msgid:"Choose {file}",msgstr:["Kies {file}"]},"Choose %n file":{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Kies %n bestand","Kies %n bestanden"]},Copy:{msgid:"Copy",msgstr:["Kopieer"]},"Copy to {target}":{msgid:"Copy to {target}",msgstr:["Kopieer naar {target}"]},"Could not create the new folder":{msgid:"Could not create the new folder",msgstr:["Kon de nieuwe map niet maken"]},"Could not load files settings":{msgid:"Could not load files settings",msgstr:["Kon de bestandsinstellingen niet laden"]},"Could not load files views":{msgid:"Could not load files views",msgstr:["Kon de bestandsweergaves niet laden"]},"Create directory":{msgid:"Create directory",msgstr:["Maak map"]},"Current view selector":{msgid:"Current view selector",msgstr:["Huidige weergave keuze"]},Favorites:{msgid:"Favorites",msgstr:["Favorieten"]},"Files and folders you mark as favorite will show up here.":{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Bestanden en mappen die je favoriet maakt, worden hier getoond."]},"Files and folders you recently modified will show up here.":{msgid:"Files and folders you recently modified will show up here.",msgstr:["Bestanden en mappen die je recent hebt gewijzigd, worden hier getoond."]},"Filter file list":{msgid:"Filter file list",msgstr:["Filter bestandslijst"]},"Folder name cannot be empty.":{msgid:"Folder name cannot be empty.",msgstr:["Mapnaam mag niet leeg zijn."]},Home:{msgid:"Home",msgstr:["Home"]},Modified:{msgid:"Modified",msgstr:["Gewijzigd"]},Move:{msgid:"Move",msgstr:["Verplaatsen"]},"Move to {target}":{msgid:"Move to {target}",msgstr:["Verplaats naar {target}"]},Name:{msgid:"Name",msgstr:["Naam"]},New:{msgid:"New",msgstr:["Nieuw"]},"New folder":{msgid:"New folder",msgstr:["Nieuwe map"]},"New folder name":{msg


gDraw.addMarker(
     *     MARKER_NAME,
     *     Quat.ZERO,
     *     Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, { x: 0, y: 0, z: -5})),
     *     { red: 255, green: 0, blue: 0 },
     *     1.0
     * );
     * Script.setTimeout(function () {
     *     DebugDraw.removeMarker(MARKER_NAME);
     * }, 5000);
     */
    Q_INVOKABLE void addMarker(const QString& key, const glm::quat& rotation, const glm::vec3& position,
                               const glm::vec4& color, float size = 1.0f);

    /*@jsdoc
     * Removes a debug marker that was added in world coordinates.
     * @function DebugDraw.removeMarker
     * @param {string} key - The name of the world coordinates debug marker to remove.
     */
    Q_INVOKABLE void removeMarker(const QString& key);

    /*@jsdoc
     * Adds or updates a debug marker to the world in avatar coordinates. This marker is drawn every frame until it is removed
     * using {@link DebugDraw.removeMyAvatarMarker|removeMyAvatarMarker}. If an avatar coordinates debug marker of the
     * specified name already exists, its parameters are updated. The debug marker moves with your avatar.
     * @function DebugDraw.addMyAvatarMarker
     * @param {string} key - A name that uniquely identifies the marker.
     * @param {Quat} rotation - The orientation of the marker in avatar coordinates.
     * @param {Vec3} position - The position of the market in avatar coordinates.
     * @param {Vec4} color - color of the marker.
     * @param {float} size - A float between 0.0 and 1.0 (10 cm) to control the size of the marker.
     * @example
Briefly draw a debug marker in front of your avatar, in avatar coordinates.

     * var MARKER_NAME = "My avatar marker";
     * DebugDraw.addMyAvatarMarker(
     *     MARKER_NAME,
     *     Quat.ZERO,
     *     { x: 0, y: 0, z: -5 },
     *     { red: 255, green: 0, blue: 0 },
     *     1.0
     * );
     * Script.setTimeout(function () {
     *     DebugDraw.removeMyAvatarMarker(MARKER_NAME);
     * }, 5000);
     */
    Q_INVOKABLE void addMyAvatarMarker(const QString& key, const glm::quat& rotation, const glm::vec3& position,
                                       const glm::vec4& color, float size = 1.0f);

    /*@jsdoc
     * Removes a debug marker that was added in avatar coordinates.
     * @function DebugDraw.removeMyAvatarMarker
     * @param {string} key - The name of the avatar coordinates debug marker to remove.
     */
    Q_INVOKABLE void removeMyAvatarMarker(const QString& key);

    using MarkerInfo = std::tuple<glm::quat, glm::vec3, glm::vec4, float>;
    using MarkerMap = std::map<QString, MarkerInfo>;
    using Ray = std::tuple<glm::vec3, glm::vec3, glm::vec4>;
    using Rays = std::vector<Ray>;

    //
    // accessors used by renderer
    //

    MarkerMap getMarkerMap() const;
    MarkerMap getMyAvatarMarkerMap() const;
    void updateMyAvatarPos(const glm::vec3& pos) { _myAvatarPos = pos; }
    const glm::vec3& getMyAvatarPos() const { return _myAvatarPos; }
    void updateMyAvatarRot(const glm::quat& rot) { _myAvatarRot = rot; }
    const glm::quat& getMyAvatarRot() const { return _myAvatarRot; }
    Rays getRays() const;
    void clearRays();

protected:
    mutable std::mutex _mapMutex;
    MarkerMap _markers;
    MarkerMap _myAvatarMarkers;
    glm::quat _myAvatarRot;
    glm::vec3 _myAvatarPos;
    Rays _rays;
};

#endif // hifi_DebugDraw_h


L		(0x1)		/* USB Clock Input is UPLL */
#define		AT91_PMC_USBDIV_8		(0x7 <<  8)	/* USB Clock divided by 8 */
#define		AT91_PMC_USBDIV_10		(0x9 <<  8)	/* USB Clock divided by 10 */

#ifdef CONFIG_AT91_LEGACY
#define	AT91_PMC_PCKR(n)	(AT91_PMC + 0x40 + ((n) * 4))	/* Programmable Clock 0-3 Registers */

#define	AT91_PMC_IER		(AT91_PMC + 0x60)	/* Interrupt Enable Register */
#define	AT91_PMC_IDR		(AT91_PMC + 0x64)	/* Interrupt Disable Register */
#define	AT91_PMC_SR		(AT91_PMC + 0x68)	/* Status Register */
#endif
#define		AT91_PMC_MOSCS		(1 <<  0)		/* MOSCS Flag */
#define		AT91_PMC_LOCKA		(1 <<  1)		/* PLLA Lock */
#define		AT91_PMC_LOCKB		(1 <<  2)		/* PLLB Lock */
#define		AT91_PMC_MCKRDY		(1 <<  3)		/* Master Clock */
#define		AT91_PMC_LOCKU		(1 <<  6)		/* UPLL Lock [AT91CAP9 only] */
#define		AT91_PMC_OSCSEL		(1 <<  7)		/* Slow Clock Oscillator [AT91CAP9 revC only] */
#define		AT91_PMC_PCK0RDY	(1 <<  8)		/* Programmable Clock 0 */
#define		AT91_PMC_PCK1RDY	(1 <<  9)		/* Programmable Clock 1 */
#define		AT91_PMC_PCK2RDY	(1 << 10)		/* Programmable Clock 2 */
#define		AT91_PMC_PCK3RDY	(1 << 11)		/* Programmable Clock 3 */
#ifdef CONFIG_AT91_LEGACY
#define	AT91_PMC_IMR		(AT91_PMC + 0x6c)	/* Interrupt Mask Register */

#define AT91_PMC_PROT		(AT91_PMC + 0xe4)	/* Protect Register [AT91CAP9 revC only] */
#endif
#define		AT91_PMC_PROTKEY	0x504d4301	/* Activation Code */
#ifdef CONFIG_AT91_LEGACY
#define AT91_PMC_VER		(AT91_PMC + 0xfc)	/* PMC Module Version [AT91CAP9 only] */
#endif /* CONFIG_AT91_LEGACY */
#endif


��",
[179707] = "호드와 얼라이언스의 군계급",
[179735] = "얼라이언스 군사계급",
[179741] = "호드 군사계급",
[179782] = "연금술 실험도구",
[179826] = "비밀조제법: 불꽃 융해촉진제",
[179827] = "구인광고/분실물센터/지명수배",
[179828] = "검은무쇠단 배개",
[179832] = "하녀 필라클렌처의 화려한 베개",
[179879] = "지배의 보주",
[179880] = "드라키사스의 낙인",
[179888] = "지키고 있는 리즐의 설계도",
[179908] = "잃어버린 슬래그트리의 연장",
[179910] = "라드의 소풍용 바구니",
[179913] = "전장으로!",
[179914] = "뼈 더미",
[179915] = "해골 더미",
[179922] = "얼룩진 피가 담긴 용기",
[180025] = "신비의 건초더미",
[180056] = "신비의 그루터기",
[180184] = "물고기 떼",
[180216] = "채찍줄기",
[180432] = "포세이큰 깃발",
[180433] = "밀짚인형",
[180437] = "밀짚인형 불씨",
[180448] = "현상 수배: 죽음의 갈고리",
[180449] = "포세이큰 구린내 폭탄",
[180450] = "포세이큰 구린내 폭탄 연기",
[180452] = "블라스텐하이머 5000 초특급 대포",
[180454] = "문자가 새겨진 하이브아쉬 수정",
[180510] = "솔라니안의 수정구",
[180511] = "스컬지 마법 두루마리",
[180512] = "솔라니안의 일지",
[180516] = "다트리마의 제단",
[180523] = "할로윈 축제 사과",
[180570] = "맥주통",
[180582] = "기름기 많은 아귀 떼",
[180600] = "찌그러진 상자",
[180619] = "오시리안 수정",
[180642]


206, 100%, 99.2%);--backgroundTransparent:hsl(206, 100%, 99.2%);--color:hsl(211, 100%, 15.0%);--colorHover:hsl(211, 100%, 43.2%);--colorPress:hsl(211, 100%, 15.0%);--colorFocus:hsl(211, 100%, 43.2%);--colorTransparent:hsl(0, 0%, 9.0%);--borderColor:hsl(210, 98.8%, 94.0%);--borderColorHover:hsl(209, 95.0%, 90.1%);--borderColorPress:hsl(210, 98.8%, 94.0%);--borderColorFocus:hsl(210, 98.8%, 94.0%);--placeholderColor:hsl(208, 100%, 47.3%);}
}
:root .t_light_blue_alt1_Card, :root .t_light_blue_alt1_DrawerFrame, :root .t_light_blue_alt1_Progress, :root .t_light_blue_alt1_TooltipArrow, :root.t_light .t_blue_alt1_Card, :root.t_dark .t_light .t_blue_alt1_Card, :root.t_light .t_dark .t_light .t_blue_alt1_Card, :root.t_dark .t_light .t_dark .t_light .t_blue_alt1_Card, :root .t_sub_theme .t_light .t_blue_alt1_Card, :root.t_light .t_sub_theme .t_light .t_blue_alt1_Card, :root .t_sub_theme .t_light .t_sub_theme .t_light .t_blue_alt1_Card, :root.t_light .t_blue_alt1_DrawerFrame, :root.t_dark .t_light .t_blue_alt1_DrawerFrame, :root.t_light .t_dark .t_light .t_blue_alt1_DrawerFrame, :root.t_dark .t_light .t_dark .t_light .t_blue_alt1_DrawerFrame, :root .t_sub_theme .t_light .t_blue_alt1_DrawerFrame, :root.t_light .t_sub_theme .t_light .t_blue_alt1_DrawerFrame, :root .t_sub_theme .t_light .t_sub_theme .t_light .t_blue_alt1_DrawerFrame, :root.t_light .t_blue_alt1_Progress, :root.t_dark .t_light .t_blue_alt1_Progress, :root.t_light .t_dark .t_light .t_blue_alt1_Progress, :root.t_dark .t_light .t_dark .t_light .t_blue_alt1_Progress, :root .t_sub_theme .t_light .t_blue_alt1_Progress, :root.t_light .t_sub_theme .t_light .t_blue_alt1_Progress, :root .t_sub_theme .t_light .t_sub_theme .t_light .t_blue_alt1_Progress, :root.t_light .t_blue_alt1_TooltipArrow, :root.t_dark .t_light .t_blue_alt1_TooltipArrow, :root.t_light .t_dark .t_light .t_blue_alt1_TooltipArrow, :root.t_dark .t_light .t_dark .t_light .t_blue_alt1_TooltipArrow, :root .t_sub_theme .t_light .t_blue_alt1_TooltipArrow, :root.t_light .t_sub_theme .t_light .t_blue_alt1_TooltipArrow, :root .t_sub_theme .t_light .t_sub_theme .t_light .t_blue_alt1_TooltipArrow {--background:hsl(210, 98.8%, 94.0%);--backgroundHover:hsl(209, 95.0%, 90.1%);--backgroundPress:hsl(209, 81.2%, 84.5%);--bac


property("description", mod_description)
    inputs.property("mcversion", minecraft_version)

    filesMatching("paper-plugin.yml") {
        expand("version" to version, "description" to mod_description, "mcversion" to minecraft_version)
    }
}

tasks.shadowJar {
    duplicatesStrategy = DuplicatesStrategy.WARN
    configurations = listOf(compileApi)
    archiveClassifier.set("")
    mergeServiceFiles()

    relocate("team.unnamed.mocha", "com.zigythebird.playeranim.lib.mochafloats")
    relocate("javassist", "com.zigythebird.playeranim.lib.javassist")
}

tasks.jar {
    archiveClassifier.set("dev")
}

tasks.assemble {
    dependsOn(tasks.shadowJar)
}

java {
    withSourcesJar()
}

shadow {
    addShadowVariantIntoJavaComponent = false
}

publishing {
    publications {
        register<MavenPublication>("mavenJava") {
            artifactId = "emotesBukkit"
            from(components["java"])
            withCustomPom("emotesBukkit", "Minecraft Emotecraft Paper plugin")
        }
    }

    repositories {
        if (shouldPublishMaven) {
            kosmxRepo(project)
        } else {
            mavenLocal()
        }
    }
}

publishMods {
    modLoaders.add("paper")
    modLoaders.add("folia")
    file.set(tasks.shadowJar.get().archiveFile)
    type = ReleaseType.of(releaseType)
    changelog = changes
    dryRun = gradle.startParameter.isDryRun

    github {
        accessToken = providers.environmentVariable("GH_TOKEN")
        parent(rootProject.tasks.named("publishGithub"))
    }

    modrinth {
        announcementTitle = "Modrinth (Paper)"
        accessToken = providers.environmentVariable("MODRINTH_TOKEN")
        projectId = providers.gradleProperty("modrinth_id")
        minecraftVersions.addAll(release_minecraft_versions)
        displayName = mod_version
        version = "${mod_version}+${removePreRc(minecraft_version)}-paper"
    }
}

tasks.getByName("publishMods").dependsOn("publishPluginPublicationToHangar")

hangarPublish.publications.register("plugin") {
    version = "${mod_version}+${minecraft_version}-paper"
    channel = when (releaseType) { // convert to set channel names
        "stable" -> "Release"
        "beta" -> "Beta"
        else -> "Alpha"
    }
    id = providers.gradleProperty("hangar_id")
    apiKey = providers.environmentVariable("HANGAR_TOKEN")
    changelog = changes
    platforms.register("PAPER") {
        jar = tasks.shadowJar.flatMap { it.archiveFile }
        platformVersions = release_minecraft_versions
    }
}

package dev.kosmx.needle.launchWrapper

import dev.kosmx.needle.CheckWrapper
import dev.kosmx.needle.matcher.result.Severity
import org.slf4j.kotlin.getLogger
import org.slf4j.kotlin.warn
import java.lang.instrument.Instrumentation
import kotlin.io.path.Path
import kotlin.system.exitProcess
import kotlin.time.ExperimentalTime
import kotlin.time.measureTime

object JavaAgentLauncher {
    private var checked = false // avoid double runs
    private val logger by getLogger()

    @JvmStatic
    fun premain(agentArgs: String?, inst: Instrumentation) {
        if (!checked) {
            runCheck(agentArgs)
            checked = true
        }
    }
    @JvmStatic


rr_alloc_gpio:
	spi_master_put(master);
 err_alloc:
 err_init:
	iounmap(regs);
	return rc;
}

static void mpc52xx_spi_remove(struct platform_device *op)
{
	struct spi_master *master = spi_master_get(platform_get_drvdata(op));
	struct mpc52xx_spi *ms = spi_master_get_devdata(master);
	int i;

	free_irq(ms->irq0, ms);
	free_irq(ms->irq1, ms);

	for (i = 0; i < ms->gpio_cs_count; i++)
		gpiod_put(ms->gpio_cs[i]);

	kfree(ms->gpio_cs);
	spi_unregister_master(master);
	iounmap(ms->regs);
	spi_master_put(master);
}

static const struct of_device_id mpc52xx_spi_match[] = {
	{ .compatible = "fsl,mpc5200-spi", },
	{}
};
MODULE_DEVICE_TABLE(of, mpc52xx_spi_match);

static struct platform_driver mpc52xx_spi_of_driver = {
	.driver = {
		.name = "mpc52xx-spi",
		.of_match_table = mpc52xx_spi_match,
	},
	.probe = mpc52xx_spi_probe,
	.remove_new = mpc52xx_spi_remove,
};
module_platform_driver(mpc52xx_spi_of_driver);


eDiff, 180.0f );
			Cvar_SetValue( "vr_deadzone", intValue );
			break;
		case VR_OPTION_CROSSHAIR:
			intValue = (int)vr_crosshair.value;
			intValue = CLAMP( crosshair[0], isLeft ? intValue - 1 : intValue + 1, crosshair[_maxarray( crosshair) ] );
			Cvar_SetValue( "vr_crosshair", intValue );
			break;
		case VR_OPTION_CROSSHAIR_DEPTH:
			intValue = (int)vr_crosshair_depth.value;
			intValue = CLAMP( 0.0f, isLeft ? intValue - crosshairDepthDiff : intValue + crosshairDepthDiff, 4096 );
			Cvar_SetValue( "vr_crosshair_depth", intValue );
			break;
		case VR_OPTION_CROSSHAIR_SIZE:
			intValue = (int)vr_crosshair_size.value;
			intValue = CLAMP( 0.0f, isLeft ? intValue - crosshairSizeDiff : intValue + crosshairSizeDiff, 32 );
			Cvar_SetValue( "vr_crosshair_size", intValue );
			break;
		case VR_OPTION_CROSSHAIR_ALPHA:
			floatValue = vr_crosshair_alpha.value;
			floatValue = CLAMP( 0.0f, isLeft ? floatValue - crosshairAlphaDiff : floatValue + crosshairAlphaDiff, 1.0f );
			Cvar_SetValue( "vr_crosshair_alpha", floatValue );
			break;
	}

#undef _maxarray
#undef _sizeofarray
}

static void VR_MenuKey(int key)
{
	switch ( key ) {
		case K_ESCAPE:
			VID_SyncCvars(); // sync cvars before leaving menu. FIXME: there are other ways to leave menu
			S_LocalSound( "misc/menu1.wav" );
			M_Menu_Options_f();
			break;

		case K_UPARROW:
			S_LocalSound( "misc/menu1.wav" );
			vr_options_cursor--;
			if ( vr_options_cursor < 0 ) {
				vr_options_cursor = VR_OPTION_MAX - 1;
			}
			break;

		case K_DOWNARROW:
			S_LocalSound( "misc/menu1.wav" );
			vr_options_cursor++;
			if ( vr_options_cursor >= VR_OPTION_MAX ) {
				vr_options_cursor = 0;
			}
			break;

		case K_LEFTARROW:
			S_LocalSound ("misc/menu3.wav");
			VR_MenuKeyOption( key, vr_options_cursor );
			break;

		case K_RIGHTARROW:
			S_LocalSound ("misc/menu3.wav");
			VR_MenuKeyOption( key, vr_options_cursor );
			break;

		case K_ENTER:
			m_entersound = true;
			VR_MenuKeyOption( key, vr_options_cursor );
			break;

		default: break;
	}
}

static void VR_MenuDraw (void)
{
	int i, y;
	qpic_t *p;
	const char *title;

	y = 4;

	// plaque
	p = Draw_CachePic ("gfx/qplaque.lmp");
	M_DrawTransPic (16, y, p);

	// customize header
	p = Draw_CachePic ("gfx/ttl_cstm.lmp");
	M_DrawPic ( (320-p->width)/2, y, p);

	y += 28;

	// title
	title = "VR/HMD OPTIONS";
	M_PrintWhite ((320-8*strlen(title))/2, y, title);

	y += 16;

	for ( i = 0; i < VR_OPTION_MAX; i++ ) {
		switch ( i ) {
			case VR_OPTION_ENABLED:
				M_Print( 16, y, "            VR Enabled" );
				VR_MenuPrintOptionValue( 220, y, i );
				break;
			case VR_OPTION_PERFHUD:
				M_Print( 16, y, "             Debug HMD" );
				VR_MenuPrintOptionValue( 220, y, i );
				break;
			case VR_OPTION_AIMMODE:
				y += 4; // separation
				M_Print( 16, y, "              Aim Mode" );
				VR_MenuPrintOptionValue( 220, y, i );
				break;
			case VR_OPTION_DEADZONE:
				M_Print( 16, y, "              Deadzone" );
				VR_MenuPrintOptionValue( 220, y, i );
				break;
			case VR_OPTION_CROSSHAIR:
				M_Print( 16, y, "             Crosshair" );
				VR_MenuPrintOptionValue( 220, y, i );
				break;
			case VR_OPTION_CROSSHAIR_DEPTH:
				M_Print( 16, y, "       Crosshair Depth" );
				VR_MenuPrintOptionValue( 220, y, i );
				break;
			case VR_OPTION_CROSSHAIR_SIZE:
				M_Print( 16, y, "        Crosshair Size" );
				VR_MenuPrintOptionValue( 220, y, i );
				break;
			case VR_OPTION_CROSSHAIR_ALPHA:
				M_Print( 16, y, "       Crosshair Alpha" );
				VR_MenuPrintOptionValue( 220, y, i );
				break;

			default: break;
		}

		// draw the blinking cursor
		if ( vr_options_cursor == i ) {
			M_DrawCharacter( 200, y, 12 + ((int)(realtime*4)&1) );
		}

		y += 8;
	}
}

void VR_Menu_f (void)
{
	const char *sound = "items/r_item1.wav";

	IN_Deactivate(modestate == MS_WINDOWED);
	key_dest = key_menu;
	m_state = m_vr;
	m_entersound = true;

	VR_MenuPlaySound( sound, 0.5 );
}


Number: 17,
        status: CandidateStatuses.registered,
        callNumber: 5,
        locationType: LocationType.city,
      },
      {
        party: Parties.sr,
        callNumber: 7,
        locationType: LocationType.region,
        areaNumber: 24,
        status: CandidateStatuses.registered,
      },
    ],
  },
  {
    alias: 'lyskov_anton',
    name: 'Лысков Антон Юрьевич',
    birthdate: '05.01.1980',
    candidate: [
      {
        party: Parties.sr,
        areaNumber: 22,
        status: CandidateStatuses.registered,
        callNumber: 5,
        locationType: LocationType.city,
      },
      {
        locationType: LocationType.city,
        callNumber: 5,
        party: Parties.sr,
        areaNumber: 22,
        listNumber: 1,
        status: CandidateStatuses.registered,
      },
    ],
  },
  {
    alias: 'maslennikova_margarita',
    name: 'Масленникова Маргарита Юрьевна',
    birthdate: '04.03.1974',
    photo: photos.maslennikova,
    candidate: [
      {
        party: Parties.sr,
        areaNumber: 5,
        status: CandidateStatuses.registered,
        callNumber: 5,
        locationType: LocationType.city,
      },
      {
        party: Parties.sr,
        callNumber: 7,
        locationType: LocationType.region,
        areaNumber: 3,
        status: CandidateStatuses.registered,
      },
      {
        locationType: LocationType.city,
        callNumber: 5,
        party: Parties.sr,
        areaNumber: 5,
        listNumber: 1,
        status: CandidateStatuses.registered,
      },
      {
        locationType: LocationType.region,
        callNumber: 7,
        party: Parties.sr,
        areaNumber: 3,
        listNumber: 1,
        status: CandidateStatuses.registered,
      },
    ],
  },
  {
    alias: 'naumov_ilya',
    name: 'Наумов Илья Сергеевич',
    birthdate: '30.04.1984',
    candidate: [
      {
        party: Parties.sr,
        areaNumber: 18,
        status: CandidateStatuses.registered,
        callNumber: 5,
        locationType: LocationType.city,
      },
      {
        party: Parties.sr,
        callNumber: 7,
        locationType: LocationType.region,
        areaNumber: 9,
        status: CandidateStatuses.registered,
      },
      {
        locationType: LocationType.city,
        callNumber: 5,
        party: Parties.sr,
        areaNumber: 18,
        listNumber: 1,
        status: CandidateStatuses.registered,
      },
      {
        locationType: LocationType.region,
        callNumber: 7,
        party: Parties.sr,
        areaNumber: 9,
        listNumber: 1,
        status: CandidateStatuses.registered,
      },
    ],
  },
  {
    alias: 'neznamova_natalya',
    name: 'Незнамова Наталья Анатольевна',
    birthdate: '14.05.1992',
    candidate: [
      {
        party: Parties.sr,
        areaNumber: 6,
        status: CandidateStatuses.registered,
        callNumber: 5,
        locationType: LocationType.city,
      },
      {
        locationType: LocationType.city,
        callNumber: 5,
        party: Parties.sr,
        areaNumber: 6,
        listNumber: 1,
        status: CandidateStatuses.registered,
      },
      {
        locationType: LocationType.region,
        callNumber: 7,
        par


QChar(0xF9));
        { auto s=SimpleTextSymbol(QChar(0xAE), "®");
            symbols["registered"]=s; symbols["textregistered"]=s; symbols["circledR"]=s; }
        symbols["rfloor"]=UprightSymbolUnicode(QChar(0x230B)).addUprightHtml("⌋").addUprightWinSymbol(QChar(0xFB));
        symbols["rightangle"]=UprightSymbolUnicode(QChar(0x221F)).addUprightHtml("∟");
        //symbols["smile"]=UprightSymbolUnicode(QChar(0x2323)).addUprightHtml("⌣");
        symbols["sphericalangle"]=UprightSymbolUnicode(QChar(0x2222)).addUprightHtml("∢");
        symbols["star"]=UprightSymbolUnicode(QChar(0x22C6));
        symbols["tcohm"]=UnicodeSymbol(QChar(0x2126));
        { auto s=UnicodeSymbol(QChar(0x2014), "⹀");
            symbols["dblhyphen"]=s; symbols["textdblhyphen"]=s; symbols["textdblhyphenchar"]=s; }
        { auto s=UnicodeSymbol(QChar(0x2014), "—");
            symbols["---"]=s; symbols["textemdash"]=s; symbols["emdash"]=s; }
        { auto s=UnicodeSymbol(QChar(0x2013), "–");
            symbols["--"]=s; symbols["textendash"]=s; symbols["endash"]=s; }
        { auto s=SimpleTextSymbol("-");
            symbols["texthyphen"]=s; symbols["hyphen"]=s; }
        symbols["textbar"]=SimpleTextSymbol("|", "|");
        { auto s=SimpleTextSymbol(QChar(0xB0), "°");
            symbols["textdegree"]=s; symbols["degree"] = s; }
        symbols["textgreater"]=SimpleTextSymbol(">", ">");
        symbols["textless"]=SimpleTextSymbol("<", "<");
        symbols["textquestiondown"]=SimpleTextSymbol(QChar(0xBF), "¿");
        symbols["textexclamdown"]=SimpleTextSymbol(QChar(0xA1), "¡");
        { auto s=UnicodeSymbol(QChar(0x231C));
            symbols["tlcorner"]=s; symbols["ulcorner"]=s; }
        symbols["trademark"]=UnicodeSymbol(QChar(0x2122)).addHtml("™").addWinSymbol(QChar(0xD4)).addStd("(TM)");
        symbols["trapezium"]=UnicodeSymbol(QChar(0x23E2)).addHtml("⏢");
        { auto s=UprightSymbolUnicode(QChar(0x231D));
            symbols["trcorner"]=s; symbols["urcorner"]=s; }
        symbols["trprime"]=UnicodeSymbol(QChar(0x2034)).addHtml("‴").addStd("'''");
        symbols["varcarriagereturn"]=UnicodeSymbol(QChar(0x23CE)).addWinSymbol(QChar(0xBF));
        symbols["varhexagonlrbonds"]=UnicodeSymbol(QChar(0x232C));
        symbols["yen"]=SimpleTextSymbol(QChar(0xA5), "¥");

        /**************************************************************************************
         * STANDARD MathOperator Strings
         **************************************************************************************/
        symbols["Pr"] = NarrowMathOperatorText("Pr");
        symbols["acos"] = NarrowMathOperatorText("acos");
        symbols["arccos"] = NarrowMathOperatorText("arccos");
        symbols["arcsin"] = NarrowMathOperatorText("arcsin");
        symbols["arctan"] = NarrowMathOperatorText("arctan");
        symbols["arg"] = NarrowMathOperatorText("arg").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
        symbols["argmax"] = NarrowMathOperatorText("arg max", "arg max").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
        symbols["argmin"] = NarrowMathOpera