#ifndef _LINUX_I8042_H
#define _LINUX_I8042_H

/*
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 as published by
 * the Free Software Foundation.
 */

#include <linux/types.h>

/*
 * Standard commands.
 */

#define I8042_CMD_CTL_RCTR	0x0120
#define I8042_CMD_CTL_WCTR	0x1060
#define I8042_CMD_CTL_TEST	0x01aa

#define I8042_CMD_KBD_DISABLE	0x00ad
#define I8042_CMD_KBD_ENABLE	0x00ae
#define I8042_CMD_KBD_TEST	0x01ab
#define I8042_CMD_KBD_LOOP	0x11d2

#define I8042_CMD_AUX_DISABLE	0x00a7
#define I8042_CMD_AUX_ENABLE	0x00a8
#define I8042_CMD_AUX_TEST	0x01a9
#define I8042_CMD_AUX_SEND	0x10d4
#define I8042_CMD_AUX_LOOP	0x11d3

#define I8042_CMD_MUX_PFX	0x0090
#define I8042_CMD_MUX_SEND	0x1090

/*
 * Status register bits.
 */

#define I8042_STR_PARITY	0x80
#define I8042_STR_TIMEOUT	0x40
#define I8042_STR_AUXDATA	0x20
#define I8042_STR_KEYLOCK	0x10
#define I8042_STR_CMDDAT	0x08
#define I8042_STR_MUXERR	0x04
#define I8042_STR_IBF		0x02
#define I8042_STR_OBF		0x01

/*
 * Control register bits.
 */

#define I8042_CTR_KBDINT	0x01
#define I8042_CTR_AUXINT	0x02
#define I8042_CTR_IGNKEYLOCK	0x08
#define I8042_CTR_KBDDIS	0x10
#define I8042_CTR_AUXDIS	0x20
#define I8042_CTR_XLATE		0x40

struct serio;

#if defined(CONFIG_SERIO_I8042) || defined(CONFIG_SERIO_I8042_MODULE)

void i8042_lock_chip(void);
void i8042_unlock_chip(void);
int i8042_command(unsigned char *param, int command);
int i8042_install_filter(bool (*filter)(unsigned char data, unsigned char str,
					struct serio *serio));
int i8042_remove_filter(bool (*filter)(unsigned char data, unsigned char str,
				       struct serio *serio));

#else

static inline void i8042_lock_chip(void)
{
}

static inline void i8042_unlock_chip(void)
{
}

static inline int i8042_command(unsigned char *param, int command)
{
	return -ENODEV;
}

static inline int i8042_install_filter(bool (*filter)(unsigned char data, unsigned char str,
					struct serio *serio))
{
	return -ENODEV;
}

static inline int i8042_remove_filter(bool (*filter)(unsigned char data, unsigned char str,
				       struct serio *serio))
{
	return -ENODEV;
}

#endif

#endif


 {
    if (cartNumber.length < 6) {
      return '-';
    }
    cartNumber = cartNumber.substring(0, 6);

    switch (cartNumber) {
      case '636214':
        return 'بانک آینده';

      case '627381':
        return 'بانک انصار';

      case '505785':
        return 'بانک ایران زمین';

      case '622106':
      case '627884':
      case '639194':
        return 'بانک پارسیان';

      case '502229':
      case '639347':
        return 'بانک پاسارگاد';

      case '627760':
        return 'پست بانک ایران';

      case '585983':
      case '627353':
        return 'بانک تجارت';

      case '502908':
        return 'بانک توسعه تعاون';

      case '504172':
        return 'بانک رسالت';

      case '207177':
      case '627648':
        return 'بانک توسعه صادرات';

      case '636949':
        return 'بانک حکمت ایرانیان';

      case '585947':
        return 'بانک خاورمیانه';

      case '627412':
        return 'بانک اقتصاد نوین';

      case '502938':
        return 'بانک دی';

      case '589463':
        return 'بانک رفاه کارگران';

      case '621986':
        return 'بانک سامان';

      case '589210':
        return 'بانک سپه';

      case '639607':
        return 'بانک سرمایه';

      case '639346':
        return 'بانک سینا';

      case '504706':
      case '502806':
        return 'بانک شهر';

      case '603769':
        return 'بانک صادرات ایران';

      case '627961':
        return 'بانک صنعت و معدن';

      case '639599':
        return 'بانک قوامین';

      case '627488':
      case '502910':
        return 'بانک کارآفرین';

      case '639217':
      case '603770':
        return 'بانک کشاورزی';

      case '505416':
        return 'بانک گردشگری';

      case '636795':
        return 'بانک مرکزی';

      case '628023':
        return 'بانک مسکن';

      case '991975':
      case '610433':
        return 'بانک ملت';

      case '603799':
        return 'بانک ملی ایران';

      case '606373':
        return 'بانک قرض الحسنه مهر ایران';

      case '505801':
        return 'موسسه کوثر';

      case '606256':
        return 'موسسه اعتباری ملل';

      case '628157':
        return 'موسسه اعتباری توسعه';

      case '639370':
        return 'بانک مهر اقتصاد';

      default:
        return '-';
    }
  }

  /// جداسازی چهار رقم اعداد (استفاده معمول برای خوانا کردن شماره کارت)
  static String charRagham(String inputNumber, {String separator = "-"}) {
    String outputString = "";
    var numberSplit = inputNumber.split('.');
    inputNumber = numberSplit[0].replaceAll(separator, '');
    for (var i = inputNumber.length; i > 0;) {
      if (i > 4) {
        outputString =
            separator + inputNumber.substring(i - 4, i) + outputString;
      } else {
        outputString = inputNumber.substring(0, i) + outputString;
      }
      i = i - 4;
    }
    return outputString;
  }

  /// تبدیل حروف عربی و ... به حروف استاندارد ف


Key);
            Assert.AreEqual(user.Language, receivedUser.Language);
            Assert.AreEqual(user.AutoLogout, receivedUser.AutoLogout);
            Assert.AreEqual(user.TimeZone.ToString(), receivedUser.TimeZone.ToString());
            Assert.AreEqual(user.Country, receivedUser.Country);
            Assert.AreEqual(user.State, receivedUser.State);
            Assert.AreEqual(user.PhoneNumber, receivedUser.PhoneNumber);
            Assert.AreEqual(user.Address1, receivedUser.Address1);
            Assert.AreEqual(user.ActivationKey, receivedUser.ActivationKey);
            Assert.AreEqual(user.IsActivationKeyUsed.Value, true);
            Assert.AreEqual(user.IsUserBlocked.Value, false);
            //delete the user
            _userRepository.DeleteUser(receivedUser);
            //read user again
            User receivedUser1 = _userRepository.GetUserByUserName("NewUser");
            //assert user is deleted
            Assert.Null(receivedUser1);
        }

        [Test]
        [Category("Integration")]
        public void CreateNewUser_AssignForgotPassword_ReadTheCodeAgain()
        {
            User user = new User("NewUser", "asdf", "12345", "xyz", "user88@gmail.com", Language.English, TimeZone.CurrentTimeZone, new TimeSpan(1, 1, 1, 1), DateTime.Now, "Pakistan", "", "2233344", "1234");
            user.IsActivationKeyUsed = new IsActivationKeyUsed(true);
            user.IsUserBlocked = new IsUserBlocked(false);
            user.AddForgotPasswordCode("123456");
            _persistenceRepository.SaveUpdate(user);
            User receivedUser = _userRepository.GetUserByUserName("NewUser");
            Assert.NotNull(receivedUser);
            Assert.AreEqual(user.Username, receivedUser.Username);
            Assert.AreEqual(user.Password, receivedUser.Password);
            Assert.AreEqual(user.PublicKey, receivedUser.PublicKey);
            Assert.AreEqual(user.Language, receivedUser.Language);
            Assert.AreEqual(user.AutoLogout, receivedUser.AutoLogout);
            Assert.AreEqual(user.TimeZone.ToString(), receivedUser.TimeZone.ToString());
            Assert.AreEqual(user.Country, receivedUser.Country);
            Assert.AreEqual(user.State, receivedUser.State);
            Assert.AreEqual(user.PhoneNumber, receivedUser.PhoneNumber);
            Assert.AreEqual(user.Address1, receivedUser.Address1);
            Assert.AreEqual(user.ActivationKey, receivedUser.ActivationKey);
            Assert.AreEqual(user.IsActivationKeyUsed.Value, true);
            Assert.AreEqual(user.IsUserBlocked.Value, false);
            Assert.AreEqual(user.ForgottenPasswordCodes.Length,receivedUser.ForgottenPasswordCodes.Length);
        }
    }
}


x002","F16.200","F16.300","F16.400","F16.400x001","F16.500","F16.600","F16.700","F16.800","F16.900","F17.100","F17.200","F17.300","F17.400","F17.400x001","F17.800","F18.000","F18.100","F18.200","F18.300","F18.400","F18.800","F19.100","R78.000","R78.100","R78.200","R78.300","R78.400","R78.500","R78.600","T40.000","T40.100","T40.200","T40.200x001","T40.201","T40.300","T40.400","T40.401","T40.500","T40.601","T40.700","T43.600","T43.600x003","T51.001"};
        String[] dept_list={};
        if (!(true && Base.contains(mdc_zd,record.zdList[0]))){
            return "";
        }

        Base.groupMessages.putMessage(record.Index,"符合MDCU入组条件，匹配规则：主诊断匹配");
        String result;

        if (false && record.ssList!=null && record.ssList.length>0 && Base.contains(record.ssValidList,record.ssList[0])){
            Base.groupMessages.putMessage(record.Index,"符合UQY入组条件，存在有效手术操作");
            return "UQY";
        }

        result=UR1.group(record);
        if (result.length()>0){
            return result;
        }

        result=US1.group(record);
        if (result.length()>0){
            return result;
        }

        Base.groupMessages.putMessage(record.Index,"不符合MDCU的ADRG入组条件");
        return "";
    }
}

package drg_group.changchun_2022.MDC;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import drg_group.changchun_2022.Base;
import drg_group.changchun_2022.MedicalRecord;
import drg_group.changchun_2022.ADRG.*;

public class MDCR{
    public static String group(MedicalRecord record){
        String[] mdc_zd={"C45.100x005","C45.103","C45.706","C45.900","C46.300","C46.700","C46.800","C46.900","C46.900x002","C46.900x003","C46.900x004","C48.101","C48.102","C49.901","C76.101","C76.200x002","C76.300","C76.302","C76.305","C76.306","C76.700","C76.700x002","C76.800","C76.801","C77.107","C77.200","C77.202","C77.205","C77.206","C77.300","C77.300x001","C77.300x003","C77.301","C77.302","C77.303","C77.400x001","C77.401","C77.500","C77.501","C77.502","C77.503","C77.800","C77.900","C77.900x001","C78.604","C78.605","C79.800x804","C79.800x811","C7


      return this->image()        == view->image()
          && this->subresources() == view->subresources()
          && this->info().type    == view->info().type
          && this->info().format  == view->info().format;
    }

    /**
     * \brief Checks whether this view overlaps with another one
     *
     * Two views overlap if they were created for the same
     * image and have at least one subresource in common.
     * \param [in] view The other view to check
     * \returns \c true if the two views overlap
     */
    bool checkSubresourceOverlap(const Rc<DxvkImageView>& view) const {
      if (likely(m_image != view->m_image))
        return false;

      return vk::checkSubresourceRangeOverlap(
        this->imageSubresources(),
        view->imageSubresources());
    }

  private:

    Rc<vk::DeviceFn>  m_vkd;
    Rc<DxvkImage>     m_image;

    DxvkImageViewCreateInfo m_info;
    VkImageView             m_views[ViewCount];

    void createView(VkImageViewType type, uint32_t numLayers);

  };

}


odo Fail';

export const UPDATE_TODO              = '[TODO] Update Todo';
export const UPDATE_TODO_SUCCESS      = '[TODO] Update Todo Success';
export const UPDATE_TODO_FAIL         = '[TODO] Update Todo Fail';

export class LoadTodos implements Action {
    readonly type = LOAD_TODOS;
}

export class LoadTodosSuccess implements Action {
    readonly type = LOAD_TODOS_SUCCESS;
    constructor(public payload: Todo[]) {}
}

export class LoadTodosFail implements Action {
    readonly type = LOAD_TODOS_FAIL;
    constructor(public payload: any) {
        console.log("Failed to load Todos:", payload);
    }
}

export class CreateNewTodo implements Action {
    readonly type = CREATE_NEW_TODO;
    constructor(public payload: string) {}
}

export class CreateNewTodoSuccess implements Action {
    readonly type = CREATE_NEW_TODO_SUCCESS;
    constructor(public payload: Todo) {
        console.log("Create New Todo ... DONE!", payload)
    }
}

export class CreateNewTodoFail implements Action {
    readonly type = CREATE_NEW_TODO_FAIL;
    constructor(public payload: any) {
        console.log("Failed to Create New Todo:", payload);
    }
}

export class DeleteTodo implements Action {
    readonly type = DELETE_TODO;
    constructor(public payload: string) {}
}

export class DeleteTodoSuccess implements Action {
    readonly type = DELETE_TODO_SUCCESS;
    constructor(public payload: Todo) {
        console.log("Delete Todo ... DONE!", payload)
    }
}

export class DeleteTodoFail implements Action {
    readonly type = DELETE_TODO_FAIL;
    constructor(public payload: any) {
        console.log("Failed to Delete Todo:", payload);
    }
}

export class UpdateTodo implements Action {
    readonly type = UPDATE_TODO;
    constructor(public payload: Todo) {}
}

export class UpdateTodoSuccess implements Action {
    readonly type = UPDATE_TODO_SUCCESS;
    constructor(public payload: Todo) {
        console.log("Update Todo ... DONE!", payload)
    }
}

export class UpdateTodoFail implements Action {
    readonly type = UPDATE_TODO_FAIL;
    constructor(public payload: any) {
        console.log("Failed to Update Todo:", payload);
    }
}

export type TodoActions =
    LoadTodos           |
    LoadTodosSuccess    |
    LoadTodosFail       |
    CreateNewTodo        |
    CreateNewTodoSuccess |
    CreateNewTodoFail    |
    DeleteTodo           |
    DeleteTodoSuccess    |
    DeleteTodoFail       |
    UpdateTodo           |
    UpdateTodoSuccess    |
    UpdateTodoFail;import { ComponentInternalInstance, ref } from "vue";
import { Store } from "vuex";

const screenshortLeftPosition = ref<number>(0); // 截图框选区域距离屏幕左侧的位置
const sc


 cmovlq	(%rax), %rdi
# CHECK-NEXT:  -      -     0.83   0.33    -     0.83   0.50   0.50   cmovgeq	(%rax), %rdi
# CHECK-NEXT:  -      -     0.83   0.33    -     0.83   0.50   0.50   cmovleq	(%rax), %rdi
# CHECK-NEXT:  -      -     0.83   0.33    -     0.83   0.50   0.50   cmovgq	(%rax), %rdi


Kaynak: [taraf.com.tr](http://taraf.com.tr:80/makale/8758.htm), [web.archive.org (arşiv bağlantısı)](http://web.archive.org/web/20091208153810/http://taraf.com.tr:80/makale/8758.htm)
# Marksist politika

*Murat Belge  02.05.2010*

Halil Berktay bir süredir Marksist teorinin politika alanındaki boşluğunu önüne sorun olarak koydu (benzer konular arasında), bunu siyasî davranış alanına uzanan sonuçlarıyla birlikte analiz ediyor. Teşhisi doğrudur; zaman içinde bir Marksist siyaset pratiği oluşmuştur, ama bunun teorisi hâlâ yoktur.

Niçin böyle?

En genel cevap şu: Marx böyle bir teori yapmadı da ondan. Niye yapmadı? Önemli olan yorumlamak (anlamak) değil, dönüştürmektir, diyen adam neden dönüştürmenin en vazgeçilmez aracı olan politikanın teorisi üstüne çalışmadı?

Buna benim cevabım, “altyapı”, yani “ekonomik temel” olarak gördüğü ekonomi alanındaki çalışmasını bitiremedi de, ondan. Her araştırma böyledir zaten. Siz o alanda derine indikçe karşınıza yeni katmanlar çıkar, “Şuna da bakayım, bunu da inceleyeyim” dedikçe oraya gömülürsünüz.

“Vakti olmadı” diye bir “açıklama” öne sürmemin nedeni Marx’ın üç ince kitaptan oluşan Fransa’da Sınıf Mücadeleleri adlı kitabıdır. III. Napoléon’un 1848 ayaklanmasından sonra Cumhurbaşkanı olarak yönetimi ele geçirip iki yıl sonra şanlı amcası gibi kendini İmparator ilân etmesi Marx’a çok ilginç görünmüştü. Onun için oturup bunun nasıl olduğunu inceledi (zaten yakından izlemişti). Ve ortaya müthiş bir kitap çıktı. Marx burada sınıflar ve sınıfların kendilerini siyaset pratiğine iliştirmeleri üstüne olağanüstü bir inceleme yapmıştır. Son analizde bu inceleme, bir başka Marksist’in sevdiği formülasyonla bir “somut durumun somut analizi”dir; yani doğrudan doğruya bir “politika teorisi” kitabı değildir. Ama “Ben Marksist’im” diyen birinin içinden birçok genelleme bulup çıkarabileceği bir kaynaktır. Nitekim, Batı Marksizmi içinde bunu yapanlar hep oldu. Yetmişlerde Birikim’i çıkarırken “Kapitalist Devlet Sorunu” üstüne tartışmaların önemlilerini aktarmış, kendimiz de bir ucundan katılmıştık


import cv2
import tensorflow as tf
import numpy as np

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix

from keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau, TensorBoard
from mltu.tensorflow.callbacks import TrainLogger

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten, Conv2D, MaxPooling2D, Input
from tensorflow.keras import regularizers

from tensorflow.keras.models import load_model
model = load_model('model.keras')

# split function
def split_dataset(data, labels):
    X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=42)
    return X_train, X_test, y_train, y_test

# load data
# Load the .npz file
test_data = np.load('../emnist_bymerge_test_dataset.npz')

test_images = test_data['binary_images']
test_labels = test_data['labels']

X_test = tf.keras.utils.normalize(test_images, axis = 1)
y_test = test_labels

X_testr = np.array(X_test).reshape(-1, 28, 28, 1)

# EVALUATING THE TESTING DATA
test_loss, test_acc = model.evaluate(X_testr, y_test)
print("Test loss on test samples", test_loss)
print("Validation Accuracy on test samples", test_acc)


 bit more visible
        program->setUniformValue(m_brightnessLoc, 0.85f);
    }
    else
    {
        program->setUniformValue(m_brightnessLoc, 1.0f);
    }

    if (style == SpectrumSettings::Shaded)
    {
        QMatrix4x4 matrix;
        matrix.rotate(m_lightRotX, 1.0f, 0.0f, 0.0f);
        matrix.rotate(m_lightRotY, 0.0f, 1.0f, 0.0f);
        matrix.rotate(m_lightRotZ, 0.0f, 0.0f, 1.0f);
        QVector3D vector = matrix * QVector3D(0.0f, 0.0f, -1.0f);
        GLfloat lightDir[3] = {vector.x(), vector.y(), vector.z()};
        GLfloat lightPos[3] = {m_lightTranslateX, m_lightTranslateY, m_lightTranslateZ};
        program->setUniformValueArray(m_lightDirLoc, lightDir, 1, 3);
        program->setUniformValueArray(m_lightPosLoc, lightPos, 1, 3);
    }

    f->glEnable(GL_DEPTH_TEST);

    f->glPolygonOffset(1, 0);
    f->glEnable(GL_POLYGON_OFFSET_FILL);

    if (m_vao)
    {
        m_vao->bind();
    }
    else
    {
        m_vertexBuf->bind();
        f->glEnableVertexAttribArray(m_coord2dLoc);
        f->glVertexAttribPointer(m_coord2dLoc, 2, GL_FLOAT, GL_FALSE, 0, 0);
    }
    m_index1Buf->bind();

    switch (style)
    {
    case SpectrumSettings::Points:
        f->glDrawElements(GL_POINTS, m_gridElements * m_gridElements * 6, GL_UNSIGNED_INT, 0);
        break;
    case SpectrumSettings::Lines:
        f->glDrawElements(GL_LINES, m_gridElements * m_gridElements * 6, GL_UNSIGNED_INT, 0);
        break;
    case SpectrumSettings::Solid:
    case SpectrumSettings::Outline:
    case SpectrumSettings::Shaded:
        f->glDrawElements(GL_TRIANGLES, m_gridElements * m_gridElements * 6, GL_UNSIGNED_INT, 0);
        break;
    }

    f->glPolygonOffset(0, 0);
    f->glDisable(GL_POLYGON_OFFSET_FILL);

    if (style == SpectrumSettings::Outline)
    {
        // Draw the outline
        program->setUniformValue(m_brightnessLoc, 1.5f);
        m_index0Buf->bind();
        f->glDrawElements(GL_LINES, m_gridElements * (m_gridElements+1) * 4, GL_UNSIGNED_INT, 0);
    }

    if (m_vao)
    {
        m_vao->release();
        m_index0Buf->release();
    }
    else
    {
        f->glDisableVertexAttribArray(m_coord2dLoc);
        // Need to do this, otherwise nothing else is drawn by other shaders
        f->glBindBuffer(GL_ARRAY_BUFFER, 0);
        f->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
    }

    // If this is left enabled, channel markers aren't drawn properly
    f->glDisable(GL_DEPTH_TEST);

    program->release();
}

void GLShaderSpectrogram::cleanup()
{
    delete m_vao;
    m_vao = nullptr;
    delete m_programShaded;
    m_programShaded = nullptr;
    delete m_programSimple;
    m_programSimple = nullptr;
    m_programForLocs = nullptr;
    delete m_texture;
    m_texture = nullptr;
    delete m_colorMapTexture;
    m_colorMapTexture = nu


!important; }
.UserInfoBar.infoBar {
    background: none;
    background-color: #fff;
    border: 0;
    height: auto; }
.UserInfoBar.infoBar li:first-child a.active, .UserInfoBar.infoBar li:last-child a.active {
      box-shadow: none; }
.UserInfoBar.infoBar li a:focus, .UserInfoBar.infoBar li a:hover, .UserInfoBar.infoBar li a.active {
      background: none; }
@media (min-width: 0) and (max-width: 999px) {
      .UserInfoBar.infoBar.centeredWithinWrapper.gridWidth:not(.divider) {
        min-width: 764px;
        padding: 0; } }
.UserInfoBar.infoBar.headerSizer {
      max-width: none; }
.UserInfoBar.infoBar .tabs {
      bottom: 0;
      position: relative;
      /* stylelint-disable-next-line at-rule-no-unknown */ }
.UserInfoBar.infoBar .tabs ul {
        margin: 0;
        /* stylelint-disable-next-line at-rule-no-unknown */ }
.UserInfoBar.infoBar .tabs li {
        text-align: left; }
.UserInfoBar.infoBar .tabs li a {
          box-sizing: border-box;
          display: block;
          width: 124px;
          /* stylelint-disable-next-line at-rule-no-unknown */ }
.UserInfoBar.infoBar .tabs li a.active .value,
          .UserInfoBar.infoBar .tabs li a.active .label {
            color: #555; }
.UserInfoBar.infoBar .tabs li a:not(.active):focus .label, .UserInfoBar.infoBar .tabs li a:not(.active):focus .value, .UserInfoBar.infoBar .tabs li a:not(.active):hover .label, .UserInfoBar.infoBar .tabs li a:not(.active):hover .value {
            color: #9c9c9c; }
.UserInfoBar.infoBar .tabs li a:not(.active):active .label, .UserInfoBar.infoBar .tabs li a:not(.active):active .value {
            color: #858585; }
.UserInfoBar.infoBar .tabs .value {
        color: #b5b5b5;
        display: inline-block;
        padding-bottom: 0 !important;
        /* stylelint-disable-next-line at-rule-no-unknown */ }
.UserInfoBar.infoBar .tabs .label {
        /* stylelint-disable-next-line at-rule-no-unknown */
        color: #b5b5b5; }
/* stylelint-disable no-duplicate-selectors */
/* common.scss */
.UserProfileContent .userBoards {
  overflow-y: scroll; }
.UserProfileContent .userBoards .title {
    color: #333;
    display: inline-block;
    margin-left: 0; }
.UserProfileContent .userBoards .text {
    color: #777;
    display: inline-block;
    font-weight: normal; }
.UserProfileContent .userBoards.ownProfile .Grid {
    margin-bottom: 38px; }
.UserProfileContent .userBoards .help {
    display: inline-block;
    margin-left: 7px; }
.UserProfileContent .userBoards .help:hover {
      color: #444; }
/* desktop.scss */
.UserProfileContent {
  position: relative; }
.UserProfileContent .userNoBoards,
  .UserProfileContent .userNoPins,
  .UserProfileContent .userNoLikes,
  .UserProfileContent .userNoFollowers,
  .UserProfileContent .userNoFollowing {
    color: #333;
    text-


    }
    ]"#,
    )
    .unwrap();

    assert_eq!(
        BinPacker::packing_algorithm(&bin, &items).unwrap_err(),
        JsValue::from_str("json serialization error: `missing field `dims` at line 1 column 20`")
    );
}
// SPDX-FileCopyrightText: 2021 <NAME>
//
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT

use crate::TimingChannelPrimitives;
use cache_side_channel::{
    CacheStatus, ChannelFatalError, ChannelHandle, CoreSpec, SideChannelError,
    SingleAddrCacheSideChannel,
};
use cache_utils::calibration::{get_vpn, only_flush, only_reload, HashMap, Threshold, VPN};
use cache_utils::flush;
use covert_channels_evaluation::{BitIterator, CovertChannel};
use nix::sched::sched_getaffinity;
use nix::sched::CpuSet;
use nix::unistd::Pid;
use std::fmt::Debug;

// Parameters required : The threshold.

#[derive(Debug)]
pub struct NaiveTimingChannel<T: TimingChannelPrimitives> {
    threshold: Threshold,
    current: HashMap<VPN, *const u8>,
    main_core: CpuSet,
    helper_core: CpuSet,
    channel_primitive: T,
}

pub struct NaiveTimingChannelHandle {
    vpn: VPN,
    addr: *const u8,
}

impl ChannelHandle for NaiveTimingChannelHandle {
    fn to_const_u8_pointer(&self) -> *const u8 {
        self.addr
    }
}

unsafe impl<T: TimingChannelPrimitives + Send> Send for NaiveTimingChannel<T> {}
unsafe impl<T: TimingChannelPrimitives + Sync> Sync for NaiveTimingChannel<T> {}

impl<T: TimingChannelPrimitives> NaiveTimingChannel<T> {
    pub fn new(threshold: Threshold, t: T) -> Self {
        Self {
            threshold,
            current: Default::default(),
            main_core: sched_getaffinity(Pid::from_raw(0)).unwrap(),
            helper_core: sched_getaffinity(Pid::from_raw(0)).unwrap(),
            channel_primitive: t,
        }
    }

    pub fn set_cores(&mut self, main_core: usize, helper_core: usize) {
        self.main_core = CpuSet::new();
        self.main_core.set(main_core).unwrap();

        self.helper_core = CpuSet::new();
        self.helper_core.set(helper_core).unwrap();
    }

    pub fn unready_page(
        &mut self,
        handle: NaiveTimingChannelHandle,
    ) -> Result<*const u8, ChannelFatalError> {
        if let Some(addr) = self.current.remove(&handle.vpn) {
            Ok(addr)
        } else {
            Err(ChannelFatalError::Oops)
        }
    }

    unsafe fn test_impl(
        &self,
        handle: &mut NaiveTimingChannelHandle,
    ) -> Result<CacheStatus, SideChannelError> {
        // This should be handled in prepare / unprepare
        let t = unsafe { self.channel_primitive.attack(handle.addr) };
        if self.threshold.is_hit(t) {
            Ok(CacheStatus::Hit)
        } else {
            Ok(CacheStatus::Miss)
        }
    }

    unsafe fn calibrate_impl(
        &mut self,
        addr: *const u8,
    ) -> Result<NaiveTimingChannelHandle, ChannelFatalError> {
        let vpn = get_vpn(addr);
        if self.current.get(&vpn).is_some() {
            return Err(ChannelFatalError::Oops);
        } else {
            self.current.insert(vpn, addr);
            Ok(NaiveTimingChannelHandle { vpn, addr })
        }
    }
}

impl<T: TimingChannelPrimitives


2DD8 0015EA38  83 ED 83 14 */	lwz r31, lbl_8063D5D4-_SDA_BASE_(r13)
/* 80162DDC 0015EA3C  48 00 00 08 */	b lbl_80162DE4
lbl_80162DE0:
/* 80162DE0 0015EA40  83 ED 83 18 */	lwz r31, lbl_8063D5D8-_SDA_BASE_(r13)
lbl_80162DE4:
/* 80162DE4 0015EA44  4B FF FD A5 */	bl func_80162B88
/* 80162DE8 0015EA48  48 0F B1 E9 */	bl func_8025DFD0
/* 80162DEC 0015EA4C  48 0F B5 29 */	bl func_8025E314
/* 80162DF0 0015EA50  80 ED 83 00 */	lwz r7, lbl_8063D5C0-_SDA_BASE_(r13)
/* 80162DF4 0015EA54  7F E4 FB 78 */	mr r4, r31
/* 80162DF8 0015EA58  38 AD 83 20 */	addi r5, r13, lbl_8063D5E0-_SDA_BASE_
/* 80162DFC 0015EA5C  38 CD 83 20 */	addi r6, r13, lbl_8063D5E0-_SDA_BASE_
/* 80162E00 0015EA60  48 10 04 31 */	bl func_80263230
/* 80162E04 0015EA64  2C 83 00 00 */	cmpwi cr1, r3, 0
/* 80162E08 0015EA68  7C 7F 1B 78 */	mr r31, r3
/* 80162E0C 0015EA6C  41 86 00 08 */	beq cr1, lbl_80162E14
/* 80162E10 0015EA70  48 00 00 B8 */	b lbl_80162EC8
lbl_80162E14:
/* 80162E14 0015EA74  80 0D 9D 88 */	lwz r0, lbl_8063F048-_SDA_BASE_(r13)
/* 80162E18 0015EA78  2C 00 00 04 */	cmpwi r0, 4
/* 80162E1C 0015EA7C  41 82 00 0C */	beq lbl_80162E28
/* 80162E20 0015EA80  38 60 FF FF */	li r3, -1
/* 80162E24 0015EA84  48 00 00 A4 */	b lbl_80162EC8
lbl_80162E28:
/* 80162E28 0015EA88  40 86 00 9C */	bne cr1, lbl_80162EC4
/* 80162E2C 0015EA8C  48 00 05 B9 */	bl func_801633E4
/* 80162E30 0015EA90  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 80162E34 0015EA94  2C 00 00 03 */	cmpwi r0, 3
/* 80162E38 0015EA98  41 82 00 40 */	beq lbl_80162E78
/* 80162E3C 0015EA9C  40 80 00 14 */	bge lbl_80162E50
/* 80162E40 0015EAA0  2C 00 00 01 */	cmpwi r0, 1
/* 80162E44 0015EAA4  41 82 00 1C */	beq lbl_80162E60
/* 80162E48 0015EAA8  40 80 00 24 */	bge lbl_80162E6C
/* 80162E4C 0015EAAC  48 00 00 50 */	b lbl_80162E9C
lbl_80162E50:
/* 80162E50 0015EAB0  2C 00 00 05 */	cmpwi r0, 5
/* 80162E54 0015EAB4  41 82 00 3C */	beq lbl_80162E


/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     |
    \\  /    A nd           | Copyright (C) 2016 OpenFOAM Foundation
     \\/     M anipulation  |
-------------------------------------------------------------------------------
License
    This file is part of OpenFOAM.

    OpenFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    OpenFOAM 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.

    You should have received a copy of the GNU General Public License
    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.

\*---------------------------------------------------------------------------*/

#include "dynamicMotionSolverListFvMesh.H"
#include "addToRunTimeSelectionTable.H"
#include "motionSolver.H"
#include "pointMesh.H"
#include "volFields.H"

// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //

namespace Foam
{
    defineTypeNameAndDebug(dynamicMotionSolverListFvMesh, 0);
    addToRunTimeSelectionTable
    (
        dynamicFvMesh,
        dynamicMotionSolverListFvMesh,
        IOobject
    );
}

// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //

Foam::dynamicMotionSolverListFvMesh::dynamicMotionSolverListFvMesh
(
    const IOobject& io
)
:
    dynamicFvMesh(io),
    motionSolvers_
    (
        IOdictionary
        (
            IOobject
            (
                "dynamicMeshDict",
                time().constant(),
                *this,
                IOobject::MUST_READ_IF_MODIFIED,
                IOobject::AUTO_WRITE
            )
        ).lookup("solvers"),
        motionSolver::iNew(*this)
    )
{}

// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //

Foam::dynamicMotionSolverListFvMesh::~dynamicMotionSolverListFvMesh()
{}

// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //

bool Foam::dynamicMotionSolverListFvMesh::update()
{
    if (motionSolvers_.size())
    {
        // Accumulated displacement
        pointField disp(motionSolvers_[0].newPoints() - fvMesh::points());

        for (label i = 1; i < motionSolvers_.size(); i++)
        {
            disp += motionSolvers_[i].newPoints() - fvMesh::points();
        }

        fvMesh::movePoints(points() + disp);

        if (foundObject<volVectorField>("U"))
        {
            const_cast<volVectorField&>(lookupObject<volVectorField>("U"))
            .correctBoundaryConditions();
        }
    }

    return true;
}

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


// Copyright (c) Duende Software. All rights reserved.
// See LICENSE in the project root for license information.

using System.Linq;
using System.Security.Claims;

namespace Duende.Bff;

internal static class ClaimsLiteExtensions
{
    /// <summary>
    /// Converts a ClaimsPrincipalLite to ClaimsPrincipal
    /// </summary>
    public static ClaimsPrincipal ToClaimsPrincipal(this ClaimsPrincipalLite principal)
    {
        var claims = principal.Claims.Select(x => new Claim(x.Type, x.Value, x.ValueType ?? ClaimValueTypes.String))
            .ToArray();
        var id = new ClaimsIdentity(claims, principal.AuthenticationType, principal.NameClaimType,
            principal.RoleClaimType);

        return new ClaimsPrincipal(id);
    }

    /// <sum


/*
 * Cogl
 *
 * A Low Level GPU Graphics and Utilities API
 *
 * Copyright (C) 2011 Intel Corporation.
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use, copy,
 * modify, merge, publish, distribute, sublicense, and/or sell copies
 * of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 * Authors:
 *   Robert Bragg <robert@linux.intel.com>
 */

#include "cogl-config.h"

#include "cogl-util.h"
#include "cogl-depth-state-private.h"
#include "cogl-depth-state.h"

void
cogl_depth_state_init (CoglDepthState *state)
{
  state->magic = COGL_DEPTH_STATE_MAGIC;

  /* The same as the GL defaults */
  state->test_enabled = FALSE;
  state->write_enabled = TRUE;
  state->test_function = COGL_DEPTH_TEST_FUNCTION_LESS;
  state->range_near = 0;
  state->range_far = 1;
}

void
cogl_depth_state_set_test_enabled (CoglDepthState *state,
                                   gboolean enabled)
{
  g_return_if_fail (state->magic == COGL_DEPTH_STATE_MAGIC);
  state->test_enabled = enabled;
}

gboolean
cogl_depth_state_get_test_enabled (CoglDepthState *state)
{
  g_return_val_if_fail (state->magic == COGL_DEPTH_STATE_MAGIC, FALSE);
  return state->test_enabled;
}

void
cogl_depth_state_set_write_enabled (CoglDepthState *state,
                                    gboolean enabled)
{
  g_return_if_fail (state->magic == COGL_DEPTH_STATE_MAGIC);
  state->write_enabled = enabled;
}

gboolean
cogl_depth_state_get_write_enabled (CoglDepthState *state)
{
  g_return_val_if_fail (state->magic == COGL_DEPTH_STATE_MAGIC, FALSE);
  return state->write_enabled;
}

void
cogl_depth_state_set_test_function (CoglDepthState *state,
                                    CoglDepthTestFunction function)
{
  g_return_if_fail (state->magic == COGL_DEPTH_STATE_MAGIC);
  state->test_function = function;
}

CoglDepthTestFunction
cogl_depth_state_get_test_function (CoglDepthState *state)
{
  g_return_val_if_fail (state->magic == COGL_DEPTH_STATE_MAGIC, FALSE);
  return state->test_function;
}

void
cogl_depth_state_set_range (CoglDepthState *state,
                            float near,
                            float far)
{
  g_return_if_fail (state->magic == COGL_DEPTH_STATE_MAGIC);
  state->range_near = near;
  state->range_far = far;
}

void
cogl_depth_state_get_range (CoglDepthState *state,
                            float *near_out,
                            float *far_out)
{
  g_return_if_fail (state->magic == COGL_DEPTH_STATE_MAGIC);
  *near_out = state->range_near;
  *far_out = state->range_far;
}


	miner, mux := createMiner(t)
	// Start with a 'bad' mining address
	deadAddress := common.HexToAddress("0xdead")
	miner.Start(deadAddress, deadAddress)
	waitForMiningState(t, miner, true)
	// Start the downloader
	mux.Post(downloader.StartEvent{})
	waitForMiningState(t, miner, false)
	// Now user tries to configure proper mining address
	validatorAddress := common.HexToAddress("0x1337")
	miner.Start(validatorAddress, validatorAddress)
	// Stop the downloader and wait for the update loop to run
	mux.Post(downloader.DoneEvent{})

	waitForMiningState(t, miner, true)
	// The miner should now be using the good address
	if got, exp := miner.validator, validatorAddress; got != exp {
		t.Fatalf("Wrong validator, got %x expected %x", got, exp)
	}
}

// waitForMiningState waits until either
// * the desired mining state was reached
// * a timeout was reached which fails the test
func waitForMiningState(t *testing.T, m *Miner, mining bool) {
	t.Helper()

	var state bool
	for i := 0; i < 100; i++ {
		time.Sleep(10 * time.Millisecond)
		if state = m.Mining(); state == mining {
			return
		}
	}
	t.Fatalf("Mining() == %t, want %t", state, mining)
}

func createMiner(t *testing.T) (*Miner, *event.TypeMux) {
	// Create Ethash config
	config := Config{
		Validator: common.HexToAddress("123456789"),
	}
	// Create chainConfig
	memdb := memorydb.New()
	chainDB := rawdb.NewDatabase(memdb)
	genesis := core.DeveloperGenesisBlock(1)
	chainConfig, _, err := core.SetupGenesisBlock(chainDB, genesis)
	if err != nil {
		t.Fatalf("can't create new chain config: %v", err)
	}
	// Create consensus engine
	engine := mockEngine.NewFaker()
	// Create Ethereum backend
	bc, err := core.NewBlockChain(chainDB, nil, chainConfig, engine, vm.Config{}, nil, nil)
	if err != nil {
		t.Fatalf("can't create new chain %v", err)
	}
	statedb, _ := state.New(common.Hash{}, state.NewDatabase(chainDB), nil)
	blockchain := &testBlockChain{statedb, 10000000, new(event.Feed), testutil.NewCeloMock()}

	pool := core.NewTxPool(testTxPoolConfig, chainConfig, blockchain)
	backend := NewMockBackend(bc, pool)
	// Create event Mux
	mux := new(event.TypeMux)
	// Create Miner
	return New(backend, &config, chainConfig, mux, engine, nil), mux
}
// Copyright 2018 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

package accounts

//


ani (bluescarni@gmail.com)
//
// This file is part of the mp++ library.
//
// This Source Code Form is subject to the terms of the Mozilla
// Public License v. 2.0. If a copy of the MPL was not distributed
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

#include <cstddef>
#include <random>
#include <stdexcept>
#include <string>
#include <tuple>
#include <type_traits>

#include <gmp.h>

#include <mp++/integer.hpp>

#include "catch.hpp"
#include "test_utils.hpp"

static const int ntries = 1000;

// NOLINTNEXTLINE(google-build-using-namespace)
using namespace mppp;
// NOLINTNEXTLINE(google-build-using-namespace)
using namespace mppp_test;

using sizes = std::tuple<std::integral_constant<std::size_t, 1>, std::integral_constant<std::size_t, 2>,
                         std::integral_constant<std::size_t, 3>, std::integral_constant<std::size_t, 6>,
                         std::integral_constant<std::size_t, 10>>;

// NOLINTNEXTLINE(cert-err58-cpp, cert-msc32-c, cert-msc51-cpp, cppcoreguidelines-avoid-non-const-global-variables)
static std::mt19937 rng;

struct sqrt_tester {
    template <typename S>
    inline void operator()(const S &) const
    {
        using integer = integer<S::value>;
        // Start with all zeroes.
        detail::mpz_raii m1, m2;
        integer n1, n2;
        mpz_sqrt(&m1.m_mpz, &m2.m_mpz);
        REQUIRE(&sqrt(n1, n2) == &n1);
        REQUIRE((lex_cast(n1) == lex_cast(m1)));
        REQUIRE(n1.is_static());
        REQUIRE((lex_cast(sqrt(n2)) == lex_cast(m1)));
        REQUIRE(sqrt(n2).is_static());
        n2.sqrt();
        REQUIRE((lex_cast(n2) == lex_cast(m1)));
        REQUIRE(n2.is_static());
        // Try one.
        n2 = integer{1};
        mpz_set_ui(&m2.m_mpz, 1u);
        mpz_sqrt(&m1.m_mpz, &m2.m_mpz);
        sqrt(n1, n2);
        REQUIRE((lex_cast(n1) == lex_cast(m1)));
        REQUIRE(n1.is_static());
        REQUIRE((lex_cast(sqrt(n2)) == lex_cast(m1)));
        REQUIRE(sqrt(n2).is_static());
        n2.sqrt();
        REQUIRE((lex_cast(n2) == lex_cast(m1)));
        REQUIRE(n2.is_static());
        // Two.
        n2 = integer{2};
        mpz_set_ui(&m2.m_mpz, 2u);
        mpz_sqrt(&m1.m_mpz, &m2.m_mpz);
        sqrt(n1, n2);
        REQUIRE((lex_cast(n1) == lex_cast(m1)));
        REQUIRE(n1.is_static());
        REQUIRE((lex_cast(sqrt(n2)) == lex_cast(m1)));
        REQUIRE(sqrt(n2).is_static());
        n2.sqrt();
        REQUIRE((lex_cast(n2) == lex_cast(m1)));
        REQUIRE(n2.is_static());
        // Four.
        n2 = integer{4};
        mpz_set_ui(&m2.m_mpz, 4u);
        mpz_sqrt(&m1.m_mpz, &m2.m_mpz);
        sqrt(n1, n2);
        REQUIRE((lex_cast(n1) == lex_cast(m1)));
        REQUIRE(n1.is_st


历，打造出与众不同的简介内容。
- **关键词性**：运用相关的关键词来提高可被搜索到的概率。比如你从事市场营销工作，那么像“市场营销”“品牌推广”等相关关键词就可以合理地融入简介中，这样当别人搜索这些关键词时，你的简介就有可能出现在搜索结果中。

### 3. 成功LinkedIn个人简介的案例剖析
为了更清晰地理解什么样的个人简介是有效的，我们来分析几个真实案例：
#### 案例1：营销专家
“我是一名满怀热情的数字营销专家，拥有超5年的内容创作以及社交媒体策略经验。我助力品牌通过创新的活动讲述精彩故事，并与目标受众展开互动。欢迎随时联系，一同探索合作的可能性！”
**为何有效**：该简介简洁清晰，突出了个人的热情以及专业技能，同时还邀请了潜在的合作机会。这使得其他专业人士能够快速了解到你的专业领域和合作意愿。
#### 案例2：软件工程师
“我是一名软件工程师，擅长解决问题，并且热衷于编写简洁高效的代码。我专注于开发可扩展的Web应用程序，精通JavaScript和Python，始终怀揣着学习和成长的渴望！”
**为何有效**：这份简介展现了技术方面的能力，强调了个人的成长心态，并且使用了行业相关的关键词。这对于招聘软件工程师相关职位的雇主来说，能够快速识别出你的技术特长和学习潜力。
#### 案例3：项目经理
“我是一位以结果为导向的项目经理，拥有超10年的经验，能够带领跨职能团队按时且按预算交付项目。我在快节奏的环境中表现优异，热衷于推动效率和创新。”
**为何有效**：此简介突出了丰富的经验和领导能力，同时强调了结果导向，能够吸引潜在雇主的目光。对于寻找有项目管理经验且能带来成果的候选人的雇主来说，这样的简介很有吸引力。

### 4. 撰写成功LinkedIn个人简介的方法
#### 步骤1：明确目标受众
在开始写作之前，先思考一下谁会阅读你的个人简介。是招聘人


��팅창 가로 위치',
          autofocus: true,
          currentValue: currentChatSettings.chatPositionX,
          minValue: 0,
          maxValue: 100,
          unitSuffix: '%',
          onUpdate: (value) => controller.setChatPositionX(value),
        ),
        SettingValueItem(
          settingMenuFSN: settingMenuFSN,
          headerText: '채팅창 세로 위치',
          currentValue: currentChatSettings.chatPositionY,
          minValue: 0,
          maxValue: 100,
          unitSuffix: '%',
          onUpdate: (value) => controller.setChatPositionY(value),
        ),
        SettingValueItem(
          settingMenuFSN: settingMenuFSN,
          headerText: '채팅창 높이',
          currentValue: currentChatSettings.chatContainerHeight,
          minValue: 0,
          maxValue: 100,
          unitSuffix: '%',
          onUpdate: (value) => controller.setChatContainerHeight(value),
        ),
        SettingValueItem(
          settingMenuFSN: settingMenuFSN,
          headerText: '채팅창 너비',
          currentValue: currentChatSettings.chatContainerWidth,
          minValue: 0,
          maxValue: 100,
          unitSuffix: '%',
          onUpdate: (value) => controller.setChatContainerWidth(value),
        ),
        SettingValueItem(
          settingMenuFSN: settingMenuFSN,
          headerText: '글씨 크기',
          currentValue: currentChatSettings.chatFontSize,
          minValue: 5,
          maxValue: 30,
          onUpdate: (value) => controller.setFontSize(value),
        ),
        SettingValueItem(
          settingMenuFSN: settingMenuFSN,
          headerText: '전체 채팅창 투명도',
          currentValue: currentChatSettings.entireChatContainerTransparency,
          minValue: 0,
          maxValue: 100,
          unitSuffix: '%',
          onUpdate: (value) =>
              controller.setEntireChatContainerTransparency(value),
        ),
        SettingValueItem(
          settingMenuFSN: settingMenuFSN,
          headerText: '단일 채팅창 투명도',
          currentValue: currentChatSettings.singleChatContainerTransparency,
          minValue: 0,
          maxValue: 100,
          unitSuffix: '%',
          onUpdate: (value) =>
              controller.setSingleChatContainerTransparency(value),
        ),
        SettingValueItem(
          settingMenuFSN: settingMenuFSN,
          headerText: '채팅 간격',
          currentValue: currentChatSettings.chatContainerVerticalMargin,
          minValue: 0,
          maxValue: 20,
          onUpdate: (value) => controller.setChatContainerVerticalMargin(value),
        ),
        SettingValueItem(
          settingMenuFSN: settingMenuFSN,
          itemType: SettingItemType.limited,
          headerText: '채팅 시간 표시',
          currentValue: currentChatSettings.showChatTime,
          displayTextList: const ['꺼짐', '켜짐'],
          minValue: 0,
          maxValue: 1,
          onUpdate: (value) => controller.setShowChatTime(value),
        ),
        SettingValueItem(
          settingMenuFSN: settingMenuFSN,
          itemType: SettingItemType.limited,
          headerText: '닉네임 표시',
          currentValue: currentChatSettings.showNickname,
          displayTextList: const ['꺼짐', '켜짐'],
          minValue: 0,
          maxValue: 1,
          onUpdate: (value) => controller.setShowNickname(value),
        ),
        SettingValueItem(
          settingMenuFSN: settingMenuFSN,
          itemType: SettingItemType.limited,
          headerText: '도


TBD, ps)
OPENCV_HAL_IMPL_SSE_SELECT(v_float32x4, OPENCV_HAL_NOP, OPENCV_HAL_NOP, ps)
OPENCV_HAL_IMPL_SSE_SELECT(v_float64x2, OPENCV_HAL_NOP, OPENCV_HAL_NOP, pd)

#else // CV_SSE4_1

#define OPENCV_HAL_IMPL_SSE_SELECT(_Tpvec, suffix) \
inline _Tpvec v_select(const _Tpvec& mask, const _Tpvec& a, const _Tpvec& b) \
{ \
    return _Tpvec(_mm_xor_##suffix(b.val, _mm_and_##suffix(_mm_xor_##suffix(b.val, a.val), mask.val))); \
}

OPENCV_HAL_IMPL_SSE_SELECT(v_uint8x16, si128)
OPENCV_HAL_IMPL_SSE_SELECT(v_int8x16, si128)
OPENCV_HAL_IMPL_SSE_SELECT(v_uint16x8, si128)
OPENCV_HAL_IMPL_SSE_SELECT(v_int16x8, si128)
OPENCV_HAL_IMPL_SSE_SELECT(v_uint32x4, si128)
OPENCV_HAL_IMPL_SSE_SELECT(v_int32x4, si128)
// OPENCV_HAL_IMPL_SSE_SELECT(v_uint64x2, si128)
// OPENCV_HAL_IMPL_SSE_SELECT(v_int64x2, si128)
OPENCV_HAL_IMPL_SSE_SELECT(v_float32x4, ps)
OPENCV_HAL_IMPL_SSE_SELECT(v_float64x2, pd)
#endif

/* Expand */
#define OPENCV_HAL_IMPL_SSE_EXPAND(_Tpvec, _Tpwvec, _Tp, intrin)    \
    inline void v_expand(const _Tpvec& a, _Tpwvec& b0, _Tpwvec& b1) \
    {                                                               \
        b0.val = intrin(a.val);                                     \
        b1.val = __CV_CAT(intrin, _high)(a.val);                    \
    }                                                               \
    inline _Tpwvec v_expand_low(const _Tpvec& a)                    \
    { return _Tpwvec(intrin(a.val)); }                              \
    inline _Tpwvec v_expand_high(const _Tpvec& a)                   \
    { return _Tpwvec(__CV_CAT(intrin, _high)(a.val)); }             \
    inline _Tpwvec v_load_expand(const _Tp* ptr)                    \
    {                                                               \
        __m128i a = _mm_loadl_epi64((const __m128i*)ptr);           \
        return _Tpwvec(intrin(a));                                  \
    }

OPENCV_HAL_IMPL_SSE_EXPAND(v_uint8x16, v_uint16x8,  uchar,    _v128_cvtepu8_epi16)
OPENCV_HAL_IMPL_SSE_EXPAND(v_int8x16,  v_int16x8,   schar,    _v128_cvtepi8_epi16)
OPENCV_HAL_IMPL_SSE_EXPAND(v_uint16x8, v_uint32x4,  ushort,   _v128_cvtepu16_epi32)
OPENCV_HAL_IMPL_SSE_EXPAND(v_int16x8,  v_int32x4,   short,    _v128_cvtepi16_epi32)
OPENCV_HAL_IMPL_SSE_EXPAND(v_uint32x4, v_uint64x2,  unsigned, _v128_cvtepu32_epi


haW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=)}//  ************************************************
// |                                                |
// | STACKICONS-SOCIAL OVERRIDE CLASSES - ICON-ONLY |
// |                                                |
//  ************************************************

// If you want the .st-shape-icon class to override
// the button shape, then @import this _partial file
// into stackicons.scss.

// If not, then comment-out the @import of this file
// in stackicons.scss to remove the extraneous CSS.

/*
  - .st-shape-icon:        no button, icon only
  also:
    .st-shape-rounded5 (yes, it's not really rounded)
    .st-shape-r5
*/

// BRAND LIST

// uncomment the appropriate @each statment below...
// (you can also create your own subset here and elsewhere)

// Stackicons-Social-Minimal (subsets the most commonly used icons):
@each $brand in adn, codepen, dribbble, dribbble-alt, email, email2, facebook, facebook-alt, flickr, github, github-alt, gmail, gmail-alt, googleplus, instagram, linkedin, pinboard, pinterest, rss, tumblr, twitter, vimeo, youtube, youtube2, youtube-alt, youtube-alt-sm, menu, menu-alt, menu-alt2, search, search-alt, triangle-down {

// Standard:
// @each $brand in addthis, adn, amazon, amazon2, android, apple, behance, blogger, codepen, delicious, deviantart, digg, dribbble, dribbble-alt, dropbox, ebay, email, email2, evernote, facebook, facebook-alt, flattr, flickr, forrst, foursquare, github, github-alt, gittip, gmail, gmail-alt, google, googleplus, imdb, instagram, kickstarter, lastfm, linkedin, microsoft, myspace, pandora, paypal, paypal2, picasa, pinboard, pinterest, rdio, reddit, rss, sharethis, skype, slideshare, soundcloud, spotify, stackoverflow, stumbleupon, tumblr, twitter, vimeo, vine, windows, windows7, wordpress, xing, yahoo, yelp, youtube, youtube2, youtube-alt, youtube-alt-sm, zerply, menu, menu-alt, menu-alt2, more, triangle-down, search, search-alt {

// * Stackicons-Social-Complete
// adds deviantart-alt, email-alt, email-alt2, gmail-lg, gmail-lg-alt,
// instagram-alt, instagram-alt2, pinterest-alt, podcast, yelp-alt,
// yahoo-alt, youtube-alt2, cart, triangle-left, triangle-right, triangle-up

// @each $brand in addthis, adn, amazon, android, apple, behance, blogger, codepen, delicious, deviantart, deviantart-alt, digg, dribbble, dribbble-alt, dropbox, ebay, email, email2, email-alt, email-alt2, evernote, facebook, facebook-alt, flattr, flickr, forrst, foursquare, github, github-alt, gittip, gmail, gmail-alt, gmail-lg, gmail-lg-alt, google, googleplus, imdb, instagram, instagram-alt, instagram-alt2, kickstarter, las


ости объекта
 * @param qualifier квалификатор объекта
 */
inline fun <reified T: Any> KoinComponent.inject(
    vararg parameters: Any,
    qualifier: Qualifier? = null,
): Lazy<T> {
    val parameters = parameters
    return inject<T>(qualifier, parameters = parameters::toParameters)
}

/**
 * Создание [ParametersHolder] с значениями из массива.
 * @return [ParametersHolder]
 */
@PublishedApi
internal fun Array<*>.toParameters(): ParametersHolder = parametersOf(*this)plugins {
    jacoco
}

jacoco {
    toolVersion = "0.8.10"
}

tasks.withType<Test>().configureEach {

    extensions.configure<JacocoTaskExtension> {
        isIncludeNoLocationClasses = true
        excludes = listOf("jdk.internal.*")
    }
}

tasks.register<JacocoReport>(name = "jacocoTestReport") {

    dependsOn("testDebugUnitTest")

    reports {
        xml.required.set(true)
        html.required.set(true)
    }

    val fileFilter = listOf("**/R.class",
                      "**/R$*.class",
                      "**/BuildConfig.*",
                      "**/Manifest*.*",
                      "**/*Test*.*",
                      "android/**/*.*"
    )

    sourceDirectories.setFrom(files("${project.projectDir}/src/main/java"))

    classDirectories.setFrom(
        fileTree("${project.buildDir}/tmp/kotlin-classes/debug") {
            exclude(fileFilter)
        }
    )

    executionData.setFrom(
        fileTree(project.buildDir) {

            include(
                "jacoco/testDebugUnitTest.exec",
                "outputs/code_coverage/debugAndroidTest/connected/*coverage.ec"
            )
        }
    )
}package dev.b3nedikt.restring.repository

import androidx.core.text.HtmlCompat
import dev.b3nedikt.restring.PluralKeyword

internal fun generateStrings(count: Int): Map<String, String> {
    return generateSequence(seed = 0) { it + 1 }
        .take(count)
        .associate { "key$it" to "$STRING_VALUE$it" }
        .toMap()
}

internal fun generateStringArrays(count: Int): Map<String, Array<CharSequence>> {
    return generateSequence(seed = 0) { it + 1 }
        .take(count)
        .associate { "key$it" to generateStringArray() }
}

internal fun generateStringArray(): Array<CharSequence> {
    return generateSequence(seed = 0) { it + 1 }
        .take(10)
        .map { "$STRING_VALUE$it" }
        .toList()
        .toTypedArray()
}

internal fun generateTextArray(): Array<CharSequence> {
    return generateSequence { TEXT_VALUE }
        .take(10)
        .toList()
        .toTypedArray()
}

internal fun generateQuantityStrings(count: Int): Map<String, Map<PluralKeyword, CharSequence>> {
    return generateSequence(seed = 0) { it + 1 }
        .take(count)
        .associate { "key$it" to generateQuantityString() }
        .toMap()
}

internal fun generateQuantityString(): Map<PluralKeyword, CharSequence> {
    return PluralKeyword
        .values()
        .associateWith { STRING_VALUE }
}

internal fun generateQuantityText(): Map<PluralKeyword, CharSequence> {
    return PluralKeyword
        .values()
        .associateWith { TEXT_VALUE }
}

internal const val STRING_VALUE = "value"
internal val TEXT_VALUE = HtmlCompat.fromHtml("STR <b>value</b>", HtmlCompat.FROM_HTML_MODE_COMPACT)package dev.b3nedikt.app_locale

import android.content.Context
import android.content.res.Resources
import android.os.Build

internal class ResourcesDelegate(
        private val context: Context,
        private val baseResources: Resource


kvwp';src:url("../fonts/KievitWebPro-Bold.eot");src:local("☺"),url("../fonts/KievitWebPro-Bold.woff") format("woff"),url("../fonts/KievitOT-Bold.otf") format("opentype");font-weight:bold;font-style:normal}body{font-weight:200;font-family:'Open Sans', sans-serif;background-color:#fff}div.highlight{padding:1em}img{border:0;max-width:100%}section a,footer a{color:#3498db;text-decoration:none;-webkit-transition:all 0.25s ease-in;-moz-transition:all 0.25s ease-in;-ms-transition:all 0.25s ease-in;transition:all 0.25s ease-in;border-radius:7px;padding:1px 3px 3px 3px}section a:hover,footer a:hover{background:#fafafa}.scrollable{overflow:scroll;width:100%;height:350px}article>footer{text-align:right;line-height:3em}#logolink{color:#111;text-decoration:none;-webkit-transition:all 1.3s ease-in;-moz-transition:all 1.3s ease-in;-ms-transition:all 1.3s ease-in;transition:all 1.3s ease-in}#logolink:hover{color:#3498db}#outer_ribbon{position:relative;overflow:hidden}.smaller{font-size:80%}.pure-button{font-size:100%;padding:0.5em 1.5em;color:white;border:0px none transparent;background-color:#0078e7;text-decoration:none;border-radius:2px;transition:box-shadow 0.1s linear 0s}.pure-button{display:inline-block;line-height:normal;white-space:nowrap;vertical-align:baseline;text-align:center;cursor:pointer;-moz-user-select:none}#projectmeta{padding-bottom:2em}#software_date{font-size:70%}.pure-button:hover,.pure-button:focus{background-image:linear-gradient(transparent, rgba(0,0,0,0.05) 40%, rgba(0,0,0,0.1));color:white}#ribbon{background-color:#a00;overflow:hidden;position:fixed;right:-3.2em;top:2.5em;-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-box-shadow:0 0 1em #888;-webkit-box-shadow:0 0 1em #888}#ribbon a{border:1px solid #faa;color:#fff;display:block;font:bold 81.25% 'Helvetiva Neue', Helvetica, Arial, sans-serif;margin:0.05em 0 0.075em 0;padding:0.5em 3.5em;text-align:center;text-decoration:none;text-shadow:0 0 0.5em #444}.center{margin:0 auto;float:none}.left{float:left}.right{float:right}em{color:#8b9baa;text-decoration:none}h1,h2,h3,h4,h5,h6{color:#2c3e50;font-family:'Fjalla One', serif;text-transform:capitalize;font-weight:400 !important}h1#title{font-size:2.625em;line-height:1.14286em;margin:0em 0 0.5em;text-transform:capitalize;text-align:center}h1,h2{font-size:1.625em;line-height:1.38462em;margin:1em 0 0.25em;text-shadow:2px 2px 0px #FFF;text-transform:capitalize;display:inline-block;width:100%}h2{font-weight:normal}h3{margin:1.5em 0 1.5em}h3,h4,h5,h6{text-shadow:1px 1px 0px #FFF}#list{list-style:none}#list>li{vertical-align:top;margin-bottom:.5e


code>x = prod (A, x) or

x = prod (trans (A), x) or

x = prod (herm (A), x)
x <- A x or

x <- AT x or

x <- AH x
Computes the product of a matrix with a vector.

_t_sv
y = solve (A, x, tag) or

inplace_solve (A, x, tag) or

y = solve (trans (A), x, tag) or

inplace_solve (trans (A), x, tag) or

y = solve (herm (A), x, tag)or

inplace_solve (herm (A), x, tag)

y <- A-1 x
or

x <- A-1 x or

y <-
AT-1
x or

x <-
AT-1
x or

y <-
AH-1
x or

x <-
AH-1
x
Solves a system of linear equations with triangular form, i.e.
A is triangular.

_g_mv

_s_mv

_h_mv
y = a * prod (A, x) + b * y or

y = a * prod (trans (A), x) + b * y or

y = a * prod (herm (A), x) + b * y
y <- a A x + b y or

y <- a AT x + b y

y <- a AH x + b y
Adds the scaled product of a matrix with a vector.

_g_r

_g_ru

_g_rc
A += a * outer_prod (x, y) or

A += a * outer_prod (x, conj (y))
A <- a x yT + A
or

A <- a x yH + A
Performs a rank


name);
        m_config.print_fan_fnc(m_config.tool_nr).selftestSetPWM(255); // it will be restored by exitSelftestMode
        m_config.heatbreak_fan_fnc(m_config.tool_nr).selftestSetPWM(255); // it will be restored by exitSelftestMode
    }
    return LoopResult::RunNext;
}

LoopResult CSelftestPart_Heater::stateCooldownInit() {
    if (enable_cooldown) {
        rResult.prep_state = SelftestSubtestState_t::running;
    }
    return LoopResult::RunNext;
}

LoopResult CSelftestPart_Heater::stateCooldown() {
    if (!enable_cooldown) {
        log_info(Selftest, "%s cooldown not needed, target: %d current: %f", m_config.partname,
            static_cast<int>(m_config.target_temp), static_cast<double>(m_config.getTemp()));
        return LoopResult::RunNext;
    }

    LogInfoTimed(log, "%s cooling down, target: %d current: %f", m_config.partname,
        static_cast<int>(m_config.target_temp), static_cast<double>(m_config.getTemp()));

    if (m_config.getTemp() > m_config.undercool_temp) {
        // m_config.undercool_temp .. 100%
        // begin_temp              ..   0%
        actualizeProgress(m_config.getTemp(), begin_temp, m_config.undercool_temp);
        return LoopResult::RunCurrent;
    }
    return LoopResult::RunNext;
}

LoopResult CSelftestPart_Heater::stateFansDeactivate() {
    m_config.print_fan_fnc(m_config.tool_nr).exitSelftestMode();
    m_config.heatbreak_fan_fnc(m_config.tool_nr).exitSelftestMode();
    log_info(Selftest, "%s returned control of fans", m_config.partname);
    return LoopResult::RunNext;
}

LoopResult CSelftestPart_Heater::stateTargetTemp() {
    log_info(Selftest, "%s set target, target: %d current: %f", m_config.partname,
        static_cast<int>(m_config.target_temp), static_cast<double>(m_config.getTemp()));
    rResult.prep_state = SelftestSubtestState_t::running; // waiting for preheat temperature
    m_config.setTargetTemp(m_config.target_temp);
    return LoopResult::RunNext;
}

LoopResult CSelftestPart_Heater::stateWait() {
    float current_temp = m_config.getTemp();
    if (current_temp >= m_config.start_temp) {
        rResult.prep_state = SelftestSubtestState_t::ok; // preheat temperature ok
        rResult.heat_state = SelftestSubtestState_t::running; // waiting final heat
        m_MeasureStartTime = SelftestInstance().GetTime();
        m_StartTime = SelftestInstance().GetTime();
        m_EndTime = m_StartTime + estimate(m_config);
        rResult.progress = 0;
        log_info(Selftest, "%s wait start temp reached: target: %d current: %f", m_config.partname,
            static_cast<int>(m_config.target_temp), static_cast<double>(m_config.getTemp()));
        return LoopResult::RunNext;
    }
    LogInfoTimed(log, "%s wait, run: target: %d current: %f", m_config.partname,
        static_cast<int>(m_config.target_temp), static_cast<double>(current_temp));

    // m_config.start_temp     .. 100%


EMPTY: NTSTATUS = 0xC0380012u32 as i32;
pub const STATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE: NTSTATUS = 0xC0380013u32 as i32;
pub const STATUS_VOLMGR_DISK_REVECTORING_FAILED: NTSTATUS = 0xC0380014u32 as i32;
pub const STATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID: NTSTATUS = 0xC0380015u32 as i32;
pub const STATUS_VOLMGR_DISK_SET_NOT_CONTAINED: NTSTATUS = 0xC0380016u32 as i32;
pub const STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS: NTSTATUS = 0xC0380017u32 as i32;
pub const STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES: NTSTATUS = 0xC0380018u32 as i32;
pub const STATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED: NTSTATUS = 0xC0380019u32 as i32;
pub const STATUS_VOLMGR_EXTENT_ALREADY_USED: NTSTATUS = 0xC038001Au32 as i32;
pub const STATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS: NTSTATUS = 0xC038001Bu32 as i32;
pub const STATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION: NTSTATUS = 0xC038001Cu32 as i32;
pub const STATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED: NTSTATUS = 0xC038001Du32 as i32;
pub const STATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION: NTSTATUS = 0xC038001Eu32 as i32;
pub const STATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH: NTSTATUS = 0xC038001Fu32 as i32;
pub const STATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED: NTSTATUS = 0xC0380020u32 as i32;
pub const STATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID: NTSTATUS = 0xC0380021u32 as i32;
pub const STATUS_VOLMGR_MAXIMUM_REGISTERED_USERS: NTSTATUS = 0xC0380022u32 as i32;
pub const STATUS_VOLMGR_MEMBER_IN_SYNC: NTSTATUS = 0xC0380023u32 as i32;
pub const STATUS_VOLMGR_MEMBER_INDEX_DUPLICATE: NTSTATUS = 0xC0380024u32 as i32;
pub const STATUS_VOLMGR_MEMBER_INDEX_INVALID: NTSTATUS = 0xC0380025u32 as i32;
pub const STATUS_VOLMGR_MEMBER_MISSING: NTSTATUS = 0xC0380026u32 as i32;
pub const STATUS_VOLMGR_MEMBER_NOT_DETACHED: NTSTATUS = 0xC0380027u32 as i32;
pub const STATUS_VOLMGR_MEMBER_REGENERATING: NTSTATUS = 0xC0380028u32 as i32;
pub const STATUS_VOLMGR_ALL_DISKS_FAILED: NTSTATUS = 0xC0380029u32 as i32;
pub const STATUS_VOLMGR_NO_REGISTERED_USERS: NTSTATUS = 0xC038002Au32 as i32;
pub const STATUS_VOLMGR_NO_SUCH_USER: NTSTATUS = 0xC038002Bu32 as i32;
pub const STATUS_VOLMGR_NOTIFICATION_RESET: NTSTATUS = 0xC038002Cu32 as i32;
pub const STATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID: NTSTATUS = 0xC038002Du32 as i32;
pub const STATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID: NTSTATUS = 0xC038002Eu32 as i32;
pub const STATUS_VOLMGR_PACK_DUPLICATE: NTSTATUS = 0xC038002Fu32 as i32;
pub const STATUS


/*
 MobaLedLib: LED library for model railways
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 Copyright (C) 2020  Jürgen Winkler: MobaLedLib@a1.net

 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.

 This library is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 -------------------------------------------------------------------------------------------------------------

  Base class for MLL Zentral User Interfaces and also a adapter class

	it defines a weak function getUserInterface.
	A concrete user interface implementation must return its own instance pointer as a result of getUserInterface.

Revision History :
~~~~~~~~~~~~~~~~~
10.11.20:  Versions 1.0 (Jürgen)

*/

#ifndef USERINTERFACE_H
#define USERINTERFACE_H

#include <Arduino.h>

class UserInterface
{
private:
	UserInterface* ui;
protected:
	UserInterface();
public:
	// pass a pointer to the getUserInterface function
	// may by null to disable the user interface
	UserInterface(UserInterface* (*getUserInterface)());
	virtual void setup();
	virtual void loop();
	virtual void setConnected(bool connected);
	virtual void setIPAddress(String adress);
	virtual void setCounters(int delayCount, int reviveCount);
};

UserInterface* getUserInterface() __attribute__((weak));

#endif


lder.CreateTable(
                name: "WebHookAttempts",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    MessageGuid = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
                    LastAttemptTimestamp = table.Column<DateTime>(type: "datetime2", nullable: false),
                    EventTimestamp = table.Column<DateTime>(type: "datetime2", nullable: false),
                    EventType = table.Column<string>(type: "nvarchar(max)", nullable: false),
                    WebHookSubscriptionId = table.Column<int>(type: "int", nullable: false),
                    Uri = table.Column<string>(type: "nvarchar(max)", nullable: false),
                    Delivered = table.Column<bool>(type: "bit", nullable: false),
                    Body = table.Column<string>(type: "nvarchar(max)", nullable: false),
                    Signature = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    RetryCount = table.Column<int>(type: "int", nullable: false),
                    ResponseCode = table.Column<int>(type: "int", nullable: false),
                    ResponseHeaders = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    ResponseMessage = table.Column<string>(type: "nvarchar(max)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_WebHookAttempts", x => x.Id);
                    table.ForeignKey(
                        name: "FK_WebHookAttempts_WebHookSubscriptions_WebHookSubscriptionId",
                        column: x => x.WebHookSubscriptionId,
                        principalTable: "WebHookSubscriptions",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                });

            migrationBuilder.CreateIndex(
                name: "IX_SubscriptionWebHookType_WebHookSubscriptionId",
                table: "SubscriptionWebHookType",
                column: "WebHookSubscriptionId");

            migrationBuilder.CreateIndex(
                name: "IX_WebHookAttempts_WebHookSubscriptionId",
                table: "WebHookAttempts",
                column: "WebHookSubscriptionId");
        }

        /// <inheritdoc />
        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(
                name: "SubscriptionWebHookType");

            migrationBuilder.DropTable(
                name: "WebHookAttempts");

            migrationBuilder.DropTable(
                name: "WebHookSubscriptions");
        }
    }
}


 QuatD.size * 2

        /** Creates an identity dual quaternion.
         *  @see gtx_dual_quaternion */
        fun identity() = DualQuatD()
    }

    override fun equals(other: Any?) = other is DualQuatD && real == other.real && dual == other.dual
    override fun hashCode() = 31 * real.hashCode() + dual.hashCode()
}/*
 * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

package org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.java

import com.intellij.psi.PsiNamedElement
import org.jetbrains.dokka.Platform
import org.jetbrains.dokka.analysis.java.doccomment.DocComment
import org.jetbrains.dokka.analysis.java.parsers.DocCommentParser
import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.CompilerDescriptorAnalysisPlugin
import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.configuration.from
import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.translator.parseFromKDocTag
import org.jetbrains.dokka.links.DRI
import org.jetbrains.dokka.model.doc.DocumentationNode
import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.plugability.plugin
import org.jetbrains.dokka.plugability.querySingle
import org.jetbrains.dokka.utilities.DokkaLogger

internal class DescriptorKotlinDocCommentParser(
    private val context: DokkaContext,
    private val logger: DokkaLogger
) : DocCommentParser {

    override fun canParse(docComment: DocComment): Boolean {
        return docComment is DescriptorKotlinDocComment
    }

    override fun parse(docComment: DocComment, context: PsiNamedElement): DocumentationNode {
        val kotlinDocComment = docComment as DescriptorKotlinDocComment
        return parseDocumentation(kotlinDocComment)
    }

    fun parseDocumentation(element: DescriptorKotlinDocComment, parseWithChildren: Boolean = true): DocumentationNode {
        val sourceSet = context.configuration.sourceSets.let { sourceSets ->
            sourceSets.firstOrNull { it.sourceSetID.sourceSetName == "jvmMain" }
                ?: sourceSets.first { it.analysisPlatform == Platform.jvm }
        }
        val kdocFinder = context.plugin<CompilerDescriptorAnalysisPlugin>().querySingle { kdocFinder }
        return parseFromKDocTag(
            kDocTag = element.comment,
            externalDri = { link: String ->
                try {
                    kdocFinder.resolveKDocLink(element.descriptor, link, sourceSet)
                        .firstOrNull()
                        ?.let { DRI.from(it) }
                } catch (e1: IllegalArgumentException) {
                    logger.warn("Couldn't resolve link for $link")
                    null
                }
            },
            kdocLocation = null,
            parseWithChildren = parseWithChildren
        )
    }
}

/*
 * Copyright 2014-2024 JetBrains s.r.o. Use of this source


u4E86\u6211\u7684\u6280\u80FD\u548C\u7ECF\u9A8C\u3002\u9664\u4E86\u8BC6\u522B\u548C\u7EA0\u6B63\u4EFB\u4F55\u9519\u8BEF\u5916\uFF0C\u4F60\u8FD8\u5E94\u8BE5\u63D0\u51FA\u5BF9\u7B80\u5386\u6574\u4F53\u7ED3\u6784\u548C\u7EC4\u7EC7\u7684\u6539\u8FDB\u5EFA\u8BAE\u3002

            \u8BF7\u786E\u4FDD\u4F60\u7684\u7F16\u8F91\u5DE5\u4F5C\u5168\u9762\u8986\u76D6\u7B80\u5386\u7684\u6240\u6709\u76F8\u5173\u65B9\u9762\uFF0C\u5305\u62EC\u683C\u5F0F\u3001\u5E03\u5C40\u548C\u5185\u5BB9\u3002\u5728\u7F16\u8F91\u8FC7\u7A0B\u4E2D\uFF0C\u8BF7\u4E0D\u8981\u5305\u542B\u4EFB\u4F55\u4E2A\u4EBA\u610F\u89C1\u6216\u504F\u597D\uFF0C\u800C\u662F\u4E13\u6CE8\u4E8E\u7B80\u5386\u64B0\u5199\u7684\u6700\u4F73\u5B9E\u8DF5\u548C\u884C\u4E1A\u6807\u51C6\u3002\u4EE5\u4E0B\u662F\u7B80\u5386\u5185\u5BB9\uFF1A

            # \u8054\u7CFB\u65B9\u5F0F

            - \u624B\u673A\uFF1A135....
            - Email\uFF1Agoodman@gmail.com
            - QQ/\u5FAE\u4FE1\u53F7\uFF1A6...

            # \u4E2A\u4EBA\u4FE1\u606F

            - \u51B7\u718A/\u7537/1990
            - \u672C\u79D1/\u5317\u6781\u5927\u5B66\u8BA1\u7B97\u673A\u7CFB
            - \u5DE5\u4F5C\u5E74\u9650\uFF1A3\u5E74
            - \u5FAE\u535A\uFF1A[@Easy](http://weibo.com/easy)
            - \u6280\u672F\u535A\u5BA2\uFF1Ahttp://old.ftqq.com
            - Github\uFF1Ahttp://github.com/easychen

            - \u671F\u671B\u804C\u4F4D\uFF1APHP\u9AD8\u7EA7\u7A0B\u5E8F\u5458\uFF0C\u5E94\u7528\u67B6\u6


dri/nv10: Fix the CLAMP texture wrap mode.

dri/nv04: Use nvgl_wrap_mode().

dri/nouveau: Remove unnecessary assertion.

dri/nouveau: Cleanup more references to old FBOs and VBOs.

dri/nv10-nv20: Fix texturing in some cases after a base level change.

dri/nouveau: Fix software mipmap generation on 1x1 textures.

dri/nouveau: Have a smaller amount of larger scratch buffers.

dri/nouveau: Remove unnecessary flush.

dri/nv10: Use fast Z clears.

dri/nouveau: Minor cleanup.

dri/nv10: Fake fast Z clears for pre-nv17 cards.

dri/nouveau: Initialize tile_flags when allocating a render target.

nouveau: Get larger push buffers.

dri/nouveau: Force a "slow" Z clear if we're getting a new depth buffer.

dri/nv20: Clear with the 3D engine.

dri/nouveau: Don't assert(0) on compressed internal formats.

dri/nv25: Bind a hierarchical depth buffer.

dri/nouveau: Call _mesa_update_state() after framebuffer invalidation.

dri/nouveau: Honor the access flags in nouveau_bufferobj_map_range.

dri/nouveau: Tell the vbo module we want real hardware BOs.

dri/nouveau: Split out the scratch helpers to a separate file.

dri/nouveau: Avoid recursion in nouveau_bo_context_reset().

dri/nouveau: Use a macro to iterate over the bound vertex attributes.

dri/nouveau: Split out array handling to its own file.

dri/nouveau: Optimize VBO binding re-emission.

dri/nouveau: Keep small DYNAMIC_DRAW vertex buffers in system ram.

dri/nouveau: Pipeline glTexSubImage texture transfers.

dri/nouveau: Fix type promotion issue on 32bit platforms.

dri/nouveau: Validate the framebuffer state on read buffer changes.

dri/nouveau: Re-emit the BO state when coming back from a software fallback.

meta: Don't leak alpha function/reference value changes.

meta: Fix incorrect rendering of the bitmap alpha component.

vbo: Avoid unnecessary copy to/from current in vertex format upgrade.

meta: Don't try to disable cube maps if the driver doesn't expose the extension.

meta: Handle bitmaps with alpha test enabled.

dri/nouveau: Split hardware/software TNL instantiation more cleanly.

dri/nouveau: Fix typo.

dri/nouveau: Kill a bunch of ternary operators.

Fredrik Höglund (2):

r600g: Fix texture sampling with swizzled coords

r600g: fix pow(0, 0) evaluating to NaN

Guillermo S. Romero (1):

r300g: Do not use buf param before checking for NULL.

Henri Verbeet (19):

<


 {
  background-color: var(--green-light);
}

.admonition.warning,
.admonition.warn,
.admonition.caution,
.admonition.attention,
.admonition.important {
  border: 2px solid var(--orange-subtle);
}

.admonition.warning .admonition-title,
.admonition.warn .admonition-title,
.admonition.caution .admonition-title,
.admonition.attention .admonition-title,
.admonition.important .admonition-title {
  background-color: var(--orange-subtle);
}

.admonition.danger,
.admonition.critical,
.admonition.failure,
.admonition.fail,
.admonition.missing {
  border: 2px solid var(--red);
}

.admonition.danger .admonition-title,
.admonition.critical .admonition-title,
.admonition.failure .admonition-title,
.admonition.fail .admonition-title,
.admonition.missing .admonition-title {
  background-color: var(--red);
}

/* Repo link */
.repo-link image,
.repo-link img {
  filter: invert(var(--repo-link-invert)) sepia(0%) saturate(2574%) hue-rotate(155deg)
    brightness(113%) contrast(77%);
}

.repo-link:after {
  background-color: inherit !important;
}

/* Secondary side-bar */

.sidebar--secondary {
  right: 0px;
  position: fixed;
  top: 100px;
  padding: 24px;
  height: 100%;
  overflow-y: auto;
  font-size: 0.9rem;
  border-left: 1px solid var(--grey-light-silver);
  background-color: var(--grey-white);
}

.sidebar--secondary .child-li {
  padding-left: 0.6rem;
}

.sidebar--secondary ul {
  list-style: none;
  margin: 0;
  padding: 0;
  margin-bottom: 24px;
}
.sidebar--secondary li {
  margin-bottom: 8px;
}

.kpn-style {
  min-height: 82vh;
  max-width: 850px;
  /* padding: 1rem;
  background-color: white; */
  width: 100%;
}
.card {
  width: 100%;
}
table {
  display: block;
  overflow-x: auto;
}
.top-bar__item__version {
  display: none;
}

@media only screen and (min-width: 992px) {

  .side-bar .side-bar__sub-menu .side-bar__link {
    line-height: 1.5;
    padding-left: 25px;
    margin-top: .4em;
  }

  .side-bar__sub-menu.side-bar__sub-menu--visible {
    margin-left: calc(24px + 30px);
    border-color: var(--grey-silver);
    border-left-width: 1px;
    border-left-style: solid;
  }

  .top-bar__item__version {
    display: unset;
  }

  .sidebar--secondary {
    width: 170px;
  }

  .content-block {
    margin-right: 12.1rem;
    display: flex;
    justify-content: center;
  }

  .kpn-style {
    min-height: 76vh;
    max-width: 850px;
    /*
    background-color: white; */
  }
  .card {
    width: inherit;
    padding: 1rem;
  }

  label[for="dark-mode"]:hover {
    filter: var(--dark-mode-label-filter-hover);
  }
  .repo-link:hover image,
  .repo-link:hover img {


A)

        // compute g
        scoped_mpz_vector tmp1(nm), g(nm);
        g.push_back(numeral());
        nm.set(g.back(), 1); // g = 1
        upm.mul(A_lifted.size(), A_lifted.data(), U.size(), U.data(), tmp1); // tmp1 = AU
        upm.sub(g.size(), g.data(), tmp1.size(), tmp1.data(), g); // g = 1 - UA
        upm.mul(B_lifted.size(), B_lifted.data(), V.size(), V.data(), tmp1); // tmp1 = BV
        upm.sub(g.size(), g.data(), tmp1.size(), tmp1.data(), g); // g = 1 - UA - VB
        upm.div(g, pe);
        to_zp_manager(zpe_upm, g);
        TRACE("polynomial::factorization::bughunt",
            tout << "g = (1 - A_lifted*U - B_lifted*V)/" << nm.to_string(pe) << endl;
            tout << "g == "; upm.display(tout, g); tout << endl;
        );

        // compute the S, T
        scoped_mpz_vector S(nm), T(nm), t(nm), tmp2(nm);
        zpe_upm.mul(g.size(), g.data(), V.size(), V.data(), tmp1); // tmp1 = gV
        zpe_upm.div_rem(tmp1.size(), tmp1.data(), A.size(), A.data(), t, T); // T = gV - tA, deg(T) < deg(A)
        zpe_upm.mul(g.size(), g.data(), U.size(), U.data(), tmp1); // tmp1 = gU
        zpe_upm.mul(t.size(), t.data(), B.size(), B.data(), tmp2); // tmp2 = tB
        zpe_upm.add(tmp1.size(), tmp1.data(), tmp2.size(), tmp2.data(), S);

        // now update U = U + a*S and V = V + a*T
        upm.mul(S.size(), S.data(), pe);
        upm.mul(T.size(), T.data(), pe);
        upm.add(U.size(), U.data(), S.size(), S.data(), U);
        upm.add(V.size(), V.data(), T.size(), T.data(), V); // deg(V) < deg(A), deg(T) < deg(A) => deg(V') < deg(A)

        // we go quadratic
        zpe_upm.m().set_p_sq();
        to_zp_manager(zpe_upm, U);
        to_zp_manager(zpe_upm, V);
        to_zp_manager(zpe_upm, A_lifted);
        to_zp_manager(zpe_upm, B_lifted);

        // at this point we have INVARIANT(a = (p^e)^2, b = (p^e)^2, r = (p^e)^2)
        A.swap(A_lifted);
        B.swap(B_lifted);

        CASSERT("polynomial::factorizatio::bughunt", check_quadratic_hensel(zpe_upm, U, A, V, B));
    }
}

bool check_hensel_lift(z_manager & upm, numeral_vector const & f, zp_factors const & zp_fs, zp_factors const & zpe_fs, unsigned e) {
    numeral_manager & nm(upm.m());

    zp_manager & zp_upm = zp_fs.upm();
    zp_manager & zpe_upm = zpe_fs.upm();

    numeral const & p = zp_fs.nm().p();
    numeral const & p


t(const BoxConstraints(maxWidth: 800));

        stateManager.insertColumns(columnIdxToInsert, columnsToInsert);

        expect(
          stateManager.refRows[0].cells['column1']!.value,
          defaultValue,
        );

        expect(
          stateManager.refRows[1].cells['column1']!.value,
          defaultValue,
        );
      },
    );

    test(
        'columnSizeConfig.restoreAutoSizeAfterInsertColumn 이 false 면, '
        'activatedColumnsAutoSize 가 false 로 변경 되어야 한다.', () {
      final columns = ColumnHelper.textColumn('title', count: 5);

      PlutoGridStateManager stateManager = getStateManager(
        columns: columns,
        rows: [],
        gridFocusNode: null,
        scroll: scroll,
        configuration: const PlutoGridConfiguration(
          columnSize: PlutoGridColumnSizeConfig(
            autoSizeMode: PlutoAutoSizeMode.equal,
            restoreAutoSizeAfterInsertColumn: false,
          ),
        ),
      );

      stateManager.setLayout(
        const BoxConstraints(maxWidth: 450, maxHeight: 600),
      );

      expect(stateManager.activatedColumnsAutoSize, true);

      stateManager.insertColumns(0, ColumnHelper.textColumn('title'));

      expect(stateManager.activatedColumnsAutoSize, false);
    });
  });

  group('removeColumns', () {
    testWidgets(
      '0번 컬럼을 삭제하면 컬럼이 삭제되어야 한다.',
      (WidgetTester tester) async {
        final List<PlutoColumn> columns = ColumnHelper.textColumn(
          'column',
          count: 10,
        );

        final List<PlutoRow> rows = RowHelper.count(2, columns);

        PlutoGridStateManager stateManager = getStateManager(
          columns: columns,
          rows: rows,
          gridFocusNode: null,
          scroll: scroll,
        );

        stateManager.setLayout(const BoxConstraints(maxWidth: 800));

        stateManager.removeColumns([columns[0]]);

        expect(stateManager.refColumns.length, 9);
      },
    );

    testWidgets(
      '0번 컬럼을 삭제하면 해당 컬럼의 셀이 삭제 되어야 한다.',
      (WidgetTester tester) async {
        final List<PlutoColumn> columns = ColumnHelper.textColumn(
          'column',
          count: 10,
        );

        final List<PlutoRow> rows = RowHelper.count(2, columns);

        PlutoGridStateManager stateManager = getStateManager(
          columns: columns,
          rows: rows,
          gridFocusNode: null,
          scroll: scroll,
        );

        stateManager.setLayout(const BoxConstraints(maxWidth: 800));

        expect(stateManager.refRows[0].cells.entries.length, 10);

        stateManager.removeColumns([columns[0]]);

        expect(stateManager.refRows[0].cells.entries.length, 9);
      },
    );

    testWidgets(
      '8, 8번 컬럼을 삭제하면 해당 컬럼의 셀이 삭제 되어야 한다.',
      (WidgetTester tester) async {
        final List<PlutoColumn> columns = ColumnHelper.textColumn(
          'column',
          count: 10,
        );

        final List<PlutoRow> rows = RowHelper.count(2, columns);

        PlutoGridStateManager stateManager = getStateManager(
          columns: columns,
          rows: rows,
          gridFocusNode: null,
          scroll: scroll,
        );

        stateManager.setLayout(const BoxConstraints(maxWidth: 800));

        expect(stateManager.refRows[0].cells.entries.length, 10);

        stateManager.


我们所犯的错误，基本方面是“左”。这是因为我们对内蒙的情况缺乏辩证唯物主义的进行阶级分析，而是形而上学地看问题造成的。在伟大领袖毛主席亲自领导和关怀下，本来内蒙的形势是很好的，如果我们不犯这种错误，认真贯彻落实毛主席的各项无产阶级政策，内蒙的形势会更好。我们感到很痛心，辜负了毛主席和党中央对我们的信任。我们对自己所犯的严重错误觉悟很迟，中央严肃批评后，我们也没有完全理解，还想慢慢地克服就是了。正如中央领导同志批评的那样，我们有私心，有骄傲，总是看成绩多，怕否定大方向，怕否定了成绩，怕影响威信，没有很迅速地痛下决心检查、改正错误。在伟大领袖毛主席一系列最新指示鼓舞下，现在内蒙地区对落实政策，已初见成效。

   我们的错误对革命损害很大，它混淆了阶级阵线，伤害了一些好人，影响了文化大革命的胜利进程，在干部和群众的思想上造成了严重混乱。我们辜负了毛主席和党中央对我们的信任和爱护。经中央严肃批评和耐心教育后，我们已初步认识到所犯错误的严重性，愉快地承担一切责任，打掉一切私心杂念，决心改正错误，坚决地、忠实地、迅速地落实伟大领袖毛主席的各项无产阶级政策，坚决完成“九大”规定的各项战斗任务，夺取更大的胜利。

   以上检查还是肤浅的，认识是不够的。我们将在工作实践中逐步加深认识，认真读毛主席的书，不断地把自己当作革命对象，不断改造世界观，决心把内蒙的工作做好。

   不当之处，盼指示。

   滕海清吴涛李树德一九六九年四月十九日

   已发：内蒙古自治区县(旗)团、公社(合作社)、独立营以上的革委会、党委、军管组织。共二○、○○○份。

   另发各省、市、自治区革�


, region: no, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Njinikom", posX: 6.240, posY: 10.280, region: no, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Bafut", posX: 6.080, posY: 10.100, region: no, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Mbengwi", posX: 6.020, posY: 10.000, region: no, pays: "Cameroun" });

    // creation des villes de la region de l'ouest
    await this.setValue(db, "ville",
      { nom: "Bafoussam", posX: 5.490, posY: 10.410, region: ou, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Bangangte", posX: 5.150, posY: 10.510, region: ou, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Foumban", posX: 5.730, posY: 10.900, region: ou, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Mbouda", posX: 5.640, posY: 10.250, region: ou, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Bana", posX: 5.150, posY: 10.260, region: ou, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Foumbot", posX: 5.520, posY: 10.630, region: ou, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Bafang", posX: 5.170, posY: 10.180, region: ou, pays: "Cameroun" });

    // creation des villes de la region du sud
    await this.setValue(db, "ville",
      { nom: "Limbe", posX: 4.020, posY: 9.190, region: sd, pays: "Cameroun" });
    await this.setValue(db, "ville",
      { nom: "Ebolowa", posX: 2.930, posY: 11.140, region: sd, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Sangmelima", posX: 2.940, posY: 11.970, region: sd, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Kribi", posX: 2.940, posY: 9.910, region: sd, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Djoum", posX: 2.670, posY: 12.670, region: sd, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Mvangue", posX: 2.970, posY: 11.520, region: sd, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Akom", posX: 2.790, posY: 10.560, region: sd, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Lolodorf", posX: 3.250, posY: 10.720, region: sd, pays: "Cameroun" });

    await this.setValue(db, "ville",
      { nom: "Ambam", posX: 2.390, posY: 11.280, region: sd, pays: "Cameroun" });

    // creation


= atoll(p);
      }

      switch (argvv[i][1]) {
  	case 'N':
  	    nn = num;
  	    break;

  	case 'I':
  	    niter = num;
  	    break;

  	case 'K':
	    // Iterations in kernel -- reset dividing by 200 for nooffload
  	    kscale = num;
  	    kkmax = num * 2000;
  	    break;

  	default:
  	    Print_Usage();
      }
      i = j;
    }
  }

  thispid = getpid();
  fprintf(stdout, "    [%d] minitest process started\n", thispid );

  // Check for environment variable to run the tracker binary
  // It is run before MPI_Init and after MPI_Fini
  char *s = getenv("RUN_TRACKER");
  if (s != NULL) {
    fprintf(stdout, "    [%d] Running of tracker enabled\n", thispid );
    run_tracker = true;
  } else {
    // fprintf(stdout, "    [%d] Running of tracker disabled\n", thispid );
    run_tracker = false;
  }

  // run tracker before MPI_Init
  tracker();

#ifdef USE_MPI
  // Check for environment variable to run the the mpitracker binary
  // It is run after MPI_Init and again before MPI_Fini
  s = getenv("RUN_MPITRACKER");
  if (s != NULL) {
    fprintf(stdout, "    [%d] Running of mpitracker enabled\n", thispid );
    run_mpitracker = true;
  } else {
    // fprintf(stdout, "    [%d] Running of mpitracker disabled\n", thispid );
    run_mpitracker = false;
  }

  //Initialize MPI
  int rex = MPI_Init(&argcc, &argvv);
  if (rex != MPI_SUCCESS) {
    fprintf(stderr, "    [%d] ERROR: MPI_Init failed, returning %d\n", thispid, rex);
    exit (-1);
  } else {
    fprintf(stdout, "    [%d] MPI_Init succeeded, returning %d\n", thispid, rex);
  }

  // Determine rank
  int res;
  MPI_Comm communicator = MPI_COMM_WORLD;
  res = MPI_Comm_rank (communicator, &mpi_rank);
  if (res != MPI_SUCCESS) {
    fprintf(stderr, "    [%d] ERROR: MPI_Comm_rank failed, returning %d\n", thispid, res);
    exit (0);
  } else {
    // fprintf(stdout, "    [%d] MPI_Comm_rank = %d \n", thispid, mpi_rank);
  }
  // invoke mpitracker
   mpitracker();
#endif

  int ret = gethostname (hostname, 1024);
  if ( ret != 0 ) {
    fprintf(stderr, "    [%d] ERROR: gethostname failed: %d, err = %s\n", thispid, ret, strerror(errno) );
    exit(-1);
  }

  if (mpi_rank == -1 ) {
    fprintf(stdout, "  [%d] Process %d, Host %s\n",
      thispid, thispid, hostname );
  } else {
    fprintf(stdout, "  [%d] Process %d, MPI Rank %d,  Host %s\n",
      thispid, thispid, mpi_rank, hostname );
  }
  // Measure the overhead of real-time accounting
  hrtime_t accttime = gethrtime();
  hrtime_t endtime = gethrtime();
  double  tempus =  (double) (endtime - accttime)  ;
  fprintf(stdout, "       [%d] overhead of real-time delta measurement: %10.3f ns.\n\n",
    thispid, tempus);
}

// Synchronize  multiple MPI processes  -- call MPI_BARRIER
void
mpisync()
{
#


 please refer to instructions dump.
        To view partially-correct code enable 'Show inconsistent code' option in preferences
    */
    public ChipGroup(android.content.Context r8, android.util.AttributeSet r9, int r10) {
        /*
            r7 = this;
            int r4 = com.google.android.material.chip.ChipGroup.n
            android.content.Context r8 = com.google.android.material.theme.overlay.MaterialThemeOverlay.wrap(r8, r9, r10, r4)
            r7.<init>(r8, r9, r10)
            com.google.android.material.chip.ChipGroup$b r8 = new com.google.android.material.chip.ChipGroup$b
            r0 = 0
            r8.<init>()
            r7.j = r8
            com.google.android.material.chip.ChipGroup$c r8 = new com.google.android.material.chip.ChipGroup$c
            r8.<init>()
            r7.k = r8
            r8 = -1
            r7.l = r8
            r6 = 0
            r7.m = r6
            android.content.Context r0 = r7.getContext()
            int[] r2 = com.google.android.material.R.styleable.ChipGroup
            int[] r5 = new int[r6]
            r1 = r9
            r3 = r10
            android.content.res.TypedArray r9 = com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes(r0, r1, r2, r3, r4, r5)
            int r10 = com.google.android.material.R.styleable.ChipGroup_chipSpacing
            int r10 = r9.getDimensionPixelOffset(r10, r6)
            int r0 = com.google.android.material.R.styleable.ChipGroup_chipSpacingHorizontal
            int r0 = r9.getDimensionPixelOffset(r0, r10)
            r7.setChipSpacingHorizontal(r0)
            int r0 = com.google.android.material.R.styleable.ChipGroup_chipSpacingVertical
            int r10 = r9.getDimensionPixelOffset(r0, r10)
            r7.setChipSpacingVertical(r10)
            int r10 = com.google.android.material.R.styleable.ChipGroup_singleLine
            boolean r10 = r9.getBoolean(r10, r6)
            r7.setSingleLine(r10)
            int r10 = com.google.android.material.R.styleable.ChipGroup_singleSelection
            boolean r10 = r9.getBoolean(r10, r6)
            r7.setSingleSelection(r10)
            int r10 = com.google.android.material.R.styleable.ChipGroup_selectionRequired
            boolean r10 = r9.getBoolean(r10, r6)
            r7.setSelectionRequired(r10)
            int r10 = com.google.android.material.R.styleable.ChipGroup_checkedChip
            int r10 = r9.getResourceId(r10, r8)
            if (r10 == r8) goto L69
            r7.l = r10
        L69:
            r9.recycle()
            com.google.android.material.chip.ChipGroup$c r8 = r7.k
            super.setOnHierarchyChangeListener(r8)
            r8 = 1
            androidx.core.view.ViewCompat.setImportantForAccessibility(r7, r8)
            return
        */
        throw new UnsupportedOperationException("Method not decompiled: com.google.android.material.chip.ChipGroup.<init>(android.content.Context, android.util.AttributeSet, int):void");
    }

    private int getChipCount() {
        int i2 = 0;
        for (int i3 = 0; i3 < getChildCount(); i3++) {
            if (getChildAt(i3) instanceof Chip) {
                i2++;
            }
        }
        return i2;
    }

    /* JADX INFO: Access modifiers changed from: private */
    public void l(int i2, boolean z) {
        this.l = i2;
        OnCheckedChangeListener onCheckedCha


.Printf("Denon/StagelinQ: Device %s not present, skipping\n", device.Name)
			continue
		}

		m.stagelinqMu.Lock()
		deviceID := device.IP.String()
		if _, exists := m.stagelinqDevices[deviceID]; exists {
			m.stagelinqMu.Unlock()
			m.logger.Printf("Denon/StagelinQ: Device %s already connected, skipping\n", device.Name)
			continue
		}
		m.stagelinqDevices[deviceID] = device
		m.stagelinqMu.Unlock()

		m.logger.Printf("Denon/StagelinQ: New device %s, connecting...\n", device.Name)
		go m.connectToStagelinQDevice(device, deviceState)
	}
}

func (m *Model) connectToStagelinQDevice(device *stagelinq.Device, deviceState stagelinq.DeviceState) {
	m.logger.Printf("Denon/StagelinQ: Connecting to device %s at %s\n", device.Name, device.IP.String())

	deviceConn, err := device.Connect(m.stagelinqListener.Token(), []*stagelinq.Service{})
	if err != nil {
		m.logger.Printf("Denon/StagelinQ: Failed to connect to %s: %v\n", device.Name, err)
		m.trackChan <- TrackDetails{
			Artist: "Connection Error",
			Track:  fmt.Sprintf("Failed to connect to %s: %v", device.Name, err),
			Time:   time.Now(),
		}
		return
	}
	defer deviceConn.Close()
	m.logger.Printf("Denon/StagelinQ: Connected to device %s\n", device.Name)

	m.logger.Printf("Denon/StagelinQ: Requesting services from %s\n", device.Name)
	services, err := deviceConn.RequestServices()
	if err != nil {
		m.logger.Printf("Denon/StagelinQ: Failed to request services from %s: %v\n", device.Name, err)
		return
	}
	m.logger.Printf("Denon/StagelinQ: Received %d services from %s\n", len(services), device.Name)

	var stateMapPort uint16
	for _, service := range services {
		m.logger.Printf("Denon/StagelinQ: Service found - Name: %s, Port: %d\n", service.Name, service.Port)
		if service.Name == "StateMap" {
			stateMapPort = service.Port
			break
		}
	}

	if stateMapPort == 0 {
		m.logger.Printf("Denon/StagelinQ: StateMap service not found on %s\n", device.Name)
		return
	}
	m.logger.Printf("Denon/StagelinQ: StateMap service found on port %d\n", stateMapPort)

	m.logger.Printf("Denon/StagelinQ: Dialing StateMap service on %s:%d\n", device.IP.String(), stateMapPort)
	stateMapTCPConn, err := device.Dial(stateMapPort)
	if err != nil {
		m.logger.Printf("Denon/StagelinQ: Failed to dial StateMap service: %v\n", err)
		return
	}
	defer stateMapTCPConn.Close()

	stateMapConn, err := stagelinq.NewStateMapConnection(stateMapTCPConn, m.stagelinqListener.Token())
	if err != nil {
		m.logger.Printf("Denon/StagelinQ: Failed to create StateMap connection: %v\n", err)
		return
	}
	m.logger.Println("Denon/StagelinQ: StateMap connection established")

	trackStates := []string{
		stagelinq.EngineDeck1.TrackTrackName(),
		stagelinq.EngineDeck1.TrackArtistName(),
		stagelinq.EngineDeck1.TrackSongName(),
		stagelinq.EngineDe


", "목", "금", "토")

    Row() {
        nameList.forEach {
            Box(
                modifier = Modifier.weight(1f),
                contentAlignment = Alignment.Center
            ) {
                Text(
                    text = it,
                    color = Color.White,
                    fontSize = 18.sp,
                    //fontWeight = FontWeight.ExtraBold
                )
            }
        }
    }

    Spacer(modifier = Modifier.height(8.dp))

    // 캘린더 날짜

    date.value.set(Calendar.DAY_OF_MONTH, 1)

    val monthDayMax = date.value.getActualMaximum(Calendar.DAY_OF_MONTH)    // 현재 달의 max
    val monthFirstDay = date.value.get(Calendar.DAY_OF_WEEK) - 1    // 1일이 무슨 요일부터인지
    val monthWeeksCount = (monthDayMax + monthFirstDay + 6) / 7     // 현재 달의 week 수

    var exist by remember { mutableStateOf(false) }

    Log.d("monthDayMax", monthDayMax.toString())
    Log.d("monthFirstDay", monthFirstDay.toString())
    Log.d("monthWeeksCount", monthWeeksCount.toString())

    Log.d("캘린더 updatecalendar", "본문 start")
    //updateCalendar()
    resultLog = SimpleDateFormat("yyyy-MM", Locale.KOREA).format(date.value.time)
    Log.d("캘린더 updatecalendar", "본문 end")

    Column() {
        repeat(monthWeeksCount) {week ->

            Row() {
                repeat(7) {day->

                    // 날짜 구하는 공식
                    val resultDay = week*7 + day - monthFirstDay + 1

                    if (resultDay in 1 .. monthDayMax) {

                        Box(
                            modifier = Modifier
                                .weight(1f)
                                .height(80.dp)
                                //.padding(10.dp)
                                .clickable {
                                    // 로그 페이지로 이동
                                    navController.navigate("LogScreen/$resultTime/$resultDay") {
                                    }
                                },
                            contentAlignment = Alignment.Center
                        ) {

                            Column(
                                horizontalAlignment = Alignment.CenterHorizontally
                            ) {

                                Box(
                                    modifier = Modifier
                                        .fillMaxWidth()
                                        .height(50.dp)
                                        .background(
                                            shape = CircleShape,
                                            color = if (todayDate == resultDay && todayTime == resultTime) Color(
                                                0xFF565298
                                            ) else Color.Transparent
                                        ),
                                    contentAlignment = Alignment.Center
                                ) {
                                    Text(
                                        text = resultDay.toString(),
                                        fontSize = 20.sp,
                                        color = Color.White,
                                    )
                                }

                                if (isExistListLoaded.value && (resultDay - 1) < existList.size) {
                                    if (existList[resultDay-1] == true) {
                                        Log.d("캘린더 circle 아이콘", "existList[resultDay]: ${existList[resultDay-1]}")
                                        Icon(Icons.Default.Circle, contentDescription = "circle", tint = Color.White, modifier = Modifier.size(10.dp))
                                    } else {
                                        Spacer(modifier = Modifier.size(10.dp))
                                    }