 SHALL BE THE IMMEDIATE, UNILATERAL
 * TERMINATION OF THIS AGREEMENT.
 */

package gov.nasa.kepler.ar.exporter;

import gov.nasa.kepler.common.ModifiedJulianDate;
import gov.nasa.kepler.hibernate.dbservice.DatabaseService;
import gov.nasa.kepler.hibernate.dbservice.DatabaseServiceFactory;
import gov.nasa.kepler.hibernate.dr.LogCrud;
import gov.nasa.kepler.hibernate.tad.TargetCrud;
import gov.nasa.kepler.hibernate.tad.TargetTable;
import gov.nasa.kepler.mc.cm.CelestialObjectOperations;
import gov.nasa.kepler.mc.dr.MjdToCadence.TimestampSeries;
import gov.nasa.kepler.mc.uow.ObservedKeplerIdUowTask;
import gov.nasa.spiffy.common.collect.Pair;
import gov.nasa.spiffy.common.io.FileUtil;
import gov.nasa.spiffy.common.pi.ModuleFatalProcessingException;

import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;

/**
 * Some common utilities for pipeline modules that export files on a per target
 * basis.
 *
 * @author Sean McCauliff
 *
 */
public class ExporterPipelineUtils {

    private static final Log log = LogFactory.getLog(ExporterPipelineUtils.class);

    /**
     *
     * @param uow
     * @param ttable
     * @param targetCrud
     * @param celestialObjectOperations
     * @return A sorted list of kepler ids for the sky group specified by the
     * unit of work or ones that do not have a skygroup.
     */
    public List<Integer> filteredListOfKeplerIdsForUow(
        ObservedKeplerIdUowTask uow, TargetTable ttable, TargetCrud targetCrud,
        CelestialObjectOperations celestialObjectOperations) {
        log.info("Get all the kepler ids for this unit of work.");
        List<Integer> allKeplerIds = targetCrud.retrieveObservedKeplerIds(ttable);
        int startIndex =
            Collections.binarySearch(allKeplerIds, uow.getStartKeplerId());
        if (startIndex < 0) {
            throw new ModuleFatalProcessingException("Bad start keplerId.");
        }
        int endIndex = Collections.binarySearch(allKeplerIds,
            uow.getEndKeplerId());
        if (endIndex < 0) {
            if (uow.getEndKeplerId() == Integer.MAX_VALUE) {
                endIndex = allKeplerIds.size() - 1;
            } else {
                throw new ModuleFatalProcessingException("Bad end keplerId");
            }
        }
        if (endIndex < startIndex) {
            throw new ModuleFatalProcessingException(
                "Start keplerId comes after endKeplerId");
        }

        List<Integer> keplerIds =
            new LinkedList<Integer>(allKeplerIds.subList(startIndex, endIndex + 1));
        Map<Integer, Integer> keplerIdToSkyGroupId = celestialObjectOperations.retrieveSkyGroupIdsForKeplerIds(keplerIds);
        Iterator<Integer> keplerIdIterator = keplerIds.iterator();
        while (keplerIdIterator.hasNext()) {
            Integer keplerId = keplerIdIterator.next();
            Integer skyGroupId = keplerIdToSkyGroupId.get(keplerId);
            //Just leave the nulls in for now.
            if (skyGroupId != null && skyGroupId.intValue() != uow.getSkyGroupId()) {
                keplerIdIterator.remove();
            }
        }
        return keplerIds;
    }

    /**


  38 60 00 04 */	li r3, 4
/* 800C0628 000BC288  38 80 00 00 */	li r4, 0
/* 800C062C 000BC28C  38 A0 00 0D */	li r5, 0xd
/* 800C0630 000BC290  38 C0 00 04 */	li r6, 4
/* 800C0634 000BC294  38 E0 00 00 */	li r7, 0
/* 800C0638 000BC298  39 00 00 00 */	li r8, 0
/* 800C063C 000BC29C  4B F9 93 8D */	bl func_800599C8
/* 800C0640 000BC2A0  38 60 00 01 */	li r3, 1
/* 800C0644 000BC2A4  38 80 00 00 */	li r4, 0
/* 800C0648 000BC2A8  38 A0 00 04 */	li r5, 4
/* 800C064C 000BC2AC  38 C0 00 00 */	li r6, 0
/* 800C0650 000BC2B0  38 E0 00 00 */	li r7, 0
/* 800C0654 000BC2B4  39 00 00 00 */	li r8, 0
/* 800C0658 000BC2B8  4B F9 93 71 */	bl func_800599C8
/* 800C065C 000BC2BC  38 81 00 98 */	addi r4, r1, 0x98
/* 800C0660 000BC2C0  38 60 00 02 */	li r3, 2
/* 800C0664 000BC2C4  4B F9 93 D9 */	bl func_80059A3C
/* 800C0668 000BC2C8  38 81 00 98 */	addi r4, r1, 0x98
/* 800C066C 000BC2CC  38 60 00 03 */	li r3, 3
/* 800C0670 000BC2D0  4B F9 93 CD */	bl func_80059A3C
lbl_800C0674:
/* 800C0674 000BC2D4  38 00 00 04 */	li r0, 4
/* 800C0678 000BC2D8  38 60 00 00 */	li r3, 0
/* 800C067C 000BC2DC  B0 0D 82 62 */	sth r0, lbl_8063D522-_SDA_BASE_(r13)
/* 800C0680 000BC2E0  4B FF 9F 81 */	bl func_800BA600
/* 800C0684 000BC2E4  54 60 00 36 */	rlwinm r0, r3, 0, 0, 0x1b
/* 800C0688 000BC2E8  38 80 00 00 */	li r4, 0
/* 800C068C 000BC2EC  60 03 00 04 */	ori r3, r0, 4
/* 800C0690 000BC2F0  4B FF 9F 5D */	bl func_800BA5EC
/* 800C0694 000BC2F4  38 60 00 00 */	li r3, 0
/* 800C0698 000BC2F8  38 80 2C 9E */	li r4, 0x2c9e
/* 800C069C 000BC2FC  4B FF A3 55 */	bl func_800BA9F0
/* 800C06A0 000BC300  48 00 01 04 */	b lbl_800C07A4
lbl_800C06A4:
/* 800C06A4 000BC304  88 0D 9C 22 */	lbz r0, lbl_8063EEE2-_SDA_BASE_(r13)
/* 800C06A8 000BC308  28 00 00 01 */	cmplwi r0, 1
/* 800C06AC 000BC30C  40 81 00 64 */	ble lbl_800C0710
/* 800C06B0 000BC310  38 60 00 02 */	li r3, 2
/* 800C06B4 000BC314  38 80 00 00 */	li r4, 0
/* 800C06B8 000BC318  38 A0 00 0D */	li r5, 0xd
/* 800C06BC 000BC31C  38 C0 00 00


 Err(Box::new(BitSerializationError::NotOnCurve)),
                }
            }

            //Other combinations are illegal
            _ => Err(Box::new(BitSerializationError::InvalidFlags)),
        }
    }
}

impl<P: Parameters> Default for GroupAffine<P> {
    #[inline]
    fn default() -> Self {
        Self::zero()
    }
}

#[derive(Derivative)]
#[derivative(
    Copy(bound = "P: Parameters"),
    Clone(bound = "P: Parameters"),
    Eq(bound = "P: Parameters"),
    Debug(bound = "P: Parameters"),
    Hash(bound = "P: Parameters")
)]
#[derive(Serialize, Deserialize)]
pub struct GroupProjective<P: Parameters> {
    pub x: P::BaseField,
    pub y: P::BaseField,
    pub z: P::BaseField,
    #[serde(skip)]
    _params: PhantomData<P>,
}

impl<P: Parameters> Display for GroupProjective<P> {
    fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
        write!(f, "{}", self.into_affine())
    }
}

impl<P: Parameters> PartialEq for GroupProjective<P> {
    fn eq(&self, other: &Self) -> bool {
        if self.is_zero() {
            return other.is_zero();
        }

        if other.is_zero() {
            return false;
        }

        if (self.x * &other.z) != (other.x * &self.z) || (self.y * &other.z) != (other.y * &self.z)
        {
            false
        } else {
            true
        }
    }
}

impl<P: Parameters> Distribution<GroupProjective<P>> for Standard {
    #[inline]
    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> GroupProjective<P> {
        let res = GroupProjective::prime_subgroup_generator() * &P::ScalarField::rand(rng);
        debug_assert!(res.into_affine().is_in_correct_subgroup_assuming_on_curve());
        res
    }
}

impl<P: Parameters> ToBytes for GroupProjective<P> {
    #[inline]
    fn write<W: Write>(&self, mut writer: W) -> IoResult<()> {
        self.x.write(&mut writer)?;
        self.y.write(&mut writer)?;
        self.z.write(writer)
    }
}

impl<P: Parameters> FromBytes for GroupProjective<P> {
    #[inline]
    fn read<R: Read>(mut reader: R) -> IoResult<Self> {
        let x = P::BaseField::read(&mut reader)?;
        let y = P::BaseField::read(&mut reader)?;
        let z = P::BaseField::read(reader)?;
        Ok(Self::new(x, y, z))
    }
}

impl<P: Parameters> FromBytesChecked for GroupProjective<P> {
    fn read_checked<R: Read>(mut reader: R) -> IoResult<Self> {
        let x = P::BaseField::read_checked(&mut reader)?;
        let y = P::BaseField::read_checked(&mut reader)?;
        let z = P::BaseField::read_checked(reader)?;
        let point = Self::new(x, y, z);
        if !point.group_membership_test() {
            return Err(IoError::new(
                ErrorKind::InvalidData,
                "invalid point: group membership test failed",
            ));
        }
        Ok(point)
    }
}

impl<P: Parameters> Default for GroupProjective<P> {
    #[inline]
    fn default() -> Self {
        Self::zero()
    }
}

impl<P: Parameters> GroupProjective<P> {
    pub fn new(x: P::BaseField, y: P::BaseField, z: P::BaseField) -> Self {
        Self {


 B& b, int ne, int a2, int b2) {
  a = ExecViewManaged<ExecViewManaged<Scalar[NP][NP][NUM_LEV]>**>("3d fields", ne, a2);
  b = ExecViewManaged<ExecViewManaged<Scalar[NP][NP][NUM_LEV_P]>**>("3d interface fields", ne, b2);
}

BoundaryExchange::BoundaryExchange()
{
  m_num_1d_fields = 0;
  m_num_2d_fields = 0;
  m_num_3d_fields = 0;
  m_num_3d_int_fields = 0;

  m_connectivity    = std::shared_ptr<Connectivity>();
  m_buffers_manager = std::shared_ptr<MpiBuffersManager>();

  m_num_elems = -1;

  // Prohibit registration until the number of fields has been set
  m_registration_started   = false;
  m_registration_completed = false;

  // There is no buffer view or request yet
  m_buffer_views_and_requests_built = false;

  // We start with a clean class
  m_cleaned_up = true;
  m_send_pending = false;
  m_recv_pending = false;

  m_diagnostics_level = 0;
}

BoundaryExchange::BoundaryExchange(std::shared_ptr<Connectivity> connectivity, std::shared_ptr<MpiBuffersManager> buffers_manager)
 : BoundaryExchange ()
{
  // Set the connectivity
  set_connectivity (connectivity);

  // Set the buffers manager
  set_buffers_manager (buffers_manager);

  m_diagnostics_level = 0;
}

BoundaryExchange::~BoundaryExchange()
{
  clean_up ();

  // It may be that we never really used this object, and never set the BM...
  if (m_buffers_manager) {
    // Remove me as a customer of the BM
    m_buffers_manager->remove_customer(this);
  }
}

void BoundaryExchange::set_label (const std::string& label) { m_label = label; }
const std::string& BoundaryExchange::get_label () const { return m_label; }
void BoundaryExchange::set_diagnostics_level (const int level) { m_diagnostics_level = level; }

void BoundaryExchange::set_connectivity (std::shared_ptr<Connectivity> connectivity)
{
  // Functionality only available before registration starts
  assert (!m_registration_started && !m_registration_completed);

  // Make sure it is a valid connectivity (does not need to be initialized/finalized yet)
  // Also, replacing the connectivity could have unintended side-effects; better prohibit it.
  // Besides, when can it be useful?
  assert (connectivity && !m_connectivity);

  // If the buffers manager is set and it stores a connectivity, it must match the input one
  assert (!m_buffers_manager || m_buffers_manager->get_connectivity()==connectivity);

  // Set the connectivity
  m_connectivity = connectivity;
  m_num_elems = connectivity->get_num_local_elements();
}

void BoundaryExchange::set_buffers_manager (std::shared_ptr<MpiBuffersManager> buffers_manager)
{
  // Functionality available only before the registration is completed
  assert (!m_registration_completed);

  // Make sure it is a valid pointer. Also, replacing the buffers manager
  // could have unintended side-effects; better prohibit it.
  // Besides, when can it be useful?
  assert (buffers_manager && !m_buffers_manager);

  // If the buffers manager stores a connectivity, and we already have one set, they must match
  assert (!buffers_manager->is_connectivity_set() || !(m_connectivity) || buffers_manager->get_connectivity()==m_connectivity);

  // Set the internal pointer
  m_buffers_manager = buffers_manager;

  // Set the connectivity in the


    R12,(48)(DI)
    RET

// 434-bit multiplication using Karatsuba (one level),
// schoolbook (one level).
TEXT ·mulP434(SB),NOSPLIT,$112-24
    MOVQ    z+0(FP), CX
    MOVQ    x+8(FP), DI
    MOVQ    y+16(FP), SI

    // Check whether to use optimized implementation
    CMPB    ·HasADXandBMI2(SB), $1
    JE      mul_with_mulx_adcx_adox

    // rcx[0-3] <- AH+AL
    XORQ         AX, AX
    MOVQ   0x20(DI), R8
    MOVQ   0x28(DI), R9
    MOVQ   0x30(DI), R10
    XORQ        R11, R11
    ADDQ    0x0(DI), R8
    ADCQ    0x8(DI), R9
    ADCQ   0x10(DI), R10
    ADCQ   0x18(DI), R11
    // store AH+AL mask
    SBBQ   $0, AX
    MOVQ   AX, 0x40(SP)
    // store AH+AL in 0-0x18(rcx)
    MOVQ    R8,  0x0(CX)
    MOVQ    R9,  0x8(CX)
    MOVQ   R10, 0x10(CX)
    MOVQ   R11, 0x18(CX)

    // r12-r15 <- BH+BL
    XORQ         DX, DX
    MOVQ   0x20(SI), R12
    MOVQ   0x28(SI), R13
    MOVQ   0x30(SI), R14
    XORQ        R15, R15
    ADDQ    0x0(SI), R12
    ADCQ    0x8(SI), R13
    ADCQ   0x10(SI), R14
    ADCQ   0x18(SI), R15
    SBBQ         $0, DX

    // store BH+BL mask
    MOVQ DX, 0x48(SP)

    // (rsp[0-0x38]) <- (AH+AL)*(BH+BL)
    MOVQ   (CX), AX
    MULQ   R12
    MOVQ   AX, (SP)
    MOVQ   DX, R8

    XORQ    R9, R9
    MOVQ   (CX), AX
    MULQ    R13
    ADDQ     AX, R8
    ADCQ     DX, R9

    XORQ   R10, R10
    MOVQ   0x8(CX), AX
    MULQ   R12
    ADDQ    AX, R8
    MOVQ    R8,  0x8(SP)
    ADCQ    DX, R9
    ADCQ    $0, R10

    XORQ   R8, R8
    MOVQ   (CX), AX
    MULQ   R14
    ADDQ   AX, R9
    ADCQ   DX, R10
    ADCQ   $0, R8

    MOVQ   0x10(CX), AX
    MULQ   R12
    ADDQ   AX, R9
    ADCQ   DX, R10
    ADCQ   $0, R8

    MOVQ   0x8(CX), AX
    MULQ   R13
    ADDQ   AX, R9
    MOVQ   R9, 0x10(SP)
    ADCQ   DX, R10
    ADCQ   $0, R8

    XORQ   R9, R9
    MOVQ   (CX),AX
    MULQ   R15
    ADDQ   AX, R10
    ADCQ   DX, R8
    ADCQ   $0, R9

    MOVQ   0x18(CX), AX
    MULQ   R12
    ADDQ   AX, R10
    ADCQ   DX, R8
    ADCQ   $0, R9

    MOVQ   0x8(CX), AX
    MULQ   R14
    ADDQ   AX, R10
    ADCQ   DX,


"MER_12_B52_Mk_82",
    [1760] = "Gudauta",
    [1761] = "MI_8MT",
    [1762] = "wsTypeBus",
    [1763] = "wsType_Test4",
    [1764] = "set_recursive_metatable",
    [1765] = "me_nodes_item_view",
    [1766] = "F_16_tbl",
    [1767] = "TICONDEROGA",
    [1768] = "cartridge_308cal",
    [1769] = "GBU_10",
    [1770] = "P_24T",
    [1771] = "PILOT_PARASHUT",
    [1772] = "wsRadarAWACS",
    [1773] = "S_3R",
    [1774] = "Mk_83",
    [1775] = "Menu",
    [1776] = "E_2C",
    [1777] = "PTB_F2_1500",
    [1778] = "bru_42_ls",
    [1779] = "X_25MP",
    [1780] = "Tor_",
    [1781] = "wsTypeLauncher",
    [1782] = "theatresByName",
    [1783] = "wsType_OBLOMOK_1",
    [1784] = "AGM_114",
    [1785] = "J_11A",
    [1786] = "P_33E",
    [1787] = "wsType_Shell_SPPU",
    [1788] = "ED_PUBLIC_AVAILABLE",
    [1789] = "AKU_58_X_31A",
    [1790] = "ALARM",
    [1791] = "StingerIZR_2",
    [1792] = "S_25L",
    [1793] = "AIM_9",
    [1794] = "tu_22_mbdz_six",
    [1795] = "PTB_KA_50",
    [1796] = "SH_60B",
    [1797] = "RLO_9C19M2",
    [1798] = "MBD_3_LAU_61",
    [1799] = "LAU_117_AGM_65E",
    [1800] = "Kuznecow",
    [1801] = "VertLayout",
    [1802] = "Static",
    [1803] = "SA3_SR",
    [1804] = "AIM_9P",
    [1805] = "LAU_88_AGM_65D_2_LEFT",
    [1806] = "wsTypeMAZ_6303",
    [1807] = "Sukhumi",
    [1808] = "SmokeGenerator_green",
    [1809] = "FANTASM",
    [1810] = "KORD_12_7",
    [1811] = "wsType_Cannon_Cont",
    [1812] = "REFLEX",
    [1813] = "MiG_23",
    [1814] = "RQ_1A_Predator",
    [1815] = "wsType_ChildMiss",
    [1816] = "nav_lights_lockon",
    [1817] = "BDU_50HD",
    [1818] = "wsType_Radar_Miss",
    [1819] = "SMERCH_9M55K",
    [1820] = "wsTypeSteamLocomotive",
    [1821] = "wsTypeZIL_4334",
    [1822] = "MBD_BETAB_250",
    [1823] = "CAT_CLUSTER_DESC",
    [1824] = "MIG_23_PTB",
    [1825] = "mer_5",
    [1826] = "TU_22_FAB_100",
    [1827] = "ModsPreloadResources",
    [1828] = "wsTypeWGruzOtkr",
    [1829] = "G


=`#ifdef GL_ES
precision mediump float;
#else
#if !defined(lowp)
#define lowp
#endif
#if !defined(mediump)
#define mediump
#endif
#if !defined(highp)
#define highp
#endif
#endif
`,Bl=`#ifdef GL_ES
precision highp float;
#else
#if !defined(lowp)
#define lowp
#endif
#if !defined(mediump)
#define mediump
#endif
#if !defined(highp)
#define highp
#endif
#endif
vec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0
);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}
#ifdef TERRAIN3D
uniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;
#endif
const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {
#ifdef TERRAIN3D
highp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));
#else
return 1.0;
#endif
}float calculate_visibility(vec4 pos) {
#ifdef TERRAIN3D
vec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;
#else
return 1.0;
#endif
}float ele(vec2 pos) {
#ifdef TERRAIN3D
vec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;
#else
return 0.0;
#endif
}float get_elevation(vec2 pos) {
#ifdef TERRAIN3D
vec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim


s.catches);

  static BeginNoEffectTryTable deserialize(Deserializer d, Tags tags) {
    d.readByte();
    final catches = d.readList((d) => TryTableCatch.deserialize(d, tags));
    return BeginNoEffectTryTable(catches);
  }

  @override
  void serialize(Serializer s) {
    s.writeByte(0x1F);
    s.writeByte(0x40);
    s.writeUnsigned(catches.length);
    for (final catch_ in catches) {
      catch_.serialize(s);
    }
  }
}

class BeginOneOutputTryTable extends Instruction {
  final ValueType type;
  final List<TryTableCatch> catches;

  @override
  List<ValueType> get usedValueTypes => [type];

  BeginOneOutputTryTable(this.type, this.catches);

  static BeginOneOutputTryTable deserialize(
      Deserializer d, Types types, Tags tags) {
    final type = ValueType.deserialize(d, types.defined);
    final catches = d.readList((d) => TryTableCatch.deserialize(d, tags));
    return BeginOneOutputTryTable(type, catches);
  }

  @override
  void serialize(Serializer s) {
    s.writeByte(0x1F);
    s.write(type);
    s.writeUnsigned(catches.length);
    for (final catch_ in catches) {
      catch_.serialize(s);
    }
  }
}

class BeginFunctionTryTable extends Instruction {
  final FunctionType type;
  final List<TryTableCatch> catches;

  BeginFunctionTryTable(this.type, this.catches);

  @override
  List<DefType> get usedDefTypes => [type];

  @override
  void serialize(Serializer s) {
    s.writeByte(0x1F);
    s.write(type);
    s.writeUnsigned(catches.length);
    for (final catch_ in catches) {
      catch_.serialize(s);
    }
  }
}

abstract class TryTableCatch {
  final int labelIndex;

  TryTableCatch(this.labelIndex);

  void serialize(Serializer s);

  static TryTableCatch deserialize(Deserializer d, Tags tags) {
    final kind = d.readByte();
    switch (kind) {
      case 0x00:
        final tag = tags[d.readUnsigned()];
        final label = d.readUnsigned();
        return Catch(tag, label);
      case 0x01:
        final tag = tags[d.readUnsigned()];
        final label = d.readUnsigned();
        return CatchRef(tag, label);
      case 0x02:
        final label = d.readUnsigned();
        return CatchAll(label);
      case 0x03:
        final label = d.readUnsigned();
        return CatchAllRef(label);
      default:
        throw "Invalid TryTableCatch kind: $kind";
    }
  }
}

class Catch extends TryTableCatch {
  final Tag tag;

  Catch(this.tag, super.labelIndex);

  @override
  void serialize(Serializer s) {
    s.writeByte(0x00);
    s.writeUnsigned(tag.index);
    s.writeUnsigned(labelIndex);
  }
}

class CatchRef extends TryTableCatch {
  final Tag tag;

  CatchRef(this.tag, super.labelIndex);

  @override
  void serialize(Serializer s) {
    s.writeByte(0x01);
    s.writeUnsigned(tag.index);
    s.writeUnsigned(labelIndex);
  }
}

class CatchAll extends TryTableCatch {


; set; }

        public override ServerTreeNode ServerNode { get; }

        public override void LoadPanels(MainForm mainForm, ServiceContainer serviceContainer, List<ModuleProvider> moduleProviders)
        {
            serviceContainer.RemoveService(typeof(IConfigurationService));
            serviceContainer.RemoveService(typeof(IControlPanel));
            var sites = (SiteCollection)Tag;
            var scope = ManagementScope.Server;
            serviceContainer.AddService(typeof(IControlPanel), new ControlPanel());
            serviceContainer.AddService(typeof(IConfigurationService),
                new ConfigurationService(mainForm, null, scope, sites.Parent, null, null, null, null, null));
            IModulePage page = new SitesPage(mainForm);
            var mainModule = new MainModule();
            mainModule.Initialize(serviceContainer, null);
            page.Initialize(mainModule, null, null);
            mainForm.LoadPage(page);
        }

        public override void HandleDoubleClick()
        {
        }

        public override void Expand(MainForm mainForm)
        { }

        public override void AddApplication(ContextMenuStrip appMenu)
        {
        }

        public override void AddVirtualDirectory(ContextMenuStrip vDirMenu)
        {
        }
    }
}


/* This file was created automatically, do not edit! */

using System.Runtime.Serialization;

namespace Iviz.Msgs.StdMsgs
{
    [DataContract]
    public sealed class Int32MultiArray : IDeserializable<Int32MultiArray>, IMessage
    {
        // Please look at the MultiArrayLayout message definition for
        // documentation on all multiarrays.
        /// <summary> Specification of data layout </summary>
        [DataMember (Name = "layout")] public MultiArrayLayout Layout;
        /// <summary> Array of data </summary>
        [DataMember (Name = "data")] public int[] Data;

        /// Constructor for empty message.
        public Int32MultiArray()
        {
            Layout = new MultiArrayLayout();
            Data = System.Array.Empty<int>();
        }

        /// Explicit constructor.
        public Int32MultiArray(MultiArrayLayout Layout, int[] Data)
        {
            this.Layout = Layout;
            this.Data = Data;
        }

        /// Constructor with buffer.
        public Int32MultiArray(ref ReadBuffer b)
        {
            Layout = new MultiArrayLayout(ref b);
            b.DeserializeStructArray(out Data);
        }

        ISerializable ISerializable.RosDeserializeBase(ref ReadBuffer b) => new Int32MultiArray(ref b);

        public Int32MultiArray RosDeserialize(ref ReadBuffer b) => new Int32MultiArray(ref b);

        public void RosSerialize(ref WriteBuffer b)
        {
            Layout.RosSerialize(ref b);
            b.SerializeStructArray(Data);
        }

        public void RosValidate()
        {
            if (Layout is null) BuiltIns.ThrowNullReference();
            Layout.RosValidate();
            if (Data is null) BuiltIns.ThrowNullReference();
        }

        public int RosMessag


model.Model#str]",
                ruleParser.parseStringRule("groovy:$helper.resolveLinks(\"{@link com.itangcent.model.Model},{@link com.itangcent.model.Model#str}\")")!!
                    (ruleParser.contextOf(userCtrlPsiClass, userCtrlPsiClass))
            )
        }
    }

    /**
     * Test case of [com.itangcent.idea.plugin.rule.StandardJdkRuleParser.Config]
     */
    fun testConfig() {
        arrayOf("config", "C").forEach { config ->
            assertEquals(
                "123",
                ruleParser.parseStringRule("groovy:$config.get(\"x\")")!!
                    (ruleContext)
            )
            assertEquals(
                "123456",
                ruleParser.parseStringRule("groovy:$config.getValues(\"x\").join()")!!
                    (ruleContext)
            )
            assertEquals(
                "666",
                ruleParser.parseStringRule("groovy:$config.resolveProperty(\"\\\${y}\")")!!
                    (ruleContext)
            )
            assertNull(
                ruleParser.parseStringRule("groovy:$config.resolvePropertyWith(null,\"#\\\$\",[z:888])")!!
                    (ruleContext)
            )
            assertEquals(
                "#{x},888",
                ruleParser.parseStringRule("groovy:$config.resolvePropertyWith(\"#{x},\\\${z}\",null,[z:888])")!!
                    (ruleContext)
            )
            assertEquals(
                "123,",
                ruleParser.parseStringRule("groovy:$config.resolvePropertyWith(\"#{x},\\\${z}\",\"#\\\$\",null)")!!
                    (ruleContext)
            )
            assertEquals(
                "123,888",
                ruleParser.parseStringRule("groovy:$config.resolvePropertyWith(\"#{x},\\\${z}\",\"#\\\$\",[z:888])")!!
                    (ruleContext)
            )
        }
    }

    /**
     * Test case of [com.itangcent.idea.plugin.rule.StandardJdkRuleParser.Files]
     */
    fun testFiles() {
        arrayOf("files", "F").forEach { files ->
            val demoPath = tempDir.sub("demo.txt").escapeBackslash()
            ruleParser.parseEventRule("groovy:$files.save(\"hello world\",\"$demoPath\")")!!(ruleContext)
            assertEquals("hello world", FileUtils.read(File(demoPath)))
            ruleParser.parseEventRule("groovy:$files.saveWithUI({\"hello world!\"},\"demo2.txt\",{},{},{})")!!(ruleContext)
            assertEquals("hello world!",
                (fileSaveHelper as FileSaveHelperAdaptor).bytes()?.let { String(it, Charsets.UTF_8) })
        }
    }

    /**
     * Test case of [com.itangcent.idea.plugin.rule.StandardJdkRuleParser.Runtime]
     */
    fun testRuntime() {
        arrayOf("runtime", "R").forEach { runtime ->
            contextSwitchListener.switchTo(userCtrlPsiClass)
            LoggerCollector.getLog()//clear

            assertEquals(
                "markdown", ruleParser.parseStringRule("groovy:$runtime.channel()")!!
                    (ruleContext)
            )
            assertEquals(
                project.name, ruleParser.parseStringRule("groovy:$runtime.projectName()")!!
                    (ruleContext)
            )
            assertEquals(
                project.basePath, ruleParser.parseStringRule("groovy:$runtime.projectPath()")!!
                    (ruleContext)
            )
            assertEquals(
                "test_default", ruleParser.parseStringRule("groovy:$runtime.module()")!!
                    (ruleParser.contextOf("userCtrlPsiClass", userCtrlPsiClass))
            )
            assertEquals(
                "light_idea_test_case", ruleParser.parseStringRule("groovy:$runtime.moduleName()


 = data;
      console.log(this.lernData, '>>> lern data success');
    }).catch(err => {
      console.error(err, '>>>> error');
    });
  }

  public async testGeOnTry() {
    let test: any;
    try {
      test = await this.getStarWarsBypromiseSimple(this.testUrl);
    } catch (error) {
      console.log(error, 'error Cath result');
    }
  }
  public async useApiServiceOnpromise() {
    try {
      const data = await this.api.getOnPromise(this.testUrl);
      console.log(data, 'data userApiServiceOn primiser');
    } catch (error) {
      console.log(error, 'catch error on prmiser');
    }
  }
  /// Htttp RxJs
  public rxjsTest(): void {
    this.api.get(this.testUrl).subscribe(data => {
      console.log(data, ' data RXJS');
    });
  }
  public async trainApiPromiser() {
    try {
      const dataApi = await this.api.getOnPromise(this.testUrl);
      console.log(dataApi, 'dataApi');
    } catch (err) {
      console.error(err);
    }
  }
  public async trainPromis2() {
    try {
      const dataApi2 = await this.api.getOnPromise(this.testUrl);
      console.log(dataApi2, 'dataApi2');
    } catch (err) {
      console.error(err);
    }
  }
}
/**
 * Script for testing TwilioSmsProvider.sendSms
 * (Verify & Messaging Services) using the real twilio API.
 * Uses `.env.development` file for sensitive info; set your phone number
 * as TEST_SMS_RECIPIENT to receive the messages and check against
 * expected output (logged in console).
 * Comment out cases under `testCases` as desired.
 */

import { fetchEnv, fetchEnvOrDefault } from '../src/env'
import { SmsFields } from '../src/models/attestation'
import { readUnsupportedRegionsFromEnv } from '../src/sms/base'
import { TwilioSmsProvider } from '../src/sms/twilio'
import { TwilioMessagingProvider } from '../src/sms/twilioMessaging'
import { TwilioVerifyProvider } from '../src/sms/twilioVerify'
;(async function main() {
  const twilioSid = fetchEnv('TWILIO_ACCOUNT_SID')
  const messagingServiceSid = fetchEnv('TWILIO_MESSAGING_SERVICE_SID')
  const verifyServiceSid = fetchEnvOrDefault('TWILIO_VERIFY_SERVICE_SID', '')
  const twilioAuthToken = fetchEnv('TWILIO_AUTH_TOKEN')
  const unsupportedRegionCodes = readUnsupportedRegionsFromEnv(
    'TWILIO_UNSUPPORTED_REGIONS',
    'TWILIO_BLACKLIST'
  )
  const testPhoneNumber = fetchEnv('TEST_SMS_RECIPIENT')
  const countryCode = 'DE'

  enum SendMethod {
    MESSAGE_SERVICE = 'message service',
    VERIFY = 'verify API',
  }

  type TestCase = {
    id: string
    expectedSendMethod: SendMethod
  }

  const testCases: TestCase[] = [
    {
      id: '000000',
      expectedSendMethod: SendMethod.MESSAGE_SERVICE,
    },
    {
      id: '111111',
      expectedSendMethod: SendMethod.VERIFY,
    },
  ]

  testCases.map(async (testCase: TestCase) => {
    const attestation: SmsFields = {
      account: '0x123',
      identifier: '0x456',
      issuer: '0x789',
      countryCode: countryCode,
      phoneNumber: testPhoneNumber,
      message: '',
      securityCode: '',
      attestationCode: '123',
      appSignature: undefined,
      language: 'en',
    }


namespace Rollbar
{
    using System.Text;
    using Rollbar.DTOs;
    using Rollbar.Infrastructure;

    /// <summary>
    /// Models a communication error event.
    /// </summary>
    /// <seealso cref="Rollbar.RollbarEventArgs" />
    public class CommunicationErrorEventArgs
        : RollbarEventArgs
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="CommunicationErrorEventArgs"/> class.
        /// </summary>
        /// <param name="logger">The logger.</param>
        /// <param name="payload">The payload.</param>
        /// <param name="error">The error.</param>
        /// <param name="retriesLeft">The retries left.</param>
        internal CommunicationErrorEventArgs(
            RollbarLogger? logger,
            string? payload,
            System.Exception error,
            int retriesLeft
            )
            : base(logger, payload)
        {
            this.Error = error;
            this.RetriesLeft = retriesLeft;
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="CommunicationErrorEventArgs"/> class.
        /// </summary>
        /// <param name="logger">The logger.</param>
        /// <param name="payload">The payload.</param>
        /// <param name="error">The error.</param>
        /// <param name


178227] = "Murguts Totemkorb",
[178229] = "Auroras Buch",
[178244] = "Übungsschließkassette",
[178245] = "Übungsschließkassette",
[178246] = "Übungsschließkassette",
[178325] = "Öffnen, um Euren Ritus durchzuführen.",
[178444] = "Schrein von Sha’gri",
[178464] = "Dunkler Kleriker Salems Truhe",
[178504] = "Gestohlene Truhe",
[178526] = "James’ Tagebuch",
[178545] = "Guses Signal",
[178553] = "Kapsel des Ashischwarms",
[178609] = "Feiertagsschnee",
[178724] = "Vipores Signal",
[178725] = "Slidores Signal",
[178726] = "Ichmans Signal",
[178784] = "Coldtooth-Vorräte",
[178785] = "Irondeep-Vorräte",
[178907] = "Maraudon orangefarbenen Kristallteich",
[179004] = "Drek’Thars Schriftrollen",
[179005] = "Drek’Thars Schriftrollen",
[179006] = "Vanndars Dokumente",
[179007] = "Vanndars Dokumente",
[179008] = "Vanndars Dokumente",
[179024] = "Banner der Stormpike",
[179025] = "Banner der Frostwolf",
[179125] = "Izzys Besitztümer",
[179426] = "Gri’lek der Wanderer",
[179437] = "GESUCHT: ORCS!",
[179438] = "GESUCHT: ZWERGE!",
[179485] = "Beschädigte Falle",
[179486] = "Ramponierte Schließkiste",
[179487] = "Durchnässte Schließkiste",
[179488] = "Ramponierte Schließkiste",
[179489] = "Durchnässte Schließkiste",
[179490] = "Ramponierte Schließkiste",
[179491] = "Durchnässte Schließkiste",
[179492] = "Verbeulte Schließkiste",
[179493] = "Moosbedeckte Schließkiste",
[179494] = "Verbeulte Schließkiste",
[179496] = "Verbeulte Schließkiste",
[179497] = "Moosbedeckte Schließkiste",
[179498] = "Scharlachrote Schließkiste",
[179499] = "Gerbekorb der Oger",
[179501] = "Knot Thimblejacks Behälter",
[179516] = "Fengus Truhe",
[179517] = "Shen’dralar Schatz",
[179526] = "Wucherborkenkapsel",
[179528] = "Wucherborkenkapsel",
[179532] = "Wucherborkenkapsel",
[179533] = "Wucherborkenkapsel",
[179544] = "Die sterblichen Überreste von Telmius Dreamseeker",
[179545] = "Die Truhe des Prinzen",
[179547] = "Ein verstaubter Foliant",
[179548] = "Ein verstaubter Foliant",
[179551] = "Hydraxis Truhe",
[179552] = "Bauplan: Feldreparaturbot-74A",
[179553] = "Kernfragment",
[179559] = "Teufelsrankensplitter",
[179562] = "Erhitzte Uralte Klinge",
[179564] = "Tr


eLiveEvent
import com.duckduckgo.daxprompts.api.DaxPrompts
import com.duckduckgo.daxprompts.api.DaxPrompts.ActionType.NONE
import com.duckduckgo.daxprompts.api.DaxPrompts.ActionType.SHOW_BROWSER_COMPARISON_PROMPT
import com.duckduckgo.daxprompts.api.DaxPrompts.ActionType.TOO_SOON_TO_SHOW_OTHER_PROMPTS
import com.duckduckgo.di.scopes.ActivityScope
import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.withTimeoutOrNull
import logcat.logcat
import javax.inject.Inject

@ContributesViewModel(ActivityScope::class)
class LaunchViewModel @Inject constructor(
    private val userStageStore: UserStageStore,
    private val appReferrerStateListener: AppInstallationReferrerStateListener,
    private val daxPrompts: DaxPrompts,
    private val appInstallStore: AppInstallStore,
    private val onboardingDesignExperimentManager: OnboardingDesignExperimentManager,
) :
    ViewModel() {

    val command: SingleLiveEvent<Command> = SingleLiveEvent()

    sealed class Command {
        data object Onboarding : Command()
        data class Home(val replaceExistingSearch: Boolean = false) : Command()
        data object DaxPromptBrowserComparison : Command()
        data object CloseDaxPrompt : Command()
    }

    suspend fun determineViewToShow() {
        if (onboardingDesignExperimentManager.isWaitForLocalPrivacyConfigEnabled()) {
            withTimeoutOrNull(MAX_REFERRER_WAIT_TIME_MS) {
                val referrerJob = async {
                    waitForReferrerData()
                }
                val configJob = async {
                    onboardingDesignExperimentManager.waitForPrivacyConfig()
                }
                awaitAll(referrerJob, configJob)
            }
        } else {
            waitForReferrerData()
        }

        when (daxPrompts.evaluate()) {
            NONE, TOO_SOON_TO_SHOW_OTHER_PROMPTS -> {
                logcat { "daxPrompts evaluate: None action" }
                showOnboardingOrHome()
            }

            SHOW_BROWSER_COMPARISON_PROMPT -> {
                logcat { "daxPrompts evaluate: Browser Comparison Prompt action" }
                command.value = Command.DaxPromptBrowserComparison
            }
        }
    }

    suspend fun showOnboardingOrHome() {
        if (userStageStore.isNewUser()) {
            command.value = Command.Onboarding
        } else {
            command.value = Command.Home()
        }
    }

    fun onDaxPromptBrowserComparisonActivityResult(showComparisonChart: Boolean? = false) {
        if (showComparisonChart != null) {
            appInstallStore.defaultBrowser = showComparisonChart
        }
        command.value = Command.CloseDaxPrompt
    }

    private suspend fun waitForReferrerData() {
        val startTime = System.currentTimeMillis()

        withTimeoutOrNull(MAX_REFERRER_WAIT_TIME_MS) {
            logcat { "Waiting for referrer" }
            return@withTimeoutOrNull appReferrerStateListener.waitForReferrerCode()
        }

        logcat { "Waited ${System.currentTimeMillis() - startTime}ms for referrer" }
    }
}
/*
 * Copyright (c) 2025 DuckDuckGo
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the


'
'roboto-mono'
'source-sans-pro'
'system'
'tahoma'
'verdana'
----------------------------------------
Add as many new tokens as you have
custom typefaces. Reference your new
token(s) in the type-based font settings
using the quoted name of the token.

For example:

$theme-font-type-cond: 'example-font-token';

display-name:
The display name of your font

cap-height:
The height of a 500px `N` in Sketch
----------------------------------------
You should change `example-[style]-token`
names to something more descriptive.
----------------------------------------
*/

$theme-typeface-tokens: (
  example-serif-token: (
    display-name: "Example Serif Display Name",
    cap-height: 364px,
  ),
  example-sans-token: (
    display-name: "Example Sans Display Name",
    cap-height: 364px,
  ),
);

/*
----------------------------------------
Type-based font settings
----------------------------------------
Set the type-based tokens for your
project from the following tokens,
or from any new font tokens you added in
$theme-typeface-tokens.
----------------------------------------
'georgia'
'helvetica'
'merriweather'
'open-sans'
'public-sans'
'roboto-mono'
'source-sans-pro'
'system'
'tahoma'
'verdana'
----------------------------------------
*/

// condensed
$theme-font-type-cond: false;

// icon
$theme-font-type-icon: false;

// language-specific
$theme-font-type-lang: false;

// monospace
$theme-font-type-mono: "roboto-mono";

// sans-serif
$theme-font-type-sans: "source-sans-pro";

// serif
$theme-font-type-serif: "merriweather";

/*
----------------------------------------
Custom font stacks
----------------------------------------
Add custom font stacks to any of the
type-based fonts. Any USWDS typeface
token already has a default stack.

Custom stacks don't need to include the
font's display name. It will
automatically appear at the start of
the stack.
----------------------------------------
Example:
$theme-font-type-sans: 'source-sans-pro';
$theme-font-sans-custom-stack: "Helvetica Neue", Helvetica, Arial, sans;

Output:
font-family: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans;
----------------------------------------
*/

$theme-font-cond-custom-stack: false;
$theme-font-icon-custom-stack: false;
$theme-font-lang-custom-stack: false;
$theme-font-mono-custom-stack: false;
$theme-font-sans-custom-stack: false;
$theme-font-serif-custom-stack: false;

/*
----------------------------------------
Add any custom font source files
----------------------------------------
If you want USWDS to generate additional
@font-face declarations, add your font
data below, following the example that
follows.
----------------------------------------
USWDS automatically generates @font-face
decalarations for the following

'merriweather'
'public-sans'
'roboto-mono'
'source-sans-pro'

These typefaces not require custom
source files.
----------------------------------------
EXAMPLE

- dir:
  Directory relative to $theme-font-path
- This directory should include fonts saved as
  .ttf, .woff, and .woff2
  ExampleSerif-Normal.ttf
  ExampleSerif-Normal.woff
  ExampleSerif-Normal.woff2

$theme-font-serif-custom-src: (
  dir: 'custom/example-serif',
  roman: (
    100: false,
    200: false,
    300: 'ExampleSerif-Light',
    400: 'ExampleSerif-Normal',
    500: false,
    600: false,
    700: 'ExampleSerif-Bold',
    800: false,
    900: false,
  ),


债券等资金；

（二）村民委员会、居民委员会按照有关规定通过“一事一议”等方式筹集的资金；

（三）企业投资、社会捐助筹集的资金；

（四）利用农村公路冠名权和路域资源开发经营权等市场化方式筹集的资金；

（五）通过其他方式筹集的资金。

第四十八条 鼓励区（市）人民政府将农村公路建设和一定时期的养护进行捆绑招标，将农村公路与产业、园区、乡村旅游等经营性项目共同开发，运营收益用于农村公路养护。

第四十九条 农村公路建设、养护资金，应当独立核算、专款专用，任何单位和个人不得截留、侵占和挪用。

财政、审计等部门应当依法对农村公路建设、养护资金的使用情况进行监督检查。

## 第七章  法律责任

第五十条 违反本条例规定的行为，法律法规已规定法律责任的，从其规定。

第五十一条 违反本条例第二十二条第二款规定的，由区（市）交通运输主管部门责令限期改正；逾期不改正的，处二百元以上一千元以下的罚款；情节严重的，处一千元以上三千元以下的罚款。

第五十二条 违反本条例第二十三条规定，在村道建筑控制区内新建、扩建建筑物和构筑物，或者在村道建筑控制区外修建的建筑物、构筑物以及其他设施遮挡公路安全标志、妨碍安全视距的，由区（市）交通运输主管部门责令限期拆除，处五百元以上二千元以下的罚款；情节严重的，处二千元以上五千元以下的罚款。

第五十三条 违反本条例第二十六条第一款规定的，由区（市）交通运输主管部门责令停止违法行为，处五百元以上二千元以下的罚款；情节严重的，处五千元以上三万元以下的罚款。

第五十四条 违法超限运输、违法涉路施工活动、交通事故等造成公路路产损坏或者他人人身、财产损害的，应当依法承担赔偿责任。

经批准的涉路施工活动、超限运输等�


/*
 * This program can be used to calibrate the clock reading jitter of a
 * particular CPU and operating system. It first tickles every element
 * of an array, in order to force pages into memory, then repeatedly
 * reads the system clock and, finally, writes out the time values for
 * later analysis. From this you can determine the jitter and if the
 * clock ever runs backwards.
 */

#ifdef HAVE_CONFIG_H
# include <config.h>
#endif

#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>
#include "ntp_fp.h"

#define NBUF	800002
#define JAN_1970 2208988800UL		/* Unix base epoch */
#define CLOCK_GETTIME			/* Solaris hires clock */

char progname[10];
double sys_residual;
double average;
void sys_gettime(l_fp *);

int
main(
	int argc,
	char *argv[]
	)
{
	l_fp tr;
	int i, j;
	double dtemp, gtod[NBUF];

	/*
	 * Force pages into memory
	 */
	for (i = 0; i < NBUF; i ++)
	    gtod[i] = 0;

	/*
	 * Construct gtod array
	 */
	for (i = 0; i < NBUF; i ++) {
		get_systime(&tr);
		LFPTOD(&tr, gtod[i]);
	}

	/*
	 * Write out gtod array for later processing with Matlab
	 */
	average = 0;
	for (i = 0; i < NBUF - 2; i++) {
		gtod[i] = gtod[i + 1] - gtod[i];
		printf("%13.9f\n", gtod[i]);
		average += gtod[i];
	}

	/*
	 * Sort the gtod array and display deciles
	 */
	for (i = 0; i < NBUF - 2; i++) {
		for (j = 0; j <= i; j++) {
			if (gtod[j] > gtod[i]) {
				dtemp = gtod[j];
				gtod[j] = gtod[i];
				gtod[i] = dtemp;
			}
		}
	}
	average = average / (NBUF - 2);
	fprintf(stderr, "Average %13.9f\n", average);
	fprintf(stderr, "First rank\n");
	for (i = 0; i < 10; i++)
		fprintf(stderr, "%2d %13.9f\n", i, gtod[i]);
	fprintf(stderr, "Last rank\n");
	for (i = NBUF - 12; i < NBUF - 2; i++)
		fprintf(stderr, "%2d %13.9f\n", i, gtod[i]);
	exit(0);
}

/*
 * get_systime - return system time in NTP timestamp format.
 */
void
get_systime(
	l_fp *now		/* system time */
	)
{
	double dtemp;

#if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_GETCLOCK)
	struct timespec ts;	/* seconds and nanoseconds */

	/*
	 * Convert Unix clock from seconds and nanoseconds to seconds.
	 */
# ifdef HAVE_CLOCK_GETTIME
	clock_gettime(CLOCK_REALTIME, &ts);
# else
	getclock(TIMEOFDAY, &ts);
# endif
	now->l_i = ts.tv_sec + JAN_1970;
	dtemp = ts.tv_nsec / 1e9;

#else /* HAVE_CLOCK_GETTIME || HAVE_GETCLOCK */
	struct timeval tv;	/* seconds and microseconds */

	/*
	 * Convert Unix clock from seconds and microseconds to seconds.
	 */
	gettimeofday(&tv, NULL);
	now->l_i = tv.tv_sec + JAN_1970;
	dtemp = tv.tv_usec / 1e6;

#endif /* HAVE_CLOCK_GETTIME || HAVE_GETCLOCK */

	/*
	 * Renormalize to seconds past 1900 and fraction.
	 */
	dtemp += sys_residual;
	if (dtemp >= 1) {
		dtemp -= 1;
		now->l_i++;
	} else if (dtemp < -1) {
		dtemp += 1;
		now->l_i--;
	}
	dtemp *= FRAC;
	now->l_uf = (u_int32)dtemp;
}


al {
			c.inodeCountNotEqualMP.Store(mp.PartitionID, mp)
		}
		if !inodeEqual {
			c.maxInodeNotEqualMP.Store(mp.PartitionID, mp)
		}

	} else {
		if _, ok := c.inodeCountNotEqualMP.Load(mp.PartitionID); ok {
			c.inodeCountNotEqualMP.Delete(mp.PartitionID)
		}
		if _, ok := c.maxInodeNotEqualMP.Load(mp.PartitionID); ok {
			c.maxInodeNotEqualMP.Delete(mp.PartitionID)
		}
	}
	return
}

func (mp *MetaPartition) checkDentryCount(c *Cluster) (isEqual bool) {
	isEqual = true
	if mp.IsRecover {
		return
	}
	dentryCount := mp.LoadResponse[0].DentryCount
	for _, loadResponse := range mp.LoadResponse {
		diff := math.Abs(float64(loadResponse.DentryCount) - float64(dentryCount))
		if diff > defaultRangeOfCountDifferencesAllowed {
			isEqual = false
		}
	}

	if !isEqual {
		msg := fmt.Sprintf("dentry count is not equal,vol[%v],mpID[%v],", mp.volName, mp.PartitionID)
		for _, lr := range mp.LoadResponse {
			lrMsg := fmt.Sprintf(msg+"addr[%s],applyId[%d],committedId[%d],dentryCount[%d]", lr.Addr, lr.ApplyID, lr.CommittedID, lr.DentryCount)
			Warn(c.Name, lrMsg)
		}
		c.dentryCountNotEqualMP.Store(mp.PartitionID, mp)
	} else {
		if _, ok := c.dentryCountNotEqualMP.Load(mp.PartitionID); ok {
			c.dentryCountNotEqualMP.Delete(mp.PartitionID)
		}
	}
	return
}

func (c *Cluster) scheduleToCheckMetaPartitionRecoveryProgress() {
	go func() {
		for {
			if c.partition != nil && c.partition.IsRaftLeader() {
				if c.vols != nil {
					c.checkMetaPartitionRecoveryProgress()
				}
			}
			time.Sleep(time.Second * defaultIntervalToCheckDataPartition)
		}
	}()
}

func (c *Cluster) checkMetaPartitionRecoveryProgress() {
	defer func() {
		if r := recover(); r != nil {
			log.LogWarnf("checkMetaPartitionRecoveryProgress occurred panic,err[%v]", r)
			WarnBySpecialKey(fmt.Sprintf("%v_%v_scheduling_job_panic", c.Name, ModuleName),
				"checkMetaPartitionRecoveryProgress occurred panic")
		}
	}()

	c.badPartitionMutex.Lock()
	defer c.badPartitionMutex.Unlock()

	c.BadMetaPartitionIds.Range(func(key, value interface{}) bool {
		badMetaPartitionIds := value.([]uint64)
		newBadMpIds := make([]uint64, 0)
		for _, partitionID := range badMetaPartitionIds {
			partition, err := c.getMetaPartitionByID(partitionID)
			if err != nil {
				Warn(c.Name, fmt.Sprintf("checkMetaPartitionRecoveryProgress clusterID[%v], partitionID[%v] is not exist", c.Name, partitionID))
				continue
			}

			vol, err := c.getVol(partition.volName)
			if err != nil {
				Warn(c.Name, fmt.Sprintf("checkMetaPartitionRecoveryProgress clusterID[%v],vol[%v] partitionID[%v]is not exist",
					c.Name, partition.volName, partitionID))
				continue
			}

			if len(partition.Replicas) ==


#include "hi_asm_define.h"
	.arch armv7-a
	.fpu softvfp
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 2
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"vdm_hal_h264.c"
	.text
	.align	2
	.global	Write_V300R001_CabacTab
	.type	Write_V300R001_CabacTab, %function
Write_V300R001_CabacTab:
	UNWIND(.fnstart)
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	UNWIND(.movsp ip)
	mov	ip, sp
	stmfd	sp!, {fp, ip, lr, pc}
	UNWIND(.pad #4)
	UNWIND(.save {fp, ip, lr})
	UNWIND(.setfp fp, ip, #-4)
	sub	fp, ip, #4
	bl	MEM_Phy2Vir
	ldr	r3, .L6
	cmp	r0, #0
	beq	.L5
	mov	r2, #5120
	ldr	r1, .L6+4
	ldr	r3, [r3, #52]
	blx	r3
	mov	r0, #0
	ldmfd	sp, {fp, sp, pc}
.L5:
	mov	r2, #87
	ldr	r1, .L6+8
	ldr	r3, [r3, #68]
	mov	r0, #22
	blx	r3
	mvn	r0, #0
	ldmfd	sp, {fp, sp, pc}
.L7:
	.align	2
.L6:
	.word	vfmw_Osal_Func_Ptr_S
	.word	g_CabacMN
	.word	.LC0
	UNWIND(.fnend)
	.size	Write_V300R001_CabacTab, .-Write_V300R001_CabacTab
	.align	2
	.global	H264HAL_V300R001_InitHal
	.type	H264HAL_V300R001_InitHal, %function
H264HAL_V300R001_InitHal:
	UNWIND(.fnstart)
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	UNWIND(.movsp ip)
	mov	ip, sp
	stmfd	sp!, {fp, ip, lr, pc}
	UNWIND(.pad #4)
	UNWIND(.save {fp, ip, lr})
	UNWIND(.setfp fp, ip, #-4)
	sub	fp, ip, #4
	bl	Write_V300R001_CabacTab
	cmp	r0, #0
	ldmeqfd	sp, {fp, sp, pc}
	ldr	r3, .L13
	mov	r0, #1
	ldr	r1, .L13+4
	ldr	r3, [r3, #68]
	blx	r3
	mvn	r0, #0
	ldmfd	sp, {fp, sp, pc}
.L14:
	.align	2
.L13:
	.word	vfmw_Osal_Func_Ptr_S
	.word	.LC1
	UNWIND(.fnend)
	.size	H264HAL_V300R001_InitHal, .-H264HAL_V300R001_InitHal
	.align	2
	.global	Get_V300R001_VirAddr
	.type	Get_V300R001_VirAddr, %function
Get_V300R001_VirAddr:
	UNWIND(.fnstart)
	@


, Constants.MASTER, ConfigConstants.CONFIG_KEY_MERGE)
  if (StringUtil.isEmpty(name)) {
    throw IllegalStateException("branch.master.merge refspec must be specified")
  }
  return name!!
}

public fun Repository.setUpstream(url: String?, branchName: String = Constants.MASTER): StoredConfig {
  // our local branch named 'master' in any case
  val localBranchName = Constants.MASTER

  val config = getConfig()
  val remoteName = Constants.DEFAULT_REMOTE_NAME
  if (StringUtil.isEmptyOrSpaces(url)) {
    LOG.debug("Unset remote")
    config.unsetSection(ConfigConstants.CONFIG_REMOTE_SECTION, remoteName)
    config.unsetSection(ConfigConstants.CONFIG_BRANCH_SECTION, localBranchName)
  }
  else {
    LOG.debug("Set remote $url")
    config.setString(ConfigConstants.CONFIG_REMOTE_SECTION, remoteName, ConfigConstants.CONFIG_KEY_URL, url)
    // http://git-scm.com/book/en/Git-Internals-The-Refspec
    config.setString(ConfigConstants.CONFIG_REMOTE_SECTION, remoteName, ConfigConstants.CONFIG_FETCH_SECTION, '+' + Constants.R_HEADS + branchName + ':' + Constants.R_REMOTES + remoteName + '/' + branchName)
    // todo should we set it if fetch specified (kirill.likhodedov suggestion)
    //config.setString(ConfigConstants.CONFIG_REMOTE_SECTION, remoteName, "push", Constants.R_HEADS + localBranchName + ':' + Constants.R_HEADS + branchName);

    config.setString(ConfigConstants.CONFIG_BRANCH_SECTION, localBranchName, ConfigConstants.CONFIG_KEY_REMOTE, remoteName)
    config.setString(ConfigConstants.CONFIG_BRANCH_SECTION, localBranchName, ConfigConstants.CONFIG_KEY_MERGE, Constants.R_HEADS + branchName)
  }
  config.save()
  return config
}

public fun Repository.computeIndexDiff(): IndexDiff {
  val workingTreeIterator = FileTreeIterator(this)
  try {
    return IndexDiff(this, Constants.HEAD, workingTreeIterator)
  }
  finally {
    workingTreeIterator.reset()
  }
}

public fun cloneBare(uri: String, dir: File, credentialsStore: NotNullLazyValue<CredentialsStore>? = null, progressMonitor: ProgressMonitor = NullProgressMonitor.INSTANCE): Repository {
  val repository = createBareRepository(dir)
  val config = repository.setUpstream(uri)
  val remoteConfig = RemoteConfig(config, Constants.DEFAULT_REMOTE_NAME)

  val result = repository.fetch(remoteConfig, if (credentialsStore == null) null else JGitCredentialsProvider(credentialsStore, repository), progressMonitor) ?: return repository
  var head = findBranchToCheckout(result)
  if (head == null) {
    val branch = Constants.HEAD
    head = result.getAdvertisedRef(branch) ?: result.getAdvertisedRef(Constants.R_HEADS + branch) ?: result.getAdvertisedRef(Constants.R_TAGS + branch)
  }

  if (head == null || head.getObjectId() == null) {
    return repository
  }

  if (head.getName().startsWith(Constants.R_HEADS)) {
    val newHead = repository.updateRef(Constants.HEAD)
    newHead.disableRefLog()
    newHead.link(head.getName())
    val branchName = Repository.shortenRefName(head.getName())
    config.setString(ConfigConstants.CONFIG_BRANCH_SECTION, branchName, ConfigConstants.CONFIG_KEY_REMOTE, Constants.DEFAULT_REMOTE_NAME)
    config.setString(ConfigConstants.CONFIG_BRANCH_SECTION, branchName, ConfigConstants.CONFIG_KEY_MERGE, head.getName())
    val autoSetupReba


characterName].bank[itemID] = count
                    end
                end

                -- Copy mail data
                if type(charData.mail) == "table" then
                    ConsumesManager_Data[realmName][characterName].mail = {}
                    for itemID, count in pairs(charData.mail) do
                        ConsumesManager_Data[realmName][characterName].mail[itemID] = count
                    end
                end
            end
        end

        ConsumesManager_UpdateAllContent()
    end

-- BASE64 ENCODE AND DECODE --------------------------------------------------------------------------------------------------

    local b = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    local d = {}
    do
        local i = 1
        while i <= string.len(b) do
            local c = string.sub(b, i, i)
            d[c] = i - 1
            i = i + 1
        end
    end

    function EncodeMessage(data)
        local encoded = {}
        local length = string.len(data)
        local i = 1
        while i <= length do
            local c1 = string.byte(data, i, i) i = i + 1
            local c2 = (i <= length) and string.byte(data, i, i) or nil i = i + 1
            local c3 = (i <= length) and string.byte(data, i, i) or nil i = i + 1

            local o1 = bit.rshift(c1, 2)
            local o2 = bit.bor(bit.lshift(bit.band(c1, 3),4), (c2 and bit.rshift(c2, 4) or 0))
            local o3 = (c2 and bit.bor(bit.lshift(bit.band(c2,15),2), (c3 and bit.rshift(c3,6) or 0)) or 64)
            local o4 = (c3 and bit.band(c3,63) or 64)

            table.insert(encoded, string.sub(b, o1+1, o1+1))
            table.insert(encoded, string.sub(b, o2+1, o2+1))
            if o3 ~= 64 then
                table.insert(encoded, string.sub(b, o3+1, o3+1))
            else
                table.insert(encoded, "=")
            end
            if o4 ~= 64 then
                table.insert(encoded, string.sub(b, o4+1, o4+1))
            else
                table.insert(encoded, "=")
            end
        end
        return table.concat(encoded, "")
    end

    function DecodeMessage(str)
        local decoded = {}
        local length = string.len(str)
        local i = 1
        while i <= length do
            local c1 = string.sub(str, i, i) i = i + 1
            local c2 = string.sub(str, i, i) i = i + 1
            if (not c2) or (c1 == '=') or (c2 == '=') then
                break
            end
            local c3 = string.sub(str, i, i) i = i + 1
            local c4 = string.sub(str, i, i) i = i + 1

            local dc1 = d[c1]
            local dc2 = d[c2]
            local dc3 = (c3 and c3 ~= '=' and d[c3]) or nil
            local dc4 = (c4 and c4 ~= '=' and d[c4]) or nil

            local o1 = bit.bor(bit.lshift(dc1, 2), bit.rshift(dc2, 4))
            table.insert(decoded, string.char(o1))

            if dc3 then
                local o2 = bit.bor(bit.lshift(bit.band(dc2, 15),4), bit.rshift(dc3, 2))
                table.insert(decoded, string.char(o2))
                if dc4 then
                    local o3 = bit.bor(bit.lshift(bit.band(dc3, 3),6), dc4)
                    table.insert(decoded, string.char(o3))
                end
            end
        end
        return table.concat(decoded, "")
    end


de는 두 개의 GPU를 공유합니다. 인덱스 노드와 쿼리 노드에 다른 GPU를 할당하려면 구성 파일에서 extraEnv 을 다음과 같이 설정하여 구성을 적절히 수정할 수 있습니다:

cat <<EOF > custom-values.yaml
indexNode:
  resources:
    requests:
      nvidia.com/gpu: "1"
    limits:
      nvidia.com/gpu: "1"
  extraEnv:
    - name: CUDA_VISIBLE_DEVICES
      value: "0"
queryNode:
  resources:
    requests:
      nvidia.com/gpu: "1"
    limits:
      nvidia.com/gpu: "1"
  extraEnv:
    - name: CUDA_VISIBLE_DEVICES
      value: "1"
EOF
<button class="copy-code-btn"></button>

$ helm install my-release milvus/milvus -f custom-values.yaml
<button class="copy-code-btn"></button>

릴리스 이름에는 문자, 숫자, 대시만 포함해야 합니다. 릴리즈 이름에는 점을 사용할 수 없습니다.

기본 명령줄은 헬름과 함께 밀버스를 설치하는 동안 클러스터 버전의 밀버스를 설치한다. Milvus를 독립형으로 설치할 때는 추가 설정이 필요하다.

쿠버네티스의 더 이상 사용되지 않는 API 마이그레이션 가이드에 따르면, v1.25부터 정책/v1beta1 버전의 파드장애예산 API 버전은 더 이상 제공되지 않는다. 대신 정책/v1 API 버전을 사용하도록 매니페스트와 API 클라이언트를 마이그레이션하는 것이 좋다.
쿠버네티스 v1.25 이상에서 여전히 파드디스럽션버짓의 정책/v1beta1 API 버전을 사용하는 사용자를 위한 해결 방법으로, 대신 다음 명령을 실행하여 밀버스를 설치할 수 있다:
. helm install my-release milvus/milvus --set pulsar.bookkeeper.pdb.usePolicy=false,pulsar.broker.pdb.usePolicy=false,pulsar.proxy.pdb.usePolicy=false,pulsar.zookeeper.pdb.usePolicy=false

자세한 내용은 밀버스 헬름 차트와 헬름을 참고한다.

Milv


=> this.personnes=x);
alert("USER "+ this.username + " HAS BEEN ADDED ! YOU CAN NOW LOGIN");
this.zone.runOutsideAngular(() => {
  location.reload();
});
}
}
  constructor(private logservice:LoginpersService,public zone: NgZone ) { }

  ngOnInit() {
    this.logservice.getPersonne()
    .subscribe(
    productss => {
    this.personnes=productss});

  }

}
import { Card } from '../../../interfaces'
import Set from '../BREAKthrough'

const card: Card = {
	name: {
		en: "Mismagius",
		fr: "Magirêve",
		es: "Mismagius",
		it: "Mismagius",
		pt: "Mismagius",
		de: "Traunmagil"
	},
	illustrator: "Ayaka Yoshida",
	rarity: "Rare",
	category: "Pokemon",

	set: Set,
	dexId: [
		429,
	],
	hp: 90,
	types: [
		"Psychic",
	],
	evolveFrom: {
		en: "Misdreavus",
		fr: "Feuforêve",
		es: "Misdreavus",
		it: "Misdreavus",
		pt: "Misdreavus",
		de: "Traunfugil"
	},
	stage: "Stage1",

	abilities: [
		{
			type: "Ability",
			name: {
				en: "Twisted Incantation",
				fr: "Incantation Maléfique",
				es: "Encantamiento Maldito",
				it: "Incanto Malefico",
				pt: "Encantamento Retorcido",
				de: "Böse Beschwörung"
			},
			effect: {
				en: "When you play this Pokémon from your hand to evolve 1 of your Pokémon, you may have your opponent shuffle his or her hand into his or her deck and draw a card for each of his or her remaining Prize cards.",
				fr: "Lorsque vous jouez ce Pokémon de votre main pour faire évoluer l'un de vos Pokémon, vous pouvez demander à votre adversaire de mélanger sa main dans son deck et de piocher une carte pour chacune des cartes Récompense qu'il lui reste.",
				es: "Cuando juegues este Pokémon de tu mano para hacer evolucionar a 1 de tus Pokémon, puedes hacer que tu rival ponga las cartas de su mano en su baraja y las baraje todas, y robe 1 carta por cada una de las cartas de Premio que le queden.",
				it: "Quando giochi questo Pokémon dalla tua mano per far evolvere uno dei tuoi Pokémon, puoi far rimischiare al tuo avversario le carte che ha in mano nel suo mazzo e fargli pescare una carta per ogni carta Premio che gli resta.",
				pt: "Ao jogar este Pokémon da sua mão para evoluir 1 dos seus Pokémon, você pode fazer com que o seu oponente embaralhe sua mão em seu baralho e compre um card para cada um dos cards de Prêmio restantes do seu oponente.",
				de: "Wenn du dieses Pokémon von deiner Hand spielst, um 1 deiner Pokémon zu entwickeln, kannst du deinen Gegner dazu veranlassen, seine Handkarten in sein Deck zu mischen und 1 Karte für jede seiner noch übrigen Preiskarten zu ziehen."
			},
		},
	],
	attacks: [
		{
			cost: [
				"Psychic",
				"Colorless",
				"Colorless",
			],
			name: {
				en: "Curse Deeply",
				fr: "Malédiction Intense",
				es: "Profunda Maldición",
				it: "Sortilegio",
				pt: "Maldição Profunda",
				de: "Nachhaltiger Fluch"
			},
			effect: {
				en: "Your opponent's Active Pokémon is now Confused.",
				fr: "Le Pokémon Actif de votre adversaire est maint


 fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            Self::Neg => write!(f, "-"),
            Self::Not => write!(f, "not"),
            Self::Abs => write!(f, "abs"),
            Self::Sqrt => write!(f, "sqrt"),
            Self::Sin => write!(f, "sin"),
            Self::Cos => write!(f, "cos"),
            Self::Tan => write!(f, "tan"),
            Self::Asin => write!(f, "asin"),
            Self::Acos => write!(f, "acos"),
            Self::Atan => write!(f, "atan"),
        }
    }
}

/// Represents an infix operation.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum InfixOp {
    Add,
    Sub,
    Mul,
    Div,
    Mod,
    Exp,
    LessThan,
    LessEqual,
    GreaterThan,
    GreaterEqual,
    Equal,
    NotEqual,
    And,
    Or,
}

impl InfixOp {
    fn to_precedence(&self) -> u32 {
        match self {
            Self::Exp => 80,
            Self::Mul | Self::Div | Self::Mod => 70,
            Self::Add | Self::Sub => 60,
            Self::LessThan | Self::LessEqual | Self::GreaterThan | Self::GreaterEqual => 50,
            Self::Equal | Self::NotEqual => 40,
            Self::Or => 30,
            Self::And => 20,
        }
    }

    /// Returns whether or not an infix operation is associative.
    pub fn is_associative(&self) -> bool {
        match self {
            Self::Add | Self::Mul => true,
            _ => false,
        }
    }
}

impl fmt::Display for InfixOp {
    /// Formats an infix operation as a string.
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            Self::Add => write!(f, "+"),
            Self::Sub => write!(f, "-"),
            Self::Mul => write!(f, "*"),
            Self::Div => write!(f, "/"),
            Self::Mod => write!(f, "%"),
            Self::Exp => write!(f, "^"),
            Self::LessThan => write!(f, "<"),
            Self::LessEqual => write!(f, "<="),
            Self::GreaterThan => write!(f, ">"),
            Self::GreaterEqual => write!(f, ">="),
            Self::Equal => write!(f, "=="),
            Self::NotEqual => write!(f, "!="),
            Self::And => write!(f, "and"),
            Self::Or => write!(f, "or"),
        }
    }
}
// This file was generated by gir (d50d839) from gir-files (469db10)
// DO NOT EDIT

use ffi;
use glib;
use glib::StaticType;
use glib::Value;
use glib::object::Downcast;
use glib::object::IsA;
use glib::signal::SignalHandlerId;
use glib::signal::connect;
use glib::translate::*;
use glib_ffi;
use gobject_ffi;
use gtk;
use std::boxed::Box as Box_;
use std::mem;
use std::mem::transmute;
use std::ptr;

glib_wrapper! {
    pub struct FileChooserRequest(Object<ffi::WebKitFileChooserRequest, ffi::WebKitFileChooserRequestClass>);

    match fn {
        get_type => || ffi::webkit_file_chooser_request_get_type(),
    }
}

pub trait FileChooserRequestExt {
    fn cancel(&self);

    fn get_mime_types(&self) -> Vec<String>;

    fn get_mime_types_filter(&self) -> Option<gtk::FileFilter>;

    fn get_select_multiple(&self) -> bool;

    fn get_selected_files(&self) -> Vec<String>;

    fn select_files(&self, files: &[&str]);

    fn get_property_filter(&self) -> Option<gtk::FileFilter>;

    fn connect_property_filter_notify<F: Fn(&Self) + 'static>


/17577)]
* peering: gRPC queries for TrustBundleList, TrustBundleRead, PeeringList, and PeeringRead now support blocking semantics,
  reducing network and CPU demand.
  The HTTP APIs for Peering List and Read have been updated to support blocking. [[GH-17426](https://github.com/hashicorp/consul/issues/17426)]
* raft: Remove expensive reflection from raft/mesh hot path [[GH-16552](https://github.com/hashicorp/consul/issues/16552)]
* systemd: set service type to notify. [[GH-16845](https://github.com/hashicorp/consul/issues/16845)]

BUG FIXES:

* cache: fix a few minor goroutine leaks in leaf certs and the agent cache [[GH-17636](https://github.com/hashicorp/consul/issues/17636)]
* connect: reverts #17317 fix that caused a downstream error for Ingress/Mesh/Terminating GWs when their respective config entry does not already exist. [[GH-17541](https://github.com/hashicorp/consul/issues/17541)]
* namespaces: **(Enterprise only)** fixes a bug where agent health checks stop syncing for all services on a node if the namespace of any service has been removed from the server.
* namespaces: **(Enterprise only)** fixes a bug where namespaces are stuck in a deferred deletion state indefinitely under some conditions.
  Also fixes the Consul query metadata present in the HTTP headers of the namespace read and list endpoints.
* namespaces: adjusts the return type from HTTP list API to return the `api` module representation of a namespace.
  This fixes an error with the `consul namespace list` command when a namespace has a deferred deletion timestamp.
* peering: Fix a bug that caused server agents to continue cleaning up peering resources even after loss of leadership. [[GH-17483](https://github.com/hashicorp/consul/issues/17483)]
* peering: Fix issue where modifying the list of exported services did not correctly replicate changes for services that exist in a non-default namespace. [[GH-17456](https://github.com/hashicorp/consul/issues/17456)]

## 1.13.9 (June 26, 2023)
BREAKING CHANGES:

* connect: Disable peering by default in connect proxies for Consul 1.13. This change was made to prevent inefficient polling
  queries from having a negative impact on server performance. Peering in Consul 1.13 is an experimental feature and is not
  recommended for use in production environments. If you still wish to use the experimental peering feature, ensure
  [`peering.enabled = true`](https://developer.hashicorp.com/consul/docs/v1.13.x/agent/config/config-files#peering_enabled)
  is set on all clients and servers. [[GH-17731](https://github.com/hashicorp/consul/issues/17731)]

SECURITY:

* Update to UBI base image to 9.2. [[GH-17513](https://github.com/hashicorp/consul/issues/17513)]

FEATURES:

* server: **(Enterprise Only)** allow automatic license utilization reporting. [[GH-5102](https://github.com/hashicorp/consul/issues/5102)]

IMPROVEMENTS:

* debug: change default setting of consul debug command. now default duration is 5ms and default log level is 'TRACE' [[GH-17596](https://github.com/hashicorp/consul/issues/17596)]
* systemd: set service type to notify. [[GH-16845](https://github.com/hashicorp/consul/issues/16845)]

BUG FIXES:

* cache: fix a few minor goroutine leaks in leaf certs and the agent cache [[GH-17636](https://github.com/hashicorp/consul/issues/17636)]
* namespaces: **(Enterprise only)** fixes a bug where namespaces are stuck in a deferred deletion state indefinitely under some conditions.
  Also fixes the Consul query metadata present in the HTTP headers of the namespace read and list endp


res).toStrictEqual({
    total: 8,
    mainMassage:
      "清水寺。清水坂を越え、仁王門を抜けると、本堂――いわゆる清水の舞台にたどり着く。そこからは、音羽の滝や子安塔が見える。",
    status: Status.Unknown,
    process: [
      "神社仏閣シーン表",
      "8[6,2]",
      "清水寺。清水坂を越え、仁王門を抜けると、本堂――いわゆる清水の舞台にたどり着く。そこからは、音羽の滝や子安塔が見える。"
    ],
    isSecret: false,
    dice: [{ faces: 6, value: 6 }, { faces: 6, value: 2 }]
  });
});

test("FT", () => {
  let randMock = new RandomMock("4/6");
  dengine.setRand(randMock);
  const input = "FT";
  const res = dengine.roll(input);
  expect(res).toStrictEqual({
    total: 4,
    mainMassage: "油断した！　術の制御に失敗し、好きな【生命力】を１点失う。",
    status: Status.Unknown,
    process: [
      "ファンブル表",
      "4[4]",
      "油断した！　術の制御に失敗し、好きな【生命力】を１点失う。"
    ],
    isSecret: false,
    dice: [{ faces: 6, value: 4 }]
  });
});

test("ET", () => {
  let randMock = new RandomMock("1/6");
  dengine.setRand(randMock);
  const input = "ET";
  const res = dengine.roll(input);
  expect(res).toStrictEqual({
    total: 1,
    mainMassage: "共感（プラス）／不信（マイナス）",
    status: Status.Unknown,
    process: ["感情表", "1[1]", "共感（プラス）／不信（マイナス）"],
    isSecret: false,
    dice: [{ faces: 6, value: 1 }]
  });
});

test("WT", () => {
  let randMock = new RandomMock("2/6");
  dengine.setRand(randMock);
  const input = "WT";
  const res = dengine.roll(input);
  expect(res).toStrictEqual({
    total: 2,
    mainMassage:
      "マヒ:修得済み特技がランダムに１つ使用不能になる。１サイクルの終了時に、《身体操術》で成功するとこの効果は無効化される。",
    status: Status.Unknown,
    process: [
      "変調表",
      "2[2]",
      "マヒ:修得済み特技がランダムに１つ使用不能になる。１サイクルの終了時に、《身体操術》で成功するとこの効果は無効化される。"
    ],
    isSecret: false,
    dice: [{ faces: 6, value: 2 }]
  });
});

test("GWT", () => {
  let randMock = new RandomMock("1/6");
  dengine.setRand(randMock);
  const i


=!0,this},e.prototype.stop=function(i){return i&&void 0!==this._container&&this._container.removeChild(this._el),this._el.classList.remove("tv-spinner--shown"),this._shown=!1,this},e.prototype.setStyle=function(o){var i=this;return Object.keys(o).forEach(function(p){var n=o[p];void 0!==n&&i._el.style.setProperty(p,n)}),this},e.prototype.setSize=function(o){var i=void 0!==o?"tv-spinner--size_"+o:"";return this._el.className="tv-spinner "+i+" "+(this._shown?"tv-spinner--shown":""),this},e.prototype.getEl=function(){return this._el},e.prototype.destroy=function(){this.stop(),delete this._el,delete this._container},e}();window.Spinner=l}();var b=(f.foregroundColor)?f.foregroundColor:"auto";var c=new Spinner("large").setStyle({color:b,zIndex:String(2000000000),});c.getEl().classList.add("spinner");c.spin(a)})();</script><script>var _tv_languages=_tv_languages||{};_tv_languages.zh={All:"全部",Save:"保存",Show:"显示",Delete:"删除",Cancel:"取消",Error:"错误",Yes:"是",No:"否",Price:"价格",Currency:"货币",Change:"涨跌",Open:"开盘价",Comment:"评论",Sector:"板块",Industry:"行业",Ticker:"商品代码",Search:"搜索",Date:"日期",Description:"说明",Trading:"交易","Technical Analysis":"技术分析","Head and Shoulders":"头肩形",Settings:"设置",Width:"线宽",Background:"背景",Border:"边框",Apply:"应用",Symbol:"商品品种",Exchange:"交易所",Timezone:"时区","Color Theme":"主题颜色","Bar's Style":"图表样式",Bars:"美国线",Candles:"K线图","Hollow Candles":"空心K线图","Heikin Ashi":"平均K线图",Line:"线形图",Area:"面积图",Grid:"网格",Add:"添加",Regular:"正常",Indicators:"指标",January:"1月",February:"2月",March:"3月",April:"4月",May:"5月",June:"6月",July:"7月",August:"8月",September:"9月",October:"10月",November:"11月",December:"12月",Contracts:"合约",Prices:"价格",Type:"类型",Warning:"警告",Low:"最低价",Normal:"正常",High:"最高价",Bahrain:"巴林","Hong Kong":"香港",Luxembourg:"卢森堡","New Zealand":"新西兰",Qatar:"卡塔尔",Singapore:"新加坡","Market Open":"盘中","Market Closed":"休市","Post Market":"后市场","Pre Market":"盘前",Holiday:"假日",Quantity:"数量",Reverse:"反向",Ok:"确认",OK:"确认","Exit Full Screen (ESC)":"退出全屏(ESC)",m_interval_sho


 17)

	if _, err := io.Copy(os.Stdout, s); err != nil {
		log.Fatal(err)
	}

	// Output:
	// io.Reader stream
}

func ExampleSectionReader_ReadAt() {
	r := strings.NewReader("some io.Reader stream to be read\n")
	s := io.NewSectionReader(r, 5, 16)

	buf := make([]byte, 6)
	if _, err := s.ReadAt(buf, 10); err != nil {
		log.Fatal(err)
	}

	fmt.Printf("%s\n", buf)

	// Output:
	// stream
}

func ExampleSectionReader_Seek() {
	r := strings.NewReader("some io.Reader stream to be read\n")
	s := io.NewSectionReader(r, 5, 16)

	if _, err := s.Seek(10, io.SeekStart); err != nil {
		log.Fatal(err)
	}

	buf := make([]byte, 6)
	if _, err := s.Read(buf); err != nil {
		log.Fatal(err)
	}

	fmt.Printf("%s\n", buf)

	// Output:
	// stream
}

func ExampleSeeker_Seek() {
	r := strings.NewReader("some io.Reader stream to be read\n")
	if _, err := io.Copy(os.Stdout, r); err != nil {
		log.Fatal(err)
	}

	r.Seek(15, io.SeekStart)
	if _, err := io.Copy(os.Stdout, r); err != nil {
		log.Fatal(err)
	}

	r.Seek(-5, io.SeekEnd)
	if _, err := io.Copy(os.Stdout, r); err != nil {
		log.Fatal(err)
	}

	// Output:
	// some io.Reader stream to be read
	// stream to be read
	// read
}

func ExampleMultiWriter() {
	r := strings.NewReader("some io.Reader stream to be read\n")

	var buf1, buf2 bytes.Buffer
	w := io.MultiWriter(&buf1, &buf2)

	if _, err := io.Copy(w, r); err != nil {
		log.Fatal(err)
	}

	fmt.Print(buf1.String())
	fmt.Print(buf2.String())

	// Output:
	// some io.Reader stream to be read
	// some io.Reader stream to be read
}

func ExamplePipe() {
	r, w := io.Pipe()

	go func() {
		fmt.Fprint(w, "some text to be read\n")
		w.Close()
	}()

	buf := new(bytes.Buffer)
	buf.ReadFrom(r)
	fmt.Print(buf.String())

	// Output:
	// some text to be read
}
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build ignore
// +build ignore

// Unicode table generator.
// Data read from the web.

package main

import (
	"bufio"
	"flag"
	"fmt"
	"log"
	"net/http"
	"os"
	"os/exec"
	"path/filepath"

	"rsc.io/xstd/go1.12/io"
	"rsc.io/xstd/go1.12/regexp"
	"rsc.io/xstd/go1.12/sort"
	"rsc.io/xstd/go1.12/strconv"
	"rsc.io/xstd/go1.12/strings"
	"rsc.io/xstd/go1.12/unicode"
)

func main() {
	flag.Parse()
	setupOutput()
	loadChars() // always needed
	loadCasefold()
	printCategories()
	printScriptOrProperty(false)
	printScriptOrProperty(true)
	printCases()
	printLatinProperties()
	printCasefold()
	printSizes()
	flushOutput()
}

func defaultVersion() string {
	if v := os.Getenv("UNICODE_VERSION"); v != "" {


, time.toEpochMilli(), time.plusSeconds(2).toEpochMilli()),
            null,
            createGenericDateHistogramAggregatorFactoriesBuilder());
    assertThat(longquery.hits.size()).isEqualTo(1);

    SearchResult<LogMessage> floatquery =
        strictLogStore.logSearcher.search(
            TEST_DATASET_NAME,
            10,
            QueryBuilderUtil.generateQueryBuilder(
                "floatval:3", time.toEpochMilli(), time.plusSeconds(2).toEpochMilli()),
            null,
            createGenericDateHistogramAggregatorFactoriesBuilder());
    assertThat(floatquery.hits.size()).isEqualTo(1);

    SearchResult<LogMessage> doublequery =
        strictLogStore.logSearcher.search(
            TEST_DATASET_NAME,
            10,
            QueryBuilderUtil.generateQueryBuilder(
                "doubleval:4", time.toEpochMilli(), time.plusSeconds(2).toEpochMilli()),
            null,
            createGenericDateHistogramAggregatorFactoriesBuilder());
    assertThat(doublequery.hits.size()).isEqualTo(1);
  }

  @Test
  public void testTopKQuery() throws IOException {
    Instant time = Instant.now();
    loadTestData(time);

    SearchResult<LogMessage> apples =
        strictLogStore.logSearcher.search(
            TEST_DATASET_NAME,
            2,
            QueryBuilderUtil.generateQueryBuilder(
                "apple", time.toEpochMilli(), time.plusSeconds(100).toEpochMilli()),
            null,
            createGenericDateHistogramAggregatorFactoriesBuilder());
    assertThat(apples.hits.stream().map(m -> m.getId()).collect(Collectors.toList()))
        .isEqualTo(Arrays.asList("Message5", "Message3"));
    assertThat(apples.hits.size()).isEqualTo(2);

    InternalDateHistogram histogram =
        (InternalDateHistogram) Objects.requireNonNull(apples.internalAggregation);

    assertThat(histogram.getBuckets().size()).isEqualTo(3);
    assertThat(histogram.getBuckets().get(0).getDocCount()).isEqualTo(1);
    assertThat(histogram.getBuckets().get(1).getDocCount()).isEqualTo(1);
    assertThat(histogram.getBuckets().get(2).getDocCount()).isEqualTo(1);
  }

  @Test
  public void testSearchMultipleCommits() throws IOException {
    Instant time = Instant.now();

    strictLogStore.logStore.addMessage(SpanUtil.makeSpan(1, "apple", time));
    strictLogStore.logStore.addMessage(SpanUtil.makeSpan(2, "apple baby", time.plusSeconds(2)));
    strictLogStore.logStore.commit();
    strictLogStore.logStore.refresh();

    SearchResult<LogMessage> baby =
        strictLogStore.logSearcher.search(
            TEST_DATASET_NAME,
            2,
            QueryBuilderUtil.generateQueryBuilder(
                "baby", time.toEpochMilli(), time.plusSeconds(10).toEpochMilli()),
            null,
            createGenericDateHistogramAggregatorFactoriesBuilder());
    assertThat(baby.hits.size()).isEqualTo(1);
    assertThat(baby.hits.get(0).getId()).isEqualTo("Message2");
    assertThat(getCount(MESSAGES_RECEIVED_COUNTER, strictLogStore.metricsRegistry)).isEqualTo(2);
    assertThat(getCount(MESSAGES_FAILED_COUNTER, strictLogStore.metricsRegistry)).isEqualTo(0);
    assertThat(getTimerCount(REFRESHES_TIMER, strictLogStore.metricsRegistry)).isEqualTo(1);
    assertThat(getTimerCount(COMMITS_TIMER, strictLogStore.metricsRegistry)).isEqualTo(1);

    // Add car but don't commit. So, no results for car.
    strictLogStore.logStore.addMessage(SpanUtil.makeSpan(3, "car", time.plusSeconds


;
    t['Scala'] = true;
    t['Seagull'] = true;
    t['Sistina'] = true;
    t['Souvenir'] = true;
    t['STIX'] = true;
    t['Stone Informal'] = true;
    t['Stone Serif'] = true;
    t['Sylfaen'] = true;
    t['Times'] = true;
    t['Trajan'] = true;
    t['Trinité'] = true;
    t['Trump Mediaeval'] = true;
    t['Utopia'] = true;
    t['Vale Type'] = true;
    t['Bitstream Vera'] = true;
    t['Vera Serif'] = true;
    t['Versailles'] = true;
    t['Wanted'] = true;
    t['Weiss'] = true;
    t['Wide Latin'] = true;
    t['Windsor'] = true;
    t['XITS'] = true;
   });
   var getSymbolsFonts = getLookupTableFactory(function (t) {
    t['Dingbats'] = true;
    t['Symbol'] = true;
    t['ZapfDingbats'] = true;
   });
   var getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {
    t[2] = 10;
    t[3] = 32;
    t[4] = 33;
    t[5] = 34;
    t[6] = 35;
    t[7] = 36;
    t[8] = 37;
    t[9] = 38;
    t[10] = 39;
    t[11] = 40;
    t[12] = 41;
    t[13] = 42;
    t[14] = 43;
    t[15] = 44;
    t[16] = 45;
    t[17] = 46;
    t[18] = 47;
    t[19] = 48;
    t[20] = 49;
    t[21] = 50;
    t[22] = 51;
    t[23] = 52;
    t[24] = 53;
    t[25] = 54;
    t[26] = 55;
    t[27] = 56;
    t[28] = 57;
    t[29] = 58;
    t[30] = 894;
    t[31] = 60;
    t[32] = 61;
    t[33] = 62;
    t[34] = 63;
    t[35] = 64;
    t[36] = 65;
    t[37] = 66;
    t[38] = 67;
    t[39] = 68;
    t[40] = 69;
    t[41] = 70;
    t[42] = 71;
    t[43] = 72;
    t[44] = 73;
    t[45] = 74;
    t[46] = 75;
    t[47] = 76;
    t[48] = 77;
    t[49] = 78;
    t[50] = 79;
    t[51] = 80;
    t[52] = 81;
    t[53] = 82;
    t[54] = 83;
    t[55] = 84;
    t[56] = 85;
    t[57] = 86;
    t[58] = 87;
    t[59] = 88;
    t[60] = 89;
    t[61] = 90;
    t[62] = 91;
    t[63] = 92;
    t[64] = 93;
    t[65] = 94;
    t[66] = 95;
    t[67] = 96;
    t[68] = 97;
    t[69] = 98;
    t[70] = 99;
    t[71] = 100;
    t[72] = 101;
    t[73] = 102;
    t[74] = 103;
    t[75] = 104;
    t[76] = 105;
    t[77] = 106;
    t[78] = 107;
    t[79] = 108;
    t[80] = 109;
    t[81] = 110;
    t[82] = 111;
    t[83] = 112;
    t[84] = 113;
    t[85] = 114;
    t[86] = 115;
    t[87] = 116;
    t[88] = 117;
    t[89] = 118;
    t[90] =


;
    border: none !important;
}

body.dark-mode .mdui-card ,
body.dark-mode .introjs-tooltip{
    animation: fadeInDown;
    animation-duration: 0.5s;
    background: rgb(20, 20, 20);
    background: radial-gradient(circle, rgba(20, 20, 20, 1) 47%, rgb(20 20 28) 100%);
    margin:8px;
}
.introjs-tooltip .bottom{
    width: auto !important;
    height: auto !important;
    background-color: rgb(0 0 0 / 0%) !important;
}

body.dark-mode .mdui-panel-item {
    background-color: #141414;
    /*outline: 1px solid white;*/
}
body.dark-mode .layui-form-select,
body.dark-mode .layui-layer,
body.dark-mode .mdui-select-menu ，
body.dark-mode .layui-table,
body.dark-mode .mdui-select-menu-item,
body.dark-mode .mdui-table {
    color: #ffffff !important;
    background-color: #141414 !important;
}

body.dark-mode .layui-form {
    color: #ffffff !important;
    background-color: #141414 !important;
}

body.dark-mode .mdui-table tbody tr {
    background-color: #141414 !important;
    color: #ffffff !important;
}

body.dark-mode .mdui-table thead {
    background-color: #333333 !important;
    color: #ffffff !important;
}

body.dark-mode .layui-table tbody tr {
    background-color: #141414 !important;
    color: #ffffff !important;
}
body.cark-mode  .layui-laypage-em,
body.dark-mode .layui-table tbody tr th {
    background-color: #141414 !important;
    color: #ffffff !important;
}

body.dark-mode .layui-table thead {
    background-color: #333333 !important;
    color: #ffffff !important;
}

body.dark-mode .layui-table thead th {
    background-color: #141414 !important;
    color: #ffffff !important;
}

body.dark-mode .mdui-table tbody tr td {
    background-color: #141414 !important;
    color: #ffffff !important;
}

body.dark-mode .mdui-table thead th {
    background-color: #333333 !important;
    color: #ffffff !important;
}
body.glass-mode .mdui-typo-title,
body.glass-mode #tab-1 .mdui-card-primary-title,
body.glass-mode .tittle{
    color: #0A97FF;
}
body.dark-mode .mdui-typo-title,
body.dark-mode #tab-1 .mdui-card-primary-title,
body.dark-mode .tittle{
    color: #0A97FF;
}
body.dark-mode .ant-pro-layout-bg-list {
    pointer-events: none;
    position: fixed;
    overflow: hidden;
    inset-block-start: 0;
    inset-inline-start: 0;
    z-index: 0;
    height: 100%;
    width: 100%;
    background: linear-gradient(#141414, #000000 28%);}
body.dark-mode .mdui-select-selected,
body.dark-mode .mdui-select,
body.dark-mode .mdui-card-content,
body.dark-mode .introjs-tooltip,
body.dark-mode .mdui-card-primary-title,
body.dark-mode .mdui-card-primary-subtitle,
body.dark-mode .mdui-btn,
body.dark-mode h1


30 801FF8E0 AC590098 */  sw    $t9, 0x98($v0)
/* 1AD934 801FF8E4 8C690000 */  lw    $t1, ($v1)
/* 1AD938 801FF8E8 3C01800E */ lui $at, 0x800e
/* 1AD93C 801FF8EC 2508F974 */ addiu $t0, -0x68c
/* 1AD940 801FF8F0 8D2A0000 */  lw    $t2, ($t1)
/* 1AD944 801FF8F4 000A5880 */  sll   $t3, $t2, 2
/* 1AD948 801FF8F8 002B0821 */  addu  $at, $at, $t3
/* 1AD94C 801FF8FC AC28F150 */ sw $t0, -0xeb0($at)
/* 1AD950 801FF900 3C0142A0 */  li    $at, 0x42A00000 # 80.000000
/* 1AD954 801FF904 44816000 */  mtc1  $at, $f12
/* 1AD958 801FF908 0C066F0D */  jal   func_8019BC34_ovl9
/* 1AD95C 801FF90C 00000000 */   nop
/* 1AD960 801FF910 3C0C8005 */ lui $t4, 0x8005
/* 1AD964 801FF914 8D8CA7C4 */ lw $t4, -0x583c($t4)
/* 1AD968 801FF918 3C01800E */ lui $at, 0x800e
/* 1AD96C 801FF91C 3C048020 */ lui $a0, 0x8020
/* 1AD970 801FF920 8D8D0000 */  lw    $t5, ($t4)
/* 1AD974 801FF924 2484F860 */ addiu $a0, -0x7a0
/* 1AD978 801FF928 000D7080 */  sll   $t6, $t5, 2
/* 1AD97C 801FF92C 002E0821 */  addu  $at, $at, $t6
/* 1AD980 801FF930 0C068354 */  jal   func_801A0D50
/* 1AD984 801FF934 AC20DC50 */ sw $zero, -0x23b0($at)
/* 1AD988 801FF938 3C0F8005 */ lui $t7, 0x8005
/* 1AD98C 801FF93C 8DEFA7C4 */ lw $t7, -0x583c($t7)
/* 1AD990 801FF940 3C04800E */ lui $a0, 0x800e
/* 1AD994 801FF944 3C068022 */ lui $a2, 0x8022
/* 1AD998 801FF948 8DF80000 */  lw    $t8, ($t7)
/* 1AD99C 801FF94C 24C6C744 */ addiu $a2, -0x38bc
/* 1AD9A0 801FF950 24050003 */  li    $a1, 3
/* 1AD9A4 801FF954 0018C880 */  sll   $t9, $t8, 2
/* 1AD9A8 801FF958 00992021 */  addu  $a0, $a0, $t9
/* 1AD9AC 801FF95C 0C02911F */  jal   call_virtual_function
/* 1AD9B0 801FF960 8C84DC50 */ lw $a0, -0x23b0($a0)
/* 1AD9B4 801FF964 8FBF0014 */  lw    $ra, 0x14($sp)
/* 1AD9B8 801FF968 27BD0018 */  addiu $sp, $sp, 0x18
/* 1AD9BC 801FF96C 03E00008 */  jr    $ra
/* 1AD9C0 801FF970 00000000 */   nop

.type func_801FF8A8_ovl9, @function
.size func


33h-0.002l0.771-2.316h4.56l0.771,2.316c0.14,0.419,0.53,0.685,0.949,0.685c0.104,0,0.211-0.017,0.316-0.052c0.524-0.175,0.808-0.742,0.633-1.265l-1.002-3.001c-0.136-0.407-0.518-0.683-0.945-0.683h-6.002c-0.428,0-0.812,0.275-0.948,0.683l-1,2.999C10.532,8.77,10.815,9.337,11.338,9.512z");
  }
});

/***/ }),

/***/ "./src/shape/icon/Twitter.js":
/*!***********************************!*\
  !*** ./src/shape/icon/Twitter.js ***!
  \***********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var _packages = __webpack_require__(/*! ../../packages */ "./src/packages.js");

var _packages2 = _interopRequireDefault(_packages);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/**
 * @class

 *
 * @example
 *
 *    let icon =  new draw2d.shape.icon.Twitter();
 *
 *    canvas.add(icon,50,10);
 *
 * @inheritable
 * @author Andreas Herz
 * @extends draw2d.shape.icon.Icon
 */
_packages2.default.shape.icon.Twitter = _packages2.default.shape.icon.Icon.extend(
/** @lends draw2d.shape.icon.Twitter.prototype */
{

  NAME: "draw2d.shape.icon.Twitter",

  /**
   *
   * Creates a new icon element which are not assigned to any canvas.
   *
   * @param {Object} attr the configuration of the shape
   */
  init: function init(attr, setter, getter) {
    this._super(extend({ width: 50, height: 50 }, attr), setter, getter);
  },

  /**
   * @private
   * @returns {Object} the raphaelJS path object
   */
  createSet: function createSet() {
    return this.canvas.paper.path("M23.295,22.567h-7.213c-2.125,0-4.103-2.215-4.103-4.736v-1.829h11.232c1.817,0,3.291-1.469,3.291-3.281c0-1.813-1.474-3.282-3.291-3.282H11.979V6.198c0-1.835-1.375-3.323-3.192-3.323c-1.816,0-3.29,1.488-3.29,3.323v11.633c0,6.23,4.685,11.274,10.476,11.274h7.211c1.818,0,3.318-1.463,3.318-3.298S25.112,22.567,23.295,22.567z");
  }
});

/***/ }),

/***/ "./src/shape/icon/TwitterBird.js":
/*!***************************************!*\
  !*** ./src/shape/icon/TwitterBird.js ***!
  \***************************************/
/*! no static exports found */
/***/ (function(module,


1 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHorse = {\n  prefix: 'fas',\n  iconName: 'horse',\n  icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n  prefix: 'fas',\n  iconName: 'horse-head',\n  icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45


词汇代表的意境，在卡兹戴尔是几乎不可能存在的，这揭示了环境如何剥夺了居民感受美好事物的能力。
## 关键人物
陨星;萨卡兹教师;萨卡兹孩童
## 角色剧情概括
-   **[陨星](../char_v3/char_219_meteo.md)([v1](../chars/char_219_meteo.md))**: 本次活动的主角，通过她现在作为“陨星”教导萨卡兹孩童的情景，引入了她过去在战乱卡兹戴尔作为年轻雇佣兵“钝镝”的经历。她在过去的故事中，是一个坚韧、务实、充满创伤的萨卡兹女孩，学习能力强但难以理解非生存相关的概念，尤其是对于“宁静快乐的夜晚”这个词汇。她在萨卡兹教师的教导下，对知识产生了初步的兴趣，短暂感受到了美好事物的可能（萤火虫），但很快被现实打破。她继承了教师未完成的词典和理解那个词的遗愿。在现在的时间线，她成为了教导下一代的人，并在安全的环境中，通过孩子自然的理解，终于理解了那个困扰她多年的词汇，完成了一段漫长的心理疗愈过程，并因此流泪。
-   **萨卡兹教师**: 一位在卡兹戴尔战火中坚持传授知识和文化的萨卡兹人。他相信知识的力量，试图通过教育抵抗野蛮。他遇到了年轻的钝镝，并耐心教导她读写算术，发现了她的潜力。他尤其希望帮助钝镝理解“宁静快乐的夜晚”这个词，但屡屡被她根深蒂固的创伤所阻碍。在营地被袭、希望破灭后，他对知识在战乱中的作用感到绝望，认为自己无法对抗现实的残酷。他将自己多年的心血——一本未完成的萨卡兹语词典——托付给钝镝，寄望于她未来能在更好的环境中理解那个词，完成他的心愿。他代表着在绝境中仍试图守护文明火种的人，以及这种努力在残酷现实面前的脆弱。
-   **萨卡兹孩童**: 出现在故事的框架部分，由成年陨星教导。他们的出现象征着萨卡兹的未来，以及在远离卡兹戴尔战火的环境中，能够拥有相对平静、可以理解“宁静快乐的夜晚”


.watch_file)
            if hasattr(get, "by_process"):
                by_process = int(get.by_process)
                if by_process < 0:
                    by_process = 0
        except (AttributeError, ValueError):
            return "参数格式错误"

        if not project_name:
            return "项目名称不能为空"
        if not 1 <= len(project_name) <= 20:
            return "项目名称不超过20字符"
        if public.M('sites').where('name=?', (project_name,)).count():
            return '指定项目名称已存在: {}'.format(project_name)

        if not os.path.exists(project_jar):
            return '请输入正确的jar包路径'

        project_jdk = utils.normalize_jdk_path(project_jdk)
        if not isinstance(project_jdk, str):
            return '项目JDK路径不存在'
        if not os.path.exists(project_jdk):
            return '请输入正确的JDK路径'
        if not utils.test_jdk(project_jdk):
            return '请输入正确的JDK路径'

        # if project_cmd.find(project_jdk) == -1:
        #     return '启动命令中不包含JDK路径，请确认无误再添加'
        #
        # if project_cmd.find(project_jar) == -1:
        #     return '启动命令中不包含jar路径，请确认无误后再添加'

        # 检查project_cmd的起始命令是否是相对路径，如果是，则需要处理为绝对路径
        if project_cmd.startswith("./") or project_cmd.startswith("../"):
            path = os.path.dirname(project_jar)
            project_cmd_bin = os.path.abspath(os.path.join(path, project_cmd.split(" ", 1)[0]))
            if os.path.exists(project_cmd_bin):
                project_cmd = project_cmd_bin + " " + project_cmd.split(" ", 1)[1]
            else:
                return "启动命令的二进制文件为相对路径，这可能导致服务启动失败，请改为绝对路径使用"

        # if not by_process and not utils.check_port(port):
        #     return '端口格式错误或已被其他进程使用'

        if domains:
            if not public.is_apache_nginx():
                return "未安装Nginx"
            err_msg = public.checkWebConfig()
            if isinstance(err_msg, str):
                return (
                        'WEB服务器配置配置文件错误ERROR:
'
                        + err_msg.replace("\n", '
') + ''
                )

        if run_user not in [i["username"] for i in RealUser().get_user_list()["data"]]:
            return '请输入正确的启动用户'

        if domains:
            domains, err = normalize_domain(*domains)
            if err:
                return "
".join(["域名：{}，错误信息：{}".format(i['domain'], i['msg']) for i in err])
            else:
                for d, p in domains:
                    if public.M('domain').where('name=?', d).count():
                        return '指定域名已存在: {}'.format(d)

        return {
            "project_name": project_name,
            "project_jar": project_jar,
            "project_jdk": project_jdk,
            # "port": port,
            "run_user": run_user,
            "project_cmd": project_cmd,
            "ps": ps,
            "env_list": env_list,
            "env_file": env_file,
            "domains": ["{}:{}".format(i[0], i[1]) for i in domains],
            "proxy_path": proxy_path,
            "jmx_status": jmx_status,
            "watch_file": watch_file,
            "by_process": by_process,
        }

    def create_spring_boot_project(self, get):
        config = self.check_spring_boot_args(get)
        if isinstance(config, str):
            return json_response(status = False, msg = config)

        project_config = {
            'ssl_path': '/www/wwwroot/java_node_ssl',
            'project_jdk': config["project_jdk"],
            'project_name': config["project_name"],
            'project_jar': config["project_jar"],
            'bind_extranet': 0 if not config["domains"] else 1,
            'domains': config["domains"],
            'run_user': get.run_user.strip(),
            'jmx_status': config["jmx_status"],
            'project_cmd': config["project_cmd"],
            'java_type': 'springboot',
            'jar_path': os.path.dirname(config["project_jar"]),
            'pids': "{}/pids/{}.pid".format(self._java_project_vhost, config["project_name"]),
            'logs': "{}/{}.log".format(self._java_spring_boot_log_path, config["project_name"]),
            'scripts': "{}/scripts/{}.sh".format(self._java_project_vhost, config["project_name"]),
            'watch_file': config["watch_file"],
            'env_list': config["env_list"],
            'env_file': config["env_file"],
            'proxy_path': config["proxy_path"],
            "nohup_log": True,
            "sta


 vp = alloc_ty(bcx, t, "");
    call_lifetime_start(bcx, vp);
    store_ty(bcx, v, vp, t);
    let bcx = drop_ty_core(bcx, vp, t, debug_loc, skip_dtor);
    call_lifetime_end(bcx, vp);
    bcx
}

pub fn get_drop_glue<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>, t: Ty<'tcx>) -> ValueRef {
    get_drop_glue_core(ccx, DropGlueKind::Ty(t))
}

#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)]
pub enum DropGlueKind<'tcx> {
    /// The normal path; runs the dtor, and then recurs on the contents
    Ty(Ty<'tcx>),
    /// Skips the dtor, if any, for ty; drops the contents directly.
    /// Note that the dtor is only skipped at the most *shallow*
    /// level, namely, an `impl Drop for Ty` itself. So, for example,
    /// if Ty is Newtype(S) then only the Drop impl for Newtype itself
    /// will be skipped, while the Drop impl for S, if any, will be
    /// invoked.
    TyContents(Ty<'tcx>),
}

impl<'tcx> DropGlueKind<'tcx> {
    pub fn ty(&self) -> Ty<'tcx> {
        match *self { DropGlueKind::Ty(t) | DropGlueKind::TyContents(t) => t }
    }

    pub fn map_ty<F>(&self, mut f: F) -> DropGlueKind<'tcx> where F: FnMut(Ty<'tcx>) -> Ty<'tcx>
    {
        match *self {
            DropGlueKind::Ty(t) => DropGlueKind::Ty(f(t)),
            DropGlueKind::TyContents(t) => DropGlueKind::TyContents(f(t)),
        }
    }
}

fn get_drop_glue_core<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
                                g: DropGlueKind<'tcx>) -> ValueRef {
    let g = g.map_ty(|t| get_drop_glue_type(ccx.tcx(), t));
    match ccx.drop_glues().borrow().get(&g) {
        Some(&(glue, _)) => glue,
        None => {
            bug!("Could not find drop glue for {:?} -- {} -- {}.",
                    g,
                    TransItem::DropGlue(g).to_raw_string(),
                    ccx.codegen_unit().name());
        }
    }
}

pub fn implement_drop_glue<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
                                     g: DropGlueKind<'tcx>) {
    let tcx = ccx.tcx();
    assert_eq!(g.ty(), get_drop_glue_type(tcx, g.ty()));
    let (llfn, fn_ty) = ccx.drop_glues().borrow().get(&g).unwrap().clone();

    let (arena, fcx): (TypedArena<_>, FunctionContext);
    arena = TypedArena::new();
    fcx = FunctionContext::new(ccx, llfn, fn_ty, None, &arena);

    let bcx = fcx.init(false);

    ccx.stats().n_glues_created.set(ccx.stats().n_glues_created.get() + 1);
    // All glue functions take values passed *by alias*; this is a
    // requirement since in many contexts glue is invoked indirectly and
    // the caller has no idea if it's dealing with something that can be
    // passed by value.
    //
    // llfn is expected be declared to take a parameter of the appropriate
    // type, so we don't need to explicitly cast the function parameter.

    let bcx = make_drop_glue(bcx, get_param(


s bolsas deberán ordenar los objetos alfabéticamente.
 *  - Los diferentes tipos de bolsas deberán poder utilizarse de forma isomórfica.
 *
 * Habrá que crear una clase que nos permita crear heroes que podrán llevar objetos.
 *  - Al ser creado un nuevo heroe deberá inicializar el inventario vacío.
 *  - Deberá tener un método que permita añadir nuevas bolsas.
 *  - Necesitará un método que permita añadir un objeto al inventario en la primera bolsa que tenga huecos disponible.
 *  - Se podrán añadir varios objetos a la vez.
 *  - Cada vez que se añada un nuevo objeto se reordenarán los objetos en todas las bolsas.
 *  - El heroe podrá llevar equipada una mochila y un máximo de 4 bolsas categorizadas.
 */

enum ItemCategory {
  clothes = 'Clothes',
  metals = 'Metals',
  weapons = 'Weapons',
  herbs = 'Herbs'
}

class Item {
  constructor(public name: string, public category: ItemCategory) {}
}
const leather = new Item('Leather', ItemCategory.clothes);
const linen = new Item('Linen', ItemCategory.clothes);
const wool = new Item('Wool', ItemCategory.clothes);
const cooper = new Item('Cooper', ItemCategory.metals);
const goold = new Item('Goold', ItemCategory.metals);
const iron = new Item('Iron', ItemCategory.metals);
const silver = new Item('Silver', ItemCategory.metals);
const axe = new Item('Axe', ItemCategory.weapons);
const dagger = new Item('Dagger', ItemCategory.weapons);
const sword = new Item('Sword', ItemCategory.weapons);
const mace = new Item('Mace', ItemCategory.weapons);
const cherryBlossom = new Item('Cherry Blossom', ItemCategory.herbs);
const marigold = new Item('Mariigold', ItemCategory.herbs);
const rose = new Item('Rose', ItemCategory.herbs);
const seaweed = new Item('Seaweed', ItemCategory.herbs);

describe('Inventory manager', () => {
  describe('When backpack', () => {
    it('should initialize as expected', () => {
      const backpack = new BackPack();

      expect(backpack.items).toHaveLength(0)
    });

    it('should add new item inside backpack', () => {
      const backpack = new BackPack()
      backpack.add(leather);
      expect(backpack.items).toHaveLength(1);
    });

    it('should not add more than 8 items', () => {
      const backpack = new BackPack();

      new Array(10)
      .fill(iron)
      .forEach((item) => backpack.add(item));

      expect(backpack.items).toHaveLength(8);
    });
  });

  describe('When hand bag', () =>{


.3-32 32-32l192 0 0-112c0-8.8 7.2-16 16-16l16 0zM64 224l64 0 0 192 40 0 0-192 64 0 0 192 48 0 0-192 64 0 0 192 40 0 0-192 64 0 0 196.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 224z"/></svg>');
  --md-admonition-icon--osm-instance: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M2.672 23.969c-.352-.089-.534-.234-1.471-1.168C.085 21.688.014 21.579.018 20.999c0-.645-.196-.414 3.368-3.986c3.6-3.608 3.415-3.451 4.064-3.449c.302 0 .378.016.62.14l.277.14l1.744-1.744l-.218-.343c-.425-.662-.825-1.629-1.006-2.429a7.66 7.66 0 0 1 1.479-6.44c2.49-3.12 6.959-3.812 10.26-1.588c1.812 1.218 2.99 3.099 3.328 5.314c.07.467.07 1.579 0 2.074a7.55 7.55 0 0 1-2.205 4.402a6.7 6.7 0 0 1-1.943 1.401c-.959.483-1.775.71-2.881.803c-1.573.131-3.32-.305-4.656-1.163l-.343-.218l-1.744 1.744l.14.28c.125.241.14.316.14.617c.003.651.156.467-3.426 4.049c-2.761 2.756-3.186 3.164-3.398 3.261c-.271.125-.69.171-.945.106zM17.485 13.95a6.43 6.43 0 0 0 4.603-3.51c1.391-2.899.455-6.306-2.227-8.108c-.638-.43-1.529-.794-2.367-.962c-.581-.117-1.809-.104-2.414.025a6.6 6.6 0 0 0-2.452 1.064c-.444.315-1.177 1.048-1.487 1.487a6.384 6.384 0 0 0 .38 7.907a6.4 6.4 0 0 0 3.901 2.136c.509.078 1.542.058 2.065-.037zm-3.738 7.376a81 81 0 0 1-2.196-.651c-.025-.028 1.207-4.396 1.257-4.449c.023-.026 4.242 1.152 4.414 1.236c.062.026-.003.288-.525 2.102a399 399 0 0 0-.635 2.236c-.025.087-.069.156-.097.156c-.028-.003-1.028-.287-2.219-.631zm2.912.524c0-.053 1.227-4.333 1.246-4.347c.047-.034 4.324-1.23 4.341-1.211c.019.019-1.199 4.337-1.23 4.36c-.02.019-4.126 1.191-4.259 1.218c-.054.011-.098 0-.098-.019zm-7.105-1.911c.846-.852 1.599-1.627 1.674-1.728c.171-.218.405-.732.472-1.015c.026-.118.053-.352.058-.522l.011-.307l.182-.051c.103-.028.193-.044.202-.034c.023.025-1.207 4.321-1.246