io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * Created by Mathias Seguy - Android2EE on 26/11/2015.
 */
public class MessagePrinter {
    /***********************************************************
     * Printing Message
     **********************************************************/

    private static final String help_message = "The command lines expected are:\r\n\r\n" +
            " * 1)For a simple morphing from one file to another one\r\n" +
            " * java -jar animatedvectortool-0.1.jar #myInitialVectorDrawablePath #myFinalVectorDrawablePath\r\n\r\n" +
            " * 2)to use the trim technic (Nick Butcher @crafty droidcon london 2015)\r\n" +
            " * --It allows you to move the path from one state to an other one\r\n" +
            " * java -jar animatedvectortool-0.1.jar trim #myInitialVectorDrawablePath #myFinalVectorDrawablePath\r\n\r\n" +
            " * 3)For a list of morphing between a set of images where you list all the elements you want to morph\r\n" +
            " * java -jar animatedvectortool-0.1.jar #myInitialVectorDrawablePath #myIntermediateVectorDrawable1Path #myIntermediateVectorDrawable2Path  #myFinalVectorDrawablePath\r\n\r\n" +
            " * where  #myIntermediateVectorDrawable1Path has to be replaced by the real name of the file\r\n\r\n" +
            " * 4)java -jar animatedvectortool-0.1.jar v gives you the version \r\n\r\n" +
            " * 5)java -jar animatedvectortool-0.1.jar h gives you the help \r\n\r\n" +
            " * 5)java -jar animatedvectortool-0.1.jar debug gives you the full log \r\n\r\n" ;
    private static final String help_message2="We need at least two files !!!";
    private static final String help_message3="You need to give the same android:morphingName xml tag to the path you want to morph (use the android:morphingName xml tag for this please)";
    private static final String help_message3_1="Just add this tag to your path android:morphingName (it's not an android tag) and give the same name to the paths your want to morph from one to the other\r\n" +
            "The value of the tag android:morphingName has to be unique in the whole files set and it is used to make the pair of Path <InitialPath,FinalPath> in the morphing operation.\r\n" +
            "Sample. The first vectorDrawable contains the following Path :\r\n" +
            "<path\r\n" +
            "            android:name=\"head\"\n" +
            "            android:morphingName=\"myMorphingPairUniqueId\"\n" +
            "            android:fillColor=\"#9FBF3B\"\n" +
            "            android:pathData=\"M301.314,....\n" +
            "            />" +
            "The second VectorDrawable contains the following Path (we don't care where)\r\n" +
            "<path\n" +
            "            android:name=\"left_arm\"\n" +
            "            android:morphingName=\"myMorphingPairUniqueId\"\n" +
            "            android:fillColor=\"#9FBF3B\"\n" +
            "            android:pathData=\"M126.383,297.598c0,.... />\n" +
            "        />\r\n" +
            "Then those two paths will be morph one from the other because they have the same android:morphingName (myMorphingPairUniqueId)\r\n" +
            "Is it ok ? You can fix your drawable now, just by adding the android:morphingName tag to the path you want to morph ";
    private static final String help_message4="We only morph paths that have a name the others are just skipped";
    private static final String Reward = "This tool is based on VectAlign a tool made by Stefano Bonetta https://github.co


cation_id) * seed.xw));
}

fn rand() -> f32 {
  rand_seed.x = fract(cos(dot(rand_seed, vec2f(23.14077926, 232.61690225))) * 136.8168);
  rand_seed.y = fract(cos(dot(rand_seed, vec2f(54.47856553, 345.84153136))) * 534.7645);
  return rand_seed.y;
}

////////////////////////////////////////////////////////////////////////////////
// Vertex shader
////////////////////////////////////////////////////////////////////////////////
struct RenderParams {
  modelViewProjectionMatrix : mat4x4f,
  right : vec3f,
  up : vec3f
}
@binding(0) @group(0) var<uniform> render_params : RenderParams;

struct VertexInput {
  @location(0) position : vec3f,
  @location(1) color : vec4f,
  @location(2) quad_pos : vec2f, // -1..+1
}

struct VertexOutput {
  @builtin(position) position : vec4f,
  @location(0) color : vec4f,
  @location(1) quad_pos : vec2f, // -1..+1
}

@vertex
fn vs_main(in : VertexInput) -> VertexOutput {
  var quad_pos = mat2x3f(render_params.right, render_params.up) * in.quad_pos;
  var position = in.position + quad_pos * 0.01;
  var out : VertexOutput;
  out.position = render_params.modelViewProjectionMatrix * vec4f(position, 1.0);
  out.color = in.color;
  out.quad_pos = in.quad_pos;
  return out;
}

////////////////////////////////////////////////////////////////////////////////
// Fragment shader
////////////////////////////////////////////////////////////////////////////////
@fragment
fn fs_main(in : VertexOutput) -> @location(0) vec4f {
  var color = in.color;
  // Apply a circular particle alpha mask
  color.a = color.a * max(1.0 - length(in.quad_pos), 0.0);
  return color;
}

////////////////////////////////////////////////////////////////////////////////
// Simulation Compute shader
////////////////////////////////////////////////////////////////////////////////
struct SimulationParams {
  deltaTime : f32,
  seed : vec4f,
}

struct Particle {
  position : vec3f,
  lifetime : f32,
  color    : vec4f,
  velocity : vec3f,
}

struct Particles {
  particles : array<Particle>,
}

@binding(0) @group(0) var<uniform> sim_params : SimulationParams;
@binding(1) @group(0) var<storage, read_write> data : Particles;
@binding(2) @group(0) var texture : texture_2d<f32>;

@compute @workgroup_size(64)
fn simulate(@builtin(global_invocation_id) global_invocation_id : vec3u) {
  let idx = global_invocation_id.x;

  init_rand(idx, sim_params.seed);

  var particle = data.particles[idx];

  // Apply gravity
  particle.velocity.z = particle.velocity.z - sim_params.deltaTime * 0.5;

  // Basic velocity integration


se do desenvolvedor.
     * @param linguagemPrincipal A linguagem de programação principal do desenvolvedor.
     */
    public CorrecaoDesenvolvedor(String nome, int identificador, double salarioBase, String linguagemPrincipal) {
        super(nome, identificador, salarioBase);
        this.linguagemPrincipal = linguagemPrincipal;
    }

    /**
     * Calcula o salário total do desenvolvedor.
     * O desenvolvedor recebe um bônus de 10% sobre o salário base.
     *
     * @return O salário total calculado.
     */
    @Override
    public double calcularSalarioTotal() {
        return getSalarioBase() * 1.1;
    }

    /**
     * Retorna a linguagem de programação principal, usada pelo Desenvolvedor.
     * @return Uma String contendo o nome da linguagem de programação.
     */
    public String getLinguagemPrincipal() {
        return linguagemPrincipal;
    }

    /**
     * Define a linguagem de programação principal, usada pelo Desenvolvedor.
     * @param linguagemPrincipal String com o nome da linguagem de programação.
     */
    public void setLinguagemPrincipal(String linguagemPrincipal) {
        this.linguagemPrincipal = linguagemPrincipal;
    }
}
package main.java.atividade08;

import java.util.ArrayList;
import java.util.List;

/**
 * Classe que representa um carrinho de compras.
 */
public class CorrecaoCarrinho {
    private List<CorrecaoProduto> itens;

    public CorrecaoCarrinho() {
        this.itens = new ArrayList<>();
    }

    /**
     * Adiciona um produto ao carrinho.
     *
     * @param produto O produto a ser adicionado.
     */
    public void adicionarProduto(CorrecaoProduto produto) {
        itens.add(produto);
    }

    /**
     * Remove um produto do carrinho.
     *
     * @param produto O produto a ser removido.
     */
    public void removerProduto(CorrecaoProduto produto) {
        itens.remove(produto);
    }

    /**
     * Calcula o total da compra, incluindo o frete de cada produto.
     *
     * @return O valor total da compra.
     */
    public double calcularTotal() {
        return itens.stream().mapToDouble(p -> p.getPreco() + p.calcularFrete()).sum();
    }

    /**
     * Versão simples do método calcularTotal.
     *
     * @return O valor total da compra.
     */
    public double calcularTotalSimples() {
        double total = 0;
        for (CorrecaoProduto p : itens) {
            total += p.getPreco() + p.calcularFrete();
        }
        return total;
    }

    /**
     * Lista todos os itens no carrinho.
     */
    public void listarItens() {
        itens.forEach(System.out::println);
    }

    /**
     * Versão simples do método listarItens.
     */
    public void listarItensSimples() {
        for (CorrecaoProduto p : itens) {
            System.out.println(p);
        }
    }
}package main.java.atividade04;

/**
 * Representa uma notificação por e-mail.
 * Estende a classe Notificacao e implementa funcionalidades específicas para e-mail.
 */
public class CorrecaoEmailNotificacao extends CorrecaoNotificacao {
    private String assunto


     String::from("(Read more...)")
    }
}

pub struct NewsArticle {
    pub headline: String,
    pub location: String,
    pub author: String,
    pub content: String,
}

impl Summarizable for NewsArticle {
    fn summary(&self) -> String {
        format!("{}, by {} ({})", self.headline, self.author, self.location)
    }
}

pub struct Tweet {
    pub username: String,
    pub content: String,
    pub reply: bool,
    pub retweet: bool,
}

impl Summarizable for Tweet {
    fn summary(&self) -> String {
        format!("{}: {}", self.username, self.content)
    }
}

struct Default {
    pub headline: String,
    pub location: String,
    pub author: String,
    pub content: String,
}

impl Summarizable for Default {}

fn main() {
    let tweet = Tweet {
        username: String::from("MrKiven"),
        content: String::from("Of course, as you probably already know, people"),
        reply: false,
        retweet: false,
    };
    let default = Default {
        headline: String::from("Penguins win the Stanley Cup Championship!"),
        location: String::from("Pittsburgh, PA, USA"),
        author: String::from("Iceburgh"),
        content: String::from("The Pittsburgh Penguins once again are the best
                              hockey team in the NHL."),
    };

    println!("One new tweet: {}", tweet.summary());
    println!("New article available!: {}", default.summary());
}
<reponame>matthewtgilbride/actor-interfaces<filename>telnet/rust/src/lib.rs
//! # Telnet Server wasmCloud Actor Interface
//!
//! This crate provides an abstraction over the `wasmcloud:telnet` contract. This allows
//! actors to be notified when a new telnet session has started and when text has been
//! received on a given session. Actors can also emit text to a specific session, which
//! ultimately correlates to an individual connected socket client.
//!
//! # Example:
//! ```
//! extern crate wasmcloud_actor_telnet as telnet;
//! extern crate wasmcloud_actor_core as actor;
//! use telnet::TelnetResult;
//! use wapc_guest::HandlerResult;
//!
//! #[actor::init]
//! pub fn init() {
//!     telnet::Handlers::register_session_started(session_started);
//!     telnet::Handlers::register_receive_text(receive_text);
//! }
//!
//! fn session_started(session: String) -> HandlerResult<TelnetResult> {
//!    let _ = telnet::default().send_text(session, "Welcome to the Interwebs!\n".to_string());
//!    Ok(TelnetResult {
//!      success: true,
//!      error: None,
//!    })
//! }
//! fn receive_text(session: String, text: String) -> HandlerResult<TelnetResult> {
//!    let _ = telnet::default().send_text(session, format!("Echo: {}\n", text));
//!    Ok(TelnetResult {
//!      success: true,
//!      error: None,
//!    })
//! }
//!
//! ```

#[allow(dead_code)]
mod generated;

pub use generated::*;

pub const OP_SEND_TEXT: &str = "SendText";
pub const OP_SESSION_STARTED: &str = "SessionStarted";
pub const OP_RECEIVE_TEXT: &str = "ReceiveText";
pub(crate) mod route_handler;
use super::source::*;
use super::target::*;
use super::super::traits::*;

impl CacheType {
    ///
    /// Generates a serialized version of these brush properties on the specified data target
    ///
    pub fn serialize<Tgt: AnimationDataTarget>(&self, data: &mut Tgt) {
        match self {
            CacheType::OnionSkinLayer


summary>
		public void Reset()
		{
		}

		/// <summary>
		/// Get the next entry in this tar archive. This will skip
		/// over any remaining data in the current entry, if there
		/// is one, and place the input stream at the header of the
		/// next entry, and read the header and instantiate a new
		/// TarEntry from the header bytes and return that entry.
		/// If there are no more entries in the archive, null will
		/// be returned to indicate that the end of the archive has
		/// been reached.
		/// </summary>
		/// <returns>
		/// The next TarEntry in the archive, or null.
		/// </returns>
		public TarEntry GetNextEntry()
		{
			if (hasHitEOF) {
				return null;
			}

			if (currentEntry != null) {
				SkipToNextEntry();
			}

			byte[] headerBuf = tarBuffer.ReadBlock();

			if (headerBuf == null) {
				hasHitEOF = true;
			} else
				hasHitEOF |= TarBuffer.IsEndOfArchiveBlock(headerBuf);

			if (hasHitEOF) {
				currentEntry = null;
			} else {
				try {
					var header = new TarHeader();
					header.ParseBuffer(headerBuf);
					if (!header.IsChecksumValid) {
						throw new TarException("Header checksum is invalid");
					}
					this.entryOffset = 0;
					this.entrySize = header.Size;

					StringBuilder longName = null;

					if (header.TypeFlag == TarHeader.LF_GNU_LONGNAME) {

						byte[] nameBuffer = new byte[TarBuffer.BlockSize];
						long numToRead = this.entrySize;

						longName = new StringBuilder();

						while (numToRead > 0) {
							int numRead = this.Read(nameBuffer, 0, (numToRead > nameBuffer.Length ? nameBuffer.Length : (int)numToRead));

							if (numRead == -1) {
								throw new InvalidHeaderException("Failed to read long name entry");
							}

							longName.Append(TarHeader.ParseName(nameBuffer, 0, numRead).ToString());
							numToRead -= numRead;
						}

						SkipToNextEntry();
						headerBuf = this.tarBuffer.ReadBlock();
					} else if (header.TypeFlag == TarHeader.LF_GHDR) {  // POSIX global extended header
																		// Ignore things we dont understand completely for now
						SkipToNextEntry();
						headerBuf = this.tarBuffer.ReadBlock();
					} else if (header.TypeFlag == TarHeader.LF_XHDR) {  // POSIX extended header
																		// Ignore things we dont understand completely for now
						SkipToNextEntry();
						headerBuf = this.tarBuffer.ReadBlock();
					} else if (header.TypeFlag == TarHeader.LF_GNU_VOLHDR) {
						// TODO: could show volume name when verbose
						SkipToNextEntry();
						headerBuf = this.tarBuffer.ReadBlock();
					} else if (header.TypeFlag != TarHeader.LF_NORMAL &&
							   header.TypeFlag != TarHeader.LF_OLDNORM &&
							   header.TypeFlag != TarHeader.LF_LINK &&
							   header.TypeFlag != TarHeader.LF_SYMLINK &&
							   header.TypeFlag != TarHeader.LF_DIR) {
						// Ignore things we dont understand completely for now
						SkipToNextEntry();
						headerBuf = tarBuffer.ReadBlock();
					}

					if (entryFactory == null) {
						currentEntry = new TarEntry(headerBuf);
						if (longName != null) {
							currentEntry.Name = longName.ToString();
						}
					} else {
						currentEntry = entryFactory.CreateEntry(headerBuf);
					}

					// Magic was checked here for 'ustar' but there are multiple valid possibilities
					// so this is not done anymore.

					entryOffset = 0;

					// TODO: Review How do we resolve this discrepancy?!
					entrySize = this.currentEntry


ba.addBinary(0b001010, 6) // A
    expect(ret.data[0].toByteArray()).toStrictEqual(ba.toByteArray())
  })
  it("数字から始まる＆英字モード開始", () => {
    const encoder = new BasicEncoder(new Utf8(), false)
    encoder.initialize(EccLevel.L, "000000A", 1)
    const ret = encoder.try({
      division: 1,
      type: 1,
    })
    expect(ret.success).toBe(true)
    const ba = new ByteArrayBuilder()
    ba.addBinary(0b0010, 4) // alphabets
    ba.addBinary(0b000000111, 9) // 7 chars
    ba.addBinary(0b0000000000, 11) // 00
    ba.addBinary(0b0000000000, 11) // 00
    ba.addBinary(0b0000000000, 11) // 00
    ba.addBinary(0b001010, 6) // A
    expect(ret.data[0].toByteArray()).toStrictEqual(ba.toByteArray())
  })
  it("数字から始まる＆8ビットバイトモード開始", () => {
    const encoder = new BasicEncoder(new Utf8(), false)
    encoder.initialize(EccLevel.L, "000あ", 1)
    const ret = encoder.try({
      division: 1,
      type: 1,
    })
    expect(ret.success).toBe(true)
    const ba = new ByteArrayBuilder()
    ba.addBinary(0b0100, 4) // 8 bit encoding
    ba.addBinary(0b00000110, 8) // 6 bytes
    ba.addBinary(0x30, 8) // 0
    ba.addBinary(0x30, 8) // 0
    ba.addBinary(0x30, 8) // 0
    ba.addBinary(0xe38182, 24) // あ
    expect(ret.data[0].toByteArray()).toStrictEqual(ba.toByteArray())
  })
  it("数字から始まる＆数字モード開始、途中で8ビットバイトに変更", () => {
    const encoder = new BasicEncoder(new Utf8(), false)
    encoder.initialize(EccLevel.L, "0000あ", 1)
    const ret = encoder.try({
      division: 1,
      type: 1,
    })
    expect(ret.success).toBe(true)
    const ba = new ByteArrayBuilder()
    ba.addBinary(0b0001, 4) // numbers
    ba.addBinary(0b0000000100, 10) // 4 chars
    ba.addBinary(0b0000000000, 10) // 000
    ba.addBinary(0b0000, 4) // 0
    ba.addBinary(0b0100, 4) // 8 bit encoding
    ba.addBinary(0b00000011, 8) // 3 bytes
    ba.addBinary(0xe38182, 24) // あ
    expect(ret.data[0].toByteArray()).toStrictEqual(ba.toByteArray())
  })
  it("英字から始まる＆英字モード開始", () => {
    const encoder = new BasicEncoder(new Utf8(), false)
    encoder.initialize(EccLevel.L, "AAAAAAあ", 1)
    expect(encoder.predictDataSize()).toBe(57)
    const ret = encoder.try({
      division: 1,
      type: 1,
    })
    expect(ret.success).toBe(true)
    const ba = new ByteArrayBuilder()
    ba.addBinary(0b0010, 4) // alphabets
    ba.addBinary(0b000000110, 9) // 6 chars
    ba.addBinary(0b00111001100, 11) // AA
    ba.addBinary(0b00111001100, 11) // AA
    ba.addBinary(0b00111001100, 11) // AA
    ba.addBinary(0b0100, 4) // 8 bit encoding
    ba.a


    "hex": "#7e2065",
    "name": "\u845b\u5dfe\u7d2b",
    "pinyin": "gejinzi"
  },
  {
    "CMYK": [49, 100, 29, 32],
    "RGB": [104, 23, 82],
    "hex": "#681752",
    "name": "\u7275\u725b\u7d2b",
    "pinyin": "qianniuzi"
  },
  {
    "CMYK": [53, 75, 41, 41],
    "RGB": [93, 63, 81],
    "hex": "#5d3f51",
    "name": "\u7d2b\u7070",
    "pinyin": "zihui"
  },
  {
    "CMYK": [55, 87, 41, 52],
    "RGB": [78, 42, 64],
    "hex": "#4e2a40",
    "name": "\u9f99\u775b\u9c7c\u7d2b",
    "pinyin": "longjingyuzi"
  },
  {
    "CMYK": [58, 96, 40, 61],
    "RGB": [65, 28, 53],
    "hex": "#411c35",
    "name": "\u8378\u8360\u7d2b",
    "pinyin": "biqizi"
  },
  {
    "CMYK": [63, 74, 52, 70],
    "RGB": [54, 41, 47],
    "hex": "#36292f",
    "name": "\u53e4\u9f0e\u7070",
    "pinyin": "gudinghui"
  },
  {
    "CMYK": [81, 87, 54, 84],
    "RGB": [30, 19, 29],
    "hex": "#1e131d",
    "name": "\u4e4c\u6885\u7d2b",
    "pinyin": "wumeizi"
  },
  {
    "CMYK": [83, 87, 55, 86],
    "RGB": [28, 13, 26],
    "hex": "#1c0d1a",
    "name": "\u6df1\u7275\u725b\u7d2b",
    "pinyin": "shenqianniuzi"
  },
  {
    "CMYK": [7, 5, 7, 0],
    "RGB": [241, 240, 237],
    "hex": "#f1f0ed",
    "name": "\u94f6\u767d",
    "pinyin": "yinbai"
  },
  {
    "CMYK": [13, 10, 9, 0],
    "RGB": [226, 225, 228],
    "hex": "#e2e1e4",
    "name": "\u82a1\u98df\u767d",
    "pinyin": "qianshibai"
  },
  {
    "CMYK": [23, 18, 12, 1],
    "RGB": [204, 204, 214],
    "hex": "#ccccd6",
    "name": "\u8fdc\u5c71\u7d2b",
    "pinyin": "yuanshanzi"
  },
  {
    "CMYK": [39, 31, 17, 2],
    "RGB": [167, 168, 189],
    "hex": "#a7a8bd",
    "name": "\u6de1\u84dd\u7d2b",
    "pinyin": "danlanzi"
  },
  {
    "CMYK": [74, 64, 14, 1],
    "RGB": [97, 100, 159],
    "hex": "#61649f",
    "name": "\u5c71\u6897\u7d2b",
    "pinyin": "shangengzi"
  },
  {
    "CMYK": [63, 53, 2


using AutoMapper;
using AutoMapper.QueryableExtensions;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.IdentityModel.Tokens;
using MoviesAPI.DTOs;
using MoviesAPI.Models;
using MoviesAPI.Utilities;
using System.IdentityModel.Tokens.Jwt;
using System.Net.NetworkInformation;
using System.Security.Claims;
using System.Text;

namespace MoviesAPI.Controllers
{
    [Route("api/users")]
    [ApiController]
    [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Policy = "isadmin")]
    public class UsersController : ControllerBase
    {
        private readonly UserManager<IdentityUser> userManager;
        private readonly SignInManager<IdentityUser> signInManager;
        private readonly IConfiguration configuration;
        private readonly ApplicationDbContext context;
        private readonly IMapper mapper;

        public UsersController( UserManager<IdentityUser> userManager, SignInManager<IdentityUser> signInManager,
            IConfiguration configuration, ApplicationDbContext context, IMapper mapper)
        {
            this.userManager = userManager;
            this.signInManager = signInManager;
            this.configuration = configuration;
            this.context = context;
            this.mapper = mapper;
        }

    [HttpGet("ListUsers")]
    public async Task<ActionResult<List<UserDTO>>> ListUsers([FromQuery] PaginationDTO paginationDTO)
    {
      var queryable = context.Users.AsQueryable();
      await HttpContext.InsertParamsPaginationHeader(queryable);

      var users = await context.Users
          .Select(u => new UserDTO
          {
            Email = u.Email!,
            // Es admin si existe una claim isadmin=true para ese usuario
            IsAdmin = context.UserClaims
                  .Any(c => c.UserId == u.Id &&
                            c.ClaimType == "isadmin" &&
                            c.ClaimValue == "true")
          })
          .OrderBy(x => x.Email)
          .Paginate(paginationDTO)
          .ToListAsync();

      return users;
    }

    [HttpPost("register")]
        [AllowAnonymous]
        public async Task<ActionResult<AuthenticationResponseDTO>> Register(UserCredentialsDTO userCredentialsDTO)
        {
            var user = new IdentityUser
            {
                Email = userCredentialsDTO.Email,
                UserName = userCredentialsDTO.Email
            };
            var result = await userManager.CreateAsync(user, userCredentialsDTO.Password);

            if (result.Succeeded)
            {
                return await BuildToken(user);
            }
            else
            {
                return BadRequest(result.Errors);
            }
        }

        [HttpPost("l


background: ${transparentize('0.5', 'rgba(255, 0, 0, 0.8)')},\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"rgba(255,255,255,0.9)\";\n *   background: \"rgba(255,255,255,0.8)\";\n *   background: \"rgba(255,0,0,0.3)\";\n * }\n */\n\nfunction transparentize(amount, color) {\n  if (color === 'transparent') return color;\n  var parsedColor = parseToRgb(color);\n  var alpha = typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1;\n\n  var colorWithAlpha = Object(esm_extends[\"a\" /* default */])({}, parsedColor, {\n    alpha: guard(0, 1, (alpha * 100 - parseFloat(amount) * 100) / 100)\n  });\n\n  return rgba(colorWithAlpha);\n} // prettier-ignore\n\n\nvar curriedTransparentize =\n/*#__PURE__*/\ncurry\n/* ::<number | string, string, string> */\n(transparentize);\n\n/**\n * Shorthand for easily setting the animation property. Allows either multiple arrays with animations\n * or a single animation spread over the arguments.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'animation': 'rotate 1s ease-in-out, colorchange 2s'\n * }\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...animation('rotate', '1s', 'ease-in-out')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${animation('rotate', '1s', 'ease-in-out')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'animation': 'rotate 1s ease-in-out'\n * }\n */\nfunction animation() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  // Allow single or multiple animations passed\n  var multiMode = Array.isArray(args[0]);\n\n  if (!multiMode && args.length > 8) {\n    throw new polished_es_PolishedError(64);\n  }\n\n  var code = args.map(function (arg) {\n    if (multiMode && !Array.isArray(arg) || !multiMode && Array.isArray(arg)) {\n      throw new polished_es_PolishedError(65);\n    }\n\n    if (Array.isArray(arg) && arg.length > 8) {\n      throw new polished_es_PolishedError(66);\n    }\n\n    return Array.isArray(arg) ? arg.join(' ') : arg;\n  }).join(', ');\n  return {\n    animation: code\n  };\n}\n\n/**\n * Shorthand that accepts any number of backgroundImage values as parameters for creating a single background statement.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...backgroundImages('url(\"/image/background.jpg\")', 'linear-gradient(red, green)')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${backgroundImages('url(\"/image/background.jpg\")', 'linear-gradient(red, green)')}\n * `\n *\n * // CSS as JS Output\n


�却，却则上焦闭，闭则气还，还则下焦胀，故气不行矣。
寒则腠理闭，气不行，故气收矣。
炅则腠理开，荣卫通，汗大泄，故气泄。
惊则心无所依，神无所归，虑无所定，故气乱矣。
劳则喘息汗出，外内皆越，故气耗矣。
思则心有所存，神有所归，正气留而不行，故气结矣。
腹中论篇第四十
黄帝问曰：有病心腹满，旦食则不能暮食，此为何病？岐伯对曰：名为鼓胀。
帝曰：治之奈何？岐伯曰：治之以鸡矢醴，一剂知，二剂已。
帝曰：其时有复发者，何也？岐伯曰：此饮食不节，故时有病也。虽然其病也已时，故当病气聚于腹也。
帝曰：有病胸胁支满者，妨于食，病至则先闻腥臊臭，出清液，先唾血，四支清，目眩，时时前后血，病名为何，何以得之？
岐伯曰：病名血枯，此得之年少时，有所大脱血。若醉入房，中气竭，肝伤，故月事衰少不来也。
帝曰：治之奈何？复以何术？岐伯曰：以四乌鲗骨一藘茹，二物并合之，丸以雀卵，大小如豆，以五丸为后饭，饮以鲍鱼汁，利肠中，及伤肝也。
帝曰：病有少腹盛，上下左右皆有根，此为何病？可治不？
岐伯曰：病名曰伏梁。
帝曰：伏梁何因而得之？岐伯曰：裹大脓血，居肠胃之外，不可治，治之每切按之致死。
帝曰：何以然？岐伯曰：此下则因阴，必下脓血，上则迫胃脘，生膈侠胃脘内痈，此久病也，难治。居脐上为逆，居脐下为从，勿动亟夺，论在刺法中。
帝曰：人有身体髀股(骨行)皆肿，环脐而痛，是为何病？岐伯曰：病名伏梁，此风根也。其气溢于大肠而着于肓，肓之原在脐下，故环脐而痛也。不可动之，动之为水溺涩之病。
帝曰：夫子数言热中，消中，不可服高梁芳草石药


_OBJECT_AUTO_INIT)
        {(*cond
          /*
           * This is all we need to do to destroy a statically
           * initialised cond that has not yet been used (initialised).
           * If we get to here, another thread
           * waiting to initialise this cond will get an EINVAL.
           */
          *cond = NULL;
        }
      else
        {
          /*
           * The cv has been initialised while we were waiting
           * so assume it's in use.
           */
          result = EBUSY;
        }

      LeaveCriticalSection(&ptw32_cond_test_init_lock);
    }

  return (result);
}

/*
 * Arguments for cond_wait_cleanup, since we can only pass a
 * single void * to it.
 */
typedef struct {
  pthread_mutex_t * mutexPtr;
  pthread_cond_t cv;
  int * resultPtr;
} ptw32_cond_wait_cleanup_args_t;

static void
ptw32_cond_wait_cleanup(void * args)
{
  ptw32_cond_wait_cleanup_args_t * cleanup_args =
(ptw32_cond_wait_cleanup_args_t *) args;
  pthread_cond_t cv = cleanup_args->cv;
  int * resultPtr = cleanup_args->resultPtr;
  int eLastSignal; /* enum: 1=yes 0=no -1=cancelled/timedout w/o signal(s)
*/
  int result;

  /*
   * Whether we got here as a result of signal/broadcast or because of
   * timeout on wait or thread cancellation we indicate that we are no
   * longer waiting. The waiter is responsible for adjusting waiters
   * (to)unblock(ed) counts (protected by unblock lock).
   * Unblock lock/Sync.LEVEL-2 supports _timedwait and cancellation.
   */
  if ((result = pthread_mutex_lock(&(cv->mtxUnblockLock))) != 0)
    {((result
      *resultPtr = result;
      return;
    }

  cv->nWaitersUnblocked++;

  eLastSignal = (cv->nWaitersToUnblock == 0) ?
                   -1 : (--cv->nWaitersToUnblock == 0);

  /*
   * No more LEVEL-2 access to waiters (to)unblock(ed) counts needed
   */
  if ((result = pthread_mutex_unlock(&(cv->mtxUnblockLock))) != 0)
    {((result
      *resultPtr = result;
      return;
    }

  /*
   * If last signal...
   */
  if (eLastSignal == 1)
    {(eLastSignal
     /*
      * ...it means that we have end of 'atomic' signal/broadcast
      */
      if (sem_post(&(cv->semBlockLock)) != 0)
        {(sem_post(&(cv->semBlockLock))
          *resultPtr =  PTW32_GET_ERRNO();
          return;
        }
    }
  /*
   * If not last signal and not timed out/cancelled wait w/o signal...
   */
  else if (eLastSignal == 0)
    {
     /*
      * ...it means that next waiter can go through semaphore
      */
      if (sem_post(&(cv->semBlockQueue)) != 0)
        {(sem_post(&(cv->semBlockQueue))
          *resultPtr =  PTW32_GET_ERRNO();
          return;
        }
    }

  /*
   * XSH: Upon successful return, the mutex has been locked and is owned
   * by the calling thread
   */
  if ((result = pthread_mutex_lock(cleanup_args->mutexPtr)) != 0)
    {((result
      *resultPtr = result;
    }

}                               /* ptw32_cond_wait_cleanup */

static int
ptw32_cond_timedwait (pthread_cond_


namespace Firebase.Database.Streaming
{
    /// <summary>
    /// Specifies the origin of given <see cref="FirebaseEvent{T}"/>
    /// </summary>
    public enum FirebaseEventSource
    {
        /// <summary>
        /// Event comes from an offline source.
        /// </summary>
        Offline,

        /// <summary>
        /// Event comes from online source fetched during initial pull (valid only for RealtimeDatabase).
        /// </summary>
        OnlineInitial,

        /// <summary>
        /// Event comes from online source received


stContext, accountID stellar1.AccountID, limit int) (res []stellar1.PaymentSummary, err error) {
	defer tc.G.CTrace(ctx, "BackendMock.PendingPayments", &err)()
	r.Lock()
	defer r.Unlock()
	res = r.txLog.Pending(ctx, tc, accountID, limit)
	return res, nil
}

func (r *BackendMock) PaymentDetails(ctx context.Context, tc *TestContext, accountID stellar1.AccountID, txID string) (res stellar1.PaymentDetails, err error) {
	defer tc.G.CTrace(ctx, "BackendMock.PaymentDetails", &err)()
	if accountID.IsNil() {
		return res, errors.New("PaymentDetails requires AccountID")
	}
	r.Lock()
	defer r.Unlock()
	p := r.txLog.Find(txID)
	if p == nil {
		return res, fmt.Errorf("BackendMock: tx not found: '%v'", txID)
	}
	return *p, nil
}

func (r *BackendMock) PaymentDetailsGeneric(ctx context.Context, tc *TestContext, txID string) (res stellar1.PaymentDetails, err error) {
	defer tc.G.CTrace(ctx, "BackendMock.PaymentDetailsGeneric", &err)()
	r.Lock()
	defer r.Unlock()
	p := r.txLog.Find(txID)
	if p == nil {
		return res, fmt.Errorf("BackendMock: tx not found: '%v'", txID)
	}
	return *p, nil
}

type accountCurrencyResult struct {
	libkb.AppStatusEmbed
	CurrencyDisplayPreference string `json:"currency_display_preference"`
}

func (r *BackendMock) Details(ctx context.Context, tc *TestContext, accountID stellar1.AccountID) (res stellar1.AccountDetails, err error) {
	defer tc.G.CTrace(ctx, "RemoteMock.Details", &err)()
	r.Lock()
	defer r.Unlock()

	_, err = stellarnet.NewAddressStr(string(accountID))
	if err != nil {
		return res, err
	}

	// Fetch the currency display preference for this account first,
	// users are allowed to have currency preferences even for accounts
	// that do not exist on the network yet.
	var displayCurrency string
	mctx := libkb.NewMetaContext(ctx, tc.G)
	apiArg := libkb.APIArg{
		Endpoint:    "stellar/accountcurrency",
		SessionType: libkb.APISessionTypeREQUIRED,
		Args: libkb.HTTPArgs{
			"account_id": libkb.S{Val: string(accountID)},
		},
	}
	var apiRes accountCurrencyResult
	err = tc.G.API.GetDecode(mctx, apiArg, &apiRes)
	if err == nil {
		displayCurrency = apiRes.CurrencyDisplayPreference
	}

	a, ok := r.accounts[accountID]
	if !ok {
		// If an account does not exist on the network, return something reasonable.
		return stellar1.AccountDetails{
			AccountID:       accountID,
			Seqno:           "0",
			Balances:        nil,
			SubentryCount:   0,
			Available:       "0",
			DisplayCurrency: displayCurrency,
		}, nil
	}
	var balances []stellar1.Balance
	// this is different than how BackendMock.Balances works:
	if a.balance.Amount != "" {
		balances = []stellar1.Balance{a.balance}
	}
	balances = append(balances, a.otherBalances...)

	var inflationDest *stellar1.AccountID
	if a.inflationDest != "" {
		inflationDest = &a.inflationDest
	}

	return stellar1.AccountDetails{
		AccountID:


.getIntrinsicHeight();
				  int w = d.getIntrinsicWidth();

				  d.setBounds( 0, 0, w, h );

				  // by ADiV fix TextView center
				  if( itemWidget.getClass().getName().equals("android.widget.TextView") )
					  switch(_side) {
					    case 0: case 1: ((TextView)itemWidget).setGravity(Gravity.CENTER_VERTICAL); break; //left, right
					    case 2: case 3: ((TextView)itemWidget).setGravity(Gravity.CENTER_HORIZONTAL); //above
					  }

				  switch(_side) {
				    case 0: ((TextView)itemWidget).setCompoundDrawables(d, null, null, null); break; //left
				    case 1: ((TextView)itemWidget).setCompoundDrawables(null, null, d, null); break; //right
				    case 2: ((TextView)itemWidget).setCompoundDrawables(null, d, null, null); break; //above
				    case 3: ((TextView)itemWidget).setCompoundDrawables(null, null, null, d);
				  }

			}
		}

		private float setTextSizeAndGetAuxf( int position ){

			float auxCustomPixel;

			float defaultInPixel = textViewnew.getTextSize();  //default in pixel!!!
			float result =  pixelsToSP(defaultInPixel);  //just initialize ... pixel to TypedValue.COMPLEX_UNIT_SP

			if (mTextSizeTypedValue == TypedValue.COMPLEX_UNIT_SP) {
			   result =  pixelsToSP(defaultInPixel);   //default in TypedValue.COMPLEX_UNIT_SP!

			   if (items.get(position).textSize != 0) {
				  textViewnew.setTextSize(items.get(position).textSize);
				  auxCustomPixel = textViewnew.getTextSize();
				  result =  pixelsToSP(auxCustomPixel);  //custom in default in TypedValue.COMPLEX_UNIT_SP!
			   }
			}

			if (mTextSizeTypedValue == TypedValue.COMPLEX_UNIT_PX) {  //in pixel
				   if (items.get(position).textSize != 0) {
					  textViewnew.setTextSize(items.get(position).textSize);
					  auxCustomPixel = textViewnew.getTextSize();
					  result = auxCustomPixel;  //already in pixel
				   }
			}

			if (mTextSizeTypedValue == TypedValue.COMPLEX_UNIT_DIP) {
				   result =  pixelsToDIP(defaultInPixel);   //convert pixel to TypedValue.COMPLEX_UNIT_DIP
				   if (items.get(position).textSize != 0) {
					  textViewnew.setTextSize(items.get(position).textSize);
					  auxCustomPixel = textViewnew.getTextSize();
					  result =  pixelsToDIP(auxCustomPixel);  //custom in TypedValue.COMPLEX_UNIT_DIP
				   }
			}

			if (mTextSizeTypedValue == TypedValue.COMPLEX_UNIT_MM) {
				   result =  pixelsToMM(defaultInPixel);   //convert pixel to TypedValue.COMPLEX_UNIT_DIP
				   if (items.get(position).textSize != 0) {
					  textViewnew.setTextSize(items.get(position).textSize);
					  auxCustomPixel = textViewnew.getTextSize();
					  result =  pixelsToMM(auxCustomPixel);   //custom in TypedValue.COMPLEX_UNIT_DIP
				   }
			}

			if (mTextSizeTypedValue == TypedValue.COMPLEX_UNIT_PT) {
				   result =  pixelsToPT(defaultInPixel);   //convert pixel to TypedValue.COMPLEX_UNIT_DIP
				   if (items.get(position).textSize != 0) {
					  textViewnew.setTextSize(items.get(position).textSize);
					  auxCustomPixel = textViewnew.getTextSize();
					  result =  pixelsToPT


: Thorax en écailles dorées",
[3874] = "Plans : Bottes en acier poli",
[3875] = "Plans : Bottes en écailles dorées",
[3876] = "Croc de Bhag'thera",
[3877] = "Serre de Téthis",
[3878] = "Deprecated Conjured Mana Jewel",
[3879] = "Patte de Sin'Dall",
[3880] = "Tête de Bangalash",
[3881] = "Deprecated Kurzen's Head",
[3882] = "Plume de busard",
[3883] = "Deprecated Thick Cloth Hat",
[3884] = "Deprecated Cured Leather Cap",
[3885] = "Deprecated Scalemail Cap",
[3886] = "Deprecated Padded Cloth Hat",
[3887] = "Deprecated Cuirboulli Cap",
[3888] = "Deprecated Polished Scale Cap",
[3889] = "Chapeau brun-roux",
[3890] = "Chapeau en cuir clouté",
[3891] = "Casque en anneaux doublés",
[3892] = "Chapeau brodé",
[3893] = "Coiffe en cuir renforcé",
[3894] = "Casque brigandine",
[3895] = "TEST Legendary",
[3897] = "Oeil de Dizzy",
[3898] = "Titre du bibliothécaire",
[3899] = "Légendes des Gurubashi, Volume 3",
[3900] = "Porto Pupellyverbos",
[3901] = "Défense de Scalp-rouge",
[3902] = "Bâton des nobles",
[3904] = "Tête de Gan'zulah",
[3905] = "Tête de Nezzliok",
[3906] = "Trophée de Balia'mah",
[3907] = "Trophée de Ziata'jai",
[3908] = "Trophée de Zul'Mamwe",
[3909] = "Armure brisée d'Ana'thek",
[3910] = "Tabac à priser",
[3911] = "Eclat bleu vibrant",
[3912] = "Gemme d'âme",
[3913] = "Gemme d'âme capturée",
[3914] = "Sac à dos de compagnon",
[3915] = "Collier d'os sanglant",
[3916] = "Collier d'os brisés",
[3917] = "Cristal bleu chantant",
[3918] = "Eclat de cristal chantant",
[3919] = "Abats de Valbrume",
[3920] = "Cartes de la Voile sanglante",
[3921] = "Ordres de la Voile sanglante",
[3922] = "Paiement du Trembleur",
[3923] = "Bracelets d'élémentaire d'eau",
[3924] = "Pied bot de Maury",
[3925] = "Longue-vue dorée de Jon-Jon",
[3926] = "Grand anneau de Chucky",
[3927] = "Cheddar affiné",
[3928] = "Potion de soins excellente",
[3929] = "Butin de Maury",
[3931] = "Croc d'araignée empoisonné",
[3932] = "Coffre de Smotts",
[3933] = "Deprecated Moon Glaive",
[3934] = "Deprecated Warden Blade",
[3935] = "Sabre d'abordage de Smotts",
[3936] = "Ceinture en crochet",
[3937] = "Bottes en crochet",
[3938] = "Brassards en crochet",
[3939] = "Cape en crochet",
[3940] = "Gants en crochet


2/f4.zip", "/a1/b1/link.f4.zip"),
			fstest.CreateDir("/a1/b2", 0o755),
			fstest.CreateFile("/a1/b2/f3.txt", []byte("4"), 0o644),
			fstest.CreateFile("/a1/b2/f4.zip", []byte("5"), 0o644),
			fstest.Symlink("/a1/f1.txt", "/a1/b2/link.f1.rar"),

			fstest.CreateDir("/a2", 0o755),
			fstest.CreateFile("/a2/f1.zip", []byte("6"), 0o644),
			fstest.Symlink("/a1/f1.txt", "/a2/link.f1.txt"),
			fstest.CreateDir("/a2/b1", 0o755),
			fstest.CreateFile("/a2/b1/f1.txt", []byte("7"), 0o644),
			fstest.CreateFile("/a2/b1/f2.txt", []byte("8"), 0o644),
			fstest.CreateDir("/a2/b2", 0o700),
			fstest.CreateFile("/a2/b2/f3.rar", []byte("9"), 0o644),
			fstest.CreateFile("/a2/b2/f4.zip", []byte("10"), 0o644),
			fstest.Symlink("/a2/b1/f1.txt", "/a2/b2/link.f1.rar"),
		))
		require.NoError(t, err)
		return nil
	})
	eg.Go(func() error {
		<-startCh

		inDir := c1.Host().Directory(root, dagger.HostDirectoryOpts{
			Include: []string{"**.txt"},
		})

		outDir := t.TempDir()
		_, err := inDir.Export(ctx, outDir)
		require.NoError(t, err)

		err = fstest.CheckDirectoryEqualWithApplier(outDir, fstest.Apply(
			fstest.CreateDir("/a1", 0o755),
			fstest.CreateFile("/a1/f1.txt", []byte("1"), 0o600),
			fstest.CreateDir("/a1/b2", 0o755),
			fstest.CreateFile("/a1/b2/f3.txt", []byte("4"), 0o644),

			fstest.CreateDir("/a2", 0o755),
			fstest.Symlink("/a1/f1.txt", "/a2/link.f1.txt"),
			fstest.CreateDir("/a2/b1", 0o755),
			fstest.CreateFile("/a2/b1/f1.txt", []byte("7"), 0o644),
			fstest.CreateFile("/a2/b1/f2.txt", []byte("8"), 0o644),
		))
		require.NoError(t, err)
		return nil
	})
	eg.Go(func() error {
		<-startCh

		inDir := c1.Host().Directory(filepath.Join(root, "a1/b1"))

		outDir := t.TempDir()
		_, err := inDir.Export(ctx, outDir)
		require.NoError(t, err)

		err = fstest.CheckDirectoryEqualWithApplier(outDir, fstest.Apply(
			fstest.CreateFile("f1.zip", []byte("2"), 0o644),
			fstest.CreateFile("f2.rar", []byte("3"), 0o644),
			fstest.Symlink("/a1/b2/f4.zip", "link.f4.zip"),
		))
		require.NoError(t, err)
		return nil
	})
	eg.Go(func() error {
		<-startCh

		inDir := c1.Host().Directory(filepath.Join(root, "a2"))

		outDir := t.TempDir()
		_, err := inDir.Export(ctx, outDir)


ylineOptions()).addAll(tempList)
                            .width(mWidth).color(Color.parseColor("#990033")));
				} else {
					addPolyLine((new PolylineOptions()).addAll(tempList)
                            .width(mWidth).color(Color.parseColor("#537edc")));
				}
                tempList.clear();
                tempList.add(startLatLng);
                segmentTotalDistance = 0;
            }
           if (i == mLatLngsOfPath.size() - 1) {
        	   addPolyLine(new PolylineOptions().add(endLatLng, endPoint)
        			   .setDottedLine(true));
		}
        }
    }

    public LatLng convertToLatLng(LatLonPoint point) {
        return new LatLng(point.getLatitude(),point.getLongitude());
  }

    /**
     * @param driveStep
     * @param latLng
     */
    private void addLimitMarker(TruckStep step, LatLng latLng) {

//        addStationMarker(new MarkerOptions()
//                .position(latLng)
//                .title("\u65B9\u5411:" + driveStep.getAction()
//                        + "\n\u9053\u8DEF:" + driveStep.getRoad())
//                .snippet(driveStep.getInstruction()).visible(nodeIconVisible)
//                .anchor(0.5f, 0.5f).icon(getDriveBitmapDescriptor()));
    }

    @Override
    protected LatLngBounds getLatLngBounds() {
        LatLngBounds.Builder b = LatLngBounds.builder();
        b.include(new LatLng(startPoint.latitude, startPoint.longitude));
        b.include(new LatLng(endPoint.latitude, endPoint.longitude));
        if (this.throughPointList != null && this.throughPointList.size() > 0) {
            for (int i = 0; i < this.throughPointList.size(); i++) {
                b.include(new LatLng(
                        this.throughPointList.get(i).getLatitude(),
                        this.throughPointList.get(i).getLongitude()));
            }
        }
        return b.build();
    }

    public void setThroughPointIconVisibility(boolean visible) {
        try {
            throughPointMarkerVisible = visible;
            if (this.throughPointMarkerList != null
                    && this.throughPointMarkerList.size() > 0) {
                for (int i = 0; i < this.throughPointMarkerList.size(); i++) {
                    this.throughPointMarkerList.get(i).setVisible(visible);
                }
            }
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

    private void addThroughPointMarker() {
        if (this.throughPointList != null && this.throughPointList.size() > 0) {
            LatLonPoint latLonPoint = null;
            for (int i = 0; i < this.throughPointList.size(); i++) {
                latLonPoint = this.throughPointList.get(i);
                if (latLonPoint != null) {
                    throughPointMarkerList.add(mAMap
                            .addMarker((new MarkerOptions())
                                    .position(
                                            new LatLng(latLonPoint
                                                    .getLatitude(), latLonPoint
                                                    .getLongitude()))
                                    .visible(throughPointMarkerVisible)
                                    .icon(getThroughPointBitDes())
                                    .title("\u9014\u7ECF\u70B9")));
                }
            }
        }
    }

    private BitmapDescriptor getThroughPointBitDes() {
    	return BitmapDescriptorFactory.from


import shutil
import subprocess

cargo = shutil.which('cargo')
if cargo is None:
    print('cargo not found. Please install Rust from https://rustup.rs/')
    exit(1)

go = shutil.which('go')
if go is None:
    print('go not found. Please install it from https://golang.org/')
    exit(1)

tinygo = shutil.which('tinygo')
if tinygo is None:
    print('tinygo not found. Please install it from https://tinygo.org/')
    exit(1)

wasmtools = shutil.which('wasm-tools')
if wasmtools is None:
    print('wasm-tools not found. Installing..."')
    subprocess.run('cargo install wasm-tools --locked', shell=True)

targets = subprocess.run("rustup target list --installed", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True).stdout
if "wasm32-unknown-unknown" not in targets:
    print('Rust wasm32-unknown-unknown target not found. Installing..."')
    subprocess.run('rustup target add wasm32-unknown-unknown', shell=True)

nextest_output = subprocess.run("cargo nextest --version", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True).stdout
if "error: no such command" in nextest_output:
    print('cargo nextest not found. Installing..."')
    subprocess.run('cargo install cargo-nextest --locked', shell=True)

watch_output = subprocess.run("cargo watch --version", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True).stdout
if "error: no such command" in watch_output:
    print('cargo watch not found. Installing..."')
    subprocess.run('cargo install cargo-watch', shell=True)

print("All dependencies are installed!")


o.Ptr("Default IP Filter Policy should be Deny"),
		// 									RecommendationType: to.Ptr(armsecurity.RecommendationTypeIoTIpfilterDenyAll),
		// 									Status: to.Ptr(armsecurity.RecommendationConfigStatusEnabled),
		// 								},
		// 								{
		// 									Name: to.Ptr("IP Filter rule includes large IP range"),
		// 									RecommendationType: to.Ptr(armsecurity.RecommendationTypeIoTIpfilterPermissiveRule),
		// 									Status: to.Ptr(armsecurity.RecommendationConfigStatusEnabled),
		// 								},
		// 								{
		// 									Name: to.Ptr("Open Ports On Device"),
		// 									RecommendationType: to.Ptr(armsecurity.RecommendationTypeIoTOpenPorts),
		// 									Status: to.Ptr(armsecurity.RecommendationConfigStatusDisabled),
		// 								},
		// 								{
		// 									Name: to.Ptr("Permissive firewall policy in one of the chains was found"),
		// 									RecommendationType: to.Ptr(armsecurity.RecommendationTypeIoTPermissiveFirewallPolicy),
		// 									Status: to.Ptr(armsecurity.RecommendationConfigStatusEnabled),
		// 								},
		// 								{
		// 									Name: to.Ptr("Permissive firewall rule in the input chain was found"),
		// 									RecommendationType: to.Ptr(armsecurity.RecommendationTypeIoTPermissiveInputFirewallRules),
		// 									Status: to.Ptr(armsecurity.RecommendationConfigStatusEnabled),
		// 								},
		// 								{
		// 									Name: to.Ptr("Permissive firewall rule in the output chain was found"),
		// 									RecommendationType: to.Ptr(armsecurity.RecommendationTypeIoTPermissiveOutputFirewallRules),
		// 									Status: to.Ptr(armsecurity.RecommendationConfigStatusEnabled),
		// 								},
		// 								{
		// 									Name: to.Ptr("High level permissions configured in Edge model twin for Edge module"),
		// 									RecommendationType: to.Ptr(armsecurity.RecommendationTypeIoTPrivilegedDockerOptions),
		// 									Status: to.Ptr(armsecurity.RecommendationConfigStatusEnabled),
		// 								},
		// 								{
		// 									Name: to.Ptr("Same Authentication Credentials used by multiple devices"),
		// 									RecommendationType: to.Ptr(armsecurity.RecommendationTypeIoTSharedCredentials),
		// 									Status: to.Ptr(armsecurity.RecommendationConfigStatusDisabled),
		// 								},
		// 								{
		// 									Name: to.Ptr("TLS cipher suite upgrade"),
		// 									RecommendationType: to.Ptr(armsecurity.RecommendationTypeIoTVulnerableTLSCipherSuite),
		// 									Status: to.Ptr(armsecurity.RecommendationConfigStatusEnabled),
		// 							}},
		// 							Status: to.Ptr(armsecurity.SecuritySolutionStatusEnabled),
		// 							UnmaskedIPLoggingStatus: to.Ptr(armsecurity.UnmaskedIPLoggingStatusEnabled),
		// 							UserDefinedResources: &armsecurity.UserDefinedResourcesProperties{
		// 								Query: to.Ptr("where type != \"microsoft.devices/iothubs\" | where name contains \"iot\""),
		// 								QuerySubscriptions: []*string{
		// 									to.Ptr("075423e9-7d33-4166-8bdf-3920b04e3735")},
		// 								},
		// 								Workspace: to.Ptr("/sub


)           , FL.make("chocolatemilk"            ,  250) , NF, ST.make(MD.HaC, "chocolatemilkshakeItem", 1));
		RM.Mixer    .addRecipe1(T, 16,   64, ST.make(Blocks.snow, 1, W)     , FL.make("chocolatemilk"            , 1000) , NF, ST.make(MD.HaC, "chocolatemilkshakeItem", 4));
		RM.Mixer    .addRecipe1(T, 16,   64, OM.dust(MT.Snow)               , FL.make("chocolatemilk"            , 1000) , NF, ST.make(MD.HaC, "chocolatemilkshakeItem", 4));
		RM.Mixer    .addRecipe1(T, 16,   16, ST.make(Items.snowball, 1, W)  , FL.make("potion.darkchocolatemilk" ,  250) , NF, ST.make(MD.HaC, "chocolatemilkshakeItem", 1));
		RM.Mixer    .addRecipe1(T, 16,   16, OM.dust(MT.Snow, U4)           , FL.make("potion.darkchocolatemilk" ,  250) , NF, ST.make(MD.HaC, "chocolatemilkshakeItem", 1));
		RM.Mixer    .addRecipe1(T, 16,   64, ST.make(Blocks.snow, 1, W)     , FL.make("potion.darkchocolatemilk" , 1000) , NF, ST.make(MD.HaC, "chocolatemilkshakeItem", 4));
		RM.Mixer    .addRecipe1(T, 16,   64, OM.dust(MT.Snow)               , FL.make("potion.darkchocolatemilk" , 1000) , NF, ST.make(MD.HaC, "chocolatemilkshakeItem", 4));
		RM.Mixer    .addRecipe0(T, 16,   16, FL.array(FL.Milk   .make( 250), FL.Smoothie_Strawberry.make(200)), ZL_FS, ST.make(MD.HaC, "strawberrymilkshakeItem", 1));
		RM.Mixer    .addRecipe0(T, 16,   16, FL.array(FL.MilkGrC.make( 250), FL.Smoothie_Strawberry.make(200)), ZL_FS, ST.make(MD.HaC, "strawberrymilkshakeItem", 1));
		RM.Mixer    .addRecipe0(T, 16,   16, FL.array(FL.MilkSoy.make( 250), FL.Smoothie_Strawberry.make(200)), ZL_FS, ST.make(MD.HaC, "strawberrymilkshakeItem", 1));
		RM.Mixer    .addRecipe0(T, 16,   16, FL.array(FL.Milk   .make( 250), FL.Smoothie_Banana.make(200)), ZL_FS, ST.make(MD.HaC, "bananamilkshakeItem", 1));
		RM.Mixer    .addRecipe0(T, 16,   16, FL.array(FL.MilkGrC.make( 250), FL.Smoothie_Banana.make(200)), ZL_FS, ST.make(MD.HaC, "bananamilkshakeItem", 1));
		RM.Mixer    .addRecipe0(T, 16,   16, FL.array(FL.MilkSoy.make( 250), FL.Smoothie_Banana.make(200)), ZL_FS, ST.make(MD.HaC, "bananamilkshakeItem", 1));
		RM.Mixer    .addRecipe0(T, 16,   16, FL.array(FL.Milk   .make( 250), FL.Smoothie_Gooseberry.make(200)), ZL


IE]], align 4
// CHECK-NEXT:    [[TMP2517:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2516]] acquire, align 4
// CHECK-NEXT:    [[TMP2518:%.*]] = icmp ult i32 [[TMP2517]], [[TMP2516]]
// CHECK-NEXT:    [[TMP2519:%.*]] = select i1 [[TMP2518]], i32 [[TMP2516]], i32 [[TMP2517]]
// CHECK-NEXT:    store i32 [[TMP2519]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2520:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2521:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2520]] acquire, align 4
// CHECK-NEXT:    [[TMP2522:%.*]] = icmp ult i32 [[TMP2521]], [[TMP2520]]
// CHECK-NEXT:    [[TMP2523:%.*]] = select i1 [[TMP2522]], i32 [[TMP2520]], i32 [[TMP2521]]
// CHECK-NEXT:    store i32 [[TMP2523]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2524:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2525:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2524]] acquire, align 4
// CHECK-NEXT:    [[TMP2526:%.*]] = icmp ugt i32 [[TMP2525]], [[TMP2524]]
// CHECK-NEXT:    [[TMP2527:%.*]] = select i1 [[TMP2526]], i32 [[TMP2524]], i32 [[TMP2525]]
// CHECK-NEXT:    store i32 [[TMP2527]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2528:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2529:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2530:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2528]], i32 [[TMP2529]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2531:%.*]] = extractvalue { i32, i1 } [[TMP2530]], 0
// CHECK-NEXT:    [[TMP2532:%.*]] = extractvalue { i32, i1 } [[TMP2530]], 1
// CHECK-NEXT:    [[TMP2533:%.*]] = select i1 [[TMP2532]], i32 [[TMP2528]], i32 [[TMP2531]]
// CHECK-NEXT:    store i32 [[TMP2533]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2534:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2535:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2536:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2534]], i32 [[TMP2535]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2537:%.*]] = extractvalue { i32, i1 } [[TMP2536]], 0
// CHECK-NEXT:    [[TMP2538:%.*]] = extractvalue { i32, i1 } [[TMP2536]], 1
// CHECK-NEXT:    [[TMP2539:%.*]] = select i1 [[TMP2538]], i32 [[TMP2534]], i32 [[TMP2537]]
// CHECK-NEXT:    store i32 [[TMP2539]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2540:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2541:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2542:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2540]], i32


ramda")
let Url = require("url")
let Route = require("route-parser")

let {withSuffix} = require("../../helpers")

// TODO define document title here?!
let routes = [
  [new Route("/"), require("./pages/home")],
  [new Route("/about"), require("./pages/about")],
  [new Route("/complex"), require("./pages/complex")],
  [new Route("/complex2"), require("./pages/complex2")],
  [new Route("/users"), require("./pages/user.index")],
  [new Route("/users/:id"), require("./pages/user.detail")],
  [new Route("/*path"), require("./pages/not-found")],
]

// doroute :: [[Route, Component]] -> String -> [String, Params, Component]
let doroute = curry((routes, url) => {
  let match = find(([r, _]) => r.match(url), routes)
  if (match) {
    return [match[0].spec, match[0].match(url), match[1]]
  }
  else {
    throw Error("can't route " + url)
  }
})

// unroute :: [[Route, Component]] -> String -> Params -> String
let unroute = curry((routes, route, params) => {
  let match = find(([r, _]) => r.spec == route, routes)
  if (match) {
    return match[0].reverse(params)
  } else {
    throw Error("unknown route " + route)
  }
})

// isActiveUrl :: String -> String -> Boolean
let isActiveUrl = curry((baseUrl, currentUrl, url) => {
  baseUrl = withSuffix("/", Url.parse(baseUrl).pathname)
  currentUrl = withSuffix("/", Url.parse(currentUrl).pathname)
  url = withSuffix("/", Url.parse(url).pathname)
  if (url == baseUrl) {
    return url == currentUrl // link to "home" is active only on "home"
  } else {
    return currentUrl.startsWith(url) // link to "page" is active on "page" and "page" subpages TODO handle trailing slashes, etc.
  }
})

// isActiveRoute :: String -> String -> Boolean
let isActiveRoute = curry((currentRoute, route) => {
  return route == currentRoute
})

exports.routes = routes
exports.isActiveUrl = isActiveUrl("/")
exports.isActiveRoute = isActiveRoute

// Simplest solution of cyclic dependency: routes <-> pages
window.doroute = doroute(routes) // prefixed with "do" to avoid noun-vs-verb confusion
window.unroute = unroute(routes)
let {curry, find} = require("ramda")
let Url = require("url")
let Route = require("route-parser")

let {withSuffix} = require("../../helpers")

// TODO define document title here?!
let routes = [
  [new Route("/"), require("./pages/home")],
  [new Route("/users"), require("./pages/user.index")],
  [new Route("/users/create"), require("./pages/user.create")],
  [new Route("/users/:id"), require("./pages/user.detail")],
  [new Route("/users/:id/edit"), require("./pages/user.edit")],
  [new Route("/*path"), require("./pages/not-found")],
]

// doroute :: [[Route, Component]] -> String -> [String, Params, Component]
let doroute = curry((routes, url) => {
  let match = find(([r, _]) => r.match(url), routes)
  if (match) {
    return [match[0].spec, match[0].match(url), match[1]]
  }
  else {
    throw Error("can't route " + url)
  }
})

// unroute :: [[Route, Component]] -> String -> Params -> String
let unroute = curry((routes, route, params) => {
  let match = find(([r, _]) => r.spec == route, routes)
  if (match) {


/* Copyright (c) 2012, 2015-2016, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program 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 General Public License for more details.
 */

#ifndef __SDE_ROTATOR_IO_UTIL_H__
#define __SDE_ROTATOR_IO_UTIL_H__

#include <linux/gpio.h>
#include <linux/platform_device.h>
#include <linux/regulator/consumer.h>
#include <linux/i2c.h>
#include <linux/types.h>

#ifdef DEBUG
#define DEV_DBG(fmt, args...)   pr_err("<SDEROT_ERR> " fmt, ##args)
#else
#define DEV_DBG(fmt, args...)   pr_debug("<SDEROT_DBG> " fmt, ##args)
#endif
#define DEV_INFO(fmt, args...)  pr_info("<SDEROT_INFO> " fmt, ##args)
#define DEV_WARN(fmt, args...)  pr_warn("<SDEROT_WARN> " fmt, ##args)
#define DEV_ERR(fmt, args...)   pr_err("<SDEROT_ERR> " fmt, ##args)

struct sde_io_data {
	u32 len;
	void __iomem *base;
};

void sde_reg_w(struct sde_io_data *io, u32 offset, u32 value, u32 debug);
u32 sde_reg_r(struct sde_io_data *io, u32 offset, u32 debug);
void sde_reg_dump(void __iomem *base, u32 len, const char *prefix, u32 debug);

#define SDE_REG_W_ND(io, offset, val)  sde_reg_w(io, offset, val, false)
#define SDE_REG_W(io, offset, val)     sde_reg_w(io, offset, val, true)
#define SDE_REG_R_ND(io, offset)       sde_reg_r(io, offset, false)
#define SDE_REG_R(io, offset)          sde_reg_r(io, offset, true)

enum sde_vreg_type {
	SDE_REG_LDO,
	SDE_REG_VS,
};

struct sde_vreg {
	struct regulator *vreg; /* vreg handle */
	char vreg_name[32];
	int min_voltage;
	int max_voltage;
	int enable_load;
	int disable_load;
	int pre_on_sleep;
	int post_on_sleep;
	int pre_off_sleep;
	int post_off_sleep;
};

struct sde_gpio {
	unsigned int gpio;
	unsigned int value;
	char gpio_name[32];
};

enum sde_clk_type {
	SDE_CLK_AHB, /* no set rate. rate controlled through rpm */
	SDE_CLK_PCLK,
	SDE_CLK_OTHER,
};

struct sde_clk {
	struct clk *clk; /* clk handle */
	char clk_name[32];
	enum sde_clk_type type;
	unsigned long rate;
};

struct sde_module_power {
	unsigned int num_vreg;
	struct sde_vreg *vreg_config;
	unsigned int num_gpio;
	struct sde_gpio *gpio_config;
	unsigned int num_clk;
	struct sde_clk *clk_config;
};

int sde_rot_ioremap_byname(struct platform_device *pdev,
	struct sde_io_data *io_data, const char *name);
void sde_rot_iounmap(struct sde_io_data *io_data);

int sde_rot_config_vreg(struct device *dev, struct sde_vreg *in_vreg,
	int num_vreg, int config);
int sde_rot_enable_vreg(struct sde_vreg *in_vreg, int num_vreg,	int enable);

int sde_rot_get_clk(struct device *dev, struct sde_clk *clk_arry, int num_clk);
void sde_rot_put_clk(struct sde_clk *clk_arry, int num_clk);
int sde_rot_clk_set_rate(struct sde_clk *clk_arry, int num_clk);
int sde_rot_enable_clk(struct sde_clk *clk_arry, int num_clk, int enable);

#endif /* __SDE_ROTATOR_IO_UTIL_H__ */


local width, height = self:GetSize()
	local sizemode = self:GetSizeMode()
	local depthmode = self:GetDepthMode()
	local textureflags = self:GetTextureFlags()
	local createflags = self:GetCreateFlags()
	local imageformat = self:GetImageFormat()

	local target = GetRenderTargetEx( idstr, width, height, sizemode, depthmode, textureflags, createflags, imageformat )

	print(target)
	g_cachemap[idstr] = target

	return target

end

function meta:BuildMaterialParams(bNoCull, bModel, bVertexColor, bVertexAlpha)

	local params = {}
	params["$nocull"] = bNoCull and 1 or 0
	params["$model"] = bModel and 1 or 0
	params["$vertexcolor"] = bVertexColor and 1 or 0
	params["$vertexalpha"] = bVertexAlpha and 1 or 0
	params["$alphatest"] = self.alpha_bits == 1 and 1 or 0
	params["$translucent"] = self.alpha_bits == 8 and 1 or 0

	if params["$translucent"] == 1 then
		params["$alphatest"] = 0
	else
		params["$alphatestreference"] = 0.5
	end

	local pflags = 0
	pflags = pflags + params["$nocull"]
	pflags = pflags + params["$model"] * 0x2
	pflags = pflags + params["$vertexcolor"] * 0x4
	pflags = pflags + params["$vertexalpha"] * 0x8
	pflags = pflags + params["$alphatest"] * 0x10
	pflags = pflags + params["$translucent"] * 0x20

	return params, pflags

end

function meta:GetUnlitMaterial(...)

	local params, pflags = self:BuildMaterialParams(...)

	local idstr = "m_unlit_" .. self:GetIDString() .. "_" .. pflags
	local cached = g_cachemap[idstr]
	if cached ~= nil then return cached end

	params["$basetexture"] = self:GetIDString()

	local material = CreateMaterial( idstr, "UnlitGeneric", params )
	--print(material)

	g_cachemap[idstr] = material
	return material

end

function meta:RenderViewOrtho( origin, angles, scale, bViewModel )

	scale = scale or 1
	render.PushRenderTarget(self:GetTarget())

		local b, e = pcall( function()

		render.RenderView( {
			origin = origin,
			angles = angles,
			drawviewmodel = bViewModel or false,
			x = 0,
			y = 0,
			w = self.width,
			h = self.height,
			ortholeft = -self.width * scale,
			orthoright = self.width * scale,
			orthotop = -self.height * scale,
			orthobottom = self.height * scale,
			ortho = true,
		} )

		LocalPlayer():DrawModel()

		end)

	render.PopRenderTarget()

	if not b then error( tostring( e ) ) end

end

function meta:Render( fCallback, ... )

	if not fCallback then return end

	render.PushRenderTarget(self:GetTarget())

		local b, e = pcall(fCallback, ...)

	render.PopRenderTarget()

	if not b th


  ['timeconv_5fdays_5fin_5fjul_2940',['TIMECONV_DAYS_IN_JUL',['../time__conversion_8c.html#a76b9aa10c187065c2ecf0142870d46e7',1,'time_conversion.c']]],
  ['timeconv_5fdays_5fin_5fjun_2941',['TIMECONV_DAYS_IN_JUN',['../time__conversion_8c.html#a700fd27232cbf7dca733c5f565aa6260',1,'time_conversion.c']]],
  ['timeconv_5fdays_5fin_5fmar_2942',['TIMECONV_DAYS_IN_MAR',['../time__conversion_8c.html#a9f53e557ff184b9633ede836bde9db42',1,'time_conversion.c']]],
  ['timeconv_5fdays_5fin_5fmay_2943',['TIMECONV_DAYS_IN_MAY',['../time__conversion_8c.html#aa9962d8f72f01bed709078e1970e7ca0',1,'time_conversion.c']]],
  ['timeconv_5fdays_5fin_5fnov_2944',['TIMECONV_DAYS_IN_NOV',['../time__conversion_8c.html#aaf8fa3051f33508df4d5996b43c1b90f',1,'time_conversion.c']]],
  ['timeconv_5fdays_5fin_5foct_2945',['TIMECONV_DAYS_IN_OCT',['../time__conversion_8c.html#a2974dbe64f5f80d1ad9686bf0e499eaf',1,'time_conversion.c']]],
  ['timeconv_5fdays_5fin_5fsep_2946',['TIMECONV_DAYS_IN_SEP',['../time__conversion_8c.html#ac634e75c932c2214a0b3869ece6c0268',1,'time_conversion.c']]],
  ['timeconv_5fdetermineutcoffset_2947',['TIMECONV_DetermineUTCOffset',['../time__conversion_8c.html#aed3ab98f9eae63c9108f6e3afee3ac9f',1,'TIMECONV_DetermineUTCOffset(double julian_date, unsigned char *utc_offset): time_conversion.c'],['../time__conversion_8h.html#aed3ab98f9eae63c9108f6e3afee3ac9f',1,'TIMECONV_DetermineUTCOffset(double julian_date, unsigned char *utc_offset): time_conversion.c']]],
  ['timeconv_5fgetdayofweekfromjuliandate_2948',['TIMECONV_GetDayOfWeekFromJulianDate',['../time__conversion_8c.html#a12ac3de4ad5c42e63274f8a2d7a0e3e1',1,'TIMECONV_GetDayOfWeekFromJulianDate(const double julian_date, unsigned char *day_of_week): time_conversion.c'],['../time__conversion_8h.html#a12ac3de4ad5c42e63274f8a2d7a0e3e1',1,'TIMECONV_GetDayOfWeekFromJulianDate(const double julian_date, unsigned char *day_of_week): time_conversion.c']]],
  ['timeconv_5fgetdayofyear_2949',['TIMECONV_GetDayOfYear',['../time__conversion_8c.html#a9396aac5d5b7f2cc0bbc51498634b337',1,'TIMECONV_GetDayOfYear(const unsigned short utc_year, const unsigned char utc_month, const unsigned char utc_day, unsigned short *dayofyear): time_conversion.c'],['../time__conversion_8h.html#a9396aac5d5b7f2cc0bbc51498634b337',1,'TIMECONV_GetDayOfYear(const unsigned short utc_year, const unsigned char utc_month, const unsigned char utc_day, unsigned short *dayofyear): ti


3px;color:gray;}
textarea{font-family:Arial; width:100%;font-size:12px;}
input {font-size:12px;}
.activated{ color:#0082c8;font-weight:bold;font-size:13px}
@import './terminal.css';
@import './themes/dark.css';
@import './themes/light.css';

@tailwind base;
@tailwind components;
@tailwind utilities;

/* App theme utilities */
[data-theme="light"] body {
  background-color: hsl(0, 0%, 100%);
  color: hsl(240, 10%, 3.9%);
}

[data-theme="dark"] body {
  background-color: hsl(240, 10%, 3.9%);
  color: hsl(0, 0%, 98%);
}

@layer base {
  :root {
    --background: 0 0% 100%;
    --foreground: 240 10% 3.9%;
    --card: 0 0% 100%;
    --card-foreground: 240 10% 3.9%;
    --popover: 0 0% 100%;
    --popover-foreground: 240 10% 3.9%;
    --primary: 240 5.9% 10%;
    --primary-foreground: 0 0% 98%;
    --secondary: 240 4.8% 95.9%;
    --secondary-foreground: 240 5.9% 10%;
    --muted: 240 4.8% 95.9%;
    --muted-foreground: 240 3.8% 46.1%;
    --accent: 240 4.8% 95.9%;
    --accent-foreground: 240 5.9% 10%;
    --destructive: 0 84.2% 60.2%;
    --destructive-foreground: 0 0% 98%;
    --border: 240 5.9% 90%;
    --input: 240 5.9% 90%;
    --ring: 240 5.9% 10%;
    --radius: 0.5rem;
  }

  .dark {
    --background: 240 10% 3.9%;
    --foreground: 0 0% 98%;
    --card: 240 10% 3.9%;
    --card-foreground: 0 0% 98%;
    --popover: 240 10% 3.9%;
    --popover-foreground: 0 0% 98%;
    --primary: 0 0% 98%;
    --primary-foreground: 240 5.9% 10%;
    --secondary: 240 3.7% 15.9%;
    --secondary-foreground: 0 0% 98%;
    --muted: 240 3.7% 15.9%;
    --muted-foreground: 240 5% 64.9%;
    --accent: 240 3.7% 15.9%;
    --accent-foreground: 0 0% 98%;
    --destructive: 0 62.8% 30.6%;
    --destructive-foreground: 0 0% 98%;
    --border: 240 3.7% 15.9%;
    --input: 240 3.7% 15.9%;
    --ring: 240 4.9% 83.9%;
  }
}

@layer base {
  * {
    @apply border-border;
  }
  body {
    @apply bg-background text-foreground;
    font-feature-settings: "rlig" 1, "calt" 1;
  }
}

/* Additional dark mode helper for Tailwind */
.dark {
  color-scheme: dark;
}

.light {
  color-scheme: light;
}

/* Tool visualization styles */
.tool-visualization {
  position: relative;
  overflow: hidden;
  transition: all 0.2s ease-in-out;
}

.tool-visualization[data-tool-status='running'] {
  animation: pulse 2s infinite;
}

@keyframes pulse {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0.8;
  }
  100% {
    opacity: 1;
  }
}

/* Expandable parameter styling */
.tool-visualization .truncate {
  cursor: pointer;
}

.tool-visualization .truncate:hover {
  opacity: 0.8;
}

/* Add animation for t


 := sys.NewFile(ctx, f.GetPath(), sys, util.Config{})

	var results []TestResult
	results = append(results, ValidateValue(f, "exists", f.Exists, sysFile.Exists, skip))
	if shouldSkip(results) {
		skip = true
	}
	if f.Mode != nil {
		results = append(results, ValidateValue(f, "mode", f.Mode, sysFile.Mode, skip))
	}
	if f.Owner != nil {
		results = append(results, ValidateValue(f, "owner", f.Owner, sysFile.Owner, skip))
	}
	if f.Uid != nil {
		results = append(results, ValidateValue(f, "uid", f.Uid, sysFile.Uid, skip))
	}
	if f.Group != nil {
		results = append(results, ValidateValue(f, "group", f.Group, sysFile.Group, skip))
	}
	if f.Gid != nil {
		results = append(results, ValidateValue(f, "gid", f.Gid, sysFile.Gid, skip))
	}
	if f.LinkedTo != nil {
		results = append(results, ValidateValue(f, "linkedto", f.LinkedTo, sysFile.LinkedTo, skip))
	}
	if f.Filetype != nil {
		results = append(results, ValidateValue(f, "filetype", f.Filetype, sysFile.Filetype, skip))
	}
	if isSet(f.Contains) {
		fmt.Fprintf(os.Stderr, "DEPRECATION WARNING: file.contains has been renamed to file.contents\n")
		results = append(results, ValidateValue(f, "contains", f.Contains, sysFile.Contents, skip))
	}
	if isSet(f.Contents) {
		results = append(results, ValidateValue(f, "contents", f.Contents, sysFile.Contents, skip))
	}
	if f.Size != nil {
		results = append(results, ValidateValue(f, "size", f.Size, sysFile.Size, skip))
	}
	if f.Md5 != nil {
		results = append(results, ValidateValue(f, "md5", f.Md5, sysFile.Md5, skip))
	}
	if f.Sha256 != nil {
		results = append(results, ValidateValue(f, "sha256", f.Sha256, sysFile.Sha256, skip))
	}
	if f.Sha512 != nil {
		results = append(results, ValidateValue(f, "sha512", f.Sha512, sysFile.Sha512, skip))
	}
	return results
}

func NewFile(sysFile system.File, config util.Config) (*File, error) {
	path := sysFile.Path()
	exists, err := sysFile.Exists()
	if err != nil {
		return nil, err
	}
	f := &File{
		id:       path,
		Exists:   exists,
		Contents: []string{},
	}
	if !contains(config.IgnoreList, "mode") {
		if mode, err := sysFile.Mode(); err == nil {
			f.Mode = mode
		}
	}
	if !contains(config.IgnoreList, "owner") {
		if owner, err := sysFile.Owner(); err == nil {
			f.Owner = owner
		}
	}
	if !contains(config.IgnoreList, "group") {
		if group, err := sysFile.Group(); err == nil {
			f.Group = group
		}
	}
	if !contains(config.IgnoreList, "linked-to") {
		if linkedTo, err := sysFile.LinkedTo(); err == nil {
			f.LinkedTo = linkedTo
		}
	}
	if !contains(config.IgnoreList, "filetype") {
		if filetype, err := sysFile.Filetype(); err == nil {
			f.Filetype = filetype
		}
	}
	return f, nil
}
package resource

import (
	"context"
	"fmt"
	"github.com/goss-org/goss/system"
	"github.com/goss-org/goss/util"
	"time"
)


�，总还是读书人，这点道理都说不明白？”

“那是书院里的山长、书生。他们是只管坐而论道的，这书院的院产另有人主持——此人可不好惹。”

“哦？你详细说说。”林佰光顿时来了兴趣，广州站和文阑书院没什么接触，自然也没去调查其背景如何。

毕德凡道：“书院如今的主持人叫做莫容新，他爹原在京城里当个小官，拜了太监当干爹。告老还乡之后便依仗太监的势力赶走院董，自己把持了书院。因为有太监给他撑腰，这父子两人前后把持书院事务几十年，侵吞院产无数——光这书院名下的租田、沙田、蚝塘、鱼塘就有几千亩，每年交给书院的银子才不过区区一百两。”

林佰光心想原来这里还有个大户！自己在广州几年只知道文阑书院有名有钱，没想到背后还有这么一幕故事。

他问道：“他爹给太监当干儿子——这太监多半早就死了，其他人也拿他没法子？”

毕德凡道：“他们父子两代都有功名，他爹是举人，他自己捐了个监生。也算衣冠中人，莫家很会敷衍，不但结交缙绅，对城里的读书人也很会笼络，小恩小惠不断。最要紧的是，莫家还有势力可以依仗。”

“什么势力？”

“就是关帝庙人马。”

林佰光点点头，难怪这毕德凡说不好办了。不过文阑书院居然会和丐帮有勾结还真是出乎意料。

“莫容新让自己的小儿子娶了关帝庙头目的女儿，结成了儿女亲家。所以他在书院的势力，没人敢动。”

听到这里林佰光不敢相信自己的耳朵了，堂堂的书院掌事居然和丐头结成亲家，这也太匪夷所思了吧。不过转念一想也很正常，本时空里一个大城市的丐头的势力和财富远不是普通大户可比的。
---
aid: "0007"
zid: "0113"
title: 黑材料
author: 吹牛者
---

旁边有个商人愤愤不平的插话道：“我们贩运粮食的还好些。毕竟这是不分时节\*\*\*\*所


# Copyright (c) OpenMMLab. All rights reserved.
import platform

import pytest
import torch

from mmpretrain.models import SparK
from mmpretrain.structures import DataSample

@pytest.mark.skipif(platform.system() == 'Windows', reason='Windows mem limit')
def test_spark():
    data_preprocessor = {
        'mean': (123.675, 116.28, 103.53),
        'std': (58.395, 57.12, 57.375),
        'to_rgb': True
    }

    backbone = dict(
        type='SparseResNet',
        depth=50,
        out_indices=(0, 1, 2, 3),
        drop_path_rate=0.05,
        norm_cfg=dict(type='BN'))
    neck = dict(
        type='SparKLightDecoder',
        feature_dim=512,
        upsample_ratio=32,  # equal to downsample_raito
        mid_channels=0,
        norm_cfg=dict(type='BN'),
        last_act=False)
    head = dict(
        type='SparKPretrainHead',
        loss=dict(type='PixelReconstructionLoss', criterion='L2'))

    alg = SparK(
        backbone=backbone,
        neck=neck,
        head=head,
        data_preprocessor=data_preprocessor,
        enc_dec_norm_cfg=dict(type='BN'),
    )

    fake_data = {
        'inputs': torch.randn((2, 3, 224, 224)),
        'data_sample': [DataSample() for _ in range(2)]
    }

    fake_inputs = alg.data_preprocessor(fake_data)
    fake_loss = alg(**fake_inputs, mode='loss')
    assert isinstance(fake_loss['loss'].item(), float)


# 학습 곡선은 인공지능 학습이 매끄럽게 되고 있는지 학습 데이터에 과적합되지 않았는지를
# 확인하기에 좋은 방법입니다. 이른 판단하기 위해 있는 학습 곡선을 그려주는 함수들이 있는 파일입니다.
import matplotlib.pyplot as plt

# 한번 학습에 대해서 학습 곡선을 출력해보는 함수입니다.
def plot_learning_curve(loss_train, loss_test):
    # x 축 설정
    x_axis = range(len(loss_train))
    plt.ylim(0.5, 5)    # 그래프 그리기

    plt.plot(x_axis, loss_train, color='blue', label='train-data')
    plt.plot(x_axis, loss_test, color='orange', label='test-data')
    plt.xlabel('epoch')  # X 축 레이블 설정
    plt.ylabel('Loss')  # Y 축 레이블 설정
    plt.title('learning-curve')  # 그래프 제목 설정
    plt.legend()  # 범례 표시
    plt.show()

# 여러 학습 곡선을 출력해봅니다.
# 보통 모든 조건을 동일시하고 특정 파라메터 한개의 변화가 모델에 어떤 영향을 주는지 판단하기 위해 필요합니다.
def plot_many_learning_curves(loss_list, lable_list):
    x_axis = range(len(loss_list[0]))
    plt.ylim(0.5, 5)  # 그래프 그리기

    # 10가지 색상 하드코딩
    colors = ['blue', 'green', 'red', 'cyan', 'magenta', 'yellow', 'black', 'orange', 'purple', 'brown']

    for i in range(len(loss_list)):
        plt.plot(x_axis, loss_list[i], color=colors[i % len(colors)], label=f'{lable_list[i]}')

    plt.xlabel('epoch')  # X 축 레이블 설정
    plt.ylabel('Loss')  # Y 축 레이블 설정
    plt.title('learning-curve')  # 그래프 제목 설정
    plt.legend()  # 범례 표시
    plt.show()


ize: 14px; }

.e-bigger .e-schedule .e-month-view .e-m-date,
.e-bigger .e-schedule .e-month-agenda-view .e-m-date,
.e-bigger.e-schedule .e-month-view .e-m-date,
.e-bigger.e-schedule .e-month-agenda-view .e-m-date {
  font-size: 20px; }

.e-bigger .e-schedule .e-month-view .e-resource-name,
.e-bigger .e-schedule .e-month-view .e-m-day,
.e-bigger .e-schedule .e-month-agenda-view .e-resource-name,
.e-bigger .e-schedule .e-month-agenda-view .e-m-day,
.e-bigger.e-schedule .e-month-view .e-resource-name,
.e-bigger.e-schedule .e-month-view .e-m-day,
.e-bigger.e-schedule .e-month-agenda-view .e-resource-name,
.e-bigger.e-schedule .e-month-agenda-view .e-m-day {
  font-size: 14px; }

/*! schedule event tooltip */
.e-schedule-event-tooltip .e-subject {
  font-size: 12px; }

.e-bigger .e-schedule-event-tooltip .e-subject,
.e-schedule-event-tooltip.e-bigger .e-subject {
  font-size: 14px;
  font-weight: 500; }

.e-dialog.e-quick-dialog {
  user-select: none;
  width: 320px; }
  .e-dialog.e-quick-dialog .e-disable {
    display: none; }
  .e-dialog.e-quick-dialog .e-quick-dialog-cancel {
    box-shadow: none; }

.e-bigger .e-dialog.e-quick-dialog {
  min-width: 370px; }

/*! schedule event window */
.e-schedule-dialog .e-disable {
  display: none; }

.e-schedule-dialog .e-icon-disable {
  opacity: .5; }

.e-schedule-dialog .e-dlg-header-content {
  padding-bottom: 8px; }

.e-schedule-dialog .e-dlg-content {
  padding-bottom: 12px;
  position: relative; }

.e-schedule-dialog .e-event-delete {
  float: left; }

.e-schedule-dialog .e-subject-container,
.e-schedule-dialog .e-start-container,
.e-schedule-dialog .e-start-time-zone-container,
.e-schedule-dialog .e-description-label {
  padding-right: 8px; }

.e-schedule-dialog .e-location-container,
.e-schedule-dialog .e-end-container,
.e-schedule-dialog .e-end-time-zone-container {
  padding-left: 8px; }

.e-schedule-dialog .e-all-day-container {
  padding-right: 16px; }

.e-schedule-dialog .e-time-zone-row {
  display: flex;
  height: 0;
  margin-bottom: 0;
  overflow: hidden;
  padding-bottom: 0;
  transition: .3s ease-in-out;
  width: 100%; }
  .e-schedule-dialog .e-time-zone-row .e-start-time-zone-container,
  .e-schedule-dialog .e-time-zone-row .e-end-time-zone-container {
    display: none;
    transform: translateY(-100%); }
  .e-schedule-dialog .e-time-zone-row.e-enable {
    height: 50px;
    margin-bottom:


r1, [r5]
	adds r2, r0, #0
	muls r2, r1, r2
	lsls r2, r2, #8
	asrs r2, r2, #0x10
	ldrh r0, [r7]
	lsls r0, r0, #0x10
	asrs r0, r0, #0x10
	movs r7, #0
	ldrsh r1, [r3, r7]
	muls r0, r1, r0
	lsls r0, r0, #8
	asrs r0, r0, #0x10
	muls r0, r2, r0
	asrs r0, r0, #8
	mov r1, ip
	strh r0, [r1]
	add r5, sp, #0x1c
	ldr r2, _08155F90 @ =gUnk_03002544
	ldrh r0, [r2]
	lsls r0, r0, #1
	ldr r7, _08155F98 @ =gSineTable
	adds r0, r0, r7
	ldrh r0, [r0]
	lsls r0, r0, #0x10
	asrs r0, r0, #0x16
	adds r2, r0, #0
	muls r2, r4, r2
	lsls r2, r2, #8
	asrs r2, r2, #0x10
	mov r1, sl
	ldrh r0, [r1]
	lsls r0, r0, #0x10
	asrs r0, r0, #0x10
	movs r4, #0
	ldrsh r1, [r3, r4]
	muls r0, r1, r0
	lsls r0, r0, #8
	asrs r0, r0, #0x10
	muls r0, r2, r0
	asrs r0, r0, #8
	strh r0, [r5]
	mov r4, sp
	adds r4, #0x1e
	ldr r7, _08155F90 @ =gUnk_03002544
	ldrh r0, [r7]
	movs r1, #0x80
	lsls r1, r1, #1
	adds r0, r0, r1
	lsls r0, r0, #1
	ldr r2, _08155F98 @ =gSineTable
	adds r0, r0, r2
	ldrh r0, [r0]
	lsls r0, r0, #0x10
	asrs r0, r0, #0x16
	ldr r7, _08155FA0 @ =gUnk_030068B4
	ldrh r1, [r7]
	adds r2, r0, #0
	muls r2, r1, r2
	lsls r2, r2, #8
	asrs r2, r2, #0x10
	mov r1, sl
	ldrh r0, [r1]
	lsls r0, r0, #0x10
	asrs r0, r0, #0x10
	movs r7, #0
	ldrsh r1, [r3, r7]
	muls r0, r1, r0
	lsls r0, r0, #8
	asrs r0, r0, #0x10
	muls r0, r2, r0
	asrs r0, r0, #8
	strh r0, [r4]
	mov r1, r8
	ldrh r0, [r1]
	lsls r0, r0, #0x10
	asrs r0, r0, #0x10
	movs r2, #6
	ldrsh r1, [r6, r2]
	muls r1, r0, r1
	mov r3, ip
	ldrh r0, [r


有点到这K个种子点的距离，假如一个点离种子点X最近，那么这个点属于X点群。在图中，可以看到A、B属于上方的种子点，C、D、E属于中部的种子点。

第3步：对已经分好组的两组数据，分别求其中心点。对于图中二维平面上的数据，求中心点最简单暴力的算法就是对当前同一个分组中所有点的X坐标和Y坐标分别求平均值，得到的<x,y>就是中心点。

第4步：重复第2步和第3步，直到每个分组的中心点不再移动。这时候，距每个中心点最近的点数据聚类为同一组数据。

K-means算法原理简单，在知道分组个数的情况下，效果非常好，是聚类经典算法。通过聚类分析我们可以发现事物的内在规律：具有相似购买习惯的用户群体被聚类为一组，一方面可以直接针对不同分组用户进行差别营销，线下渠道的话还可以根据分组情况进行市场划分；另一方面可以进一步分析，比如同组用户的其他统计特征还有哪些，并发现一些有价值的模式。

## 小结

今天我们聊了数据挖掘的几个典型算法，PageRank算法通过挖掘链接关系，发现互联网网页的排名权重；Apriori算法通过购物篮分析，发现商品的频繁模式；K-means算法则可以进行自动数据聚类。这些算法不需要人工事先对数据进行标注，一般被称作无监督算法。上期的分类算法需要样本数据，而这些样本数据是需要人工进行预先标注的，因此分类算法一般都是有监督算法。

数据挖掘其实在大数据出现之前，甚至在计算机出现之间就已经存在了，因为挖掘数据中的规律可以帮助我们更好地认识这个世界，最终实现更好地改造这个世界。大数据技术使数据挖掘更加方便、成本更低，而几乎各种大数据产品都有对应的算法库可以方便地进行大数据挖掘。所以请保持好奇心，通过数据挖掘发现规律，进而可以创造更多的价值。

## 思考题

网页的链接关系如何用数据表示呢？PageRank算法用MapReduce或者Spark编程如何实现呢？

欢迎你点击“请朋友读”，把今天的文章分享给好友。也欢迎你写下自己的思考或疑问，与我和其他同学一起讨论。

<audio id="audio" title="22 | 从阿里内部产品看海量数据处理系统的设计（下）：架构与创新" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/f9/9c/f97451b08b0f9d3a2e8624e3c18a21


 *
 * The contents of this file are subject to the terms
 * of the Common Development and Distribution License
 * (the License). You may not use this file except in
 * compliance with the License.
 *
 * You can obtain a copy of the License at
 * https://opensso.dev.java.net/public/CDDLv1.0.html or
 * opensso/legal/CDDLv1.0.txt
 * See the License for the specific language governing
 * permission and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL
 * Header Notice in each file and include the License file
 * at opensso/legal/CDDLv1.0.txt.
 * If applicable, add the following below the CDDL Header,
 * with the fields enclosed by brackets [] replaced by
 * your own identifying information:
 * "Portions Copyrighted [year] [name of copyright owner]"
 *
 * $Id: RemoveSubSchema.java,v 1.4 2008/06/25 05:42:18 qcheng Exp $
 *
 */

package com.sun.identity.cli.schema;

import com.sun.identity.cli.CLIException;
import com.sun.identity.cli.ExitCodes;
import com.sun.identity.cli.IArgument;
import com.sun.identity.cli.IOutput;
import com.sun.identity.cli.LogWriter;
import com.sun.identity.cli.RequestContext;
import com.iplanet.sso.SSOException;
import com.sun.identity.sm.SMSException;
import com.sun.identity.sm.ServiceSchema;
import java.text.MessageFormat;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;

/**
 * Removes sub configuration.
 */
public class RemoveSubSchema extends SchemaCommand {
    static final String ARGUMENT_SCHEMA_NAMES = "subschemanames";

    /**
     * Services a Commandline Request.
     *
     * @param rc Request Context.
     * @throws CLIException if the request cannot serviced.
     */
    public void handleRequest(RequestContext rc)
        throws CLIException {
        super.handleRequest(rc);
        ldapLogin();

        String serviceName = getStringOptionValue(IArgument.SERVICE_NAME);
        String schemaType = getStringOptionValue(IArgument.SCHEMA_TYPE);
        String subSchemaName = getStringOptionValue(IArgument.SUBSCHEMA_NAME);
        List schemaNames = rc.getOption(ARGUMENT_SCHEMA_NAMES);

        IOutput outputWriter = getOutputWriter();

        if (subSchemaName == null) {
            subSchemaName = "/";
        }
        String[] params = new String[4];
        params[0] = serviceName;
        params[1] = schemaType;
        params[2] = subSchemaName;

        ServiceSchema ss = getServiceSchema();
        String schemaName = "";

        try {
            for (Iterator iter = schemaNames.iterator(); iter.hasNext(); ) {
                schemaName = (String)iter.next();
                params[3] = schemaName;
                writeLog(LogWriter.LOG_ACCESS, Level.INFO,
                    "ATTEMPT_REMOVE_SUB_SCHEMA", params);
                ss.removeSubSchema(schemaName);
                writeLog(LogWriter.LOG_ACCESS, Level.INFO,
                    "SUCCEED_REMOVE_SUB_SCHEMA", params);
                outputWriter.printlnMessage(MessageFormat.format(
                    getResourceString("remove-subschema-succeed"),
                    (Object[])params));
            }
        } catch (SSOException e) {
            String[] args = {serviceName, schemaType, subSchemaName,
                schemaName, e.getMessage()};
            debugError("RemoveSubSchema.handleRequest", e);
            writeLog(LogWriter.LOG_ERROR, Level.INFO,
                "FAILED_REMOVE_S


31=($1086|0)==0;
 if($1131){label=279;break;}else{label=260;break;}
 case 260:
 var $_sum31_i_i=((($tsize_244_i)+(28))|0);
 var $_sum108_i=((($_sum31_i_i)+($1005))|0);
 var $1133=(($tbase_245_i+$_sum108_i)|0);
 var $1134=$1133;
 var $1135=HEAP32[(($1134)>>2)];
 var $1136=((344+($1135<<2))|0);
 var $1137=HEAP32[(($1136)>>2)];
 var $1138=($1083|0)==($1137|0);
 if($1138){label=261;break;}else{label=263;break;}
 case 261:
 HEAP32[(($1136)>>2)]=$R_1_i_i;
 var $cond_i_i=($R_1_i_i|0)==0;
 if($cond_i_i){label=262;break;}else{label=269;break;}
 case 262:
 var $1140=HEAP32[(($1134)>>2)];
 var $1141=1<<$1140;
 var $1142=$1141^-1;
 var $1143=HEAP32[((44)>>2)];
 var $1144=$1143&$1142;
 HEAP32[((44)>>2)]=$1144;
 label=279;break;
 case 263:
 var $1146=$1086;
 var $1147=HEAP32[((56)>>2)];
 var $1148=($1146>>>0)<($1147>>>0);
 if($1148){label=267;break;}else{label=264;break;}
 case 264:
 var $1150=(($1086+16)|0);
 var $1151=HEAP32[(($1150)>>2)];
 var $1152=($1151|0)==($1083|0);
 if($1152){label=265;break;}else{label=266;break;}
 case 265:
 HEAP32[(($1150)>>2)]=$R_1_i_i;
 label=268;break;
 case 266:
 var $1155=(($1086+20)|0);
 HEAP32[(($1155)>>2)]=$R_1_i_i;
 label=268;break;
 case 267:
 _abort();
 throw "Reached an unreachable!";
 case 268:
 var $1158=($R_1_i_i|0)==0;
 if($1158){label=279;break;}else{label=269;break;}
 case 269:
 var $1160=$R_1_i_i;
 var $1161=HEAP32[((56)>>2)];
 var $1162=($1160>>>0)<($1161>>>0);
 if($1162){label=278;break;}else{label=270;break;}
 case 270:
 var $1164=(($R_1_i_i+24)|0);
 HEAP32[(($1164)>>2)]=$1086;
 var $_sum3233_i_i=$1005|16;
 var $_sum109_i=((($_sum3233_i_i)+($tsize_244_i))|0);
 var $1165=(($tbase_245_i+$_sum109_i)|0);
 var $1166=$1165;
 var $1167=HEAP32[(($1166)>>2)];
 var $1168=($1167|0)==0;
 if($1168){label=274;break;}else{label=271;break;}
 case 271:
 var $1170=$1167;
 var $1171=HEAP32[((56)>>2)];
 var $1172=($1170>>>0)<($1171>>>0);
 if($1172){label=273;break;}else{label=272;break;}
 case 272:
 var $1174=(($R_1_i_i+16)|0);
 HEAP32[((


  return -1;
}

export function search5(nums: number[], target: number): number {
  return binarySearch5(nums, 0, nums.length - 1, target);
}
import * as Three from "three";
import {DoubleSide, Mesh} from "three";
import {BLOCK_SIZE, colors, PIECE_SIZE} from "@/constants";
import {FaceName} from "@/cube/Face";

const initColorMap = {
    r: 'red', l: 'orange',
    u: 'yellow', d: 'white',
    f: 'blue', b: 'green'
}
const blockGeometry = new Three.BoxGeometry(BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE)
const blockMaterial = new Three.MeshStandardMaterial({
    emissive: 'black',
    side: Three.DoubleSide,
})
const pieceGeometry = new Three.PlaneGeometry(PIECE_SIZE, PIECE_SIZE)
const pieceMaterials = {}  // {red: Material(red), ...}
Object.entries(colors).map(([name, color]) =>
    pieceMaterials[name] = new Three.MeshStandardMaterial({
        emissive: color,
        roughness: 0,
        side: DoubleSide
    })
)

export class Piece extends Mesh {
    /**
     * 初始面决定了颜色
     * @param initFace
     */
    constructor(public initFace: FaceName) {
        super(pieceGeometry, pieceMaterials[initColorMap[initFace]]);
    }

    updateInitFace(initFace: FaceName) {
        this.initFace = initFace
        this.material = pieceMaterials[initColorMap[initFace]]
    }
}

export class Block extends Mesh {
    constructor() {
        super(blockGeometry, blockMaterial);
    }

    pieces = new Array<Piece>()

    addPiece(initFace: FaceName): Piece {
        const piece = new Piece(initFace)
        this.add(piece)
        this.pieces.push(piece)
        return piece
    }
}export const SET_USER_MSG = 'SET_USER_MSG';

/**
 * @description 设置用户信息
 * @param {Object} userMsg
 */
export const setUserMsg = (userMsg: StoreReduxUser.IState) => {
  return {
    type: SET_USER_MSG,
    userMsg,
  };
};import * as blessed from 'blessed'
import * as util from 'util'
// , program;

const program = blessed.program({
  log: 'log.txt',
  warnings: true
})
program.setMouse(
  {
    allMotion: true
    // utfMouse: true,
    // urxvtMouse: true
  },
  true
)
program.alternateBuffer()
program.enableMouse()

mouseDemo()
resizeFocusBlurDemo()
program.key(['q', 'escape', 'C-c'], function() {
  program.showCursor()
  program.disableMouse()
  program.normalBuffer()
  process.exit(0)
})

// program.enableGpm()
// program.hideCursor()

// program.on('response', e=>program.log('response', e, program.gpm))
// program.input.on('data', e=>program.log('LSLSLSLS', e.toString()))

// program.log('GPM', program.gpm)
// program.input.on('*', e=>program.log('LSLSLSLS', e))

// response
// winch cols rows
//

// program._currentMouse.sendFocus = true;
// program.enableMouse(program._currentMouse);
// program.write('\x1b[?1004h');

// // program.setMode(data.y, data.x);
// program.write(' ', 'blue bg');
// program.write('as', 'red fg');
// program.cup(0, 0);

function resizeFocusBlurDemo() {
  program.setMouse({ sendFocus: true }, true)
  program.on('resize', function(data) {
    se


clan has pleased him greatly.$B$BYou have earned the Eye of Command.$B$BPresent your insignia, Commander $N.$B$B<Warmaster Laggrond salutes>",
    ["O"] = "",
    ["T"] = "Око Командования",
  },
  [7168] = {
    ["D"] = "Most do not live long enough to rise above their own mediocrity. You have proven yourself to be an exemplary soldier, $C. The time has come.$B$BPresent your insignia.",
    ["O"] = "",
    ["T"] = "Награда найдет героя",
  },
  [7169] = {
    ["D"] = "The base buzzes with news of your exploits in the Field of Strife! You have struck mighty blows against our enemy - crushing their morale! For this, you have earned a rank of honor among the Stormpike.$B$BPresent your insignia.",
    ["O"] = "",
    ["T"] = "Уважение Стражи",
  },
  [7170] = {
    ["D"] = "I must know, $N. When you look directly into the eyes of the enemy, do you see fear? Do they now cower in your presence? They must realize that they are defeated!$B$BYou have earned reverence among the Guard.$B$BPresent your insignia!",
    ["O"] = "",
    ["T"] = "Заслуженное почтение",
  },
  [7171] = {
    ["D"] = "Your radiate command and power, shaman. Exalted in the eyes of Frostwolf - the enemy cowers at the mention of your name.$B$BRise, Hero of Frostwolf. Rise and be honored!$B$BPresent your insignia.",
    ["O"] = "",
    ["T"] = "Легендарные герои",
  },
  [7172] = {
    ["D"] = "It is good to see you again, $C. I had not expected you to return. Alas, you have proven yourself a brave and honorable soldier of the Frostwolf.$B$BYour time has come again, $N. You have earned a new ranking and as such, a new insignia denoting this rise in stature.$B$BPresent your insignia. ",
    ["O"] = "",
    ["T"] = "Око Командования",
  },
  [7201] = {
    ["D"] = "У меня есть работа для тех, кто не боится заглянуть в глубины, $N. $B$BКлан Черного Железа научился создавать чрезвычайно мощных големов. $B$BИсходя из отчетов, присланных нашими шпионами, дворфы используют уникальные источники энергии, чтобы придать своим гоблинам невероятную разрушительную силу. $B$BПодумать только, что мы могли бы сделать с нашими поганищами, заполучи мы сущность Стихий, которую они используют... Можешь перевернуть город вверх дном, но я дол


">CIM.

Cтрока № 1830 из 10522. Ищем для CIMN.

Cтрока № 1831 из 10522. Ищем для CINF.

Cтрока № 1832 из 10522. Ищем для CING.

Cтрока № 1833 из 10522. Ищем для CINGW.

Cтрока № 1834 из 10522. Ищем для CINT.

Cтрока № 1835 из 10522. Ищем для CIO.

Cтрока № 1836 из 10522. Ищем для CION.

Cтрока № 1837 из 10522. Ищем для CISO.

Cтрока № 1838 из 10522. Ищем для CISS.

Cтрока № 1839 из 10522. Ищем для CITE.

Cтрока № 1840 из 10522. Ищем для CITEU.

Cтрока № 1841 из 10522. Ищем для CITEW.

Cтрока № 1842 из 10522. Ищем для CIVB.

Cтрока № 1843 из 10522. Ищем для CIVI.

Результат № 19: ["Civitas Resources, Inc.","CIVI",52.08,1.515,35.65,11.67,"Energy",5122,"<img src=\"https://financialmod


2c               // movss    xmm0, dword [rdx + 44]
	LONG $0x2454970f; BYTE $0x28               // seta    byte [rsp + 40]
	LONG $0xc32e0f41                           // ucomiss    xmm0, xmm11
	LONG $0x2454970f; BYTE $0x20               // seta    byte [rsp + 32]
	LONG $0x42100ff3; BYTE $0x30               // movss    xmm0, dword [rdx + 48]
	LONG $0x52100ff3; BYTE $0x34               // movss    xmm2, dword [rdx + 52]
	LONG $0xc32e0f41                           // ucomiss    xmm0, xmm11
	LONG $0x62100ff3; BYTE $0x38               // movss    xmm4, dword [rdx + 56]
	LONG $0x6a100ff3; BYTE $0x3c               // movss    xmm5, dword [rdx + 60]
	LONG $0x2454970f; BYTE $0x78               // seta    byte [rsp + 120]
	LONG $0x100f44f3; WORD $0x4042             // movss    xmm8, dword [rdx + 64]
	LONG $0x100f44f3; WORD $0x444a             // movss    xmm9, dword [rdx + 68]
	LONG $0xd32e0f41                           // ucomiss    xmm2, xmm11
	LONG $0x100f44f3; WORD $0x4852             // movss    xmm10, dword [rdx + 72]
	LONG $0x100f44f3; WORD $0x4c62             // movss    xmm12, dword [rdx + 76]
	QUAD $0x000000902494970f                   // seta    byte [rsp + 144]
	LONG $0x100f44f3; WORD $0x506a             // movss    xmm13, dword [rdx + 80]
	LONG $0x100f44f3; WORD $0x5472             // movss    xmm14, dword [rdx + 84]
	LONG $0xe32e0f41                           // ucomiss    xmm4, xmm11
	LONG $0x62100ff3; BYTE $0x58               // movss    xmm4, dword [rdx + 88]
	LONG $0x42100ff3; BYTE $0x5c               // movss    xmm0, dword [rdx + 92]
	QUAD $0x000000802494970f                   // seta    byte [rsp + 128]
	LONG $0x4a100ff3; BYTE $0x60               // movss    xmm1, dword [rdx + 96]
	LONG $0x52100ff3; BYTE $0x64               // movss    xmm2, dword [rdx + 100]
	LONG $0xeb2e0f41                           // ucomiss    xmm5, xmm11
	LONG $0x6a100ff3; BYTE $0x68               // movss    xmm5, dword [rdx + 104]
	LONG $0x5a100ff3; BYTE $0x6c               // movss    xmm3, dword [rdx + 108]
	LONG $0xd3970f41                           // seta    r11b
	LONG $0x72100ff3; BYTE $0x70               // movss    xmm6, dword [rdx + 112]
	LONG $0x7a100ff3; BYTE $0x74               // movss    xmm7, dword [rdx + 116]
	LONG $0xc32e0f45                           // ucomiss    xmm8, xmm11
	QUAD $0x000000b02494970f                   // seta    byte [rsp + 176]
	LONG $0xcb2e0f45                           // ucomiss    xmm9, xmm11
	WORD $0x970f; BYTE $0xd1                   // seta    cl
	LONG $0xd32e0f45                           // ucomiss    xmm10, xmm11
	LONG $0xd6970f40                           // seta


 for connecting
// to an SSH remote client.
// The SSH agent is first used to attempt connection,
// followed by the given Keyfile
type Configuration struct {
	// The name to use for this connection
	Name string
	// The hostname to connect to
	Host string `json:"host"`
	// User is the username to use for login
	User string `json:"user"`
	// Which port should be used
	Port uint16 `json:"port,string"`
	// The pem encoded public key file to use for the connection.
	// If not specified uses ~/.ssh/id_rsa
	Keyfile string `json:"keyPath"`
	// The known_hosts file to use for authentication. Defaults to
	// ~/.ssh/known_hosts
	KnownHosts string `json:"knownHostsPath"`
	// Environment variables to set on the connection
	Env []string
}

// ReadConfigurations reads a set of configurations from then
// given reader, and returns the configurations to the user.
func ReadConfigurations(r io.Reader) ([]Configuration, error) {
	u, err := user.Current()
	if err != nil {
		return nil, err
	}

	cfgs := []Configuration{}
	d := json.NewDecoder(r)
	if _, err := d.Token(); err != nil {
		return nil, err
	}
	for d.More() {
		cfg := Configuration{
			Name:       "",
			Host:       "",
			User:       u.Username,
			Port:       22,
			Keyfile:    u.HomeDir + "/.ssh/id_rsa",
			KnownHosts: u.HomeDir + "/.ssh/known_hosts",
		}
		if err := d.Decode(&cfg); err != nil {
			return nil, err
		}
		cfgs = append(cfgs, cfg)
	}
	if _, err := d.Token(); err != nil {
		return nil, err
	}
	return cfgs, nil
}
// Copyright (C) 2017 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package bind

import (
	"context"

	"github.com/google/gapid/core/os/device"
	"github.com/google/gapid/core/os/shell"
	"github.com/google/gapid/gapis/perfetto"
)

type Status int

const (
	UnknownStatus Status = iota
	Offline
	Online
	Unauthorized
)

// Device represents a connection to an attached device.
type Device interface {
	// Instance returns the instance information for this device.
	Instance() *device.Instance
	// State returns the last known connected status of the device.
	Status(ctx context.Context) Status
	// CanTrace returns true if this device can be used to take a trace
	CanTrace() bool
	// SupportsPerfetto returns true if this device will work with perfetto
	SupportsPerfetto(ctx context.Context) bool
	// ConnectPerfetto connects to a Perfetto service running on this device
	// and returns an open socket connection to the service.
	ConnectPerfetto(ctx context.Context) (*perfetto.Client, error)
	// Install


%d_exe' % version
            exe_path = self.get('sqllocaldb', name)
            if not exe_path:
                raise ConfigError(
                    "[sqllocaldb] section has no entry named %s; "
                    "either remove the version or add the correct "
                    "entry" % name
                )
            if isfile(exe_path):
                return exe_path

        raise RuntimeError(
            "Could not find any instance sqllocaldb.exe installed. "
            "See [sqllocaldb] configuration section."
        )

    @property
    def sqllocaldb_exe(self):
        from .util import ProcessWrapper
        exe = ProcessWrapper(self.sqllocaldb_exe_path)
        return exe

    @property
    @memoize
    def tracer_control_device_win32_name(self):
        from pywintypes import Unicode
        name = self.get('tracer_control_driver', 'win32_device_name')
        return Unicode(name)

# vim:set ts=8 sw=4 sts=4 tw=78 et:


FONT SIZE="+2">
Class org.springframework.beans.factory.BeanIsAbstractException extends BeanCreationException implements Serializable

Class org.springframework.beans.factory.BeanIsNotAFactoryException extends BeanNotOfRequiredTypeException implements Serializable

Class org.springframework.beans.factory.BeanNotOfRequiredTypeException extends BeansException implements Serializable

Serialized Fields

beanName

String beanName

The name of the instance that was of the wrong type

requiredType

Class<T> requiredType

The required type

actualType

Class<<A HREF


an(in, &m)
		for range m {
			Fscan(in, &v)
			done[v][i] = true
		}
	}
	for _, p := range done {
		if p[0] || p[1] {
			ans++
		}
	}
	if p/2*k >= n {
		Fprint(out, ans)
		return
	}

	dp := make([][][][2]int16, k+1)
	for i := range dp {
		dp[i] = make([][][2]int16, p+1)
		for j := range dp[i] {
			dp[i][j] = make([][2]int16, n+1)
			for l := range dp[i][j] {
				dp[i][j][l] = [2]int16{-1, -1}
			}
		}
	}
	var f func(int, int, int, int) int16
	f = func(i, p, ex, who int) (miss int16) {
		if i <= 0 {
			return
		}
		t := &dp[ex][p][i][who]
		if *t >= 0 {
			return *t
		}

		miss = f(i-1, p, max(ex-1, 0), who)
		d := done[i]
		if ex == 0 && (d[0] || d[1]) || ex > 0 && !d[who] && d[who^1] {
			miss++
		}

		if p > 0 {
			if ex == 0 {
				miss = min(miss, f(i, p-1, k, 0), f(i, p-1, k, 1))
			} else {
				miss = min(miss, f(i-ex, p-1, k-ex, who^1))
			}
		}

		*t = miss
		return
	}
	Fprint(out, ans-int(f(n, p, 0, 0)))
}

//func main() { cf796E(bufio.NewReader(os.Stdin), os.Stdout) }
package main

import (
	"bufio"
	. "fmt"
	"io"
	"math/bits"
)

// https://github.com/EndlessCheng
type mat50 [5][5]int32

type seg50 []struct {
	l, r int
	mat50
}

func (seg50) merge(a, b mat50) mat50 {
	c := mat50{}
	for i := range 5 {
		for j := i; j < 5; j++ {
			c[i][j] = 1e9
		}
	}
	for i := range 5 {
		for k := i; k < 5; k++ {
			if a[i][k] == 1e9 {
				continue
			}
			for j := k; j < 5; j++ {
				c[i][j] = min(c[i][j], a[i][k]+b[k][j])
			}
		}
	}
	return c
}

func (t seg50) maintain(o int) {
	t[o].mat50 = t.merge(t[o<<1].mat50, t[o<<1|1].mat50)
}

func (t seg50) build(s string, o, l, r int) {
	t[o].l, t[o].r = l, r
	if l == r {
		m := mat50{}
		for i := range 5 {
			for j := i + 1; j < 5; j++ {
				m[i][j] = 1e9
			}
		}
		switch s[l] {
		case '2':
			m[0][0] = 1
			m[0][1] = 0
		case '0':
			m[1][1] = 1
			m[1][2] = 0
		case '1':
			m[2][2] = 1
			m[2][3] = 0
		case '7':
			m[3][3] = 1
			m[3][4] = 0
		case '6':
			m[3][3] = 1
			m[4][4] = 1
		}
		t[o].mat50 = m
		return
	}
	m := (l + r) >> 1
	t.build(s, o<<1, l, m)
	t.build(s, o<<1|1


üãÿÿãããããùãÿÿãããþãÿãÙããÙãÙãÙãÙÙãðÙýÏÙÙÏÙþÙÏýÿÏÿþÏÿþÏþÅùùÅþúÅ»ÅÅ»Å»Å»Åð»
	±»»±»±»±±»ò±§±§±§±§§±ò§§§§§ô
ôòòuuuóukuukukkuôkakakakôaÐñãüýãò÷ãÿýãþ÷ãþüãýüãýÿãûÿãþùãùþãüþãûýãþþãýúã÷ýãÿã
ÙããÙãÙãÙãÙãÙÙãîÙ
	ÏÙÙÏÙÏÙÏÏüÏýÿÏþÿÏþÿÏúÅÏûÅþûÅ»Å»Å»Å»Åô»ÿþ»
±»»±»±»±±»ò±§±§±§±§§±ò§§§§§ô
ôòòuuuóukuukukuókakakakóaÐããîãÙããÙãÙãÙãÙÙãíÙÏÙÙÏÙÏÙÏÙÏÙÏÏ÷ÿÏþÏþÏÅÏøÅÿÿÅþÅû»Å»Åø»»»ýÿ»
	±»»±»±»±±»ò±§±§±§±§§±ò§§§§§ô
ôòôuuuóukuukukuòkakakakóaÐããðãÙããÙãÙãÙãÙÙãìÙÏÙÙÏÙÏÙÏÙÏÏÙûÏûÏùÅþÅÏÅÅûÅþÅþÅúÅ»Å»ýý»ÿ»ü
»±»»±»±»±±»ò±§±§±§±§§±ò§§§§§ô
	ôòòuuuòukukukuòkakakakóaWÐããòã
ÙããÙãÙãÙãÙãÙÙãîÙ
ÏÙÙÏÙÏÙÏÙÏÙòÏóÅÏúÅÿÅýÅÅ»þ»Å»ýþ»ýþ»þ
±»»±»±»±±»ò±§±§±§±§§±ò§§§§§ò
ô