り文字 */
	private static final String DELIMITER = "() : ";

	// フィルタ条件フィールド.
	/** バイナリ検索条件リスト */
	private List<AgtBinaryPatternInfoResponse> matchInfoList;
	/** バイナリ検索条件マップ(キー優先順) */
	private Map<Integer, AgtBinaryPatternInfoResponse> matchInfoMap;
	/** 検索パターンバイナリマップ(キー優先順) */
	private Map<Integer, List<Byte>> patternBinaryMap;

	// 任意バイナリファイル向けフィールド.
	/** 検索パターンバイナリ最大バイト長 */
	private int maxPatternLength;
	/** マッチパターン優先順位 */
	private int priority;

	// エラーハンドリング用.
	/** 引数エラー(true:エラー、false:正常) */
	private boolean errorParams;

	// マッチ結果保持用.
	/** マッチしたパターンのキー(優先順位)(マッチなしは-1) */
	private Integer matchKey;

	/**
	 * コンストラクタ.
	 *
	 * @param matchInfoList2
	 *			  バイナリ検索条件リスト
	 * @param patternList
	 *			  検索文字列リスト
	 */
	public BinaryFiltering(List<AgtBinaryPatternInfoResponse> matchInfoList2) {
		// 引数不正チェック.
		if (matchInfoList2 == null || matchInfoList2.isEmpty()) {
			log.warn("failed to match pattern by parameter");
			this.errorParams = true;
			return;
		} else {
			this.errorParams = false;
		}
		this.matchInfoList = matchInfoList2;
		this.maxPatternLength = this.setMaps();
	}

	/**
	 * バイナリレコード毎にパターンマッチするかチェック.
	 *
	 * @param binary
	 *			  検索対象バイナリが格納されたBinaryRecord
	 *
	 * @return 処理対象の場合はtrue,引数不正もfalse;
	 *
	 */
	public boolean matchPatternRecord(BinaryRecord binary) {
		String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
		log.debug(methodName + DELIMITER + "start.");

		// 変数初期化.
		List<Byte> searchBinary = new ArrayList<Byte>(binary.getAlldata());

		// 引数存在チェック.
		if (errorParams || searchBinary == null || searchBinary.isEmpty()) {
			log.warn("failed to match pattern by record binary is empty");
			return false;
		}

		// パターンマッチするかチェック.
		return this.matchPattern(searchBinary);

	}

	/**
	 * サイズの大きなバイナリがパターンマッチするかチェック.
	 *
	 * @param bigData
	 *			  検索対象バイナリが格納されたList<BinaryRecord>
	 *
	 * @return 処理対象の場合はtrue,引数不正もfalse;
	 *
	 */
	public boolean matchPatternBigData(List<BinaryRecord> bigData) {
		String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
		log.debug(methodName + DELIMITER + "start.");

		// 引数存在チェック.
		if (errorParams || bigData == null || bigData.isEmpty()) {
			log.warn("failed to match pattern");
			return false;
		}

		// ループ用変数初期化.
		List<BinaryRecord> searchData = new ArrayList<BinaryRecord>();
		BinaryRecord tmpRecord = null;

		// 検索パターンバイナリより検索対象のレコードが長くなるように整形する
		for (BinaryRecord r


# Copyright (c) 2022-2025, NVIDIA CORPORATION.
# 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.

from pylibcugraph.utilities.api_tools import (
    experimental_warning_wrapper,
    promoted_experimental_warning_wrapper,
)

# Passing in the namespace name of this module to the *_wrapper functions
# allows them to bypass the expensive inspect.stack() lookup.
_ns_name = __name__

from cugraph.structure.property_graph import EXPERIMENTAL__PropertyGraph

PropertyGraph = experimental_warning_wrapper(EXPERIMENTAL__PropertyGraph, _ns_name)

from cugraph.structure.property_graph import EXPERIMENTAL__PropertySelection

PropertySelection = experimental_warning_wrapper(
    EXPERIMENTAL__PropertySelection, _ns_name
)

from cugraph.dask.structure.mg_property_graph import EXPERIMENTAL__MGPropertyGraph

MGPropertyGraph = experimental_warning_wrapper(EXPERIMENTAL__MGPropertyGraph, _ns_name)

from cugraph.dask.structure.mg_property_graph import EXPERIMENTAL__MGPropertySelection

MGPropertySelection = experimental_warning_wrapper(
    EXPERIMENTAL__MGPropertySelection, _ns_name
)

from cugraph.experimental.components.scc import EXPERIMENTAL__strong_connected_component

strong_connected_component = experimental_warning_wrapper(
    EXPERIMENTAL__strong_connected_component, _ns_name
)


ddress: new FormControl('', [Validators.minLength(3)] )
    //   })
    // });

    // 使用 formBuilder的方式
    this.user = this.fb.group({
      name: ['22', [Validators.required, Validators.minLength(2)]],
      password: ['', [Validators.required]],
      other: this.fb.group({
        email: ['', Validators.minLength(2)],
        confirm: ['', Validators.minLength(2)],
        address: ['', Validators.minLength(3)]
      }, { validator: needInput})
    });
  }

  onSubmit() {

    console.log(this.user.value, this.user.valid);
  }

}
function hola(nome :string) {
    return "Ola "+nome;
}

var pessoa = "Luis";

console.log(hola(pessoa));
import { ILogger } from './interfaces';
import { last, isFunction, isPlainObject, noop, isString } from 'chek';
import { format, inspect } from 'util';
import { Colurs } from 'colurs';

const colurs = new Colurs();

/**
 * Logger
 * : Formats and logs message.
 *
 * @param type the type of message to log.
 * @param args rest param of log arguments.
 */
function logger(type, ...args: any[]): ILogger {

  let msg = args.shift();
  let fn = isFunction(last(args)) ? args.pop() : noop;
  let meta = isPlainObject(last(args)) ? args.pop() : null;

  let obj = {
    type: type,
    msg: null,
    meta: meta
  };

  const formatters = isString(msg) ? (msg as string).match(/%/g) : null;
  if (formatters && formatters.length)
    msg = format(msg, ...args);
  else
    msg = [msg].concat(args).join(' ');

  if (type === 'error' && !(msg instanceof Error)) {
    msg = new Error(msg);
    const stack = msg.stack.split('\n');
    const tmpMsg = stack.shift();
    stack.shift();
    stack.unshift(tmpMsg);
    msg.stack = stack.join('\n');
  }

  // If any error just throw it.
  if (msg instanceof Error) {
    if (fn) fn(msg, obj);
    msg.stack = msg.stack.split('\n').map((s, i) => {
      if (i === 0)
        return colurs.applyAnsi('[error]', _log.colors.error) + ' ' + (msg.name || 'Error') + ': ' + msg.message;
      return s;
    }).join('\n');
    throw msg;
  }

  obj.msg = msg;
  fn(msg, obj);

  if (meta) {
    meta = inspect(meta, null, null, true);
    msg += ('\n' + meta);
  }

  if (type && _log.colors[type])
    msg = colurs.applyAnsi('[' + type + ']: ', _log.colors[type]) + msg;

  process.stderr.write(msg + '\n');

  return _log;

}

const _log: any = function (...args: any[]) {
  logger(null, ...args);
  return _log;
};

_log.colors = {
  error: 'red',
  warn: ['yellow', 'dim'],
  notify: 'blue'
};
_log.colorize = true;
_log.error = logger.bind(_log, 'error');
_log.warn = logger.bind(_log, 'warn');
_log.info = logger.bind(_log, 'notify'); // backward compat.
_log.notify = logger.bind(_log, 'notify');
_log.exit = process.exit;

export const log: ILogger = _log;

namespace Endabgabe {
    export class Bird extends Moveable {
        color: string;
        aim: Vector;
        isHungry: boolean;
        isEating: boolean;
        isHit: boolean;

        constructor() {

            super();
            this.velocity = new Vector(Math.random() * -2, -1 + Math.


al _py_sys_setargvPtr = _lookup<
      ffi.NativeFunction<
          ffi.Void Function(
              ffi.Int, ffi.Pointer<ffi.Pointer<ffi.Char>>)>>('py_sys_setargv');
  late final _py_sys_setargv = _py_sys_setargvPtr
      .asFunction<void Function(int, ffi.Pointer<ffi.Pointer<ffi.Char>>)>();

  /// Set the trace function for the current VM.
  void py_sys_settrace(
    py_TraceFunc func,
    bool reset,
  ) {
    return _py_sys_settrace(
      func,
      reset,
    );
  }

  late final _py_sys_settracePtr =
      _lookup<ffi.NativeFunction<ffi.Void Function(py_TraceFunc, ffi.Bool)>>(
          'py_sys_settrace');
  late final _py_sys_settrace =
      _py_sys_settracePtr.asFunction<void Function(py_TraceFunc, bool)>();

  /// Invoke the garbage collector.
  int py_gc_collect() {
    return _py_gc_collect();
  }

  late final _py_gc_collectPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function()>>('py_gc_collect');
  late final _py_gc_collect = _py_gc_collectPtr.asFunction<int Function()>();

  /// Setup the callbacks for the current VM.
  ffi.Pointer<py_Callbacks> py_callbacks() {
    return _py_callbacks();
  }

  late final _py_callbacksPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<py_Callbacks> Function()>>(
          'py_callbacks');
  late final _py_callbacks =
      _py_callbacksPtr.asFunction<ffi.Pointer<py_Callbacks> Function()>();

  /// Wrapper for `PK_MALLOC(size)`.
  ffi.Pointer<ffi.Void> py_malloc(
    int size,
  ) {
    return _py_malloc(
      size,
    );
  }

  late final _py_mallocPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Void> Function(ffi.Size)>>(
          'py_malloc');
  late final _py_malloc =
      _py_mallocPtr.asFunction<ffi.Pointer<ffi.Void> Function(int)>();

  /// Wrapper for `PK_REALLOC(ptr, size)`.
  ffi.Pointer<ffi.Void> py_realloc(
    ffi.Pointer<ffi.Void> ptr,
    int size,
  ) {
    return _py_realloc(
      ptr,
      size,
    );
  }

  late final _py_reallocPtr = _lookup<
      ffi.NativeFunction<
          ffi.Pointer<ffi.Void> Function(
              ffi.Pointer<ffi.Void>, ffi.Size)>>('py_realloc');
  late final _py_realloc = _py_reallocPtr
      .asFunction<ffi.Pointer<ffi.Void> Function(ffi.Pointer<ffi.Void>, int)>();

  /// Wrapper for `PK_FREE(ptr)`.
  void py_free(
    ffi.Pointer<ffi.Void> ptr,
  ) {
    return _py_free(
      ptr,
    );
  }

  late final _py_freePtr =
      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
          'py_free');
  late final _py_free =
      _py_freePtr.asFunction<void Function(ffi.Pointer<ffi.Void>)>();

  /// Begin the watchdog with `timeout` in milliseconds.
  /// `PK_ENABLE_WATCHDOG` must be defined to `1` to use this feature.
  /// You need to call `py_watchdog_end()` later.
  /// If `timeout` is reached, `TimeoutError


TO_PASS,
                        result
                );

            }
        });

        SharedPrefrenceUtils utils = SharedPrefrenceUtils.getInstance(context);
        String searchTerm = utils.getLastSearchTerm();

        Log.i("SearchTest"," searching term .."+searchTerm);

        mCloudManager.requestSearch(searchTerm);

        sharedPrefrenceUtils.setLastLoadedType(TYPE_RESULT);

    }

    /**
     * (Restore State)
     * Checks Last Loaded
     * gets from DB and submits to registered adapters
     * After submition must setLastLoaded
     */
    private void submitLastLoaded() {

        Log.d("DBHelper", " last loaded result");

        mDBHelper.setResultLoadListener(new DbHelper.ResultLoadListener() {
            @Override
            public void onResultLoadListener(ExploreItemModel result) {

                dispatchMessage(
                        Constants.MESSAGE_STATUS_OK,
                        MESSAGE_TO_PASS,
                        result
                );

            }
        });

        mDBHelper.pokeForResults();

    }

    /**
     * Checks DB for saved data
     * if !Available
     * Request - > save to db + action callback +  adapter callback
     * else
     * action callback + adapter callback
     * After submittion must setLastLoaded
     */
    private void loadTrendingOrRequestTrending() {

        //  check for available cache
        boolean isAnyCache = mDBHelper.isTrendingsCached();
        Log.d("Database", " Cached " + isAnyCache);
        // subscribe for callback from database
        mDBHelper.setTrendingLoadListener(new DbHelper.TrendingLoadListener() {
            @Override
            public void onTrendingLoad(ExploreItemModel trendingItem) {

                dispatchMessage(
                        Constants.MESSAGE_STATUS_OK,
                        MESSAGE_TO_PASS,
                        trendingItem
                );
            }
        });

        if (!isAnyCache) {    // request for trending and then update
            // request
            mCloudManager.lazyRequestTrending();
        } else {
            // poke for available data
            mDBHelper.pokeForTrending();
        }

        sharedPrefrenceUtils.setLastLoadedType(TYPE_TRENDING);

    }

    private void dispatchMessage(int status, String message, ExploreItemModel data) {

       //L.m(("CDR", "dispatching Message");
        Message msg = Message.obtain();
        msg.obj = new ResultMessageObjectModel(
                status,
                message,    // temp : for future requis. if needed
                data
        );

        // send message
        mHandler.sendMessage(msg);
    }

}
package com.anychart.sample;

import androidx.test.espresso.contrib.RecyclerViewActions;
import androidx.test.espresso.web.webdriver.Locator;
import androidx.test.filters.LargeTest;
import androidx.test.rule.ActivityTestRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.Espresso.pressBack;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isEnabled;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.e


-default:hover,.result-map:hover,.result-torrent:hover,.result-videos:hover{background-color:#F6F9FA}.result-images{float:left!important;margin:0;padding:0}.result-images a{display:block;width:100%;background-size:cover}.result-images a .img-thumbnail{border:none!important;padding:0}.result-images a:focus,.result-images a:hover{outline:0}.result-images a:focus .img-thumbnail,.result-images a:hover .img-thumbnail{box-shadow:5px 5px 15px 0 #000}.result-images.js a .img-thumbnail{max-height:inherit;min-height:inherit}.result-images:not(.js){width:25%;padding:3px 13px 13px 3px}.result-images:not(.js) a .img-thumbnail{margin:0;max-height:128px;min-height:128px}.img-thumbnail{margin:5px;max-height:128px;min-height:128px}.result-videos{clear:both}.result-videos hr{margin:5px 0 15px 0}.result-videos .collapse{width:100%}.result-videos .in{margin-bottom:8px}.result-torrent{clear:both}.result-torrent b{margin-right:5px;margin-left:5px}.result-torrent .seeders{color:#2ecc71}.result-torrent .leechers{color:#F35E77}.result-metadata{clear:both;margin:1em}.result-metadata td{padding-right:1em;color:#A4A4A4}.result-metadata td:first-of-type{color:#666}.result-map{clear:both}.result-map .img-thumbnail{float:right;width:auto;height:120px;border:0;background:inherit}.result-map .img-type{width:20px;max-height:20px}.result-map .result-map-details{font-size:13px;border-collapse:separate;border-spacing:0 .35rem}.result-map .result-map-details th{font-weight:inherit;width:20rem;vertical-align:top}.result-map .result-map-details td{vertical-align:top}.result-code{clear:both}.result-code .code-fork,.result-code .code-fork a{color:#666}.suggestion_item{margin:2px 5px;max-width:100%}.suggestion_item .btn{max-width:100%;white-space:normal;word-wrap:break-word;text-align:left}.result_download{margin-right:5px}#pagination{margin-top:30px;padding-bottom:60px}.label-default{color:#666;background:0 0}.result .text-muted small{word-wrap:break-word}.modal-wrapper{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-wrapper{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0 none;position:relative}@media screen and (max-width:75em){.img-thumbnail{object-fit:cover}}.infobox .panel-heading{background-color:#F6F9FA}.infobox .panel-heading .panel-title{font-weight:700}.infobox .header_url{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.infobox p{font-family:"DejaVu Serif",Georgia,Cambria,"Times New Roman",Times,serif!important;font-style:italic}.infobox img{max-height:"250px"}.infobox .btn{background-color:#007AB8;border:none}.infobox .btn a{color:#fff;margin:5px}.infobox .infobox_part{margin-bott


a>

   :::tip
   Your rover has a maximum possible acceleration which is determined by the maximum torque the motor can supply.
   This may or may not be appropriate for your vehicle and use case.

   One approach to determine an appropriate value is:

   1. From a standstill, give the rover full throttle until it reaches the maximum speed.
   2. Disarm the rover and plot the `measured_speed_body_x` from [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md).
   3. Divide the maximum speed by the time it took to reach it and set this as the value for [RO_ACCEL_LIM](#RO_ACCEL_LIM).

   Some RC rovers have enough torque to lift up if the maximum acceleration is not limited.
   If that is the case:

   1. Set [RO_ACCEL_LIM](#RO_ACCEL_LIM) to a low value, give the rover full throttle from a standstill and observe its behaviour.
   2. Increase [RO_ACCEL_LIM](#RO_ACCEL_LIM) until the rover starts to lift up during the acceleration.
   3. Set [RO_ACCEL_LIM](#RO_ACCEL_LIM) to the highest value that does not cause the rover to lift up.

:::

3. (Optional) [RO_DECEL_LIM](#RO_DECEL_LIM) [m/s^2]: Maximum deceleration you want to allow for your rover.

   :::tip
   The same [considerations](#RO_ACCEL_LIM_CONSIDERATIONS) as in the configuration of [RO_ACCEL_LIM](#RO_ACCEL_LIM) apply.

:::

   :::info
   This parameter is also used for the calculation of the speed setpoint in modes that are [position controlled](position_tuning.md).

:::

## (Optional) Stick Input Mapping

Input shaping can be used to adjust the default linear mapping from stick inputs $\in [-1, 1]$ to normalized setpoints $\in [-1, 1]$. Applying this specifically to the steering input, can provide a smoother driving experience, by enabling the user to make small adjustments when the stick is close to the center, but still send large inputs when moving them to the edges.
We provide this input shaping through the super exponential function:

$$
\delta = \frac{(f \cdot x^3 + x(1-f)) \cdot (1-g)}{1-g \cdot |x|}
$$

with:

- $\delta \in [-1, 1]=$ Normalized steering setpoint.
- $x \in [-1, 1]=$ Normalized stick input.
- $f=$ [RO_YAW_EXPO](#RO_YAW_EXPO): `0` Purely linear input curve, `1` Purely cubic input curve.
- $g=$ [RO_YAW_SUPEXPO](#RO_YAW_SUPEXPO): `0` Pure Expo function, `0.7` reasonable shape enhancement for intuitive stick feel, `0.95` very strong bent input curve only near maxima have effect.

In [Manual mode](../flight_modes_rover/manual.md#manual-mode) we can additionally scale $\delta$ with an additional parameter $r$:

- Differential Rover: $r=$ [RD_YAW_STK_GAIN](#RD_YAW_STK_GAIN), which enables adjusting the slope of the input mapping. This leads to a normalized steering input $\hat{\delta} = \delta \cdot r \in$ [-[RD_YAW_STK_GAIN](#RD_YAW_STK_GAIN), [RD_YAW_STK_GAIN](#RD_YAW_STK_GAIN)].
- Mecanum Rover: $r=$ [RM_YAW_STK_GAIN](#RM_YAW_STK_GAIN), which enables adjusting the slope of the input mapping. This leads to a normalized steering input $\hat{\delta} = \delta \cdot r \in$ [-[RM_YAW_STK_GAIN](#RM_YAW_STK_GAIN), [RM_YAW_STK_GAIN](#RM_YAW_STK_GAIN)].

This scaling is useful to limit the normalized steering setpoint, if it is too aggresive for your rover in manual mode.

You can experiment with the relationships graphically using the [PX4 SuperExpo Rover calculator](https://www.desmos.com/calculator/gwm8lrlanx).

:::info
In [Acro](../flight_modes_rover/manual.md#acro-mode), [Stabilized](../flight_modes_rover/manual.md#stabilized-mode) and [Position](../flight_modes_rover/manual.md#position-mode) Mode, $\delta$ is instead scaled by $r=$ [RO_YAW_RATE_LIM](../advanced_config/


elin chama isso "antropologia de sonho": você imagina um mundo que nunca existiu e raciocina a partir dele, e a partir desse mundo imaginário você tenta fundamentar o mundo real no seu sonho. É exatamente o que está fazendo o nosso amigo Julio Lemos aqui: um mundo de sonho onde ele assistiu à morte de Sócrates e onde tudo se passa ao contrário do que Platão está dizendo.

Nós temos aqui realmente de agradecer ao Júlio Lemos por ser um anti-modelo tão perfeito, por exemplificar tudo aquilo que eu não gostaria que os meus alunos fossem: pessoas apegadas às suas profissõezinhas universitárias, aos seus regulamentos acadêmicos e que desprezam a estrutura da realidade, preferem viver numa situação onde a aparência predomina sobre a realidade. Claro, há situações sociais em que isso parece acontecer. Mas se todo mundo está acreditando na aparência e valorizando a aparência e não a realidade, nós sabemos que no fim das contas quem vai predominar é a realidade. Se não predominar durante a vida, predominará na morte, porque desta não tem escapatória.

Eu acho que esta aula foi longe demais, e não faremos a segunda parte. Obrigado pela paciência que tiveram. Temos algum aviso?

*Aluno: O curso.*

Olavo: Só para lembrá-los: eu vou dar aqui de 7 a 12 de maio o curso Conhecimento e Moralidade, que tem muito a ver com isso. Tem as dicas todas na minha página. Até a semana que vem, muito obrigado.

Transcrição realizada por Jussara Reis de Abreu.

Revisão: Igor Lins Vieira.
*Curso Online de Filosofia*

Olavo de Carvalho

Aula 51

27 de março de 2010

+--------------------------------------------------------------------+
| \[**versão provisória**\]                                          |
|                                                                    |
| Para uso exclusivo dos alunos do Curso Online de Filosofia.        |
|                                                                    |
| O texto desta transcrição não foi revisto ou corrigido pelo autor. |
|                                                                    |
| Por favor não cite nem divulgue este material.                     |
+--------------------------------------------------------------------+

Então vamos lá. Boa tarde a todos, sejam bem vindos.

Eu queria lembrar aqui a vocês que quando eu planejei esse curso com a duração média de quatro a cinco anos, eu tinha em vista certos objetivos intelectuais a serem atingidos, mas que, mesmo para vocês, só se tornarão claros nas últimas etapas. A própria palavra "formação" que a gente usa, subtende um processo, e esse processo vocês vão atravessar, vocês estão passando por ele. Muitos já perceberam assim transformações profundas que estão passando na sua consciência, mas podem ter certeza que estão acontecendo até mais coisas do que vocês estão percebendo e que só vão se revelar no fim, quando esses vários fios que nós estamos lançando aqui começarem a se juntar. Não esqueçam que nós passamos um ano inteiro praticamente só com conselhos de ordem prática e de ordem moral que são necessários ao exercício da filosofia, e que só algumas aulas atrás é que nós começamos a dar alguns elementos técnicos, especificamente da parte de lógica.

Esses elementos não estão sendo lecionados aqui como são normalmente num curso de lógica, porque a mim me parece que a lógica é uma das ciênci


未来发展持怎样的看法？                   |
| 生活方式 | 你认为什么样的生活方式最有益于身心健康？|
| 健身房 | 你如何评价目前市面上的健身房服务质量与价格？|
| 美食文化 | 在你看来，哪些国家或地区拥有最具特色的美食文化？|
| 天气预报 | 对于天气预报准确率不高的情况，你有什么建议或期望？|
| 育儿教育 | 你认为现代父母在育儿教育方面存在哪些误区？|
| 员工福利 | 你心目中理想的员工福利是什么样的？|
| 社交网络 | 在社交网络上，你更喜欢关注哪些类型的账号？|
| 数字支付 | 在日常消费中，你更倾向于使用哪种数字支付方式？|
| 旅游观光 | 去过的城市中，哪座城市给你留下了最深刻的印象，为什么？|
| 文学作品 | 你认为哪本经典文学作品对当今社会影响最大？|| 标题 | 问题 |
| --- | --- |
| 电影推荐 | 你能否推荐一些类型为惊悚的最新电影？ |
| 旅游建议 | 在夏威夷度假，有哪些必去的景点和活动？ |
| 餐厅建议 | 我在巴黎，你能给我推荐一家不错的法国餐厅吗？ |
| 公司规划 | 我们公司打算扩张至欧洲市场，你认为最重要的考虑因素是什么？ |
| 股票投资 | 你认为现在该买进还是卖出比特币？ |
| 情感分析 | 分析这篇文章的情感色彩是正面、负面还是中性？ |
| 大数据分析 | 请根据这份销售数据报告，告诉我们哪一个季度的销售额最高？ |
| 新闻编辑 | 这则新闻稿稿件需要进行哪些修改来提高可读性？ |
| 文案撰写 | 请根据以下产品说明，撰写适用于社交媒体发布的文案。 |
| 翻译服务 | 帮我把这段英文翻译成中文：GPT-3 is the next generation of machine learning models. It is capable of natural language processing and can generate text that is difficult to distinguish from human-generated text. |
|健康生活|请列举5种可以降低血压的饮食习惯。|
|旅游规划|在悉尼旅游，推荐几个必去景点？|
|教育心理学|怎样引导孩子树立正确的自我价值观？|
|文化艺术|讲述一下希腊神话中阿芙罗狄蒂的故事背景与形象特征。|
|环境保护|哪些常见的塑料制品不能回收？如何处理这些不可回收的垃圾？|
|历史事件|解释黑色星期五是指什么历史事件？|
|金融投资


"),
            ),
            Downloadable(
                "Phi 2 DPO (Q3_K_M, 1.48 GiB)",
                Uri.parse("https://huggingface.co/TheBloke/phi-2-dpo-GGUF/resolve/main/phi-2-dpo.Q3_K_M.gguf?download=true"),
                File(extFilesDir, "phi-2-dpo.Q3_K_M.gguf")
            ),
        )

        setContent {
            LlamaAndroidTheme {
                // A surface container using the 'background' color from the theme
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                ) {
                    MainCompose(
                        viewModel,
                        clipboardManager,
                        downloadManager,
                        models,
                    )
                }

            }
        }
    }
}

@Composable
fun MainCompose(
    viewModel: MainViewModel,
    clipboard: ClipboardManager,
    dm: DownloadManager,
    models: List<Downloadable>
) {
    Column {
        val scrollState = rememberLazyListState()

        Box(modifier = Modifier.weight(1f)) {
            LazyColumn(state = scrollState) {
                items(viewModel.messages) {
                    Text(
                        it,
                        style = MaterialTheme.typography.bodyLarge.copy(color = LocalContentColor.current),
                        modifier = Modifier.padding(16.dp)
                    )
                }
            }
        }
        OutlinedTextField(
            value = viewModel.message,
            onValueChange = { viewModel.updateMessage(it) },
            label = { Text("Message") },
        )
        Row {
            Button({ viewModel.send() }) { Text("Send") }
            Button({ viewModel.bench(8, 4, 1) }) { Text("Bench") }
            Button({ viewModel.clear() }) { Text("Clear") }
            Button({
                viewModel.messages.joinToString("\n").let {
                    clipboard.setPrimaryClip(ClipData.newPlainText("", it))
                }
            }) { Text("Copy") }
        }

        Column {
            for (model in models) {
                Downloadable.Button(viewModel, dm, model)
            }
        }
    }
}
package ir.matin.matinfilm.ui.home.adapter

import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import ir.matin.matinfilm.data.model.PopularResponse
import ir.matin.matinfilm.databinding.ItemPopularBinding
import ir.matin.matinfilm.databinding.ItemTopRatedBinding
import ir.matin.matinfilm.utils.BANNER_IMAGE_SIZE
import ir.matin.matinfilm.utils.TMDB_IMAGE_BASE_URL_W780
import ir.matin.matinfilm.utils.base.BaseDiffUtils
import javax.inject.Inject

class TopRatedAdapter @Inject constructor() :
    RecyclerView.Adapter<TopRatedAdapter.PopularViewHolder>() {
    lateinit var binding: ItemTopRatedBinding
    private var items = emptyList<PopularResponse.Result>()
    override fun onCreateViewHolder(
        parent: ViewGroup,
        viewType: Int,
    ): PopularViewHolder {
        binding = ItemTopRatedBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return PopularViewHolder()

    }

    override fun onBindViewHolder(
        holder: PopularViewHolder,
        position: Int,
    ) = holder.bindData(items[position])

    override fun getItemId(position: Int): Long = position.toLong()

    override fun getItemViewType(position: Int): Int = position

    override fun getItemCount(): Int =
        if (items.size > BANNER_IMAGE_


erializeOwned, Deserialize, Serialize};
use tokio::{
    io::AsyncRead,
    io::AsyncReadExt,
    io::AsyncWrite,
    io::{AsyncWriteExt, ReadHalf, WriteHalf},
};

use crate::IronCarrierError;

const BUFFER_SIZE: usize = 8 * 1024;
const COMMAND_SIZE: usize = 8;

/// A Message to be serialized or deserialized for the rpc call
///
/// It uses [bincode] to serialize arguments
/// #Examples
///
/// ``` ignore
/// let mut message = FrameMessage::new("message_name".to_string());
/// message.append_arg(1);
/// message.append_arg("a");
/// ```
#[derive(Serialize, Deserialize, Debug)]
pub struct FrameMessage {
    ident: String,
    data: Vec<u8>,
}

impl FrameMessage {
    /// Creates a new [FrameMessage] without any args
    pub fn new(ident: &str) -> Self {
        Self {
            ident: ident.to_owned(),
            data: Vec::new(),
        }
    }

    /// Returns the name of this frame
    pub fn frame_ident(&self) -> &str {
        &self.ident
    }

    /// Add an argument of type `T` to this frame
    ///
    /// Returns [Ok] if successful
    pub fn with_arg<A: Serialize>(mut self, arg: &A) -> crate::Result<Self> {
        let ser_value = bincode::serialize(arg)?;
        let ser_size = bincode::serialize(&ser_value.len())?;

        self.data.extend(ser_size);
        self.data.extend(ser_value);

        Ok(self)
    }

    /// Return the next argument in this frame
    ///
    /// This function may fail if the argument can't be deserialized to [`T`]
    /// or if there isn't an argument to be retrieved
    ///
    /// [`OK`]`(`[T]`)` if the argument is correct
    pub fn next_arg<A: DeserializeOwned>(&mut self) -> crate::Result<A> {
        let size = std::mem::size_of::<usize>();

        if self.data.len() < size {
            return Err(IronCarrierError::ParseCommandError.into());
        }

        let bytes: Vec<u8> = self.data.drain(0..size).collect();

        let size: usize = bincode::deserialize(&bytes)?;

        if self.data.len() < size {
            return Err(IronCarrierError::ParseCommandError.into());
        }

        let bytes: Vec<u8> = self.data.drain(0..size).collect();
        let result = bincode::deserialize::<A>(&bytes)?;

        Ok(result)
    }
}

impl From<&str> for FrameMessage {
    /// Creates a new [`FrameMessage`] from a primitive [`str`]
    fn from(name: &str) -> Self {
        FrameMessage::new(name)
    }
}

/// Creates and return a pair of [FrameReader]  and [FrameWriter] using stream
/// It consumes stream in the process
pub fn frame_stream<T: AsyncRead + AsyncWrite + Unpin>(
    stream: T,
) -> (FrameReader<ReadHalf<T>>, FrameWriter<WriteHalf<T>>) {
    let (rx, tx) = tokio::io::split(stream);
    (FrameReader::new(rx), FrameWriter::new(tx))
}

/// Read only [FrameMessage] processor
///
/// it uses an internal buffer to store information read from the stream
pub struct FrameReader<T: AsyncRead + Unpin> {
    socket_stream: T,
    buffer: BytesMut,
}

/// Write only [FrameMessage] processor
pub struct FrameWriter<T: AsyncWrite + Unpin> {
    socket_stream: T,
}

impl<T: AsyncRead + Unpin> FrameReader<T> {
    /// Constructs a new [FrameReader] using the socket_stream
    /// Pre allocates a buffer to store information
    pub fn new(socket_stream: T) -> Self {
        Self {
            socket_stream,
            buffer


77.cljs$lang$ctorStr = "cljs.core/t_cljs$core12477");

(cljs.core.t_cljs$core12477.cljs$lang$ctorPrWriter = (function (this__9730__auto__,writer__9731__auto__,opt__9732__auto__){
return cljs.core._write(writer__9731__auto__,"cljs.core/t_cljs$core12477");
}));

/**
 * Positional factory function for cljs.core/t_cljs$core12477.
 */
cljs.core.__GT_t_cljs$core12477 = (function cljs$core$nil_iter_$___GT_t_cljs$core12477(meta12478){
return (new cljs.core.t_cljs$core12477(meta12478));
});

}

return (new cljs.core.t_cljs$core12477(cljs.core.PersistentArrayMap.EMPTY));
});

/**
* @constructor
*/
cljs.core.StringIter = (function (s,i){
this.s = s;
this.i = i;
});
(cljs.core.StringIter.prototype.hasNext = (function (){
var self__ = this;
var _ = this;
return (self__.i < self__.s.length);
}));

(cljs.core.StringIter.prototype.next = (function (){
var self__ = this;
var _ = this;
var ret = self__.s.charAt(self__.i);
(self__.i = (self__.i + (1)));

return ret;
}));

(cljs.core.StringIter.prototype.remove = (function (){
var self__ = this;
var _ = this;
return (new Error("Unsupported operation"));
}));

(cljs.core.StringIter.getBasis = (function (){
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"s","s",-948495851,null),cljs.core.with_meta(new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
}));

(cljs.core.StringIter.cljs$lang$type = true);

(cljs.core.StringIter.cljs$lang$ctorStr = "cljs.core/StringIter");

(cljs.core.StringIter.cljs$lang$ctorPrWriter = (function (this__9730__auto__,writer__9731__auto__,opt__9732__auto__){
return cljs.core._write(writer__9731__auto__,"cljs.core/StringIter");
}));

/**
 * Positional factory function for cljs.core/StringIter.
 */
cljs.core.__GT_StringIter = (function cljs$core$__GT_StringIter(s,i){
return (new cljs.core.StringIter(s,i));
});

cljs.core.string_iter = (function cljs$core$string_iter(x){
return (new cljs.core.StringIter(x,(0)));
});

/**
* @constructor
*/
cljs.core.ArrayIter = (function (arr,i){
this.arr = arr;
this.i = i;
});
(cljs.core.ArrayIter.prototype.hasNext = (function (){
var self__ = this;
var _ = this;
return (self__.i < self__.arr.length);
}));

(cljs.core.ArrayIter.prototype.next = (function (){
var self__ = this;
var _ = this;
var ret = (self__.arr[self__.i]);
(self__.i = (self__.i + (1)));

return ret;
}));

(cljs.core.ArrayIter.prototype.remove = (function (){
var self__ = this;


static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(re(t[1])){const e=t[1];if("FeatureCollection"===e.type){const t=[];for(const r of e.features){const{type:e,coordinates:n}=r.geometry;"Polygon"===e&&t.push(n),"MultiPolygon"===e&&t.push(...n);}if(t.length)return new pr(e,{type:"MultiPolygon",coordinates:t})}else if("Feature"===e.type){const t=e.geometry.type;if("Polygon"===t||"MultiPolygon"===t)return new pr(e,e.geometry)}else if("Polygon"===e.type||"MultiPolygon"===e.type)return new pr(e,e)}return e.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){const s=or(e.coordinates,n,i),a=cr(t.geometry(),r,n,i);if(!We(r,n))return !1;for(const t of a)if(!rr(t,s))return !1}if("MultiPolygon"===e.type){const s=lr(e.coordinates,n,i),a=cr(t.geometry(),r,n,i);if(!We(r,n))return !1;for(const t of a)if(!nr(t,s))return !1}return !0}(t,this.geometries);if("LineString"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){const s=or(e.coordinates,n,i),a=hr(t.geometry(),r,n,i);if(!We(r,n))return !1;for(const t of a)if(!ir(t,s))return !1}if("MultiPolygon"===e.type){const s=lr(e.coordinates,n,i),a=hr(t.geometry(),r,n,i);if(!We(r,n))return !1;for(const t of a)if(!sr(t,s))return !1}return !0}(t,this.geometries)}return !1}eachChild(){}outputDefined(){return !0}}let fr=class{constructor(t=[],e=dr){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this.length++,this._up(this.length-1);}pop(){if(0===this.length)return;const


::get();

		type Error = Error<T, I>;

		fn deposit_event() = default;

		/// Put forward a suggestion for spending. A deposit proportional to the value
		/// is reserved and slashed if the proposal is rejected. It is returned once the
		/// proposal is awarded.
		///
		/// # <weight>
		/// - Complexity: O(1)
		/// - DbReads: `ProposalCount`, `origin account`
		/// - DbWrites: `ProposalCount`, `Proposals`, `origin account`
		/// # </weight>
		#[weight = T::WeightInfo::propose_spend()]
		fn propose_spend(
			origin,
			#[compact] value: BalanceOf<T, I>,
			beneficiary: <T::Lookup as StaticLookup>::Source
		) {
			let proposer = ensure_signed(origin)?;
			let beneficiary = T::Lookup::lookup(beneficiary)?;

			let bond = Self::calculate_bond(value);
			T::Currency::reserve(&proposer, bond)
				.map_err(|_| Error::<T, I>::InsufficientProposersBalance)?;

			let c = Self::proposal_count();
			<ProposalCount<I>>::put(c + 1);
			<Proposals<T, I>>::insert(c, Proposal { proposer, value, beneficiary, bond });

			Self::deposit_event(RawEvent::Proposed(c));
		}

		/// Reject a proposed spend. The original deposit will be slashed.
		///
		/// May only be called from `T::RejectOrigin`.
		///
		/// # <weight>
		/// - Complexity: O(1)
		/// - DbReads: `Proposals`, `rejected proposer account`
		/// - DbWrites: `Proposals`, `rejected proposer account`
		/// # </weight>
		#[weight = (T::WeightInfo::reject_proposal(), DispatchClass::Operational)]
		fn reject_proposal(origin, #[compact] proposal_id: ProposalIndex) {
			T::RejectOrigin::ensure_origin(origin)?;

			let proposal = <Proposals<T, I>>::take(&proposal_id).ok_or(Error::<T, I>::InvalidIndex)?;
			let value = proposal.bond;
			let imbalance = T::Currency::slash_reserved(&proposal.proposer, value).0;
			T::OnSlash::on_unbalanced(imbalance);

			Self::deposit_event(Event::<T, I>::Rejected(proposal_id, value));
		}

		/// Approve a proposal. At a later time, the proposal will be allocated to the beneficiary
		/// and the original deposit will be returned.
		///
		/// May only be called from `T::ApproveOrigin`.
		///
		/// # <weight>
		/// - Complexity: O(1).
		/// - DbReads: `Proposals`, `Approvals`
		/// - DbWrite: `Approvals`
		/// # </weight>
		#[weight = (T::WeightInfo::approve_proposal(), DispatchClass::Operational)]
		fn approve_proposal(origin, #[compact] proposal_id: ProposalIndex) {
			T::ApproveOrigin::ensure_origin(origin)?;

			ensure!(<Proposals<T, I>>::contains_key(proposal_id), Error::<T, I>::InvalidIndex);
			Approvals::<I>::append(proposal_id);
		}

		/// Report something `reason` that deserves a tip and claim any eventual the finder's fee.
		///
		/// The dispatch origin for this call must be _Signed_.
		///
		/// Payment: `TipReportDepositBase` will be reserved from the origin account, as well as
		/// `DataDepositPerByte` for each byte in `reason`.
		///
		/// - `reason`: The reason for, or the thing that deserves, the tip; generally this will be
		///   a UTF-8-encoded URL.
		/// - `who`: Th


sh button.h5p-hub-outlined.h5p-hub-green:hover,.h5p-hub-registration button.h5p-hub-outlined.h5p-hub-green:hover{background-color:#186df7;border-color:#186df7;color:#ffffff}.h5p-hub-publish button.h5p-hub-outlined.h5p-hub-green[disabled],.h5p-hub-registration button.h5p-hub-outlined.h5p-hub-green[disabled]{color:#aac3ec;border-color:#aac3ec;background-color:white;pointer-events:none}.h5p-hub-publish .h5p-hub-navigation button{padding:0.833em;max-width:10.5em}

.h5p-hub-publish .h5p-hub-form-element,.h5p-hub-registration .h5p-hub-form-element{font-family:Nunito, sans-serif;font-size:16px;padding:1em 0}.h5p-hub-publish .h5p-hub-form-element label,.h5p-hub-registration .h5p-hub-form-element label{display:block;margin-bottom:0.4em;font-weight:bold}.h5p-hub-publish .h5p-hub-form-element.h5p-hub-mandatory label:after,.h5p-hub-registration .h5p-hub-form-element.h5p-hub-mandatory label:after{content:'*';color:#d11e15;position:relative;top:-0.2em}.h5p-hub-publish .h5p-hub-form-element input,.h5p-hub-registration .h5p-hub-form-element input{border-radius:0.208em;width:100%;box-sizing:border-box;line-height:normal}.h5p-hub-publish .h5p-hub-form-element input::placeholder,.h5p-hub-registration .h5p-hub-form-element input::placeholder{font-style:italic}.h5p-hub-publish .h5p-hub-form-element .h5p-hub-description,.h5p-hub-registration .h5p-hub-form-element .h5p-hub-description{font-size:0.833em;color:#707475;margin:0 0 1em 0}.h5p-hub-publish .h5p-hub-form-element textarea,.h5p-hub-registration .h5p-hub-form-element textarea{resize:none;width:100%;border-radius:0.208em;box-sizing:border-box;line-height:1.25em}.h5p-hub-publish .h5p-hub-form-element textarea::-webkit-scrollbar,.h5p-hub-registration .h5p-hub-form-element textarea::-webkit-scrollbar{background-color:rgba(105,117,133,0.25);width:0.333em;border-radius:5.45256em}.h5p-hub-publish .h5p-hub-form-element textarea::-webkit-scrollbar-thumb,.h5p-hub-registration .h5p-hub-form-element textarea::-webkit-scrollbar-thumb{background-color:#697585;background-size:24px 100%;border-radius:5.45256em}.h5p-hub-publish .h5p-hub-form-element textarea::placeholder,.h5p-hub-registration .h5p-hub-form-element textarea::placeholder{font-style:italic}.h5p-hub-publish .h5p-hub-form-element .h5p-hub-link-button,.h5p-hub-registration .h5p-hub-form-element .h5p-hub-link-button{border:none;text-decoration:underline;text-align:right;align-self:flex-start;color:#186df7;font-size:.917em;font-weight:normal;padding:0}.h5p-hub-publish .h5p-hub-form-


om '@hi-ui/use-uncontrolled-state'

const initialStateInSearch = () => ({
  matched: false,
  data: [],
  expandedIds: [],
})

/**
 * TODO: What is useSearchMode
 */
export const useSearchMode = ({
  searchable: searchableProp,
  strategies,
  keyword: keywordProp,
}: UseSearchModeProps) => {
  const [keyword, setKeyword] = useUncontrolledState('', keywordProp)

  // 搜索时的临时节点数据
  const [stateInSearch, setStateInSearch] = useState<any>(initialStateInSearch)

  const resetState = useCallback(() => {
    setStateInSearch(initialStateInSearch)
  }, [])

  // 搜索策略，优先级按数组查找顺序
  const strategy = strategies.find((strategy) => {
    return strategy && strategy.enabled
  })

  // 帮助用户自动开启 searchable
  const searchable = searchableProp === false ? false : !!strategy
  const searchMode: string = (searchable && strategy && strategy.name) || ''
  const runSearchStrategy = strategy ? strategy.run : undefined

  const runSearch = useCallback(
    (keyword: string) => {
      if (!searchable) return
      if (keyword && runSearchStrategy) {
        runSearchStrategy(keyword, setStateInSearch)
      }
    },
    [searchable, runSearchStrategy]
  )

  const onSearch = useCallback(
    (keyword: string) => {
      if (!searchable) return

      setKeyword(keyword)
      runSearch(keyword)
    },
    [searchable, setKeyword, runSearch]
  )

  const keywordLatestRef = useLatestRef(keyword)

  // 外部数据或策略改变时，重新触发搜索
  useEffect(() => {
    runSearch(keywordLatestRef.current)
  }, [keywordLatestRef, runSearch])

  const inSearch = !!keyword
  const isEmpty = inSearch && stateInSearch.data.length === 0

  return {
    searchable,
    searchMode,
    keyword,
    onSearch,
    inSearch,
    isEmpty,
    state: stateInSearch,
    setStateInSearch,
    resetState,
  }
}

export interface UseSearchModeProps<T = any> {
  /**
   * 节点搜索模式，仅在mode=normal模式下生效
   */
  searchMode?: 'highlight' | 'filter'
  /**
   * 自定义搜索过滤器，仅在 searchable 为 true 时有效
   * 第一个参数为输入的关键字，
   * 第二个为数据项，返回值为 true 时将出现在结果项
   */
  filterOption?: (keyword: string, item: any) => boolean
  /**
   * 开启检索
   */
  searchable?: boolean
  /**
   * 搜索关键字，searchable 为 true 时有效
   */
  keyword?: string
  /**
   * 异步加载数据
   */
  dataSource?: UseDataSource<T>
  //  DataSourceFun | TreeSelectDataSource | Promise<TreeSelectDataItem[]>
  strategies: any[]
}

export type UseSearchModeReturn = ReturnType<typeof useSearchMode>

export const useAsyncSearch = ({ dataSource, dataTransform }: any) => {
  // 提到外部
  const { loading, hasError, loadRemoteData } = useDataSource({ dataSource, validate: isArray })
  const dataTransformLatestRef = useLatestRef(dataTransform)

  const onAsyncSearch = useCallback(
    (keyword: string, dispatch) => {
      // setStatus('loading')
      loadRemoteData(keyword)
        .


.814 24 8.772 24 8.772Zm13.148 17.123H24m14.288 3.203H24m17.968 11.439H24"/><path fill="currentColor" stroke="currentColor" stroke-linejoin="round" d="m11.554 31.49-2.132 6.724h20.99l-1.437-6.723H11.554Z"/><path fill="currentColor" stroke="currentColor" d="M32.415 31.49h3.48c1.635 4.595 1.615 4.774 2.259 6.723h-4.055l-1.684-6.723m-22.247 3.317h19.627m7.258 0h-3.74m-19.527 3.237 1.554-6.369m2.791 6.505.815-6.504m3.251 6.332.107-6.404m3.992 6.444-.8-6.285m-8.179-14.201a1.22 1.22 0 00.206-.826v-.258"/><circle cx="23.385" cy="16.989" r=".75" fill="currentColor"/><path fill="currentColor" stroke="currentColor" d="M25.416 14.98h2.066m-6.557-2.478h-.826v4.956h.826m8.935-4.956h.826v4.956h-.826"/></svg>';
  static const String brainly =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"><circle cx="24" cy="24" r="21.5" fill="currentColor" stroke="currentColor"/><path fill="currentColor" stroke="currentColor" d="m9.332 8.28 22.827-4.172M15.896 43.841l22.827-4.173M26.617 23.054l-9.242 1.696m9.242-1.696a4.482 4.482 0 015.601 4.403 6.956 6.956 0 01-5.601 6.458l-9.242 1.696V13.889l9.242-1.696a4.482 4.482 0 015.601 4.403 6.956 6.956 0 01-5.601 6.458Zm-10.836-8.873 1.594-.292m-1.594 22.014 1.594-.293"/></svg>';
  static const String brakarbillett =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"><path fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M36.837 14.907a33.213 33.213 0 016.663 2.865 45.104 45.104 0 00-4.17 4.313 44.204 44.204 0 00-34.8-.358s16.883-.18 17.52 17.683"/><path fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M30.973 39.41s.985-24.1-26.473-26.965c6.4-2.707 15.374-3.956 24.94-2.205.289-2.71 4.612-1.798 3.727.683a29.305 29.305 0 015.013 1.432"/></svg>';
  static const String brave =
      '<svg xml


), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(128, r11), w_rdi),
        "498BBB80000000",
        "movq    128(%r11), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(128, r12), w_rdi),
        "498BBC2480000000",
        "movq    128(%r12), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(128, r13), w_rdi),
        "498BBD80000000",
        "movq    128(%r13), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(128, r14), w_rdi),
        "498BBE80000000",
        "movq    128(%r14), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(128, r15), w_rdi),
        "498BBF80000000",
        "movq    128(%r15), %rdi",
    ));

    // ========================================================
    // Addr_IR, offset smallest negative simm32
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(-129i32 as u32, rax), w_rdi),
        "488BB87FFFFFFF",
        "movq    -129(%rax), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(-129i32 as u32, rbx), w_rdi),
        "488BBB7FFFFFFF",
        "movq    -129(%rbx), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(-129i32 as u32, rcx), w_rdi),
        "488BB97FFFFFFF",
        "movq    -129(%rcx), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(-129i32 as u32, rdx), w_rdi),
        "488BBA7FFFFFFF",
        "movq    -129(%rdx), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(-129i32 as u32, rbp), w_rdi),
        "488BBD7FFFFFFF",
        "movq    -129(%rbp), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(-129i32 as u32, rsp), w_rdi),
        "488BBC247FFFFFFF",
        "movq    -129(%rsp), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(-129i32 as u32, rsi), w_rdi),
        "488BBE7FFFFFFF",
        "movq    -129(%rsi), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(-129i32 as u32, rdi), w_rdi),
        "488BBF7FFFFFFF",
        "movq    -129(%rdi), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(-129i32 as u32, r8), w_rdi),
        "498BB87FFFFFFF",
        "movq    -129(%r8), %rdi",
    ));
    insns.push((
        i_Mov64_M_R(ip_Addr_IR(-129i32 as u32, r9), w_rdi),
        "498BB97FFFF


[1-]
        ldq	$1, PROCESSORSTATE_STACKCACHESIZE($14)	#  [1]
        addq	$18, $1, $1 	# [3]
        stq	$1, PROCESSORSTATE_STACKCACHETOPVMA($14)	#  [0di]
        br	$31, NEXTINSTRUCTION	# [1]
#else
        bis	$31, 0, $20 	# [0di]
        bis	$31, 84, $17 	# [1]
	br	$31, ILLEGALOPERAND
#endif
.end WriteRegisterStackCacheLowerBound
.align 5
.globl WriteRegisterContinuation
.ent WriteRegisterContinuation 0
.align 3
WriteRegisterContinuation:
        sll	$17, 32, $19 	# [1]
        bis	$19, $18, $19 	# construct the combined word [2]
        stq	$19, PROCESSORSTATE_CONTINUATION($14)	#  [1-]
        br	$31, NEXTINSTRUCTION	# [1]
.end WriteRegisterContinuation
.align 5
.globl WriteRegisterAluAndRotateControl
.ent WriteRegisterAluAndRotateControl 0
.align 3
WriteRegisterAluAndRotateControl:
        srl	$18, 14, $1 	# [1-]
        and	$1, 3, $1 	# Extract the function class bits [2]
        stq	$18, PROCESSORSTATE_ALUANDROTATECONTROL($14)	#  [1-]
        srl	$18, 5, $2 	# [0di]
        and	$2, 31, $2 	# Extract the byte size [2]
        stq	$1, PROCESSORSTATE_ALUOP($14)	#  [0di]
        and	$18, 31, $3 	# Extract the Byte Rotate [1-]
        stq	$2, PROCESSORSTATE_BYTESIZE($14)	#  [0di]
        stq	$3, PROCESSORSTATE_BYTEROTATE($14)	#  [1]
        br	$31, NEXTINSTRUCTION	# [1]
.end WriteRegisterAluAndRotateControl
.align 5
.globl WriteRegisterControlRegister
.ent WriteRegisterControlRegister 0
.align 3
WriteRegisterControlRegister:
        stl	$18, PROCESSORSTATE_CONTROL($14)	#  [1]
        br	$31, NEXTINSTRUCTION	# [1]
.end WriteRegisterControlRegister
.align 5
.globl WriteRegisterEphemeralOldspaceRegister
.ent WriteRegisterEphemeralOldspaceRegister 0
.align 3
WriteRegisterEphemeralOldspaceRegister:
        stq	$31, PROCESSORSTATE_AC0ARRAY($14)	#  [1]
        stq	$31, PROCESSORSTATE_AC1ARRAY($14)	#  [1]
        stq	$31, PROCESSORSTATE_AC2ARRAY($14)	#  [1]
        stq	$31, PROCESSORSTATE_AC3ARRAY($14)	#  [1]
        stq	$31, PROCESSORSTATE_AC4ARRAY($14)	#  [1]
        stq	$31, PROCESSORSTATE_AC5ARRAY($14)	#  [1]
        stq	$31, PROCESSORSTATE_AC6ARRAY($14)	#  [1]
        stq	$31, PROCESSORSTATE_AC7ARRAY($14)	#  [1]
        stl	$18, PROCESSORSTATE_EPHEMERALOLDSPACE($14)	#  [1]
        br	$31, NEXTINSTRUCTION	# [1]
.end WriteRegisterEphemeralOldspaceRegister
.align 5
.globl WriteRegisterZoneOldspaceRegister
.ent WriteRegisterZoneOldspaceRegister 0
.align 3
WriteRegisterZoneOldspaceRegister:
        stl	$18, PROCESSORSTATE_ZONEOLDSPACE($14)	#  [1]
        br	$31, NEXTINSTRUCTION	# [1]
.end WriteRegisterZoneOldspaceRegister
.align 5
.globl WriteRegisterFPCop


.ExampleInfo ei)
        {
            void CheckCode(PlotModel model)
            {
                if (model == null)
                {
                    return;
                }

                var code = model.ToCode();
                Assert.That(code, Is.Not.Null, ei.Title);
            }

            CheckCode(ei.PlotModel);
        }

        /// <summary>
        /// Test that code generation properly handles escapes sequences in strings
        /// </summary>
        [Test]
        public void TestCodeGeneratorStringExtensions()
        {
            var plot = new PlotModel();

            // a custom tracker format string that shows x axis values in seconds as "m:ss.ff"
            var series = new Series.LineSeries()
            {
                TrackerFormatString = "{1}: {2:m\\:ss\\.ff}\n{3}: {4:0.##}",
            };
            plot.Series.Add(series);

            StringAssert.Contains(@"{1}: {2:m\\:ss\\.ff}\n{3}: {4:0.##}", plot.ToCode());
        }
    }
}


E6,0xE6,0xE8,0xE8,0xEA,0xEC,0xED,0xF0,0xF0,0xF1,0xF3,0xF3
	.byte 0xF4,0xF2,0xF1,0xF0,0xEE,0xEE,0xEC,0xEA,0xEA,0xE9,0xE9,0xE8,0xE8,0xE7,0xE7,0xE6
	.byte 0xE5,0xE4,0xE4,0xE4,0xE3,0xE3,0xE3,0xE3,0xE2,0xE2,0xE2,0xE2,0xE1,0xE1,0xE1,0xE1
	.byte 0xE2,0xE3,0xE4,0xE4,0xE6,0xE7,0xE9,0xEB,0xEC,0xED,0xEF,0xF0,0xF0,0xF0,0xF0,0xEF
	.byte 0xED,0xEB,0xE8,0xE4,0xE1,0xDE,0xDA,0xD8,0xD5,0xD2,0xD0,0xCE,0xCD,0xCC,0xCB,0xCB
	.byte 0xCB,0xCB,0xCA,0xCC,0xCD,0xCD,0xD0,0xD2,0xD5,0xD7,0xDA,0xDD,0xDF,0xE1,0xE4,0xE5
	.byte 0xE7,0xE7,0xE9,0xEB,0xE9,0xE8,0xE8,0xE8,0xE5,0xE3,0xE2,0xE0,0xDE,0xDD,0xDB,0xDA

	.byte 0xD9,0xD7,0xD7,0xD6,0xD6,0xD6,0xD7,0xD8,0xD9,0xDA,0xDC,0xDD,0xE0,0xE2,0xE5,0xE6
	.byte 0xE8,0xE9,0xEB,0xEC,0xEC,0xEC,0xEC,0xEC,0xEC,0xEB,0xEB,0xEA,0xE9,0xE8,0xE8,0xE8
	.byte 0xE7,0xE8,0xE9,0xEA,0xEC,0xEC,0xED,0xF0,0xF0,0xF1,0xF2,0xF3,0xF4,0xF4,0xF5,0xF5
	.byte 0xF4,0xF5,0xF5,0xF5,0xF4,0xF4,0xF4,0xF3,0xF4,0xF4,0xF4,0xF4,0xF4,0xF5,0xF6,0xF7
	.byte 0xF8,0xF9,0xFB,0xFC,0xFD,0xFE,0xFF,0x00,0x00,0x01,0x01,0x02,0x01,0x02,0x01,0x02
	.byte 0x01,0x02,0x02,0x03,0x03,0x03,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x06,0x06,0x05
	.byte 0x06,0x06,0x05,0x04,0x05,0x04,0x04,0x05,0x06,0x07,0x09,0x0C,0x0D,0x10,0x11,0x12
	.byte 0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x13,0x13,0x13,0x11,0x10,0x


days$1[i], day);
            });
            dropdown.setValue(this.plugin.options.weekStart);
            dropdown.onChange(async (value) => {
                this.plugin.writeOptions(() => ({
                    weekStart: value,
                }));
            });
        });
    }
    addConfirmCreateSetting() {
        new obsidian.Setting(this.containerEl)
            .setName("Confirm before creating new note")
            .setDesc("Show a confirmation modal before creating a new note")
            .addToggle((toggle) => {
            toggle.setValue(this.plugin.options.shouldConfirmBeforeCreate);
            toggle.onChange(async (value) => {
                this.plugin.writeOptions(() => ({
                    shouldConfirmBeforeCreate: value,
                }));
            });
        });
    }
    addShowWeeklyNoteSetting() {
        new obsidian.Setting(this.containerEl)
            .setName("Show week number")
            .setDesc("Enable this to add a column with the week number")
            .addToggle((toggle) => {
            toggle.setValue(this.plugin.options.showWeeklyNote);
            toggle.onChange(async (value) => {
                this.plugin.writeOptions(() => ({ showWeeklyNote: value }));
                this.display(); // show/hide weekly settings
            });
        });
    }
    addWeeklyNoteFormatSetting() {
        new obsidian.Setting(this.containerEl)
            .setName("Weekly note format")
            .setDesc("For more syntax help, refer to format reference")
            .addText((textfield) => {
            textfield.setValue(this.plugin.options.weeklyNoteFormat);
            textfield.setPlaceholder(DEFAULT_WEEK_FORMAT);
            textfield.onChange(async (value) => {
                this.plugin.writeOptions(() => ({ weeklyNoteFormat: value }));
            });
        });
    }
    addWeeklyNoteTemplateSetting() {
        new obsidian.Setting(this.containerEl)
            .setName("Weekly note template")
            .setDesc("Choose the file you want to use as the template for your weekly notes")
            .addText((textfield) => {
            textfield.setValue(this.plugin.options.weeklyNoteTemplate);
            textfield.onChange(async (value) => {
                this.plugin.writeOptions(() => ({ weeklyNoteTemplate: value }));
            });
        });
    }
    addWeeklyNoteFolderSetting() {
        new obsidian.Setting(this.containerEl)
            .setName("Weekly note folder")
            .setDesc("New weekly notes will be placed here")
            .addText((textfield) => {
            textfield.setValue(this.plugin.options.weeklyNoteFolder);
            textfield.onChange(async (value) => {
                this.plugin.writeOptions(() => ({ weeklyNoteFolder: value }));
            });
        });
    }
    addLocaleOverrideSetting() {
        var _a;


-Alignment on Pseudoductility and Micro-Cracking in a Cementitious Carbon-Fiber Composite Material, Rutzen et al.
###### [03056](dat/md/2021-03.md#schujagohoisdelo2021ASRaAotVo3PCiRE) A Systematic Review and Analysis of the Viability of 3D Printed Construction in Remote Environments, Schuldt et al.
###### [03057](dat/md/2021-03.md#shakgowrraso2021EaNAo3PCMSUI3) Experimental and Numerical Analysis of 3D Printed Cement Mortar Specimens Using Inkjet 3DP, Shakor et al.
###### [03058](dat/md/2021-03.md#sunxiaolifeng2021ESotTPoa3PCPB) Experimental Study on the Thermal Performance of a 3D Printed Concrete Prototype Building, Sun et al.
###### [03059](dat/md/2021-03.md#teixscharangalve2021Do3PSMBoaBA) Development of 3D Printing Sustainable Mortars Based on a Bibliometric Analysis, Teixeira et al.
###### [03060](dat/md/2021-03.md#vojimyslpetrbrou2021ANWtDSfIA) A New Way to Design Software for Industrial Automation: 3D Printer Cement Mixtures, Vojir et al.
###### [03061](dat/md/2021-03.md#zahaperegoncpere2021IotPDaAotMPo3PC) Influence of the Printing-Direction and Age on the Mechanical Properties of 3D Printed Concrete, Zahabizadeh et al.
###### [03062](dat/md/2021-03.md#zhaochenxuli2021MDaRPoMPPCCBot3PES) Mix-Design and Rheological Properties of Magnesium-Potassium-Phosphate Cement Composites Based on the 3D Printing-Extrusion-System, Zhao et al.
### 2021-02
###### [03063](dat/md/2021-02.md#alvaprengonzguer2021OMDf3CPUMT) Optimum Mix-Design for 3D Concrete Printing Using Mining-Tailings: A Case Study in Spain, Álvarez-Fernández et al.
###### [03064](dat/md/2021-02.md#archmaitdemochar2021StSoaHMSaGCSbAM) Strategy to Shape, on a Half-Meter Scale, a Geopolymer Composite Structure by Additive Manufacturing, Archez et al.
###### [03065](dat/md/2021-02.md#arunnemaranabong2021FOEoUHPCFb3P) Fiber-Orientation Effects on Ultra-High-Performance Concrete Formed by 3D Printing, Arunothayan et al.
###### [03066](dat/md/2021-02.md#beskskibzhan2021FA3PTAiC) Factors Affecting 3D Printing Technology Adaptation in Construction, Besklubova et al.
###### [03067](dat/md/2021-02.md#canouhardiaz2021ALCSMfFF3CPS) A “Low-Cost” Subtractive Method for Freshly Finished 3D Concrete Printed Structures, Canou et al.
###### [03068](dat/md/2021-02.md#chencopurodrfilh2021CoAVSi3PCMUOISaXRCT) Characterization of Air-Void Systems in 3D Printed Cementitious Materials Using Optical Image Scanning and X-Ray Computed Tomography, Chen et al.
###### [03069](dat/md/2021-02.md#choughafsikochun2021IoAIoRMaMPo3PAAM) Investigation of Additive Incorporation on Rheological, Microstructural and Mechanical Properties of 3D Printable Alkali-Activated Materials, Chougan et al.
###### [03070](dat/md/2021-02.md#cuiwuchenluo2021PoMOCaa3PM) Preparation of Magnesium-Oxysulfate Cement as a 3D Printing Material, Cui


      $result.id = id;
    }
    if (serializedId != null) {
      $result.serializedId = serializedId;
    }
    if (coverageId != null) {
      $result.coverageId = coverageId;
    }
    if (size != null) {
      $result.size = size;
    }
    if (parentId != null) {
      $result.parentId = parentId;
    }
    if (uses != null) {
      $result.uses.addAll(uses);
    }
    if (outputUnitId != null) {
      $result.outputUnitId = outputUnitId;
    }
    if (libraryInfo != null) {
      $result.libraryInfo = libraryInfo;
    }
    if (classInfo != null) {
      $result.classInfo = classInfo;
    }
    if (functionInfo != null) {
      $result.functionInfo = functionInfo;
    }
    if (fieldInfo != null) {
      $result.fieldInfo = fieldInfo;
    }
    if (constantInfo != null) {
      $result.constantInfo = constantInfo;
    }
    if (outputUnitInfo != null) {
      $result.outputUnitInfo = outputUnitInfo;
    }
    if (typedefInfo != null) {
      $result.typedefInfo = typedefInfo;
    }
    if (closureInfo != null) {
      $result.closureInfo = closureInfo;
    }
    if (classTypeInfo != null) {
      $result.classTypeInfo = classTypeInfo;
    }
    return $result;
  }
  InfoPB._() : super();
  factory InfoPB.fromBuffer($core.List<$core.int> i,
          [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(i, r);
  factory InfoPB.fromJson($core.String i,
          [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(i, r);

  static const $core.Map<$core.int, InfoPB_Concrete> _InfoPB_ConcreteByTag = {
    100: InfoPB_Concrete.libraryInfo,
    101: InfoPB_Concrete.classInfo,
    102: InfoPB_Concrete.functionInfo,
    103: InfoPB_Concrete.fieldInfo,
    104: InfoPB_Concrete.constantInfo,
    105: InfoPB_Concrete.outputUnitInfo,
    106: InfoPB_Concrete.typedefInfo,
    107: InfoPB_Concrete.closureInfo,
    108: InfoPB_Concrete.classTypeInfo,
    0: InfoPB_Concrete.notSet
  };
  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'InfoPB',
      package:
          const $pb.PackageName(_omitMessageNames ? '' : 'dart2js_info.proto'),
      createEmptyInstance: create)
    ..oo(0, [100, 101, 102, 103, 104, 105, 106, 107, 108])
    ..aOS(1, _omitFieldNames ? '' : 'name')
    ..a<$core.int>(2, _omitFieldNames ? '' : 'id', $pb.PbFieldType.O3)
    ..aOS(3, _omitFieldNames ? '' : 'serializedId')
    ..aOS(4, _omitFieldNames ? '' : 'coverageId')
    ..a<$core.int>(5, _omitFieldNames ? '' : 'size', $pb.PbFieldType.O3)
    ..aOS(6, _omitFieldNames ? '' : 'parentId')
    ..pc<DependencyInfoPB>(7, _omitFieldNames ? '' : 'uses', $pb.PbFieldType.PM,
        subBuilder: DependencyInfoPB.create)
    ..aOS(8, _omitFieldNames ? '' : 'outputUnitId')
    ..aOM<LibraryInfoPB>(100, _omitFieldNames ? '' : 'libraryInfo',
        subBuilder: LibraryInfoPB.create)
    ..aOM<ClassInfoPB>(101, _omitFieldNames ? ''


6.5H348q-14 0-26-6.5T306 810l-16-42h-34q-106 0-181-75T0 512q0-91 56.5-160.5T200 262l42-112q4-9 16-15.5t26-6.5h36V96q0-13-9.5-22.5T288 64h-32V0h64q26 0 45 19t19 45v64h36q14 0 26 6.5t16 15.5l40 106h74q36 0 80 22.5t80 51 82.5 60.5 81.5 45l47-90q6-11 18.5-18t26.5-7 23 7 9 18v270zM192.5 448q-26.5 0-45.5 19t-19 45.5 19 45 45.5 18.5 45-18.5 18.5-45-18.5-45.5-45-19zm192 0q-26.5 0-45.5 19t-19 45.5 19 45 45.5 18.5 45-18.5 18.5-45-18.5-45.5-45-19zm192 0q-26.5 0-45.5 19t-19 45.5 19 45 45.5 18.5 45-18.5 18.5-45-18.5-45.5-45-19z"/></svg>';
  static const String subrion =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1024 1024"><path fill="currentColor" d="M768 384q-87 0-160.5 43T491 543.5 448 704q0 85 43 160-69 18-130 47.5t-94.5 53-70 41.5-68.5 18q-56 0-92-50T0 832q0-61 33-134t92-141q-28-17-44.5-46T64 448q0-81 92-151.5T392 202q-8-23-8-42 0-66 56-113T576 0q90 0 171 41.5t139.5 111 94.5 163 42 195.5q-45-59-111.5-93T768 384zm0 64q106 0 181 75t75 181-75 181-181 75-181-75-75-181 75-181 181-75zm64.5 256q26.5 0 45-18.5t18.5-45-18.5-45.5-45-19-45.5 19-19 45.5 19 45 45.5 18.5z"/></svg>';
  static const String subscript =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1025" height="1024" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1025 1024"><path fill="currentColor" d="M992.31 896h-160v64h160q13 0 22.5 9.5t9.5 22.5-9.5 22.5-22.5 9.5h-192q-12 0-20.5-7.5t-10.5-18.5V858q2-11 10.5-18.5t20.5-7.5h160v-64h-160q-13 0-22.5-9.5t-9.5-22.5 9.5-22.5 22.5-9.5h192q12 0 20.5 7.5t10.5 18.5v140q-2 11-10.5 18.5t-20.5 7.5zm-369.5-145.5q-16.5 16.5-39.5 16.5t-40-16l-223-278-224 278q-16 16-39.5 16t-40-16.5T.31 711t17-40l231-287-231-288q-17-16-17-39.5t16.5-40 40-16.5 39.5 17l224 277 223-


         if (
                    first.text != second.text
                    or first.tampered != second.tampered
                    # or first.focused != second.focused
                    or first.value != second.value
                    # or first.left != second.left
                    # or first.top != second.top
                    or first.width != second.width
                    or first.height != second.height
                    or first.classes != second.classes
                    or first.tag != second.tag
                    or first.fg_color != second.fg_color
                    or first.bg_color != second.bg_color
                    or first.is_leaf != second.is_leaf
                ):
                    l.append(first)

            # Pad the children with None and diff them
            first_children = list(first.children)  # Make copy to not trash old
            second_children = list(second.children)
            if len(first_children) < len(second_children):
                first_children += [None] * (len(second_children) - len(first_children))
            elif len(first_children) > len(second_children):
                second_children += [None] * (len(first_children) - len(second_children))
            for first_child, second_child in zip(first_children, second_children):
                element_diff(first_child, second_child, l)

        different_elements = []
        element_diff(self, other_dom, different_elements)
        return different_elements

    def _rgba_str_to_floats(self, rgba):
        """Takes a string of the form rgb(?, ?, ?) or rgba(?, ?, ?, ?)
        and extracts the rgba values normalized between 0 and 1.

        NOTE: If rgba is None, returns white (1.0, 1.0, 1.0, 1.0).
        NOTE: If only rgb is passed, assumes a = 100

        Args:
            rgba (string)

        Returns:
            (float, float, float, float): rgba
        """
        if rgba is None:  # Assume is white
            return 1.0, 1.0, 1.0, 1.0

        if "rgba" in rgba:
            m = re.search(r"rgba\(([0-9.]+), ([0-9.]+), ([0-9.]+), ([0-9.]+)\)", rgba)
            a = float(m.group(4))
        else:
            m = re.search(r"rgb\(([0-9.]+), ([0-9.]+), ([0-9.]+)\)", rgba)
            a = 1.0
        return (
            float(m.group(1)) / 255,
            float(m.group(2)) / 255,
            float(m.group(3)) / 255,
            a,
        )


,icon='Spell_Nature_CorrosiveBreath'},
  ['Очень ягодный крем']={t=1000,icon='INV_ValentinesChocolate02'},
  ['Очередь на медобслуживание']={t=7000,icon='Temp'},
  ['Очистить и положить еду']={t=5000,icon='INV_Misc_Bowl_01'},
  ['Очищение колодца Буйногривых']={t=10000,icon='Temp'},
  ['Очищение колодца Громового Рога']={t=10000,icon='Temp'},
  ['Очищение колодца Заиндевевшего Копыта']={t=10000,icon='Temp'},
  ['Очищение явления']={t=4000,icon='Temp'},
  ['Очки чести +138']={t=1000,icon='Temp'},
  ['Очки чести +228']={t=1000,icon='Temp'},
  ['Очки чести +2388']={t=1000,icon='INV_BannerPVP_02'},
  ['Очки чести +378']={t=1000,icon='Temp'},
  ['Очки чести +398']={t=1000,icon='Temp'},
  ['Очки чести +50']={t=1000,icon='Temp'},
  ['Очки чести +82']={t=1000,icon='Temp'},
  ['Палевый ящер']={t=3000,icon='Ability_Mount_Raptor'},
  ['Пантера']={t=3000,icon='Ability_Mount_BlackPanther'},
  ['Панцирь Тени']={t=1000,icon='Spell_Shadow_AntiShadow'},
  ['Паразит']={t=2000,icon='Ability_Poisons'},
  ['Паучок Дымной Паутины']={t=1000,icon='Ability_Seal'},
  ['Пегий конь']={t=3000,icon='Ability_Mount_RidingHorse'},
  ['Пелена Тени']={t=1500,icon='Spell_Shadow_GatherShadows'},
  ['Первая помощь']={t=3000,icon='Spell_Holy_GreaterHeal'},
  ['Первородный огонь']={t=500,icon='Spell_Fire_Fireball02'},
  ['Перевод Джаркала']={t=4500,icon='Spell_Holy_Restoration'},
  ['Перемещение временной аномалии']={t=5000,icon='Temp'},
  ['Перо ящера']={t=5000,icon='Temp'},
  ['Перцовая пушка']={t=500,icon='Spell_Fire_Fireball02'},
  ['Пестрая лента']={t=1000,icon='Ability_Seal'},
  ['Песчаный вихрь']={t=2000,icon='Spell_Nature_Cyclone'},
  ['Пламенная вспышка']={t=7000,icon='Spell_Fire_SelfDestruct'},
  ['Пламенная пушка']={t=1500,icon='Spell_Fire_FlameBolt'},
  ['Пламенное дыхание']={t=1700,icon='Spell_Fire_Fire'},
  ['Пламенный кнут']={t=1000,icon='Spell_Fire_Fireball'},
  ['Пламенный шип']={t=3000,icon='Spell_Fire_SelfDestruct'},
  ['Пламя Хаоса']={t=1000,icon='Spell_Fire_WindsofWoe'},
  ['Пламя Шахрама']={t=1000


ASR)
            ("r", "v", "b", &c__1, &mm, &work[l], &work[*n - 1 + l], &z__[l], &c__1);
        }

        d__[l] -= p;
        e[l] = g;
        goto L40;

    L80:
        d__[l] = p;

        ++l;
        if (l <= lend)
        {
            goto L40;
        }
        goto L140;
    }
    else
    {

    L90:
        if (l != lend)
        {
            lendp1 = lend + 1;
            i__1   = lendp1;
            for (m = l; m >= i__1; --m)
            {
                d__2 = std::abs(e[m - 1]);
                tst  = d__2 * d__2;
                if (tst <= eps2 * std::abs(d__[m]) * std::abs(d__[m - 1]) + safmin)
                {
                    goto L110;
                }
            }
        }

        m = lend;

    L110:
        if (m > lend)
        {
            e[m - 1] = 0.;
        }
        p = d__[l];
        if (m == l)
        {
            goto L130;
        }

        if (m == l - 1)
        {
            if (icompz > 0)
            {
                F77_FUNC(dlaev2, DLAEV2)(&d__[l - 1], &e[l - 1], &d__[l], &rt1, &rt2, &c__, &s);

                tst        = z__[l];
                z__[l]     = c__ * tst - s * z__[l - 1];
                z__[l - 1] = s * tst + c__ * z__[l - 1];
            }
            else
            {
                F77_FUNC(dlae2, DLAE2)(&d__[l - 1], &e[l - 1], &d__[l], &rt1, &rt2);
            }
            d__[l - 1] = rt1;
            d__[l]     = rt2;
            e[l - 1]   = 0.;
            l += -2;
            if (l >= lend)
            {
                goto L90;
            }
            goto L140;
        }

        if (jtot == nmaxit)
        {
            goto L140;
        }
        ++jtot;

        g   = (d__[l - 1] - p) / (e[l - 1] * 2.);
        r__ = F77_FUNC(dlapy2, DLAPY2)(&g, &c_b31);
        g   = d__[m] - p + e[l - 1] / (g + ((g > 0) ? r__ : -r__));

        s   = 1.;
        c__ = 1.;
        p   = 0.;

        lm1  = l - 1;
        i__1 = lm1;
        for (i__ = m; i__ <= i__1; ++i__)
        {
            f = s * e[i__];
            b = c__ * e[i__];
            F77_FUNC(dlartg, DLARTG)(&g, &f, &c__, &s, &r__);
            if (i__ != m)
            {
                e[i__ - 1] = r__;
            }
            g        = d__[i__] - p;
            r__      = (d__[i__ + 1] - g) * s + c__ * 2. * b;
            p        = s * r__;
            d__[i__] = g + p;
            g        = c__ * r__ - b;

            if (icompz > 0)
            {
                work[i__]          = c__;
                work[*n - 1 + i__] = s;
            }
        }

        if (icompz > 0)
        {
            mm = l - m + 1;

            F77_FUNC(dlasr, DLASR)
            ("r", "v", "f", &c__1, &m


first tab
    var showStuffFromHash = function() {
      var hash = window.location.hash;
      var selector = hash ? 'a[href="' + hash + '"]' : 'li.active > a';
      var $selector = $(selector, context);
      if($selector.data('toggle') === "tab") {
        $selector.tab('show');
        // walk up the ancestors of this element, show any hidden tabs
        $selector.parents('.section.tabset').each(function(i, elm) {
          var link = $('a[href="#' + $(elm).attr('id') + '"]');
          if(link.data('toggle') === "tab") {
            link.tab("show");
          }
        });
      }
    };

    // Set the correct tab when the page loads
    showStuffFromHash(context);

    // Set the correct tab when a user uses their back/forward button
    $(window).on('hashchange', function() {
      showStuffFromHash(context);
    });

    // Change the URL when tabs are clicked
    $('a', context).on('click', function(e) {
      history.pushState(null, null, this.href);
      showStuffFromHash(context);
    });

    return this;
  };
}(jQuery));

window.buildTabsets = function(tocID) {

  // build a tabset from a section div with the .tabset class
  function buildTabset(tabset) {

    // check for fade and pills options
    var fade = tabset.hasClass("tabset-fade");
    var pills = tabset.hasClass("tabset-pills");
    var navClass = pills ? "nav-pills" : "nav-tabs";

    // determine the heading level of the tabset and tabs
    var match = tabset.attr('class').match(/level(\d) /);
    if (match === null)
      return;
    var tabsetLevel = Number(match[1]);
    var tabLevel = tabsetLevel + 1;

    // find all subheadings immediately below
    var tabs = tabset.find("div.section.level" + tabLevel);
    if (!tabs.length)
      return;

    // create tablist and tab-content elements
    var tabList = $('

');
    $(tabs[0]).before(tabList);
    var tabContent = $('

');
    $(tabs[0]).before(tabContent);

    // build the tabset
    var activeTab = 0;
    tabs.each(function(i) {

      // get the tab div
      var tab = $(tabs[i]);

      // get the id then sanitize it for use with bootstrap tabs
      var id = tab.attr('id');

      // see if this is marked as the active tab
      if (tab.hasClass('active'))
        activeTab = i;

      // remove any table of contents entries associated with
      // this ID (since we'll be removing the heading element)
      $("div#" + tocID + " li a[href='#" + id + "']").parent().remove();

      // sanitize the id for use with bootstrap tabs
      id = id.replace(/[.\/?&!#<>]/g, '').replace(/\s/g, '_');
      tab.attr('id', id);

      // get the heading element within it, grab it's text, then remove it
      var heading = tab.find('h' + tabLevel + ':first');
      var headingText = heading.html();
      heading.remove();


tility macro to call macros above in correct order in order to perform a
 * task switch from within a standard ISR.  This macro can only be used if
 * the ISR does not use any local (stack) variables.  If the ISR uses stack
 * variables portYIELD() should be used in it's place.
 */

#define portTASK_SWITCH_FROM_ISR() \
    portSAVE_CONTEXT();            \
    vTaskSwitchContext();          \
    portRESTORE_CONTEXT();

/* Task function macros as described on the FreeRTOS.org WEB site. */
#define portTASK_FUNCTION_PROTO( vFunction, pvParameters )    void vFunction( void * pvParameters )
#define portTASK_FUNCTION( vFunction, pvParameters )          void vFunction( void * pvParameters )

/* *INDENT-OFF* */
#ifdef __cplusplus
    }
#endif
/* *INDENT-ON* */

#endif /* PORTMACRO_H */


ech->nameLength, (char *)tech->name);

	return(TRUE);
}

static Bool send_technique_replies(group,client)
xieTypTechniqueGroup	group;
ClientPtr client;
{
    if (group == xieValDefault) {
        TechGroupPtr tg = techTable.techgroups;
        int g;

	for (g = 0; g < techTable.numGroups; g++, tg++)
	    if (tg->defaultNumber != NO_DEFAULT)
		send_reply(tg->group,&tg->tech[tg->defaultIndex],client);
        return (TRUE);
    } else if (group == xieValAll) {
        TechGroupPtr tg = techTable.techgroups;
        int g;

	for (g = 0; g < techTable.numGroups; g++, tg++) {
	    TechPtr tp = tg->tech;
	    int      t = 0;

	    for (t = 0; t < tg->numTechniques; t++, tp++)
		send_reply(tg->group,tp,client);
	}
        return (TRUE);
    } else {
        TechGroupPtr tg = techTable.techgroups;
        int g;

	for (g = 0; g < techTable.numGroups; g++, tg++)
	    if (group == tg->group) {
	       TechPtr tp = tg->tech;
	       int      t = 0;

	       for (t = 0; t < tg->numTechniques; t++, tp++)
	           send_reply(group,tp,client);

	    	   return(TRUE);
	    }
    }

    return(FALSE);	/* Unrecognized group */
}				/* end return_technique_replies */

/*************************************************************************
FindTechnique: return group's technique entry point structure
*************************************************************************/
techVecPtr FindTechnique(group,number)
xieTypTechniqueGroup	group;
CARD16	number;
{
    TechGroupPtr tg = techTable.techgroups;
    int g;

    for (g = 0; g < techTable.numGroups; g++, tg++)
	if (group == tg->group) {
    	    TechPtr tp = tg->tech;
    	    int      t = 0;

	    if (number == xieValDefault) {
		if (tg->defaultNumber)
		    return (&tg->tech[tg->defaultIndex].techvec);
		else
    		    return((techVecPtr)NULL);	/* No default for this group */
	    } else {
    	        for (t = 0; t < tg->numTechniques; t++, tp++)
		    if (tp->techvec.number == number)
			return (&tp->techvec);
	    }
	}

    return((techVecPtr)NULL);	/* Unrecognized group */
}				/* end FindTechnique */

/*************************************************************************
NoParamCheck: Used as copyfnc for techniques that do not have parameters.
	      Checks to make sure that no parameters have been passed in.
*************************************************************************/
static Bool NoParamCheck(flo, rparms, cparms, tsize)
     floDefPtr flo;
     pointer rparms, cparms;
     CARD16 tsize;
{
  return(!tsize);
}			/* end NoParamCheck */

/*************************************************************************
NoTechYet: error stub for unimplemented technique routines
*************************************************************************/
static Bool NoTechYet(flo, ped, parm, tech)
     floDefPtr flo;
     peDefPtr  ped;
     pointer   parm;
     pointer   tech;
{
  return(FALSE);
}			/* end NoTechYet */

/* end module technq.c */


/*____________________________________________________________________________

   ExifPro Image Viewer

   Copyright (C) 2000-2015 Michael Kowalski
____________________________________________________________________________*/

#pragma once
#include "boost/noncopyable.hpp"
#include "boost/function.hpp"

class DirectoryChangeWatcher : boost::noncopyable
{
public:
	DirectoryChangeWatcher();

	// start watch this folder
	void WatchFolder(const TCHAR* path, bool including_subdirs, const TCHAR* include_mask);

	// stop directory waching and sit idle
	void Stop();

	enum Change { NewFile, FileRemoved, FileRenamed, FileModified, NewDirectory, DirectoryRemoved, DirectoryRenamed };

	//
	void SetCallBacks(
		const boost::function<void (const TCHAR* path, Change change, const TCHAR* new_name)>& file_changed,
		const boost::function<void (const TCHAR* path, Change change, const TCHAR* new_name)>& dir_changed);

	~DirectoryChangeWatcher();

private:
	struct Impl;
	std::auto_ptr<Impl> impl_;
};


/*
 * Transport_Protocol_Data_Transfer.c
 *
 *  Created on: 14 juli 2021
 *      Author: Daniel Mårtensson
 */

#include "Transport_Layer.h"

/* Layers */
#include "../SAE_J1939-81_Network_Management_Layer/Network_Management_Layer.h"
#include "../SAE_J1939-73_Diagnostics_Layer/Diagnostics_Layer.h"
#include "../SAE_J1939-71_Application_Layer/Application_Layer.h"

/*
 * Store the sequence data packages from other ECU
 * PGN: 0x00EB00 (60160)
 */
void SAE_J1939_Read_Transport_Protocol_Data_Transfer(J1939 *j1939, uint8_t SA, uint8_t data[]) {
	/* Save the sequence data */
	j1939->from_other_ecu_tp_dt.sequence_number = data[0];
	j1939->from_other_ecu_tp_dt.from_ecu_address = SA;
	uint8_t i, j, index = data[0] - 1;
	for (i = 1; i < 8; i++){
		j1939->from_other_ecu_tp_dt.data[index*7 + i-1] = data[i]; /* For every package, we send 7 bytes of data where the first byte data[0] is the sequence number */
	}
	/* Check if we have completed our message - Return = Not completed */
	if (j1939->from_other_ecu_tp_cm.number_of_packages != j1939->from_other_ecu_tp_dt.sequence_number || j1939->from_other_ecu_tp_cm.number_of_packages == 0){
		return;
	}

	/* Our message are complete - Build it and call it complete_data[total_message_size] */
	uint32_t PGN = j1939->from_other_ecu_tp_cm.PGN_of_the_packeted_message;
	uint16_t total_message_size = j1939->from_other_ecu_tp_cm.total_message_size;
	uint8_t complete_data[MAX_TP_DT];
	uint16_t inserted_bytes = 0;
	for (i = 0; i < j1939->from_other_ecu_tp_dt.sequence_number; i++){
		for (j = 0; j < 7; j++){
			if (inserted_bytes < total_message_size){
				complete_data[inserted_bytes++] = j1939->from_other_ecu_tp_dt.data[i*7 + j];
			}
		}
	}

	/* Send an end of message ACK back */
	if(j1939->from_other_ecu_tp_cm.control_byte == CONTROL_BYTE_TP_CM_RTS){
		SAE_J1939_Send_Acknowledgement(j1939, SA, CONTROL_BYTE_TP_CM_EndOfMsgACK, GROUP_FUNCTION_VALUE_NORMAL, PGN);
	}
	/* Check what type of function that message want this ECU to do */
	switch (PGN) {
	case PGN_COMMANDED_ADDRESS:
		SAE_J1939_Read_Commanded_Address(j1939, complete_data);								/* Insert new name and new address to this ECU */
		break;
	case PGN_DM1:
		SAE_J1939_Read_Response_Request_DM1(j1939, SA, complete_data, (total_message_size-2)/4); 	/* Number of DTCs = 4 bytes per DTC excluding 2 bytes for the lamp */
		break;
	case PGN_DM2:
		SAE_J1939_Read_Response_Request_DM2(j1939, SA, complete_data, (total_message_size-2)/4); 	/* Number of DTCs = 4 bytes per DTC excluding 2 bytes for the lamp */
		break;
	case PGN_DM16:
		SAE_J1939_Read_Binary_Data_Transfer_DM16(j1939, SA, complete_data);
		break;
	case PGN_SOFTWARE_IDENTIFICATION:
		SAE_J1939_Read_Response_Request_Software_Identification(j1939, SA, complete_data);
		break;
	case PGN_ECU_IDENTIFICATION:
		SAE_J1939_Read_Response_Request_ECU_Identification(j1939, SA, complete_data);
		break;
	case PGN_COMPONENT_IDENTIFICATION:
		SAE_J1939_Read_Response_Request_Component_Identification(j1939, SA, complete_data);
		break;
		/* Add more here */
	}

	/* Delete TP DT and TP CM */
	memset(&j1939->from_other_ecu_tp_dt, 0, sizeof(j1939->from_other_ecu_tp_dt));
	memset(&j1939->from_other_ecu_tp_cm, 0, sizeof(j1939->from_other_ecu_tp_cm));
}

/*
 * Send sequence data packages to other ECU that we have loaded
 * PGN: 0x00EB00 (60160)
 */
ENUM_J1939_STATUS_CODES SAE_J1939_Send_Transport_Protocol_Data_Transfer(J1939 *j1939, uint8_t DA){
	uint32_t ID = (0x1CEB << 16) | (DA << 8) | j1939->information_this_ECU.this_ECU_address;
	uint8_t i, j, package[8];
	uint16_t bytes_sent = 0;
	ENUM_J1939_STATUS_CODES status = STATUS_SEND_OK;
	for(i = 1; i <= j1939->this_ecu_tp_cm.number_of_packages; i++) {
		package[0] = i; 																	/* Number of package */
		for(j = 0; j < 7; j++){
			if(bytes_sent < j1939->this_ecu_tp_cm.total_message_size){
				package[j+1] = j1939->this_ecu_tp_dt.data[bytes_sent++];					/* Data that we have collected */
			}else{
				package[j+1] = 0xFF; 														/* Reserved */
			}
		}
		status = CAN_Send_Message(ID, package);
		CAN_Delay(100);																		/* Important CAN delay according to standard */
		if(status != STATUS_SEND_OK){
			return status;
		}
	}
	return status;
}


h3>

Dive into the fascinating history of ice cream, from its ancient origins to modern-day innovations.

                Read More

Vegan Ice Cream Revolution

Explore our range of delicious vegan ice creams that are changing the game for dairy-free desserts.

                Read More

Ice Cream Pairings: A Gourmet Guide

Discover unexpected and delightful flavor combinations that will elevate your ice cream experience.

                Read More

The Science of Ice Cream

Uncover the fascinating science behind what makes ice cream so creamy, smooth, and delicious.

                Read More

Ice Cream Around the World

Take a global tour of ice cream traditions and unique flavors from different cultures.

                Read More

Seasonal Scoops: Our Limited Edition Flavors

Get a taste of our special seasonal offerings and the inspiration behind these unique creations.

                Read More

From Farm to Cone: Our Ingredient Story

Learn about our commitment to sourcing the finest ingredients and supporting local farmers.


r" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="admonition-icon lucide lucide-info"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>'));content:light-dark(url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" opacity="60%" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="admonition-icon lucide lucide-info"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>'),url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" opacity="60%" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="admonition-icon lucide lucide-info"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>'))}.admonition.caution,.admonition.danger,.admonition.error{--admonition-bg:var(--red-2);--admonition-border:var(--red-8);--admonition-heading-color:var(--red-11)}.admonition.caution:before,.admonition.danger:before,.admonition.error:before{--csstools-light-dark-toggle--85:var(--csstools-color-scheme--light) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" opacity="60%" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-octagon-alert"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/></svg>');content:var(--csstools-light-dark-toggle--85,url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" opacity="60%" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-octagon-alert"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/></svg>'));content:light-dark(url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" opacity="60%" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-octagon-alert"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/></svg>'),url('data:image/svg+xml;utf8,<


_offset + self.dynamic_entries_total_size,
        }
    }

    /// Returns a reference to the `Sdt` header in this MADT table.
    pub fn sdt(&self) -> &Sdt {
        &self.table.header
    }

    /// Returns the Local APIC physical address value in this MADT table.
    pub fn local_apic_phys_addr(&self) -> u32 {
        self.table.local_apic_phys_addr
    }

    /// Returns the `flags` value in this MADT table.
    pub fn flags(&self) -> u32 {
        self.table.flags
    }
}

/// An [`Iterator`] over the dynamic entries of the MADT.
/// Its lifetime is dependent upon the lifetime of its `Madt` instance,
/// which itself is bound to the lifetime of the underlying `AcpiTables`.
#[derive(Clone)]
pub struct MadtIter<'t> {
    /// The underlying MappedPages that contain all ACPI tables.
    mapped_pages: &'t MappedPages,
    /// The offset of the next entry, which should point to a `EntryRecord`
    /// at the start of each iteration.
    offset: usize,
    /// The end bound of all MADT entries.
    /// This is fixed and should not ever change throughout iteration.
    end_of_entries: usize,
}

impl<'t> Iterator for MadtIter<'t> {
    type Item = MadtEntry<'t>;

    fn next(&mut self) -> Option<Self::Item> {
        if (self.offset + ENTRY_RECORD_SIZE) < self.end_of_entries {
            // First, we get the next entry record to get the type and size of the actual entry.
            let (entry_type, entry_size) = {
                let entry_record: &EntryRecord = self.mapped_pages.as_type(self.offset).ok()?;
                (entry_record.typ, entry_record.size as usize)
            };
            // Second, use that entry type and size to return the specific Madt entry struct.
            if (self.offset + entry_size) <= self.end_of_entries {
                let entry: Option<MadtEntry> = match entry_type {
                    ENTRY_TYPE_LOCAL_APIC if entry_size == size_of::<MadtLocalApic>() => {
                        self.mapped_pages.as_type(self.offset).ok().map(|ent| MadtEntry::LocalApic(ent))
                    },
                    ENTRY_TYPE_IO_APIC if entry_size == size_of::<MadtIoApic>() => {
                        self.mapped_pages.as_type(self.offset).ok().map(|ent| MadtEntry::IoApic(ent))
                    },
                    ENTRY_TYPE_INT_SRC_OVERRIDE if entry_size == size_of::<MadtIntSrcOverride>() => {
                        self.mapped_pages.as_type(self.offset).ok().map(|ent| MadtEntry::IntSrcOverride(ent))
                    },
                    ENTRY_TYPE_NON_MASKABLE_INTERRUPT if entry_size == size_of::<MadtNonMaskableInterrupt>() => {
                        self.mapped_pages.as_type(self.offset).ok().map(|ent| MadtEntry::NonMaskableInterrupt(ent))
                    },
                    ENTRY_TYPE_LOCAL_APIC_ADDRESS_OVERRIDE if entry_size == size_of::<MadtLocalApicAddressOverride>() => {
                        self.mapped_pages.as_type(self.offset).ok().map(|ent| MadtEntry::LocalApicAddressOverride(ent))
                    },
                    _ => None,
                };
                // move the offset to the end of this entry, i.e., the beginning of the next entry record
                self.offset += entry_size;


.include "macro.inc"

# assembler directives
.set noat      # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64     # allow use of 64-bit general purposee registers

.section .text

.align 4

glabel bcopy
/* 007B10 80006F10 10C0001A */  beqz  $a2, ret
/* 007B14 80006F14 00A03825 */   move  $a3, $a1
/* 007B18 80006F18 10850018 */  beq   $a0, $a1, ret
/* 007B1C 80006F1C 00A4082A */   slt   $at, $a1, $a0
/* 007B20 80006F20 54200008 */  bnezl $at, goforwards
/* 007B24 80006F24 28C10010 */   slti  $at, $a2, 0x10
/* 007B28 80006F28 00861020 */  add   $v0, $a0, $a2
/* 007B2C 80006F2C 00A2082A */  slt   $at, $a1, $v0
/* 007B30 80006F30 50200004 */  beql  $at, $zero, goforwards
/* 007B34 80006F34 28C10010 */   slti  $at, $a2, 0x10
/* 007B38 80006F38 1000005B */  b     gobackwards
/* 007B3C 80006F3C 28C10010 */   slti  $at, $a2, 0x10
/* 007B40 80006F40 28C10010 */  slti  $at, $a2, 0x10
goforwards:
/* 007B44 80006F44 14200005 */  bnez  $at, forwards_bytecopy
/* 007B48 80006F48 00000000 */   nop
/* 007B4C 80006F4C 30820003 */  andi  $v0, $a0, 3
/* 007B50 80006F50 30A30003 */  andi  $v1, $a1, 3
/* 007B54 80006F54 1043000B */  beq   $v0, $v1, forwalignable
/* 007B58 80006F58 00000000 */   nop
forwards_bytecopy:
/* 007B5C 80006F5C 10C00007 */  beqz  $a2, ret
/* 007B60 80006F60 00000000 */   nop
/* 007B64 80006F64 00861821 */  addu  $v1, $a0, $a2
.L80006F68:
/* 007B68 80006F68 80820000 */  lb    $v0, ($a0)
/* 007B6C 80006F6C 24840001 */  addiu $a0, $a0, 1
/* 007B70 80006F70 24A50001 */  addiu $a1, $a1, 1
/* 007B74 80006F74 1483FFFC */  bne   $a0, $v1, .L80006F68
/* 007B78 80006F78 A0A2FFFF */   sb    $v0, -1($a1)
ret:
/* 007B7C 80006F7C 03E00008 */  jr    $ra
/* 007B80 80006F80 00E01025 */   move  $v0, $a3

forwalignable:
/* 007B84 80006F84 10400018 */  beqz  $v0, forwards_32
/* 007B88 80006F88 24010001 */   li    $at, 1
/* 007B8C 80006F8C 1041000F */  beq   $v0, $at, forw_copy3
/* 007


mage, }, } -- e67
L["검 숙련도 %s"] = { { Stats.WeaponSkill, }, } -- e125
L["양손 검 숙련도 %s"] = { { Stats.WeaponSkill, }, } -- e132
L["철퇴 숙련도 %s"] = { { Stats.WeaponSkill, }, } -- e139
L["양손 철퇴 숙련도 %s"] = { { Stats.WeaponSkill, }, } -- e146
L["양손 도끼 숙련도 %s"] = { { Stats.WeaponSkill, }, } -- e160
L["단검 숙련도 %s"] = { { Stats.WeaponSkill, }, } -- e167
L["총 숙련도 %s"] = { { Stats.WeaponSkill, }, } -- e174
L["활 숙련도 %s"] = { { Stats.WeaponSkill, }, } -- e181
L["치명타 적중률 %s%"] = { { Stats.MeleeCrit, Stats.RangedCrit, }, } -- e195
L["치유 효과 증가 %s"] = { { Stats.HealingPower, }, } -- e206
L["화염 주문 위력 증가 %s"] = { { Stats.FireDamage, }, } -- e213
L["자연 주문 위력 증가 %s"] = { { Stats.NatureDamage, }, } -- e220
L["냉기 주문 위력 증가 %s"] = { { Stats.FrostDamage, }, } -- e227
L["암흑 주문 위력 증가 %s"] = { { Stats.ShadowDamage, }, } -- e234
L["마법 주문 위력 증가 %s"] = { { Stats.SpellPower, }, } -- e423
L["대지의 무기 %s"] = { { Stats.AverageWeaponDamage, }, } -- e504
L["민첩성 %s / 정신력 %s"] = { { Stats.Agility, }, { Stats.Spirit, }, } -- e583
L["민첩성 %s / 지능 %s"] = { { Stats.Agility, }, { Stats.Intellect, }, } -- e584
L["민첩성 %s / 체력 %s"] = { { Stats.Agility, }, { Stats.Stamina, }, } -- e585
L["민첩성 %s / 힘 %s"] = { { Stats.Agility, }, { Stats.Strength, }, } -- e586
L["지능 %s / 정신력 %s"] = { { Stats.Intellect, }, { Stats.Spirit, }, } -- e587
L["지능 %s / 체력 %s"] = { { Stats.Intellect, }, { Stats.Stamina, }, } -- e588
L["지능 %s / 힘 %


8fd9\u79cd\u591a\u5c42\u6b21\u7684\u7efc\u5408\u5206\u6790": 3, "surprise\u7b97\u6cd5\u6210\u529f\u62d3\u5c55\u4e86sw": 3, "score\u7684\u5e94\u7528\u8303\u56f4": 3, "\u4e3a\u4e92\u8865\u5546\u54c1\u63a8\u8350\u63d0\u4f9b\u4e86\u4e00\u5957\u7cfb\u7edf\u800c\u9ad8\u6548\u7684\u89e3\u51b3\u65b9\u6848": 3, "\u8be5\u65b9\u6cd5\u4e0d\u4ec5\u5229\u7528\u4e86\u7c7b\u522b\u4fe1\u606f\u548c\u6807\u7b7e\u4f20\u64ad\u6280\u672f\u6709\u6548\u89e3\u51b3\u4e86\u6570\u636e\u7a00\u758f\u95ee\u9898": 3, "\u8fd8\u80fd\u591f\u51c6\u786e\u6355\u6349\u5546\u54c1\u95f4\u7684\u65f6\u5e8f\u548c\u65b9\u5411\u6027\u5173\u7cfb": 3, "\u4ece\u800c\u63d0\u5347\u63a8\u8350\u7cfb\u7edf\u7684\u6574\u4f53\u6548\u679c": 3, "\u9996\u5148": [3, 6, 7, 8, 11, 14, 16, 17, 18, 36, 44, 46, 48], "\u6211\u4eec\u5bfc\u5165funrec\u5e93\u4e2d\u7684\u6838\u5fc3\u7ec4\u4ef6": [3, 8], "swing\u7b97\u6cd5\u7684\u6838\u5fc3\u5728\u4e8esw": 3, "score\u7684\u8ba1\u7b97": 3, "\u5b83\u901a\u8fc7\u5206\u6790\u7528\u6237": 3, "\u7269\u54c1\u4e8c\u90e8\u56fe\u4e2d\u7684swing\u7ed3\u6784\u6765\u5ea6\u91cf\u7269\u54c1\u76f8\u4f3c\u5ea6": 3, "def": [3, 22, 23, 27, 28, 32, 33, 42, 43, 44, 45, 46], "calculate_swing_similar": 3, "item_us": 3, "user_item": 3, "user_weight": 3, "item_i": 3, "item_j": 3, "\u8ba1\u7b97\u4e24\u4e2a\u7269\u54c1\u4e4b\u95f4\u7684swing": 3, "score\u76f8\u4f3c\u5ea6": 3, "\u53c2\u8003funrec": 3, "_calculate_swing_similarity_optim": 3, "\u7684\u6838\u5fc3\u903b\u8f91": 3, "\u627e\u5230\u540c\u65f6\u4e0e\u7269\u54c1i\u548cj\u4


x.browser,;119 QwEV2c;7,com.yandex.browser,;120"></c-data></c-wiz>

<c-wiz jsrenderer="PAQZbb" jsshadow jsdata="deferred-i74" data-p="%.@.true]
" jscontroller="JpEzfb" jsaction="aM6rcc:MRWqkd" data-node-index="1;6" autoupdate jsmodel="hc6Ubd">

<


 (x) => Math.floor(x));
}

export = RandomInteger;
import { EntityRepository, Repository} from 'typeorm';

import Person from '../models/Person';

@EntityRepository(Person)
class PersonRepository extends Repository<Person> {
    public async findPerson(id: string): Promise<Person | null> {
        const person = await this.findOne({
            where: { id },
        });

        return person || null;
    }
}

export default PersonRepository;import { types as t } from "@marko/compiler";
import toPropertyName from "./to-property-name";
import type { References } from "./references";

export default function attrsToObject(
  tag: t.NodePath<t.MarkoTag>,
  withRenderBody = false
): t.Expression | undefined {
  const { node } = tag;
  let result: t.Expression = t.objectExpression([]);
  const resultExtra: { references?: References } = (result.extra = {});

  for (const attr of node.attributes) {
    const value = attr.value!;

    if (t.isMarkoSpreadAttribute(attr)) {
      result.properties.push(t.spreadElement(value));
    } else {
      result.properties.push(
        t.objectProperty(toPropertyName(attr.name), value)
      );
    }
  }

  if (withRenderBody) {
    const { body, params } = node.body;
    let hoistedControlFlows = node.extra.hoistedControlFlows;

    if (hoistedControlFlows) {
      for (const child of tag.get("body").get("body")) {
        tag.insertBefore(child.node);
        child.remove();

        if (child.isConditional() || child.isLoop()) {
          if (!--hoistedControlFlows) {
            break;
          }
        }
      }
    }

    if (body.length) {
      (result as t.ObjectExpression).properties.push(
        t.objectMethod(
          "method",
          t.identifier("renderBody"),
          params.length
            ? [
                t.objectPattern([
                  t.objectProperty(
                    t.identifier("value"),
                    t.arrayPattern(params)
                  ),
                ]),
              ]
            : [],
          t.blockStatement(body)
        )
      );
    }
  }

  if (result.properties.length) {
    if (result.properties.length === 1) {
      const [prop] = result.properties;

      if (t.isSpreadElement(prop)) {
        result = prop.argument;
        result.extra = resultExtra;
      }
    }

    return result as t.Expression;
  }
}

export function getRenderBodyProp(
  attrsObject: ReturnType<typeof attrsToObject>
) {
  if (t.isObjectExpression(attrsObject)) {
    // renderBody prop is always added last.
    const lastProp = attrsObject.properties[attrsObject.properties.length - 1];

    if (
      t.isObjectMethod(lastProp) &&
      (lastProp.key as t.Identifier).name === "renderBody"
    ) {
      return lastProp;
    }
  }
}
import { Component, EventEmitter } from '@angular/core';

@Component({
  selector: 'app--doc-03-02-02-12-02-02',
  template: '<button styleClass="ui-button-success" (click)="bar.emit(foo)">app-doc-03-02-02-12-02-01</button> ',

  /*
   * 也可以在 @Component 装饰器的配置参数中, 使用 inputs 和 outputs 分别声明 input property 和 output property
   */

  // tslint:disable-next-line:no-inputs-metadata-property
  inputs: ['foo'],
  // tslint:disable-next-line:no-outputs-metadata-property
  outputs: ['bar'],
})
export class Doc030202120202Component {