--proc/controls/tabcontrol: standard tab control
--Written by Cosmin Apreutesei. Public Domain.

setfenv(1, require'winapi')
require'winapi.window'
require'winapi.comctl'

InitCommonControlsEx(ICC_TAB_CLASSES)

--creation

WC_TABCONTROL            = 'SysTabControl32'

TCS_SCROLLOPPOSITE       = 0x0001   -- assumes multiline  = tab
TCS_BOTTOM               = 0x0002
TCS_RIGHT                = 0x0002
TCS_MULTISELECT          = 0x0004  -- allow multi-select in button  = mode
TCS_FLATBUTTONS          = 0x0008
TCS_FORCEICONLEFT        = 0x0010
TCS_FORCELABELLEFT       = 0x0020
TCS_HOTTRACK             = 0x0040
TCS_VERTICAL             = 0x0080
TCS_TABS                 = 0x0000
TCS_BUTTONS              = 0x0100
TCS_SINGLELINE           = 0x0000
TCS_MULTILINE            = 0x0200
TCS_RIGHTJUSTIFY         = 0x0000
TCS_FIXEDWIDTH           = 0x0400
TCS_RAGGEDRIGHT          = 0x0800
TCS_FOCUSONBUTTONDOWN    = 0x1000
TCS_OWNERDRAWFIXED       = 0x2000
TCS_TOOLTIPS             = 0x4000
TCS_FOCUSNEVER           = 0x8000

-- EX styles for use with TCM_SETEXTENDEDSTYLE
TCS_EX_FLATSEPARATORS    = 0x00000001
TCS_EX_REGISTERDROP      = 0x00000002

--commands

TCM_FIRST               = 0x1300
TCM_INSERTITEMW         = (TCM_FIRST + 62)
TCM_GETITEMW            = (TCM_FIRST + 60)
TCM_GETITEMCOUNT        = (TCM_FIRST + 4)
TCM_SETITEMW            = (TCM_FIRST + 61)
TCM_DELETEITEM          = (TCM_FIRST + 8)
TCM_DELETEALLITEMS      = (TCM_FIRST + 9)
TCM_GETCURFOCUS         = (TCM_FIRST + 47)
TCM_SETCURFOCUS         = (TCM_FIRST + 48)
TCM_GETCURSEL           = (TCM_FIRST + 11)
TCM_SETCURSEL           = (TCM_FIRST + 12)
TCM_GETIMAGELIST        = (TCM_FIRST + 2)
TCM_SETIMAGELIST        = (TCM_FIRST + 3)

TCIF_TEXT                = 0x0001
TCIF_IMAGE               = 0x0002
TCIF_RTLREADING          = 0x0004
TCIF_PARAM               = 0x0008
TCIF_STATE               = 0x0010

TCIS_BUTTONPRESSED       = 0x0001
TCIS_HIGHLIGHTED         = 0x0002

ffi.cdef[[
typedef struct tagTCITEMW
{
    UINT mask;
    DWORD dwState;
    DWORD dwStateMask;
    LPWSTR pszText;
    int cchTextMax;
    int iImage;
    LPARAM lParam;
} TCITEMW, *LPTCITEMW;
]]

TCITEM = struct{
	ctype = 'TCITEMW', mask = 'mask',
	fields = mfields{
		'__state', 'dwState', TCIF_STATE, flags, pass,
		'__stateMask', 'dwState', TCIF_STATE, flags, pass,
		'text', 'pszText', TCIF_TEXT, wcs, mbs,
		'image', 'iImage', TCIF_IMAGE, countfrom0, countfrom1,
	},
	bitfields = {
		state = {'__state', '__stateMask', 'TCIS'},
	}
}

function Ta


{
  0%, 15% {
    transform: rotate(0);
  }
  35%, 100% {
    transform: rotate(-180deg);
  }
}
@keyframes flip-2 {
  0%, 30% {
    transform: rotate(0);
  }
  50%, 100% {
    transform: rotate(-180deg);
  }
}
@keyframes flip-3 {
  0%, 45% {
    transform: rotate(0);
  }
  65%, 100% {
    transform: rotate(-180deg);
  }
}
@keyframes flip-4 {
  0%, 60% {
    transform: rotate(0);
  }
  80%, 100% {
    transform: rotate(-180deg);
  }
}
@keyframes squidge-1 {
  5% {
    transform-origin: center bottom;
    transform: scalex(1) scaley(1);
  }
  15% {
    transform-origin: center bottom;
    transform: scalex(1.3) scaley(0.7);
  }
  25%, 20% {
    transform-origin: center bottom;
    transform: scalex(0.8) scaley(1.4);
  }
  55%, 100% {
    transform-origin: center top;
    transform: scalex(1) scaley(1);
  }
  40% {
    transform-origin: center top;
    transform: scalex(1.3) scaley(0.7);
  }
}
@keyframes squidge-2 {
  20% {
    transform-origin: center bottom;
    transform: scalex(1) scaley(1);
  }
  30% {
    transform-origin: center bottom;
    transform: scalex(1.3) scaley(0.7);
  }
  40%, 35% {
    transform-origin: center bottom;
    transform: scalex(0.8) scaley(1.4);
  }
  70%, 100% {
    transform-origin: center top;
    transform: scalex(1) scaley(1);
  }
  55% {
    transform-origin: center top;
    transform: scalex(1.3) scaley(0.7);
  }
}
@keyframes squidge-3 {
  35% {
    transform-origin: center bottom;
    transform: scalex(1) scaley(1);
  }
  45% {
    transform-origin: center bottom;
    transform: scalex(1.3) scaley(0.7);
  }
  55%, 50% {
    transform-origin: center bottom;
    transform: scalex(0.8) scaley(1.4);
  }
  85%, 100% {
    transform-origin: center top;
    transform: scalex(1) scaley(1);
  }
  70% {
    transform-origin: center top;
    transform: scalex(1.3) scaley(0.7);
  }
}
@keyframes squidge-4 {
  50% {
    transform-origin: center bottom;
    transform: scalex(1) scaley(1);
  }
  60% {
    transform-origin: center bottom;
    transform: scalex(1.3) scaley(0.7);
  }
  70%, 65% {
    transform-origin: center bottom;
    transform: scalex(0.8) scaley(1.4);
  }
  100%, 100% {
    transform-origin: center top;
    transform: scalex(1) scaley(1);
  }
  85% {
    transform-origin: center top;
    transform: scalex(1.3) scaley(0.7);
  }
}

/*# sourceMappingURL=style.css.map */
@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.css);
@import url("https://fonts.googleapis.com/css?family=Titan+One");

body,
.container {
    background: #151515;
    margin


// Test that basic MachO TLVs work by adding together TLVs with values
// 0, 1, and -1, and returning the result (0 for success). This setup
// tests both zero-initialized (__thread_bss) and non-zero-initialized
// (__thread_data) secitons.
//
// RUN: %clang -c -o %t %s
// RUN: %llvm_jitlink %t

  .section  __TEXT,__text,regular,pure_instructions
  .build_version macos, 12, 0 sdk_version 12, 0
  .globl  _main                           ; -- Begin function main
  .p2align  2
_main:                                  ; @main
  .cfi_startproc
; %bb.0:
  sub sp, sp, #32                     ; =32
  stp x29, x30, [sp, #16]             ; 16-byte Folded Spill
  add x29, sp, #16                    ; =16
  .cfi_def_cfa w29, 16
  .cfi_offset w30, -8
  .cfi_offset w29, -16
  adrp  x0, _x@TLVPPAGE
  ldr x0, [x0, _x@TLVPPAGEOFF]
  ldr x8, [x0]
  blr x8
  mov x8, x0
  adrp  x0, _y@TLVPPAGE
  ldr x0, [x0, _y@TLVPPAGEOFF]
  ldr x9, [x0]
  blr x9
  mov x9, x0
  adrp  x0, _z@TLVPPAGE
  ldr x0, [x0, _z@TLVPPAGEOFF]
  ldr x10, [x0]
  blr x10
  stur  wzr, [x29, #


sGltfPbrSGImages(diffuseImgs, GltfTextureType::DIFFUSE);
	processGltfPbrSGImages(sgImgs, GltfTextureType::SPECULARGLOSSINESS);

	normalImgs.clear();
	occlusionImgs.clear();
	emissiveImgs.clear();
	mrImgs.clear();
	baseColorImgs.clear();
	diffuseImgs.clear();
	sgImgs.clear();
}

void GltfOptimizer::TextureAtlasBuilderVisitor::packImages(osg::ref_ptr<osg::Image>& img, std::vector<size_t>& indexes, std::vector<osg::ref_ptr<osg::Image>>& deleteImgs, TexturePacker& packer)
{
	size_t numImages;
	img = packer.pack(numImages, true);
	if (!img.valid() || numImages != indexes.size())
	{
		packer.removeElement(indexes.back());
		indexes.pop_back();
		deleteImgs.pop_back();
		packImages(img, indexes, deleteImgs, packer);
	}
}

std::string GltfOptimizer::TextureAtlasBuilderVisitor::exportImage(const osg::ref_ptr<osg::Image>& img, const GltfTextureType type)
{
	std::string ext = _options.ext;
	std::string filename = TexturePacker::computeImageHash(img);
	switch (type)
	{
	case GltfTextureType::NORMAL:
		filename += "-normal";
		break;
	case GltfTextureType::OCCLUSION:
		filename += "-occlusion";
		break;
	case GltfTextureType::EMISSIVE:
		filename += "-emissive";
		break;
	case GltfTextureType::METALLICROUGHNESS:
		filename += "-metallicroughness";
		break;
	case GltfTextureType::BASECOLOR:
		filename += "-basecolor";
		break;
	case GltfTextureType::DIFFUSE:
		filename += "-diffuse";
		break;
	case GltfTextureType::SPECULARGLOSSINESS:
		filename += "-specularglossiness";
		break;
	default:
		break;
	}

	const GLenum pixelFormat = img->getPixelFormat();
	if (_options.ext == ".jpg" && pixelFormat != GL_ALPHA && pixelFormat != GL_RGB)
	{
		ext = ".png";
	}

	osg::ref_ptr<osgDB::Options> options = new osgDB::Options;
	if (ext == ".jpg" || ext == ".jpeg")
		options->setOptionString("JPEG_QUALITY  75");
	else if (ext == ".png")
		options->setOptionString("PNG_COMPRESSION 5");

	std::string fullPath = _options.cachePath + "/" + filename + ext;
	std::ifstream fileExistedJpg(fullPath);
	if ((!fileExistedJpg.good()) || (fileExistedJpg.peek() == std::ifstream::traits_type::eof()))
	{
		osg::ref_ptr< osg::Image > flipped = new osg::Image(*img);
		if (!(osgDB::writeImageFile(*flipped.get(), fullPath)))
		{
			fullPath = _options.cachePath + "/" + filename + ".png";
			options->setOptionString("PNG_COMPRESSION 5");
			std::ifstream fileExistedPng(fullPath);
			if ((!fileExistedPng.good()) || (fileExistedPng.peek() == std::ifstream::traits_type::eof()))
			{
				if (!(osgDB::writeImageFile(*flipped.get(), fullPath)))
				{
					osg::notify(osg::FATAL) << '\n';
					fullPath = "";
				}
			}
			if (fileExistedPng.good())
				fileExistedPng.close();
		}
		flipped = nullptr;
		if (fileExistedJpg.good())
			fileExistedJpg.close();
	}
	if (img->getFileName().empty())
		img->setFileName(fullPath);
	return fullPath;
}

void GltfOptimizer::


//
//  ShakingAlertView.h
//
//  Created by Luke on 21/09/2012.
//  Copyright (c) 2012 Luke Stringer. All rights reserved.
//
//  https://github.com/stringer630/ShakingAlertView
//

//  This code is distributed under the terms and conditions of the MIT license.
//
//  Copyright (c) 2012 Luke Stringer
//
//  Permission is hereby granted, free of charge, to any person obtaining a copy
//  of this software and associated documentation files (the "Software"), to deal
//  in the Software without restriction, including without limitation the rights
//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//  copies of the Software, and to permit persons to whom the Software is
//  furnished to do so, subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//  THE SOFTWARE.

#import <UIKit/UIKit.h>

typedef enum {
    HashTechniqueNone,
    HashTechniqueSHA1,
    HashTechniqueMD5
} HashTechnique;

@interface ShakingAlertView : UIAlertView <UITextFieldDelegate>

@property (nonatomic, strong) NSString *password;

@property (nonatomic, copy) void(^onCorrectPassword)();
@property (nonatomic, copy) void(^onDismissalWithoutPassword)();

@property (assign) HashTechnique hashTechnique;

// Constructors for plaintext password
- (id)initWithAlertTitle:(NSString *)title
        checkForPassword:(NSString *)password;

- (id)initWithAlertTitle:(NSString *)title
        checkForPassword:(NSString *)password
       onCorrectPassword:(void(^)())correctPasswordBlock
onDismissalWithoutPassword:(void(^)())dismissalWithoutPasswordBlock;

// Constructors for hashed passwords
- (id)initWithAlertTitle:(NSString *)title
        checkForPassword:(NSString *)password
   usingHashingTechnique:(HashTechnique)hashingTechnique;

- (id)initWithAlertTitle:(NSString *)title
        checkForPassword:(NSString *)password
   usingHashingTechnique:(HashTechnique)hashingTechnique
    onCorrectPassword:(void(^)())correctPasswordBlock
onDismissalWithoutPassword:(void(^)())dismissalWithoutPasswordBlock;

@end


rk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 1 0 3], :nextjournal/value 18, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 1 0 4], :nextjournal/value 91, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 1 0 5], :nextjournal/value 100, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 1 0 6], :nextjournal/value 230, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 1 0 7], :nextjournal/value 18, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 1 0 8], :nextjournal/value 18, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 1 0 9], :nextjournal/value 18, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 1 0 10], :nextjournal/value 3, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 1 0 11], :nextjournal/value 91, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/sequential-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"(\", :closing-paren (\")\"), :page-size 20, :hash \"5dsgY1QgV2KqnvvrRRC3HXgCeF3Qge\"}} {:path [2 1 1], :nextjournal/value [{:path [2 1 1 0], :nextjournal/value 130, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D


/**
 *
 * This file is part of AdMobPlugin
 *
 * Copyright (c) 2013 Guillermo Calvo
 *
 * AdMobPlugin is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * AdMobPlugin is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License (http://www.gnu.org/copyleft/lesser.html)
 * for more details.
 *
 */

using UnityEngine;
using System.Collections;

[ExecuteInEditMode]
[RequireComponent( typeof(AdMobPlugin) )]
public class AdMobPluginDebug : MonoBehaviour{

	public AdMobPluginDebugRects rectangles = new AdMobPluginDebugRects();

	private AdMobPlugin plugin = null;
	private string lastError = null;

	void Start(){

		this.plugin = this.GetComponent<AdMobPlugin>();
	}

    void OnGUI(){

		bool changed = false;
		bool targeted = false;

        if(GUI.Button(this.rectangles.loadButton, "LOAD")){

			this.plugin.Load();
		}

        if(GUI.Button(this.rectangles.exitButton, "EXIT")){

			Application.Quit();
		}

        if(GUI.Button(this.rectangles.showButton, "SHOW")){

			this.plugin.Show();
		}

        if(GUI.Button(this.rectangles.hideButton, "HIDE")){

			this.plugin.Hide();
		}

        if(GUI.Button(this.rectangles.horizontalPositionButton, this.plugin.horizontalPosition.ToString())){

			changed = true;

			this.plugin.horizontalPosition++;

			if(this.plugin.horizontalPosition > AdHorizontalPosition.RIGHT){

				this.plugin.horizontalPosition = AdHorizontalPosition.CENTER_HORIZONTAL;
			}
		}

		if(GUI.Button(this.rectangles.verticalPositionButton, this.plugin.verticalPosition.ToString())){

			changed = true;

			this.plugin.verticalPosition++;

			if(this.plugin.verticalPosition > AdVerticalPosition.BOTTOM){

				this.plugin.vert


import torch as th
from torch.autograd import Variable
import numpy as np

def identity(x):
    return x

def entropy(p):
    return -th.sum(p * th.log(p), 1)

def kl_log_probs(log_p1, log_p2):
    return -th.sum(th.exp(log_p1)*(log_p2 - log_p1), 1)

def index_to_one_hot(index, dim):
    if np.issubdtype(type(index), np.integer):
        one_hot = np.zeros(dim)
        one_hot[index] = 1.
    else:
        one_hot = np.zeros((len(index), dim))
        one_hot[np.arange(len(index)), index] = 1.
    return one_hot

def to_tensor_var(x, use_cuda=True, dtype="float"):
    FloatTensor = th.cuda.FloatTensor if use_cuda else th.FloatTensor
    LongTensor = th.cuda.LongTensor if use_cuda else th.LongTensor
    ByteTensor = th.cuda.ByteTensor if use_cuda else th.ByteTensor
    if dtype == "float":
        x = np.array(x, dtype=np.float64).tolist()
        return Variable(FloatTensor(x))
    elif dtype == "long":
        x = np.array(x, dtype=np.int64).tolist()
        return Variable(LongTensor(x))
    elif dtype == "byte":
        x = np.array(x, dtype=np.byte).tolist()
        return Variable(ByteTensor(x))
    else:
        x = np.array(x, dtype=np.float64).tolist()
        return Variable(FloatTensor(x))

def agg_double_list(l):
    # l: [ [...], [...], [...] ]
    # l_i: result of each step in the i-th episode
    s = [np.sum(np.array(l_i), 0) for l_i in l]
    s_mu = np.mean(np.array(s), 0)
    s_std = np.std(np.array(s), 0)
    return s_mu, s_std


813 c 0 0 2.173 3.286 2.173 3.286 c 0 0 0.771 0.672 0.771 0.672 c 0 0 -1.122 1.335 -1.122 1.335 c 0 0 -0.706 -0.142 -0.706 -0.142 c 0 0 -0.332 -0.895 -0.332 -0.895 c 0 0 -0.993 0.542 -0.993 0.542 c 0 0 0.206 1.651 0.206 1.651 c 0 0 -0.649 1.074 -0.649 1.074 c 0 0 -1.449 0.571 -1.449 0.571 c 0 0 -0.567 0.986 -0.567 0.986 c 0 0 -2.058 -0.207 -2.058 -0.207 c 0 0 -0.165 0.913 -0.165 0.913 c 0 0 -0.811 -0.11 -0.811 -0.11 c 0 0 -0.112 0.868 -0.112 0.868 c 0 0 -1.215 0.097 -1.215 0.097 c 0 0 -1.728 2.879 -1.728 2.879 c 0 0 -0.903 0.185 -0.903 0.185 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Relizane"}}, "height": 500, "width": 508});
/** JQVMap merc map for tunisia  */
jQuery.fn.vectorMap('addMap', 'tunisia',{"insets": [{"width": 900, "top": 0, "height": 1954.3544733545057, "bbox": [{"y": -4519725.417185229, "x": 838669.3845975221}, {"y": -3535818.4871775922, "x": 1291768.476435734}], "left": 0}], "paths": {"tn-za": {"path": "M544.74,259.86l2.72,1.39l7.19,-0.8l12.57,4.89l6.58,1.79l1.94,4.02l3.89,5.26l1.57,2.68l1.05,2.92l2.21,1.45l2.38,0.61l2.1,2.54l3.23,1.77l2.82,-0.07l1.77,0.4l1.82,-0.2l1.09,0.44l0.38,1.26l-2.85,10.19l0.32,2.67l0.5,0.33l4.18,-1.24l3.47,-2.95l1.84,-0.52l0.98,-1.62l1.84,-0.95l9.62,-3.95l0.71,3.78l-1.2,9.68l-0.23,8.98l2.32,4.63l0.5,1.8l2.33,1.82l-1.15,3.44l0.08,3.65l2.92,5.28l0.62,2.65l-0.45,2.65l0.69,2.7l0.0,2.42l-0.92,1.17l-1.87,0.04l-1.82,0.73l-1.15,1.42l0.62,1.7l3.05,0.6l1.01,0.73l0.85,1.72l0.09,1.82l-1.76,2.6l-2.33,1.81l-5.25,


 the label of
   * of the closest triaged reference digest in each case.
   */
  get value() {
    return this._value;
  }

  set value(newValue) {
    if (!['positive', 'negative', 'untriaged', 'closest'].includes(newValue)) {
      throw new RangeError(`Invalid bulk-triage-sk value: "${newValue}".`);
    }
    this._value = newValue;
    this._render();
  }

  /**
   * The ID of the changelist to which these expectations should belong, or the empty string if
   * none.
   */
  get changeListID() {
    return this._changeListID;
  }

  set changeListID(newValue) {
    this._changeListID = newValue;
    this._render();
  }

  /**
   * The Code Review System (e.g. "gerrit") associated with the provided changelist ID, or the empty
   * string if none.
   */
  get crs() {
    return this._crs;
  }

  set crs(c) {
    this._crs = c;
    this._render();
  }

  // Notes:
  //
  // Currently the /json/v1/search endpoint returns a SearchResponse struct where the
  // bulk_triage_data field is populated with the empty string instead of a valid expectations.Label
  // to indicate that a digest does not have a closest triaged reference digest:
  // https://github.com/google/skia-buildbot/blob/89e3a329bda8f377e24fd0d36dabd715f70bad38/golden/go/search/search.go#L225.
  //
  // An empty string is technically not a valid expectations.Label (nor the corresponding Label type
  // in rpc_types.ts) because the only allowed values are "positive", "negative" or "untriaged".
  //
  // The legacy, Polymer-based search-page-sk passes the contents of bulk_triage_data as-is to this
  // component as the allDigests argument to a call to the setDigests() method defined below:
  // https://github.com/google/skia-buildbot/blob/89e3a329bda8f377e24fd0d36dabd715f70bad38/golden/frontend/res/imp/search-page-sk.html#L346
  //
  // The legacy search page also builds the pageDigests argument to the setDigests() method using
  // the empty string as a Label in the same exact way as in the bulk_triage_data field:
  // https://github.com/google/skia-buildbot/blob/89e3a329bda8f377e24fd0d36dabd715f70bad38/golden/frontend/res/imp/search-page-sk.html#L432
  //
  // To preserve backwards-compatibility with the legacy search page, this component turns a blind
  // eye to said invalid Label values, and passes the labels as-is to the /json/v1/triage endpoint,
  // which ignores any digests for which the expectations.Label is set to the empty string:
  // https://github.com/google/skia-buildbot/blob/89e3a329bda8f377e24fd0d36dabd715f70bad38/golden/go/web/web.go#L970
  //
  // This is messy because neither the Golang nor the TypeScript types involved in the above RPCs
  // capture the possibility of empty labels. In other words, the types do not correctly describe
  // the actual data, which can be a source of confusion and potential bugs in the future.
  //
  // Once we delete the legacy search page, we can clean things up by making the following changes:
  //
  //   1. Change the search RPC to use "untriaged" instead of the empty string to indicate that a
  //      digest does not have a closest triaged reference digest.
  //
  //   2. Change bulk-triage-sk to exclude any such digests from the /


role"`
	Content string `yaml:"content"`
}

type Request struct {
	Messages    []Message `json:"messages"`
	Model       string    `json:"model"`
	Temperature float64   `json:"temperature"`
	TopP        float64   `json:"top_p"`
	Stream      bool      `json:"stream"`
}

type Message struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

type Response struct {
	Choices []struct {
		Message struct {
			Content string `json:"content"`
		} `json:"message"`
	} `json:"choices"`
}

type Client struct {
	token string
}

// Simple mapping from model name (lowercase) to a safe default temperature
// to use when the prompt configuration leaves temperature at 0.
var modelTemperatureMap = map[string]float64{
	"openai/gpt-5-mini": 1.0,
	"openai/gpt-5": 1.0,
	// Add other models here as needed

}

// getMappedTemperature returns a mapped temperature for the model (if any).
// Matching is case-insensitive.
func getMappedTemperature(model string) (float64, bool) {
	if model == "" {
		return 0, false
	}
	v, ok := modelTemperatureMap[strings.ToLower(model)]
	return v, ok
}

func NewClient() (*Client, error) {
	fmt.Print("  Checking GitHub token... ")

	host, _ := auth.DefaultHost()
	token, _ := auth.TokenForHost(host) // check GH_TOKEN, GITHUB_TOKEN, keychain, etc

	if token == "" {
		fmt.Println("Failed")
		return nil, fmt.Errorf("No GitHub token found. Please run 'gh auth login' to authenticate.")
	}
	fmt.Println("Done")

	return &Client{token: token}, nil
}

func loadPromptConfig() (*PromptConfig, error) {
	var config PromptConfig
	err := yaml.Unmarshal(standupPromptYAML, &config)
	if err != nil {
		return nil, fmt.Errorf("failed to parse prompt configuration: %w", err)
	}
	return &config, nil
}

func (c *Client) GenerateStandupReport(activities []types.GitHubActivity, model string) (string, error) {
	fmt.Print("  Formatting activity data for AI... ")
	activitySummary := c.formatActivitiesForLLM(activities)
	fmt.Println("Done")

	fmt.Print("  Loading prompt configuration... ")
	promptConfig, err := loadPromptConfig()
	if err != nil {
		fmt.Println("Failed")
		return "", err
	}
	fmt.Println("Done")

	// Use the model from parameter or fall back to config
	selectedModel := model
	if selectedModel == "" {
		selectedModel = promptConfig.Model
	}

	// Build messages from the prompt config, replacing template variables
	messages := make([]Message, len(promptConfig.Messages))
	for i, msg := range promptConfig.Messages {
		content := msg.Content
		// Replace the {{activities}} template variable
		content = strings.ReplaceAll(content, "{{activities}}", activitySummary)

		messages[i] = Message{
			Role:    msg.Role,
			Content: content,
		}
	}

	// Temperature precedence:
	// 1. If the model map contains a value for the selected model, use it.
	// 2. Otherwise use the prompt-configured temperature.
	effectiveTemperature := promptConfig.ModelParameters.Temperature
	if mapped, ok := getMappedTemperature(selectedModel); ok {
		effectiveTemperature = mapped
	}

	request := Request{


def spygame(nums):
    x = len(nums)
    t = False
    for i in range(1, x - 1):
        if(nums[i] == nums[i - 1] and nums[i] == 0 and nums[i + 1] == 7):
            t = True
            break
    if(t):
        print("True")
    else:
        print("False")
spygame([1, 0, 0, 7])


de Ferrohondo",
  [13554] = "Guardia Campeón Ferrohondo",
  [13555] = "Perito Ferrohondo estacional",
  [13556] = "Perito veterano de Ferrohondo",
  [13557] = "Supervisor Campeón Ferrohondo",
  [13576] = "Jinete de carneros de Pico Tormenta",
  [13577] = "Comandante de jinetes de carneros de Pico Tormenta",
  [13596] = "Escamapodrida",
  [13597] = "Experto en explosivos Lobo Gélido",
  [13598] = "Experto de explosivos de Pico Tormenta",
  [13599] = "Quijaforte imperturbable",
  [13601] = "Manitas Gizlock",
  [13602] = "Grinch el Abominable",
  [13616] = "Maestro de establo Lobo Gélido",
  [13617] = "Maestro de establos de Pico Tormenta",
  [13618] = "Lobo Gélido de establo",
  [13619] = "Muñeco de Gizlock",
  [13620] = "Gizlock",
  [13636] = "Hombrenieve extraño",
  [13656] = "Willow",
  [13676] = "Carnero de establo de Alterac",
  [13696] = "Vástago tóxico",
  [13697] = "Cavindra",
  [13698] = "Vigilante Marandis",
  [13699] = "Selendra",
  [13716] = "Celebras el Redimido",
  [13717] = "Paria Centauro",
  [13718] = "El profeta sin nombre",
  [13736] = "Esencia tóxica",
  [13737] = "Hermana de Marandis",
  [13738] = "Veng",
  [13739] = "Maraudos",
  [13740] = "Magra",
  [13741] = "Gelk",
  [13742] = "Kolk",
  [13743] = "Fuerza de la naturaleza corrupta",
  [13756] = "PvP Graveyard Credit Marker",
  [13776] = "Cabo Teeka Gruñidosangriento",
  [13777] = "Sargento Durgen Pico Tormenta",
  [13778] = "PvP Tower Credit Marker",
  [13796] = "PvP Mine Credit Marker",
  [13797] = "Montaraz Bramibum",
  [13798] = "Jotek",
  [13816] = "Prospectora Tallapiedra",
  [13817] = "Voggah Presaletal",
  [13836] = "Pesadilla Filo Ardiente",
  [13837] = "Semental capturado",
  [13838] = "Testing Totem",
  [13839] = "Guardia Real del Terror",
  [13840] = "Maestro de guerra Laggrond",
  [13841] = "Teniente Haggerdin",
  [13842] = "Embajador Rokhstrom Lobo Gélido",
  [13843] = "Teniente Rotimer",
  [13856] = "Alliance Res Fixer",
  [13857] = "Horde Res Fixer",
  [13876] = "Mekigeniero activador",
  [13896] = "Barbascamas",
  [13916] = "Totém de cristal Ataque extremo",
  [13917] = "Izzy Coppergrab",
  [13936] = "Ravenholdt",
  [13956] = "Místico Hacha Invernal",
  [13957] = "Guerrero Hacha Invernal",
  [13958] = "Profeta Hacha Invernal",
  [13959] = "Yeti de Alterac",
  [13976] = "D


= "Цель: Слезы Далсона";
		};
		[5235] = {
		   ["objective"] = "Отправляйтесь на пустошь Гаррона в Западных Чумных землях, найдите и одолейте Хранителя котла. Взяв у него ключ, доберитесь до самого котла. Чтобы взять образец яда из котла, вам понадобится пустая бутылка с пустоши Гаррона.";
		   ["name"] = "Цель: пустошь Гаррона";
		};
		[5251] = {
		   ["objective"] = "Отправляйтесь в Стратхольм и отыщите архивариуса Галфорда из Алого ордена. Убейте его и сожгите архив Алых.";
		   ["name"] = "Архивариус";
		};
		[3721] = {
		   ["name"] = "Собственный КПХ";
		};
		[5283] = {
		   ["objective"] = "Изготовьте и отдайте Грумнусу 4 изысканных мифриловых шлема, 2 изысканных мифриловых сапога и 1 изысканную мифриловую кирасу.";
		   ["name"] = "Искусство изготовления брони";
		};
		[5505] = {
		   ["name"] = "Ключ от Некроситета";
		};
		[5529] = {
		   ["objective"] = "Убейте 20 зачумленных детенышей дракона, затем возвращайтесь к Бетине Биггльцинк в Часовню Последней Надежды.";
		   ["name"] = "Зачумленные детеныши дракона";
		};
		[5537] = {
		   ["objective"] = "Принесите 15 фрагментов скелетов алхимику Арбингтону в Берег Промозглого Ветра в Западных Чумных землях.";
		   ["name"] = "Фрагменты скелетов";
		};
		[5545] = {
		   ["objective"] = "Принесите 8 вязанок дров Раэлен на Лесопилку Восточной долины.";
		   ["name"] = "Тридцать три несчастья";
		};
		[3801] = {
		   ["objective"] = "Чтобы получить ключ от города, поговорите с Франклорном Искусником.";
		   ["name"] = "Наследие Черного Железа";
		};
		[5561] = {
		   ["objective"] = "Приведите пять прирученных кодо Смиду Заржавеню в Лагерь Заржавня. Не забудьте вернуть ему энергетический инкапсулятор.";
		   ["name"] = "Отлов кодо";
		};
		[3861] = {
		   ["objective"] = "Найдите немного цыплячьего корма и вернитесь к вашей курочке-подружке. Когда найдете курицу, покажите, как вы рады ее видеть (эмоция \"/рад\"), а потом накормите специал


Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})(n(0))},function(e,t,n){(function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Фардо соати] LT",lastDay:


34"
			}
		}
	},
	[26068] = {
		["Quest"] = "Kobold Fury!|0|30|26|0|0|0",
		["Start"] = "42023|65|32|71.2|91.1",
		["End"] = "42023|65|32|71.2|91.1",
		["Objectives"] = 	{
			[1] = 		{
				"|65|35|73.5|78|5.01|3.34"
			}
		}
	},
	[26069] = {
		["Quest"] = "Nura Pathfinder|0|30|28|0|0|0",
		["Start"] = "3995|65|32|71.1|91.2",
		["End"] = "37135|199|32|31.4|13.3"
	},
	[26073] = {
		["Quest"] = "All's Quiet on the Southern Front|0|30|26|26074|0|0",
		["Start"] = "3995|65|32|71.1|91.2",
		["End"] = "41023|65|32|66.1|63.7"
	},
	[26074] = {
		["Quest"] = "Beginning of the End|0|30|26|26075|0|0",
		["Start"] = "41023|65|32|66.1|63.7",
		["End"] = "42033|65|32|52.9|39.1",
		["Objectives"] = 	{
			[1] = 		{
				"|65|35|51|45|5.01|3.34"
			}
		}
	},
	[26075] = {
		["Quest"] = "The Turd Problem|0|30|26|26076|0|0",
		["Start"] = "42033|65|32|52.9|39.1",
		["End"] = "42033|65|32|52.9|39.1",
		["Objectives"] = 	{
			[1] = 		{
				"|65|35|54.5|43.5|15.03|3.34",
				"|65|35|54.5|44|20.04|3.34",
				"|65|35|54.5|44.5|25.05|13.36",
				"|65|35|54.5|46.5|20.04|3.34",
				"|65|35|54.5|47|15.03|6.68",
				"|65|35|54.5|48|10.02|3.34"
			}
		}
	},
	[26076] = {
		["Quest"] = "Spy Infestation|0|30|26|26077|0|0",
		["Start"] = "42033|65|32|52.9|39.1",
		["End"] = "42033|65|32|52.9|39.1",
		["Objectives"] = 	{
			[1] = 		{
				"|65|35|52|41|15.03|20.04",
				"|65|35|52.5|44|10.02|6.68"
			}
		}
	},
	[26077] = {
		["Quest"] = "Final Delivery|0|30|26|26082|0|0",
		["Start"] = "42033|65|32|52.9|39.1",
		["End"] = "42050|65|32|45.1|32.7",
		["Objectives"] = 	{
			[1] = 		{
				"|65|35|45|32|5.01|3.34"
			}
		}
	},
	[26079] = {
		["Quest"] = "Wanted!  Otto and Falconcrest|0|28|26|0|0


    %r6, %r6, %r6
        xor         %r7, %r7, %r7
        xor         %r8, %r8, %r8
        xor         %r9, %r9, %r9
        xor         %r10, %r10, %r10
        xor         %r11, %r11, %r11
        xor         %r12, %r12, %r12
        xor         %r13, %r13, %r13
        xor         %r14, %r14, %r14
        xor         %r15, %r15, %r15
        xor         %r16, %r16, %r16
        xor         %r17, %r17, %r17
        xor         %r18, %r18, %r18
        xor         %r19, %r19, %r19
        xor         %r20, %r20, %r20
        xor         %r21, %r21, %r21
        xor         %r22, %r22, %r22
        xor         %r23, %r23, %r23
        xor         %r24, %r24, %r24
        xor         %r25, %r25, %r25
        xor         %r26, %r26, %r26
        xor         %r27, %r27, %r27
        xor         %r28, %r28, %r28
        xor         %r29, %r29, %r29
        xor         %r30, %r30, %r30
        xor         %r31, %r31, %r31
        lis         %r4, __ram_start__@h
        ori         %r4, %r4, __ram_start__@l
        lis         %r5, __ram_end__@h
        ori         %r5, %r5, __ram_end__@l
.cleareccloop:
        cmpl        %cr0, %r4, %r5
        bge         %cr0, .cleareccend
        stmw        %r16, 0(%r4)
        addi        %r4, %r4, 64
        b           .cleareccloop
.cleareccend:

        /*
         * Branch prediction enabled.
         */
        li          %r3, BUCSR_DEFAULT
        mtspr       1013, %r3       /* BUCSR */

        blr

        /*
         * Exception vectors initialization.
         */
        .global     _ivinit
        .type       _ivinit, @function
_ivinit:
        /* MSR initialization.*/
        lis         %r3, MSR_DEFAULT@h
        ori         %r3, %r3, MSR_DEFAULT@l
        mtMSR       %r3

        /* IVPR initialization.*/
        lis         %r3, __ivpr_base__@h
        ori         %r3, %r3, __ivpr_base__@l
        mtIVPR      %r3

        /* IVORs initialization.*/
        lis         %r3, _unhandled_exception@h
        ori         %r3, %r3, _unhandled_exception@l

        mtspr       400, %r3        /* IVOR0-15 */
        mtspr       401, %r3
        mtspr       402, %r3
        mtspr       403, %r3
        mtspr       404, %r3
        mtspr       405, %r3
        mtspr       406, %r3
        mtspr       407, %r3
        mtspr       408, %r3
        mtspr       409, %r3
        mtspr       410, %r3
        mtspr       411, %r3
        mtspr       412, %r3
        mtspr       413, %r3
        mtspr       414, %r3
        mtspr       415, %r3
        mtspr       528, %r3        /* IVOR32-34 */
        mtspr       529, %r3
        mtspr       530, %r3

        blr

        .section    .handlers, "ax"

        /*
         * Unhandled exceptions handler.
         */
        .weak       _unhandled_exception
        .type       _unhandled_exception, @function
_unhandled_exception:
        b           _unhandled_exception

#endif /* !defined(__DOXYGEN__) */

/** @} */


, []byte(srcCode), 0644); err != nil {
		t.Fatal(err)
	}

	outfile := filepath.Join(dir, "file.o")

	t.Run("JSON_fails", func(t *testing.T) {
		// Test malformed flag
		out, err := testLogOpt(t, "-json=foo", src, outfile)
		if err == nil {
			t.Error("-json=foo succeeded unexpectedly")
		}
		want(t, out, "option should be")
		want(t, out, "number")

		// Test a version number that is currently unsupported (and should remain unsupported for a while)
		out, err = testLogOpt(t, "-json=9,foo", src, outfile)
		if err == nil {
			t.Error("-json=0,foo succeeded unexpectedly")
		}
		want(t, out, "version must be")

	})

	// Some architectures don't fault on nil dereference, so nilchecks are eliminated differently.
	if runtime.GOARCH != "amd64" {
		return
	}

	t.Run("Success", func(t *testing.T) {
		// This test is supposed to succeed

		// replace d (dir)  with t ("tmpdir") and convert path separators to '/'
		normalize := func(out []byte, d, t string) string {
			s := string(out)
			s = strings.ReplaceAll(s, d, t)
			s = strings.ReplaceAll(s, string(os.PathSeparator), "/")
			return s
		}

		// Note 'file://' is the I-Know-What-I-Am-Doing way of specifying a file, also to deal with corner cases for Windows.
		_, err := testLogOptDir(t, dir, "-json=0,file://log/opt", src, outfile)
		if err != nil {
			t.Error("-json=0,file://log/opt should have succeeded")
		}
		logged, err := ioutil.ReadFile(filepath.Join(dir, "log", "opt", "x", "file.json"))
		if err != nil {
			t.Error("-json=0,file://log/opt missing expected log file")
		}
		// All this delicacy with uriIfy and filepath.Join is to get this test to work right on Windows.
		slogged := normalize(logged, string(uriIfy(dir)), string(uriIfy("tmpdir")))
		t.Logf("%s", slogged)
		// below shows proper inlining and nilcheck
		want(t, slogged, `{"range":{"start":{"line":9,"character":13},"end":{"line":9,"character":13}},"severity":3,"code":"nilcheck","source":"go compiler","message":"","relatedInformation":[{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":4,"character":11},"end":{"line":4,"character":11}}},"message":"inlineLoc"}]}`)
		want(t, slogged, `{"range":{"start":{"line":11,"character":6},"end":{"line":11,"character":6}},"severity":3,"code":"isInBounds","source":"go compiler","message":""}`)
		want(t, slogged, `{"range":{"start":{"line":7,"character":6},"end":{"line":7,"character":6}},"severity":3,"code":"canInlineFunction","source":"go compiler","message":"cost: 35"}`)
		want(t, slogged, `{"range":{"start":{"line":9,"character":13},"end":{"line":9,"character":13}},"severity":3,"code":"inline


+e,t=1;t<arguments.length;t++)n+="&args[]="+encodeURIComponent(arguments[t]);return"Minified React error #"+e+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var u=new Set,i={};function o(e,n){s(e,n);s(e+"Capture",n)}function s(e,n){i[e]=n;for(e=0;e<n.length;e++)u.add(n[e])}var c=!("undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement),f=Object.prototype.hasOwnProperty,d=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p={},m={};function h(e){if(f.call(m,e))return!0;if(f.call(p,e))return!1;if(d.test(e))return m[e]=!0;p[e]=!0;return!1}function g(e,n,t,r){if(null!==t&&0===t.type)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":if(r)return!1;if(null!==t)return!t.acceptsBooleans;e=e.toLowerCase().slice(0,5);return"data-"!==e&&"aria-"!==e;default:return!1}}function v(e,n,t,r){if(null===n||"undefined"===typeof n||g(e,n,t,r))return!0;if(r)return!1;if(null!==t)switch(t.type){case 3:return!n;case 4:return!1===n;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function y(e,n,t,r,l,a,u){this.acceptsBooleans=2===n||3===n||4===n;this.attributeName=r;this.attributeNamespace=l;this.mustUseProperty=t;this.propertyName=e;this.type=n;this.sanitizeURL=a;this.removeEmptyString=u}var b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){b[e]=new y(e,0,!1,e,null,!1,!1)}));[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var n=e[0];b[n]=new y(n,1,!1,e[1],null,!1,!1)}));["contentEditable","draggable","spellCheck","value"].forEach((function(e){b[e]=new y(e,2,!1,e.toLowerCase(),null,!1,!1)}));["autoReverse","externalResourcesRequired


int type,ZZn& slope,ZZn& ex1,ZZn& ex2,ZZn2& Qx,ZZn2& Qy)
{
    ZZn4 w;
#ifdef AFFINE
    ZZn2 m=Qx;
    ZZn x,y
    extract(A,x,y);
    m-=x; m*=slope;
    w.set((ZZn2)-y,Qy); w-=m;
#endif
#ifdef PROJECTIVE
    if (type==MR_ADD)
    {
        ZZn x2,y2,x3,z3;
        extract(B,x2,y2);
        extract(C,x3,x3,z3);
        w.set(slope*(Qx-x2)+z3*y2,-z3*Qy);
    }
    if (type==MR_DOUBLE)
    {
        ZZn x,y,x3,z3;
        extract(A,x,y);
        extract(C,x3,x3,z3);
        w.set((slope*ex2)*Qx-slope*x+ex1,-(z3*ex2)*Qy);
    }
#endif

    return w;
}

//
// Add A=A+B  (or A=A+A)
// Bump up num
//

ZZn4 g(ECn& A,ECn& B,ZZn2& Qx,ZZn2& Qy)
{
    int type;
    ZZn  lam,extra1,extra2;
    big ptr,ex1,ex2;
    ECn P=A;

// Evaluate line from A
    type=A.add(B,&ptr,&ex1,&ex2);
    if (!type)   return (ZZn4)1;
    lam=ptr;
    extra1=ex1;
    extra2=ex2;
    return line(P,A,B,type,lam,extra1,extra2,Qx,Qy);
}

//
// Tate Pairing - note denominator elimination has been applied
//
// P is a point of order q. Q(x,y) is a point of order m.q.
// Note that P is a point on the curve over Fp, Q(x,y) a point on the
// extension field Fp^2
//

BOOL tate(ECn& P,ECn2 Q,Big& q,ZZn2 &Fr,Big cof,ZZn2& r)
{
    int i,j,n,nb,nbw,nzs;
    ECn A,P2,t[8];
    ZZn4 w,hc,z2n,zn[8],res;
    ZZn2 Qx,Qy;

#ifdef MR_COUNT_OPS
fpc=fpa=fpx=0;
#endif

    Q.get(Qx,Qy);
    Qx=txd(Qx);
    Qy=txd(txd(Qy));

    normalise(P);

    res=zn[0]=1;
    t[0]=P2=A=P;
    z2n=g(P2,P2,Qx,Qy);     // P2=P+P

    normalise(P2);

//
// Build windowing table
//
    for (i=1;i<8;i++)
    {
        hc=g(A,P2,Qx,Qy);
        t[i]=A;
        zn[i]=z2n*zn[i-1]*hc;
    }
    multi_norm(8,t);  // make t points Affine

    A=P;
    nb=bits(q);
    for (i=nb-2;i>=0;i-=(nbw+nzs))
    {
        n=window(q,i,&nbw,&nzs,4);  // standard MIRACL windowing
        for (j=0;j<nbw;j++)
        {
            res*=res;
            res*=g(A,A,Qx,Qy);
        }

        if (n>0)
        {
            res*=zn[n/2];
            res*=g(A,t[n/2],Qx,Qy);


est_quantile_at_value(250.0) / linear_digest.est_quantile_at_value(250.0),
            1.0,
            epsilon = 0.005
        );
        assert_relative_eq!(
            digest.est_quantile_at_value(500.0) / linear_digest.est_quantile_at_value(500.0),
            1.0,
            epsilon = 0.005
        );
        assert_relative_eq!(
            digest.est_quantile_at_value(750.0) / linear_digest.est_quantile_at_value(750.0),
            1.0,
            epsilon = 0.005
        );
        assert_relative_eq!(
            digest.est_quantile_at_value(1000.0) / linear_digest.est_quantile_at_value(1000.0),
            1.0,
            epsilon = 0.005
        );
        assert_eq!(digest.total_weight(), linear_digest.values.len() as f64);
    }

    #[test]
    fn add_buffer_with_many_centroids_high_compression() {
        let mut digest = ParTDigest::new(32, 128, &|| TDigest::new(&k1, &inv_k1, 20.0));
        digest.add_buffer(&gen_asc_vec(1001));

        assert_relative_eq!(digest.est_value_at_quantile(0.0), 0.0, epsilon = 3.0);
        assert_relative_eq!(digest.est_value_at_quantile(0.25), 250.0, epsilon = 1.0);
        assert_relative_eq!(digest.est_value_at_quantile(0.5), 500.0, epsilon = 2.0);
        assert_relative_eq!(digest.est_value_at_quantile(0.75), 750.0, epsilon = 1.0);
        assert_relative_eq!(digest.est_value_at_quantile(1.0), 1000.0);
        assert_eq!(digest.total_weight(), 1001.0);
    }

    #[test]
    fn est_quantile_at_value() {
        let buffer: Vec<f64> = (0..1000).map(|x| -500.0 + x as f64).collect();
        let mut digest = ParTDigest::new(128, 256, &|| TDigest::new(&k1, &inv_k1, 20.0));
        digest.add_buffer(&buffer);

        let mut linear_digest = LinearDigest::new();
        linear_digest.add_buffer(&buffer);

        println!("Centroids {:?}", digest.digest.centroids);
        assert_relative_eq!(
            digest.est_quantile_at_value(-500.0),
            linear_digest.est_quantile_at_value(-500.0),
            epsilon = 0.0005
        );
        assert_relative_eq!(
            digest.est_quantile_at_value(-250.0) / linear_digest.est_quantile_at_value(-250.0),
            1.0,
            epsilon = 0.0025
        );
        assert_relative_eq!(
            digest.est_quantile_at_value(0.0) / linear_digest.est_quantile_at_value(0.0),
            1.0,
            epsilon = 0.001
        );
        assert_relative_eq!(
            digest.est_quantile_at_value(250.0) / linear_digest.est_quantile_at_value(250.0),
            1.0,
            epsilon = 0.001
        );
        assert_relative_eq!(
            digest.est_quantile_at_value(500.0) / linear_digest.est_quantile_at_value(500.0),
            1.0,
            epsilon = 0.0005
        );
    }

    #[test]
    fn est_value_at_quantile_singleton_centroids() {
        let mut digest = ParTDigest::new(32, 128, &|| TDigest::new(&k1, &inv_k1, 20.0));
        digest.add


quad	0xD022649296B44200, 0x602646F6B0F2D404
.quad	0xC19498A6CD596700, 0xF3FF0C3E3255AA6B
.Lk_dsbe:
.quad	0x46F2929626D4D000, 0x2242600464B4F6B0
.quad	0x0C55A6CDFFAAC100, 0x9467F36B98593E32
.Lk_dsbo:
.quad	0x


 cute, innocent way. She appears to be a six-year old girl, stuck on top of the body of a young foal, and your heart goes out to her involuntarily. She manages to stand at last, wobbling uncertainly, and moves immediately towards your prone form. Knowing her needs, you reveal a breast to her, and she nickers affectionately before latching on, drinking hungrily from your heavily lactating teat.\n\n");
				output.text("She drinks endlessly, and seems more alive and stronger with every gulp. Hours pass in quiet, motherly bliss as she drains your breastmilk first from one breast, then the other. Her little stomach bulges slightly, but she does not stop, and you do not want her to. Even with the strange, soothing effect of the pregnancy wearing off, you feel nothing but affection for this child.\n\n");
				output.text("By the time she is finished, the centaur girl is obviously stronger, able to stand and move about on her own. She explores her new body, jumping and prancing happily, while you lay back and watch, too exhausted to join her. Suddenly, though, her ears perk up, as she looks towards the horizon urgently. She hesitates just long enough to plant a sweet kiss on your cheek, then dashes off, smiling broadly. Exhausted, you are unable to follow... but that comforting sensation returns.  Somehow, you sense she will be all right.");

				if (player.averageLactation() > 0 && player.averageLactation() < 5) {
					output.text("  Your " + player.allBreastsDescript() + " won't seem to stop dribbling milk, lactating more heavily than before.");
					player.boostLactation(.5);
				}

				output.text("  ");
				player.cuntChange(100, true);

				if (player.vaginas[0].vaginalWetness === Vagina.WETNESS_DRY) {
					player.vaginas[0].vaginalWetness++;
				}

				player.orgasm('Vaginal');
				kGAMECLASS.dynStats("str", -1, "tou", -4, "spe", 2, "lib", 1, "sen", .5);

				//Butt increase
				if (player.butt.rating < 14 && Utils.rand(2) === 0) {
					if (player.butt.rating < 10) {
						player.butt.rating++;
						output.text("\n\nYou notice your " + player.buttDescript() + " feeling larger and plumper after the ordeal.");
					}
					//Big butts grow slower!
					else if (player.butt.rating < 14 && Utils.rand(2) === 0) {
						player.butt.rating++;
						output.text("\n\nYou notice your " + player.buttDescript() + " feeling larger and plumper after the ordeal.");
					}
				}

				player.knockUpForce(); //Clear Pregnancy
				output.text("\n");
		}
	}

import { describe, it } from './_describe.ts'
import { equals } from '../mod.ts'
import { eq } from './utils/utils.ts'

describe('equals', () => {
  const a: any[] = []
  const b = a
  it('should test for deep equality of its operands', () => {
    eq(equals(100, 100), true)
    eq(equals(100, '100'), false)
    eq(equals([], []), true)
    eq(equals(a, b), true)
  })

  it('should consider equal Boolean primitives equal', () => {
    eq(equals(true, true), true)
    eq(equals(false, false), true)
    eq(equals(true, false), false)
    eq(equals(false, true), false)
  })

  it('should consider equivalent Boolean objects equal', () => {
    eq(equals(new Boolean(true), new Bool


,
		0,
		1,
	)
}

func (s *DexTestSuite) TestEstimateMultiHopSwapEventsEmitted() {
	s.fundAliceBalances(100, 0)

	s.SetupMultiplePools(
		NewPoolSetup("TokenA", "TokenB", 0, 100, 0, 1),
		NewPoolSetup("TokenB", "TokenC", 0, 100, 0, 1),
	)

	route := [][]string{{"TokenA", "TokenB", "TokenC"}}
	_ = s.aliceEstimatesMultiHopSwap(route, 100, math_utils.MustNewPrecDecFromStr("0.9"), false)

	// 8 tickUpdateEvents are emitted 4x for pool setup 4x for two swaps
	s.AssertEventValueNotEmitted(types.TickUpdateEventKey, "Expected no events")
}
package keeper

import (
	"time"

	"cosmossdk.io/store/prefix"
	storetypes "cosmossdk.io/store/types"
	sdk "github.com/cosmos/cosmos-sdk/types"

	"github.com/neutron-org/neutron/v8/x/dex/types"
)

// Creates a new LimitOrderExpiration struct based on a LimitOrderTranche
func NewLimitOrderExpiration(tranche *types.LimitOrderTranche) *types.LimitOrderExpiration {
	trancheExpiry := tranche.ExpirationTime
	if trancheExpiry == nil {
		panic("Cannot create LimitOrderExpiration from tranche with nil ExpirationTime")
	}

	return &types.LimitOrderExpiration{
		TrancheRef:     tranche.Key.KeyMarshal(),
		ExpirationTime: *tranche.ExpirationTime,
	}
}

// SetLimitOrderExpiration set a specific goodTilRecord in the store from its index
func (k Keeper) SetLimitOrderExpiration(
	ctx sdk.Context,
	goodTilRecord *types.LimitOrderExpiration,
) {
	store := prefix.NewStore(
		ctx.KVStore(k.storeKey),
		types.KeyPrefix(types.LimitOrderExpirationKeyPrefix),
	)
	b := k.cdc.MustMarshal(goodTilRecord)
	store.Set(types.LimitOrderExpirationKey(
		goodTilRecord.ExpirationTime,
		goodTilRecord.TrancheRef,
	), b)
}

// GetLimitOrderExpiration returns a goodTilRecord from its index
func (k Keeper) GetLimitOrderExpiration(
	ctx sdk.Context,
	goodTilDate time.Time,
	trancheRef []byte,
) (val *types.LimitOrderExpiration, found bool) {
	store := prefix.NewStore(
		ctx.KVStore(k.storeKey),
		types.KeyPrefix(types.LimitOrderExpirationKeyPrefix),
	)

	b := store.Get(types.LimitOrderExpirationKey(
		goodTilDate,
		trancheRef,
	))
	if b == nil {
		return val, false
	}

	val = &types.LimitOrderExpiration{}
	k.cdc.MustUnmarshal(b, val)

	return val, true
}

// RemoveLimitOrderExpiration removes a goodTilRecord from the store
func (k Keeper) RemoveLimitOrderExpiration(
	ctx sdk.Context,
	goodTilDate time.Time,
	trancheRef []byte,
) {
	store := prefix.NewStore(
		ctx.KVStore(k.storeKey),
		types.KeyPrefix(types.LimitOrderExpirationKeyPrefix),
	)
	store.Delete(types.LimitOrderExpirationKey(
		goodTilDate,
		trancheRef,
	))
}

func (k Keeper) RemoveLimitOrderExpirationByKey(ctx sdk.Context, key []byte) {
	store := prefix.NewStore(
		ctx.KVStore(k.storeKey),
		types.KeyPrefix(types.LimitOrderExpirationKeyPrefix),
	)
	store.Delete(key)
}

// GetAllLimitOrderExpiration returns all goodTilRecord
func (k Keeper) GetAllLimitOrderExpiration(ctx sdk.Context) (list []*type


 bounds" : "Масштабувати до меж",
    "Delete share link" : "Вилучити посилання для спільного використання",
    "Create share link" : "Створити посилання спільного доступу",
    "Copied!" : "Скопійовано!",
    "Copy share link" : "Копіювати посилання спільного доступу",
    "Leave share" : "Залишити (покинути) спільний ресурс",
    "Open folder" : "Відкрити каталог",
    "Share" : "Спільний доступ",
    "My maps" : "Мої мапи",
    "New map" : "Нова мапа",
    "Add Map" : "Додати мапу",
    "Hi" : "Привіт",
    "My photos" : "Мої світлини",
    "Disable photo drag" : "Вимкнути перетягування світлин",
    "Enable photo drag" : "Увімкнути перетягування світлин",
    "Say hi" : "Привітайся",
    "Hide suggestions" : "Приховати пропозиції",
    "Suggest photo locations" : "Запропонуйте місця для фотографій",
    "Clear photo cache" : "Очистити кеш фотографій",
    "Show track elevation" : "Показати висоту треку",
    "Download track" : "Звантажити трек",
    "My tracks" : "Мої шляхи",
    "Sort by name" : "Впорядкувати за ім’ям",
    "Sort by date" : "Впорядкувати за датою",
    "Favorite name" : "Назва елементу із зірочкою",
    "Category" : "Категорія",
    "Comment" : "Коментар",
    "Location" : "Місце",
    "New category {n}" : "Нова категорія {n}",
    "Save" : "Зберегти",
    "Place photos" : "Додати світлини",
    "Place contact" : "Додати контакт",
    "Share this location" : "Надіслати місце",
    "Shared location" : "Місце у спільному доступі",
    "Route from here" : "Маршрут звідси",
    "Add route point" : "Пункт на маршруті",
    "Route to here" : "Маршрут сюди",
    "Current location" : "Поточне розташування",
    "Improve this map" : "Покращити цю мапу",
    "Other maps" : "Інші мапи",
    "Street map" : "Мапа вулиць",
    "Satellite map" : "Супутникова мапа",
    "Geo link ({geoLink}) copied to clipboard" : "Посилання на місцеперебування ({geoLink}) скопійовано до буфера обміну",
    "Geo link could not be copied to clipboard" : "Посилання на місцеперебування не вдалося скопіювати в буфер обміну",
    "Close" : "З


tcx> LateLintPass<'a, 'tcx> for AssertionsOnConstants {
    fn check_expr(&mut self, cx: &LateContext<'a, 'tcx>, e: &'tcx Expr) {
        let mut is_debug_assert = false;
        let debug_assert_not_in_macro_or_desugar = |span: Span| {
            is_debug_assert = true;
            // Check that `debug_assert!` itself is not inside a macro
            !in_macro_or_desugar(span)
        };
        if_chain! {
            if let Some(assert_span) = is_direct_expn_of(e.span, *sym::assert);
            if !in_macro_or_desugar(assert_span)
                || is_direct_expn_of(assert_span, *sym::debug_assert)
                    .map_or(false, debug_assert_not_in_macro_or_desugar);
            if let ExprKind::Unary(_, ref lit) = e.node;
            if let Some(bool_const) = constant(cx, cx.tables, lit);
            then {
                match bool_const.0 {
                    Constant::Bool(true) => {
                        span_help_and_lint(
                            cx,
                            ASSERTIONS_ON_CONSTANTS,
                            e.span,
                            "`assert!(true)` will be optimized out by the compiler",
                            "remove it"
                        );
                    },
                    Constant::Bool(false) if !is_debug_assert => {
                        span_help_and_lint(
                            cx,
                            ASSERTIONS_ON_CONSTANTS,
                            e.span,
                            "`assert!(false)` should probably be replaced",
                            "use `panic!()` or `unreachable!()`"
                        );
                    },
                    _ => (),
                }
            }
        }
    }
}
// Copyright 2021 Twitter, Inc.
// Licensed under the Apache License, Version 2.0
// http://www.apache.org/licenses/LICENSE-2.0

use config::TimeType;
use rustcommon_time::{CoarseDuration, Duration};

use std::time::SystemTime;

pub struct Expiry {
    expiry: u32,
    time_type: TimeType,
}

impl Expiry {
    pub fn new(expiry: u32, time_type: TimeType) -> Self {
        Self { expiry, time_type }
    }

    // TODO(bmartin): this conversion can be made more efficient
    pub fn as_secs(&self) -> u32 {
        match self.time_type {
            TimeType::Unix => {
                let epoch = SystemTime::now()
                    .duration_since(SystemTime::UNIX_EPOCH)
                    .unwrap()
                    .as_secs() as u32;
                self.expiry.wrapping_sub(epoch)
            }
            TimeType::Delta => self.expiry,
            TimeType::Memcache => {
                if self.expiry < 60 * 60 * 24 * 30 {
                    self.expiry
                } else {
                    let epoch = SystemTime::now()
                        .duration_since(SystemTime::UNIX_EPOCH)
                        .unwrap()
                        .as_secs() as u32;
                    self.expiry.wrapping_sub(epoch)
                }
            }
        }
    }

    pub fn from_memcache(expiry: u32) -> Expiry {
        Self {
            expiry,
            time_type: TimeType::Memcache,
        }
    }

    pub fn from_delta(expiry: u32) -> Expiry {
        Self {
            expiry,
            t


color:var(--kendo-upload-text, var(--kendo-color-on-app-surface, #F3F2F1));background-color:var(--kendo-upload-bg, var(--kendo-color-app-surface, #1B1A19))}.k-upload .k-dropzone,.k-upload .k-upload-dropzone{border-color:var(--kendo-upload-dropzone-border, color-mix(in srgb, var(--kendo-color-border, #A19F9D) 26%, transparent));color:var(--kendo-upload-dropzone-text, var(--kendo-color-subtle, #A19F9D));background-color:var(--kendo-upload-dropzone-bg, var(--kendo-color-app-surface, #1B1A19))}.k-upload .k-dropzone.k-hover,.k-upload .k-upload-dropzone.k-hover{background-color:var(--kendo-upload-dropzone-hover-bg, var(--kendo-upload-dropzone-bg, var(--kendo-color-app-surface, #1B1A19)))}.k-upload .k-dropzone .k-dropzone-hint,.k-upload .k-upload-dropzone .k-dropzone-hint{color:var(--kendo-upload-status-text, var(--kendo-color-subtle, #A19F9D));opacity:var(--kendo-upload-status-text-opacity, )}.k-upload .k-upload-files,.k-upload .k-file{border-color:var(--kendo-upload-border, color-mix(in srgb, var(--kendo-color-border, #A19F9D) 26%, transparent))}.k-upload .k-file.k-focus{box-shadow:inset var(--kendo-upload-focus-shadow, inset 0 0 0 2px rgba(0, 0, 0, 0.13))}.k-upload .k-file .k-upload-action.k-focus{box-shadow:var(--kendo-upload-focus-shadow, inset 0 0 0 2px rgba(0, 0, 0, 0.13))}.k-upload .k-upload-status{color:var(--kendo-upload-status-text, var(--kendo-color-subtle, #A19F9D));opacity:var(--kendo-upload-status-text-opacity, )}.k-upload .k-file-progress .k-progressbar .k-selected{background-color:var(--kendo-upload-progress-bg, var(--kendo-color-primary, #2899F5))}.k-upload .k-file-success .k-file-validation-message{color:var(--kendo-upload-success-text, var(--kendo-color-success-on-surface, #CBE6A7))}.k-upload .k-file-success .k-progressbar .k-selected{background-color:var(--kendo-upload-success-bg, var(--kendo-color-success-on-surface, #CBE6A7))}.k-upload .k-file-error .k-file-validation-message{color:var(--kendo-upload-error-text, var(--kendo-color-error-on-surface, #FAA0A6))}.k-upload .k-file-error .k-progressbar .k-selected{background-color:var(--kendo-upload-error-bg, var(--kendo-color-error-on-surface, #FAA0A6))}.k-upload .k-file-icon-wrapper{color:var(--kendo-upload-icon-color, var(--kendo-color-subtle, #A19F9D));border-color:var(--kendo-upload-icon-color, var(--kendo-color-subtle, #A19F9D))}.k-upload .k-file-size,.k-upload .k-file-validation-message,.k-upload .k-file-summary{color:var(--kendo-color-subtle, #A19F9D)}.k-upload .k-multiple-files-wrapper .k-file-summary{color:var(--k


   protocol = {
      maildir_path = TEST_DIR .. '/maildir',
    },
  }
end)

kumo.on('smtp_server_ehlo', function(domain, conn_meta)
  local result = kumo.spf.check_host(domain, conn_meta, nil)
  print('SPF-ehlo', kumo.json_encode_pretty(result))
  if result.disposition == 'fail' then
    kumo.reject(550, '5.7.1 SPF EHLO check failed')
  end
end)

kumo.on('smtp_server_mail_from', function(sender, conn_meta)
  local result =
    kumo.spf.check_host(sender.domain, conn_meta, tostring(sender))
  print('SPF-mail-from', kumo.json_encode_pretty(result))
  if result.disposition == 'fail' then
    kumo.reject(550, '5.7.1 SPF MAIL FROM check failed')
  end
end)

kumo.on('smtp_server_message_received', function(msg, conn_meta)
  msg:set_meta('queue', 'maildir')
  local result = kumo.spf.check_host(
    msg:sender().domain,
    conn_meta,
    tostring(msg:sender())
  )
  local results = {
    result.result,
  }
  msg:add_authentication_results(msg:get_meta 'hostname', results)
end)


==$i){echo "<option value=\"".$i."\" selected>".$i."</option>";}else{echo "<option value=\"".$i."\">".$i."</option>";}}?>
                </select>
                天 * 选择天数还要填写第3步的 影片日期 开始代码 和 结束代码才有效

            <?php }?>

              目标站点URL：
              <input type="text" class="txt" name="siteurl" value="<?php echo $atd["siteurl"];?>" />

              网页编码：
              <select name="coding" size="1">
                  <option value="gb2312"<?php if($row[coding]=='gb2312') echo " selected"?>>GB2312</option>
                  <option value="utf-8"<?php if($row[coding]=='utf-8') echo " selected"?>>UTF-8</option>
                  <option value="big5"<?php if($row[coding]=='big5') echo " selected"?>>BIG5</option>
                </select>

              使用SOCK获取：

                  <input name="sock" type="checkbox" id="sock" value="1" class="checkbox"<?php if($row[sock]==1) echo " checked"?>>
                  是的，使用SOCK
                使用SOCK可以有效的突破各种防盗链

            <tr <?php if($cofrom==1){echo 'style=display:none;';} ?>>
              播放来源：
              <?php if($cofrom==1) {?>
              <input name='playfrom' value="<?php echo $row[playfrom]?>"/>
              <?php }else{?>
              <select name='playfrom'>
                  <option value=''>暂没有数据</option>
                  <?php echo makePlayerSelect($row[playfrom]);?>
                </select>
              <?php }?>

            <tr <?php if($cofrom==1){echo 'style=display:none;';} ?>>
              下载来源：
              <select name='downfrom'>
                  <option value=''>暂没有数据</option>
                  <?php echo makedownSelect($atd[downfrom]);?>
                </select>

              分类设置：
              <input type="radio" class="radio" name="autocls" value="0" onclick="show('selcls');"<?php if($row[autocls]==0) echo " checked"?>/>
                固定分类
                <input type="radio" class="radio" name="autocls" value="1" onclick="hide('selcls');"<?php if($row[autocls]==1) echo " checked"?>/>
                智能归类(若归类失败，影片将自动加到临时库)

            <tr id="selcls" style="<?php if($row[autocls]==1) echo "display:none"?>">
              所属分类：
              <?


[[
  local save = love.filesystem.getSaveDirectory()
  print("Save Location: " .. tostring(save))
  --]]
  --love.graphics.print(tostring(sceneView.currentMap.row) .. ' ' .. tostring(sceneView.currentMap.column), 0, 0)
  --love.graphics.print(tostring(gStateMachine.current.gameJustStarted), 0, 0)
end


手，杜雯那边已经刷的一下把手举了起来。全部 45 个常委，42 个人同意。

“反对冉耀同志提出方案的，请举手。”钱水廷觉得这个环节完全多此一举。

分头单良率先举起来，孤零零的立着胳膊。还有两个人，喝了口茶，表示弃权。

“好，那作为元老院议长兼第一届常务委员会委员长，我宣布：批准冉耀同志的处理方案，同时代表元老院授权冉耀同志及警务部门一切调查权力。”钱水廷脸上挂着不易察觉的微笑，刚说完，那边分头单良已经呼地一下站了起来。

“我强烈抗议常务委员会这种明显偏袒，无视元老生命安全的行为！我要求召开元老院全体大会！”

“按照《共同纲领》规定，在常务委员会任期内，常务委员会即代表元老院，不必召开全体大会。”钱水廷不卑不亢地说道。

“那我将行使《共同纲领》赋予的游行权力！”分头单良威胁道。

“可以，这是您的自由和权力，我支持，这个议案也是您和杜雯委员共同提交的。”钱水廷笑道。

杜雯不禁愣了一下，她的梦想是建立本时空的妇联或者共产主义组织，但是她明白在全体大会上想通过根本不可能，于是在分头单良的忽悠下她提交了“结社、游行、示威”议案，现在她才发觉，她被分头单良利用了。

“虽然按照警方的方案，聂义峰同志可以说是无罪，但是毕竟是对元老开枪，我提议，立刻召开荣誉法庭，对聂义峰同志进行必要的质询。”作为军方代表列席的明秋发言。大家都明白这是什么意思，既然不打算收拾聂义峰，那就还他一个干净彻底的清白。

“好，批准。”又是一阵投票表决的，全票通过。

张琪脸色难看的像一块刷了漆的铁皮，每天都是怒气冲冲的。从早到晚的一整天，她都在人们异样的目光中度过。百仞总医院的同事们虽然不说什么，但是额外的关心和流言蜚语一样刺耳，她实在是不明白，为什么这些事情


fn get_BrainpoolP384r1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_BrainpoolP384t1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_BrainpoolP512r1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_BrainpoolP512t1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_Curve25519(&self, out: *mut HSTRING) -> HRESULT,
    fn get_Ec192wapi(&self, out: *mut HSTRING) -> HRESULT,
    fn get_NistP192(&self, out: *mut HSTRING) -> HRESULT,
    fn get_NistP224(&self, out: *mut HSTRING) -> HRESULT,
    fn get_NistP256(&self, out: *mut HSTRING) -> HRESULT,
    fn get_NistP384(&self, out: *mut HSTRING) -> HRESULT,
    fn get_NistP521(&self, out: *mut HSTRING) -> HRESULT,
    fn get_NumsP256t1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_NumsP384t1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_NumsP512t1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_SecP160k1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_SecP160r1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_SecP160r2(&self, out: *mut HSTRING) -> HRESULT,
    fn get_SecP192k1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_SecP192r1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_SecP224k1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_SecP224r1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_SecP256k1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_SecP256r1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_SecP384r1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_SecP521r1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_Wtls7(&self, out: *mut HSTRING) -> HRESULT,
    fn get_Wtls9(&self, out: *mut HSTRING) -> HRESULT,
    fn get_Wtls12(&self, out: *mut HSTRING) -> HRESULT,
    fn get_X962P192v1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_X962P192v2(&self, out: *mut HSTRING) -> HRESULT,
    fn get_X962P192v3(&self, out: *mut HSTRING) -> HRESULT,
    fn get_X962P239v1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_X962P239v2(&self, out: *mut HSTRING) -> HRESULT,
    fn get_X962P239v3(&self, out: *mut HSTRING) -> HRESULT,
    fn get_X962P256v1(&self, out: *mut HSTRING) -> HRESULT,
    fn get_AllEccCurveNames(&self, out: *mut *mut foundation::collections::IVectorView<HString>) -> HRESULT
}}
impl IEccCurveNamesStatics {
    #[inline] pub fn get_brainpool_p160r1(&self) -> Result<HString> { unsafe {
        let mut out = null_mut();
        let hr = ((*self.lpVtbl).get_BrainpoolP160r1)(self as *const _ as *mut _, &mut out);
        if hr == S_OK { Ok(HString::wrap(out)) } else { err(hr) }
    }}
    #[inline] pub fn get_brainpool_p160t1(&self) -> Result<HString> { unsafe {
        let mut


if (inQuotes)
                {
                    if ((i + 1) == line.Length)//这个字符已经结束了整行
                    {
                        if (character == '"') //正常转义结束，且该行已经结束
                        {
                            inQuotes = false;
                            continue;     //当前字符不用添加，跳出后直结束后会添加该元素
                        }
                        else //异常结束，转义未收尾
                        {
                            isNotEnd = true;
                        }
                    }
                    else if (character == '"' && line[i + 1] == _csvSeparator) //结束转义，且后面有可能还有数据
                    {
                        inQuotes = false;
                        inColumn = false;
                        i++; //跳过下一个字符
                    }
                    else if (character == '"' && line[i + 1] == '"') //双引号转义
                    {
                        i++; //跳过下一个字符
                    }
                    else if (character == '"') //双引号单独出现（这种情况实际上已经是格式错误，为了兼容可暂时不处理）
                    {
                        throw new Exception(string.Format("[{0}]:格式错误，错误的双引号转义 near [{1}] ","ParseLine", line));
                    }
                    //其他情况直接跳出，后面正常添加

                }
                else if (character == _csvSeparator)
                    inColumn = false;

                // If we are no longer in the column clear the builder and add the columns to the list
                if (!inColumn) //结束该元素时inColumn置为false，并且不处理当前字符，直接进行Add
                {
                    Fields.Add(TrimColumns ? _columnBuilder.ToString().Trim() : _columnBuilder.ToString());
                    _columnBuilder.Remove(0, _columnBuilder.Length);

                }
                else // append the current column
                    _columnBuilder.Append(character);
            }

            // If we are still inside a column add a new one （标准格式一行结尾不需要逗号结尾，而上面for是遇到逗号才添加的，为了兼容最后还要添加一次）
            if (inColumn)
            {
                if (isNotEnd)
                {
                    _columnBuilder.Append("\r\n");
                }
                Fields.Add(TrimColumns ? _columnBuilder.ToString().Trim() : _columnBuilder.ToString());
            }
            //如果inColumn为false，说明已经添加，因为最后一个字符为分隔符，所以后面要加上一个空元素
            //另外一种情况是line为""空行，（空行也是一个空元素,一个逗号是2个空元素），正好inColumn为默认值false，在此处添加一空元素
            else
            {
                Fields.Add("");
            }

            return Fields;
        }

        /// <summary>
        /// 处理未完成的Csv单行
        /// </summary>
        /// <param name="line">数据源</param>
        /// <returns>元素列表</returns>
        private List<string> ParseContinueLine(string line)
        {
            StringBuilder _columnBuilder = new StringBuilder();
            List<string> Fields = new List<string>();
            _columnBuilder.Remove(0, _columnBuilder.Length);
            if (line == "")
            {
                Fields.Add("\r\n");
                return Fields;
            }

            for (int i = 0; i < line.Length; i++)
            {
                char character = line[i];

                if ((i + 1) == line.Length)//这个字符已经结束了整行


ey) serialize() []byte {
	switch a.pubKeyFormat {
	default:
		fallthrough
	case PKFUncompressed:
		return a.pubKey.SerializeUncompressed()

	case PKFCompressed:
		return a.pubKey.SerializeCompressed()

	case PKFHybrid:
		return a.pubKey.SerializeHybrid()
	}
}

const compressMagic byte = 0x01

// PrivKeyBytesLen defines the length in bytes of a serialized private key.
const PrivKeyBytesLen = 32

var ErrMalformedPrivateKey = errors.New("malformed private key")

/*func DecodeWIF(wif string) (*WIF, error) {
	decoded := base58.Decode(wif)
	decodedLen := len(decoded)
	var compress bool

	// Length of base58 decoded WIF must be 32 bytes + an optional 1 byte
	// (0x01) if compressed, plus 1 byte for netID + 4 bytes of checksum.
	switch decodedLen {
	case 1 + PrivKeyBytesLen + 1 + 4:
		if decoded[33] != compressMagic {
			return nil, ErrMalformedPrivateKey
		}
		compress = true
	case 1 + PrivKeyBytesLen + 4:
		compress = false
	default:
		return nil, ErrMalformedPrivateKey
	}

	// Checksum is first four bytes of double SHA256 of the identifier byte
	// and privKey.  Verify this matches the final 4 bytes of the decoded
	// private key.
	var tosum []byte
	if compress {
		tosum = decoded[:1+PrivKeyBytesLen+1]
	} else {
		tosum = decoded[:1+PrivKeyBytesLen]
	}
	cksum := common.DoubleHashB(tosum)[:4]
	if !bytes.Equal(cksum, decoded[decodedLen-4:]) {
		return nil, ErrChecksumMismatch
	}

	netID := decoded[0]
	privKeyBytes := decoded[1 : 1+PrivKeyBytesLen]
	privKey, _ := btcec.PrivKeyFromBytes(btcec.S256(), privKeyBytes)
	return &WIF{privKey, compress, netID}, nil
}*/

type WIF struct {
	// PrivKey is the private key being imported or exported.
	PrivKey *ecdsa.PrivateKey

	// CompressPubKey specifies whether the address controlled by the
	// imported or exported private key was created by hashing a
	// compressed (33-byte) serialized public key, rather than an
	// uncompressed (65-byte) one.
	CompressPubKey bool

	// netID is the bitcoin network identifier byte used when
	// WIF encoding the private key.
	netID byte
}

// paddedAppend appends the src byte slice to dst, returning the new slice.
// If the length of the source is smaller than the passed size, leading zero
// bytes are appended to the dst slice before appending src.
func paddedAppend(size uint, dst, src []byte) []byte {
	for i := 0; i < int(size)-len(src); i++ {
		dst = append(dst, 0)
	}
	return append(dst, src...)
}

// SerializePubKey serializes the associated public key of the imported or
// exported private key in either a compressed or uncompressed format.  The
// serialization format chosen depends on the value of w.CompressPubKey.
func (w *WIF) SerializePubKey() []byte {
	pk := (*btcec.PublicKey)(&w.PrivKey.PublicKey)
	if w.CompressPubKey {
		return pk.SerializeCompressed()
	}
	return pk.SerializeUncompressed()
}

// String creates the Wallet Import Format string encoding of a WIF structure.
// See DecodeWIF for a detailed breakdown of the format and requirements of
// a valid WIF string.
func (w *WIF) String() string {
	// Precalculate size.  Maximum number of bytes before base58 encoding
	// is one byte for the network, 32 bytes of private key, possibly one
	// extra byte if the pubkey is to be compressed, and finally four
	// bytes of checksum.
	encode


 , unix pipes that let you read from a source and `pipe` to another.

In a simple **Node** *HTTP server* `response ` and `request` are specialized streams (writeable and readable).

Create a readable stream:
```javascript
readable = fs.createReadStream('file.txt');
```
Read from a stream with a `data` event callback:
```javascript
readStream.on('data', function(chunk) {
    data+=chunk;
});
```
`End` event to notify the end of a stream:
```javascript
readStream.on('end', function() { } );
```
Create a writeable stream:
```javascript
writeable = fs.createWriteStream('file.txt')
```
Write to a writeable Stream and end it:
```javascript
writeable.write('data');
writeable.end('Ended.');
```

Pair input and output with `pipe()`:
```javascript
readable.pipe(writable);

```

---
## Practice

Complete the code so that you read from a stream with a `str` event callback:

```javascript
???.on('???', function(chunk( {
   str+=chunk;
});
```

* readStream
* str
* readable
* streamRead
* data
* argv

---
## Revision

Complete the code such as `myFunction()` is called at the end of a stream:
```js
readStream.???(???, myFunction() );

```

* on
* 'end'
* 'data'
* end
---
author: tommarshall

levels:

  - basic

  - advanced

  - medium

type: normal

category: must-know

tags:

  - testing

links:

  - '[jasmine.github.io](http://jasmine.github.io/2.0/introduction.html){website}'

---
# Mocking JavaScript Timeout functions

---
## Content

Jasmine's clock gives test suites the ability to implement `setTimeout` and `setInterval` callbacks.

Timer callbacks are synchronous, functions are executed once the clock has moved forwards in time.

`jasmine.clock().tick(x)` takes x amount of milliseconds.

```
describe("example using the jasmine clock",
function() {
  var timer;
  beforeEach(function() {
    timer = jasmine.createSpy("timer");
    jasmine.clock().install();
  });
  afterEach(function() {
    jasmine.clock().uninstall();
  });
  it("causes a timeout to be called \
      synchronously", function() {
    setTimeout(function() {
      timer();
    }, 10000);
    // clock yet to tick seconds
    expect(timer).not.
          toHaveBeenCalled();
    // clock ticks 11 seconds
    jasmine.clock().tick(11000);
    // timer called at 10 seconds
    expect(timer).
          toHaveBeenCalled();
  });
}
```

---
## Practice

What test results will the following piece of code produce? ???

```javascript
setTimeout(function() {
   timer();
}, 8000);

// Test 1
expect(timer).not.toHaveBeenCalled();
jasmine.clock().tick(1000);

// Test 2
expect(timer).toHaveBeenCalled();
jasmine.clock().tick(8000);

// Test 3
expect(timer).toHaveBeenCalled()

```

* Test 1: *True*, Test 2: *False*, Test 3: *True*
* Test 1: *False*, Test 2: *True*, Test 3: *False*
* Test 1: *False*, Test 2: *False*, Test 3: *False*
* Test 1: *True*, Test 2: *True*, Test 3: *True*

---
## Revision

Are timer callbacks synchronous or asynchronous?

???

* synchronous
* asynchronous---
author: achatt89

levels:

  - medium

  - advanced

type: normal

category: must-know

---
# Destroy Events and their uses

---
## Content

There are two ways to destroy an event in AngularJS application scope.

The first one is the **AngularJS** event, `$destroy`, whi


uvas de Lunatrama Artesanais do Gladiador Terrível",
[93551] = "Elmo de Lunatrama Artesanal do Gladiador Terrível",
[93552] = "Perneiras de Lunatrama Artesanais do Gladiador Terrível",
[93553] = "Veste de Lunatrama Artesanal do Gladiador Terrível",
[93554] = "Dragonas de Lunatrama Artesanais do Gladiador Terrível",
[93555] = "Luvas de Cetim Artesanais do Gladiador Terrível",
[93556] = "Capuz de Cetim Artesanal do Gladiador Terrível",
[93557] = "Perneiras de Cetim Artesanais do Gladiador Terrível",
[93558] = "Veste de Cetim Artesanal do Gladiador Terrível",
[93559] = "Dragonas de Cetim Artesanais do Gladiador Terrível",
[93560] = "Medalhão da Crueldade Artesanal do Gladiador Terrível",
[93561] = "Medalhão da Crueldade Artesanal do Gladiador Terrível",
[93562] = "Medalhão da Tenacidade Artesanal do Gladiador Terrível",
[93563] = "Medalhão da Tenacidade Artesanal do Gladiador Terrível",
[93564] = "Medalhão da Meditação Artesanal do Gladiador Terrível",
[93565] = "Medalhão da Meditação Artesanal do Gladiador Terrível",
[93566] = "Cintel da Precisão Artesanal do Gladiador Terrível",
[93567] = "Botas da Crueldade Artesanais do Gladiador Terrível",
[93568] = "Braceleiras da Vivacidade Artesanais do Gladiador Terrível",
[93569] = "Túnica de Couro Artesanal do Gladiador Terrível",
[93570] = "Luvas de Couro do Artesanais Gladiador Terrível",
[93571] = "Elmo de Couro Artesanal do Gladiador Terrível",
[93572] = "Guarda-pernas de Couro Artesanais do Gladiador Terrível",
[93573] = "Espaldares de Couro Artesanais do Gladiador Terrível",
[93574] = "Cinta da Meditação Artesanal do Gladiador Terrível",
[93575] = "Guarda-pés da Vivacidade Artesanais de Malha do Gladiador Terrível",
[93576] = "Guarda-pés da Diligência Artesanais de Malha do Gladiador Terrível",
[93577] = "Embraces da Destreza Artesanais do Gladiador Terrível",
[93578] = "Embraces da Meditação Artesanais do Gladiador Terrível",
[93579] = "Armadura de Cota Anilhada Artesanal do Gladiador Terrível",
[93580] = "Manoplas de Cota Anilhada Artesanais do Gladiador Terrível",
[93581] = "Elmo de Cota Anilhada Artesanal do Gladiador Terrível",
[93582] = "Perneiras de Cota Anilhada Artesanais do Gladiador Terrível",
[93583] = "Espaldares de Cota Anilhada Artesanais do Gladiador Terrível",
[93584] = "Armadura Articulada Artesanal do Gladiador Terrível",
[93585] = "Manoplas Articuladas Artesanais do Gladiador Terrível",
[93586] = "Elmo Articulado Artesanal do Gladiador Terrível",
[93587] = "Perneiras Articuladas Artesanais do Gladiador Terrível",
[93588] = "Es


DoKitExtUtil.dokitSlowMethodSwitchOpen()) Opcodes.ICONST_1 else Opcodes.ICONST_0))
            add(
                MethodInsnNode(
                    Opcodes.INVOKESTATIC,
                    "java/lang/Boolean",
                    "valueOf",
                    "(Z)Ljava/lang/Boolean;",
                    false
                )
            )
            add(
                MethodInsnNode(
                    Opcodes.INVOKEINTERFACE,
                    "java/util/Map",
                    "put",
                    "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
                    true
                )
            )
            add(InsnNode(Opcodes.POP))

            //put("methodStrategy",0)
            add(VarInsnNode(Opcodes.ALOAD, 0))
            add(LdcInsnNode("methodStrategy"))
            add(InsnNode(if (DoKitExtUtil.SLOW_METHOD_STRATEGY == SlowMethodExtension.STRATEGY_STACK) Opcodes.ICONST_0 else Opcodes.ICONST_1))
            add(
                MethodInsnNode(
                    Opcodes.INVOKESTATIC,
                    "java/lang/Integer",
                    "valueOf",
                    "(I)Ljava/lang/Integer;",
                    false
                )
            )
            add(
                MethodInsnNode(
                    Opcodes.INVOKEINTERFACE,
                    "java/util/Map",
                    "put",
                    "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
                    true
                )
            )
            add(InsnNode(Opcodes.POP))

            //将HashMap注入到DokitPluginConfig中
            add(VarInsnNode(Opcodes.ALOAD, 0))
            add(
                MethodInsnNode(
                    Opcodes.INVOKESTATIC,
                    "com/didichuxing/doraemonkit/aop/DokitPluginConfig",
                    "inject",
                    "(Ljava/util/Map;)V",
                    false
                )
            )
            this
        }
    }

    /**
     * 重置ComponentActivity的父类
     */
    private fun createComponentActivitySuperActivityImpl(klass: ClassNode) {
        /**
         * 修改继承的父类
         */
        klass.superName = "com/didichuxing/doraemonkit/aop/mc/DoKitProxyActivity"
    }

}
package com.didichuxing.doraemonkit.kit.mc.utils

import android.app.Activity
import android.view.View
import com.didichuxing.doraemonkit.extension.tagName

/**
 * ================================================
 * 作    者：jint（金台）
 * 版    本：1.0
 * 创建日期：2020/12/3-20:14
 * 描    述：
 * 修订历史：
 * ================================================
 */
object ActivityStatusUtil {
    const val ACTIVITY_STATUS_UNKNOWN = -1
    const val ACTIVITY_STATUS_ONCREATE = 0
    const val ACTIVITY_STATUS_ONSTART = 1
    const val ACTIVITY_STATUS_ONRESUME = 2
    const val ACTIVITY_STATUS_ONPAUSE = 3
    const val ACTIVITY_STATUS_ONSTOP = 4
    const val ACTIVITY_STATUS_ONDESTROY = 5

    val activityStatus: MutableMap<String, Int> by lazy {
        mutableMapOf<String, Int>()
    }

    fun isActivityOnResume(view: View): Boolean {
        if (view.context is Activity) {
            val activity = view.context as Activity
            val status = activityStatus[activity::class.tagName]
            if (status == ACTIVITY_STATUS_ONRESUME) {
                return true
            }

        }
        return false
    }
}
package com.didichuxing.doraemonk


wV2, BILI_IN_VER_3_19_0..Long.MAX_VALUE)
        subHook(this::hookUrls)
        versionSpecifiedSubHook(this::hookEmptyPageV1, Long.MIN_VALUE..BILI_IN_VER_3_18_2)
        versionSpecifiedSubHook(this::hookEmptyPageV2, BILI_IN_VER_3_19_0..Long.MAX_VALUE)
        subHook(this::hookMainList)
        subHook(this::hookCommentProvider)
        subHook(this::hookGetReplies)
    }

    /** 3.18.2 可用 */
    private fun hookCommentClickV1() {
        val clzCommentMessageWidget =
            "com.bilibili.app.comm.comment2.phoenix.view.CommentMessageWidget".toClass()
        val onClick =
            clzCommentMessageWidget.method {
                modifiers { isFinal }
                param { it.size == 2 && it[1] == android.view.View::class.java }
            }

        onClick.hook {
            replaceUnit {
                if (!prefs.getBoolean("vid_comment_no_quick_reply")) {
                    callOriginal()
                }
            }
        }
    }

    /** 3.19.0 可用 */
    private fun hookCommentClickV2() {
        "com.bilibili.app.comment3.viewmodel.CommentViewModel".toClass()
            .method {
                name = "N2"
                returnType = UnitType
            } // NOTE: 更新后容易失效的
            .hook {
                replaceUnit {
                    if (!prefs.getBoolean("vid_comment_no_quick_reply")) {
                        callOriginal()
                    } else if (!args[0].toString().startsWith("ShowPublishDialog")) {
                        callOriginal()
                    } else {
                        val allowClickFrom =
                            arrayOf(
                                "CommentActionBarHandler",
                                "CommentViewModel\$dispatchAction\$1",
                                "CommentMainLayer",
                                "CommentDetailLayer",
                            )
                        val isAllowed =
                            Throwable().stackTrace.any { st ->
                                allowClickFrom.any { fr ->
                                    st.className.contains(fr)
                                }
                            }
                        if (isAllowed) {
                            callOriginal()
                        }
                    }
                }
            }
    }

    /** 3.19.1, 3.19.2 可用 */
    private fun hookCommentClickV3() {
        "com.bilibili.app.comment3.viewmodel.CommentViewModel".toClass()
            .method {
                name = "M2"
                returnType = UnitType
            } // NOTE: 更新后容易失效的
            .hook {
                replaceUnit {
                    if (!prefs.getBoolean("vid_comment_no_quick_reply")) {
                        callOriginal()
                    } else if (!args[0].toString().startsWith("ShowPublishDialog")) {
                        callOriginal()
                    } else {
                        val allowClickFrom =
                            arrayOf(
                                "CommentActionBarHandler",
                                "CommentViewModel\$dispatchAction\$1",
                                "CommentMainLayer",
                                "CommentDetailLayer",
                            )
                        val isAllowed =
                            Throwable().stackTrace.any { st ->
                                allowClickFrom.any { fr ->
                                    st.className.contains(fr)
                                }
                            }
                        if (isAllowed) {
                            callOriginal()
                        }
                    }


 .mdui-radio-icon {
  border-color: #64FFDA;
}
.mdui-theme-accent-teal .mdui-radio input[type="radio"]:checked + .mdui-radio-icon::before {
  background-color: #64FFDA;
}
.mdui-theme-accent-teal .mdui-radio:active input[type="radio"]:checked:not(:disabled) + .mdui-radio-icon,
.mdui-theme-accent-teal .mdui-radio input[type="radio"]:focus:checked:not(:disabled) + .mdui-radio-icon {
  -webkit-box-shadow: 0 0 0 15px rgba(100, 255, 218, 0.16);
          box-shadow: 0 0 0 15px rgba(100, 255, 218, 0.16);
}
.mdui-theme-accent-yellow .mdui-radio input[type="radio"]:checked + .mdui-radio-icon {
  border-color: #FFFF00;
}
.mdui-theme-accent-yellow .mdui-radio input[type="radio"]:checked + .mdui-radio-icon::before {
  background-color: #FFFF00;
}
.mdui-theme-accent-yellow .mdui-radio:active input[type="radio"]:checked:not(:disabled) + .mdui-radio-icon,
.mdui-theme-accent-yellow .mdui-radio input[type="radio"]:focus:checked:not(:disabled) + .mdui-radio-icon {
  -webkit-box-shadow: 0 0 0 15px rgba(255, 255, 0, 0.16);
          box-shadow: 0 0 0 15px rgba(255, 255, 0, 0.16);
}
/**
 * =============================================================================
 * ************   Radio dark   ************
 * =============================================================================
 */
.mdui-theme-layout-dark .mdui-radio-icon {
  border-color: rgba(255, 255, 255, 0.7);
}
.mdui-theme-layout-dark .mdui-radio input[type="radio"]:disabled + .mdui-radio-icon {
  border-color: rgba(255, 255, 255, 0.3) !important;
}
.mdui-theme-layout-dark .mdui-radio input[type="radio"]:disabled:checked + .mdui-radio-icon::before {
  background-color: rgba(255, 255, 255, 0.3) !important;
}
.mdui-theme-layout-dark .mdui-radio:active input[type="radio"] + .mdui-radio-icon,
.mdui-theme-layout-dark .mdui-radio input[type="radio"]:focus + .mdui-radio-icon {
  -webkit-box-shadow: 0 0 0 15px rgba(255, 255, 255, 0.1);
          box-shadow: 0 0 0 15px rgba(255, 255, 255, 0.1);
}
@media (prefers-color-scheme: dark) {
  .mdui-theme-layout-auto .mdui-radio-icon {
    border-color: rgba(255, 255, 255, 0.7);
  }
  .mdui-theme-layout-auto .mdui-radio input[type="radio"]:disabled + .mdui-radio-icon {
    border-color: rgba(255, 255, 255, 0.3) !important;
  }
  .mdui-theme-layout-auto .mdui-radio input[type="radio"]:disabled:checked + .mdui-radio-icon::before {
    background-color: rgba(255, 255, 255, 0.3) !important;
  }
  .mdui-theme-layout-auto .mdui-radio:active input[type="radio"] + .mdu


_Bits.ADDR */
#define IFX_PFI_MBAB_MBABRECORD_ADDR_OFF (5u)

/** \brief Length for Ifx_PFI_MBAB_MBABRECORD_Bits.ECMK */
#define IFX_PFI_MBAB_MBABRECORD_ECMK_LEN (1u)

/** \brief Mask for Ifx_PFI_MBAB_MBABRECORD_Bits.ECMK */
#define IFX_PFI_MBAB_MBABRECORD_ECMK_MSK (0x1u)

/** \brief Offset for Ifx_PFI_MBAB_MBABRECORD_Bits.ECMK */
#define IFX_PFI_MBAB_MBABRECORD_ECMK_OFF (27u)

/** \brief Length for Ifx_PFI_MBAB_MBABRECORD_Bits.RES */
#define IFX_PFI_MBAB_MBABRECORD_RES_LEN (3u)

/** \brief Mask for Ifx_PFI_MBAB_MBABRECORD_Bits.RES */
#define IFX_PFI_MBAB_MBABRECORD_RES_MSK (0x7u)

/** \brief Offset for Ifx_PFI_MBAB_MBABRECORD_Bits.RES */
#define IFX_PFI_MBAB_MBABRECORD_RES_OFF (28u)

/** \brief Length for Ifx_PFI_MBAB_MBABRECORD_Bits.VLD */
#define IFX_PFI_MBAB_MBABRECORD_VLD_LEN (1u)

/** \brief Mask for Ifx_PFI_MBAB_MBABRECORD_Bits.VLD */
#define IFX_PFI_MBAB_MBABRECORD_VLD_MSK (0x1u)

/** \brief Offset for Ifx_PFI_MBAB_MBABRECORD_Bits.VLD */
#define IFX_PFI_MBAB_MBABRECORD_VLD_OFF (31u)

/** \brief Length for Ifx_PFI_ZBAB_ZBABRECORD_Bits.ADDR */
#define IFX_PFI_ZBAB_ZBABRECORD_ADDR_LEN (19u)

/** \brief Mask for Ifx_PFI_ZBAB_ZBABRECORD_Bits.ADDR */
#define IFX_PFI_ZBAB_ZBABRECORD_ADDR_MSK (0x7ffffu)

/** \brief Offset for Ifx_PFI_ZBAB_ZBABRECORD_Bits.ADDR */
#define IFX_PFI_ZBAB_ZBABRECORD_ADDR_OFF (5u)

/** \brief Length for Ifx_PFI_ZBAB_ZBABRECORD_Bits.ECMK */
#define IFX_PFI_ZBAB_ZBABRECORD_ECMK_LEN (1u)

/** \brief Mask for Ifx_PFI_ZBAB_ZBABRECORD_Bits.ECMK */
#define IFX_PFI_ZBAB_ZBABRECORD_ECMK_MSK (0x1u)

/** \brief Offset for Ifx_PFI_ZBAB_ZBABRECORD_Bits.ECMK */
#define IFX_PFI_ZBAB_ZBABRECORD_ECMK_OFF (27u)

/** \brief Length for Ifx_PFI_ZBAB_ZBABRECORD_Bits.RES */
#define IFX_PFI_ZBAB_ZBABRECORD_RES_LEN (3u)

/** \brief Mask for Ifx_PFI_ZBAB_ZBABRECORD_Bits.RES */
#define IFX_PFI_ZBAB_ZBABRECORD_RES_MSK (0x7u)

/** \brief Offset for Ifx_PFI_ZBAB_ZBABRECORD_Bits.RES */
#define IFX_PFI_ZBAB_ZBABRECORD_RES_OFF (28u)

/** \brief Length for Ifx_PFI_ZBAB_ZBABRECORD_Bits.VLD */
#define IFX_PFI_ZBAB_ZBABRECORD_VLD_LEN (1u)

/** \brief Mask for Ifx_PFI_ZBAB_ZBABRECORD_Bits.VLD */
#define IFX_PFI_ZBAB_ZBABRECORD_VLD_MSK (0x1u)

/** \brief Offset for Ifx_PFI_ZBAB_ZBABRECORD_Bits.VLD */
#define IFX_PFI_ZBAB_ZBABRECORD_VLD_OFF (31u)

/** \}  */

/******************************************************************************/

/******************************************************************************/

#endif /* IFXPFI_BF_H */


별 번역 전략 확장 (Pagpapalawak ng mga Estratehiya sa Pagsasalin Bawat Genre)

**[중요]** 본 CognoTranslate Gem 시스템은 'CognoTranslate_Gem_Genre_Modules_PH_v1.0.0.md' 파일에 정의된 장르별 특화 번역 모듈과 연동하여 작동합니다.
사용자가 번역할 텍스트의 장르가 식별되거나 명시될 경우, AI는 해당 장르 모듈의 지침을 우선적으로 참조하여 번역을 수행합니다. 장르 모듈의 지침은 본 마스터 프롬프트의 일반 원칙을 해당 장르의 맥락에 맞게 재정의하거나 보강합니다.

---
# CognoTranslate Gem - 한국 문학(소설) 특화 번역 에이전트 (한국어 -> 베트남어, 소설의 '맛' 강조)

## 1. 시스템 핵심 역할 및 목적

당신은 이제 **"한국어 소설의 심오한 정수와 미학적 '맛'을 베트남어로 재창조하는 최상위 번역 에이전트"**이자 **"CognoTranslate Gem - 한국어 소설 특화 (베트남어 버전)"**입니다. 당신의 핵심 역할은 **한국어 소설 원문의 '언어적, 인지적 의미, 작가의 의도, 작품 전반의 심미적/정서적 경험, 그리고 한국어 문학 고유의 섬세한 '맛''을 깊이 있게 파악하여, 베트남어 사용자(특히 베트남 독자들의 뉘앙스를 강조)가 한국어 소설을 마치 원작처럼 깊이 몰입하고 감동하며 그 '맛'을 온전히 느낄 수 있도록 가장 자연스럽고 유려하며 문학적으로 완성도 높게 재개념화(re-conceptualize)하여 전달하는 '고품격 인지 기반 한국어 소설 전문 번역 에이전트'**입니다.

당신은


import numpy as np
from functools import partial

from sklearn.utils import check_random_state
from numpy.testing import assert_array_equal
from numpy.testing import assert_array_almost_equal

from skgarden.forest import RandomForestRegressor
from skgarden.forest import ExtraTreesRegressor

def check_variance_toy_data(Regressor):
    # Split into [2, 3, 4] and [100, 103, 106]
    X = [[2.0, 1.], [3.0, 1.0], [4., 1.0],
         [109.0, 1.0], [110.0, 1.0], [111., 1.]]
    y = [2, 3, 4, 100, 103, 106]

    reg = Regressor(max_depth=1, random_state=1)
    reg.fit(X, y)

    pred, var = reg.predict(X, return_std=True)
    assert_array_equal(pred, [3, 3, 3, 103, 103, 103])
    assert_array_almost_equal(
        var, np.sqrt([0.666667, 0.666667, 0.666667, 6.0, 6.0, 6.0]))

def test_variance_toy_data():
    """Test that `return_std` behaves expected on toy data."""
    for Regressor in [partial(RandomForestRegressor, bootstrap=False),
                      ExtraTreesRegressor]:
        yield check_variance_toy_data, Regressor

def check_variance_no_split(Regressor):
    rng = check_random_state(0)
    X = np.ones((1000, 1))
    y = rng.normal(size=(1000,))

    reg = Regressor(random_state=0, max_depth=3)
    reg.fit(X, y)

    pred, std = reg.predict(X, return_std=True)
    assert_array_almost_equal([np.std(y)] * 1000, std)
    assert_array_almost_equal([np.mean(y)] * 1000, pred)

def test_variance_no_split():
    """
    Test that `return_std` behaves expected on a tree with one node.

    The decision tree should not produce a split, because there is
    no information gain which enables us to verify the mean and
    standard deviation.
    """
    for Regressor in [partial(RandomForestRegressor, bootstrap=False),
                      ExtraTreesRegressor]:
        yield check_variance_no_split, Regressor

def test_min_variance():
    rng = check_random_state(0)
    X = rng.normal(size=(1000, 1))
    y = np.ones(1000)
    rf = RandomForestRegressor(min_variance=0.1)
    rf.fit(X, y)
    mean, std = rf.predict(X, return_std=True)
    assert_array_almost_equal(mean, y)
    assert_array_almost_equal(std, np.sqrt(0.1*np.ones(1000)))


/// Adds packet loss to an IP connection
pub struct IpPacketLoss {
    //inner: PacketLoss<IpPacket>,
}

impl IpPacketLoss {
    /// Spawn a `IpPacketLoss` directly onto the event loop
    pub fn spawn(
        handle: &NetworkHandle,
        loss_rate: f64,
        mean_loss_duration: Duration,
        plug_a: IpPlug,
        plug_b: IpPlug,
    ) {
        PacketLoss::spawn(handle, loss_rate, mean_loss_duration, plug_a.into(), plug_b.into())
    }
}

<reponame>BenjyWiener/clean-macro-docs
extern crate proc_macro2;

use proc_macro2::{Delimiter, TokenStream, TokenTree};
use quote::{ToTokens, TokenStreamExt};
use syn::parse::{Parse, ParseStream, Parser};
use syn::punctuated::Punctuated;
use syn::token::{Brace, Bracket, Paren};
use syn::{Attribute, Error, Ident, MacroDelimiter, Path, Result, Token};

fn parse_macro_delimeter(input: ParseStream) -> Result<(MacroDelimiter, TokenStream)> {
    input.step(|cursor| {
        if let Some((TokenTree::Group(g), new_cursor)) = cursor.token_tree() {
            match g.delimiter() {
                Delimiter::Parenthesis => Ok((
                    (MacroDelimiter::Paren(Paren(g.span())), g.stream()),
                    new_cursor,
                )),
                Delimiter::Brace => Ok((
                    (MacroDelimiter::Brace(Brace(g.span())), g.stream()),
                    new_cursor,
                )),
                Delimiter::Bracket => Ok((
                    (MacroDelimiter::Bracket(Bracket(g.span())), g.stream()),
                    new_cursor,
                )),
                Delimiter::None => Err(Error::new(g.span(), "expected delimited group")),
            }
        } else {
            Err(Error::new(cursor.span(), "expected delimited group"))
        }
    })
}

macro_rules! macro_delimited {
    ($content:ident in $input:expr) => {{
        let (delim, content) = parse_macro_delimeter($input)?;
        $content = content;
        delim
    }};
}

fn macro_delimiter_surround<F>(delim: &MacroDelimiter, tokens: &mut TokenStream, f: F)
where
    F: FnOnce(&mut TokenStream),
{
    match delim {
        MacroDelimiter::Paren(paren) => paren.surround(tokens, f),
        MacroDelimiter::Brace(brace) => brace.surround(tokens, f),
        MacroDelimiter::Bracket(bracket) => bracket.surround(tokens, f),
    }
}

#[derive(Clone)]
pub struct MacroRulesRule {
    pub rule_delimiter: MacroDelimiter,
    pub rule: TokenStream,
    pub fat_arrow: Token![=>],
    pub body_delimiter: MacroDelimiter,
    pub body: TokenStream,
}

impl Parse for MacroRulesRule {
    fn parse(input: ParseStream) -> Result<Self> {
        let rule;
        let body;
        Ok(MacroRulesRule {
            rule_delimiter: macro_delimited!(rule in input),
            rule,
            fat_arrow: input.parse::<Token![=>]>()?,
            body_delimiter: macro_delimited!(body in input),
            body,
        })
    }
}

impl ToTokens for MacroRulesRule {
    fn to_tokens(&self, tokens: &mut TokenStream) {
        macro_delimiter_surround(&self.rule_delimiter, tokens, |tokens| {
            self.rule.to_tokens(tokens)
        });
        self.fat_


�延迟进行采样:

1.  运行 5.4 32 位 RTL 补丁内核的树莓 Pi 3 b+(4 个 CPU 内核)
2.  运行标准 5.4 32 位树莓 Pi OS 内核的树莓 Pi 3 b+(4 个 CPU 内核)
3.  运行标准 5.4(主线)64 位内核的 x86_64 (4 个 CPU 内核)Ubuntu 20.04 LTS

为了方便起见，我们在`latency_test.sh`脚本上使用了一个名为`runtest`的小包装脚本。它运行`latency_test.sh`脚本来测量系统延迟，同时运行`stress(1)`实用程序；它使用以下参数调用`stress`，对系统施加中央处理器、输入/输出和内存负载:

```sh
stress --cpu 6 --io 2 --hdd 4 --hdd-bytes 1MB --vm 2 --vm-bytes 128M --timeout 1h
```

(仅供参考，也有一个更高版本的`stress`叫做`stress-ng`。)当`stress`应用执行时，加载系统，`cyclictest(8)`应用采样系统延迟，将其`stdout`写入文件:

```sh
sudo cyclictest --duration=1h -m -Sp90 -i200 -h400 -q >output
```

(请务必参考`stress(1)`和`cyclictest(8)`上的手册页来了解参数。)它将运行一个小时(为了获得更准确的结果，我建议您运行更长时间的测试——可能是 12 个小时)。我们的`runtest`脚本(和底层脚本)使用适当的参数在内部运行`cyclictest`；它捕获并显示所用的最小、平均和最大延迟挂钟时间(通过`time(1)`)，并生成直方图。请注意，在这里，我们运行`cyclictest`的持续时间(最大)为一小时。

`runtest`

`latency_tests`

`LAT=~/booksrc/ch11/latency_tests`

`latency_tests`

在运行 RTL 内核的树莓皮 3B+上运行我们的测试用例#1 的脚本截图如下:

![](img/ac4326f5-6f00-4d31-94df-e6246e1ecc94.png)

研究前面的截图；你可以清楚地看到系统细节，内核版本(注意是 RTL 补丁的`PREEMPT_RT`内核！)，以及 cyclictest 的最小、平均和最大(调度)延迟的延迟测量结果。

### 查看结果

我们对剩下的两个测试用例执行类似的过程，并在图 11.14 中总结了所有三个测